第11讲 · EECS 189:分类
UC Berkeley EECS 189/289A《机器学习导论》2026 春季 · 课堂实录重构
| 原始标题 | Classification |
| 视频 | https://www.youtube.com/watch?v=oid6SvXy8Kw |
| 课程主页 | https://eecs189.org/sp26/ |
| 官方讲义/笔记(Lecture 11) | Google Drive PDF |
| 图片来源 | 书中幻灯片插图为官方 PDF 高清渲染图 |
对应讲次:第11讲(UC Berkeley EECS 189 机器学习导论)
制作模型:deepseek-flash(coding-agent / pi;据 ~/.pi/agent/settings.json)
说明:课程材料版权归 UC Berkeley 及授课教师所有,本书仅供学习
编者说明:本讲 deck 共 92 页,课堂在「离散特征的朴素贝叶斯」处结束;分类评估(混淆矩阵、ROC/AUC、精确率/召回率、代价敏感)部分(第 55–92 页)收录于文末附录。
本讲路线图
(参考时间: 00:00)
- 复习 ImageNetV2 论文(测试集被反复使用会导致高估);
- 分类 vs 回归;构建分类器的三种方式;
- 生成式 vs 判别式分类器;高斯判别分析(GDA) = LDA / QDA;
- LDA 与逻辑回归的联系;离散特征的朴素贝叶斯。
📷 标题页
回到原视频 (00:00:37)
📷 上节课回顾
回到原视频 (00:00:45)
一、复习:测试集会「被用坏」
(参考时间: 00:01)
讲师复习第 3 讲提到的 ImageNetV2 论文:把各种模型在原始 ImageNet 测试集上的报告准确率,与在同分布新建的测试集上的准确率对比,发现:
- 所有报告的准确率系统性下降(说明大家过度接触测试集);
- 但模型排名基本不变(基准仍然有效)。
这正是「测试集被反复使用会造成有偏估计」的实证。
📷 关于训练/测试划分的论文
回到原视频 (00:01:37)
📷 分类:引言
回到原视频 (00:04:35)
📷 分类 vs 回归
回到原视频 (00:04:50)
📷 回顾:分类 vs 回归
回到原视频 (00:05:49)
二、分类的基本图景
2.1 分类 vs 回归
(参考时间: 00:05)
- 回归:$Y$ 是实数;可视化时把 $Y$ 放在纵轴,画一条回归曲线;
- 分类:$Y$ 是离散类别;可视化时把特征放在坐标轴、用颜色/标记表示类别,核心是决策边界(decision boundary)。
决策边界是特征空间中「两个类别概率相等」的集合;点落在边界哪一侧就归到哪一类。离边界越远,置信度越高。
📷 三类构建分类器的方法
回到原视频 (00:13:00)
📷 两类概率分类器
回到原视频 (00:13:48)
编者说明:讲师特别提醒术语坑:所谓 高斯判别分析(GDA)其实是生成式模型;而 逻辑回归名字里既有「回归」又容易误导,其实是判别式分类器。请关注概念本身,而非历史命名。
2.2 生成式 vs 判别式
(参考时间: 00:17)
用一个「两个孩子」的寓言:
- 孩子 A(生成式):把整头大象、整头狮子的整体样子都记下来(建模类条件密度 $p(x\mid y)$ 与先验 $p(y)$);
- 孩子 B(判别式):只记关键特征(大象有象牙和大耳朵、狮子有鬃毛),直接学决策规则 $p(y\mid x)$。
形式化区别:
- 生成式分类器:把 $X$ 与 $Y$ 都当作随机变量,建模联合分布 $p(X,Y)=p(X\mid Y)p(Y)$,再用贝叶斯规则得到 $p(y\mid x)$。因为建模了 $X$,所以能生成新的数据(从 $p(y)$ 抽类,再从 $p(x\mid y)$ 抽特征)。
- 判别式分类器:不把 $X$ 当随机变量,直接建模 $p(y\mid x)$,因此不能生成 $X$。
📷 两个孩子的故事(一)
回到原视频 (00:17:31)
📷 两个孩子的故事(二)
回到原视频 (00:19:10)
📷 两个孩子的故事(三)
回到原视频 (00:21:18)
由贝叶斯规则:
$$ p(y\mid X) \propto p(X,y) = p(X\mid y)\,p(y) $$
判别式直接学左边;生成式学右边两个再「反推」。生成式把参数预算花在模拟每个类的完整形状上,判别式则把预算花在找准决策边界上。生成式的假设更强(你得相信类条件真的是某个高斯),如果假设不对就会误入歧途;判别式更灵活。
📷 p(y|X) 与贝叶斯规则
回到原视频 (00:25:24)
📷 p(y|X) ∝ p(X,y)
回到原视频 (00:26:39)
📷 这意味着什么(一)
回到原视频 (00:28:02)
📷 这意味着什么(二)
回到原视频 (00:29:30)
📷 判别式 vs 生成式分类器
回到原视频 (00:31:40)
📷 (过渡)
回到原视频 (00:32:05)
📷 (过渡)
回到原视频 (00:33:20)
三、高斯判别分析(GDA)
(参考时间: 00:35)
GDA 是一类生成式分类器:假设每个类的类条件密度是高斯:
$$ p(x\mid y=k)=\mathcal{N}(x\mid \mu_k,\Sigma_k),\qquad p(y=k)=\pi_k $$
自由参数:每个类的均值 $\mu_k$ 与协方差 $\Sigma_k$,加上类先验(伯努利/多项分布)。用 MLE 拟合:
- $\mu_k$ = 属于类 $k$ 的样本的均值(因为标签已知,等价于「GMM 的一步」,无需猜簇);
- $\Sigma_k$ = 该类样本的经验协方差;
- $\pi_k$ = 训练集中类 $k$ 的比例(注意:若数据抽样有偏——如医院只给你 50:50 的高危人群——这个先验会被扭曲,正式部署时可用已知总体流行率替换,而不必用 MLE)。
📷 GDA(一)
回到原视频 (00:35:22)
📷 GDA(二)
回到原视频 (00:36:24)
📷 GDA(三)
回到原视频 (00:36:58)
📷 GDA:两类条件高斯
回到原视频 (00:38:22)
📷 GDA:两类条件高斯(续)
回到原视频 (00:39:08)
📷 GDA:参数与先验
回到原视频 (00:40:05)
📷 GDA:参数与先验(续)
回到原视频 (00:40:13)
📷 GDA:似然与 MLE
回到原视频 (00:42:10)
📷 GDA:联合似然
回到原视频 (00:42:32)
📷 GDA:各参数的 MLE
回到原视频 (00:45:41)
📷 GDA:均值的 MLE
回到原视频 (00:46:08)
📷 GDA:先验的 MLE
回到原视频 (00:47:19)
📷 GDA:先验估计与抽样偏置
回到原视频 (00:47:55)
📷 GDA:何时不用 MLE
回到原视频 (00:49:32)
📷 GDA:先验的估计与陷阱
回到原视频 (00:48:43)
3.1 决策边界:三种情形
决策边界 = 使 $p(y=A\mid x)=p(y=B\mid x)$ 的 $x$ 集合(用贝叶斯规则把生成模型「换算」成判别式的相等条件)。由协方差假设的不同,得到三种边界:
| 情形 | 假设 | 决策边界 | 名称 |
|---|---|---|---|
| 1 | 两类的协方差都是球面($\sigma^2 I$) | 线性(垂直于两类均值之差) | LDA 的特例 |
| 2 | 协方差相同但任意 | 线性 | LDA(线性判别分析) |
| 3 | 协方差任意且不同 | 二次(曲线) | QDA(二次判别分析) |
情形 2 的关键技巧:协方差相同但非球形时,用线性变换「白化/球化」坐标($x \mapsto \hat x = \Sigma^{-1/2}(x-\mu)$),把问题变成情形 1,从而仍得到线性边界——且线性变换保持「线性」。
📷 GDA 决策边界(球面协方差 ⇒ 线性)
回到原视频 (01:11:09)
📷 GDA 决策边界(一)
回到原视频 (00:52:56)
📷 GDA 决策边界(二)
回到原视频 (00:54:49)
📷 GDA 决策边界(三)
回到原视频 (00:55:46)
📷 GDA 决策边界(二)
回到原视频 (00:57:17)
📷 GDA 决策边界(相同协方差 ⇒ 线性)
回到原视频 (01:03:09)
📷 GDA 决策边界(白化技巧)
回到原视频 (01:05:20)
📷 GDA 决策边界(线性变换)
回到原视频 (01:04:36)
📷 GDA 决策边界(不同协方差 ⇒ 二次)
回到原视频 (01:08:44)
📷 GDA 决策边界(二次推导)
回到原视频 (01:07:56)
📷 GDA 决策边界(情形分析)
回到原视频 (01:08:40)
📷 GDA 决策边界(QDA 二次项)
回到原视频 (01:09:27)
📷 GDA 决策边界(多类)
回到原视频 (01:10:10)
一般情形(QDA):无法消掉二次项,边界是二次曲线。多类时:所有类协方差相同 ⇒ 两两之间都是线性边界;协方差各异 ⇒ 一般是二次边界。
📷 GDA 决策边界总结
回到原视频 (01:11:12)
LDA 示例(11 个类):黑点是各高斯均值,同心椭圆是水平集,线性决策边界把它们分开。
📷 LDA
回到原视频 (01:11:18)
3.2 预测分布与「LDA → 逻辑回归」
LDA 学完后,$p(y=A\mid x)$ 可写成类条件高斯 × 先验,正比于一个二次型;对二分类,两个类的该项之比导出一个特殊形式的预测分布——这正是逻辑回归的形式:
LDA 总能写成逻辑回归,但反之不成立:并非逻辑回归的每个 $w$ 都对应一个合法的「高斯均值+协方差」。因此逻辑回归(判别式)是更灵活的模型——它对 $p(y\mid x)$ 的形式限制更少。
(讲师的铺垫:逻辑回归 = 把线性模型 $w^\top x$ 送进 sigmoid 压缩到 $[0,1]$,其决策边界是线性的。)
📷 LDA 的预测条件分布(一)
回到原视频 (01:13:14)
📷 LDA 的预测条件分布(二)
回到原视频 (01:13:54)
📷 LDA 的预测条件分布(三)
回到原视频 (01:14:54)
📷 LDA 的预测条件分布(四)
回到原视频 (01:15:21)
📷 LDA vs 逻辑回归
回到原视频 (01:18:08)
3.3 离散特征:朴素贝叶斯
若特征是离散的(如蛋白质由 20 种氨基酸组成、文本由词组成),类条件密度用高斯就没意义了。常用办法是 朴素贝叶斯(Naive Bayes):假设给定类别时各特征条件独立,于是
$$ p(x\mid y=k)=\prod_j p(x_j\mid y=k) $$
「朴素」正来自这个(通常不成立的)独立性假设。它曾经很常用,现在已经少见。
📷 特征离散时:朴素贝叶斯
回到原视频 (01:19:34)
总结(Takeaways)
- 分类的核心是决策边界;边界越远,置信度越高。
- 生成式把 $X,Y$ 都当随机变量、建模 $p(x,y)=p(x\mid y)p(y)$,可用贝叶斯规则「换算」成 $p(y\mid x)$,并能生成数据;判别式直接建 $p(y\mid x)$,更灵活但无法生成 $X$。
- GDA:类条件为高斯 + 类先验;参数 MLE = 类内均值/协方差 + 类比例(注意抽样偏置)。
- 决策边界:球面协方差 ⇒ 线性;相同协方差 ⇒ LDA 线性;不同协方差 ⇒ QDA 二次。
- LDA 可写成逻辑回归,反之不然(逻辑回归更灵活)。
- 离散特征用朴素贝叶斯(条件独立假设)。
附录:课堂未展示的幻灯片(分类评估:ROC/AUC 等)
以下幻灯片属于本讲 deck 的分类评估部分(混淆矩阵、ROC/AUC、精确率/召回率、代价敏感学习),本次录像未展开,作为延伸阅读收录。
🖼️ 分类问题的种类
🖼️ CS 189/289
🖼️ 回顾:交叉验证
🖼️ 如何在两个分类器间选择(一)
🖼️ 如何在两个分类器间选择(二)
🖼️ 一个未校准但有用的分类器
🖼️ 定义假正例、假负例等
🖼️ (本讲只考虑二分类器)
🖼️ 定义:真阳性 TP
🖼️ 定义:假阳性 FP
🖼️ 定义:真阴性 TN
🖼️ 定义:假阴性 FN
🖼️ 分类决策结果汇总
🖼️ 混淆矩阵
🖼️ 分类决策结果汇总(二)
🖼️ 回到决策阈值
🖼️ 移动阈值得到 ROC 曲线
🖼️ 比较不同分类器的 ROC 曲线(一)
🖼️ 比较不同分类器的 ROC 曲线(二)
🖼️ 比较不同分类器的 ROC 曲线(三)
🖼️ 你会选哪个模型
🖼️ 绘制 ROC 曲线的算法(一)
🖼️ 绘制 ROC 曲线的算法(二)
🖼️ 用 AUC 概括 ROC(一)
🖼️ 用 AUC 概括 ROC(二)
🖼️ 分数分布与 ROC/AUC 可视化
🖼️ 部分 AUC
🖼️ ROC 曲线的历史
🖼️ 更多关于 ROC
🖼️ 分类决策结果汇总(三)
🖼️ 精确率—召回率曲线
🖼️ ROC 曲线及其用途总结
🖼️ 若关心概率校准
🖼️ 领域决定的其他评估方式
🖼️ 若关心这些指标,为何不用……
🖼️ 学习代价敏感分类器(一)
🖼️ 学习代价敏感分类器(二)
🖼️ 面向代价敏感损失优化
附:参考与延伸阅读
| 主题 | 链接 |
|---|---|
| 本讲视频 | https://www.youtube.com/watch?v=oid6SvXy8Kw |
| 课程主页 | https://eecs189.org/sp26/ |
| 官方讲义/笔记(Lecture 11) | Google Drive PDF |
| ImageNetV2 复制研究 | https://arxiv.org/abs/1902.10811 |
| 教材 Machine Learning: A First Course for Engineers and Scientists | 分类、生成式/判别式、GDA/LDA、朴素贝叶斯相关章节 · https://doi.org/10.1017/9781108919371 |
版权说明:本讲视频、幻灯片与课程材料版权归 UC Berkeley EECS 189/289A 课程团队所有。本书为课堂内容的学习性中文重构,仅供学习交流。