`
deepfuture
  • 浏览: 4332878 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79404
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:68361
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:101484
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:281140
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14597
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:65552
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:31311
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45199
社区版块
存档分类
最新评论

谱聚类

阅读更多

1. 谱聚类

      给你博客园上若干个博客,让你将它们分成K类,你会怎样做?想必有很多方法,本文要介绍的是其中的一种——谱聚类。
      聚类的直观解释是根据样本间相似度,将它们分成不同组。谱聚类的思想是将样本看作顶点,样本间的相似度看作带权的边,从而将聚类问题转为图分割问题:找到一种图分割的方法使得连接不同组的边的权重尽可能低(这意味着组间相似度要尽可能低),组内的边的权重尽可能高(这意味着组内相似度要尽可能高)。将上面的例子代入就是将每一个博客当作图上的一个顶点,然后根据相似度将这些顶点连起来,最后进行分割。分割后还连在一起的顶点就是同一类了。更具体的例子如下图所示:

在上图中,一共有6个顶点(博客),顶点之间的连线表示两个顶点的相似度,现在要将这图分成两半(两个类),要怎样分割(去掉哪边条)?根据谱聚类的思想,应该去掉的边是用虚线表示的那条。最后,剩下的两半就分别对应两个类了。
      根据这个思想,可以得到unnormalized谱聚类和normalized谱聚类,由于前者比后者简单,所以本文介绍unnormalized谱聚类的几个步骤(假设要分K个类):
(a)建立similarity graph,并用 W 表示similarity graph的带权邻接矩阵
(b)计算unnormalized graph Laplacian matrix L(L = D - W, 其中D是degree matrix)
(c)计算L的前K个最小的特征向量
(d)把这k个特征向量排列在一起组成一个N*k的矩阵,将其中每一行看作k维空间中的一个向量,并使用 K-means 算法进行聚类

 

2. 算法原理解析

     这一节主要从大体上解释unnormalized谱聚类的四个步骤是怎么来的,不涉及具体的公式推导。
(a)谱聚类的思想就是要转化为图分割问题。因此,第一步就是将原问题转化为图。转为图有两个问题要解决:一是两个顶点的边要怎样定义;二是要保留哪些边。
      对于第一个问题,如果两个点在一定程度上相似,就在两个点之间添加一条边。相似的程度由边的权重表示(上图中边上面的数值就是权重了)。因此,只要是计算相似度的公式都可用,不过常用的是Gaussian similarity function
      要保留部分边的原因有:边太多了不好处理;权重太低的边是多余的。常用的保留边的方法是建立k-nearest neighbor graph。在这种图中,每个顶点只与K个相似度最高的点连边。

 

(b)unnormalized graph Laplacian matrix(以下用L表示)有很多很好的性质,也正是这个原因,才要在第二步中计算这么一个矩阵。最重要的性质是下面这一组性质:

这一组性质将在之后的公式推导中起到决定性作用。

 

(c)将原问题转化为图后,接下来的工作就是决定怎样分割了。图分割问题实际上就是最小割问题(mincut problem)。最小割问题可定义为最小化以下目标函数:

其中k表示分成k个组,Ai表示第i个组,表示第Ai的补集,W(A,B)表示第A组与第B组之间的所有边的权重之和。
      这个式子的直观意义:如果要分成K个组,那么其代价就是进行分割时去掉的边的权重的总和。可惜的是直接最小化这式子通常会导致不好的分割。以分成2类为例,这个式子通常会将图分成这样的两类:一个点为一类,剩下的所有点为另一类。显然,这样的分割是很不好的。因为我们期望着每个类都有合理的大小。所以,要对这个式子进行改进,改进后的公式(称为RatioCut)如下:

其中|A|表示A组中包含的顶点数目。
      在RatioCut中,如果某一组包含的顶点数越少,那么它的值就越大。在一个最小化问题中,这相当于是惩罚,也就是不鼓励将组分得太小。现在只要将最小化RatioCut解出来,分割就完成了。不幸的是,这是个NP难问题。想要在多项式时间内解出来,就要对这个问题作一个转化了。在转化的过程中,就用到上面提到的L的那一组性质,经过若干推导,最后可以得到这样的一个问题:


其中H是一个矩阵,它的元素的定义(Eq.(5))如下:

      如果H矩阵的元素不为0,则说明第i个点属于第j个类。也就是说,只要得到H矩阵,就能知道要怎样分割了。可惜的是,这个问题仍然是NP难问题。但是,如果我们让H矩阵的元素能够取任意值,这个问题就变成多项式时间内可解的了,此时问题变为:


      根据Rayleigh-Ritz theorem,这个问题的解是L的前k个最小的特征向量组成的矩阵H,其中特征向量是按列来排,即H的每一列,均为一个特征向量。

 

(d)在第三步中,我们为了松驰NP难问题,让H矩阵取任意值,因此,解出来的H矩阵不再具有原来的性质——元素值能指出哪个点属于哪一类。尽管如此,对于k-means来说,将H矩阵的每一行当作一个点进行聚类还是挺轻松的。因此,用k-means对H矩阵进行聚类作为谱聚类的最终结果。

分享到:
评论

相关推荐

    谱聚类算法MATLAB

    该谱聚类算法中相似性矩阵的求取,采用杰卡德相似性系数与DSM相结合。并以建立的相似性矩阵为基础,对DSM进行谱聚类。

    空间一致性约束谱聚类算法用于图像分割

    空间一致性约束谱聚类算法用于图像分割空间一致性约束谱聚类算法用于图像分割空间一致性约束谱聚类算法用于图像分割空间一致性约束谱聚类算法用于图像分割

    论文研究-基于CMT-FCM的自适应谱聚类算法.pdf

    传统谱聚类对初值选取十分敏感,严重影响了聚类效果。为了解决初值敏感问题,提出了基于CMT-FCM(借鉴历史知识的类中心距离极大化聚类算法)的自适应谱聚类算法。该算法以样本空间的标准差作为尺度参数,实现了尺度...

    【图像分割】基于谱聚类算法实现图像分割matlab源码.md

    【图像分割】基于谱聚类算法实现图像分割matlab源码.md

    谱聚类matlab实现

    谱聚类,数据集为大家熟悉的TwoMoons,还有SPL的字母字样的数据,用谱聚类实现之后,可以得到较好的结果。

    谱聚类算法实现.ipynb

    谱聚类算法即python实现,包括python sklearn库中关于谱聚类参数的描述,较详细地说明谱聚类算法中各个参数的含义并且给出一些调参方法。

    论文研究-一种基于p-Laplacian的谱聚类维数约简算法.pdf

    近年来, 谱聚类因其深厚的理论基础而在机器学习和数据挖掘领域中引起了广泛的关注。针对谱聚类算法中采用Laplacian矩阵时无法获得较好的图切判据, 通过引入p-Laplacian算子, 提出了一种基于p-Laplacian的谱聚类维数...

    1-CSTPCD 北大核心-基于半监督谱聚类集成的售后客户细分.pdf

    根据汽车售后服务客户细分的目的,以及保修期内客户对车辆...与谱聚类(SC)算法和谱聚类集成(SCE)算法相比,SSSCE 算法的客户细分结果较优。对用SSSCE算法细分得到的客户群进行特征分析,并给出相应的保养指导策略。

    自适应谱聚类算法研究

    谱聚类能识别出在原空间中线性不可分的聚类,且其效果优于传统聚类算法。谱聚类要想获得好的效果必须选择一个合适的尺度参数,本文在传统谱聚类算法的基础上引入类似核选取的技巧,提出了一个能自动选取该尺度参数的...

    论文研究-基于独立成分分析的时间序列谱聚类方法.pdf

    论文研究-基于独立成分分析的时间序列谱聚类方法.pdf, 为了对时间序列数据进行聚类分析, 提出了一种基于独立成分分析的时间序列多路归一化割谱聚类方法, 并给出了利用...

    谱聚类(spectral clustering)理解

    谱聚类spectral clustering,构图和切图,拉普拉斯矩阵

    谱聚类算法比较

    谱聚类能够识别任意形状的样本空间且收敛于全局最优解,其基本思想是利用样本数据相似矩阵的进行特征分解后得到的特征向量进行聚类,程序进行了几种不同聚类算法的比较,包括Q矩阵聚类,kmeans聚类,第一特征分量...

    谱聚类实现Matlab程序

    积分最低,Matlab环境下的谱聚类Spectral Clustering实现资源包,可以直接使用!

    C#谱聚类,支持大量文本聚类

    本程序采用C#实现了谱聚类,批处理文件中的参数为需要批处理的文件名,文件中的每一行为一个文件,在实际使用中,可以更加需要修改

    论文研究-谱聚类的现状及其在社会网络中的应用.pdf

    相反,作为一个最流行的现代数据的聚类算法,谱聚类在对社交网络的问题提供了一种系统的,灵活实用的解决方案。理论和实验证明,谱聚类在寻找全局最优解和处理大型数据集方面的性能优于传统聚类算法。一方面审视讨论...

    大数据集快速均值漂移谱聚类算法

    均值漂移谱聚类(MSSC)算法为模式识别聚类任务提供了一种较新的方案. 然而由于其内嵌均值漂移 过程的时间复杂度与样本容量呈平方关系, 其在大数据集环境的实用性受到大大削弱. 利用快速压缩集密度 估计器(FRSDE)替代...

    谱聚类详细、入门级介绍

    谱聚类详细、入门级介绍ppt。。和详细清晰

    归一化谱聚类算法

    采用谱聚类算法对数据进行聚类,该算法首先由吴恩达提出,聚类成功率达99%以上。代码采用matlab编写,下载后可直接运行。

    谱聚类算法对图像进行分割

    normalized cuts and image segementation这篇论文的作者写的程序,需要和.dll进行联合仿真,最好用2009a以下的版本进行仿真。

Global site tag (gtag.js) - Google Analytics