机器学习笔记-贝叶斯学习(4)

来源:互联网 发布:诸葛亮北伐的战略 知乎 编辑:程序博客网 时间:2024/05/16 20:31

贝叶斯最优分类器

前面我们一直在讨论“给定训练数据,最可能的假设是什么?”,通过计算极大似然假设我们可以选择最大的一项假设;而实际上,该问题通常与另一更有意义的问题紧密相关:“给定训练数据,对新实例的最可能分类是什么?”接下来,我们来看如何解决这个问题。

为了更直观些,考虑一包含三个假设h1h2h3的假设空间。假定已知训练数据时三个假设的后验概率分别为 0.4, 0.3, 0.3。因此, h1为MAP假设。若一新实例x被h1分类为正,但被h2h3分类为反。计算所有假设, x为正例的概率为 0.4(即与h 1相联系的概率),而为反例的概率是 0.6。这时最可能的分类(反例 )与MAP假设生成的分类不同。

一般的说,新实例的最可能分类可通过合并所有假设的预测得到,其权重为它们的后验概率。如果新的样例的可能的分类可取某集合V中的任一值vj, 那么概率P(vj|D)为新实例正确分类为vj的概率,其值为:

P(vj|D)=hiHmP(vj|hi)P(hi|D)

新实例的最优分类为P(vj|D)为最大时的vj 值。

贝叶斯最优分类器:

maxvjVhiHmP(vj|hi)P(hi|D)

例子

优点:使用相同的假设空间和相同的先验概率,没有其他方法能比其平均性能更 好。该方法在给定可用数据、假设空间及这些假设的先验概率下使新实例的正确分类的可能 性达到最大。
缺点:虽然贝叶斯最优分类器能从给定训练数据中获得最好的性能,应用此算法的开销可能很 大。原因在于它要计算 H 中每个假设的后验概率,然后合并每个假设的预测,以分类新实例。

根据这个缺点,MACHINE LEARNING 提到了GIBBS算法,这个算法定义如下:
1.按照 H上的后验概率分布,从 H中随机选择假设 h。
2.使用 h 来预言下一实例 x 的分类。

当有一待分类新实例时, Gibbs 算法简单地按照当前的后验概率分布,使用一随机抽取的假设。令人吃惊的是,可证明在一定条件下 Gibbs 算法的误分类率的期望值最多为贝叶斯最优分类器的两倍。更精确地讲,期望值是在随机抽取的目标概念上作出,抽取过程按照学习器假定的先验概率。在此条件下, Gibbs 算法的错误率期望值最差为贝叶斯分类器的两倍。(其实这一点我不能理解,感觉应该差很多,有时间得看看那篇paper的论点。不过显而易见的,这个算法的开销小了很多)。

朴素贝叶斯分类器:

这个是本篇的重点,朴素贝叶斯分类器的实用性很高,而且性能不算差。

应用任务:
每个实例x可由属性值的合取(例如,人由眼和鼻和手和脚组成,合取就是和)描述,而目标函数f(x)从某有限集合V中取值。学习器被提供一系列关于目标函数的训练样例,以及新实例(描 述为属性值的元组)<a1,a2an>,然后要求预测新实例的目标值(或分类)。

目的:
贝叶斯方法的新实例分类目标是在给定描述实例的属性值<a1,a2an>下,得到最可能的目标值VMAP

VMAP=maxvjVP(vj|a1,a2...an)

可使用贝叶斯公式将此表达式重写为:
VMAP=maxvjVP(a1,a2...an|vj)P(vj)P(a1,a2...an)

VMAP=maxvjVP(a1,a2...an|vj)P(vj)

现在要做的是基于训练数据估计式中两个数据项的值。估计每个P(vj)很容易,只 要计算每个目标值vj出现在训练数据中的频率就可以。而估计P(a1,a2...an|vj)P(vj)较为困难,因为要求这些项的数量会非常大。

朴素贝叶斯分类器基于一个简单的假定:在给定目标值时属性值之间相互条件独立。换言之,该假定说明给定实例的目标值情况下,观察到联合的a1,a2.....an 的概率正好是对每个单独属性的概率乘积(条件独立的基本定义):

P(a1,a2...an|vj)=iP(ai|vj)

代入到原式中:

vNB=maxvjVP(vj)iP(ai|vj)

其中vNB表示朴素贝叶斯分类器输出的目标值。注意在朴素贝叶斯分类器中,须从训练 数据中估计的不同P(ai|vj)项的数量只是不同的属性值数量乘以不同目标值数量——这比要 估计P(a1,a2an|vj)项所需的量小得多。

朴素贝叶斯学习方法和其他已介绍的学习方法之间有一有趣的差别:没有明确的搜索假 设空间的过程(这里,可能假设的空间为可被赋予不同的P(vj)P(ai|vj)项的可能值。相反, 假设的形成不需要搜索,只是简单地计算训练样例中不同数据组合的出现频率)。例如决策树算法,形成假设必须要搜索整个决策树,而朴素贝叶斯不需要。

例子:
例子

上面提供了目标概念 PlayTennis 的 14 个训练样例,其中每一 天由属性 Outlook, Temprature, Humidity 和 Wind 来描述。这里我们使用此表中的数据结合 朴素贝叶斯分类器来分类下面的新实例:
<Outlook=sunny,Temperature=cool,Humidity=high,Wind=strong>
我们的任务是对此新实例预测目标概念PlayTennis 的目标值( yes 或no)。

这里写图片描述
接下来算各个部分的量pv:
这里写图片描述
相似地,可以估计出条件概率,例如对于 Wind=Strong 有:
这里写图片描述
最后计算总式如下:
这里写图片描述

这样,基于从训练数据中学习到的概率估计,朴素贝叶斯分类器将此实例赋以目标值 PlayTennis= no 。更进一步,通过将上述的量归一化,可计算给定观察值下目标值为 no 的 条件概率。对于此例,概率为 0.0206/(0.0206+0.0053)=0.795。

估计概率:
在上例中, 估计P(Wind=Strong|PlayTennis=no)使用的是比值nc/n,但是有时候nc很小时概率计算会很有误差,设想P(Wind=Strong|PlayTennis= no)的值为 0.08,而样本中只有 5 个样例的PlayTennis=no。那么对于nc最可能的值只有 0。
首先, nc/n产生了一个 有偏的过低估计( underestimate)概率。其次,当此概率估计为 0 时,如果将来的查询包含 Wind=Strong,此概率项会在贝叶斯分类器占有统治地位。原因在于,计算的量需要将所有其他的概率项乘以此 0 值。这样的话只要包含Wind=Strong,在使用朴素贝叶斯分类器的公式是就会为0。

我们这里采用一种估计概率的贝叶斯方法,使用如下定义的 m-估计:

nc+mpn+m

其实这个公式相当于将n个实际的观察扩大,加上m个按p分布的虚拟样本。这样的话,也就解决了上面的问题。
这里, ncn如前面定义, p是将要确定的概率的先验估计,而m是一称为等效样本大小的常量,它确定了对于观察到的数据如何衡量p的作用。在缺少其他信息时选择p的一种典型的方法是假定均匀的先验概率,也就是,如果某属性有k个可能值,那么设置p=1/k。

0 0