Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >听说比K-means厉害多了:谱聚类

听说比K-means厉害多了:谱聚类

作者头像
机器学习算法工程师
发布于 2018-08-17 09:19:01
发布于 2018-08-17 09:19:01
5.6K0
举报

作者: 刘建平

编辑:祝鑫泉

授权转发自:刘建平《谱聚类(spectral clustering)原理总结》

地址:https://www.cnblogs.com/pinard/p/6221564.html

前 言

谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也不复杂。在处理实际的聚类问题时,个人认为谱聚类是应该首先考虑的几种算法之一。下面我们就对谱聚类的算法原理做一个总结。 01

谱聚类概述

谱聚类是从图论中演化出来的算法,后来在聚类中得到了广泛的应用。它的主要思想是把所有的数据看做空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的边权重值较高,通过对所有数据点组成的图进行切图,让切图后不同的子图间边权重和尽可能的低,而子图内的边权重和尽可能的高,从而达到聚类的目的。

乍一看,这个算法原理的确简单,但是要完全理解这个算法的话,需要对图论中的无向图,线性代数和矩阵分析都有一定的了解。下面我们就从这些需要的基础知识开始,一步步学习谱聚类。

02

谱聚类基础之一:无向权重图

由于谱聚类是基于图论的,因此我们首先温习下图的概念。对于一个图G,我们一般用点的集合V和边的集合E来描述。即为G(V,E)。其中V即为我们数据集里面所有的点(v1,v2,...vn)。对于V中的任意两个点,可以有边连接,也可以没有边连接。我们定义权重wij为点vi和点vj之间的权重。由于我们是无向图,所以wij=wji。

对于有边连接的两个点vi和vj,wij>0,对于没有边连接的两个点vi和vj,wij=0。对于图中的任意一个点vi,它的度di定义为和它相连的所有边的权重之和,即

利用每个点度的定义,我们可以得到一个nxn的度矩阵D,它是一个对角矩阵,只有主对角线有值,对应第i行的第i个点的度数,定义如下:

利用所有点之间的权重值,我们可以得到图的邻接矩阵W,它也是一个nxn的矩阵,第i行的第j个值对应我们的权重wij。

除此之外,对于点集V的的一个子集A⊂V,我们定义:

03

谱聚类基础之二:相似矩阵

在上一节我们讲到了邻接矩阵W,它是由任意两点之间的权重值wij组成的矩阵。通常我们可以自己输入权重,但是在谱聚类中,我们只有数据点的定义,并没有直接给出这个邻接矩阵,那么怎么得到这个邻接矩阵呢?

基本思想是,距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的边权重值较高,不过这仅仅是定性,我们需要定量的权重值。一般来说,我们可以通过样本点距离度量的相似矩阵S来获得邻接矩阵W。

构建邻接矩阵W的方法有三类。ϵ-邻近法,K邻近法和全连接法

对于ϵ-邻近法,它设置了一个距离阈值ϵ,然后用欧式距离sij度量任意两点xi和xj的距离。即相似矩阵的sij=||xi−xj||22, 然后根据sij和ϵ的大小关系,来定义邻接矩阵W如下:

从上式可见,两点间的权重要不就是ϵ,要不就是0,没有其他的信息了。距离远近度量很不精确,因此在实际应用中,我们很少使用ϵ-邻近法。

第二种定义邻接矩阵W的方法是K邻近法,利用KNN算法遍历所有的样本点,取每个样本最近的k个点作为近邻,只有和样本距离最近的k个点之间的wij>0。但是这种方法会造成重构之后的邻接矩阵W非对称,我们后面的算法需要对称邻接矩阵。为了解决这种问题,一般采取下面两种方法之一:

第一种K邻近法是只要一个点在另一个点的K近邻中,则保留Sij

第二种K邻近法是必须两个点互为K近邻中,才能保留Sij

第三种定义邻接矩阵W的方法是全连接法,相比前两种方法,第三种方法所有的点之间的权重值都大于0,因此称之为全连接法。可以选择不同的核函数来定义边权重,常用的有多项式核函数,高斯核函数和Sigmoid核函数。最常用的是高斯核函数RBF,此时相似矩阵和邻接矩阵相同:

在实际的应用中,使用第三种全连接法来建立邻接矩阵是最普遍的,而在全连接法中使用高斯径向核RBF是最普遍的。

