module Factor: sig .. end
The Factor module is used for representing a factor in a factor graph.
Data structures
type variable = int
Variables are represented as integer indices.
type varvalue = int
A variable state is an integer index over a variable's range
of values.
type condition = bool * variable * varvalue
condition represents an equality or inequality constraint on
a variable's value. For example, (true, 10, 1) says that variable
10 has a value of 1, and (false, 5, 0) says that variable 5 does
not have a value of 0.
type feature = Factor.feature = {
|
cond : condition array; |
|
weight_id : int; |
|
mutable weight : float; |
}
A feature is a set of conditions and a weight parameter.
type tree = Factor.tree =
Recursive structure for tree representation of a factor.
type factor = Factor.factor =
| |
Feature of feature |
| |
FeatureSet of feature list |
| |
Table of variable array * int array * float array |
| |
Tree of tree |
| |
Const of float |
Different factor representations for factor graphs.
See
Section 1.1 of
the user manual for more information about representations.
Factor operations
val simple_cond_cmp : condition -> condition -> int
Comparision function used for sorting conditions.
val remove_redundant_conds : condition list -> condition list
Removes redundant conditions from a condition list. Assumes
that conditions are sorted by simple_cond_cmp and the condition is
satisfiable (not contradictory).
val condl_to_valsetl : int array -> condition list -> (int * bool array) list
condl_to_valsetl schema condl converts list of conditions
condl to a list of variable value sets, so that each variable
appears only once in the list.
val fmatch : varvalue array -> condition array -> bool
fmatch x cond_ar checks whether example x satisfies set of
conditions cond_ar.
val fweight : varvalue array -> feature -> float
fweight x f returns the weight of feature f if example x
satisfies the feature. Otherwise returns 0.
val log_value : varvalue array -> factor -> float
log_value x f returns the value of the factor for the
configuration given by example x.
val expected_log_value : factor -> float array array -> float array array -> float
expected_log_value f logmarg negmarg returns the expected
value of factor f given a fully factorized distribution.
logmarg.(var).(value) is the log-probability that variable
var has value value, and negmarg is log-probability that
variable var does not have value value.
val numparams : factor -> int
Returns the number of parameters in a factor.
val simplify_feature : varvalue array -> feature -> feature
simplify_feature ev f removes all conditions of feature f
that are satisfied by evidence ev and returns a new, simpler
feature. If f is inconsistent with ev, returns a feature with
no conditions instead.
val simplify : varvalue array -> factor -> factor
simplify ev f simplifies factor f by conditioning it on
evidence ev.
val tree_to_features : condition list -> tree -> feature list
Generates an equivalent set of features for a given tree factor.
val table_to_features : variable array * int array * float array -> feature list
Converts table CPD to features
val to_features : factor -> feature list
Converts factor to a set of conjunctive features.
val set_weights : float array -> int -> factor -> factor * int
set_weights w wi f updates the weight in factor f using a
global weight vector w. The weights of features in f starts
from index wi. set_weights returns a tuple (nf, nw), in
which nf is the new modified feature and nw is the number of
features in f.
val vars : factor -> variable list
Returns a list of variables used by a factor.
val feature_set_vars : feature list -> variable list
val tree_vars : tree -> variable list
val to_table : int array -> factor -> factor
to_table schema f converts factor f to another factor with
a table representation.
val copy : factor -> factor
copy f creates a duplicate of factor f.
val rescale : float -> factor -> factor
rescale alpha f rescales factor f by a factor of alpha.
Rescaling is done in log space, so this is equivalent to raising a
potential function to the power of alpha.
Writing factors
val output_factor : Pervasives.out_channel -> factor -> unit
output_factor out f writes factor f to channel out.
val output_feature : Pervasives.out_channel -> feature -> unit
val output_featurelist : Pervasives.out_channel -> feature list -> unit
val output_tree : Pervasives.out_channel -> string -> tree -> unit
Parsing factors
module MP: sig .. end
Auxilary module for parsing factors.
val pfactor_to_factor : int array -> MP.pfactor -> factor
Build a factor from parser output.