網上各種思想解釋SVD的太多了。這篇博文想從一個實際的矩陣出發,闡述SVD究竟幹了什麼。——非數學系的cver
0.基礎
我是通過這篇博文理解SVD基本意義的
1.初始理論部分
SVD的基本公式:
A=Um×mΣm×nVn×nT(1)
注意Um×m, Vn×n是不同尺寸的方陣。中間的
Σm×n=[Σ1000]
Σ1=diag(σ1,σ1,…,σr)
這個σi就是所謂的奇異值。也是特徵值開根號。
2.一個簡單的例子
借鑑這篇博客例子。
我們要計算矩陣 A的奇異值分解。
A=⎣⎡110110⎦⎤
這個時候要記得m=3,n=2。我們的問題變成了如(2)式展開分解。
A=U3×3Σ3×2V2×2T(2)
-
計算協方差矩陣ATA=[2222]
這是個協方差矩陣,對其進行特徵分解,計算特徵值和特徵向量。
特徵值 4, 0
特徵向量 [21,21]T,[−21,21]T
-
計算另一個方向的協方差AAT=⎣⎡220220000⎦⎤
相當於對A做了轉置,計算其協方差,然後對其進行特徵分解,計算特徵值和特徵向量。
特徵值 4,0,0
特徵向量 [21,21,0]T,[−21,21,0]T,[0,0,1]T
-
把兩個協方差矩陣的非零特徵值從大到小排列。(注意是非零)
這個是爲了求 Σ3×2。注意其實只有一個非零特徵值4。而 Σmn=[Σ1000]。所以維度剛好湊夠。需要清楚,兩個協方差矩陣的非零特徵值應該相同。
-
最後,寫出SVD表達式
A=UΣVT=⎣⎡21210−21210001⎦⎤⎣⎡200000⎦⎤[2121−2121]T=⎣⎡110110⎦⎤
特徵向量按照特徵值大小排序,構成左奇異值矩陣和右奇異值矩陣。
3. 理 解 SVD
我們可以首先類比PCA(主成分分析法),首先,特徵值只能作用在一個m* m的正方矩陣上,而奇異值分解則可以作用在一個m*n的長方矩陣上。其次,奇異值分解同時包含了旋轉、縮放和投影三種作用,(1)式中,U和V都起到了對A旋轉的作用,而Σ起到了對A縮放的作用。特徵值分解只有縮放的效果。PCA只用到了一個協方差矩陣,但是奇異值分解相當於兩個方向做PCA,所以其實PCA可以使用SVD實現。
網上看到有人畫了個草圖,如下。然後說在幾何中,我們可以把矩陣看做空間上的線性變換。奇異值分解的幾何含義是:對於任何的一個矩陣,我們都能找到一組座標軸,它是由原來的座標軸通過旋轉和縮放得到的。奇異值的含義是:這組變換後新的座標軸的長度。這個U我不知道
4.reference
1.https://towardsdatascience.com/svd-8c2f72e264f
2.https://byjiang.com/2017/11/18/SVD/
3.https://bainingchao.github.io/2018/10/11/%E4%B8%80%E6%AD%A5%E6%AD%A5%E6%95%99%E4%BD%A0%E8%BD%BB%E6%9D%BE%E5%AD%A6%E5%A5%87%E5%BC%82%E5%80%BC%E5%88%86%E8%A7%A3SVD%E9%99%8D%E7%BB%B4%E7%AE%97%E6%B3%95/