谱聚类是一种数据聚类算法类似于K-means,通过将样本之间的相似性转换为图论问题来实现聚类。
相似度矩阵W
首先我们要得到一个相似度矩阵(邻接矩阵)
W
W
W,用来刻画样本与样本之间的相似度,其中W[i][j]
代表的是样本i
和j
之间的相似度。
假如图是下面这个样子,其中点集为
V
=
{
v
1
,
v
2
,
v
3
}
V=\{v_1,v_2,v_3\}
V={v1,v2,v3}
那么其邻接矩阵就是这个样子:
(
0
1
1
1
0
5
1
5
0
)
\begin{pmatrix} 0 & 1 & 1 \\ 1 & 0 & 5 \\ 1 & 5 & 0 \end{pmatrix}
011105150
拉普拉斯矩阵
L
=
D
−
W
L=D-W
L=D−W,其中
D
D
D为度矩阵,也就是一个对角矩阵,其中对角线上的元素
D
i
i
=
∑
j
=
1
N
w
i
j
D_{ii}=\sum_{j=1}^{N}{w_{ij}}
Dii=∑j=1Nwij为i号点的度。
上图中的D矩阵可表示为:
(
2
0
0
0
6
0
0
0
6
)
\begin{pmatrix} 2&0&0\\ 0&6&0\\ 0&0&6 \end{pmatrix}
200060006
则
L
L
L为:
(
2
−
1
−
1
−
1
6
−
5
−
1
−
5
6
)
\begin{pmatrix} 2&-1&-1\\ -1&6&-5\\ -1&-5&6 \end{pmatrix}
2−1−1−16−5−1−56
还有标准化的拉普拉斯矩阵
L
=
D
−
1
2
∗
L
∗
D
−
1
2
L=D^{-\frac{1}{2}}*L*D^{-\frac{1}{2}}
L=D−21∗L∗D−21
目标函数
假如最后的聚类结果为
{
A
1
,
A
2
,
.
.
.
,
A
k
}
\{A_1, A_2, ...,A_k\}
{A1,A2,...,Ak},我们希望最大化簇内相似性,同时最小化簇间相似性。
m
i
n
簇间相似性
簇内相似性
min\frac{簇间相似性}{簇内相似性}
min簇内相似性簇间相似性
算法流程
- 构建相似度矩阵 W W W和度矩阵 D D D,计算标准化的拉普拉斯矩阵 L m a t Lmat Lmat
- 计算Lmat矩阵对应的特征值 λ \lambda λ和特征向量V
- 取前 k k k个最小的特征值对应的特征向量组成 n ∗ k n*k n∗k矩阵 U U U
- 将矩阵 U U U中的每一行当成一个样本来进行kmeans聚类