文章目录
一、特殊矩阵的基础知识
对角矩阵
( d i a g o n a l m a t r i x \mathrm{diagonal\quad matrix} diagonalmatrix):所有非对角线元素全等于零的 n n n阶矩阵。对角矩阵是一个方阵。对称矩阵
( s y m m e t r i c m a t r i x \mathrm{symmetric\quad matrix} symmetricmatrix):元素以主对角线为对称轴对应相等的矩阵。满足 A T = A A^T=A AT=A,对称矩阵是一个方阵。
对称阵总能相似对角化,对称阵不同特征值对应的特征向量两两正交。
证明
正交矩阵
- 定义:满足 A A T = E AA^T=E AAT=E或者 A T A = E A^TA=E ATA=E的 n n n阶矩阵 A A A,其中 E E E为 n n n阶单位矩阵。
- 定理1: A A A为 n n n阶正交矩阵的充要条件是 A A A的列(行)向量组为 R n R^n Rn的一组标准正交基。
- 定理2:设 A , B A,B A,B皆为 n n n阶正交矩阵,则
- ∣ A ∣ = 1 |A|=1 ∣A∣=1或 ∣ A ∣ = − 1 |A|=-1 ∣A∣=−1
- A T = A − 1 {\color{Blue}A^T=A^{-1}} AT=A−1(充要条件)
- A T A^T AT(即 A − 1 A^{-1} A−1)也是正交矩阵
- A B AB AB也是正交矩阵
- 定理3:方阵 A A A为正交矩阵的充要条件是 A A A的列(行)向量构成标准正交组。
- 对于任意矩阵
A
A
A,
A
T
A
A^TA
ATA为对称阵
证明: ( A T A ) T = A T ( A T ) T = A T A ({\color {Green}A^TA})^T=A^T(A^T)^T={\color {Brown}A^TA} (ATA)T=AT(AT)T=ATA
乘积的转置等于其本身,故为对称阵。 - 矩阵的本质是线性变换。
二、特征值分解(EigenValue Decomposition,EVD)
MATLAB中调用函数eig
1. 特征值和特征向量
设 A A A为 n n n阶矩阵,若存在数 λ \lambda λ和 n n n维非零向量 X X X,使得
A X = λ X ( x ≠ 0 ) AX=\lambda X \qquad (x≠0) AX=λX(x=0)
则称 λ \lambda λ是 A A A的一个特征值, X X X为 A A A的对应于特征值 λ \lambda λ的特征向量。
- 特征向量的代数含义是将矩阵乘法转换为数乘操作;
- 特征向量的几何含义是通过方阵 A A A变换只进行缩放,不改变方向。
2. 特征值分解
- 设矩阵
A
A
A有
n
n
n个特征值和特征向量,则
A X 1 = λ 1 X 1 A X 2 = λ 2 X 2 ⋯ A X n = λ n X n \begin{aligned} AX_1&=\lambda_1X_1 \\ AX_2&=\lambda_2X_2 \\ &\cdots \\ AX_n&=\lambda_nX_n\\ \end{aligned} AX1AX2AXn=λ1X1=λ2X2⋯=λnXn
将上述各式写成矩阵形式
A U = U Λ U = [ X 1 X 2 ⋯ X n ] n × n Λ = [ λ 1 λ 2 ⋱ λ n ] n × n AU= U\Lambda \\ \quad \\ U=[X_1\quad X_2 \quad \cdots \quad X_n]_{n×n}\\ \quad \\ \Lambda=\begin{bmatrix} \lambda_1 & \\ & \lambda_2 & \\ & & \ddots & \\ & & & \lambda_n \\ \end{bmatrix}_{n×n} AU=UΛU=[X1X2⋯Xn]n×nΛ=⎣⎢⎢⎡λ1λ2⋱λn⎦⎥⎥⎤n×n
那么
A = U Λ U − 1 A= U\Lambda U^{-1} A=UΛU−1
因此,方阵 A A A可以由其特征值和特征向量完全描述。 - 若矩阵
A
A
A为对称矩阵,则其特征向量两两正交,那么
U
U
U为正交矩阵,有
U
−
1
=
U
T
U^{-1}=U^T
U−1=UT,此时矩阵
A
A
A可以表示为
A = U Λ U − 1 = U Λ U T A= U\Lambda U^{-1}= U\Lambda U^T A=UΛU−1=UΛUT
特征值分解只适用于方阵,然而在实际应用中,大部分矩阵都不是方阵。而奇异值分解适用于任意矩阵。
三、奇异值分解(Singular Value Decomposition,SVD)
MATLAB中调用函数svd
考虑矩阵 A A A是一个m×n的普通矩阵,但是 A T A A^TA ATA是对称阵,因此可以根据EVD来分解 A T A A^TA ATA。
同样的,求出
A
T
A
A^TA
ATA的n个特征值
λ
1
,
λ
2
,
⋯
,
λ
n
\lambda_1,\lambda_2,\cdots,\lambda_n
λ1,λ2,⋯,λn
以及对应的特征向量
X
1
,
X
2
,
⋯
,
X
n
X_1,X_2,\cdots,X_n
X1,X2,⋯,Xn
那么有
A
T
A
X
1
=
λ
1
X
1
A
T
A
X
2
=
λ
2
X
2
⋯
A
T
A
X
n
=
λ
n
X
n
\begin{aligned} A^TAX_1&=\lambda_1X_1 \\ A^TAX_2&=\lambda_2X_2 \\ &\cdots \\ A^TAX_n&=\lambda_nX_n\\ \end{aligned}
ATAX1ATAX2ATAXn=λ1X1=λ2X2⋯=λnXn
此时用
V
V
V表示特征向量组成的矩阵,
V
V
V为正交阵
A
T
A
V
=
V
Λ
V
=
[
X
1
X
2
⋯
X
n
]
n
×
n
Λ
=
[
λ
1
λ
2
⋱
λ
n
]
n
×
n
A^TAV= V\Lambda \\ \quad \\ V=[X_1\quad X_2 \quad \cdots \quad X_n]_{n×n}\\ \quad \\ \Lambda=\begin{bmatrix} \lambda_1 & \\ & \lambda_2 & \\ & & \ddots & \\ & & & \lambda_n \\ \end{bmatrix}_{n×n}
ATAV=VΛV=[X1X2⋯Xn]n×nΛ=⎣⎢⎢⎡λ1λ2⋱λn⎦⎥⎥⎤n×n
那么
A
T
A
=
V
Λ
V
−
1
=
V
Λ
V
T
A^TA= V\Lambda V^{-1}= V\Lambda V^T
ATA=VΛV−1=VΛVT
SVD分解的精髓在于找到一组正交基,使得经过A变换后还是正交基。
分析我们找到这样的正交基:
V
=
[
v
1
,
v
2
,
⋯
,
v
n
]
V=[v_1,v_2,\cdots,v_n]
V=[v1,v2,⋯,vn]
则经过A变换后将这组基映射为:
[
A
v
1
,
A
v
2
,
⋯
,
A
v
n
]
[Av_1,Av_2,\cdots,Av_n]
[Av1,Av2,⋯,Avn]
要使变换后也为正交基,即两两正交:
因为两个列向量的点积可以表示为一个行向量乘以一个列向量,所以有
A
v
i
⋅
A
v
j
=
(
A
v
i
)
T
A
v
j
=
v
i
T
A
T
A
v
j
=
v
i
T
λ
j
v
j
=
λ
j
v
i
T
v
j
=
λ
j
v
i
⋅
v
j
=
0
Av_i\cdot Av_j=(Av_i)^TAv_j=v_i^TA^TAv_j=v_i^T\lambda_jv_j=\lambda_jv_i^Tv_j=\lambda_jv_i\cdot v_j=0
Avi⋅Avj=(Avi)TAvj=viTATAvj=viTλjvj=λjviTvj=λjvi⋅vj=0(0为向量)
由此可知,我们找到的正交基使其经过矩阵 A A A映射后还是正交基。
将映射后的正交基单位化
因为
A
v
i
⋅
A
v
i
=
(
A
v
i
)
T
A
v
i
=
v
i
T
A
T
A
v
i
=
v
i
T
λ
i
v
i
=
λ
i
v
i
⋅
v
i
=
λ
i
Av_i\cdot Av_i=(Av_i)^TAv_i=v_i^TA^TAv_i=v_i^T\lambda_iv_i=\lambda_iv_i\cdot v_i=\lambda_i
Avi⋅Avi=(Avi)TAvi=viTATAvi=viTλivi=λivi⋅vi=λi
所以有
∣
A
v
i
∣
2
=
λ
i
≥
0
|Av_i|^2=\lambda_i≥0
∣Avi∣2=λi≥0
取单位向量
u
i
=
A
v
i
∣
A
v
i
∣
=
1
λ
i
A
v
i
u_i=\frac{Av_i}{|Av_i|}=\frac{1}{\sqrt{\lambda_i}}Av_i
ui=∣Avi∣Avi=λi1Avi
令
λ
i
=
σ
i
\sqrt{\lambda_i}=\sigma_i
λi=σi(奇异值)
A
v
i
=
u
i
σ
i
Av_i=u_i\sigma_i
Avi=uiσi
由此得到矩阵
A
A
A的奇异值分解
A
=
U
Σ
V
T
A=U\Sigma V^T
A=UΣVT
U
U
U是m×m的正交阵,
V
V
V是n×n的正交阵,
Σ
\Sigma
Σ是m×n的矩阵,对角线上的值叫作
A
A
A的奇异值。
-
v i v_i vi为 A T A A^TA ATA的特征向量,称为 A A A的右奇异向量, u i u_i ui为 A A T AA^T AAT的特征向量,称为 A A A的左奇异向量。
-
U U U的列由 A A T AA^T AAT单位化后的特征向量构成
-
V V V的列由 A T A A^TA ATA单位化后的特征向量构成
-
Σ \Sigma Σ的对角元素来源于 A A T AA^T AAT或 A T A A^TA ATA的特征值的平方根,并且是按从大到小的顺序排列的
-
下面证明 V V V是 A T A A^TA ATA的特征向量, U U U是 A A T AA^T AAT的特征向量
A = U Σ V T A T = V Σ T U T A T A = V Σ T U T U Σ V T = V Σ 2 V T = V Λ V T A A T = U Σ V T V Σ T U T = U Σ 2 U T = U Λ U T \begin{aligned} A&=U\Sigma V^T \\ A^T&=V\Sigma^TU^T \\ A^TA=V\Sigma^TU^T&U\Sigma V^T=V\Sigma^2V^T=V\Lambda V^T \\ AA^T=U\Sigma V^T&V\Sigma^TU^T= U\Sigma^2U^T=U\Lambda U^T \end{aligned} AATATA=VΣTUTAAT=UΣVT=UΣVT=VΣTUTUΣVT=VΣ2VT=VΛVTVΣTUT=UΣ2UT=UΛUT -
求解SVD的步骤
- 求 A A T AA^T AAT的特征值和特征向量,用单位化的特征向量构成 U U U
- 求 A T A A^TA ATA的特征值和特征向量,用单位化的特征向量构成 V V V
- 将 A A T AA^T AAT或 A T A A^TA ATA的特征值求平方根,然后构成 Σ \Sigma Σ
四、特征值分解和奇异值分解的区别
奇异值分解
A
=
U
Σ
V
T
A=U\Sigma V^T
A=UΣVT
A
A
A矩阵的作用是将一个向量从
V
V
V这组正交基向量的空间旋转到
U
U
U这组正交基向量空间,并且按照
Σ
\Sigma
Σ在各个方向进行了一定的缩放,缩放因子就是各个奇异值。如果
V
V
V列向量的维度比
U
U
U大,则表示还进行了投影。
特征值分解
A
=
U
Λ
U
T
A= U\Lambda U^T
A=UΛUT
A
A
A矩阵的作用是在求出的两两正交的特征向量这组基上进行缩放。
特征值用来描述方阵,可看做是从一个空间到自身的映射,奇异值可以描述任意矩阵,可看做是从一个空间到另一个空间的映射。
- 特征值分解是针对可对角化方阵而言,而奇异值分解更通用,对于任意形状的矩阵都可以进行分解。
- 特征值分解表明,矩阵与某一个向量相乘,该向量仅发生缩放变换,不对向量产生旋转的效果,伸缩的比例就是特征值;奇异值分解表明,将 A A A矩阵右乘一个向量后,相当于对该向量从 V V V这组单位正交基旋转到了 U U U这组新的单位正交基,不仅发生了旋转,而且有相应的缩放,缩放因子就是奇异值。(本质区别)