继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【Math for ML】矩阵分解(Matrix Decompositions) (下)

HUX布斯
关注TA
已关注
手记 306
粉丝 84
获赞 378

【Math for ML】矩阵分解(Matrix Decompositions) (上)

I. 奇异值分解(Singular Value Decomposition)

1. 定义

Singular Value Decomposition (SVD)是线性代数中十分重要的矩阵分解方法,被称为“线性代数的基本理论”,因为它不仅可以运用于所有矩阵(不像特征值分解只能用于方阵),而且奇异值总是存在的。

  • SVD定理

    设一个矩阵Am×nAm×n的秩为r∈[0,min(m,n)]r∈[0,min(m,n)],矩阵AA的奇异值分解形式如下:

    A=UΣVT(1.1.1)(1.1.1)A=UΣVT


    https://img4.mukewang.com/5c1e554700011c5207530251.jpg
    其中U∈Rm×mU∈Rm×m是一个正交矩阵(即列向量ui,i=1,...,mui,i=1,...,m互相正交),V∈Rn×nV∈Rn×n也是一个正交矩阵(即列向量vi,i=1,...,nvi,i=1,...,n互相正交),ΣΣ是一个m×nm×n的矩阵,且满足

    Σii=σi≥0Σij=0,i≠jΣii=σi≥0Σij=0,i≠j


上面的σiσi称为奇异值(singular values),uiui称为左奇异值(left-singular values),vivi称为右奇异值(right-singular values)。另外通常默认有σ1≥...≥σr≥0σ1≥...≥σr≥0。

注意:矩阵AA是一个长方形矩阵,不一定是方阵,另外ΣΣ和矩阵AA的维度相同,并且其包含一个对角子矩阵(diagonal submatrix)。

2. 图解SVD

对于奇异值分解可以从两个角度进行理解:一是将SVD视为对基向量组(bases),即坐标系的一顺序变换,二是将SVD视为对于数据点的变换。

一般来说要让矩阵AA作用于另一个矩阵,都是左乘AA,所以由公式(1)可知道首先是VTVT,然后是ΣΣ,最后是矩阵UU变换。所以矩阵AA的变换实际上是经过了三个步骤,如下图所示(为方便理解使用了二维和三维图像进行说明):

https://img4.mukewang.com/5c1e55510001515307940717.jpg

假设左上角的单位圆是在RnRn空间,其标准基用B=[v1,v2]B=[v1,v2]表示。左下角的圆也在RnRn空间里,其标准基用B~=[e1,e2]B~=[e1,e2]表示,右下角的圆在RmRm空间里,其标准基用C~C~表示。右上角的圆在RmRm空间里。

  • 由左上角到左下角:可以很清楚的看到VT∈Rn×nVT∈Rn×n的作用是对最开始的坐标轴(或标准基)(BB)还原成canonical basis(B~B~)。所以VTVT的作用是将坐标轴由BB转变成B~B~。

  • 由左下角到右下角:经过ΣΣ矩阵变换后从RnRn空间转换到了RmRm空间。上图是从二维空间变成了三维空间,即增加了z轴。当然维度也可以减少。此外单位圆还是处在[e1,e2][e1,e2]空间内(即x,yx,y轴组成的空间内),而且还会根据奇异值的大小做相应比例的伸缩。

  • 右下角到右上角: 矩阵UU继续对[e1,e2][e1,e2]基做变换,增加的那个维度(z轴)方向不做变化。

下图更加形象地展示了奇异值分解的作用,变换过程和上面一样,故不再赘述:

https://img4.mukewang.com/5c1e555b000162c405730566.jpg

3. SVD计算

本小节内容不证明SVD的存在性。

在介绍SVD如何计算之前,首先回顾一下【Math for ML】矩阵分解(Matrix Decompositions) (下)中介绍过任何对称矩阵都能对角化,其公式如下:

S=ST=PDPTS=ST=PDPT


所以一个对称矩阵的奇异值分解是十分相似的,即

S=UΣVTS=UΣVT


对比之后可知有U=P,V=P,Σ=DU=P,V=P,Σ=D


另外我们还需要知道的是对于任意矩阵A∈Rm×nA∈Rm×n,其转置矩阵和其本身相乘之后得到的矩阵都是对称矩阵,即ATA∈Rn×nATA∈Rn×n和AAT∈Rm×mAAT∈Rm×m均为对称矩阵。(证明略)

接下来结合SVD公式给出对任意矩阵A∈Rm×nA∈Rm×nSVD计算的推导过程:

  • 计算VV

已知ATAATA可作如下对角化运算,且其特征值λi≥0λi≥0

ATA=PDPT=Pλ1⋮0⋯⋱⋯0⋮λnPT(1.3.1)(1.3.1)ATA=PDPT=P[λ1⋯0⋮⋱⋮0⋯λn]PT


因为任何矩阵都可做奇异值分解,故有

ATA=(UΣVT)T(UΣVT)=VΣTUTUΣVT(1.3.2)(1.3.2)ATA=(UΣVT)T(UΣVT)=VΣTUTUΣVT


因为UU为正交矩阵,所以UTU=IUTU=I,所以(1.3.2)式进一步简化可得

ATA=VΣTΣVT=Vσ21⋮0⋯⋱⋯0⋮σ2nVT(1.3.3)(1.3.3)ATA=VΣTΣVT=V[σ12⋯0⋮⋱⋮0⋯σn2]VT


由(1.3.1)和(1.3.3)可得

V=Pσ2i=λi(1.3.4)(1.3.4)V=Pσi2=λi


所以任意矩阵AA的右奇异矩阵VV是ATAATA的特征矩阵PP。

  • 计算UU

和求VV类似,这里不再赘述。UU即为AATAAT的特征矩阵。

  • 计算ΣΣ

注意上面两步中已经求出了σ2iσi2,接下来要做的就是把上面所求出的σ2iσi2从大到小排序并开根号,且ΣΣ要与AA的维度保持一致

具体的SVD计算示例可参见奇异值分解(SVD)计算过程示例

4. 特征值分解(EVD) vs. 奇异值分解(SVD)

下面对特征值分解A=PDP−1A=PDP−1和奇异值分解A=UΣVTA=UΣVT作如下总结和对比:

  • SVD对于任意矩阵都存在;而EVD只能在n阶方阵的基础上才能被定义,而且只有当方阵满秩,即有n个独立的特征向量条件下才可以做特征值分解

  • 特征值分解后得到的矩阵PP不必须是正交矩阵,也就是说PP可以起到伸缩和旋转的作用;而SVD中的U,VU,V矩阵都必须是正交矩阵,所以这两个矩阵只能起到旋转变换的作用,起伸缩变换作用的是矩阵ΣΣ。

  • 特征值分解和奇异值分解都由以下三个线性映射步骤组成:
    1.Change of basis in the domain
    2.Independent scaling of each new basis vector and mapping from domain to co-domain
    3.Change of basis in the co-domain

原文出处:https://www.cnblogs.com/marsggbo/p/10156077.html  

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP