原文地址为: 谱聚类(Spectral Clustering)详解

谱聚类(Spectral Clustering)详解

谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目的。其中的最优是指最优目标函数不同,可以是割边最小分割——如图1的Smallest cut(如后文的Min cut), 也可以是分割规模差不多且割边最小的分割——如图1的Best cut(如后文的Normalized cut)。

图1 谱聚类无向图划分——Smallest cut和Best cut

这样,谱聚类能够识别任意形状的样本空间且收敛于全局最优解,其基本思想是利用样本数据的相似矩阵(拉普拉斯矩阵)进行特征分解后得到的特征向量进行聚类。

理论基础

对于如下空间向量item-user matrix:

如果要将item做聚类,常常想到k-means聚类方法,复杂度为o(tknm),t为迭代次数,k为类的个数、n为item个数、m为空间向量特征数:

1 如果M足够大呢?

2 K的选取?

3 类的假设是凸球形的?

4 如果item是不同的实体呢?

5 Kmeans无可避免的局部最优收敛?

……

这些都使常见的聚类问题变得相当复杂。

1.1 图的表示

如果我们计算出item与item之间的相似度,便可以得到一个只有item的相似矩阵,进一步,将item看成了Graph(G)中Vertex(V),歌曲之间的相似度看成G中的Edge(E),这样便得到我们常见的图的概念。

对于图的表示(如图2),常用的有:

邻接矩阵:E,eij表示vi和vi的边的权值,E为对称矩阵,对角线上元素为0,如图2-2。

Laplacian矩阵:L = D – E, 其中di (行或列元素的和),如图2-3。

图2 图的表示

1.2 特征值与L矩阵

先考虑一种最优化图像分割方法,以二分为例,将图cut为S和T两部分,等价于如下损失函数cut(S, T),如公式1所示,即最小(砍掉的边的加权和)。

假设二分成两类,S和T,用q(如公式2所示)表示分类情况,且q满足公式3的关系,用于类标识。

那么:

其中D为对角矩阵,行或列元素的和,L为拉普拉斯矩阵。

由:

有:

1、 L为对称半正定矩阵,保证所有特征值都大于等于0;

2、 L矩阵有唯一的0特征值,其对应的特征向量为1

离散求解q很困难,如果将问题松弛化为连续实数值,由瑞利熵的性质知其二将你型的最小值就是L的特征值们(最小值,第二小值,......,最大值分别对应矩阵L的最小特征值,第二小特征值,......,最大特征值,且极值q相应的特征向量处取得,请参见瑞利熵(Rayleigh quotient))。

写到此,不得不对数学家们致敬,将cut(S,T),巧妙地转换成拉普拉斯矩阵特征值(向量)的问题,将离散的聚类问题,松弛为连续的特征向量,最小的系列特征向量对应着图最优的系列划分方法。剩下的仅是将松弛化的问题再离散化,即将特征向量再划分开,便可以得到相应的类别,如将图3中的最小特征向量,按正负划分,便得类{A,B,C}和类{D,E,F,G}。在K分类时,常将前K个特征向量,采用kmeans分类。

    PS

    1、此处虽再次提到kmeans,但意义已经远非引入概念时的讨论的kmeans了,此处的kmeans,更多的是与ensemble learning相关,在此不述;

    2、k与聚类个数并非要求相同,可从第4节的相关物理意义中意会;

    3、在前k个特征向量中,第一列值完全相同(迭代算法计算特征向量时,值极其相近),kmeans时可以删除,同时也可以通过这一列来简易判断求解特征值(向量)方法是否正确,常常问题在于邻接矩阵不对称。

图3 图的L矩阵的特征值与特征向量

最优化方法

在kmeans等其它聚类方法中,很难刻划类的大小关系,局部最优解也是无法回避的漏病。当然这与kmeans的广泛使用相斥——原理简单。

2.1 Min cut方法

如2.2节的计算方法,最优目标函数如下的图cut方法:

计算方法,可直接由计算L的最小特征值(特征向量),求解。

2.2 Nomarlized cut方法

Normarlized cut,目标是同时考虑最小化cut边和划分平衡,以免像图1中的cut出一个单独的H。衡量子图大小的标准是:子图各个端点的Degree之和。

2.3 Ratio Cut 方法

Ratio cut的目标是同时考虑最小化cut边和划分平衡,以免像图1中的cut出一个单独的H。

