1402 先验后验、词向量与贝叶斯模型

🎯 教学目标与重难点…

【三维目标】

  • 📚 知识目标:深刻理解先验概率与后验概率的本质区别;掌握词向量(One-Hot / TF-IDF)的表示方法;理解贝叶斯模型的完整数学形式及其分类决策规则。
  • ⚙️ 能力目标:能够将文本转换为词向量表示;能够使用贝叶斯公式计算多类别分类的后验概率;能够理解并解释朴素贝叶斯分类器的决策过程。
  • 💡 素养目标:建立“先验→证据→后验”的贝叶斯推理思维框架;理解“文本→向量”的转化过程是自然语言处理的核心步骤。

【重点与难点】

  • 🟢 教学重点:先验与后验的直观区别与计算;词向量的表示方法(词袋模型);朴素贝叶斯分类器的完整决策公式。
  • 🟡 教学难点:理解先验概率如何影响后验概率(敏感性分析);理解“朴素”假设如何将高维联合概率转化为一维条件概率的乘积。

📌 一、 课程导入(5 分钟)

回顾旧知:上节课学习了贝叶斯定理——由果推因的数学工具。

认知升级

  • 上节课的“工厂质检”案例中,先验概率 P(甲线)=0.6 是一个客观统计数据
  • 但在实际应用中(如垃圾邮件分类),先验概率常常是主观信念或经验估计
  • 不同的先验可能导致完全不同的分类结果。

引入新概念:先验概率的“主观性”是一把双刃剑——它允许我们融入领域知识,但也可能引入偏见。

本节课路线图

  1. 先验 vs 后验 —— 从“信念”到“更新后的信念”
  2. 词向量 —— 让计算机“读懂”文本
  3. 贝叶斯模型 —— 从数学公式到完整分类器
  • 👨‍🏫 教师活动:在屏幕上展示垃圾短信的分类流程示意图(文本→词向量→贝叶斯计算→分类结果);提问:“如果 spam 先验概率从 20% 调整到 80%,分类结果会如何变化?”
  • 🧑‍🎓 学生活动:讨论先验概率的取值来源(历史数据、专家经验、均匀假设);尝试列举一个“先验概率完全未知”的场景。

通过“先验概率的敏感性”问题,让学生意识到朴素贝叶斯不是一个纯粹的“客观”算法——先验的选择会影响结果。这为后续讲解“为什么文本分类中通常假设 P(类别)=类别占比”埋下伏笔。


📖 二、 解决问题过程(一):先验概率与后验概率

1. 先验概率(Prior Probability)—— 新证据到来之前的信念

$$P(\text{类别})$$

含义:在观察任何具体样本的特征之前,某个类别出现的概率。 来源

  • 历史数据统计(如垃圾邮件占总邮件的比例)
  • 领域专家经验
  • 无信息先验(如各类别等概率)

示例:某邮箱日均收到 100 封邮件,其中 20 封为垃圾邮件,则 P(垃圾) = 0.2。

2. 后验概率(Posterior Probability)—— 在看到证据之后更新的信念

$$P(\text{类别} | \text{特征})$$

含义:观察到具体样本的特征之后,该样本属于某个类别的概率。 核心:后验 = 先验 × 证据的调整。

3. 先验与后验的对比

| 维度 | 先验概率 P(C) | 后验概率 P(C|X) | | :— | :— | :— | | 时间顺序 | 观察特征之前 | 观察特征之后 | | 信息量 | 仅包含类别分布信息 | 融合了类别分布 + 特征信息 | | 决策用途 | 无特征时的最佳猜测 | 有特征时的最佳分类依据 | | 更新方向 | 固定(或不更新) | 随新样本动态更新 |

4. 直观比喻 —— 天气预报

  • 先验:根据历史统计,某城市 7 月下雨的概率是 30%。
  • 证据:早晨 6 点看到天空有乌云。
  • 后验:结合“乌云 → 下雨”的似然关系,更新下雨概率为 70%。

贝叶斯推理的实质就是用证据更新先验,得到后验

  • 👨‍🏫 教师活动:在黑板上画出“先验→证据→后验”的信息更新流程图;用天气预报的案例逐帧演示概率变化过程。
  • 🧑‍🎓 学生活动:在导学案中填写天气预报案例的贝叶斯计算过程;讨论“如果先验是 30%,似然是 80%,证据因子 P(乌云) 是多少时后验能达到 60%”。

