本站内容由 AI 生成,可能存在错误。如发现问题,欢迎到 GitHub Issues 反馈。

图 Laplacian 与谱聚类:从图结构到最优分割

图 Laplacian 与谱聚类:从图结构到最优分割

更新于 2026-04-23

Art. 14 算子全景预告了 Part 2 的三族算子矩阵——随机矩阵、图结构矩阵、相似度矩阵。前几篇文章探索了第一族(马尔可夫链、HMM、PageRank)和第三族(Kernel 矩阵)。现在我们转向第二族的核心:图 Laplacian

假设你有一组用户的社交关系图,想把它分成几个紧密社区。或者你有一组像素,想按视觉相似度分割成前景和背景。直觉上,好的分割应该切断尽可能少的连接。问题是:怎么找到这样的”最优切割”? 暴力搜索所有可能的分割在大图上不可行——nn 个节点有 2n2^n 种二分方式。

答案藏在图 Laplacian 矩阵 L=DAGL = D - A_G特征值和特征向量里。LL 的第二小特征值对应的特征向量(Fiedler 向量)天然地把图分成两个群组,而且这个分割在特定意义下接近最优。谱聚类(spectral clustering)正是将这个数学洞察转化为实用算法:用 Laplacian 特征向量做降维,再用 k-means 完成聚类。

“谱”(spectrum)词源:在数学中,矩阵的指它的所有特征值的集合 {λ1,λ2,,λn}\{\lambda_1, \lambda_2, \ldots, \lambda_n\}。这个术语借自物理学——白光通过棱镜分解成不同频率的光谱(spectrum),矩阵通过特征分解”分解”成不同特征值对应的成分。所以”谱聚类”就是”基于特征值/特征向量的聚类”,“谱方法”就是”利用特征值/特征向量性质的方法”。

图 Laplacian 的定义

图 Laplacian 的构造:L = D − A度矩阵(对角)D2000020000300001A0110101011010010=L2-1-10-12-10-1-13-100-11→0→0→0→0图 G0d=21d=22d=33d=1L 的对角元素 = 节点度数;非对角元素 = −邻接权重;每行之和 = 0

基本设置

给定一个无向图 G=(V,E)G = (V, E),有 n=Vn = |V| 个节点。我们需要三个矩阵:

邻接矩阵(adjacency matrix) AGRn×nA_G \in \mathbb{R}^{n \times n}(用 AGA_G 而非 AA,以避免与泛指矩阵混淆):

