📧 朴素贝叶斯分类

垃圾邮件检测:从贝叶斯定理到词频分类

📚 核心公式

贝叶斯定理把「看到证据后,类别有多可能」写成:

$$P(C \mid \mathbf{w}) = \frac{P(\mathbf{w} \mid C)\, P(C)}{P(\mathbf{w})}$$

分母 $P(\mathbf{w})$ 对各类别相同,比较时只需看分子。若假设各词在给定类别下相互独立,则:

$$P(C \mid \mathbf{w}) \propto P(C) \prod_i P(w_i \mid C)$$

以 $C=\text{垃圾}$、$\mathbf{w}=(w_1,\ldots,w_n)$ 为例,预测时选使上式最大的类别。

🔤 公式符号说明

符号读法 / 含义在本演示中
$C$类别(Class),如「垃圾邮件」或「正常邮件」二分类:垃圾 / 正常
$w_i$邮件中第 $i$ 个词如「免费」「会议」
$\mathbf{w}$整封邮件的词序列你点击选中的词组合
$P(C)$先验概率:未看内容前,该类别的比例$P(\text{垃圾})=0.4$,$P(\text{正常})=0.6$
$P(w_i \mid C)$似然:在类别 $C$ 下,出现词 $w_i$ 的概率词卡上「垃圾:35%」即 $P(w_i\mid\text{垃圾})$
$P(C \mid \mathbf{w})$后验:看到邮件内容后,属于 $C$ 的概率我们要算并比较的目标
$\propto$正比于(差一个公共常数因子)只比大小、不必算 $P(\mathbf{w})$
$\prod_i$连乘:把每个词的条件概率乘起来「朴素」独立假设的核心
$\log$对数(实际计算常用)连乘变连加,避免小数下溢

🤔 为什么叫「朴素」?

「朴素」(Naive)不是指算法简单,而是指一个简化假设:认为邮件里每个词的出现彼此独立,只取决于类别。

现实中这往往不成立——例如「免费」和「中奖」常一起出现。但在这个假设下,联合概率可以拆成连乘:

$P(w_1,w_2,\ldots \mid C) \approx P(w_1\mid C)\, P(w_2\mid C)\,\cdots$

假设很「天真」,却常能给出可用且高效的分类结果,尤其在文本、垃圾邮件过滤等场景;因此得名 Naive Bayes,中文译作「朴素贝叶斯」。

📜 历史由来

  • 18 世纪 — 英国牧师托马斯·贝叶斯(Thomas Bayes)提出逆概率思想;去世后由友人整理发表,成为贝叶斯定理的基础。
  • 20 世纪 — 统计学家将贝叶斯推断系统化;朴素独立假设使高维文本分类在计算上可行。
  • 1990 年代Paul Graham 等用贝叶斯方法做垃圾邮件过滤,词频统计 + 简单概率模型即可达到实用效果,朴素贝叶斯在工程界广泛流行。
  • 今天 — 仍是文本分类、情感分析、垃圾短信识别等的基线模型,也常被用作教学入门算法。

🧮 计算说明(手算例题)

例题:邮件包含「免费」「中奖」,判断垃圾还是正常?(数据与本页词表一致)

  1. 写出先验:$P(\text{垃圾})=0.4$,$P(\text{正常})=0.6$。
  2. 查似然:$P(\text{免费}\mid\text{垃圾})=0.35$,$P(\text{中奖}\mid\text{垃圾})=0.28$;正常类分别为 $0.02$、$0.01$。
  3. 垃圾类得分(对数形式,连乘变连加):
    $\log P(\text{垃圾}\mid\mathbf{w}) \propto \log 0.4 + \log 0.35 + \log 0.28 \approx -0.916 - 1.049 - 1.273 = \mathbf{-3.24}$
  4. 正常类得分:
    $\log P(\text{正常}\mid\mathbf{w}) \propto \log 0.6 + \log 0.02 + \log 0.01 \approx -0.511 - 3.912 - 4.605 = \mathbf{-9.03}$
  5. 比较:$-3.24 > -9.03$,故预测为垃圾邮件。(对数越大,原概率越大。)
💡 技巧:不必算出 $P(\mathbf{w})$;两类用同一套词,只比 $\log P(C)+\sum \log P(w_i\mid C)$ 即可。下方交互区会实时显示 log 计算过程。

🎮 交互:组装一封邮件

点击词语加入邮件,实时计算是「垃圾」还是「正常」。词卡下方数字即 $P(w_i \mid \text{类别})$ 的统计估计。

请选择词语…

✏️ 学习测验

共 5 题,选一项后显示解析。建议先完成上方手算例题与交互演示。

1. 「朴素」贝叶斯里的「朴素」主要指什么?
2. $P(w_i \mid \text{垃圾})$ 在本演示中表示?
3. 实际计算中常用对数 $\log P$ 的主要原因是?
4. 根据本页词表,「会议」更常出现在哪类邮件?
5. 比较 $P(\text{垃圾}\mid\mathbf{w})$ 与 $P(\text{正常}\mid\mathbf{w})$ 时,可以省略 $P(\mathbf{w})$ 是因为?