Markov Network¶
A Markov network is a undirected probabilistic graphical model. It represents a joint distribution over a set of random variables. In pyAgrum, the variables are (for now) only discrete.
A Markov network uses a undirected graph to represent conditional independence in the joint distribution. These conditional independence allow to factorize the joint distribution, thereby allowing to compactly represent very large ones.
\[P(X_1,\cdots,X_n)\propto\prod_{i=1}^{n_c} \phi_i(C_i)\]
Where the \(\phi_i\) are potentials over the \(n_c\) cliques of the undirected graph.
Moreover, inference algorithms can also use this graph to speed up the computations.
Tutorial
Reference
- Undirected Graphical Model
MarkovNetMarkovNet.add()MarkovNet.addFactor()MarkovNet.addStructureListener()MarkovNet.addVariables()MarkovNet.beginTopologyTransformation()MarkovNet.changeVariableLabel()MarkovNet.changeVariableName()MarkovNet.clear()MarkovNet.completeInstantiation()MarkovNet.connectedComponents()MarkovNet.dim()MarkovNet.edges()MarkovNet.empty()MarkovNet.endTopologyTransformation()MarkovNet.erase()MarkovNet.eraseFactor()MarkovNet.exists()MarkovNet.existsEdge()MarkovNet.factor()MarkovNet.factors()MarkovNet.fastPrototype()MarkovNet.fromBN()MarkovNet.generateFactor()MarkovNet.generateFactors()MarkovNet.graph()MarkovNet.hasSameStructure()MarkovNet.idFromName()MarkovNet.ids()MarkovNet.isIndependent()MarkovNet.loadUAI()MarkovNet.log10DomainSize()MarkovNet.maxNonOneParam()MarkovNet.maxParam()MarkovNet.maxVarDomainSize()MarkovNet.minNonZeroParam()MarkovNet.minParam()MarkovNet.minimalCondSet()MarkovNet.names()MarkovNet.neighbours()MarkovNet.nodeId()MarkovNet.nodes()MarkovNet.nodeset()MarkovNet.saveUAI()MarkovNet.size()MarkovNet.sizeEdges()MarkovNet.smallestFactorFromNode()MarkovNet.thisownMarkovNet.toDot()MarkovNet.toDotAsFactorGraph()MarkovNet.variable()MarkovNet.variableFromName()MarkovNet.variableNodeMap()
- Inference in Markov Networks