西瓜书学习—贝叶斯分类(下)

Posted 探索中的机械人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了西瓜书学习—贝叶斯分类(下)相关的知识,希望对你有一定的参考价值。

一、半朴素贝叶斯分类器

半朴素,顾名思义,就是只考虑一部分属性间相互依赖信息,从而既不需要计算完全联合概率密度,又不至于彻底忽略比较强的属性联系。独依赖是半朴素贝叶斯最常用的一种策略,顾名思义,就是每个属性在类别外最多仅仅依赖一个属性。如下:


这里的pai是属性xi所依赖的属性,称为xi的父属性。此时,对每个属性xi,若其父属性pai已知,则可采用类似7.20的方法估计概率值p(xi|c,pai).于是,问题的关键转化为如何确定每个属性的父属性,不同的做法产生不同的独依赖分类器。

1、超父属性(SPODE)

最直接的做法是假设所有的属性都依赖同一个属性,称为“超父”。然后通过交叉验证等模型选择方法确定超父属性,由此形成了SPODE方法。例如,在下图中,y是样本,xi是样本的各类属性。我们可以看到x2,x3,...,都是从属于x1的属性,那么x1是超父属性。

西瓜书学习(十一)—贝叶斯分类(下)

2、TAN

这种方法是最大带权生成树算法的基础上,通过以下步骤将属性间依赖关系约化为如下图的树形结构。最大带权生成树算法是来源于数据结构与算法的一个概念:生成树中权重和最大的树

西瓜书学习(十一)—贝叶斯分类(下)

具体步骤如下:

a.计算两个属性间的条件互信息

这里的条件互信息在我看来是一种表示属性间的依赖关系强弱的一个表述。换句话说,就是两种属性相关性越强。公式如下:

西瓜书学习(十一)—贝叶斯分类(下)

我们可以从公式中看出:当同时拥有两种属性的样本占只有一种属性的样本积比例越高时,这两种属性的条件互信息越高。这与我们的经验也是相符的,当这个东西的两种属性总是同时出现时,那么这两种属性的相关性肯定是比较强的。

b.以属性为结点构建完全图,任意两个结点边的权重置为两结点属性的条件互信息I(xi,xj|y)。

c.构建此完全图的最大带权生成树,挑选根变量,将边置为有向。

在此我们可以看出,为什么TAN是基于最大生成树算法的了。要知道完全图是无向的,我们根据最大生成树,挑出根变量后,将边置为有向。

d.加入类别结点y,增加从y到每个属性的有向边。

容易看出条件互信息刻画了属性xi和xj在已知类别情况下的相关性,因此通过最大生成树算法,TAN实际上仅保留了强相关属性之间的依赖性。

PS:

这里补充一个概念,完全图:是一种无向图,其中每对不同的顶点之间恰有一条边相连。

3、AODE

AODE是一种基于集成学习更为强大的独依赖分类器。我们再上面讲过SPODE是通过交叉验证等模型选择方法选择某个属性作为“超父”属性。这里的AODE是分别将每一个属性都作为一次超父属性,然后生成属性个数的分类器。再将这些分类器集成起来作为最终结果,即:

西瓜书学习(十一)—贝叶斯分类(下)

我们从上式看出,这里的Dxi是在第i个属性上取值为xi的样本的集合,m’是阈值常数。这就意味着,我们各种属性取值的样本要保证一定数量。否则,该方法将无法使用。我们有如下公式:

西瓜书学习(十一)—贝叶斯分类(下)

其中N是D中可能的类别数,比如西瓜集合有两类,好瓜和坏瓜;Ni是第i个属性可能的取值数,比如i为敲声,那么N敲声=3,又或者i=好瓜,N好瓜=2,;Dc,xi是类别为c且在第i个属性上取值为xi的样本集合,比如D好瓜,敲声=浊响=6;Dc,xi,xj是类别为c且在第i个和第j个属性上分别为xi和xj的样本集合,比如D脐部=凹陷|好瓜,敲声=浊响=3。于是有下面:

西瓜书学习(十一)—贝叶斯分类(下)

