A tutorial on Spectral Clustering
1. 基础知识
令 G=(V,E) G=(V,E) 为无向图,节点集为 V=v1,v2,...,vn V={v_1,v_2,...,v_n}. 假设图 G G 是有权图,节点 viv_i 和 vj v_j 之间的权重为 wij≥0 w_{ij} \geq 0. 权重邻接矩阵为 W=(wij)i,j=1,...,n W=(w_{ij})_{i,j=1,...,n}. 如果 wij=0 w_{ij}=0, 则说明它们不相连.节点 vi v_i 的度数为:
d_i=\sum_{j=1}^n w_{ij}(权重之和)
度数矩阵 D D 定义为对角线元素为 d1,...,dnd_1,...,d_n 对角矩阵.
给定节点集 A⊂V A\subset V,它的补集定义为 A¯=V∖A \bar A=V\backslash A。
指示向量定义为 1A=(f1,...,fn)′∈Rn \mathbb{1_A}=(f_1,...,f_n)'\in \mathbb{R}^n,当 vi∈A v_i\in A时 fi=1 f_i=1,反之 fi=0 f_i=0.
两种衡量集合 A A大小的方式:
|A|:= the\; number\; of\; vertices\; in\; A\\ vol(A):=\sum_{i\in A}d_i
特征值与特征向量:
设 A=(aij)n×n A=(a_{ij})_{n\times n} 是一个 n n 阶矩阵,如果有一个复数 λ\lambda 及一个 n n 维非零列向量 x=(x1,⋯,xn)Tx=(x_1,\cdots,x_n)^T,使得
Ax=\lambda x
或:
(\lambda I-A)x=0
则称 λ \lambda 为矩阵 A A 的一个特征值,称非零列向量 xx 为 A A 的对应于特征值 λ\lambda 的 特征向量.
半正定矩阵:
定义:如果矩阵 A∈Rn×n A\in R^{n\times n} 是实对称矩阵,并且对于一切 X∈Rn X\in R^n,有 XTAX≥0 X^TAX\geq 0,则称矩阵 A A 为半正定矩阵.
对于一个n阶对称矩阵 AA,以下命题等价:
- A是半正定矩阵
- A的所有特征值非负
- A的所有主子式非负
- 存在n阶矩阵B,使得 A=BBT A=BB^T
- 存在n阶下三角阵L,使得 A=LLT A=LL^T
- 存在n阶对称矩阵C,使得 A=C2 A=C^2
2. 图的拉普拉斯算子及其性质
谱聚类的主要工具就是拉普拉斯算子。拉普拉斯算子一类矩阵的统称,并非特指某一个算子。下面当我们提到矩阵的特征向量的时候,并不一定要求其模为1.因此线性相关的多个向量会被当成同一个. 特征值总是会被按照递增的顺序排列. 最先的k个特征向量(the first k eigenvector)指的是k个最小的特征值所对应的特征向量。
2.1 未规则化的拉普拉斯算子
未规则化的拉普拉斯矩阵为:
L=D-W
它的主要性质如下:
- 对于任意的向量 f∈Rn f\in \mathbb{R}^n,有:
f′Lf=12∑i,j=1nwij(fi−fj)2
f'Lf=\frac{1}{2}\sum_{i,j=1}^n w_{ij}(f_i-f_j)^2
- L L 是对称的并且半正定的
- LL 的最小特征值是0,对应的特征向量是常数1向量 1 \mathbb{1} (各行之和为0)
- L L 有n个非负实值特征值 0=λ1≤λ2≤⋯≤λn0=\lambda_1 \leq \lambda_2 \leq \cdots \leq \lambda_n
说明:
1. 未规则化的拉普拉斯算子与邻接矩阵 W W 的对角线上的元素无关. 即使对角线上有值,那么与没有值的L是完全相同的. 可见自环不会改变对应的拉普拉斯算子.
2. 未规则化的拉普拉斯算子及其特征值、特征向量可用来描述图的许多性质. 在谱聚类中的一个重要性质为:图G的连通分量的个数等于特征值0的代数重数(multiplicity of eigenvalue 0).特征值0的特征子空间由连通分量的指示向量构成.(The eigenspace of eigenvalue 0 is spanned by the indicator vectors of those components.)
2.2 规则化的拉普拉斯算子
有两个矩阵被称为规则化拉普拉斯算子:
\begin{aligned} L_{sym}&=D^{-1/2}LD^{-1/2}=I-D^{-1/2}WD^{-1/2} \\ L_{rw}&=D^{-1}L=I-D^{-1}W \end{aligned}
Lsym L_{sym}的下标表示它是一个对称(symmetric)矩阵, Lrw L_{rw} 的下标是因为它与随机游走(random walk)有紧密联系. 它们有如下性质:
- 对于任意 f∈Rn f\in \mathbb{R}^n,
f′Lsymf=12∑i,j=1nwij(fid√i−fjd√j)2
f'L_{sym}f=\frac{1}{2}\sum_{i,j=1}^nw_{ij}\bigg(\frac{f_i}{\sqrt d_i}-\frac{f_j}{\sqrt d_j}\bigg)^2
- λ \lambda是 Lrw L_{rw} 的特征向量为 v v 的特征值当且仅当 λ\lambda 是 Lsym L_{sym}的特征向量为 w=D−1/2 w=D^{-1/2} 的特征值
- λ \lambda是 Lrw L_{rw} 的特征向量为 v v 的特征值当且仅当 λ\lambda 和 v v 能求解泛化了的特征问题(generalized eigenproblem) Lv=λDvLv=\lambda Dv
- 0是 Lrw L_{rw} 的特征向量为常数1向量 1 \mathbb{1} 的特征值. 0是 Lsym L_{sym} 的特征向量为 D−1/21 D^{-1/2}\mathbb{1}的特征值
- Lsym L_{sym} 和 Lrw L_{rw} 是半正定矩阵且有 n n 个非负实值特征值 0=λ1≤λ2≤⋯≤λn0=\lambda_1 \leq \lambda_2 \leq \cdots \leq \lambda_n
说明:
规则化拉普拉斯算子的特征值0的重数同样与图的连通分量个数有关:
Lrw L_{rw} 和 Lsym L_{sym} 的特征值0的重数等于连通分量的个数. 对于 Lrw L_{rw},特征值0的特征空间由各连通分量的指示向量 1A \mathbb{1_A}组成;对于 Lsym L_{sym},特征值0的特征空间由各连通分量的向量 D−1/21A D^{-1/2}\mathbb{1_A} 组成.
3. 从图分割看谱聚类
下面将从图分割角度推导出谱聚类。
三种cut:
- cut(A,A¯)=∑i∈A,j∈A¯wij cut(A,\bar A)=\sum_{i\in A,j\in \bar A}w_{ij}
- RatioCut(A,A¯)=cut(A,A¯)|A|+cut(A,A¯)|A¯| RatioCut(A,\bar A)=\frac{cut(A,\bar A)}{|A|}+\frac{cut(A,\bar A)}{|\bar A|}
- NCut(A,A¯)=cut(A,A¯)vol(A)+cut(A,A¯)vol(A¯) NCut(A,\bar A)=\frac{cut(A,\bar A)}{vol(A)}+\frac{cut(A,\bar A)}{vol(\bar A)}
已经有很高效的方法解决mincut问题,但是mincut多数情况下只是将单个节点从原图分割出去. RatioCut和NCut都试图将图划分得更加均衡,然而很不幸的是这将使问题变为NP hard. 谱聚类是一种解决这些问题的松弛化版本的一种方法,松弛RatioCut对应未规则化谱聚类,松弛NCut对应规则化谱聚类.
3.1 RatioCut推导
考虑k=2的情况. 目标函数:
\mathop{\min}_{A \subset V} RatioCut(A,\bar A)
为了将问题改写为更方便的方式,定义一个 N 维列向量 f:
f_i = \begin{cases} \sqrt{|\bar A| / |A|}, if \; v_i \in A \\ -\sqrt{|A| / |\bar A|} ,if \; v_i \in \bar A \end{cases}
(f 对应每个节点所对应的分类。后面可以看到,之所以这样构造是因为 f 满足 fTf f^Tf 是个常数,进而可以方便地引入瑞利商理论。)
现在可以用未规则化的拉普拉斯算子改写目标函数:
\begin{aligned} f^TLf=&\frac{1}{2}\sum_{i,j=1}^Nw_{ij}(f_i-f_j)^2 \\ =& \frac{1}{2} \Bigg[\sum_{i\in A,j\in \bar A}w_{ij}{\bigg(\sqrt{\frac{|\bar A|}{|A|}} + \sqrt{\frac{|A|}{|\bar A|}}\bigg)}^2+\sum_{i\in \bar A,j \in A}w_{ij}\bigg(-\sqrt{\frac{|\bar A|}{|A|}} - \sqrt{\frac{|A|}{|\bar A|}}\bigg)^2 \Bigg] \\ =& cut(A,\bar A)\big(\frac{|\bar A|}{|A|}+\frac{|A|}{|\bar A|} +2 \big) \\ =& cut(A,\bar A)\big(\frac{|A| + |\bar A|}{|A|}+\frac{|A|+|\bar A|}{|\bar A|}\big) \\ =&|V|\cdot RatioCut(A,\bar A) \end{aligned}
另外,如果令 1 \mathbf{1} 为各个元素全为 1 的向量的话,直接展开可以很容易得到 fT1=∑fi=0 f^T\mathbf{1} = \sum f_i = 0 和 fTf=∥f∥2=∑f2i=n f^Tf=\|f\|^2 = \sum f_i^2 = n 。
由于 |V| 是一个常量,因此目标函数可等价写成:
\mathop{\min}_{A\subset V} f'Lf,subject\; to\; f\perp \mathbb{1}\; and\;\| f\|=\sqrt n
根据 Rayleigh-Ritz 理论,这个问题的解 f f 即为 LL 的第二小特征值(因为最小特征值为0)所对应的特征向量.
到这一步,我们看起来好像是很容易地解决了前面那个 NP hard 问题,实际上是我们耍了一个把戏:之前的问题之所以 NP hard 是因为向量 f f 的元素只能取两个值 |A¯|/|A|−−−−−−√和−|A|/|A¯|−−−−−−√\sqrt{|\bar{A}|/|A|} 和 -\sqrt{|A|/|\bar{A}|} 中的一个,是一个离散的问题,而我们求的的特征向量 v 其中的元素可以是任意实数,就是说我们将原来的问题限制放宽了。那如何得到原来的解呢?一个最简单的办法就是看 v 的每个元素是大于零还是小于零,将他们分别对应到离散情况的 |A¯|/|A|−−−−−−√和−|A|/|A¯|−−−−−−√ \sqrt{|\bar{A}|/|A|} 和 -\sqrt{|A|/|\bar{A}|} ,不过我们也可以采取稍微复杂一点的办法,用 k=2 的 K-means 来将 v 的元素聚为两类。
3.2 NCut推导
可以采用与RatioCut类似的方法推导出NCut的规则化谱聚类解法.
定义指示向量 f f 为:
f_i = \begin{cases} \sqrt{vol(\bar A)/vol(A)}, if \; v_i \in A \\ -\sqrt{vol(A)/vol(\bar A)} ,if \; v_i \in \bar A \end{cases}
易知 (Df)′1=0,f′Df=vol(V) (Df)'\mathbb{1}=0,f'Df=vol(V) 以及 f′Lf=vol(V)NCut(A,A¯) f'Lf=vol(V)NCut(A,\bar A),因此原问题可转化为:
\mathop{\min}_A f'Lf\; subject\;to\;Df\perp\mathbb{1},f'Df=vol(V)
经过允许 f f 可以是实值来松弛化之后:
\mathop{\min}_{f\in \mathbb{R}^n} f'Lf\;subject\;to\;Df\perp\mathbb{1},f'Df=vol(V)
用 g:=D1/2f g:=D^{1/2}f 作变换:
\mathop{\min}_{g\in \mathbb{R}^n} g'D^{-1/2}LD^{-1/2}g\;subject\;to\;g\perp D^{1/2}\mathbb{1},{\|g\|}^2=vol(V)
注意到 D−1/2LD−1/2=Lsym D^{-1/2}LD^{-1/2}=L_{sym}:
\mathop{\min}_{g\in \mathbb{R}^n} g'L_{sym}g\;subject\;to\;g\perp D^{1/2}\mathbb{1},{\|g\|}^2=vol(V)
由于 D1/21 D^{1/2}\mathbb{1} 是 Lsym L_{sym} 的第一个特征向量, vol(V) vol(V) 是定值. 故上式即为 Rayleigh-Ritz 的标准形式,它的解 g g 即为 LsymL_{sym} 的第二个特征向量.
由规则化拉普拉斯算子性质:
λ \lambda是 Lrw L_{rw} 的特征向量为 v v 的特征值当且仅当 λ\lambda 是 Lsym L_{sym}的特征向量为 w=D−1/2 w=D^{-1/2} 的特征值
可知 f=D−1/2g f=D^{-1/2}g 为 Lrw L_{rw} 的第二个特征向量,或者 Lv=λDv Lv=\lambda Dv 的规则化的特征向量.
3.3 松弛方法分析
用谱聚类方法解决图分割问题的结果可能与真实结果相去甚远.
谱聚类并不是唯一可用于解决这类问题的方法,半正定规划(semi-definite programming, SDP)就是一种完全不同的方法. 谱聚类之所以很吸引人不是因为它的效果很好,而是因为它将问题转化成非常简单而易于解决的标准线性代数问题.
最后,k-means并不是唯一可用于对实值向量进行划分的算法,任何其它的可解决此问题的聚类算法都可使用.
References:
1. A tutorial on Spectral Clustering
2. 漫谈 Clustering (4): Spectral Clustering
A tutorial on Spectral Clustering相关推荐
- 【机器学习】谱聚类(Spectral Clustering)
疑问 谱聚类的概念 谱聚类是一种针对图结构的聚类方法,将每个点都看作是一个图结构上的点,所以,判断两个点是否属于同一类的依据就是,两个点在图结构上是否有边相连,可以是直接相连也可以是间接相连.本质上就 ...
- sklearn学习之Spectral Clustering
基本思想 谱聚类是从图论中演化出来的算法,后来在聚类中得到了广泛的应用.它的主要思想是把所有的数据看做空间中的点,这些点之间可以用边连接起来.距离较远的两个点之间的边权重值较低,而距离较近的两个点之间 ...
- Spectral Clustering
Spectral Clustering(转) 如果说 K-means 和 GMM 这些聚类的方法是古代流行的算法的话,那么这次要讲的 Spectral Clustering 就可以算是现代流行的算法了 ...
- spectral clustering谱聚类论文解读(上)
关于A Tutorial on Spectral Clustering的解读 1.介绍 2.相似图 2.1 图的标号 2.2 不同的相似图 3.拉普拉斯图与它的基础参数 3.1未归一化的拉普拉斯矩阵 ...
- 谱聚类(Spectral Clustering)算法介绍
一. 前言 本来想写关于聚类系列算法的介绍,但是聚类系列的其它几个算法原理比较简单,网上有大量的教程可以查阅.这里主要是介绍一下谱聚类算法,做一个学习笔记,同时也希望对想要了解该算法的朋友有一个帮助. ...
- 谱聚类(Spectral Clustering)1——算法原理
文章目录 简介 1. 准备工作 1.1 邻接矩阵 1.2 度矩阵 1.3 拉普拉斯矩阵 1.3.1 非归一化拉普拉斯矩阵 1.3.2 归一化拉普拉斯矩阵 1.4 相似图 1.4.1 ϵ\epsilon ...
- 谱聚类(spectral clustering)及其实现详解
Preface 开了很多题,手稿都是写好一直思考如何放到CSDN上来,一方面由于公司技术隐私,一方面由于面向对象不同,要大改,所以一直没贴出完整,希望日后可以把开的题都补充全. 先把大纲列出来: 一. ...
- 谱聚类 Spectral Clustering
谱聚类 Spectral Clustering sklearn.cluster.SpectralClustering 谱聚类(Spectral Clustering, SC), 是一种基于图论的聚类方 ...
- 一个不错的Spectral Clustering方法的总结
什么叫Spectral Algorithm? 广义上来说,任何在演算法中用到SVD/特征值分解的,都叫Spectral Algorithm. 从很老很老的PCA/LDA,到比较近的Spectral ...
最新文章
- eclipse插件之easyshell
- (0079)iOS开发之安全策略之HTTPS(1)
- gdb 设置一个函数, 出现4个断点的原因
- 思科路由器debug基本操作和简单配置
- 【洛谷4001】 [ICPC-Beijing 2006]狼抓兔子(最小割)
- mats显存测试软件linux环境,Mats显存检测软件下载-Mats显存检测软件最新版下载-微侠手游网...
- 李宏毅机器学习(二)自注意力机制
- 线性代数应该这样讲(一)
- (数据库系统概论|王珊)第四章数据库安全性-第二、三、四、五、六节:数据库安全性控制
- 2020-04-04 接收队列--配置所有的TCP数据流定向到接收队列2中
- 机器学习课程笔记【三】广义线性模型(2)-构建广义线性模型
- java 按字节读文件_JAVA按字节读取文件的简单实例
- Excel如何批量添加批注
- 无法访问网内计算机错误代码,电脑局域网无法访问共享ox80070035错误代码解决方法...
- 交互体验设计优秀的产品
- 分享一则电子邮件营销案例
- 【js】判断时间段之间是否有重叠
- 清晰理解红黑树的演变-红黑的含义
- 手机游戏充值api 各大游戏在线直充
- kali安装beef-xss(笔者的踩坑之旅)