(AG)ij={wij如果节点 i 和 j 相连0否则(A_G)_{ij} = \begin{cases} w_{ij} & \text{如果节点 } i \text{ 和 } j \text{ 相连} \\ 0 & \text{否则} \end{cases}

对于无权图,wij=1w_{ij} = 1。对于带权图,wij>0w_{ij} > 0 是边的权重。无向图的邻接矩阵是对称的:(AG)ij=(AG)ji(A_G)_{ij} = (A_G)_{ji}

度矩阵(degree matrix) DRn×nD \in \mathbb{R}^{n \times n}:对角矩阵,Dii=di=j=1n(AG)ijD_{ii} = d_i = \sum_{j=1}^n (A_G)_{ij} 是节点 ii 的度(degree),即与它相连的边的权重之和。

图 Laplacian(graph Laplacian) LRn×nL \in \mathbb{R}^{n \times n}

L=DAG\boxed{L = D - A_G}

逐项理解:

  • 对角元素 Lii=diL_{ii} = d_i(节点 ii 的度)
  • 非对角元素 Lij=(AG)ijL_{ij} = -(A_G)_{ij}(如果 i,ji, j 相连则为 wij-w_{ij},否则为 00
  • 每行之和为零:jLij=dij(AG)ij=0\sum_j L_{ij} = d_i - \sum_j (A_G)_{ij} = 0

为什么叫”Laplacian”?

这个名字来自连续数学中的 Laplace 算子 Δf=2f=i2fxi2\Delta f = \nabla^2 f = \sum_i \frac{\partial^2 f}{\partial x_i^2}。Laplace 算子衡量的是”函数值与邻域均值的偏差”——如果 ff 在某点的值高于邻域平均,Δf<0\Delta f < 0;低于邻域平均,Δf>0\Delta f > 0

图 Laplacian LL 是这个思想的离散版本。对于定义在节点上的信号 fRn\mathbf{f} \in \mathbb{R}^nfif_i 是节点 ii 上的值):

(Lf)i=j:(i,j)Ewij(fifj)(L\mathbf{f})_i = \sum_{j: (i,j) \in E} w_{ij}(f_i - f_j)

直觉理解:(Lf)i(L\mathbf{f})_i 是节点 ii 的值与其每个邻居的值的加权差之和。如果 fif_i 远大于邻居们的值,(Lf)i(L\mathbf{f})_i 很大;如果 fif_i 接近邻居均值,(Lf)i(L\mathbf{f})_i 接近零。这正是离散 Laplace 算子——衡量”一个节点与邻居的差异程度”。

下图用一个 5 节点图直观展示了图 Laplacian 的平滑效果:对信号 f\mathbf{f} 执行一步 f=fαLf\mathbf{f}' = \mathbf{f} - \alpha L\mathbf{f},高值节点向下、低值节点向上,信号变得更”光滑”。

图 Laplacian 的平滑效果
(Lf)ᵢ = Σⱼ (fᵢ − fⱼ) 衡量节点值与邻居的偏差,一步平滑让值向邻居靠拢
原始信号 f102815f − αLf平滑后 f′ = f − 0.25·Lf6.86.34.83.84.5高值节点下降、低值节点上升 → 信号变"光滑"

推导 (Lf)i(L\mathbf{f})_i 的展开式: (Lf)i=(Df)i(AGf)i=difij(AG)ijfj=j(AG)ijfij(AG)ijfj=j:(i,j)Ewij(fifj)(L\mathbf{f})_i = (D\mathbf{f})_i - (A_G\mathbf{f})_i = d_i f_i - \sum_j (A_G)_{ij} f_j = \sum_j (A_G)_{ij} f_i - \sum_j (A_G)_{ij} f_j = \sum_{j: (i,j) \in E} w_{ij}(f_i - f_j)

图 Laplacian 的关键性质

图 Laplacian 的三大性质① 对称半正定fᵀLf ≥ 0 ∀f= ½ Σᵢⱼ Aᵢⱼ(fᵢ−fⱼ)²二次型 = 信号在图上的"总变化量"(越光滑越小)λᵢ ≥ 0 ∀i(平方和必然非负)② 最小特征值 = 0L·𝟏 = 𝟎每行之和为零 →全 1 向量是特征向量0 = λ₁ ≤ λ₂ ≤ ... ≤ λₙ③ 零个数 = 连通分量数mult(λ=0) = kk=2 → λ₁=λ₂=0, λ₃>0特征值直接编码拓扑!

性质 1:对称半正定

LL 是对称半正定(positive semi-definite, PSD)矩阵。

对称性LT=(DAG)T=DTAGT=DAG=LL^T = (D - A_G)^T = D^T - A_G^T = D - A_G = LDD 是对角矩阵,AGA_G 对于无向图是对称的)。

半正定性——用二次型证明(这是最具洞察力的证明方式):

fTLf=fT(DAG)f=idifi2i,j(AG)ijfifj\mathbf{f}^T L \mathbf{f} = \mathbf{f}^T (D - A_G) \mathbf{f} = \sum_i d_i f_i^2 - \sum_{i,j} (A_G)_{ij} f_i f_j

利用 di=j(AG)ijd_i = \sum_j (A_G)_{ij},可以改写为:

fTLf=i,j(AG)ijfi2i,j(AG)ijfifj=i,j(AG)ijfi(fifj)\mathbf{f}^T L \mathbf{f} = \sum_{i,j} (A_G)_{ij} f_i^2 - \sum_{i,j} (A_G)_{ij} f_i f_j = \sum_{i,j} (A_G)_{ij} f_i (f_i - f_j)

注意对称性 (AG)ij=(AG)ji(A_G)_{ij} = (A_G)_{ji},交换 i,ji, j 得到 i,j(AG)ijfj(fjfi)\sum_{i,j} (A_G)_{ij} f_j(f_j - f_i)。两式相加除以 2:

fTLf=12i,j(AG)ij(fifj)2\boxed{\mathbf{f}^T L \mathbf{f} = \frac{1}{2} \sum_{i,j} (A_G)_{ij} (f_i - f_j)^2}

