谱聚类算法原理及实现
谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法。
将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目的。
"带权无向图"这个词太学术了,我们换一种叫法,即:相似度矩阵。
假设我们有一个相似度矩阵,矩阵中存的是所有对象的两两相似度。
那么这个矩阵应该有如下性质:
- 矩阵为N * N,N为对象总数
- 矩阵对角线的值为0,自己和自己相似个毛啊
- 矩阵为对称矩阵,及相似度是无向的
我们将该矩阵记为: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
谱聚类算法原理及实现相关推荐
- 干货 | 非常全面的谱聚类算法原理总结
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 谱聚类算法是目前最流行的聚类算法之一,其性能及适用场景优于传统的聚 ...
- 非常全面的谱聚类算法原理总结
谱聚类算法是目前最流行的聚类算法之一,其性能及适用场景优于传统的聚类算法如k-均值算法,本文对谱聚类算法进行了详细总结,内容主要参考论文<A Tutorial on Spectral Clust ...
- 小白入门谱聚类算法原理与实现
小白入门谱聚类算法原理与实现 小白入门谱聚类算法原理与实现 1. 谱聚类是什么? 2.谱聚类步骤 2.1 谱聚类构图 2.2 谱聚类切图 2.2.1RatioCut 2.2.2Ncut 3谱聚类实现 ...
- 谱聚类算法原理(二)python实现
谱聚类算法是目前最流行的聚类算法之一,其性能及适用场景优于传统的聚类算法如k-均值算法,本文对谱聚类算法进行了详细总结,内容主要参考论文<A Tutorial on Spectral Clust ...
- 谱聚类算法原理(一)
谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...
- 【机器学习】5:谱聚类算法原理介绍
前言:学习谱聚类,最好有一些图论.矩阵分解(SVD)方面的知识,这样会更加有利于谱聚类的学习.当然,谱聚类理解起来并不困难,实际操作也大多是谱聚类+K-means聚类联合使用的. –--------- ...
- 到底什么是谱聚类算法?
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:视学算法 谱聚类算法是目前最流行的聚类算法之一,其性能及 ...
- 谱聚类python代码_Python 谱聚类算法从零开始
谱聚类算法是一种常用的无监督机器学习算法,其性能优于其他聚类方法. 此外,谱聚类实现起来非常简单,并且可以通过标准线性代数方法有效地求解. 在谱聚类算法中,根据数据点之间的相似性而不是k-均值中的绝对 ...
- python谱聚类算法_谱聚类(spectral clustering)原理总结
谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...
最新文章
- 深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测空气质量(PM2.5)+代码实战
- 完美解决opencv-python中文路径解析问题
- C#语言中的可访问性约束
- Github上 Star 数相加超过 7w+ 的三个面试相关的仓库推荐
- 在Docker中的ubuntu中安装Python3和Pip
- 如何将 ipynb 发布到 blog 中(html, markdown格式)
- arduino麦轮转弯程序_麦克纳姆轮智能小车接线方案
- 在Intel处理器上,修改mitigations参数使Linux系统运行得更快
- 黄渤高情商:小S和林志林同时掉到水里,你先救谁
- 三星明星机又悲剧了!万元折叠屏,玩不过2天,组团黑屏,蜜汁凸起
- CCF201609-1 最大波动(100分)
- 如何在arcgis中制作土地利用转移矩阵
- 23Exchange Server 2010跨站点部署-公网邮箱系统配置及公网记录
- linux filesystem not open,建立物理卷报错Can't open /dev/sdb5 exclusively. Mounted filesystem的问题解决过程记录...
- Metpy_气象物理量计算(相对湿度、露点温度、湿位涡等)
- 一篇不大正经的有关素数的小结
- Nexus默认账号密码
- 鞋子微商怎么做qq引流?微商如何通过QQ空间引流
- php框架tp6自学笔记——pdf文件下载
- Winlogon通知包(Winlogon Notification Package)
热门文章
- 去掉wps文档中的红色波浪线
- macbookpro和macbookair哪个好些?
- 文本数据类型强调说明
- 原来404页面可以这样做【转】
- 婴幼儿体重在线计算机,【婴儿体重计算器在线计算_婴儿体重计算器在线计算专题】- 天鹅到家...
- 做seo需要会ps吗?
- 职场小白必学技巧之:手把手教你分割PDF怎么操作
- 微信开发 url传参数 json 导致 ios 微信分享失败苹果手机sinature签名无效
- 什么是happens-before原则?
- [MIP技术分享] 织梦/DEDECMS改造MIP教程以及下载2