谱聚类
聚类问题可以分为两种思路:
- Compactness,这类有 K-means,GMM 等,但是这类算法只能处理凸集,为了处理非凸的样本集,必须引入核技巧。
- Connectivity,这类以谱聚类为代表。
谱聚类是一种基于无向带权图的聚类方法。这个图用
G
=
(
V
,
E
)
G=(V,E)
G=(V,E) 表示,其中
V
=
{
1
,
2
,
⋯
,
N
}
V=\{1,2,\cdots,N\}
V={1,2,⋯,N},
E
=
{
w
i
j
}
E=\{w_{ij}\}
E={wij},这里
w
i
j
w_{ij}
wij 就是边的权重,这里权重取为相似度,
W
=
(
w
i
j
)
W=(w_{ij})
W=(wij) 是相似度矩阵,定义相似度(径向核):
w
i
j
=
k
(
x
i
,
x
j
)
=
exp
(
−
∣
∣
x
i
−
x
j
∣
∣
2
2
2
σ
2
)
,
(
i
,
j
)
∈
E
w
i
j
=
0
,
(
i
,
j
)
∉
E
w_{ij}=k(x_i,x_j)=\exp(-\frac{||x_i-x_j||_2^2}{2\sigma^2}),(i,j)\in E\\ w_{ij}=0,(i,j)\notin E
wij=k(xi,xj)=exp(−2σ2∣∣xi−xj∣∣22),(i,j)∈Ewij=0,(i,j)∈/E
下面定义图的分割,这种分割就相当于聚类的结果。定义
w
(
A
,
B
)
w(A,B)
w(A,B):
A
⊂
V
,
B
⊂
V
,
A
∩
B
=
∅
,
w
(
A
,
B
)
=
∑
i
∈
A
,
j
∈
B
w
i
j
A\sub V,B\sub V,A\cap B=\emptyset,w(A,B)=\sum\limits_{i\in A,j\in B}w_{ij}
A⊂V,B⊂V,A∩B=∅,w(A,B)=i∈A,j∈B∑wij
假设一共有
K
K
K 个类别,对这个图的分割
C
U
T
(
V
)
=
C
U
T
(
A
1
,
A
2
,
⋯
,
A
K
)
=
∑
k
=
1
K
w
(
A
k
,
A
k
‾
)
=
∑
k
=
1
K
[
w
(
A
k
,
V
)
−
w
(
A
k
,
A
k
)
]
CUT(V)=CUT(A_1,A_2,\cdots,A_K)=\sum\limits_{k=1}^Kw(A_k,\overline{A_k})=\sum\limits_{k=1}^K[w(A_k,V)-w(A_k,A_k)]
CUT(V)=CUT(A1,A2,⋯,AK)=k=1∑Kw(Ak,Ak)=k=1∑K[w(Ak,V)−w(Ak,Ak)]
于是,我们的目标就是 min A k C U T ( V ) \min\limits_{A_k}CUT(V) AkminCUT(V)。
为了平衡每一类内部的权重不同,我们做归一化的操作,定义每一个集合的度,首先,对单个节点的度定义:
d
i
=
∑
j
=
1
N
w
i
j
d_i=\sum\limits_{j=1}^Nw_{ij}
di=j=1∑Nwij
其次,每个集合:
Δ
k
=
d
e
g
r
e
e
(
A
k
)
=
∑
i
∈
A
k
d
i
\Delta_k=degree(A_k)=\sum\limits_{i\in A_k}d_i
Δk=degree(Ak)=i∈Ak∑di
于是:
N
(
C
U
T
)
=
∑
k
=
1
K
w
(
A
k
,
A
k
‾
)
∑
i
∈
A
k
d
i
N(CUT)=\sum\limits_{k=1}^K\frac{w(A_k,\overline{A_k})}{\sum\limits_{i\in A_k}d_i}
N(CUT)=k=1∑Ki∈Ak∑diw(Ak,Ak)
所以目标函数就是最小化这个式子。
谱聚类的模型就是:
{
A
^
k
}
k
=
1
K
=
a
r
g
m
i
n
A
k
N
(
C
U
T
)
\{\hat{A}_k\}_{k=1}^K=\mathop{argmin}_{A_k}N(CUT)
{A^k}k=1K=argminAkN(CUT)
引入指示向量:
KaTeX parse error: No such environment: align at position 16: \left\{ \begin{̲a̲l̲i̲g̲n̲}̲y_i\in \{0,1\}^…
其中,
y
i
j
y_{ij}
yij 表示第
i
i
i 个样本属于
j
j
j 个类别,记:
Y
=
(
y
1
,
y
2
,
⋯
,
y
N
)
T
Y=(y_1,y_2,\cdots,y_N)^T
Y=(y1,y2,⋯,yN)T。所以:
Y
^
=
a
r
g
m
i
n
Y
N
(
C
U
T
)
\hat{Y}=\mathop{argmin}_YN(CUT)
Y^=argminYN(CUT)
将
N
(
C
U
T
)
N(CUT)
N(CUT) 写成对角矩阵的形式,于是:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲N(CUT)&=Trace[d…
我们已经知道
Y
,
w
Y,w
Y,w 这两个矩阵,我们希望求得
O
,
P
O,P
O,P。
由于:
Y
T
Y
=
∑
i
=
1
N
y
i
y
i
T
Y^TY=\sum\limits_{i=1}^Ny_iy_i^T
YTY=i=1∑NyiyiT
对于
y
i
y
i
T
y_iy_i^T
yiyiT,只在对角线上的
k
×
k
k\times k
k×k 处为 1,所以:
Y
T
Y
=
d
i
a
g
(
N
1
,
N
2
,
⋯
,
N
K
)
Y^TY=diag(N_1,N_2,\cdots,N_K)
YTY=diag(N1,N2,⋯,NK)
其中,
N
i
N_i
Ni 表示有
N
i
N_i
Ni 个样本属于
i
i
i,即
N
k
=
∑
k
∈
A
k
1
N_k=\sum\limits_{k\in A_k}1
Nk=k∈Ak∑1。
引入对角矩阵,根据
d
i
d_i
di 的定义,
D
=
d
i
a
g
(
d
1
,
d
2
,
⋯
,
d
N
)
=
d
i
a
g
(
w
N
N
I
N
1
)
D=diag(d_1,d_2,\cdots,d_N)=diag(w_{NN}\mathbb{I}_{N1})
D=diag(d1,d2,⋯,dN)=diag(wNNIN1),于是:
P
=
Y
T
D
Y
P=Y^TDY
P=YTDY
对另一项
O
=
d
i
a
g
(
w
(
A
1
,
A
1
‾
)
,
w
(
A
2
,
A
2
‾
)
,
⋯
,
w
(
A
K
,
A
K
‾
)
O=diag(w(A_1,\overline{A_1}),w(A_2,\overline{A_2}),\cdots,w(A_K,\overline{A_K})
O=diag(w(A1,A1),w(A2,A2),⋯,w(AK,AK):
O
=
d
i
a
g
(
w
(
A
i
,
V
)
)
−
d
i
a
g
(
w
(
A
i
,
A
i
)
)
=
d
i
a
g
(
∑
j
∈
A
i
d
j
)
−
d
i
a
g
(
w
(
A
i
,
A
i
)
)
O=diag(w(A_i,V))-diag(w(A_i,A_i))=diag(\sum\limits_{j\in A_i}d_j)-diag(w(A_i,A_i))
O=diag(w(Ai,V))−diag(w(Ai,Ai))=diag(j∈Ai∑dj)−diag(w(Ai,Ai))
其中,第一项已知,第二项可以写成
Y
T
w
Y
Y^TwY
YTwY,这是由于:
Y
T
w
Y
=
∑
i
=
1
N
∑
j
=
1
N
y
i
y
j
T
w
i
j
Y^TwY=\sum\limits_{i=1}^N\sum\limits_{j=1}^Ny_iy_j^Tw_{ij}
YTwY=i=1∑Nj=1∑NyiyjTwij
于是这个矩阵的第
l
m
lm
lm 项可以写为:
∑
i
∈
A
l
,
j
∈
A
m
w
i
j
\sum\limits_{i\in A_l,j\in A_m}w_{ij}
i∈Al,j∈Am∑wij
这个矩阵的对角线上的项和
w
(
A
i
,
A
i
)
w(A_i,A_i)
w(Ai,Ai) 相同,所以取迹后的取值不会变化。
所以:
N
(
C
U
T
)
=
T
r
a
c
e
[
(
Y
T
(
D
−
w
)
)
Y
)
⋅
(
Y
T
D
Y
)
−
1
]
N(CUT)=Trace[(Y^T(D-w))Y)\cdot(Y^TDY)^{-1}]
N(CUT)=Trace[(YT(D−w))Y)⋅(YTDY)−1]
其中,
L
=
D
−
w
L=D-w
L=D−w 叫做拉普拉斯矩阵。