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

回報:PCA、極分解與大數據

一切在此匯合。SVD 是主成分分析的引擎,把任意矩陣分解為旋轉乘以拉伸,並且——藉助隨機化——可擴展到大到無法裝入記憶體的矩陣。

PCA 不過是中心化資料的 SVD

經由 SVD 的主成分分析就是戴著統計學家帽子的 SVD。把資料矩陣 X 中心化(減去每列均值),取其 SVD X = U Sigma V^T,則右奇異向量 v_i 恰是主方向——方差最大的那些軸。這把卷一對 PCA 的看法磨利了。

沿 v_i 捕獲的方差為 sigma_i^2 / (N-1)。保留前 k 個方向就是一次截斷 SVD,故由 Eckart-Young 可證,它是資料的最佳 k 維概括。降維與最佳低秩逼近是同一條定理。

極分解:旋轉乘以拉伸

把 SVD 重新分組,第二個經典分解便隨之而出。極分解把 A 寫成 A = Q P,其中 Q = U V^T 是正交的(純旋轉/反射),P = V Sigma V^T 是對稱半正定的(純拉伸)。這是把複數寫成(單位相位)乘以(模長)的矩陣類比。

From A = U Sigma V^T, insert V^T V = I in the middle:

   A = U Sigma V^T = (U V^T)(V Sigma V^T) = Q P
        Q = U V^T          orthogonal     (rotation / reflection)
        P = V Sigma V^T    sym. pos. semidef. (stretch along principal axes)

Application: the orthogonal matrix CLOSEST to A (in Frobenius norm) is
   exactly  Q = U V^T.
This is how you 'snap' a drifted rotation matrix back to a true rotation
   in graphics, robotics, and orthogonal Procrustes alignment.
極分解把任意矩陣拆成旋轉 Q 與拉伸 P。

擴展規模:隨機化 SVD

在一個十億乘百萬的矩陣上,你負擔不起完整的 SVD——但你也很少需要它。若只有前 k 個奇異值要緊,隨機化 SVD 能快速找到它們。用一個小的隨機矩陣乘 A 以勾勒其主導值域,正交化,然後在這個草圖內做一次小型稠密 SVD。

  1. 抽取一個隨機的 n×(k+p) 矩陣 Omega(p 是小的過採樣餘量,比如 5-10)。
  2. 構造草圖 Y = A Omega;用 QR 把其列正交化得到 Q,滿足 Q^T Q = I。
  3. 投影:B = Q^T A 很小;廉價地取其 SVD B = U_B Sigma V^T。
  4. 提升回去:U = Q U_B。則 A 約等於 U Sigma V^T,其精度接近 Eckart-Young 最優。

從一個對每個矩陣僅僅*存在*的分解出發,我們抵達了推薦系統、圖像壓縮、潛在語義檢索、降噪以及無數機器學習流程內部降維背後的主力工具。一個分解——A = U Sigma V^T——而旋轉-拉伸-旋轉的圖景就支撐著這一切。這就是 SVD 的回報。