每个矩阵都是旋转、拉伸再旋转 特征分解需要方阵,即使是方阵也可能失败。奇异值分解对任何矩阵(无论是否为长方形)都适用:A = U Σ V T A=U\Sigma V^{T} A = U Σ V T ,其中 U U U 和 V V V 为正交矩阵,Σ \Sigma Σ 为对角矩阵,元素非负 σ 1 ≥ σ 2 ≥ ⋯ ≥ 0 \sigma_1\ge\sigma_2\ge\cdots\ge0 σ 1 ≥ σ 2 ≥ ⋯ ≥ 0 ,即奇异值。几何上,A A A 先用 V T V^{T} V T 旋转,再把第 i i i 个坐标轴拉伸 σ i \sigma_i σ i 倍,最后用 U U U 旋转。单位圆变成半轴长恰为奇异值的椭圆。
A = U Σ V T , σ i = λ i ( A T A ) , ∥ A ∥ F 2 = ∑ i σ i 2 , κ ( A ) = σ 1 σ min A=U\Sigma V^{T},\qquad \sigma_i=\sqrt{\lambda_i(A^{T}A)},\qquad \lVert A\rVert_F^{2}=\sum_i\sigma_i^{2},\qquad \kappa(A)=\frac{\sigma_1}{\sigma_{\min}} A = U Σ V T , σ i = λ i ( A T A ) , ∥ A ∥ F 2 = i ∑ σ i 2 , κ ( A ) = σ m i n σ 1 (1) V V V 的列是 A T A A^{T}A A T A 的特征向量,U U U 的列是 A A T AA^{T} A A T 的特征向量,对应的特征值为 σ i 2 \sigma_i^2 σ i 2 。所以 SVD 就是对 A T A A^{T}A A T A 应用谱定理,但计算时从不真正构造这个乘积,因为那会把条件数平方并损失一半的有效数字。很容易读出各种事实:秩是非零奇异值的个数,∥ A ∥ 2 = σ 1 \lVert A\rVert_2=\sigma_1 ∥ A ∥ 2 = σ 1 是最大拉伸,Frobenius 范数的平方等于奇异值平方和,方阵有 ∣ det A ∣ = ∏ σ i |\det A|=\prod\sigma_i ∣ det A ∣ = ∏ σ i ,条件数 σ 1 / σ min \sigma_1/\sigma_{\min} σ 1 / σ m i n 衡量 A A A 能放大多少误差。对 m ≥ n m\ge n m ≥ n 的 m × n m\times n m × n 数据矩阵,完整的 U U U 是 m × m m\times m m × m ,Σ \Sigma Σ 是 m × n m\times n m × n ,V V V 是 n × n n\times n n × n 。
2×2 的例子 取
A = ( 3 0 4 5 ) A=\begin{pmatrix}3&0\\4&5\end{pmatrix} A = ( 3 4 0 5 ) 。
A T A = ( 25 20 20 25 ) A^{T}A=\begin{pmatrix}25&20\\20&25\end{pmatrix} A T A = ( 25 20 20 25 ) 的特征值为 45 和 5,所以奇异值为
σ 1 = 45 ≈ 6.708 \sigma_1=\sqrt{45}\approx6.708 σ 1 = 45 ≈ 6.708 ,
σ 2 = 5 ≈ 2.236 \sigma_2=\sqrt5\approx2.236 σ 2 = 5 ≈ 2.236 。校验:
σ 1 2 + σ 2 2 = 50 = 9 + 16 + 25 = ∥ A ∥ F 2 \sigma_1^2+\sigma_2^2=50=9+16+25=\lVert A\rVert_F^2 σ 1 2 + σ 2 2 = 50 = 9 + 16 + 25 = ∥ A ∥ F 2 ,
σ 1 σ 2 = 15 = ∣ det A ∣ \sigma_1\sigma_2=15=|\det A| σ 1 σ 2 = 15 = ∣ det A ∣ 。条件数为
σ 1 / σ 2 = 3 \sigma_1/\sigma_2=3 σ 1 / σ 2 = 3 。若
σ 2 \sigma_2 σ 2 是
0.001 0.001 0.001 ,条件数约为 6700,解
A x = b A\mathbf x=\mathbf b A x = b 会损失近四位有效数字。
SVD :每个矩阵都能写成 U Σ V T U\Sigma V^{T} U Σ V T ,U U U 、V V V 正交,奇异值非负且降序。事实 :秩等于非零 σ i \sigma_i σ i 的个数,∥ A ∥ F 2 = ∑ σ i 2 \lVert A\rVert_F^2=\sum\sigma_i^2 ∥ A ∥ F 2 = ∑ σ i 2 ,∣ det A ∣ = ∏ σ i |\det A|=\prod\sigma_i ∣ det A ∣ = ∏ σ i 。条件数 :σ 1 / σ min \sigma_1/\sigma_{\min} σ 1 / σ m i n ;数值大意味着求解不稳定、逆矩阵不可靠。从收益率到成分只需一次调用 若 X X X 是去均值后的 T × N T\times N T × N 收益矩阵,其协方差为 X T X / ( T − 1 ) X^{T}X/(T-1) X T X / ( T − 1 ) ,所以 X X X 的右奇异向量就是主方向,σ i 2 / ( T − 1 ) \sigma_i^2/(T-1) σ i 2 / ( T − 1 ) 是沿这些方向的方差。直接对 X X X 做 SVD 比对协方差矩阵做特征分解更精确,并且在 N > T N>T N > T 时也能工作。 实验:评分内容 最大奇异值 20 分 Frobenius 恒等式 10 分 奇异值之积 10 分 完整 SVD 的尺寸 15 分 奇异值与特征值 15 分 条件数 15 分 为什么不对 AᵀA 做特征分解 15 分