comparison toolboxes/FullBNT-1.0.7/bnt/potentials/README @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:e9a9cd732c1e
1 The following kinds of potentials are supported
2 - dpot: discrete
3 - upot: utility
4 - mpot: Gaussian in moment form
5 - cpot: Gaussian in canonical form
6 - cgpot: conditional (mixture) Gaussian, a list of mpots/cpot
7 - scgpot: stable conditional Gaussian, a list of scgcpots
8 - scgcpot: just used by scgpot
9
10 Many of these are described in the following book
11
12 @book{Cowell99,
13 author = "R. G. Cowell and A. P. Dawid and S. L. Lauritzen and D. J. Spiegelhalter",
14 title = "Probabilistic Networks and Expert Systems",
15 year = 1999,
16 publisher = "Springer"
17 }
18
19 CPD_to_pot converts P(Z|A,B,...) to phi(A,B,...,Z).
20
21 A table is like a dpot, except it is a structure, not an object.
22 Code that uses tables is faster but less flexible.
23
24 -----------
25
26 A potential is a joint probability distribution on a set of nodes,
27 which we call the potential's domain (which is always sorted).
28 A potential supports the operations of multiplication and
29 marginalization.
30
31 If the nodes are discrete, the potential can be represented as a table
32 (multi-dimensional array). If the nodes are Gaussian, the potential
33 can be represented as a quadratic form. If there are both discrete and
34 Gaussian nodes, we use a table of quadratic forms. For details on the
35 Gaussian case, see below.
36
37 For discrete potentials, the 'sizes' field specifies the number of
38 values each node in the domain can take on. For continuous potentials,
39 the 'sizes' field specifies the block-size of each node.
40
41 If some of the nodes are observed, extra complications arise. We
42 handle the discrete and continuous cases differently. Suppose the
43 domain is [X Y], with sizes [6 2], where X is observed to have value x.
44 In the discrete case, the potential will have many zeros in it
45 (T(X,:) will be 0 for all X ~= x), which can be inefficient. Instead,
46 we set sizes to [1 2], to indicate that X has only one possible value
47 (namely x). For continuous nodes, we set sizes = [0 2], to indicate that X no
48 longer appears in the mean vector or covariance matrix (we must avoid
49 0s in Sigma, lest it be uninvertible). When a potential is created, we
50 assume the sizes of the nodes have been adjusted to include the
51 evidence. This is so that the evidence can be incorporated at the
52 outset, and thereafter the inference algorithms can ignore it.
53
54 ------------
55
56 A Gaussian potential can be represented in terms of its
57 moment characteristics (mu, Sigma, logp), or in terms of its canonical
58 characteristics (g, h, K). Although the moment characteristics are
59 more familiar, it turns out that canonical characteristics are
60 more convenient for the junction tree algorithm, for the same kinds of
61 reasons why backwards inference in an LDS uses the information form of
62 the Kalman filter (see Murphy (1998a) for a discussion).
63
64 When working with *conditional* Gaussian potentials, the method proposed
65 by Lauritzen (1992), and implemented here, requires converting from
66 canonical to moment form before marginalizing the discrete variables,
67 and converting back from moment to canonical form before
68 multiplying/dividing. A new algorithm, due to Lauritzen and Jensen
69 (1999), works exclusively in moment form, and
70 hence is more numerically stable. It can also handle 0s in the
71 covariance matrix, i.e., deterministic relationships between cts
72 variables. However, it has not yet been implemented,
73 since it requires major changes to the jtree algorithm.
74
75 In Murphy (1998b) we extend Lauritzen (1992) to handle
76 vector-valued nodes. This means the vectors and matrices become block
77 vectors and matrices. This manifests itself in the code as in the
78 following example.
79 Suppose we have a potential on nodes dom=[3,4,7] with block sizes=[2,1,3].
80 Then nodes 3 and 7 correspond to blocks 1,3 which correspond to indices 1,2,4,5,6.
81 >> find_equiv_posns([3 7], dom)=[1,3]
82 >> block([1,3],blocks)=[1,2,4,5,6].
83
84 For more details, see
85
86 - "Filtering and Smoothing in Linear Dynamical Systems using the Junction Tree Algorithm",
87 K. Murphy, 1998a. UCB Tech Report.
88
89 - "Inference and learning in hybrid Bayesian networks",
90 K. Murphy. UCB Technical Report CSD-98-990, 1998b.
91
92 - "Propagation of probabilities, means and variances in mixed
93 graphical association models", S. L. Lauritzen, 1992, JASA 87(420):1098--1108.
94
95 - "Causal probabilistic networks with both discrete and continuous variables",
96 K. G. Olesen, 1993. PAMI 3(15). This discusses implementation details.
97
98 - "Stable local computation with Conditional Gaussian distributions",
99 S. Lauritzen and F. Jensen, 1999. Univ. Aalborg Tech Report R-99-2014.
100 www.math.auc.dk/research/Reports.html.