首页 > 其他分享 >贝叶斯网络——基于概率的图模型(详解)

贝叶斯网络——基于概率的图模型(详解)

时间:2024-11-15 22:44:28浏览次数:3  
标签:变量 评分 模型 网络 贝叶斯 详解 网络结构 节点

        贝叶斯网络(Bayesian Network,简称BN)是一种基于概率图模型的表示方法,用于表示变量之间的依赖关系,并通过条件概率推断变量间的关系。它通过有向无环图(DAG)来描述变量之间的依赖关系,其中每个节点表示一个随机变量,边表示变量之间的条件依赖关系。 

基本概念

有向无环图(DAG)

叶斯网络由一个有向无环图组成,其中每个节点通过有向边与其他节点相连。边的方向表示一个变量对另一个变量的条件依赖关系,且没有环路,即图中不存在从一个节点回到其本身的路径。

专家知识

专家知识可以理解为一系列定理或者已知结论,主要用于确定变量间的依赖关系。比如,根据科学知识,X影响Y,我们可以确定依赖关系: X→Y

条件依赖

图中的边表示变量之间的条件依赖关系。如果节点A指向节点B,则节点B的值在已知节点A的条件下依赖于节点A的值。节点B的值与其父节点的值之间的关系通常通过条件概率分布(CPD)来描述。

依赖关系举例:A→B,A→C,B→C,B→A,C→A,C→B等等。

条件概率表(CPT):

每个节点都有一个条件概率表,用来描述该节点在给定其父节点条件下的概率分布。如果一个节点没有父节点(即是根节点),那么它的条件概率表就是其边缘分布。

主要步骤

(一)随机变量的选择与定义

每个变量通常代表一个特征或事件,可能是离散的也可能是连续的。比如在医疗诊断中,变量可以是症状、疾病或治疗效果等。

举个例子:

目标:目标是评估一个人的信用风险(是否违约)。

基本变量(特征变量):

  • 信用历史(C):个人的信用历史是否良好(好/差)

  • 收入水平(A):借款人的收入水平(高/低)

  • 债务比率(D):借款人债务与收入的比例(低/高)

  • 负债历史(L):借款人是否有过欠款记录(有/没有)

  • 工作稳定性(W):借款人是否有稳定的工作(有/没有)

  • 等等

目标变量:

  • 违约风险(R):借款人是否有违约的风险(是/否)。

(二)学习网络结构

若没有专家知识,我们要确定变量间的依赖关系、并构建贝叶斯网络结构,就要从数据中去学习他们的关系,构建网络结构。

贝叶斯网络的核心部分是通过图结构表示变量之间的依赖关系。每个节点表示一个随机变量,边则表示一个条件依赖关系。

  • 父节点与子节点:在图中,每个节点(变量)可能依赖于其他节点。通过“父节点”和“子节点”来描述依赖关系。父节点影响子节点的取值,子节点的值受到父节点的条件概率影响。

  • 无环性:贝叶斯网络的图结构是有向无环图(DAG),即图中不存在回路。这保证了从某个节点出发无法沿着边回到同一个节点。

  • 条件独立性假设:对于每个节点,条件独立性假设表明,节点在给定其父节点条件下,与其他未直接连接的节点是条件独立的。例如,如果变量A→B,而B→C,则在给定B的情况下,A和C是条件独立的。


学习贝叶斯网络的结构通常有两个步骤:结构学习和参数学习。

结构学习

        这一步骤的目标是从数据中推断出最佳的网络结构,即确定哪些变量是相互依赖的,通过某些方法选择合适的有向边,构建出网络结构。结构学习主要方法如下:

评分搜索方法(通常与贪心算法结合一起用):

        其核心思想是通过计算每种可能边(或依赖关系)的“评分”,并选择得分最高的边,逐步构建网络结构。评分方法通过比较不同结构的好坏来搜索最佳网络结构。最常见的评分函数有:

  • 对数似然:对数似然是基于给定数据的条件概率计算出的值。其值越高,说明网络结构对数据的拟合越好。对数似然函数:log⁡P(D∣G),其中 D 是观测数据,G 是网络结构,表示数据在给定结构下的条件概率。

  • 贝叶斯信息准则(BIC):BIC是考虑模型复杂度的评分函数,它在对数似然上增加了一个惩罚项,避免过度拟合。BIC的公式是: BIC = -2 \log P(D | G) + k \log(N),其中,k 是网络中参数的数量,N 是样本量。较低的BIC值表示较优的模型。