04

谱聚类基础之三:拉普拉斯矩阵

单独把拉普拉斯矩阵(Graph Laplacians)拿出来介绍是因为后面的算法和这个矩阵的性质息息相关。它的定义很简单,拉普拉斯矩阵L=D−W。D即为我们第二节讲的度矩阵,它是一个对角矩阵。而W即为我们第二节讲的邻接矩阵,它可以由我们第三节的方法构建出。

拉普拉斯矩阵有一些很好的性质如下:

1)拉普拉斯矩阵是对称矩阵,这可以由D和W都是对称矩阵而得。

2)由于拉普拉斯矩阵是对称矩阵,则它的所有的特征值都是实数。

3)对于任意的向量f,我们有

这个利用拉普拉斯矩阵的定义很容易得到如下:

4) 拉普拉斯矩阵是半正定的,且对应的n个实数特征值都大于等于0,即0=λ1≤λ2≤...≤λn, 且最小的特征值为0,这个由性质3很容易得出。

05

谱聚类基础之四:无向图切图

对于无向图G的切图,我们的目标是将图G(V,E)切成相互没有连接的k个子图,每个子图点的集合为:A1,A2,..Ak,它们满足Ai∩Aj=∅,且A1∪A2∪...∪Ak=V.

对于任意两个子图点的集合A,B⊂V, A∩B=∅, 我们定义A和B之间的切图权重为:

那么对于我们k个子图点的集合:A1,A2,..Ak,我们定义切图cut为:

其中Ai为Ai的补集,意为除Ai子集外其他V的子集的并集。

那么如何切图可以让子图内的点权重和高,子图间的点权重和低呢?一个自然的想法就是最小化cut(A1,A2,...Ak), 但是可以发现,这种极小化的切图存在问题,如下图:

我们选择一个权重最小的边缘的点,比如C和H之间进行cut,这样可以最小化cut(A1,A2,...Ak), 但是却不是最优的切图,如何避免这种切图,并且找到类似图中"Best Cut"这样的最优切图呢?我们下一节就来看看谱聚类使用的切图方法。

06

谱聚类之切图聚类

为了避免最小切图导致的切图效果不佳,我们需要对每个子图的规模做出限定,一般来说,有两种切图方式,第一种是RatioCut,第二种是Ncut。下面我们分别加以介绍。

1.RatioCut切图

RatioCut切图为了避免第五节的最小切图,对每个切图,不光考虑最小化cut(A1,A2,...Ak),它还同时考虑最大化每个子图点的个数,即:

那么怎么最小化这个RatioCut函数呢?牛人们发现,RatioCut函数可以通过如下方式表示。

我们引入指示向量hj={h1,h2,..hk}j=1,2,...k,对于任意一个向量hj, 它是一个n维向量(n为样本数),我们定义hji为:

那么我们对于hTiLhi,有:

上述第(1)式用了上面第四节的拉普拉斯矩阵的性质3. 第二式用到了指示向量的定义。可以看出,对于某一个子图i,它的RatioCut对应于hTiLhi,那么我们的k个子图呢?对应的RatioCut函数表达式为:

其中tr(HTLH)为矩阵的迹。也就是说,我们的RatioCut切图,实际上就是最小化我们的tr(HTLH)。注意到HTH=I,则我们的切图优化目标为:

注意到我们H矩阵里面的每一个指示向量都是n维的,向量中每个变量的取值为0或者

,就有2^n种取值,有k个子图的话就有k个指示向量,共有k2^n种H,因此找到满足上面优化目标的H是一个NP难的问题。那么是不是就没有办法了呢?

注意观察

中每一个优化子目标

,其中h是单位正交基, L为对称矩阵,此时

的最大值为L的最大特征值,最小值是L的最小特征值。如果你对主成分分析PCA很熟悉的话,这里很好理解。在PCA中,我们的目标是找到协方差矩阵(对应此处的拉普拉斯矩阵L)的最大的特征值,而在我们的谱聚类中,我们的目标是找到目标的最小的特征值,得到对应的特征向量,此时对应二分切图效果最佳。也就是说,我们这里要用到维度规约的思想来近似去解决这个NP难的问题。

对于

,我们的目标是找到最小的L的特征值,而对于

,则我们的目标就是找到k个最小的特征值,一般来说,k远远小于n,也就是说,此时我们进行了维度规约,将维度从n降到了k,从而近似可以解决这个NP难的问题。

