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}nn×n的方阵AAA,有如下等式成立:

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

其中λ\lambdaλ为常数,v\vec{v}v为列向量。那么满足上式的λ\lambdaλ为矩阵AAA的特征值,对应的v\vec{v}v为特征向量,方阵的特征向量是相互正交的。写成矩阵形式有:

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

其中Σ\SigmaΣ为特征值由大到小排列构成的对角矩阵,QQQ为特征向量构成的方阵。选取前kkk大的特征值,那么降维后的AAA可以表示成:

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

EVD即是PCA的原理。

SVD

奇异值分解(Singular Value Decomposition),假设对一个n×mn{\times}mn×m的矩阵AAA,SVD的目标是把AAA分解成如下形式:

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

其中Σ\SigmaΣ是与AAA同形状的奇异值矩阵。由矩阵乘法的性质可得,矩阵UUU的形状为n×nn{\times}nn×n,VTV^{T}VT的形状为m×mm{\times}mm×m。同样类似的,UUU与VVV都是正交方阵。

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} \\ AAT=UΣΣTUTATA=VΣTΣVT

不难发现可以分别通过对AATAA^{T}AAT和ATAA^{T}AATA做EVD可以得到UUU和VVV,而Σ\SigmaΣ则是特征值的开方。选取前kkk大的奇异值,那么AAA可以近似压缩存储成:

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

对于降维,有:

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

上一篇:Software Defined Storage For Dummies(Chap5)


下一篇:Java并发编程学习笔记 深入理解volatile关键字的作用