约束搜索方法:

        与贪心算法不同,约束方法通过统计检验来推断节点之间的独立性,从而确定哪些边应当存在。约束方法的边选择不是基于评分函数的,而是基于条件独立性测试的结果。

  • PC算法:首先初始化空网络,假设所有的变量之间都有边。然后通过一系列的条件独立性测试逐步去除不必要的边。具体来说,对于每对节点 X 和 Y,PC算法会测试它们在其他节点条件下是否独立。如果测试结果是独立的,则去掉这条边。

启发式搜索方法:

        启发式搜索方法采用随机化搜索的策略,目的是避免陷入局部最优解。与贪心算法类似,启发式方法也会逐步探索可能的边,但它们允许一定程度的“跳跃”,以避免陷入局部最优。

  • 模拟退火:模拟退火是一个全局优化方法,可以避免贪心算法可能陷入局部最优解。它通过模拟物理过程中的退火过程,逐步降低系统的能量(类似于网络评分的最小化)。在搜索过程中,模拟退火允许某些不太优的选择,以此来跳出局部最优。

  • 遗传算法:遗传算法通过模拟自然选择过程来寻找最优网络结构。首先,生成一组网络结构(种群),然后通过交叉和变异操作生成新的一代网络。每一代的网络结构都通过评分函数进行评估,优胜者会“繁殖”出下一代。

参数学习

        当网络结构确定后,下一步是计算每个节点的条件概率表(CPT,Conditional Probability Table)。对于离散变量,通常使用最大似然估计(MLE)来计算条件概率;对于连续变量,则可以使用贝叶斯估计或最大似然估计(MLE)来拟合分布参数。

贝叶斯估计、最大似然估计(MLE)在后面的例子会讲。

 

(三)模型评估

建立了贝叶斯网络之后,还需要通过模型验证来评估其性能。这可以通过交叉验证等方法进行,以确保贝叶斯网络在未知数据上的表现良好。

违约风险评估的贝叶斯网络模型(示例)

        假设我们有一组银行用户的数据,包含了多个特征,用于评估每个用户的违约风险。我们希望通过学习贝叶斯网络的结构和参数来预测用户是否会违约。贝叶斯网络将帮助我们理解特征之间的关系,并通过学习数据中的条件概率来进行预测。

(1)数据定义(数据准备)

目标变量:

  • 是否违约(Default):目标变量,用户是否违约,离散变量(是/否)

特征变量:

  • 收入(Income):用户的年收入,通常是连续变量。

  • 信用分数(CreditScore):用户的信用评分,通常是离散变量。

  • 负债比率(DebtRatio):用户的负债占收入的比例,通常是连续变量。

  • 婚姻状况(MaritalStatus):用户的婚姻状况,离散变量(已婚、未婚、离异等)。

  • 历史违约(PastDefault):用户过去是否有违约记录,离散变量(有违约、无违约)。

  • 贷款金额(LoanAmount):用户申请的贷款金额,连续变量。

(2)结构学习

我们首先需要确定特征之间的依赖关系。在没有专家知识的情况下,我们可以使用数据驱动的方法来学习贝叶斯网络的结构。使用评分搜索方法贪心算法学习网络结构:

初始步骤

从一个空网络开始,所有变量之间没有任何边。

第一轮:

比较所有变量之间的依赖关系,计算每条边的评分(使用BIC示例)。例如:

  • Income→DebtRatio  ,计算P(Income,DebtRatio)的评分

  • P(CreditScore,Default)的评分

  • P(Income,Default)的评分

  • ......

  • 选择评分最高的一条边,假设是Income→DebtRatio,表示收入影响负债比率。

贝叶斯信息准则(BIC)

评分公式:BIC = -2 \log P(D | G) + k \log(N)

其中,log⁡P(D∣G),其中 D 是观测数据,G 是网络结构,N为样本量,k是网络中参数的数量

目标:求解出对数似然函数log⁡P(D∣G),再求BIC

对于离散型数据(基于MLE极大似然估计求解)

对于每一个节点Xi,给定其父节点 \text{Pa}(X_i) 的条件概率计算式为:

对每一个节点Xi,上式连乘,得到似然函数 P(D∣G)计算式:

最后得出BIC评分:BIC = -2 \log P(D | G) + k \log(N)

