矩阵分析之 实矩阵分解(1)特征分解与奇异值分解
前言
本篇开始学习记录矩阵分解内容。需要说明的是,目前我所触及的矩阵基本上没有出现复数域,因此所做的讨论都局限于实矩阵分析。
特征分解(又称谱分解、对角化)
当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⎦⎤,Σ=[200000]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表征了新基的旋转,奇异值刻画了原正交基旋转后各个基方向的伸缩情况(也即每个基的重要程度)。