聚类(Clustering)是数据分析中最为广泛使用的技术之一,其广泛应用于统计学、计算机科学、生物、社会科学等。本文主要介绍一类重要的聚类算法,谱聚类(Spectral Clustering)。
谱聚类的主要思想是把所有的数据看做空间中的点。给定这些数据点之间的相似性度量,那么我们就可以构造一张相似图:如果两个点之间相似度为正(或者大于一定门限),那么它们之间就有边相连,且将其设置为边的权重。通过对相似图进行切割,让切割后不同子图之间边的权重之和尽可能低(意味着分属不同簇的点之间尽可能地不相似),而子图内边的权重之和尽可能地高(意味着同属同一簇的点之间尽可能地相似),从而达到聚类的目的。
相比传统的聚类算法,如k-means,谱聚类更容易实现,可以利用标准的线性代数软件高效求解,且往往效果更好。
在正式介绍谱聚类算法之前,我们需要一些必要的准备工作,以帮助我们更好地理解谱聚类算法及其背后的原理。我们先介绍图相关的一些基本概念和重要性质,然后介绍如何将数据点与图结合起来。
给定一个无向图 G = ( V , E ) G=(V,E) G=(V,E),其中 V = { v 1 , ⋯ , v n } V=\left\{ v_1,\cdots,v_n\right\} V={v1,⋯,vn}是顶点的集合。我们用 W W W表示其邻接矩阵(Adjacency Matrix),其中
w i , j = { 1 或权值 , if ( v i , v j ) ∈ E 0 , otherwise (1-1-1) w_{i,j} = \left\{ \begin{aligned} &1~\text{或权值}&,&~\text{if}~(v_i,v_j) \in E \\ &0&,&~\text{otherwise} \end{aligned} \tag{1-1-1} \right. wi,j={1 或权值0,, if (vi,vj)∈E otherwise(1-1-1)
也就是说,如果顶点 v i v_i vi和顶点 v j v_j vj之间有边连接, w i , j w_{i,j} wi,j等于1(不加权的图)或者等于该边上的权值(加权图);反之,如果顶点 v i v_i vi和顶点 v j v_j vj之间没有边连接, w i , j w_{i,j} wi,j等于0。需要注意的是,因为图 G G G是一个无向图,所以 w i , j = w j , i w_{i,j}=w_{j,i} wi,j=wj,i,即 W W W是一个对称矩阵。
给定一个无向图 G = ( V , E ) G=(V,E) G=(V,E),我们用 D D D表示其度矩阵(Degree Matrix),其中
d i , j = { ∑ j = 1 n w i , j , if i = j 0 , otherwise (1-2-1) d_{i,j} = \left\{ \begin{aligned} &\sum_{j=1}^{n} w_{i,j}&,&~\text{if}~i=j \\ &0&,&~\text{otherwise} \end{aligned} \tag{1-2-1} \right. di,j=⎩⎪⎪⎨⎪⎪⎧j=1∑nwi,j0,, if i=j otherwise(1-2-1)
为方便起见,我们将 d i , i d_{i,i} di,i记作 d i d_i di。从上式可以看出,度矩阵 D D D是一个对角矩阵,即
D = [ d 1 0 ⋯ 0 0 d 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ d n ] (1-2-2) D = \begin{bmatrix} d_1 &0&\cdots& 0 \\ 0&d_2&\cdots& 0 \\ \vdots &\vdots & \ddots& \vdots \\ 0 & 0 & \cdots & d_n \end{bmatrix} \tag{1-2-2} D=⎣⎢⎢⎢⎡d10⋮00d2⋮0⋯⋯⋱⋯00⋮dn⎦⎥⎥⎥⎤(1-2-2)
非归一化拉普拉斯矩阵(Unnormalized Laplacian Matrix)的定义为 L = D − W (1-3-1) L=D-W \tag{1-3-1} L=D−W(1-3-1)非归一化拉普拉斯矩阵 L L L有很多重要的性质:
(1)对任意向量 f ∈ R n f \in \mathbb{R}^{n} f∈Rn, 我们有 f T L f = 1 2 ∑ i = 1 n ∑ j = 1 n w i , j ( f i − f j ) 2 (1-3-2) f^{T}Lf = \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j}(f_i-f_j)^2 \tag{1-3-2} fTLf=21i=1∑nj=1∑nwi,j(fi−fj)2(1-3-2)(2) L L L是对称半正定矩阵
(3) L L L的最小特征值为0,其对应的特征向量为向量 1 = [ 1 , ⋯ , 1 ] T \mathbb{1}=[1,\cdots,1]^{T} 1=[1,⋯,1]T
(4) L L L有 n n n个非负的实数值特征值,即 0 = λ 1 ≤ λ 2 ≤ ⋯ λ n 0=\lambda_1 \leq \lambda_2 \leq \cdots \lambda_n 0=λ1≤λ2≤⋯λn
证明:
(1)
f T L f = f T D f − f T W f = ∑ i = 1 n d i f i 2 − ∑ i = 1 n ∑ j = 1 n w i , j f i f j = 1 2 ( ∑ i = 1 n d i f i 2 − 2 ∑ i = 1 n ∑ j = 1 n w i , j f i f j + ∑ j = 1 n d j f j 2 ) = 1 2 ( ∑ i = 1 n ∑ j = 1 n w i , j f i 2 − 2 ∑ i = 1 n ∑ j = 1 n w i , j f i f j + ∑ i = 1 n ∑ j = 1 n w i , j f j 2 ) = 1 2 ∑ i = 1 n ∑ j = 1 n w i , j ( f i − f j ) 2 (1-3-3) \begin{aligned} f^{T}Lf & = f^{T}Df - f^{T}Wf \\ & = \sum_{i=1}^{n} d_i f_{i}^2 - \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j} f_{i} f_{j} \\ & = \frac{1}{2} \left( \sum_{i=1}^{n} d_i f_{i}^2 - 2 \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j} f_{i} f_{j} + \sum_{j=1}^{n} d_j f_{j}^2 \right) \\ & = \frac{1}{2} \left( \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j} f_{i}^2 - 2 \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j} f_{i} f_{j} + \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j} f_{j}^2 \right) \\ & = \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j}(f_i-f_j)^2 \end{aligned} \tag{1-3-3} fTLf=fTDf−fTWf=i=1∑ndifi2−i=1∑nj=1∑nwi,jfifj=21(i=1∑ndifi2−2i=1∑nj=1∑nwi,jfifj+j=1∑ndjfj2)=21(i=1∑nj=1∑nwi,jfi2−2i=1∑nj=1∑nwi,jfifj+i=1∑nj=1∑nwi,jfj2)=21i=1∑nj=1∑nwi,j(fi−fj)2(1-3-3)
(2)因为 D D D和 W W W都是对称矩阵,所以 L L L也是对称矩阵。因为对于任意的向量 f ∈ R n f \in \mathbb{R}^{n} f∈Rn,我们都有 f T L f = 1 2 ∑ i = 1 n ∑ j = 1 n w i , j ( f i − f j ) 2 ≥ 0 f^{T}Lf = \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j}(f_i-f_j)^2 \geq 0 fTLf=21∑i=1n∑j=1nwi,j(fi−fj)2≥0,所以 L L L是半正定矩阵。
(3):因为 L L L是对称半正定矩阵,所以其特征值非负。很显然, L 1 = D 1 − W 1 = 01 L \mathbb{1} = D \mathbb{1} - W \mathbb{1} = 0 \mathbb{1} L1=D1−W1=01,所以0是 L L L的最小特征值, 1 \mathbb{1} 1为其对应的特征向量。
(4):由(1)-(3)可得。
归一化拉普拉斯矩阵(Normalized Laplacian Matrix)的定义一般有两种:
L s y m = D − 1 / 2 L D − 1 / 2 = I − D − 1 / 2 W D − 1 / 2 (1-3-4) L_{\rm sym} = D^{-1/2} L D^{-1/2} = I-D^{-1/2}WD^{-1/2} \tag{1-3-4} Lsym=D−1/2LD−1/2=I−D−1/2WD−1/2(1-3-4) L r w = D − 1 L = I − D − 1 W (1-3-5) L_{\rm rw} = D^{-1}L = I-D^{-1}W \tag{1-3-5} Lrw=D−1L=I−D−1W(1-3-5)其中 L s y m L_{\rm sym} Lsym是一个对称矩阵, L r w L_{\rm rw} Lrw和随机游走(Random Walk)密切相关( L r w L_{\rm rw} Lrw不再是一个对称阵)。
和非归一化拉普拉斯矩阵 L L L一样,归一化拉普拉斯矩阵 L s y m L_{\rm sym} Lsym和 L r w L_{\rm rw} Lrw有着和非归一化拉普拉斯矩阵 L L L类似的重要性质:
(1):对任意向量 f ∈ R n f \in \mathbb{R}^{n} f∈Rn, 我们有 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 (1-3-6) f^{T}L_{\rm sym}f = \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j} \left(\frac{f_i}{\sqrt{d_i}}-\frac{f_j}{\sqrt{d_j}} \right)^2 \tag{1-3-6} fTLsymf=21i=1∑nj=1∑nwi,j(difi−djfj)2(1-3-6)(2): λ \lambda λ和 v v v是 L r w L_{\rm rw} Lrw的特征值及其对应的特征向量,当且仅当 λ \lambda λ是 L s y m L_{\rm sym} Lsym的特征值,且其对应的特征向量为 w = D 1 / 2 v w=D^{1/2} v w=D1/2v。特别地, L s y m L_{\rm sym} Lsym的最小特征值为0,其对应的特征向量为向量 1 = [ 1 , ⋯ , 1 ] T \mathbb{1}=[1,\cdots,1]^{T} 1=[1,⋯,1]T;相应的, L r w L_{\rm rw} Lrw最小特征值0对应的特征向量为 D 1 / 2 1 D^{1/2} \mathbb{1} D1/21。
(3): L s y m L_{\rm sym} Lsym和 L r w L_{\rm rw} Lrw是半正定矩阵( L s y m L_{\rm sym} Lsym是对称矩阵, L r w L_{\rm rw} Lrw为非对称矩阵),并且它们有 n n n个非负的实数值特征值,即 0 = λ 1 ≤ λ 2 ≤ ⋯ λ n 0=\lambda_1 \leq \lambda_2 \leq \cdots \lambda_n 0=λ1≤λ2≤⋯λn
证明
(1)
f T L s y m f = f T f − f T D − 1 / 2 W D − 1 / 2 f = ∑ i = 1 n f i 2 − ∑ i = 1 n ∑ j = 1 n w i , j ( f i d i ) ( f j d j ) = 1 2 ( ∑ i = 1 n f i 2 − 2 ∑ i = 1 n ∑ j = 1 n w i , j ( f i d i ) ( f j d j ) + ∑ j = 1 n f j 2 ) = 1 2 ( ∑ i = 1 n ∑ j = 1 n w i , j f i 2 d i − 2 ∑ i = 1 n ∑ j = 1 n w i , j ( f i d i ) ( f j d j ) + ∑ i = 1 n ∑ j = 1 n w i , j f j 2 d j ) = 1 2 ∑ i = 1 n ∑ j = 1 n w i , j ( f i d i − f j d j ) 2 (1-3-7) \begin{aligned} f^{T}L_{\rm sym}f & = f^{T}f - f^{T}D^{-1/2}WD^{-1/2}f \\ & = \sum_{i=1}^{n} f_{i}^2 - \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j} \left( \frac{f_{i}}{\sqrt{d_i}} \right) \left( \frac{f_{j}}{\sqrt{d_j}} \right) \\ & = \frac{1}{2} \left( \sum_{i=1}^{n} f_{i}^2 - 2 \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j}\left( \frac{f_{i}}{\sqrt{d_i}} \right) \left( \frac{f_{j}}{\sqrt{d_j}} \right) + \sum_{j=1}^{n} f_{j}^2 \right) \\ & = \frac{1}{2} \left( \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j} \frac{f_{i}^2}{d_i} - 2 \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j}\left( \frac{f_{i}}{\sqrt{d_i}} \right) \left( \frac{f_{j}}{\sqrt{d_j}} \right) + \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j} \frac{f_{j}^2}{d_j} \right) \\ & = \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} w_{i,j} \left(\frac{f_i}{\sqrt{d_i}}-\frac{f_j}{\sqrt{d_j}} \right)^2 \end{aligned} \tag{1-3-7} fTLsymf=fTf−fTD−1/2WD−1/2f=i=1∑nfi2−i=1∑nj=1∑nwi,j(difi)(djfj)=21(i=1∑nfi2−2i=1∑nj=1∑nwi,j(difi)(djfj)+j=1∑nfj2)=21(i=1∑nj=1∑nwi,jdifi2−2i=1∑nj=1∑nwi,j(difi)(djfj)+i=1∑nj=1∑nwi,jdjfj2)=21i=1∑nj=1∑nwi,j(difi−djfj)2(1-3-7)
(2)直接代入 L s y m L_{\rm sym} Lsym和 L r w L_{\rm rw} Lrw的定义验证即可。
(3)由(1)-(2)可得
上面,我们介绍了图相关的一些基本概念和重要性质。那么,如何在给定数据点及其相似性度量的前提下,得到邻接矩阵、拉普拉斯矩阵等信息呢?答案是相似图。相似图的目的在于建模数据点之间的局部邻域关系并编码点之间的相似性。一般,有三种构建相似图的方式,它们的主要区别在于如何确定数据点之间的连接关系。
ϵ \epsilon ϵ-近邻图( ϵ \epsilon ϵ-neighborhood graph),顾名思义,如果点 x i x_i xi和 x j x_j xj之间的距离 d i , j = ∥ x i − x j ∥ 2 2 d_{i,j}=\Vert x_i-x_j \Vert_{2}^{2} di,j=∥xi−xj∥22小于等于 ϵ \epsilon ϵ,则它们之间有边相连。因此,邻接矩阵 W W W如下:
w i , j = { ϵ , if d i , j ≤ ϵ 0 , otherwise (1-4-1) w_{i,j} = \left\{ \begin{aligned} &\epsilon&,&~\text{if}~d_{i,j} \leq \epsilon \\ &0&,&~\text{otherwise} \end{aligned} \tag{1-4-1} \right. wi,j={ϵ0,, if di,j≤ϵ otherwise(1-4-1)
直观地,如果点 x i x_i xi在点 x j x_j xj的 k k k-近邻内,则它们之间有边相连。但是,这样得到的是一个有向图(点 x i x_i xi在点 x j x_j xj的 k k k-近邻内不代表点 x j x_j xj也在点 x i x_i xi的 k k k-近邻内),但是谱聚类算法针对的是无向图。一般有两种解决方式:
(1) k k k-近邻图( k k k-nearest neighbor graph):
顾名思义,如果点 x i x_i xi在点 x j x_j xj的 k k k-近邻内,或者点 x j x_j xj在点 x i x_i xi的 k k k-近邻内,那么它们之间就有边相连。因此,邻接矩阵 W W W如下:
w i , j = { s i , j , if x i ∈ K N N ( x j ) or x j ∈ K N N ( x i ) 0 , otherwise (1-4-2) w_{i,j} = \left\{ \begin{aligned} &s_{i,j}&,&~\text{if}~x_i \in KNN(x_j)~\text{or}~x_j \in KNN(x_i) \\ &0&,&~\text{otherwise} \end{aligned} \tag{1-4-2} \right. wi,j={si,j0,, if xi∈KNN(xj) or xj∈KNN(xi) otherwise(1-4-2)
(2) 相互 k k k-近邻图(mutual k-nearest neighbor graph):
顾名思义,如果点 x i x_i xi在点 x j x_j xj的 k k k-近邻内,同时点 x j x_j xj在点 x i x_i xi的 k k k-近邻内,那么它们之间就有边相连。因此,邻接矩阵 W W W如下:
w i , j = { s i , j , if x i ∈ K N N ( x j ) and x j ∈ K N N ( x i ) 0 , otherwise (1-4-3) w_{i,j} = \left\{ \begin{aligned} &s_{i,j}&,&~\text{if}~x_i \in KNN(x_j)~\text{and}~x_j \in KNN(x_i) \\ &0&,&~\text{otherwise} \end{aligned} \tag{1-4-3} \right. wi,j={si,j0,, if xi∈KNN(xj) and xj∈KNN(xi) otherwise(1-4-3)
全连接图(fully connected graph),顾名思义,在该方法下,图中的任意两点之间都有边连接。因此,邻接矩阵 W W W如下:
w i , j = s i , j (1-4-4) w_{i,j}=s_{i,j} \tag{1-4-4} wi,j=si,j(1-4-4)由于相似图应该建模局部邻域关系,因此通常只有在相似函数本身已经编码了主要局部邻域时才选择这种构造,如高斯相似函数(高斯核函数RBF) s i , j = exp ( − ∥ x i − x j ∥ 2 2 2 σ 2 ) (1-4-5) s_{i,j}=\text{exp}\left( -\frac{ \Vert x_i-x_j \Vert_{2}^{2}}{2\sigma^2} \right) \tag{1-4-5} si,j=exp(−2σ2∥xi−xj∥22)(1-4-5)这里,参数 σ \sigma σ相当于 ϵ \epsilon ϵ-近邻图中的 ϵ \epsilon ϵ,控制邻域的宽度。显然,彼此距离较近的点之间边的权重较大,而彼此距离较远的点之间边的权重较小。
注释:谱聚类算法对相似函数的选择,相似图的选取及其参数设置非常敏感。但是目前还没有系统性的研究,也没有一些经验规则。
这部分,我们将介绍三类最常见的谱聚类算法。给定数据点 x 1 , ⋯ , x n x_1,\cdots,x_n x1,⋯,xn以及它们之间的相似性矩阵 S = ( s i , j ) i , j = 1 , ⋯ , n S=(s_{i,j})_{i,j=1,\cdots,n} S=(si,j)i,j=1,⋯,n,三类谱聚类算法的伪代码如下:
算法1:非归一化谱聚类
输入:相似性矩阵 S S S,簇的数目 k k k
Step1:根据1.4节方法构建相似图及邻接矩阵 W W W
Step2:计算非归一化拉普拉斯矩阵 L L L
Step3:计算 L L L的前 k k k个最小特征向量 v 1 , ⋯ , v k v_1,\cdots,v_k v1,⋯,vk
Step4:将 v 1 , ⋯ , v k v_1,\cdots,v_k v1,⋯,vk组成矩阵 V = [ v 1 , ⋯ , v k ] ∈ R n × k V=[v_1,\cdots,v_k] \in \mathbb{R}^{n \times k} V=[v1,⋯,vk]∈Rn×k
Step5: 将 V V V中的每一行向量 y i y_i yi作为一个数据点,用k-means方法将 ( y i ) i = 1 , ⋯ , n (y_i)_{i=1,\cdots,n} (yi)i=1,⋯,n聚类成 k k k簇 C 1 , ⋯ , C k C_1,\cdots,C_k C1,⋯,Ck
输出:簇 A 1 , ⋯ , A k A_1,\cdots,A_k A1,⋯,Ak, A i = { x j ∣ y j ∈ C i } A_i=\{x_j|y_j \in C_i\} Ai={xj∣yj∈Ci}
算法2:归一化谱聚类
输入:相似性矩阵 S S S,簇的数目 k k k
Step1:根据1.4节方法构建相似图及邻接矩阵 W W W
Step2:计算非归一化拉普拉斯矩阵 L L L
Step3:计算广义特征值问题 L v = λ D v Lv=\lambda D v Lv=λDv的前 k k k个最小特征向量 v 1 , ⋯ , v k v_1,\cdots,v_k v1,⋯,vk
Step4:将 v 1 , ⋯ , v k v_1,\cdots,v_k v1,⋯,vk组成矩阵 V = [ v 1 , ⋯ , v k ] ∈ R n × k V=[v_1,\cdots,v_k] \in \mathbb{R}^{n \times k} V=[v1,⋯,vk]∈Rn×k
Step5: 将 V V V中的每一行向量 y i y_i yi作为一个数据点,用k-means方法将 ( y i ) i = 1 , ⋯ , n (y_i)_{i=1,\cdots,n} (yi)i=1,⋯,n聚类成 k k k簇 C 1 , ⋯ , C k C_1,\cdots,C_k C1,⋯,Ck
输出:簇 A 1 , ⋯ , A k A_1,\cdots,A_k A1,⋯,Ak, A i = { x j ∣ y j ∈ C i } A_i=\{x_j|y_j \in C_i\} Ai={xj∣yj∈Ci}
算法3:归一化谱聚类
输入:相似性矩阵 S S S,簇的数目 k k k
Step1:根据1.4节方法构建相似图及邻接矩阵 W W W
Step2:计算归一化拉普拉斯矩阵 L s y m L_{\rm sym} Lsym
Step3:计算 L s y m L_{\rm sym} Lsym的前 k k k个最小特征向量 v 1 , ⋯ , v k v_1,\cdots,v_k v1,⋯,vk
Step4:将 v 1 , ⋯ , v k v_1,\cdots,v_k v1,⋯,vk组成矩阵 V = [ v 1 , ⋯ , v k ] ∈ R n × k V=[v_1,\cdots,v_k] \in \mathbb{R}^{n \times k} V=[v1,⋯,vk]∈Rn×k
Step5:对 V V V进行归一化,使得 V V V的每一行范数为1,即 v i , j = v i , j ( ∑ k v i , k ) 1 / 2 v_{i,j}=\frac{v_{i,j}}{\left( \sum_{k} v_{i,k}\right)^{1/2}} vi,j=(∑kvi,k)1/2vi,j
Step6: 将 V V V中的每一行向量 y i y_i yi作为一个数据点,用k-means方法将 ( y i ) i = 1 , ⋯ , n (y_i)_{i=1,\cdots,n} (yi)i=1,⋯,n聚类成 k k k簇 C 1 , ⋯ , C k C_1,\cdots,C_k C1,⋯,Ck
输出:簇 A 1 , ⋯ , A k A_1,\cdots,A_k A1,⋯,Ak, A i = { x j ∣ y j ∈ C i } A_i=\{x_j|y_j \in C_i\} Ai={xj∣yj∈Ci}
通过仔细观察,我们可以发现,上述三类算法基本相同,它们的主要区别在于是它们使用的拉普拉斯矩阵不同:算法1使用的是非归一化拉普拉斯矩阵 L L L,算法2使用的是归一化拉普拉斯矩阵 L r w L_{\rm rw} Lrw,而算法3使用的是归一化拉普拉斯矩阵 L s y m L_{\rm sym} Lsym。另外,算法3多了归一化的步骤,算法1和2则不需要(目的是让结果更鲁棒,具体可以参考参考文献[1]中第7部分的内容)。我们将在下面内容解释这三个算法的区别和联系。
这部分,我们将从图形切割的角度去解释并理解谱聚类算法背后的原理。
如上所述,谱聚类的主要思想是把所有的数据看做空间中的点,通过对相似图进行切割,让切割后不同子图之间边的权重之和尽可能低(意味着分属不同簇的点之间尽可能地不相似),而子图内边的权重之和尽可能地高(意味着同属同一簇的点之间尽可能地相似),从而将样本点聚类为不同的簇。
我们用数学化的语言来描述该问题。假设由样本点 x 1 , ⋯ , x n x_1,\cdots,x_n x1,⋯,xn构建的相似图为 G = ( V , E ) G=(V,E) G=(V,E),其对应的邻接矩阵为 W W W。对于任意两个不相交的顶点子集 A , B ∈ V A,B \in V A,B∈V,我们定义 cut ( A , B ) = ∑ v i ∈ A , v j ∈ B w i , j (3-1-1) \text{cut}(A,B) = \sum_{v_i\in A,v_j \in B} w_{i,j} \tag{3-1-1} cut(A,B)=vi∈A,vj∈B∑wi,j(3-1-1),即子集/图 A A A和子集/图 B B B之间边的权重之和。
因此,对于 k k k-聚类问题,我们希望将图 G G G划分为 k k k个子集/图 A 1 , ⋯ , A k A_1,\cdots,A_k A1,⋯,Ak, A i ∩ A j = ∅ A_i \cap A_j = \empty Ai∩Aj=∅, A 1 ∪ ⋯ ∪ A k = V A_1 \cup\cdots\cup A_k=V A1∪⋯∪Ak=V,使得 cut ( A 1 , ⋯ , A k ) = ∑ i = 1 k cut ( A i , A i ˉ ) (3-1-2) \text{cut}(A_1,\cdots, A_k) = \sum_{i=1}^{k} \text{cut}(A_i,\bar{A_i}) \tag{3-1-2} cut(A1,⋯,Ak)=i=1∑kcut(Ai,Aiˉ)(3-1-2)最小,其中 A i ˉ \bar{A_i} Aiˉ表示子集 A i A_i Ai在集合 V V V中的补集。该问题称为最小 k k k-割问题。
注释:实际上 min cut ( A 1 , ⋯ , A k ) \text{min~cut}(A_1,\cdots, A_k) min cut(A1,⋯,Ak)只显式地要求不同集合之间边的权重之和尽可能低,而没有显式地要求每个子集内边的权重之和也尽可能地高。
对于 k = 2 k=2 k=2的情况,该最小割问题是个相对简单的问题,存在高效的解决方法。但是,实际上,这些方法往往得不到一个令人满意的结果。问题就在于该方法倾向于将一个独立的顶点与剩余顶点切分开来,如下图所示。
为解决该问题,直观地,我们可以在切割图形的时候将每个子集的大小考虑在内,要求每个子集的大小相对较大。
一般有两种衡量子集 A A A大小的方式:
分别对应
RatioCut ( A 1 , ⋯ , A k ) = ∑ i = 1 k cut ( A i , A i ˉ ) ∣ A i ∣ (3-1-3) \text{RatioCut}(A_1,\cdots,A_k) = \sum_{i=1}^{k} \frac{\text{cut}(A_i,\bar{A_i})}{|A_i|}\tag{3-1-3} RatioCut(A1,⋯,Ak)=i=1∑k∣Ai∣cut(Ai,Aiˉ)(3-1-3) Ncut ( A 1 , ⋯ , A k ) = ∑ i = 1 k cut ( A i , A i ˉ ) vol ( A i ) (3-1-4) \text{Ncut}(A_1,\cdots,A_k) = \sum_{i=1}^{k} \frac{\text{cut}(A_i,\bar{A_i})}{\text{vol}(A_i)}\tag{3-1-4} Ncut(A1,⋯,Ak)=i=1∑kvol(Ai)cut(Ai,Aiˉ)(3-1-4)
值得注意的是,当所有 ∣ A i ∣ |A_i| ∣Ai∣相等时, ∑ i = 1 k ( 1 / ∣ A i ∣ ) \sum_{i=1}^{k} \left( 1/|A_i|\right) ∑i=1k(1/∣Ai∣)取得最小值;同理,当所有 vol ( A i ) \text{vol}(A_i) vol(Ai)相等时, ∑ i = 1 k ( 1 / vol ( A i ) ) \sum_{i=1}^{k} \left( 1/\text{vol}(A_i) \right) ∑i=1k(1/vol(Ai))取得最小值。因此,无论是 RatioCut \text{RatioCut} RatioCut还是 NCut \text{NCut} NCut,都倾向于将图划分为大小“平衡”的子图。
我们下面会看到,对 RatioCut \text{RatioCut} RatioCut问题松弛就可以得到非归一化的谱聚类,对 NCut \text{NCut} NCut问题松弛就可以得到归一化的谱聚类。
给定 A 1 , ⋯ , A k A_1,\cdots,A_k A1,⋯,Ak,我们定义 k k k个 n n n维指示向量 { h 1 , ⋯ , h k } \left\{ h_1,\cdots,h_k\right\} {h1,⋯,hk},其中 h i = [ h i , 1 , ⋯ , h i , n ] T h_i=[h_{i,1},\cdots,h_{i,n}]^{T} hi=[hi,1,⋯,hi,n]T,来指示每个子集 A i A_i Ai由哪些点构成。具体地,
h i , j = { 1 / ∣ A i ∣ , if j ∈ A i 0 , otherwise (3-2-1) h_{i,j} = \left\{ \begin{aligned} &1/\sqrt{|A_i|}&,&~\text{if}~j \in A_i \\ &0&,&~\text{otherwise} \end{aligned} \tag{3-2-1} \right. hi,j={1/∣Ai∣0,, if j∈Ai otherwise(3-2-1)
也就是说,如果第 j j j个点属于子集 A i A_i Ai,那么 h i , j = 1 / ∣ A i ∣ h_{i,j} = 1/\sqrt{|A_i|} hi,j=1/∣Ai∣;否则, h i , j = 0 h_{i,j} = 0 hi,j=0。值得注意的是, h i T h i = 1 h_i^{T}h_{i} = 1 hiThi=1,而 h i T h j = 0 , ∀ i ≠ j h_i^{T}h_{j} = 0,\forall i \neq j hiThj=0,∀i=j,即 { h i } i = 1 , ⋯ , k \{h_i\}_{i=1,\cdots,k} {hi}i=1,⋯,k之间彼此正交。
由式(1-3-3)可知,
h i T L h i = 1 2 ∑ m ∑ n w m , n ( h i , m − h i , n ) 2 = 1 2 [ ∑ m ∈ A i ∑ n ∈ A i ˉ w m , n ( 1 ∣ A i ∣ − 0 ) 2 + ∑ m ∈ A i ˉ ∑ n ∈ A i w m , n ( 0 − 1 ∣ A i ∣ ) 2 ] = 1 2 ( ∑ m ∈ A i ∑ n ∈ A i ˉ w m , n 1 ∣ A i ∣ + ∑ m ∈ A i ˉ ∑ n ∈ A i w m , n 1 ∣ A i ∣ ) = 1 2 ( cut ( A i , A i ˉ ) ∣ A i ∣ + cut ( A i , A i ˉ ) ∣ A i ∣ ) = cut ( A i , A i ˉ ) ∣ A i ∣ (3-2-2) \begin{aligned} h_i^{T}Lh_i & = \frac{1}{2} \sum_{m} \sum_{n} w_{m,n} \left( h_{i,m} - h_{i,n}\right)^2 \\ & = \frac{1}{2} \left[ \sum_{m \in A_i} \sum_{n \in \bar{A_i}} w_{m,n} \left( \frac{1}{\sqrt{|A_i|}} - 0 \right)^2 + \sum_{m \in \bar{A_i}} \sum_{n \in A_i} w_{m,n} \left( 0-\frac{1}{\sqrt{|A_i|}} \right)^2 \right] \\ & = \frac{1}{2} \left( \sum_{m \in A_i} \sum_{n \in \bar{A_i}} w_{m,n} \frac{1}{|A_i|} + \sum_{m \in \bar{A_i}} \sum_{n \in A_i} w_{m,n} \frac{1}{|A_i|} \right) \\ & = \frac{1}{2} \left( \frac{\text{cut}(A_i,\bar{A_i})}{|A_i|} + \frac{\text{cut}(A_i,\bar{A_i})}{|A_i|} \right) \\ & = \frac{\text{cut}(A_i,\bar{A_i})}{|A_i|} \tag{3-2-2} \end{aligned} hiTLhi=21m∑n∑wm,n(hi,m−hi,n)2=21⎣⎡m∈Ai∑n∈Aiˉ∑wm,n(∣Ai∣1−0)2+m∈Aiˉ∑n∈Ai∑wm,n(0−∣Ai∣1)2⎦⎤=21⎝⎛m∈Ai∑n∈Aiˉ∑wm,n∣Ai∣1+m∈Aiˉ∑n∈Ai∑wm,n∣Ai∣1⎠⎞=21(∣Ai∣cut(Ai,Aiˉ)+∣Ai∣cut(Ai,Aiˉ))=∣Ai∣cut(Ai,Aiˉ)(3-2-2)
我们将其扩展成矩阵的形式。令 H = [ h 1 , ⋯ , h k ] ∈ R n × k H=[h_1,\cdots,h_k] \in \mathbb{R}^{n\times k} H=[h1,⋯,hk]∈Rn×k,
( H T L H ) i , i = h i T L h i (3-2-3) \begin{aligned} \left(H^{T}LH \right)_{i,i} & = h_i^{T} L h_i \tag{3-2-3} \end{aligned} (HTLH)i,i=hiTLhi(3-2-3)因此,
RatioCut ( A 1 , ⋯ , A k ) = ∑ i = 1 k cut ( A i , A i ˉ ) ∣ A i ∣ = ∑ i = 1 k h i T L h i = ∑ i = 1 k ( H T L H ) i , i = T r ( H T L H ) (3-2-4) \begin{aligned} \text{RatioCut}(A_1,\cdots,A_k) & = \sum_{i=1}^{k} \frac{\text{cut}(A_i,\bar{A_i})}{|A_i|} \\ & = \sum_{i=1}^{k}h_i^{T}Lh_i \\ & = \sum_{i=1}^{k} \left(H^{T}LH \right)_{i,i} \\ & = Tr\left( H^{T}LH \right) \end{aligned} \tag{3-2-4} RatioCut(A1,⋯,Ak)=i=1∑k∣Ai∣cut(Ai,Aiˉ)=i=1∑khiTLhi=i=1∑k(HTLH)i,i=Tr(HTLH)(3-2-4)
其中 T r Tr Tr表示矩阵的迹(Trace)。
因此,原最小化 RatioCut ( A 1 , ⋯ , A k ) \text{RatioCut}(A_1,\cdots,A_k) RatioCut(A1,⋯,Ak)问题等价于下述问题:
min H T r ( H T L H ) s . t . H T H = I (3-2-5) \begin{aligned} \min_{H} ~&Tr\left( H^{T}LH \right) \\ s.t.~& H^{T} H = I \\ \end{aligned} \tag{3-2-5} Hmin s.t. Tr(HTLH)HTH=I(3-2-5)由于 H H H满足式(3-1-1),其每个元素的取值只能为0或者 1 / ∣ A i ∣ 1/\sqrt{|A_i|} 1/∣Ai∣,因此上述问题(3-2-5)是一个NP-hard问题。
幸运的是,我们可以对上述问题(3-2-5)进行松弛,即允许矩阵 H H H可以为任意实数矩阵,从而将其转化为标准的迹最小化问题。Rayleigh-Ritz定理告诉我们, T r ( H T L H ) Tr\left( H^{T}LH \right) Tr(HTLH)的最小值为 L L L的 k k k个最小特征值之和,相应的最优解 H H H为 L L L的 k k k个特征向量组成的矩阵(每个特征向量为 H H H的每一列,即第2部分谱聚类算法1中的 V V V)。
但是,松弛后求解得到的 H H H并不能直接指示聚类的结果,因为此时的 H H H是实数值,而不是离散值。所以谱聚类算法在最后一步会对 H H H(伪代码中的 V V V)做一个 k k k-means聚类:将 H H H( V V V)中的每一行看作一个点,这样一共有 n n n个点。我们对这 n n n个点做一个 k k k-means聚类,就可以得到最终的聚类结果。如何理解?其实计算 H H H( V V V)就像PCA中的降维操作,我们将原本 n n n维空间中的 n n n个点降维成了 k k k维空间中 n n n个点,但是保留了这些数据点最重要的特征。这也是为什么谱聚类比一般的 k k k-means效果好的原因所在。可能还有人问, k k k-means之外的聚类算法可不可以。答案是肯定的。
和RatioCut类似,我们定义 k k k个 n n n维指示向量 { h 1 , ⋯ , h k } \left\{ h_1,\cdots,h_k\right\} {h1,⋯,hk}来指示 A 1 , ⋯ , A k A_1,\cdots,A_k A1,⋯,Ak,其中 h i = [ h i , 1 , ⋯ , h i , n ] T h_i=[h_{i,1},\cdots,h_{i,n}]^{T} hi=[hi,1,⋯,hi,n]T。不同的是,
h i , j = { 1 / vol ( A i ) , if j ∈ A i 0 , otherwise (3-3-1) h_{i,j} = \left\{ \begin{aligned} &1/\sqrt{\text{vol}(A_i)}&,&~\text{if}~j \in A_i \\ &0&,&~\text{otherwise} \end{aligned} \tag{3-3-1} \right. hi,j={1/vol(Ai)0,, if j∈Ai otherwise(3-3-1)
参照公式(3-2-2)-公式(3-2-4)的推导,我们可以得到类似的结果
h i T L h i = = cut ( A i , A i ˉ ) vol ( A i ) (3-3-2) h_i^{T}Lh_i = = \frac{\text{cut}(A_i,\bar{A_i})}{\text{vol}(A_i)} \tag{3-3-2} hiTLhi==vol(Ai)cut(Ai,Aiˉ)(3-3-2) NCut ( A 1 , ⋯ , A k ) = T r ( H T L H ) (3-3-3) \text{NCut}(A_1,\cdots,A_k) = Tr\left( H^{T}LH \right) \tag{3-3-3} NCut(A1,⋯,Ak)=Tr(HTLH)(3-3-3)
因此,我们的优化目标还是 T r ( H T L H ) Tr\left( H^{T}LH \right) Tr(HTLH),但是现在 H T H ≠ I H^{T} H \neq I HTH=I,而是 H T D H = I H^{T} D H = I HTDH=I。
( H T D H ) i , i = h i T D h i = ∑ j ∈ A i d j h i , j 2 = ∑ j ∈ A i d j 1 vol ( A i ) = vol ( A i ) vol ( A i ) = 1 (3-3-4) \begin{aligned} (H^{T} D H)_{i,i} = h_i^T D h_i = \sum_{j \in A_i} d_j h_{i,j}^{2} = \sum_{j \in A_i} d_j \frac{1}{\text{vol}(A_i)} = \frac{\text{vol}(A_i)}{\text{vol}(A_i)} = 1 \tag{3-3-4} \end{aligned} (HTDH)i,i=hiTDhi=j∈Ai∑djhi,j2=j∈Ai∑djvol(Ai)1=vol(Ai)vol(Ai)=1(3-3-4) ( H T D H ) i , j = h i T D h j = ∑ l = 1 n d l h i , l h j , l = 0 (3-3-5) \begin{aligned} (H^{T} D H)_{i,j} = h_i^T D h_j = \sum_{l=1}^{n} d_{l} h_{i,l} h_{j,l} = 0 \tag{3-3-5} \end{aligned} (HTDH)i,j=hiTDhj=l=1∑ndlhi,lhj,l=0(3-3-5)
我们令 H = D − 1 / 2 F H=D^{-1/2} F H=D−1/2F,显然有 F T F = I F^TF=I FTF=I。
所以,原最小化 NCut ( A 1 , ⋯ , A k ) \text{NCut}(A_1,\cdots,A_k) NCut(A1,⋯,Ak)问题等价于下述问题:
min F T r ( F T D − 1 / 2 L D − 1 / 2 F ) s . t . F T F = I (3-3-6) \begin{aligned} \min_{F} ~&Tr\left( F^{T}D^{-1/2}LD^{-1/2}F \right) \\ s.t.~& F^{T} F = I \\ \end{aligned} \tag{3-3-6} Fmin s.t. Tr(FTD−1/2LD−1/2F)FTF=I(3-3-6)忽略 F F F的约束,上述问题(3-3-6)相当于求解 D − 1 / 2 L D − 1 / 2 D^{-1/2}LD^{-1/2} D−1/2LD−1/2(即 L s y m L_{\rm sym} Lsym)的 k k k个最小特征值及其对应的特征向量(第2部分谱聚类算法3中的 V V V)。实际上,如果我们回顾一下1.3.2节 L s y m L_{\rm sym} Lsym和 L r w L_{\rm rw} Lrw的关系我们可以发现, H H H对应的是 L r w L_{\rm rw} Lrw的 k k k个最小特征值对应的特征向量组成的矩阵(第2部分谱聚类算法2中的 V V V)。
最后,再对 H H H进行 k k k-means聚类或其他聚类即可。
最后,对这一部分做个总结及拓展。
如上所述,谱聚类算法相当于RatioCut或Ncut问题的松弛解,我们希望该松弛解足够地好,即与最优解之间的gap能被bound住。可惜的是,不存在这样的一个bound。
我们看下图一个例子。假设我们要对下图进行2割以最小化RatioCut。最优解应该是 A = { V 1 , ⋯ , V k , V 2 k + 1 , ⋯ , V 3 k } A=\{V_1,\cdots,V_k,V_{2k+1},\cdots,V_{3k}\} A={V1,⋯,Vk,V2k+1,⋯,V3k}, A ˉ = { V k + 1 , ⋯ , V 2 k , V 3 k + 1 , ⋯ , V 4 k } \bar{A}=\{V_{k+1},\cdots,V_{2k},V_{3k+1},\cdots,V_{4k}\} Aˉ={Vk+1,⋯,V2k,V3k+1,⋯,V4k},此时 RatioCut = { A , A ˉ } = 2 / k \text{RatioCut}=\{A,\bar{A}\}=2/k RatioCut={A,Aˉ}=2/k。但是谱聚类算法得到的解为 B = { V 1 , ⋯ , V k , V k + 1 , ⋯ , V 2 k } B=\{V_1,\cdots,V_k,V_{k+1},\cdots,V_{2k}\} B={V1,⋯,Vk,Vk+1,⋯,V2k}, B ˉ = { V 2 k + 1 , ⋯ , V 3 k , V 3 k + 1 , ⋯ , V 4 k } \bar{B}=\{V_{2k+1},\cdots,V_{3k},V_{3k+1},\cdots,V_{4k}\} Bˉ={V2k+1,⋯,V3k,V3k+1,⋯,V4k},此时 RatioCut = { B , B ˉ } = 1 \text{RatioCut}=\{B,\bar{B}\}=1 RatioCut={B,Bˉ}=1,足足是最优解的 k / 2 k/2 k/2倍。
谱聚类算法吸引我们的在于其简单、高效。
参考文献[1]推荐Ncut,或者说推荐使用归一化的拉普拉斯矩阵,而且更推荐使用 L r w L_{\rm rw} Lrw。
为什么推荐使用Ncut或者说归一化的拉普拉斯矩阵?理由也很直接明白。我们以 k = 2 k=2 k=2来进行说明。我们在第3部分的最开始曾提到,我们希望让切割后不同子图之间边的权重之和尽可能低(意味着分属不同簇的点之间尽可能地不相似),而子图内边的权重之和尽可能地高(意味着同属同一簇的点之间尽可能地相似)。其实,我们是有两个目标的:
(1)分属不同簇的点之间尽可能地不相似,也就是不同子图之间边的权重之和尽可能低,即 ∑ i ∈ A , j ∈ A ˉ w i , j \sum_{i \in A,j \in \bar{A}}w_{i,j} ∑i∈A,j∈Aˉwi,j尽可能地小;
(2)同属同一簇的点之间尽可能地相似,也就是同一子图内边的权重之和尽可能地高,即 ∑ i , j ∈ A w i , j \sum_{i,j \in A}w_{i,j} ∑i,j∈Awi,j和 ∑ i , j ∈ A ˉ w i , j \sum_{i,j \in \bar{A}}w_{i,j} ∑i,j∈Aˉwi,j都尽可能地大。
毋庸置疑,RatioCut和Ncut都有直接包含目标(1)。差别在于Ncut也直接包含了目标(2)。我们可以发现:
∑ i , j ∈ A w i , j = ∑ i ∈ A , j ∈ A ∪ A ˉ w i , j − ∑ i ∈ A , j ∈ A ˉ w i , j = vol ( A ) − cut ( A , A ˉ ) (3-4-1) \begin{aligned} \sum_{i,j \in A} w_{i,j} & = \sum_{i \in A, j \in A\cup\bar{A}} w_{i,j} - \sum_{i \in A, j \in \bar{A}}w_{i,j} \\ & = \text{vol}(A)-\text{cut}(A,\bar{A}) \end{aligned} \tag{3-4-1} i,j∈A∑wi,j=i∈A,j∈A∪Aˉ∑wi,j−i∈A,j∈Aˉ∑wi,j=vol(A)−cut(A,Aˉ)(3-4-1)我们发现,Ncut是希望 cut ( A , A ˉ ) \text{cut}(A,\bar{A}) cut(A,Aˉ)尽可能小,而 vol ( A ) \text{vol}(A) vol(A)尽可能大,此时 ∑ i , j ∈ A w i , j \sum_{i,j \in A} w_{i,j} ∑i,j∈Awi,j也是尽可能大的。 ∑ i , j ∈ A ˉ w i , j \sum_{i,j \in \bar{A}} w_{i,j} ∑i,j∈Aˉwi,j同理。
所以,从上述这点来说,我们更倾向使用Ncut或者说归一化的拉普拉斯矩阵。另外,从一致性问题考虑,也是支持这一结论。
注释:另一种MinMaxCut问题则直接在其优化目标中体现了上述目标(2)
MinMaxCut ( A 1 , ⋯ , A k ) = ∑ i = 1 k Cut ( A i , A i ˉ ) ∑ i , j ∈ A w i , j (3-4-2) \text{MinMaxCut}(A_1,\cdots,A_k) = \sum_{i=1}^{k} \frac{\text{Cut}(A_i,\bar{A_i})}{\sum_{i,j\in A} w_{i,j}} \tag{3-4-2} MinMaxCut(A1,⋯,Ak)=i=1∑k∑i,j∈Awi,jCut(Ai,Aiˉ)(3-4-2)
为什么推荐使用 L r w L_{\rm rw} Lrw?原因在于 L r w L_{\rm rw} Lrw的特征值在计算上更鲁棒。
[1]: Luxburg, U. V. . “A Tutorial on Spectral Clustering.” Statistics and Computing 17.4(2004):395-416.
[2]: https://www.cnblogs.com/pinard/p/6221564.html