Spectral Clustering(学习Free Mind知识整理)
2015-08-27 17:54
936 查看
阅读http://blog.pluskid.org/?p=287文章中的一些知识整理:学习的知识点谱聚类。也可以学习一下/article/1350682.html里面的介绍和链接中的参考链接,总结的非常好。
==================================================================
Spectral Clustering 算法:
根据数据构造一个Graph,Graph的每一个节点对应一个数据点,将各个点连接起来(随后将那些已经被连接起来但并不怎么相似的点,通过cut/RatioCut/NCut 的方式剪开),并且边的权重用于表示数据之间的相似度。把这个Graph用邻接矩阵的形式表示出来,记为
。
把
的每一列元素加起来得到
个数,把它们放在对角线上(其他地方都是零),组成一个
的对角矩阵,记为度矩阵
,并把
-
的结果记为拉普拉斯矩阵
。
求出
的前
个特征值(前
个指按照特征值的大小从小到大排序得到)
,以及对应的特征向量
。
把这
个特征(列)向量排列在一起组成一个
的矩阵,将其中每一行看作
维空间中的一个向量,并使用 K-means 算法进行聚类。聚类的结果中每一行所属的类别就是原来 Graph 中的节点亦即最初的
个数据点分别所属的类别。
谱聚类的基本思想便是利用样本数据之间的相似矩阵(拉普拉斯矩阵)进行特征分解( 通过Laplacian Eigenmap 的降维方式降维),然后将得到的特征向量进行 K-means聚类。
===================================================================
优点:(1)谱聚类能在任意形状的样本空间上进行聚类,且收敛于全局最优点。而像k-means算法和EM算法是建立在凸球形的样本空间上,当样本空间不凸时,算法会陷入“局部”最优。
(2) 谱聚类只需要数据之间的相似度矩阵就可以了,而不必像K-means那样要求数据必须是 N 维欧氏空间中的向量。
(3)RatioCut方法只考虑了类间相似性最小,而normalizedCut不仅考虑了类间还考虑了类内的相似性。
===================================================================
unnormalized谱聚类的MATLAB实现:
===================================================================
不错的链接:
孟岩之理解矩阵系列:/article/1767807.html;
理解矩阵的12点数学笔记:http://www.51weixue.com/thread-476-1-1.html;
一堆wikipedia,比如特征向量:https://zh.wikipedia.org/wiki/%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F;
wikipedia上关于拉普拉斯矩阵的介绍:http://en.wikipedia.org/wiki/Laplacian_matrix;
邹博之聚类PPT:http://pan.baidu.com/s/1i3gOYJr;
关于谱聚类的一篇非常不错的英文文献,“A Tutorial on Spectral Clustering”:http://engr.case.edu/ray_soumya/mlrg/Luxburg07_tutorial_spectral_clustering.pdf;
知乎上关于矩阵和特征值的两个讨论:http://www.zhihu.com/question/21082351,http://www.zhihu.com/question/21874816;
谱聚类:http://www.cnblogs.com/fengyan/archive/2012/06/21/2553999.html;
谱聚类算法:http://www.cnblogs.com/sparkwen/p/3155850.html;
漫谈 Clustering 系列:http://blog.pluskid.org/?page_id=78;
《Mining of Massive Datasets》第10章:http://infolab.stanford.edu/~ullman/mmds/book.pdf;
Tydsh: Spectral Clustering:①http://blog.sina.com.cn/s/blog_53a8a4710100g2rt.html,②http://blog.sina.com.cn/s/blog_53a8a4710100g2rv.html,③http://blog.sina.com.cn/s/blog_53a8a4710100g2ry.html,④http://blog.sina.com.cn/s/blog_53a8a4710100g2rz.html;
H. Zha, C. Ding, M. Gu, X. He, and H.D. Simon. Spectral relaxation for K-means clustering. Advances in Neural Information Processing Systems 14 (NIPS 2001). pp. 1057-1064, Vancouver, Canada. Dec.
2001;
机器学习中谱聚类方法的研究:http://lamda.nju.edu.cn/conf/MLA07/files/YuJ.pdf;
谱聚类的算法实现:http://liuzhiqiangruc.iteye.com/blog/2117144。
====================================================================
==================================================================
Spectral Clustering 算法:
根据数据构造一个Graph,Graph的每一个节点对应一个数据点,将各个点连接起来(随后将那些已经被连接起来但并不怎么相似的点,通过cut/RatioCut/NCut 的方式剪开),并且边的权重用于表示数据之间的相似度。把这个Graph用邻接矩阵的形式表示出来,记为
。
把
的每一列元素加起来得到
个数,把它们放在对角线上(其他地方都是零),组成一个
的对角矩阵,记为度矩阵
,并把
-
的结果记为拉普拉斯矩阵
。
求出
的前
个特征值(前
个指按照特征值的大小从小到大排序得到)
,以及对应的特征向量
。
把这
个特征(列)向量排列在一起组成一个
的矩阵,将其中每一行看作
维空间中的一个向量,并使用 K-means 算法进行聚类。聚类的结果中每一行所属的类别就是原来 Graph 中的节点亦即最初的
个数据点分别所属的类别。
谱聚类的基本思想便是利用样本数据之间的相似矩阵(拉普拉斯矩阵)进行特征分解( 通过Laplacian Eigenmap 的降维方式降维),然后将得到的特征向量进行 K-means聚类。
===================================================================
优点:(1)谱聚类能在任意形状的样本空间上进行聚类,且收敛于全局最优点。而像k-means算法和EM算法是建立在凸球形的样本空间上,当样本空间不凸时,算法会陷入“局部”最优。
(2) 谱聚类只需要数据之间的相似度矩阵就可以了,而不必像K-means那样要求数据必须是 N 维欧氏空间中的向量。
(3)RatioCut方法只考虑了类间相似性最小,而normalizedCut不仅考虑了类间还考虑了类内的相似性。
===================================================================
unnormalized谱聚类的MATLAB实现:
function [ C, L, D, Q, V ] = SpectralClustering(W, k) % spectral clustering algorithm % input: adjacency matrix W; number of cluster k % return: cluster indicator vectors as columns in C; unnormalized Laplacian L; degree matrix D; % eigenvectors matrix Q; eigenvalues matrix V % calculate degree matrix degs = sum(W, 2); D = sparse(1:size(W, 1), 1:size(W, 2), degs); % compute unnormalized Laplacian L = D - W; % compute the eigenvectors corresponding to the k smallest eigenvalues % diagonal matrix V is NcutL's k smallest magnitude eigenvalues % matrix Q whose columns are the corresponding eigenvectors. [Q, V] = eigs(L, k, 'SA'); % use the k-means algorithm to cluster V row-wise % C will be a n-by-1 matrix containing the cluster number for each data point C = kmeans(Q, k); % convert C to a n-by-k matrix containing the k indicator vectors as columns C = sparse(1:size(D, 1), C, 1); end
===================================================================
不错的链接:
孟岩之理解矩阵系列:/article/1767807.html;
理解矩阵的12点数学笔记:http://www.51weixue.com/thread-476-1-1.html;
一堆wikipedia,比如特征向量:https://zh.wikipedia.org/wiki/%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F;
wikipedia上关于拉普拉斯矩阵的介绍:http://en.wikipedia.org/wiki/Laplacian_matrix;
邹博之聚类PPT:http://pan.baidu.com/s/1i3gOYJr;
关于谱聚类的一篇非常不错的英文文献,“A Tutorial on Spectral Clustering”:http://engr.case.edu/ray_soumya/mlrg/Luxburg07_tutorial_spectral_clustering.pdf;
知乎上关于矩阵和特征值的两个讨论:http://www.zhihu.com/question/21082351,http://www.zhihu.com/question/21874816;
谱聚类:http://www.cnblogs.com/fengyan/archive/2012/06/21/2553999.html;
谱聚类算法:http://www.cnblogs.com/sparkwen/p/3155850.html;
漫谈 Clustering 系列:http://blog.pluskid.org/?page_id=78;
《Mining of Massive Datasets》第10章:http://infolab.stanford.edu/~ullman/mmds/book.pdf;
Tydsh: Spectral Clustering:①http://blog.sina.com.cn/s/blog_53a8a4710100g2rt.html,②http://blog.sina.com.cn/s/blog_53a8a4710100g2rv.html,③http://blog.sina.com.cn/s/blog_53a8a4710100g2ry.html,④http://blog.sina.com.cn/s/blog_53a8a4710100g2rz.html;
H. Zha, C. Ding, M. Gu, X. He, and H.D. Simon. Spectral relaxation for K-means clustering. Advances in Neural Information Processing Systems 14 (NIPS 2001). pp. 1057-1064, Vancouver, Canada. Dec.
2001;
机器学习中谱聚类方法的研究:http://lamda.nju.edu.cn/conf/MLA07/files/YuJ.pdf;
谱聚类的算法实现:http://liuzhiqiangruc.iteye.com/blog/2117144。
====================================================================
相关文章推荐
- JS 事件
- ALGLIB
- 1283 最简单的计算机【简单模拟】
- java学习日记2
- amaze UI animation动画示例
- 关于/etc/hosts文件
- Python中dict详解
- SVM(二)拉格朗日对偶问题
- Java NIO API详解2
- JSON字符串对应实体类
- ZooKeeper 特性
- 使用Xcode、Android Studio将项目链接到Git
- HDU3072 Intelligence System(强连通+最小传递费用+边权)
- cnn下matlab移植opencv体会
- fedora搭建crtmpserver
- linux常用命令(11):nl命令
- 关于cocos2dx的textfield事件响应
- 普通rgb转换为16进制
- 使用AWS Data Pipeline处理数据
- Metasploit(二)--Msf 常用***命令