本文主要學習了這篇博客:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html,將SVD講的恨透,特徵值講的也很是好。html
特徵值app
矩陣分解時能夠將矩陣用一組兩兩正交的基表示,也就是一組特徵向量,而特徵值就是表示每一個特徵向量的重要程度的數值。學習
奇異值spa
特徵值是對方陣來講的,對於非方陣咱們該怎麼辦呢,咱們仿照特徵分解,就有了下面的式子htm
假設A是一個M*N的矩陣,那麼獲得的U是一個M * M的方陣(裏面的向量是正交的,U裏面的向量稱爲左奇異向量),Σ是一個M *N的矩陣(除了對角線的元素都是0,對角線上的元素稱爲奇異值),V’(V的轉置)是一個N * N的矩陣,裏面的向量也是正交的,V裏面的向量稱爲右奇異向量),從圖片來反映幾個相乘的矩陣的大小可得下面的圖片(PS:下圖中用顏色方塊的形狀大概表示矩陣的形狀)blog
而關於奇異值的具體求解,wikipedia 上講的仍是很好的。圖片
注:一下爲特異值的求解ip
對於任意的奇異值分解,矩陣Σ的對角線上的元素等於M的奇異值. U和V的列分別是奇異值中的左、右奇異向量。get
奇異值分解在乎義上看很通常,所以它能夠適用於任意m×n矩陣,而特徵分解只能適用於特定類型的方陣。不過,這兩個分解之間是有關聯的。 給定一個M的奇異值分解,根據上面的論述,二者的關係式以下:博客
關係式的右邊描述了關係式左邊的特徵值分解。因而:
奇異值σ跟特徵值相似,在矩陣Σ中也是從大到小排列,並且σ的減小特別的快,在不少狀況下,前10%甚至1%的奇異值的和就佔了所有的奇異值之和的99%以上了。也就是說,咱們也能夠用前r大的奇異值來近似描述矩陣,這裏定義一下部分奇異值分解:
r是一個遠小於m、n的數,這樣矩陣的乘法看起來像是下面的樣子:
右邊的三個矩陣相乘的結果將會是一個接近於A的矩陣,在這兒,r越接近於n,則相乘的結果越接近於A。而這三個矩陣的面積之和(在存儲觀點來講,矩陣面積越小,存儲量就越小)要遠遠小於原始的矩陣A,咱們若是想要壓縮空間來表示原矩陣A,咱們存下這裏的三個矩陣:U、Σ、V就行了。
好,到這裏SVD就至關於講完了,其核心思想就一點用前10%甚至1%的奇異值表示了所有的奇異值,由於在不少狀況下,前10%甚至1%的奇異值的和就佔了所有的奇異值之和的99%以上了,這樣作能夠大大的減小數據的存儲和計算。