简介
- 奇异值分解(singular value decomposition,SVD)是一种矩阵因子分解方法,是线性代数的概念,但在统计学习中被广泛使用,成为其重要工具。本书介绍的主成分分析、潜在语义分析都用到奇异值分解。
- 任意一个m x n矩阵,都可以表示为三个矩阵的乘积(因子分解)形式,分别是m阶正交矩阵、由降序排列的非负的对角线元素组成的m x n矩形对角矩阵和n阶正交矩阵,称为该矩阵的奇异值分解。矩阵的奇异值分解一定存在,但不唯一。奇异值分解可以看作是矩阵数据压缩的一种方法,即用因子分解的方式近似地表示原始矩阵,这种近似是在平方损失意义下的最优近似。
定义与性质
定义与定理
- 定义 (奇异值分解) 矩阵的奇异值分解是指,将一个非零的 m × n m \times n m×n实矩阵 A , A ∈ R m × n A,A ∈R_{m×n} A,A∈Rm×n,表示为以下三个实矩阵乘积形式的运算,即进行矩阵的因子分解:
- A = U Σ V T A=U\Sigma V^T A=UΣVT
- 其中 U U U是 m m m阶正交矩阵(orthogonal matrix ), V V V是 n n n 阶正交矩阵,又是由降序排列的非负的对角线元素组成的 m × n m \times n m×n矩形对角矩阵(rectangular diagonal matrix),满足
- U U T = I UU^T=I UUT=I
- V V T = I VV^T=I VVT=I
- Σ = d i a g ( σ 1 , σ 2 , . . . , σ p ) \Sigma=diag(\sigma_1,\sigma_2,...,\sigma_p) Σ=diag(σ1,σ2,...,σp)
- σ 1 ≥ σ 2 ≥ . . . ≥ σ p ≥ 0 \sigma_1\ge\sigma_2\ge...\ge\sigma_p\ge0 σ1≥σ2≥...≥σp≥0
- p = m i n ( m , n ) p=min(m,n) p=min(m,n)
- U Σ V T U\Sigma V^T UΣVT称为矩阵A的奇异值分解( singular value decomposition,SVD ), σ i \sigma_i σi称为矩阵A的奇异值( singular value ), U U U的列向量称为左奇异向量(left singular vector ), V V V的列向量称为右奇异向量( right singular vector )。
- 注意:奇异值分解不要求矩阵A是方阵,事实上矩阵的奇异值分解可以看作是方阵的对角化的推广。
- 例如,给定一个 5 × 4 5\times4 5×4的矩阵 A A A
A = [ 1 0 0 0 0 0 0 4 0 3 0 0 0 0 0 0 2 0 0 0 ] A = \begin{bmatrix} 1&0&0&0 \\ 0&0&0&4 \\0&3&0&0 \\0&0&0&0 \\2&0&0&0 \end{bmatrix} A=⎣⎢⎢⎢⎢⎡10002003000000004000⎦⎥⎥⎥⎥⎤- 它的奇异值分解由三个矩阵的乘积 U Σ V T U\Sigma V^T UΣVT给出,矩阵 U , Σ , V T U,\Sigma ,V^T U,Σ,VT分别为
U = [ 0 0 0.2 0 0.8 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0.8 0 − 0.2 ] U = \begin{bmatrix} 0&0&\sqrt{0.2}&0&\sqrt{0.8} \\ 1&0&0&0&0 \\0&1&0&0&0 \\0&0&0&1&0 \\0&0&\sqrt{0.8}&0&-\sqrt{0.2}\end{bmatrix} U=⎣⎢⎢⎢⎢⎡01000001000.20000.8000100.8000−0.2⎦⎥⎥⎥⎥⎤
Σ = [ 4 0 0 0 0 3 0 0 0 0 5 0 0 0 0 0 0 0 0 0 ] \Sigma=\begin{bmatrix} 4&0&0&0 \\ 0&3&0&0 \\0&0&\sqrt{5}&0 \\0&0&0&0 \\0&0&0&0 \end{bmatrix} Σ=⎣⎢⎢⎢⎢⎡40000030000050000000⎦⎥⎥⎥⎥⎤
V T = [ 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 ] V^T=\begin{bmatrix} 0&0&0&1 \\ 0&1&0&0 \\1&0&0&0 \\0&0&1&0 \end{bmatrix} VT=⎣⎢⎢⎡0010010000011000⎦⎥⎥⎤- 矩阵 Σ \Sigma Σ是对角矩阵,对角线外的元素都是0,对角线上的元素非负,按降序排列。矩阵 U U U和 V V V是正交矩阵,它们与各自的转置矩阵相乘是单位矩阵,即
U U T = I 5 UU^T=I_5 UUT=I5, V V T = I 4 VV^T=I_4 VVT=I4- 矩阵的奇异值分解不是唯一的。矩阵 U U U还可以为
U = [ 0 0 0.2 0.4 0.8 1 0 0 0 0 0 1 0 0 0 0 0 0 0.5 0.5 0 0 0.8 − 0.1 − 0.1 ] U = \begin{bmatrix} 0&0&\sqrt{0.2}&\sqrt{0.4}&\sqrt{0.8} \\ 1&0&0&0&0 \\0&1&0&0&0 \\0&0&0&\sqrt{0.5}&\sqrt{0.5} \\0&0&\sqrt{0.8}&-\sqrt{0.1}&-\sqrt{0.1}\end{bmatrix} U=⎣⎢⎢⎢⎢⎡01000001000.20000.80.4000.5−0.10.8000.5−0.1⎦⎥⎥⎥⎥⎤- 满足 A m × n = U m × m Σ m × n V n × n T A_{m\times n}=U_{m\times m}\Sigma_{m\times n}V^T_{n\times n} Am×n=Um×mΣm×nVn×nT
- 基本定理:任意给定一个实矩阵,其奇异值分解一定存在
紧奇异值分解与截断奇异值分解
- A = U Σ V T A=U\Sigma V^T A=UΣVT又称为矩阵的完全奇异值分解(full singular value decomposition)。
- 实际常用的是奇异值分解的紧凑形式和截断形式。
- 紧奇异值分解是与原始矩阵等秩的奇异值分解
- 截断奇异值分解是比原始矩阵低秩的奇异值分解。
- 矩阵的秩-百度百科
紧奇异值分解
定义
设有 m × n m × n m×n实矩阵A,其秩为 r a n k ( A ) = T , r ≤ m i n ( m , n ) rank(A) = T,r ≤min(m, n) rank(A)=T,r≤min(m,n),则称 U r Σ r V r T U_r\Sigma_r V^T_r UrΣrVrT为 A A A的紧奇异值分解(compact singular value decomposition),即
- A = U r Σ r V r T A=U_r\Sigma_r V^T_r A=UrΣrVrT
- 其中, U r U_r Ur是 m × r m ×r m×r矩阵, V r V_r Vr是 n × r n ×r n×r矩阵, Σ r \Sigma_r Σr是 r r r阶对角矩阵;矩阵 U r U_r Ur由完全奇异值分解中 U U U的前 r r r列、矩阵 V V V由 V V V的前 r r r列、矩阵 Σ r \Sigma_r Σr由 Σ \Sigma Σ的前 r r r个对角线元素得到。紧奇异值分解的对角矩阵 Σ r \Sigma_r Σr的秩与原始矩阵 A A A的秩相等。
- 例如,给定一个矩阵 A A A的秩为 r = 3 r=3 r=3
A = [ 1 0 0 0 0 0 0 4 0 3 0 0 0 0 0 0 2 0 0 0 ] A = \begin{bmatrix} 1&0&0&0 \\ 0&0&0&4 \\0&3&0&0 \\0&0&0&0 \\2&0&0&0 \end{bmatrix} A=⎣⎢⎢⎢⎢⎡10002003000000004000⎦⎥⎥⎥⎥⎤- A的紧奇异值分解是 A = U r Σ r V r T A=U_r\Sigma_r V^T_r A=UrΣrVrT
- 其中
U r = [ 0 0 0.2 1 0 0 0 1 0 0 0 0 0 0 0.8 ] U_r = \begin{bmatrix} 0&0&\sqrt{0.2} \\ 1&0&0 \\0&1&0\\0&0&0 \\0&0&\sqrt{0.8}\end{bmatrix} Ur=⎣⎢⎢⎢⎢⎡01000001000.20000.8⎦⎥⎥⎥⎥⎤
Σ r = [ 4 0 0 0 3 0 0 0 5 ] \Sigma_r=\begin{bmatrix} 4&0&0 \\ 0&3&0\\0&0&\sqrt{5} \end{bmatrix} Σr=⎣⎡400030005⎦⎤
V r T = [ 0 0 0 1 0 1 0 0 1 0 0 0 ] V^T_r=\begin{bmatrix} 0&0&0&1 \\ 0&1&0&0 \\1&0&0&0\end{bmatrix} VrT=⎣⎡001010000100⎦⎤- 满足 A m × n = U m × r Σ r × r V r × n T A_{m\times n}=U_{m\times r}\Sigma_{r\times r}V^T_{r\times n} Am×n=Um×rΣr×rVr×nT,其中 r r r表示矩阵 A A A的秩
截断奇异值分解
在矩阵的奇异值分解中,只取最大的 k k k个奇异值( k < r , r k<r,r k<r,r为矩阵的秩)对应的部分,就得到矩阵的截断奇异值分解。实际应用中提到矩阵的奇异值分解时,通常指截断奇异值分解。
定义
设 A A A为 m x n m x n mxn实矩阵,其秩 r a n k ( A ) = r rank(A)= r rank(A)=r,且 0 < k < r 0<k<r 0<k<r,则称 U k Σ k V k T U_k\Sigma_kV^T_k UkΣkVkT为矩阵 A A A的截断奇异值分解( truncated singular value decomposition)
- A ≈ U k Σ k V k T A \approx U_k\Sigma_kV^T_k A≈UkΣkVkT
- 其中 U k U_k Uk是 m × k m × k m×k矩阵, V k V_k Vk是 n × k n × k n×k矩阵, Σ k \Sigma_k Σk是 k k k阶对角矩阵;矩阵 U k U_k Uk由完全奇异值分解中 U U U的前 k k k列、矩阵 V V V由 V V V的前 k k k列、矩阵由 Σ k \Sigma_k Σk的前 k k k个对角线元素得到。对角矩阵 Σ k \Sigma_k Σk的秩比原始矩阵A的秩低。
- 例如,给出一个矩阵 A A A
A = [ 1 0 0 0 0 0 0 4 0 3 0 0 0 0 0 0 2 0 0 0 ] A = \begin{bmatrix} 1&0&0&0 \\ 0&0&0&4 \\0&3&0&0 \\0&0&0&0 \\2&0&0&0 \end{bmatrix} A=⎣⎢⎢⎢⎢⎡10002003000000004000⎦⎥⎥⎥⎥⎤- A A A的秩为3,若取 k = 2 k=2 k=2则其截断奇异值分解是 A ≈ A 2 = U 2 Σ 2 V 2 T A\approx A_2=U_2\Sigma_2 V^T_2 A≈A2=U2Σ2V2T
- 其中
U 2 = [ 0 0 1 0 0 1 0 0 0 0 ] U_2 = \begin{bmatrix} 0&0 \\ 1&0 \\0&1\\0&0 \\0&0\end{bmatrix} U2=⎣⎢⎢⎢⎢⎡0100000100⎦⎥⎥⎥⎥⎤
Σ 2 = [ 4 0 0 3 ] \Sigma_2=\begin{bmatrix} 4&0 \\ 0&3\end{bmatrix} Σ2=[4003]
V 2 T = [ 0 0 0 1 0 1 0 0 ] V^T_2=\begin{bmatrix} 0&0&0&1 \\ 0&1&0&0 \end{bmatrix} V2T=[00010010]
A 2 = U 2 Σ 2 V 2 T = [ 0 0 0 0 0 0 0 4 0 3 0 0 0 0 0 0 0 0 0 0 ] A_2=U_2\Sigma_2 V^T_2= \begin{bmatrix} 0&0&0&0 \\ 0&0&0&4 \\0&3&0&0 \\0&0&0&0 \\0&0&0&0 \end{bmatrix} A2=U2Σ2V2T=⎣⎢⎢⎢⎢⎡00000003000000004000⎦⎥⎥⎥⎥⎤- 满足 A m × k = U m × k Σ k × k V k × n T A_{m\times k}=U_{m\times k}\Sigma_{k\times k}V^T_{k\times n} Am×k=Um×kΣk×kVk×nT, 0 < k < r 0<k<r 0<k<r,其中, r r r表示矩阵 A A A的秩
几何意义

