Matrix Factorization

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 n{\times}n 的方阵 A A ,有如下等式成立:

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

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

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

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

A r e d u c = A n × n ( Q 1 ) n × k A_{reduc}=A_{n{\times}n}(Q^{-1})_{n{\times}k}

EVD即是PCA的原理。

SVD

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

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

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

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

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

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

A c o m p = U n × k Σ k × k ( V T ) k × m A_{comp}=U_{n{\times}k}\Sigma_{k{\times}k}(V^{T})_{k{\times}m}

对于降维,有:

A r e d u c = A n × m ( V T ) m × k A_{reduc}=A_{n{\times}m}(V^{T})_{m{\times}k}

猜你喜欢

转载自blog.csdn.net/qq_31823267/article/details/89177836