通过“天气预报”这一生活化场景,将抽象的“先验→后验”转化为可感知的信息更新过程。强调贝叶斯推理是一种“动态”的思维框架,而非静态的计算公式。


📖 三、 解决问题过程(二):词向量——把文本变成数字

1. 为什么需要词向量?

  • 计算机只能处理数字,不能直接理解自然语言。
  • 核心任务:将一段文本(字符串)转化为一个数值向量(数组)。

2. 词袋模型(Bag-of-Words, BOW)—— 最简单的词向量表示法

步骤 1:构建词典(Vocabulary)

  • 收集所有训练文档中出现的不重复词语。
  • 示例:假设只有 3 条短信
    • 短信 1:“免费 领取 礼品”
    • 短信 2:“您好 有 兴趣 吗”
    • 短信 3:“免费 领取 优惠券”
  • 词典:{“免费”, “领取”, “礼品”, “您好”, “有”, “兴趣”, “吗”, “优惠券”} → 共 8 个词

步骤 2:One-Hot 编码(独热编码)——每个词对应一个位置

  • 向量长度 = 词典大小。
  • 每个位置用 0 或 1 表示该词是否出现。
  • 短信 1 的 One-Hot 向量:[1, 1, 1, 0, 0, 0, 0, 0]

步骤 3:词频向量(Bag-of-Words Count)——计数而非 0/1

  • 记录每个词在文档中出现的次数。
  • 短信 “免费 免费 领取” → [2, 1, 0, 0, 0, 0, 0, 0]

3. TF-IDF(Term Frequency – Inverse Document Frequency)—— 升级版词向量

  • 问题:在 BOW 中,像“的”、“是”、“了”等高频停用词会被赋予高权重,但实际意义不大。
  • 核心思想
    • TF(词频):某词在当前文档中出现的次数。
    • IDF(逆文档频率):某词在所有文档中出现的频率的倒数。出现越广泛(如“的”),IDF 越小。
    • TF-IDF = TF × IDF:既能反映词在当前文档中的重要性,又能过滤掉无意义的通用词。

4. 词向量在贝叶斯中的应用

  • 在朴素贝叶斯文本分类中,每个维度(词)对应一个条件概率 P(词_i | 类别)。
  • 训练阶段:统计每个类别中每个词的出现频率,计算条件概率。
  • 预测阶段:将新文本转为词向量,用贝叶斯定理计算每个类别的后验概率。
  • 👨‍🏫 教师活动:在黑板上手动演示“3 条短信 → 词典构建 → 词向量生成”的完整流程;对比 One-Hot、词频、TF-IDF 三种表示的差异。
  • 🧑‍🎓 学生活动:给定 3 条中文文本,手动构建词典并生成词频向量;讨论“为什么 One-Hot 向量中大多数位置都是 0?”(答案:稀疏性,因为每篇文档只包含词典中很小一部分词)

词向量是 NLP 的“数据预处理”核心环节。通过手动构建词典和向量的实践,让学生理解“文本→数字”的转换不是魔法,而是一套清晰可操作的标准流程。为第三次课的代码实战做铺垫。


✍️ 四、 解决问题过程(三):贝叶斯模型的完整分类决策

1. 多类别贝叶斯分类器的完整公式

假设有 K 个类别 C₁, C₂, …, C_K,每个样本有 n 个特征 x₁, x₂, …, xₙ。

朴素贝叶斯分类器的决策规则:

$$\hat{y} = \arg\max_{k} P(C_k) \cdot \prod_{i=1}^{n} P(x_i | C_k)$$

解读

  • 对每个类别 k,计算“先验 × 所有特征条件概率的乘积”。
  • 选择乘积最大的类别作为预测结果。

2. 为什么可以“省略”分母?

完整贝叶斯公式为:

$$P(C_k | X) = \frac{P(C_k) \cdot P(X | C_k)}{P(X)}$$

对于所有类别,P(X)(证据因子)是相同的常数。在比较不同类别的大小时,可以省略分母,不影响 argmax 的决策结果。

