奇異值分解 SVD 原理詳解及推導

2021-09-01 00:09:01 字數 3289 閱讀 6013

在網上看到有很多文章介紹svd的,講的也都不錯,但是感覺還是有需要補充的,特別是關於矩陣和對映之間的對應關係。前段時間看了國外的一篇文章,叫a singularly valuable decomposition the svd of a matrix,覺得分析的特別好,把矩陣和空間關係對應了起來。本文就參考了該文並結合矩陣的相關知識把svd原理梳理一下。

svd不僅是乙個數學問題,在工程應用中的很多地方都有它的身影,比如前面講的pca,掌握了svd原理後再去看pca那是相當簡單的,在推薦系統方面,svd更是名聲大噪,將它應用於推薦系統的是netflix大獎的獲得者koren,可以在google上找到他寫的文章;用svd可以很容易得到任意矩陣的滿秩分解,用滿秩分解可以對資料做壓縮。可以用svd來證明對任意m*n的矩陣均存在如下分解:

這個可以應用在資料降維壓縮上!在資料相關性特別大的情況下儲存x和y矩陣比儲存a矩陣占用空間更小!

在開始講解svd之前,先補充一點矩陣代數的相關知識。

正交矩陣

正交矩陣是在歐幾里得空間裡的叫法,在酉空間裡叫酉矩陣,乙個正交矩陣對應的變換叫正交變換,這個變換的特點是不改變向量的尺寸和向量間的夾角,那麼它到底是個什麼樣的變換呢?看下面這張圖

假設二維空間中的乙個向量oa,它在標準座標系也即e1、e2表示的座標是中表示為(a,b)'(用'表示轉置),現在把它用另一組座標e1'、e2'表示為(a',b')',存在矩陣u使得(a',b')'=u(a,b)',則u即為正交矩陣。從圖中可以看到,正交變換只是將變換向量用另一組正交基表示,在這個過程中並沒有對向量做拉伸,也不改變向量的空間位置,加入對兩個向量同時做正交變換,那麼變換前後這兩個向量的夾角顯然不會改變。上面的例子只是正交變換的乙個方面,即旋轉變換,可以把e1'、e2'座標系看做是e1、e2座標系經過旋轉某個斯塔角度得到,怎麼樣得到該旋轉矩陣u呢?如下

a'和b'實際上是x在e1'和e2'軸上的投影大小,所以直接做內積可得,then

從圖中可以看到

所以正交陣u行(列)向量之間都是單位正交向量。上面求得的是乙個旋轉矩陣,它對向量做旋轉變換!也許你會有疑問:剛才不是說向量空間位置不變嗎?怎麼現在又說它被旋轉了?對的,這兩個並沒有衝突,說空間位置不變是絕對的,但是座標是相對的,加入你站在e1上看oa,隨著e1旋轉到e1',看oa的位置就會改變。如下圖:

如圖,如果我選擇了e1'、e2'作為新的標準座標系,那麼在新座標系中oa(原標準座標系的表示)就變成了oa',這樣看來就好像座標繫不動,把oa往順時針方向旋轉了「斯塔」角度,這個操作實現起來很簡單:將變換後的向量座標仍然表示在當前座標系中。

旋轉變換是正交變換的乙個方面,這個挺有用的,比如在開發中需要實現某種旋轉效果,直接可以用旋轉變換實現。正交變換的另乙個方面是反射變換,也即e1'的方向與圖中方向相反,這個不再討論。

總結:正交矩陣的行(列)向量都是兩兩正交的單位向量,正交矩陣對應的變換為正交變換,它有兩種表現:旋轉和反射。正交矩陣將標準正交基對映為標準正交基(即圖中從e1、e2到e1'、e2')

特徵值分解——evd

在討論svd之前先討論矩陣的特徵值分解(evd),在這裡,選擇一種特殊的矩陣——對稱陣(酉空間中叫hermite矩陣即厄公尺陣)。對稱陣有乙個很優美的性質:它總能相似對角化,對稱陣不同特徵值對應的特徵向量兩兩正交。乙個矩陣能相似對角化即說明其特徵子空間即為其列空間,若不能對角化則其特徵子空間為列空間的子空間。現在假設存在mxm的滿秩對稱矩陣a,它有m個不同的特徵值,設特徵值為

對應的單位特徵向量為

則有進而

所以可得到a的特徵值分解(由於對稱陣特徵向量兩兩正交,所以u為正交陣,正交陣的逆矩陣等於其轉置)

