項目地址:https://github.com/Daya-Jin/ML_for_learner
原博客:https://daya-jin.github.io/2019/01/07/MatrixFactorization/
概述
在機器學習領域通常會用到矩陣分解技術,目的就是維度規約或壓縮存儲,本文做一個簡單的總結與概述。
EVD
特徵值分解(Eigenvalue Decomposition),假設對於一個n×n的方陣A,有如下等式成立:
Av=λv
其中λ爲常數,v爲列向量。那麼滿足上式的λ爲矩陣A的特徵值,對應的v爲特徵向量,方陣的特徵向量是相互正交的。寫成矩陣形式有:
A=QΣQ−1
其中Σ爲特徵值由大到小排列構成的對角矩陣,Q爲特徵向量構成的方陣。選取前k大的特徵值,那麼降維後的A可以表示成:
Areduc=An×n(Q−1)n×k
EVD即是PCA的原理。
SVD
奇異值分解(Singular Value Decomposition),假設對一個n×m的矩陣A,SVD的目標是把A分解成如下形式:
A=UΣVT
其中Σ是與A同形狀的奇異值矩陣。由矩陣乘法的性質可得,矩陣U的形狀爲n×n,VT的形狀爲m×m。同樣類似的,U與V都是正交方陣。
SVD可以通過EVD來實現,注意到:
AAT=UΣΣTUTATA=VΣTΣVT
不難發現可以分別通過對AAT和ATA做EVD可以得到U和V,而Σ則是特徵值的開方。選取前k大的奇異值,那麼A可以近似壓縮存儲成:
Acomp=Un×kΣk×k(VT)k×m
對於降維,有:
Areduc=An×m(VT)m×k