Singular Values Decomposition 奇异值分解(SVD)
Singular Values Decomposition 奇异值分解(SVD)
1. Significance 意义
SVD也是对矩阵进行分解,但是和特征分解不同,SVD并不要求要分解的矩阵为方阵。
2. SVD Conception 奇异值分解思想
奇异值分解(SVD)是特征分解的延伸与拓展。因为特征分解只能对方阵进行分解,所以我们把一般矩阵转化成方阵,再对方阵进行特征分解,最后整理一下分解的结果,归纳出一般矩阵的奇异值分解形式。
甚至可以把奇异值理解为特征值的一般形式,特征值为奇异值的方阵形式。
3. Matrix SVD Exression 矩阵奇异值分解形式
A = U Σ V T A=UΣV^T A=UΣVT
其中
U
U
U是一个
m
×
m
m×m
m×m的左奇异矩阵,
V
V
V是一个
n
×
n
n×n
n×n的右奇异矩阵,
U
U
U和
V
V
V都是正交矩阵,即满足
U
T
U
=
I
U^TU=I
UTU=I,
V
T
V
=
I
V^TV=I
VTV=I。
Σ
Σ
Σ是一个
m
×
n
m×n
m×n的奇异值矩阵,并且是一个对角矩阵,除了主对角线上的元素以外全为0,即满足
Σ
T
Σ
=
Σ
Σ
T
=
Σ
2
Σ^TΣ=ΣΣ^T=Σ^2
ΣTΣ=ΣΣT=Σ2,主对角线上的每个元素都称为奇异值,下图可以很形象的看出上面SVD的定义:
4. SVD Derivation 奇异值分解推导
4.1 The Derivation of Right Singular Matrix V V V 右奇异矩阵V的推导
我们将矩阵 A A A的转置和矩阵 A A A本身做矩阵乘法,就会得到 n × n n×n n×n的一个方阵 A T A A^TA ATA(这里要注意矩阵乘法的顺序是 A T A A^TA ATA,而不是 A A T AA^T AAT,如果你没注意到这个点,可以看完文章之后再来回顾)。既然 A T A A^TA ATA是方阵,那么我们就可以进行特征分解,得到的特征值和特征向量满足下式:
( A T A ) v i = λ i v i (A^TA)v_i=λ_iv_i (ATA)vi=λivi
这样我们就可以得到矩阵 A T A A^TA ATA的 n n n个特征值和对应的 n n n个特征向量 v v v了。将矩阵 A T A A^TA ATA的所有特征向量张成一个 n × n n×n n×n的特征矩阵 V V V,就是我们矩阵 A A A的SVD分解形式的右奇异矩阵 V V V。一般我们将右奇异矩阵 V V V中的每个特征向量 v v v叫做矩阵 A A A的右奇异向量。
这个问题如果没注意到,也是要回顾。
问:为什么矩阵 A T A A^TA ATA的特征矩阵 V V V就是矩阵 A A A的SVD分解形式的右奇异矩阵 V V V呢?证明思路:
- 先证明矩阵 A A A的SVD分解形式的右奇异矩阵 V V V就是矩阵 A T A A^TA ATA的特征矩阵 V V V。
- 再推出矩阵 A T A A^TA ATA的特征分解形式的特征矩阵 V V V就是矩阵 A A A的SVD分解形式的右奇异矩阵 V V V
证明:
如果矩阵 V V V是矩阵矩阵 A A A的SVD分解形式的右奇异矩阵,则矩阵 V V V满足
A = U Σ V T A=UΣV^T A=UΣVT
对矩阵 A A A转置得
A T = V Σ T U T A^T=VΣ^TU^T AT=VΣTUT
于是
A T A = V Σ T U T U Σ V T = V Σ T Σ V T = V Σ 2 V T A^TA=V\varSigma ^TU^TU\varSigma V^T \\ =V\varSigma ^T\varSigma V^T \\ =V\varSigma ^2V^T ATA=VΣTUTUΣVT=VΣTΣVT=VΣ2VT
这就是特征分解的形式 A = V Σ V T A=V\varSigma V^T A=VΣVT,矩阵 A T A A^TA ATA对应的特征值矩阵为 Σ 2 \varSigma ^2 Σ2。所以,矩阵 A A A的SVD分解形式的右奇异矩阵 V V V就是矩阵 A T A A^TA ATA的特征矩阵 V V V。
如果矩阵 V V V是矩阵 A T A A^TA ATA的特征矩阵,假设对应的特征值矩阵是 Σ 2 \varSigma ^2 Σ2(这种形式对角矩阵是可以实现的),以及一个正交矩阵 U U U,则可以推出
A T A = V Σ T U T U Σ V T ⇓ A = U Σ V T A^TA=V\varSigma ^TU^TU\varSigma V^T \\ \Downarrow \\ A=UΣV^T ATA=VΣTUTUΣVT⇓A=UΣVT
所以,矩阵 A T A A^TA ATA的特征矩阵 V V V就是矩阵 A A A的SVD分解形式的右奇异矩阵 V V V
4.1 The Derivation of Right Singular Matrix U U U 左奇异矩阵U的推导
左奇异矩阵 U U U的推导类似于右奇异矩阵 V V V的推导。
我们将矩阵 A A A本身和矩阵 A A A的转置做矩阵乘法,就会得到 n × n n×n n×n的一个方阵 A A T AA^T AAT。既然 A A T AA^T AAT方阵,那么我们就可以进行特征分解,得到的特征值和特征向量满足下式:
( A A T ) u i = λ i u i (AA^T)u_i=λ_iu_i (AAT)ui=λiui
这样我们就可以得到矩阵 A A T AA^T AAT的 n n n个特征值和对应的 n n n个特征向量 u u u了。将矩阵 A A T AA^T AAT的所有特征向量张成一个 n × n n×n n×n的特征矩阵 U U U,就是我们矩阵 A A A的SVD分解形式的左奇异矩阵 U U U。一般我们将左奇异矩阵 U U U中的每个特征向量 u u u叫做矩阵 A A A的左奇异向量。
4.3 The Derivation of Matrix Σ Σ Σ 奇异值矩阵Σ的推导
4.3.1 方法一
A = U Σ V T ⇓ A V = U Σ ⇓ A v i = u i σ i ⇓ σ i = A v i u i A=UΣV^T \\ \Downarrow \\ AV=UΣ \\ \Downarrow \\ Av_i=u_i \sigma_i \\ \Downarrow \\ \sigma_i = \frac{Av_i}{u_i} A=UΣVT⇓AV=UΣ⇓Avi=uiσi⇓σi=uiAvi
其中,最中间的步骤,由矩阵变化成向量的形式,是通过矩阵计算过程得到的,可以找个例子,实际计算一下。
用这个方法,可以直接算出奇异值矩阵 Σ Σ Σ的所有奇异值 σ i \sigma_i σi。
4.3.2 方法二
根据上面的证明,存在这样的关系
A T A = V Σ 2 V T A^TA=V\varSigma ^2V^T ATA=VΣ2VT
可以看出矩阵 A T A A^TA ATA特征值矩阵 Σ 2 \varSigma ^2 Σ2等于矩阵 A A A奇异值矩阵 Σ \varSigma Σ的平方,也就是说特征值和奇异值满足如下关系:
σ i = λ i \sigma_i=\sqrt{λ_i} σi=λi
用这个方法,可以先计算矩阵 A T A A^TA ATA的特征值 λ i λ_i λi,在计算矩阵 A A A奇异值 σ i \sigma_i σi
5. Conclusion 小结
- SVD的计算用计算机计算就可以了,更重要的是理解它的原理。
- SVD的缺点是分解出的矩阵解释性不强。