贝叶斯网络Matlab
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab贝叶斯网络建模
1 FullBNT简介
基于Matlab的贝叶斯网络工具箱BNT是kevin p.murphy基于matlab语言开发的关于贝叶斯网络学习的开源软件包,提供了许多贝叶斯网络学习的底层基础函数库,支持多种类型的节点(概率分布)、精确推理和近似推理、参数学习及结构学习、静态模型和动态模型。
1.1贝叶斯网络表示
BNT中使用矩阵方式表示贝叶斯网络,即若节点i到j有一条弧,则对应矩阵中(i,j)值为1,否则为0。
1.2结构学习算法函数
BNT中提供了较为丰富的结构学习函数,都有:
1.学习树扩展贝叶斯网络结构的TANC算法learn_struct_tan().
2.数据完整条件下学习一般贝叶斯网络结构学习算法
算法名称调用函数
K2算法learn_struct_k2()
贪婪搜索GS(greedy search)算法earn_struct_gs()
爬山HC(hill climbing)算法learn_struct_hc()
…………
3.缺失数据条件下学习一般贝叶斯网络结构学习算法
表1-2 缺失数据条件下贝叶斯结构算法
算法名称调用函数
最大期望EM(expectation maximization)算法learn_struct_EM()
MCMC(Markov Chain Monte Carlo)learn_struct_mcmc()
…………
1.3参数学习算法函数
1.BNT中也提供了丰富的参数学习函数,都有:
2.完整数据时,学习参数的方法主要有两种:最大似然估计
learn_params()和贝叶斯方法bayes_update_params();
3.数据缺失时,如果已知网络拓扑结构,用EM算法来计算参数,
learn_params_em ()。
1.4推理机制及推理引擎
为了提高运算速度,使各种推理算法能够有效应用,BNT工具箱采用了引擎机制,不同的引擎根据不同的算法来完成模型转换、细化和求解。这个推理过程如下:
BNT中提供了多种推理引擎,都有:
表1-3 BNT推理引擎
算法名称调用函数
联合树推理引擎jtree_inf_engine()
全局联合树推理引擎global_joint_inf_engine()
信念传播推理引擎belprop_inf_engine()
变量消元推理引擎var_elim_inf_engine()
采样传播引擎gibbs_sampling_inf_engine
2 参数学习
在BNT中,参数评估程序可以分为4类。分类依据是否目标是通过参数或仅仅一个点的估计来计算贝叶斯全部的后验概率,是否全部
2.1节点类型
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 1.00.0
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 节点
神经网络节点使用一个多层感知器实现了从连续父节点向离散子节点的映射。
高斯节点将连续值的节点处理成一个离散的情况
广义线性模型节点
分类/回归树节点
2.2 最大似然参数估计
bnet3 = learn_params(bnet2, samples);
2.3先验参数分布
我们将N/(q*r) 放入每个格;N 是等效的样本大小,r=|A|, q = |B|. 这可以按如上面方式创建:
tabular_CPD(bnet, i, 'prior_type', 'dirichlet', 'dirichlet_type', ...
'BDeu', 'dirichlet_weight', 10);
这里 1 是等效样本大小,也是先验概率的强度。你可以使用上面面方式更改它,