这是一个平方和,因此 fTLf0\mathbf{f}^T L \mathbf{f} \geq 0 对所有 f\mathbf{f} 成立——LL 半正定。(见 von Luxburg, 2007, Proposition 1)

这个二次型的直觉fTLf\mathbf{f}^T L \mathbf{f} 度量的是信号 f\mathbf{f} 在图上的”总变化量”。如果两个相连的节点 i,ji, j 的信号值差距很大(fifj|f_i - f_j| 大),这一项的贡献就大。一个”光滑”的信号(相连节点值相近)对应小的 fTLf\mathbf{f}^T L \mathbf{f},一个”剧烈变化”的信号对应大的 fTLf\mathbf{f}^T L \mathbf{f}

性质 2:最小特征值为 0

由于每行之和为零(L1=0L\mathbf{1} = \mathbf{0},其中 1\mathbf{1} 是全 1 向量),全 1 向量 1\mathbf{1}LL 的特征向量,对应特征值 λ1=0\lambda_1 = 0

L1=(DAG)1=D1AG1L\mathbf{1} = (D - A_G)\mathbf{1} = D\mathbf{1} - A_G\mathbf{1}

D1D\mathbf{1} 的第 ii 个分量是 did_iAG1A_G\mathbf{1} 的第 ii 个分量是 j(AG)ij=di\sum_j (A_G)_{ij} = d_i,所以 L1=0L\mathbf{1} = \mathbf{0}

结合半正定性(所有特征值 0\geq 0),λ1=0\lambda_1 = 0 就是最小特征值。将所有特征值从小到大排列:

0=λ1λ2λn0 = \lambda_1 \leq \lambda_2 \leq \cdots \leq \lambda_n

性质 3:零特征值个数 = 连通分量数

这是图 Laplacian 最深刻的结构性定理。

定理(von Luxburg, 2007, Proposition 2):λ1=0\lambda_1 = 0 的重数(即特征值 0 出现的次数)等于图 GG 的连通分量数 kk

证明思路

k=1k = 1(图连通)的情况:需要证明 λ1=0\lambda_1 = 0 的特征空间是一维的,即 Lf=0L\mathbf{f} = \mathbf{0} 的解只有 f=c1\mathbf{f} = c\mathbf{1}(常数向量)。

如果 Lf=0L\mathbf{f} = \mathbf{0},则 fTLf=0\mathbf{f}^T L\mathbf{f} = 0。由二次型公式:

12i,j(AG)ij(fifj)2=0\frac{1}{2}\sum_{i,j} (A_G)_{ij}(f_i - f_j)^2 = 0

因为每一项 (AG)ij(fifj)20(A_G)_{ij}(f_i - f_j)^2 \geq 0,所以对所有边 (i,j)E(i,j) \in E 必须有 fi=fjf_i = f_j。如果图是连通的,任意两个节点之间存在路径,沿路径传递 fi=fjf_i = f_j 得到所有节点的值相等,即 f=c1\mathbf{f} = c\mathbf{1}。因此零特征空间是一维的,λ1=0\lambda_1 = 0 的重数为 1。

k>1k > 1(图有多个连通分量)的情况:设图有 kk 个连通分量 C1,C2,,CkC_1, C_2, \ldots, C_k。对每个连通分量 CC_\ell 定义指示向量 1C\mathbf{1}_{C_\ell}(在 CC_\ell 的节点上为 1,其余为 0)。由于不同分量之间没有边,L1C=0L\mathbf{1}_{C_\ell} = \mathbf{0}——每个指示向量都是零特征值的特征向量。这 kk 个指示向量线性无关,所以零特征值的重数至少为 kk

反过来,每个连通分量内部的 Laplacian 是连通的(上面已证零特征空间一维),所以每个分量贡献恰好一个零特征值。因此零特征值的重数恰好为 kk\blacksquare

实践意义:如果你计算了一个图的 Laplacian 特征值,发现前 3 个特征值都是 0(λ1=λ2=λ3=0,λ4>0\lambda_1 = \lambda_2 = \lambda_3 = 0, \lambda_4 > 0),那么这个图恰好有 3 个连通分量。特征值直接告诉你图的全局拓扑结构。

