矩阵奇异值简要介绍

来源:互联网 发布:linux 设置dns解析 编辑:程序博客网 时间:2024/05/18 20:51

奇异值分解是一个非常,非常,非常大的话题,它的英文是 Singular Value Decomposition,一般简称为 SVD。下面先给出它大概的意思:

对于任意一个 m×n 的矩阵 M,不妨假设 m>n,它可以被分解为

M=UDVT

其中

  • U 是一个 m×n 的矩阵,满足 UTU=InIn 是 n×n 的单位阵
  • V 是一个 n×n 的矩阵,满足 VTV=In
  • D 是一个 n×n 的对角矩阵,所有的元素都非负

先别急,我看到这个定义的时候和你一样晕,感觉信息量有点大。事实上,上面这短短的三条可以引发出 SVD 许多重要的性质,而我们今天要介绍的也只是其中的一部分而已。

前面的表达式 M=UDVT 可以用一种更容易理解的方式表达出来。如果我们把矩阵 U 用它的列向量表示出来,可以写成

U=(u1,u2,,un)

其中每一个 ui 被称为 M 的左奇异向量。类似地,对于 V,有

V=(v1,v2,,vn)

它们被称为右奇异向量。再然后,假设矩阵 D 的对角线元素为 di (它们被称为 M的奇异值)并按降序排列,那么 M 就可以表达为

M=d1u1vT1+d2u2vT2++dnunvTn=i=1ndiuivTi=i=1nAi

其中 Ai=diuivTi 是一个 m×n 的矩阵。换句话说,我们把原来的矩阵 M 表达成了 n 个矩阵的和。

这个式子有什么用呢?注意到,我们假定 di 是按降序排列的,它在某种程度上反映了对应项 Ai 在 M 中的“贡献”。di 越大,说明对应的 Ai 在 M 的分解中占据的比重也越大。所以一个很自然的想法是,我们是不是可以提取出 Ai 中那些对 M 贡献最大的项,把它们的和作为对 M 的近似?也就是说,如果令

Mk=i=1kAi

那么我们是否可以用 Mk 来对 MnM 进行近似?

答案是肯定的,不过等一下,这个想法好像似曾相识?对了,多元统计分析中经典的主成分分析就是这样做的。在主成分分析中,我们把数据整体的变异分解成若干个主成分之和,然后保留方差最大的若干个主成分,而舍弃那些方差较小的。事实上,主成分分析就是对数据的协方差矩阵进行了类似的分解(特征值分解),但这种分解只适用于对称的矩阵,而 SVD 则是对任意大小和形状的矩阵都成立。(SVD 和特征值分解有着非常紧密的联系,此为后话)

我们再回顾一下,主成分分析有什么作用?答曰,降维。换言之,就是用几组低维的主成分来记录原始数据的大部分信息,这也可以认为是一种信息的(有损)压缩。在 SVD 中,我们也可以做类似的事情,也就是用更少项的求和 Mk 来近似完整的 n 项求和。为什么要这么做呢?我们用一个图像压缩的例子来说明我们的动机。

我们知道,电脑上的图像(特指位图)都是由像素点组成的,所以存储一张 1000×622 大小的图片,实际上就是存储一个 1000×622 的矩阵,共 622000 个元素。这个矩阵用 SVD 可以分解为 622 个矩阵之和,如果我们选取其中的前 100 个之和作为对图像数据的近似,那么只需要存储 100 个奇异值 di,100 个 ui 向量和 100 个 vi 向量,共计 100×(1+1000+622)=162300个 元素,大约只有原始的 26% 大小

0 0
原创粉丝点击