谱聚类算法(Spectral Clustering)优化与扩展
谱聚类(Spectral Clustering, SC)在前面的博文中已经详述,是一种基于图论的聚类方法,简单形象且理论基础充分,在社交网络中广泛应用。本文将讲述进一步扩展其应用场景:首先是User-Item协同聚类,即spectral coclustering,之后再详述谱聚类的进一步优化。
1 Spectral Coclustering
1.1 协同聚类(Coclustering)
在数据分析中,聚类是最常见的一种方法,对于一般的聚类算法(kmeans, spectral clustering, gmm等等),聚类结果都类似图1所示,能挖掘出数据之间的类簇规律。
图1 聚类结果图
即使对于常见的数据User-Item评分矩阵(常见于各社交平台的数据之中,例如音乐网站的用户-歌曲评分矩阵,新闻网站的用户-新闻评分矩阵,电影网站的用户-电影评分矩阵等等),如表1所示。在聚类分析中,也常常将数据计算成User-User的相似度关系或Item-Item的相似度关系,计算方法诸如应用Jaccard距离,将User或Item分别当成Item或User的特征,再在此基础上计算欧氏距离、cos距离等等。
表1 User-Item评分矩阵
但是如果能聚类成如图2中的coclustering关系,将User和Item同时聚类,将使得数据结果更具意义,即在音乐网站中的用户和歌曲coclustering结果表明,某些用户大都喜欢某类歌曲,同时这类歌曲也大都只被这群用户喜欢着。这样,不管是用于何种场景(例如歌曲推荐),都将带来极大的益处。
图2 coclustering图
1.2 Spectral Coclustering
对于User-Item评分矩阵,这是一个典型的二部图(Bipartite Grap),Item-User矩阵A,假设A为N*M,即N个item和M个user,可展开成:
其中E为(M+N)*(M+N)的方阵,且对称。
对于A的二部图,只存在Item与User之间的邻接边,在Item(User)之间不存在邻接边。再用谱聚类原理——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远。这样的聚类结果将Cut尽量少的边,分割出User和Item的类,如果类记Ci(U,I)为第i个由特定的User和Item组成的类,由谱聚类原理,Cut掉的Ci边为中的User或Item与其它类Cj(j≠i)的边,且其满足某种最优Cut方法,简单地说,Cut掉的User到其它类Cj(j≠i)的Item的边,可理解为这些User与其它Item相似关系较小;同样Cut掉的Item到其它类Cj(j≠i)的User的边,可理解为这些Item与其它User相似关系较小。这正好满足coclusering的定义。
在谱聚类的基础上,再实现Spectral Coclustering,十分简单, 将E直接当成谱聚类的邻接矩阵即可,至于求Laplacian矩阵、求特征值、计算Kmeans,完成与谱聚类相同。
PS:更多详情,请参见参考文献1。
2 谱聚类的半监督学习
假设有大量新闻需要聚类,但对于其中的部分新闻,编辑已经人工分类好了,例如(Ni1,Ni2, …, Nim),为分类好的第i类,那么对于人工分类好的数据,就相当于聚类中的先验知识(或正则)。
在聚类时,可相应在邻接矩阵E中增加类彼此间邻接边,并使得其邻接权重较大,这样生成的邻接矩阵为E’。这样,再对此邻接矩阵E’做谱聚类,聚类结果将在一定程度上维持人工分类的结果,并达到聚类的目的。
PS:更多详情,请参见参考文献2,不过谱聚类的半监督学习,都有点扯。
参考文献:
1 Inderjit S. Dhillon. Co-clustering documents and words using Bipartite Spectral Graph Partitioning;
2 W Chen. Spectral clustering: A semi-supervised approach;
3 Wen-Yen Chen, Yangqiu Song, Hongjie Bai, Chih-Jen Lin, Edward Y. Chang. Parallel Spectral Clustering in Distributed Systems.
----
谱聚类算法(Spectral Clustering)优化与扩展的更多相关文章
- 谱聚类算法(Spectral Clustering)
谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法--将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的 ...
- 谱聚类(spectral clustering)原理总结
谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...
- 谱聚类(Spectral clustering)(2):NCut
作者:桂. 时间:2017-04-13 21:19:41 链接:http://www.cnblogs.com/xingshansi/p/6706400.html 声明:欢迎被转载,不过记得注明出处哦 ...
- 谱聚类(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 ...
- 谱聚类(Spectral Clustring)原理
谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...
- 谱聚类算法—Matlab代码
% ========================================================================= % 算 法 名 称: Spectral Clus ...
- Standford机器学习 聚类算法(clustering)和非监督学习(unsupervised Learning)
聚类算法是一类非监督学习算法,在有监督学习中,学习的目标是要在两类样本中找出他们的分界,训练数据是给定标签的,要么属于正类要么属于负类.而非监督学习,它的目的是在一个没有标签的数据集中找出这个数据集的 ...
- 谱聚类算法及其代码(Spectral Clustering)
https://blog.csdn.net/liu1194397014/article/details/52990015 https://blog.csdn.net/u011089523/articl ...
随机推荐
- 第一册:lesson forty three。
原文: Hurry up! A:Can you make the tea,Sam? B:Yes,of course I can ,Penny. Is there any water in this k ...
- c#等程序中的关于时间的最大值【DateTime.MaxValue】和最小值【DateTime.MinValue】
运行之后得到的结果 c# DateTime.MaxValue:// :: DateTime.MinValue:// :: Sql Server DateTime 类型必须介于 1/1/1753 12: ...
- C#基础知识总结(四)
摘要 循环结构的总结.跳转语句(break.continue).调试程序 一.循环结构的总结 1.while循环 ; ) { Console.WriteLine(i); i++; } 2.do-whi ...
- Centos 7.6配置nginx反向代理负载均衡集群
一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76 nginx负载均衡器 192.168.2.82 web ...
- JSJ——java基本概念二
当Java虚拟机启动执行时,它会寻找你在命令列所指定的类.每个Java程序最少都会有一个类以及一个main().每个应用程序只有一个main()函数.然后它会锁定像下面这样一个特定的方法: publi ...
- webpack4 系列教程(十五):开发模式与webpack-dev-server
作者按:因为教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十五):开发模式与 webpack-dev-server>原文地址.更欢迎来我的 ...
- 《JavaScript高级程序设计》笔记:基本概念(三)
数据类型 ECMAScript中有5种简单数据类型(也称为基本数据类型):undefined,null,boolean,number和string. typeof typeof null会返回“obj ...
- Kotlin入门教程——目录索引
Kotlin是谷歌官方认可的Android开发语言,Android Studio从3.0版本开始就内置了Kotlin,所以未来在App开发中Kotlin取代Java是大势所趋,就像当初Android ...
- DAY5(PYTHON) 字典的增删改查和dict嵌套
一.字典的增删改查 dic={'name':'hui','age':17,'weight':168} dict1={'height':180,'sex':'b','class':3,'age':16} ...
- Android 如何解决dialog弹出时无法捕捉Activity的back事件
Android 如何解决dialog弹出时无法捕捉Activity的back事件 在一些情况下,我们需要捕捉back键事件,然后在捕捉到的事件里写入我们需要进行的处理,通常可以采用下面三种办法捕捉到b ...