加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

奇异值分解(singular value decomposition——SVD)

(2016-01-22 14:04:04)
标签:

奇异值分解

svd

分类: 遥感

奇异值分解(singular value decomposition)是线性代数中一种重要的矩阵分解,在信号处理、统计学等领域有重要应用。奇异值分解在某些方面与对称矩阵或Hermite矩阵基于特征向量的对角化类似。然而这两种矩阵分解尽管有其相关性,但还是有明显的不同。对称阵特征向量分解的基础是谱分析,而奇异值分解则是谱分析理论在任意矩阵上的推广。

 

理论描述

假设M是一个m×n阶矩阵,其中的元素全部属于域 R,也就是 实数域或复数域。如此则存在一个分解使得

UΣV*,

其中Um×m阶酉矩阵;Σ是半正定m×n阶对角矩阵;而V*,即V的共轭转置,是n×n阶酉矩阵。这样的分解就称作M的奇异值分解。Σ对角线上的元素Σi,i即为M的奇异值。

 

常见的做法是将奇异值由大而小排列。如此Σ便能由M唯一确定了。(虽然UV仍然不能确定。)

 

直观的解释

在矩阵M的奇异值分解中

UΣV*,

 

V的列(columns)组成一套对M的正交"输入""分析"的基向量。这些向量是 M*,M的特征向量。

U的列(columns)组成一套对M的正交"输出"的基向量。这些向量是 MM*,的特征向量。

Σ对角线上的元素是奇异值,可视为是在输入与输出间进行的标量的"膨胀控制"。这些是 MM*及 M*M的特征值的非零平方根,并与UV的行向量相对应。

 

奇异值和奇异向量以及他们与奇异值分解的关系

一个非负实数σ是M的一个奇异值仅当存在R^{M}的单位向量uR^{N}的单位向量v如下 

 

Mv σu   and   M*u= σv

其中向量v分别为σ的左奇异向量和右奇异向量。

 

对于任意的奇异值分解

 

UΣV*,

矩阵Σ的对角线上的元素等于M的奇异值UV的列分别是奇异值中的左、右奇异向量。因此,上述定理表明:

 

一个× n的矩阵至少有一个最多有 min(m,n)个不同的奇异值;

总能在R^{M}中找到由M的左奇异向量组成的一组正交基U,;

总能在R^{N}找到由M的右奇异向量组成的一组正交基V,。

如果对于一个奇异值,可以找到两组线性无关的左(右)奇异向量,则该奇异值称为简并的(或退化的)。

 

非退化的奇异值在最多相差一个相位因子exp(iϕ)(若讨论限定在实数域内,则最多相差一个正负号)的意义下具有唯一的左、右奇异向量。因此,如果M的所有奇异值都是非退化且非零,则除去一个可以同时乘在U,V上的任意的相位因子外,M的奇异值分解唯一。

 

根据定义,退化的奇异值具有不唯一的奇异向量。因为,如果u1u2为奇异值σ的两个左奇异向量,则它们的任意归一化线性组合也是奇异值σ一个左奇异向量,右奇异向量也具有类似的性质。因此,如果M具有退化的奇异值,则它的奇异值分解是不唯一的。

 

例子

观察一个4×5的矩阵

 

M=[1 2

   0

   0

   0]

M矩阵的奇异值分解如下UΣV*,

 

=[            0

                0

               -1

            0]

 

Σ=[4.0000                                0

            3.0000                        0

                   2.2361                 0

                                       0]

 

=              0.4472           -0.8944

    1.0000                               0

           1.0000                        0

                            1.0000        0

                    0.8944            0.4472]

注意矩阵Σ的所有非对角元为0。矩阵 V*都是酉矩阵,它们乘上各自的共轭转置都得到单位矩阵。如下所示。在这个例子中,由于UV* 都是实矩阵,故它们都是正交矩阵。

 

 U* =I

 V* I

 

由于Σ有一个对角元是零,故这个奇异值分解值不是唯一的。例如,选择 使得

 