数值例子:6 节点图的 Laplacian 特征分解

为了让上述理论具体化,我们对一个小图做完整的 Laplacian 特征分解。

图的定义

考虑 6 个节点的无权无向图,边集:

E={(0,1),(0,2),(1,2),(1,3),(3,4),(3,5),(4,5)}E = \{(0,1), (0,2), (1,2), (1,3), (3,4), (3,5), (4,5)\}

这个图有两个”紧密群组”:{0,1,2}\{0, 1, 2\}{3,4,5}\{3, 4, 5\},通过边 (1,3)(1,3) 连接。

邻接矩阵和度矩阵

AG=[011000101100110000010011000101000110]A_G = \begin{bmatrix} 0 & 1 & 1 & 0 & 0 & 0 \\ 1 & 0 & 1 & 1 & 0 & 0 \\ 1 & 1 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 & 0 & 1 \\ 0 & 0 & 0 & 1 & 1 & 0 \end{bmatrix}

度:d0=2,  d1=3,  d2=2,  d3=3,  d4=2,  d5=2d_0 = 2, \; d_1 = 3, \; d_2 = 2, \; d_3 = 3, \; d_4 = 2, \; d_5 = 2

D=diag(2,3,2,3,2,2)D = \text{diag}(2, 3, 2, 3, 2, 2)

Laplacian 矩阵

L=DAG=[211000131100112000010311000121000112]L = D - A_G = \begin{bmatrix} 2 & -1 & -1 & 0 & 0 & 0 \\ -1 & 3 & -1 & -1 & 0 & 0 \\ -1 & -1 & 2 & 0 & 0 & 0 \\ 0 & -1 & 0 & 3 & -1 & -1 \\ 0 & 0 & 0 & -1 & 2 & -1 \\ 0 & 0 & 0 & -1 & -1 & 2 \end{bmatrix}

验证:每行之和 = 00

特征值

LL 做特征分解(可用数值工具验证),特征值从小到大排列:

λ1=0,λ20.44,λ3=λ4=λ5=3,λ64.56\lambda_1 = 0, \quad \lambda_2 \approx 0.44, \quad \lambda_3 = \lambda_4 = \lambda_5 = 3, \quad \lambda_6 \approx 4.56

验证tr(L)=2+3+2+3+2+2=14\text{tr}(L) = 2 + 3 + 2 + 3 + 2 + 2 = 14λi=0+0.44+9+4.56=14\sum \lambda_i = 0 + 0.44 + 9 + 4.56 = 14 ✓。λ1=0\lambda_1 = 0λ2>0\lambda_2 > 0,说明图是连通的(1 个连通分量)✓。λ20.44\lambda_2 \approx 0.44Fiedler 值(algebraic connectivity),数值较小,反映两个群组之间的连接较弱(只有一条桥接边)。λ3=3\lambda_3 = 3 的三重重数来源于图的对称结构——两个三角形通过一条桥接边相连,产生了简并特征空间。

Fiedler 向量

λ20.44\lambda_2 \approx 0.44 对应的特征向量(Fiedler 向量)大约为:

v2(0.46,0.26,0.46,0.26,0.46,0.46)T\mathbf{v}_2 \approx (-0.46, -0.26, -0.46, 0.26, 0.46, 0.46)^T

关键观察v2\mathbf{v}_2 的分量自然分成正负两组

  • 负分量:节点 {0,1,2}\{0, 1, 2\} —— 恰好是第一个群组
  • 正分量:节点 {3,4,5}\{3, 4, 5\} —— 恰好是第二个群组

按 Fiedler 向量的符号切割图——这就是谱聚类的核心思想。

Fiedler 向量与图切割

Graph Cut 问题

给定图 G=(V,E)G = (V, E),将节点分成两组 SSSˉ=VS\bar{S} = V \setminus S。定义切割代价(cut)为:

cut(S,Sˉ)=iSjSˉwij\text{cut}(S, \bar{S}) = \sum_{\substack{i \in S \\ j \in \bar{S}}} w_{ij}

即被切断的边的权重之和。最小切割(min-cut)寻找使 cut\text{cut} 最小的分割。

但 min-cut 有一个问题:它倾向于切出极小的群组(极端情况下,切出单个孤立节点就能得到很小的 cut)。为了得到”平衡”的分割,我们需要归一化。

