Markov random field
A Markov random field is an 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 random field uses a undirected graph to represent conditional independence in the joint distribution. These conditional independences allow to factorize the joint distribution, thereby allowing to compactly represent very large ones.
Where the \(\phi_i\) are tensors over the \(n_c\) cliques of the undirected graph.
Moreover, inference algorithms can also use this graph to speed up the computations.
Note
Markov Random Field are also called Markov Network. After tag 1.5.2, pyAgrum uses the terminology Markov Random Field.
Tutorial
Input / Output
Markov random fields can be saved and loaded using the native JGUM / BGUM Format Reference (recommended) or the UAI format.
import pyagrum as gum
mrf = gum.fastMRF("A--B--C;D--A")
gum.saveMRF(mrf, "model.jgum") # jgum (JSON)
gum.saveMRF(mrf, "model.bgum") # bgum (binary)
mrf2 = gum.loadMRF("model.jgum")
Reference
- Undirected Graphical Model
MarkovRandomFieldMarkovRandomField.add()MarkovRandomField.addFactor()MarkovRandomField.addStructureListener()MarkovRandomField.addVariables()MarkovRandomField.adjacencyMatrix()MarkovRandomField.beginTopologyTransformation()MarkovRandomField.changeVariableLabel()MarkovRandomField.changeVariableName()MarkovRandomField.clear()MarkovRandomField.completeInstantiation()MarkovRandomField.connectedComponents()MarkovRandomField.connectedComponentsCount()MarkovRandomField.connectedComponentsList()MarkovRandomField.dim()MarkovRandomField.edges()MarkovRandomField.empty()MarkovRandomField.endTopologyTransformation()MarkovRandomField.erase()MarkovRandomField.eraseFactor()MarkovRandomField.exists()MarkovRandomField.existsEdge()MarkovRandomField.existsProperty()MarkovRandomField.factor()MarkovRandomField.factors()MarkovRandomField.family()MarkovRandomField.fastPrototype()MarkovRandomField.fromBN()MarkovRandomField.generateFactor()MarkovRandomField.generateFactors()MarkovRandomField.graph()MarkovRandomField.hasSameStructure()MarkovRandomField.idFromName()MarkovRandomField.ids()MarkovRandomField.isIndependent()MarkovRandomField.loadGUM()MarkovRandomField.loadGUMstring()MarkovRandomField.loadUAI()MarkovRandomField.log10DomainSize()MarkovRandomField.maxNonOneParam()MarkovRandomField.maxParam()MarkovRandomField.maxVarDomainSize()MarkovRandomField.minNonZeroParam()MarkovRandomField.minParam()MarkovRandomField.minimalCondSet()MarkovRandomField.names()MarkovRandomField.neighbours()MarkovRandomField.nodeId()MarkovRandomField.nodes()MarkovRandomField.nodeset()MarkovRandomField.properties()MarkovRandomField.saveGUM()MarkovRandomField.saveGUMstring()MarkovRandomField.saveUAI()MarkovRandomField.size()MarkovRandomField.sizeEdges()MarkovRandomField.smallestFactorFromNode()MarkovRandomField.spaceCplxToString()MarkovRandomField.thisownMarkovRandomField.toDot()MarkovRandomField.toDotAsFactorGraph()MarkovRandomField.toFast()MarkovRandomField.updateMetaData()MarkovRandomField.variable()MarkovRandomField.variableFromName()MarkovRandomField.variableNodeMap()MarkovRandomField.variables()
- Inference in Markov random fields