贝叶斯网络Matlab
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab贝叶斯网络建模
1 FullBNT简介
基于Matlab的贝叶斯网络工具箱BNT是kevin p.murphy基于matlab语言开发的关于贝叶斯网络学习的开源软件包,提供了许多贝叶斯网络学习的底层基础函数库,支持多种类型的节点(概率分布)、精确推理和近似推理、参数学习及结构学习、静态模型和动态模型。
1.1贝叶斯网络表示
BNT中使用矩阵方式表示贝叶斯网络,即若节点i到j有一条弧,则对应矩阵中
值为1,否则为0。
1.2结构学习算法函数
BNT中提供了较为丰富的结构学习函数,都有:
1. 学习树扩展贝叶斯网络结构的
算法
.
2. 数据完整条件下学习一般贝叶斯网络结构学习算法
表1-1 数据完整条件下贝叶斯结构算法
算法名称调用函数
K2算法learn_struct_k2()
贪婪搜索GS(greedy search)算法earn_struct_gs()
3. 缺失数据条件下学习一般贝叶斯网络结构学习算法
表1-2 缺失数据条件下贝叶斯结构算法
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类。分类依据是否目标是通过参数或仅仅一个点的估计来计算贝叶斯全部的后验概率,是否全部的节点是可观察的或者存在数据/隐含变量(局部可观察)。
Full obs Partial obs
Point learn_params learn_params_em
Bayes Bayes_update_params not yet supported
2.1节点类型
Noisy-or节点
一个Noisy-or节点就像通常的“或”门一样,但有时父节点的效果将被抑制。受抑制的父节点i的概率用
来表示。一个节点C,有两个父节点A和B,有如下CPD,使用F和T来表达关和开,(在BNT中是1和2)。
Softmax 节点
神经网络节点使用一个多层感知器实现了从连续父节点向离散子节点的映射。
高斯节点将连续值的节点处理成一个离散的情况
广义线性模型节点
分类/回归树节点
2.2 最大似然参数估计
bnet3 = learn_params(bnet2, samples);
2.3先验参数分布
tabular_CPD(bnet, i, 'prior_type', 'dirichlet', 'dirichlet_type', 'unif');
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|. 这可以按如上面方式创建:
tabular_CPD(bnet, i, 'prior_type', 'dirichlet',
'dirichlet_type', ...
'BDeu', 'dirichlet_weight', 10);
这里 1 是等效样本大小,也是先验概率的强度。你可以使用上面面方式更改它,
3结构学习
问题:以下两模型结构评分是否相等?
表3-1算法概要
贝叶斯模型选择算法
1.建立模型A->B,生成样本数据
2.建立所有可能的结构:(1)A B,(2)B<-A,(3) A->B并计算先验概率
3.模型2和模型3为Markov equivalent
代码示例
图3-1贝叶斯模型选择后验概率对比
BNT中的结构学习程序可以按类似参数学习的情况分成四类:
Full obs Partial obs
Point learn_struct_K2 not yet supported
Bayes learn_struct_mcmc not yet supported
3.1Markov 等效
如果两个 DAGs 编码同样的条件独立,它们被叫做 Markov 等效。所有 DAGs 的集合可以被分割成 Markov 等效类。同一类内的线图可以有方向,它们弧的颠倒不会改变任何 CI 关系。每一类都可以用一个 PDAG(partially directed acyclic graph,局部有向非循环图)这种图被称为本质图或方向图。这个详细说明哪个边必须在某一个方位上被定向,哪个可能被颠倒。
3.2 穷举搜索
结构学习的强有力手段是列举DAGs的所有可能性,并对它们一一打分。这为其它算法的比较提供了一个“黄金标准”。我们按如下做: