首先谱聚类是一种广泛的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果更优秀,同时聚类 的计算量也小了很多,而且实现起来也不复杂,在处理实际问题时,建议使用谱聚类。
谱聚类是从图论中演化出来的算法,后来在聚类中广泛应用,他的思想是把所有的数据看作空间中的点,这些点之间可以用边连接起来,距离较远的两个点之间的权重较低,而距离较远的两个点之间的变权重较高,对所有数据点组成的图进行切图,切图后不同的子图间边权重和尽可能的低,而子图内的边权重和尽可能的高,从而达到聚类的目的。
这里会用拉普拉斯矩阵作为相似矩阵,进行特征分解得到特征向量进行聚类。
拉普拉斯矩阵是利用度矩阵-邻接矩阵得到的。
最常用的相似矩阵的生成方式是基于高斯核距离的全连接方式,最常用的切图方式是Ncut。而到最后常用的聚类方法为K-Means。下面以Ncut总结谱聚类算法流程。
输入:样本集D=(x1,x2,...,xn)(x1,x2,...,xn),相似矩阵的生成方式, 降维后的维度k1k1, 聚类方法,聚类后的维度k2k2
输出: 簇划分C(c1,c2,...ck2)C(c1,c2,...ck2).
1) 根据输入的相似矩阵的生成方式构建样本的相似矩阵S
2)根据相似矩阵S构建邻接矩阵W,构建度矩阵D
3)计算出拉普拉斯矩阵L
4)构建标准化后的拉普拉斯矩阵D−1/2LD−1/2D−1/2LD−1/2
5)计算D−1/2LD−1/2D−1/2LD−1/2最小的k1k1个特征值所各自对应的特征向量ff
6) 将各自对应的特征向量ff组成的矩阵按行标准化,最终组成n×k1n×k1维的特征矩阵F
7)对F中的每一行作为一个k1k1维的样本,共n个样本,用输入的聚类方法进行聚类,聚类维数为k2k2。
8)得到簇划分C(c1,c2,...ck2)C(c1,c2,...ck2).