谱聚类
谱聚类是一种基于图论的聚类方法,通过对样本数据的拉普拉斯矩阵的特征向量进行聚类,从而达到对样本数据聚类的母的。谱聚类可以理解为将高维空间的数据映射到低维,然后在低维空间用其它聚类算法(如KMeans,c-均值聚类)进行聚类。
相似图构造
相似图,用来刻画数据点局部的近邻关系。顶点 v i v_i vi对应一个样本点。
-
k-近邻图
如果 v i v_i vi是 v j v_j vj的近邻,那么 v i v_i vi和 v j v_j vj之间存在一条边。由于每个样本点的近邻情况不完全相同,因此这种方法构造的相似图不是对称的。 -
对称k-近邻图:
如果两个点互为k近邻,那么这两个点之间存在一条边。 -
ϵ \epsilon ϵ近邻图
任意两个距离小于 ϵ \epsilon ϵ的点之间存在一条边。 -
全连接图
这种方法表示任意两个样本点之间都有相似度,但是距离较远的样本点之间相似度较低。
图拉普拉斯矩阵
在引入拉普拉斯矩阵之前,先介绍下面的符号表示:
- w i j w_{ij} wij是边权重
- 节点 v i ∈ V v_i \in V vi∈V的度 (degreee),定义为: d i = ∑ j = 1 n w i j d_i=\sum_{j=1}^{n} w_{ij} di=∑j=1nwij
- 度矩阵: D = d i a g ( d 1 , ⋯ , d n ) D=diag(d_1, \cdots ,d_n) D=diag(d1,⋯,dn)
- 加权邻接矩阵: W = ( w i j ) i , j = 1 , ⋯ , n W=(w_{ij})_{i,j=1,\cdots,n} W=(wij)i,j=1,⋯,n,即构造的相似度矩阵。
未标准化拉普拉斯矩阵
L = D − W L=D-W L=D−W
标准化拉普拉斯矩阵
标准化拉普拉斯矩阵有两种表示方法,一种基于随机游走(Random Walk)的标准化拉普拉斯矩阵
L
r
w
L{_{rw}}
Lrw和对称标准化拉普拉斯矩阵
L
s
y
m
L{_{sym}}
Lsym,定义如下:
L
r
w
=
D
−
1
L
L_{rw} = D^{-1} L
Lrw=D−1L
L
s
y
m
=
D
−
1
/
2
L
D
−
1
/
2
=
I
−
D
−
1
/
2
W
D
−
1
/
2
L_{s y m}=D^{-1 / 2} L D^{-1 / 2}=I-D^{-1 / 2} W D^{-1 / 2}
Lsym=D−1/2LD−1/2=I−D−1/2WD−1/2
拉普拉斯矩阵的性质
Laplacian矩阵L,有下面几个性质:
- (a) 对任意一个向量
f
∈
R
n
f \in R^n
f∈Rn ,都有下面的性质:
对于为标准化拉普拉斯矩阵有:
f T L f = 1 2 ∑ i , j = 1 n w i j ( f i − f j ) 2 f^{T} L f=\frac{1}{2} \sum_{i, j=1}^{n} w_{i j}\left(f_{i}-f_{j}\right)^{2} fTLf=21i,j=1∑nwij(fi−fj)2
对于这个性质的证明过程如下:
f T L f = f T D f − f T W f = ∑ i = 1 n d i f i 2 − ∑ i , j = 1 n f i f j w i j = 1 2 ( ∑ i = 1 n d i f i 2 − 2 ∑ i , j = 1 n f i f j w i j + ∑ j = 1 n d j f j 2 ) = 1 2 ∑ i , j = 1 n w i j ( f i − f j ) 2 \begin{aligned} f^{T} L f &=f^{T} D f-f^{T} W f=\sum_{i=1}^{n} d_{i} f_{i}^{2}-\sum_{i, j=1}^{n} f_{i} f_{j} w_{i j} \\ &=\frac{1}{2}\left(\sum_{i=1}^{n} d_{i} f_{i}^{2}-2 \sum_{i, j=1}^{n} f_{i} f_{j} w_{i j}+\sum_{j=1}^{n} d_{j} f_{j}^{2}\right)=\frac{1}{2} \sum_{i, j=1}^{n} w_{i j}\left(f_{i}-f_{j}\right)^{2} \end{aligned} fTLf=fTDf−fTWf=i=1∑ndifi2−i,j=1∑nfifjwij=21(i=1∑ndifi2−2i,j=1∑nfifjwij+j=1∑ndjfj2)=21i,j=1∑nwij(fi−fj)2
对于标准化拉普拉斯矩阵有:
f T L r w f = f T L s y m f = 1 2 ∑ i , j = 1 n w i j ( f i d i − f j d j ) 2 f^{T} L_{r w} f=f^{T} L_{s y m} f=\frac{1}{2} \sum_{i, j=1}^{n} w_{i j}\left(\frac{f_{i}}{\sqrt{d_{i}}}-\frac{f_{j}}{\sqrt{d_{j}}}\right)^{2} fTLrwf=fTLsymf=21i,j=1∑nwij(difi−djfj)2 - (b) L和
L
r
w
L_{rw}
Lrw是对称的和半正定的。
w和D矩阵都是对称矩阵,所以L是对称矩阵。由于权重 w i j ≥ 0 w_{ij} \geq 0 wij≥0,根据性质(a),所以 f T L f ≥ 0 f^{T} L f \geq 0 fTLf≥0, 即L为半正定矩阵。
谱聚类算法
- 计算相似性矩阵 S ∈ R n × n S\in R^{n \times n} S∈Rn×n,
- 计算度矩阵,从而计算未归一化的图拉普拉斯矩阵L
- 计算L的前k个特征向量 u 1 , . . . , u k u_1,...,u_k u1,...,uk
- 令 U ∈ R n × k U \in R^{n\times k} U∈Rn×k为以前k个特征向量 u 1 , . . . , u k u_1,...,u_k u1,...,uk为列向量构成的矩阵(前k个最小特征值构成的特征向量)
- 设 y i ∈ R k y_i \in R^k yi∈Rk是U的第 i i i行构成的向量
- 使用C-均值聚类方法将样本点 y i y_i yi,聚类称为k类 C 1 , C 2 , . . . , C k C_1, C_2,...,C_k C1,C2,...,Ck
- 输出,最终聚类为 A 1 , . . . , A k A_1,...,A_k A1,...,Ak,其中 A i = { j ∣ y j ∈ C i } A_i=\{j | y_j \in C_i\} Ai={j∣yj∈Ci}
谱聚类算法推导
聚类问题,可以被看成寻找图的一个划分,不同点集之间的边权重小,(意味着不同cut的点彼此不相似),而同一点集内的边权重较大,(同一个cut点彼此相似)
对于一个无向图G,每个子图的点集合为:
A
1
,
A
2
,
⋯
,
A
k
A_1, A_2, \cdots, A_k
A1,A2,⋯,Ak,定义图切分(graph cut)为:
c
u
t
(
A
1
,
A
2
,
⋯
,
A
k
)
=
1
2
∑
i
=
1
k
W
(
A
i
,
A
ˉ
i
)
cut(A_1, A_2, \cdots, A_k) = \frac{1}{2} \sum_{i=1}^{k} W\left(A_{i}, \bar{A}_{i}\right)
cut(A1,A2,⋯,Ak)=21i=1∑kW(Ai,Aˉi)
其中:任意两个子图点集的权重切为:
W
(
A
,
B
)
=
∑
i
∈
A
,
j
∈
B
w
i
j
W(A,B) = \sum_{i\in A,j\in B} w_{ij}
W(A,B)=∑i∈A,j∈Bwij
对于切图,还有另外两种方式,分别为RadioCut和Ncut
RadioCut切图中,不仅考虑使得不同组之间的权重最小化,也考虑了每个组中的样本点尽量多:
RatioCut
(
A
1
,
A
2
,
…
,
A
k
)
=
1
2
∑
i
=
1
k
W
(
A
i
,
A
ˉ
i
)
∣
A
i
∣
=
∑
i
=
1
k
cut
(
A
i
,
A
ˉ
i
)
∣
A
i
∣
\text { RatioCut }\left(A_{1}, A_{2}, \ldots, A_{k}\right)=\frac{1}{2} \sum_{i=1}^{k} \frac{W\left(A_{i}, \bar{A}_{i}\right)}{\left|A_{i}\right|}=\sum_{i=1}^{k} \frac{\operatorname{cut}\left(A_{i}, \bar{A}_{i}\right)}{\left|A_{i}\right|}
RatioCut (A1,A2,…,Ak)=21i=1∑k∣Ai∣W(Ai,Aˉi)=i=1∑k∣Ai∣cut(Ai,Aˉi)
Ncut在最小化损失函数外,还考虑了子图之间的权重大小。由于子图样本个数多,不代表权重就打,所以切图时基于权重也更加符合我们的目标。因此一般来说Ncut优于RadioCut,定义为:
RatioCut
(
A
1
,
A
2
,
…
,
A
k
)
=
1
2
∑
i
=
1
k
W
(
A
i
,
A
ˉ
i
)
v
o
l
(
A
i
)
=
∑
i
=
1
k
cut
(
A
i
,
A
ˉ
i
)
v
o
l
(
A
i
)
\text { RatioCut }\left(A_{1}, A_{2}, \ldots, A_{k}\right)=\frac{1}{2} \sum_{i=1}^{k} \frac{W\left(A_{i}, \bar{A}_{i}\right)}{vol (A_i)}=\sum_{i=1}^{k} \frac{\operatorname{cut}\left(A_{i}, \bar{A}_{i}\right)}{vol (A_i)}
RatioCut (A1,A2,…,Ak)=21i=1∑kvol(Ai)W(Ai,Aˉi)=i=1∑kvol(Ai)cut(Ai,Aˉi)
其中
v
o
l
(
A
i
)
=
∑
i
∈
A
d
i
vol (A_i) = \sum_ {i \in A} d_i
vol(Ai)=∑i∈Adi,表示
A
i
A_i
Ai中元素度的总和。
注意问题
-
谱聚类往往对相似型图及参数选择比较敏感,而现在还没有确定的理论或者方法作为指导。
-
一般来说,k近邻图可以比较好的连接不同尺度下的数据,通常作为首选;而参数选择应该使相似性图是连通的或者连通分量少
-
尽量选择归一化的图拉普拉斯
聚类没有标签,存在合理性问题。
参考:谱聚类博客介绍