RatioCut

RatioCut(Hagen & Kahng, 1992)用群组大小归一化:

RatioCut(S,Sˉ)=cut(S,Sˉ)S+cut(S,Sˉ)Sˉ\text{RatioCut}(S, \bar{S}) = \frac{\text{cut}(S, \bar{S})}{|S|} + \frac{\text{cut}(S, \bar{S})}{|\bar{S}|}

其中 S|S| 是群组的节点数。这个目标函数同时惩罚大的 cut 值和不平衡的分割。

RatioCut 与 Laplacian 的联系

关键定理:最小化 RatioCut 的松弛问题等价于 Laplacian 的 Fiedler 向量。

定义指示向量 fRn\mathbf{f} \in \mathbb{R}^n

fi={Sˉ/Sif iSS/Sˉif iSˉf_i = \begin{cases} \sqrt{|\bar{S}|/|S|} & \text{if } i \in S \\ -\sqrt{|S|/|\bar{S}|} & \text{if } i \in \bar{S} \end{cases}

可以验证 fT1=0\mathbf{f}^T \mathbf{1} = 0(正交于全 1 向量)且 f2=n\|\mathbf{f}\|^2 = n

代入二次型:

fTLf=12i,j(AG)ij(fifj)2\mathbf{f}^T L \mathbf{f} = \frac{1}{2}\sum_{i,j} (A_G)_{ij}(f_i - f_j)^2

对于每条跨群组的边 (iS,jSˉ)(i \in S, j \in \bar{S})(fifj)2=(Sˉ/S+S/Sˉ)2=n2SSˉ(f_i - f_j)^2 = \left(\sqrt{|\bar{S}|/|S|} + \sqrt{|S|/|\bar{S}|}\right)^2 = \frac{n^2}{|S||\bar{S}|}。每条群组内部的边贡献 00fi=fjf_i = f_j)。因此:

fTLf=cut(S,Sˉ)n2SSˉ=nRatioCut(S,Sˉ)\mathbf{f}^T L \mathbf{f} = \text{cut}(S, \bar{S}) \cdot \frac{n^2}{|S||\bar{S}|} = n \cdot \text{RatioCut}(S, \bar{S})

所以:

RatioCut(S,Sˉ)=1nfTLf\text{RatioCut}(S, \bar{S}) = \frac{1}{n} \mathbf{f}^T L \mathbf{f}

最小化 RatioCut 等价于在约束 fT1=0\mathbf{f}^T \mathbf{1} = 0f=n\|\mathbf{f}\| = \sqrt{n} 下最小化 fTLf\mathbf{f}^T L \mathbf{f}。如果放松 f\mathbf{f} 的离散约束(允许 f\mathbf{f} 取任意实数),这就是一个标准的 Rayleigh 商问题,最优解正是 LL第二小特征向量——Fiedler 向量。(见 von Luxburg, 2007, Section 5)

Fiedler 向量的含义

Fiedler 向量 v2\mathbf{v}_2λ2\lambda_2 对应的特征向量)是满足 vT1=0\mathbf{v}^T \mathbf{1} = 0(与全 1 向量正交)的条件下,使 vTLv\mathbf{v}^T L \mathbf{v} 最小的单位向量。换言之,v2\mathbf{v}_2 是图上变化最缓慢的非常数信号——它在图的紧密连接区域内部值接近,跨区域边界处值跳变。

因此,按 v2\mathbf{v}_2 的符号(或在某个阈值处切分)将节点分成两组,得到的分割接近最优 RatioCut。

下图将数值例子中的 Fiedler 向量可视化:上方是 6 节点图的两个群组(蓝、橙)和桥接边(红色虚线),下方是 v2\mathbf{v}_2 的分量——负值对应群组 A,正值对应群组 B。

Fiedler 向量的符号 = 最优二分割
负分量 → 群组 A,正分量 → 群组 B;λ₂ 越小图越容易被切开
012345切割Fiedler 向量 v₂ 的分量-0.46v0-0.26v1-0.46v2+0.26v3+0.46v4+0.46v5

Fiedler 值 λ2\lambda_2 本身也有重要意义:它衡量图的代数连通性(algebraic connectivity)。λ2\lambda_2 越大,图越难被二分(连接越紧密);λ2\lambda_2 接近 0,说明图接近”断成两半”。

