谱聚类(spectral clustering)是广泛使用的聚类算法,数据分布的适应性很强,(对于非簇状分布的数据也能起到很好的效果)聚类效果也很优秀,同时聚类的计算量也小很多,被大家广泛使用。
1、谱聚类概述
谱聚类的基本思想很简单,利用从数据中得到的特征矩阵实现聚类,依靠两个部分完成聚类工作,第一个部分为图的构造,第二个部分对构造好的图,诱导出拉普拉斯矩阵并做特征分解,求特征向量,将数据嵌入到特征向量空间,进而实现聚类。
在介绍谱聚类之前先简单的回顾下图论和拉普拉斯矩阵的有关知识。
2、图论和拉普拉斯矩阵回顾
在这里仅简单的介绍下无向图中关于度矩阵、邻接矩阵和拉普拉斯矩阵。
概念介绍
1、无向图 边上的权重和两点的方向无关:
W
i
j
=
W
j
i
W_{ij} =W_{ji}
Wij=Wji
2、度矩阵:
d
i
=
∑
j
=
1
n
w
i
j
d_i=\sum\limits_{j=1} ^n w_{ij}
di=j=1∑nwij
假定这里有一张无向图。
它的邻接矩阵W为:
度矩阵D为:
3、对应图的拉普拉斯矩阵:
L
=
D
−
W
L=D-W
L=D−W
拉普拉斯矩阵是图论中用到的一种重要矩阵,给定一个有n个顶点的图 G=(V,E),其拉普拉斯矩阵被定义为 L = D-A,D其中为图的度矩阵,A为图的邻接矩阵。
拉普拉斯具有很好的性质:
- 1)拉普拉斯矩阵是对称矩阵,这可以由D和W都是对称矩阵而得。
- 2)由于拉普拉斯矩阵是对称矩阵,则它的所有的特征值都是实数。
- 3)对于任意的向量f,我们有
- 拉普拉斯矩阵是半正定的,且对应的n个实数特征值都大于等于0
邻接矩阵的构建
通常通过对样本点距离度量的相似矩阵S来获得邻接矩阵W。
所谓的相似矩阵其实就是两样本间的距离,即
s
i
j
=
∥
x
i
−
x
j
∥
2
s_{ij}=\| x_i -x_j \|^2
sij=∥xi−xj∥2
构建邻接矩阵W的方法有三个:ϵ-邻近法,K邻近法和全连接法。其中前两个属于局部连接,并且聂飞平大佬还提出自适应近邻构造法(CAN)。
其中全连接法来建立邻接矩阵是最普遍的,而在全连接法中使用高斯核RBF最多:
归一化拉普拉斯矩阵构建
L ~ = D − 1 2 L D − 1 2 = I − D − 1 2 W D − 1 2 \tilde{L}= D^{-\frac{1}{2}}LD^{-\frac{1}{2}}=I-D^{-\frac{1}{2}}WD^{-\frac{1}{2}} L~=D−21LD−21=I−D−21WD−21
通过Ncut切图的方法,可以得到如下的式子。
然后就可以求出
L
~
\tilde{L}
L~ 的最小的前k个特征值,求出特征向量,并标准化,得到特征矩阵F, 再对F进行一次传统的聚类(K-Means)算法,最终就完成了聚类任务。
切图的方式有Ncut和RatioCut,在这里Ncut的方法的效果比较好,用的居多。致于它的证明方法可以看这位博主写的谱聚类详细介绍
下面以总结谱聚类算法流程。
输入:样本集
D
=
(
x
1
,
x
2
.
.
.
.
x
n
)
D=(x_1,x_2....x_n)
D=(x1,x2....xn).
输出: 簇划分
C
=
(
c
1
,
c
2
.
.
.
.
.
c
n
)
C=(c_1,c_2.....c_n)
C=(c1,c2.....cn).
- 根据输入的相似矩阵的生成方式构建样本的相似矩阵S。
- 根据相似矩阵S构建邻接矩阵W,构建度矩阵D。
- 计算出拉普拉斯矩阵L。
- 构建标准化后的拉普拉斯矩阵 L ~ = D − 1 2 L D − 1 2 \tilde{L}= D^{-\frac{1}{2}}LD^{-\frac{1}{2}} L~=D−21LD−21。
- 计算 L ~ \tilde{L} L~最小的k个特征值所各自对应的特征向量f。
- 将各自对应的特征向量f组成的矩阵按行标准化,最终组成n×k维的特征矩阵F。
- 对矩阵F进行K-Means聚类。
- 得到簇划分 C = ( c 1 , c 2 . . . . . c n ) C=(c_1,c_2.....c_n) C=(c1,c2.....cn).
由于时间不充分,文章有些部分写的比较糟糕,大家有什么问题可以在底下留言,一起讨论。