這裡假設a有m個不同的特徵值,實際上,只要a是對稱陣其均有如上分解。

矩陣a分解了,相應的,其對應的對映也分解為三個對映。現在假設有x向量,用a將其變換到a的列空間中,那麼首先由u'先對x做變換:

u是正交陣u'也是正交陣,所以u'對x的變換是正交變換,它將x用新的座標系來表示,這個座標系就是a的所有正交的特徵向量構成的座標系。比如將x用a的所有特徵向量表示為:

則通過第乙個變換就可以把x表示為[a1 a2 ... am]':

緊接著,在新的座標系表示下,由中間那個對角矩陣對新的向量座標換,其結果就是將向量往各個軸方向拉伸或壓縮:

從上圖可以看到,如果a不是滿秩的話,那麼就是說對角陣的對角線上元素存在0,這時候就會導致維度退化,這樣就會使對映後的向量落入m維空間的子空間中。

最後乙個變換就是u對拉伸或壓縮後的向量做變換,由於u和u'是互為逆矩陣,所以u變換是u'變換的逆變換。

因此,從對稱陣的分解對應的對映分解來分析乙個矩陣的變換特點是非常直觀的。假設對稱陣特徵值全為1那麼顯然它就是單位陣,如果對稱陣的特徵值有個別是0其他全是1,那麼它就是乙個正交投影矩陣,它將m維向量投影到它的列空間中。

根據對稱陣a的特徵向量,如果a是2*2的,那麼就可以在二維平面中找到這樣乙個矩形,是的這個矩形經過a變換後還是矩形:

這個矩形的選擇就是讓其邊都落在a的特徵向量方向上,如果選擇其他矩形的話變換後的圖形就不是矩形了!

奇異值分解——svd

上面的特徵值分解的a矩陣是對稱陣,根據evd可以找到乙個(超)矩形使得變換後還是(超)矩形,也即a可以將一組正交基對映到另一組正交基!那麼現在來分析:對任意m*n的矩陣,能否找到一組正交基使得經過它變換後還是正交基?答案是肯定的,它就是svd分解的精髓所在。

現在假設存在m*n矩陣a,事實上,a矩陣將n維空間中的向量對映到k(k<=m)維空間中,k=rank(a)。現在的目標就是:在n維空間中找一組正交基,使得經過a變換後還是正交的。假設已經找到這樣一組正交基:

則a矩陣將這組基對映為:

如果要使他們兩兩正交,即

根據假設,存在

所以如果正交基v選擇為a'a的特徵向量的話,由於a'a是對稱陣,v之間兩兩正交,那麼

這樣就找到了正交基使其對映後還是正交基了,現在,將對映後的正交基單位化:

因為所以有

所以取單位向量

由此可得

當k < i <= m時,對u1,u2,...,uk進行擴充套件u(k+1),...,um,使得u1,u2,...,um為m維空間中的一組正交基,即

同樣的,對v1,v2,...,vk進行擴充套件v(k+1),...,vn(這n-k個向量存在於a的零空間中,即ax=0的解空間的基),使得v1,v2,...,vn為n維空間中的一組正交基,即

則可得到

繼而可以得到a矩陣的奇異值分解:

現在可以來對a矩陣的對映過程進行分析了:如果在n維空間中找到乙個(超)矩形,其邊都落在a'a的特徵向量的方向上,那麼經過a變換後的形狀仍然為(超)矩形!

利用矩陣分塊乘法展開得:

可以看到第二項為0,有

令則a=xy即是a的滿秩分解。

整個svd的推導過程就是這樣,後面會介紹svd在推薦系統中的具體應用,也就是復現koren**中的演算法以及其推導過程。

奇異值分解 SVD 原理詳解及推導

今天學習svd原理,檢視一些博文與資料,為了方便複習,做一下學習筆記。svd不僅是乙個數學問題,在工程應用中的很多地方都有它的身影,比如前面講的pca,掌握了svd原理後再去看pca那是相當簡單的,在推薦系統方面,svd更是名聲大噪,將它應用於推薦系統的是netflix大獎的獲得者koren,可以在...

奇異值分解 SVD

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

SVD奇異值分解

原文出處 今天我們來講講奇異值分解和它的一些有意思的應用。奇異值分解是乙個非常,非常,非常大的話題,它的英文是 singular value decomposition,一般簡稱為 svd。下面先給出它大概的意思 對於任意乙個 m n 的矩陣 m 不妨假設 m n 它可以被分解為 m udv t 其...