我们可以看出,AODE的训练过程也是“计数”,即在训练数据集上对符合条件的样本进行计数的过程。而且也无需模型选择,这是很方便的一种方法。

二、贝叶斯网

1、引言

贝叶斯网亦称之为“信念网”,它是借助有向无环图来刻画属性间的依赖关系,并使用条件概率表来描述属性间的联合概率分布。这里要强调一句,我们下面要学的贝叶斯网和没有学的隐马尔可夫,条件随机场都属于概率图模型。以上都是利用图论工具来进行统计学习模型的方法。

我们在《数据结构与算法》中都已经有了初步的概念了,上面我们也提了一下完全图的概念。这里的有向无环图是指:如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图),如下图a示。因为有向图中一个点经过两种路线到达另一个点未必形成环,因此有向无环图未必能转化成树,但任何有向树均为有向无环图。我们可以看到有向无环图中的任何一点都不可以回去。同理,有向图如图b,其中的点1可以回到原点。

西瓜书学习(十一)—贝叶斯分类(下)

具体来说,一个贝叶斯网B由两个参数决定,结构G和参数Θ。其中网络结构G是一个有向无环图,其每一个结点对应一个属性,这里有向无环则意味着属性之间都是独依赖的,且输出类别唯一。若两个属性间有依赖关系,则用一条边连接;参数Θ定量的描述结点(属性)之间的依赖关系。假设属性xi在G中的父结点集为πi,则Θ包含了 每个属性的条件概率表Θxi|πi=PB(xi|πi)

如下,我们先有结构:

西瓜书学习(十一)—贝叶斯分类(下)

然后有甜度和根蒂的条件概率表:

西瓜书学习(十一)—贝叶斯分类(下)

2、结构

(1)简介

贝叶斯网结构巧妙而有效的表达了属性间的条件独立性。给定父结点集,贝叶斯网假设每个属性与他的非后裔属性独立,即非指向路径的结点。于是有联合概率分布如下:

西瓜书学习(十一)—贝叶斯分类(下)

我们可以从中看到,每个概率依据其父属性而决定。根据上面所举图的例子,有联合概率分布:

西瓜书学习(十一)—贝叶斯分类(下)

根据图,我们知道x1和x2是独立的,x3是依赖于x1的,x4是依赖于x1和x2的,x5依赖于x2。根据式子,当x1给定时候,x3和x4是独立的;x2给定时,x4和x5是独立的。回顾结构图,我们验证了这一结论。有如下符号:x3⊥x4|x1和x4⊥x5|x2

(2)典型的依赖关系

贝叶斯网络中有三种典型的依赖关系分别是同父结构,V型结构和顺序结构。如下图:

西瓜书学习(十一)—贝叶斯分类(下)

同父结构中,给定x1的值,则x3和x4条件独立。

顺序结构中,给定x的值,则y与z条件独立。

V型结构中,给定x4的值,则x1和x2必不独立。而且,奇妙的是:若x4的取值完全未知,则V型结构下的x1与x2确实相互独立的。有如下证明:

西瓜书学习(十一)—贝叶斯分类(下)

这样的独立性,称之为”边际独立性“,记为x1⊥x2。

这种一个变量取值的确定与否,能对另外两个变量间的独立性发生影响的现象引发了我们的思考,其他结构有没有这种有趣的现象呢?

在父型结构中,条件独立性x3⊥x4|x1成立,但若x1的取值未知,则x3和x4就不独立,即x3x4不成立;

在顺序结构中,y⊥z|x,但yz不成立。

(3)条件独立性判定

要分析有向图中变量间的条件独立性,可使用“有向分离法”。首先将有向图变成一个无向图。主要有以下两步:

a、找出有向图中所有的V型结构,在V型结构的两个父结点之间加上一条无向边。

b、将所有有向边改为无向边。

这个将父结点相连的过程又叫做“道德化”,产生的无向图称之为“道德图”。

通过“道德图”,我们可以很容易找到条件独立关系。比如,下图:

西瓜书学习(十一)—贝叶斯分类(下)

