全文链接:http://tecdat.cn/?p=32462
分析师:Chang Zhang
贝叶斯网络(BN)是一种基于有向无环图的概率模型,它描述了一组变量及其相互之间的条件依赖性(点击文末“阅读原文”获取完整课程代码数据)。
贝叶斯网络在信息不完备的情况下通过可以观察随机变量推断不可观察的随机变量,对于解决复杂的不确定性和关联性问题有很强的优势。
基本概念
有向无环图(DAG):DAG的结点V包括随机变量(类别和特征),有向连接E(A->B)表示结点A是结点B的parent,且B与A是有依赖关系的(不独立)。条件概率表集合:引入了一个条件性独立(conditional independence)概念,即图中任意结点v在给定v的parent结点的情况下,与图中其它结点都是独立的,也就是说P(v|par(v),x1,x2...,xn) = P(v|par(v))。这里par(v)表示v的parent结点集,x1,x2,...,xn表示图中其它结点。
贝叶斯网络实施步骤
1、确定随机变量间的拓扑关系,形成DAG。2、训练贝叶斯网络参数——估计出各节点的条件概率表。这一步也就是要完成条件概率表的构造。
结构学习
1、基于评分搜索的方法:将结构学习视为组合优化问题,首先通过定义评分函数对BN结构空间中的不同元素与样本数据的拟合程度进行度量,然后利用搜索算法确定评分最高的网络结构,即与数据拟合最好的网络结构。
2、基于约束的方法:利用统计或信息论的方法定量的分析变量间的依赖关系以获取最优地表达这些关系的网络结构。首先对训练数据集进行统计测试,尤其是条件独立性测试,确定出变量之间的条件独立性,然后利用变量之间的条件独立性构造一个有向无环图,以尽可能多的涵盖这些条件独立性。
3、基于评分搜索和约束相混合的方法:首先采用条件独立性检验缩减搜索空间,然后将此搜索空间作为输入以限制基于评分的搜索。
结构学习——基于评分搜索的方法
将结构学习视为组合优化问题,首先通过定义评分函数对BN结构空间中的不同元素与样本数据的拟合程度进行度量,然后利用搜索算法确定评分最高的网络结构,即与数据拟合最好的网络结构。
1、爬山法(hc):从一个初始的网络结构开始,通过加边、减边和转边三个搜索算子对当前网络结构进行修改,并对修改后的网络结构进行评分,最后找出评分最高的结构
2、禁忌搜索(tabu):是一种亚启发式随机搜索算法,通过对局部领域逐步搜索得到全局最优解。为了避免陷入局部最优和重复迭代,禁忌搜索算法采用了一种禁忌表,利用该表对解的移动搜索过程进行记录和选择,当搜索的最优解已经在禁忌表中时,则会自动放弃该解,避免重复搜索。
结构学习——基于约束的方法(Grow-Shrink)
结构学习——基于混合的方法
MMHC算法结合了条件独立性测试、搜索和评分等方法, 该算法分为2个阶段, 在第1阶段利用MMPC (max-min parents and children) 算法构建贝叶斯网络结构的框架, 在第2阶段执行评分搜索确定网络结构的边以及边的方向。
参数学习
R语言贝叶斯网络快速介绍
贝叶斯网络
定义
贝叶斯网络(BNs)的定义是:
- 一个网络结构,一个有向无环图 , 其中每个节点 对应于一个随机变量 ;
- 一个全局概率分布 (带参数 ), 它可以根据图中存在的弧被分解成更小的局部概率分布。
网络结构的主要作用是通过图形分离来表达模型中各变量之间的条件独立性关系,从而指定全局分布的因子化。
每个局部分布都有自己的参数集 ; 而⋃ 要比 小得多,因为许多参数是固定的,因为它们所属的变量是独立的。
R实现了以下学习算法。
基于约束的:PC, GS, IAMB, MMPC, Hilton-PC
基于分数的:爬山算法、Tabu Search
配对的:ARACNE, Chow-Liu
混合:MMHC, RSMAX2
我们使用基于分数的学习算法,希尔算法。首先,我们将先为本教程生成简单的数据集。
在这个数据集中,'状态'与'元素'和'接受'列有关系。而'类型'与'颜色'列有关系。当你创建一个带有分类数据的数据框时,列应该是一个因子类型。否则,该数据框不能用于BN结构的创建。
接下来,我们将创建学习结构。
我们可以在一个图中看到结构。
> plot(hc_simd)
点击标题查阅往期内容
01
02
03
04
在这个图中,状态、元素、接受、类型和颜色被称为节点。节点之间的方向用弧线描述,弧线是一个包含从元素到元素方向数据的矩阵。
如上弧线显示,在我们的数据中存在'类型'到'颜色',以及'状态'到'接受'和'元素'的关系。'类型'和'状态'是两个独立的组,它们之间不存在相互依赖关系。
接下来,我们将用数据来拟合模型。
simd_fitted
基于上述训练数据,我们可以进行条件概率查询。
我们检查 "Outlier "和 "Target "的状态概率。
该样本成为 "离群 "的概率为51%。
状态成为 "目标 "的概率是0%。
错颌畸形数据的贝叶斯网络分析
问题: 受第三类错牙合畸形影响的患者(以下牙弓突出为特征),其骨骼不平衡在生命早期就产生,在青春期和骨骼成熟前会变得更加明显。在单个III类患者中早期预测治疗的成功或失败,使其更容易矫正,但仅从少量的形态决定因素中预测是很难做到的。原因是III类错颌畸形很少是单一颅面部件异常的结果,所以单个的临床和放射学测量值可能不如测量值本身的相互作用具有指示性。
任务:
- 我们学习一个BN,并使用它来确定和可视化在成长和治疗过程中各种III类错位颌面特征之间的相互作用。
- 我们通过验证一些普遍接受的关于这些骨骼不平衡演变的假说来检验其一致性。
- 我们表明,与接受快速上颌扩张和面罩治疗的正畸患者相比,未经治疗的受试者形成了不同的III类颅面生长模式。
- 在接受治疗的患者中,CoA段(上颌骨长度)和ANB角(上颌骨与下颌骨的前后关系)似乎是接受治疗的主要影响的骨骼亚空间。
数据
我们将使用的数据集包含143名患者,在T1和T2年龄段有两组测量数据(以年为单位),用于以下变量。
治疗:未经治疗(NT),治疗后效果不好(TB),治疗后效果好(TG)。
生长:一个二元变量,数值为好或坏。
ANB:唐氏点A和B之间的角度(度)。
IMPA:门牙-下颌平面角(度)。
PPPM:腭平面-下颌平面的角度(度)。
CoA:上颌骨从髁状突到唐氏点A的总长度(mm)。
GoPg:下颌体从齿龈到齿龈的长度(mm)。
CoGo:下颌骨的长度,从髁状突到齿状突(mm)。
所有的测量都是通过X射线扫描得出的,使用一套参考点建立的图,如以下。
> str(data)
预处理和探索性数据分析
首先,我们创建一个数据框架,其中包括所有变量的差异以及增长和治疗。
生长和治疗变量带有关于病人预后的冗余信息,这一点从TB和TG之间生长良好的病人比例的差异中可以看出。
为了避免在模型中包括这两个变量所导致的混杂,我们将治疗重新编码为一个二元变量,0表示NT,1表示TB或TG。同样地,我们对成长进行重新编码,0表示坏,1表示好。
由于我们将使用高斯BN进行分析,检查这些变量是否是正态分布;从下面的图来看,似乎并非所有的变量都是如此。
+ hist(x, prob = TRUE ) + lines(density(x), lwd = 2 )
这些变量是通过线性关系联系起来的吗?其中一些是,但不是全部。
> pairs(diff[, setdiff(names(diff)
最后,我们可以看看这些变量是否以任何方式聚在一起,因为聚在一起的变量更有可能在BN中发生联系。
> heatmap(rho)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(中):https://developer.aliyun.com/article/1496663