SVD 實例計算與理解

網上各種思想解釋SVD的太多了。這篇博文想從一個實際的矩陣出發,闡述SVD究竟幹了什麼。——非數學系的cver

0.基礎

我是通過這篇博文理解SVD基本意義的

1.初始理論部分

SVD的基本公式:
A=Um×mΣm×nVn×nT(1)A=U_{m\times m} \Sigma_{m\times n} V_{n\times n}^T \tag{1}
注意Um×mU_{m\times m}, Vn×nV_{n\times n}是不同尺寸的方陣。中間的
Σm×n=[Σ1000]\Sigma_{m\times n}=\begin{bmatrix}\Sigma_1 & 0 \\ 0 & 0\end{bmatrix}
Σ1=diag(σ1,σ1,,σr)\Sigma_1=diag(\sigma_1,\sigma_1,\dots,\sigma_r)
這個σi\sigma_i就是所謂的奇異值。也是特徵值開根號。

2.一個簡單的例子

借鑑這篇博客例子
我們要計算矩陣 A的奇異值分解。
A=[111100]A=\begin{bmatrix} 1&1\\1&1\\0&0\end{bmatrix}
這個時候要記得m=3,n=2。我們的問題變成了如(2)式展開分解。
A=U3×3Σ3×2V2×2T(2)A=U_{3\times 3} \Sigma_{3\times 2} V_{2\times 2}^T \tag{2}

  1. 計算協方差矩陣ATA=[2222]A^TA=\begin{bmatrix} 2&2 \\ 2&2 \end{bmatrix}
    這是個協方差矩陣,對其進行特徵分解,計算特徵值和特徵向量。
    特徵值 4, 0
    特徵向量 [12,12]T,[12,12]T[\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}}]^T, [-\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}}]^T

  2. 計算另一個方向的協方差AAT=[220220000]AA^T=\begin{bmatrix} 2&2&0\\2&2&0\\0&0&0\end{bmatrix}
    相當於對A做了轉置,計算其協方差,然後對其進行特徵分解,計算特徵值和特徵向量。
    特徵值 4,0,0
    特徵向量 [12,12,0]T,[12,12,0]T,[0,0,1]T[\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}},0]^T,[-\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}},0]^T,[0,0,1]^T

  3. 把兩個協方差矩陣的非零特徵值從大到小排列。(注意是非零
    這個是爲了求 Σ3×2\Sigma_{3\times 2}。注意其實只有一個非零特徵值4。而 Σmn=[Σ1000]\Sigma_{mn}=\begin{bmatrix}\Sigma_1 & 0 \\ 0 & 0\end{bmatrix}。所以維度剛好湊夠。需要清楚,兩個協方差矩陣的非零特徵值應該相同

  4. 最後,寫出SVD表達式
    A=UΣVT=[1212012120001][200000][12121212]T=[111100]A=U \Sigma V^T= \begin{bmatrix} \frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}}&0 \\ \frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 2&0 \\ 0&0 \\ 0&0 \end{bmatrix} {\begin{bmatrix} \frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}\end{bmatrix}}^T=\begin{bmatrix} 1&1\\1&1\\0&0\end{bmatrix}
    特徵向量按照特徵值大小排序,構成左奇異值矩陣和右奇異值矩陣。

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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章