首页 > 其他 > 详细

SVD的理解

时间:2014-02-22 08:20:45      阅读:340      评论:0      收藏:0      [点我收藏+]

SVD:singular valuedecomposition 奇异值分解

本文总结自网络,详情见最后的参考链接:


奇异值分解可以实现降维的作用,例如讲A分成X*B*Y三部分:

 bubuko.com,布布扣

 

如图所示,A元素个数是100万乘以50万,总共5千亿。

而存储X,B,Y三个矩阵只需要1.5个亿个元素,是原来的三千分之一,相应的存储量和计算量都小了三个数量级。

 

假设M是n*n的奇异矩阵(奇异矩阵和非奇异矩阵必须在是方阵的前提下,上图中奇异值分解的矩阵A可以不是方阵),那么必须有r ( M ) < n,也就是M中有冗余的信息,我们考虑消除这些冗余信息,这就是奇异值分解的动机。

 

假如有一个实例,描述了100万篇文章和50万个词的相关性(例如定义每一篇文章i和每一个词的相关性为该词j在该文章中出现的次数k),我们用矩阵A来描述此相关性,Aij即上文中的k。

然后进行奇异矩阵分解:A = X*B*Y

如上图所示,所得到的三个矩阵有很清楚的实际含义。

第一个矩阵X的每一列代表一个主题,其中每个元素代表该文章和该主题的相关性,此主题是抽象出来的,可能与现实生活中的主题(如体育,新闻,音乐)概念不同。

第三个矩阵Y 的每一行代表一个关键字,其中每个元素代表该词和该关键字的相关性,此关键字也是抽象的关键字,可能不是现实生活中的字或者词。

第二个矩阵 B 表示的是文章主题和关键字的相关性,矩阵B可以化简为对角矩阵,即给每一个主题找到直接对应的关键字;若矩阵B不为对角矩阵,那么该主题可能是多个关键字意义的加权组合。

 

A = X*B*Y

B可以是一个对角矩阵,那么对角上的元素就是奇异值。可以通过SVD对图像进行降噪,如下图:

bubuko.com,布布扣


首先对该图进行存储,设存储于矩阵A中。

然后对A进行SVD分解,分解得到:A = X*B*Y;

B为对角矩阵,对角线元素为σ1 = 14.15,σ2 = 4.67,σ3 = 3.00,σ4 = 0.21,σ5 = 0.19,...,σ15 = 0.05

前三个奇异值比其他的大很多,说明其中包括了绝大部分信息。如果我们只要前三个。

即优化B为:

σ1 0 0 0 … 0

 0σ2 0 0 … 0

 0 0σ3 0 … 0

 0 00 0 0 … 0

 …

 0 00 0 0 … 0

从而实现了图像的降噪:

bubuko.com,布布扣

由上图可以看出,降噪后并没有完全去掉噪声。

 

参考链接:

http://www.bfcat.com/index.php/2012/03/svd-tutorial/

http://blog.csdn.net/abcjennifer/article/details/8131087

SVD的理解

原文:http://blog.csdn.net/shuimu12345678/article/details/19609909

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!