朴素贝叶斯和文本分类I(引言和理论)
Naive Bayes and Text Classification I
https://arxiv.org/pdf/1410.5329
![]()
1 引言
始于半个多世纪前,科学家们开始严肃探讨这样一个问题:“我们能否构建一种模型,使其能从现有数据中学习,并自动做出正确的决策与预测?” 回顾过往,这一问题如今看来近乎修辞性质——答案已体现在模式分类、机器学习与人工智能等领域层出不穷的实际应用之中。
各类传感设备采集的数据,结合强大的学习算法与领域知识,催生了诸多如今我们习以为常的伟大发明:例如通过谷歌等搜索引擎进行网络查询、邮局中的文字识别、超市中的条形码扫描仪、疾病诊断、以及手机上 Siri 或 Google Now 的语音识别等。
预测建模的一个子领域是有监督模式分类(supervised pattern classification),其任务是基于带标签的训练数据训练模型,继而用于为新样本分配预定义的类别标签。本文将贯穿探讨的一个例子是:利用朴素贝叶斯分类器进行垃圾邮件过滤,以预测一条新文本消息是否属于垃圾邮件(spam)或非垃圾邮件(not-spam)。朴素贝叶斯分类器是一类基于著名的贝叶斯概率定理的分类器,以其模型简洁且性能良好而著称,尤其在文档分类与疾病预测等领域表现突出。
![]()
2 朴素贝叶斯分类
2.1 概述
朴素贝叶斯分类器是一类线性分类器,以其简洁而高效著称。其概率模型基于贝叶斯定理,“朴素”(naive)一词源于其假设:数据集中的各特征彼此相互独立。实践中,这一独立性假设通常并不成立,但即便在此不切实际的假设下,朴素贝叶斯分类器往往仍能取得良好性能[1]。尤其在小样本情况下,其表现甚至可优于更复杂的强大模型[2]。
由于相对稳健、易于实现、速度快且准确率高,朴素贝叶斯分类器被广泛应用于诸多领域,例如:疾病诊断与治疗方案决策[3]、分类学研究中的RNA序列分类[4],以及电子邮件客户端中的垃圾邮件过滤[5]。然而,若独立性假设被严重违背,或面对非线性分类问题时,朴素贝叶斯分类器的性能可能显著下降。我们必须牢记:数据类型与待解问题的性质共同决定了应选用何种分类模型。实践中,强烈建议在特定数据集上对比多种分类模型,综合考量其预测性能与计算效率。
在后续章节中,我们将深入探讨朴素贝叶斯分类器的概率模型,并将其应用于一个简单的示例问题;随后,将利用一个公开的短信(SMS)数据集,在Python中训练一个朴素贝叶斯分类器,以实现对未见消息的“垃圾短信(spam)”或“正常短信(ham)”分类。
2.2 后验概率
为理解朴素贝叶斯分类器的工作原理,我们需简要回顾贝叶斯法则(Bayes’ rule)的概念。由托马斯·贝叶斯(Thomas Bayes, 1701–1761)提出的这一概率模型虽简洁却极为强大,其核心思想可用通俗语言表述如下:
![]()
贝叶斯定理构成了朴素贝叶斯分类整个概念的核心。在分类问题中,后验概率可被解释为:“在已观测到某对象特征值的前提下,该对象属于第 i i 类的概率是多少?”一个更具体的例子是:“在已知某人餐前与餐后血糖测量值的情况下,此人患有糖尿病的概率是多少?”
![]()
![]()
延续上述示例,我们可依据后验概率将决策规则表述如下:
![]()
2.3 类条件概率
贝叶斯分类器的一个假设是:样本服从独立同分布(i.i.d.)。其中,i.i.d. 是 “independent and identically distributed”(独立同分布)的缩写,用于描述彼此相互独立、且来自同一概率分布的随机变量。所谓独立性,指某一观测值的出现概率不影响另一观测值的概率(例如,时间序列与网络图数据并不满足独立性)。经典的独立同分布变量例子是抛硬币:第一次抛掷结果不影响第二次结果,依此类推;对于一枚公平硬币而言,无论抛掷多少次,其正面向上的概率始终为 0.5。
朴素贝叶斯分类器的另一关键假设是特征的条件独立性。在此“朴素”假设下,样本的类条件概率(即似然)可直接从训练数据中估计,而无需遍历所有可能的特征向量 x x 组合。因此,对于一个 d d 维特征向量 x x,其类条件概率可按如下方式计算:
![]()
![]()
![]()
为通过实例说明这一概念,假设我们拥有一个包含 500 份文档的集合,其中 100 份为垃圾邮件。现在,我们希望计算一条新消息 “Hello World” 在其为垃圾邮件条件下的类条件概率。此处,该模式由两个特征组成:“hello” 和 “world”,而类条件概率即为以下两项的乘积:“在消息为垃圾邮件的条件下出现 ‘hello’ 的概率” 与 “在消息为垃圾邮件的条件下出现 ‘world’ 的概率”。
![]()
然而,就条件独立性的朴素假设而言,我们在此注意到了一个问题:该朴素假设认为,某个特定词语的出现不会影响同一文档中其他词语出现的概率。例如,对于文本中同时出现的两个词 “peanut”(花生)和 “butter”(黄油),直觉告诉我们这一假设显然不成立:若某文档包含 “peanut”,则其同时包含 “butter”(或 “allergy”(过敏))的可能性将显著提高。实践中,条件独立性假设的确经常被违背;但众所周知,即便如此,朴素贝叶斯分类器仍往往表现良好[6]。
2.4 先验概率
与频率学派方法不同,此处引入了一个额外的先验概率(prior probability,或简称 prior),可被解释为先验信念或先验知识。
![]()
若先验服从均匀分布,则后验概率将完全由类条件概率与证据项(evidence term)决定;而由于证据项为常数,决策规则将完全取决于类条件概率(这与频率学派方法及最大似然估计类似)。
最终,先验知识可通过咨询领域专家获取,或通过对训练数据进行估计获得(前提是训练数据是独立同分布的,且为总体的代表性样本)。最大似然估计方法可表述如下:
![]()
图3展示了先验概率对决策规则的影响。给定一个一维模式 (连续属性,以“x”符号表示),其服从正态分布,并属于两个类别之一(蓝色和绿色)。第一类(₁ = 蓝色)的样本来自均值为 = 4、标准差为 = 1 的正态分布;第二类(₂ = 绿色)的概率分布则以 = 10 为中心,具有相同的标准差 = 1。钟形曲线表示从这两个不同正态分布中抽取的样本的概率密度。仅考虑类条件概率时,本例中的最大似然估计将是:
![]()
![]()
![]()
2.5 证据项
在定义了类条件概率与先验概率之后,为计算后验概率,仅剩一个项尚未明确,即证据项(evidence)。
证据项 P ( x )
可理解为:不考虑类别标签,观察到特定模式 x 的概率。结合后验概率更形式化的定义:
![]()
2.6 多项式朴素贝叶斯——一个玩具示例
在介绍完朴素贝叶斯分类器的基本概念、后验概率与决策规则后,让我们通过一个基于图4所示训练集的简单玩具示例进行演示。
![]()
![]()
2.6.1 最大似然估计
决策规则可定义为:
![]()
在样本独立同分布(i.i.d.)的假设下,先验概率可通过最大似然估计获得(即各类别标签在训练数据集中出现的频率):
![]()
在“颜色”(color)与“形状”(shape)两个特征相互独立的朴素假设下,类条件概率可简化为各单个条件概率的乘积。
通过最大似然估计,例如 P ( blue ∣ − ) 即为:在训练数据集中所有属于类别 “−” 的样本中,观察到“蓝色”样本的频率。
![]()
现在,后验概率可直接由类条件概率与先验概率的乘积计算得出:
![]()
2.6.2 分类
综上所述,只需将计算所得的后验概率代入决策规则,即可对新样本进行分类:
![]()
由于 0.18 > 0.15,该样本可被分类为 “+”。进一步审视后验概率的计算过程可见,这一简单示例揭示了先验概率对决策规则的影响:若两类的先验概率相等,则该新样本将被分类为 “−” 而非 “+”。这一观察也凸显了代表性训练数据集的重要性;实践中,通常建议进一步咨询领域专家,以合理设定先验概率。
2.6.3 加法平滑(Additive Smoothing)
对于图5所示样本,分类过程是直接明了的;但若遇到一个“新”样本,其颜色属性取值(如“yellow”(黄色))在训练数据集中未曾出现(见图5),则情况将更为棘手。
![]()
若“黄色”未出现在训练数据集中,则其类条件概率将为 0,进而导致后验概率也为 0——因为后验概率是先验概率与类条件概率的乘积。
![]()
为避免零概率问题,可在多项式贝叶斯模型中加入一个额外的平滑项。加法平滑最常见的两种形式是: Lidstone 平滑 (α < 1)与 拉普拉斯平滑 (α = 1)。
![]()
3 朴素贝叶斯与文本分类
本节将介绍将朴素贝叶斯模型应用于文本分类任务所需的一些核心概念和流程。尽管示例主要围绕二分类问题——如将文本消息分类为“垃圾邮件(spam)”或“正常邮件(ham)”——但相同的方法同样适用于多分类问题,例如将文档划分为不同主题领域(如“计算机科学”、“生物学”、“统计学”、“经济学”、“政治学”等)。
3.1 词袋模型(Bag of Words Model)
在模式分类中,最重要的子任务之一是特征提取与选择;良好特征的三个主要标准如下:
- 显著性(Salient)
:特征对于问题域而言应具有重要性和意义。
- 不变性(Invariant)
:该术语常用于图像分类语境中,指特征对形变、缩放、旋转等干扰因素不敏感。C. Yao 等人在《自然图像中多方向文本检测的旋转不变特征》[7]中提供了一个很好的例子。
- 判别性(Discriminatory)
:所选特征在训练分类器时,应包含足够信息以有效区分不同模式。
在拟合模型并使用机器学习算法进行训练之前,我们需要思考如何最佳地将文本文档表示为特征向量。自然语言处理中常用的一种模型是所谓的词袋模型(bag of words model)。该模型背后的思想正如其名般简单:首先构建词汇表——即训练集中所有不同单词的集合,每个单词关联一个出现频次计数。该词汇表可被理解为一组无冗余项的集合,其中单词顺序无关紧要。设为训练数据集中的两篇文档:
![]()
基于这两篇文档,词汇表可写为:
![]()
随后,可利用该词汇表为各文档构造 d d 维特征向量,其维度等于词汇表中不同单词的数量(即 d = ∣ V ∣
)。此过程称为 向量化 (vectorization)。
![]()
鉴于表1中的示例,一个问题是:特征向量中的1和0表示的是二值计数(若单词在特定文档中出现则为1,否则为0),还是绝对计数(单词在每篇文档中出现的次数)?答案取决于所采用的朴素贝叶斯分类器的概率模型:是多项式模型(Multinomial)还是伯努利模型(Bernoulli)——关于这两种概率模型的详细内容见第3.3节与第3.4节。
3.1.1 分词(Tokenization)
分词是指将文本语料库分解为若干独立单元(即“词元”,tokens)的一般性过程,这些单元可作为各类自然语言处理算法的输入。通常,分词还会伴随其他可选的预处理步骤,例如:停用词与标点符号的移除、词干提取(stemming)或词形还原(lemmatizing),以及n-gram的构建。以下是一个简单而典型的分词示例:将句子切分为单词、去除标点、并将所有字母转换为小写。
![]()
3.1.2 停用词
停用词是文本语料库中极为常见、因此被认为信息量较低的词语(例如:so, and, or, the 等)。一种去除停用词的方法是依据特定语言的停用词词典进行匹配过滤;另一种方法则是通过统计整个语料库中所有词的出现频率,并依频次排序来构建停用词列表——将该列表转化为无重复词的集合后,即可用其从输入文档中移除排名前 n n 位的高频词。
![]()
3.1.3 词干提取与词形还原
词干提取(Stemming)指将词语还原为其词根形式的过程。最早的词干提取算法由 Martin F. Porter 于 1979 年提出,因此被称为 Porter 词干提取器(Porter stemmer)[8]。
![]()
词干提取可能生成非真实存在的词,例如上例中的 “thu”。与之不同,词形还原(lemmatization)旨在获取词语的标准(语法正确)形式,即所谓的词元(lemmas)。相较于词干提取,词形还原计算上更为复杂且开销更大;实践中,两者对文本分类性能的影响均较为有限[9]。
![]()
上述词干提取与词形还原本例均借助 Python 的 NLTK 库(http://www.nltk.org )实现。
3.1.4 N-grams
在 n-gram 模型中,一个词元(token)可定义为长度为 n n 的连续单元序列。最简单的情形是一元语法(unigram,即 1-gram),其中每个词元恰好由一个单词、字母或符号构成——此前所有示例均为一元语法。最优的 n n 值选择取决于具体语言及应用场景。例如,Andelka Zecevic 在其研究中发现,对于判定塞尔维亚语文本的作者归属问题, 3 ≤ n ≤ 7
的 n-gram 效果最佳[10];而在另一项研究中,判定英文书籍作者时, 4 ≤ n ≤ 8
的 n-gram 准确率最高[11];Kanaris 等人则报告称,在电子邮件反垃圾过滤任务中,3-gram 与 4-gram 表现良好[12]。
![]()
3.2 垃圾邮件分类的决策规则
在垃圾邮件分类背景下,基于后验概率的朴素贝叶斯分类器决策规则可表示为:
![]()
如第 2.2 节所述,后验概率是类条件概率与先验概率的乘积;分母中的证据项(evidence term)可被省略,因其对两类而言均为常数。
![]()
先验概率可通过最大似然估计获得,即基于训练数据集中垃圾邮件(spam)与正常邮件(ham)的出现频率:
![]()
假设每篇文档中的词语彼此条件独立(依据朴素假设),则可采用两种不同模型计算类条件概率:多元伯努利模型(Multi-variate Bernoulli model,见第 3.3 节)与多项式模型(Multinomial model,见第 3.4 节)。
3.3 多元伯努利朴素贝叶斯
多元伯努利模型基于二值数据:文档特征向量中的每个词元(token)取值为 1 或 0。特征向量维度为 m ,其中 m 为整个词汇表中的单词总数(见第 3.1 节);取值 1 表示该词在当前文档中出现,0 表示未出现。伯努利试验可表示为:
![]()
3.4 多项式朴素贝叶斯
3.4.1 词频(Term Frequency)
除使用二值表示外,描述文本文档的另一种常用方法是词频(term frequency, tf(t, d))。词频通常定义为:特定词项 t t(即单词或词元)在文档 d d 中出现的次数(该方法有时也称为原始频次(raw frequency))。实践中,常将原始词频除以文档长度进行归一化处理。
![]()
3.4.2 词频–逆文档频率(Tf-idf)
词频–逆文档频率(Tf-idf)是描述文本文档的另一种方法。它可被理解为一种加权的词频,尤其适用于文本语料库中尚未移除停用词的情形。Tf-idf 方法的基本假设是:一个词的重要性与其在全部文档中出现的频率成反比。尽管 Tf-idf 最常用于文本挖掘任务中(如搜索引擎的网页排序)对文档按相关性进行排序,它亦可应用于朴素贝叶斯文本分类。
![]()
3.4.3 多元伯努利模型与多项式模型的性能比较
实证对比表明:当词汇表规模相对较大时,多项式模型往往优于多元伯努利模型[13]。然而,机器学习算法的性能高度依赖于特征选择的恰当性;就朴素贝叶斯分类器与文本分类而言,性能上的显著差异往往源于停用词移除、词干提取及词元长度等处理步骤的选择[14]。实践中,建议在比较研究中——涵盖不同特征提取与选择步骤的组合——先行评估多元伯努利模型与多项式模型的适用性,再据此作出选择。
4 朴素贝叶斯模型的变体
迄今为止,我们已介绍了两种适用于类别型数据的模型:多元伯努利模型(第 3.3 节)与多项式模型(第 3.4 节),以及两种不同的类条件概率估计方法。在第 4.1 节中,我们将简要介绍第三种模型:高斯朴素贝叶斯(Gaussian Naive Bayes)。
4.1 连续变量
文本分类是类别型数据的典型应用;但朴素贝叶斯亦可用于连续型数据。鸢尾花(Iris)数据集便是一个具有连续特征的有监督分类任务的简单示例:该数据集包含以厘米为单位测量的花瓣与萼片的长度和宽度。针对连续数据应用朴素贝叶斯分类的一种策略是:对特征进行离散化处理,划分为若干互斥类别;或采用高斯核来计算类条件概率。假设各特征的概率分布服从正态(高斯)分布,则高斯朴素贝叶斯模型可表述如下:
![]()
其中, μ μ(样本均值)与 σ σ(标准差)为需从训练数据中估计的参数。在朴素贝叶斯的条件独立性假设下,类条件概率即可表示为各特征对应概率的乘积:
![]()
4.2 急切学习与惰性学习算法
作为急切学习器(eager learner),朴素贝叶斯分类器在对新样本进行分类时通常速度较快。急切学习器指一类学习算法:一旦训练数据可用,即刻从中学习一个模型;模型学习完成后,无需再次遍历训练数据即可进行新样本预测。对急切学习器而言,计算开销最大的阶段是模型构建阶段,而新样本的分类则相对高效。
相比之下,惰性学习器(lazy learner)则会将训练数据记忆下来,并在预测新样本类别标签时重新评估整个训练集。惰性学习的优势在于模型构建(训练)阶段相对快速;但其实际预测过程通常较慢,原因在于每次预测都需重新计算与训练数据的关系。此外,惰性学习还需完整保存训练数据,可能带来较高的存储开销。k近邻算法(k-nearest neighbor algorithm)是惰性学习的典型代表:每当遇到新样本时,算法需重新查找其 k 个最近邻样本,并据此决定其类别标签——例如采用多数投票规则(即赋予新样本在 k 近邻中最频繁出现的类别标签)。
原文链接:https://arxiv.org/pdf/1410.5329
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.