第4讲 · EECS 189:聚类与概率复习

UC Berkeley EECS 189/289A《机器学习导论》2026 春季 · 课堂实录重构

主讲 Jennifer Listgarten、Alex Dimakis
视频 https://www.youtube.com/watch?v=STdR9OyulZE
课程主页 https://eecs189.org/sp26/
官方讲义/笔记(Lecture 4) Google Drive PDF
教材 Machine Learning: A First Course for Engineers and Scientists:聚类对应 Chapter 15.1(k-means),概率对应 Chapter 2.[1-2]
图片来源 书中幻灯片插图为官方 PDF 高清渲染图

对应讲次:第4讲(UC Berkeley EECS 189 机器学习导论)

制作模型:deepseek-flash(coding-agent / pi;据 ~/.pi/agent/settings.json)

说明:课程材料版权归 UC Berkeley 及授课教师所有,本书仅供学习

编者说明:本讲是无监督学习的入门(以 K 均值聚类为主线),并在末尾复习概率论的核心概念。授课在「联合概率分布与边缘化」处收尾,其余概率幻灯片(条件分布、独立同分布、唤醒词与贝叶斯)归入文末附录。


导言与路线图

(参考时间: 00:00)

本讲的路线图:

flowchart LR
    A["无监督学习"] --> B["聚类<br/>(本讲主线)"]
    A --> C["降维 / 表示学习 / 生成建模 / 密度估计"]
    B --> D["K 均值(centroid-based)"]
    D --> E["概率版本:高斯混合模型<br/>(下一讲)"]
路线图

📷 路线图
回到原视频 (00:00:45)

路线图(续)

📷 路线图(续)
回到原视频 (00:01:37)

路线图(再次)

📷 路线图(再次)
回到原视频 (00:02:30)


一、监督学习 vs 无监督学习

(参考时间: 00:04)

监督学习:数据集 $D = \{(x_i, y_i)\}$,其中 $x \in \mathbb{R}^d$、$y \in \mathbb{R}$ 或 $y \in \mathbb{Z}$。例如用邮政编码、面积等特征 $x_i$ 预测房价 $y_i$。可以说,所有现代监督学习神经网络,本质上都是「打了兴奋剂的线性回归」。

回顾监督学习

📷 回顾监督学习
回到原视频 (00:04:50)

无监督学习:数据集只有特征 $D = \{x_i\}$,没有标签。机器学习中很大一部分工作都在建模这种 $D = \{x_i\}$。无监督学习包括:

  1. 聚类(Clustering):$z \in \mathbb{Z} = f_\theta(x)$——把每个点映射到一个离散标签;
  2. 降维(Dimensionality reduction):$z \in \mathbb{R}^m = f_\theta(x)$,$m \ll d$;
  3. 表示学习(Representation learning):$z \in \mathbb{R}^m$,$z = f_\theta(x)$ 或 $z \sim p_\theta(x)$;
  4. 生成建模(Generative modeling):$x \sim p_\theta(x)$;
  5. 密度估计(Density estimation):估计 $p_\theta(x)$。
无监督学习:只有特征

📷 无监督学习:只有特征
回到原视频 (00:07:30)

无监督学习:聚类

📷 无监督学习:聚类
回到原视频 (00:08:36)

无监督学习:聚类的目标

📷 无监督学习:聚类的目标
回到原视频 (00:09:07)

经典的例子是 Old Faithful 间歇泉:我们只测量两个特征(这次喷发持续多久 $x_1$、距下次喷发还有多久 $x_2$),就想看看数据里有没有隐藏的「群体」。这正是聚类的用武之地。


二、聚类

(参考时间: 00:12)

聚类是在寻找隐藏的子群体(hidden subgroups),用于探索性数据分析。真实例子遍布各领域:

聚类用于数据探索

📷 聚类用于数据探索
回到原视频 (00:12:33)

无监督学习的多种形态(一)

📷 无监督学习的多种形态(一)
回到原视频 (00:17:29)

无监督学习的多种形态(二)

📷 无监督学习的多种形态(二)
回到原视频 (00:18:20)

