谱聚类原理总结-by刘建平大神
来源:互联网 发布:java工程师人才缺口 编辑:程序博客网 时间:2024/05/02 19:57
本文转载于http://www.cnblogs.com/pinard/p/6221564.html
谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也不复杂。在处理实际的聚类问题时,个人认为谱聚类是应该首先考虑的几种算法之一。下面我们就对谱聚类的算法原理做一个总结。
1. 谱聚类概述
谱聚类是从图论中演化出来的算法,后来在聚类中得到了广泛的应用。它的主要思想是把所有的数据看做空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的边权重值较高,通过对所有数据点组成的图进行切图,让切图后不同的子图间边权重和尽可能的低,而子图内的边权重和尽可能的高,从而达到聚类的目的。
乍一看,这个算法原理的确简单,但是要完全理解这个算法的话,需要对图论中的无向图,线性代数和矩阵分析都有一定的了解。下面我们就从这些需要的基础知识开始,一步步学习谱聚类。
2. 谱聚类基础之一:无向权重图
由于谱聚类是基于图论的,因此我们首先温习下图的概念。对于一个图
对于有边连接的两个点
利用每个点度的定义,我们可以得到一个nxn的度矩阵
利用所有点之间的权重值,我们可以得到图的邻接矩阵
除此之外,对于点集
3. 谱聚类基础之二:相似矩阵
在上一节我们讲到了邻接矩阵
基本思想是,距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的边权重值较高,不过这仅仅是定性,我们需要定量的权重值。一般来说,我们可以通过样本点距离度量的相似矩阵
构建邻接矩阵
对于
从上式可见,两点间的权重要不就是
第二种定义邻接矩阵
第一种K邻近法是只要一个点在另一个点的K近邻中,则保留
第二种K邻近法是必须两个点互为K近邻中,才能保留
第三种定义邻接矩阵
在实际的应用中,使用第三种全连接法来建立邻接矩阵是最普遍的,而在全连接法中使用高斯径向核RBF是最普遍的。
4. 谱聚类基础之三:拉普拉斯矩阵
单独把拉普拉斯矩阵(Graph Laplacians)拿出来介绍是因为后面的算法和这个矩阵的性质息息相关。它的定义很简单,拉普拉斯矩阵
拉普拉斯矩阵有一些很好的性质如下:
1)拉普拉斯矩阵是对称矩阵,这可以由
2)由于拉普拉斯矩阵是对称矩阵,则它的所有的特征值都是实数。
3)对于任意的向量
这个利用拉普拉斯矩阵的定义很容易得到如下:
4) 拉普拉斯矩阵是半正定的,且对应的n个实数特征值都大于等于0,即
5. 谱聚类基础之四:无向图切图
对于无向图
对于任意两个子图点的集合
那么对于我们k个子图点的集合:
其中
那么如何切图可以让子图内的点权重和高,子图间的点权重和低呢?一个自然的想法就是最小化
我们选择一个权重最小的边缘的点,比如C和H之间进行cut,这样可以最小化
6. 谱聚类之切图聚类
为了避免最小切图导致的切图效果不佳,我们需要对每个子图的规模做出限定,一般来说,有两种切图方式,第一种是RatioCut,第二种是Ncut。下面我们分别加以介绍。
6.1 RatioCut切图
RatioCut切图为了避免第五节的最小切图,对每个切图,不光考虑最小化
那么怎么最小化这个RatioCut函数呢?牛人们发现,RatioCut函数可以通过如下方式表示。
我们引入指示向量
那么我们对于
上述第(1)式用了上面第四节的拉普拉斯矩阵的性质3. 第二式用到了指示向量的定义。可以看出,对于某一个子图i,它的RatioCut对应于
其中
注意到我们H矩阵里面的每一个指示向量都是n维的,向量中每个变量的取值为0或者
注意观察
对于
通过找到L的最小的k个特征值,可以得到对应的k个特征向量,这k个特征向量组成一个nxk维度的矩阵,即为我们的H。一般需要对H里的每一个特征向量做标准化,即
由于我们在使用维度规约的时候损失了少量信息,导致得到的优化后的指示向量h对应的H现在不能完全指示各样本的归属,因此一般在得到nxk维度的矩阵H后还需要对每一行进行一次传统的聚类,比如使用K-Means聚类.
6.2 Ncut切图
Ncut切图和RatioCut切图很类似,但是把Ratiocut的分母
,对应的,Ncut切图对指示向量
那么我们对于
推导方式和RatioCut完全一致。也就是说,我们的优化目标仍然是
但是此时我们的
也就是说,此时我们的优化目标最终为:
此时我们的H中的指示向量
我们令
可以发现这个式子和RatioCut基本一致,只是中间的L变成了
一般来说,
7. 谱聚类算法流程
铺垫了这么久,终于可以总结下谱聚类的基本流程了。一般来说,谱聚类主要的注意点为相似矩阵的生成方式(参见第二节),切图的方式(参见第六节)以及最后的聚类方法(参见第六节)。
最常用的相似矩阵的生成方式是基于高斯核距离的全连接方式,最常用的切图方式是Ncut。而到最后常用的聚类方法为K-Means。下面以Ncut总结谱聚类算法流程。
输入:样本集D=
输出: 簇划分
1) 根据输入的相似矩阵的生成方式构建样本的相似矩阵S
2)根据相似矩阵S构建邻接矩阵W,构建度矩阵D
3)计算出拉普拉斯矩阵L
4)构建标准化后的拉普拉斯矩阵
5)计算
6) 将特征向量
7)对F中的每一行作为一个
8)得到簇划分
8. 谱聚类算法总结
谱聚类算法是一个使用起来简单,但是讲清楚却不是那么容易的算法,它需要你有一定的数学基础。如果你掌握了谱聚类,相信你会对矩阵分析,图论有更深入的理解。同时对降维里的主成分分析也会加深理解。
下面总结下谱聚类算法的优缺点。
谱聚类算法的主要优点有:
1)谱聚类只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。这点传统聚类算法比如K-Means很难做到
2)由于使用了降维,因此在处理高维数据聚类时的复杂度比传统聚类算法好。
谱聚类算法的主要缺点有:
1)如果最终聚类的维度非常高,则由于降维的幅度不够,谱聚类的运行速度和最后的聚类效果均不好。
2) 聚类效果依赖于相似矩阵,不同的相似矩阵得到的最终聚类效果可能很不同。
(欢迎转载,转载请注明出处。欢迎沟通交流: pinard.liu@ericsson.com)
- 谱聚类原理总结-by刘建平大神
- 刘建平Pinard
- 上海盛大网络刘建平:邮件系统架构的那些事
- 大神交流总结
- 大神找工作总结一
- 大神找工作总结二
- C++异常处理--大神总结
- 大神对IO的总结
- 最牛散户赵建平
- mysql group by 原理
- order by 原理
- VoIP原理(by quqi99)
- COM应用和原理摘自大神
- 求救,heap corruption detected by dlmalloc,求大神
- distinct、order by、 group by实现原理
- 大神
- 大神
- IOS总结大神和Android开源
- flex布局
- 队列-C语言-链表的实现方式
- 数据库三大范式
- 有序关联容器
- win7 下安装 Ubuntu
- 谱聚类原理总结-by刘建平大神
- Untitled
- Codeforces-815C Karen and Supermarket(树型dp+背包)
- Redis入门
- Window COM口枚举
- 网易的一道笔试题
- python学习之路Day4
- Camera1实时预览并采集YUV图像
- 中断下半部