SVD(奇異值分解)演算法
基礎知識:
行階梯型矩陣特點為:每個階梯只有一行;元素不全為零的行(非零行)的第一個非零元素所在列的下標隨著行標的增大而嚴格增大(列標一定不小於行標);
元素全為零的行(如果有的話)必在矩陣的最下面幾行。
行最簡形矩陣:
在階梯形矩陣中,若非零行的第一個非零元素全是1,且非零行的第一個元素1所在列的其餘元素全為零,就稱該矩陣為行最簡形矩陣
標準形矩陣
在最簡形矩陣中,非零行有且只有一個非零元素且為1,則稱該矩陣為標準形矩陣。 例如矩陣矩陣變換
下列三種變換稱為矩陣的行初等變換: (1)對調兩行; (2)以非零數k乘以某一行的所有元素; (3)把某一行所有元素的k倍加到另一行對應元素上去。 將定義中的“行”換成“列”,即得到矩陣的初等列變換的定義。矩陣的初等行變換與矩陣的初等列變換,統稱為矩陣的初等變換。 有如下定理成立: (1)任一矩陣可經過有限次初等行變換化成階梯形矩陣; (2)任一矩陣可經過有限次初等行變換化成行最簡形矩陣; (3)矩陣在經過初等行變換化為最簡形矩陣後,再經過初等列變換,還可以化為最簡形矩陣,因此,任一矩陣可經過有限次初等變換化成標準形矩陣。 行階k階子式:任取k行,k列交叉處k^2個元素,構成的k階行列式 設在矩陣A中 (1)若存在一個r階非零子式; (2)所有r+1階子式全為0 則稱r為矩陣A的秩,R(A)=r(最高階非零子式) 注意(1)R(O)=0,O:零矩陣 (2)最高階非零子式不唯一 (3)若A為行階梯形矩陣,則R(A) =非零行數
如何求一個矩陣的秩? 把矩陣變換為行階梯型矩陣,因為矩陣的初等變換不改變矩陣的秩 方陣行列式與秩之間的關係(方陣才有行列式) 方陣A滿秩<==>|A|!=0 <==>A可逆 方陣A降秩<==>|A|=0
(2)A等價B
(4)n:A的列數和B的行數
(5)伴隨矩陣
伴隨矩陣的定義:
線性相關
實對稱矩陣
如果有n階矩陣A,其矩陣的元素都為實數,且矩陣A的轉置等於其本身(aij=aji),(i,j為元素的腳標),則稱A為實對稱矩陣。
主要性質: 1.實對稱矩陣A的不同特徵值對應的特徵向量是正交的。 2.實對稱矩陣A的特徵值都是實數,特徵向量都是實向量。 3.n階實對稱矩陣A必可相似對角化,且相似對角陣上的元素即為矩陣本身特徵值。 4.若A具有k重特徵值λ0 必有k個線性無關的特徵向量,或者說秩r(λ0E-A)必為n-k,其中E為奇異值
奇異值是矩陣裡的概念,一般通過奇異值分解定理求得。設A為m*n階矩陣,q=min(m,n),A*A的q個非負特徵值的算術平方根叫作A的奇異值正交矩陣
一個正交矩陣對應的變換叫正交變換,這個變換的特點是不改變向量的尺寸和向量間的夾角,那麼它到底是個什麼樣的變換呢?
圖1
假設二維空間中的一個向量OA,它在標準座標系也即e1、e2表示的座標是中表示為(a,b)'(用'表示轉置,座標向量是列向量),
現在把它用另一組座標e1'、e2'表示為(a',b')',存在矩陣U使得(a',b')'=U(a,b)',則U即為正交矩陣。從圖中可以看到,正交變換隻是將變換向量用另一組正交基表示,
在這個過程中並沒有對向量做拉伸,也不改變向量的空間位置,對兩個向量同時做正交變換,那麼變換前後這兩個向量的夾角顯然不會改變。
上面的例子只是正交變換的一個方面,即旋轉變換,可以把e1'、e2'座標系看做是e1、e2座標系經過旋轉某個斯塔角度得到,怎麼樣得到該旋轉矩陣U呢?
a'和b'實際上是x在e1'和e2'軸上的投影大小(圖1),所以直接做內積可得
從圖1中可以看到
所以
正交陣U行(列)向量之間都是單位正交向量(行之間、列之間)。上面求得的是一個旋轉矩陣,它對向量做旋轉變換!
也許你會有疑問:剛才不是說向量空間位置不變嗎?怎麼現在又說它被旋轉了?對的,這兩個並沒有衝突,說空間位置不變是絕對的,但是座標是相對的,
你站在e1上看OA,隨著e1旋轉到e1',看OA的位置就會改變。如下圖:
圖2
如圖2,如果我選擇了e1'、e2'作為新的標準座標系,那麼在新座標系中OA(原標準座標系的表示)就變成了OA',這樣看來就好像座標系不動,
把OA往順時針方向旋轉了一定角度,這個操作實現起來很簡單:將變換後的向量座標仍然表示在當前座標系中。
旋轉變換是正交變換的一個方面,這個挺有用的,比如在開發中需要實現某種旋轉效果,直接可以用旋轉變換實現。
正交變換的另一個方面是反射變換,也即e1'的方向與圖中方向相反,這個不再討論。
總結:正交矩陣的行(列)向量都是兩兩正交的單位向量,正交矩陣對應的變換為正交變換,它有兩種表現:旋轉和反射。
正交矩陣將標準正交基對映為標準正交基(即圖中從e1、e2到e1'、e2')
特徵值分解——EVD(需是方陣)
對稱矩陣有一個很優美的性質:它總能相似對角化,對稱矩陣不同特徵值對應的特徵向量兩兩正交。一個矩陣能相似對角化即說明其特徵子空間即為其列空間,
若不能對角化則其特徵子空間為列空間的子空間。現在假設存在mxm的滿秩對稱矩陣A,它有m個不同的特徵值,設特徵值為,
對應的單位特徵向量為,那麼可得:
因此
所以可得到A的特徵值分解(由於對稱陣特徵向量兩兩正交,所以U為正交陣,正交陣的逆矩陣等於其轉置)
這裡假設A有m個不同的特徵值,實際上,只要A是對稱矩陣其均有如上分解。U:m*m
矩陣A分解了,相應的其對應的對映也分解為三個對映。現在假設有x向量,用A將其變換到A的列空間中,那麼首先由U'先對x做變換:
U是正交陣U'也是正交陣,所以U'對x的變換是正交變換,它將x用新的座標系來表示,這個座標系就是A的所有正交的特徵向量構成的座標系。
比如將x用A的所有特徵向量表示為:
則通過第一個變換就可以把x表示為[a1 a2 ... am]':(參考圖2)
緊接著,在新的座標系表示下,由中間那個對角矩陣對新的向量座標換,其結果就是將向量往各個軸方向拉伸或壓縮:
如果A不是滿秩的話,那麼就是說對角陣的對角線上元素存在0,這時候就會導致維度退化,這樣就會使對映後的向量落入m維空間的子空間中。
最後一個變換就是U對拉伸或壓縮後的向量做變換,由於U和U'是互為逆矩陣,所以U變換是U'變換的逆變換。(lam1*x1,lam2*x2......)
因此,從對稱陣的分解對應的對映分解來分析一個矩陣的變換特點是非常直觀的。假設對稱陣特徵值全為1那麼顯然它就是單位陣,如果對稱陣的特徵值有個別是0其他全是1,那麼它就是一個正交投影矩陣,它將m維向量投影到它的列空間中。
根據對稱陣A的特徵向量,如果A是2*2的,那麼就可以在二維平面中找到這樣一個矩形,是的這個矩形經過A變換後還是矩形:(a,b)--->(lam1*a,lam2*b)
這個矩形的選擇就是讓其邊都落在A的特徵向量方向上,如果選擇其他矩形的話變換後的圖形就不是矩形了!
奇異值分解——SVD
上面的特徵值分解的A矩陣是對稱矩陣,根據EVD可以找到一個(超)矩形使得變換後還是(超)矩形,也即A可以將一組正交基對映到另一組正交基!
那麼現在來分析:對任意M*N的矩陣,能否找到一組正交基使得經過它變換後還是正交基?答案是肯定的,它就是SVD分解的精髓所在。
現在假設存在M*N矩陣A,事實上,A矩陣將n維空間中的向量對映到k(k<=m)維空間中,k=Rank(A)。現在的目標就是:在n維空間中找一組正交基,
使得經過A變換後還是正交的。假設已經找到這樣一組正交基:
則A矩陣將這組基對映為:
如果要使他們兩兩正交,即
根據假設,存在
所以如果正交基v選擇為A'A的特徵向量的話,由於A'A是對稱陣,v之間兩兩正交,那麼
這樣就找到了正交基使其對映後還是正交基了,現在,將對映後的正交基單位化:
因為
vi:單位
所以有
所以取單位向量
由此可得
當k < i <= m時,對u1,u2,...,uk進行擴充套件u(k+1),...,um,使得u1,u2,...,um為m維空間中的一組正交基,即
同樣的,對v1,v2,...,vk進行擴充套件v(k+1),...,vn(這n-k個向量存在於A的零空間中,即Ax=0的解空間的基),使得v1,v2,...,vn為n維空間中的一組正交基,即
則可得到
繼而可以得到A矩陣的奇異值分解:
對角矩陣 對角線上的元素被稱為矩陣 A 的奇異值(singular value)。矩陣 U 的列向量被稱為左奇異向量(left singular vector),矩陣 V 的列向量被稱右奇異向量(right singular vector)。
事實上,我們可以用與 A 相關的特徵分解去解釋 A 的奇異值分解。即:U是的特徵向量。V是的特徵向量。A 的非零奇異值即D中非零值是特徵值的算術平方根,同時也是特徵值的算術平方根。
現在可以來對A矩陣的對映過程進行分析了:如果在n維空間中找到一個(超)矩形,其邊都落在A'A的特徵向量的方向上,那麼經過A變換後的形狀仍然為(超)矩形!
奇異值分解可以用於降噪、影象壓縮、推薦演算法等中。
參考連結:https://www.cnblogs.com/dtpromise/articles/11423005.html