编者说明:讲师强调,聚类与密度估计其实是相通的——如果你学到一个随机变量 $X$ 的概率密度 $p(x)$,也就为聚类/生成建模打开了通路。例如最简单的高斯密度估计,就是学出均值和方差。她还介绍了记号 $Z \sim p$(随机变量 $Z$ 服从分布 $p$):所谓生成建模,就是「从分布中采样 $x$」。

路线图(进入聚类)

📷 路线图(进入聚类)
回到原视频 (00:19:47)

2.1 聚类的基本设定

假设我们只有输入特征、没有类别标签。我们想根据输入空间中的结构,从数据里推断/分配离散的「类标签」。

只有输入特征、没有类别标签

📷 只有输入特征、没有类别标签
回到原视频 (00:20:03)

聚类的核心思想

📷 聚类的核心思想
回到原视频 (00:20:43)

聚类也常用于异常检测(outlier detection):与其只问「聚类是什么」,不如问「哪些点明显偏离、值得单独研究」。

聚类用于异常检测

📷 聚类用于异常检测
回到原视频 (00:23:18)

聚类大致有三大类方法:

flowchart TD
    A["聚类方法"] --> B["基于中心点<br/>centroid-based(K-means)"]
    A --> C["层次/凝聚式<br/>agglomerative(合并最近点→树状图)"]
    A --> D["基于图/谱聚类<br/>graph-cut / spectral(与 PCA 相关)"]
聚类的三大类方法

📷 聚类的三大类方法
回到原视频 (00:24:55)

2.2 聚类的目标

聚类的核心诉求(desiderata):

  1. 簇内相似度(intra-cluster similarity)要高;
  2. 簇间相似度(inter-cluster similarity)要低;
  3. 相似度/距离「取决于观察者」——用什么度量,会决定算法给出什么结果。

换成距离的说法:希望簇内距离最小、簇间距离最大。

聚类的主要诉求

📷 聚类的主要诉求
回到原视频 (00:26:28)

有些聚类的形状并非球形「斑点」,而可能是一条流形(manifold)——这时「离中心近」就不是好标准了,需要用核方法(kernel methods)把点变换到另一个空间再聚类(本课不深入)。

编者说明:讲师也提出一个常被忽视的问题:到底该用哪种距离/相似度?欧氏距离、余弦距离、先投影再用欧氏距离……有无穷多种定义,不同定义会让同一个算法给出不同结果。K 均值今天用的距离是平方欧氏距离。

编者拓展|fa26 把 KNN 与 K-Means 放在同一讲:2026 秋季(fa26)的 Lecture 02 就是 KNN + K-Means —— 因为在“离哪个点最近”这个想法上,监督式的 KNN 是无监督 K-Means 的天然对照: KNN 的“邻居”带着标签(用于预测),K-Means 的“邻居”没有(用于分组)。 而且上面那个量纲问题在 KNN 里更致命:“距离取决于单位”正是 fa26 专门标出的一个陷阱。 本讲只讲了无监督那一半;KNN($k$ 的选择、量纲、KNN 回归)见 《补充:KNN、机器学习词汇与 K-Means》。


三、K 均值聚类

(参考时间: 00:29)

3.1 基于中心点(centroid-based)的聚类

每个簇用一个输入空间中的点表示,称为质心(centroid) $c_k \in \mathbb{R}^d$。K 均值是最常见的「基于中心点」方法。

分配规则:某个点离哪个质心最近,就属于哪个簇。注意簇的编号(1、2、3 或红、绿、蓝)是任意的,没有顺序和大小含义。

基于中心点的聚类

📷 基于中心点的聚类
回到原视频 (00:29:06)

3.2 K 均值的模型与目标函数

模型参数就是 $\{c_k\}$;我们希望每个点到它被分配到的质心的距离最小。

形式化地:给定训练数据 $X = \{x_i\}_{i=1}^n$、$x_i \in \mathbb{R}^d$,参数为 $\{c_k \in \mathbb{R}^d\}$,并把数据划分成 $C_1 \cup C_2 \cup \cdots \cup C_K$(每个 $x_i$ 恰好属于一个簇)。于是目标/损失函数与优化问题为:

