令 G=(V,E) 为无向图,节点集为 V=v1,v2,...,vn . 假设图 G 是有权图,节点 vi 和 vj 之间的权重为 wij≥0 . 权重邻接矩阵为 W=(wij)i,j=1,...,n . 如果 wij=0 , 则说明它们不相连.节点 vi 的度数为:
设 A=(aij)n×n 是一个 n 阶矩阵,如果有一个复数 λ 及一个 n 维非零列向量 x=(x1,⋯,xn)T ,使得
定义:如果矩阵 A∈Rn×n 是实对称矩阵,并且对于一切 X∈Rn ,有 XTAX≥0 ,则称矩阵 A 为半正定矩阵.
对于一个n阶对称矩阵 A ,以下命题等价:
谱聚类的主要工具就是拉普拉斯算子。拉普拉斯算子一类矩阵的统称,并非特指某一个算子。下面当我们提到矩阵的特征向量的时候,并不一定要求其模为1.因此线性相关的多个向量会被当成同一个. 特征值总是会被按照递增的顺序排列. 最先的k个特征向量(the first k eigenvector)指的是k个最小的特征值所对应的特征向量。
未规则化的拉普拉斯矩阵为:
说明:
1. 未规则化的拉普拉斯算子与邻接矩阵 W 的对角线上的元素无关. 即使对角线上有值,那么与没有值的L是完全相同的. 可见自环不会改变对应的拉普拉斯算子.
2. 未规则化的拉普拉斯算子及其特征值、特征向量可用来描述图的许多性质. 在谱聚类中的一个重要性质为:图G的连通分量的个数等于特征值0的代数重数(multiplicity of eigenvalue 0).特征值0的特征子空间由连通分量的指示向量构成.(The eigenspace of eigenvalue 0 is spanned by the indicator vectors of those components.)
有两个矩阵被称为规则化拉普拉斯算子:
Lsym 的下标表示它是一个对称(symmetric)矩阵, Lrw 的下标是因为它与随机游走(random walk)有紧密联系. 它们有如下性质:
说明:
规则化拉普拉斯算子的特征值0的重数同样与图的连通分量个数有关:
Lrw 和 Lsym 的特征值0的重数等于连通分量的个数. 对于 Lrw ,特征值0的特征空间由各连通分量的指示向量 1A 组成;对于 Lsym ,特征值0的特征空间由各连通分量的向量 D−1/21A 组成.
下面将从图分割角度推导出谱聚类。
三种cut:
已经有很高效的方法解决mincut问题,但是mincut多数情况下只是将单个节点从原图分割出去. RatioCut和NCut都试图将图划分得更加均衡,然而很不幸的是这将使问题变为NP hard. 谱聚类是一种解决这些问题的松弛化版本的一种方法,松弛RatioCut对应未规则化谱聚类,松弛NCut对应规则化谱聚类.
考虑k=2的情况. 目标函数:
为了将问题改写为更方便的方式,定义一个 N 维列向量 f:
现在可以用未规则化的拉普拉斯算子改写目标函数:
另外,如果令 1 为各个元素全为 1 的向量的话,直接展开可以很容易得到 fT1=∑fi=0 和 fTf=∥f∥2=∑f2i=n 。
由于 |V| 是一个常量,因此目标函数可等价写成:
根据 Rayleigh-Ritz 理论,这个问题的解 f 即为 L 的第二小特征值(因为最小特征值为0)所对应的特征向量.
到这一步,我们看起来好像是很容易地解决了前面那个 NP hard 问题,实际上是我们耍了一个把戏:之前的问题之所以 NP hard 是因为向量 f 的元素只能取两个值 |A¯|/|A|−−−−−−√和−|A|/|A¯|−−−−−−√ 中的一个,是一个离散的问题,而我们求的的特征向量 v 其中的元素可以是任意实数,就是说我们将原来的问题限制放宽了。那如何得到原来的解呢?一个最简单的办法就是看 v 的每个元素是大于零还是小于零,将他们分别对应到离散情况的 |A¯|/|A|−−−−−−√和−|A|/|A¯|−−−−−−√ ,不过我们也可以采取稍微复杂一点的办法,用 k=2 的 K-means 来将 v 的元素聚为两类。
可以采用与RatioCut类似的方法推导出NCut的规则化谱聚类解法.
定义指示向量 f 为:
由规则化拉普拉斯算子性质:
λ 是 Lrw 的特征向量为 v 的特征值当且仅当 λ 是 Lsym 的特征向量为 w=D−1/2 的特征值
可知 f=D−1/2g 为 Lrw 的第二个特征向量,或者 Lv=λDv 的规则化的特征向量.
用谱聚类方法解决图分割问题的结果可能与真实结果相去甚远.
谱聚类并不是唯一可用于解决这类问题的方法,半正定规划(semi-definite programming, SDP)就是一种完全不同的方法. 谱聚类之所以很吸引人不是因为它的效果很好,而是因为它将问题转化成非常简单而易于解决的标准线性代数问题.
最后,k-means并不是唯一可用于对实值向量进行划分的算法,任何其它的可解决此问题的聚类算法都可使用.
References:
1. A tutorial on Spectral Clustering
2. 漫谈 Clustering (4): Spectral Clustering