- 从线性变换的角度理解奇异值分解, m × n m \times n m×n矩阵 A A A表示从 n n n维空间 R n R^n Rn到 m m m维空间 R m R^m Rm的一个线性变换,
- T : x → A x T:x\to Ax T:x→Ax
- x ∈ R n , A x ∈ R m x∈R^n,Ax ∈ R^m x∈Rn,Ax∈Rm, x x x和 A x Ax Ax分别是各自空间的向量。线性变换可以分解为三个简单的变换:一个坐标系的旋转或反射变换( V T V^T VT)、一个坐标轴的缩放变换( Σ \Sigma Σ)、另一个坐标系的旋转或反射变换( U U U)。奇异值定理保证这种分解一定存在。这就是奇异值分解的几何解释。
- 任意一个向量 x ∈ R n x ∈ R^n x∈Rn,经过基于 A = U Σ V T A=U\Sigma V^T A=UΣVT的线性变换,等价于经过坐标系的旋转或反射变换 V T V^T VT,坐标轴的缩放变换 Σ \Sigma Σ,以及坐标系的旋转或反射变换 U U U,得到向量 A x ∈ R m Ax ∈ R^m Ax∈Rm。
- 上图给出直观的几何解释。原始空间的标准正交基(红色与黄色),经过坐标系的旋转变换 V T V^T VT、坐标轴的缩放变换 Σ \Sigma Σ(黑色 σ 1 , σ 2 \sigma_1,\sigma_2 σ1,σ2)、坐标系的旋转变换 U U U,得到和经过线性变换 A A A等价的结果。
- 例如,给定一个2阶矩阵
A = [ 3 1 2 1 ] A=\begin{bmatrix} 3&1 \\ 2&1 \end{bmatrix} A=[3211]- 其奇异值分解为
U = [ 0.8174 − 0.5760 0.5760 0.8174 ] , Σ = [ 3.8643 0 0 0.2588 ] , V T = [ 0.9327 0.3606 − 0.3606 0.9327 ] U=\begin{bmatrix} 0.8174&-0.5760 \\ 0.5760 &0.8174\end{bmatrix},\Sigma=\begin{bmatrix} 3.8643&0 \\ 0 &0.2588\end{bmatrix},V^T=\begin{bmatrix} 0.9327&0.3606 \\ -0.3606&0.9327\end{bmatrix} U=[0.81740.5760−0.57600.8174],Σ=[3.8643000.2588],VT=[0.9327−0.36060.36060.9327]- 观察基于矩阵 A A A的奇异值分解将 R 2 R^2 R2的标准正交基
e 1 = [ 1 0 ] , e 2 = [ 0 1 ] e_1=\begin{bmatrix} 1 \\ 0\end{bmatrix},e_2=\begin{bmatrix} 0 \\ 1\end{bmatrix} e1=[10],e2=[01]- 进行线性转换的情况。
- 首先, V T V^T VT表示一个旋转变换,将标准正交基 e 1 , e 2 e_1,e_2 e1,e2旋转,得到向量 V T e 1 , V T e 2 V^Te_1,V^Te_2 VTe1,VTe2:
V T e 1 = [ 0.9327 − 0.3606 ] , V T e 2 = [ 0.3606 0.9327 ] V^Te_1=\begin{bmatrix} 0.9327\\ -0.3606\end{bmatrix},V^Te_2=\begin{bmatrix} 0.3606\\0.9327\end{bmatrix} VTe1=[0.9327−0.3606],VTe2=[0.36060.9327]- 其次, Σ \Sigma Σ表示一个缩放变换,将向量 V T e 1 , V T e 2 V^Te_1,V^Te_2 VTe1,VTe2在坐标轴方向缩放 σ 1 \sigma_1 σ1倍和 σ 2 \sigma_2 σ2倍,得到向量 Σ V T e 1 , Σ V T e 2 \Sigma V^Te_1,\Sigma V^Te_2 ΣVTe1,ΣVTe2:
Σ V T e 1 = [ 3.6042 − 0.0933 ] , Σ V T e 2 = [ 1.3935 0.2414 ] \Sigma V^Te_1=\begin{bmatrix} 3.6042\\-0.0933\end{bmatrix},\Sigma V^Te_2=\begin{bmatrix} 1.3935\\ 0.2414\end{bmatrix} ΣVTe1=[3.6042−0.0933],ΣVTe2=[1.39350.2414]- 最后, U U U表示一个旋转变换,再将向量 Σ V T e 1 , Σ V T e 2 \Sigma V^Te_1,\Sigma V^Te_2 ΣVTe1,ΣVTe2旋转,得到向量 U Σ V T e 1 , U Σ V T e 2 U\Sigma V^Te_1,U\Sigma V^Te_2 UΣVTe1,UΣVTe2,也就是向量 A e 1 和 A e 2 Ae_1和Ae_2 Ae1和Ae2:
A e 1 = [ 3 2 ] , A e 2 = [ 1 1 ] Ae_1=\begin{bmatrix} 3\\ 2\end{bmatrix},Ae_2=\begin{bmatrix} 1\\ 1\end{bmatrix} Ae1=[32],Ae2=[11]- 综上,矩阵的奇异值分解也可以看作是将其对应的线性变换分解为旋转变换、缩放变换及旋转变换的组合。经验证,这个变换的组合一定存在。
奇异值分解的计算
- 奇异值分解基本定理证明的过程蕴含了奇异值分解的计算方法。矩阵A的奇异值分解可以通过求对称矩阵 A T A A^TA ATA的特征值和特征向量得到。 A T A A^TA ATA的特征向量构成正交矩阵 V V V的列; A T A A^TA ATA的特征值 λ j \lambda_j λj的平方根为奇异值 σ i \sigma_i σi,即
- σ j = λ j , j = 1 , 2 , . . . , n \sigma_j=\sqrt{\lambda_j},j=1,2,...,n σj=λj,j=1,2,...,n
- 对其由大到小排列作为对角线元素,构成对角矩阵 Σ \Sigma Σ;求正奇异值对应的左奇异向量,再求扩充的 A T A^T AT的标准正交基,构成正交矩阵 U U U的列。从而得到 A A A的奇异值分解 A = U Σ V T A=U\Sigma V^T A=UΣVT
计算过程
给定 m × n m \times n m×n矩阵 A A A,可以按照上面的叙述写出矩阵奇异值分解的计算过程。
-
首先求 A T A A^TA ATA的特征值和特征向量。
计算对称矩阵 W = A T A W=A^TA W=ATA
求解特征方程 ( W − λ I ) x = 0 (W-\lambda I)x=0 (W−λI)x=0
得到特征值 λ i \lambda_i λi,并将特征值由大到小排列 λ 1 ≥ λ 2 ≥ . . . ≥ λ n ≥ 0 \lambda_1\ge\lambda_2\ge...\ge\lambda_n\ge0 λ1≥λ2≥...≥λn≥0
将特征值 λ i ( i = 1 , 2 , … , n ) \lambda_i(i= 1,2,… ,n) λi(i=1,2,…,n)代入特征方程求得对应的特征向量。 -
求 n n n阶正交矩阵 V V V
将特征向量单位化,得到单位特征向量 v 1 , v 2 , … , v n v_1,v_2,… ,v_n v1,v2,…,vn, n n n阶正交矩阵 V V V:
V = [ v 1 v 2 … v n ] V=\begin{bmatrix} v_1&v_2& … & v_n\end{bmatrix} V=[v1v2…vn] -
求 m × n m\times n m×n对角矩阵 Σ \Sigma Σ
计算 A A A的奇异值 σ j = λ j , j = 1 , 2 , . . . , n \sigma_j=\sqrt{\lambda_j},j=1,2,...,n σj=λj,j=1,2,...,n
构造 m × n m\times n m×n矩形对角矩阵 Σ \Sigma Σ,主对角线元素是奇异值,其余元素是零,
Σ = d i a g ( σ 1 , σ 2 , . . . , σ n ) \Sigma=diag(\sigma_1,\sigma_2,...,\sigma_n) Σ=diag(σ1,σ2,...,σn) -
求 m m m阶正交矩阵 U U U
对 A A A的前 r r r个正奇异值,令 u j = 1 σ j A v j , j = 1 , 2 , . . . , r u_j=\frac{1}{\sigma_j}Av_j,j=1,2,...,r uj=σj1Avj,j=1,2,...,r
得到 U 1 = [ u 1 u 2 … u r ] U_1=\begin{bmatrix} u_1&u_2& … & u_r\end{bmatrix} U1=[u1u2…ur]
求 A T A^T AT的零空间的一组标准正交基{ u r + 1 , u r + 2 , . . . , u m , u_{r+1},u_{r+2},...,u_{m}, ur+1,ur+2,...,um,},令
U 2 = [ u r + 1 u r + 2 . . . u m ] U_2=\begin{bmatrix} u_{r+1}&u_{r+2}&...&u_{m}\end{bmatrix} U2=[ur+1ur+2...um]
并令 U = [ U 1 U 2 ] U=\begin{bmatrix} U_1&U_2\end{bmatrix} U=[U1U2] -
得到奇异值分解 A = U Σ V T A=U\Sigma V^T A=UΣVT
例:求矩阵 A = [ 1 1 2 2 0 0 ] A=\begin{bmatrix}1&1\\2&2\\0&0\end{bmatrix} A=⎣⎡120120⎦⎤的奇异值分解。
解:
- 求 A T A A^TA ATA的特征值和特征向量
A T A = [ 1 2 0 1 2 0 ] [ 1 1 2 2 0 0 ] = [ 5 5 5 5 ] A^TA=\begin{bmatrix}1&2&0\\1&2&0\end{bmatrix}\begin{bmatrix}1&1\\2&2\\0&0\end{bmatrix}=\begin{bmatrix}5&5\\5&5\end{bmatrix} ATA=[112200]⎣⎡120120⎦⎤=[5555]
特征值 λ \lambda λ和特征向量 x x x满足特征方程 ( A T A − λ I ) x = 0 (A^TA-\lambda I)x=0 (ATA−λI)x=0
得到齐次线性方程组
{ ( 5 − λ ) x 1 + 5 x 2 = 0 5 x 1 + ( 5 − λ ) x 2 = 0 \begin{cases}(5-\lambda)x_1+5x_2=0\\ 5x_1+(5-\lambda)x_2=0\end{cases} {(5−λ)x1+5x2=05x1+(5−λ)x2=0
该方程组有非零解的充要条件是
∣ 5 − λ 5 5 5 − λ ∣ = 0 \left |\begin{array}{cccc} 5-\lambda&5 \\ 5&5-\lambda \\ \end{array}\right|=0 ∣∣∣∣5−λ555−λ∣∣∣∣=0
即 λ 2 − 10 λ = 0 \lambda_2-10\lambda=0 λ2−10λ=0
解此方程,得矩阵 A T A A^TA ATA的特征值 λ 1 = 10 , λ 2 = 0 \lambda_1=10,\lambda_2=0 λ1=10,λ2=0。
将特征值 λ 1 = 10 , λ 2 = 0 \lambda_1=10,\lambda_2=0 λ1=10,λ2=0分别代入线性方程组,得到相对应的单位特征向量 v 1 = [ 1 2 1 2 ] , v 2 = [ 1 2 − 1 2 ] v_1=\begin{bmatrix}\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}\end{bmatrix},v_2=\begin{bmatrix}\frac{1}{\sqrt{2}}\\-\frac{1}{\sqrt{2}}\end{bmatrix} v1=[2121],v2=[21−21]- 求正交矩阵 V V V
构造正交矩阵 V V V
V = [ 1 2 1 2 1 2 − 1 2 ] V=\begin{bmatrix}\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}}\end{bmatrix} V=[212121−21]- 求对角矩阵 Σ \Sigma Σ
奇异值为 σ 1 = λ 1 = 10 \sigma_1=\sqrt{\lambda_1}=\sqrt{10} σ1=λ1=10和 σ 2 = 0 \sigma_2=0 σ2=0。
构造对角矩阵 Σ = [ 10 0 0 0 0 0 ] \Sigma=\begin{bmatrix}\sqrt{10}&0\\0&0\\0&0\end{bmatrix} Σ=⎣⎡1000000⎦⎤
注意:在 Σ \Sigma Σ中要加上零行向量,使得 Σ \Sigma Σ能够与 U , V U,V U,V进行矩阵乘法运算。- 求正交矩阵 U U U
基于 A A A的正奇异值计算得到列向量 u 1 u_1 u1
u 1 = 1 σ 1 A v 1 = 1 10 [ 1 1 2 2 0 0 ] [ 1 2 1 2 ] = [ 1 5 2 5 0 ] u_1=\frac{1}{\sigma_1}Av_1=\frac{1}{\sqrt{10}}\begin{bmatrix}1&1\\2&2\\0&0\end{bmatrix}\begin{bmatrix}\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}\end{bmatrix}=\begin{bmatrix}\frac{1}{\sqrt{5}} \\ \frac{2}{\sqrt{5}}\\0\end{bmatrix} u1=σ11Av1=101⎣⎡120120⎦⎤[2121]=⎣⎡51520⎦⎤
列向量 u 2 , u 3 u_2,u_3 u2,u3是 A T A^T AT的零空间 N ( A T ) N(A^T) N(AT)的一组标准正交基。为此,求解以方程组
A T x = [ 1 2 0 1 2 0 ] [ x 1 x 2 x 3 ] = [ 0 0 ] A^Tx=\begin{bmatrix}1&2&0\\1&2&0\end{bmatrix}\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}=\begin{bmatrix}0\\0\end{bmatrix} ATx=[112200]⎣⎡x1x2x3⎦⎤=[00]
即 x 1 + 2 x 2 + 0 x 3 = 0 x_1+2x_2+0x_3=0 x1+2x2+0x3=0得 x 1 = − 2 x 2 + 0 x 3 x_1=-2x_2+0x_3 x1=−2x2+0x3
分别取 ( x 2 , x 3 ) (x_2,x_3) (x2,x3)为 ( 1 , 0 ) 和 ( 0 , 1 ) (1,0)和(0,1) (1,0)和(0,1)得到 N ( A T ) N(A^T) N(AT)的基 ( − 2 , 1 , 0 ) T , ( 0 , 0 , 1 ) T (-2,1,0)^T,(0,0,1)^T (−2,1,0)T,(0,0,1)T
N ( A T ) N(A^T) N(AT)的一组标准正交基是 u 2 = ( − 2 5 , 1 5 , 0 ) T , u 3 = ( 0 , 0 , 1 ) T u_2=( -\frac{2}{\sqrt{5}}, \frac{1}{\sqrt{5}},0)^T,u_3=(0,0,1)^T u2=(−52,51,0)T,u3=(0,0,1)T
构造正交矩阵 U U U
U = [ 1 5 − 2 5 0 2 5 1 5 0 0 0 1 ] U=\begin{bmatrix}\frac{1}{\sqrt{5}}&-\frac{2}{\sqrt{5}}&0\\\frac{2}{\sqrt{5}}&\frac{1}{\sqrt{5}}&0\\0&0&1\end{bmatrix} U=⎣⎡51520−52510001⎦⎤- 矩阵 A A A的奇异值分解
A = U Σ V T = [ 1 5 − 2 5 0 2 5 1 5 0 0 0 1 ] [ 10 0 0 0 0 0 ] [ 1 2 1 2 1 2 − 1 2 ] A=U\Sigma V^T=\begin{bmatrix}\frac{1}{\sqrt{5}}&-\frac{2}{\sqrt{5}}&0\\\frac{2}{\sqrt{5}}&\frac{1}{\sqrt{5}}&0\\0&0&1\end{bmatrix}\begin{bmatrix}\sqrt{10}&0\\0&0\\0&0\end{bmatrix}\begin{bmatrix}\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}}\end{bmatrix} A=UΣVT=⎣⎡51520−52510001⎦⎤⎣⎡1000000⎦⎤[212121−21]
Python Numpy实现奇异值分解
import numpy as np
# 奇异值分解SVD
A = np.mat([[1,1], [2,2],[0,0]])
print("A:",A)
U,Sigma,V_T = np.linalg.svd(A)
print("U:\n",U)
print("Sigma:\n",Sigma)
print("V_T:\n",V_T)
# 还原
Sigma_3x2 = np.mat([Sigma,[0,0],[0,0]])
print("Sigma_3x2:\n",Sigma_3x2)
A_restore = U * Sigma_3x2 * V_T
print("A_restore:\n",A_restore)
输出结果

参考文献
[1] 李航.统计学习方法(第二版)[M], 清华大学出版社, 2019.ISBN 978-7-302-51727-6
本文介绍了奇异值分解(SVD),它是线性代数概念,在统计学习中广泛应用。文中阐述了SVD的定义、性质,包括紧奇异值分解和截断奇异值分解,说明了其几何意义,给出了计算方法,并通过Python Numpy实现,还给出了具体示例。
2596

被折叠的 条评论
为什么被折叠?



