四种常用聚类及代码(二):谱聚类(spectral clustering)

谱聚类是一种基于图论的聚类方法,通过拉普拉斯矩阵的特征向量进行聚类。本文详细介绍了谱聚类的概述、数学准备,包括谱、无向权重图、相似矩阵和拉普拉斯矩阵,以及切图聚类的三种方法。文章还探讨了谱聚类的优缺点,并提供了Python实现的步骤。
摘要由CSDN通过智能技术生成


谱聚类在最近几年变得受欢迎起来,主要原因就是它实现简单,聚类效果经常优于传统的聚类算法(如K-Means算法)。刚开始学习谱聚类的时候,给人的感觉就是这个算法看上去很难,但是当真正的深入了解这个算法的时候,其实它的原理并不难,但是理解该算法还是需要一定的数学基础的。如果掌握了谱聚类算法,会对矩阵分析,图论和降维中的主成分分析等有更加深入的理解。

1、谱聚类概述

谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目的。其中的最优是指最优目标函数不同,可以是割边最小分割, 也可以是分割规模差不多且割边最小的分割。
谱聚类通过对样本数据的拉普拉斯矩阵的特征向量进行聚类,从而对样本数据聚类。谱聚类可以理解为将高维空间的数据映射到低维,然后在低维空间用其它聚类算法(如K-Means)进行聚类。

1.1、简单说明

谱聚类过程主要有两步,第一步是构图,将采样点数据构造成一张网图,表示为G(V,E),V表示图中的点,E表示点与点之间的边,如下图:
构图
第二步是切图,即将第一步构造出来的按照一定的切边准则,切分成不同的图,而不同的子图,即我们对应的聚类结果,举例如下:
切图

2、数学准备

2.1、谱

方阵作为线性算子,它的所有特征值的全体统称为方阵的谱。方阵的谱半径为最大的特征值。矩阵A的谱半径是矩阵ATA的最大特征值。

2.2、无向权重图

对于一个图G,我们一般用点的集合V和边的集合E来描述。即为G(V,E)。其中V即为我们数据集里面所有的点(v1,v2,…vn)。对于V中的任意两个点,可以有边连接,也可以没有边连接。我们定义权重wij为点vi和点vj之间的权重。由于我们是无向图,所以wij=wji

对于有边连接的两个点vi和vj,wij>0,对于没有边连接的两个点vi和vj,wij=0。对于图中的任意一个点vi,它的度di定义为和它相连的所有边的权重之和,即di = ∑ \sum j wij

利用每个点度的定义,我们可以得到一个nxn的度矩阵D,它是一个对角矩阵,只有主对角线有值,对应第i行的第i个点的度数。
利用所有点之间的权重值,我们可以得到图的邻接矩阵W,它也是一个nxn的矩阵,第i行的第j个值对应我们的权重wij

2.3、相似矩阵

相似矩阵就是样本点中的任意两个点之间的距离度量,在聚类算法中可以表示为距离近的点它们之间的相似度比较高,而距离较远的点它们的相似度比较低,甚至可以忽略。这里用三种方式表示相似度矩阵:一是ϵ-近邻法(ϵ-neighborhood graph),二是k近邻法(k-nearest nerghbor graph),三是全连接法(fully connected graph)。下面我们来介绍这三种方法。

2.3.1、ϵ-neighborhood graph:

样本点中任意两点之间的欧式距离:
欧式距离
用此方法构造的相似度矩阵表示如下:
相似度矩阵
该相似度矩阵由于距离近的点的距离表示为,距离远的点距离表示为0,矩阵种没有携带关于数据集的太多的信息,所以该方法一般很少使用,在sklearn中也没有使用该方法。

2.3.2、k-nearest nerghbor graph:

由于每个样本点的k个近邻可能不是完全相同的,所以用此方法构造的相似度矩阵并不是对称的。因此,这里使用两种方式表示对称的knn相似度矩阵,第一种方式是如果vi在vj的k个邻域中 或者 vj在vi的k个邻域中,则wij=wji为vi与vj之间的距离,否则为0;第二种方式是如果vi在vj的k个邻域中 并且 vj在vi的k个邻域中,则wij=wji为vi与vj之间的距离,否则为0。很显然第二种方式比第一种方式生成的相似度矩阵要稀疏。这两种方式用公式表达如下:

第一种方式:
在这里插入图片描述
第二种方式:
在这里插入图片描述

2.3.3、fully connected graph:

该方法就是在算法描述中的高斯相似度方法,公式如下:
在这里插入图片描述
该方法也是最常用的方法,在sklearn中默认的也是该方法,表示任意两个样本点都有相似度,但是距离较远的样本点之间相似度较低,甚至可以忽略。这里面的参数控制着样本点的邻域宽度,即越大表示样本点与距离较远的样本点的相似度越大,反之亦然。

