矩陣論專欄:專欄(文章按照順序排序)
Schur分解、特徵值分解、奇異值分解是三種聯繫十分緊密的矩陣分解,它們的關係是Schur→EVD→SVD,也就是說由Schur分解可以推導出EVD,再推導出SVD。本篇博客和上篇博客遵循主線Schur→EVD→SVD,且對各個矩陣分解的相關理論應用(能夠解決矩陣論中的哪些問題)進行介紹。
本篇博客討論特徵值分解和奇異值分解的相關內容。上篇博客(鏈接)討論的是Schur分解以及利用Schur分解能夠解決的若干問題。注意,引理1-5以及定理1-15在上篇博客中。
本文內容以線性代數知識爲基礎(主要是特徵值和相似的知識):
矩陣論(零):線性代數基礎知識整理(1)——逆矩陣、初等變換、滿秩分解
矩陣論(零):線性代數基礎知識整理(2)——矩陣的秩與向量組的秩
矩陣論(零):線性代數基礎知識整理(3)——矩陣的秩與向量組的秩
矩陣論(零):線性代數基礎知識整理(4)——線性空間與線性變換
矩陣論(零):線性代數基礎知識整理(5)——特徵值與相似
- 特徵值分解EVD
- 正規矩陣與EVD
- EVD得到矩陣的特徵值和特徵向量
- EVD的構造方法
- EVD用於求矩陣的逼近
- 實正規矩陣的正交相似擬對角化(拓展內容)
- 奇異值分解SVD
- SVD的存在性定理
- SVD的構造方法(簡介)
- SVD的性質
- SVD用於求矩陣的逼近
- SVD在推薦系統中的應用
特徵值分解EVD(正規矩陣)
與Schur分解不同的是,特徵值分解(又叫譜分解)要求將方陣酋對角化,這比schur分解的要求更高(Schur分解只是酋相似上三角化)。實際上,只有一類特殊的方陣才能進行特徵值分解,這類特殊的方陣是正規矩陣。下面介紹特徵值分解EVD。
-
定義(譜分解):設有n階方陣A。若存在n階酋矩陣U和對角矩陣Σ使得A=UΣUH,則稱A=UΣUH是A的一個譜分解
-
定義(正規矩陣):若n階方陣A滿足AHA=AAH,則稱A是正規矩陣
【注1】容易驗證Hermite矩陣(共軛對稱矩陣)、反Hermite矩陣、實對稱矩陣、實反對稱矩陣、酋矩陣、實正交矩陣等都是正規矩陣。正規矩陣實際上是內積空間上的正規變換在給定標準正交基下的矩陣,具體見鏈接。
【注2】這裏給出正規矩陣A的一個性質:N(A)=N(AH),R(A)=R(AH),其中N(∙),R(∙)分別表示零空間和列空間。雖然這個性質本文後面沒有用到,但卻是正規矩陣的一個常見性質。證明很簡單:Ax=0⟹xHAHAx=0⟹xHAAHx=0⟹∣∣AHx∣∣22=0⟹AHx=0,因此N(A)=N(AH),兩端取正交補就有R(AH)=R(A)。
-
引理6:任意一個上三角矩陣S,若S是正規矩陣,則S必然是對角矩陣
證明:(對S的階數n進行歸納)
當n=1時,S本身就是對角矩陣。假定結論對n-1成立,現證明結論對n也成立。設S=[S10Hba],其中a是一個標量,S1是一個n-1階上三角陣。計算可得SHS=[S1HS1bHS1S1HbbHb+aˉa],SSH=[S1S1H+bbHabHaˉbaaˉ],由SHS=SSH得bHb+aˉa=aaˉ,故bHb=∣∣b∣∣2=0,故b=0,故S1S1H+bbH=S1S1H=S1HS1,即S1是正規矩陣,由歸納假設知S1是對角矩陣。則S=[S10H0a]是對角矩陣,得證。
-
定理16:n階複方陣A酋相似於一個對角矩陣的充要條件爲A是正規矩陣
證明:
必要性:若A酋相似於一個對角矩陣,即存在酋矩陣U和對角矩陣Σ使得A=UΣUH,則AHA=UΣUHUΣUH=UΣΣUH,AAH=UΣUHUΣUH=UΣΣUH,注意到ΣΣ=ΣΣ,故AHA=AAH。
充分性:設A的Schur分解爲A=PTPH,其中P是酋矩陣,T是上三角矩陣。由A是正規矩陣,將A代入AHA=AAH得PTHTPH=PTTHPH,故THT=TTH,即上三角矩陣T是正規矩陣。於是由引理6知T是對角矩陣,故A酋相似於對角矩陣T。證畢。
EVD得到矩陣的特徵值和特徵向量
定理16說明僅正規矩陣可進行譜分解。在探討譜分解有何用處之前,我們先認識一下譜分解究竟是怎樣的,看看分解出來的對角矩陣是什麼,以及那個酋矩陣到底是什麼:
- 定理17:設正規矩陣A的譜分解爲A=UΣUH,則λ是A的特徵值的充要條件爲λ在Σ的主對角線上,且A的每個特徵值的代數重數等於其在Σ的主對角線上出現的次數
- 定理18:設n階正規矩陣A的譜分解爲A=UΣUH,且Σ=diag(λ1,...,λn),U=[u1⋯un],則ui是A對應於特徵值λi的特徵向量,且u1,...,un是Cn的標準正交基
證明:由A=UΣUH得AU=UΣ,故Aui=λiui,i=1,...,n,即ui是A對應於特徵值λi的特徵向量。因爲U是酋矩陣,所以u1,...,un是Cn的標準正交基。
【推論】n階正規矩陣有n個相互正交的特徵向量
【推論】n階正規矩陣的任意特徵值的幾何重數與代數重數相等
上面兩個定理的結論解釋了“特徵值分解”這個名稱的來源,之所以稱之爲特徵值分解,是因爲其既分解出了特徵值,還分解出了對應的特徵向量。特徵值分解還表明,正規矩陣的特徵值和特徵向量包含了原矩陣的“全部信息”,因此我們可以通過一定的方法利用特徵值和特徵向量重構出原矩陣。
EVD的構造方法
實際上,我們已經知道U的列向量組是A的單位正交特徵向量組,那麼怎麼求出A的n個單位正交的特徵向量呢?我們容易保證屬於同一特徵值的特徵向量間的正交性(只要求出該特徵值對應的特徵子空間的標準正交基即可),但是,如何保證不同特徵值的特徵向量間的正交性呢?實際上,正規矩陣本身的性質就保證了這一點。下面我們就來看看正規矩陣的性質:
- 定理19:設A是正規矩陣,則A和AH的特徵值互爲共軛,且A對應於λ的特徵子空間N(λI−A)與AH對應於λˉ的特徵子空間N(λˉI−AH)成立N(λI−A)=N(λˉI−AH)
證明:
將A譜分解得A=UΣUH,則AH=UΣUH。因爲Σ和Σ主對角線上對應的元素互爲共軛,所以A和AH的特徵值互爲共軛。又AU=UΣ,AHU=UΣ,且U的列向量組是正交向量組,所以A的特徵子空間N(λI−A)和AH的特徵子空間N(λˉI−AH)有同一組正交基,故結論成立。
- 定理20:設A是正規矩陣,則A對應於不同特徵值的特徵向量是正交的
證明:
設λ和μ是A的兩個不同特徵值,x和y分別是A的對應於λ和μ的特徵向量,即λ=μ,Ax=λx,Ay=μy,x=0,y=0。由定理19知μˉ是AH的特徵值,且由y∈N(μI−A),N(μI−A)=N(μˉI−AH)知y∈N(μˉI−AH),故AHy=μˉy。μˉxHy=xH(μˉy)=xHAHy=(Ax)Hy=λˉxHy故(μˉ−λˉ)xHy=0,由λ=μ知xHy=0,即x和y是正交的,得證。
上面的定理說明只要求出A的每個特徵值的特徵子空間的標準正交基,那麼所有的這些基向量一定兩兩正交。於是,我們有如下方法來求正規矩陣的特徵值分解:
注意,之所以我們構造出的矩陣U是酋矩陣,是因爲U的列向量組是單位正交的(其中對應於同一特徵值的特徵向量兩兩正交,對應於不同特徵值的特徵向量也兩兩正交)。而這樣的U一定可以保證構造出了A的一個譜分解:
因爲UHAU=⎣⎡u11H...usrsH⎦⎤[Au11...Ausrs]=⎣⎡u11H...usrsH⎦⎤[λ1u11...λsusrs]=⎣⎡λ1Ir1⋱λsIrs⎦⎤所以A=UΛUH是A的譜分解。
EVD的其他結論
譜分解還能得到其他一些有用的結論,如:
- 定理21:設n階正規矩陣A的譜分解爲A=UΣUH,則r(A)=r(Σ),即A的秩等於A的非零特徵值的個數(如果重特徵值按重數算的話),零特徵值的代數重數爲n−r(A)
- 定理22:共軛對稱矩陣A的特徵值都是實數
證:
因A是共軛對稱矩陣,故A是正規矩陣。考慮A的譜分解A=UΣUH,因爲AH=A,即UΣUH=UΣUH,所以Σ=Σ,則對角矩陣Σ的對角元都是實數,即A的特徵值都是實數。
此外,類似於schur分解,譜分解也可以加快矩陣的冪運算,且效果要更好。譜分解(酋相似對角化)是相似對角化的一個特殊情形,在相似對角化中有一個計算冪的經典例子:求斐波那契數列的通項,譜分解也能用在與之類似的情形。感興趣的讀者請參考鏈接。
機器學習應用中,常常遇到實矩陣而非復矩陣的問題。爲避免複數運算,提高效率,需儘可能熟悉實矩陣中的相關結論:
- 定理23:設A∈Rn×n,則A存在譜分解A=UΣUT(其中U是實正交矩陣,Σ是實對角矩陣)的充要條件爲A是實對稱矩陣
證明:
充分性:實對稱矩陣都是共軛對稱矩陣,故A的特徵值都是實數。考慮特徵方程(λI−A)x=0,由於λ是實數,A是實矩陣,故λI−A是實矩陣。取N(λI−A)的一組實向量基,根據前述譜分解的構造方法,可以構造出A的一個譜分解A=UΣUT,其中U是實正交矩陣,Σ是實對角矩陣。
必要性:設A存在譜分解A=UΣUT,其中U是實正交矩陣,Σ是實對角矩陣,則有AT=(UΣUT)T=UΣUT=A。
【注】該定理的一個等價表述爲:任意實對稱矩陣必可正交相似對角化。
EVD用於求矩陣的逼近
譜分解在機器學習中有重要的應用,一個典型的例子就是主成分分析(PCA)。主成分分析能夠將高維數據“壓縮”成低維數據,在去噪的同時還能保留原數據的大部分主要特徵。PCA算法會在後面的博客中詳細說,這裏我們大致瞭解一下如何求得正規矩陣的近似矩陣,以達到去噪的效果:
設n階正規矩陣A的特徵值分解爲A=UΣUH,且Σ=diag(λ1,...,λn),U=[u1⋯un]。則A=[u1⋯un]diag(λ1,...,λn)⎣⎡u1H⋯unH⎦⎤=[λ1u1⋯λnun]⎣⎡u1H⋯unH⎦⎤=Σi=1nλiuiuiH於是我們可以將原矩陣A看成是它的不同特徵的加權和。這樣我們就可以對A的特徵值按照模的大小排序,去掉模較小(注意特徵值是複數,在PCA中我們會對一個實對稱矩陣進行譜分解,此時特徵值都是實數,直接比較大小就行)的特徵值λ對應的項λuuH,也就是去掉權重較小的項,就得到了A的一個近似矩陣。(顯然,去掉模越接近0的特徵值的對應項,得到的矩陣與原矩陣的近似程度越高)
不過,由於特徵值分解的適用性有限,我們無法對任何矩陣都使用特徵值分解的方法來求近似矩陣。但是,後面要說的奇異值分解是適用於任意矩陣的,而奇異值分解出的奇異值和奇異向量就類似於特徵值和特徵向量的作用,故奇異值分解可以用來“分解任意矩陣的特徵”。在求任意矩陣的近似矩陣時,可以使用SVD的方法。
實正規矩陣的正交相似擬對角化(拓展內容)
我們在複數域下證明了正規矩陣必可酋對角化的結論,並且討論了實矩陣可正交相似對角化的充要條件(即必須是實對稱矩陣)。根據正規矩陣的定義可得,實正規矩陣就是滿足ATA=AAT的實矩陣。顯然,實對稱矩陣一定是實正規矩陣,但實正規矩陣不一定是實對稱陣(例如A=[1−111]),因此並非所有實正規矩陣都可以正交相似對角化。然而,我們可以將它們“近似”對角化,即正交相似擬對角化。
擬對角陣具有如下形式:⎣⎡R11⋱Rnn⎦⎤其中對角子塊Rii是1×1矩陣或2×2矩陣。擬對角陣是一種特殊的分塊對角陣,分塊對角陣也具有上述形式,只是對角子塊不一定必須是1×1矩陣或2×2矩陣,只要是方塊就行了。
- 引理7:任意實的擬上三角陣T,若T是正規矩陣,則T一定是擬對角陣,且T的對角子塊都是正規矩陣
證:(對T對角線上的子塊個數n進行歸納)
當n=1時,T本身就是正規的擬對角陣。假設命題對n⩽k−1成立,現證明命題對n=k也成立。設T=[T1OSR],其中R是1×1矩陣或2×2矩陣。TTT=[T1TSTORT][T1OSR]=[T1TT1STT1T1TSSTS+RTR]TTT=[T1OSR][T1TSTORT]=[T1T1T+SSTRSTSRTRRT]由TTT=TTT得T1TT1=T1T1T+SST且RRT=STS+RTR,tr(RRT)=tr(STS)+tr(RTR)=tr(STS)+tr(RRT),故tr(STS)=0,故S=O,RTR=RRT,T1TT1=T1T1T。於是T=[T1OOR],其中T1是有n−1個對角子塊的擬上三角陣,且T1是正規矩陣,故由歸納假設知T1是對角子塊均爲正規矩陣的擬對角陣。結合RTR=RRT就知道T也是對角子塊均爲正規矩陣的擬對角陣。證畢。
- 引理8:設D=[acbd]∈R2×2,若D是正規矩陣且D有一對共軛的虛特徵值,則d=a,c=−b且b=0
證:
根據D是正規矩陣可得b2=c2,ac+bd=ab+cd。假設b=c,考慮D的特徵方程λ2−(a+d)λ+(ad−bc)=0,這是一個二次方程,判別式Δ=(a+d)2−4(ad−bc)=(a−d)2+4b2⩾0,故D有實特徵值,這與已知條件矛盾。故假設不成立,b=c,根據b2=c2必有c=−b,再根據ac+bd=ab+cd可得b(d−a)=0。假設b=0,則c=−b=0,D成爲一對角陣,這也與已知條件矛盾。故假設不成立,必有b=0,因此必有d=a。證畢。
【注1】注意,虛數是指不是實數的複數,因此二階矩陣D有一對共軛的虛特徵值就意味着D沒有實特徵值。
【注2】在引理8的條件下,D的特徵值就是a±bi。
- 定理24:A∈Rn×n是正規矩陣的充要條件爲A正交相似於一個滿足如下條件的擬對角陣T:T=⎣⎡R11⋱Rnn⎦⎤其中對角子塊Rii是1×1矩陣或具有如下形式的2×2矩陣Rii=[a−bba]滿足b=0
證明:
必要性:根據定理15,存在A的實Schur分解A=PTPT,其中P是實正交矩陣,T是實的擬上三角陣,滿足T的對角子塊要麼是1×1矩陣,要麼是有一對共軛的虛特徵值的2×2矩陣。由A是正規矩陣,將上式代入ATA=AAT得PTTTPT=PTTTPT,故TTT=TTT,即T是正規矩陣。由引理7知T是擬對角陣,且T的每個對角子塊都是正規矩陣。任取T的一個2×2對角子塊Rii,則Rii是正規矩陣,且Rii有一對共軛的虛特徵值,於是由引理8知Rii具有形式Rii=[a−bba],其中b=0。得證。
充分性:若A正交相似於一個命題中所述的擬對角矩陣,即存在實正交矩陣U和擬對角陣T使得A=UTUT,其中T如命題所述。則ATA=UTTUTUTUT=UTTTUT,AAT=UTUTUTTUT=UTTTUT,注意到T的對角子塊都是正規矩陣(注意,1×1矩陣本身就是正規的,而具有形式[a−bba]的2×2矩陣經過計算可驗證是正規的),故TTT=TTT,故ATA=AAT。
【注】實際上,擬對角陣T可以限制得更嚴格一些,將原定理中的表述更改爲“其中對角子塊Rii是1×1矩陣或具有形式Rii=[a−bba]的2×2矩陣,滿足b>0”,則定理仍成立。這是因爲當b<0時,總是可以作正交相似變換[0110][a−bba][0110]=[a−b′b′a],使得b′=−b>0。
奇異值分解SVD(任意矩陣)
奇異值分解在機器學習領域的應用實在是太廣泛了:數據壓縮、推薦系統、自然語言處理等等到處都有它的身影。這裏介紹奇異值分解的數學推導,建議數學推導之外多瞭解一些應用和直觀的幾何解釋。推薦學習奇異值的幾何意義以及奇異值分解與特徵值分解的區別與聯繫,以上知乎鏈接中的回答多是從線性變換的角度來講解奇異值分解(實際上矩陣的幾何意義就是線性變換),這樣能夠較爲直觀得理解EVD和SVD。照片壓縮直觀地給出了奇異值分解在照片壓縮上呈現的效果。
- 定義:設A∈Crm×n,AHA的特徵值爲λ1⩾λ2⩾...⩾λr>λr+1=...=λn=0稱σi=λi(i=1,2,...,n)爲A的奇異值
【注1】關於AHA的特徵值爲什麼都是非負實數的問題請參考鏈接),注意奇異值都是非負的
【注2】因爲r(AHA)=r(A)=r,且AHA是一個n階正規矩陣,故AHA的零特徵值的代數重數是n−r,這就是爲什麼λr+1=...=λn=0
【注3】網上看到有的人把AHA和AAH的特徵值完全等同起來,這是不對的(它們差就差在零特徵值上)。對奇異值的定義就是採用AHA的特徵值來定義,用AAH來定義是不準確的。(不過這不會影響奇異值分解的結果)
奇異值的相關性質:
- 奇異值的酋不變性(旋轉不變性):
- 定理25:設U是酋矩陣,則UA的奇異值與A的奇異值相同
證明:(UA)H(UA)=AHUHUA=AHA,故由奇異值的定義得UA的奇異值與A的奇異值相同。
- 定理26:設U是酋矩陣,則AU的奇異值與A的奇異值相同
證明:(AU)H(AU)=UH(AHA)U,即(AU)H(AU)酋相似於AHA,故它們的特徵值相同,由奇異值的定義得AU的奇異值與A的奇異值相同。
- 逆矩陣的奇異值:
- 定理27:設A∈Cnn×n,則A的奇異值均非零。設A的奇異值爲σ1⩾σ2⩾⋯⩾σn>0,則A−1的奇異值爲1/σn⩾1/σn−1⩾⋯⩾1/σ1
證明:
由奇異值定義的註釋2知A的奇異值均爲正。設AAH的一個譜分解爲AAH=UΣUH,其中Σ=diag(λ1,λ2,⋯,λn),λ1⩾λ2⩾⋯⩾λn>0。由於AHA和AAH的非零特徵值相同,且同一非零特徵值的代數重數相等,於是由奇異值的定義得σi=λi,i=1,2,...,n。因爲(A−1)HA−1=(AAH)−1=UΣ−1UH,於是由奇異值的定義得A−1的奇異值爲1/λn⩾1/λn−1⩾⋯⩾1/λ1,即1/σn⩾1/σn−1⩾⋯⩾1/σ1。
- 正規矩陣的奇異值與特徵值的關係:
- 定理28:設正規矩陣A∈Cn×n的奇異值爲σ1⩾σ2⩾...⩾σn,特徵值爲λ1,λ2,...,λn滿足∣λ1∣⩾ ∣λ2∣⩾...⩾∣λn∣,則σi=∣λi∣,i=1,2,...,n
證明:
設A的一個譜分解爲A=UΣUH,其中Σ=diag(λ1,λ2,...,λn),則AHA=UΣUHUΣUH=UΣΣUH。注意到該式是AHA的一個譜分解,且ΣΣ的對角元爲∣λ1∣2⩾ ∣λ2∣2⩾...⩾∣λn∣2,故根據奇異值的定義得σi=∣λi∣,i=1,2,...,n。
定理28僅給出了正規矩陣的奇異值與特徵值之間的關係。實際上,對於一般的方陣而言,奇異值和特徵值之間也是有關係的(Shur不等式)。關於這一點的討論需要藉助Frobenius範數,詳見後面的博客(鏈接)。
下面我們進入奇異值分解。
SVD的存在性定理
- 定義1:設A∈Crm×n,若存在m階酋矩陣U和n階酋矩陣V,以及m×n廣義對角矩陣Λ=[ΣOOO],其中Σ=diag(σ1,...,σr),σ1⩾..⩾σr>0爲A的非零奇異值,使得A=UΛVH,則稱A=UΛVH是A的一個奇異值分解
【注1】由於在Σ的對角線上A的非零奇異值是從大到小排列的,故若A的奇異值分解存在,則Λ唯一。在有些資料的定義中,廣義對角矩陣Λ的對角線元素的大小順序可以是任意的,但一般來說爲便於分析更常約束Λ的對角線元素從大到小排列。
【注2】由於AHA和AAH的非零特徵值相同,且同一非零特徵值的代數重數相等,故A的非零奇異值既是AHA的非零特徵值的算數平方根,又是AAH的非零特徵值的算數平方根。
【注3】由奇異值分解的定義及注2知,若A=UΛVH是A的一個奇異值分解,則AH=VΛUH是AH的一個奇異值分解(但需注意的是,A的奇異值與AH的奇異值不完全等同,且只差在零奇異值上)
上述定義的條件可以減弱:
- 定義2:設A∈Cm×n,若存在m階酋矩陣U和n階酋矩陣V,以及m×n廣義對角矩陣Λ=[ΣOOO],其中Σ=diag(σ1,σ2,...,σr),σ1⩾σ2⩾...σr>0,使得A=UΛVH,則稱A=UΛVH是A的一個奇異值分解
【注】注意定義1和定義2的區別:定義1中設A∈Crm×n,而定義2中設A∈Cm×n,即r在定義1中指明爲A的秩,而在定義2中並未指明;定義1中直接指明σ1⩾σ2⩾...σr>0爲A的非零奇異值,而在定義2中並未指明
這兩個定義是等價的:
顯然若定義1的條件被滿足,則定義2的條件也被滿足(定義2的條件相較於定義1弱化了)。
若定義2的條件被滿足,則由r(A)=r(UΛVH)=r(Λ)=r(Σ)=r知A∈Crm×n(即r恰爲A的秩),注意到AHA=(UΛVH)H(UΛVH)=VΛTUHUΛVH=VΛTΛVH是AHA的一個譜分解,於是ΛTΛ的非零對角線元素σ12⩾σ22⩾...σr2>0恰爲AHA的非零特徵值,於是根據奇異值的定義得σ1⩾σ2⩾...σr>0是A的非零奇異值,即定義1的條件也被滿足。
下面我們證明任意矩陣的奇異值分解的存在性:
- 定理29:任意矩陣A∈Crm×n都存在奇異值分解A=UΛVH,其中U、V分別爲m、n階酋矩陣,Λ=[ΣOOO],Σ=diag(σ1,...,σr),σ1⩾..⩾σr爲A的非零奇異值
證明:
由於AHA是n階正規矩陣,故存在n階酋矩陣V使得VHAHAV=[Σ2OOO]。將V分塊V=[V1V2],其中V1是n×r矩陣,V2是r×n矩陣。則V1HAHAV1=Σ2,V2HAHAV2=O,即Σ−1V1HAHAV1Σ−1=Ir,(AV2)H(AV2)=O。設U1=AV1Σ−1,則有U1HU1=Ir,AV2=O。由於U1的列向量組爲單位正交向量組(注意是r個m維向量),故由擴充定理以及Schmidt正交化方法可將U1的列向量組擴充爲Cm的一組標準正交基,於是構造出m階酋矩陣U=[U1U2]。由UHAV=[U1HU2H]A[V1V2]=[U1HAV1U2HAV1U1HAV2U2HAV2]=[ΣOOO]=Λ知A=UΛVH就是A的一個奇異值分解。
【注】該定理的證明實際上就是通過將AHA進行譜分解構造出A的一個奇異值分解。若A是一實矩陣,使用類似的構造方法(不同之處在於AHA=ATA的譜分解應選擇“實的”譜分解,且應將U1的列向量組擴充爲Rm的標準正交基)可知,A存在“實的”奇異值分解,即A=UΛVT,其中U、V是實正交矩陣,Λ是實廣義對角矩陣。
SVD的構造方法(參考資料)
由定理29的證明過程可以看出,奇異值分解的構造是比較複雜的(先構造AHA的特徵值分解,再構造A的奇異值分解的話時間複雜度太高,且數值穩定性不好)。一般,奇異值分解採用如下算法:第一步用Householder變換將A化爲雙對角陣,第二步用QR分解或單邊Jacobi旋轉求雙對角陣的SVD,複雜度可以到O(mn2),且有很好的數值穩定性。(詳見英文維基百科)
SVD的性質
現在我們來認識一下奇異值分解的數學性質:
(以下均設A∈Crm×n且A=UΛVH是A的一個奇異值分解)
- 奇異值與奇異性的關係:若A是n階方陣,則∣det(A)∣=∣det(U)∣det(Λ)∣det(VH)∣=σ1σ2...σn,可見A是非奇異的等價於A的奇異值都不爲零
- 全奇異值分解與截尾奇異值分解:
- 全奇異值分解:就是前面我們所說的奇異值分解A=UΛVH。
- 截尾奇異值分解:設U=[U1U2],V=[V1V2],其中U1是U的前r列(注意r是A的秩),V1是V的前r列。則A=UΛVH=[U1U2][ΣrOOO][V1HV2H]=U1ΣrV1H。稱A=U1ΣrV1H爲A的截尾奇異值分解。
(注意:截尾奇異值分解表明,實際上酋矩陣U和V各自的子矩陣U1和V1和A的全部非零奇異值就已攜帶了原矩陣A的全部信息)
- 當A是滿秩方陣時,A的截尾奇異值分解和全奇異值分解是等同的
- 如果仔細觀察截尾奇異值分解式,會發現它是A的一個滿秩分解:A=U1(ΣrV1H),U1是一列滿秩矩陣,ΣrV1H是一行滿秩矩陣;或者A=(U1Σr)V1H,U1Σr是一列滿秩矩陣,V1H是一行滿秩矩陣;再或者A=(U1Σr)(ΣrV1H),其中Σr=diag(σ1,...,σr),U1Σr是一列滿秩矩陣,ΣrV1H是一行滿秩矩陣……等等。
- 認識酋矩陣U和V:
- 左奇異向量與右奇異向量:
U的列向量稱爲A的左奇異向量,V的列向量稱爲A的右奇異向量。
A的左奇異向量都是AAH的特徵向量,A的右奇異向量都是AHA的特徵向量。(原因:根據A=UΛVH,有AAH=UΛVHVΛTUH=U(ΛΛT)UH,注意這是AAH的一個譜分解,於是U的列向量都是AHA的特徵向量。同理,根據AHA=V(ΛTΛ)VH是AHA的一個譜分解就知道V的列向量都是AAH的特徵向量)
- 設U=[U1U2],其中U1是U的前r列(注意r是A的秩)構成的子矩陣。則U1的列向量組是A的列空間R(A)的標準正交基,U2的列向量組是AH的零空間N(AH)的標準正交基
(原因:觀察截尾奇異值分解式A=U1(ΣrV1H),可見A的列向量組可由U1的列向量組線性表示,又dim R(A)=r=r(U1),所以U1的列向量組是R(A)的標準正交基;計算可得AHU2=V1ΣrTU1HU2=V1ΣrTO=O,又dim N(AH)=m−r=r(U2),所以U2的列向量組是N(AH)的標準正交基)
【注】這說明奇異值分解可以用來求矩陣的列空間及其正交補的標準正交基。
- 設V=[V1V2],其中V1是V的前r列構成的子矩陣。則V1的列向量組是AH的列空間R(AH)的一組標準正交基,V2的列向量組是A的零空間N(A)的一組標準正交基
(原因和上面同理)
【注】這說明奇異值分解可以用來求矩陣的零空間及其正交補的標準正交基。
- SVD與EVD的關係
- 定理30:若A是Hermite半正定矩陣,則A的奇異值與A的特徵值完全等同,A的一個特徵值分解是A的一個奇異值分解
證明:
若A是Hermite半正定矩陣,則A的特徵值(爲實數)均非負。設n階方陣A的一個譜分解爲A=UΛUH,其中Λ=diag(λ1,...,λn),則AHA=A2=UΛUHUΛUH=UΛ2UH。這說明AHA的特徵值爲λ12,...,λn2,故由奇異值的定義知A的奇異值σi=λi2=λi,i=1,2,...,n,即A的奇異值與特徵值等同。進而由奇異值分解的定義知A=UΛUH是A的一個奇異值分解。
SVD用於求矩陣的逼近
奇異值分解可以視作方陣(正規矩陣)的特徵值分解在一般的長方矩陣上的推廣,奇異值和奇異向量是描述長方矩陣的特徵的量,這一點可以通過照片壓縮的例子直觀地理解。和特徵值分解一樣,奇異值分解可以改寫成矩陣的特徵的加權和:由A∈Crm×n的截尾奇異值分解式A=U1ΣrV1H,若設U1=[u1...ur],V1=[v1...vr],則有A=Σi=1rσiuiviH在求A的近似矩陣時,只要去掉奇異值較小的項即可(等價於在奇異值分解式中令對角矩陣上相應的奇異值爲零)。另外,注意到r(A)=r(U1ΣrV1H)=r(Σr),故每去掉A=Σi=1rσiuiviH中的一項,A的秩就減少1,所以這樣求得的近似矩陣實際上是對原矩陣的低秩逼近。這種方法可以實現對數據的去噪、壓縮等。還有一點比較有趣,σiuiviH是一個秩爲1的矩陣(因爲r(σiuiviH)⩽r(ui)=1且r(σiuiviH)⩾r(ui)+r(viH)−1=1),所以A=Σi=1rσiuiviH實際上是把A拆分成了若干獨立的低秩矩陣(秩爲1)的加權和,每個低秩項都可視作A的一個特徵項。
總的來說,每去掉A=Σi=1rσiuiviH中的一項,不僅去掉的是一個秩爲1的項,還恰好使A的秩減少了1。
SVD在推薦系統中的應用
奇異值分解的應用有很多,這裏簡單介紹一下SVD在推薦系統中的應用:
推薦算法可以分爲傳統的SVD方法和凸優化的方法,這裏介紹傳統的SVD算法。傳統算法中SVD的作用是提取每個user和每個item的主要特徵(實際上是對原評分矩陣做低秩逼近),用於計算每個item間的相似度或每個user間的相似度,如果利用user間的相似度來預測評分,就是User_based的算法;如果利用item間的相似度來預測評分,就是Item_based的算法。
設有n×m評分矩陣A(如上圖),A的(i,j)元素是User(j)對Item(i)的評分。通常A是一個稀疏矩陣,即A中大多數元素是未定義的,可以使用均值歸一化的方法填充(注意這裏的填充是爲了後續可計算,而不是作爲預測值):先算出每個item已有評分的均分,然後給該item的每個已有評分減去該item的均分,並用0填充該item下未定義的評分。
設填充好的評分矩陣是B。求出B的“實的”奇異值分解式B=UΛVT(U、Λ、V都是實矩陣),其中B的奇異值在Λ的對角線上從大到小排列,令Λ中B的最小的k個非零奇異值爲零(具體k取多少取決於你想保留原矩陣B的多少信息),就得到了B的一個低秩逼近矩陣C,C的截尾奇異值分解式是C=U1ΣV1T(如果保留了B的前l大奇異值,則U1就是U的前l列,V1就是V的前l列)。以User_based爲例,注意到U1的列向量組是C的列空間的標準正交基,於是可將C的每一列在該基下的座標向量求出(實際中不會求出矩陣C,所以實際計算時常是拿B的每一列求),得到了降維後User的特徵,於是可以計算任意兩個User間的相似度(餘弦相似度、歐式距離、皮爾遜相關係數等相似度函數均可)。
現在,若要預測User(j)對item(i)的評分(前提是User(j)未對item(i)打分),可以看看其他user對item(i)的評分是多少,將其他user與User(j)的相似度作爲權重係數,求出其他user對item(i)的評分的加權平均值,作爲User(j)對item(i)的評分的預測值。最後,推薦過程則是基於預測的評分,將預測評分較高的item推薦給用戶即可。
【補充】如何求C的列向量在已知C的列空間的標準正交基(即U1的列向量組)下的座標:設C的第i個列向量的座標向量是zi,Z=[z1...zn]。那麼就是要求得矩陣Z使得C=U1Z,兩端左乘U1T,得到U1TC=U1TU1Z=Z。故求Z的公式是Z=U1TC。