奇异值分解

 


概述

  奇异值分解(Singular Value Decomposition,SVD)是线性代数中一种重要的矩阵分解方法,区别于只适用于实对称矩阵的特征分解方法,奇异值分解可对任意实矩阵进行分解。

特征分解

 特征分解(eigendecomposition)又叫谱分解(Spectral decomposition),是把一个矩阵根据其特征值和特征向量分解的过程,只有可以正交化的矩阵才可以进行特征分解。

An阶方阵,若存在n维非零向量x使得:

Ax=λx

则称λ为矩阵A的特征值,xA属于λ的特征向量(eigenvector)。

  有了上述定义,接下来讨论如何计算一个矩阵的特征值和特征向量。由定义可知:

Axλx=0(AλI)x=0

  其中I为单位矩阵,显然上式的推导结果是一个nn次的齐次线性方程组,x为该方程组的一个非零解,则有$r(A-\lambda I)=r < n \Leftrightarrow |A-\lambda I|=0 |A-\lambda I|=0A|A-\lambda I|A$的特征多项式。基于此,可得到求解方阵A特征值和特征向量的步骤如下:

1、计算方阵A的特征多项式|AλI|

2、求出特征方程|AλI|=0的所有根(包括复根和重根),这些根λ1,λ2,,λn即为A的所有特征值;

3、对于A的每一个特征值λi(1in),求解齐次线性方程组(AλiI)x=0,该方程组的每一个非零解都是A属于特征值λi的特征向量;

  求出矩阵A的特征值和特征向量后,若矩阵An个线性独立的特征向量,那么 A是可以正交化的,此时 A 的特征分解为:

A=WDW1

其中Wn个特征向量所组成的n×n维矩阵,D为以这n个特征值为主对角线元素的对角阵。

奇异值分解

  • 定义

    M为一个m×n阶的矩阵,则存在一个分解,使得:

    M=UDVT

    其中Um阶酉矩阵、Vn阶酉矩阵、Dm×n的非负实对角矩阵。称此分解为奇异值分解,一般我们将V中的每一个特征向量叫做M的右奇异向量,将U中的每个特征向量叫做左奇异向量,D对角线上的元素称为M的奇异值,当规定奇异值降序排列时,可唯一确定一个D

      有了定义,接下来需要确定奇异值分解的三个矩阵UDV。比较直观的想法是通过M来构造一个方阵来进行特征分解,间接计算UDV,由于MMT,MTM分别为m×mn×n的方阵,则有:

    (1)MMT=UDVT(UDVT)T=UDVTVDTUT=UDDTUT=U1UTMTM=(UDVT)TUDVT=VDTUTUDVT=VDDTVT=V2VT

    注意到:

    M=UDVTMV=UDVTVMV=UDMvi=δiuiδi=Mviui

    其中,vi,ui分别为V,U中第i个特征向量。这个式子提供了一种计算奇异值的方法,另一种思路是结合式(5):

    =DDT=D2δi=λi

    即,特征值矩阵为奇异值矩阵的平方,故可以通过计算MTM的特征值取平方根来计算奇异值。

  • SVD的计算步骤

    1.计算MMTMTM

    2.分别计算MMTMTM的特征向量和特征值;

    3.MMT的特征向量组成U,而MTM的特征向量组成V

    4.对MMTMTM的非零特征值求平方根,对应上述特征向量的位置,填入对角阵D的位置;

  • 计算示例

      接下来以计算矩阵A=(011110)的奇异值分解为例,来进一步熟悉:

    第一步,先计算A的两个转置积:

    (2)ATA=(011110)(011110)=(2112)AAT=(011110)(011110)=(110121011)

    第二步,分别计算两个转置积的特征值和特征向量:

    (3)(ATAλI)x=0|ATAλI|=0|2λ112λ|=0λ24λ+3=0

    容易得到式(9)中一元二次方程的根为λ1=3,λ2=1,当λ=3时,将特征根分别带入式(1)中,得到:

    (4)(ATA3I)x=0(1111)x=0(1111)(x1x2)=0

    此时的单位特征向量为:

    xλ=3=(1212)

    同理得到:

    xλ=1=(1212)

    同理计算AAT的特征根和特征向量:

    (5)λ1=3u1=(162616)λ2=1u2=(12012)λ3=0u3=(131313)

    第三步,使用两个转置积的单位特征向量构造U,V矩阵:

    (6)U=(u1,u2,u3)=(16121326013161213)VT=(v1,v2)T=(12121212)

    第四步,计算奇异值,直接使用δi=λi计算奇异值并组成对角阵D

    D=(300100)

    最终得到矩阵A的奇异值分解:

    A=UDVT=(16121326013161213)(300100)(12121212)