首先,我们找出其中的V型结构,为x1,x2,x4。在两个父结点x1和x2之间连接无向边。然后将所有的有向边变为无向边,得到上图。接下来,我们分别将变量x1,x2在(x1,x3,x4),(x1,x3,x2),(x2,x3,x5),(x2,x4,x5),(x1,x3,x5)和(x1,x3,x4)中隔离出来。其子分支分属不同的连通分支,则有以下条件独立关系:x3⊥x4|x1,x4⊥x5|x2,x3⊥x2|x1,x3⊥x5|x1,x3⊥x5|x2,x1⊥x5|x2

3、学习

(1)主要思路

根据上面,我们知道了网络结构就知道了属性间的依赖关系。类似于朴素贝叶斯估计,我们通过对训练样本进行计数就可以估计出各个节点的条件概率表。但是在实际应用中我们往往不知道网络结构,于是,贝叶斯网学习的首要任务便是根据训练数据集来找出最“合适”的贝叶斯网。那么,我们是以什么标准来衡量或者评价这个贝叶斯网是“合适”的呢?于是,我们引入评价函数来衡量贝叶斯网络。很显然,评价函数的选择表明了我们对于所期望的贝叶斯网络的偏好。

常用的评价函数基于信息论准则中“最小描述长度准则”。我们将贝叶斯网络的学习问题看作是一个数据压缩任务,学习的目标是找到一个能以最短编码长度描述训练数据的模型。这里的编码长度不仅仅是描述该模型所需的字符,还包括该模型描述数据所需的编码长度。每个贝叶斯网描述了一个在训练数据上的概率分布图。我们要选择编码长度最小的贝叶斯网。

(2)具体方法

我们有训练数据集合D={x1,x2,x3,....,xm},贝叶斯网B=<G,Θ>在D上评分函数可以表示为如下:

西瓜书学习(十一)—贝叶斯分类(下)

其中,f(θ)是表示描述每个参数θ所需的字节数;|B|是贝叶斯网参数的个数;最后一项为:

西瓜书学习(十一)—贝叶斯分类(下)

是贝叶斯网B的对数似然。

显然,第一项是计算编码贝叶斯网B所需的字节数,第二项是计算B所对应的概率分布PB对D描述的多好。于是,该学习任务也同样变成了一个优化任务。根据我们之前所学,这个评分函数完全可以从统计学习角度理解,这两项分别为结构风险和经验风险,前一项表示对模型的修正防止过拟合,后一项表示对模型损失的期望

a、若f(θ)=1,即每个参数用一个字节描述,则为赤池信息准则(AIC),公式如下:

西瓜书学习(十一)—贝叶斯分类(下)

其中k是模型参数个数,L是对数似然函数。从一组可供选择的模型中选择最佳模型时,通常选择AIC最小的模型。在这里,我们改写为如下:

西瓜书学习(十一)—贝叶斯分类(下)

b、若f(θ)=1/2logm,即每个参数用f(θ)=1/2logm,即每个参数用1/2logm个字节描述,则为贝叶斯信息准则(BIC),公式如下:

西瓜书学习(十一)—贝叶斯分类(下)

其中,k为模型参数个数,n为样本数量,L为似然函数。kln(n)惩罚项在维数过大且训练样本数据相对较少的情况下,可以有效避免出现维度灾难现象。这里,我们改写为如下:

西瓜书学习(十一)—贝叶斯分类(下)

c、若f(θ)=0,即不计算对网络编码的长度,则评分函数退化为负对数似然,同时,学习任务退化为极大似然估计。

我们可以看出若网络结构G确定,那么结构风险则为常数,则此时学习任务变为了对参数Θ的估计。通过式7.29和7.26可知,参数θxi|πi根据大数定律能直接在训练数据D上通过经验估计获得,即:

西瓜书学习(十一)—贝叶斯分类(下)

其中,PD是D上的经验分布。因此,我们只需要对网络结构搜索则可最小化评分函数s(B|D)。可惜的是,这是一个NP难问题,难以快速求解。一般有两种方式在一定时间内求得近似解:

  • 贪心法。从某个网络结构出发,每次只调整一条边直到评分函数不在减小。

  • 通过对网络结构施加约束。比如将网络结构限定为树形结构。

