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 的回报。