SVD(Singular Value Decomposition)奇異值分解

譜分解

線性代數中,特徵分解(Eigendecomposition),又稱譜分解(Spectral decomposition)是將矩陣分解爲由其特徵值和特徵向量表示的矩陣之積的方法。

譜定理

如果矩陣M是個正規矩陣,那麼M可以進行如下分解:
A=UΛUH\mathbf{A}=\mathbf{U} \mathbf{\Lambda} \mathbf{U}^{\mathrm{H}}
其中UU是由A的特徵向量組成的酉矩陣,Λ\Lambda是A的特徵值組成的對角矩陣。
即將正規矩陣分解爲酉矩陣和對角矩陣。

譜分解的缺陷

由於譜分解具有侷限性,既要求矩陣是方陣,又要求矩陣滿足交換律,在現實中滿足該條件的矩陣比較少。對於一般的mnm*n的矩陣,可通過SVD進行分解。

SVD定義

SVD定義:對於一個mnm*n的矩陣A,其中的元素來自整個數域(包括實數和複數),那麼M可以分解爲以下三個矩陣的形式

A=UΣVH\mathbf{A}=\mathbf{U} \mathbf{\Sigma} \mathbf{V}^{H}
其中UUVV分別爲mmm*mnnn*n的酉矩陣,Σ\Sigma是個mnm*n的非負對角矩陣,對角線上的元素即爲奇異值。(奇異值可以看做是特徵值的絕對值)
其中
Σ=[σ1000000000σr0000000000]\Sigma=\left[\begin{array}{cccccc} \sigma_{1} & 0 & 0 & 0 & \cdots & 0 \\ 0 & \ddots & 0 & \vdots & \cdots & 0 \\ 0 & 0 & \sigma_{r} & 0 & \cdots & 0 \\ 0 & \cdots & 0 & 0 & \cdots & 0 \\ \vdots & \ddots & \vdots & \vdots & \ddots & \vdots \\ 0 & \cdots & 0 & 0 & \cdots & 0 \end{array}\right]
σi\sigma_{i}表示i個奇異值

SVD求解

假設σi\sigma_{i}爲矩陣A的非零特徵值, i=1,2,…r(r等於矩陣A的秩),
那麼σi2\sigma_{i}^{2}AAHAA^HAHAA^HA的非零特徵值。
AAH=UΣVHVΣHUH=U(ΣΣH)UHAHA=VΣHUHUΣVH=V(ΣHΣ)VH \begin{array}{l} \mathbf{A A}^{\mathrm{H}}=\mathbf{U} \mathbf{\Sigma} \mathbf{V}^{\mathrm{H}} \mathbf{V} \mathbf{\Sigma}^{\mathrm{H}} \mathbf{U}^{\mathrm{H}}=\mathbf{U}\left(\mathbf{\Sigma} \mathbf{\Sigma}^{\mathrm{H}}\right) \mathbf{U}^{\mathrm{H}} \\ \mathbf{A}^{\mathrm{H}} \mathbf{A}=\mathbf{V} \mathbf{\Sigma}^{\mathrm{H}} \mathbf{U}^{\mathrm{H}} \mathbf{U} \mathbf{\Sigma} \mathbf{V}^{\mathrm{H}}=\mathbf{V}\left(\mathbf{\Sigma}^{\mathrm{H}} \mathbf{\Sigma}\right) \mathbf{V}^{\mathrm{H}} \end{array}
其中 ΣΣH\mathbf{\Sigma} \mathbf{\Sigma}^{\mathrm{H}}ΣHΣ\boldsymbol{\Sigma}^{\mathrm{H}} \boldsymbol{\Sigma}都是對角線元素爲σi2\sigma_{i}^{2}的對角矩陣。
那麼從上述式子中我們可以知道,UVU和V分別爲AAH\mathbf{A} \mathbf{A}^{\mathrm{H}}AHA\mathbf{A}^{\mathrm{H}} \mathbf{A}的特徵向量(由譜定理得到)。

  1. U和V可以通過AAH\mathbf{A} \mathbf{A}^{\mathrm{H}}AHA\mathbf{A}^{\mathrm{H}} \mathbf{A}計算特徵向量得到
  2. Σ\mathbf{\Sigma}的計算有兩種方式:
    (1)從上式可以看到,Σ2\mathbf{\Sigma}^2AAHAA^H的特徵值,求出其特徵值,開根號就能得到Σ\mathbf{\Sigma}
    (2)A=UΣVTAV=UΣVTVAV=UΣAvi=σiuiσi=Avi/uiA=U \Sigma V^{T} \Rightarrow A V=U \Sigma V^{T} V \Rightarrow A V=U \Sigma \Rightarrow A v_{i}=\sigma_{i} u_{i} \Rightarrow \sigma_{i}=A v_{i} / u_{i}
    這樣,SVD涉及的三個矩陣都可以被計算出來

一般情況下,將Σ\mathbf{\Sigma}中的奇異值從大到小排列,(特徵向量也要對應上)

SVD應用

常見的應用比如降維,比如n個奇異值,取前k個奇異值(保留奇異值大的,丟棄小的),那麼對應的U和V矩陣只要保存前k列的數據,雖然得到結果維度和原來相同,但是降低了矩陣的秩。
在推薦系統中,對於用戶點擊數據,經過SVD分解可以得到user-vec和item-vec,然後通過奇異值,進行這兩類的向量降維

參考資料

  • https://liam.page/2017/11/22/SVD-for-Human-Beings/
  • https://ccjou.wordpress.com/2009/09/01/%E5%A5%87%E7%95%B0%E5%80%BC%E5%88%86%E8%A7%A3-svd/
  • https://www.cnblogs.com/pinard/p/6251584.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章