对于连续型数据(基于MLE极大似然估计求解)

对于连续型数据,假设节点 Xi 给定其父节点 \text{Pa}(X_i) 服从某个已知的分布,常见的假设是条件分布为高斯分布。对于每一个节点Xi,给定其父节点 \text{Pa}(X_i) 的条件概率计算式为:

其中:

对每一个节点Xi,得到似然函数 P(D∣G)计算式:

最后得出BIC评分:BIC = -2 \log P(D | G) + k \log(N)

第二轮:

更新网络,加入这条边后,计算其他可能的边的评分。例如:

  • CreditScore→Default  , P(CreditScore,Default)的评分

  • P(DebtRatio,Default)的评分

  • P(MaritalStatus,DebtRatio)的评分

  • 等等

  • 选择评分最优的边,假设是 DebtRatio→Default,表示负债比率影响违约风险。

后续轮次:

持续进行边的选择和添加,直到所有可能的依赖关系都被评估过,并且没有更好的边可添加。最后得到一个网络结构(可能是局部最优网络结构)。

贪心算法优点

  • 计算效率高:与全局搜索方法相比,贪心算法的计算量较小,适合大数据集。

  • 简单易理解:贪心算法结构简单,实现起来相对容易。

贪心算法缺点

  • 可能陷入局部最优:贪心算法只考虑当前步骤最优的选择,容易陷入局部最优解,无法保证得到全局最优的网络结构。为了避免局部最优解,可以通过多次随机初始化并选择最优解来改善这一点。

(3)参数学习

学习得到一个网络结构后,我们需要学习(即计算)每个节点的条件概率分布表。

如果使用MLE计算:

离散型计算公式

连续型计算公式

如果使用贝叶斯估计

我们结合贝叶斯定理和全概率公式,得到条件概率计算公式:

 其中,Bi为当前节点的取值,A为父节点。

对于离散型,我们使用数据集的频率信息(出现次数)计算各种概率P,比如:

对于连续型,我们使用对应分布的概率密度函数计算各种概率P,比如:

参数学习计算出CPT以后,我们其实就得到了一个贝叶斯网络(图模型)。最后就是模型评估了,这里就不写了。

贝叶斯网络的优缺点

优点

  • 表示复杂的依赖关系:贝叶斯网络能够清晰地表示变量之间的因果关系及其条件独立性,适用于描述复杂的因果模型。

  • 灵活性强:可以处理离散和连续变量,支持不同类型的数据(如二元变量、整数、实数等)。

  • 易于推理:通过贝叶斯推理,可以根据已有的证据推断其他变量的状态,适合不确定性较大的问题。

  • 处理缺失数据:贝叶斯网络在数据缺失的情况下,仍能有效地进行推理和预测,能在一定程度上“填补”缺失数据。

  • 直观易理解:网络的图形化结构使得贝叶斯网络容易被理解和解释,尤其是在非专业人员中。

缺点

  • 结构学习困难:从数据中学习贝叶斯网络的结构是一项非常复杂的任务,尤其是在节点数目较多或数据量不足时,学习出的结构可能不准确。

  • 计算复杂度高:对于大规模网络,尤其是涉及大量变量和条件概率的情况,推理和学习的计算复杂度较高,需要较大的计算资源。

  • 依赖先验知识:贝叶斯网络需要依赖先验概率和条件概率表,这些信息有时需要人工设定,且可能会受到偏见的影响。

  • 需要大量数据:尽管贝叶斯网络能处理不完全数据,但在大规模或复杂网络中,准确的学习和推断通常需要大量的训练数据。

应用场景

  • 医疗诊断:贝叶斯网络能够将患者的症状、病史、检测结果等变量进行联合建模,从而推断疾病的可能性,特别适合处理不确定性较大的医学诊断任务。

  • 故障诊断:在工业或系统监控中,贝叶斯网络可以帮助识别故障的原因并推断出可能的故障路径。

  • 风险分析与管理:在金融、保险、工程等领域,贝叶斯网络用于建模复杂的风险因素,评估不同情境下的风险。

  • 自然语言处理:在语言模型、语义分析和信息抽取等任务中,贝叶斯网络可用于建模词语、句子及其上下文之间的依赖关系。

  • 机器学习中的特征选择和分类:贝叶斯网络有时用于特征选择,尤其是在面对高维数据时,利用其条件独立性来简化模型结构。