谱聚类算法

从二分到 kk

Fiedler 向量给出了最优二分割。但实际问题中我们常常需要将图分成 k>2k > 2 个群组。自然的推广是:使用 LL 的前 kk 个最小特征值对应的特征向量(而非仅第二个)。

下图概括了谱聚类从数据到聚类标签的完整五步流程。

谱聚类五步流程
数据x₁…xₙ相似度图RBF / k-NNL = D − A图 Laplacian前 k 个特征向量v₁, v₂, …, vₖk-means谱空间聚类核心洞察:Laplacian 特征向量把图拓扑转化为欧氏坐标

标准谱聚类算法(Unnormalized)

给定相似度图 GG(节点集 VV,带权邻接矩阵 AGA_G)和目标聚类数 kk

  1. 构造 Laplacian:计算 L=DAGL = D - A_G
  2. 特征分解:计算 LL 的前 kk 个最小特征向量 v1,v2,,vk\mathbf{v}_1, \mathbf{v}_2, \ldots, \mathbf{v}_k
  3. 构造嵌入矩阵:令 URn×kU \in \mathbb{R}^{n \times k},其中第 iiui=(v1(i),v2(i),,vk(i))\mathbf{u}_i = (v_1(i), v_2(i), \ldots, v_k(i)) 是节点 iikk 维”谱空间”中的坐标
  4. K-means 聚类:对 UU 的行向量 u1,,un\mathbf{u}_1, \ldots, \mathbf{u}_nkk-means 聚类
  5. 输出:节点 ii 的聚类标签 = ui\mathbf{u}_i 的 k-means 标签

为什么有效? 步骤 2-3 把每个节点从”图拓扑”映射到了 kk 维欧氏空间。在这个空间里,同一群组内的节点聚集在一起(因为它们在慢变的特征向量上取值接近),不同群组的节点分离。K-means 在欧氏空间中表现良好,所以能有效完成聚类。

归一化 Laplacian

两种归一化 Laplacian对称归一化 L_symL_sym = D⁻¹ᐟ²LD⁻¹ᐟ² = I − D⁻¹ᐟ²AD⁻¹ᐟ²✓ 对称 → 可用谱定理用于 NJW 算法 (2001)特征值 ∈ [0, 2]随机游走归一化 L_rwL_rw = D⁻¹L = I − D⁻¹AD⁻¹A = 随机游走转移矩阵 P用于 Shi-Malik NCut (2000)NCut 优化 = L_rw 特征向量两者的特征向量与 P = D⁻¹A 直接相关:谱聚类 ↔ 随机游走 ↔ 消息传递

实践中,归一化版本的谱聚类通常效果更好。有两种常见的归一化 Laplacian。

对称归一化 Laplacian LsymL_\text{sym}

Lsym=D1/2LD1/2=ID1/2AGD1/2L_\text{sym} = D^{-1/2} L \, D^{-1/2} = I - D^{-1/2} A_G \, D^{-1/2}

随机游走归一化 Laplacian LrwL_\text{rw}

Lrw=D1L=ID1AGL_\text{rw} = D^{-1} L = I - D^{-1} A_G

注意 D1AGD^{-1}A_G 就是图上随机游走的转移矩阵——第 ii 行第 jj 列是从节点 ii 一步转移到节点 jj 的概率。所以 LrwL_\text{rw}随机游走直接相关。

Shi-Malik 算法(Normalized Cuts, 2000)最小化 NCut(用度之和而非节点数归一化):

NCut(S,Sˉ)=cut(S,Sˉ)vol(S)+cut(S,Sˉ)vol(Sˉ)\text{NCut}(S, \bar{S}) = \frac{\text{cut}(S, \bar{S})}{\text{vol}(S)} + \frac{\text{cut}(S, \bar{S})}{\text{vol}(\bar{S})}

其中 vol(S)=iSdi\text{vol}(S) = \sum_{i \in S} d_i 是群组的度之和。NCut 的松弛解是 LrwL_\text{rw} 的特征向量。