最优目标函数为:

2.4 Normalized相似变换

归一化的L矩阵有:

因而L的最小特征值与D-(1/2)E D-(1/2)的最大特征值对应。

而计算的L相比计算L要稍具优势,在具体实用中,常以L替代L,但是min cut和ratio cut不可以。

    PS:这也是常常在人们的博客中,A说谱聚类为求最大K特征值(向量)B说谱聚类为求最小K个特征值(向量的原因)

谱聚类步骤

第一步:数据准备,生成图的邻接矩阵;

第二步:归一化普拉斯矩阵;

第三步:生成最小的k个特征值和对应的特征向量;

第四步:将特征向量kmeans聚类(少量的特征向量);

谱聚类的物理意义

谱聚类中的矩阵:

可见不管是L、L都与E联系特别大。如果将E看成一个高维向量空间,也能在一定程度上反映item之间的关系。将E直接kmeans聚类,得到的结果也能反映V的聚类特性,而谱聚类的引入L和L是使得G的分割具有物理意义。

而且,如果E的item(即n)足够大,将难计算出它的kmeans,我们完全可以用PCA降维(仍为top的特征值与向量)。

上述对将E当成向量空间矩阵,直观地看符合我们的认知,但缺乏理论基础;而L(L等)的引入,如第2节所述,使得计算具有理论基础,其前k个特征向量,也等价于对L(L等)的降维。

因而聚类就是为图的划分找了理论基础,能达到降维的目的。

感谢志勇;

其中不少图出源于Mining of Massive Datasets,对于同仁们的布道授业,一并感谢。

------

只能永远把艰辛的劳动看作是生命的必要;即使没有收获的指望,也能心平气和的继续耕种。
分类:  数据挖掘与推荐
标签:  数据挖掘,  机器学习,  图划分,  谱聚类,  Laplacian

递归关系求解

问题

假设:一个反应器中有两类粒子α和β,设每秒钟一个α粒子分裂成3个β粒子,而每秒钟一个β粒子分裂成一个α粒子和两个β粒子。假如在t=0时:反应器中有一个α粒子,求t秒时反应器中α粒子和β粒子的数目。

根据关系列出递归关系

a(t) = b(t-1)b(t) = 3*a(t-1) + 2*b(t-1)

参考程序

#include <stdio.h>#include <stdlib.h>#define A_size 5 int aa(int size)   //aa(t)表示t时刻α的个数{if (size == 0)return 1;elsereturn bb(size-1);}int bb(int size)   //bb(t)表示t时刻β的个数{if (size == 0)return 0;elsereturn 3 * aa(size-1) + 2 *  bb(size-1);}int main(){    printf("%d\n", aa(A_size) + bb(A_size));return 0;}

结果:243

a(t) = b(t-1)b(t) = 3*a(t-1) + 2b(t-1)得:a(t-1)=b(t-2)b(t) = 3*a(t-1) +2*b(t-1)=3* b(t-2) + 2* b(t-1) (t>=2)根据已知条件知:a(0)=1 a(1)=0   b(0)=0 b(1)=3

得到递归关系:b(t) = 2*b(t-1) + 3*b(t-2),这是一个常系数齐次线性方程。为了求解看下解常系数齐次线性方程的一般方法。

解常系数齐次线性方程的一般方法

首先区分

特征方程与特征值

求解通解的步骤

1.根据递归关系得出特征方程,求解方程得到特征根;

2.表示出通解的一般形式(分为是否有重根);

3.代入初始值得到系数,从而得到通解。

就本题演示一般步骤

1.把递归关系b(n)=2*b(t-1) + 3*b(t-2),表示为特征方程:x2=2x+3,得到特征值-1和3;

2.没有重根,通解表示为b(t) = c1*(-1)n + c2*(3)n;

3.带入初始值,得到c1=-3/4   c= 3/4,

从而得到通解:b(t) = -3/4 *(-1)n + 1/4 *(3)n+1
                      a(t) = -3/4 *(-1)n-1 + 1/4 *(3)n  
(t>=2)

分类:  算法&&程序设计

转载请注明本文地址: 谱聚类(Spectral Clustering)详解