#  若文章对大噶有帮助的话,希望点个赞支持一下叭!

# 文章如有错误,欢迎大噶指正!

标签:变量,评分,模型,网络,贝叶斯,详解,网络结构,节点
From: https://blog.csdn.net/weixin_74268817/article/details/143803527

相关文章

  • 关于我重生到21世纪学C语言这件事——指针详解(2)
    人无完人,持之以恒,方能见真我!!!共同进步!!文章目录1.数组名的理解2.使⽤指针访问数组3.⼀维数组传参的本质4.冒泡排序5.⼆级指针6.指针数组7.指针数组模拟⼆维数组1.数组名的理解在上⼀个章节我们在使⽤指针访问数组的内容时,有这样的代码:intarr[10]={1,......
  • 【提高篇】3.3 GPIO(三,工作模式详解 上)
    目录一,工作模式介绍二,输入浮空三,输入上拉一,工作模式介绍GPIO有八种工作模式,参考下面列表,我们先有一个简单的认识。二,输入浮空在输入浮空模式下,上拉/下拉电阻为断开状态,施密特触发器打开,输出被禁止。输入浮空模式下,IO口的电平完全是由外部电路决定。如果IO引脚没有......
  • 51c大模型~合集44
     我自己的原文哦~ https://blog.51cto.com/whaosoft/11884382#DR4SR最佳学生论文解读,中科大、华为诺亚:序列推荐新范式DR4SR本工作由认知智能全国重点实验室IEEEFellow陈恩红团队与华为诺亚方舟实验室完成。陈恩红教授团队深耕数据挖掘、机器学习领域,在顶级期刊与会议上......
  • 基于numpy、pandas、matplotlib的数据分析项目详解(超详细版)
    一、引言在之前的文章中,我们介绍了NumPy、Pandas和Matplotlib这三款强大的数据分析工具。今天,我们将通过一个实际项目来帮助大家更好地掌握这些工具。项目名称为《餐厅订单数据分析》。在这个项目中,我们将分析餐厅的订单数据,以获取有关菜品销售、订单趋势和顾客偏好的有价......
  • 不可以色色!使用autodl平台搭建深度学习模型实现自动“鉴黄”!
    Falconsai色情内容色情内容是非常有害的,它们既不符合我国的法律也要求,同时也毒害了人们的思想精神。在过去,通过使用人工“鉴黄”的方式,找一个专门的工作者,去判断一个内容是否是色情内容,虽然,他们通过努力不懈,阻止了色情内容的传播,但是,这样的工作对于鉴黄师本人来说,却是很大的......
  • <QNAP 453D QTS-5.x> 日志记录:在 NAS 从 huggingface_hub 下载模型 google-t5/t5-base,在
    目的:离线使用 google-t5/t5-base预训练模型, 行多种自然语言处理任务:翻译可借不支持东亚语言。Project-22.Ai-1.T5-base只能在:  English,French,Romanian,German间使用,code非常简单,大概沾到本地/离线使用模型的皮毛。运行这么小的模型,也使我的笔记拔高了,硬件要......
  • 微软利用BitNet最终把1000亿参数人工智能模型塞进了智能手表
    序言:斯坦福大学利用LoLCats技术将1000亿参数模型的训练成本降低到20美元;微软则通过BitNet技术进一步将模型量化,使其能在消费类电子产品中运行,例如个人电脑、手机、智能手表等嵌入式设备。人工智能就这样顺理成章的进入了大家的日常生活。关联的文章:《斯坦福大学推出线性前......
  • 电路:电路模型和电路定律
    1.1电路和电路模型电路模型:反映实际电路部件的主要电磁性质的理想电路元件及其组合理想电路元件:有某种确定的电磁性质的理想元件(最小单元)电能或电信号的发生器用电设备电源负载激励响应输入输出5种基本的理想电路元件:电阻元件(R):表示消耗电能的元件电感元件(L):表示产生磁场,储......
  • Linux常用命令之find命令详解
    find命令详解find是Unix和类Unix操作系统(如Linux和macOS)中一个非常强大的命令行工具,用于在文件系统中搜索文件和目录。find命令可以根据多种条件(如文件名、类型、大小、修改时间等)进行搜索,并可以执行复杂的操作。基本语法find命令的基本语法如下:find[路径]......
  • 防火墙形态之详解(Detailed Explanation of Firewall Form)
     ......