第 9 章 聚类
聚类是无监督学习的一种典型任务。训练数据没有标签,算法需要自动发现样本之间的分组结构。
9.1 无监督学习:简介
监督学习中,每个样本都有标签。无监督学习中,只有输入数据,没有正确答案。
聚类算法会把相似样本分到同一组。
常见应用:
- 市场细分。
- 社交网络分组。
- 计算机集群组织。
- 图像压缩。
9.2 K-均值算法
K-均值算法(K-means)需要先指定聚类数量 K。
算法流程:
- 随机初始化
K个聚类中心。 - 把每个样本分配给离它最近的聚类中心。
- 对每个簇,重新计算簇内样本均值作为新的聚类中心。
- 重复分配和更新,直到收敛。
分配步骤:
text
对每个样本,选择最近的聚类中心更新步骤:
text
对每个簇,取簇内所有样本的平均值作为新中心9.3 优化目标
K-均值最小化的是样本到所属聚类中心的平方距离之和。
其中:
是 K-均值的代价函数。 是样本数量, 是聚类数量。 是第 i个样本。是第 i个样本所属的簇编号。是第 k个聚类中心。
K-均值每一步都在降低或保持代价函数不变。
9.4 随机初始化
随机初始化会影响 K-均值结果,因为算法可能收敛到局部最优。
常见做法:
- 多次随机初始化。
- 每次运行 K-均值。
- 选择代价函数最小的一次结果。
通常当 K 较小时,多次随机初始化很有帮助。
9.5 选择聚类数
选择聚类数时常用肘部法(Elbow Method)。
选择 K 没有完全自动的标准。
肘部法则会画出 K 和代价函数的关系。如果曲线在某个位置明显变缓,这个位置可能是合适的 K。
但很多时候曲线没有明显肘部,此时需要根据实际应用目标选择。
例如做 T 恤尺码分类时,K = 3 可以对应小、中、大,K = 5 可以对应更多尺码。
9.6 K-均值的局限
K-均值简单高效,但它有几个限制:
| 限制 | 说明 |
|---|---|
| 需要预先指定 K | 聚类数往往需要试验或结合业务判断 |
| 对初始化敏感 | 不同初始中心可能得到不同结果 |
| 偏好球形簇 | 对细长形、环形等复杂结构效果不好 |
| 对异常值敏感 | 极端样本可能明显影响聚类中心 |
因此聚类结果不能只看算法输出,还要结合可视化、业务解释和后续任务效果判断。
9.7 聚类和表示学习
无监督学习不只有聚类。降维、密度估计、自编码器、自监督学习都可以看成从无标签数据中发现结构。
深度学习中常见的表示学习,也是在学习更有用的特征空间。如果表示空间学得好,相似样本会更接近,聚类和检索都会更容易。