应用

  对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵:

Am×n=Um×mDm×nVn×nTUm×kDk×kVk×nT

这样处理的好处是,我们可以用三个较小的矩阵Um×k,Dk×k,Vk×nT来表示一个大矩阵A,如下图所示,使用三个灰色部分的小矩阵来表示大矩阵。

图片来源于刘建平Pinard

  由于这个重要的性质,SVD可以用于PCA降维,来做图片数据压缩和去噪。也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI)。

Note:

  需要注意的是,奇异值分解中特征值的求解是比较核心的地方,在工程应用中,往往需要进行奇异值分解都是大矩阵,对这类大矩阵,如果采用上面的方法求解特征值需要花费较多的时间和资源。对此,可以采用乘幂法反幂法或者QR方法来近似求解矩阵的特征根,在此不做进一步展开,有兴趣的读者可以进一步了解一下。

基本概念说明

  • 矩阵的子式

      设有m×n矩阵A,在A中任意取定k个行和k个列(kmin{m,n}),位于这些行与列交叉处的元素按原来的相对顺序排成一个k阶行列式,称它为矩阵A的一个k阶子式,特别地,A中每一个元素就是A的一阶子式。
      对于确定的k,在m×n矩阵A中,总共有Cmk×Cnkk阶子式,这些子式的值有的可能是零,也可能不为零,把值不为零的子式称为非零子式。

  • 矩阵的秩

      在m×n矩阵A中,非零子式的最高阶数称为矩阵A的秩,记为r(A)或秩规定零矩(A),规定零矩阵的秩为零。

    推论1:

    r(A)=rA中所有r+1阶子式(如果有的话)全为零,而A中至少有一个r阶子式非零。

  • 矩阵的谱半径

      An阶方阵,λi1in为其特征值,则A的谱半径定义如下:

    ρ(r)=max{|λ1|,|λ2|,,|λn|}

    即方阵A的谱半径为A特征值中绝对值最大的那个值。

  • 正定矩阵

      如果对于所有的非零实系数向量 z,都有 zTAz>0,则称矩阵 A 是正定的。正定矩阵的行列式必然大于0, 所有特征值也必然大于0。相对应的,半正定矩阵的行列式必然 ≥ 0。

  • 正交矩阵

      若一个方阵其行与列皆为正交的单位向量(即二者的内积为0),则该方阵为正交矩阵。

  • 酉矩阵

      酉矩阵(unitary matrix)是一种特殊的方阵,它满足UUH=UHU=InUHU的共轭转置,其在转置的基础上,增加了复数的共轭)。酉矩阵实际上是推广的正交矩阵(orthogonal matrix);当酉矩阵中的元素均为实数时,酉矩阵实际就是正交矩阵。另一方面,由于U1U=UU1=In,所以酉矩阵 U满足$ U{−1}=UH$;事实上,这是一个矩阵是酉矩阵的充分必要条件。

  • 正规矩阵

      同酉矩阵一样,正规矩阵(normal matrix)也是一种特殊的方阵,它要求在矩阵乘法的意义下与它的共轭转置矩阵满足交换律,即MMH=MHM。显然,复系数的酉矩阵和实系数的正交矩阵都是正规矩阵。

  • 谱定理和谱矩阵

      矩阵的对角化是线性代数中的一个重要命题。谱定理(spectral theorem)给出了方阵对角化的一个结论:若矩阵M是一个正规矩阵,则存在酉矩阵 U,以及对角矩阵 ,使得M=UUH。也就是说,正规矩阵,可经由酉变换,分解为对角矩阵;这种矩阵分解的方式,称为谱分解(spectral decomposition)。


    参考文章

posted @   殉道者之殇  阅读(574)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示