深度理解矩陣的奇異值,特徵值


看了蠻多關於矩陣特徵值,奇異值的文章,將他們全部整理出來以供複習。

在網上看到有很多文章介紹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呢?如下

x=[a,b]Tx=[a,b]^T
a=xe1=e1Txa'=x*e1'=e1'^Tx
b=xe2=e2Txb'=x*e2'=e2'^Tx

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

[a,b]T=[e1T,e2T]Tx[a',b']^T=[e1'^T,e2'^T]^Tx

從圖中可以看到

e1=[cosθ,sinθ]T,e2=[sinθ,cosθ]Te1'=[\cos{\theta},\sin\theta]^T,e2'=[-\sin\theta,\cos\theta]^T
所以
在這裏插入圖片描述
正交陣U行(列)向量之間都是單位正交向量。上面求得的是一個旋轉矩陣,它對向量做旋轉變換!也許你會有疑問:剛纔不是說向量空間位置不變嗎?怎麼現在又說它被旋轉了?對的,這兩個並沒有衝突,說空間位置不變是絕對的,但是座標是相對的,加入你站在e1上看OA,隨着e1旋轉到e1’,看OA的位置就會改變。如下圖:

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

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

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

特徵值分解——EVD

矩陣特徵值和特徵向量定義

A爲n階矩陣,若數λ和n維非0列向量x滿足Ax=λx,那麼數λ稱爲A的特徵值,x稱爲A的對應於特徵值λ的特徵向量。式Ax=λx也可寫成( A-λE)x=0,並且|λE-A|叫做A 的特徵多項式。當特徵多項式等於0的時候,稱爲A的特徵方程,特徵方程是一個齊次線性方程組,求解特徵值的過程其實就是求解特徵方程的解。

定義引自https://blog.csdn.net/Junerror/article/details/80222540?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158867935419724839218701%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.57644%2522%257D&request_id=158867935419724839218701&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-1
在這裏插入圖片描述

特徵值的含義

https://blog.csdn.net/qq_32742009/article/details/82217051?ops_request_misc=&request_id=&biz_id=102&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2

一般來說,矩陣我們可以看作某種運動,而二維向量可以看作平面上的一個點(或者說一個箭頭)。對於點我們是可以觀察的,但是運動我們是不能直接觀察的。

就好像,跑步這個動作,我們不附加到具體的某個事物上是觀察不到的,我們只能觀察到:人跑步、豬跑步、老虎跑步、…,然後從中總結出跑步的特點。

要觀察矩陣所代表的運動,需要把它附加到向量上才觀察的出來:
在這裏插入圖片描述
似乎還看不出什麼。但是如果我反覆運用矩陣乘法的話:

在這裏插入圖片描述

至於爲什麼會產生這樣的現象,可以通過乘冪法來證明。

反覆運用矩陣乘法,矩陣所代表的運動的最明顯的特徵,即速度最大的方向,就由最大特徵值對應的特徵向量展現了出來。利用乘冪法的思想,每次將最大的特徵值對應的向量因素從矩陣中除去,就可以依次得到各個特徵值所對應的特徵向量。因此矩陣的特徵值有如下兩種解釋

1、解釋1

我們可以將矩陣看成是一個力的混合體,但需要注意的是,這個力的混合體中各個力是相互獨立的!即特徵向量之間線性無關,是無法做力的合成(這裏只是假設其無法合成,有更好的解釋以後會補充)的。其中力的個數爲矩陣的秩,力的大小爲特徵值的大小,力的方向即爲特徵向量的方向

此時如果我們對任一向量(這裏可以把看成是一個物體,如一個小方塊)無限施加這個力的集合,正如上圖所示的那樣,最終小方塊運動的方向即爲力最大的那個方向。即向量會收斂爲最大特徵值的特徵向量。去掉這個力,不斷重複,即可以得到第二個、第三個特徵向量。

這就是爲什麼我們將這樣的向量定義爲矩陣的特徵向量,因爲一方面它能夠體現出線性變換中力的方向及大小,另一方面可以可以通過分析特徵值得到該線性變換的主導因素。

再囉嗦幾句,概括來說就是,特徵值與特徵向量可以告訴我們這個矩陣它產生的線性變換做了什麼以及主要做了什麼。

2、解釋2

另一個更直觀的解釋就是顏料混合。我們將矩陣看成一個籃子,重點不在籃子。在籃子裏面有一堆顏料,包含了種顏色,爲矩陣的秩,但每種顏色的分量都不一樣。先上結論——特徵值代表了分量,特徵向量表示了顏色。對任一向量(這裏可以把看成是一灘液體,無所謂本來是什麼顏色),每次施加矩陣變換就是把籃子裏的所有顏料都潑進去,潑無數次,最後清水的顏色就變成了顏色最多的顏色(這裏不要計較什麼顏料無限混合最後都是黑色灰色的,直觀一點理解)。

