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

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