引言
谱聚类(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个簇划分
谱聚类优缺点
优点
- 对稀疏数据很有效
- 算法流程进行了降维,因此对高维数据效果较好
缺点
- 若降维幅度不够,则运行速度和效果会较差
- 聚类效果依赖于相似矩阵,相似矩阵不同,效果不同