SVD 学习笔记
本文主要學習了這篇博客:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html,將SVD講的恨透,特征值講的也非常好。
?
特征值
矩陣分解時可以將矩陣用一組兩兩正交的基表示,也就是一組特征向量,而特征值就是表示每個特征向量的重要程度的數值。
?
奇異值
特征值是對方陣來說的,對于非方陣我們該怎么辦呢,我們仿照特征分解,就有了下面的式子
?
假設A是一個M*N的矩陣,那么得到的U是一個M * M的方陣(里面的向量是正交的,U里面的向量稱為左奇異向量),Σ是一個M *N的矩陣(除了對角線的元素都是0,對角線上的元素稱為奇異值),V’(V的轉置)是一個N * N的矩陣,里面的向量也是正交的,V里面的向量稱為右奇異向量),從圖片來反映幾個相乘的矩陣的大小可得下面的圖片(PS:下圖中用顏色方塊的形狀大概表示矩陣的形狀)
?
?
而關于奇異值的具體求解,wikipedia?上講的還是很好的。
?
注:一下為特異值的求解
對于任意的奇異值分解,矩陣Σ的對角線上的元素等于M的奇異值.?U和V的列分別是奇異值中的左、右奇異向量。
奇異值分解在意義上看很一般,因此它可以適用于任意m×n矩陣,而特征分解只能適用于特定類型的方陣。不過,這兩個分解之間是有關聯的。 給定一個M的奇異值分解,根據上面的論述,兩者的關系式如下:
關系式的右邊描述了關系式左邊的特征值分解。于是:
- V(右奇異向量)的列是的特征向量。
- U(左奇異向量)的列是的特征向量。
- Σ(非零奇異值)的非零元素是或者中非零特征值的平方根。
?
奇異值σ跟特征值類似,在矩陣Σ中也是從大到小排列,而且σ的減少特別的快,在很多情況下,前10%甚至1%的奇異值的和就占了全部的奇異值之和的99%以上了。也就是說,我們也可以用前r大的奇異值來近似描述矩陣,這里定義一下部分奇異值分解:
??? r是一個遠小于m、n的數,這樣矩陣的乘法看起來像是下面的樣子:?
??? 右邊的三個矩陣相乘的結果將會是一個接近于A的矩陣,在這兒,r越接近于n,則相乘的結果越接近于A。而這三個矩陣的面積之和(在存儲觀點來說,矩陣面積越小,存儲量就越小)要遠遠小于原始的矩陣A,我們如果想要壓縮空間來表示原矩陣A,我們存下這里的三個矩陣:U、Σ、V就好了。
?
好,到這里SVD就相當于講完了,其核心思想就一點用前10%甚至1%的奇異值表示了全部的奇異值,因為在很多情況下,前10%甚至1%的奇異值的和就占了全部的奇異值之和的99%以上了,這樣做可以大大的減少數據的存儲和計算。
轉載于:https://www.cnblogs.com/hqqxyy/p/3391290.html
總結
- 上一篇: STL中各容器和适配器类的定义
- 下一篇: OpenCV基本步骤(初步学习)