引言 :在多变量统计和数据聚类中,谱聚类(Spectral Clustering) 技术利用数据的相似矩阵 的谱(特征值) 进行降维。它将数据看成空间中的点,点对之间有边相连,距离越远的点对其边权值越小,距离越近的点对其边权值越大。它将聚类问题转化为切图问题,使得切图后的总代价最小。即子图内点对之间边权值较大,子图间边权值较小 。得到切图后子图的个数即为聚类的个数。最后本文力求用推理而非演绎 的方式以加深大家对谱聚类的理解。
申明:本文严禁转载!
带着问题去阅读:
为什么叫谱聚类?谱的含义是什么?(见引言,矩阵的谱 表示其特征值的集合 )
谱聚类如何将聚类问题转化为图切割问题,常用的图构造 方法是什么?
为什么要引入Laplacian 矩阵?它有哪些性质?
为什么要取Laplacian 矩阵第
2
\textbf{2}
2 小 或前
k
k
k 小个 特征值对应的特征向量?其特征值
λ
\lambda
λ 有什么意义?它和瑞利商
(Rayleigh Quotient)
\text{(Rayleigh Quotient)}
(Rayleigh Quotient) 有什么关系?前
k
k
k 小中的
k
k
k 一定和聚类个数
c
c
c 相等吗?
为什么Laplacian 矩阵0特征值 的数量就是连通子图的个数?
谱聚类如何将一个难求解的离散优化问题 松弛为易求解的连续优化问题 ?
为什么最后还要对特征向量进行k-means 聚类?(需要将连续值离散化)
原目标函数聚类效果已经不错,为什么还要对拉普拉斯矩阵
L
L
L 进行归一化 ,有几种归一化方法?分别又是什么?(
L
r
w
L_{rw}
L r w 和
L
s
y
m
L_{sym}
L s y m )
对于三种图拉普拉斯矩阵
L
,
L
r
w
L,L_{rw}
L , L r w 和
L
s
y
m
L_{sym}
L s y m ,它们的适用场景是什么?
我们发现在吴恩达(
Ng
\text{Ng}
Ng )等人提出的算法中,在构造了
L
s
y
m
L_{sym}
L s y m 归一化矩阵后,又对前
k
k
k 个特征向量构成的矩阵
U
∈
R
n
×
k
U\in R^{n\times k}
U ∈ R n × k 按行 再次进行了归一化 ,这样做是否多此一举?
Ng
\text{Ng}
Ng 等人的目的何在?
通过对谱聚类的学习,有哪些我们可以借鉴的思想可以用于我们的科研工作当中?
一、问题抽象
假设有
n
n
n 个实数样本数据如下,每个样本有
d
d
d 维,目标是要聚
c
c
c 个类,并且数据分布并非云团,如何做?
X
=
{
x
1
d
,
x
2
d
,
.
.
.
,
x
n
d
}
T
,
X
∈
R
n
×
d
X=\{x_1^d,x_2^d,...,x_n^d\}^T,X\in R^{n\times d}
X = { x 1 d , x 2 d , . . . , x n d } T , X ∈ R n × d
将数据点抽象为无向带权图(图构造)
在图论中我们常用邻接矩阵W 表示图(无向图是为了保证邻接矩阵是对称矩阵 ),因此我们只需按某个准则 来计算 数据点对之间的距离 即可获得数据点的邻接矩阵 。因此引出以下常用
3
3
3 种准则来构造图。(对于3个数据点的邻接矩阵如下)
W
=
[
w
11
w
12
w
13
w
21
w
22
w
23
w
31
w
32
w
33
]
\begin{gathered} W=\begin{bmatrix} w_{11} & w_{12} & w_{13}\\ w_{21} & w_{22} & w_{23}\\ w_{31} & w_{32} & w_{33}\\ \end{bmatrix} \end{gathered}
W = ⎣ ⎡ w 1 1 w 2 1 w 3 1 w 1 2 w 2 2 w 3 2 w 1 3 w 2 3 w 3 3 ⎦ ⎤
1.1 全连接法
所有点对之间的边权值均为正数(>0) ,采用核函数 作为准则来计算点对之间的距离 (也称为相似度 或亲和度 ),进而直接得到实对称 相似度矩阵
W
=
W
T
W=W^T
W = W T ,常用高斯核 函数。令
s
i
j
s_{ij}
s i j 表示两点之间的边权重(也称两点相似度),则高斯核计算公式如下
w
i
j
=
s
i
j
=
s
(
x
i
,
x
j
)
=
e
−
∣
∣
x
i
−
x
j
∣
∣
2
2
2
σ
2
(1.1)
w_{ij} = s_{ij}= s(x_i,x_j)=e^{-\frac{||x_i-x_j||_2^2}{2\sigma^2}} \tag{1.1}
w i j = s i j = s ( x i , x j ) = e − 2 σ 2 ∣ ∣ x i − x j ∣ ∣ 2 2 ( 1 . 1 ) 其中参数
σ
\sigma
σ 控制着点对
x
i
x_{i}
x i 与
x
j
x_{j}
x j 之间的度量,
σ
\sigma
σ 越大 ,两点度量后的差距越小 ,聚类精度也越低;
σ
\sigma
σ 越小,两点度量后的差距越大。
1.2
k
k
k -近邻法
计算点对之间的欧氏距离,通过给定参数
k
k
k ,选取距离当前点最近的
k
k
k 个点为邻居(常用高斯核 计算距离),令其余点到该点距离为0。
w
i
j
=
{
e
−
∣
∣
x
i
−
x
j
∣
∣
2
2
2
σ
2
i
f
x
i
∈
k
n
n
(
x
j
)
0
o
t
h
e
r
w
i
s
e
(
可
能
存
在
w
i
j
≠
w
j
i
)
(1.2)
w_{ij} = \begin{cases} e^{-\frac{||x_i-x_j||_2^2}{2\sigma^2}}&if\; x_i\in knn(x_j)\\ 0& \ otherwise \end{cases} \quad (可能存在w_{ij} \not= w_{ji}) \tag{1.2}
w i j = ⎩ ⎨ ⎧ e − 2 σ 2 ∣ ∣ x i − x j ∣ ∣ 2 2 0 i f x i ∈ k n n ( x j ) o t h e r w i s e ( 可 能 存 在 w i j = w j i ) ( 1 . 2 )
然而,这样做有一个显著的问题,数据从无向图变成了有向图 。即你是我的邻居,但我不一定是你的邻居 (即
w
i
j
≠
w
j
i
w_{ij}\not= w_{ji}
w i j = w j i )。为了保证相似度矩阵的对称性 ,论文[1]给出了两种解决方法将有向图变成无向图。
W
=
W
+
W
T
2
(1.5)
W = \frac{W + W^T}{2} \tag{1.5}
W = 2 W + W T ( 1 . 5 )
1.3
ϵ
\epsilon
ϵ -近邻法
给定一个阈值
ϵ
\epsilon
ϵ ,如果两点距离大于这个阈值则认为这两点无边相连,否则这两点间的边权值为
ϵ
\epsilon
ϵ 。具体做法如下:
w
i
j
=
w
j
i
=
{
ϵ
i
f
s
(
x
i
,
x
j
)
<
ϵ
0
o
t
h
e
r
w
i
s
e
(1.6)
w_{ij} =w_{ji}= \begin{cases} \epsilon&if\; s(x_i,x_j)<\epsilon\\ 0& \ otherwise \end{cases} \tag{1.6}
w i j = w j i = { ϵ 0 i f s ( x i , x j ) < ϵ o t h e r w i s e ( 1 . 6 ) 该方法得到的矩阵可视为无向无权图 ,因此精度不如其他方法。
二、目标函数的转化
经过问题抽象后,我们将原始数据按k近邻 法构造出如下拓扑图。现在我们可以将聚
c
c
c 个类的问题转化 为将无向图切割为
c
c
c 个子图的问题。
由上图可知,切分的方法有很多,我们该如何切出
c
c
c 个子图从而达到我们想要聚类的效果呢?很容易想到一个准则,即不同切图方法需要付出不同的代价 ,当我们将距离较近 的看似为同一个类的两个点切分为不同类时,需要付出较大代价 ;当我们将距离较远 的两个点切分到不同子图时,需要付出较小代价 。因此我们可以定义一个代价函数 来作为我们初步的目标函数。
2.1 初始目标函数的形成(最小割
Min Cut
\text{Min Cut}
Min Cut 方法)
我们令无向图
G
=
<
V
,
E
>
G=<V,E>
G = < V , E > ,其中
V
∈
R
n
×
d
V\in R^{n\times d}
V ∈ R n × d 是
n
n
n 个
d
d
d 维顶点的集合,
v
i
v_i
v i 表示第
i
i
i 个顶点。
E
E
E 是边的集合,
e
i
j
e_{ij}
e i j 表示顶点
v
i
v_i
v i 到点
v
j
v_j
v j 的边。假设我们要将所有顶点
V
V
V 切分成
c
c
c 个子图,则令
A
i
A_i
A i 表示第
i
i
i 个子图所包含顶点的集合(称为图
G
G
G 的一个分割),
A
‾
i
\overline A_i
A i 表示第
i
i
i 个子图的补图 (其中
i
=
1
,
2
,
.
.
.
,
c
i=1,2,...,c
i = 1 , 2 , . . . , c ,所以
V
=
A
1
∪
A
2
∪
.
.
.
∪
A
c
V=A_1\cup A_2 \cup...\cup A_c
V = A 1 ∪ A 2 ∪ . . . ∪ A c )。现在我们令
C
u
t
(
V
)
Cut(V)
C u t ( V ) 来表示切图的代价,则
C
u
t
(
V
)
=
C
u
t
(
A
1
,
A
2
,
.
.
.
,
A
c
)
(2.1)
Cut(V)=Cut(A_1,A_2,...,A_c) \tag{2.1}
C u t ( V ) = C u t ( A 1 , A 2 , . . . , A c ) ( 2 . 1 ) 这是一个典型的
o
n
e
vs
a
l
l
one\; \text{vs} \;all
o n e vs a l l 问题,由于我们不知道
A
i
A_i
A i 中都有哪些顶点,大的分类问题我们不会做,我们可以先找最简单的
c
a
s
e
case
c a s e (即二分类 )来做,然后再将多个小问题的解合并 为一个大问题的完整解,显然该问题是可分且子问题的解也可合并,所以利用分治思想 我们可将一个多分类问题 转化为多个二分类问题 。
方便起见,我们用
W
(
A
i
,
A
‾
i
)
W(A_i,\overline A_i)
W ( A i , A i ) 来表示子图
A
i
A_i
A i 和其补图
A
‾
i
\overline A_i
A i 被切割后的代价,而二分类 中两个子图的分割代价可用连接两个子图的所有边的权值之和 来表示(前面提到边权值越大两点越近,反之越远)。因此进一步得到如下式子(左乘
1
/
2
1/2
1 / 2 是因为对称性
w
i
j
=
w
j
i
w_{ij}=w_{ji}
w i j = w j i ,相当于算了两遍):
C
u
t
(
V
)
=
C
u
t
(
A
1
,
A
2
,
.
.
.
,
A
c
)
=
∑
k
=
1
c
C
u
t
(
A
k
,
A
‾
k
)
=
1
2
∑
k
=
1
c
W
(
A
k
,
A
‾
k
)
=
1
2
∑
v
i
∈
A
k
,
v
j
∈
A
‾
k
,
e
i
j
∈
E
w
i
j
(
i
,
j
=
1
,
2
,
.
.
.
,
n
)
(2.2)
Cut(V)=Cut(A_1,A_2,...,A_c)=\sum_{k=1}^cCut(A_k,\overline A_k)=\frac{1}{2} \sum_{k=1}^c W(A_k,\overline A_k)=\frac{1}{2} \sum_{v_i\in A_k,v_j\in \overline A_k,e_{ij}\in E}w_{ij} \quad (i,j=1,2,...,n) \tag{2.2}
C u t ( V ) = C u t ( A 1 , A 2 , . . . , A c ) = k = 1 ∑ c C u t ( A k , A k ) = 2 1 k = 1 ∑ c W ( A k , A k ) = 2 1 v i ∈ A k , v j ∈ A k , e i j ∈ E ∑ w i j ( i , j = 1 , 2 , . . . , n ) ( 2 . 2 ) 因此,我们可以进一步得到初步离散优化问题 ,即最小割目标函数:
min
C
u
t
(
V
)
⇒
min
∑
v
i
∈
A
k
,
v
j
∈
A
‾
k
,
e
i
j
∈
E
w
i
j
(2.3)
\min \;\; Cut(V) \Rightarrow \min \;\;\sum_{v_i\in A_k,v_j\in \overline A_k,e_{ij}\in E}w_{ij} \tag{2.3}
min C u t ( V ) ⇒ min v i ∈ A k , v j ∈ A k , e i j ∈ E ∑ w i j ( 2 . 3 )
2.2 细化初始目标函数之引入指示向量(
indicator vector
\text{indicator vector}
indicator vector )
得到最小割目标函数后,我们发现其约束
v
i
∈
A
k
,
v
j
∈
A
‾
k
,
e
i
j
∈
E
v_i\in A_k,v_j\in \overline A_k,e_{ij}\in E
v i ∈ A k , v j ∈ A k , e i j ∈ E 过于笼统模糊 ,难以求解。因此,我们需要定性地引入指示向量 来细化目标函数 。在此我们先避开聚多类问题,从最简单的二聚类问题开始讨论,再逐步归纳到多聚类问题。
2.2.1 先讨论二聚类问题(
c
=
2
c=2
c = 2 )
对于聚二类问题,我们不再需要
A
i
A_i
A i ,仅用
A
A
A 足以表示
G
G
G 的一个分割,另一个分割用
A
‾
\overline A
A 表示。因此原目标函数为
min
C
u
t
(
V
)
⇒
min
C
u
t
(
A
,
A
‾
)
⇒
min
∑
v
i
∈
A
,
v
j
∈
A
‾
,
e
i
j
∈
E
w
i
j
(2.4)
\min \;\; Cut(V) \Rightarrow \min \;\; Cut(A,\overline A) \Rightarrow \min \;\;\sum_{v_i\in A,v_j\in \overline A,e_{ij}\in E}w_{ij} \tag{2.4}
min C u t ( V ) ⇒ min C u t ( A , A ) ⇒ min v i ∈ A , v j ∈ A , e i j ∈ E ∑ w i j ( 2 . 4 )
① 目标函数的展开
对目标函数观察后我们发现,第三个约束
e
i
j
∈
E
e_{ij}\in E
e i j ∈ E 很好处理,如在构图方法中选择
k
k
k 近邻 法,使得点对之间有边相连 时
w
i
j
>
0
w_{ij}>0
w i j > 0 ,无边相连 时
w
i
j
=
0
w_{ij}=0
w i j = 0 ,因此选择
k
k
k 近邻 法可直接去除该约束。
对于剩下的两个约束
v
i
∈
A
,
v
j
∈
A
‾
v_i\in A,v_j\in \overline A
v i ∈ A , v j ∈ A ,我们定义指示向量
f
=
(
f
1
,
f
2
,
.
.
.
,
f
n
)
T
∈
N
n
f=(f_1,f_2,...,f_n)^T \in N^n
f = ( f 1 , f 2 , . . . , f n ) T ∈ N n (注:此处的
f
i
f_i
f i 是一个布尔值而不是向量)并满足如下条件:
f
i
=
{
1
i
f
v
i
∈
A
0
i
f
v
i
∈
A
‾
(2.5)
f_i = \begin{cases} 1 & if \; v_i \in A \\ 0 & if \; v_i \in \overline A \tag{2.5} \end{cases}
f i = { 1 0 i f v i ∈ A i f v i ∈ A ( 2 . 5 ) 这样的指示向量在论文[1]中被称为理想型指示向量(ideal indicator vector) 。假设每个样本点以概率为
1
1
1 属于某个类,不存在某个样本属于多个类的情况。我们的目的是,当满足约束
v
i
∈
A
,
v
j
∈
A
‾
v_i\in A,v_j\in \overline A
v i ∈ A , v j ∈ A 时
w
i
j
w_{ij}
w i j 有值,否则不对其进行求和。因此可以借助指示向量 将目标函数细化如下:
min
C
u
t
(
A
,
A
‾
)
⇔
min
1
2
∑
v
i
∈
A
,
v
j
∈
A
‾
,
e
i
j
∈
E
w
i
j
⇔
min
1
2
∑
i
=
1
n
∑
j
=
1
n
w
i
j
(
f
i
−
f
j
)
2
\min \;\; Cut(A,\overline A) \Leftrightarrow \min \;\; \frac{1}{2} \sum_{v_i\in A,v_j\in \overline A,e_{ij}\in E}w_{ij} \Leftrightarrow \min \;\; \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n w_{ij}(f_i-f_j)^2
min C u t ( A , A ) ⇔ min 2 1 v i ∈ A , v j ∈ A , e i j ∈ E ∑ w i j ⇔ min 2 1 i = 1 ∑ n j = 1 ∑ n w i j ( f i − f j ) 2 现在先不着急求解目标函数,我们展开
w
i
j
(
f
i
−
f
j
)
2
w_{ij}(f_i-f_j)^2
w i j ( f i − f j ) 2 二次项 如下:
1
2
∑
i
=
1
n
∑
j
=
1
n
w
i
j
(
f
i
−
f
j
)
2
=
1
2
∑
i
=
1
n
∑
j
=
1
n
(
w
i
j
f
i
2
−
2
f
i
f
j
w
i
j
+
w
i
j
f
j
2
)
(2.6)
\frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n w_{ij}(f_i-f_j)^2 = \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n (w_{ij}f_i^2 -2f_if_jw_{ij}+w_{ij}f_j^2) \tag{2.6}
2 1 i = 1 ∑ n j = 1 ∑ n w i j ( f i − f j ) 2 = 2 1 i = 1 ∑ n j = 1 ∑ n ( w i j f i 2 − 2 f i f j w i j + w i j f j 2 ) ( 2 . 6 )
② 非标准化
Laplacian
\text{Laplacian}
Laplacian 矩阵的引入
已知在图论中,一个无向图
G
G
G 中第
i
i
i 个顶点的(degree)度
d
i
d_i
d i 表示如下:
d
i
=
∑
j
=
1
n
w
i
j
(2.7)
d_i = \sum_{j=1}^n w_{ij} \tag{2.7}
d i = j = 1 ∑ n w i j ( 2 . 7 ) 因此上式可以继续展开如下,看到加权求和 我们可以快速想到两向量的点积 :
1
2
∑
i
=
1
n
∑
j
=
1
n
w
i
j
(
f
i
−
f
j
)
2
=
1
2
∑
i
=
1
n
∑
j
=
1
n
(
w
i
j
f
i
2
−
2
f
i
f
j
w
i
j
+
w
i
j
f
j
2
)
=
1
2
(
∑
i
=
1
n
d
i
f
i
2
−
∑
i
,
j
=
1
n
2
f
i
f
j
w
i
j
+
∑
j
=
1
n
d
j
f
j
2
)
=
1
2
(
2
∑
i
=
1
n
d
i
f
i
2
−
2
∑
i
,
j
=
1
n
f
i
f
j
w
i
j
)
=
∑
i
=
1
n
d
i
f
i
2
−
∑
i
,
j
=
1
n
f
i
f
j
w
i
j
=
∑
i
=
1
n
f
i
d
i
f
i
−
∑
i
,
j
=
1
n
f
i
w
i
j
f
j
=
f
T
D
f
−
f
T
W
f
=
f
T
L
f
(2.8)
\begin{aligned} \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n w_{ij}(f_i-f_j)^2 & =\frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n (w_{ij}f_i^2 -2f_if_jw_{ij}+w_{ij}f_j^2) \\ & = \frac{1}{2} (\sum_{i=1}^n d_{i}f_i^2 - \sum_{i,j=1}^n 2f_if_jw_{ij}+\sum_{j=1}^n d_{j}f_j^2) \\ & =\frac{1}{2} (2\sum_{i=1}^n d_{i}f_i^2- 2\sum_{i,j=1}^n f_if_jw_{ij}) \\ & =\sum_{i=1}^n d_{i}f_i^2- \sum_{i,j=1}^n f_if_jw_{ij} = \sum_{i=1}^n f_id_{i}f_i- \sum_{i,j=1}^n f_iw_{ij}f_j \\ & =f^TDf-f^TWf \\ & =f^TLf \tag{2.8} \end{aligned}
2 1 i = 1 ∑ n j = 1 ∑ n w i j ( f i − f j ) 2 = 2 1 i = 1 ∑ n j = 1 ∑ n ( w i j f i 2 − 2 f i f j w i j + w i j f j 2 ) = 2 1 ( i = 1 ∑ n d i f i 2 − i , j = 1 ∑ n 2 f i f j w i j + j = 1 ∑ n d j f j 2 ) = 2 1 ( 2 i = 1 ∑ n d i f i 2 − 2 i , j = 1 ∑ n f i f j w i j ) = i = 1 ∑ n d i f i 2 − i , j = 1 ∑ n f i f j w i j = i = 1 ∑ n f i d i f i − i , j = 1 ∑ n f i w i j f j = f T D f − f T W f = f T L f ( 2 . 8 ) 其中,
D
D
D 为度矩阵,
W
W
W 为邻接矩阵(相似矩阵),而
L
=
D
−
W
L=D-W
L = D − W 为Laplacian 矩阵。没想到从一个二次项
w
i
j
(
f
i
−
f
j
)
2
w_{ij}(f_i-f_j)^2
w i j ( f i − f j ) 2 目标函数经过展开可以得到拉普拉斯矩阵 。因此,原目标函数再次等价于:
arg min
A
⊂
V
C
u
t
(
V
)
⇔
arg min
f
i
∈
N
n
1
2
∑
i
=
1
n
∑
j
=
1
n
w
i
j
(
f
i
−
f
j
)
2
⇔
arg min
f
i
∈
N
n
f
T
L
f
s
.
t
f
i
as defined in Eq. (2.5)
\begin{aligned} \argmin_{A \subset V} \;\; Cut(V) \Leftrightarrow & \argmin_{f_i\in N^n} \;\; \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n w_{ij}(f_i-f_j)^2 \Leftrightarrow & \argmin_{f_i\in N^n} \;\; f^TLf \\ & s.t \;\;f_i \; \text{as defined in Eq. (2.5)} \\ \end{aligned}
A ⊂ V a r g m i n C u t ( V ) ⇔ f i ∈ N n a r g m i n 2 1 i = 1 ∑ n j = 1 ∑ n w i j ( f i − f j ) 2 ⇔ s . t f i as defined in Eq. (2.5) f i ∈ N n a r g m i n f T L f 现在,我们通过引入布尔指示向量 将一个抽象的切割函数
C
u
t
(
V
)
Cut(V)
C u t ( V ) 转化为具体可求解的
f
T
L
f
f^TLf
f T L f 。但是我们通过约束
(
2.5
)
(2.5)
( 2 . 5 ) 发现这是一个离散 优化函数,无法 对其求导 。
不过,最小割问题已经有确定解法,只是这不是我们在此讨论的重点,最小割目标函数在谱聚类问题中的定义本身存在偏离,其分割结果往往更倾向于将所连边最少且边权值较低 的孤立点 分割出来。因此需要继续改进,具体如何改进我们将在2.3章节详细讨论。我们在此之所以对最小割目标函数的转换讨论这么详细是因为这个思想在后面会用到。
2.2.2 再回到多聚类问题(
c
c
c 取任意值)
讨论完二聚类 的简单问题,我们再来归纳 到多聚类 问题就容易多了。对于多聚类问题,我们要聚
c
c
c 个类(
k
=
1
,
2
,
.
.
.
,
c
k=1,2,...,c
k = 1 , 2 , . . . , c ),因此我们仅仅需要将原来一个指示向量扩展为
c
c
c 个指示向量组合成的指示矩阵
H
H
H 即可,其余步骤相似。
指示向量扩展到指示矩阵
对于多聚类问题,我们依然定义指示向量 ,只需要最后把
c
c
c 个指示向量组合 成一个指示矩阵 即可。
我们定义指示向量
h
k
=
(
h
(
1
,
k
)
,
h
(
2
,
k
)
,
.
.
.
,
h
(
n
,
k
)
)
T
∈
N
n
×
1
h_{k}=(h_{(1,k)},h_{(2,k)},...,h_{(n,k)})^T \in N^{n\times 1}
h k = ( h ( 1 , k ) , h ( 2 , k ) , . . . , h ( n , k ) ) T ∈ N n × 1 (其中:
k
=
1
,
2
,
.
.
.
,
c
k=1,2,...,c
k = 1 , 2 , . . . , c )并满足如下条件:
h
i
k
=
{
1
i
f
v
i
∈
A
k
0
o
t
h
e
r
w
i
s
e
(
i
=
1
,
.
.
.
,
n
;
k
=
1
,
.
.
.
,
c
)
(2.9)
h_{ik} = \begin{cases} 1 & if \; v_i \in A_k \\ 0 & otherwise \tag{2.9} \end{cases} \quad (i = 1,...,n;k=1,...,c)
h i k = { 1 0 i f v i ∈ A k o t h e r w i s e ( i = 1 , . . . , n ; k = 1 , . . . , c ) ( 2 . 9 ) 现在,我们将这
c
c
c 个指示向量
h
k
h_k
h k 组合成一个指示矩阵
H
∈
N
n
×
c
H\in N^{n\times c}
H ∈ N n × c ,由于我们假设每个样本以概率为1属于某个类,因此矩阵
H
H
H 当中的每一列指示向量 正交(orthonormal) 于其他任何一列向量 。(注意:向量之间的正交不代表
H
H
H 是正交阵) 【例如】我们要聚
c
=
3
c=3
c = 3 个类,有
5
5
5 个样本,聚类得到的情况是前两个样本属于一个类,接着两个样本属于一个类,最后一个样本独成一类。则
H
T
H
=
[
1
1
0
0
0
0
0
1
1
0
0
0
0
0
1
]
×
[
1
0
0
1
0
0
0
1
0
0
1
0
0
0
1
]
=
[
2
0
0
0
2
0
0
0
1
]
\begin{gathered} H^T H= \begin{bmatrix} 1 & 1 & 0 & 0 & 0\\ 0 & 0 & 1& 1& 0\\ 0 & 0 & 0& 0& 1\\ \end{bmatrix} \times \begin{bmatrix} 1 & 0 & 0\\ 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\\ \end{bmatrix} = \begin{bmatrix} 2 & 0 & 0\\ 0 & 2 & 0\\ 0 & 0 & 1\\ \end{bmatrix} \end{gathered}
H T H = ⎣ ⎡ 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 ⎦ ⎤ × ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 ⎦ ⎥ ⎥ ⎥ ⎥ ⎤ = ⎣ ⎡ 2 0 0 0 2 0 0 0 1 ⎦ ⎤ 用数学语言可表达为:
Tr
(
H
T
H
)
=
n
>
0
\text{Tr}(H^TH)=n>0
Tr ( H T H ) = n > 0 。因此我们可以得到如下目标函数
arg min
A
1
,
.
.
.
,
A
c
C
u
t
(
A
1
,
.
.
.
,
A
c
)
⇔
arg min
H
∈
R
n
×
c
Tr
(
H
T
L
H
)
s
.
t
Tr
(
H
T
H
)
=
n
H
as defined in Eq.
(
2.9
)
\begin{aligned} \argmin_{A_1,...,A_c} \; Cut(A_1,...,A_c) \Leftrightarrow \argmin_{H\in R^{n\times c}}& \;\; \text{Tr}(H^TLH) \\ s.t & \;\; \text{Tr}(H^TH) =n\\ & \;\; H \text{ as defined in Eq.} (2.9)\\ \end{aligned}
A 1 , . . . , A c a r g m i n C u t ( A 1 , . . . , A c ) ⇔ H ∈ R n × c a r g m i n s . t Tr ( H T L H ) Tr ( H T H ) = n H as defined in Eq. ( 2 . 9 )
最终,我们按照二聚类的思路,结合扩展的指示矩阵可以得到相似的最小割目标函数。但是由于最小割目标函数的局限性。下面,我们将对最小割目标函数进行改进,并重新定义指示向量的值。
2.3 目标函数的改进(
RatioCut
\text{RatioCut}
RatioCut 与
Ncut
\text{Ncut}
Ncut )
由最小割目标函数可知,最小割得到的分割结果往往更倾向于将所连边最少且边权值较低 的孤立点 分割出来。如下图所示,我们更希望被分割的子图中顶点的数量相互均衡。因此我们需要加入其它限制以改进目标函数分割效果。
为了达到均衡 的效果,我们很容易想到在原目标函数 (切成每个子图的代价)的基础上除以 切图后每个子图的规模 。
因此,现在的问题就是如何度量 切图后子图的规模? ①从顶点数 的角度思考可以想到用子图的顶点数作为该子图的规模。②从边 的角度思考可以想到用子图的边权和 作为子图的规模。两种度量方式用数学语言有如下定义:
子
图
A
的
势
∣
A
∣
:
=
the number of vertices in
A
子
图
A
的
体
积
v
o
l
(
A
)
:
=
∑
v
i
∈
A
d
i
(2.10)
\begin{aligned} &子图A的势\;|A|:= \text{the number of vertices in } A \\ &子图A的体积\;vol(A):= \sum_{v_i\in A} d_i \\ \end{aligned} \tag{2.10}
子 图 A 的 势 ∣ A ∣ : = the number of vertices in A 子 图 A 的 体 积 v o l ( A ) : = v i ∈ A ∑ d i ( 2 . 1 0 ) 可以看出第二种子图A的体积 更能贴切描述子图的规模,因为它相比子图A的势 含有边权值 的信息,能更清楚的区别有相同顶点数 的但边权和 不同的规模。当原二聚类目标函数为
C
u
t
(
V
)
:
=
C
u
t
(
A
1
,
A
2
,
.
.
.
,
A
c
)
=
∑
k
=
1
c
C
u
t
(
A
k
,
A
‾
k
)
=
1
2
∑
k
=
1
c
W
(
A
k
,
A
‾
k
)
Cut(V):=Cut(A_1,A_2,...,A_c)=\sum_{k=1}^cCut(A_k,\overline A_k) =\frac{1}{2} \sum_{k=1}^c W(A_k,\overline A_k)
C u t ( V ) : = C u t ( A 1 , A 2 , . . . , A c ) = k = 1 ∑ c C u t ( A k , A k ) = 2 1 k = 1 ∑ c W ( A k , A k ) 根据前面规模的定义式
(
2.10
)
(2.10)
( 2 . 1 0 ) ,我们可以得到如下两个改进后的目标函数
R
a
t
i
o
C
u
t
RatioCut
R a t i o C u t (比例切割)与
N
c
u
t
Ncut
N c u t (归一化切割):
R
a
t
i
o
C
u
t
(
A
1
,
A
2
,
.
.
.
,
A
c
)
:
=
∑
k
=
1
c
C
u
t
(
A
k
,
A
‾
k
)
∣
A
k
∣
=
1
2
∑
k
=
1
c
W
(
A
k
,
A
‾
k
)
∣
A
k
∣
N
c
u
t
(
A
1
,
A
2
,
.
.
.
,
A
c
)
:
=
∑
k
=
1
c
C
u
t
(
A
k
,
A
‾
k
)
v
o
l
(
A
k
)
=
1
2
∑
k
=
1
c
W
(
A
k
,
A
‾
k
)
v
o
l
(
A
k
)
(2.11)
\begin{aligned} &RatioCut(A_1,A_2,...,A_c) := \sum_{k=1}^c \frac{Cut(A_k,\overline A_k)}{|A_k|} = \frac12 \sum_{k=1}^c \frac{W(A_k,\overline A_k)}{|A_k|} \tag{2.11} \\ &Ncut(A_1,A_2,...,A_c) := \sum_{k=1}^c \frac{Cut(A_k,\overline A_k)}{vol(A_k)} = \frac12 \sum_{k=1}^c \frac{W(A_k,\overline A_k)}{vol(A_k)} \end{aligned}
R a t i o C u t ( A 1 , A 2 , . . . , A c ) : = k = 1 ∑ c ∣ A k ∣ C u t ( A k , A k ) = 2 1 k = 1 ∑ c ∣ A k ∣ W ( A k , A k ) N c u t ( A 1 , A 2 , . . . , A c ) : = k = 1 ∑ c v o l ( A k ) C u t ( A k , A k ) = 2 1 k = 1 ∑ c v o l ( A k ) W ( A k , A k ) ( 2 . 1 1 ) 得到改进后的目标函数后,我们将尝试对其进行求解。
三、目标函数的求解
下面,我们先从非标准化
R
a
t
i
o
C
u
t
RatioCut
R a t i o C u t 目标函数讲起。
3.1
RatioCut
\text{RatioCut}
RatioCut 目标函数的近似解
3.1.1 先从二聚类说起(
c
=
2
c=2
c = 2 )
我们要求解的二聚类目标函数为
min
A
⊂
V
R
a
t
i
o
C
u
t
(
A
,
A
‾
)
\min_{A\subset V}\; RatioCut(A,\overline A)
A ⊂ V min R a t i o C u t ( A , A ) 现在,我们重新定义一下在
R
a
t
i
o
C
u
t
RatioCut
R a t i o C u t 目标函数中的指示向量为
f
=
(
f
1
,
f
2
,
.
.
.
,
f
n
)
T
∈
R
n
f=(f_1,f_2,...,f_n)^T \in R^n
f = ( f 1 , f 2 , . . . , f n ) T ∈ R n
f
i
=
{
∣
A
‾
∣
∣
A
∣
i
f
v
i
∈
A
−
∣
A
∣
∣
A
‾
∣
i
f
v
i
∈
A
‾
(3.1)
f_i = \begin{cases} \sqrt{\frac{|\overline A|}{|A|}} & if \; v_i \in A \\ -\sqrt{\frac{|A|}{|\overline A|}} & if \; v_i \in \overline A \end{cases} \tag{3.1}
f i = ⎩ ⎨ ⎧ ∣ A ∣ ∣ A ∣
− ∣ A ∣ ∣ A ∣
i f v i ∈ A i f v i ∈ A ( 3 . 1 ) 在之前,我们推导出
min
C
u
t
(
V
)
⇔
min
f
T
L
f
\min \;Cut(V) \Leftrightarrow\min \; f^TLf
min C u t ( V ) ⇔ min f T L f 现在我们来反向推导一下看看能得出什么
f
T
L
f
=
1
2
∑
i
=
1
n
∑
j
=
1
n
w
i
j
(
f
i
−
f
j
)
2
=
1
2
∑
v
i
∈
A
,
v
j
∈
A
‾
w
i
j
(
∣
A
‾
∣
∣
A
∣
+
∣
A
∣
∣
A
‾
∣
)
2
+
1
2
∑
v
i
∈
A
‾
,
v
j
∈
A
w
i
j
(
−
∣
A
∣
∣
A
‾
∣
−
∣
A
‾
∣
∣
A
∣
)
2
=
c
u
t
(
A
,
A
‾
)
(
∣
A
‾
∣
∣
A
∣
+
∣
A
∣
∣
A
‾
∣
+
2
)
=
c
u
t
(
A
,
A
‾
)
(
∣
A
‾
∣
+
∣
A
∣
∣
A
∣
+
∣
A
∣
+
∣
A
‾
∣
∣
A
‾
∣
)
=
∣
V
∣
⋅
c
u
t
(
A
,
A
‾
)
(
1
∣
A
∣
+
1
∣
A
‾
∣
)
=
∣
V
∣
⋅
R
a
t
i
o
C
u
t
(
A
,
A
‾
)
(3.2)
\begin{aligned} f^TLf & =\frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n w_{ij}(f_i-f_j)^2 \\ & = \frac{1}{2} \sum_{v_i\in A,v_j\in \overline A} w_{ij}(\sqrt{\frac{|\overline A|}{|A|}}+\sqrt{\frac{|A|}{|\overline A|}})^2 + \frac{1}{2} \sum_{v_i\in \overline A,v_j\in A} w_{ij}(-\sqrt{\frac{|A|}{|\overline A|}}-\sqrt{\frac{|\overline A|}{|A|}})^2 \\ & =cut(A,\overline A)(\frac{|\overline A|}{|A|}+\frac{|A|}{|\overline A|}+2)\\ & =cut(A,\overline A)(\frac{|\overline A|+|A|}{|A|}+\frac{|A|+|\overline A|}{|\overline A|})\\ &=|V|\cdot cut(A,\overline A)(\frac{1}{|A|}+\frac{1}{|\overline A|})\\ &=|V|\cdot RatioCut(A,\overline A) \end{aligned} \tag{3.2}
f T L f = 2 1 i = 1 ∑ n j = 1 ∑ n w i j ( f i − f j ) 2 = 2 1 v i ∈ A , v j ∈ A ∑ w i j ( ∣ A ∣ ∣ A ∣
+ ∣ A ∣ ∣ A ∣
) 2 + 2 1 v i ∈ A , v j ∈ A ∑ w i j ( − ∣ A ∣ ∣ A ∣
− ∣ A ∣ ∣ A ∣
) 2 = c u t ( A , A ) ( ∣ A ∣ ∣ A ∣ + ∣ A ∣ ∣ A ∣ + 2 ) = c u t ( A , A ) ( ∣ A ∣ ∣ A ∣ + ∣ A ∣ + ∣ A ∣ ∣ A ∣ + ∣ A ∣ ) = ∣ V ∣ ⋅ c u t ( A , A ) ( ∣ A ∣ 1 + ∣ A ∣ 1 ) = ∣ V ∣ ⋅ R a t i o C u t ( A , A ) ( 3 . 2 )
我们得到了
R
a
t
i
o
C
u
t
RatioCut
R a t i o C u t 目标函数!!同时对于指示向量的正交性,我们有
f
⊥
1
f \bot 1
f ⊥ 1 ,证明如下
∑
i
=
1
n
f
i
⋅
1
=
∑
v
i
∈
A
∣
A
‾
∣
∣
A
∣
−
∑
v
i
∈
A
‾
∣
A
∣
∣
A
‾
∣
=
∣
A
∣
∣
A
‾
∣
∣
A
∣
−
∣
A
‾
∣
∣
A
∣
∣
A
‾
∣
=
0
\sum_{i=1}^n f_i\cdot 1 = \sum_{v_i\in A} \sqrt{\frac{|\overline A|}{|A|}} - \sum_{v_i\in \overline A} \sqrt{\frac{|A|}{|\overline A|}} = |A| \sqrt{\frac{|\overline A|}{|A|}} - |\overline A|\sqrt{\frac{|A|}{|\overline A|}} = 0
i = 1 ∑ n f i ⋅ 1 = v i ∈ A ∑ ∣ A ∣ ∣ A ∣
− v i ∈ A ∑ ∣ A ∣ ∣ A ∣
= ∣ A ∣ ∣ A ∣ ∣ A ∣
− ∣ A ∣ ∣ A ∣ ∣ A ∣
= 0 同时我们还发现
f
T
f
f^Tf
f T f 内积可得到一个常数 。
f
T
f
=
∑
i
=
1
n
f
i
⋅
f
i
=
∑
v
i
∈
A
∣
A
‾
∣
∣
A
∣
+
∑
v
i
∈
A
‾
∣
A
∣
∣
A
‾
∣
=
∣
A
∣
∣
A
‾
∣
∣
A
∣
+
∣
A
‾
∣
∣
A
∣
∣
A
‾
∣
=
∣
V
∣
=
n
(3.3)
f^Tf=\sum_{i=1}^n f_i\cdot f_i = \sum_{v_i\in A} \frac{|\overline A|}{|A|} + \sum_{v_i\in \overline A} \frac{|A|}{|\overline A|} = |A| \frac{|\overline A|}{|A|} + |\overline A|\frac{|A|}{|\overline A|} = |V|= n \tag{3.3}
f T f = i = 1 ∑ n f i ⋅ f i = v i ∈ A ∑ ∣ A ∣ ∣ A ∣ + v i ∈ A ∑ ∣ A ∣ ∣ A ∣ = ∣ A ∣ ∣ A ∣ ∣ A ∣ + ∣ A ∣ ∣ A ∣ ∣ A ∣ = ∣ V ∣ = n ( 3 . 3 )
这是非常关键的条件 !我们用拉格朗日乘子 转化为无约束问题后可以得到一个有趣的结论。现在我们可以得到等价的完整目标函数
min
A
⊂
V
R
a
t
i
o
C
u
t
(
A
,
A
‾
)
⇔
min
f
∈
R
n
f
T
L
f
s
.
t
f
⊥
1
f
i
as defined in Eq.(3.1)
f
T
f
=
n
(
f
T
f
>
0
)
\begin{aligned} \min_{A \subset V} \;RatioCut(A,\overline A) \Leftrightarrow & \min_{f \in R^n} \; f^TLf \\ & s.t \;\; f \bot 1 \\ & \quad \;\; f_i \text{ as defined in Eq.(3.1)} \\ & \quad \;\; f^Tf =n \quad(f^Tf>0) \\ \end{aligned}
A ⊂ V min R a t i o C u t ( A , A ) ⇔ f ∈ R n min f T L f s . t f ⊥ 1 f i as defined in Eq.(3.1) f T f = n ( f T f > 0 ) 在《A tutorial on spectral clustering》 [1]这篇论文中(如下图),作者将第三个约束条件 写为
∣
∣
f
∣
∣
=
n
||f||=\sqrt n
∣ ∣ f ∣ ∣ = n
,即
f
T
f
f^Tf
f T f 得到的是一个常数 。也是一个等式约束 ,即
f
T
f
−
n
=
0
f^Tf-n=0
f T f − n = 0 。 由于约束
f
i
as defined in Eq.(3.1)
f_i \text{ as defined in Eq.(3.1)}
f i as defined in Eq.(3.1) 的限制,即解向量
f
i
f_i
f i 的取值只有两个值 ,导致该问题是一个NP难 的离散 优化问题,目标函数不可导。
如何解这个离散问题?
离散问题我们很难做或者不会做,但连续问题我们会做,所以我们想可不可以把离散问题 转化成连续问题 ?在这里,我们可以放松 一下约束条件,去掉
f
i
as defined in Eq.(3.1)
f_i \text{ as defined in Eq.(3.1)}
f i as defined in Eq.(3.1) 这个令人头疼的限制,使得解向量
f
i
f_i
f i 可取实数域
R
R
R 中的任意值 。这样就将离散问题 松弛 为连续问题 如下
min
f
∈
R
n
f
T
L
f
s
.
t
f
⊥
1
(
that is
f
T
1
=
0
)
f
T
f
=
n
(
f
T
f
>
0
)
(3.4)
\begin{aligned} & \min_{f \in R^n} \; f^TLf \\ & s.t \;\; f \bot 1 \;(\text{that is }f^T1 =0) \\ & \quad \;\; f^Tf =n \quad(f^Tf>0)\\ \end{aligned} \tag{3.4}
f ∈ R n min f T L f s . t f ⊥ 1 ( that is f T 1 = 0 ) f T f = n ( f T f > 0 ) ( 3 . 4 )
使用拉格朗日乘子将约束问题转化为无约束问题
有约束的目标函数我们不会做,我们可以转化为无约束问题,因此目标函数
(
3.4
)
(3.4)
( 3 . 4 ) 可以转化为如下
L
a
g
r
a
n
g
e
Lagrange
L a g r a n g e 函数
L
(
f
,
λ
)
L(f,\lambda)
L ( f , λ )
L
(
f
,
λ
)
:
=
f
T
L
f
−
λ
(
f
T
1
)
−
λ
(
f
T
f
−
n
)
=
f
T
L
f
−
λ
(
f
T
f
−
n
)
(3.5)
\begin{aligned} L(f,\lambda):&= f^TLf -\lambda(f^T1)- \lambda(f^Tf-n) \\ & = f^TLf - \lambda(f^Tf-n)\\ \end{aligned}\tag{3.5}
L ( f , λ ) : = f T L f − λ ( f T 1 ) − λ ( f T f − n ) = f T L f − λ ( f T f − n ) ( 3 . 5 ) 因此
min
f
∈
R
n
L
(
f
,
λ
)
⇔
min
f
∈
R
n
f
T
L
f
s
.
t
f
⊥
1
(
that is
f
T
1
=
0
)
f
T
f
=
n
(
f
T
f
>
0
)
\begin{aligned} \min_{f \in R^n} L(f,\lambda) \Leftrightarrow \;& \min_{f \in R^n} \; f^TLf \\ & s.t \;\; f \bot 1 \;(\text{that is }f^T1 =0) \\ & \quad \;\; f^Tf =n \quad(f^Tf>0)\\ \end{aligned}
f ∈ R n min L ( f , λ ) ⇔ f ∈ R n min f T L f s . t f ⊥ 1 ( that is f T 1 = 0 ) f T f = n ( f T f > 0 ) 现在我们得到无约束且连续 的目标函数,由于二次型 函数是天然的凸函数 亦可导,可以快速找到全局最优解 ,只需要令其导数为
0
0
0 即可得到极值,对向量和矩阵 求导详请见《机器学习常用矩阵求导方法》 。
①求微分
d
L
(
f
,
λ
)
=
d
[
f
T
L
f
−
λ
(
f
T
f
−
n
)
]
=
d
(
f
T
L
f
−
λ
f
T
f
)
=
d
(
f
T
)
L
f
+
f
T
L
(
d
f
)
−
λ
d
(
f
T
)
f
−
λ
f
T
(
d
f
)
=
(
d
f
)
T
L
f
+
f
T
L
(
d
f
)
−
λ
(
d
f
)
T
f
−
λ
f
T
(
d
f
)
=
t
r
[
(
d
f
)
T
L
f
+
f
T
L
(
d
f
)
−
λ
(
d
f
)
T
f
−
λ
f
T
(
d
f
)
]
=
t
r
[
(
d
f
)
T
L
f
]
+
t
r
[
f
T
L
(
d
f
)
]
−
λ
⋅
t
r
[
(
d
f
)
T
f
]
−
λ
⋅
t
r
[
f
T
(
d
f
)
]
=
t
r
[
f
T
L
T
(
d
f
)
]
+
t
r
[
f
T
L
(
d
f
)
]
−
λ
⋅
t
r
[
f
T
(
d
f
)
]
−
λ
⋅
t
r
[
f
T
(
d
f
)
]
=
t
r
[
f
T
(
L
T
+
L
)
(
d
f
)
−
2
λ
f
T
(
d
f
)
]
=
[
f
T
(
L
T
+
L
)
−
2
λ
f
T
]
d
f
=
[
2
f
T
L
T
−
2
λ
f
T
]
d
f
(3.6)
\begin{aligned} dL(f,\lambda) & = d [f^TLf -\lambda (f^Tf -n)] =d (f^TLf -\lambda f^Tf ) \\ & = d(f^T)Lf + f^TL(df) -\lambda d(f^T)f - \lambda f^T(df) \\ & = (df) ^TLf + f^TL(df) -\lambda (df) ^Tf - \lambda f^T(df) \\ & = tr[(df) ^TLf + f^TL(df) -\lambda (df) ^Tf - \lambda f^T(df)] \\ & = tr[(df) ^TLf] + tr[f^TL(df)] -\lambda \cdot tr[(df) ^Tf] - \lambda \cdot tr[ f^T(df)] \\ & = tr[f^TL^T(df) ] + tr[f^TL(df)] -\lambda \cdot tr[f^T(df) ] - \lambda \cdot tr[ f^T(df)] \\ &=tr[f^T(L^T+L)(df)- 2\lambda f^T(df)] \\ &=[f^T(L^T+L)- 2\lambda f^T]df \\ &=[2f^TL^T- 2\lambda f^T]df \\ \end{aligned} \tag{3.6}
d L ( f , λ ) = d [ f T L f − λ ( f T f − n ) ] = d ( f T L f − λ f T f ) = d ( f T ) L f + f T L ( d f ) − λ d ( f T ) f − λ f T ( d f ) = ( d f ) T L f + f T L ( d f ) − λ ( d f ) T f − λ f T ( d f ) = t r [ ( d f ) T L f + f T L ( d f ) − λ ( d f ) T f − λ f T ( d f ) ] = t r [ ( d f ) T L f ] + t r [ f T L ( d f ) ] − λ ⋅ t r [ ( d f ) T f ] − λ ⋅ t r [ f T ( d f ) ] = t r [ f T L T ( d f ) ] + t r [ f T L ( d f ) ] − λ ⋅ t r [ f T ( d f ) ] − λ ⋅ t r [ f T ( d f ) ] = t r [ f T ( L T + L ) ( d f ) − 2 λ f T ( d f ) ] = [ f T ( L T + L ) − 2 λ f T ] d f = [ 2 f T L T − 2 λ f T ] d f ( 3 . 6 ) 最后一步
2
L
T
=
L
T
+
L
2L^T=L^T+L
2 L T = L T + L ,是因为
L
=
D
−
W
L=D-W
L = D − W ,其中度矩阵
D
D
D 和邻接矩阵
W
W
W 均为对称矩阵 ,因此两个对称矩阵的差依然为对称矩阵,即
L
T
=
L
L^T=L
L T = L
②得到导数 由标量微分
d
y
=
f
′
(
x
)
d
x
dy = f'(x)dx
d y = f ′ ( x ) d x 推导出向量微分
d
y
=
(
d
y
d
x
)
T
d
x
dy = (\frac{dy}{dx})^Tdx
d y = ( d x d y ) T d x 得
d
L
(
f
,
λ
)
d
f
=
[
2
f
T
L
T
−
2
λ
f
T
]
T
=
2
L
f
−
2
λ
f
=
0
⇒
L
f
=
λ
f
(3.7)
\begin{aligned} \frac{d L(f,\lambda)}{d f} &= [2f^TL^T- 2\lambda f^T]^T =2Lf-2\lambda f =0\\ &\Rightarrow Lf=\lambda f \end{aligned} \tag{3.7}
d f d L ( f , λ ) = [ 2 f T L T − 2 λ f T ] T = 2 L f − 2 λ f = 0 ⇒ L f = λ f ( 3 . 7 ) 我们得到了一个惊人的结论 !!当
L
a
g
r
a
n
g
e
Lagrange
L a g r a n g e 乘子
λ
\lambda
λ 是拉普拉斯矩阵
L
L
L 的特征值(eigenvalue) 且指示向量
f
f
f 是
L
L
L 的特征向量(eigenvector) 时,函数有极值 。
那么,这个函数的极值到底是什么呢?我们继续分析,因为目标函数是
f
T
L
f
f^TLf
f T L f ,所以我们可以将等式
(
3.7
)
(3.7)
( 3 . 7 ) 两边分别左乘
f
T
f^T
f T 凑成目标函数形式后为
f
T
L
f
=
λ
f
T
f
=
λ
n
f^TLf=\lambda f ^Tf=\lambda n
f T L f = λ f T f = λ n 因为
n
=
∣
V
∣
n=|V|
n = ∣ V ∣ 是常数,显然取决于目标函数值 大小的元素是
λ
\lambda
λ ,即
min
f
T
L
f
f
T
f
=
min
λ
(3.8)
\min \; \frac{f^TLf}{f^Tf} = \min \; \lambda \tag{3.8}
min f T f f T L f = min λ ( 3 . 8 ) 也就是说
L
L
L 的特征值
λ
\lambda
λ 越大,目标函数值越大 ;特征值
λ
\lambda
λ 越小,目标函数值越小 !!随着入坑越深,我们已逐渐将连续优化问题转化成了特征分解问题。那么
λ
\lambda
λ 的最小值是多少呢?我们从两个角度来分析
①拉格朗日乘子角度 在高数中,我们之所以定义
L
a
g
r
a
n
g
e
Lagrange
L a g r a n g e 乘子是为了方便求导,即将有约束的连续问题转化为无约束的连续问题,而定义后的
L
a
g
r
a
n
g
e
Lagrange
L a g r a n g e 函数就是原函数的下界 ,即
min
f
T
L
f
≥
min
L
(
f
,
λ
)
=
f
T
L
f
−
λ
f
T
f
⇒
λ
≥
0
\begin{aligned} \min \;f^TLf & \ge \min \;L(f,\lambda) \\ & = f^TLf -\lambda f^Tf \\ & \Rightarrow \lambda \ge 0 \end{aligned}
min f T L f ≥ min L ( f , λ ) = f T L f − λ f T f ⇒ λ ≥ 0 由于
f
T
f
=
n
>
0
f^Tf =n>0
f T f = n > 0 ,则必然
λ
≥
0
\lambda \ge 0
λ ≥ 0 ,因此我们可满心欢喜地得到结论
λ
min
=
0
\lambda_{\min} = 0
λ min = 0 。
②拉普拉斯矩阵性质角度 我们之前在式
(
2.8
)
(2.8)
( 2 . 8 ) 推导出,对于指示向量
f
∈
R
n
f\in R^n
f ∈ R n 有
f
T
L
f
=
1
2
∑
i
=
1
n
∑
j
=
1
n
w
i
j
(
f
i
−
f
j
)
2
f^TLf = \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n w_{ij}(f_i-f_j)^2
f T L f = 2 1 i = 1 ∑ n j = 1 ∑ n w i j ( f i − f j ) 2 由于
w
i
j
≥
0
w_{ij}\ge0
w i j ≥ 0 ,二次项
≥
0
\ge0
≥ 0 ,因此
f
T
L
f
≥
0
f^TLf \ge 0
f T L f ≥ 0 。又因为
min
f
T
L
f
⇔
min
λ
\min \; f^TLf \Leftrightarrow \min \; \lambda
min f T L f ⇔ min λ ,所以
λ
min
=
0
\lambda_{\min} = 0
λ min = 0 。
令拉普拉斯矩阵的第二小特征值作为目标函数最优值
那我们是不是直接将
λ
min
=
0
\lambda_{\min} = 0
λ min = 0 这个解作为目标函数的解,求出对应特征向量
f
f
f (指示向量)就完事了呢?毫无疑问,它可以作为一个平凡解,但是否是我们想要的解?
显然不是 !因为我们定义的目标函数值是有意义的 ,我们从最初的
C
u
t
(
V
)
Cut(V)
C u t ( V ) 到
R
a
t
i
o
C
u
t
(
V
)
RatioCut(V)
R a t i o C u t ( V ) 都代表 着按某种方式切图后的代价 。当这个代价为
0
0
0 ,则表示我们没有切图,所有的样本都属于一类,这种情况下得到的特征向量
f
f
f (指示向量) 一定是常数向量
1
\boldsymbol 1
1 。因此,我们一般不取最小 而是取第二小特征值
λ
\lambda
λ 作为最优值 ,其对应的特征向量
f
f
f 即为我们所求的最优解 。
实数解向量的定性
本节到这里就可以结束了吗?显然还不能TAT,别忘了,我们最初是将离散问题转化成连续问题求解的,也就是说当前目标函数所得到的最优解
f
f
f 是任意实数解向量(real-valued solution vector) ,我们无法从中断言哪个样本确切的属于哪个类别。因此,我们还需要将实数解向量定性 。
对于二聚类
(
c
=
2
)
(c=2)
( c = 2 ) 问题,这个很好做,毕竟我们的解向量
f
∈
R
n
f\in R^n
f ∈ R n ,因此最简单 粗暴的定性方法 是判断
f
i
f_i
f i 是否大于等于0 ,即
{
v
i
∈
A
if
f
i
≥
0
v
i
∈
A
‾
if
f
i
<
0
\begin{cases} v_i \in A \quad \text{ if } f_i \ge0\\ v_i \in \overline A \quad \text{ if } f_i <0\\ \end{cases}
{ v i ∈ A if f i ≥ 0 v i ∈ A if f i < 0
不是总结的总结
回顾我们这一节都干了啥?
①重新确定指示向量
f
f
f 并推导出
min
f
T
L
f
⇔
min
R
a
t
i
o
C
u
t
(
V
)
\min \;f^TLf \Leftrightarrow \min \;RatioCut(V)
min f T L f ⇔ min R a t i o C u t ( V ) ②找出目标函数
f
T
L
f
f^TLf
f T L f 的3个 约束条件,即
min
f
∈
R
n
f
T
L
f
s
.
t
f
⊥
1
f
i
as defined in Eq.(3.1)
f
T
f
=
n
\begin{aligned} & \min_{f \in R^n} \; f^TLf \\ & s.t \;\; f \bot 1 \\ & \quad \;\; f_i \text{ as defined in Eq.(3.1)} \\ & \quad \;\; f^Tf =n \\ \end{aligned}
f ∈ R n min f T L f s . t f ⊥ 1 f i as defined in Eq.(3.1) f T f = n ③去掉约束
f
i
as defined in Eq.(3.1)
f_i \text{ as defined in Eq.(3.1)}
f i as defined in Eq.(3.1) ,将离散问题松弛为连续问题 。 ④引入拉格朗日乘子 将约束问题转化为无约束问题 ,其中
L
(
f
,
λ
)
:
=
f
T
L
f
−
λ
(
f
T
1
)
−
λ
(
f
T
f
−
n
)
L(f,\lambda):= f^TLf -\lambda(f^T1)-\lambda(f^Tf-n)
L ( f , λ ) : = f T L f − λ ( f T 1 ) − λ ( f T f − n ) ⑤通过对无约束问题求导,我们得到
L
f
=
λ
f
Lf=\lambda f
L f = λ f ,并进一步得到
min
f
T
L
f
⇔
min
λ
\min \; f^TLf \Leftrightarrow \min \; \lambda
min f T L f ⇔ min λ ⑥通过从拉普拉斯矩阵性质的分析,我们得知
λ
min
=
0
\lambda_{\min}=0
λ min = 0 ,同时其对应特征向量
f
f
f 是常数向量
1
\boldsymbol{1}
1 ,因此我们取第二小特征值作为目标函数最优值 ,对应特征向量为最优解向量 。 ⑦将实数解向量
f
f
f 定性。
至于多聚类问题该怎么处理请看
3.1.3
3.1.3
3 . 1 . 3 节。
3.1.2 总结拉普拉斯矩阵的性质与瑞利商
相信经过前一节的讨论,我们可以更好地理解拉普拉斯矩阵
L
L
L 。以下严格来说,我们讨论的是非标准化 的
L
L
L 。
拉普拉斯矩阵(Laplacian matrix)
在图论和数学领域,有时也被称为基尔霍夫矩阵(Kirchhoff matrix)
,它是图形的矩阵表示形式。它可以用于计算定图的生成树的个数 ,也可以通过计算第二个最小特征值
来近似图的最稀疏切割
。
———摘自维基百科
(1) 拉普拉斯矩阵
L
L
L 的性质
对于每一个指示向量
f
∈
R
n
f\in R^n
f ∈ R n ,有
f
T
L
f
=
1
2
∑
i
=
1
n
∑
j
=
1
n
w
i
j
(
f
i
−
f
j
)
2
f^TLf = \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n w_{ij}(f_i-f_j)^2
f T L f = 2 1 i = 1 ∑ n j = 1 ∑ n w i j ( f i − f j ) 2
L
L
L 是实数对称矩阵(symmetric) 且
L
L
L 是半正定矩阵(positive semi-definite) 。(解释:对称因为
L
=
D
−
W
L=D-W
L = D − W ;半正定因为性质
1
1
1 导致
f
T
L
f
≥
0
f^TLf\ge 0
f T L f ≥ 0 )
L
L
L 的行和 为
0
0
0 。(从上图可以看出,如第一行
2
−
1
−
1
=
0
2-1-1=0
2 − 1 − 1 = 0 )
L
L
L 的最小特征值
λ
min
=
0
\lambda_{\min}=0
λ min = 0 ,其对应特征向量 是常数向量
1
\boldsymbol{1}
1 。(解释:前者可以从
f
T
L
f
=
λ
f
T
f
≥
0
f^TLf=\lambda f^Tf\ge 0
f T L f = λ f T f ≥ 0 (其中
f
f
f 为任意非
0
0
0 向量)看出;后者是因为当
λ
=
0
\lambda=0
λ = 0 时有
f
T
L
f
=
0
f^TLf =0
f T L f = 0 ,且由性质
3
3
3 得
L
L
L 行和为0 ,则
f
=
1
f=\boldsymbol{1}
f = 1 )
L
L
L 有
n
n
n 个非负实数特征值
λ
\lambda
λ ,且
0
=
λ
1
≤
λ
2
≤
.
.
.
λ
n
0=\lambda_1\le \lambda_2\le...\lambda_n
0 = λ 1 ≤ λ 2 ≤ . . . λ n
(2)
L
\text{L}
L 的谱(
Spectrum
\text{Spectrum}
Spectrum )以及连通分量的个数
当图
G
G
G 是一个仅有非负权重的无向图
时,其对应的拉普拉斯矩阵
L
L
L 的
0
0
0 特征值 (0谱 )的个数
k
k
k 就是图中
A
1
,
.
.
.
,
A
k
A_1,...,A_k
A 1 , . . . , A k 连通分量的个数
k
k
k 。
0
0
0 特征值 对应的特征空间 由这些连通分量 对应的指示向量
1
A
1
,
.
.
.
,
1
A
k
\boldsymbol{1}_{A_1},...,\boldsymbol{1}_{A_k}
1 A 1 , . . . , 1 A k 张成(span)
(注:连通分量的个数 和聚类的个数 未必相同,前者是客观存在 的,后者是我们可以指定的)
【归纳证明】:
当
k
=
1
k=1
k = 1 时,即
0
0
0 特征值 的个数只有一个 时,情况如上述性质
4
4
4 ,所有样本都属于一个类 。因此,图中也只有一个连通分量 。
当
k
=
2
k=2
k = 2 时,即图中有两个连通分量 ,则按这两个连通分量将图中顶点排序 后得到的邻接矩阵 为分块矩阵 ,如下图所示:
W
=
(
0
w
12
w
13
0
0
w
21
0
w
23
0
0
w
31
w
32
0
0
0
0
0
0
0
w
45
0
0
0
w
54
0
)
=
(
W
1
W
2
)
\begin{gathered} W=\begin{pmatrix} 0 & w_{12} & w_{13} & 0 & 0 \\ w_{21} & 0 & w_{23} & 0 & 0 \\ w_{31} & w_{32} & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & w_{45}\\ 0 & 0 & 0 & w_{54} & 0 \\ \end{pmatrix} = \begin{pmatrix} W_1 & \\ & W_2 \\ \end{pmatrix} \end{gathered}
W = ⎝ ⎜ ⎜ ⎜ ⎜ ⎛ 0 w 2 1 w 3 1 0 0 w 1 2 0 w 3 2 0 0 w 1 3 w 2 3 0 0 0 0 0 0 0 w 5 4 0 0 0 w 4 5 0 ⎠ ⎟ ⎟ ⎟ ⎟ ⎞ = ( W 1 W 2 ) 因此,得到的拉普拉斯矩阵 也是分块矩阵 (如下图),而由拉普拉斯矩阵性质
4
4
4 可得,每个
L
i
L_i
L i 的最小特征值
λ
min
=
0
\lambda_{\min}=0
λ min = 0 ,因此
L
L
L 的
0
0
0 特征值 的个数有两个 。
L
=
D
−
W
=
(
L
1
L
2
)
L=D-W= \begin{pmatrix} L_1 & \\ & L_2 \\ \end{pmatrix}
L = D − W = ( L 1 L 2 )
当
k
>
2
k>2
k > 2 时,即图中有
k
k
k 个连通分量 时,对应的拉普拉斯矩阵 是如下分块矩阵 ,故可得到
k
k
k 个
0
0
0 特征值 。
L
=
(
L
1
L
2
⋱
L
k
)
L= \begin{pmatrix} L_1 & & & \\ & L_2 & & \\ & & \ddots & \\ & & & L_k\\ \end{pmatrix}
L = ⎝ ⎜ ⎜ ⎛ L 1 L 2 ⋱ L k ⎠ ⎟ ⎟ ⎞
(3) 瑞利商(
Rayleigh Quotient
\text{Rayleigh Quotient}
Rayleigh Quotient )
看到网上很多有叫瑞利熵的,这里我纠正一下,Quotient 表示商 的意思,没有entropy 的含义好吗?在此之前,我们先简要介绍一下
H
e
r
m
i
t
i
a
n
Hermitian
H e r m i t i a n 矩阵。
①
H
e
r
m
i
t
i
a
n
Hermitian
H e r m i t i a n 矩阵
H
e
r
m
i
t
i
a
n
Hermitian
H e r m i t i a n 矩阵 又被译为厄尔米特矩阵 ,指的是自共轭矩阵 。
【定义】:
n
n
n 阶复方阵
A
A
A 的对称单元互为共轭 (两个实部相等
,虚部互为相反数
的复数互为共轭复数 ),若
A
A
A 的共轭转置矩阵
A
H
A^H
A H 等于它本身,则
A
A
A 是厄米特矩阵(Hermitian Matrix),例如
A
=
A
H
=
(
1
2
+
i
2
−
i
1
)
A= A^H = \begin{pmatrix} 1 & 2+i \\ 2-i & 1\\ \end{pmatrix}
A = A H = ( 1 2 − i 2 + i 1 ) 则
A
A
A 就是一个自共轭矩阵 ,且对角线 上各元素必为实数 ,其特征值也是实数 。对于实数对称矩阵 ,它也是埃尔米特矩阵。也就是说,实对称矩阵 是埃尔米特矩阵 的特例 。
②瑞利商(Rayleigh Quotient)
【定义】:给定一个
H
e
r
m
i
t
i
a
n
Hermitian
H e r m i t i a n 方阵
M
M
M 和非零列向量
x
x
x ,瑞利商
R
(
M
,
x
)
R(M,x)
R ( M , x ) 定义为(其中
x
H
x^H
x H 表示向量
x
x
x 的共轭转置)
R
(
M
,
x
)
:
=
x
H
M
x
x
H
x
R(M,x):= \frac{x^HMx}{x^Hx}
R ( M , x ) : = x H x x H M x 瑞利商最重要的性质是最大最小定理 ,对于矩阵
M
M
M 的特征值
λ
\lambda
λ ,
R
(
M
,
x
)
R(M,x)
R ( M , x ) 的最小值就是矩阵
M
M
M 的最小特征值
λ
min
\lambda_{\min}
λ min ,
R
(
M
,
x
)
R(M,x)
R ( M , x ) 的最大值就是矩阵
M
M
M 的最大特征值
λ
max
\lambda_{\max}
λ max (
λ
max
\lambda_{\max}
λ max 也是
R
(
M
,
x
)
R(M,x)
R ( M , x ) 的谱半径),即
R
(
M
,
x
)
=
x
H
M
x
x
H
x
=
λ
∈
[
λ
min
,
λ
max
]
R(M,x)= \frac{x^HMx}{x^Hx} =\lambda \in [\lambda_{\min},\lambda_{\max}]
R ( M , x ) = x H x x H M x = λ ∈ [ λ min , λ max ] 细心的读者一定发现,这和我们之前说的
f
T
L
f
f^TLf
f T L f 目标函数很像,还记得我们是怎么证明
min
f
T
L
f
⇔
min
λ
\min \;f^TLf \Leftrightarrow \min \; \lambda
min f T L f ⇔ min λ 的吗?没错!用拉格朗日乘子 !假如,现在我们要求
R
(
M
,
x
)
R(M,x)
R ( M , x ) 的最小值,其目标函数及其转换是这样的
min
R
(
M
,
x
)
⇔
min
x
H
M
x
s
.
t
x
H
x
>
0
\begin{aligned} \min \; R(M,x) \Leftrightarrow & \min \; x^HMx \\ & s.t \quad x^Hx >0\\ \end{aligned}
min R ( M , x ) ⇔ min x H M x s . t x H x > 0 约束
x
H
x
>
0
x^Hx > 0
x H x > 0 是为了满足
x
x
x 是非零向量 的条件(注:即便是复数向量,复共轭与自己相乘也能消去虚部),现在我们引入
L
a
g
r
a
n
g
e
Lagrange
L a g r a n g e 乘子
λ
\lambda
λ ,得到原函数的下界 ,即
L
a
g
r
a
n
g
e
Lagrange
L a g r a n g e 函数如下:
min
x
H
M
x
≥
min
L
(
x
,
λ
)
=
x
H
M
x
−
λ
x
H
x
\min \; x^HMx \ge \min \;L(x,\lambda) = x^HMx - \lambda x^Hx \quad
min x H M x ≥ min L ( x , λ ) = x H M x − λ x H x 由于
x
H
x
>
0
x^Hx > 0
x H x > 0 ,因此必然
λ
≥
0
\lambda \ge0
λ ≥ 0 ,我们根据之前式
(
3.6
)
(3.6)
( 3 . 6 ) 和式
(
3.7
)
(3.7)
( 3 . 7 ) 矩阵求导公式可得
d
L
(
x
,
λ
)
d
x
=
0
⇒
M
x
=
λ
x
\frac{dL(x,\lambda) }{dx} = 0 \Rightarrow Mx = \lambda x\\
d x d L ( x , λ ) = 0 ⇒ M x = λ x 可见拉格朗日乘子
λ
\lambda
λ 就是矩阵
M
M
M 的特征值 ,我们将上式两边分别左乘
x
H
x^H
x H ,再同除
x
H
x
x^Hx
x H x ,进而得到
x
H
M
x
=
λ
x
H
x
⇒
x
H
M
x
x
H
x
=
λ
⇒
R
(
M
,
x
)
=
λ
\begin{aligned} & x^HMx = \lambda x^Hx \\ \Rightarrow & \frac{x^HMx}{x^Hx} = \lambda \\ \Rightarrow & R(M,x) = \lambda\\ \end{aligned}
⇒ ⇒ x H M x = λ x H x x H x x H M x = λ R ( M , x ) = λ 又因为
λ
≥
0
\lambda \ge0
λ ≥ 0 ,所以
m
i
n
R
(
M
,
x
)
=
λ
min
=
0
\\min \;R(M,x)=\lambda_{\min}=0
m i n R ( M , x ) = λ min = 0 。这样,我们就证明了瑞利商
R
(
M
,
x
)
R(M,x)
R ( M , x ) 的值就是矩阵
M
M
M 的特征值
λ
\lambda
λ ,同时也是其拉格朗日乘子 !
我们之所以引入瑞利商 ,目的不言而喻。即拉普拉斯矩阵
L
L
L (实对称矩阵)是
H
e
r
m
i
t
i
a
n
Hermitian
H e r m i t i a n 矩阵的特例。而特征向量
f
f
f (指示向量) 也是非
0
0
0 向量。因此完全可以使用瑞利商 的结论,即对于非
0
0
0 指示向量
f
∈
R
n
f\in R^n
f ∈ R n ,有
min
f
T
L
f
⇔
min
λ
s
.
t
f
T
f
=
n
\begin{aligned} & \min \; f^TLf \; \Leftrightarrow \min \; \lambda \\ & s.t \quad f^Tf = n \\ \end{aligned}
min f T L f ⇔ min λ s . t f T f = n
写到这里,我想说,即使不知道瑞利商,俺们依然可以分析出图切割代价函数和拉普拉斯矩阵对应特征值
λ
\lambda
λ 的关系,相信看到这里的你们已经懂了~!
3.1.3 再回到多聚类(
c
c
c 取任意值)
现在,我们可以借鉴前期在
C
u
t
(
V
)
Cut(V)
C u t ( V ) 从二聚类 到多聚类 中指示向量的定义,和
2.2.2
2.2.2
2 . 2 . 2 节相似,我们定义指示向量
h
k
=
(
h
(
1
,
k
)
,
h
(
2
,
k
)
,
.
.
.
,
h
(
n
,
k
)
)
T
∈
R
n
×
1
h_{k}=(h_{(1,k)},h_{(2,k)},...,h_{(n,k)})^T \in R^{n\times 1}
h k = ( h ( 1 , k ) , h ( 2 , k ) , . . . , h ( n , k ) ) T ∈ R n × 1 (其中:
k
=
1
,
2
,
.
.
.
,
c
k=1,2,...,c
k = 1 , 2 , . . . , c )并满足如下条件:
h
i
k
=
{
1
∣
A
k
∣
i
f
v
i
∈
A
k
0
o
t
h
e
r
w
i
s
e
(
i
=
1
,
.
.
.
,
n
;
k
=
1
,
.
.
.
,
c
)
(3.9)
h_{ik} = \begin{cases} \frac{1}{\sqrt {|A_k|}} & if \; v_i \in A_k \\ 0 & otherwise \tag{3.9} \end{cases} \quad (i = 1,...,n;k=1,...,c)
h i k = { ∣ A k ∣
1 0 i f v i ∈ A k o t h e r w i s e ( i = 1 , . . . , n ; k = 1 , . . . , c ) ( 3 . 9 ) 现在,我们将这
c
c
c 个指示向量
h
k
h_k
h k 组合成一个指示矩阵
H
∈
R
n
×
c
H\in R^{n\times c}
H ∈ R n × c ,由于我们假设每个样本以概率为1属于某个类,因此矩阵
H
H
H 当中的每一列指示向量 正交(orthonormal) 于其他任何一列向量 。(注意:向量之间的正交不代表
H
H
H 是正交阵,因为指示矩阵未必是方阵) 【例如】我们要聚
c
=
3
c=3
c = 3 个类,有
5
5
5 个样本,聚类得到的情况是前两个样本属于一个类,接着两个样本属于一个类,最后一个样本独立成一类。则
H
T
H
=
[
1
2
1
2
0
0
0
0
0
1
2
1
2
0
0
0
0
0
1
]
×
[
1
2
0
0
1
2
0
0
0
1
2
0
0
1
2
0
0
0
1
]
=
[
1
0
0
0
1
0
0
0
1
]
\begin{gathered} H^T H= \begin{bmatrix} \frac{1}{\sqrt {2}} & \frac{1}{\sqrt {2}} & 0 & 0 & 0\\ 0 & 0 & \frac{1}{\sqrt {2}} & \frac{1}{\sqrt {2}} & 0\\ 0 & 0 & 0& 0& 1\\ \end{bmatrix} \times \begin{bmatrix} \frac{1}{\sqrt {2}} & 0 & 0\\ \frac{1}{\sqrt {2}} & 0 & 0\\ 0 & \frac{1}{\sqrt {2}} & 0\\ 0 & \frac{1}{\sqrt {2}} & 0\\ 0 & 0 & 1\\ \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\\ \end{bmatrix} \end{gathered}
H T H = ⎣ ⎡ 2
1 0 0 2
1 0 0 0 2
1 0 0 2
1 0 0 0 1 ⎦ ⎤ × ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ 2
1 2
1 0 0 0 0 0 2
1 2
1 0 0 0 0 0 1 ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤ = ⎣ ⎡ 1 0 0 0 1 0 0 0 1 ⎦ ⎤ 用数学语言可表达为:
H
T
H
=
I
H^TH=I
H T H = I ,其中
I
∈
R
c
×
c
I\in R^{c\times c}
I ∈ R c × c 。所以
Tr
(
H
T
H
)
=
c
>
0
\text{Tr}(H^TH)=c>0
Tr ( H T H ) = c > 0 同时,在二聚类中,我们有
min
A
⊂
V
R
a
t
i
o
C
u
t
(
A
,
A
‾
)
⇔
min
f
∈
R
n
f
T
L
f
\begin{aligned} \min_{A \subset V} \;RatioCut(A,\overline A) \Leftrightarrow & \min_{f \in R^n} \; f^TLf \\ \end{aligned}
A ⊂ V min R a t i o C u t ( A , A ) ⇔ f ∈ R n min f T L f 因此扩展到多聚类 ,我们可以推导出
R
a
t
i
o
C
u
t
(
A
1
,
.
.
.
,
A
c
)
=
∑
k
=
1
c
h
i
T
L
h
i
=
∑
k
=
1
c
(
H
T
L
H
)
i
i
=
Tr
(
H
T
L
H
)
RatioCut(A_1,...,A_c)= \sum_{k=1}^c h_i^TLh_i = \sum_{k=1}^c(H^TLH)_{ii}=\text{Tr}(H^TLH)
R a t i o C u t ( A 1 , . . . , A c ) = k = 1 ∑ c h i T L h i = k = 1 ∑ c ( H T L H ) i i = Tr ( H T L H ) 由于指示矩阵
H
H
H 中向量之间的正交性 ,我们可以得到如下完整目标函数:
arg min
A
1
,
.
.
.
,
A
c
R
a
t
i
o
C
u
t
(
A
1
,
.
.
.
,
A
c
)
⇔
arg min
H
∈
R
n
×
c
Tr
(
H
T
L
H
)
s
.
t
H
T
H
=
I
[
Tr
(
H
T
H
)
>
0
]
H
as defined in Eq.
(
3.10
)
\begin{aligned} \argmin_{A_1,...,A_c} RatioCut(A_1,...,A_c) \Leftrightarrow \argmin_{H\in R^{n\times c}}& \;\; \text{Tr}(H^TLH) \\ s.t &\;\; H^TH =I \quad [\text{Tr}(H^TH)>0] \\ & \;\; H \text{ as defined in Eq.} (3.10)\\ \end{aligned}
A 1 , . . . , A c a r g m i n R a t i o C u t ( A 1 , . . . , A c ) ⇔ H ∈ R n × c a r g m i n s . t Tr ( H T L H ) H T H = I [ Tr ( H T H ) > 0 ] H as defined in Eq. ( 3 . 1 0 ) 现在我们去掉约束
H
as defined in Eq.
(
3.10
)
H \text{ as defined in Eq.} (3.10)
H as defined in Eq. ( 3 . 1 0 ) 将离散问题松弛为连续问题 ,使得
H
H
H 可取任意实数值,该问题松弛后为
arg min
H
∈
R
n
×
c
Tr
(
H
T
L
H
)
s
.
t
H
T
H
=
I
[
Tr
(
H
T
H
)
>
0
]
\begin{aligned} \argmin_{H\in R^{n\times c}}& \;\; \text{Tr}(H^TLH) \\ s.t &\;\; H^TH =I \quad [\text{Tr}(H^TH)>0] \\ \end{aligned}
H ∈ R n × c a r g m i n s . t Tr ( H T L H ) H T H = I [ Tr ( H T H ) > 0 ] 通过引入
L
a
g
r
a
n
g
e
Lagrange
L a g r a n g e 乘子,我们得到
L
(
H
,
λ
)
L(H,\lambda)
L ( H , λ ) 函数
L
(
H
,
λ
)
:
=
Tr
(
H
T
L
H
)
−
λ
(
H
T
H
−
I
)
(3.11)
L(H,\lambda):= \text{Tr}(H^TLH) -\lambda (H^TH-I)\tag{3.11}
L ( H , λ ) : = Tr ( H T L H ) − λ ( H T H − I ) ( 3 . 1 1 ) 我们通过与式
(
3.6
)
(3.6)
( 3 . 6 ) 和式
(
3.7
)
(3.7)
( 3 . 7 ) 相似的推导步骤(此处不再赘述),令
d
L
(
H
,
λ
)
d
H
=
0
\frac{d L(H,\lambda)}{d H}=0
d H d L ( H , λ ) = 0 得
L
H
=
λ
H
(3.12)
LH=\lambda H \tag{3.12}
L H = λ H ( 3 . 1 2 ) 我们可以将等式
(
3.12
)
(3.12)
( 3 . 1 2 ) 两边分别左乘
H
T
H^T
H T 凑成目标函数形式后为
H
T
L
H
=
λ
H
T
H
⇒
Tr
(
H
T
L
H
)
=
λ
⋅
Tr
(
H
T
H
)
=
λ
c
\begin{aligned} & H^TLH=\lambda H^TH \\ \Rightarrow & \text{Tr}(H^TLH) =\lambda \cdot \text{Tr}(H^TH)=\lambda c \end{aligned}
⇒ H T L H = λ H T H Tr ( H T L H ) = λ ⋅ Tr ( H T H ) = λ c
因为聚类个数
c
c
c 是常数,显然取决于目标函数值 大小的元素是
λ
\lambda
λ ,即
min
Tr
(
H
T
L
H
)
⇔
min
λ
(3.13)
\min \; \text{Tr}(H^TLH) \Leftrightarrow \min \; \lambda \tag{3.13}
min Tr ( H T L H ) ⇔ min λ ( 3 . 1 3 )
使用
k-means
\text{k-means}
k-means 将解中的实数值离散化
我们基于之前对于二聚类问题
λ
\lambda
λ 的讨论,在二聚类
(
c
=
2
)
(c=2)
( c = 2 ) 那节我们选择第二小特征值
λ
\lambda
λ 为最优值 ,对应指示向量
f
f
f 为最优解 。但是对于多聚类问题中我们要求解的是矩阵
H
H
H ,在实际做特征分解 时,我们很难求整体矩阵
H
H
H ,因此我们可以用近似解 代替。
由于特征值
λ
\lambda
λ (也是拉格朗日乘子) 在这里的物理意义 代表切图的代价 ,因此我们可以将前
k
k
k 小特征值对应的
k
k
k 个特征向量 拼接成一个矩阵
U
∈
R
n
×
k
U\in R^{n\times k}
U ∈ R n × k 作为
H
∈
R
n
×
c
H\in R^{n\times c}
H ∈ R n × c 的近似解 。然后使用传统的
k
−
m
e
a
n
s
k-means
k − m e a n s 方法,将连续实数值离散化 ,将矩阵
U
U
U 的
n
n
n 行向量聚为
c
c
c 行向量,最终得到的
l
a
b
e
l
label
l a b e l 即为最终聚类结果。
如下面的矩阵
H
H
H ,我们不仅可以通过列向量 得知哪个类有哪些样本 ,也可以通过行 的角度看出哪些样本属于哪个类 。所以嘛,列向量因为均是实数值我们很难做,但从行的角度看就能很轻松的找到近似解。这也算是卜东坡老师强调的从对偶 的角度看待问题吧^_^
H
=
[
1
2
0
0
1
2
0
0
0
1
2
0
0
1
2
0
0
0
1
]
\begin{gathered} H= \begin{bmatrix} \frac{1}{\sqrt {2}} & 0 & 0\\ \frac{1}{\sqrt {2}} & 0 & 0\\ 0 & \frac{1}{\sqrt {2}} & 0\\ 0 & \frac{1}{\sqrt {2}} & 0\\ 0 & 0 & 1\\ \end{bmatrix} \end{gathered}
H = ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎡ 2
1 2
1 0 0 0 0 0 2
1 2
1 0 0 0 0 0 1 ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎤
那么这个
k
k
k 取多少合适呢?我们可以取
k
=
c
k=c
k = c ,也可以根据具体问题取其他值,在特征能足够区分类与类之间的差别 基础上我们应使
k
k
k 越小越好 ,因为我们最后是要通过k-means 完成最终的聚类,维数越少,k-means 就不会太慢。
以上就是非标准化
R
a
t
i
o
C
u
t
RatioCut
R a t i o C u t 目标函数的完整求解过程。
3.2
Ncut
\text{Ncut}
Ncut 目标函数的近似解
看完
R
a
t
i
o
C
u
t
RatioCut
R a t i o C u t 再看
N
c
u
t
Ncut
N c u t 基本就不需要怎么动脑了,方法都一样!在本节你可以当做练手,用上面方法去推导求解
N
c
u
t
Ncut
N c u t 目标函数。
我们先做一个简短回顾,已知度和子图体积
v
o
l
(
A
)
vol(A)
v o l ( A ) 的定义为
d
i
=
∑
j
=
1
n
w
i
j
v
o
l
(
A
)
:
=
∑
v
i
∈
A
d
i
\begin{aligned} & d_i = \sum_{j=1}^n w_{ij} \\ & vol(A):= \sum_{v_i\in A} d_i \\ \end{aligned}
d i = j = 1 ∑ n w i j v o l ( A ) : = v i ∈ A ∑ d i 我们从
2.3
2.3
2 . 3 节可知
N
c
u
t
Ncut
N c u t 目标函数如下
N
c
u
t
(
A
1
,
A
2
,
.
.
.
,
A
c
)
:
=
∑
k
=
1
c
C
u
t
(
A
k
,
A
‾
k
)
v
o
l
(
A
k
)
=
1
2
∑
k
=
1
c
W
(
A
k
,
A
‾
k
)
v
o
l
(
A
k
)
(3.14)
Ncut(A_1,A_2,...,A_c) := \sum_{k=1}^c \frac{Cut(A_k,\overline A_k)}{vol(A_k)} = \frac12 \sum_{k=1}^c \frac{W(A_k,\overline A_k)}{vol(A_k)} \tag{3.14}
N c u t ( A 1 , A 2 , . . . , A c ) : = k = 1 ∑ c v o l ( A k ) C u t ( A k , A k ) = 2 1 k = 1 ∑ c v o l ( A k ) W ( A k , A k ) ( 3 . 1 4 ) 和前面一样,我们先针对二聚类 问题定义如下指示向量
f
∈
R
n
f\in R^n
f ∈ R n
f
i
=
{
v
o
l
(
A
‾
)
v
o
l
(
A
)
if
v
i
∈
A
−
v
o
l
(
A
)
v
o
l
(
A
‾
)
if
v
i
∈
A
‾
(3.15)
f_i= \begin{cases} \sqrt{\frac{vol(\overline A)}{vol(A)}} \quad \text{if } v_i \in A \\ -\sqrt{\frac{vol(A)}{vol(\overline A)}} \quad \text{if } v_i \in \overline A \\ \end{cases} \tag{3.15}
f i = ⎩ ⎨ ⎧ v o l ( A ) v o l ( A )
if v i ∈ A − v o l ( A ) v o l ( A )
if v i ∈ A ( 3 . 1 5 )
现在,我们尝试用非标准化 的拉普拉斯矩阵 的目标函数推导一下
f
T
L
f
=
1
2
∑
i
=
1
n
∑
j
=
1
n
w
i
j
(
f
i
−
f
j
)
2
=
1
2
∑
v
i
∈
A
,
v
j
∈
A
‾
w
i
j
(
v
o
l
(
A
‾
)
v
o
l
(
A
)
+
v
o
l
(
A
)
v
o
l
(
A
‾
)
)
2
+
1
2
∑
v
i
∈
A
‾
,
v
j
∈
A
w
i
j
(
−
v
o
l
(
A
)
v
o
l
(
A
‾
)
−
v
o
l
(
A
‾
)
v
o
l
(
A
)
)
2
=
c
u
t
(
A
,
A
‾
)
(
v
o
l
(
A
‾
)
v
o
l
(
A
)
+
v
o
l
(
A
)
v
o
l
(
A
‾
)
+
2
)
=
c
u
t
(
A
,
A
‾
)
(
v
o
l
(
A
‾
)
+
v
o
l
(
A
)
v
o
l
(
A
)
+
v
o
l
(
A
)
+
v
o
l
(
A
‾
)
v
o
l
(
A
‾
)
)
=
v
o
l
(
V
)
⋅
c
u
t
(
A
,
A
‾
)
(
1
v
o
l
(
A
)
+
1
v
o
l
(
A
‾
)
)
=
v
o
l
(
V
)
⋅
N
c
u
t
(
A
,
A
‾
)
(3.16)
\begin{aligned} f^TLf & =\frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n w_{ij}(f_i-f_j)^2 \\ & = \frac{1}{2} \sum_{v_i\in A,v_j\in \overline A} w_{ij}(\sqrt{\frac{vol(\overline A)}{vol(A)}} +\sqrt{\frac{vol(A)}{vol(\overline A)}} )^2 + \frac{1}{2} \sum_{v_i\in \overline A,v_j\in A} w_{ij}(-\sqrt{\frac{vol(A)}{vol(\overline A)}} - \sqrt{\frac{vol(\overline A)}{vol(A)}} )^2 \\ & =cut(A,\overline A)(\frac{vol(\overline A)}{vol(A)}+\frac{vol(A)}{vol(\overline A)}+2)\\ & =cut(A,\overline A)(\frac{vol(\overline A)+vol(A)}{vol(A)}+\frac{vol(A)+vol(\overline A)}{vol(\overline A)})\\ &=vol(V) \cdot cut(A,\overline A)(\frac{1}{vol(A)}+\frac{1}{vol(\overline A)})\\ &=vol(V) \cdot Ncut(A,\overline A) \end{aligned} \tag{3.16}
f T L f = 2 1 i = 1 ∑ n j = 1 ∑ n w i j ( f i − f j ) 2 = 2 1 v i ∈ A , v j ∈ A ∑ w i j ( v o l ( A ) v o l ( A )
+ v o l ( A ) v o l ( A )
) 2 + 2 1 v i ∈ A , v j ∈ A ∑ w i j ( − v o l ( A ) v o l ( A )
− v o l ( A ) v o l ( A )
) 2 = c u t ( A , A ) ( v o l ( A ) v o l ( A ) + v o l ( A ) v o l ( A ) + 2 ) = c u t ( A , A ) ( v o l ( A ) v o l ( A ) + v o l ( A ) + v o l ( A ) v o l ( A ) + v o l ( A ) ) = v o l ( V ) ⋅ c u t ( A , A ) ( v o l ( A ) 1 + v o l ( A ) 1 ) = v o l ( V ) ⋅ N c u t ( A , A ) ( 3 . 1 6 ) 得到和我们预期一样的结论,同时对于指示向量的正交性,我们有
D
f
⊥
1
Df \bot \boldsymbol{1}
D f ⊥ 1 ,证明如下
(
D
f
)
T
1
=
∑
i
=
1
n
d
i
f
i
⋅
1
=
∑
v
i
∈
A
d
i
v
o
l
(
A
‾
)
v
o
l
(
A
)
−
∑
v
i
∈
A
‾
d
i
v
o
l
(
A
)
v
o
l
(
A
‾
)
=
v
o
l
(
A
)
v
o
l
(
A
‾
)
v
o
l
(
A
)
−
v
o
l
(
A
‾
)
v
o
l
(
A
)
v
o
l
(
A
‾
)
=
0
(Df)^T \boldsymbol{1}=\sum_{i=1}^n d_i f_i\cdot 1 = \sum_{v_i\in A} d_{i}\sqrt{\frac{vol(\overline A)}{vol(A)}} - \sum_{v_i\in \overline A} d_i \sqrt{\frac{vol(A)}{vol(\overline A)}} = vol(A)\sqrt{\frac{vol(\overline A)}{vol(A)}}- vol(\overline A)\sqrt{\frac{vol(A)}{vol(\overline A)}} = 0
( D f ) T 1 = i = 1 ∑ n d i f i ⋅ 1 = v i ∈ A ∑ d i v o l ( A ) v o l ( A )
− v i ∈ A ∑ d i v o l ( A ) v o l ( A )
= v o l ( A ) v o l ( A ) v o l ( A )
− v o l ( A ) v o l ( A ) v o l ( A )
= 0 同时我们还发现
f
T
D
f
f^TDf
f T D f 内积可得到一个常数 。
f
T
D
f
=
∑
i
=
1
n
f
i
d
i
f
i
=
∑
v
i
∈
A
d
i
v
o
l
(
A
‾
)
v
o
l
(
A
)
+
∑
v
i
∈
A
‾
d
i
v
o
l
(
A
)
v
o
l
(
A
‾
)
=
v
o
l
(
A
)
v
o
l
(
A
‾
)
v
o
l
(
A
)
+
v
o
l
(
A
‾
)
v
o
l
(
A
)
v
o
l
(
A
‾
)
=
v
o
l
(
V
)
=
∑
i
=
1
n
d
i
f^TDf=\sum_{i=1}^n f_i d_i f_i = \sum_{v_i\in A} d_i\frac{vol(\overline A)}{vol(A)} + \sum_{v_i\in \overline A} d_i \frac{vol(A)}{vol(\overline A)} = vol(A) \frac{vol(\overline A)}{vol(A)} + vol(\overline A)\frac{vol(A)}{vol(\overline A)} = vol(V)= \sum_{i=1}^n d_i
f T D f = i = 1 ∑ n f i d i f i = v i ∈ A ∑ d i v o l ( A ) v o l ( A ) + v i ∈ A ∑ d i v o l ( A ) v o l ( A ) = v o l ( A ) v o l ( A ) v o l ( A ) + v o l ( A ) v o l ( A ) v o l ( A ) = v o l ( V ) = i = 1 ∑ n d i 这样,我们就可以得到完整的等价目标函数
min
f
∈
R
n
f
T
L
f
s
.
t
D
f
⊥
1
f
as defined in Eq. (3.15)
f
T
D
f
=
v
o
l
(
V
)
(
f
T
D
f
>
0
)
(3.17)
\begin{aligned} & \min_{f\in R^n} \; f^TLf \\ & s.t \quad Df \bot \boldsymbol{1} \\ & \quad \quad f \text{ as defined in Eq. (3.15)} \\ & \quad \quad f^TDf = vol(V) \quad (f^TDf > 0 ) \\ \end{aligned} \tag{3.17}
f ∈ R n min f T L f s . t D f ⊥ 1 f as defined in Eq. (3.15) f T D f = v o l ( V ) ( f T D f > 0 ) ( 3 . 1 7 ) 将问题松弛 去掉约束
f
as defined in Eq. (3.15)
f \text{ as defined in Eq. (3.15)}
f as defined in Eq. (3.15) 后的目标函数为
min
f
∈
R
n
f
T
L
f
s
.
t
D
f
⊥
1
f
T
D
f
=
v
o
l
(
V
)
(
f
T
D
f
>
0
)
(3.18)
\begin{aligned} & \min_{f\in R^n} \; f^TLf \\ & s.t \quad Df \bot \boldsymbol{1} \\ & \quad \quad f^TDf = vol(V) \quad (f^TDf > 0 ) \\ \end{aligned} \tag{3.18}
f ∈ R n min f T L f s . t D f ⊥ 1 f T D f = v o l ( V ) ( f T D f > 0 ) ( 3 . 1 8 ) 我们将在
3.3.3
3.3.3
3 . 3 . 3 节对
(
3.18
)
(3.18)
( 3 . 1 8 ) 的
L
L
L 进行归一化,以下我们先简述
L
L
L 的归一化方法以及我们为什么要对
L
L
L 归一化。
3.3 归一化图拉普拉斯矩阵
3.3.1 两种归一化
L
L
L 矩阵及其性质
由于
N
c
u
t
Ncut
N c u t (Normalized Cut) 目标函数是归一化 的,因此我们需要了解一下归一化方法 ,以及我们为什么要归一化。目前文献[1]中主要的归一化图拉普拉斯矩阵有两种 ,它们彼此之间也关系密切。
L
s
y
m
:
=
D
−
1
2
L
D
−
1
2
=
I
−
D
−
1
2
W
D
−
1
2
L
r
w
:
=
D
−
1
L
=
I
−
D
−
1
W
(3.19)
\begin{aligned} & L_{sym}:=D^{-\frac12}LD^{-\frac12}=I- D^{-\frac12}WD^{-\frac12} \\ & L_{rw}:=D^{-1}L=I- D^{-1}W\\ \tag{3.19} \end{aligned}
L s y m : = D − 2 1 L D − 2 1 = I − D − 2 1 W D − 2 1 L r w : = D − 1 L = I − D − 1 W ( 3 . 1 9 ) 其中第一个
L
s
y
m
L_{sym}
L s y m 定义为对称型(symmetric) 归一化矩阵,第二个
L
r
w
L_{rw}
L r w 定义为随机游走型(random walk) 归一化矩阵。其中,随机游走在谱聚类中可以表示为从一个顶点到另一个顶点 的随机过程 ,而谱聚类试图找到一种图的划分,使得随机游走长时间停留在同一个类簇内 ,很少在簇之间跳跃。
(1)
L
s
y
m
L_{sym}
L s y m 与
L
r
w
L_{rw}
L r w 的性质
归一化拉普拉斯矩阵满足以下性质:
对于所有指示向量
f
∈
R
n
f\in R^n
f ∈ R n ,有
f
T
L
s
y
m
f
=
1
2
∑
i
=
1
n
∑
j
=
1
n
w
i
j
(
f
i
d
i
−
f
j
d
j
)
2
f^TL_{sym}f = \frac1 2 \sum_{i=1}^n \sum_{j=1}^n w_{ij}(\frac{f_i}{\sqrt{d_i}} - \frac{f_j}{\sqrt{d_j}})^2
f T L s y m f = 2 1 i = 1 ∑ n j = 1 ∑ n w i j ( d i
f i − d j
f j ) 2
若
L
s
y
m
L_{sym}
L s y m 的特征向量为
w
w
w ,
L
r
w
L_{rw}
L r w 的特征向量为
u
u
u 。
λ
\lambda
λ 同时为
L
s
y
m
L_{sym}
L s y m 和
L
r
w
L_{rw}
L r w 的特征值 当且仅当
w
=
D
1
/
2
u
w=D^{1/2}u
w = D 1 / 2 u (解释 :将下式两边左乘
D
−
1
/
2
D^{-1/2}
D − 1 / 2 同时展开
L
s
y
m
L_{sym}
L s y m 可得)
L
s
y
m
w
=
λ
w
D
−
1
2
D
−
1
2
L
D
−
1
2
w
=
λ
D
−
1
2
w
D
−
1
L
u
=
λ
u
(
let
u
=
D
−
1
2
w
)
L
r
w
u
=
λ
u
⇒
w
=
D
1
2
u
\begin{aligned} L_{sym}w & = \lambda w \\ D^{-\frac12}D^{-\frac12}LD^{-\frac12}w &= \lambda D^{-\frac12}w \\ D^{-1}Lu &= \lambda u \quad(\text{let }u=D^{-\frac12}w) \\ L_{rw}u &= \lambda u \\ \Rightarrow w &= D^{\frac 12}u \\ \end{aligned}
L s y m w D − 2 1 D − 2 1 L D − 2 1 w D − 1 L u L r w u ⇒ w = λ w = λ D − 2 1 w = λ u ( let u = D − 2 1 w ) = λ u = D 2 1 u
L
r
w
L_{rw}
L r w 的特征向量为
u
u
u ,特征值为
λ
\lambda
λ 当且仅当
λ
\lambda
λ 和
u
u
u 能解广义特征问题
L
u
=
λ
D
u
Lu = \lambda Du
L u = λ D u (解释 :将下式两边左乘
D
D
D 同时展开
L
r
w
L_{rw}
L r w 可得)
L
r
w
u
=
λ
u
D
D
−
1
L
u
=
λ
D
u
⇒
L
u
=
λ
D
u
\begin{aligned} L_{rw}u & = \lambda u \\ DD^{-1}Lu & = \lambda Du \\ \Rightarrow Lu &= \lambda Du \\ \end{aligned}
L r w u D D − 1 L u ⇒ L u = λ u = λ D u = λ D u
L
r
w
L_{rw}
L r w 的特征值 为
0
0
0 时,其对应特征向量 为常数向量
1
\boldsymbol{1}
1 ;
L
s
y
m
L_{sym}
L s y m 的特征值 为
0
0
0 时,其对应特征向量 为
D
1
/
2
1
D^{1/2}\boldsymbol{1}
D 1 / 2 1 。(解释 :已知
L
L
L 是实对称矩阵,且行和 为0,因此)
L
1
=
0
⇒
D
−
1
L
1
=
0
⇒
L
r
w
1
=
0
⋅
1
\begin{aligned} L \boldsymbol{1} & =0 \\ \Rightarrow D^{-1}L\boldsymbol{1}& = 0 \\ \Rightarrow L_{rw} \boldsymbol{1} &= 0 \cdot \boldsymbol{1}\\ \end{aligned}
L 1 ⇒ D − 1 L 1 ⇒ L r w 1 = 0 = 0 = 0 ⋅ 1
L
s
y
m
L_{sym}
L s y m 同理
L
1
=
0
⇒
D
−
1
2
L
I
1
=
0
⇒
D
−
1
2
L
D
−
1
2
D
1
2
1
=
0
⇒
L
s
y
m
D
1
2
1
=
0
⋅
D
1
2
1
⇒
L
s
y
m
w
=
0
⋅
w
(
let
w
=
D
1
2
1
)
\begin{aligned} L \boldsymbol{1} & =0 \\ \Rightarrow D^{-\frac12} L I \boldsymbol{1} & = 0 \\ \Rightarrow D^{-\frac12} L D^{-\frac12} D^{\frac12}\boldsymbol{1} &= 0 \\ \Rightarrow L_{sym} D^{\frac12}\boldsymbol{1} &= 0 \cdot D^{\frac12}\boldsymbol{1} \\ \Rightarrow L_{sym} w &= 0 \cdot w \quad(\text{let }w=D^{\frac12}\boldsymbol{1}) \\ \end{aligned}
L 1 ⇒ D − 2 1 L I 1 ⇒ D − 2 1 L D − 2 1 D 2 1 1 ⇒ L s y m D 2 1 1 ⇒ L s y m w = 0 = 0 = 0 = 0 ⋅ D 2 1 1 = 0 ⋅ w ( let w = D 2 1 1 )
L
s
y
m
L_{sym}
L s y m 和
L
r
w
L_{rw}
L r w 均是半正定矩阵 并有
n
n
n 个非负实值 特征值
0
=
λ
1
≤
.
.
.
≤
λ
n
0=\lambda_1\le ... \le\lambda_n
0 = λ 1 ≤ . . . ≤ λ n (解释 :
L
s
y
m
L_{sym}
L s y m 由性质
1
1
1 可得,
L
r
w
L_{rw}
L r w 由性质
2
2
2 可得)
(2)
L
s
y
m
L_{sym}
L s y m 和
L
r
w
L_{rw}
L r w 的谱与连通分量的数量
当图
G
G
G 是一个仅有非负权重的无向图
时,
L
s
y
m
L_{sym}
L s y m 与
L
r
w
L_{rw}
L r w 的
0
0
0 特征值 (0谱 )的个数
k
k
k 就是图中
A
1
,
.
.
.
,
A
k
A_1,...,A_k
A 1 , . . . , A k 连通分量的个数
k
k
k 。不同在于
L
r
w
L_{rw}
L r w 中,
0
0
0 特征值 对应的特征空间 由这些连通分量 对应的指示向量
1
A
1
,
.
.
.
,
1
A
k
\boldsymbol{1}_{A_1},...,\boldsymbol{1}_{A_k}
1 A 1 , . . . , 1 A k 张成(span) ,而在
L
s
y
m
L_{sym}
L s y m 中由
D
1
/
2
1
A
1
,
.
.
.
,
D
1
/
2
1
A
k
D^{1/2}\boldsymbol{1}_{A_1},...,D^{1/2}\boldsymbol{1}_{A_k}
D 1 / 2 1 A 1 , . . . , D 1 / 2 1 A k 张成 。(具体证法与
3.1.2
3.1.2
3 . 1 . 2 节相同)
3.3.2 为什么要归一化?因为聚类目标
我们都知道,聚类的总体目标一般有两个,以下以二聚类 为例: ①类间 样本相似度低 :在图中,类
A
A
A 与
A
‾
\overline A
A 类间其度量方式可表示为
C
u
t
(
A
,
A
‾
)
Cut(A,\overline A)
C u t ( A , A ) 。 ②类内 样本之间相似度高 :在图中,类内之间的相似度可以表示为
W
(
A
,
A
)
W(A,A)
W ( A , A ) 。
其中,我们从
R
a
t
i
o
C
u
t
(
V
)
RatioCut(V)
R a t i o C u t ( V ) 和
N
c
u
t
(
V
)
Ncut(V)
N c u t ( V ) 的目标函数中都可以找到
C
u
t
(
A
,
A
‾
)
Cut(A,\overline A)
C u t ( A , A ) ,因此非归一化 和归一化 方法都满足了最小化类间样本相似度 。但是,对于第二个聚类目标有
W
(
A
,
A
)
=
W
(
A
,
V
)
−
W
(
A
,
A
‾
)
=
v
o
l
(
A
)
−
C
u
t
(
A
,
A
‾
)
W(A,A) = W(A,V) - W(A,\overline A) = vol(A) - Cut(A,\overline A)
W ( A , A ) = W ( A , V ) − W ( A , A ) = v o l ( A ) − C u t ( A , A ) 因此,类内样本相似度最大 可以用最大化
v
o
l
(
A
)
vol(A)
v o l ( A ) 并最小化
C
u
t
(
A
,
A
‾
)
Cut(A,\overline A)
C u t ( A , A ) 表示。可见,归一化
N
c
u
t
(
V
)
Ncut(V)
N c u t ( V ) 可完整的实现第二个聚类目标,即归一化方法可以同时达到两个聚类目标 !
3.3.3 再回到
Ncut
\text{Ncut}
Ncut 求解
① 二聚类
N
c
u
t
Ncut
N c u t 在
3.2
3.2
3 . 2 节二聚类
N
c
u
t
Ncut
N c u t 中,我们留了个小尾巴,已知如下非归一化
N
c
u
t
Ncut
N c u t 目标函数,现在我们将对其归一化。
min
f
∈
R
n
f
T
L
f
s
.
t
D
f
⊥
1
f
T
D
f
=
v
o
l
(
V
)
(
f
T
D
f
>
0
)
\begin{aligned} & \min_{f\in R^n} \; f^TLf \\ & s.t \quad Df \bot \boldsymbol{1} \\ & \quad \quad f^TDf = vol(V) \quad (f^TDf > 0 ) \\ \end{aligned}
f ∈ R n min f T L f s . t D f ⊥ 1 f T D f = v o l ( V ) ( f T D f > 0 ) 我们令
w
:
=
D
1
/
2
f
w:=D^{1/2}f
w : = D 1 / 2 f ,则
f
=
D
−
1
/
2
w
f=D^{-1/2}w
f = D − 1 / 2 w ,则问题转化成
min
w
∈
R
n
w
T
D
−
1
2
L
D
−
1
2
w
(
w
T
L
s
y
m
w
)
s
.
t
w
⊥
D
1
2
1
w
T
w
=
v
o
l
(
V
)
(
w
T
w
>
0
)
(3.20)
\begin{aligned} & \min_{w\in R^n} \; w^TD^{-\frac12}LD^{-\frac12}w \quad(w^TL_{sym}w) \\ & s.t \quad w \bot D^{\frac12}\boldsymbol{1} \\ & \quad \quad w^Tw = vol(V) \quad (w^Tw > 0 ) \\ \end{aligned} \tag{3.20}
w ∈ R n min w T D − 2 1 L D − 2 1 w ( w T L s y m w ) s . t w ⊥ D 2 1 1 w T w = v o l ( V ) ( w T w > 0 ) ( 3 . 2 0 ) 对于上式
(
3.20
)
(3.20)
( 3 . 2 0 ) 可以发现我们用的是对称型归一化 方法,即
D
−
1
2
L
D
−
1
2
=
L
s
y
m
D^{-\frac12}LD^{-\frac12}=L_{sym}
D − 2 1 L D − 2 1 = L s y m ,并且其特征值为0 时对应的特征向量为
D
1
2
1
D^{\frac12}\boldsymbol{1}
D 2 1 1 ,我们可以像处理非归一化问题一样取出
L
s
y
m
L_{sym}
L s y m 的第二小特征值对应的特征向量作为最优解。
若用随机游走型归一化 方法,我们再变回原目标函数,然后通过
L
u
=
λ
D
u
Lu=\lambda Du
L u = λ D u 选取
L
r
w
L_{rw}
L r w 的第二小特征值对应特征向量
f
f
f 作为最优解即可。
② 多聚类
N
c
u
t
Ncut
N c u t
此处和
R
a
t
i
o
C
u
t
RatioCut
R a t i o C u t 多聚类一样,我们定义指示向量
h
k
=
(
h
(
1
,
k
)
,
h
(
2
,
k
)
,
.
.
.
,
h
(
n
,
k
)
)
T
∈
R
n
×
1
h_{k}=(h_{(1,k)},h_{(2,k)},...,h_{(n,k)})^T \in R^{n\times 1}
h k = ( h ( 1 , k ) , h ( 2 , k ) , . . . , h ( n , k ) ) T ∈ R n × 1 (其中:
k
=
1
,
2
,
.
.
.
,
c
k=1,2,...,c
k = 1 , 2 , . . . , c )并满足如下条件:
h
i
k
=
{
1
vol(
A
k
)
i
f
v
i
∈
A
k
0
o
t
h
e
r
w
i
s
e
(
i
=
1
,
.
.
.
,
n
;
k
=
1
,
.
.
.
,
c
)
(3.21)
h_{ik} = \begin{cases} \frac{1}{\sqrt {\text{vol(}A_k)}} & if \; v_i \in A_k \\ 0 & otherwise \tag{3.21} \end{cases} \quad (i = 1,...,n;k=1,...,c)
h i k = { vol( A k )
1 0 i f v i ∈ A k o t h e r w i s e ( i = 1 , . . . , n ; k = 1 , . . . , c ) ( 3 . 2 1 ) 现在,我们将这
c
c
c 个指示向量
h
k
h_k
h k 组合成一个指示矩阵
H
∈
R
n
×
c
H\in R^{n\times c}
H ∈ R n × c ,由于我们假设每个样本以概率为1属于某个类,因此矩阵
H
H
H 当中的每一列指示向量 正交(orthonormal) 于其他任何一列向量 。因此,我们得到
H
T
H
=
I
,
h
i
T
D
h
i
=
1
H^TH=I,h_i^TDh_i=1
H T H = I , h i T D h i = 1 以及
h
i
T
D
h
i
=
c
u
t
(
A
i
,
A
‾
i
)
/
v
o
l
(
A
i
)
h_i^TDh_i=cut(A_i,\overline A_i)/vol(A_i)
h i T D h i = c u t ( A i , A i ) / v o l ( A i ) 。因此,我们可以写出如下目标函数
min
H
∈
R
n
×
c
Tr(
H
T
L
H
)
s
.
t
H
T
D
H
=
I
H
as defined in Eq.(3.21)
(3.22)
\begin{aligned} & \min_{H\in R^{n\times c}} \; \text{Tr(}H^TLH) \\ & \quad s.t \quad \; H^TDH = I \\ & \quad \quad \quad \; H \text{ as defined in Eq.(3.21)}\\ \end{aligned} \tag{3.22}
H ∈ R n × c min Tr( H T L H ) s . t H T D H = I H as defined in Eq.(3.21) ( 3 . 2 2 ) 现在,我们松弛离散问题为连续问题后,再令
T
=
D
1
/
2
H
T=D^{1/2}H
T = D 1 / 2 H ,则
H
=
D
−
1
/
2
T
H=D^{-1/2}T
H = D − 1 / 2 T ,如此得到的转换目标函数为
min
T
∈
R
n
×
c
Tr(
T
T
D
−
1
/
2
L
D
−
1
/
2
T
)
s
.
t
T
T
T
=
I
(3.23)
\begin{aligned} & \min_{T\in R^{n\times c}} \; \text{Tr(}T^TD^{-1/2}LD^{-1/2}T) \\ & \quad s.t \quad \; T^TT = I \\ \end{aligned} \tag{3.23}
T ∈ R n × c min Tr( T T D − 1 / 2 L D − 1 / 2 T ) s . t T T T = I ( 3 . 2 3 ) 这样我们可以轻松地用
L
s
y
m
L_{sym}
L s y m 的前
k
k
k 小特征值对应的特征向量作为问题的解。如果要用随机游走型归一化 方法,我们再变回原目标函数(令
H
=
D
−
1
/
2
T
H=D^{-1/2}T
H = D − 1 / 2 T ),然后通过
L
u
=
λ
D
u
Lu=\lambda Du
L u = λ D u 选取
L
r
w
L_{rw}
L r w 的前
k
k
k 小特征值对应的特征向量
u
u
u 作为最优解即可,这就是
Shi and Malik (2000)
\text{Shi and Malik (2000)}
Shi and Malik (2000) 提出的随机游走型归一化谱聚类算法。
3.3.4 三种拉普拉斯矩阵的适用场景
三种拉普拉斯矩阵中,非归一化有1种,归一化2种。其中归一化能很好处理图中顶点的度的分布是不均匀的情况,所以我们推荐使用归一化拉普拉斯矩阵 。其次,对于两种归一化矩阵,我们从计算优势 和稳定性 的角度上更加推荐随机游走型 矩阵
L
r
w
L_{rw}
L r w 。
拉普拉斯矩阵
是否归一化
处理顶点的度是均匀分布的图
处理顶点的度分布差异大
计算优势
特征向量为指示向量
指示向量受度矩阵影响
L
L
L
非归一化
✔️
❌
优
✔️
较小
L
s
y
m
L_{sym}
L s y m
归一化
✔️
✔️
中
D
1
/
2
×
D^{1/2}\times
D 1 / 2 × 指示向量
较大
L
r
w
L_{rw}
L r w
归一化
✔️
✔️
良
✔️
较小
四、谱聚类算法具体实现
4.1 非归一化谱聚类算法
输入:[1]相似度矩阵
W
∈
R
n
×
n
W\in R^{n\times n}
W ∈ R n × n ;[2]聚类的个数
c
c
c ①计算非归一化拉普拉斯矩阵
L
=
D
−
W
L=D-W
L = D − W 。 ②对
L
L
L 矩阵分解,取前
k
k
k 小个特征值对应的特征向量
u
1
,
.
.
.
,
u
k
u_1,...,u_k
u 1 , . . . , u k (先去除0特征值对应特征向量, 然后取前
k
k
k 小特征向量,当
c
=
2
c=2
c = 2 时,一般令
k
=
2
k=2
k = 2 )。 ③将特征向量
u
1
,
.
.
.
,
u
k
u_1,...,u_k
u 1 , . . . , u k 组成矩阵
U
∈
R
n
×
k
U\in R^{n\times k}
U ∈ R n × k ④将矩阵
U
U
U 中的
n
n
n 行向量按k-means 算法聚成
c
c
c 个类簇
C
1
,
.
.
.
,
C
c
C_1,...,C_c
C 1 , . . . , C c
4.2 归一化谱聚类算法
4.2.1
Shi and Malik
(
2000
)
\text{Shi and Malik}(2000)
Shi and Malik ( 2 0 0 0 ) 算法
输入:[1]相似度矩阵
W
∈
R
n
×
n
W\in R^{n\times n}
W ∈ R n × n ;[2]聚类的个数
c
c
c ①计算非归一化拉普拉斯矩阵
L
=
D
−
W
L=D-W
L = D − W 。 ②根据广义特征问题
L
u
=
λ
D
u
Lu = \lambda Du
L u = λ D u 对
L
L
L 矩阵分解,取前
k
k
k 小个特征值对应的特征向量
u
1
,
.
.
.
,
u
k
u_1,...,u_k
u 1 , . . . , u k 。 ③将特征向量
u
1
,
.
.
.
,
u
k
u_1,...,u_k
u 1 , . . . , u k 组成矩阵
U
∈
R
n
×
k
U\in R^{n\times k}
U ∈ R n × k ④将矩阵
U
U
U 中的
n
n
n 行向量按k-means 算法聚成
c
c
c 个类簇
C
1
,
.
.
.
,
C
c
C_1,...,C_c
C 1 , . . . , C c
从
Shi
\text{Shi}
Shi 的算法中,我们可以看到他用的是随机游走型 拉普拉斯矩阵
L
r
w
L_{rw}
L r w 的特征向量,因此该算法的归一化方法是随机游走型 。
4.2.2
Ng, Jordan, and Weiss
(
2002
)
\text{Ng, Jordan, and Weiss}(2002)
Ng, Jordan, and Weiss ( 2 0 0 2 ) 算法
输入:[1]相似度矩阵
W
∈
R
n
×
n
W\in R^{n\times n}
W ∈ R n × n ;[2]聚类的个数
c
c
c ①计算归一化对称型拉普拉斯矩阵
L
s
y
m
=
I
−
D
−
1
/
2
W
D
−
1
/
2
L_{sym}=I- D^{-1/2}WD^{-1/2}
L s y m = I − D − 1 / 2 W D − 1 / 2 。 ②对
L
s
y
m
L_{sym}
L s y m 矩阵分解,取前
k
k
k 小个特征值对应的特征向量
u
1
,
.
.
.
,
u
k
u_1,...,u_k
u 1 , . . . , u k 。 ③将特征向量
u
1
,
.
.
.
,
u
k
u_1,...,u_k
u 1 , . . . , u k 组成矩阵
U
∈
R
n
×
k
U\in R^{n\times k}
U ∈ R n × k ④将矩阵
U
U
U 的每个值
u
i
j
u_{ij}
u i j 按行 进行归一化得到
t
i
j
t_{ij}
t i j ,得到矩阵
T
∈
R
n
×
k
T\in R^{n\times k}
T ∈ R n × k
t
i
j
=
u
i
j
∑
z
=
1
k
u
i
z
2
t_{ij} = \frac{u_{ij}}{\sqrt{\sum_{z=1}^k u_{iz}^2}}
t i j = ∑ z = 1 k u i z 2
u i j ⑤将矩阵
T
T
T 中的
n
n
n 行向量按k-means 算法聚成
c
c
c 个类簇
C
1
,
.
.
.
,
C
c
C_1,...,C_c
C 1 , . . . , C c
我们可以看出
Ng
\text{Ng}
Ng 的算法用的是对称型归一化 拉普拉斯矩阵
L
s
y
m
L_{sym}
L s y m 。相比前面的两个算法,
Ng
\text{Ng}
Ng 的算法在第④行又进行了第二次归一化 。这样做是否多此一举呢?
这就要追溯到矩阵的扰动理论(Perturbation theory)
4.2.3 扰动理论(
Perturbation theory
\text{Perturbation theory}
Perturbation theory )
扰动理论 是在对矩阵
A
A
A 施加一个微小的扰动
H
H
H 后(得到扰动后的矩阵
A
~
:
=
A
+
H
\tilde A:= A + H
A ~ : = A + H ),研究 矩阵
A
A
A 对应的特征值 和特征向量 是如何变化的。而大多扰动理论表明
A
A
A 与
A
~
\tilde A
A ~ 的特征值和特征向量 之间的距离 是有界的 ,该界 依赖于一个常数 和
H
H
H 的范数的乘积 。(咱们就理解它是有界的就行)
在最初
C
u
t
Cut
C u t 目标函数中,我们曾定义理想型指示向量
f
i
=
(
0
,
0
,
1
,
0
,
.
.
,
0
)
T
∈
N
n
f_i = (0,0,1,0,..,0)^T\in N^{n}
f i = ( 0 , 0 , 1 , 0 , . . , 0 ) T ∈ N n ,是为了确定样本
i
i
i 属于某个类而不属于其他类,这样不同类别间 的两个样本的相似度 为
0
0
0 ,而事实上当我们将离散问题 松弛为连续问题 后,指示向量 就变为了实值向量 ,也就导致此时不同类别间 的两个样本的相似度 不为
0
0
0 。而我们认为此时的拉普拉斯矩阵
L
L
L 是理想型例子经过扰动后 的矩阵,接着扰动理论可以告诉我们此时矩阵分解 得到的实值指示向量 和原来的指示向量非常接近 !只要这个扰动不足够大 ,我们用k-means 可以得到相同的聚类效果 !
扰动理论带来的近似 可以让我们更容易 的求解问题,与此同时,这也是一把双刃剑 。我们在一开始定义二聚类指示向量 时,认为
f
i
=
0
f_{i}=0
f i = 0 表示第
i
i
i 个样本不属于第
1
1
1 个类簇,反之则属于这个类簇。因此,当实值指示向量 中的某个值非常小(接近
0
0
0 ) 时,即使这个样本属于该类,也不会被聚到该类中 !而导致不同指示向量之间 实值差异巨大 的核心是顶点的度 的不均匀分布 !
也许你会认为,我们之前做的两种归一化不是都解决了度的不均匀分布现象嘛?实际上已解决的是随机游走
L
r
w
L_{rw}
L r w 而不是对称型
L
s
y
m
L_{sym}
L s y m 。因为
L
r
w
L_{rw}
L r w 中
0
0
0 特征值对应的特征向量是常数向量
1
\boldsymbol{1}
1 ,而
L
s
y
m
L_{sym}
L s y m 从
0
0
0 特征值到第
k
k
k 个特征值对应特征向量是
D
1
/
2
1
,
D
1
/
2
u
2
,
.
.
,
D
1
/
2
u
k
D^{1/2}\boldsymbol{1},D^{1/2}u_2,..,D^{1/2}u_k
D 1 / 2 1 , D 1 / 2 u 2 , . . , D 1 / 2 u k ,因此如果某个顶点的度
D
i
i
D_{ii}
D i i 很小 ,则第
i
i
i 个指示向量 的整体
k
k
k 个分量数值均偏大 ,这将导致在进行k-means 聚类时该样本点容易被孤立 !反之亦然。因此,我们需要对每个指示向量中的每个分量按行 (类比
Softmax
\text{Softmax}
Softmax 操作)进行归一化以降低 不同顶点的度 对指示向量 的影响 。
但这种方式也不总是
work
\text{work}
work ,比如对于二聚类情况,我们假设第
i
i
i 个指示向量的两个分量分别为
u
~
i
1
=
1
6
≈
0.41
,
u
~
i
1
=
1
12
≈
0.29
\tilde u_{i1}=\sqrt{\frac{1}{6}}\approx0.41,\; \tilde u_{i1}=\sqrt{\frac{1}{12}}\approx 0.29
u ~ i 1 = 6 1
≈ 0 . 4 1 , u ~ i 1 = 1 2 1
≈ 0 . 2 9 则对它们按行 进行归一化 后为
u
~
i
1
=
u
~
i
1
⋅
1
u
~
i
1
2
+
u
~
i
2
2
≈
0.41
⋅
1
1
6
+
1
12
=
0.41
×
2
=
0.82
u
~
i
2
≈
0.29
×
2
=
0.58
\begin{aligned} & \tilde u_{i1}=\tilde u_{i1}\cdot \frac{1}{\sqrt{\tilde u_{i1}^2+\tilde u_{i2}^2}} \approx0.41 \cdot \frac{1}{\sqrt{\frac16+\frac{1}{12}}} = 0.41\times 2 = 0.82 \\ & \tilde u_{i2}\approx 0.29 \times 2 = 0.58 \end{aligned}
u ~ i 1 = u ~ i 1 ⋅ u ~ i 1 2 + u ~ i 2 2
1 ≈ 0 . 4 1 ⋅ 6 1 + 1 2 1
1 = 0 . 4 1 × 2 = 0 . 8 2 u ~ i 2 ≈ 0 . 2 9 × 2 = 0 . 5 8 我们发现当
0
<
∑
z
=
1
k
u
i
z
2
<
1
0 <\sum_{z=1}^k u_{iz}^2 < 1
0 < ∑ z = 1 k u i z 2 < 1 时,该指示向量每个分量 都会被放大 !因此,我们要慎用 对称型归一化矩阵
L
s
y
m
L_{sym}
L s y m !
4.2.4
Matlab
\text{Matlab}
Matlab 实现代码
下面以
Ng
\text{Ng}
Ng 的算法为例 【半月牙数据网盘自取】:data_moon.csv 密码:uvjm
clc, clear
X = csvread(
plot( X( : , 1 ) , X( : , 2 ) ,
%% 数据初始化
[n, ~] = size ( X) ; % 获取样本数n
W0 = zeros( n, n) ; % 全连接邻接矩阵
W = zeros( n, n) ; % 经过k近邻提取后的亲和度( 边权重) 矩阵
D = zeros( n, n) ; % 度矩阵, 亲和矩阵 每行的和 被赋值到主对角线
Knear = 10 ; % 前k个近邻
k_eigvec = 2 ; % 前k小特征值对应特征向量
sigma = 0.8 ; % 高斯核中的标准差
classCnt = 2 ; % 聚类的个数
%% 1. 图构造
% 1.1 构造一个全连接的邻接矩阵W0, 使用高斯核作为距离度量, 点对距离越近值越大
for i = 1 : n
for j = 1 : n
if i ~= j
W0( i, j) = exp ( - ( norm( X( i, : ) - X( j, : ) ) ^ 2 ) / ( 2 * sigma.^ 2 ) ) ; % 第i个样本和第j个样本的距离
end
end
end
% 1.2 构造亲和度矩阵W,使用k近邻对以上全连接邻接矩阵W0的每行进行降序排序,提取前k个值作为边( i, j) 的权值( 亲和度)
for i = 1 : n
[~, maxKIndex] = sort( W0( i, : ) ,
W( i, maxKIndex( 1 : Knear) ) = W0( i, maxKIndex( 1 : Knear) ) ; % 将前Knear大个样本作为第i个样本的邻居,其余点与该点则无边相连
end
% 1.3 使不对称的W矩阵变为实对称矩阵,否则后期求特征向量会出现复数
W = ( W
%% 2. 计算度矩阵D
for i = 1 : n
D( i, i) = sum( W( i, : ) ) ;
end
%% 3. 构造拉普拉斯矩阵,并进行对称型归一化
L = D - W;
Lsym = D^ ( - 0.5 ) * L * D^ ( - 0.5 ) ;
%% 4. 计算Lsym的前k_eigvec小的特征值和特征向量
[eigVecCol, eigValueDig] = eig( Lsym) ; % 获取Lsym的所有特征向量( 列向量返回) 和特征值( 对角矩阵返回)
eigValue = eigValueDig * ones( n, 1 ) ; % 将特征值对角矩阵转换为一个列向量,方便排序
[~, minKIndex] = sort( eigValue,
%% 5. 将前k小特征向量组合成U矩阵,并按行归一化得到T矩阵
U = eigVecCol( : , minKIndex( 2 : k_eigvec + 1 ) ) ; % 取出最前k_eigvec小个特征值( 不包含0 特征值) 对应的索引, 组合对应特征向量构建矩阵U
T = zeros( n, k_eigvec) ;
for i = 1 : n
for j = 1 : k_eigvec
T( i, j) = U( i, j) / norm( U( i) ) ;
end
end
%% 6. 使用k- means做最后的聚类
[label, MU] = k_means( T, classCnt) ;
%% 7. 输出
x_1 = X( label = = 1 , : ) ;
x_2 = X( label = = 2 , : ) ;
plot( x_1( : , 1 ) , x_1( : , 2 ) ,
title( "谱聚类效果")
现在,我们简单分析一下图构造方法中超参数
K
n
e
a
r
Knear
K n e a r 与
σ
\sigma
σ 对聚类精确度的影响,其中精确度计算公式如下
p
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
precision = \frac{TP}{TP+FP}
p r e c i s i o n = T P + F P T P 我们使用的图构造 方法是,局部连接(k-近邻)+高斯核。对应Knear(k-近邻) 值变化对聚类精确度 的影响如左图,可见当Knear<16 时对聚类影响较小 , 当Knear越大聚类精度越差 。对应
σ
\sigma
σ (高斯核标准差) ,固定 Knear = 25 后对精确度 的影响右图:
因此,基于半月牙数据,我们推荐k-近邻 取15 以内,标准差
0
≤
σ
≤
0.4
0 \le \sigma \le 0.4
0 ≤ σ ≤ 0 . 4 。不同数据参数取值准则相似,但还需要根据不同的问题进行适当微调。
五、谱聚类中值得借鉴的思想
谱聚类的成功之处在于它没有很强的假设 ,相比k-means 假设聚类的数据分布是凸 的,谱聚类可以解决很普遍的聚类问题。只要保证相似图是稀疏的 ,即使对于大数据集 ,谱聚类也可以有效地实现。一旦选择了相似图,我们只需解决一个线性问题 ,就不会陷入局部极小值或多次使用不同的初始化重新启动算法 。谱聚类的不足在于图构造方式的不同 导致其聚类结果不同,这是其聚类不稳定 的重要因素。以下总结全文用到值得借鉴的优秀思想。
分治思想,大问题分解成小问题,再合并。【one vs all】
当一个问题约束描述有些笼统,难以求解。可以引入其他参数来细化目标函数。【指示向量的引入】
遇到一个问题,先从最简单的case入手,如果能解决再继续归纳到多种case。【从二聚类到多聚类的问题讨论】
遇到不会做或者很难做的问题,想一想是否可以转化为我们会做的问题【离散问题松弛为连续问题】
遇到问题尝试从对偶的角度看待,也许会有新的思路。【
H
H
H 矩阵从列的角度转变到从行的角度看】
写到这里终于可以完结撒花啦✿✿ヽ(°▽°)ノ✿ 长篇大论写了这么多,感谢你能耐心读到这里,文中如有表述不当地方欢迎指出,本文部分细节还会间歇性更新~
参考文献
[1] Von Luxburg U. A tutorial on spectral clustering [J]. Statistics and computing, 2007, 17(4): 395-416.【有助于理解拉普拉斯矩阵及其性质和指示向量的引入,教程中给予了必要步骤的证明,入门必看,不过有些细节省略了,因此深入还需要再看其他资料辅助】 [2] 图卷积神经网络(Graph Convolutional Network, GCN) [3] 谱图理论(spectral graph theory) [4] Spectral Graph Theory 谱图论简谈图的特征值和拉普拉斯型 【有助于理解矩阵的谱】 [5] 从拉普拉斯矩阵说到谱聚类 【有助于理解目标函数的转换】 [6] 谱聚类算法(Spectral Clustering) 【图例丰富】 [7] 拉普拉斯矩阵(Laplace Matrix)与瑞利熵(Rayleigh quotient) 【瑞利熵证明清晰】 [8] 瑞利熵与广义瑞利熵 【补充厄尔米特矩阵的解释】 [9] 刘建平.谱聚类(spectral clustering)原理总结 【算法步骤详细】 [10] ayhhh.关于谱聚类(Spectral Clustering)的一个总结 【准则分类讨论】 [11] 瑞利熵与拉普拉斯矩阵 【选读】 [12] 风中之炎.谱聚类(spectral clustering) 【选读】 [13] 漫谈Clustering (4): Spectral Clustering 【选读】 [14] 知乎.浅谈「正定矩阵」和「半正定矩阵」 【选读】