通过找到L的最小的k个特征值,可以得到对应的k个特征向量,这k个特征向量组成一个nxk维度的矩阵,即为我们的H。一般需要对H矩阵按行做标准化,即

由于我们在使用维度规约的时候损失了少量信息,导致得到的优化后的指示向量h对应的H现在不能完全指示各样本的归属,因此一般在得到nxk维度的矩阵H后还需要对每一行进行一次传统的聚类,比如使用K-Means聚类.

2.Ncut切图

Ncut切图和RatioCut切图很类似,但是把Ratiocut的分母|Ai|换成vol(Ai). 由于子图样本的个数多并不一定权重就大,我们切图时基于权重也更合我们的目标,因此一般来说Ncut切图优于RatioCut切图。

对应的,Ncut切图对指示向量h做了改进。注意到RatioCut切图的指示向量使用的是

标示样本归属,而Ncut切图使用了子图权重

来标示指示向量h,定义如下:

那么我们对于

,有:

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

但是此时我们的

,

。推导如下:

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

此时我们的H中的指示向量h并不是标准正交基,所以在RatioCut里面的降维思想不能直接用。怎么办呢?其实只需要将指示向量矩阵H做一个小小的转化即可。

我们令

, 则:

,

,也就是说优化目标变成了:

可以发现这个式子和RatioCut基本一致,只是中间的L变成

。这样我们就可以继续按照RatioCut的思想,求出

的最小的前k个特征值,然后求出对应的特征向量,并标准化,得到最后的特征矩阵F,最后对F进行一次传统的聚类(比如K-Means)即可。

一般来说,

相当于对拉普拉斯矩阵L做了一次标准化,即

07

谱聚类算法流程

铺垫了这么久,终于可以总结下谱聚类的基本流程了。一般来说,谱聚类主要的注意点为相似矩阵的生成方式(参见第二节),切图的方式(参见第六节)以及最后的聚类方法(参见第六节)。

最常用的相似矩阵的生成方式是基于高斯核距离的全连接方式,最常用的切图方式是Ncut。而到最后常用的聚类方法为K-Means。下面以Ncut总结谱聚类算法流程。

输入:样本集D=(x1,x2,...,xn),相似矩阵的生成方式, 降维后的维度k1, 聚类方法,聚类后的维度k2

    输出: 簇划分C(c1,c2,...ck2).

    1) 根据输入的相似矩阵的生成方式构建样本的相似矩阵S

    2)根据相似矩阵S构建邻接矩阵W,构建度矩阵D

    3)计算出拉普拉斯矩阵L

    4)构建标准化后的拉普拉斯矩阵D−1/2LD−1/2

    5)计算D−1/2LD−1/2最小的k1个特征值所各自对应的特征向量f

    6) 将各自对应的特征向量f组成的矩阵按行标准化,最终组成n×k1维的特征矩阵F

    7)对F中的每一行作为一个k1维的样本,共n个样本,用输入的聚类方法进行聚类,聚类维数为k2。

    8)得到簇划分C(c1,c2,...ck2).  

08

谱聚类算法总结

谱聚类算法是一个使用起来简单,但是讲清楚却不是那么容易的算法,它需要你有一定的数学基础。如果你掌握了谱聚类,相信你会对矩阵分析,图论有更深入的理解。同时对降维里的主成分分析也会加深理解。

下面总结下谱聚类算法的优缺点。

谱聚类算法的主要优点有:

    1)谱聚类只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。这点传统聚类算法比如K-Means很难做到

    2)由于使用了降维,因此在处理高维数据聚类时的复杂度比传统聚类算法好。

谱聚类算法的主要缺点有:

    1)如果最终聚类的维度非常高,则由于降维的幅度不够,谱聚类的运行速度和最后的聚类效果均不好。

    2) 聚类效果依赖于相似矩阵,不同的相似矩阵得到的最终聚类效果可能很不同。

END
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习算法工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
白话什么是谱聚类算法
谱聚类(Spectral Clustering, SC), 是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远
杨熹
2018/12/25
1.1K0
谱聚类
谱聚类是一种基于图论的聚类算法,他的思想是将数据集转化称为无向带权图,然后将在各图划分成为两个或两个以上的最优子图,这些最优图的内部尽量相似,子图间的距离尽量远。
opprash
2019/08/30
8770
谱聚类(spectral clustering)原理总结
    谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也不复杂。在处理实际的聚类问题时,个人认为谱聚类是应该首先考虑的几种算法之一。下面我们就对谱聚类的算法原理做一个总结。
