SVD奇異值分解可運用在降維算法PCA中進行特徵分解,在機器學習等領域有廣泛應用,所以很有必要將它搞清楚。
優秀文章:https://www.cnblogs.com/pinard/p/6251584.html
一、特徵值與特徵向量
其中,A是一個n×n的方陣,x爲n維向量,是一個實數。那麼,x爲A的一個特徵向量,爲A的一個特徵值。這樣我們可以將矩陣A特徵分解,如果我們求出了A的k個特徵值λ1≤λ2≤...≤λk,和對應的n個特徵向量x1->x2->...->xk。如果這些特徵向量線性無關,那麼矩陣A就可以用下面式子進行特徵分解。
其中,W爲{x1,x2,...,xk},即A的k個特徵向量組成的n×k的矩陣,爲以k個特徵值做主對角線的對角矩陣。一般的,我們會把這k個特徵向量標準化(二範數爲1),那麼就會有,則會有下式。
列向量的線性組合結果是權重向量的延伸。特徵值與特徵矩陣的計算如下。
要進行特徵分解,矩陣A必須爲方陣,若A不是方陣時,我們使用SVD。
二、SVD的定義
其中,A是一個M*N的矩陣,U是一個M×M的矩陣,同上是一個M*N對角矩陣,主對角線由奇異值組成的奇異矩陣,V同上是一個N*N的酉矩陣,有,且有,分別爲左右奇異矩陣。
三、SVD的應用
如圖所示,奇異值與特徵值類似,在奇異矩陣中,奇異值也是從大到小排列的,我們可以使用最大的k個奇異值和左右2k個奇異向量來表示原矩陣A。