譜分解
線性代數中,特徵分解(Eigendecomposition),又稱譜分解(Spectral decomposition)是將矩陣分解爲由其特徵值和特徵向量表示的矩陣之積的方法。
譜定理
如果矩陣M是個正規矩陣,那麼M可以進行如下分解:
A=UΛUH
其中U是由A的特徵向量組成的酉矩陣,Λ是A的特徵值組成的對角矩陣。
即將正規矩陣分解爲酉矩陣和對角矩陣。
譜分解的缺陷
由於譜分解具有侷限性,既要求矩陣是方陣,又要求矩陣滿足交換律,在現實中滿足該條件的矩陣比較少。對於一般的m∗n的矩陣,可通過SVD進行分解。
SVD定義
SVD定義:對於一個m∗n的矩陣A,其中的元素來自整個數域(包括實數和複數),那麼M可以分解爲以下三個矩陣的形式
A=UΣVH
其中U和V分別爲m∗m和n∗n的酉矩陣,Σ是個m∗n的非負對角矩陣,對角線上的元素即爲奇異值。(奇異值可以看做是特徵值的絕對值)
其中
Σ=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡σ1000⋮00⋱0⋯⋱⋯00σr0⋮00⋮00⋮0⋯⋯⋯⋯⋱⋯0000⋮0⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
σi表示i個奇異值
SVD求解
假設σi爲矩陣A的非零特徵值, i=1,2,…r(r等於矩陣A的秩),
那麼σi2爲AAH和AHA的非零特徵值。
AAH=UΣVHVΣHUH=U(ΣΣH)UHAHA=VΣHUHUΣVH=V(ΣHΣ)VH
其中 ΣΣH與ΣHΣ都是對角線元素爲σi2的對角矩陣。
那麼從上述式子中我們可以知道,U和V分別爲AAH和AHA的特徵向量(由譜定理得到)。
- U和V可以通過AAH和AHA計算特徵向量得到
- Σ的計算有兩種方式:
(1)從上式可以看到,Σ2是AAH的特徵值,求出其特徵值,開根號就能得到Σ
(2)A=UΣVT⇒AV=UΣVTV⇒AV=UΣ⇒Avi=σiui⇒σi=Avi/ui
這樣,SVD涉及的三個矩陣都可以被計算出來
一般情況下,將Σ中的奇異值從大到小排列,(特徵向量也要對應上)
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