但是,我们知道上面方法所求解,都为近似解而非原解。这也是为了解决问题的妥协,不能因为求不出来就不求解。

4、推断

(1)引言

我们通过以上步骤,终于建立了贝叶斯网络模型。下一步就要对模型进行验证,验证其模型是否正确。我们要通过若干个已知属性值,得到某一个未知属性值。比如,我们想要通过“色泽”,“敲声”,“根蒂”等属性想知道“成熟”和“甜度”属性。这样的过程,我们称之为推断(预测)。

要实现上述的过程,我们只需要知道联合概率分布就可以得到各种属性的后验概率。但是,遗憾的是与求解网络结构一样,这也是NP难问题。刚才,我们提出了贪心法和施加约束两种方法来求得近似解。这里我们采用吉布斯采样来求近似解。

(2)吉布斯采样法

这里令Q={Q1,Q2,....,Qn}表示待查询变量,E={E1,E2,E3,....,Ek}为证据变量(样本属性),已知其取值为e={e1,e2,....,ek}。目标是计算后验概率P(Q=q|E=e),其中q={q1,q2,....,qn}是待查询变量(样本标记)的取值。比如说,待查询变量为Q={好瓜,甜度},证据变量为E={色泽,敲声,根蒂},且已知取值e={青绿,浊响,蜷缩},查询目标是q={是,高}。

西瓜书学习(十一)—贝叶斯分类(下)

根据图7.5,具体算法如下:

我们输入是:已经训练好的贝叶斯网络B;采样轮数T;证据变量E及其取值e={青绿,浊响,蜷缩};待查询变量Q和取值q={是好瓜,甜度高}。

其算法过程为:

  • 首先,我们生成的每一个样本是符合马尔科夫链的,即当前样本是根据上一个样本产生的。这里,我们先生成第一个样本q0,该样本一般与证据变量e一致,则赋初始值为{青绿,浊响,蜷缩}。

  • 接下来,生成下面的样本{q1,q2,....,qt}。首先根据q0生成q1,我们先假设q1=q0,然后对非证据变量(这里是除了q1外,Q中所有的变量)进行逐个采样来改变q1的值。那么,问题来了。我们要采哪个样本?每个样本要采几次?我们使用采样概率来解决这个问题。采样概率根据贝叶斯网B和其他变量(非q1)的当前取值(Z=z)计算获得,即图7.5中的7.8行。这样,我们就生成了第二个样本q1。如果此时q1等于查询变量,即q1={是好瓜,甜度高}。那么,我们将计数器nq加一。

  • 然后,依照上述方法依次生成{q2,q3,..,qt}并判断这些样本中为{青绿,浊响,蜷缩}的个数。

  • 假定经过T轮(T*(i-1)次)采样,采样得到与q={是好瓜,甜度高}一致的样本有nq个,则可近似估算出后验概率:

(3)总结

实际上,吉布斯采样是在贝叶斯网所有变量的联合状态空间与证据变量E=e一致的子空间中,随机漫步。每一步仅依赖上一步的状态,这是马尔科夫链。马尔科夫链只要采样次数足够,必将趋于稳定。对于吉布斯采样来说,这个分布恰好是P(Q|E=e)。因此,在T足够大的时候,吉布斯采样相当于根据P(Q|E=e)采样,从而保证了式7.33收敛于P(Q=q|E=e)。换句话说,吉布斯采样因为遵循了马尔科夫链,因此其求出的后验概率必将稳定收敛于P(Q=q|E=e)


最后祝大家冬至快乐,记得吃饺子哦!

以上是关于西瓜书学习—贝叶斯分类(下)的主要内容,如果未能解决你的问题,请参考以下文章

西瓜书学习—贝叶斯分类器(上)

朴素贝叶斯模型——文本情感分类

机器学习算法--贝叶斯分类器

文本分类-贝叶斯分类器

西瓜笔记系列贝叶斯分类

机器学习——朴素贝叶斯分类器