刘建平Pinard
2018/08/14
1.3K0
谱聚类(spectral clustering)原理总结
理解谱聚类
聚类是典型的无监督学习问题,其目标是将样本集划分成多个类,保证同一类的样本之间尽量相似,不同类的样本之间尽量不同,这些类称为簇(cluster)。与有监督的分类算法不同,聚类算法没有训练过程,直接完成对一组样本的划分。
SIGAI学习与实践平台
2019/03/08
1.5K0
详解谱聚类原理
作者 | 荔枝boy 编辑 | 磐石 出品 | 磐创AI技术团队 【磐创AI导读】:本文详细介绍了谱聚类的原理。欢迎大家点击上方蓝字关注我们的公众号:磐创AI。 目录 一. 拉普拉斯矩阵性质 二.拉普拉斯矩阵与图分割的联系 三.Ratiocut 四.总结 一.拉普拉斯矩阵性质 这篇文章可能会有些枯燥,着重分享了谱聚类的原理中的一些思想,以及自己本人对谱聚类的一些理解。如果在看完这篇文章后,也能解决你对谱聚类的一些疑问,想必是对你我都是极好的。在之前查阅了很多关于谱聚类的资料,
磐创AI
2018/07/03
1.3K0
【机器学习】--谱聚类从初始到应用
    谱聚类(spectral clustering)是一种基于图论的聚类方法,主要思想是把所有的数据看做空间中的点,这些点之间可以用边连接起来。距离较远(或者相似度较低)的两个点之间的边权重值较低,而距离较近(或者相似度较高)的两个点之间的边权重值较高,通过对所有数据点组成的图进行切图,让切图后不同的子图间边权重和尽可能的低,而子图内的边权重和尽可能的高,从而达到聚类的目的。
LhWorld哥陪你聊算法
2018/09/13
1.2K0
谱聚类概述
作者 | 荔枝boy 编辑 | 磐石 出品 | 磐创AI技术团队 【磐创AI导读】:本文主要介绍了谱聚类的相关概念。欢迎大家点击上方蓝字关注我们的公众号:磐创AI。 目录: 一.简述 二.图相关的符号符号 三.相似度矩阵S 四.拉普拉斯矩阵L性质 五.谱聚类算法 六.总结 一.简述 聚类是对探索性数据分析最广泛使用的技术,在现在各个科学领域中处理没有类标的数据时,人们总是想通过确定数据中不同样本的归类,来获取对数据的直观印象。传统的聚类方法有很多,像K-me
磐创AI
2018/07/03
6590
理解图的拉普拉斯矩阵
谱图理论是图论与线性代数相结合的产物,它通过分析图的某些矩阵的特征值与特征向量而研究图的性质。拉普拉斯矩阵是谱图理论中的核心与基本概念,在机器学习与深度学习中有重要的应用。包括但不仅限于:流形学习数据降维算法中的拉普拉斯特征映射、局部保持投影,无监督学习中的谱聚类算法,半监督学习中基于图的算法,以及目前炙手可热的图神经网络等。还有在图像处理、计算机图形学以及其他工程领域应用广泛的图切割问题。理解拉普拉斯矩阵的定义与性质是掌握这些算法的基础。在今天的文章中,我们将系统地介绍拉普拉斯矩阵的来龙去脉。
SIGAI学习与实践平台
2021/04/09
4.7K0
理解图的拉普拉斯矩阵
拉普拉斯矩阵及谱聚类
拉普拉斯矩阵及谱聚类(Laplacian Matrix and Spectral Clustering)
AIHGF
2019/02/18
2K0
【技术分享】快速迭代聚类
  在分析快速迭代聚类之前,我们先来了解一下谱聚类算法。谱聚类算法是建立在谱图理论的基础上的算法,与传统的聚类算法相比,它能在任意形状的样本空间上聚类且能够收敛到全局最优解。 谱聚类算法的主要思想是将聚类问题转换为无向图的划分问题。
