20150916谱聚类学习
什么是谱聚类?
谱聚类的思想是生成一个带权无向图G。G的每个顶点表示一个样本,连接顶点的边表示两个样本之间具有相似性,边的权值即样本之间的相似度大小。然后对图进行分割,使得不同组之间的边的相似度尽可能的小,组内边的相似度尽可能的大。因此,谱聚类需要解决两个问题:如何生成带权无向图G?如何对图进行分割?
如何生成带权无向图G?
由上述描述可知,G其实是一个表示样本间相似度的矩阵。它是一个对称矩阵,且对角线元素为0(自己与自己的相似度定义为0),将该相似度矩阵记为W。
计算相似度的公式有很多,可自行选择。但当样本较多时,一个样本可能和很多样本点具有相似性,造成矩阵繁琐庞大。因此,可根据情况保留与该样本点最为相似的K个值,其余舍弃,记为0。如何对图进行分割?
在此过程中,引入了拉普拉斯矩阵。将图分割问题转换成拉普拉斯矩阵求解问题。详见谱聚类详解
谱聚类步骤
- 准备数据,生成相似度矩阵W。矩阵对角线元素全为0。
- 生成对角矩阵D,除对角线外,其余元素全为0。对角线上元素是W矩阵对应列或行之和。
- 生成拉普拉斯矩阵L=D-W。
- 根据不同的划分方法,进行操作:
1).mincut或ratiocut的拉普拉斯矩阵L=D-W;
2).normalizedcut的拉普拉斯矩阵 L=D ( −1/2)∗L∗D ( −1/2)
3).normalized相似变换: L ′ =D ( −1/2)∗W∗D ( −1/2)
- 求L的前k个最小特征值和特征向量(从小到大排序),或求L’的前k个最大特征值和特征向量(从大到小排序)。
- 将这k个特征向量组成新的矩阵。将每一行看成一个新的向量,对其进行k-means聚类。每一行所属类别,即原有样本点所属类别。