谱聚类是一种利用特征值分解(也称为谱分解)进行聚类的方法,所以叫做谱聚类。该算法和图划分密切相关。
这里先给出一些图的定义:
1.用G=(V,E)表示无向图,其中V和E分别为其顶点集和边集;
2.每个边的权重为wij>0,一般设为两个顶点的某种相似度,比如exp(−|xi − xj|^2/(2*/sigma^2) ).
3.把Wij的每一行相加,获得N个数(每个样本点的出度),将其排列称为N*N维对角阵D。定义L=W-D (L叫Graph Laplacian)
显然L为对称半正定阵,且最小特征值为0,对应特征向量为(1,1,...,1)'.
且对N维向量f,有
(1)
这个性质很重要,后面将反复用到
当输入参数为K(聚合成K类),N个样本点,谱聚类算法如下:
1.计算样本点的相似度矩阵W,出度矩阵D, Laplacian L=W-D
2,对L作特征值分解,把特征值按从小到大排列,获取其最小的K个特征值及其对应的特征向量
3.把这 k 个特征向量排列在一起组成一个 N* K的矩阵,将其中每一行看作 K 维空间中的一个向量,用 K-means 算法对这N个K维向量聚类。聚类的结果对应最初数据点的类别。
我们可以这样直观的理解一下谱聚类算法。对于全连通的图G,存在一个特征值0,设f为对应特征向量,由性质(1)
fi=fj,所以向量1(或其倍数)为特征值0对应的唯一的特征向量。
假设G中正好包含K个连通分支,则不失一般性,将所有顶点按照所在连通分支顺序排列,则L可表示为以下对角矩阵形式,每个Li对应于一个连通分支上的顶点
则L的特征值0对应的特征向量X,为每个Li特征向量的扩充(即Li分量对应于Li的特征向量,其他分量填充0)。每个Li为本连通分支的graph Laplacian,有特征值0和特征向量1。也就是说,L存在k重特征值0,对应的特征空间为K维(一组正交基为Li特征向量的扩充),特征空间中的每个向量为都满足条件:当对两个顶点xi,xj属于同一个顶点,则fi=fj,否则,fi!=fj。在这种完美情况下,L分解正好有K个0特征值,N个样本点在K维空间中正好对应于K个点。
当完美情况遇到了一点小扰动,特征值可能不为0,K维向量可能不完全重合于K个点。谱算法取最小的K个特征值,并对K维向量做kmeans,可以认为,在扰动不太大的情况下谱算法有望获得跟以上类似的聚类结果,这可能是谱聚类方法的直观解释。
需要注意,在K连通分支的情况下,L正好有K个0特征值,第k+1个特征值和之前差值则较大。所以在扰动不大的情况下,考察相邻两个特征值之间的差值,可以有助于设置合理的K参数。
下图为4类数据的一个谱聚类结果展示
谱聚类和图划分算法RatioCut
谱聚类算法和图划分密切相关,图划分的目的是将有权无向无环图划分为两个或以上子图,使得子图规模差不多而割边权重之和最小。图的划分可以看做是有约束的最优化问题,但是NP-hard,当我们放松其中的一些约束时,就可以等价为谱聚类方法。
ratiocut是一种图划分的算法,其优化的目标为:
上式中分子为切割后子图间的权重,分母为子图大小。
以2切割为例,我们按如下方式定义一个N维向量fi
(定义fi)
由L的性质(1),有
由fi的定义式,有f' 1=0,且f'f=n.
所以图的二分RatioCut问题,就转换为带约束的最小化f'Lf问题。约束为f' 1=0,且f'f=n.
问题转化到这个样子就好求了,因为有一个叫做Rayleigh quotient 的东西:
他的最大值和最小值分别等于矩阵A的最大的那个特征值和最小的那个特征值,并且极值在x等于对应的特征向量时取到。
不过由于L的最小的特征值为0,并且对应的特征向量正好为 1 (我们这里仅考虑 Graph 是联通的情况),不满足f' 1=0 的条件,因此我们取第二个小的特征值,以及对应的特征向量 。
这个问题和原始的NP问题差异在于,原问题定义fi时,要求f只能取离散的两个值;而我们求解过程中放开了这个约束获得连续值。为了将连续值再转换回fi,以获取原始图划分问题的解,谱聚类采用kmeans把连续的值分成2类,或者因为这里只有1维,简单按照>0,<0划分也是可以的。
谱分解的优点是:
1.输入为相似度矩阵,不需要原始点的坐标,可以使用任意自定义的相似度(算法对此敏感),或者对原始的相似度矩阵进行一定的筛选使其更稀疏更容易计算。常用的如k-nearest(对每个点的k个近邻加边),mutual k-nearest(对每个点取k近邻,但是需要两方向都选中才加边),eps-graph(忽略掉sim<eps的边)。一般来说,KNN类型对多个区域之间可能存在的密度差异更不敏感,因而不会出现所有的边都集中在密度高的一簇,而其他簇为零散点的情况;而KNN比mutual KNN更偏向于将密度差异不同的区域连接起来。knn的k通常取为log(N)数量级,N为样本点数量
2.算法复杂度更低。当样本点原始维度很高时,Kmeans需要对高维向量反复迭代,而谱聚类中将kmeans的输入降到了K维。
3.在许多paper中,认为谱聚类抗噪能力好,效果优于kmeans
4.当输入数据比较好时,能从L的特征值的大小上看出K应该设置为多少合适,而一般kmeans只能试
其他的Graph laplace简介:
在实际使用中,除了的L(称为unnormalized laplacian)外,还有以下两种normalized形式,三种都称为graph laplacian但稍有不同
一般来说,normalized laplcian在让Cluster间相似度最小而Cluster内部相似度最大方面表现要更好,所以首选这类方法。
在两种normalized中,Lrw又比Lsym稍好,详细的解释见参考【1】
参考文献:
【1】《A Tutorial on Spectral Clustering 》Ulrike von Luxburg
【2】 http://blog.pluskid.org/?p=287