Matrix Factorization 学习记录:基本原理及实现

Posted multiangle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matrix Factorization 学习记录:基本原理及实现相关的知识,希望对你有一定的参考价值。

Matrix Factorization 学习记录(一):基本原理及实现


最近在学习Matrix Factorization,也就是矩阵的分解。 这个技术目前主要应用于推荐系统领域,用于实现隐含语义模型(Latent Factor Model)。通过矩阵分解,一方面可以减少运算量,另一方面可以很好的解决由于用户数目和物品数目过多引起的行为矩阵稀疏化问题。我虽然暂时不去做推荐系统,但是我觉得这种使用embedding形式来表示用户/物品向量的思维非常值得借鉴,可能可以用于其他地方,因此学习了一下。

关于Matrix Factorization的原理,目前已经有很多现有的资料。我这里就不再赘述,只简要描述一下。有兴趣的可以去参阅wiki上的解释。

Matrix Factorization的基本原理

Matrix Factorization的原理比较简单,就是将一个矩阵D分解为U和V的乘积,即对于一个特定的规模为m*n的矩阵D,估计出规模分别为m*k和n*k的矩阵U和V,使得 UVT U V T 的值尽可能逼近矩阵D。一般来讲,k的取值应该满足 kminm,n k ≤ m i n m , n ,这样矩阵分解才有意义。如果在推荐系统中,D代表用户对商品的行为矩阵的话,那么U和V则分别代表embedding表示的用户和商品向量。

以公式来表示的话,就是

argminU,Vi=1mj=1n(Di,jD^i,j)2D^i,j=kUi,kVj,k=kUi,kVTk,j=UiVTj a r g m i n U , V ⁡ ∑ i = 1 m ∑ j = 1 n ( D i , j − D ^ i , j ) 2 D ^ i , j = ∑ k U i , k ⋅ V j , k = ∑ k U i , k ⋅ V k , j T = U i V j T
其中 Ui U i 表示U矩阵第i行的向量, Vj V j 表示V矩阵第j行向量。

为了限制U,V的取值呈现一个以0为中心的正态分布,这里对U,V的值加上正则项,得到目标优化项

L=i=1mj=1n(DijUiVTj)2+λ(||U||2+||V||2)=i=1mj=1n(DijUiVTj)2+λ(i=1m||Ui||2+j=1n||Vj||2)=i=1mj=1n(Dij∑以上是关于Matrix Factorization 学习记录:基本原理及实现的主要内容,如果未能解决你的问题,请参考以下文章

机器学习 sklearn 无监督学习 降维算法 NMF Non-negative Matrix Factorization

机器学习 sklearn 无监督学习 降维算法 NMF Non-negative Matrix Factorization

MF+Matrix Factorization+矩阵分解

推荐系统(recommender systems):预测电影评分--构造推荐系统的一种方法:低秩矩阵分解(low rank matrix factorization)

Matrix Factorization, Algorithms, Applications, and Avaliable packages

Fused Matrix Factorization & some personal thoughts