机器学习笔记(七)贝叶斯分类器

来源:互联网 发布:java socket长连接原理 编辑:程序博客网 时间:2024/06/06 13:17

7.贝叶斯分类器

7.1贝叶斯决策论

贝叶斯决策论(Bayesiandecision theory)是概率框架下实施决策的基本方法。对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。这其实是关系到两个基本概念:多大可能是这个类别以及可能误判的损失?机器学习就是从中选择误判损失最小的最大概率类别作为其分类标识。



回顾下贝叶斯模型的数学推论过程,首先是要保证贝叶斯分类器产生的总体误判损失是最小的,而要得到最小,关键就是从中选择后验概率最大的类别标记。显然,基于贝叶斯准则来最小化鞠策风险,现在第一就是要获得后验概率P(c|x),故此机器学习的主要任务就是基于有限的训练样本集尽可能准确地估计出后验概率P(c|x)。

对于后验概率的估计,大体有两种策略:1)判别式模型(discriminative models):给定x,通过直接建模P(c|x)来预测c,决策树、BP神经网络、支持向量机等都显然属于该范畴,预设模型并通过样本集训练出参数进而再优化;2)生成式模型(generative models):先对联合概率分布P(x,c)建模,然后再由此获得P(c|x)。

贝叶斯分类器就是基于条件概率而开展:P(c|x)= P(x,c)/P(x),基于贝叶斯定理,P(c|x)=P(c)P(x|c)/P(x),其中P(c)是类先验(prior)概率;P(x|c)是样本x相对于类标记c的类条件概率(class-conditional probability),或称为似然(likelihood);P(x)是用于归一化的证据因子。对给定样本,证据因子P(x)与类标记无关,因此估计P(c|x)的问题就转化为如何基于训练集D来估计先验P(c)和似然(条件)P(x|c)。

P(c)的训练:类先验概率P(c)表达了样本空间中各类样本所占的比例,根据大数定律,当训练集包含充足的独立同分布样本时,P(c)可通过各类样本出现的频率来进行估计。

P(x|c)的训练:类条件概率P(x|c),涉及到关于x所有属性的联合概率,直接根据样本出现的频率来估计有困难。例如,假设样本的d个属性都是二值的,则样本空间将有2d中可能的取值,在现实应用中,这个值往往大于训练样本数m,也就是说,很多样本的取值在训练集中根本没有出现,直接使用频率来估计P(x|c)显然不可行,因为“未被观测到”和“出现概率为零”通常是不同的。那怎么求解呢?极大似然估计来也。

7.2极大似然估计

既然无法直接通过频率来估计,那么估计类条件概率的策略可以这样:先假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计。



这种参数化的方法虽然能使条件概率估计变得相对简单,但估计结果的准确性依赖于所假设的概率分布形式是否符合潜在的真实数据分布。在现实应用中,要做出能较好地接近潜在真实分布的假设,往往需要在一定程度上利用关于应用任务本身的经验知识,否则若仅凭猜测来假设概率分布形式,很可能产生误导性结果。既然是似然,经验自然是重要的。

7.3朴素贝叶斯分类器

上文可知,基于贝叶斯公式P(c|x)=P(c)P(x|c)/ P(x)来估计后验概率P(c|x)的困难是:类条件概率P(x|c)是所有属性的联合概率,难以从有限的训练样本直接估计而得。为解决该问题,朴素贝叶斯分类器(naïve bayes classifer)采用了属性条件独立性假设(attributeconditional independence assumption),对已知类别,假设所有属性相互独立。换言之,假设每个属性独立地对分类结果发生影响。


文中的西瓜集例子,可以很好地理解上面的求解,重点是计算样本集中不同属性的类别数。可参考CSDN博客http://blog.csdn.net/fjssharpsword/article/details/53021776来理解。


如此,通过拉普拉斯修正避免了因训练集样本不充分而导致概率估值为零的问题,并且在训练集变大时,修正过程所引入的先验(Prior)的影响也会逐渐变得可忽略,使得估值趋向于实际概率值。