Ng-Jordan-Weiss(NJW)算法(2001)使用 LsymL_\text{sym} 的特征向量,并在步骤 3 之后对每个行向量归一化到单位长度uiui/ui\mathbf{u}_i \leftarrow \mathbf{u}_i / \|\mathbf{u}_i\|),然后再做 k-means。

可视化:谱聚类三步流程

下面的交互组件展示了谱聚类在一个 8 节点图上的完整流程。点击三个步骤按钮,分别查看原始图、Fiedler 向量的分量、以及最终的聚类结果。

一个8节点无向图,两个紧密群组之间只有一条桥接边

01234567红色虚线 = 唯一的跨群组桥接边

读图要点

  • Step 1:8 个节点分成两个紧密群组,中间只有一条桥接边(红色虚线)
  • Step 2:Fiedler 向量的分量自然分成正负两组——负值节点对应一个群组,正值节点对应另一个群组。注意分量的绝对值反映了节点在群组中的”核心程度”
  • Step 3:按 Fiedler 向量的符号着色,完美恢复了两个群组

从相似度数据到图:构造相似度图

从数据点到相似度图:三种构造方法ε-邻域图‖xᵢ−xⱼ‖ < ε → 连边k-近邻图 (k-NN)xⱼ ∈ k-NN(xᵢ) → 连边全连接 + 高斯权重wᵢⱼ = exp(−‖xᵢ−xⱼ‖²/2σ²)= Kernel 矩阵(Art. 20)!

谱聚类通常不是从一个现成的图开始,而是从数据点出发。给定 nn 个数据点 x1,,xnRd\mathbf{x}_1, \ldots, \mathbf{x}_n \in \mathbb{R}^d,需要先构造一个相似度图,然后在图上做谱聚类。

三种常用构造方法

1. ε\varepsilon-邻域图:如果 xixj<ε\|\mathbf{x}_i - \mathbf{x}_j\| < \varepsilon,则连一条边。

2. kk-近邻图(kk-NN graph):如果 xj\mathbf{x}_jxi\mathbf{x}_ikk 个最近邻之一(或反过来),则连一条边。为了得到无向图,通常取”互为近邻”(mutual k-NN)或”至少一方是近邻”。

3. 全连接图 + 高斯权重:所有节点对之间都有边,权重为高斯核:

wij=exp ⁣(xixj22σ2)w_{ij} = \exp\!\left(-\frac{\|\mathbf{x}_i - \mathbf{x}_j\|^2}{2\sigma^2}\right)

σ\sigma 是带宽参数,控制”多远算相似”。这与 Art. 20 Kernel 矩阵中的 RBF kernel 完全一致——全连接图的邻接矩阵就是 kernel 矩阵。

与 Kernel 的联系:谱聚类的第一步(构造相似度图)本质上就是在构造 kernel 矩阵。这解释了为什么谱聚类能处理非线性可分的数据——kernel 将数据映射到高维特征空间,谱聚类在这个空间中找到线性可分的结构。

Nystrom 近似:大图加速

Nystrom 近似:用 m 个锚点近似 n×n 矩阵K_SSK_SRK_RSK_RRK (n×n)mn−m近似K̃_RR = K_RS · K_SS⁻¹ · K_SR只需计算和存储:K_SS (m×m) + K_SR (m×(n−m))计算复杂度对比完整: O(n³)Nystrom: O(m²n)m ≪ n采样策略:均匀随机(通用)| k-means++(分布不均匀时更好)| 分层采样核心思路:少量"代表性"锚点就能描述整个相似度结构

计算瓶颈

标准谱聚类的主要计算瓶颈是特征分解。对 n×nn \times n 的 Laplacian 矩阵做特征分解的时间复杂度是 O(n3)O(n^3),空间复杂度是 O(n2)O(n^2)(存储矩阵本身)。当 nn 达到数万甚至数百万时(如社交网络、图像分割),这不可行。

Nystrom 方法

Nystrom 近似(Williams & Seeger, 2001)提供了一种优雅的解决方案:从 nn 个节点中随机采样 mnm \ll n 个”锚点”(landmark points),只计算锚点之间和锚点与其余点之间的相似度,然后用矩阵补全来近似整个 kernel 矩阵。

KRn×nK \in \mathbb{R}^{n \times n} 是完整的 kernel 矩阵。将节点分为采样集 SSmm 个)和剩余集 RRnmn - m 个),KK 可以分块为:

