public final class VariableEliminationInference extends Object implements Inference
RelevanceTreeInference,
Inference| Constructor and Description |
|---|
VariableEliminationInference(Network network)
Initializes a new instance of the
VariableEliminationInference class, with the target Bayesian network. |
| Modifier and Type | Method and Description |
|---|---|
Evidence |
getBaseEvidence()
Optional evidence which can be used to calculate the lift of queries.
|
Evidence |
getEvidence()
Gets the evidence (case data, e.g.
|
Network |
getNetwork()
The target Bayesian network.
|
QueryDistributionCollection |
getQueryDistributions()
The collection of distributions required from a
Inference.query(com.bayesserver.inference.QueryOptions, com.bayesserver.inference.QueryOutput). |
QueryFunctionCollection |
getQueryFunctions()
Gets the collection of functions to evaluate, after QueryDistributions have been calculated.
|
void |
query(QueryOptions queryOptions,
QueryOutput queryOutput)
Calculates a number of distributions, e.g.
|
void |
setBaseEvidence(Evidence value)
Optional evidence which can be used to calculate the lift of queries.
|
void |
setEvidence(Evidence value)
Sets the evidence (case data, e.g.
|
void |
setQueryDistributions(QueryDistributionCollection value)
The collection of distributions required from a
Inference.query(com.bayesserver.inference.QueryOptions, com.bayesserver.inference.QueryOutput). |
void |
setQueryFunctions(QueryFunctionCollection value)
Sets the collection of functions to evaluate, after QueryDistributions have been calculated.
|
public VariableEliminationInference(Network network)
VariableEliminationInference class, with the target Bayesian network.network - The target Network.NullPointerException - Raised if [network] is null.public Evidence getEvidence()
query.
The distributions are only recalculated when Inference.query(com.bayesserver.inference.QueryOptions, com.bayesserver.inference.QueryOutput) is called, not each time evidence is changed.getEvidence in interface Inferencepublic void setEvidence(Evidence value)
query.
The distributions are only recalculated when Inference.query(com.bayesserver.inference.QueryOptions, com.bayesserver.inference.QueryOutput) is called, not each time evidence is changed.setEvidence in interface Inferencepublic Evidence getBaseEvidence()
QueryDistribution.getComparison() is true queries are adjusted based on marginals calculated with this evidence or no evidence if this value is null.getBaseEvidence in interface InferenceQueryDistribution.getComparison()public void setBaseEvidence(Evidence value)
QueryDistribution.getComparison() is true queries are adjusted based on marginals calculated with this evidence or no evidence if this value is null.setBaseEvidence in interface InferenceQueryDistribution.getComparison()public QueryDistributionCollection getQueryDistributions()
Inference.query(com.bayesserver.inference.QueryOptions, com.bayesserver.inference.QueryOutput). Only request those that you need.
Each distribution added, such as a Table, acts like a buffer. I.e. the values are populated by the Inference.query(com.bayesserver.inference.QueryOptions, com.bayesserver.inference.QueryOutput) method. This means that the same distributions can be resused across multiple calls to Inference.query(com.bayesserver.inference.QueryOptions, com.bayesserver.inference.QueryOutput), without the need to recreate the distribution each time.
It is important not to request distributions you do not need, because the computations will take longer. For example, it is common to request all marginal probabilities, P(A), P(B), P(C), ... , P(Z) given the evidence, however if you only need to know P(A) and P(B) given the evidence, then limit the query to just these distributions.
Typically the distributions requested are a number of marginal propabilities, such as P(A), P(B), P(C) etc... given the evidence, however it is also possible to request distributions over more than one variable, so we might query P(A), P(B,C) given the evidence.
If you are performing a batch of queries, there is no need to remove those distributions that you require, however happen to have evidence set for a particular query.
getQueryDistributions in interface Inferencepublic void setQueryDistributions(QueryDistributionCollection value)
Inference.query(com.bayesserver.inference.QueryOptions, com.bayesserver.inference.QueryOutput). Only request those that you need.
Each distribution added, such as a Table, acts like a buffer. I.e. the values are populated by the Inference.query(com.bayesserver.inference.QueryOptions, com.bayesserver.inference.QueryOutput) method. This means that the same distributions can be resused across multiple calls to Inference.query(com.bayesserver.inference.QueryOptions, com.bayesserver.inference.QueryOutput), without the need to recreate the distribution each time.
It is important not to request distributions you do not need, because the computations will take longer. For example, it is common to request all marginal probabilities, P(A), P(B), P(C), ... , P(Z) given the evidence, however if you only need to know P(A) and P(B) given the evidence, then limit the query to just these distributions.
Typically the distributions requested are a number of marginal propabilities, such as P(A), P(B), P(C) etc... given the evidence, however it is also possible to request distributions over more than one variable, so we might query P(A), P(B,C) given the evidence.
If you are performing a batch of queries, there is no need to remove those distributions that you require, however happen to have evidence set for a particular query.
setQueryDistributions in interface Inferencepublic QueryFunctionCollection getQueryFunctions()
getQueryFunctions in interface Inferencepublic void setQueryFunctions(QueryFunctionCollection value)
setQueryFunctions in interface Inferencepublic Network getNetwork()
getNetwork in interface Inferencepublic void query(QueryOptions queryOptions, QueryOutput queryOutput) throws InconsistentEvidenceException
evidence (case data, e.g. row in a database), and if requested the log-likelihood of the data.
Each time this method is called the distributions have their values replaced, acting like buffers.
As well as requesting distributions of the form P(A), P(B) it is also possible to request distributions over a number of variables such as P(A,B).
If CLGaussian distributions are requested that include instantiated discrete variables, an algorithm may legitimately return mean and covariance values equal to NaN for entries corresponding to inconsistent discrete combinations. For example, if a CLGaussian is requested that includes a discrete variable 'Gender' with states 'Male' and 'Female' and evidence is set to 'Female' then any mean and covariance entries that correspond to 'Male' may be set to NaN. NaN values will always be accompanied by a corresponding zero value in the CLGaussian.getTable().
query in interface InferencequeryOptions - Options governing which calculations are performed and how.queryOutput - Returns any information, in addition to the distributions, that is requested. For example the log-likelihood.InconsistentEvidenceException - Raised if inconsistent evidence is detected, or underflow/overflow occurs when calculating queries or the conflict measure. Note that log-likelihood calculations do not raise this exception, but instead report -Infinity or +Infinity.Copyright © 2021. All rights reserved.