1402 先验后验、词向量与贝叶斯模型
📌 一、 课程导入(5 分钟)
回顾旧知:上节课学习了贝叶斯定理——由果推因的数学工具。
认知升级:
- 上节课的“工厂质检”案例中,先验概率 P(甲线)=0.6 是一个客观统计数据。
- 但在实际应用中(如垃圾邮件分类),先验概率常常是主观信念或经验估计。
- 不同的先验可能导致完全不同的分类结果。
引入新概念:先验概率的“主观性”是一把双刃剑——它允许我们融入领域知识,但也可能引入偏见。
本节课路线图:
- 先验 vs 后验 —— 从“信念”到“更新后的信念”
- 词向量 —— 让计算机“读懂”文本
- 贝叶斯模型 —— 从数学公式到完整分类器
- 👨🏫 教师活动:在屏幕上展示垃圾短信的分类流程示意图(文本→词向量→贝叶斯计算→分类结果);提问:“如果 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
✏️ 随堂检测与互动练习
📮 六、 课后作业与拓展
📋 七、 板书设计
本课用到的单词
| 英文术语 | 发音(美式) | 中文释义 | 专业语境解释 |
|---|---|---|---|
| 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/ | 朴素假设 | 特征在给定类别条件下相互独立的简化假设。 |