本博客主要用于本人重新复习知识点,所有参考列在文尾。如有错误,希望一起交流。
目录
基础知识
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} A∈Rm×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,r≤min(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 A≈UkΣkVkT
应用:对数据进行压缩,将其近似表示,有损压缩。
5. 几何解释(线性变换的角度)
T : x ∈ R n → A x ∈ R m T:x \in \mathbb{R}^n \ \rightarrow \ Ax \in \mathbb{R}^m T:x∈Rn → Ax∈Rm 其中 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. 主要性质
只提几点,其他的见书。
- 设 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 的奇异值分解的矩阵表示。(可以用来求矩阵的奇异值分解) - 奇异值分解中,各部分关系: A V = U Σ AV = U \Sigma AV=UΣ,求奇异值分解 U U U 矩阵会用到。
- 奇异值 σ 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
参考
- 李航,统计机器学习方法(第二版),2019:271 - 292.
- 应用:https://www.zhihu.com/question/31167170
- python代码:https://blog.csdn.net/kbccs/article/details/82590032