推荐系统之概率矩阵分解的详细推导过程(Probabilistic Matrix Factorization,PMF)

原文地址:http://www.datalearner.com/blog/1051507818535686
论文地址:http://www.datalearner.com/conference_paper_content?paper_id=400002782&paper_name=Probabilistic%20Matrix%20Factorization.&type=0

概率矩阵分解是目前在推荐领域很流行的模型。本文主要是推导论文
Mnih A, Salakhutdinov R R. Probabilistic matrix factorization[C]//Advances in neural information processing systems. 2008: 1257-1264. 中的结果。

传统的协同过滤方法既不能处理大数据量的推荐,也不能处理只有很少评分的用户。这篇论文提出了著名的概率矩阵分解的方法来解决这个问题。概率矩阵分解的思想是以中线性因子模型,它使用与用户相关的系数,将用户的偏好建模成一个一系列向量的线性组合。具体如下:

假设有 M 个电影和 N 个用户。 R_ij 表示第 i 个用户对电影 j 的评分。假设隐变量的维度是 D ,那么我们希望将评分矩阵 R 分解成两个矩阵,即用户隐矩阵 URD×N ,和电影隐矩阵 VRD×M 。其中, U_i 表示第 i 个用户的隐向量, V_j 表示第 j 个电影的隐向量。假设评分是一个有高斯噪音的正态分布。那么我们的评分应当有如下公式:

p(R|U,V,σ2)=i=1Nj=1M[N(Rij|UTiVj,σ2)]Iij

这里的 N(R_ij|U_iTV_j,σ2) 是指高斯分布的概率密度函数。 I_ij 是指示函数,表明如果用户 i 评论了电影 j ,那么其结果等与1,否则就是0。因此,上面的结果就是所有已经被评论的电影得分的乘积,也就是似然函数了。

我们给每个用户和电影的隐向量(特征向量)一个均值为0的高斯先验。有:

p(U|σ2U)=i=1NN(Ui|0,σ2UI)

p(V|σ2V)=j=1MN(Vj|0,σ2VI)

这里的 I 是一个 D 维单位对角矩阵。那么,用户和电影特征的后验分布计算如下:

p(U,V|R,σ2,σ2V,σ2U)=p(R|U,V,σ2,σ2V,σ2U)×p(U,V)/p(R,σ2,σ2V,σ2U)p(R|U,V,σ2,σ2V,σ2U)×p(U,V)=p(R|U,V,σ2,σ2V,σ2U)×p(U)×p(V)=i=1Nj=1M[N(Rij|UTiVj,σ2)]Iij×i=1MN(Ui|0,σ2UI)×j=1NN(Vj|0,σ2VI)

对两边取个 ln (这是我们求解中常用的方法,取ln不改变函数凹凸性,极值点位置也不便,所以最优点的解也是一样的,同时,乘积形式变成求和形式,也简单很多)。

lnp(U,V|R,σ2,σ2V,σ2U)=i=1Nj=1MIijlnN(Rij|UTiVj,σ2)+i=1NlnN(Ui|0,σ2UI)+j=1MlnN(Vj|0,σ2VI)

上面这三项都是形式完全一样,只是系数和均值方差不同,我们以其中一个为例,剩下都一样。即求解

lnN(Ui|0,σ2UI)

我们给出用户 i 的概率密度函数:

N(Ui|0,σ2UI)=1(2π)D/2|σ2VI|1/2exp(12UTi(σ2uI)1Ui)

注意,由于 I 是对角阵,那么 (σ2uI)1=1σ2uI ,所以:

lnN(Ui|0,σ2UI)=ln(1(2π)D/2|σ2VI|1/2)UTiUi2σ2u=ln(|σ2UI|1/2)UTiUi2σ2u+CU=12ln(σ2DU)UTiUi2σ2u+CU=D2ln(σ2U)UTiUi2σ2u+CU

类似地,我们可以得到进而我们可以得到最终的公式。公式如下:



原文地址:http://www.datalearner.com/blog/1051507818535686

论文地址:http://www.datalearner.com/conference_paper_content?paper_id=400002782&paper_name=Probabilistic%20Matrix%20Factorization.&type=0

你可能感兴趣的:(数据学习)