假設我們現在有辦法可以去掉籃子中指定顏色的所有顏料。則可以依次根據特徵值排序得到特徵向量。

通過這麼一個比喻,我們也可以得出同樣的結論。

矩陣包含了一堆信息——顏料的種類與顏料的數量。如果我們可以通過矩陣分解將其分離出來,保留那些分量大的顏色,而去除那些可有可無的顏色就可以實現信息壓縮等變換

分解過程詳解

https://blog.csdn.net/zhongkejingwang/article/details/43053513

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

λi\lambda_i
對應的單位特徵向量爲
xix_i
則有
在這裏插入圖片描述
在這裏插入圖片描述
所以可得到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變換後還是正交的。假設已經找到這樣一組正交基

在這裏插入圖片描述
所以如果正交基v選擇爲A’A的特徵向量的話,由於A’A是對稱陣,v之間兩兩正交,那麼

在這裏插入圖片描述
這樣就找到了正交基使其映射後還是正交基了,現在,將映射後的正交基單位化:

在這裏插入圖片描述
在這裏插入圖片描述
繼而可以得到A矩陣的奇異值分解:

在這裏插入圖片描述
現在可以來對A矩陣的映射過程進行分析了:如果在n維空間中找到一個(超)矩形,其邊都落在A’A的特徵向量的方向上,那麼經過A變換後的形狀仍然爲(超)矩形!

vi爲A’A的特徵向量,稱爲A的右奇異向量,ui=Avi實際上爲AA’的特徵向量,稱爲A的左奇異向量。下面利用SVD證明文章一開始的滿秩分解:

在這裏插入圖片描述
可以看到第二項爲0,有
在這裏插入圖片描述
則A=XY即是A的滿秩分解。

矩陣的奇異值與特徵值有什麼相似之處與區別之處

https://blog.csdn.net/mjl960108/article/details/70988759?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158868128619724845051798%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.57644%2522%257D&request_id=158868128619724845051798&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-3

矩陣可以認爲是一種線性變換,如果將這種線性變換放在幾何意義上,則他的作用效果和基的選擇有關。

以Ax = b爲例,x是m維向量,b是n維向量,m,n可以相等也可以不相等,表示矩陣可以將一個向量線性變換到另一個向量,這樣一個線性變換的作用可以包含旋轉、縮放和投影三種類型的效應。

比如說:

在這裏插入圖片描述
其幾何意義爲在水平x方向上拉伸3倍,y方向保持不變的線性變換,這就是縮放;而如果前面乘的矩陣不是對稱矩陣,那麼則對應幾何意義上的縮放加旋轉

奇異值分解正是對線性變換這三種效應的一個析構。A=μΣσ,μ和σ是兩組正交單位向量,Σ是對角陣,對角值s表示奇異值,它表示我們找到了μ和σ這樣兩組基,A矩陣的作用是將一個向量從σ這組正交基向量的空間旋轉到μ這組正交基向量空間,並對每個方向進行了一定的縮放(乘個縮放因子),縮放因子就是各個奇異值,然後再在μ旋轉回去。如果σ維度比μ大,則表示還進行了投影。可以說奇異值分解將一個矩陣原本混合在一起的三種作用效果,分解出來了。

而特徵值分解其實是對旋轉縮放兩種效應的歸併。(有投影效應的矩陣不是方陣,沒有特徵值)特徵值,特徵向量由Ax=λx得到,它表示如果一個向量v處於A的特徵向量方向,那麼Av對v的線性變換作用只是一個縮放。也就是說,求特徵向量和特徵值的過程,我們找到了這樣一組基,在這組基下,矩陣的作用效果僅僅是存粹的縮放。對於實對稱矩陣,特徵向量正交,我們可以將特徵向量式子寫成A=xλxT,這樣就和奇異值分解類似了,就是A矩陣將一個向量從x這組基的空間旋轉到x這組基的空間,並在每個方向進行了縮放,由於前後都是x,就是沒有旋轉或者理解爲旋轉了0度。

總而言之,特徵值分解和奇異值分解都是給一個矩陣(線性變換)找一組特殊的基,特徵值分解找到了特徵向量這組基,在這組基下該線性變換隻有縮放效果。而奇異值分解則是找到另一組基,這組基下線性變換的旋轉、縮放、投影三種功能獨立地展示出來了
又因爲有投影效應的矩陣不是方陣,沒有特徵值,所以奇異值分解可以適用於所有矩陣,但特徵值分解就僅僅適用於方陣了

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