奇異值分解法是線性代數中一種重要的矩陣分解法,在信號處理、統計學等領域有重要應用。定義:設A為m*n階矩陣,A'表示A的轉置矩陣,A'*A的n個特徵值的非負平方根叫作A的奇異值。記為σi(A)。如果把A『*A的特徵值記為λi(A『*A),則σi(A)=sqrt(λi(A』*A))。奇異矩陣:奇異矩陣是線性代數的概念,就是對應的行列式等於0的矩陣。奇異矩陣的判斷方法:首先,看這個矩陣是不是方陣(即行數和列數相等的矩陣。若行數和列數不相等,那就談不上奇異矩陣和非奇異矩陣)。然後,再看此方陣的行列式|A|是否等於0,若等於0,稱矩陣A為奇異矩陣;若不等於0,稱矩陣A為非奇異矩陣。 同時,由|A|≠0可知矩陣A可逆,這樣可以得出另外一個重要結論:可逆矩陣就是非奇異矩陣,非奇異矩陣也是可逆矩陣。如果A為奇異矩陣,則AX=0有非零解或無解。如果A為非奇異矩陣,則AX=0有且只有唯一零解。svd設A為m*n階矩陣,A'表示A的轉置矩陣,
A'*A的n個特徵值的非負平方根叫作A的奇異值。記為σi(A)。這幾天做實驗涉及到奇異值分解svd(singular value decomposition),涉及到這樣的一個問題,
做PCA時候400幅圖像拉成向量按列擺放,結果擺成了比如說10000*400大小的矩陣,用到svd函數進行奇異值分解找主分量,結果MATLAB提示超出內存,後來想起還有個函數叫svds,看到別人用過,以為只是一個變體,沒什麼區別,就用上了,結果確實在預料之中。但是今天覺得不放心,跑到變量裡面看了下,發現這個大的矩陣被分解成了
三個10000*6,6*6,400*6大小的矩陣的乘積,而不是普通的svd分解得到的10000*10000,10000*400,400*400大小的矩陣乘積,把我嚇了一跳,都得到預期的結果,難不成這裡還出個簍子?趕緊試驗,發現
任給一個M*N大小的矩陣,都是被分解成了M*6,6*6,N*6大小的矩陣的乘積,為什麼都會出現6呢?確實很納悶。help svds看了一下,發現SVDS(A) 返回的就是
svds返回的就是最大的6個特徵值及其對應的特徵行向量和特徵列向量,還好,我們實驗中是在svds得到列向量中再取前5個最大的列向量,這個與普通的svd得到的結果是一致的,虛驚一場。還得到了一些別的,比如
改變這個默認的設置,比如用[u,d,v]=svds(A,10)將得到最大的10個特徵值及其對應的最大特徵行向量和特徵列向量,[
u,d,v]=svds(A,10,0)將得到最小的10個特徵值及其對應的特徵行向量和特徵列向量,[u,d,v]=svds(A,10,2)將得到與2最接近的10個特徵值及其對應的特徵行向量和特徵列向量。總之,相比svd,svds的可定製性更強。奇異值分解非常有用,對於矩陣A(m*n),存在U(m*m),V(n*n),S(m*n),滿足A = U*S*V』。
U和V中分別是A的奇異向量,而S是A的奇異值。AA'的正交單位特徵向量組成U,特徵值組成S'S,
A'A的正交單位特徵向量組成V,特徵值(與AA'相同)組成SS'。因此,奇異值分解和特徵值問題緊密聯繫定理和推論
定理:設A為m*n階復矩陣,則存在m階酉陣U和n階酉陣V,使得:
A = U*S*V』
其中S=diag(σi,σ2,……,σr),σi>0 (i=1,…,r),r=rank(A)。
推論:
設A為m*n階實矩陣,則存在m階正交陣U和n階正交陣V,使得
A = U*S*V』
其中S=diag(σi,σ2,……,σr),σi>0 (i=1,…,r),r=rank(A)。
說明:
1、 奇異值分解非常有用,對於矩陣A(m*n),存在U(m*m),V(n*n),S(m*n),滿足A = U*S*V』。U和V中分別是A的奇異向量,而S是A的奇異值。AA'的正交單位特徵向量組成U,特徵值組成S'S,A'A的正交單位特徵向量組成V,特徵值(與AA'相同)組成SS'。因此,奇異值分解和特徵值問題緊密聯繫。
2、 奇異值分解提供了一些關於A的信息,例如非零奇異值的數目(S的階數)和A的秩相同,一旦秩r確定,那麼U的前r列構成了A的列向量空間的正交基。
matlab奇異值分解
函數 svd
格式 s = svd (A) %返回矩陣A的奇異值向量
[U,S,V] = svd(A) %返回一個與A同大小的對角矩陣S,兩個酉矩陣U和V,且滿足= U*S*V'。若A為m×n陣,則U為m×m陣,V為n×n陣。奇異值在S的對角線上,非負且按降序排列
[U1,S1,V1]=svd(X,0) %產生A的「經濟型」分解,只計算出矩陣U的前n列和n×n階的S。
說明:
1.「經濟型」分解節省存儲空間。
2. U*S*V'=U1*S1*V1'。[1]
矩陣近似值
奇異值分解在統計中的主要應用為主成分分析(PCA),它是一種數據分析方法,用來找出大量數據中所隱含的「模式」,它可以用在模式識別,數據壓縮等方面。PCA算法的作用是把數據集映射到低維空間中去。
數據集的特徵值(在SVD中用奇異值表徵)按照重要性排列,降維的過程就是捨棄不重要的特徵向量的過程,而剩下的特徵向量張成空間為降維後的空間。
正交矩陣正交矩陣是實數特殊化的酉矩陣,因此總是正規矩陣。儘管我們在這裡只考慮實數矩陣,這個定義可用於其元素來自任何域的矩陣。正交矩陣畢竟是從內積自然引出的,對於複數的矩陣這導致了歸一要求。注意正交矩陣的定義:n階『實矩陣』 A稱為正交矩陣,如果:A×A′=E(E為單位矩陣,A'表示「矩陣A的轉置矩陣」。) 若A為正交陣,則下列諸條件是等價的:1) A 是正交矩陣2) A×A′=E(E為單位矩陣)3) A′是正交矩陣4) A的各行是單位向量且兩兩正交5) A的各列是單位向量且兩兩正交6) (Ax,Ay)=(x,y) x,y∈R