无须事先指定簇数量的聚类
说到聚类,最常见的模型当然是 KMeans。不过如果使用 KMeans 的话,需要在算法运行前指定 $k$ 的值——也就是要在训练前指定最后的结果被分为几簇。
现实中有相当多的聚类问题,无法在事先指定簇的数量。KMeans 就无法完成这类任务。
好在聚类方法有很多,有一种算法,不仅不需要事先指定 $k$ 值,还可以在结果中保证每个簇中的个体数量低于某个量值,这就是——基于图切割的谱聚类(Spectral Clustering)。
算法实现
基于图切割的谱聚类算法过程分为两个大的步骤:
- 图切割
- 谱聚类
具体步骤如下:
Step 1:生成一张图 $G = <V,E>$,其中每个顶点(Vertex)对应一个样本对象,每两个顶点之间的边则代表这两个样本之间的距离。
此处的距离可以是欧氏距离、余弦距离,或者任何一种距离,我们用 $c_{ij}$ 表示顶点 $i$ 和顶点 $j$ 之间的距离,那么这张图就可以用矩阵 $C$ 来表示了:
$C = (c_{ij}) $
Step 2:确定距离阈值 $threshold_C$