奇异值分解(SVD)原理详解及推导
特征值分解(EVD)
现在假设存在
m
×
m
m\times m
m×m 的满秩矩阵
A
A
A,它有
m
m
m个不同的特征值:
A
x
1
=
λ
1
x
1
A
x
2
=
λ
2
x
2
…
A
x
m
=
λ
m
x
m
\begin{aligned} A x_{1} &=\lambda_{1} x_{1} \\ A x_{2} &=\lambda_{2} x_{2} \\ & \ldots \\ A x_{m} &=\lambda_{m} x_{m} \end{aligned}
Ax1Ax2Axm=λ1x1=λ2x2…=λmxm
记为
A
U
=
U
Λ
A U=U \Lambda
AU=UΛ
其中
U
=
[
x
1
x
2
⋯
x
m
]
Λ
=
[
λ
1
⋯
0
⋮
⋱
⋮
0
⋯
λ
m
]
U=\left[\begin{array}{ccc} x_{1} & x_{2} & \cdots & x_{m} \end{array}\right] \\ \Lambda=\left[\begin{array}{ccc} \lambda_{1} & \cdots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \cdots & \lambda_{m} \end{array}\right] \\
U=[x1x2⋯xm]Λ=⎣⎢⎡λ1⋮0⋯⋱⋯0⋮λm⎦⎥⎤
所以可定义
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
由于对称阵特征向量两两正交,所以U为正交阵。一般我们会把这 n n n 个特征向量标准化,即满足 || x i ∣ ∣ 2 = 1 , x_{i}||_{2}=1, xi∣∣2=1, 或者说 x i T x i = 1 , x_{i}^{T} x_{i}=1, xiTxi=1, 此时 A A A的 n n n 个特征向量为标准正交基, , , , 满足 U T U = I U^{T} U=I UTU=I 即 U T = U − 1 , U^{T}=U^{-1}, UT=U−1, 也就是说 U U U 为酉矩阵。
总结一下, A A A 可以将一组正交基映射到另一组正交基,那么现在来分析:对任意 m × n m\times n m×n的矩阵,能否找到一组正交基使得经过它变换后还是正交基?答案是肯定的,它就是SVD分解的精髓所在。
奇异值分解(SVD)
特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的。奇异值分解是一个能适用于任意的矩阵的一种分解的方法。假设我们的矩阵A是一个
m
×
n
m\times n
m×n的矩阵,那么我们定义矩阵A的SVD为:
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_{n\times n}^{T}
Am×n=Um×mΣm×nVn×nT
其中 U U U 是一个 m × m m \times m m×m 的矩阵, Σ \Sigma Σ是一个 m × n m \times n m×n 的矩阵, 除了主对角线上的元素以外全为0, 主对角线上的每个元素都称为奇异值, V是一个 n × n n \times n n×n 的矩阵。U和V都是酉矩阵, 即满足 U T U = I , V T V = I 0 U^{T} U=I, V^{T} V=I_{0} UTU=I,VTV=I0
那么找们如何求出SVD分解后的
U
,
Σ
,
V
U, \Sigma, V
U,Σ,V这三个矩阵呢?
如果我们将A的转置和
A
A
A做矩阵乘法, 那么会得到
n
×
n
n \times n
n×n 的一个方阵
A
T
A
A^{T} A
ATA。 显然
A
T
A
A^{T} A
ATA 是方阵, 那么我们就可以进行特征分解,得到的特征值和特征向量满足下式:
( A T A ) v i = λ i v i \left(A^{T} A\right) v_{i}=\lambda_{i} v_{i} (ATA)vi=λivi
这样我们就可以得到矩阵
A
T
A
A^{T} A
ATA 的n个特征值和对应的
n
n
n个特征向量
v
v
v 了。将
A
T
A
A^{T} A
ATA 的所有特征向量张成一个
n
×
n
n \times n
n×n,的矩阵
V
V
V。同理 矩阵
A
A
T
A A^{T}
AAT 的
n
n
n个归一化的特征值和对应的n个特征向量满足:
(
A
A
T
)
u
i
=
λ
i
u
i
\left(A A^{T}\right) u_{i}=\lambda_{i} u_{i}
(AAT)ui=λiui
将
A
A
T
AA ^{T}
AAT 的所有归一化的特征向量张成一个
m
×
m
m \times m
m×m 的矩阵
U
U
U。
U
U
U和
V
V
V我们都求出来了,现在就剩下奇异值矩阵
Σ
\Sigma
Σ没有求出了。由于
Σ
\Sigma
Σ除了对角线上是奇异值其他位置都是0,那我们只需要求出每个奇异值
σ
\sigma
σ就可以了。
A
=
U
Σ
V
T
⇒
A
V
=
U
Σ
V
T
V
A=U \Sigma V^{T} \Rightarrow A V=U \Sigma V^{T} V
A=UΣVT⇒AV=UΣVTV
⇒
A
V
=
U
Σ
\Rightarrow A V=U \Sigma
⇒AV=UΣ
即:
A
[
v
1
,
v
2
,
⋯
,
v
k
∣
v
k
+
1
,
⋯
,
v
n
]
=
[
u
1
,
u
2
,
⋯
u
k
,
∣
u
k
+
1
,
⋯
u
m
]
[
σ
1
⋱
0
σ
k
0
0
]
\operatorname{A}\left[v_{1}, v_{2}, \cdots ,v_{k} | v_{k+1}, \cdots ,v_{n}\right]=\left[u_{1}, u_{2}, \cdots u_{k}, | u_{k+1}, \cdots u_{m}\right]\left[ \begin{array}{ccc|c} \sigma_{1} & & & \\ & \ddots & & 0 \\ & & \sigma_{k} & \\ \hline & 0 & & 0 \end{array} \right]
A[v1,v2,⋯,vk∣vk+1,⋯,vn]=[u1,u2,⋯uk,∣uk+1,⋯um]⎣⎢⎢⎡σ1⋱0σk00⎦⎥⎥⎤
其中
k
=
R
a
n
k
(
A
)
k=Rank(A)
k=Rank(A)。
根据
A
v
i
=
σ
i
u
i
A v_{i}=\sigma_{i} u_{i}
Avi=σiui 我们可以求出我们的每个奇异值,进而求出奇异值矩阵
Σ
\Sigma
Σ。
下面证明
U
,
V
U,V
U,V求法的正确性,已
V
V
V为例:
A
=
U
Σ
V
T
⇒
A
T
=
V
Σ
T
U
T
⇒
A
T
A
=
V
Σ
T
U
T
U
Σ
V
T
=
V
Σ
2
V
T
A=U \Sigma V^{T} \Rightarrow A^{T}=V \Sigma^{T} U^{T} \Rightarrow A^{T} A=V \Sigma^{T} U^{T} U \Sigma V^{T}=V \Sigma^{2} V^{T}
A=UΣVT⇒AT=VΣTUT⇒ATA=VΣTUTUΣVT=VΣ2VT
可以看出
A
T
A
A^{T} A
ATA 的特征向量组成的的确就是我们SVD中的
V
V
V矩阵。
进一步我们还可以看出我们的特征值矩阵
V
V
V等于奇异值矩阵
Σ
\Sigma
Σ的平方,所以特征值和奇异值满足:
σ
i
=
λ
i
\sigma_{i}=\sqrt{\lambda_{i}}
σi=λi
所以也可以通过求出
A
T
A^{T}
AT A的特征值取平方根来求奇异值。
设
X
=
[
u
1
⋯
u
k
]
[
σ
1
⋱
σ
k
]
=
[
σ
1
u
1
⋯
σ
k
u
k
]
,
Y
=
[
v
1
T
⋮
v
k
T
]
X=\left[\begin{array}{lll} u_{1} & \cdots & u_{k} \end{array}\right]\left[\begin{array}{ccc} \sigma_{1} & & \\ & \ddots & \\ & & \sigma_{k} \end{array}\right]=\left[\begin{array}{lll} \sigma_{1} u_{1} & \cdots & \sigma_{k} u_{k} \end{array}\right], Y=\left[\begin{array}{c} v_{1}^{T} \\ \vdots \\ v_{k}^{T} \end{array}\right]
X=[u1⋯uk]⎣⎡σ1⋱σk⎦⎤=[σ1u1⋯σkuk],Y=⎣⎢⎡v1T⋮vkT⎦⎥⎤
则
A
=
X
Y
A=XY
A=XY即是
A
A
A的满秩分解。
在矩阵
Σ
\Sigma
Σ 中也是从大到小排列,而且
σ
\sigma
σ 的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:
A
m
×
n
≈
U
m
×
r
Σ
r
×
r
V
r
×
n
T
A_{m \times n} \approx U_{m \times r} \Sigma_{r \times r} V_{r \times n}^{T}
Am×n≈Um×rΣr×rVr×nT
参考:
- https://www.cnblogs.com/pinard/p/6251584.html
- https://blog.csdn.net/zhongkejingwang/article/details/43053513