Art. 14 算子全景 预告了 Part 2 的三族算子矩阵——随机矩阵、图结构矩阵、相似度矩阵。前几篇文章探索了第一族(马尔可夫链、HMM、PageRank)和第三族(Kernel 矩阵)。现在我们转向第二族的核心:图 Laplacian 。
假设你有一组用户的社交关系图,想把它分成几个紧密社区。或者你有一组像素,想按视觉相似度分割成前景和背景。直觉上,好的分割应该切断尽可能少的连接。问题是:怎么找到这样的”最优切割”? 暴力搜索所有可能的分割在大图上不可行——n n n 个节点有 2 n 2^n 2 n 种二分方式。
答案藏在图 Laplacian 矩阵 L = D − A G L = D - A_G L = D − A G 的特征值和特征向量 里。L L L 的第二小特征值对应的特征向量(Fiedler 向量)天然地把图分成两个群组,而且这个分割在特定意义下接近最优。谱聚类 (spectral clustering)正是将这个数学洞察转化为实用算法:用 Laplacian 特征向量做降维,再用 k-means 完成聚类。
“谱”(spectrum)词源 :在数学中,矩阵的谱 指它的所有特征值的集合 { λ 1 , λ 2 , … , λ n } \{\lambda_1, \lambda_2, \ldots, \lambda_n\} { λ 1 , λ 2 , … , λ n } 。这个术语借自物理学——白光通过棱镜分解成不同频率的光谱(spectrum),矩阵通过特征分解”分解”成不同特征值对应的成分。所以”谱聚类”就是”基于特征值/特征向量的聚类”,“谱方法”就是”利用特征值/特征向量性质的方法”。
图 Laplacian 的定义
图 Laplacian 的构造:L = D − A 度矩阵(对角) D 2 0 0 0 0 2 0 0 0 0 3 0 0 0 0 1 − A 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 = L 2 -1 -1 0 -1 2 -1 0 -1 -1 3 -1 0 0 -1 1 →0 →0 →0 →0 图 G 0 d=2 1 d=2 2 d=3 3 d=1 L 的对角元素 = 节点度数;非对角元素 = −邻接权重;每行之和 = 0
基本设置
给定一个无向图 G = ( V , E ) G = (V, E) G = ( V , E ) ,有 n = ∣ V ∣ n = |V| n = ∣ V ∣ 个节点。我们需要三个矩阵:
邻接矩阵 (adjacency matrix) A G ∈ R n × n A_G \in \mathbb{R}^{n \times n} A G ∈ R n × n (用 A G A_G A G 而非 A A A ,以避免与泛指矩阵混淆):
( A G ) i j = { w i j 如果节点 i 和 j 相连 0 否则 (A_G)_{ij} = \begin{cases} w_{ij} & \text{如果节点 } i \text{ 和 } j \text{ 相连} \\ 0 & \text{否则} \end{cases} ( A G ) ij = { w ij 0 如果节点 i 和 j 相连 否则
对于无权图,w i j = 1 w_{ij} = 1 w ij = 1 。对于带权图,w i j > 0 w_{ij} > 0 w ij > 0 是边的权重。无向图的邻接矩阵是对称的:( A G ) i j = ( A G ) j i (A_G)_{ij} = (A_G)_{ji} ( A G ) ij = ( A G ) j i 。
度矩阵 (degree matrix) D ∈ R n × n D \in \mathbb{R}^{n \times n} D ∈ R n × n :对角矩阵,D i i = d i = ∑ j = 1 n ( A G ) i j D_{ii} = d_i = \sum_{j=1}^n (A_G)_{ij} D ii = d i = ∑ j = 1 n ( A G ) ij 是节点 i i i 的度(degree),即与它相连的边的权重之和。
图 Laplacian (graph Laplacian) L ∈ R n × n L \in \mathbb{R}^{n \times n} L ∈ R n × n :
L = D − A G \boxed{L = D - A_G} L = D − A G
逐项理解:
对角元素 L i i = d i L_{ii} = d_i L ii = d i (节点 i i i 的度)
非对角元素 L i j = − ( A G ) i j L_{ij} = -(A_G)_{ij} L ij = − ( A G ) ij (如果 i , j i, j i , j 相连则为 − w i j -w_{ij} − w ij ,否则为 0 0 0 )
每行之和为零:∑ j L i j = d i − ∑ j ( A G ) i j = 0 \sum_j L_{ij} = d_i - \sum_j (A_G)_{ij} = 0 ∑ j L ij = d i − ∑ j ( A G ) ij = 0
为什么叫”Laplacian”?
这个名字来自连续数学中的 Laplace 算子 Δ f = ∇ 2 f = ∑ i ∂ 2 f ∂ x i 2 \Delta f = \nabla^2 f = \sum_i \frac{\partial^2 f}{\partial x_i^2} Δ f = ∇ 2 f = ∑ i ∂ x i 2 ∂ 2 f 。Laplace 算子衡量的是”函数值与邻域均值的偏差”——如果 f f f 在某点的值高于邻域平均,Δ f < 0 \Delta f < 0 Δ f < 0 ;低于邻域平均,Δ f > 0 \Delta f > 0 Δ f > 0 。
图 Laplacian L L L 是这个思想的离散版本。对于定义在节点上的信号 f ∈ R n \mathbf{f} \in \mathbb{R}^n f ∈ R n (f i f_i f i 是节点 i i i 上的值):
( L f ) i = ∑ j : ( i , j ) ∈ E w i j ( f i − f j ) (L\mathbf{f})_i = \sum_{j: (i,j) \in E} w_{ij}(f_i - f_j) ( L f ) i = ∑ j : ( i , j ) ∈ E w ij ( f i − f j )
直觉理解:( L f ) i (L\mathbf{f})_i ( L f ) i 是节点 i i i 的值与其每个邻居的值的加权差之和 。如果 f i f_i f i 远大于邻居们的值,( L f ) i (L\mathbf{f})_i ( L f ) i 很大;如果 f i f_i f i 接近邻居均值,( L f ) i (L\mathbf{f})_i ( L f ) i 接近零。这正是离散 Laplace 算子——衡量”一个节点与邻居的差异程度”。
下图用一个 5 节点图直观展示了图 Laplacian 的平滑效果:对信号 f \mathbf{f} f 执行一步 f ′ = f − α L f \mathbf{f}' = \mathbf{f} - \alpha L\mathbf{f} f ′ = f − α L f ,高值节点向下、低值节点向上,信号变得更”光滑”。
图 Laplacian 的平滑效果
(Lf)ᵢ = Σⱼ (fᵢ − fⱼ) 衡量节点值与邻居的偏差,一步平滑让值向邻居靠拢
原始信号 f 10 2 8 1 5 f − αLf 平滑后 f′ = f − 0.25·Lf 6.8 6.3 4.8 3.8 4.5 高值节点下降、低值节点上升 → 信号变"光滑"
推导 ( L f ) i (L\mathbf{f})_i ( L f ) i 的展开式:
( L f ) i = ( D f ) i − ( A G f ) i = d i f i − ∑ j ( A G ) i j f j = ∑ j ( A G ) i j f i − ∑ j ( A G ) i j f j = ∑ j : ( i , j ) ∈ E w i j ( f i − f j ) (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) ( L f ) i = ( D f ) i − ( A G f ) i = d i f i − ∑ j ( A G ) ij f j = ∑ j ( A G ) ij f i − ∑ j ( A G ) ij f j = ∑ j : ( i , j ) ∈ E w ij ( f i − f j )
图 Laplacian 的关键性质
图 Laplacian 的三大性质 ① 对称半正定 fᵀLf ≥ 0 ∀f = ½ Σᵢⱼ Aᵢⱼ(fᵢ−fⱼ)² 二次型 = 信号在图上的 "总变化量"(越光滑越小) λᵢ ≥ 0 ∀i (平方和必然非负) ② 最小特征值 = 0 L·𝟏 = 𝟎 每行之和为零 → 全 1 向量是特征向量 0 = λ₁ ≤ λ₂ ≤ ... ≤ λₙ ③ 零个数 = 连通分量数 mult(λ=0) = k ⋯ k=2 → λ₁=λ₂=0, λ₃>0 特征值直接编码拓扑!
性质 1:对称半正定
L L L 是对称半正定(positive semi-definite, PSD)矩阵。
对称性 :L T = ( D − A G ) T = D T − A G T = D − A G = L L^T = (D - A_G)^T = D^T - A_G^T = D - A_G = L L T = ( D − A G ) T = D T − A G T = D − A G = L (D D D 是对角矩阵,A G A_G A G 对于无向图是对称的)。
半正定性 ——用二次型证明(这是最具洞察力的证明方式):
f T L f = f T ( D − A G ) f = ∑ i d i f i 2 − ∑ i , j ( A G ) i j f i f j \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 f T L f = f T ( D − A G ) f = ∑ i d i f i 2 − ∑ i , j ( A G ) ij f i f j
利用 d i = ∑ j ( A G ) i j d_i = \sum_j (A_G)_{ij} d i = ∑ j ( A G ) ij ,可以改写为:
f T L f = ∑ i , j ( A G ) i j f i 2 − ∑ i , j ( A G ) i j f i f j = ∑ i , j ( A G ) i j f i ( f i − f j ) \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) f T L f = ∑ i , j ( A G ) ij f i 2 − ∑ i , j ( A G ) ij f i f j = ∑ i , j ( A G ) ij f i ( f i − f j )
注意对称性 ( A G ) i j = ( A G ) j i (A_G)_{ij} = (A_G)_{ji} ( A G ) ij = ( A G ) j i ,交换 i , j i, j i , j 得到 ∑ i , j ( A G ) i j f j ( f j − f i ) \sum_{i,j} (A_G)_{ij} f_j(f_j - f_i) ∑ i , j ( A G ) ij f j ( f j − f i ) 。两式相加除以 2:
f T L f = 1 2 ∑ i , j ( A G ) i j ( f i − f j ) 2 \boxed{\mathbf{f}^T L \mathbf{f} = \frac{1}{2} \sum_{i,j} (A_G)_{ij} (f_i - f_j)^2} f T L f = 2 1 i , j ∑ ( A G ) ij ( f i − f j ) 2
这是一个平方和,因此 f T L f ≥ 0 \mathbf{f}^T L \mathbf{f} \geq 0 f T L f ≥ 0 对所有 f \mathbf{f} f 成立——L L L 半正定。(见 von Luxburg, 2007, Proposition 1)
这个二次型的直觉 :f T L f \mathbf{f}^T L \mathbf{f} f T L f 度量的是信号 f \mathbf{f} f 在图上的”总变化量”。如果两个相连的节点 i , j i, j i , j 的信号值差距很大(∣ f i − f j ∣ |f_i - f_j| ∣ f i − f j ∣ 大),这一项的贡献就大。一个”光滑”的信号(相连节点值相近)对应小的 f T L f \mathbf{f}^T L \mathbf{f} f T L f ,一个”剧烈变化”的信号对应大的 f T L f \mathbf{f}^T L \mathbf{f} f T L f 。
性质 2:最小特征值为 0
由于每行之和为零(L 1 = 0 L\mathbf{1} = \mathbf{0} L 1 = 0 ,其中 1 \mathbf{1} 1 是全 1 向量),全 1 向量 1 \mathbf{1} 1 是 L L L 的特征向量,对应特征值 λ 1 = 0 \lambda_1 = 0 λ 1 = 0 :
L 1 = ( D − A G ) 1 = D 1 − A G 1 L\mathbf{1} = (D - A_G)\mathbf{1} = D\mathbf{1} - A_G\mathbf{1} L 1 = ( D − A G ) 1 = D 1 − A G 1
D 1 D\mathbf{1} D 1 的第 i i i 个分量是 d i d_i d i ,A G 1 A_G\mathbf{1} A G 1 的第 i i i 个分量是 ∑ j ( A G ) i j = d i \sum_j (A_G)_{ij} = d_i ∑ j ( A G ) ij = d i ,所以 L 1 = 0 L\mathbf{1} = \mathbf{0} L 1 = 0 。
结合半正定性(所有特征值 ≥ 0 \geq 0 ≥ 0 ),λ 1 = 0 \lambda_1 = 0 λ 1 = 0 就是最小特征值。将所有特征值从小到大排列:
0 = λ 1 ≤ λ 2 ≤ ⋯ ≤ λ n 0 = \lambda_1 \leq \lambda_2 \leq \cdots \leq \lambda_n 0 = λ 1 ≤ λ 2 ≤ ⋯ ≤ λ n
性质 3:零特征值个数 = 连通分量数
这是图 Laplacian 最深刻的结构性定理。
定理 (von Luxburg, 2007, Proposition 2):λ 1 = 0 \lambda_1 = 0 λ 1 = 0 的重数(即特征值 0 出现的次数)等于图 G G G 的连通分量数 k k k 。
证明思路 :
k = 1 k = 1 k = 1 (图连通)的情况 :需要证明 λ 1 = 0 \lambda_1 = 0 λ 1 = 0 的特征空间是一维的,即 L f = 0 L\mathbf{f} = \mathbf{0} L f = 0 的解只有 f = c 1 \mathbf{f} = c\mathbf{1} f = c 1 (常数向量)。
如果 L f = 0 L\mathbf{f} = \mathbf{0} L f = 0 ,则 f T L f = 0 \mathbf{f}^T L\mathbf{f} = 0 f T L f = 0 。由二次型公式:
1 2 ∑ i , j ( A G ) i j ( f i − f j ) 2 = 0 \frac{1}{2}\sum_{i,j} (A_G)_{ij}(f_i - f_j)^2 = 0 2 1 ∑ i , j ( A G ) ij ( f i − f j ) 2 = 0
因为每一项 ( A G ) i j ( f i − f j ) 2 ≥ 0 (A_G)_{ij}(f_i - f_j)^2 \geq 0 ( A G ) ij ( f i − f j ) 2 ≥ 0 ,所以对所有边 ( i , j ) ∈ E (i,j) \in E ( i , j ) ∈ E 必须有 f i = f j f_i = f_j f i = f j 。如果图是连通的,任意两个节点之间存在路径,沿路径传递 f i = f j f_i = f_j f i = f j 得到所有节点的值相等,即 f = c 1 \mathbf{f} = c\mathbf{1} f = c 1 。因此零特征空间是一维的,λ 1 = 0 \lambda_1 = 0 λ 1 = 0 的重数为 1。
k > 1 k > 1 k > 1 (图有多个连通分量)的情况 :设图有 k k k 个连通分量 C 1 , C 2 , … , C k C_1, C_2, \ldots, C_k C 1 , C 2 , … , C k 。对每个连通分量 C ℓ C_\ell C ℓ 定义指示向量 1 C ℓ \mathbf{1}_{C_\ell} 1 C ℓ (在 C ℓ C_\ell C ℓ 的节点上为 1,其余为 0)。由于不同分量之间没有边,L 1 C ℓ = 0 L\mathbf{1}_{C_\ell} = \mathbf{0} L 1 C ℓ = 0 ——每个指示向量都是零特征值的特征向量。这 k k k 个指示向量线性无关,所以零特征值的重数至少为 k k k 。
反过来,每个连通分量内部的 Laplacian 是连通的(上面已证零特征空间一维),所以每个分量贡献恰好一个零特征值。因此零特征值的重数恰好为 k k k 。■ \blacksquare ■
实践意义 :如果你计算了一个图的 Laplacian 特征值,发现前 3 个特征值都是 0(λ 1 = λ 2 = λ 3 = 0 , λ 4 > 0 \lambda_1 = \lambda_2 = \lambda_3 = 0, \lambda_4 > 0 λ 1 = λ 2 = λ 3 = 0 , λ 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)\} E = {( 0 , 1 ) , ( 0 , 2 ) , ( 1 , 2 ) , ( 1 , 3 ) , ( 3 , 4 ) , ( 3 , 5 ) , ( 4 , 5 )}
这个图有两个”紧密群组”:{ 0 , 1 , 2 } \{0, 1, 2\} { 0 , 1 , 2 } 和 { 3 , 4 , 5 } \{3, 4, 5\} { 3 , 4 , 5 } ,通过边 ( 1 , 3 ) (1,3) ( 1 , 3 ) 连接。
邻接矩阵和度矩阵
A G = [ 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 ] 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} A G = 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
度:d 0 = 2 , d 1 = 3 , d 2 = 2 , d 3 = 3 , d 4 = 2 , d 5 = 2 d_0 = 2, \; d_1 = 3, \; d_2 = 2, \; d_3 = 3, \; d_4 = 2, \; d_5 = 2 d 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) D = diag ( 2 , 3 , 2 , 3 , 2 , 2 )
Laplacian 矩阵
L = D − A G = [ 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 ] 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} L = D − A G = 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
验证:每行之和 = 0 0 0 ✓
特征值
对 L L L 做特征分解(可用数值工具验证),特征值从小到大排列:
λ 1 = 0 , λ 2 ≈ 0.44 , λ 3 = λ 4 = λ 5 = 3 , λ 6 ≈ 4.56 \lambda_1 = 0, \quad \lambda_2 \approx 0.44, \quad \lambda_3 = \lambda_4 = \lambda_5 = 3, \quad \lambda_6 \approx 4.56 λ 1 = 0 , λ 2 ≈ 0.44 , λ 3 = λ 4 = λ 5 = 3 , λ 6 ≈ 4.56
验证 :tr ( L ) = 2 + 3 + 2 + 3 + 2 + 2 = 14 \text{tr}(L) = 2 + 3 + 2 + 3 + 2 + 2 = 14 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 ∑ λ i = 0 + 0.44 + 9 + 4.56 = 14 ✓。λ 1 = 0 \lambda_1 = 0 λ 1 = 0 且 λ 2 > 0 \lambda_2 > 0 λ 2 > 0 ,说明图是连通的 (1 个连通分量)✓。λ 2 ≈ 0.44 \lambda_2 \approx 0.44 λ 2 ≈ 0.44 是 Fiedler 值 (algebraic connectivity),数值较小,反映两个群组之间的连接较弱(只有一条桥接边)。λ 3 = 3 \lambda_3 = 3 λ 3 = 3 的三重重数来源于图的对称结构——两个三角形通过一条桥接边相连,产生了简并特征空间。
Fiedler 向量
λ 2 ≈ 0.44 \lambda_2 \approx 0.44 λ 2 ≈ 0.44 对应的特征向量(Fiedler 向量)大约为:
v 2 ≈ ( − 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 v 2 ≈ ( − 0.46 , − 0.26 , − 0.46 , 0.26 , 0.46 , 0.46 ) T
关键观察 :v 2 \mathbf{v}_2 v 2 的分量自然分成正负两组 :
负分量:节点 { 0 , 1 , 2 } \{0, 1, 2\} { 0 , 1 , 2 } —— 恰好是第一个群组
正分量:节点 { 3 , 4 , 5 } \{3, 4, 5\} { 3 , 4 , 5 } —— 恰好是第二个群组
按 Fiedler 向量的符号切割图——这就是谱聚类的核心思想。
Fiedler 向量与图切割
Graph Cut 问题
给定图 G = ( V , E ) G = (V, E) G = ( V , E ) ,将节点分成两组 S S S 和 S ˉ = V ∖ S \bar{S} = V \setminus S S ˉ = V ∖ S 。定义切割代价 (cut)为:
cut ( S , S ˉ ) = ∑ i ∈ S j ∈ S ˉ w i j \text{cut}(S, \bar{S}) = \sum_{\substack{i \in S \\ j \in \bar{S}}} w_{ij} cut ( S , S ˉ ) = ∑ i ∈ S j ∈ S ˉ w ij
即被切断的边的权重之和。最小切割 (min-cut)寻找使 cut \text{cut} 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}|} RatioCut ( S , S ˉ ) = ∣ S ∣ cut ( S , S ˉ ) + ∣ S ˉ ∣ cut ( S , S ˉ )
其中 ∣ S ∣ |S| ∣ S ∣ 是群组的节点数。这个目标函数同时惩罚大的 cut 值和不平衡的分割。
RatioCut 与 Laplacian 的联系
关键定理 :最小化 RatioCut 的松弛问题等价于 Laplacian 的 Fiedler 向量。
定义指示向量 f ∈ R n \mathbf{f} \in \mathbb{R}^n f ∈ R n :
f i = { ∣ S ˉ ∣ / ∣ S ∣ if i ∈ S − ∣ S ∣ / ∣ S ˉ ∣ if i ∈ S ˉ 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} f i = { ∣ S ˉ ∣/∣ S ∣ − ∣ S ∣/∣ S ˉ ∣ if i ∈ S if i ∈ S ˉ
可以验证 f T 1 = 0 \mathbf{f}^T \mathbf{1} = 0 f T 1 = 0 (正交于全 1 向量)且 ∥ f ∥ 2 = n \|\mathbf{f}\|^2 = n ∥ f ∥ 2 = n 。
代入二次型:
f T L f = 1 2 ∑ i , j ( A G ) i j ( f i − f j ) 2 \mathbf{f}^T L \mathbf{f} = \frac{1}{2}\sum_{i,j} (A_G)_{ij}(f_i - f_j)^2 f T L f = 2 1 ∑ i , j ( A G ) ij ( f i − f j ) 2
对于每条跨群组的边 ( i ∈ S , j ∈ S ˉ ) (i \in S, j \in \bar{S}) ( i ∈ S , j ∈ S ˉ ) ,( f i − f j ) 2 = ( ∣ S ˉ ∣ / ∣ S ∣ + ∣ S ∣ / ∣ S ˉ ∣ ) 2 = n 2 ∣ S ∣ ∣ S ˉ ∣ (f_i - f_j)^2 = \left(\sqrt{|\bar{S}|/|S|} + \sqrt{|S|/|\bar{S}|}\right)^2 = \frac{n^2}{|S||\bar{S}|} ( f i − f j ) 2 = ( ∣ S ˉ ∣/∣ S ∣ + ∣ S ∣/∣ S ˉ ∣ ) 2 = ∣ S ∣∣ S ˉ ∣ n 2 。每条群组内部的边贡献 0 0 0 (f i = f j f_i = f_j f i = f j )。因此:
f T L f = cut ( S , S ˉ ) ⋅ n 2 ∣ S ∣ ∣ S ˉ ∣ = n ⋅ RatioCut ( 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}) f T L f = cut ( S , S ˉ ) ⋅ ∣ S ∣∣ S ˉ ∣ n 2 = n ⋅ RatioCut ( S , S ˉ )
所以:
RatioCut ( S , S ˉ ) = 1 n f T L f \text{RatioCut}(S, \bar{S}) = \frac{1}{n} \mathbf{f}^T L \mathbf{f} RatioCut ( S , S ˉ ) = n 1 f T L f
最小化 RatioCut 等价于在约束 f T 1 = 0 \mathbf{f}^T \mathbf{1} = 0 f T 1 = 0 、∥ f ∥ = n \|\mathbf{f}\| = \sqrt{n} ∥ f ∥ = n 下最小化 f T L f \mathbf{f}^T L \mathbf{f} f T L f 。如果放松 f \mathbf{f} f 的离散约束(允许 f \mathbf{f} f 取任意实数),这就是一个标准的 Rayleigh 商问题,最优解正是 L L L 的第二小特征向量 ——Fiedler 向量。(见 von Luxburg, 2007, Section 5)
Fiedler 向量的含义
Fiedler 向量 v 2 \mathbf{v}_2 v 2 (λ 2 \lambda_2 λ 2 对应的特征向量)是满足 v T 1 = 0 \mathbf{v}^T \mathbf{1} = 0 v T 1 = 0 (与全 1 向量正交)的条件下,使 v T L v \mathbf{v}^T L \mathbf{v} v T L v 最小的单位向量。换言之,v 2 \mathbf{v}_2 v 2 是图上变化最缓慢的非常数信号 ——它在图的紧密连接区域内部值接近,跨区域边界处值跳变。
因此,按 v 2 \mathbf{v}_2 v 2 的符号(或在某个阈值处切分)将节点分成两组,得到的分割接近最优 RatioCut。
下图将数值例子中的 Fiedler 向量可视化:上方是 6 节点图的两个群组(蓝、橙)和桥接边(红色虚线),下方是 v 2 \mathbf{v}_2 v 2 的分量——负值对应群组 A,正值对应群组 B。
Fiedler 向量的符号 = 最优二分割
负分量 → 群组 A,正分量 → 群组 B;λ₂ 越小图越容易被切开
0 1 2 3 4 5 切割 Fiedler 向量 v₂ 的分量 -0.46 v0 -0.26 v1 -0.46 v2 +0.26 v3 +0.46 v4 +0.46 v5
Fiedler 值 λ 2 \lambda_2 λ 2 本身也有重要意义:它衡量图的代数连通性 (algebraic connectivity)。λ 2 \lambda_2 λ 2 越大,图越难被二分(连接越紧密);λ 2 \lambda_2 λ 2 接近 0,说明图接近”断成两半”。
谱聚类算法
从二分到 k k k 分
Fiedler 向量给出了最优二分割。但实际问题中我们常常需要将图分成 k > 2 k > 2 k > 2 个群组。自然的推广是:使用 L L L 的前 k k k 个最小特征值对应的特征向量(而非仅第二个)。
下图概括了谱聚类从数据到聚类标签的完整五步流程。
数据 x₁…xₙ 相似度图 RBF / k-NN L = D − A 图 Laplacian 前 k 个特征向量 v₁, v₂, …, vₖ k-means 谱空间聚类 核心洞察:Laplacian 特征向量把图拓扑转化为欧氏坐标
标准谱聚类算法(Unnormalized)
给定相似度图 G G G (节点集 V V V ,带权邻接矩阵 A G A_G A G )和目标聚类数 k k k :
构造 Laplacian :计算 L = D − A G L = D - A_G L = D − A G
特征分解 :计算 L L L 的前 k k k 个最小特征向量 v 1 , v 2 , … , v k \mathbf{v}_1, \mathbf{v}_2, \ldots, \mathbf{v}_k v 1 , v 2 , … , v k
构造嵌入矩阵 :令 U ∈ R n × k U \in \mathbb{R}^{n \times k} U ∈ R n × k ,其中第 i i i 行 u i = ( v 1 ( i ) , v 2 ( i ) , … , v k ( i ) ) \mathbf{u}_i = (v_1(i), v_2(i), \ldots, v_k(i)) u i = ( v 1 ( i ) , v 2 ( i ) , … , v k ( i )) 是节点 i i i 在 k k k 维”谱空间”中的坐标
K-means 聚类 :对 U U U 的行向量 u 1 , … , u n \mathbf{u}_1, \ldots, \mathbf{u}_n u 1 , … , u n 做 k k k -means 聚类
输出 :节点 i i i 的聚类标签 = u i \mathbf{u}_i u i 的 k-means 标签
为什么有效? 步骤 2-3 把每个节点从”图拓扑”映射到了 k k k 维欧氏空间。在这个空间里,同一群组内的节点聚集在一起(因为它们在慢变的特征向量上取值接近),不同群组的节点分离。K-means 在欧氏空间中表现良好,所以能有效完成聚类。
归一化 Laplacian
两种归一化 Laplacian 对称归一化 L_sym L_sym = D⁻¹ᐟ²LD⁻¹ᐟ² = I − D⁻¹ᐟ²AD⁻¹ᐟ² ✓ 对称 → 可用谱定理 用于 NJW 算法 (2001) 特征值 ∈ [0, 2] 随机游走归一化 L_rw L_rw = D⁻¹L = I − D⁻¹A D⁻¹A = 随机游走转移矩阵 P 用于 Shi-Malik NCut (2000) NCut 优化 = L_rw 特征向量 两者的特征向量与 P = D⁻¹A 直接相关:谱聚类 ↔ 随机游走 ↔ 消息传递
实践中,归一化版本 的谱聚类通常效果更好。有两种常见的归一化 Laplacian。
对称归一化 Laplacian L sym L_\text{sym} L sym :
L sym = D − 1 / 2 L D − 1 / 2 = I − D − 1 / 2 A G D − 1 / 2 L_\text{sym} = D^{-1/2} L \, D^{-1/2} = I - D^{-1/2} A_G \, D^{-1/2} L sym = D − 1/2 L D − 1/2 = I − D − 1/2 A G D − 1/2
随机游走归一化 Laplacian L rw L_\text{rw} L rw :
L rw = D − 1 L = I − D − 1 A G L_\text{rw} = D^{-1} L = I - D^{-1} A_G L rw = D − 1 L = I − D − 1 A G
注意 D − 1 A G D^{-1}A_G D − 1 A G 就是图上随机游走的转移矩阵——第 i i i 行第 j j j 列是从节点 i i i 一步转移到节点 j j j 的概率。所以 L rw L_\text{rw} L 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})} NCut ( S , S ˉ ) = vol ( S ) cut ( S , S ˉ ) + vol ( S ˉ ) cut ( S , S ˉ )
其中 vol ( S ) = ∑ i ∈ S d i \text{vol}(S) = \sum_{i \in S} d_i vol ( S ) = ∑ i ∈ S d i 是群组的度之和。NCut 的松弛解是 L rw L_\text{rw} L rw 的特征向量。
Ng-Jordan-Weiss(NJW)算法 (2001)使用 L sym L_\text{sym} L sym 的特征向量,并在步骤 3 之后对每个行向量归一化到单位长度 (u i ← u i / ∥ u i ∥ \mathbf{u}_i \leftarrow \mathbf{u}_i / \|\mathbf{u}_i\| u i ← u i /∥ u i ∥ ),然后再做 k-means。
可视化:谱聚类三步流程
下面的交互组件展示了谱聚类在一个 8 节点图上的完整流程。点击三个步骤按钮,分别查看原始图、Fiedler 向量的分量、以及最终的聚类结果。
Step 1: 原始图 Step 2: Laplacian 特征向量 Step 3: 聚类结果
一个8节点无向图,两个紧密群组之间只有一条桥接边
0 1 2 3 4 5 6 7 红色虚线 = 唯一的跨群组桥接边
读图要点 :
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)!
谱聚类通常不是从一个现成的图开始,而是从数据点 出发。给定 n n n 个数据点 x 1 , … , x n ∈ R d \mathbf{x}_1, \ldots, \mathbf{x}_n \in \mathbb{R}^d x 1 , … , x n ∈ R d ,需要先构造一个相似度图,然后在图上做谱聚类。
三种常用构造方法
1. ε \varepsilon ε -邻域图 :如果 ∥ x i − x j ∥ < ε \|\mathbf{x}_i - \mathbf{x}_j\| < \varepsilon ∥ x i − x j ∥ < ε ,则连一条边。
2. k k k -近邻图(k k k -NN graph) :如果 x j \mathbf{x}_j x j 是 x i \mathbf{x}_i x i 的 k k k 个最近邻之一(或反过来),则连一条边。为了得到无向图,通常取”互为近邻”(mutual k-NN)或”至少一方是近邻”。
3. 全连接图 + 高斯权重 :所有节点对之间都有边,权重为高斯核:
w i j = exp ( − ∥ x i − x j ∥ 2 2 σ 2 ) w_{ij} = \exp\!\left(-\frac{\|\mathbf{x}_i - \mathbf{x}_j\|^2}{2\sigma^2}\right) w ij = exp ( − 2 σ 2 ∥ x i − x j ∥ 2 )
σ \sigma σ 是带宽参数,控制”多远算相似”。这与 Art. 20 Kernel 矩阵 中的 RBF kernel 完全一致——全连接图的邻接矩阵就是 kernel 矩阵。
与 Kernel 的联系 :谱聚类的第一步(构造相似度图)本质上就是在构造 kernel 矩阵。这解释了为什么谱聚类能处理非线性可分的数据——kernel 将数据映射到高维特征空间,谱聚类在这个空间中找到线性可分的结构。
Nystrom 近似:大图加速
Nystrom 近似:用 m 个锚点近似 n×n 矩阵 K_SS K_SR K_RS K_RR K (n×n) m n−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 × n n \times n n × n 的 Laplacian 矩阵做特征分解的时间复杂度是 O ( n 3 ) O(n^3) O ( n 3 ) ,空间复杂度是 O ( n 2 ) O(n^2) O ( n 2 ) (存储矩阵本身)。当 n n n 达到数万甚至数百万时(如社交网络、图像分割),这不可行。
Nystrom 方法
Nystrom 近似 (Williams & Seeger, 2001)提供了一种优雅的解决方案:从 n n n 个节点中随机采样 m ≪ n m \ll n m ≪ n 个”锚点”(landmark points),只计算锚点之间和锚点与其余点之间的相似度,然后用矩阵补全来近似整个 kernel 矩阵。
设 K ∈ R n × n K \in \mathbb{R}^{n \times n} K ∈ R n × n 是完整的 kernel 矩阵。将节点分为采样集 S S S (m m m 个)和剩余集 R R R (n − m n - m n − m 个),K K K 可以分块为:
K = [ K S S K S R K R S K R R ] K = \begin{bmatrix} K_{SS} & K_{SR} \\ K_{RS} & K_{RR} \end{bmatrix} K = [ K S S K R S K S R K R R ]
Nystrom 近似用 K S S K_{SS} K S S 和 K S R K_{SR} K S R 来近似 K R R K_{RR} K R R :
K ~ R R = K R S K S S − 1 K S R \tilde{K}_{RR} = K_{RS} K_{SS}^{-1} K_{SR} K ~ R R = K R S K S S − 1 K S R
近似的完整矩阵为:
K ~ = [ K S S K S R K R S K R S K S S − 1 K S R ] \tilde{K} = \begin{bmatrix} K_{SS} & K_{SR} \\ K_{RS} & K_{RS} K_{SS}^{-1} K_{SR} \end{bmatrix} K ~ = [ K S S K R S K S R K R S K S S − 1 K S R ]
时间复杂度从 O ( n 3 ) O(n^3) O ( n 3 ) 降到 O ( m 2 n ) O(m^2 n) O ( m 2 n ) ,当 m ≪ n m \ll n m ≪ n 时大幅加速。
注意 :Nystrom 近似的质量取决于采样点的代表性。均匀随机采样通常表现不错,但对于分布不均匀的数据,k-means++ 初始化或分层采样可能更好。
与其他方法的联系
谱聚类 vs. K-means
K-means 假设聚类是凸的球形 区域(因为它用欧氏距离)。谱聚类没有这个限制——它通过 Laplacian 特征向量做非线性映射,能处理任意形状的聚类。经典的”两个同心圆”数据,k-means 完全失败,而谱聚类轻松成功。
谱聚类 vs. PCA
PCA(Art. 6) 是对协方差矩阵 C = 1 n − 1 X ~ T X ~ C = \frac{1}{n-1}\tilde{X}^T\tilde{X} C = n − 1 1 X ~ T X ~ 的特征分解。谱聚类是对图 Laplacian L = D − A G L = D - A_G L = D − A G 的特征分解。两者都是”用特征向量做降维”,但作用的矩阵不同:
PCA 谱聚类 目标矩阵 协方差矩阵 C C C 图 Laplacian L L L 取的特征值 最大的 k k k 个最小的 k k k 个编码的信息 方差最大的方向 变化最缓慢的图信号 处理的结构 线性 非线性(通过图/kernel)
注意特征值的方向正好相反:PCA 取最大特征值(最大方差方向),谱聚类取最小特征值(最平滑的信号方向)。
图 Laplacian 与随机游走
L rw = I − D − 1 A G L_\text{rw} = I - D^{-1}A_G L rw = I − D − 1 A G 中的 P = D − 1 A G P = D^{-1}A_G P = D − 1 A G 就是图上随机游走的转移矩阵(Art. 19 随机游走 )。L rw L_\text{rw} L rw 的特征向量与 P P P 的特征向量相同(如果 P v = μ v P\mathbf{v} = \mu\mathbf{v} P v = μ v ,则 L rw v = ( 1 − μ ) v L_\text{rw}\mathbf{v} = (1-\mu)\mathbf{v} L rw v = ( 1 − μ ) v )。这意味着谱聚类和图上的随机游走本质上在看同一个结构 ——随机游走者倾向于被”困”在紧密连接的社区内,难以跨越稀疏的边界。
总结与展望
本文建立了图 Laplacian 的完整理论框架,从定义到谱聚类算法:
图 Laplacian L = D − A G L = D - A_G L = D − A G :离散 Laplace 算子的矩阵形式,衡量节点值与邻居的偏差
核心二次型 f T L f = 1 2 ∑ i , j ( A G ) i j ( f i − f j ) 2 \mathbf{f}^T L \mathbf{f} = \frac{1}{2}\sum_{i,j}(A_G)_{ij}(f_i - f_j)^2 f T L f = 2 1 ∑ i , j ( A G ) ij ( f i − f j ) 2 :度量信号在图上的总变化,保证 L L L 半正定
零特征值个数 = 连通分量数 :特征值直接编码图的全局拓扑
Fiedler 向量 (λ 2 \lambda_2 λ 2 对应特征向量):最优二分割的松弛解,按符号切割即得近似最优 RatioCut
谱聚类算法 :Laplacian 前 k k k 个特征向量 + k-means,能处理任意形状的聚类
Nystrom 近似 :采样 m ≪ n m \ll n m ≪ n 个锚点,将 O ( n 3 ) O(n^3) O ( n 3 ) 降到 O ( m 2 n ) O(m^2 n) O ( m 2 n )
图 Laplacian 的谱理论不仅是聚类的工具,更是理解图上信号处理 的基础。下一篇 ,我们将看到 Laplacian 如何驱动图上的信号扩散 ——每一次 Laplacian 平滑都让节点的值向邻居”靠拢”。图卷积网络(GCN)的每一层本质上就是一次归一化 Laplacian 平滑加上可学习的变换——消息传递(message passing)就是矩阵乘法 。从谱聚类到 GNN,同一个 Laplacian 矩阵贯穿始终。