美文网首页机器学习:原理及实现
矩阵分解算法原理及实现(Matrix Factorization

矩阵分解算法原理及实现(Matrix Factorization

作者: d518a9b6ae51 | 来源:发表于2019-05-26 21:08 被阅读0次

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

概述

在机器学习领域通常会用到矩阵分解技术,目的就是维度规约或压缩存储,本文做一个简单的总结与概述。

EVD

特征值分解(Eigenvalue Decomposition),假设对于一个n{\times}n的方阵A,有如下等式成立:

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

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

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

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

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

EVD即是PCA的原理。

SVD

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

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

其中\Sigma是与A同形状的奇异值矩阵。由矩阵乘法的性质可得,矩阵U的形状为n{\times}nV^{T}的形状为m{\times}m。同样类似的,UV都是正交方阵。

SVD可以通过EVD来实现,注意到:

AA^{T}=U\Sigma\Sigma^{T}U^{T} \\ A^{T}A=V\Sigma^{T}{\Sigma}V^{T} \\

不难发现可以分别通过对AA^{T}A^{T}A做EVD可以得到UV,而\Sigma则是特征值的开方。选取前k大的奇异值,那么A可以近似压缩存储成:

A_{comp}=U_{n{\times}k}\Sigma_{k{\times}k}(V^{T})_{k{\times}m}

对于降维,有:

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

相关文章

网友评论

    本文标题:矩阵分解算法原理及实现(Matrix Factorization

    本文链接:https://www.haomeiwen.com/subject/seaftctx.html