在现实任务中朴素贝叶斯分类器有很多种使用方式。例如,若任务对预测速度要求较高,则对给定训练集,可将朴素贝叶斯分类器涉及的所有概率估值事先计算好存储起来,这样在进行预测时只需查表即可进行判别;若任务数据更替频繁,则可采用懒惰学习(lazy learning)方式,先不进行任何训练,待收到预测请求时再根据当前数据集进行概率估值;若数据不断增加,则可在现有估值基础上,仅对新增样本的属性值所涉及的概率估值进行计数修正即可实现增量学习。懒惰学习和增量学习的思维,其实也是贯穿一种分治策略。   

7.4半朴素贝叶斯分类器

为解决贝叶斯公式中估计后验概率P(c|x)中类条件概率P(x|c)估计的困难,朴素贝叶斯分类器假设属性条件独立性,但在现实任务中这个假设并不总能成立。为此,在属性条件独立假设基础上,进一步考虑属性间的关系,提出半朴素贝叶斯分类器(semi-naïve bayes classifier)的学习方法。

半朴素贝叶斯分类器的基本想法是适当考虑一部分属性间的相互依赖信息,从而既不需进行联合概率完全计算,又不至于彻底忽略了比较强的属性依赖关系。独依赖估计(one-dependent estimator,ode)是半朴素贝叶斯分类器最常用的一种策略。所谓独依赖,就是假设每个属性在类别之外最多仅依赖一个其他属性,即:



 

7.5贝叶斯网

属性之间的依赖关系,可通过贝叶斯网(bayesian network)也称信念(belief network)网来刻画,其借助有向无环图(Directed Acyclic Graph,DAG)并使用条件概率表(ConditionalProbability Table,CPT)来描述属性的联合概率分布。假定所有属性均为离散型,对于连续属性,条件概率表可推广为条件概率密度函数。

具体来说,一个贝叶斯网B由结构G和参数Θ两部分构成,即B=<G,Θ>。网络结构G是一个有向无环图,其每个结点对应一个属性,若两个属性有直接依赖关系,则它们由一条边连接起来;参数Θ定量描述了这种依赖关系。假设属性xi在G中的父结点集为πi,则Θ包含了每个属性的条件概率表:Θxi|πi=PB(xi|πi)。文中有图和表分别展示G和B。


2)学习

若贝叶斯网结构已知,即属性间的依赖关系已知,按照上文定义,只需通过对训练样本计数,估计出每个结点的条件概率表即可。但现实应用中并不知晓网络结构,因此,贝叶斯网学习的首要任务是根据训练数据集来找出结构最恰当的贝叶斯网。评分搜索是求解这一问题的常用办法,具体来说,先定义一个评分函数(score function),以此来评估贝叶斯网与训练数据的契合度,然后基于这个评分函数来寻找结构最优的贝叶斯网。评分函数定义了获得怎样贝叶斯网的归纳偏好。

要找结构,先定义评分函数,然后基于评分函数找最优结构。常用评分函数通常基于信息论准则,此类准则将学习问题看作一个数据压缩任务,学习的目标是找到一个能以最短编码长度描述训练数据的模型,此时编码的长度包括了描述自身需要的字节长度和使用该模型描述数据所需的字节长度。对贝叶斯网学习而言,模型就是一个贝叶斯网,同时,每个贝叶斯网描述了一个在训练数据上的概率分布,自由一套编码机制能使那些经常出现的样本有更短的编码。于是,应该选择那个综合编码长度(包括描述网络和编码数据)最短的贝叶斯网,这就是最小描述长度(minimal description length,MDL)准则。

给定训练集D={x1,x2,…,xn},贝叶斯网B=<G, Θ>在D上的评分函数为:


然而,从所有可能的网络结构空间搜索(属性数d的规模决定)最优贝叶斯网结构是一个NP问题,难以快速求解。有两种常用的策略能在有限时间内求得近似解:

