聚类算法 距离矩阵_谱聚类

比起传统的K-means算法,谱聚类对数据分布的适应性更强,计算量也要小很多。

1. 谱聚类概述

谱聚类是从图论中演化出来,主要思想是吧所有的数据看作空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的权重值较高,通过对所有数据点组成的图进行切图,让切图后不同子图间边权重和尽可能的低,子图内的边权重和尽可能的高,从而达到聚类的目的。

2. 谱聚类基础之一:无向权重图

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

b724d01fe3759e6616e71bb8cf3d3577.png

利用每个点度的定义,我们可以得到一个nxn的度矩阵D,它是一个对角矩阵,只有主对角线有值,对应第i行的第i个点的度数,定义如下:

fc2b4901ba2972bd48942c5f3b3ca2ac.png

利用所有点之间的权重值,我们可以得到图的邻接矩阵W,它也是一个n×n的矩阵,第i行的第j个值对应我们的权重wij

除此之外,对于点集V的的一个子集AV,我们定义:

e4acb9aaef3abf7cffb92f2cd3231355.png

3. 谱聚类基础之二:相似矩阵

在上一节我们讲到了邻接矩阵W,它是由任意两点之间的权重值wij组成的矩阵。通常我们可以自己输入权重,但是在谱聚类中,我们只有数据点的定义,并没有直接给出这个邻接矩阵,那么怎么得到这个邻接矩阵呢?

基本思想是,距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的边权重值较高,不过这仅仅是定性,我们需要定量的权重值。一般来说,我们可以通过样本点距离度量的相似矩阵S来获得邻接矩阵W

77f83654543235a907c1cb8c12912fa0.png

9bce8d41b2c9d500f574f12737c3959d.png

在实际的应用中,使用第三种全连接法来建立邻接矩阵是最普遍的,而在全连接法中使用高斯径向核RBF是最普遍的。

4. 谱聚类基础之三:拉普拉斯矩阵

单独把拉普拉斯矩阵(Graph Laplacians)拿出来介绍是因为后面的算法和这个矩阵的性质息息相关。它的定义很简单,拉普拉斯矩阵L=DWD即为我们第二节讲的度矩阵,它是一个对角矩阵。而W即为我们第二节讲的邻接矩阵,它可以由我们第三节的方法构建出。

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

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

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

3)对于任意的向量f,我们有

7028b3015f884d8b0a25b79ccfa4a3cf.png

4) 拉普拉斯矩阵是半正定的,且对应的n个实数特征值都大于等于0,即0=λ1≤λ2≤...≤λn, 且最小的特征值为0,这个由性质3很容易得出。

5. 谱聚类基础之四:无向图切图

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

f5f95fd2786c38e2c0672435dd3ff22e.png

那么如何切图可以让子图内的点权重和高,子图间的点权重和低呢?一个自然的想法就是最小化cut(A1,A2,...Ak), 但是可以发现,这种极小化的切图存在问题,如下图:

5d831f26afe0e2dd469277a88fed13a0.png

我们选择一个权重最小的边缘的点,比如C和H之间进行cut,这样可以最小化cut(A1,A2,...Ak), 但是却不是最优的切图,如何避免这种切图,并且找到类似图中"Best Cut"这样的最优切图呢?我们下一节就来看看谱聚类使用的切图方法。

6. 谱聚类之切图聚类

为了避免最小切图导致的切图效果不佳,我们需要对每个子图的规模做出限定,一般来说,有两种切图方式,第一种是RatioCut,第二种是Ncut。下面我们分别加以介绍。

6.1 RatioCut切图

RatioCut切图为了避免第五节的最小切图,对每个切图,不光考虑最小化cut(A1,A2,...Ak),它还同时考虑最大化每个子图点的个数,即:

94c527eb8e2dfe799685da16c779d609.png

ea9f27d80e89506e5afe744aaefd64ec.png

由于我们在使用维度规约的时候损失了少量信息,导致得到的优化后的指示向量h对应的H现在不能完全指示各样本的归属,因此一般在得到nxk维度的矩阵H后还需要对每一行进行一次传统的聚类,比如使用K-Means聚类.

6.2 Ncut切图

bb62d4eeeb5cb2d32045f3285a128758.png

a6c24dd3f8fdde51b676a1e98e53fa02.png

7170e0411306db2f7a90cc9bc2dea2f6.png

7. 谱聚类算法流程

一般来说,谱聚类主要的注意点为相似矩阵的生成方式、切图的方式以及最后的聚类方法。最常用的相似矩阵的生成方式是基于高斯核距离的全连接方式。最常用的切图方式是Ncut。而到最后常用的聚类方法为K-Means。下面为Ncut总结的谱聚类算法流程。

输入:样本集D=(x1,x2,...,xn),相似矩阵的生成方式, 降维后的维度k1, 聚类方法,聚类后的维度k2

输出: 簇划分C(c1,c2,...ck2).

(1)根据输入的相似矩阵的生成方式构建样本的相似矩阵

(2)根据相似矩阵S构建邻接矩阵W,构建度矩阵D

(3)计算出拉普拉斯矩阵L

(4)构建标准化后的拉普拉斯矩阵D−1/2LD−1/2

(5)计算D−1/2LD−1/2 最小的k1个特征值所对应的特征向量f

(6)将各自对应的特征向量f组成的矩阵按行标准化,最终组成n×k1维的特征矩阵F

(7)对F中的每一行作为一个k1维的样本,共n个样本,用输入的聚类方法进行聚类,聚类维数为k2.

(8)得到簇划分C(c1,c2,...ck2).

8. 谱聚类算法总结

主要优点:

(1)谱聚类算法只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。这点传统聚类算法比如K-Means很难做到

(2)由于使用了降维,因此在处理高维数据聚类时的复杂度比传统聚类算法好

主要缺点:

(1)如果最终聚类的维度非常高,则由于降维的幅度不够,谱聚类的运行速度和最后的聚类效果均不好

(2)聚类效果依赖于相似矩阵,不同的相似矩阵得到的最终聚类效果可能不同。

本文转自:

谱聚类(spectral clustering)原理总结​www.cnblogs.com
0b2df910c5e47bdf9b208b3a0b9f3101.png
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值