- 前言
- 特征分解(又称谱分解、对角化)
- 奇异值分解SVD
- SVD的进一步理解
本篇开始学习记录矩阵分解内容。需要说明的是,目前我所触及的矩阵基本上没有出现复数域,因此所做的讨论都局限于实矩阵分析。
特征分解(又称谱分解、对角化)当n阶方阵 A A A具有n个线性无关的特征向量时,可以将 A A A特征分解为可逆矩阵与对角矩阵的乘积: A = P Λ P − 1 A=P\Lambda P^{-1} A=PΛP−1 其中, P P P是对应于 Λ \Lambda Λ主对角特征值的特征向量组。特征分解的方法可能不唯一。
此外,如果 A A A是实对称矩阵,则必然存在正交矩阵 Q Q Q使得 A = Q Λ Q T A=Q\Lambda Q^T A=QΛQT。
奇异值分解SVD特征分解不仅要求矩阵是方阵,而且方阵的线性无关的特征向量要与阶数相同。而数值计算中许多线性方程都不适定,矩阵行列数不一致。奇异值分解SVD弥补了这个缺陷。
对于任意矩阵 A ∈ R m × n A\in R^{m\times n} A∈Rm×n,都可以进行进行奇异值分解 A = U Σ V T A=U\Sigma V^T A=UΣVT,其中 U , V U,V U,V是正交矩阵, Σ \Sigma Σ是半正定对角矩阵,主对角元素包含大于0的奇异值和0。
奇异值 对于矩阵 A ∈ R m × n A\in R^{m\times n} A∈Rm×n,其奇异值是 A T A A^TA ATA的特征值的算术平方根 λ \sqrt{\lambda} λ ,通常将奇异值从大到小进行排列。
奇异值分解 由SVD式可得到 A T A A^TA ATA和 A A T AA^T AAT: A T A = V Σ T U T U Σ V T = V Σ 2 V T A A T = U Σ V T V Σ T U T = U Σ 2 U T A^TA=V\Sigma^TU^TU\Sigma V^T=V\Sigma^2V^T \\ AA^T = U\Sigma V^TV\Sigma^TU^T =U\Sigma^2U^T \\ ATA=VΣTUTUΣVT=VΣ2VTAAT=UΣVTVΣTUT=UΣ2UT 又 A T A , A A T A^TA,AA^T ATA,AAT都是n阶实对称矩阵,可以进行正交对角化,则 V , U V,U V,U实际上就是使 A T A , A A T A^TA,AA^T ATA,AAT正交对角化的正交矩阵。
SVD过程举例 A = [ 1 0 0 1 0 0 ] A T A = [ 2 0 0 0 0 0 0 0 0 ] λ = 2 , 0 , 0 , x 1 = ( 1 , 0 , 0 ) T , x 2 = ( 0 , 1 , 0 ) T , x 3 = ( 0 , 0 , 1 ) T A A T = [ 1 1 1 1 ] λ = 2 , 0 , x 1 = ( 2 / 2 , 2 / 2 ) , x 2 = ( − 2 / 2 , 2 / 2 ) U = [ 2 / 2 − 2 / 2 2 / 2 2 / 2 ] , V = [ 1 0 0 0 1 0 0 0 1 ] , Σ = [ 2 0 0 0 0 0 ] U Σ V T = [ 1 0 0 1 0 0 ] = A A=\begin{bmatrix} 1 & 0 & 0 \\ 1 & 0 & 0 \\ \end{bmatrix} \\ \quad \\ A^TA=\begin{bmatrix} 2 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix} \\ \quad \\ \lambda = 2,0,0,x_1=(1,0,0)^T,x_2=(0,1,0)^T,x_3=(0,0,1)^T \\ \quad \\ AA^T = \begin{bmatrix} 1 & 1 \\ 1 & 1 \\ \end{bmatrix} \\ \quad \\ \lambda=2,0,x_1=(\sqrt2/2,\sqrt2/2),x_2=(-\sqrt2/2,\sqrt2/2) \\ \quad \\ U=\begin{bmatrix} \sqrt2/2 & -\sqrt2/2 \\ \sqrt2/2 & \sqrt2/2 \\ \end{bmatrix}, V=\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix}, \Sigma=\begin{bmatrix} \sqrt2 & 0 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix} \\ \quad \\ U\Sigma V^T=\begin{bmatrix} 1 & 0 & 0 \\ 1 & 0 & 0 \\ \end{bmatrix} = A A=[110000]ATA=⎣⎡200000000⎦⎤λ=2,0,0,x1=(1,0,0)T,x2=(0,1,0)T,x3=(0,0,1)TAAT=[1111]λ=2,0,x1=(2 /2,2 /2),x2=(−2 /2,2 /2)U=[2 /22 /2−2 /22 /2],V=⎣⎡100010001⎦⎤,Σ=[2 00000]UΣVT=[110000]=A
SVD的进一步理解假设有一个矩阵 A ∈ R m × n A\in R^{m\times n} A∈Rm×n,对于线性变换有 A x = U Σ V T x , x ∈ R n 。 U , V Ax=U\Sigma V^Tx,x\in R^n。U,V Ax=UΣVTx,x∈Rn。U,V都是正交矩阵,因此可以看作两个单位正交基。
A x = U Σ V T x , x ∈ R n Ax=U\Sigma V^Tx,x\in R^n Ax=UΣVTx,x∈Rn,将 x x x视为在正交基 V V V上的线性组合,则 V T x V^Tx VTx表示对 x x x进行一次旋转,旋转的结果使得 x x x映射回到标准基上(如(1,0),(0,1)), Σ V T x \Sigma V^Tx ΣVTx表示将标准基的基向量进行比例伸缩, U Σ V T x U\Sigma V^Tx UΣVTx表示将比例伸缩后的基再旋转到新的方向上。
因此,SVD中, V T V^T VT表征了原正交基的旋转, U U U表征了新基的旋转,奇异值刻画了原正交基旋转后各个基方向的伸缩情况(也即每个基的重要程度)。