版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31823267/article/details/89177836
项目地址: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
扫描二维码关注公众号,回复:
5834366 查看本文章
其中
Σ是与
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