SVD奇異值分解

2021-06-28 10:21:12 字數 1874 閱讀 9998

原文出處:

今天我們來講講奇異值分解和它的一些有意思的應用。奇異值分解是乙個非常,非常,非常大的話題,它的英文是 singular value decomposition,一般簡稱為 svd。下面先給出它大概的意思:

對於任意乙個 m×

n  的矩陣 

m ,不妨假設 

m>

n ,它可以被分解為 m

=udv

t 其中

先別急,我看到這個定義的時候和你一樣暈,感覺資訊量有點大。事實上,上面這短短的三條可以引發出 svd 許多重要的性質,而我們今天要介紹的也只是其中的一部分而已。

前面的表示式 m=

udvt

可以用一種更容易理解的方式表達出來。如果我們把矩陣 

u  用它的列向量表示出來,可以寫成 u

=(u1

,u2,

…,un

) 其中每乙個 ui

被稱為 

m  的左奇異向量。類似地,對於 

v ,有 v

=(v1

,v2,

…,vn

) 它們被稱為右奇異向量。再然後,假設矩陣 

d  的對角線元素為 di

(它們被稱為 

m  的奇異值)並按降序排列,那麼 

m  就可以表達為 m

=d1u

1vt1

+d2u

2vt2

+⋯+d

nunv

tn=∑

i=1n

diui

vti=

∑i=1

nai

其中 ai

=diu

ivti

是乙個 m×

n  的矩陣。換句話說,我們把原來的矩陣 

m  表達成了 

n  個矩陣的和。

這個式子有什麼用呢?注意到,我們假定 di

是按降序排列的,它在某種程度上反映了對應項 ai

在 m  中的「貢獻」。di

越大,說明對應的 ai

在 m  的分解中佔據的比重也越大。所以乙個很自然的想法是,我們是不是可以提取出 ai

中那些對 

m  貢獻最大的項,把它們的和作為對 

m  的近似?也就是說,如果令 m

k=∑i

=1ka

i 那麼我們是否可以用 mk

來對 mn

≡m進行近似?

答案是肯定的,不過等一下,這個想法好像似曾相識?對了,多元統計分析中經典的主成分分析就是這樣做的。在主成分分析中,我們把資料整體的變異分解成若干個主成分之和,然後保留方差最大的若干個主成分,而捨棄那些方差較小的。事實上,主成分分析就是對資料的協方差矩陣進行了類似的分解(特徵值分解),但這種分解只適用於對稱的矩陣,而 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% 大小。

奇異值分解 SVD

最近不小心接觸到了svd,然後認真看下去之後發現這東西真的挺強大的,把乙個推薦問題轉化為純數學矩陣問題,看了一些部落格,把乙個寫個比較具體的博文引入進來,給自己看的,所以把覺得沒必要的就去掉了,博文下面附原始部落格位址。一 基礎知識 1.矩陣的秩 矩陣的秩是矩陣中線性無關的行或列的個數 2.對角矩陣...

奇異值分解(SVD)

svd是singular value decomposition的縮寫,是去除冗餘 資訊提取和資料約簡的強大工具。若a為p q實數矩陣,則存在p階正交矩陣u和q階正交矩陣v,使得 a u v 上式就是奇異值分解,其中p q矩陣 中,i,i 元素 i 0,i 1,2,3,min p,q 其他元素均為0...

SVD奇異值分解

本文由leftnoteasy發布於 奇異值與特徵值基礎知識 特徵值分解和奇異值分解在機器學習領域都是屬於滿地可見的方法。兩者有著很緊密的關係,我在接下來會談到,特徵值分解和奇異值分解的目的都是一樣,就是提取出乙個矩陣最重要的特徵。先談談特徵值分解吧 1 特徵值 如果說乙個向量v是方陣a的特徵向量,將...