课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(上)

简介: 课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例

全文链接: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)

点击标题查阅往期内容


R语言JAGS贝叶斯回归模型分析博士生延期毕业完成论文时间


01

02

03

04



在这个图中,状态、元素、接受、类型和颜色被称为节点。节点之间的方向用弧线描述,弧线是一个包含从元素到元素方向数据的矩阵。

如上弧线显示,在我们的数据中存在'类型'到'颜色',以及'状态'到'接受'和'元素'的关系。'类型'和'状态'是两个独立的组,它们之间不存在相互依赖关系。

接下来,我们将用数据来拟合模型。

simd_fitted

基于上述训练数据,我们可以进行条件概率查询。

我们检查 "Outlier "和 "Target "的状态概率。


该样本成为 "离群 "的概率为51%。

状态成为 "目标 "的概率是0%。

错颌畸形数据的贝叶斯网络分析

问题: 受第三类错牙合畸形影响的患者(以下牙弓突出为特征),其骨骼不平衡在生命早期就产生,在青春期和骨骼成熟前会变得更加明显。在单个III类患者中早期预测治疗的成功或失败,使其更容易矫正,但仅从少量的形态决定因素中预测是很难做到的。原因是III类错颌畸形很少是单一颅面部件异常的结果,所以单个的临床和放射学测量值可能不如测量值本身的相互作用具有指示性。

任务:

  1. 我们学习一个BN,并使用它来确定和可视化在成长和治疗过程中各种III类错位颌面特征之间的相互作用。
  2. 我们通过验证一些普遍接受的关于这些骨骼不平衡演变的假说来检验其一致性。
  3. 我们表明,与接受快速上颌扩张和面罩治疗的正畸患者相比,未经治疗的受试者形成了不同的III类颅面生长模式。
  4. 在接受治疗的患者中,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

相关文章
|
11天前
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络(CNN)的工作原理深度解析
【6月更文挑战第14天】本文深度解析卷积神经网络(CNN)的工作原理。CNN由输入层、卷积层、激活函数、池化层、全连接层和输出层构成。卷积层通过滤波器提取特征,激活函数增加非线性,池化层降低维度。全连接层整合特征,输出层根据任务产生预测。CNN通过特征提取、整合、反向传播和优化进行学习。尽管存在计算量大、参数多等问题,但随着技术发展,CNN在计算机视觉领域的潜力将持续增长。
|
3天前
|
网络协议 网络架构 数据格式
网络原理,网络通信以及网络协议
网络原理,网络通信以及网络协议
6 1
|
7天前
|
机器学习/深度学习 搜索推荐 PyTorch
【机器学习】图神经网络:深度解析图神经网络的基本构成和原理以及关键技术
【机器学习】图神经网络:深度解析图神经网络的基本构成和原理以及关键技术
37 2
|
11天前
|
机器学习/深度学习 自然语言处理 并行计算
YOLOv8改进 | 注意力机制 | 在主干网络中添加MHSA模块【原理+附完整代码】
Transformer中的多头自注意力机制(Multi-Head Self-Attention, MHSA)被用来增强模型捕捉序列数据中复杂关系的能力。该机制通过并行计算多个注意力头,使模型能关注不同位置和子空间的特征,提高了表示多样性。在YOLOv8的改进中,可以将MHSA代码添加到`/ultralytics/ultralytics/nn/modules/conv.py`,以增强网络的表示能力。完整实现和教程可在提供的链接中找到。
|
5天前
|
机器学习/深度学习 人工智能 算法
【机器学习】深度神经网络(DNN):原理、应用与代码实践
【机器学习】深度神经网络(DNN):原理、应用与代码实践
19 0
|
1月前
|
消息中间件 Java Linux
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
|
17天前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
35 1
|
2天前
|
安全 物联网 Linux
学习Linux对网络安全的重要性
**学习Linux对网络安全至关重要:** 1. 开源操作系统广泛应用于服务器、网络设备,掌握Linux是安全专家必备技能。 2. Linux内置安全特性,如最小权限和防火墙,加上丰富的安全工具,提供强大保障。 3. 可定制性允许灵活配置,满足安全需求,开源社区提供持续更新和教育资源。 4. 学习Linux能提升攻防能力,用于系统加固和渗透测试,适应跨平台安全场景。 5. 随着云计算和物联网发展,Linux在网络安全中的角色日益关键。
12 3
|
20天前
|
Linux 数据安全/隐私保护 Windows
linux 搭建cloudreve win映射网络驱动器WebDav
linux 搭建cloudreve win映射网络驱动器WebDav
|
20天前
|
监控 网络协议 Ubuntu
Linux网络配置全攻略:解读/etc/network/interfaces文件的精髓
Linux网络配置全攻略:解读/etc/network/interfaces文件的精髓
45 1