3. 朴素贝叶斯的完整工作流程

flowchart LR
    A["📄 训练文本"] --> B["🔧 文本预处理(分词、去停用词)"]
    B --> C["📊 构建词典"]
    C --> D["📈 统计每个类别的先验 P(C)"]
    C --> E["📈 统计每个词的条件概率 P(词|C)"]
    D --> F["🧮 贝叶斯模型"]
    E --> F
    G["🆕 新文本"] --> H["🔧 文本预处理"]
    H --> I["📊 转换为词向量"]
    I --> F
    F --> J["🏆 输出后验概率最大的类别"]

4. 示例:完整的垃圾短信分类

假设已经训练好一个朴素贝叶斯模型,现收到一条新短信:“免费领取优惠券”。

步骤 1:预处理 → [“免费”, “领取”, “优惠券”]

步骤 2:从训练好的模型中查找条件概率:

  • P(免费 | 垃圾) = 0.85, P(免费 | 正常) = 0.05
  • P(领取 | 垃圾) = 0.70, P(领取 | 正常) = 0.08
  • P(优惠券 | 垃圾) = 0.60, P(优惠券 | 正常) = 0.03
  • P(垃圾) = 0.20, P(正常) = 0.80

步骤 3:计算两类后验(省略分母):

  • 垃圾评分 = 0.20 × 0.85 × 0.70 × 0.60 = 0.0714
  • 正常评分 = 0.80 × 0.05 × 0.08 × 0.03 = 0.000096

步骤 4:决策:0.0714 > 0.000096 → 预测为垃圾短信

  • 👨‍🏫 教师活动:用“免费领取优惠券”的实例,完整演示从文本到最终分类决策的全链条;强调“朴素假设”如何将复杂的联合概率拆解为简单的乘积。
  • 🧑‍🎓 学生活动:使用上面示例中的条件概率数据,计算新短信“您好有兴趣吗”属于哪一类(假设这些词在垃圾/正常中的条件概率分别为 0.01/0.30、0.02/0.25、0.01/0.20)。

将前两次课的所有知识点(先验、条件概率、词向量、贝叶斯定理)串联成一个完整的分类流程。学生通过完整的计算示例,看到“数学公式”如何变成“可以工作的分类器”。


📝 五、 课堂小结(5 分钟)

flowchart LR
    root["🧠 贝叶斯模型(第二次课)"]

    subgraph C1["📖 先验 vs 后验"]
        direction TB
        A1["先验:观察特征前的信念"]
        A2["后验:更新后的信念"]
    end

    subgraph C2["🔢 词向量"]
        direction TB
        B1["词袋模型:One-Hot / 词频"]
        B2["TF-IDF:加权词向量"]
        B3["文本→数字的桥梁"]
    end

    subgraph C3["🧮 贝叶斯分类器"]
        direction TB
        C1_node["ŷ = argmax P(C) · Π P(xᵢ|C)"]
        C2_node["朴素假设:特征独立"]
    end

    root --> C1
    root --> C2
    root --> C3

    style root fill:#e65100,stroke:#bf360c,color:#fff,stroke-width:2px,rx:8px,ry:8px
    style C1 fill:#fff3e0,stroke:#ff9800,stroke-width:1px
    style C2 fill:#e3f2fd,stroke:#1e88e5,stroke-width:1px
    style C3 fill:#e8f5e9,stroke:#43a047,stroke-width:1px

✏️ 随堂检测与互动练习

点击展开:随堂测试题(带解析)

一、 单选题

  1. 以下关于先验概率的说法,正确的是?
  • A. 先验概率必须在观察数据后才能计算
  • B. 先验概率在所有场景中都必须相等(0.5)
  • C. 先验概率可以来自历史统计数据或专家经验
  • D. 先验概率不会影响最终的后验概率
【答案】

【解析】C。先验概率的取值具有灵活性,可以来自数据统计也可以来自主观判断。D 错误——先验概率显著影响后验概率(如前所述,稀有疾病的检测问题)。

  1. 在词袋模型中,以下哪种表示能够反映出“某个词在文档中出现多次”的信息?
  • A. One-Hot 编码
  • B. 词频向量(Count Vector)
  • C. 二值向量
  • D. 以上都不能
【答案】

