第32课:谱聚类——无需指定簇数量的聚类

无须事先指定簇数量的聚类

说到聚类,最常见的模型当然是 KMeans。不过如果使用 KMeans 的话,需要在算法运行前指定 $k$ 的值——也就是要在训练前指定最后的结果被分为几簇。

现实中有相当多的聚类问题,无法在事先指定簇的数量。KMeans 就无法完成这类任务。

好在聚类方法有很多,有一种算法,不仅不需要事先指定 $k$ 值,还可以在结果中保证每个簇中的个体数量低于某个量值,这就是——基于图切割的谱聚类(Spectral Clustering)

算法实现

基于图切割的谱聚类算法过程分为两个大的步骤:

  1. 图切割
  2. 谱聚类

具体步骤如下:

Step 1:生成一张图 $G = $,其中每个顶点(Vertex)对应一个样本对象,每两个顶点之间的边则代表这两个样本之间的距离。

此处的距离可以是欧氏距离、余弦距离,或者任何一种距离,我们用 $c_{ij}$ 表示顶点 $i$ 和顶点 $j$ 之间的距离,那么这张图就可以用矩阵 $C$ 来表示了:

$C = (c_{ij}) $

Step 2:确定距离阈值 $threshold_C$,将所有 $c_{ij} > threshold_C$ 的顶点对 $\{ i, j \}$ 视为断开。

据此将完整的 $G$ 分割为若干连通图 ${G_1, G_2, … , G_n}$。

计算每一个子图的 Radius (最远边缘节点到中心节点的距离) 和 Size(包含顶点数):

    你可能感兴趣的:(机器学习极简入门,精品课,人工智能,机器学习,榜单)