赫尔辛基大学AI基础教程合集:赫尔辛基大学AI基础教程
本章中,我们将学习朴素贝叶斯分类。
贝叶斯定理最有用的应用之一就是所谓的朴素贝叶斯分类。贝叶斯分类是一种可用于分类的机器学习技术,比如将文本文档等对象分为两类或更多类。通过分析一组训练数据来训练分类器,以此给出正确的类别。
朴素贝叶斯分类可用于确定给定大量不同观察值的类的概率。模型中假设,在给定类的情况下,特征变量是有条件独立的。(我们不会在这里讨论条件独立的含义,就我们的目的而言,在构建分类器时能够利用条件独立就足够了。)
我们以垃圾邮件过滤器作为演示朴素贝叶斯分类思想的运行示例。因此,类变量指示消息是垃圾邮件还是它是合法邮件。消息中的单词对应于特征变量,因此模型中的特征变量的数量由消息的长度决定。
注意
为什么要叫它“朴素”贝叶斯
以垃圾邮件过滤器为例,其想法是将语句视为通过选择一个接一个单词而产生,以便单词的选择仅取决于邮件是否是垃圾邮件。这是对过程的粗略简化,因为它意味着相邻单词之间不存在依赖关系,并且单词的顺序没有意义。所以这个方法被称为“朴素”。
尽管看起来简陋,朴素的贝叶斯方法在实践中往往工作得很好。这是证明统计学常用语,“所有模型都是错误的,但有些是有用的”的一个很好的例子。(这句格言通常被认为是统计学家George EP Box说的)
首先,我们需要指定垃圾邮件的先前赔率(相对于合法邮件)。为了简单起见,假设为1:1,这意味着平均一半的收入消息是垃圾邮件。(现实中,垃圾邮件比例可能更大)
为了得到我们的似然比,我们需要两种不同的概率来表示任何单词的发生:一个在垃圾邮件中,另一个在合法邮件中。
这两个类的单词发行版最好是根据包含一些垃圾邮件消息和合法邮件消息的实际训练数据进行估计。最简单的方法是计算每个单词,如abacus,acacia,...,zurg出现在数据中的次数,并将数字除以总词数。
为了说明这个想法,让我们假设我们有一些垃圾邮件和一些合法邮件。您可以通过将一批电子邮件保存在两个文件中来轻松获取这些数据。
假设我们计算了两类消息中下列单词(连同所有其他单词)的出现次数:
例如,我们现在可以估计,垃圾邮件中的单词为million的概率在95791中大约为156,大约等于614个单词中的1个。同样,我们可以估计在一条合法消息中单词million的概率,306438个单词中有98个单词,大约相当于3127个单词中的1个。这两种概率估计都很小,小于500分之一,但重要的是,前者高于后者:1 / 614高于1 / 3127。这意味着似然比,即第一个比例除以第二个比例大于1。更确切地说,该比率是(1/614)/(1/3127)= 3127/614 = 5.1(保留一位小数)。
注意
零意味着麻烦
直接从计数中估计概率的一个问题是零计数导致零估计。这对分类器的性能是非常有害的—它很容易导致后验概率为0/0的情况,这是无稽之谈。最简单的解决方案是对所有概率估计使用一个极小的下界。例如,值1:100000,这样就可以解决这个问题。
现在我们准备应用该方法对新消息进行分类。
一旦我们有了先验概率和估计的似然比,我们就可以应用贝叶斯规则了,这是我们在医学诊断案例中已经实践过的例子。推理过程与之前一样:我们通过将垃圾邮件的概率乘以似然比来更新垃圾邮件的赔率。为了深入记忆,我们先尝试一条单条消息的消息。对于先验赔率,如上所述,你应该使用赔率1:1。