K=[KSSKSRKRSKRR]K = \begin{bmatrix} K_{SS} & K_{SR} \\ K_{RS} & K_{RR} \end{bmatrix}

Nystrom 近似用 KSSK_{SS}KSRK_{SR} 来近似 KRRK_{RR}

K~RR=KRSKSS1KSR\tilde{K}_{RR} = K_{RS} K_{SS}^{-1} K_{SR}

近似的完整矩阵为:

K~=[KSSKSRKRSKRSKSS1KSR]\tilde{K} = \begin{bmatrix} K_{SS} & K_{SR} \\ K_{RS} & K_{RS} K_{SS}^{-1} K_{SR} \end{bmatrix}

时间复杂度从 O(n3)O(n^3) 降到 O(m2n)O(m^2 n),当 mnm \ll n 时大幅加速。

注意:Nystrom 近似的质量取决于采样点的代表性。均匀随机采样通常表现不错,但对于分布不均匀的数据,k-means++ 初始化或分层采样可能更好。

与其他方法的联系

谱聚类 vs. K-means

K-means 假设聚类是凸的球形区域(因为它用欧氏距离)。谱聚类没有这个限制——它通过 Laplacian 特征向量做非线性映射,能处理任意形状的聚类。经典的”两个同心圆”数据,k-means 完全失败,而谱聚类轻松成功。

谱聚类 vs. PCA

PCA(Art. 6)是对协方差矩阵 C=1n1X~TX~C = \frac{1}{n-1}\tilde{X}^T\tilde{X} 的特征分解。谱聚类是对图 Laplacian L=DAGL = D - A_G 的特征分解。两者都是”用特征向量做降维”,但作用的矩阵不同:

PCA谱聚类
目标矩阵协方差矩阵 CC图 Laplacian LL
取的特征值最大的 kk最小的 kk
编码的信息方差最大的方向变化最缓慢的图信号
处理的结构线性非线性(通过图/kernel)

注意特征值的方向正好相反:PCA 取最大特征值(最大方差方向),谱聚类取最小特征值(最平滑的信号方向)。

图 Laplacian 与随机游走

Lrw=ID1AGL_\text{rw} = I - D^{-1}A_G 中的 P=D1AGP = D^{-1}A_G 就是图上随机游走的转移矩阵(Art. 19 随机游走)。LrwL_\text{rw} 的特征向量与 PP 的特征向量相同(如果 Pv=μvP\mathbf{v} = \mu\mathbf{v},则 Lrwv=(1μ)vL_\text{rw}\mathbf{v} = (1-\mu)\mathbf{v})。这意味着谱聚类和图上的随机游走本质上在看同一个结构——随机游走者倾向于被”困”在紧密连接的社区内,难以跨越稀疏的边界。

总结与展望

本文建立了图 Laplacian 的完整理论框架,从定义到谱聚类算法:

  • 图 Laplacian L=DAGL = D - A_G:离散 Laplace 算子的矩阵形式,衡量节点值与邻居的偏差
  • 核心二次型 fTLf=12i,j(AG)ij(fifj)2\mathbf{f}^T L \mathbf{f} = \frac{1}{2}\sum_{i,j}(A_G)_{ij}(f_i - f_j)^2:度量信号在图上的总变化,保证 LL 半正定
  • 零特征值个数 = 连通分量数:特征值直接编码图的全局拓扑
  • Fiedler 向量λ2\lambda_2 对应特征向量):最优二分割的松弛解,按符号切割即得近似最优 RatioCut
  • 谱聚类算法:Laplacian 前 kk 个特征向量 + k-means,能处理任意形状的聚类
  • Nystrom 近似:采样 mnm \ll n 个锚点,将 O(n3)O(n^3) 降到 O(m2n)O(m^2 n)

图 Laplacian 的谱理论不仅是聚类的工具,更是理解图上信号处理的基础。下一篇,我们将看到 Laplacian 如何驱动图上的信号扩散——每一次 Laplacian 平滑都让节点的值向邻居”靠拢”。图卷积网络(GCN)的每一层本质上就是一次归一化 Laplacian 平滑加上可学习的变换——消息传递(message passing)就是矩阵乘法。从谱聚类到 GNN,同一个 Laplacian 矩阵贯穿始终。