统计学习方法03-15 奇异值分解 (SVD)

本博客主要用于本人重新复习知识点,所有参考列在文尾。如有错误,希望一起交流。

基础知识

1. 奇异值分解

矩阵的 (完全) 奇异值分解: A = U Σ V T A = U \Sigma V^T A=UΣVT

其中 A A A m × n m \times n m×n 实矩阵; U U U V V V 为正交矩阵; Σ \Sigma Σ 为由降序排列的、非负的、对角线元素组成的 对角矩阵。

正交矩阵: U U T = I UU^T = I UUT=I
对角矩阵: Σ = d i a g ( σ 1 , . . . , σ p ) \Sigma = diag(\sigma_1,...,\sigma_p) Σ=diag(σ1,...,σp)

注意:A不要求是方阵,矩阵的奇异值分解可以看作是方阵对角化的推广。


2. 奇异值分解基本定理

任意给定一个实矩阵,其奇异值分解一定存在。 由下面的定理保证。

Thm A A A 为一 m × n m \times n m×n 实矩阵, A ∈ R m × n A \in R^{m \times n} ARm×n,则 存在A的奇异值分解 A = U Σ V T A=U \Sigma V^T A=UΣVT,其中 U U U m m m 阶正交矩阵, V V V n n n 阶正交矩阵, Σ \Sigma Σ m × n m \times n m×n 矩阵,其对角线元素非负,且按降序排列。

证明可以用书上的构造法,也可以用数学归纳法等等。


3. 紧奇异值分解

矩阵 A A A m × n m \times n m×n 实矩阵, r a n k ( A ) = r , r ≤ min ⁡ ( m , n ) rank(A)=r, r \le \min(m,n) rank(A)=r,rmin(m,n)

A A A 的紧奇异值分解: A = U r Σ r V r T A = U_r \Sigma_r V_r^T A=UrΣrVrT

  • U r U_r Ur ( m × r m \times r m×r) 完全奇异值分解中U的前r列
  • V r V_r Vr ( m × r m \times r m×r) 完全奇异值分解中V的前r列
  • Σ r \Sigma_r Σr ( r × r r \times r r×r) 完全奇异值分解中 Σ \Sigma Σ的前r个对角元素
  • r a n k ( Σ r ) = r a n k ( A ) rank(\Sigma_r) = rank(A) rank(Σr)=rank(A)

应用:对数据进行压缩,将其近似表示,无损压缩。


4. 截断奇异值分解

实际应用中常用的:只取最大的 k k k 个奇异值 ( k < r k<r k<r) 对应的部分。

A A A 的截断奇异值分解: A ≈ U k Σ k V k T A \approx U_k \Sigma_k V_k^T AUkΣkVkT

应用:对数据进行压缩,将其近似表示,有损压缩。


5. 几何解释(线性变换的角度)

T : x ∈ R n   →   A x ∈ R m T:x \in \mathbb{R}^n \ \rightarrow \ Ax \in \mathbb{R}^m T:xRn  AxRm 其中 A A A 表示从 R n \mathbb{R}^n Rn R m \mathbb{R}^m Rm 的一个线性变换,该线性变换可以分解为三个简单的变换(奇异值定理保证这种分解一定存在): A = U Σ V T A = U \Sigma V^T A=UΣVT

  • U U U V V V:坐标系的旋转或者反射变换。原因: V V V n n n 维空间的正交矩阵, V = [ v 1 , v 2 , . . . , v n ] V=[v_1,v_2,...,v_n] V=[v1,v2,...,vn] v 1 , v 2 , . . . , v n v_1,v_2,...,v_n v1,v2,...,vn 构成 R n \mathbb{R}^n Rn 中的一组标准正交基。表示 R n \mathbb{R}^n Rn 中的正交坐标系的旋转或者反射变换。
  • Σ \Sigma Σ:坐标轴的反射变换。原因:对角元素 σ 1 , . . . , σ p \sigma_1,...,\sigma_p σ1,...,σp 是非负实数,表示 R n \mathbb{R}^n Rn 中的原始正交坐标系坐标轴的 σ 1 , . . . , σ p \sigma_1,...,\sigma_p σ1,...,σp 倍缩放变换。

