前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习教程:朴素贝叶斯文本分类器

机器学习教程:朴素贝叶斯文本分类器

作者头像
花落花飞去
发布2018-02-01 17:01:44
1.5K0
发布2018-02-01 17:01:44
举报
文章被收录于专栏:人工智能人工智能

在本教程中,我们将讨论朴素贝叶斯文本分类器。朴素贝叶斯是最简单的分类器之一,只涉及简单的数学表达,并且可以使用PHP,C#,JAVA等语言进行编程。

更新:基于Java的开源机器学习框架Datumbox,可以免费下载。可通过com.datumbox.framework.machinelearning.classification包来查看朴素贝叶斯分类器的Java实现。

请注意,下面介绍的技术将通过Datumbox的文本分析服务启动我们的API

什么是朴素贝叶斯分类器?

朴素贝叶斯分类器是一个以贝叶斯定理为基础的较简单的概率分类器,其中naïve(朴素)指这种方法的思想很简单:假定条件特征之间具有强独立性。它是最基本的文本分类技术之一,应用于垃圾邮件识别、个人电子邮件分类、文档分类、色情内容检测、语言检测和情感检测等。尽管是带着朴素的思想和看上去过于简单的假设,但朴素贝叶斯分类器在许多复杂的实际情形中仍能取得相当好的效果。

尽管一些方法(如,增强树、随机森林、最大熵、支持向量机等)在性能上超过了朴素贝叶斯分类器,但由于朴素贝叶斯计算量较小(在CPU和内存中),且只需要少量的训练数据,因此朴素贝叶斯分类器非常高效。此外,与其他方法相比,朴素贝叶斯的训练时间明显缩短。

Huang, J. (2003)所说,朴素贝叶斯分类器在CPU和内存中占用资源低,在一些情况下,它的表现效果与那些更复杂且更慢的技术非常接近。

何时使用朴素贝叶斯文本分类器?

在CPU和内存资源有限的情况下,可以使用朴素贝叶斯分类器。而且,当训练时间是一个关键因素时,能进行快速训练的朴素贝叶斯分类器将派上大用场。实际上其他分类器常常比朴素贝叶斯表现得更好,但情况并不总是这样!在把朴素贝叶斯从你的研究中排除之前,确保已经对其进行测试。注意,朴素贝叶斯分类器是许多研究中的基线。

使用哪一种朴素贝叶斯变种模型?

朴素贝叶斯有许多变种算法,在这里,我们将讨论其中的三个:多项式朴素贝叶斯,二值化的多项式朴素贝叶斯和伯努利朴素贝叶斯。请注意,由于它们使用完全不同的模型,因此每个变种会呈现完全不同的结果。

多项式朴素贝叶斯常用于词频占主导地位的分类问题,举个例子,如主题分类。当词频在分类中没有起到关键作用时,我们采用二值化的多项式朴素贝叶斯。例如,在进行情感分析时,重要的是一个人对某事物的评价为“差”,而不是评论“差”这个词的次数。另外,伯努利朴素贝叶斯用于判断特定的词语是否出现的情况,在垃圾邮件和成人内容检测方面表现效果非常好。

朴素贝叶斯的理论背景

如前所述,朴素贝叶斯分类器假定分类中使用的特征是独立的。尽管这个假设通常是错误的,但贝叶斯分类问题的相关分析显示,如Zhang(2004)所述,朴素贝叶斯分类器不合理的显著高效性是存在理论因素的 。

Manning等人(2008)的研究可以证明,虽然朴素贝叶斯的概率估计效果较差,但它在决定分类时表现优异。因此,虽然朴素贝叶斯通常过高估计了所选类别的概率,但由于我们只用它做出决策,而不是准确地预测实际概率,正确的决策使得模型是准确的。

在文本分类问题中,我们使用文档的单词(或词语/词条)来进行准确分类。通过“最大后验概率估计(MAP)”参数估计方法,我们提出了下述分类器:

其中t_k表示文档的词条(词语/单词),C表示分类中使用的类的集合,P(c|d)表示文档d属于某类别c的条件概率,P(c)表示关于类别c的先验概率,P(t_k|c)表示已知文档属于类别c时,其包含词条t_k的概率。

为了确定文档属于哪一个类别,我们必须估计给定类别的文档中,每个单词出现的概率(似然)的乘积,再乘以给定类别的先验概率 。在对C的所有类别进行上述计算之后,选择概率最高的类别。

由于计算机只可以处理具有一定小数点精度的数字,计算上述概率的乘积会导致浮点数下溢。最终,我们会得到一个很小的数字,内存无法存储,因此它会被四舍五入到零,致使分析失效。为了避免这种情况,我们对其取对数,最大化对数的总和,而非最大化概率的乘积:

因此,我们选择的类别为对数和最大,而不是概率最高。由于对数函数是单调递增的,故我们根据MAP(最大后验概率估计)得出的决策保持不变。

待解决的最后一个问题是,如果一个特定的特征/单词没有出现在一个特定的类别中,那么它的条件概率等于0。如果我们使用第一个决策方法(概率的乘积),那么乘积变成0,而如果我们使用第二个方法(对数之和),那么log(0)是没有定义的。为了避免这种情况,我们将使用加一的方法,或用拉普拉斯平滑对每项计数加1:

其中B'等于词汇表V中包含的词数。

朴素贝叶斯变种

接下来,让我们来看看三种常见的朴素贝叶斯变种模型,它们在计算特征的条件概率和类别的得分标准时有所不同。

多项式朴素贝叶斯模型

Manning等人(2008)所述,这一模型将给定类别下的某单词/词语/词条的条件概率,表示为属于类别c的文档中词语t的相对频率:

因此,这种变化考虑了属于类别c的训练文档中,词语t的出现次数,包括多次出现的情况。

下面以伪代码的形式介绍算法的训练和测试过程:

二值化(布尔)多项式朴素贝叶斯模型

Dan Jurafsky所描述的这种模型与多项式朴素贝叶斯模型是一样的,但是只观测在文档中词语是否出现,不考虑词语的出现次数。因为在某些情况下,单词的出现比词频更重要,而对单词的出现进行加权,并不能提高模型的准确性。

算法的训练和测试过程都保持不变,唯一不同的是,将每个文档中的所有单词的计数修改为1。

伯努利朴素贝叶斯模型

Manning等人(2008)提到了伯努利模型,该模型为词汇表中的每个词语创建了一个布尔型的标志,值为1表示词语属于测试集文档,值为0则表示不属于。伯努利模型和多项式模型存在明显不同,伯努利模型不仅不考虑词频,而且将某个文档中没有出现的词语也包含进去。在多项式模型中,直接忽略某文档中没有出现的词语;而在伯努利模型中,计算条件概率时,把这些也作为因子。

算法的训练和测试过程如下:

在对长文档进行分类时,由于没有考虑到单词多次出现,伯努利模型存在许多错误。另外值得注意的是,该模型对噪声性的特征特别敏感。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是朴素贝叶斯分类器?
  • 何时使用朴素贝叶斯文本分类器?
  • 使用哪一种朴素贝叶斯变种模型?
  • 朴素贝叶斯的理论背景
  • 朴素贝叶斯变种
    • 多项式朴素贝叶斯模型
      • 二值化(布尔)多项式朴素贝叶斯模型
        • 伯努利朴素贝叶斯模型
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档