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
從而實現了圖像的降噪:
由上圖可以看出,降噪後並沒有完全去掉噪聲。
參考鏈接: