谱聚类(Spectral Clustering)是先把数据点连成一张“相似度图”,再借助这张图的特征向量(eigenvectors)把每个点重新表示到一组低维坐标里,最后在低维空间中切分的聚类方法。
它怎么工作
大致分三步。
1. 建图。 每个数据点对应图上的一个节点,两点之间的边权表示它们的相似程度,最常用 Gaussian kernel(高斯核):w = exp(−‖xᵢ−xⱼ‖² / 2σ²)。为了让计算更容易,通常只给每个点连最近的 k-nearest neighbors(k 近邻)。
2. 求谱。 构造图拉普拉斯矩阵(Graph Laplacian)L = D − W:W 是边权矩阵,D 是每个点的连边权重之和(叫“度”)。取 L 最小的 k 个特征值对应的特征向量,每个点原本是一行原始特征,现在变成 k 个数字组成的新坐标。
3. 切分。 在这 k 维新坐标上跑普通的 K-Means。因为经过上一步,原本属于不同簇的点已经被拉开了。
一个比方:把数据点想成一张渔网上的结,结与结之间连着绳子,绳子的粗细代表相似程度。我们想把网剪成 k 块,并让每块内部尽量少断绳,这就是最小割(min-cut)问题。直接枚举所有剪法会组合爆炸,而拉普拉斯矩阵的特征向量恰好是这个问题的一个“松弛解”,它告诉你网会从哪道缝最先裂开。抬一下渔网,它自己就从最松的缝断开。
为什么能切 K-Means 切不开的形状
K-Means 的决策边界是两质心的垂直平分线,也就是直线或高维超平面。它隐含假设簇是围绕质心的凸球形团。遇到双月形、同心圆这类数据,两个簇的质心甚至几乎重合,直线怎么切都错。
谱聚类不看“离中心多远”,只看“和谁连得紧”。一个半月内部连边密,跨半月连边疏,图结构上本来就是两个子图。特征向量把这种连通关系变成坐标,于是弯曲的簇在新空间里成了可以一刀切开的两团。
| 维度 | K-Means | 谱聚类 |
|---|---|---|
| 核心假设 | 簇是凸的球形,可用质心代表 | 簇是图上连接紧密、彼此稀疏的子图 |
| 边界形状 | 直线、超平面 | 可沿数据形状弯曲的任意形状 |
| 输入 | 原始坐标 | 相似度矩阵,即图 |
| 代价 | 低,线性量级每轮 | 高,特征分解通常接近 O(n³),稀疏图可缓解 |
| 稳定性 | 依赖初始化,需要多跑几次 | 前段特征分解是确定的,后段 K-Means 仍有随机性 |
| 适合 | 大样本、球形簇 | 中小样本、非凸形状、关系型数据 |
对从业者的意义
谱聚类的参数比较敏感:相似度尺度 σ 或近邻数选得太大,图会全连通,切不开;选得太小,图会碎成孤岛,每个点自成一簇。样本量一大,特征分解也承受不了,工程上常用 Nyström 近似、稀疏化或先降维的办法。它的影响也超出聚类本身:拉普拉斯特征映射(Laplacian Eigenmaps)等流形学习降维方法,用的都是同一套思路。
对普通职场人,可以带走一个直觉:聚类不一定需要“中心”。客户分群、文档主题、社交社区这类问题里,很多簇本来就没有一个“平均代表”,按关系切分比按坐标切分更贴合业务。
具体实现与参数默认值,以所用作官方文档为准。