谱聚类(Spectral Clustering)详解相关推荐

  1. 谱聚类 Spectral Clustering

    谱聚类 Spectral Clustering sklearn.cluster.SpectralClustering 谱聚类(Spectral Clustering, SC), 是一种基于图论的聚类方 ...

  2. 22 谱聚类 Spectral Clustering

    1 Background 本章节主要是描述的一种聚类算法,谱聚类(Spectral Clustering).对机器学习有点了解的同学对聚类算法肯定是很熟悉的,那么谱聚类和之前普通的聚类算法有什么不一样 ...

  3. 谱聚类(spectral clustering)

    谱聚类概述 谱聚类是从图论中演化出来的算法,后来在聚类中得到了广泛的应用.它的主要思想是把所有的数据看做空间中的点,这些点之间可以用边连接起来.距离较远的两个点之间的边权重值较低,而距离较近的两个点之 ...

  4. python谱聚类算法_谱聚类Spectral clustering(SC)

    在之前的文章里,介绍了比较传统的K-Means聚类.Affinity Propagation(AP)聚类.比K-Means更快的Mini Batch K-Means聚类以及混合高斯模型Gaussian ...

  5. 谱聚类Python代码详解

    谱聚类算法步骤 整体来说,谱聚类算法要做的就是先求出相似性矩阵,然后对该矩阵归一化运算,之后求前个特征向量,最后运用K-means算法分类. 实际上,谱聚类要做的事情其实就是将高维度的数据,以特征向量 ...

  6. 机器理解大数据的秘密:聚类算法深度详解

    在理解大数据方面,聚类是一种很常用的基本方法.近日,数据科学家兼程序员 Peter Gleeson 在 freeCodeCamp 发布了一篇深度讲解文章,对一些聚类算法进行了基础介绍,并通过简单而详细 ...

  7. Subspace Clustering详解(附带CLIQUE算法详解)

    Subspace Clustering详解 第二十四次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习.这一篇作为密度聚类算法族的第三篇,主要是介绍一种用来发现 ...

  8. DPC密度峰值聚类算法原理详解二

    DPC密度峰值聚类算法原理详解二 1.计算数据点两两之间的距离 1.使用 Numpy 模块查找两点之间的欧几里得距离: 2.使用 distance.euclidean() 函数查找两点之间的欧式距离: ...

  9. k-means聚类算法的详解和实现

    一.相异度计算  在正式讨论聚类前,我们要先弄清楚一个问题:如何定量计算两个可比较元素间的相异度.用通俗的话说,相异度就是两个东西差别有多大,例如人类与章鱼的相异度明显大于人类与黑猩猩的相异度,这是能 ...

最新文章

  1. Django的类视图和中间件
  2. Py之pandas:字典格式数据与dataframe格式数据相互转换并导出到csv
  3. 全球及中国多非利特原料药行业发展模式分析及投资前景规划报告2022-2027年版
  4. 30个Python常用极简代码,拿走就用,赶紧收藏!
  5. 平衡的阵容(洛谷-P2880)
  6. 大数据导论章节答案_智慧树大数据导论章节答案
  7. 云原生 CI/CD 框架 Tekton 初体验
  8. 智能化视频开发神器来了,AV Pipeline Kit 架构解析
  9. 亚马逊AI又遭抗议:一个好端端的美国官员,怎么就成罪犯了?
  10. 最小化安装的redhat/centos安装gnome桌面
  11. 编程经历的一些思考——一个工作4年老鸟的职业思考(转载)
  12. react native camera
  13. 大智慧公式系统:条件选股之基本技巧
  14. 内连接和外联结连接的区别
  15. java 游戏源码_源码下载 - Java源码 - 游戏娱乐
  16. 跟着猫哥学Golang 16 - Channel
  17. 啥是“quoting reference XXX” 递交申请材料时
  18. 通过字体映射 Fontlink 美化中文显示
  19. Clusterrolebindings 创建错误
  20. MATLAB-ezplot绘图函数

热门文章

  1. ansys谐响应分析
  2. 电脑重装系统后硬盘消失要如何解决
  3. 电荷泵锁相环(CPPLL)基本结构及相关基本知识
  4. 日语自学资料(可下载)
  5. chatroom项目手册
  6. 《算法笔记》4.1小节——算法初步-排序 问题 F: 小白鼠排队
  7. 后台管理界面--管理页设计
  8. 《鹿鼎记》的第一遍读后感作文3600字
  9. 去南宁市图书馆泡了一晚上~编写文件粉碎机之惑
  10. W32DASM 和 OLLYDBG 配合起来破解反汇编算法