1. 程式人生 > >SVD奇異值分解 中特徵值與奇異值的數學理解與意義

SVD奇異值分解 中特徵值與奇異值的數學理解與意義

前言

之前的部落格中SVD推薦演算法寫得不是很嚴謹,r^ui=f=1FPufQfi+μ+bu+bi 更像是矩陣分解多一點,沒有涉及到SVD的數學意義,這篇部落格大概會寫一些數學SVD的數學理解,以及SVD在PCA和推薦演算法上面的應用。

特徵值與特徵向量

如果一個向量v方陣 A的特徵向量,將可以表示成下面的形式:

Av=λv
此時λ就被稱為特徵向量v對應的特徵值,並且一個矩陣的一組特徵向量是一組正交向量。特徵值分解是將一個矩陣分解成下面的形式:
A=QΣQ1
其中Q是這個矩陣A的特徵向量組成的矩陣,
Σ
是一個對角陣,每一個對角線上的元素就是一個特徵值。可以簡單理解為提取矩陣最重要的特徵,Σ為線性變換中矩陣變換的主要方向(可以參考連結1)。

缺點也非常明顯,就是隻適用於方陣,但對於實際情景中我們資料大部分都不是方陣,此時就要引入奇異值分解SVD了。

奇異值分解

奇異值分解(Singular Value Decomposition, SVD)是線性代數中一種重要的矩陣分解,在訊號處理、統計學等領域有重要應用。奇異值分解是一個能適用於任意的矩陣的一種分解的方法:

A=UΣVT
假設A是一個N * M的矩陣,那麼得到的U是一個N * N的方陣(裡面的向量是正交的,U裡面的向量稱為左奇異向量),
Σ
是一個N * M的矩陣(除了對角線的元素都是0,對角線上的元素稱為奇異值),VT是一個N * N的矩陣,裡面的向量也是正交的,V裡面的向量稱為右奇異向量)

那麼,我們有

AAT=UΣVTVΣTUT=U(ΣΣT)UTATA=VΣTUTUΣVT=V(ΣTΣ)VT

這也就是說,U 的列向量(左奇異向量),是 AAT 的特徵向量;同時,V的列向量(右奇異向量),是 ATA 的特徵向量;另一方面,M的奇異值(Σ 的非零對角元素)則是 AAT 或者 ATA 的非零特徵值的平方根。

將奇異值和特徵值是對應起來:我們將一個矩陣ATA,將會得到一個方陣,我們用這個方陣求特徵值可以得到:

(ATA)vi=λivi

這裡的向量vi,就是我們上面的右奇異向量。此外我們還可以得到:

σi=λi,ui=1σiAvi

這裡的σi就是上面說的奇異值,