第一种贪心法,从某个网络结构出发,每次调整一条边(增、删、改方向),直到评分函数不再降低为止;

第二种通过给网络结构施加约束来削减搜索空间,如将网路结构限定为树形结构等,模型要理想才能计算出,现实是复杂的。

3)推断

贝叶斯网络训练好之后就能用来回答查询(query),即通过一些属性变量的观测值来推测其他属性变量的取值。通过已知变量观测值来推测待查询变量的过程称为推断(inference),已知变量观测值称为证据(evidence)。输入证据,通过模型推断出结论。

最理想的是直接根据贝叶斯网定义的联合概率分布来精确计算后验概率;然而,这样的精确推断已被证明是NP难得。换言之,当网络结点较多,连接稠密时,难以精确推断,需借助近似推断,通过降低精度要求,在有限时间内求得近似解。在现实应用中,贝叶斯网的近似推断常采用吉布斯采样算法(Gibbs sampling)来完成,这是一种随机采用的方法,下面说明该算法。

问题:令Q={Q1,Q2,…,Qn}表示待查询变量,E={E1,E2,…,Ek}为证据变量,已知其取值为e={e1,e2,…,ek}。目标是计算后验概率P(Q=q|E=e),其中q={q1,q2,…,qn}是待查询变量的一组取值。

解答:

先随机产生一个和证据E=e一致的样本q0作为初始点,然后每步从当前样本出发产生下一个样本。具体来说,在第t次采样中,算法先假设qt= qt-1,然后对非证据变量逐个进行采样改变其取值,采样概率根据贝叶斯网B和其他变量的当前取值(即Z=z)计算获得。


吉布斯采样是在贝叶斯网所有变量的联合状态空间与证据E=e一致的子空间中进行随机漫步(random walk)。每一步仅依赖前一步的状态,这是一个马尔可夫链(Markov chain)。在一定条件下,无论从什么初始状态开始,马尔可夫链第t步的状态分布在t->∞时必收敛于一个平稳分布(stationary distribution);对于吉布斯采样来说,这个分布恰好就是P(Q|E=e)。因此,在T很大时,吉布斯采样相当于根据P(Q|E=e)采样,从而保证收敛于P(Q=q|E=e)。

值得注意的是,由于马尔可夫链通常需要很长时间才能趋于平稳分布,因此吉布斯采样算法的收敛速度较慢。此外,若贝叶斯网中存在极端概率0或1,则不能保证马尔可夫链存在平稳分布,此时吉布斯采样会给出错误的估计结果。

 

7.6EM算法

上文的假设是训练样本所有属性变量的值都已被观测到,即训练样本是完整的。但在现实应用中往往会遇到不完整的训练样本,即训练样本的属性变量值未知。问题是在这种存在未观测变量的情形下,是否仍能对模型参数进行估计呢?

未观测变量也称为隐变量(latent variable)。令X表示已观测变量集,Z表示隐变量集,Θ表示模型参数。若欲对Θ作极大似然估计,则应最大化对数似然:LL(Θ|X,Z)=ln P(X,Z|Θ)。不过Z是隐变量,无法直接求解,可通过对Z计算期望,来最大化已观测数据的对数边际似然(marginal likelihood):


简单来说,EM算法使用两个步骤交替计算:第一步是期望E步,利用当前估计的参数值来计算对数似然的期望值;第二步是最大化M步,寻找能使E步产生的似然期望最大化的参数值。然后新得到的参数值重新被用于E步,…,直至收敛到局部最优解。

EM算法可以看作用坐标下降法(coordinate descent)来最大化对数似然下界的过程。事实上,隐变量估计问题也可通过梯度下降等优化算法求解,但由于求和的项数将随着隐变量的数目以指数级上升,会给梯度计算带来麻烦。而EM算法则可看作一种非梯度优化方法。

坐标下降法是一种非梯度优化方法,在每步迭代中沿一个坐标方向进行搜索,通过循环使用不同的坐标方向来达到目标函数的局部极小值。


3 0
原创粉丝点击