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

        贝叶斯网络(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以后,我们其实就得到了一个贝叶斯网络(图模型)。最后就是模型评估了,这里就不写了。

贝叶斯网络的优缺点

优点

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

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

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

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

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

缺点

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

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

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

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

应用场景

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

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

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

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

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

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

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

概率分布可以回答相关领域的任何问题,但随着变量数目的增 加,全概率分布的联合取值空间却可能变得很大。另外,对所有的原 子事实给出概率,对用户来说也非常困难。 若使用Bayes 规则,就可以利用变量之间的条件独立关系简化计 算过程,大大降低所需要声明的条件概率的数目。我们可以用一个叫 作Bayesian 网的数据结构来表示变量之间的依赖关系,并为全概率分 布给出一个简明的表示。 定义(Bayesian 网):Bayesian 网T 是一个三元组(N,A,P),其 中 1. N 是节点集合 2. A 是有向弧集合,与N 组成有限非循环图G =(N,A) 3. P {p(V | ) :V N} v    ,其中 v  代表节点V 的父亲节点集合 Bayesian 网是一个有向非循环图: (1) 网中节点与知识领域的随机变量一一对应(下文中不区分节 点与变量); (2)网中的有向弧表示变量间的因果关系,从节点X 到节点Y 有 向弧的直观含义是X 对Y 有直接的因果影响;影响的强度或者说不确 定性由条件概率表示; (3)每个节点有一个条件概率表,定量描述其所有父亲节点对于 该节点的作用效果。 -2- (4)由领域专家给定网络结构和条件概率表。 )由领域专家给定网络结构和条件概率表。 )由领域专家给定网络结构和条件概率表。 )由领域专家给定网络结构和条件概率表。 )由领域专家给定网络结构和条件概率表。 )由领域专家给定网络结构和条件概率表。 )由领域专家给定网络结构和条件概率表。 )由领域专家给定网络结构和条件概率表。 )由领域专家给定网络结构和条件概率表。 对领域专家来说,决定在特中存哪些条件独立联系通常是 对领域专家来说,决定在特中存哪些条件独立联系通常是 对领域专家来说,决定在特中存哪些条件独立联系通常是 对领域专家来说,决定在特中存哪些条件独立联系通常是 对领域专家来说,决定在特中存哪些条件独立联系通常是 对领域专家来说,决定在特中存哪些条件独立联系通常是 对领域专家来说,决定在特中存哪些条件独立联系通常是 对领域专家来说,决定在特中存哪些条件独立联系通常是 对领域专家来说,决定在特中存哪些条件独立联系通常是 对领域专家来说,决定在特中存哪些条件独立联系通常是 对领域专家来说,决定在特中存哪些条件独立联系通常是 对领域专家来说,决定在特中存哪些条件独立联系通常是 对领域专家来说,决定在特中存哪些条件独立联系通常是 对领域专家来说,决定在特中存哪些条件独立联系通常是 较容易的 较容易的 较容易的 (给定网络结构相对容易 给定网络结构相对容易 给定网络结构相对容易 给定网络结构相对容易 给定网络结构相对容易 )─ 事实上,要远比际声明出这 事实上,要远比际声明出这 事实上,要远比际声明出这 事实上,要远比际声明出这 事实上,要远比际声明出这 事实上,要远比际声明出这 事实上,要远比际声明出这 事实上,要远比际声明出这 事实上,要远比际声明出这 些概率本身容易得多 些概率本身容易得多 些概率本身容易得多 些概率本身容易得多 些概率本身容易得多 (给定准确的条件概率相对 给定准确的条件概率相对 给定准确的条件概率相对 给定准确的条件概率相对 给定准确的条件概率相对 给定准确的条件概率相对 困难) 。一旦 。一旦 。一旦 BayesianBayesianBayesianBayesianBayesian Bayesian网的拓扑结构给定, 则只需对那些直接相互依赖节点出条件概率网的拓扑结构给定, 则只需对那些直接相互依赖节点出条件概率网的拓扑结构给定, 则只需对那些直接相互依赖节点出条件概率网的拓扑结构给定, 则只需对那些直接相互依赖节点出条件概率网的拓扑结构给定, 则只需对那些直接相互依赖节点出条件概率网的拓扑结构给定, 则只需对那些直接相互依赖节点出条件概率网的拓扑结构给定, 则只需对那些直接相互依赖节点出条件概率网的拓扑结构给定, 则只需对那些直接相互依赖节点出条件概率网的拓扑结构给定, 则只需对那些直接相互依赖节点出条件概率网的拓扑结构给定, 则只需对那些直接相互依赖节点出条件概率网的拓扑结构给定, 则只需对那些直接相互依赖节点出条件概率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值