$$ \arg\min_{S = C_1 \cup \cdots \cup C_K,\; c_1,\dots,c_K} \sum_{k} \sum_{x \in C_k} \|x - c_k\|^2 $$

K 均值聚类

📷 K 均值聚类
回到原视频 (00:30:01)

形式化:K 均值聚类

📷 形式化:K 均值聚类
回到原视频 (00:31:21)

3.3 参数学习:交替优化的两个「一半」

难点在于要同时优化划分和质心。但如果我们假装知道其中一个,问题就变得非常简单:

(1)已知划分,如何求质心? 优化问题退化为 $\hat{c}_k = \arg\min_{c_k} \sum_{x \in C_k} \|x - c_k\|^2$。

对 $c_k$ 求导并令其为零,可得答案就是该簇所有点的平均值:

$$ \hat{c}_k = \frac{1}{N_k} \sum_{x \in C_k} x $$

这之所以成立,正是因为我们用的是平方欧氏距离(换一种距离答案就不同了)。顺带一提:质心一般不会恰好落在某个训练点上(在实值空间中,概率为零)。

参数学习(一):已知划分

📷 参数学习(一):已知划分
回到原视频 (00:37:46)

参数学习(二):目标退化为求均值

📷 参数学习(二):目标退化为求均值
回到原视频 (00:39:55)

参数学习(三)

📷 参数学习(三)
回到原视频 (00:40:49)

参数学习(四):答案是簇内均值

📷 参数学习(四):答案是簇内均值
回到原视频 (00:41:18)

(2)已知质心,如何求划分? 更简单——把每个点分配给平方欧氏距离最近的质心:

$$ z_i \equiv \arg\min_k \|x_i - c_k\|^2, \quad \hat{C}_k = \{x_i : z_i = k\} $$

反过来:已知质心求划分

📷 反过来:已知质心求划分
回到原视频 (00:43:21)


四、K 均值算法与演示

(参考时间: 00:45)

