随机对照试验是发现因果关系的黄金准则,然而现实世界中很多问题往往由于道德伦理的原因不允许我们设置干预进行试验,这就引发了在观测数据上学习因果关系的需求。贝叶斯网络是概率论与图论相结合的产物,它用图论的方式直观地表达各变量之间的因果关系,为多个变量之间的复杂依赖关系提供了紧凑有效、简洁直观的统一框架,是表示因果关系的常用工具。当前贝叶斯网络因果图结构学习方法主要分为基于约束的方法、基于评分的方法以及混合学习方法。从观测数据中学习贝叶斯网络的本质在于利用统计学方法建立图形模型,以拟合观测数据,通常需要做出以下假设:
(1)因果充分性假设:假定在给定观测数据上不存在无法观测到的隐藏变量,即排除对确定因果关系造成干扰的隐藏混杂因子。
(2)因果忠实性假设:若网络G蕴含且仅蕴含数据分布P上的所有条件独立性,则G与P是相互忠实的;忠实性假设保证了可以采用G的图结构和条件概率分布来描述概率分布P所蕴含的条件独立性。
(3)因果马尔科夫假设:对网络中任一变量,若其父节点取值确定,则该变量条件独立与其他非后裔节点,该假设确保贝叶斯网络中任意变量及其非后裔节点之间存在D-分离。

基于约束的方法

  基于约束的学习算法[5]通过变量之间的条件独立性来判断特定结构的存在性,测试条件独立性的方法通常采用统计或者信息论的度量来实现,故其也称为基于条件独立性的方法。
  此类算法一般从无向完全连接图出发,通过条件独立性测试中的置信度来排除噪声数据引起的虚假因果关系从而去除部分无向边,然后基于奥卡姆剃刀准则利用V-结构确定因果方向,定向的原则是网络中不产生回路和新的V-结构。常用的条件独立性测试为基于统计分析的卡方检验或是基于信息论的互信息检验方法。
  算法的原始思想是针对每对节点从剩余节点中寻找二者的有向分离集合,对于一个有n个节点的网络来说,每对节点共需进行最多2^(n-2)次条件测试,不同的算法主要区别于进行条件独立测试的顺序不同,通过排除不可能的条件集来降低算法复杂度。典型的算法包括PC算法、IC算法等。基于约束的算法在原理上更接近于贝叶斯网的语义特性,它的效率高,并在实际中获得较好的效果,其缺点是这类方法存在无法判断的因果关系方向,即存在马尔科夫等价类难题。

基于评分的方法

  基于评分的方法通过组合优化来学习因果图结构,首先定义评分函数来量化贝叶斯网络与给定数据分布的拟合程度,通过搜索算法找到与数据拟合最好的图结构,评分函数通常满足两大性质:
(1)可分解性:网络的评分可分解为各个节点与其父节点之间的评分的和。可分解性有效提高贝叶斯网络学习的速度,尤其在爬山算法等局部搜索算法中。
(2)评分等价性:由于同一个马尔科夫等价类中的DAG在统计上是不可区分的,因此由统计学方法得到的评分函数对于马尔科夫等价的网络应具有相同的评分值。
常用的评分函数有BIC,BD、MDL等。
  搜索策略是为了搜索某个评分函数下分值最高的网络结构,当节点的个数大于1时,寻找最优的模型是NP问题,所以常常采用启发式搜索而非暴力搜索。最基本的方法是贪婪搜索算法,该算法从一个初始模型(可以是空图、随机初始化的图或是利用先验知识人工构建的图)出发开始搜索,搜索的每一步首先利用搜索算子对当前模型进行局部更新,得到一系列候选模型,然后计算每个候选模型的评分,将其中最优模型与当前模型进行比较,若最优候选模型评分更高,则在它基础上进行下一次搜索,反之停止搜索返回当前模型。此外还有FGES算法、爬山算法等。
  基于评分的方法避免了高阶条件测试,可以得到较高的精度,但是复杂性较高,运行时间长且易陷入局部最优。

混合方法

  混合方法融合上述两种方法来弥补它们各自的缺点,首先利用条件独立性检验来缩小候选图搜索空间的复杂度,接着使用基于评分的方法来找到最佳的网络结构。由于充分利用了基于约束的方法的效率高的特点,并采用评分方法有效避免了容易出现谬误的高阶条件测试,因此能够有效地将计算资源用于搜索解空间最有潜力的区域,进而提高网络学习的精度和效率。典型的混合方法包括最大最小爬山算法、稀疏候选算法等。

