本文主要介紹矩陣的兩種經典的分解算法:滿秩分解和奇異值分解。這兩塊內容很是基礎,同時卻又很是重要,在機器學習,模式識別,人工智能等領域有着很是普遍的應用。html
滿秩分解
定義與性質
定義1 滿秩分解:對於
m×n
的矩陣
A
,假設其秩爲
r
,若存在秩一樣爲
r
兩個矩陣:
Fm×r
(列滿秩)和
Gr×n
(行滿秩),使得
A=FG
,則稱其爲矩陣
A
的滿秩分解。web
定理1:滿秩分解有兩個性質,算法
- 滿秩分解不惟一:假設存在
r
階可逆方陣
D
,則
A=FG=F(DD−1)G=(FD)(D−1G)=F′G′
;
- 任何非零矩陣必定存在滿秩分解。證實以下;
假設存在初等變換矩陣
Bm×m
,使得機器學習
BA=(GO)(1)
其中
G
是個
m×r
的行滿秩矩陣。由上面的公式,能夠推出,svg
A=B−1(GO)=(F|S)(GO)=FG(2)
公式第二行中,咱們將
B−1
分塊爲
(F|S)
,其中
F
爲
m×r
矩陣(秩爲
r
),
G
爲
r×n
矩陣(秩爲
r
)。學習
滿秩分解的計算
若是能理解上面的證實過程,那麼計算滿秩分解就很容易了,由於方法與證實思路是一致的。人工智能
舉個例子來講明,如今要計算下面矩陣
A
的滿秩分解:atom
A=⎛⎝⎜−1120221−1−221−1⎞⎠⎟(3)
首先,對
A
進行初等變換,獲得行滿秩矩陣
G
和初等矩陣
B
.spa
A=⎛⎝⎜⎜−1120221−1−221−1100010001⎞⎠⎟⎟→⎛⎝⎜⎜−10002010023011101−1001⎞⎠⎟⎟(4)
可見,.net
B=⎛⎝⎜11101−1001⎞⎠⎟,G=(−10021023)(5)
接着,能夠算出
B−1=⎛⎝⎜1−1−2011001⎞⎠⎟=(F|S)(6)
由於
r=2
,因此能夠獲得
F=⎛⎝⎜1−1−2011⎞⎠⎟(7)
所以
A=FG=⎛⎝⎜1−1−2011⎞⎠⎟⋅(−10021023)(8)
另外一種計算滿秩分解的方法是用矩陣
A
的Hermite標準型。具體作法以下。
Hermite標準型
先給出Hermite標準型的定義。
定義2 Hermite標準型:對於
m×n
的矩陣
H
,假設其秩爲
r
,若
H
知足如下3個條件,則稱之爲Hermite標準型。
-
H
的前
r
行中,每行都至少含一個非零元素,且每行的第一個非零元是1,然後
m−r
行都是零元;
- 假設第
i
行的第一個非零元(就是1)在第
ji
列,則
j1<j2<⋯<jr
;
-
H
的
j1,j2,…,jr
列是單位矩陣
Em
的前
r
行(這個條件實際上覆蓋了前2個條件);
由定義能夠看出Hermite標準型就是將秩爲
r
的
m×n
矩陣經初等變換而成的階梯型矩陣。因此也叫作Hermite最簡型。
算出Hermite標準型後,對於矩陣的滿秩分解
A=FG
來講,矩陣
F
就是矩陣
A
中
j1,j2,…,jr
列構成的
m×r
矩陣,而
G
則是
H
的前
r
行構成的矩陣。
還舉上面的例子,先變換獲得矩陣
A
的Hermite標準型:
A=⎛⎝⎜−1120221−1−221−1⎞⎠⎟→⎛⎝⎜100010−10023/20⎞⎠⎟=H(9)
H
前兩行第一個非零元所在的列號是1列和2列,因此
F=⎛⎝⎜−112022⎞⎠⎟,G=(1001−1023/2)(10)
特徵值分解(EVD)
特徵值分解是對於對稱矩陣的一個經典的分解算法,它也是後面我要說的奇異值分解的基礎。因此有必要專門列一個小節,大體介紹一下。
正交矩陣
在介紹特徵值分解以前,先科普一個概念——正交矩陣。
定義3 正交矩陣:指知足
AAT=E
的矩陣
A
,其中
E
爲單位矩陣。
正交矩陣是歐式空間的叫法,在酉空間(即複數域上的歐式空間)叫酉矩陣。從定義也能看出正交矩陣有着不少特殊的性質:
-
A
的各行(列)是單位向量且兩兩正交;
-
A
在任意一組標準正交基下對應的線性變換爲正交變換(即只旋轉向量,卻不改變向量之間的夾角和向量長度)
-
|A|=±1
-
AT=A−1
正交陣的概念先擺在這,後面用到我再提。
特徵值與特徵向量
定義4 特徵值與特徵向量:設
A
爲數域P上的線性空間V的一個線性變換,若是對於P中一數
λ0
,存在非零向量
ξ
,使得下式成立,那麼
λ0
稱爲
A
的一個特徵值,而
ξ
稱爲
A
的屬於特徵值
λ0
的一個特徵向量,即
Aξ=λ0ξ(11)
計算一個線性變換
A
的特徵值與特徵向量的方法能夠分爲如下三步。
- 指定線性空間內的一組基,並寫出
A
在這組基下的矩陣
A
;
- 求出
A
的特徵多項式
|λE−A|
在數域P的所有根(幾重根就算幾個),這些根就是
A
的所有特徵值;
- 把所得的特徵值逐個帶入
AX=λiX
,求出關於每一個特徵值的一組基礎解系,也就是所有的線性無關的特徵向量;
我舉例解釋一下:假設有線性變換
A
在基
ε1,ε2,ε3
下的矩陣是
A
,如今求它的特徵值和特徵向量。
A=⎛⎝⎜122212221⎞⎠⎟(12)
其特徵多項式
|λE−A|=(λ+1)2+(λ−5)
,解得
λ1=−1
(二重),
λ2=5
。將
λ1=−1
代入方程組
AX=−X
,解得基礎解系是:
⎛⎝⎜10−1⎞⎠⎟,⎛⎝⎜01−1⎞⎠⎟(13)
所以,能夠獲得屬於特徵值-1的兩個線性無關的特徵向量:
ξ1=ε1−ε3,ξ2=ε2−ε3
.
同理,也能夠求出屬於特徵值5的特徵向量
ξ3=ε1+ε2+ε3
.
瞭解了特徵值和特徵向量,能夠給出特徵子空間和矩陣跡的概念了,以下。
定義5 特徵子空間:咱們把屬於特徵值
λ0
的全部特徵向量加上零向量構成的空間稱爲
λ0
對應的特徵子空間(記爲
Vλ0
),
Vλ0
的維數就是屬於
λ0
的全部線性無關的特徵向量的個數
定義6 矩陣的跡:矩陣
A
的全體特徵值的和爲
A
的跡,記爲
Tr(A)
。實際上,經過證實咱們還能夠知道
Tr(A)
也等於
A
的主對角線上全部元素的和,即
Tr(A)=a11+a22+⋯+ann
。
下面我再補充一個重要的概念——類似矩陣。
類似矩陣
定義7 類似矩陣:
A,B
爲兩個
n
階矩陣,若是存在
n
階矩陣
X
使得
B=X−1AX
成立,則
A,B
被稱爲是類似的,記爲
A
~
B
。
上面說到每個線性變換在不一樣基下對應着不一樣的矩陣,那這些矩陣有什麼關係呢?有以下定理:
定理2:線性變換在不一樣的基下所對應的矩陣是類似的,反之,若兩個矩陣類似,則它們能夠被看做是同一個線性變換在不一樣基下的矩陣。
理解了類似矩陣的概念,咱們接着探究類似矩陣與特徵多項式的關係,有以下定理:
定理3:類似的矩陣有相同的特徵多項式。證實以下,
咱們知道,若
A
~
B
,則有可逆矩陣
X
,使得
B=X−1AX
,那能夠作出以下的推導:
|λE−B|=|λE−X−1AX|=|X−1(λE−A)X|=|X−1||λE−A||X|=|λE−A|(14)
根據定理2,咱們知道,同一個線性變換在不一樣的基下所對應的矩陣是類似的,而定理3告訴咱們類似的矩陣有相同的特徵多項式,那也就說明了一個問題:即線性變換矩陣的特徵多項式與選擇的基是無關的。
對角矩陣
對角矩陣即除了主對角線中的元素外,其餘元素都爲0的矩陣。對角矩陣和線性變換的結合很是緊密,有以下定理存在:
定理4:線性變換
A
在某一組基下式對角矩陣的充要條件是,
A
有
n
個線性無關的特徵向量。
定理5:屬於不一樣特徵值的特徵向量是線性無關的。
特徵值分解的計算
咱們知道對於一個
n×n
的對稱矩陣
A
來講(即
AT=A
),它與對角矩陣是類似的(證實我略了),那他能夠被看做是一個對角陣對應的線性變換
A
在另外一組基下的矩陣,由於對角陣有
n
個線性無關的特徵向量,而屬於不一樣特徵值的特徵向量是線性無關的,因此咱們說對稱陣
A
必定有
n
個特徵值(重根算多個)。
綜上,能夠獲得:
AX1AX2AXn=λ1X1=λ1X2…=λ1Xn(31)
化簡一下,上式能夠寫成:
AU=UΛ
,其中
U=(X1,X2,…,Xn)
,
Λ=⎛⎝⎜⎜⎜⎜⎜λ10⋮00λ2⋮0……⋱…00⋮λn⎞⎠⎟⎟⎟⎟⎟(16)
由於對稱陣有一個性質:不一樣特徵值對應的特徵向量兩兩正交。因此此處
U
即爲正交陣(正交陣的概念上面說了,至於正交陣的每一列是單位向量的問題,你對特徵值作處理就完了)。
綜上,一個對稱陣的特徵值分解能夠寫成:
A=UΛU−1=UΛUT
,其中
U
是正交矩陣,每一個列向量有
A
對應的歸一化的特徵向量構成。
如今對於任意的
n
維向量
Y
來講,能夠經過矩陣
A
實現相應的線性變換。
AY=UΛUTY(17)
其中
UTY
至關因而對
Y
作了一個正交變換。根據前面介紹的正交變換相關知識,正交變換至關因而對向量
Y
換了一個座標系,而新座標系的基就是
A
的全部特徵向量(即
U
的全部列向量),所以,
UTY=(a1,…,an)
,
a1,…,an
至關因而
Y
在新座標系下的座標.
繼續化簡上面的公式,
AY=UΛUTY=UΛ(a1,…,an)=U⎛⎝⎜⎜⎜⎜⎜λ10⋮00λ2⋮0……⋱…00⋮λn⎞⎠⎟⎟⎟⎟⎟(a1,…,an)=U⎛⎝⎜⎜⎜⎜λ1a1λ2a2⋮λ1a1⎞⎠⎟⎟⎟⎟(18)
λiai
至關因而對向量
y
在新的座標系下沿對應的軸方向進行了拉伸或者壓縮,並無改變向量實際的方向,最後再左乘
U
至關於對當前的向量再次進行正交變換,由於
U
是
UT
的逆矩陣,因此這是一個與
UT
的變換相反的變換。綜上,對陣矩陣
A
所對應的變換實際上能夠將一組正交基映射爲另外一組正交基。
奇異值分解(SVD)
奇異值
上面說了一大推,其實就是介紹了對陣矩陣的一個性質:即把一組正交基映射爲另外一組正交基。對於任意的
m×n
的矩陣
A
,
A
能夠將
n
維空間中的向量映射到
k
維空間中(
k≤m
),那麼如今來探究可否找到這樣一組
n
維正交基,使之通過
A
的變換後,仍是正交基。尋找這樣正交基的過程,就是SVD的核心思路。
好了,先假設存在這樣的正交基
(V1,V2,…,Vn)
,
|Vi|=1
,通過
A
映射後變爲
(AV1,AV2,…,AVn)
(實際上,這裏的
AVi
都是
m
維向量)。既然他們兩兩正交,那麼就得知足下面的公式。
(AVi)(AVj)=(AVi)T⋅AVj=VTi(ATA)Vj=0(19)
如今來證實這個公式是成立的(成立的話表示正交基找到了)。由於我在假設中,設置的
(V1,V2,…,Vn)
是一組正交基,因此,
VTiVj=0
。我把這個結論先放這(下面的公式要用)。接着想,如今
ATA
是個
n×n
的對稱矩陣。由於對稱矩陣必定有
n
個特徵值,其特徵向量兩兩正交,那我就假設
(V1,V2,…,Vn)
是
ATA
的特徵向量,能夠獲得
VTi(ATA)Vj=VTiλjVj=λjVTiVj=0(20)
這樣我就證實了
(AV1,AV2,…,AVn)
是一組正交向量。再對這組正交向量作歸一化處理,構成一組新的正交基。先計算每一個
AVi
的模數:
|AVi|2=λiVTiVi=λi(21)
取單位向量後,獲得
ui=1λi√AVi
,其中
σi=λi−−√
被稱爲是矩陣
A
的奇異值,它實際上就是對稱陣
ATA
的特徵值的算數平方根。而
(u1,…,un)
則是一組通過歸一化處理的,兩兩正交的
m
維向量的集合,在這個集合當中,咱們固然能夠找到一組
k
維空間的正交基(
k≤m,k≤n
)。
上一段的最後一句話能夠這樣理解:假設
m=3,k=2,n=3
,
u1=(1,0,0),u2=(0,1,0),u3=(0,0,0)
,
u1,u2,u3
兩兩正交,咱們天然能夠找到
k=2
維空間的正交基:
u′1=(1,0),u′2=(0,1)
分解過程
上面獲得的正交基對咱們很是重要,它能夠用來作奇異值分解。咱們先明確這樣一個關係:
σiu′i=AVi,i∈{1,…,k}
,如今我作以下兩組正交基的拓展工做:
- 生成
(u′1,…,u′m)
。它是由
(u′1,…,u′k)
拓展生成的
m
維空間的正交基
- 已知
(V1,…,Vn)
是
n
維空間中一組兩兩正交的向量,其中,
(Vk+1,…,Vn)
使得
AVi=0,i∈{k+1,…,n}
那麼,有下面的公式成立:
A(V1,…,Vk|Vk+1,…,Vn)=(AV1,…,AVk|O,…,O)=(u′1,…,u′k|u′k+1,…,u′m)⎛⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜σ1−⋱−Oσk−−O−O−⎞⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟(22)
繼而能夠獲得奇異值分解的公式:
A=UΣVT=(u′1,…,u′m)⋅⎛⎝⎜⎜⎜⎜⎜σ1⋱σkO⎞⎠⎟⎟⎟⎟⎟⋅⎛⎝⎜⎜V1⋮Vn⎞⎠⎟⎟(23)
其中
U
是
m×m
的正交陣,
Σ
是
m×n
的對角陣,
V
是
n×n
的正交陣。
更具體地說,
U
是由
ATA
的特徵向量通過
A
變換而來的標準化的
m×m
正交陣,
Σ
是由矩陣
ATA
的特徵值構成的的算數平方根構成的
m×n
的對角陣(秩爲
k
),
V
是由
ATA
的特徵向量構成的
n×n
的正交陣。
計算實例
我舉個例子,看看SVD究竟是如何計算的。如今分解矩陣
A=⎛⎝⎜011110⎞⎠⎟(24)
根據
A
,可知參數
m=3,n=2,k=2
.
先計算
ATA
的特徵值和對應的特徵向量:
λ1=3,V1=⎛⎝12√12√⎞⎠,λ2=1,V2=⎛⎝−12√12√⎞⎠(25)
根據上面的分析,這裏
V1,V2
構成了奇異值分解中的矩陣
V
;
再計算奇異值,也就是
ATA
的特徵值,解得
λ1=3,λ2=1,λ3=0
。其中
λ1−−√,λ2−−√
構成了對角矩陣主對角線上的元素。
最後計算
V1,V2
通過
A
變換後的向量。固然,此時只有
k=2
個
m
維向量,而咱們須要
m
個
m
維向量去構造矩陣
U
,你能夠計算
AVi
,而後再使用正交基的擴充方法,可是有點複雜,一種更簡單的思路是,既然
AAT
是
m×m
對稱陣,而
u′1,…,u′m
是
AAT
的特徵向量,因此直接計算
AAT
的特徵向量,再作歸一化處理便可:
u1=⎛⎝⎜⎜⎜16√26√16√⎞⎠⎟⎟⎟,u2=⎛⎝⎜⎜⎜12√0−12√⎞⎠⎟⎟⎟,u3=⎛⎝⎜⎜⎜13√−13√13√⎞⎠⎟⎟⎟(26)
u1,u2,u3
構成了奇異值分解中的矩陣
U
.
綜上,矩陣
A
被以下分解:
A=⎛⎝⎜⎜⎜16√26√16√12√0−12√13√−13√13√⎞⎠⎟⎟⎟⎛⎝⎜3–√00010⎞⎠⎟⎛⎝12√−12√12√12√⎞⎠(27)
結論:最後再把奇異值分解總結一下,任意
m×n
矩陣
A
,能夠被分解爲
A=UΣVT
,其中,
-
U
:
m×m
矩陣,每一個列向量由對稱陣
AAT