前言
在高等代數裏,矩陣分解是一個十分基礎與重要的內容,任何一個學校對於理工科的研究生教育都會開設相應的課程,如:矩陣分析、矩陣論、線性系統等。看了不少社區的問答、筆記和博客,在它們的基礎上加入一些自己的理解,寫下這篇概念詳解,博客中借鑑了不少前人的觀點,這裏感謝他們的付出
一、特徵值分解(EVD)
把特徵值分解(EigenValue Decomposition,EVD)放在最前面說是因爲這是一個相對來說更基礎的概念,後面的一些分解方式會在這一基礎上進行推導
1.1 特徵值分解、特徵值、特徵向量
特徵值分解,是指將矩陣分解爲由其特徵值和特徵向量表示的矩陣之積的方法。一個NxN的方陣A可以有下式:
此時
令
這樣我們便可以得到矩陣A的
對於沒有重根的情況
1.2 特徵向量的求解
求解特徵向量有多種方法這裏介紹最簡單也是最常用的方法
計算A的特徵多項式
det|λI−A|=0 ,從而求得特徵值λi 對於單根特徵值來說,求齊次方程
(λiI−A)vi=0 ,即可求得該特徵值對應的特徵向量對於有重根的特徵值來說,可以使用一下公式,依次迭代求解
v1:Av1=λv1
v2:Av2=v1+λv2
v3:Av3=v2+λv3
⋅⋅⋅
vN:AvN=vN−1+λvN
1.3 特徵值與特徵向量的意義解釋
上面介紹了特徵值分解、特徵值與特徵向量的數學定義與求解方式,但是看到這裏,可能讀者對於特徵值分解的具體意義與作用還是模糊的,這也確實是一個比較難理解的地方。
我們知道,矩陣乘法其實是對應着一個線性變換,是把任意一個向量變成另一個方向或者長度的新向量。在這個變換中,原向量主要發生旋轉、伸縮的變化。如果矩陣對某一個向量或某些向量只發生伸縮變換,而不對這些向量產生旋轉效果,那麼這些向量就稱爲這個矩陣的特徵向量,伸縮的比例就是特徵值
例如,對於矩陣
M矩陣是對稱的,所以這個變換是一個對x,y軸的拉伸變換,此處將原方塊在x軸方向拉長了三倍。對於不是對稱的情況,如
看到這裏,大家應該明白了,特徵向量與特徵值對於一個矩陣的意義,每一個特徵向量都對應着這個矩陣在對另一個對象作線性變換時所產生變換的方向,而特徵值則表示着這個變化的大小。也就是說,矩陣A的信息可以由其特徵值和特徵向量表示。對於矩陣爲高維的情況下,這個變換就對應着很多方向的變化,我們通過特徵值分解得到的對應特徵值較大的前N個特徵向量,便表示了這個矩陣最主要的N個變化方向。我們利用這前N個變化方向,就可以近似這個矩陣的變換,而著名的主成分分析(Principle Conponent Analysis,PCA)便是基於這一原理實現的。
總而言之,通過特徵值分解我們可以得到特徵值與特徵向量,特徵向量表示這個特徵是什麼,而特徵值表示着這個特徵有多重要。同時,我們要意識到特徵值分解也有一定的侷限性,它的對象必須是方陣,而實際中的矩陣往往不是方陣,後面要說的奇異值分解將其演化到了普通形式的矩陣
二、相似對角化
2.1 相似矩陣的定義
設A、B是兩個n階方陣,如果存在可逆矩陣T,使得
矩陣的相似關係是一種等價關係(並不是相等),相似矩陣滿足以下特性
- 自反性:A~A
- 對稱性:若A~B,則B~A
- 傳遞性:若A~B,B~A,則A~C
2.2 相似對角化的條件與推論
N階方陣A與對角陣相似的前提是:A有N個線性無關的特徵向量。可以對角化即意味着存在某組基,使得這個矩陣所代表的線性變換在這組基的每一個方向上都是伸縮變換(復向量上的復“伸縮變換“近似於在某種意義上非剛性但依然線性的伸縮旋轉),不能對角化即意味着找不到這樣一組基
注:對於相似變換來說,有一些東西是變換前後沒有改變的
若
A∼Λ=diag(λ1,λ2,⋅⋅⋅,λN) ,則A與Λ 的特徵值相同,Λ 的主對角線元素λ1,λ2,⋅⋅⋅,λN 爲A的全部特徵值。相似變換的變換矩陣爲P=(p1,p2,⋅⋅⋅,pN) ,則列向量p1,p2,⋅⋅⋅,pN 依次是λ1,λ2,⋅⋅⋅,λN 對應的特徵向量相似變換矩陣不唯一,因爲特徵向量的排列順序可以發生變化
A∼Λ ,若不計Λi 的排列順序,則Λ 唯一,稱爲A的相似標準型
基於相似轉換的定義以及以上特性,我們可以得到一些重要的推論
2.2.1 推論一
若N階方陣A的n個特徵值互不相同,則A與對角陣相似,這是顯然的,因爲對應於不同特徵值的特徵向量線性無關,由此N個特徵向量可以產生N個線性無關的基向量
2.2.2 推論二
設
注:此處的
推論二的證明較爲繁瑣,感興趣的可以點擊這裏
2.2.3 推論三
如果N階方陣A可以對角化,則A的秩等於A的非零特徵值的個數。這也是很容易理解的,若A可以對角化,設與其相似的對角陣爲
那麼,對於那些不能對角化的矩陣我們該如何理解呢?這裏我借用知乎上一位匿名答主的回答向大家解釋:
可對角化的矩陣舉例如下,左圖爲原圖,右圖爲經過可以對角化的矩陣線性變換後的結果,箭頭表示着伸縮的方向,長度表示變換的大小
不能對角化的兩個變換如下,注意這種時候發生了切變,下圖的變換均不能表示爲各個方向獨立的伸縮,也不能表示爲帶伸縮的旋轉。圖中不從原點出發的箭頭表示切變的大小和方向
同時我們也應該注意到以上的四幅圖中,第二幅圖可以對角化的矩陣,它的jordan標準型是對角化的,而三、四幅圖,它的Jordan標準型不是對角化的。實際上第二幅圖的Jordan標準型就是變換矩陣對角相似化後的對角矩陣(在這裏我們也稱它爲對角標準型),對角標準型是Jordan標準型的特例
相似對角化是矩陣分析當中最基礎也是最重要的內容,在高等代數與工程問題中被廣泛運用,可以極大的簡化矩陣的運算,如計算方陣的高次冪、求矩陣行列式等
2.3 實對稱矩陣與相似對角化
看了第二節之後,我們知道,對於一般的方陣我們常常無法進行相似對角化來簡化矩陣,同時對於高維矩陣來說,對角化的條件難於判斷。在這一小節,要介紹一類一定可以實現對角化的矩陣——實對稱矩陣
2.3.1 實對稱矩陣的特徵值與特徵向量
實對稱矩陣的特徵值爲實數,對應的特徵向量爲實向量。設
可以據此推導
所以
2.3.2 實對稱矩陣正交相似於對角矩陣
若A是N階實對稱矩陣,
此時稱A正交相似於
那麼,這個正交變換矩陣該如何求出來呢?可以按照以下步驟:
- 求出A的全部特徵值
- 求出每個特徵值所對應的全部特徵向量
- 以特徵向量爲列向量寫出變換矩陣
- 使用Schmidt 正交化將變換矩陣正交化,單位化,得到正交矩陣Q
2.4 相似對角化與特徵值分解的區別
相似對角化與特徵值分解乍看上去是極爲相似的,它們都需要用到特徵值與特徵向量的概念,但其實有較大差別
目的:特徵值分解的目的在於矩陣分解,求得矩陣對應的特徵值與特徵向量;而相似對角化的目的在於通過變換矩陣的線性變換將原方陣轉換爲對角矩陣
條件:所有的方陣都可以進行特徵值分解得到對應的特徵值與特徵向量;只有當方陣的幾何重數與代數重數相等(方陣的最小多項式無重根)時,方陣纔可以實現對角化
結果:通過特徵值分解得到的特徵向量與特徵值可以構成對角標準型與jordan標準型(前者是後者的特例),其中Jordan標準型不是對角矩陣;而相似對角化得到的矩陣一定是對角矩陣
三、QR分解
QR分解是目前求取一般矩陣全部特徵值的最有效並且廣泛應用的辦法,它是將矩陣分解成爲一個正交矩陣Q和一個上三角矩陣R,所以稱爲QR分解。這一分解方法除了用於特徵值計算外,在參數估計和通信領域也有着廣泛的應用
3.1 QR分解的定義與推導
若
當
關於QR分解的證明,這裏根據Schmidt 正交化的方法給出當A爲列滿秩情況下的證明:
- 將
A 表示爲A=[x1,x2,⋅⋅⋅,xm] - 由於
A 滿秩,所以xi 之間線性獨立,通過Schmidt 正交化我們可以得到一組正交向量和一個上三角矩陣如下
- 這裏的T矩陣是Schmidt 正交化的變換矩陣,由於
tii=∥∥xi−∑i−1j=1<uj,xi>uj∥∥−1
矩陣T是非奇異的,同時T−1 也同樣爲上三角矩陣,令Q=U ,R=T−1 ,我們便可以得到A=QR
對於矩陣的QR分解其實還有很多種方法除了上面提到的Schmidt 正交化,還有利用矩陣的初等變換、利用Givens變換求QR分解等方法
3.2 QR分解的應用
QR分解在實際工程問題中得到了廣泛的應用,其核心還是圍繞着利用QR分解求解矩陣的特徵值進行的,這裏列舉出一些常見的例子
四、Schur分解
基於QR分解我們可以推導出Schur分解,同時,Schur分解也是很多重要理論推導的基石,是很多重要定理證明的出發點。在介紹Schur分解之前,我們需要先了解一下什麼是酉矩陣(unitary matrix)
4.1 什麼是酉矩陣?
4.1.1 “等距”(isometry)
對於一個矩陣 等距
(isometry),它的所有列向量是正交的。等距
作爲一個線性變換時是保內積運算,同時也是保模長運算,即
4.1.2 “協等距”(co-isometry)
對於一個矩陣 協等距
(isometry),它的所有的行向量是正交的。
4.1.3 酉矩陣(unitary matrix)
一個矩陣如果既滿足等距,又滿足協等距,我們便就稱它爲酉矩陣,它的最大特點在於
4.2 Schur分解的定義與推導
方陣
記
xi 爲對應於特徵值λi 的特徵向量,令X1=[x1,x2,⋅⋅⋅,xn] 對
X1 進行QR分解,可以得到X1=Q1R1 ,Q1 這裏是酉矩陣,R1 是上三角矩陣。要注意的是Q1 的第一列仍然是A 對應於特徵值λi 的特徵向量,因此有
QH1AQ1=[λ10∗A1]
這裏A1ϵC(n−1)×(n−1) ,它的特徵值爲λ2,⋅⋅⋅,λn 使用同樣的步驟,我們又可以得到一個酉矩陣
Q2ϵC(n−1)×(n−1) ,得到
QH2A1Q2=[λ20∗A2]
再令
U2=[100Q2]
於是有
U_{2}^{H}Q_{1}^{H}AQ_{1}U_{2} = ⎡⎣⎢⎢λ100∗λ20∗∗A2⎤⎦⎥⎥ -重複上述步驟,得到酉矩陣
QiϵC(n−i+1)×(n−i+1) 可以使
QHiAi−1Qi=[λi0∗Ai]
以及UiϵCn×n
Ui=[I00Qi] 最後矩陣
U=Q1U2⋅⋅⋅Un−1 即爲所求的酉矩陣
4.3 Schur分解的缺陷
Schur分解將原方陣轉化爲了一個對角線爲特徵值的上三角矩陣,在這一章節的開頭已經說過Schur分解是很多重要定理推導的基石與出發點。但是矩陣的Schur分解,在更多意義上是一種理論上的存在,在實際中通常不方便通過有限次運算得到,真正要計算時,一般也是通過迭代的方法進行逼近
五、奇異值分解(SVD)
我們在第一章節中就介紹了特徵值分解,這是一個很好的提取矩陣特徵的方法,但是,特徵值分解只能對方陣使用,在實際問題中,我們解決問題所遇到的矩陣往往都不是方陣,那麼,我們怎麼樣來描述一個普通矩陣的重要特徵呢?奇異值分解爲我們提供了一種可以用於任意矩陣分解的方法,這是這篇文章中最重要也是最核心的部分
5.1奇異值分解的定義與推導
對於一個矩陣
其中
奇異值分解的推導可以從特徵值分解開始
首先,我們對n階對稱方陣
ATA 作特徵值分解,得到
ATA=VΛVT 通過特徵值分解我們得到一組正交基
V=(v1,v2,⋅⋅⋅,vn) ,滿足如下性質
(ATA)vi=λivi
由於ATA 爲對稱矩陣,vi 之間兩兩相互正交,所以有
<Avi,Avj>=vTi(ATA)vj=vTiλjvj=λjvTivj=0 因爲
rank(ATA)=rank(A)=r ,我們可以得到另一組正交基Av1,Av1,⋅⋅⋅,Avr 將其標準化有
ui=Avi|Avi|=1λ√Avi
Avi=λi‾‾√ui=δiui
注:
|Avi|2=<Avi,Avi>=λivTivi=λi 將向量組
(u1,u2,⋅⋅⋅,ur) 擴充爲Fm 中的標準正交基(u1,u2,⋅⋅⋅,ur,⋅⋅⋅,um) 則:
AV=A(v1,v2,⋅⋅⋅,vn)=(Av1,Av2,⋅⋅⋅,Avr,0,⋅⋅⋅,0)=(δ1u1,δ2u2,⋅⋅⋅,δrur,0,⋅⋅⋅,0)=UΛ
由此,可以得到奇異值分解的形式
A=UΛVT
5.2 奇異值分解的求解
我們現在已經知道了奇異值分解的具體形式,那麼奇異值和奇異向量到底怎樣求解呢?
5.2.1奇異值的計算
對於較小維度的矩陣,我們可以從奇異值分解的推導中看出,奇異值
δi=λi‾‾√ 。於是可以通過求解原矩陣的轉置與其自身相乘得到的矩陣的特徵值,再對該特徵值求平方根的方法求得矩陣的奇異值高緯度的矩陣的奇異值的計算是一個難題,是一個O(N^3)的算法,隨着規模的增長,計算的複雜度會呈現出3次方的擴大,感興趣的朋友可以看這裏
5.2.1奇異向量的計算
在奇異值分解中,有一個十分重要的推論,那就是在式
5.3 奇異值分解的意義
奇異值分解的目的在於,找到一組正交基,使得矩陣在變換過後是正交的,這是奇異值分解的精髓所在。
5.3.1 數據降維壓縮
奇異值往往對應着矩陣中隱含的重要信息,且重要性和奇異值的大小正相關,對於這一解釋的最大應用就在與圖像的壓縮。可以將矩陣表示爲若干個秩一矩陣之和
我們知道,矩陣的奇異值一般按照降序排列即
一般來說,前10%甚至1%的奇異值之和就可以佔到全部奇異值的99%以上,也就是說,我們可以使用奇異值較大的一些特徵來表示圖像,省略去較小的奇異值(絕大多數奇異值),來實現圖像的降維壓縮,這裏以知乎上的一名匿名網友的回答爲例
左上:原圖 ; 右上:保留前五項 ; 左下:保留前二十項 ; 右下:保留前五十項
原圖的維度遠遠超過10000維,而通過奇異值分解,從上圖可以看出,我們只需要保留前50項,就可以很好的復原圖像,即實現圖像的壓縮。除了實現對圖像的壓縮外,奇異值分解在好友推薦算法,工業過程故障診斷等領域均有廣泛應用。
5.3.2 幾何的線性變換
奇異值分解的幾何意義與特徵值分解也極爲相似,即奇異向量代表着線性變換的方向,而奇異值表示着在這個方向上變化的大小。這裏舉一個較爲有名的橢圓變換爲例
假設矩陣A的奇異值分解爲
其中
令
推廣到一般情形:一般矩陣A將單位球
參考文獻:
- 特徵值分解部分
[1] http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html
[2] http://blog.csdn.net/jinshengtao/article/details/18448355
[3] https://wenku.baidu.com/view/3ec0a4ddaeaad1f346933f42.html
[4] http://www.doc88.com/p-9009713157157.html
[5] https://wenku.baidu.com/view/f14c18215901020207409c97.html
[6] https://www.zhihu.com/question/22548386
[7] https://github.com/LiangjunFeng/Machine-Learning/blob/master/8.PCA.py
[8] Bhushan Datta K. Linear system theory and design, by Chi‐Tsong Chen, Oxford University Press, New York, 1999, 334 pages, ISBN 0‐19‐511777‐8[J]. International Journal of Robust & Nonlinear Control, 2015, 10(15):1360-1362. - 相似對角化部分
[1] https://wenku.baidu.com/view/c22c4a708e9951e79b892760.html
[2] https://www.zhihu.com/question/36187051
[3] https://wenku.baidu.com/view/347b97466edb6f1aff001f98.html
[4] https://wenku.baidu.com/view/21cd4a9f32d4b14e852458fb770bf78a65293ac2.html
[5] https://en.wikipedia.org/wiki/Shear_stress
[6] http://www.doc88.com/p-7178359679199.html
[7] https://wenku.baidu.com/view/f83d600084254b35effd3401.html
[8] https://wenku.baidu.com/view/41a43f0316fc700abb68fca5.html
[9] https://en.wikipedia.org/wiki/Orthogonal_matrix - QR分解部分
[1] https://wenku.baidu.com/view/bf00c82cf8c75fbfc77db2da.html
[2] http://blog.sina.com.cn/s/blog_3f41287a0101ke2s.html
[3] http://blog.csdn.net/zhaogang1993/article/details/42562009
[4] http://johnhany.net/2016/05/from-qr-decomposition-to-pca-to-face-recognition/ - Schur分解部分
[1] https://baike.baidu.com/item/%E9%85%89%E7%9F%A9%E9%98%B5/2967660
[2] https://wenku.baidu.com/view/65aff9174431b90d6c85c7b9.html
[3] https://wenku.baidu.com/view/257d4dc10722192e4436f654.html
[4] http://www.doc88.com/p-6791891160524.html
[5] http://blog.csdn.net/makeway123/article/details/17803991
[6] https://www.zhihu.com/question/20903131 - 奇異值分解部分
[1] http://blog.csdn.net/zhongkejingwang/article/details/43053513
[2] https://www.zhihu.com/question/22237507
[3] http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html
[4] http://blog.csdn.net/jinshengtao/article/details/18448355
[5] https://wenku.baidu.com/view/38693ef2e109581b6bd97f19227916888486b916.html
[6] https://wenku.baidu.com/view/3ec0a4ddaeaad1f346933f42.html
[7] http://www.cnblogs.com/liangzh/archive/2013/03/05/2841025.html
[8] http://www.ams.org/samplings/feature-column/fcarc-svd
[9] http://charleshm.github.io/2016/03/Singularly-Valuable-Decomposition/
[10] http://blog.csdn.net/zhuiqiuk/article/details/69390357