【解析】B。One-Hot 和二值向量只记录词是否出现(0/1),而词频向量(Count Vector)记录词出现的具体次数。

二、 计算题

题目:已知以下训练数据:

文档 内容 类别
D1 免费 领取 优惠券 垃圾
D2 您好 有 兴趣 吗 正常
D3 免费 领取 礼品 垃圾
D4 您好 请问 有 时间 吗 正常

请回答以下问题:

  1. 构建词典(列出所有不重复的词)。
  2. D1 和 D4 的 One-Hot 向量分别是什么?
  3. D1 的词频向量是什么?
  4. 计算 P(垃圾) 和 P(正常) 的先验概率。
【答案】
  1. 词典:{“免费”, “领取”, “优惠券”, “您好”, “有”, “兴趣”, “吗”, “礼品”, “请问”, “时间”},共 10 个词。
  2. D1 One-Hot:[1, 1, 1, 0, 0, 0, 0, 0, 0, 0] D4 One-Hot:[0, 0, 0, 1, 1, 0, 1, 0, 1, 1]
  3. D1 词频向量:[1, 1, 1, 0, 0, 0, 0, 0, 0, 0](与 One-Hot 相同,因每个词只出现一次)
  4. P(垃圾) = 2/4 = 0.5,P(正常) = 2/4 = 0.5

📮 六、 课后作业与拓展

📮 课后作业…
  1. 基础作业:课本 14.2 节后的“思考与练习”第 1、2 题,完成书面提交。
  2. 词向量实践作业:从网上找 5 条中文新闻标题(或自行编写),手动构建词典并计算每条标题的词频向量(向量长度=词典大小)。
  3. 概率计算作业:沿用上题中的词典与词频数据,假设 P(体育类)=0.3,P(财经类)=0.7,以及各词在两个类别中的条件概率(自行合理假设),使用朴素贝叶斯公式对一条新标题进行分类。
  4. 调研作业:查阅 TF-IDF 的计算公式,对比它与词频向量的区别,撰写 100 字以内的总结。
  5. 预习作业:预习 14.3 节“贝叶斯算法应用——文本分类”,了解 sklearn.feature_extraction.text.CountVectorizer 的基本用法。

📋 七、 板书设计

🛠️ 板书设计…
 1🧠 朴素贝叶斯 – 第二次课:深入理解
 2
 3一、 先验 vs 后验
 4    先验 P(C):看特征之前的信念
 5    后验 P(C|X):看特征之后的更新
 6
 7    更新公式:后验 ∝ 先验 × 似然
 8
 9二、 词向量(文本→数字)
10    1. 构建词典(所有不重复词)
11    2. One-Hot:有/无(0/1)
12    3. 词频:出现次数
13    4. TF-IDF:出现次数 × 逆文档频率(过滤停用词)
14
15三、 贝叶斯分类器公式(核心!)
16              K
17    ŷ = argmax P(C_k) · Π P(x_i | C_k)
18        k       i=1
19
20    朴素假设:P(x₁, x₂, ..., xₙ|C) = Π P(xᵢ|C)

本课用到的单词

英文术语 发音(美式) 中文释义 专业语境解释
Prior Probability /ˈpraɪ.ər ˌprɑː.bəˈbɪl.ə.ti/ 先验概率 在观察特征之前,类别本身的初始概率。
Posterior Probability /pɑːˈstɪr.i.ər ˌprɑː.bəˈbɪl.ə.ti/ 后验概率 在观察特征之后,更新得到的类别概率。
Word Vector /wɜːrd ˈvek.tər/ 词向量 将文本词语转化为数值形式的向量表示。
Bag of Words /bæɡ əv wɜːrdz/ 词袋模型 忽略词序、仅统计词频的文本表示方法。
One-Hot Encoding /wʌn hɑːt ɪnˈkoʊd.ɪŋ/ 独热编码 用一个长度为词典大小的 0/1 向量表示文本。
TF-IDF /ˌtiːˌefˌaɪˈdiːˈef/ 词频-逆文档频率 一种加权词向量表示,降低通用词的重要性。
Naive Assumption /naɪˈiːv əˈsʌmp.ʃən/ 朴素假设 特征在给定类别条件下相互独立的简化假设。