原文 | https://mp.weixin.qq.com/s/HrN8vno4obF_ey0ifCEvQw微信
奇異值分解(Singular value decomposition)簡稱SVD,是將矩陣分解爲特徵值和特徵向量的另外一種方法。奇異值分解能夠將一個比較複雜的矩陣用更小更簡單的幾個子矩陣相乘來表示,這些小矩陣描述的都是矩陣的重要的特性。奇異值分解在圖形降噪、推薦系統中都有很重要的應用。學習
對於任意矩陣A,均可以奇異值分解成下面的形式,其中U和V是正交矩陣,Σ是對角矩陣:spa
若是A是正定矩陣,它的奇異值分解就是A=QΛQT,即用一個正交矩陣Q就能夠使正定矩陣A進行奇異值分解,不須要兩個。對於可對角化的矩陣來講,A=SΛS-1,但這種形式下的特徵向量矩陣S並非正交矩陣,而SVD要求U和V都是正交矩陣。3d
A是m×n的矩陣,四個基本子空間的正交性能夠用下圖表示,其中r是矩陣的秩:blog
能夠把矩陣A看做一種線性變換操做,將其行空間中的每個向量v,變換爲列空間的向量u,即u=Av。相似地,咱們也能夠在行空間中找到一組正交基,經過矩陣A線性變換成列空間中的另外一組正交基:get
行空間中的一組正交基能夠經過格拉姆-施密特正交化獲得——任意一組基均可以經過格拉姆-施密特正交化變成一組正交基,可是隨便一組正交基通過矩陣A的線性變換後的向量卻未必正交,所以這組知足要求的正交基很是特殊,它們須要知足:it
更進一步,在V中尋找標準正交向量,並使U中的向量標準化,從而使U和V標準正交:io
其中vi和ui都是單位向量,σi是ui的倍數,稱爲奇異值。上式就是奇異值分解的目標:尋找行空間的一組標準正交基,經過A變成列空間的一組標準正交基。二維碼
因爲V中的向量的都是正交向量,所以VVT=I:方法
這正是奇異值分解的形式。若是A是正定矩陣,AQ=QΛ,它的奇異值分解就是A=QΛQT,此時U=V=Q,Σ=Λ。
咱們已經知道奇異值分解的目標是A=UΣVT,如今的問題是怎樣找到合適的正交矩陣U和V?
考慮首先解決U和V中的一個,先將U消去:
注意到ATA是一個對稱方陣,而且符合正定矩陣正交分解的形式,V就是ATA的標準化後的特徵向量,σi2就是ATA的特徵值,σi取特徵值的正平方根。
,求A的奇異值分解。
目標是A=UΣVT,先求解V:
計算特徵值和特徵向量:
將特徵向量標準化:
如今咱們有了下面的式子:
經過上式能夠進一步求得U。可是咱們打算用和求V一樣的方式求得U:
好了,如今驗證一下奇異值分解的結果:
這個結果並不等於A。問題出在哪呢?
咱們注意到,若是U的一個向量反向,U中的兩個向量仍然是正交向量,且此時能夠完成奇異值分解:
這是由於在奇異值分解的過程當中,一旦確認了V中向量的方向以後,U中向量的方向也一塊兒被限定了,而在本例中,咱們用一種和V無關的方式求得了U,而這種方法並不必定老是有效,須要嘗試改變向量的方向。經過將V代入AV=UΣ求得U,能夠避免這個問題。
奇異矩陣A也能夠進行奇異值分解。,求奇異矩陣A的奇異值分解。
A是秩1矩陣。容易看出A的行空間的基是v1=(4, 3),行空間是一維的,與之垂直的向量在零空間上,v2=(3, -4)。相應地,A的列空間也是一維的,它的基是u1=(1, 2),與之垂直的向量在左零空間上,u2=(2, -1)。將上面的4個向量標準化,獲得4個新的向量:
接下來經過AAT的特徵向量求得Σ:
AAT也是一個秩1矩陣,所以可肯定一個特徵值是0,經過矩陣的跡可肯定另外一個特徵值是125,由此獲得了Σ:
長方矩陣也能夠進行奇異值分解。
雖然A是一個3×2的長方矩陣,但這並不影響奇異值分解。
能夠看出AAT的3個特徵值是5,0,0,3個特徵向量標準正交向量:
注意此時奇異值矩陣是3×2的矩陣,它的尺寸和A一致(經過ATA只能求得2個特徵值):
一樣的方法能夠求得U。最終:
出處:微信公衆號 "我是8位的"
本文以學習、研究和分享爲主,如需轉載,請聯繫本人,標明做者和出處,非商業用途!
掃描二維碼關注做者公衆號「我是8位的」