BN学习的目的就是要找到一个最能真实反映当前研究问题中现有的各研究对象之间相互依赖关系的BN模型,BN学习可以分为以下两个阶段:①结构学习(Structure Learn-ing),即网络拓扑结构的学习。②参数学习(Parameter Learning),即网络中每个节点变量的局部先验条件概率分布的学习。
比较简单的BN学习方法是先依据专家知识确定BN的拓扑结构,然后通过给定的样本数据学习BN的概率分布(参数)。比较复杂的BN学习方法是BN的拓扑结构和概率分布都是通过给定样本数据学习得出,这也是现在的研究热点。结构学习和参数学习是相互联系的,一方面BN的结构是由联合概率分布函数来直接决定另一方面,节点的条件概率依赖于BN的拓扑结构。
2.2.1 贝叶斯网络结构学习
BN结构学习就是利用训练样本数据,寻找对数据和先验知识拟合的最好的网络拓扑结构。学习分为完备数据结构学习和不完备数据结构学习两种情况。目前,具有完备数据的 BN 结构学习方法比较成熟,而从不完备数据中学习 BN 结构比较困难,现有算法仍存在缺陷。
2. 2. 1. 1 具有完备数据的贝叶斯网络结构学习
当训练样本完备时,常用的 BN 结构学习算法可以分为两种: 基于搜索记分的方法和基于统计测试的方法。
( 1) 基于搜索评分的结构学习算法。基于搜索评分的结构学习算法将结构学习视为搜索最佳网络问题。其核心思想是: 首先添加任一条边,然后使用搜索方法添加新的边,最后利用评分函数评分,测试新旧网络分值的大小。学习的目的就是找到评分最大的结构。这是个连续进行的过程,直到老模型的分数不再比新模型的分数低为止。评分方法有很多,如基于熵的评分、最小描述长度( LMS) 的评分以及贝叶斯评分。这类算法有一个共同点: 为每个候选的 BN 定义一种评价网络结构与样本集吻合程度的测度,然后,通过遗传和进化算法、模拟退火法或者爬山算法搜索具有最佳测度的拓扑网络结构。
( 2) 基于统计测试的结构学习算法。该学习算法的核心思想是: 首先进行训练样本统计测试,尤其是测试条件独立性然后,利用节点集间的条件独立性构造 DAG( 有向无环图) ,以尽可能地囊括这些条件独立性,它将独立的概念从构造结构中分离出来。
具有代表性的统计测试的结构学习算法有: ①Spirtes 等( 1993) 提出 SGS 算法,是一个典型的用条件独立性测试确定拓扑结构的算法,该算法从无向完全图出发,如果相邻结点间存在无向分隔割集,则删除它们的边,然后通过统计测试来确定剩余边的方向。②Acid 等( 1999) 提出了有向图构造算法 EP,证明有向图模型无论是否为单连接结构都对分类问题的影响效果不大。③Cheng Jie 等( 2002) 年将统计测试与信息论结合,通过相互信息量的计算来确定节点间的条件独立性,用相互信息量代替条件独立测试,从而构造多连接有向图模型。
2. 2. 1. 2 缺失数据情况下的贝叶斯网络结构学习
在数据不完整的情况下,BN 结构学习会比较困难,现有的研究算法主要是基于打分的结构学习。数据不完备会导致出现以下两方面问题: ①一些充分统计因子不存在,导致无法直接进行结构打分②打分函数不再具有可分解形式,因此不能进行局部搜索。围绕这两方面问题相继出现了一些解决的方法,如 Friedman( 1997) 借鉴参数学习的选择 - 期望最大算法,提出模型的 EM 结构学习方法Sebastian 等( 1997) 将 BC 算法应用于结构学习Fried-man( 1998) 引入一种使用贝叶斯打分方法学习概率模型的新方法,贝叶斯结构期望最大算法,简称为 Bayesian - SEM 算法。
2. 2. 2 贝叶斯网络参数学习
BN 参数学习的目标是: 给定训练样本和网络拓扑结构,利用先验知识,确定 BN 模型各个节点处的条件概率。参数学习同样可以分为完备数据和不完备数据两种情况。数据完备时的参数学习算法包括由 Fayyad( 1990) 提出的贝叶斯估计方法和 Spiegelhalter( 1996) 提出的最大似然估计 ( MLE) 方法从不完备的数据中学习概率参数的算法主要有 Gibbs 样本法( Heckerman,1995) 和期望-最大 ( EM) 算法( Spiegelhalter,1990Mallet,1991Lauritzen,1991等) 。
2. 2. 3 贝叶斯网络推理
概率推理是 BN 应用的主要目的之一。BN 推理是根据某些已知给定值的节点,估计未知节点的值。即在给定一个 BN 模型的情况下,依据已知条件,利用贝叶斯概率中条件概率的计算方法,计算出所感兴趣的目标节点发生的概率。在 BN 推理中主要包括以下 3 种推理方式:
( 1) 因果推理: 也称自上向下的推理,目的是由原因推出结论。已知证据 ( 原因) ,根据BN 的推理计算,求出在该证据 ( 原因) 发生的情况下结果发生的概率。
( 2) 诊断推理: 也称自下向上的推理,目的是由结论推出原因。是在已知结果情况下,根据 BN 推理计算,得到导致该结果发生的原因即其发生的概率。该推理常用在故障诊断、病理诊断中,目的是找到故障发生、疾病发生的原因。
( 3) 支持推理: 目的是对原因之间的相互影响进行分析,提供用以支持所发生现象的解释。
BN 推理算法大体可以分为精确推理算法和近似推理算法两大类。理论上,所有类型的 BN 都可以用精确推理算法进行概率推理,但实际上 BN 精确推理是一个 NP-hard 问题( Cooper,1990) ,尤其当模型结构较复杂、包含大量的变量时,精确推理就变得尤为困难。而近似推理相比精确推理来说,是解决复杂网络模型的一个较好办法,它可以大大简化计算和推理过程。因此,现阶段 BN 研究中许多情况下都采用近似算法。
01 贝叶斯算法 - 朴素贝叶斯
02 贝叶斯算法 - 案例一 - 鸢尾花数据分类
03 贝叶斯算法 - 案例二 - 新闻数据分类
之前聚类算法中讲了 无向图 的聚类算法 - 谱聚类 。
13 聚类算法 - 谱聚类
本章介绍的贝叶斯算法是 有向图 的聚类算法。
区别:
谱聚类 的无向图里的点里放的是 样本 。
贝叶斯网络 的有向图的点里放的是 样本的特征 。
把某个研究系统中涉及到的 随机变量 ,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。 贝叶斯网络(Bayesian Network) ,又称有向无 环图模型 (directed acyclic graphical model, DAG);
贝叶斯网络 是一种概率图模型,根据概率图的拓扑结构,考察一组随机变量:{X1,X2,...,Xn}及其N组条件概率分布(Conditional ProbabililtyDistributions, CPD)的性质。
当多个特征属性之间 存在着某种相关关系 的时候,使用朴素贝叶斯算法就没法解决这类问题,那么贝叶斯网络就是解决这类应用场景的一个非常好的算法。
分析: 很好理解上面的概念,先回顾下面的算法,朴素贝叶斯算法要求的是互相独立的事件形成出x1~xn,这些特征彼此概率互不影响,所以才能求出联合概率密度。贝叶斯网络算法就是来解决有关联的特征组成的样本分类的。
一般而言,贝叶斯网络的有向无环图中的节点表示随机变量,可以是可观察到的变量,或隐变量,未知参数等等。连接两个节点之间的箭头代表两个随机变量之间的因果关系(也就是这两个随机变量之间非条件独立);如果两个节点间以一个单箭头连接在一起,表示其中一个节点是“因”,另外一个节点是“果”,从而两节点之间就会产生一个条件概率值。
PS: 每个节点在给定其直接前驱的时候,条件独立于其非后继。
贝叶斯网络的关键方法是图模型,构建一个图模型我们需要把具有因果联系的各个变量用箭头连在一起。贝叶斯网络的有向无环图中的节点表示随机变量。连接两个节点的箭头代表此两个随机变量是具有因果关系的。
贝叶斯网络是模拟人的认知思维推理模式的,用一组条件概率以及有向无环图对不确定性因果推理关系建模。
目标,求P(a,b,c)
a的概率和任何别的特征都无关,所以先求a的概率:P(a)
b的生成和a有关。即a发生的情况下,b发生的概率:P(b|a)
c的生成和a、b有关。即a和b同事发生的情况下,c发生的概率。P(c|a,b)
有一天早晨,白尔摩斯离开他的房子的时候发现他家花园中的草地是湿的,有两种可能,第一:昨天晚上下雨了,第二:他昨天晚上忘记关掉花园中的喷水器,接下来,他观察他的邻居华生,发现他家花园中的草地也是湿的,因此,他推断,他家的草地湿了是因为昨天晚上下雨的缘故。
那么在贝叶斯网络中,哪些条件下我们可以认为是条件独立的?
条件一:
在C给定的条件下,a和b被阻断(blocked)是独立的。
即只要C给定了,a、b就独立。
条件独立:tail - to -tail
条件二:
在C给定的条件下,a和b被阻断(blocked)是独立的。
条件独立:head- to -tail
条件三:
在C未知的情况下,a和b被阻断(blocked),是独立的。
条件独立:head - to - head
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)