V*           0

                0

     sqrt(0.2)      sqrt(0.8)

     sqrt(0.4) sqrt(0.5) -sqrt(0.1)

    -sqrt(0.4) sqrt(0.5) sqrt(0.1)]

能得到M的另一个奇异值分解。

 

与特征值分解的联系

奇异值分解能够用于任意m× n矩阵,而特征分解只能适用于特定类型的方阵,故奇异值分解的适用范围更广。不过,这两个分解之间是有关联的。 给定一个M的奇异值分解,根据上面的论述,两者的关系式如下:

 

 

M*M VΣ*U*UΣV* =V(Σ*ΣV*

MM* UΣV*VΣ*U*=U(ΣΣ*) U*

关系式的右边描述了关系式左边的特征值分解。于是:

 

V的列向量(右奇异向量)是M*M的特征向量。

U的列向量(左奇异向量)是MM*的特征向量。

Σ的非零对角元(非零奇异值)是M*M或者MM*的非零特征值的平方根。

特殊情况下,当M是一个正规矩阵(因而必须是方阵)根据谱定理,M可以被一组特征向量酉对角化,所以它可以表为:

 

U*

其中U为一个酉矩阵,D为一个对角阵。如果M是半正定的,U*的分解也是一个奇异值分解。

 

然而,一般矩阵的特征分解跟奇异值分解不同。特征分解如下:

 

M=UDU^{-1}

其中U是不需要是酉的,D也不需要是半正定的。而奇异值分解如下:

 

M=UΣV*

其中Σ是对角半正定矩阵,和 V是酉矩阵,两者除了通过矩阵M没有必然的联系。

 

几何意义

因为UV都是酉的我们知道U的列向量u1,...,um组成了R^{M}空间的一组标准正交基。同样,V的列向量v1,...,vn也组成了R^{N}空间的一组标准正交基(根据向量空间的标准点积法则)。

 

矩阵M代表从R^{N}R^{M}的一个线性映射Tx Mx。通过这些标准正交基,这个变换可以用很简单的方式进行描述:T(v_i)=σ^{i}u^{i},i= 1,...,min(m,n),其中σ^{i}是Σ中的第i个对角元。当i>min(m,n)时,T(v_i)=0

 

这样,SVD分解的几何意义就可以做如下的归纳:对于每一个线性映射T:R^{N}R^{M}T的奇异值分解在原空间与像空间中分别找到一组标准正交基,使得TR^{N}的第i个基向量映射为R^{M}的第i个基向量的非负倍数,并将R^{N}中余下的基向量映射为零向量。换句话说,线性变换 T在这两组选定的基上的矩阵表示为所有对角元均为非负数的对角矩阵。

 

应用

求伪逆

奇异值分解可以被用来计算矩阵的伪逆。若矩阵 的奇异值分解为  UΣV*,那么 的伪逆为

 

 M^+ Σ^{+} U*

其中Σ^{+}是Σ的伪逆,是将Σ主对角线上每个非零元素都求倒数之后再转置得到的。求伪逆通常可以用来求解最小二乘法问题。

 

列空间、零空间和秩

奇异值分解的另一个应用是给出矩阵的列空间、零空间和秩的表示。对角矩阵Σ的非零对角元素的个数对应于矩阵M的秩。与零奇异值对应的右奇异向量生成矩阵M的零空间,与非零奇异值对应的左奇异向量则生成矩阵M的列空间。 在线性代数数值计算中奇异值分解一般用于确定矩阵的有效秩,这是因为,由于舍入误差,秩亏矩阵的零奇异值可能会表现为很接近零的非零值。

 

矩阵近似值

奇异值分解在统计中的主要应用为主成分分析(PCA)。 数据集的特征值(在SVD中用奇异值表征)按照重要性排列,降维的过程就是舍弃不重要的特征向量的过程,而剩下的特征向量张成空间为降维后的空间。

 

几种编程语言中计算SVD的函式范例

matlab

[b d]=svd(x)

OpenCV:

void cvSVD( CvArr* A, CvArr* W, CvArr* U=NULL, CvArr* V=NULL, int flags=0 )

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有