谱聚类

引言

谱聚类(spectual clustering)是一类非常使用的聚类方法。因为算法基于谱图的理论基础上,因此成为谱聚类。与传统的聚类算法相比,它具有能在任意形状的样本空间上聚类且收敛于全局最优解的优点,因此应用广泛,同时是目前研究和应用最广泛的聚类算法。

谱聚类算法

谱聚类思想

谱聚类的本质思想就是将数据当做空间中的点,这些点之间可以用边连接,形成无向图。

其中,距离较远的点之间的权重较低,距离较近的点之间的权重较高,

对图进行切图,让不同的子图之间的权重和尽可能的低,子图内的权重尽可能的高,进而达到聚类的目的。

基础知识

无向权重图

我们用来表示无向权重图。其中 表示点,表示边,边连接两个点,我们定义边的值为权重,因为是无向图,因此,

对于有边连接的点,有
对于没有边连接的点,有

对于点,我们定义它的度为与它相连接的所有的边的权重的和,即:

因此对于无向图,我们可以定义相应的度矩阵:

对于度矩阵,只有主对角线上有值。值表示每一个点的度。

邻接矩阵

邻接矩阵,其中之间的权重

那么我们如何定义权重呢?一般场景下,我们利用两点之间的距离来构建邻接矩阵。

一般有三种方法:近邻法,k近邻法,全连接法

近邻法

其中

近邻法

取每个样本最近的k个点作为近邻,只有和样本距离最近的k个点间的。一般为了对称性,采用下面的公式处理

第一种:

第二种:

全连接法

当然用的最多的还是全连接法,这个最简单:

相似矩阵

相似矩阵就是上面的S矩阵,其中:

拉普拉斯矩阵

矩阵就是laplace矩阵。laplace矩阵有几个优良性质:

1) 矩阵是对称矩阵

2) 矩阵的特征值都是实数

3) 对于任意向量,都有

证明如下:

4) 矩阵是半正定矩阵

无向图切图

将G切分成相互没有连接的k个子图,每个子图的点的集合,满足

对于任意两个子图,其切图的权重为:

定义

切图的目的就是使子图内的点的权重的和尽可能的高,子图间的点的权重和尽可能的低。

因此可以通过最小化实现,但是单纯最小化是有问题的,会导致切图得到不理想的结果,如将某一个点切为一个图,剩余的点切为一个图等等,因此需要对切图进行一定的约束。

切图

有了点之间的度量,那么我们还剩下一个问题,就是按照什么规则将点划分到不同的区域,既然谱聚类是基于图算法,那么我们就利用切图的算法,将点划分到不同的子类中。

RatioCut

Ratio切图不仅要最小化,还要最大化每个子图中点的个数,因此可以用下面的公式来表示:

其中是A中的点的个数

那么我们该如何解析这个函数呢?我们引入指示变量,是一个n维向量,定义:

因此有:

因此问题转化为:

这是一个NP-hard问题,我们可以近似来解决这个问题。可以对做特征值分解,找到k个最小的特征值,这些特征值对应的特征向量组成的n*k维矩阵就是H(类似于PCA的过程)。

由于上面的方式损失了少量的信息,导致对应的H不能完全只是个样本的归属,一次你得到n*k矩阵后需要对每一行进行一个常规的聚类,如k-means。

NCut切图

也就是将RatioCut的分母用代替。

即用权重和来代替点的个数,因为点多,权重不一定大。

这里我们引入指示向量

同理有:

优化的目标依旧是,问题转化为:

因为:

,因此目标为:

也就是求的前k个最小特征值及其对应的特征向量并标准化,得到矩阵F,对F做k-means即可。

一般来说:

谱聚类流程

输入

  • 样本集
  • 降维后的维度k
  • 聚类后的簇数m

算法

  • 利用全连接RBF核生成相似矩阵S
  • 根据相似矩阵构建邻接矩阵W和度矩阵D
  • 标准化
  • 计算的最小k个特征值及其特征向量f
  • 将f按行标准化,得到n*k的矩阵F
  • 将F中的每一行作为K维的样本,利用k-means聚类为m
  • 得到m个簇划分

谱聚类优缺点

优点

  • 对稀疏数据很有效
  • 算法流程进行了降维,因此对高维数据效果较好

缺点

  • 若降维幅度不够,则运行速度和效果会较差
  • 聚类效果依赖于相似矩阵,相似矩阵不同,效果不同
显示 Gitment 评论