6. 主要性质

只提几点,其他的见书。

  1. A = U Σ V T A = U\Sigma V^T A=UΣVT,则有:
    A T A = ( U Σ V T ) T ( U Σ V T ) = V ( Σ T Σ ) V T A^TA = (U\Sigma V^T)^T(U\Sigma V^T) =V(\Sigma^T \Sigma)V^T ATA=(UΣVT)T(UΣVT)=V(ΣTΣ)VT A A T = ( U Σ V T ) ( U Σ V T ) T = U ( Σ Σ T ) U T AA^T = (U\Sigma V^T)(U\Sigma V^T)^T=U(\Sigma\Sigma^T)U^T AAT=(UΣVT)(UΣVT)T=U(ΣΣT)UT表示 A T A A^TA ATA A A T AA^T AAT 的特征分解存在,且可以由 A A A 的奇异值分解的矩阵表示。(可以用来求矩阵的奇异值分解)
  2. 奇异值分解中,各部分关系: A V = U Σ AV = U \Sigma AV=UΣ,求奇异值分解 U U U 矩阵会用到。
  3. 奇异值 σ 1 , . . . , σ n \sigma_1,...,\sigma_n σ1,...,σn 是唯一的,另外两个矩阵不唯一。

7. 奇异值分解的计算

主要通过求对称矩阵 A T A A^TA ATA 的特征值和特征向量得到。该计算过程只为了说明计算过程,并不是实际应用中的算法。实际应用的奇异值分解算法是通过 A T A A^TA ATA 的特征值进行,但不直接计算 A T A A^TA ATA


8. 矩阵的最优近似

关于矩阵近似,本节SVD是其中的一种方法,它是在平方损失(佛罗贝尼乌斯范数, F F F 范数)意义下对矩阵的最优近似,即数据压缩。


如何定义矩阵 X X X是矩阵 A A A F F F 范数下的最优近似 ==> 定理15.2


如何通过矩阵 A A A 的奇异值分解求出近似矩阵 X X X

  • 定理保证 ==> 15.3
  • 利用 A A A 的外积展开可以求得X
    A = U Σ V T = ( U Σ ) ( V T ) = [ σ 1 u 1    σ 2 u 2    . . .    σ n u n   ] [ v 1 T    v 2 T    . . .    v n T ] T = σ 1 u 1 v 1 T + . . . + σ n u n v n T \begin{aligned} A &= U \Sigma V^T \\ &= (U \Sigma)(V^T) \\ &=[\sigma_1 u_1 \ \ \sigma_2 u_2 \ \ ... \ \ \sigma_n u_n \ ] [v_1^T \ \ v_2^T \ \ ... \ \ v_n^T]^T \\ &= \sigma_1 u_1v_1^T + ... + \sigma_n u_nv_n^T \end{aligned} A=UΣVT=(UΣ)(VT)=[σ1u1  σ2u2  ...  σnun ][v1T  v2T  ...  vnT]T=σ1u1v1T+...+σnunvnT一般的,设矩阵 A k = σ 1 u 1 v 1 T + . . . + σ k u k v k T A_k = \sigma_1 u_1v_1^T + ... + \sigma_k u_k v_k^T Ak=σ1u1v1T+...+σkukvkT A k A_k Ak 的秩为 k k k,且它是在秩为 k k k 的矩阵中在 F F F 范数意义下 A A A 的最有近似矩阵。( A k A_k Ak就是 A A A 的截断奇异值分解)。由于通常奇异值 σ i \sigma_i σi 递减很快,所以 k 取很小值时, A k A_k Ak A A A 有很好的近似。

应用

后面章节继续补充

  • PCA
  • 图像去噪
  • 推荐系统
  • 由SLAM对极约束里的本质矩阵求得相机姿态变化

Python 实现

Python 中可以使用numpy 包的 linalg.svd() 来求解 SVD


参考

  1. 李航,统计机器学习方法(第二版),2019:271 - 292.
  2. 应用:https://www.zhihu.com/question/31167170
  3. python代码:https://blog.csdn.net/kbccs/article/details/82590032

猜你喜欢

转载自blog.csdn.net/sanctuary03/article/details/114746016