谱聚类算法:谱指的是某个矩阵的特征值

谱聚类的思想来源于图论,它把待聚类的数据集中的每一个样本看做是图中一个顶点,这些顶点连接在一起,连接的这些边上有权重权重的大小表示这些样本之间的相似程度同一类的顶点它们的相似程度很高,在图论中体现为同一类的顶点中连接它们的边的权重很大不在同一类的顶点连接它们的边的权重很小。于是谱聚类的最终目标就是找到一种切割图的方法,使得切割之后的各个子图内的权重很大子图之间的权重很小

img

一、预备知识

  • 假设给定一个数据集X={x1,x2,...,xn}X=\{ x_1,x_2,...,x_n \},我们将这个n个数据向量当做m维空间中某一幅无向图上的一个个点,目的是衡量这些点的相似性。

  • 把图叫做相似图,记为G=(V,E)G=(V,E),其中V={v1,v2...,vn}V=\{ v_1,v_2...,v_n \}表示顶点,EE表示边的集合。两个顶点vi,vjv_i,v_j的边的权重记为ωij\omega_{ij}

  • 相似性用sijs_{ij}表示,越大表示越相似

  • n个权重点构成一个矩阵W=(ωij)W=(\omega_{ij})

1.1邻接矩阵、度和度矩阵、连通子图

(1)邻接矩阵

所有顶点之间的权重构成一个矩阵,叫邻接矩阵,也叫权重矩阵。两个顶点互相之间的权重是一样的,因此WW是对称矩阵。

image-20220311114622575

(2)度矩阵

对于某个顶点的di,i=1,2,...,nd_i,i=1,2,...,n,定义为

image-20220311115316683

度其实就是邻接矩阵的第ii行的和。(因为邻接矩阵是对称矩阵,所以第jj列的和也可以)

度矩阵定义为nn个度构成的对角矩阵

image-20220311115709665

对于给定顶点VV的一个子集AVA\subset V,定义它的补为Aˉ\bar{A}。对于某个顶点viAv_i \in A,定义对应的指示向量为1A=[f1,f2...,fn]TRn1_A = [f_1,f_2...,f_n]^T \in R^n,若viAv_i \in A,则指示向量第i个位置为1,即fi=1f_i = 1,否则为0;对于两个子集A和B,我们定义:

image-20220311132125530

公式(4)表示两个子集中顶点之间的权重之和,注意这里不包含子集内顶点之间的权重

子集大小有两种定义

image-20220311132240644

(3)连通子图

如果AA中的任意两个顶点都至少存在一条路径将他们连接起来,并且AA中其他顶点也在这条路径上,则AA连接的。如果子集AA是连接的,并且与他的补Aˉ\bar{A}不存在任何的连接,则称为连通子图。非空子集A1,A2,...,AkA_1,A_2,...,A_k构成VV的一个分割,即A1A2...Ak=VA_1\cup A_2 \cup... \cup A_k=V

1.2 相似图的衡量方法

如果度量空间具有距离越远越不相似,越近越相似的特性,通常作为相似度的衡量标准。

(1)$ \epsilon - 近邻法 $

采用欧式距离计算两个顶点的距离sijs_{ij},然后设定一个阈值ϵ\epsilon

image-20220312185718753

(2)k-邻近法

利用KNN算法遍历所有的样本点,取每个样本最近的k个点作为近邻,取与顶点最近的kk个顶点,该顶点与kk个顶点的权重都大于0。但是这种方法不能保证相似矩阵是对称的,因为两个顶点可能不是在互相的近邻中。一般使用两种方法保证相似矩阵的对称。

  • 两个顶点只要其中一个点在另一个顶点的近邻中,则令ωij=ωji\omega_{ij}=\omega_{ji}

image-20220312190301385

  • 两个顶点同时在双方的近邻中,则令ωij=ωji\omega_{ij}=\omega_{ji}​,否则ωij=ωji=0\omega_{ij}=\omega_{ji}=0

image-20220312190424470

(3)全连接法

该方法将所有的顶点都连接起来。然后通过度量空间中某种对称度量算子来计算顶点之间的相似度。常用的有多项式核函数,高斯核函数和Sigmoid核函数。最常用的是高斯核函数RBF,此时相似矩阵和邻接矩阵相同,比如使用高斯核函数计算两个顶点之间的相似度:

image-20220312190629703

实际应用中,使用全连接法是最普遍的,而在全连接法中使用高斯径向核RBF是最普遍的。

1.3 图拉普拉斯矩阵

1.3.1 非规范化的图拉普拉斯矩阵

图拉普拉斯矩阵的定义如下:

image-20220312200714522

