Sleipnir
|
Encapsulates a Bayesian network with arbitrary structure and node types. More...
#include <bayesnetint.h>
Public Member Functions | |
virtual bool | Open (const char *szFile)=0 |
Load a Bayes net from a file. | |
virtual bool | Save (const char *szFile) const =0 |
Save a Bayes net to a file. | |
virtual bool | Learn (const IDataset *pDataset, size_t iIterations, bool fZero=false, bool fELR=false)=0 |
Learn conditional probabilities from data using Expectation Maximization, naive Bayesian learning, or Extended Logistic Regression. | |
virtual bool | Evaluate (const IDataset *pDataset, std::vector< std::vector< float > > &vecvecdResults, bool fZero=false) const =0 |
Perform Bayesian inference to obtain probabilities for each element of a dataset. | |
virtual bool | Evaluate (const IDataset *pDataset, CDat &DatResults, bool fZero=false) const =0 |
Perform Bayesian inference to obtain probabilities for each element of a dataset. | |
virtual bool | Evaluate (const std::vector< unsigned char > &vecbDatum, std::vector< float > &vecdResults, bool fZero=false, size_t iNode=0, bool fIgnoreMissing=false) const =0 |
Perform Bayesian inference to obtain probabilities given values for each other Bayes net node. | |
virtual bool | Evaluate (const CPCLPair &PCLData, CPCL &PCLResults, bool fZero=false, int iAlgorithm=-1) const =0 |
Perform Bayesian inference to obtain probabilities over all nodes in the network given some amount of data. | |
virtual void | GetNodes (std::vector< std::string > &vecstrNodes) const =0 |
Retrieve the string IDs of all nodes in the Bayes net. | |
virtual unsigned char | GetValues (size_t iNode) const =0 |
Returns the number of different values taken by the requested node. | |
virtual bool | IsContinuous () const =0 |
Returns true if any node in the Bayes net is non-discrete (e.g. Gaussian, etc.) | |
virtual bool | IsContinuous (size_t iNode) const =0 |
Returns true if the requested node is non-discrete (e.g. Gaussian, etc.) | |
virtual void | Randomize ()=0 |
Randomizes every parameter in the Bayes net. | |
virtual void | Randomize (size_t iNode)=0 |
Randomizes every parameter the requested node. | |
virtual void | Reverse (size_t iNode)=0 |
Reverses the parameters of the requested node over its possible values. | |
virtual bool | GetCPT (size_t iNode, CDataMatrix &MatCPT) const =0 |
Retrieves the parameters of the requested Bayes net node. |
Encapsulates a Bayesian network with arbitrary structure and node types.
IBayesNet provides an interface for Bayesian graphical models. These can have an arbitrary graph structure, and implementations of the interface can provide arbitrary node types. Inference and parameter learning functions are exposed that operate directly on Sleipnir datatypes such as IDataset, CDat, and CPCL. The only strict requirement of nodes is that they provide unique string labels and can expose their parameters by way of a CDataMatrix, although the semantics of those parameters are not constrained.
Definition at line 45 of file bayesnetint.h.
virtual bool Sleipnir::IBayesNet::Evaluate | ( | const IDataset * | pDataset, |
std::vector< std::vector< float > > & | vecvecdResults, | ||
bool | fZero = false |
||
) | const [pure virtual] |
Perform Bayesian inference to obtain probabilities for each element of a dataset.
pDataset | Dataset to be used as input for inference. |
vecvecdResults | Vector of output probabilities; each element of the outer vector represents the result for one gene pair, and each element of the inner vectors represents the probability for one possible value from the output node (i.e. the answer). |
fZero | If true, assume all missing values are zero (i.e. the first bin). |
The inverse of the corresponding IBayesNet::Learn method; given an IDataset, ignore the first (gold standard) dataset and infer the corresponding output probabilities for each other gene pair for which data is available. For each gene pair within the IDataset for which IDataset::IsExample is true, vecvecdResults will contain one vector. This vector will contain inferred probabilities for each possible value of the output node, generally the probability of functional unrelatedness (i.e. one minus the probability of functional relationship).
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.
virtual bool Sleipnir::IBayesNet::Evaluate | ( | const IDataset * | pDataset, |
CDat & | DatResults, | ||
bool | fZero = false |
||
) | const [pure virtual] |
Perform Bayesian inference to obtain probabilities for each element of a dataset.
pDataset | Dataset to be used as input for inference. |
DatResults | Description of parameter DatResults. |
fZero | If true, assume all missing values are zero (i.e. the first bin). |
The inverse of the corresponding IBayesNet::Learn method; given an IDataset, ignore the first (gold standard) dataset and infer the corresponding output probability for each other gene pair for which data is available. For each gene pair within the IDataset for which IDataset::IsExample is true, the probability of functional relationship (i.e. the largest possible value of the output node) will be placed in the given CDat.
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.
virtual bool Sleipnir::IBayesNet::Evaluate | ( | const std::vector< unsigned char > & | vecbDatum, |
std::vector< float > & | vecdResults, | ||
bool | fZero = false , |
||
size_t | iNode = 0 , |
||
bool | fIgnoreMissing = false |
||
) | const [pure virtual] |
Perform Bayesian inference to obtain probabilities given values for each other Bayes net node.
vecbDatum | One-indexed values for each node in the Bayes net (zero indicates missing data). |
vecdResults | Inferred probabilities for each possible value of the requested node. |
fZero | If true, assume all missing values are zero (i.e. the first bin). |
iNode | The node for which output probabilities are inferred. |
fIgnoreMissing | If true, do not default missing values to zero or any other value. |
This Evaluate assumes a discrete Bayes net and, given a vector of evidence values for each node, infers the probability distribution over possible values of the requested node. Note that vecbDatum contains one plus the discrete bin value of each node, and a value of zero indicates missing data for the corresponding node.
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.
virtual bool Sleipnir::IBayesNet::Evaluate | ( | const CPCLPair & | PCLData, |
CPCL & | PCLResults, | ||
bool | fZero = false , |
||
int | iAlgorithm = -1 |
||
) | const [pure virtual] |
Perform Bayesian inference to obtain probabilities over all nodes in the network given some amount of data.
PCLData | Input data; each column (experiment) is mapped by label to a node in the Bayes net, and PCL entries correspond to observed (or missing) data values. |
PCLResults | Output probabilities; each column (experiment) is mapped to a node:value pair from the Bayes net, and PCL entries correspond to the probability of that value in that node. |
fZero | If true, assume all missing values are zero (i.e. the first bin). |
iAlgorithm | Implementation-specific ID of the Bayesian inference algorithm to use. |
This version of Evaluate will perform one Bayesian inference for each row (gene) of the given PCLData. Here, each PCL "experiment" column corresponds to a node in the Bayes net as identified by the experiment labels in the PCL and the IDs of the Bayes net nodes. Values are read from the given PCL and (if present; missing values are allowed) discretized into Bayes net value bins using the accompanying quantization information. For each input row, all given non-missing values are observed for the appropriate Bayes net nodes, and Bayesian inference is used to provide probabilities for each remaining, unobserved node value.
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.
virtual bool Sleipnir::IBayesNet::GetCPT | ( | size_t | iNode, |
CDataMatrix & | MatCPT | ||
) | const [pure virtual] |
Retrieves the parameters of the requested Bayes net node.
iNode | Index of node for which parameters should be retrieved. |
MatCPT | Parameters of the requested node in tabular form; the columns of the matrix represent parental values, the rows node values. |
Retrieves node parameters in an implementation-specific manner, often only allowing nodes with at most one parent. For discrete nodes, matrix entries are generally conditional probabilities. For continuous nodes, matrix entries may represent distribution parameters such as Gaussian mean and standard deviation.
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.
virtual void Sleipnir::IBayesNet::GetNodes | ( | std::vector< std::string > & | vecstrNodes | ) | const [pure virtual] |
Retrieve the string IDs of all nodes in the Bayes net.
vecstrNodes | Output containing the IDs of all nodes in the Bayes net. |
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.
Referenced by Sleipnir::CDataSubset::Initialize(), and Sleipnir::CDatasetCompact::Open().
virtual unsigned char Sleipnir::IBayesNet::GetValues | ( | size_t | iNode | ) | const [pure virtual] |
Returns the number of different values taken by the requested node.
iNode | Bayes net node for which values should be returned. |
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.
virtual bool Sleipnir::IBayesNet::IsContinuous | ( | ) | const [pure virtual] |
Returns true if any node in the Bayes net is non-discrete (e.g. Gaussian, etc.)
Implemented in Sleipnir::CBayesNetFN.
Referenced by Sleipnir::CDataSubset::Initialize(), Sleipnir::CDataset::Open(), and Sleipnir::CDatasetCompact::Open().
virtual bool Sleipnir::IBayesNet::IsContinuous | ( | size_t | iNode | ) | const [pure virtual] |
Returns true if the requested node is non-discrete (e.g. Gaussian, etc.)
iNode | Node to be inspected. |
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.
virtual bool Sleipnir::IBayesNet::Learn | ( | const IDataset * | pDataset, |
size_t | iIterations, | ||
bool | fZero = false , |
||
bool | fELR = false |
||
) | [pure virtual] |
Learn conditional probabilities from data using Expectation Maximization, naive Bayesian learning, or Extended Logistic Regression.
pDataset | Dataset to be used for learning. |
iIterations | Maximum number of iterations for EM or ELR. |
fZero | If true, assume all missing values are zero (i.e. the first bin). |
fELR | If true, use ELR to learn network parameters. |
Using the given IDataset, learn parameters for the underlying Bayes network. If requested, learning is performed discriminatively using Extended Logistic Regression due to Greiner, Zhou, et al. Otherwise, maximum likelihood estimates are used for naive structures, and Expectation Maximization is used for other network structures.
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.
virtual bool Sleipnir::IBayesNet::Open | ( | const char * | szFile | ) | [pure virtual] |
Load a Bayes net from a file.
szFile | Path to file. |
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.
virtual void Sleipnir::IBayesNet::Randomize | ( | ) | [pure virtual] |
Randomizes every parameter in the Bayes net.
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.
virtual void Sleipnir::IBayesNet::Randomize | ( | size_t | iNode | ) | [pure virtual] |
Randomizes every parameter the requested node.
iNode | Index of node to be randomized. |
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.
virtual void Sleipnir::IBayesNet::Reverse | ( | size_t | iNode | ) | [pure virtual] |
Reverses the parameters of the requested node over its possible values.
iNode | Index of node to be reversed. |
"Vertically" reverses the parameters of the requested node. That is, if the requested node can take values 0 through 3, then for each setting of the parents' values, Pnew(0|parents) = Pold(3|parents), Pnew(1|parents) = Pold(2|parents), Pnew(2|parents) = Pold(1|parents), and Pnew(3|parents) = Pold(0|parents).
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.
virtual bool Sleipnir::IBayesNet::Save | ( | const char * | szFile | ) | const [pure virtual] |
Save a Bayes net to a file.
szFile | Path to file. |
Implemented in Sleipnir::CBayesNetFN, and Sleipnir::CBayesNetSmile.