腾讯云TI平台
2019/07/04
9060
【技术分享】快速迭代聚类
【机器学习】谱聚类
本文介绍了一种定义在图上聚类算法-谱聚类。首先介绍谱聚类其实是保持图上节点之间的相似性对节点进行向量表示。然后介绍了谱聚类的目标函数-最小化原始相似性矩阵与样本向量表示,相似性的乘积,由此导出谱聚类与拉普拉斯矩阵的关系。最后介绍了谱聚类算法特点,其实际为成对相似性保持(pair-wise)算法。
yuquanle
2020/04/20
8410
斯坦福CS224W 图与机器学习5】Spectral Clustering
第五节主要介绍了谱聚类,也可用于上一节提到的社区划分,另外还扩展了基于motif的谱聚类,主要分成两个部分:
Houye
2020/05/21
1.1K0
谱聚类算法(Spectral Clustering)
谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目的。其中的最优是指最优目标函数不同,可以是割边最小分割——如图1的Smallest cut(如后文的Min cut), 也可以是分割规模差不多且割边最小的分割——如图1的Best cut(如后文的Normalized cut)。
AIHGF
2019/02/18
1.8K0
spectral-cluster聚类算法详解
spectral clustering,称之为谱聚类算法,和近邻传播AP算法一样,也是基于图论的算法,都是将样本点两两相连,构成图这一数据结构,不同的是,谱聚类是通过切图的方式来划分不同的cluster, 其思想是使得子cluster内部边的权重之和尽可能高,而不同子cluster之间边的权重之和尽可能低。
生信修炼手册
2021/04/14
1.1K0
谱聚类
基于无向加权图G=(V,E),其中每个顶点vi对应一个xi,顶点vi和vj间的边有权值wij≥0
AIHGF
2019/02/18
6500
深入机器学习系列之:快速迭代聚类
今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博客中国丨趣头条丨腾讯云·云+社区
数据猿
2019/11/20
8460
深入机器学习系列之:快速迭代聚类
简单易学的机器学习算法——谱聚类(Spectal Clustering)
    网络簇结构(network cluster structure)也称为网络社团结构(network community structure),是复杂网络中最普遍和最重要的拓扑属性之一。网络簇是整个网络中的稠密连接分支,具有同簇内部节点之间相互连接密集,不同簇的节点之间相互连接稀疏的特征。
felixzhao
2019/02/13
1.8K0
论文 | 半监督学习下的高维图构建
磐创AI 专注分享原创AI技术文章 翻译 | 荔枝boy 编辑 | 磐石 出品 | 磐创AI技术团队 【磐创AI导读】:本文主要介绍了半监督下的高纬图重建。欢迎大家点击上方蓝字关注我们的公众号:磐创AI。 目录 一.简述 二.介绍 三.概述 四.总结 一.简述 本次翻译一篇Liu Wei的一篇论文,之前介绍谱聚类的时候大家都知道,用谱聚类对样本进行分割,大概的流程就是先将原始数据通过不同的规则构建出相似度矩阵,然后再用相似度矩阵表示拉普拉斯矩阵,再对拉普拉斯矩阵进行特征分解,
磐创AI
2018/07/03
7400
谱聚类方法推导和对拉普拉斯矩阵的理解
谱聚类可以看作是基于图的一种聚类方法,在各大论坛有许多介绍谱聚类算法的博客,但是在看的过程中,总是会存在各种各样的困惑,尤其是拉普拉斯矩阵的引入等一些列问题上介绍的不是很清楚。这里基于 Ncut 文章中的推导,给出谱聚类算法的一个整体的推导过程和一些重要细节。
Houye
2020/04/07
9500
简单易学的机器学习算法——谱聚类(Spectal Clustering)
一、复杂网络中的一些基本概念 1、复杂网络的表示 image.png 2、网络簇结构     网络簇结构(network cluster structure)也称为网络社团结构(network community structure),是复杂网络中最普遍和最重要的拓扑属性之一。网络簇是整个网络中的稠密连接分支,具有同簇内部节点之间相互连接密集,不同簇的节点之间相互连接稀疏的特征。 3、复杂网络的分类     复杂网络主要分为:随机网络,小世界网络和无标度网络。 二、谱方法介绍 1、谱方法的思想     在
felixzhao
2018/03/20
2.5K0
简单易学的机器学习算法——谱聚类(Spectal Clustering)
相关推荐
白话什么是谱聚类算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档