矩陣分解Matrix Factorization

項目地址:https://github.com/Daya-Jin/ML_for_learner
原博客:https://daya-jin.github.io/2019/01/07/MatrixFactorization/

概述

在機器學習領域通常會用到矩陣分解技術,目的就是維度規約或壓縮存儲,本文做一個簡單的總結與概述。

EVD

特徵值分解(Eigenvalue Decomposition),假設對於一個n×nn{\times}n的方陣AA,有如下等式成立:

Av=λv A\vec{v}=\lambda\vec{v}

其中λ\lambda爲常數,v\vec{v}爲列向量。那麼滿足上式的λ\lambda爲矩陣AA的特徵值,對應的v\vec{v}爲特徵向量,方陣的特徵向量是相互正交的。寫成矩陣形式有:

A=QΣQ1 A=Q{\Sigma}Q^{-1}

其中Σ\Sigma爲特徵值由大到小排列構成的對角矩陣,QQ爲特徵向量構成的方陣。選取前kk大的特徵值,那麼降維後的AA可以表示成:

Areduc=An×n(Q1)n×k A_{reduc}=A_{n{\times}n}(Q^{-1})_{n{\times}k}

EVD即是PCA的原理。

SVD

奇異值分解(Singular Value Decomposition),假設對一個n×mn{\times}m的矩陣AA,SVD的目標是把AA分解成如下形式:

A=UΣVT A=U{\Sigma}V^{T}

其中Σ\Sigma是與AA同形狀的奇異值矩陣。由矩陣乘法的性質可得,矩陣UU的形狀爲n×nn{\times}nVTV^{T}的形狀爲m×mm{\times}m。同樣類似的,UUVV都是正交方陣。

SVD可以通過EVD來實現,注意到:

AAT=UΣΣTUTATA=VΣTΣVT AA^{T}=U\Sigma\Sigma^{T}U^{T} \\ A^{T}A=V\Sigma^{T}{\Sigma}V^{T} \\

不難發現可以分別通過對AATAA^{T}ATAA^{T}A做EVD可以得到UUVV,而Σ\Sigma則是特徵值的開方。選取前kk大的奇異值,那麼AA可以近似壓縮存儲成:

Acomp=Un×kΣk×k(VT)k×m A_{comp}=U_{n{\times}k}\Sigma_{k{\times}k}(V^{T})_{k{\times}m}

對於降維,有:

Areduc=An×m(VT)m×k A_{reduc}=A_{n{\times}m}(V^{T})_{m{\times}k}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章