2.4、拉普拉斯矩阵

单独把拉普拉斯矩阵(Graph Laplacians)拿出来介绍是因为后面的算法和这个矩阵的性质息息相关。它的定义很简单,拉普拉斯矩阵L=D−W。D即为度矩阵,它是一个对角矩阵。而W即为邻接矩阵,它可以通过相似矩阵构建出。

拉普拉斯矩阵有一些很好的性质如下:

1)拉普拉斯矩阵是对称矩阵,这可以由D和W都是对称矩阵而得。

2)由于拉普拉斯矩阵是对称矩阵,则它的所有的特征值都是实数。

3)对于任意的向量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\limits_{i,j=1}^{n}w_{ij}(f_i-f_j)^2 fTLf=21i,j=1nwij(fifj)2
证明:
f T L f = f T D f − f T W f = ∑ i = 1 n d i f i 2 − ∑ i , j = 1 n w i j f i f j f^TLf = f^TDf - f^TWf = \sum\limits_{i=1}^{n}d_if_i^2 - \sum\limits_{i,j=1}^{n}w_{ij}f_if_j fTLf=fTDffTWf=i=1ndifi2i,j=1nwijfifj
= 1 2 ( ∑ i = 1 n d i f i 2 − 2 ∑ i , j = 1 n w i j f i f j + ∑ j = 1 n d j f j 2 ) = 1 2 ∑ i , j = 1 n w i j ( f i − f j ) 2 =\frac{1}{2}( \sum\limits_{i=1}^{n}d_if_i^2 - 2 \sum\limits_{i,j=1}^{n}w_{ij}f_if_j + \sum\limits_{j=1}^{n}d_jf_j^2) = \frac{1}{2}\sum\limits_{i,j=1}^{n}w_{ij}(f_i-f_j)^2 =21(i=1ndifi22i,j=1nwijfifj+j=1ndjfj2)=21i,j=1nwij(fifj)2
4) 拉普拉斯矩阵是半正定的,且对应的n个实数特征值都大于等于0,即0=λ1≤λ2≤…≤λn, 且最小的特征值为0:
1 ‾ \overline{1} 1表示n*1的全1向量,则
在这里插入图片描述
由D和W的定义可以得出上式。

3、切图聚类

3.1、切图

对于无向图G的切图,我们的目标是将图G(V,E)切成相互没有连接的k个子图,每个子图点的集合为:A1,A2,…Ak,它们满足Ai∩Aj=∅,且A1∪A2∪…∪Ak=V.

对于任意两个子图点的集合A,B⊂V, A∩B=∅, 我们定义A和B之间的切图权重为:
W ( A , B ) = ∑ i ∈ A , j ∈ B w i j W(A, B) = \sum\limits_{i \in A, j \in B}w_{ij} W(A,B)=iA,jBwij
那么对于我们k个子图点的集合:A1,A2,…Ak,我们定义切图cut为:
c u t ( A 1 , A 2 , . . . A k ) = 1 2 ∑ i = 1 k W ( A i , A ‾ i ) cut(A_1,A_2,...A_k) = \frac{1}{2}\sum\limits_{i=1}^{k}W(A_i, \overline{A}_i ) cut(A1,A2,...Ak)=21i=1kW(Ai,Ai)
其中 A ‾ \overline{A} Ai为Ai的补集,意为除Ai子集外其他V的子集的并集。

那么如何切图可以让子图内的点权重和高,子图间的点权重和低呢?一个自然的想法就是最小化cut(A1,A2,…Ak), 但是可以发现,这种极小化的切图存在问题,如下图:
在这里插入图片描述
我们选择一个权重最小的边缘的点,比如C和H之间进行cut,这样可以最小化cut(A1,A2,…Ak), 但是却不是最优的切图,如何避免这种切图,并且找到类似图中"Best Cut"这样的最优切图呢?

3.2、三种切图方法

3.2.1、最小切(mincut)

即最小化cut(A1,A2,…Ak)

3.2.2、RatioCut切图

RatioCut切图为了避免最小切图,对每个切图,不光考虑最小化cut(A1,A2,…Ak),它还同时考虑最大化每个子图点的个数,即:
R a t i o C u t ( A 1 , A 2 , . . . A k ) = 1 2 ∑ i = 1 k W ( A i , A ‾ i ) ∣ A i ∣ RatioCut(A_1,A_2,...A_k) = \frac{1}{2}\sum\limits_{i=1}^{k}\frac{W(A_i, \overline{A}_i )}{|A_i|} RatioCut(A1,A2,...Ak)=21i=1kAiW(Ai,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值