奇異值分解 (Singular Value Decomposition,SVD)


  奇異值分解 (Singular Value Decomposition,SVD) 是一種矩陣因子分解方法,是線性代數的概念。應用於數據降維、推薦系統和自然語言處理等領域,在機器學習中被廣泛適用。下面主要介紹 SVD 的定義與性質、計算過程、幾何解釋。

1 特征值分解

  這里先回顧一下特征值分解,它與 SVD 有許多相似的地方。關於特征值分解的幾何意義可參考上一篇文章:特征值與特征向量

  設 A 為 n 階方陣,若存在數 λ 和非零向量 x,使得:

  則稱 λ 是 A 的一個特征值,x 為 A 的對應於特征值 λ 的特征向量。

  求出了矩陣 A 的 n 個特征值 λ≤ λ≤ ... ≤ λ,以及這 n 個特征值所對應的特征向量 { p1,p2,...,p},如果這 n 個特征值線性無關,那么矩陣 A 就可以用下式的特征分解表示:

  其中 P 是這 n 個特征向量所張成的 n × n 維矩陣,而 Λ 是以 n 個特征值為主對角線的 n × n 維矩陣。

  一般我們會把 P 的 n 個特征向量標准化,此時,這 n 個特征向量為標准正交基,滿足 PTP = I ,即 PT = P-1 ,這樣特征分解表達式可以寫成:

  注意,要進行特征分解,矩陣 A 必須為方陣。如果A不是方陣,即行和列不相同時,我們還可以對矩陣進行分解嗎?答案是可以,此時我們的SVD登場了。 

2 SVD 的定義與性質

  SVD 定義:矩陣的奇異值分解是指,將一個非零的 m × n 實矩陣 A,表示為以下三個實矩陣乘積形式的運算 (SVD 可以更一般地定義在復數矩陣上,但本文不涉及),即進行矩陣的因子分解:

  其中 U 是 m 階正交矩陣,V 是 n 階正交矩陣,Σ 是由降序排列的非負的對角線元素組成的  m × n 矩形對角矩陣。滿足:

  UΣVT 稱為矩陣 A 的奇異值分解,σi 稱為矩陣 A 的奇異值,U 的列向量稱為左奇異向量,V 的列向量稱為右奇異向量。

  奇異值分解不要求矩陣 A 是方陣,事實上矩陣的奇異值分解可以看做是方陣的對角化的推廣。

  SVD 基本定理:若 A 為一 m × n 實矩陣 ,則 A 的奇異值分解存在:

  其中 U 是 m 階正交矩陣,V 是 n 階正交矩陣,Σ 是 m × n 矩形對角矩陣,其對角線元素非負,且按降序排列。

  這個定理表達的意思就是矩陣的奇異值分解是一定存在的 (但不唯一),這里就不具體證明了。

  主要性質

  (1) 設矩陣 A 的奇異值分解為 A = UΣVT ,則以下關系成立:

  也就是說,矩陣 ATA 和 AAT 的特征分解存在,且可以由矩陣 A 的奇異值分解的矩陣表示。V 的列向量是 ATA 的特征向量,U 的列向量是 AAT 的特征向量,Σ 的奇異值是 ATA 和 AAT 的特征值的平方根。

  (2) 在矩陣 A 的奇異值分解中,奇異值、左奇異向量和右奇異向量之間存在對應關系:

  類似的,奇異值、右奇異向量和左奇異向量之間存在對應關系:

  (3) 矩陣 A 的奇異值分解中,奇異值 σ1,σ2,...σ是唯一的,而矩陣 U 和 V 不是唯一的。

  (4)  矩陣 A 和 Σ 的秩相等,等於正奇異值 σi 的個數 r (包含重復的奇異值)。

3 SVD 的計算

  給定 m × n 矩陣 A:

  (1) 首先求 ATA 的特征值和特征向量

  計算對稱矩陣 W = ATA,求解特征方程:

  得到特征值 λ,並將特征值由大到小排列 λ≥ λ≥ ... ≥ λ≥ 0 ,將特征值 λ( i = 1,2,...,n ) 代入特征方程求得對應的特征向量。

  (2) 求 n 階正交矩陣 V

  將特征向量單位化,得到單位特征向量 v1,v2,...,v,構成 n 階正交矩陣 V :

  (3) 求 m × n 對角矩陣 Σ

  計算 A 的奇異值:

  構造 m × n 矩形對角矩陣 Σ,主對角元素是奇異值,其余元素是 0 :

  (4) 求 m 階正交矩陣 U

  對 A 的前 r 個正奇異值,令:

  得到:

  求 AT 的零空間的一組標准正交基 { ur+1,ur+2,...,u},令:

  並令:

  (5) 得到奇異值分解

4 幾何解釋

  與特征值分解相同,同樣從線性變換的角度理解奇異值分解,m × n 矩陣 A 表示從 n 維空間 Rn 到 m 維空間 Rm 的一個線性變換:

  x ∈ Rn ,Ax ∈ Rm ,x 和 Ax 分別是各自空間的向量。線性變換可以分解為三個簡單的變換:一個坐標系的旋轉或反射變換、一個坐標軸的縮放變換、另一個坐標系的旋轉或反射變換。奇異值定理保證這種分解一定存在,這就是奇異值分解的幾何解釋。

  對矩陣 A 進行奇異值分解,得到 A = UΣVT ,V 和 U 都是正交矩陣。所以 V 的列向量 v1,v2,...,vn  構成 Rn 空間的一組標准正交基,表示 Rn 中的正交坐標系的旋轉或反射變換;U 的列向量 u1,u2,...,um 構成 Rm 空間的一組標准正交基,表示 Rm 中的正交坐標系的旋轉或反射變換;Σ 的對角元素 σ1,σ2,...σ是一組非負實數,表示 Rn 中的原始正交坐標系坐標軸的 σ1,σ2,...σn 倍的縮放變換。

5 基於 SVD 的 PCA 降維

  PCA 降維需要找到樣本協方差矩陣 XTX 的最大的 d 個特征向量,然后用這最大的 d 個特征向量張成的矩陣來做低維投影降維。可以看出,在這個過程中需要先求出協方差矩陣 XTX,當樣本數多樣本特征數也多的時候,這個計算量是很大的。

  注意到我們的 SVD 也可以得到協方差矩陣 XTX 最大的 d 個特征向量張成的矩陣,但是 SVD 有個好處,實際應用中的 SVD 算法是通過求 XTX 的特征值進行,但不直接計算 XTX。按照這個思路產生了許多矩陣 SVD 的有效算法,這里不予介紹。實際上,scikit-learn 的 PCA 算法的背后真正的實現就是用的 SVD,而不是我們我們認為的暴力特征分解。

  另一方面,注意到 PCA 僅僅使用了我們 SVD 的右奇異矩陣,沒有使用左奇異矩陣,那么左奇異矩陣有什么用呢?

  假設我們的樣本是 m × n 的矩陣 X,如果我們通過 SVD 找到了矩陣 XT最大的 d 個特征向量張成 m × d 維矩陣 U,如果進行如下處理:

  可以得到一個 d × n 的矩陣 X',這個矩陣和我們原來的 m × n 維樣本矩陣 X 相比,行數從 m 減到了 d,可見對行數進行了壓縮。也就是說,左奇異矩陣可以用於行數的壓縮。相對的,右奇異矩陣可以用於列數即特征維度的壓縮,也就是我們的PCA降維。    

 

 

主要參考:奇異值分解(SVD)原理與在降維中的應用、李航《統計學習方法》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM