朴素贝叶斯

149 阅读5分钟

朴素贝叶斯导论

本节介绍朴素贝叶斯算法——一种广泛应用于分类任务的算法,其中垃圾邮件过滤是典型应用场景。其核心思想是通过构建概率模型,根据邮件包含的词汇将其分类为"垃圾邮件"或"非垃圾邮件"。

朴素贝叶斯算法回顾与特征表示

朴素贝叶斯是一种生成模型,通过贝叶斯定理计算给定特征(邮件中的词汇)时类别(如垃圾邮件)的概率:

P(yx)=P(xy)P(y)P(x)P(y|x) = \frac{P(x|y)P(y)}{P(x)}

  • P(yx)P(y|x) 为后验概率:在已知邮件词汇条件下属于垃圾邮件的概率
  • P(xy)P(x|y) 为似然:当邮件为垃圾邮件时出现这些词汇的概率
  • P(y)P(y) 为先验概率:邮件属于垃圾邮件的总体概率
  • P(x)P(x) 为边际概率:观察到这些词汇的概率

算法的"朴素"性体现在条件独立性假设:在已知邮件类别时,每个词汇出现的概率独立于其他词汇。这使似然计算简化为:
P(xy)=i=1dP(xiy)P(x|y) = \prod_{i=1}^{d} P(x_i|y)
其中 xix_i 表示特征向量中的第 ii 个词汇。

模型参数通过最大似然估计(MLE)确定:

  • ϕjy=1=P(xj=1y=1)\phi_{j|y=1} = P(x_j=1|y=1):垃圾邮件中出现第 jj 个词汇的概率
  • ϕjy=0=P(xj=1y=0)\phi_{j|y=0} = P(x_j=1|y=0):非垃圾邮件中出现第 jj 个词汇的概率
  • ϕy=P(y=1)\phi_y = P(y=1):邮件属于垃圾邮件的总体概率

朴素贝叶斯的核心问题:零概率现象

当测试邮件中出现训练集某类别未出现的词汇时,MLE方法会产生严重问题。例如,若"machine"一词未在训练集的垃圾邮件中出现:
ϕmachiney=1=0\phi_{\text{machine}|y=1} = 0

计算后验概率时,该零值会使整个概率乘积归零:
P(y=1x)(i=1dP(xiy=1))P(y=1)=0P(y=1|x) \propto \left( \prod_{i=1}^{d} P(x_i|y=1) \right) P(y=1) = 0
这将错误判定邮件不可能是垃圾邮件。该问题需通过平滑技术解决。

拉普拉斯平滑法

拉普拉斯平滑通过为每个词汇计数添加微小正值,确保概率永不归零。

推导过程:
对于参数 ϕ=P(z=1)\phi = P(z=1) 的二值随机变量(如词汇是否出现),MLE估计为:
ϕ=出现 z=1 的次数总试验次数\phi = \frac{\text{出现 } z=1 \text{ 的次数}}{\text{总试验次数}}

采用拉普拉斯平滑时,为每种结果计数加1。对二值变量而言,相当于为"成功"(z=1z=1)和"失败"(z=0z=0)各加1,等同于总试验次数增加2。

词汇 jj 在垃圾邮件中的平滑概率估计为:
ϕjy=1=(含 j 的垃圾邮件数)+1(垃圾邮件总数)+2\phi_{j|y=1} = \frac{(\text{含 } j \text{ 的垃圾邮件数}) + 1}{(\text{垃圾邮件总数}) + 2}

示例演示:
假设训练集有10封垃圾邮件,其中"buy"出现3次:

  • MLEϕbuyy=1=3/10=0.3\phi_{\text{buy}|y=1} = 3/10 = 0.3
  • 平滑法ϕbuyy=1=(3+1)/(10+2)=4/120.33\phi_{\text{buy}|y=1} = (3+1)/(10+2) = 4/12 \approx 0.33

若"learning"未在垃圾邮件中出现:

  • MLEϕlearningy=1=0/10=0\phi_{\text{learning}|y=1} = 0/10 = 0
  • 平滑法ϕlearningy=1=(0+1)/(10+2)=1/120.083\phi_{\text{learning}|y=1} = (0+1)/(10+2) = 1/12 \approx 0.083
    此时微小非零概率可避免后验概率整体归零。

多项式随机变量的拉普拉斯平滑推广

当处理具有 kk 种可能结果的多项式随机变量时,拉普拉斯平滑推广为:为每个结果计数加1,即总试验次数增加 kk

zz 为具有 kk 种结果的随机变量,ϕj=P(z=j)\phi_j = P(z=j)。其MLE估计为:
ϕj=结果 j 出现次数总试验次数\phi_j = \frac{\text{结果 } j \text{ 出现次数}}{\text{总试验次数}}

推广的拉普拉斯平滑估计公式为:
ϕj=(结果 j 出现次数)+1(总试验次数)+k\phi_j = \frac{(\text{结果 } j \text{ 出现次数}) + 1}{(\text{总试验次数}) + k}

在文本分类的朴素贝叶斯应用中,若词汇表包含 dd 个词汇(即单词选择有 dd 种可能结果),则给定类别 yy 时词汇 jj 的概率公式为:
ϕjy=(类别 y 中词汇 j 出现次数)+1(类别 y 的总词汇量)+d\phi_{j|y} = \frac{(\text{类别 } y \text{ 中词汇 } j \text{ 出现次数}) + 1}{(\text{类别 } y \text{ 的总词汇量}) + d}

以下是您指定章节的详细课程笔记,包含完整的公式推导过程:

朴素贝叶斯变体:多项式事件模型

不同于仅考虑词汇是否出现的多元伯努利事件模型多项式事件模型将词汇频率纳入考量。该模型中,特征 xix_i 表示邮件中的第 ii 个词汇,其值为词汇表(大小为 dd)中的索引序号。

模型参数定义如下:

  • ϕky=1\phi_{k|y=1}:当邮件为垃圾邮件(y=1y=1)时,词汇表第 kk 个词汇出现的概率
  • ϕky=0\phi_{k|y=0}:当邮件为非垃圾邮件(y=0y=0)时,词汇表第 kk 个词汇出现的概率
  • ϕy\phi_y:邮件属于垃圾邮件的先验概率

参数的最大似然估计(MLE)推导如下:

ϕky=1=i=1mj=1ni1{xj(i)=ky(i)=1}i=1m1{y(i)=1}ni\phi_{k|y=1} = \frac{\sum_{i=1}^{m} \sum_{j=1}^{n_i} 1\{x_j^{(i)} = k \land y^{(i)} = 1\}}{\sum_{i=1}^{m} 1\{y^{(i)} = 1\}n_i}

此公式计算所有垃圾邮件中第 kk 个词汇的出现总次数,并除以所有垃圾邮件的词汇总量。非垃圾邮件的参数 ϕky=0\phi_{k|y=0} 计算原理相同。


模型对比:多元伯努利 vs 多项式事件模型

两种模型的本质差异在于文本表示方式与信息利用维度:

特征多元伯努利事件模型多项式事件模型
数据表示二元向量(标记词汇是否出现)词汇索引序列(保留词频信息)
信息利用仅考虑词汇是否在邮件中出现统计每个词汇的出现频次
性能表现总体表现良好,但对短文本效果较弱通常在文本分类任务中优于伯努利模型

值得注意的是,当不确定模型选择时,可通过交叉验证集用朴素贝叶斯同时测试两种模型性能——这是机器学习实践中的常用策略。


多项式事件模型的拉普拉斯平滑

与伯努利模型类似,多项式模型同样面临零概率问题。采用拉普拉斯平滑后的 ϕky=1\phi_{k|y=1} 计算公式为:

ϕky=1=(i=1mj=1ni1{xj(i)=ky(i)=1})+1(i=1m1{y(i)=1}ni)+d\phi_{k|y=1} = \frac{\left( \sum_{i=1}^{m} \sum_{j=1}^{n_i} 1\{x_j^{(i)} = k \land y^{(i)} = 1\} \right) + 1}{\left( \sum_{i=1}^{m} 1\{y^{(i)} = 1\}n_i \right) + d}

该方法为每个词汇的计数增加1(分子),同时将词汇表大小 dd 加入分母。即使某词汇在特定类别的训练集中从未出现,仍会获得微小非零概率。


机器学习算法实践建议

解决机器学习问题时,建议首先采用简单高效的算法建立基准结果。朴素贝叶斯因其实现简易、计算高效的特点成为理想选择。这种方法能以最小时间成本快速验证机器学习方案在特定问题上的可行性。


朴素贝叶斯与高斯判别分析(GDA)的优势

朴素贝叶斯与高斯判别分析具有两大核心优势:

  1. 计算成本低:算法时间复杂度低,适合海量数据场景
  2. 实现简易性:模型结构简单,易于快速部署

虽然逻辑回归等复杂算法可能在某些场景表现更优,但朴素贝叶斯与GDA凭借其速度优势与简洁性,始终是机器学习实践者的重要工具。