【因果学习】贝叶斯网络结构学习方法相关推荐

  1. 贝叶斯网络结构学习方法

    文章目录 1. 完备数据的结构学习 基于评分搜索 定义 评分函数 基于贝叶斯统计的评分 K2评分 BD(Bayesian Dirichlet)评分 BDeu(Bayesian Dirichlet eu ...

  2. 贝叶斯网络结构学习之K2算法(基于FullBNT-1.0.4的MATLAB实现)

    题目:贝叶斯网络结构学习之K2算法(基于FullBNT-1.0.4的MATLAB实现) 有关贝叶斯网络结构学习的一基本概念可以参考:贝叶斯网络结构学习方法简介 有关函数输入输出参数的解释可以参考:贝叶 ...

  3. 贝叶斯网络结构学习(基于BDAGL工具箱的MATLAB实现)

    题目:贝叶斯网络结构学习(基于BDAGL工具箱的MATLAB实现) 有关贝叶斯网络结构学习的一基本概念可以参考:贝叶斯网络结构学习方法简介 有关函数输入输出参数的解释可以参考:贝叶斯网络结构学习若干问 ...

  4. 贝叶斯网络结构学习若干问题解释

    题目:贝叶斯网络结构学习若干问题解释 本篇主要为后续讲解具体结构学习算法打基础,共解释以下几个问题: 1.用于贝叶斯网络结构学习的数据集如何存储? 2.学得的贝叶斯网络结构如何存储? 3.什么是节点顺 ...

  5. 贝叶斯网络结构学习之连续参数处理方法

    题目:贝叶斯网络结构学习之连续参数处理方法 注:本文有更新,参见<有关属性离散化算法CACC的补充说明>和<有关属性离散化算法CACC的再次补充说明>.以下为原文: 首先必须说 ...

  6. 基于搜索的贝叶斯网络结构学习算法-K2

    部分内容取自:[Cooper and Herskovits, 1991] Cooper, G. and Herskovits, E. (January, 1991). A Bayesian metho ...

  7. R语言做贝叶斯网络结构学习

    文章目录 本文使用pcalg包做贝叶斯网络结构的学习 #实例分析 ##pcalg包的安装 安装pcalg包时由于有些依赖包已经被CRAN撤掉,所以安装起来有些技巧. 以下是安装代码: install. ...

  8. Nat. Commun. | 识别药物靶点的贝叶斯机器学习方法

    今天给大家介绍的是2019年11月发表在Nature Communications的一篇文章,"A Bayesian machine learning approach for drug t ...

  9. 送书 | 深入浅出,一起学习贝叶斯!

    参与方式:如果你对哪本书感兴趣,可在评论区分享你的贝叶斯学习经验或者遇到的问题,根据留言质量,营长将从中选出三名同学送出图书. 中奖者随机生成,关键看你的留言价值是否能给其他同学一些借鉴,也便于营长将 ...

最新文章

  1. 各种小的 dp (精)
  2. 使用jQuery.Ajax向ASP.NET MVC控制器Post数据
  3. 详解 ASP.NET异步
  4. Python中的注释和算数运算符
  5. 懂集合吗?对,是dart中的集合
  6. Exchange Server 2013 前提条件准备
  7. js面向对象插件的做法框架new goBuy('.cakeItem',{ add:'.add', reduce:'.reduce' },[1,0.7,0.6]);...
  8. WebLogic配置JNDI数据源
  9. synchronized 关键字的底层原理
  10. 1.checkpoint防火墙安装以及高可靠性配置
  11. 个人晋升演讲ppt_晋升面试ppt自我展示演讲稿
  12. 红杉资本投资的企业汇总
  13. BIGEMAP如何添加在线第三方地图
  14. peewee操作mysql_Peewee 使用
  15. 康奈尔大学计算机硕士要求,康奈尔大学计算机硕士
  16. 获取汉字的首字母和拼音
  17. 前三周学习Python的心得与感受
  18. 解决C Runtime R6034的错误
  19. Win11怎么连接上校园网?
  20. 大焕视界:乡愁是一道深不可测的陷阱

热门文章

  1. 【转】看到一些百度网盘上不错的资源
  2. 排序算法-选择排序(可视化动图)
  3. Cloud Foundry 快速入门 (cf工具)
  4. AcWing每日一题 3333.K-优字符串(水题)
  5. 快播:那些年经历过的野蛮生长
  6. 死亡细胞(c++,生命游戏)
  7. Python解析库的使用
  8. Ralph Kimball
  9. 动手撸一个SQL规范检查工具
  10. java泛型方法作用_java泛型的作用与使用方法是什么?