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

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

贝叶斯网络的优缺点

优点

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

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

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

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

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

缺点

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

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

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

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

应用场景

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/916856.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式硬件电子电路设计(五)MOS管详解(NMOS、PMOS、三极管跟mos管的区别)

引言:在我们的日常使用中,MOS就是个纯粹的电子开关,虽然MOS管也有放大作用,但是几乎用不到,只用它的开关作用,一般的电机驱动,开关电源,逆变器等大功率设备,全部使用MOS管…

cocoscreator-doc-TS-脚本开发-获取和设置资源

资源属性的声明 cc.Asset 的子类下面这些 cc.Texture2D、cc.SpriteFrame、cc.AnimationClip、cc.Prefab 等 加载场景,会自动加载场景关联的资源 ,再加载关联的资源所关联的资源,直到全加载 在属性检查器中设置资源 property(cc.Label) la…

在Keil删除原有的组出现系统软件无响应的原因

取消掉core的勾选。 keil 添加文件夹,软件崩溃解决办法_keil5创建文件夹卡死-CSDN博客

超越传统:探索ONLYOFFICE的革命性办公新纪元

目录 🍁引言 🍁一、ONLYOFFICE产品简介 (一)、介绍 (二)、基本功能简介 🍁二、核心功能具体介绍 1、编辑操作 2、文本与段落: 3、样式与图形: 4、表格与图表&…

一文说清libc、glibc、glib的发展和关系

一 引言 在大家的技术生涯中,一定会遇到glib、glibc、libc这些个名词。 尤其像我这种对英文名脸盲的人,看着它们就头大,因为单从名字上看,也太像了,所以经常容易混淆。 即使翻翻网上的资料,看完还是有点懵…

OceanBase 升级过程研究(4.2.1.6-4.2.1.8)

模拟业务 使用benchmark加载10仓数据模拟业务场景 升级方法 使用滚动升级方式来进行OB升级。该方法前提是OB集群必须满足官方规定的高可用架构(如果 Zone 个数小于 3,滚动升级时则无法构成多数派), 滚动升级的原理就是轮流完成每个ZONE的升级工作,由于…

使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan

使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan 背景 在使用Ant Design Vue 开发数据表格时,我们常常会遇到需要合并单元格的需求。 比如,某些字段的值可能会在多行中重复出现,而我们希望将这些重复的单元格合并为…

Godot的开发框架应当是什么样子的?

目录 前言 全局协程还是实例协程? 存档! 全局管理类? UI框架? Godot中的异步(多线程)加载 Godot中的ScriptableObject 游戏流程思考 结语 前言 这是一篇杂谈,主要内容是对我…

ssm118亿互游在线平台设计与开发+vue(论文+源码)_kaic

毕业设计(论文) 亿互游在线平台的设计与开发 学生姓名 XXX 学 号 XXXXXXXX 分院名称 XXXXXXXX 专业班级 XXXXX 指导教师 XXXX 填写日期 XXXX年…

MySQL技巧之跨服务器数据查询:基础篇-A数据库与B数据库查询合并

MySQL技巧之跨服务器数据查询:基础篇-A数据库与B数据库查询合并 上一篇已经描述:借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的链接名: MY_ODBC_MYSQL 以…

LLaMA-Factory全流程训练模型

🤗本文主要讲述在docker下使用LLaMA-Factory训练推理模型。 🫡拉取镜像 首先需要启动docker,然后在终端中输入: docker run -tid --gpus all -p 8000:8000 --name LLM -e NVIDIA_DRIVER_CAPABILITIEScompute,utility -e NVIDIA…

英语每日一句

目录 每日一句今日单词知识加餐 每日一句 We will fail when we fail to try. 当我们不努力的时候,我们就会失败。 —— 罗莎帕克斯 今日单词 fail /feɪl/ v. 不及格;失败;未能(做到);失灵&#xff1b…

若点集A=B则A必能恒等变换地变为B=A这一几何常识推翻直线(平面)公理

黄小宁 关键词:“更无理”复数 复平面z各点z的对应点z1的全体是z1面。z面平移变为z1面就使x轴⊂z面沿本身平移变为ux1轴。R可几何化为R轴,R轴可沿本身平移变为R′轴,R′轴可沿本身平移变为R″轴,...。直线公理和平面公理使几百年…

SpringMVC学习笔记(二)

五、Rest风格编程 (一)Rest风格URL规范介绍 1、什么是restful RESTful架构,就是目前最流行的一种互联网软件架构风格。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。REST这个词,是Roy T…

PyTorch深度学习与企业级项目实战-预训练语言模型GPT

【图书推荐】《PyTorch深度学习与企业级项目实战》-CSDN博客 13个PyTorch深度学习案例简介-CSDN博客 《PyTorch深度学习与企业级项目实战(人工智能技术丛书)》(宋立桓,宋立林)【摘要 书评 试读】- 京东图书 (jd.com) PyTorch深度学习算法与…

自存 关于RestController请求传参数 前端和后端相关

1.Get请求 Get请求传递参数一般是 1.通过PathVariable来映射 URL 绑定的占位符 后端 GetMapping("test/{id}")public R test(PathVariable Integer id){System.out.println(id);return R.success(id);}前端 export function test(id:any){return request({url:&q…

前端web

题目&#xff1a;制作带有下拉悬停菜单的导航栏 效果图 一、先制作菜单栏 <body> <div id"menu"> <div id"container"> <div class"item">游戏1 <div cla…

RabbitMQ教程:工作队列(Work Queues)(二)

RabbitMQ教程&#xff1a;工作队列&#xff08;Work Queues&#xff09;&#xff08;二&#xff09; 一、引言 在快节奏的软件开发世界中&#xff0c;我们经常面临需要异步处理任务的场景&#xff0c;比如在Web应用中处理耗时的图片处理或数据分析任务。这些任务如果直接在用…

Node.js下载安装及环境配置教程

一、进入官网地址下载安装包 Node.js 中文网 选择对应你系统的Node.js版本&#xff0c;这里我选择的是Windows系统、64位 二、安装程序 &#xff08;1&#xff09;下载完成后&#xff0c;双击安装包&#xff0c;开始安装Node.js (2)直接点【Next】按钮&#xff0c;此处可根据…

免费,WPS Office教育考试专用版

WPS Office教育考试专用版&#xff0c;不仅满足了考试需求&#xff0c;更为教育信息化注入新动力。 https://pan.quark.cn/s/609ef85ae6d4