谱聚类算法(Spectral Clustering)
谱聚类算法原理:###
1.谱聚类是广泛使用的聚类算法,比起传统的K-means算法,谱聚类算法对数据分布的适用性更强,聚类效果也很优秀,计算量小,实现起来也不复杂。
具体原理
2.谱聚类是从图论中演化出来的算法,后来在聚类中得到广泛的应用。主要思想是把所有的数据看作空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低,反之,距离较近的两个点之间的边权重值高,通过对所有数据点组成的图进行切图,让切图之后,不同子图间的边权重尽可能低,而子图内的边权重则尽可能高,从而达到聚类的目的。
原理咋看很简单,但具体需要完全理解图伦中的无向图,线性代数,矩阵分析。
谱聚类基础一:无向权重图
图的概念是:对于一个图G,一般用点的集合V和边的集合E来描述,即为G(V,E)。其中V为数据集的所有的点(
v
1
v_1
v1,
v
2
v_2
v2,
v
3
v_3
v3,
v
n
v_n
vn)。 对于任意的两个点,可以有边连接,也可以无边连接,定义权重
W
i
j
W_{ij}
Wij 为
v
i
v_i
vi 和
v
j
v_j
vj之间的权重,由于这里我们是无向图,所以,
W
i
j
W_{ij}
Wij =
W
j
i
W_{ji}
Wji。对于无边的两个点,
W
i
j
W_{ij}
Wij = 0 ,对于有边的两个点,
W
i
j
W_{ij}
Wij > 0.
对于图中的任意一个点
V
i
V_i
Vi,它的度
d
i
d_i
di 定义为 和它的所有连接的边的权重之和,即:
d
i
=
∑
j
=
1
n
W
i
j
d_i = \sum_{j = 1}^n W_{ij}
di=j=1∑nWij
【PS:这里我们也需了解邻接矩阵W,第i行的第j个值对应我们的权重值
W
i
j
W_{ij}
Wij】
利用每个点度的定义,我们得到一个nxn的度矩阵D(degree matrix),D是一个对角矩阵,只有主对角线有值,定义如下:
[
d
1
.
.
.
.
.
.
.
.
.
d
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
d
n
]
(3)
\left[ \begin{matrix} d_1 & ... & ... \\ ... & d_2 & ... \\ ... & ... & ... \\ ... & ... & d_n \end{matrix} \right] \tag{3}
⎣⎢⎢⎡d1............d2...............dn⎦⎥⎥⎤(3)
D
i
i
D_{ii}
Dii = degree of
X
i
X_i
Xi =
∑
j
X
i
j
\sum_{j} X_{ij}
∑jXij, 特别留意的是data的convolution,自连线也算一个degree。
例子:比如有三个点
X
1
X_1
X1,
X
2
X_2
X2,
X
3
X_3
X3。
X
1
X_1
X1与
X
2
X_2
X2相连有边,
X
3
X_3
X3单独,无任何相连边。因此,我们得知度矩阵D为:
[
2
0
0
0
2
0
0
0
1
]
(3)
\left[ \begin{matrix} 2 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 1 \end{matrix} \right] \tag{3}
⎣⎡200020001⎦⎤(3)
D
11
D_{11}
D11 = 1,即代表
X
1
X_1
X1有2条连线,
X
1
X_1
X1自连线一条,
X
1
X_1
X1与
X
2
X_2
X2相连有边为一条,总共为2。同理来计算
D
22
D_{22}
D22,
D
33
D_{33}
D33。
Adjacency matrix-邻矩阵A
意思是点与点之间是否相连,相连为1,不相连为0。如果有权重值的话,那么就不是1了而是相对应的权重值,也就是上面所说的矩阵矩阵W。
所以上例子(暂无权重值)的邻矩阵A为:
[
1
1
0
1
1
0
0
0
1
]
(3)
\left[ \begin{matrix} 1 & 1 & 0 \\ 1 & 1 & 0 \\ 0 & 0 & 1 \end{matrix} \right] \tag{3}
⎣⎡110110001⎦⎤(3)
【特别注意的是 graph laplation: L= D - A】
谱聚类基础二:相似矩阵
在基础一的时候,我们提到邻接矩阵W,它是任意两点之间的权重值
W
i
j
W_{ij}
Wij组成的矩阵,通常我们可以自己输入权重,但是谱聚类中,我们只有数据点的定义,没有直接给出邻接矩阵W,那么如何得到邻接矩阵W呢?
基本思想是距离比较远的两个点的权重值低,距离近的权重值高,所以,我们可以通过样本点的距离度量的相似矩阵S 来获得邻接矩阵W。
构建邻接矩阵W的方法有三种: ε \varepsilon ε-临近法,K邻近法和全连接法
-
ε
\varepsilon
ε-临近法
对于 ε \varepsilon ε-临近法,我们设置一个距离阀值 ε \varepsilon ε,首先用欧式距离 S i j S_{ij} Sijd度量任意两点的 X i X_i Xi, X j X_j Xj的距离,然后比较 S i j S_{ij} Sij和阀值 ε \varepsilon ε的大小,来定义邻接矩阵W:即
W i j = { ε S i j ≤ ε 0 S i j > ε W_{ij} = \lbrace_{\varepsilon ~~~S_{ij} \leq \varepsilon}^{0~~~S_{ij} > \varepsilon} Wij={ε Sij≤ε0 Sij>ε
由公式可知,两点的权重不是 ε \varepsilon ε就是0,不精准,因为实际应用中,很少使用 ε \varepsilon ε-临近法。 - K邻近法-略
- 全连接法-最常见的方法来建立邻接矩阵W
所有点之间的权重值大于0,为此称之为全连接法。可以选择不同的核函数来定义边权重,常用的是多项式核函数,高斯函数,Sigmoid核函数,其中最常见的是高斯核函数RBF,此时,邻接矩阵W和相似矩阵S一致相同,公式如下:
W i j = S i j = e x p ( − ∣ ∣ x i − x j ∣ ∣ 2 2 σ 2 ) W_{ij} = S_{ij} = exp (- \frac{||x_i - x_j||^2}{2\sigma^2}) Wij=Sij=exp(−2σ2∣∣xi−xj∣∣2)
谱聚类基础三:拉普拉斯矩阵Graph Laplacians-矩阵L
L = D - A = D - W
Graph Laplacians矩阵L的性质如下:
- 矩阵L是对称矩阵,这可以从D和W都是对称矩阵推理出
- 由于矩阵L是对称矩阵,它所有的特征值为实数
- 对于任意的向量f,我们有:
f T L f = 1 2 ∑ i , j = 1 n w i j ( f i − f j ) 2 f ^TLf = \frac{1}{2} \sum_{i,j=1}^nw_{ij}(f_i-f_j)^2 fTLf=21i,j=1∑nwij(fi−fj)2
【自己推理】
谱聚类基础四:无向图切图
对于无向图G的切图,我们的目标是将图G(V,E)切成互相没有连接的K个子图。每个子图的点集合即为:
A
1
A_1
A1,
A
2
A_2
A2,
A
k
A_k
Ak,满足
A
i
A_i
Ai
⋂
\bigcap
⋂
A
j
A_j
Aj =
∅
\emptyset
∅, 且
A
1
∪
A
2
∪
A
3
∪
.
.
.
∪
A
k
=
V
A_1\cup A_2 \cup A_3 \cup...\cup A_k=V
A1∪A2∪A3∪...∪Ak=V
现在就开始讨论如何切图才是能实现我们的目标:使得子图内的点权重和最高,子图之间的点权重之和低。