谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法。

将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目的。

"带权无向图"这个词太学术了,我们换一种叫法,即:相似度矩阵。

假设我们有一个相似度矩阵,矩阵中存的是所有对象的两两相似度。

那么这个矩阵应该有如下性质:

  1. 矩阵为N * N,N为对象总数
  2. 矩阵对角线的值为0,自己和自己相似个毛啊
  3. 矩阵为对称矩阵,及相似度是无向的

我们将该矩阵记为:W。

谱聚类的任务就是根据这个相似度矩阵,将这一大堆对象,分成不同的小堆,小堆内部的对象彼此都很像,小堆之间则不像。

谱聚类本身也提供了好几种不同的分割(cut)方法,每种方法对应一种优化目标。

本文只介绍其中比较常见,也是比较实用,而且实现起来也比较经济的一种:Nomarlized cut.

说白了,就是你最应该掌握和使用的一种,好了,进入正题。

当你得到一个相似度矩阵W后,即可通过以下几个步骤,来得到对应的图分割方案:

1. 计算对角矩阵D[N*N]。,公式如下:

D矩阵为对角矩阵,对角线上的值为W矩阵中对应行或列的和。

2. 计算拉普拉斯矩阵(Laplacian) L:

3.  归一化L矩阵

4. 计算归一化后L矩阵的K个最小特征值及对应的特征向量

将K个特征向量竖着并排放在一起,形成一个N*K的特征矩阵,记为Q。

5. 对特征矩阵Q做kmeans聚类,得到一个N维向量C。

分别对应相似度矩阵W中每一行所代表的对象的所属类别,这也就是最终的聚类结果。

此外:

关于第3步中,对拉普拉斯矩阵归一化时,归一化公式进行变换得到:

令:

则在第4步中,我们可以将求L的K个最小特征值及其对应的特征向量的问题,转化为求矩阵E的K个最大的特征值及其对应的特征向量。

        ---可以证明:L的K个最小特征值对应的特征向量,分别对应于E的K个最大的特征值对应的特征向量。

            且矩阵L的最小特征值为0,对应于矩阵E最大的特征值为1.矩阵L的第K小特征值等于1-矩阵E的第K大特征值

之所以要这么做,是因为在数值计算中,求矩阵的最大特征值,往往要比求最小特征值更方便和高效。

OK,至此,谱聚类就完成了,关于谱聚类的其他问题,诸如公式的推导,以及谱聚类的物理意义等,可参考博文:谱聚类算法。

谱聚类的实现很简单,按照上述5个步骤按部就班即可,在matlab中只需寥寥数行:

function C = SpectralClustering(W, k)[n,m] = size(W)  s = sum(W);D = full(sparse(1:n, 1:n, s));E = D^(-1/2)*W*D^(-1/2);[Q, V] = eigs(L, k);C = kmeans(Q, k);
end

谱聚类的完整C代码实现,可参考:https://code.csdn.net/u011531384/ml/tree/master/psc.c

谱聚类算法原理及实现相关推荐

  1. 干货 | 非常全面的谱聚类算法原理总结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 谱聚类算法是目前最流行的聚类算法之一,其性能及适用场景优于传统的聚 ...

  2. 非常全面的谱聚类算法原理总结

    谱聚类算法是目前最流行的聚类算法之一,其性能及适用场景优于传统的聚类算法如k-均值算法,本文对谱聚类算法进行了详细总结,内容主要参考论文<A Tutorial on Spectral Clust ...

  3. 小白入门谱聚类算法原理与实现

    小白入门谱聚类算法原理与实现 小白入门谱聚类算法原理与实现 1. 谱聚类是什么? 2.谱聚类步骤 2.1 谱聚类构图 2.2 谱聚类切图 2.2.1RatioCut 2.2.2Ncut 3谱聚类实现 ...

  4. 谱聚类算法原理(二)python实现

    谱聚类算法是目前最流行的聚类算法之一,其性能及适用场景优于传统的聚类算法如k-均值算法,本文对谱聚类算法进行了详细总结,内容主要参考论文<A Tutorial on Spectral Clust ...

  5. 谱聚类算法原理(一)

    谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...

  6. 【机器学习】5:谱聚类算法原理介绍

    前言:学习谱聚类,最好有一些图论.矩阵分解(SVD)方面的知识,这样会更加有利于谱聚类的学习.当然,谱聚类理解起来并不困难,实际操作也大多是谱聚类+K-means聚类联合使用的. –--------- ...

  7. 到底什么是谱聚类算法?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:视学算法 谱聚类算法是目前最流行的聚类算法之一,其性能及 ...

  8. 谱聚类python代码_Python 谱聚类算法从零开始

    谱聚类算法是一种常用的无监督机器学习算法,其性能优于其他聚类方法. 此外,谱聚类实现起来非常简单,并且可以通过标准线性代数方法有效地求解. 在谱聚类算法中,根据数据点之间的相似性而不是k-均值中的绝对 ...

  9. python谱聚类算法_谱聚类(spectral clustering)原理总结

    谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...

最新文章

  1. 深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测空气质量(PM2.5)+代码实战
  2. 完美解决opencv-python中文路径解析问题
  3. C#语言中的可访问性约束
  4. Github上 Star 数相加超过 7w+ 的三个面试相关的仓库推荐
  5. 在Docker中的ubuntu中安装Python3和Pip
  6. 如何将 ipynb 发布到 blog 中(html, markdown格式)
  7. arduino麦轮转弯程序_麦克纳姆轮智能小车接线方案
  8. 在Intel处理器上,修改mitigations参数使Linux系统运行得更快
  9. 黄渤高情商:小S和林志林同时掉到水里,你先救谁
  10. 三星明星机又悲剧了!万元折叠屏,玩不过2天,组团黑屏,蜜汁凸起
  11. CCF201609-1 最大波动(100分)
  12. 如何在arcgis中制作土地利用转移矩阵
  13. 23Exchange Server 2010跨站点部署-公网邮箱系统配置及公网记录
  14. linux filesystem not open,建立物理卷报错Can't open /dev/sdb5 exclusively. Mounted filesystem的问题解决过程记录...
  15. Metpy_气象物理量计算(相对湿度、露点温度、湿位涡等)
  16. 一篇不大正经的有关素数的小结
  17. Nexus默认账号密码
  18. 鞋子微商怎么做qq引流?微商如何通过QQ空间引流
  19. php框架tp6自学笔记——pdf文件下载
  20. Winlogon通知包(Winlogon Notification Package)

热门文章

  1. 去掉wps文档中的红色波浪线
  2. macbookpro和macbookair哪个好些?
  3. 文本数据类型强调说明
  4. 原来404页面可以这样做【转】
  5. 婴幼儿体重在线计算机,【婴儿体重计算器在线计算_婴儿体重计算器在线计算专题】- 天鹅到家...
  6. 做seo需要会ps吗?
  7. 职场小白必学技巧之:手把手教你分割PDF怎么操作
  8. 微信开发 url传参数 json 导致 ios 微信分享失败苹果手机sinature签名无效
  9. 什么是happens-before原则?
  10. [MIP技术分享] 织梦/DEDECMS改造MIP教程以及下载2