JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

圖拉普拉斯矩陣與譜聚類

把一張圖編碼成矩陣,取它的特徵向量,低頻的那些就揭示出社群。Fiedler 向量沿網路最薄弱的接縫把它幾乎一分為二。

描述一張圖的兩個矩陣

給 n 個節點編號。鄰接矩陣 A 在 i 與 j 相連時取 A[i,j] = 1(或邊權)。度矩陣 D 是對角陣,對角元是每個節點的總連接權重。圖拉普拉斯矩陣是 L = D - A。它看似樸素,但圖的幾何就藏在它的譜裡。

譜直接讀出連通性

由於 x^T L x 是平方和,L 是對稱半正定的,所以由譜定理其特徵值都是非負實數:0 = lambda_1 <= lambda_2 <= ... <= lambda_n。全 1 向量讓每條邊上的 x_i - x_j = 0,所以 lambda_1 = 0 總成立。一個漂亮的定理:零特徵值的個數等於連通分量的個數

因此若圖是一整塊,lambda_2 就是第一個非零特徵值。它的大小就是代數連通度:很小意味著圖幾乎是被一座細橋連起來的兩塊。它對應的特徵向量——Fiedler 向量——正指向那座橋的兩側。

用 Fiedler 向量切割圖

在保持 x 與全 1 向量正交且單位長度的前提下最小化 x^T L x,恰好是一個瑞利商問題,其解就是 Fiedler 向量。直觀上它給每個節點一個數,使相連的節點拿到相近的數——而最便宜的非常數分配方案正好沿著薄弱接縫把圖劈開。按它的符號取閾值,你就得到兩個簇。

# Two triangles joined by a single edge 3--4
#   nodes 1,2,3  fully connected ;  4,5,6 fully connected ;  edge 3-4
# Laplacian eigenvalues come out like:
#   0,  0.something (small!),  3, 3, 3, ...
# Fiedler vector v2 (the small one) looks like:
#   node:  1     2     3     4     5     6
#   v2 :  -.4   -.4   -.3   +.3   +.4   +.4
# sign split:  {1,2,3} | {4,5,6}   <- the obvious two communities
第二個特徵向量的符號給出了社群的歸屬。

譜聚類:不止兩個組

  1. 構造拉普拉斯矩陣 L(常用歸一化版本 D^{-1/2} L D^{-1/2})。
  2. 取最小的 k 個特徵值對應的特徵向量,按行堆成一個 n×k 矩陣。
  3. 現在每個節點成了 R^k 中的一個點;對這些點跑 k-means 得到 k 個簇。