贝叶斯网络一般是指带有概率信息的有向无环图。贝叶斯网络的信息有两部分组成。首先是表示独立信息的一个网络结构S,S中每个节点表示特定域中的一个概念或者变量,节点间的弧表示了可能的因果关系,体现了域知识的特征。其次每个节点都负有一个与该变量相联系的概率分布函数(CPD), 如果概率是离散的,那么在给定了父母节点的时候取不同值的条件概率表(CPT).CPT体现了域知识的定量方面的特征。可见,贝叶斯网络是一种表示数据变量之间潜在关系的定性定量的方法,它使用这种图形结构指定了一组条件独立的声明和用于刻画概率依赖强度的条件概率,如图1所示。
贝叶斯网络表达
下面就要形式化的表达一下贝叶斯网络。假如有一组有限集合(Y1,...,Yn(表示一组离散的随机变量,取值分别是(y1,...,yn)的联合概率为
P(y1,...,yn)=P(yn∣yn−1,..,y1)...P(y2∣y1)P(y1)=∏P(yi∣yi−1,...,y1)(1.1)
在贝叶斯网络中,使用条件独立构造知识以后,就能将公式1.1简写成如下的形式
P(y1,...,yn)=∏P(yi∣Pa(yi))
其中Pa(yi)是节点yi的父节点组。当它们的取值一定的时候,可见联合概率空间中每个状态都可以通过贝叶斯条件概率的乘积获得。
当贝叶斯作为分类器使用的时候,假设类别空间C=(c1,..,cn),特征空间为X=(X1,...,Xn)每个特征的值域为Val(Xi),对于某一个实例x=(x1,x2,..,xn)来说,分类器的目的是通过学习获得训练样本中D,来获取它的类别标签c,贝叶斯网络分类器采用的表达式为
p(ci∣x)=p(x)p(ci)×∏p(xj∣ci;π(xj))(1.1)
其中π(xj)为节点Xj除了类别节点C之外所有的父节点,xj为实例x第j个特征的取值,所以贝叶斯网络的分类任务是从训练样本D中学习概率分布p(ci),p(xj∣c;π(xj)),这个学习任务分为两个部分,一个是对于每个特征节点找到除类别节点以外的所有父节点,也就是网络的机构。二是在已知的结构上,获取这些参数的估计,也就是参数的学习。接下来介绍几种常见的贝叶斯分类器
朴素贝叶斯网络
朴素贝叶斯分类器是贝叶斯网络中最简单的分类器。它将类别节点作为根节点,其各属性节点相互独立,且都已根节点为父节点。
也就是说已知了X1,...,Xn求p(Xc∣X1,...,Xn)
根据贝叶斯公式
p(xcj∣X1,...,Xn)=p(X1,...,Xn)p(X1,...,Xn∣Xcj)=∑i=1kp(X1,...,Xn∣Xcj)p(Xcj)p(X1,...,Xn∣Xcj)p(xcj)(2.1)
其中p(xcj)为先验概率, X1,...,Xn相互独立,最终化简为如下的形式
p(p(X1,...,Xn∣Xcj)=∏p(Xi∣Xcj)
朴素贝叶斯分类器虽然简单,但是在实际的应用中表现出来的分类能力是不输给C4.5决策树分类器的。然而由于属性间的独立性比较难以获得,实际应用中比较难以满足。
通用贝叶斯网络
通用贝叶斯分类器是将类节点和属性节点作为同等的网络节点,根据数据集中的数据训练贝叶斯网络,直接作为分类器的。用通用贝叶斯分类器进行分类的过程中,实际上是将属性节点作为证据引入到贝叶斯网络中,求得类节点各个取值的后验概率的过程。后验概率最大的时候,类别节点相应的取值。进一步解释,在通用贝叶斯网络中,把某些节点的父节点、子节点以及子节点的父节点称为该节点的马尔可夫覆盖。根据有向马尔可夫覆盖。根据马尔可夫的性质,某个节点各取值的概率只受到有向马尔可夫覆盖节点的影响。
增强型朴素贝叶斯网络
增强型朴素贝叶斯网络(TAN)是朴素贝叶斯网络进行有效改进的分类器,既有朴素贝叶斯分类的简单,又可以有更好的分类性能。
其核心思路是将贝叶斯网络的某些依赖关系的能力和朴素贝叶斯简单性相结合。令U=(X1,...,Xn,C)。其中类别变量是C是根节点,而属性节点Xi除了父节点C以外还有一个父节点Xj. Pa(Xi)=2.
因此确定了TAN分类模型的结构关键是如何确定每个属性节点的非类父节点,确定属性节点的父节点需要学习算法获取。目前主流的方法有两种
- 基于分布的构造算法
- 基于分类的构造算法。
马尔可夫毯贝叶斯网络
马尔可夫毯贝叶斯网络(MBBN)能够表示通用贝叶斯网络分类器中相同的关于类节点的完整马尔可夫毯,尽管通用的贝叶斯网络可以被用来进行分类任务,但是由于根节点没有被特殊对待,有部分节点与类节点并不是直接相关,导致分类的准确准确率不高。另外对于其他朴素贝叶斯分类器中,都假设分类变量是根节点。但是MBBN却没有这种假设,结构表达更加丰富,更加准确的进行因果分析和分类预测。
MBBN学习步骤
- 在除了C的节点找到C的父节点集合zp,孩子节点集合zc和不相关集合zn。当父节点因子θp大于孩子节点因子θc的时候,加节点xi到zp,否则到zc,当max(θp,θc)<1则是加入到zn。其中
θp=g(xc,,πc)g(xc,πc∪{xi})θc=g(xi,πi)g(xi,,πi∪{xc})g(xi,πi)=j=1∏qi(Nij+ri−1)!(ri−1)!k=1∏riNijk!
其中πi和πc表示节点xi和xc的父节点集合;ri表示xi的取值数目;Nijk是第i个节点取值为第k个值的时候,在父节点取值组合取第j个值数据的数目
2. 使用K2算法,在除了xc、zc的节点中找到zc的父节点
3. 使用TAN算法,在zc中找到每个节点的另一个父节点。
总而言之
通过上面的介绍,我们知道集中贝叶斯网络的结构,实际应用中往往都是因材施教。此外还会有动态贝叶斯网络等结构,这里就不一一介绍啦,后面的章节中会一步一步的介绍学习结构的算法和学习参数的算法。