文档介绍:Matlab贝叶斯网络建模
1 FullBNT简介
基于Matlab的贝叶斯网络工具箱BNT是kevin ,提供了许多贝叶斯网络学****的底层基础函数库,支持多种类型的节点(概率分布)、精确推理和近似推理、参数学****及结构学****静态模型和动态模型。
BNT中使用矩阵方式表示贝叶斯网络,即若节点i到j有一条弧,则对应矩阵中i,j值为1,否则为0。
BNT中提供了较为丰富的结构学****函数,都有:
学****树扩展贝叶斯网络结构的TANC算法learn_struct_tan().
数据完整条件下学****一般贝叶斯网络结构学****算法
表1-1 数据完整条件下贝叶斯结构算法
算法名称
调用函数
K2算法
learn_struct_k2()
贪婪搜索GS(greedy search)算法
earn_struct_gs()
爬山HC(hill climbing)算法
learn_struct_hc()
……
……
缺失数据条件下学****一般贝叶斯网络结构学****算法
表1-2 缺失数据条件下贝叶斯结构算法
算法名称
调用函数
最大期望EM(expectation maximization)算法
learn_struct_EM()
MCMC(Markov Chain Monte Carlo)
learn_struct_mcmc()
……
……
BNT中也提供了丰富的参数学****函数,都有:
完整数据时,学****参数的方法主要有两种:最大似然估计learn_params()
和贝叶斯方法bayes_update_params();
数据缺失时,如果已知网络拓扑结构,用EM算法来计算参数, learn_params_em ()。
为了提高运算速度,使各种推理算法能够有效应用,BNT工具箱采用了引擎机制,不同的引擎根据不同的算法来完成模型转换、细化和求解。这个推理过程如下:
BNT中提供了多种推理引擎,都有:
表1-3 BNT推理引擎
算法名称
调用函数
联合树推理引擎
jtree_inf_engine()
全局联合树推理引擎
global_joint_inf_engine()
信念传播推理引擎
belprop_inf_engine()
变量消元推理引擎
var_elim_inf_engine()
采样传播引擎
gibbs_sampling_inf_engine
2 参数学****br/>在BNT中,参数评估程序可以分为4类。分类依据是否目标是通过参数或仅仅一个点的估计来计算贝叶斯全部的后验概率,是否全部的节点是可观察的或者存在数据/隐含变量(局部可观察)。
Full obs
Partial obs
Point
learn_params
learn_params_em
Bayes
Bayes_update_params
not yet supported
Noisy-or节点
一个Noisy-or节点就像通常的“或”门一样,但有时父节点的效果将被抑制。受抑制的父节点i的概率用P(i)来表示。一个节点C,有两个父节点A和B,有如下CPD,使用F和T来表达关和开,(在BNT中是1和2)。
A
B
P(C=off)
P(C=on)
F
F
T
F
qA)
1-q(A)
F
T
q(B)
1-q(B)
T
T
q(A)q(B)
1-q(A)q(B)
Softmax 节点
神经网络节点使用一个多层感知器实现了从连续父节点向离散子节点的映射。
高斯节点将连续值的节点处理成一个离散的情况
广义线性模型节点
分类/回归树节点
最大似然参数估计
bnet3 = learn_params(bnet2, samples);
tabular_CPD(bnet, i, 'prior_type', 'dirichlet', 'dirichlet_type', 'unif');
B=1
B=2
B=3
A=1
1
1
1
A=2
1
1
1
tabular_CPD(bnet, i, 'prior_type', 'dirichlet', 'dirichlet_type', 'BDeu');
B=1
B=2
B=3
A=1
1/6
1/6
1/6
A=2
1/6
1/6
1/6
我们将 N/(q*r) 放入每个格;N 是等效的样本大小,r=|A|, q = |B|. 这可以按如