谱聚类(Spectral clustering)(2):NCut
作者:桂。
时间:2017-04-13 21:19:41
链接:http://www.cnblogs.com/xingshansi/p/6706400.html
声明:欢迎被转载,不过记得注明出处哦~

前言
本文为谱聚类的第二篇,主要梳理NCut算法,关于谱聚类的更多细节信息,可以参考之前的博文:
1)拉普拉斯矩阵(Laplace Matrix)与瑞利熵(Rayleigh quotient)
内容主要参考刘建平Pinard博客,更多细节可以参考该作者博文,本文最后给出代码实现,全文包括:
1)NCut原理
2)NCut算法实现
一、NCut原理
Ncut切图和RatioCut切图很类似,但是把Ratiocut的分母$|Ai|$换成$vol(A_i)$,由于子图样本的个数多并不一定权重就大,我们切图时基于权重也更合我们的目标,因此一般来说Ncut切图优于RatioCut切图。
$vol(A): = \sum\limits_{i \in A}d_i$

对应的,Ncut切图对指示向量h做了改进。注意到RatioCut切图的指示向量使用的是$\frac{1}{\sqrt{|A_j|}}$标示样本归属,而Ncut切图使用了子图权重$\frac{1}{\sqrt{vol(A_j)}}$来标示指示向量h,定义如下:

那么我们对于$h_i^TLh_i$有:

推导方式和RatioCut完全一致。也就是说,我们的优化目标仍然是

但是此时我们的$H^TH \neq I$而是$H^TDH = I$,推导如下:

也就是说,此时我们的优化目标最终为:

这个就是泛化瑞利熵的求解问题,之前文章分析过。这里再次给出细节分析。
令$H = D^{-1/2}F$,则优化目标转化为:

至此已经完成了NCut的理论。
画蛇添足一下吧,注意到:

事实上,连拉普拉斯矩阵都懒得构造了。
二、NCut算法实现
首先给出算法步骤:
步骤一:求解邻接矩阵W和度矩阵D
步骤二:对${D^{ - \frac{1}{2}}}W{D^{ - \frac{1}{2}}}$进行特征值分解,并取K个最大特征值对应的特征向量(K为类别数目)
步骤三:将求解的K个特征向量(并分别归一化),构成新的矩阵,对该矩阵进行Kmeans处理
Kmeans得到的类别标签,就是原数据的类别标签,至此完成NCut聚类。
给出代码实现:
sigma2 = 0.01;
%%Step1: Calculate matrixs
for i = 1:N
for j =1:N
W(i,j) = exp(-sqrt(sum((X(i,:)-X(j,:)).^2))/2/sigma2);
end
end
W = W-diag(diag(W));% adjacency matrix
D = diag(sum(W)); %degree matrix
%%Step2:Eigenvalues decomposition
K = 3;
[Q,V] = eigs(D^(-1/2)*W*D^(-1/2),K);
%%Step3:New matrix Q
Q = Q./repmat(sqrt(diag(Q'*Q)'),N,1);
[idx,ctrs] = kmeans(Q,K);
结果图:

测试一下,按数据为3类进行谱聚类,可以看出来还是有效的,谱聚类中高斯权重涉及到$\sigma$如何取值,不过这里就不做进一步讨论了。
参考:
谱聚类(Spectral clustering)(2):NCut的更多相关文章
- 【聚类算法】谱聚类(Spectral Clustering)
目录: 1.问题描述 2.问题转化 3.划分准则 4.总结 1.问题描述 谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图 ...
- 谱聚类(Spectral Clustering)详解
谱聚类(Spectral Clustering)详解 谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似 ...
- 谱聚类 Spectral Clustering
转自:http://www.cnblogs.com/wentingtu/archive/2011/12/22/2297426.html 如果说 K-means 和 GMM 这些聚类的方法是古代流行的算 ...
- 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut
聚类算法是ML中一个重要分支,一般采用unsupervised learning进行学习,本文根据常见聚类算法分类讲解K-Means, K-Medoids, GMM, Spectral cluster ...
- 谱聚类算法(Spectral Clustering)优化与扩展
谱聚类(Spectral Clustering, SC)在前面的博文中已经详述,是一种基于图论的聚类方法,简单形象且理论基础充分,在社交网络中广泛应用.本文将讲述进一步扩展其应用场景:首先是User- ...
- 谱聚类算法(Spectral Clustering)
谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法--将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的 ...
- Spectral Clustering
谱聚类算法(Spectral Clustering)优化与扩展 谱聚类(Spectral Clustering, SC)在前面的博文中已经详述,是一种基于图论的聚类方法,简单形象且理论基础充分,在 ...
- 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut
原文请戳:http://blog.csdn.net/abcjennifer/article/details/8170687 聚类算法是ML中一个重要分支,一般采用unsupervised learni ...
- 谱聚类(Spectral clustering)分析(1)
作者:桂. 时间:2017-04-13 19:14:48 链接:http://www.cnblogs.com/xingshansi/p/6702174.html 声明:本文大部分内容来自:刘建平Pi ...
- 谱聚类(Spectral clustering)(1):RatioCut
作者:桂. 时间:2017-04-13 19:14:48 链接:http://www.cnblogs.com/xingshansi/p/6702174.html 声明:本文大部分内容来自:刘建平Pi ...
随机推荐
- 每天一个linux命令(40)--route命令
Linux 系统的route 命令用于显示和操作IP路由表(show /manipulate the ip routing table).要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器, ...
- C#的for循环使用方法
for循环是程序语言开发中常见的技法之一,这类循环可以执行指定的次数,并维护它自己的计数器,要定义for循环,需要下述信息:1.初始化计数器变量的一个起始值;2.继续循环的条件,它应涉及到计数器变量; ...
- 游戏UI框架设计(四) : 模态窗体管理
游戏UI框架设计(四) --模态窗体管理 我们在开发UI窗体时,对于"弹出窗体"往往因为需要玩家优先处理弹出小窗体,则要求玩家不能(无法)点击"父窗体",这种窗 ...
- HTML&CSS Table元素详细解说
1.预热 css样式多如牛毛,我不可能一个一个去讲,那样好像背字典一样,我相信你们也不喜欢这样的方式.所以,我会在实战中慢慢和你讲解,然后,你记住一些重要的css属性就可以了.关键是,你要学会去查资料 ...
- 图形化代码阅读工具——Scitools Understand
Scitools出品的Understand 2.0.用了很多年了,比Source Insight强大很多.以前的名字叫Understand for C/C++,Understand for Java, ...
- Ionic2开发笔记(2)创建子页面及其应用
1. 当你第一次产生ionic2应用程序,这是生成的项目结构 ├── ├── config.xml 这包含配置应用程序的名称,和包名,将被用于我们的应用程序安装到一个实际的设备. ├── h ...
- java笔记---equals和==的区别
摔在这里几次,还是记下来吧.原文:http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452156.html --------------- ...
- 同步 VS 异步
同步请求资源 请求msdn上的一个页面计算页面大小 static void Main(string[] args) { string url = "https://docs.microsof ...
- html中submit和button的区别(总结) [ 转自欣步同学 ]
html中submit和button的区别(总结) submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了. 如果表单在点击提交按钮后需要用JS进行处理(包括输入验证 ...
- 关于xml中有特珠字符而导致XmlDocument无法Load的处理
这是个小事故导致的... 我们线上有个节目里名称里(`F`H9)MSTJXCX0B3J69,虽然我们看到是(`F`H9)MSTJXCX0B3J69,但百思不得其解,发现每次在XmlDocument.L ...