贝叶斯最优分类器
前面我们一直在讨论“给定训练数据,最可能的假设是什么?”,通过计算极大似然假设我们可以选择最大的一项假设;而实际上,该问题通常与另一更有意义的问题紧密相关:“给定训练数据,对新实例的最可能分类是什么?”接下来,我们来看如何解决这个问题。
为了更直观些,考虑一包含三个假设h1,h2,h3的假设空间。假定已知训练数据时三个假设的后验概率分别为 0.4, 0.3, 0.3。因此, h1为MAP假设。若一新实例x被h1分类为正,但被h2和h3分类为反。计算所有假设, x为正例的概率为 0.4(即与h 1相联系的概率),而为反例的概率是 0.6。这时最可能的分类(反例 )与MAP假设生成的分类不同。
一般的说,新实例的最可能分类可通过合并所有假设的预测得到,其权重为它们的后验概率。如果新的样例的可能的分类可取某集合V中的任一值vj, 那么概率P(vj|D)为新实例正确分类为vj的概率,其值为:
新实例的最优分类为P(vj|D)为最大时的vj 值。
贝叶斯最优分类器:
优点:使用相同的假设空间和相同的先验概率,没有其他方法能比其平均性能更 好。该方法在给定可用数据、假设空间及这些假设的先验概率下使新实例的正确分类的可能 性达到最大。
缺点:虽然贝叶斯最优分类器能从给定训练数据中获得最好的性能,应用此算法的开销可能很 大。原因在于它要计算 H 中每个假设的后验概率,然后合并每个假设的预测,以分类新实例。
根据这个缺点,MACHINE LEARNING 提到了GIBBS算法,这个算法定义如下:
1.按照 H上的后验概率分布,从 H中随机选择假设 h。
2.使用 h 来预言下一实例 x 的分类。
当有一待分类新实例时, Gibbs 算法简单地按照当前的后验概率分布,使用一随机抽取的假设。令人吃惊的是,可证明在一定条件下 Gibbs 算法的误分类率的期望值最多为贝叶斯最优分类器的两倍。更精确地讲,期望值是在随机抽取的目标概念上作出,抽取过程按照学习器假定的先验概率。在此条件下, Gibbs 算法的错误率期望值最差为贝叶斯分类器的两倍。(其实这一点我不能理解,感觉应该差很多,有时间得看看那篇paper的论点。不过显而易见的,这个算法的开销小了很多)。
朴素贝叶斯分类器:
这个是本篇的重点,朴素贝叶斯分类器的实用性很高,而且性能不算差。
应用任务:
每个实例x可由属性值的合取(例如,人由眼和鼻和手和脚组成,合取就是和)描述,而目标函数f(x)从某有限集合V中取值。学习器被提供一系列关于目标函数的训练样例,以及新实例(描 述为属性值的元组)<a1,a2…an>,然后要求预测新实例的目标值(或分类)。
目的:
贝叶斯方法的新实例分类目标是在给定描述实例的属性值<a1,a2…an>下,得到最可能的目标值VMAP。
可使用贝叶斯公式将此表达式重写为:
现在要做的是基于训练数据估计式中两个数据项的值。估计每个P(vj)很容易,只 要计算每个目标值vj出现在训练数据中的频率就可以。而估计P(a1,a2...an|vj)P(vj)较为困难,因为要求这些项的数量会非常大。
朴素贝叶斯分类器基于一个简单的假定:在给定目标值时属性值之间相互条件独立。换言之,该假定说明给定实例的目标值情况下,观察到联合的a1,a2.....an 的概率正好是对每个单独属性的概率乘积(条件独立的基本定义):
代入到原式中:
其中vNB表示朴素贝叶斯分类器输出的目标值。注意在朴素贝叶斯分类器中,须从训练 数据中估计的不同P(ai|vj)项的数量只是不同的属性值数量乘以不同目标值数量——这比要 估计P(a1,a2…an|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-估计:
其实这个公式相当于将n个实际的观察扩大,加上m个按p分布的虚拟样本。这样的话,也就解决了上面的问题。
这里, nc和n如前面定义, p是将要确定的概率的先验估计,而m是一称为等效样本大小的常量,它确定了对于观察到的数据如何衡量p的作用。在缺少其他信息时选择p的一种典型的方法是假定均匀的先验概率,也就是,如果某属性有k个可能值,那么设置p=1/k。