A friend is using Factor Graphs to do text mining (identifying references to people in text), and it got me interested in this tool, but I\'m having a hard time finding an intui
A factor graph is the graphical representation of the dependencies between variables and factors (parts of a formula) that are present in a particular kind of formula.
Suppose you have a function f(x_1,x_2,...,x_n)
and you want to compute the marginalization of this function for some argument x_i
, thus summing over all assignments to the remaining formula. Further f
can be broken into factors, e.g.
f(x_1,x_2,...,x_n)=f_1(x_1,x_2)f_2(x_5,x_8,x_9)...f_k(x_1,x_10,x_11)
Then in order to compute the marginalization of f
for some of the variables you can use a special algorithm called sum product (or message passing), that breaks the problem into smaller computations. For this algortithm, it is very important which variables appear as arguments to which factor. This information is captured by the factor graph.
A factor graph is a bipartite graph with both factor nodes and variable nodes. And there is an edge between a factor and a variable node if the variable appears as an argument of the factor. In our example there would be an edge between the factor f_2
and the variable x_5
but not between f_2
and x_1
.
There is a great article: Factor graphs and the sum-product algorithm.