SVD的理解

SVD:singular valuedecomposition 奇异值分解

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


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

 

 

如图所示,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对图像进行降噪,如下图:



首先对该图进行存储,设存储于矩阵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

从而实现了图像的降噪:


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

 

参考链接:

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章