其中DD为度矩阵,W为权重(近似)矩阵,所以L也是对称矩阵

性质:

  • 对于任意向量$f \in R^n $

image-20220312201051146

  • LL是一个对称半正定矩阵

    image-20220312201216584

  • LL的最小特征值为0,对应的特征向量是全为1的向量110λ1λ2...λn0 \le \lambda_1 \le \lambda_2 ...\le \lambda_n

  • 对于一个对角分块矩阵AA

    image-20220312201648665

    他的特征值等于各个分块矩阵的特征值。

  • GG是一个具有非负权重的无向图,则它对应的图拉普拉斯矩阵L的0特征值的代数重数k等于G中连通子图的个数,假设k个连通子图记为A1,A2,...AkA_1,A_2,...A_k,并且0特征值对应的特征值空间由各个连通子图的指示向量1AiRn1_{A_i} \in R_n

1.3.2规范化的图拉普拉斯矩阵

有两种规范化的图拉普拉斯矩阵,他们互相联系。这两种规划化的图拉普拉斯矩阵定义为:

image-20220312205724786

公式(19)中的LsymL_{sym}是一个对称矩阵,下标sym是单词symmetric的简写,LrwL_{rw}不是对称矩阵,该矩阵和随机游走(random walk)相关,下标rw就是random walk 的首字母组合。

LsymL_{sym}的性质:

  • 对于任意向量fRnf \in R^n

image-20220312205922264

image-20220312205930303

  • LsymL_{sym}LrwL_{rw}具有相同的特征值,对应的特征值向量关系为

    ω=D1/2u\omega = D^{1/2} u

二、切割方法

优化的目标函数为:

image-20220312210846810

2.1 RatioCut切图

image-20220312211959073

引入指示向量hjh1,h2,..hk,j=1,2,...k,h_j∈{h_1,h_2,..h_k},j=1,2,...k,对于任意一个向量hjh_j, 它是一个n维向量(n为样本数),我们定义

image-20220312212210088

对应的RatioCut函数表达式为:

image-20220312212238622

松弛化的目标函数:

image-20220312213754655

将图切割为k个分组的问题转换成了求图拉普拉斯矩阵L的**前k个最小特征值对应的特征向量hjh1,h2,..hk,j=1,2,...k,h_j∈{h_1,h_2,..h_k},j=1,2,...k,**和L二次型之和。

求出来的hih_i并不能准确指示顶点所属类别,将矩阵H=[h1,h2,..hk]H= [h_1,h_2,..h_k]当作一个新的具有k个维度特征n个样本的数据集进行kmeansk-means聚类。是对每一个样本聚类,聚类的类别数是k,也就是对H的每一行进行聚类。

2.2 Ncut切图

image-20220312213256066

image-20220312213419592

优化目标任然是

image-20220312213433072

松弛化的目标函数:

image-20220312213820132

B=D1/2HB= D^{1/2}H:

image-20220312213915761

上式的解BB^*也就是矩阵LsymL_{sym}的前k个最小特征值对应的特征向量按列排列成B={b1,b2,...,bk}B^* = \{ b_1,b_2,...,b_k \}。反带入可得LrwL_{rw}前k个最小特征值对应的特征向量H={h1,h2,..hk}H=\{h_1,h_2,..h_k\}

或者矩阵LL的前kk个最小的广义特征值对应的特征向量。

三、算法实现步骤

最常用的相似矩阵的生成方式是基于高斯核距离的全连接方式,最常用的切图方式是Ncut。而到最后常用的聚类方法为K-Means

假设聚成kk个分组

(1)计算相似度矩阵WW

(2)计算度矩阵DD

(3)计算图拉普拉斯矩阵LL,构建标准化后的图拉普拉斯矩阵D1/2LD1/2D^{-1/2}LD^{-1/2}

(4)直接对D1/2LD1/2D^{-1/2}LD^{-1/2}进行特征值分解,获取其前kk个特征值对应的特征向量按照列排成矩阵Q=[q1,q2,...,qk]Q=[q_1,q_2,...,q_k]

(5)对矩阵QQ的 所有行r1,r2,...rnr_1,r_2,...r_n标准化,组成nkn*k进行聚类,如使用kmeansk-means方法或者别的方法进行聚类得到C1,C2,...,CkC_1,C_2,...,C_k

(6)输出原始数据的分组A1,A2,...,AkA_1,A_2,...,A_k,其中Ai={vjrjCi}A_i=\{v_j|r_j \in C_i \}

注意:在第(4)步也可以再计算规范化的矩阵LsymL_{sym},在对这个矩阵做特征分解或者做广义特征值分解,后面步骤相同。