把两半合起来,就得到 K 均值算法(Lloyd's Algorithm):

  1. 初始化簇中心 $c_k$(例如从训练数据里随机挑 $k$ 个点);
  2. 重复直到收敛:
  3. ① 给定 $\{c_k\}$,计算划分 $C_1 \cup \cdots \cup C_K$;
  4. ② 给定划分,更新中心 $\{c_k\}$(即各簇均值)。

它会收敛吗? 会——每一步都会让目标函数下降或保持不变;当分配不再变化时,就到达了一个局部极小。

一个等价的变体:不初始化中心,而是先随机初始化一个划分,然后同样交替迭代。两者都有效、都能收敛到局部最优。

K 均值算法(Lloyd 算法)

📷 K 均值算法(Lloyd 算法)
回到原视频 (00:45:20)

下面的动画(Yisong Yue 制作)演示了这一过程:从随机初始划分出发,先算质心、再重新分区,反复交替,很快就「自我清理」出一个合理的结果。

K 均值演示:初始状态

📷 K 均值演示:初始状态
回到原视频 (00:51:32)

K 均值演示:交替迭代

📷 K 均值演示:交替迭代
回到原视频 (00:51:49)

K 均值演示:质心=簇内均值

📷 K 均值演示:质心=簇内均值
回到原视频 (00:52:24)

K 均值演示:步骤

📷 K 均值演示:步骤
回到原视频 (00:53:11)

K 均值演示:步骤

📷 K 均值演示:步骤
回到原视频 (00:53:19)

K 均值演示:步骤

📷 K 均值演示:步骤
回到原视频 (00:53:50)

K 均值演示:步骤

📷 K 均值演示:步骤
回到原视频 (00:53:55)

K 均值演示:步骤

📷 K 均值演示:步骤
回到原视频 (00:54:00)

K 均值演示:步骤

📷 K 均值演示:步骤
回到原视频 (00:54:10)

K 均值演示:步骤

📷 K 均值演示:步骤
回到原视频 (00:54:20)

K 均值演示:步骤

📷 K 均值演示:步骤
回到原视频 (00:54:30)

K 均值演示:步骤

📷 K 均值演示:步骤
回到原视频 (00:54:40)

K 均值演示:步骤

📷 K 均值演示:步骤
回到原视频 (00:54:50)

K 均值演示:步骤

📷 K 均值演示:步骤
回到原视频 (00:55:00)

K 均值演示:步骤

📷 K 均值演示:步骤
回到原视频 (00:55:05)

K 均值演示:收敛

📷 K 均值演示:收敛
回到原视频 (00:55:08)

编者说明:这与机器学习中优化损失函数时的普遍现象一致——开始时调整幅度很大,之后越来越小、趋于稳定。K 均值有明确的停止条件(分配不再变化),但当我们之后用梯度下降时,由于浮点误差,梯度往往永远到不了零,需要设定阈值(如梯度小于 $10^{-6}$ 就停)。

4.1 旁注:距离、度量与相似度

「距离」一词在数学上更严格的说法是度量(metric),必须满足四条性质:

  1. $j = k \iff d(j,k) = 0$;
  2. $j \neq k \iff d(j,k) > 0$;
  3. 对称性:$d(j,k) = d(k,j)$(这也是 KL 散度不是距离的原因);
  4. 三角不等式:$d(i,j) + d(i,k) \ge d(j,k)$。

K 均值用的「距离」其实不满足三角不等式,所以严格来说不是度量——但这不影响使用,因为我们并没有用到三角不等式。此外,还有更口语化的相异度(dissimilarity)与相似度(similarity,可视为相异度的「补」)。

旁注:距离、度量与相似度

📷 旁注:距离、度量与相似度
回到原视频 (00:56:15)


五、如何选择聚类数 K

(参考时间: 00:58)

K(簇的数量)是一个超参数。常用方法是肘部法(elbow method):

如何找到好的聚类数

📷 如何找到好的聚类数
回到原视频 (00:58:55)

编者说明:讲师提醒——永远不要把图画成没有标记点的曲线(她的研究生常被这样要求);肘部法并不万能,也没有理论保证;聚类在很大程度上是反复试验 + 观察 + 与同事/合作者讨论的过程。

一个真实的应用:酵母基因表达聚类——把约 50 个基因在不同时间点的表达量作为特征(每条随时间变化的曲线是一个样本),运行 K 均值,得到若干「基因表达模式」的簇。

用酵母基因表达数据聚类

📷 用酵母基因表达数据聚类
回到原视频 (01:03:01)


六、K 均值的应用与局限

6.1 像素 K 均值:图像颜色量化

把图像中每个像素看成 RGB 三维空间里的一个向量(每个通道 0–255,共 $256^3$ 种颜色)。用 K 均值对这些颜色做聚类,就能用很少的颜色重新渲染图像——这叫颜色量化(color quantization)。代价是丢失细节:例如原本红色的头盔与黄色的自行车,可能被强制合并成同一种颜色。

像素 K 均值

📷 像素 K 均值
回到原视频 (01:05:40)

编者说明:讲师用这个例子说明——即便把 $K$ 设为等于样本数,K 均值也不保证每个中心正好落在每个数据点上,因为可能陷入局部最优;只有把每个中心都初始化到对应的数据点、再迭代,才可能做到。

6.2 K 均值的缺点

(1)糟糕的局部极小:随机初始化可能收敛到很差的解(例如把本该三个的簇变成「一个半 + 一个半」)。常见的缓解策略:

K 均值的问题:糟糕的局部极小

📷 K 均值的问题:糟糕的局部极小
回到原视频 (01:10:11)

(2)即使达到全局最优,K 均值本身仍有结构性缺陷:

K 均值的其他弱点

📷 K 均值的其他弱点
回到原视频 (01:11:21)

(3)存在一个概率版本可以修好这些问题——这就是下一讲的高斯混合模型(Mixture of Gaussians, MoG)。

概率版本:高斯混合模型

📷 概率版本:高斯混合模型
回到原视频 (01:13:40)


七、概率复习

(参考时间: 01:14)

路线图(进入概率)

📷 路线图(进入概率)
回到原视频 (01:14:46)

概率论是量化并操控不确定性(uncertainty)的框架。有两种观点:

两派长期争论,但在机器学习中两者都有用,也常混用。

概率:两种观点

📷 概率:两种观点
回到原视频 (01:15:05)

7.1 联合概率分布

设 $X$、$Y$ 为离散随机变量,$X \in \{x_1,\dots,x_L\}$、$Y \in \{y_1,\dots,y_M\}$。联合概率分布 $p(X=x_i, Y=y_j)$ 表示事件「$X=x_i$ 且 $Y=y_j$」的概率。它满足两条性质:

例如下面这张 $3 \times 2$ 的联合概率表,所有格子之和为 1:

$y_1$ $y_2$
$x_1$ 0.2 0.1
$x_2$ 0.1 0.1
$x_3$ 0.15 0.35
联合概率分布

📷 联合概率分布
回到原视频 (01:16:21)

7.2 求和法则(边缘化)

求和法则(Sum Rule / Marginalization):把联合分布对某个变量求和,就得到只关于另一个变量的分布(边缘分布):

$$ p(X = x_i) = \sum_{j=1}^{M} p(X = x_i, Y = y_j) $$

以上表为例:$p(X=x_1) = 0.2 + 0.1 = 0.3$,$p(X=x_3) = 0.15 + 0.35 = 0.5$;同理 $p(Y=y_1) = 0.45$。

联合概率分布与边缘化

📷 联合概率分布与边缘化
回到原视频 (01:17:55)

编者说明:讲到这里时间用尽,条件概率、经验分布、乘积法则、独立性与 IID、唤醒词与贝叶斯等后续内容本次未展开,收录于文末附录。


总结(Takeaways)


附录:课堂未展示的幻灯片

以下幻灯片属于本讲官方 deck,但本次录像时间用尽,未展开讲解,作为延伸阅读收录(条件概率、经验分布、乘积法则、独立性、IID、K 均值与概率、唤醒词与贝叶斯)。

条件概率分布

🖼️ 条件概率分布

经验概率分布

🖼️ 经验概率分布

概率的乘积法则

🖼️ 概率的乘积法则

独立随机变量

🖼️ 独立随机变量

独立同分布数据

🖼️ 独立同分布数据

K 均值与概率(教材章节)

🖼️ K 均值与概率(教材章节)

路线图:概率实践(附加)

🖼️ 路线图:概率实践(附加)

例子:唤醒词(一)

🖼️ 例子:唤醒词(一)

例子:唤醒词(二)

🖼️ 例子:唤醒词(二)

例子:唤醒词(三)

🖼️ 例子:唤醒词(三)

分析唤醒词检测器

🖼️ 分析唤醒词检测器

贝叶斯定理

🖼️ 贝叶斯定理

分析唤醒词检测器(续)

🖼️ 分析唤醒词检测器(续)

贝叶斯更新:唤醒词检测器

🖼️ 贝叶斯更新:唤醒词检测器


附:官方参考与延伸阅读

主题 链接 / 说明
课程主页 https://eecs189.org/sp26/
官方讲义/笔记(Lecture 4) Google Drive PDF
教材 Machine Learning: A First Course for Engineers and Scientists 聚类:Chapter 15.1;概率:Chapter 2.[1-2] · https://doi.org/10.1017/9781108919371
Old Faithful 间歇泉聚类示例 https://kasumisanchika.medium.com/k-means-clustering-for-old-faithful-geyser-eruptions-analysis-74f3df8979b1
客户分群示例 https://medium.com/@sygong/k-means-clustering-for-customer-segmentations-a-practical-real-world-example-196a10323b9f
K-means(Wikipedia) https://en.wikipedia.org/wiki/K-means_clustering
CSC2515 课程(肘部法/聚类幻灯片来源) http://www.cs.toronto.edu/~urtasun/courses/CSC2515/CSC2515_Winter15.html

版权说明:本讲视频、幻灯片与课程材料版权归 UC Berkeley EECS 189/289A 课程团队(Jennifer Listgarten、Alex Dimakis,部分幻灯片致谢 Andrea Krause、Yisong Yue)所有。本书为课堂内容的学习性中文重构,仅供学习交流。