原文地址: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 _ i j
表示第
i
个用户对电影j 的评分。假设隐变量的维度是
D
,那么我们希望将评分矩阵R 分解成两个矩阵,即用户隐矩阵
U ∈ R D × N
,和电影隐矩阵
V ∈ R D × M
。其中,
U _ i
表示第
i
个用户的隐向量,V _ j 表示第
j
个电影的隐向量。假设评分是一个有高斯噪音的正态分布。那么我们的评分应当有如下公式:
p ( R | U , V , σ 2 ) = ∏ i = 1 N ∏ j = 1 M [ N ( R i j | U T i V j , σ 2 ) ] I i j
这里的
N ( R _ i j | U _ i T V _ j , σ 2 )
是指高斯分布的概率密度函数。
I _ i j
是指示函数,表明如果用户
i
评论了电影j ,那么其结果等与1,否则就是0。因此,上面的结果就是所有已经被评论的电影得分的乘积,也就是似然函数了。
我们给每个用户和电影的隐向量(特征向量)一个均值为0的高斯先验。有:
p ( U | σ 2 U ) = ∏ i = 1 N N ( U i | 0 , σ 2 U I )
p ( V | σ 2 V ) = ∏ j = 1 M N ( V j | 0 , σ 2 V I )
这里的
I
是一个
D
维单位对角矩阵。那么,用户和电影特征的后验分布计算如下:
p ( U , V | R , σ 2 , σ 2 V , σ 2 U ) = p ( R | U , V , σ 2 , σ 2 V , σ 2 U ) × p ( U , V ) / p ( R , σ 2 , σ 2 V , σ 2 U ) ∼ p ( R | U , V , σ 2 , σ 2 V , σ 2 U ) × p ( U , V ) = p ( R | U , V , σ 2 , σ 2 V , σ 2 U ) × p ( U ) × p ( V ) = ∏ i = 1 N ∏ j = 1 M [ N ( R i j | U T i V j , σ 2 ) ] I i j × ∏ i = 1 M N ( U i | 0 , σ 2 U I ) × ∏ j = 1 N N ( V j | 0 , σ 2 V I )
对两边取个
ln
(这是我们求解中常用的方法,取ln不改变函数凹凸性,极值点位置也不便,所以最优点的解也是一样的,同时,乘积形式变成求和形式,也简单很多)。
ln p ( U , V | R , σ 2 , σ 2 V , σ 2 U ) = ∑ i = 1 N ∑ j = 1 M I i j ln N ( R i j | U T i V j , σ 2 ) + ∑ i = 1 N ln N ( U i | 0 , σ 2 U I ) + ∑ j = 1 M ln N ( V j | 0 , σ 2 V I )
上面这三项都是形式完全一样,只是系数和均值方差不同,我们以其中一个为例,剩下都一样。即求解
ln N ( U i | 0 , σ 2 U I )
我们给出用户
i
的概率密度函数:
N ( U i | 0 , σ 2 U I ) = − 1 ( 2 π ) D / 2 | σ 2 V I | 1 / 2 exp ( − 1 2 U T i ( σ 2 u I ) − 1 U i )
注意,由于
I
是对角阵,那么
( σ 2 u I ) − 1 = 1 σ 2 u I
,所以:
ln N ( U i | 0 , σ 2 U I ) = ln ( − 1 ( 2 π ) D / 2 | σ 2 V I | 1 / 2 ) − U T i U i 2 σ 2 u = − ln ( | σ 2 U I | 1 / 2 ) − U T i U i 2 σ 2 u + C U = − 1 2 ln ( σ 2 D U ) − U T i U i 2 σ 2 u + C U = − D 2 ln ( σ 2 U ) − U T i U i 2 σ 2 u + C U
类似地,我们可以得到进而我们可以得到最终的公式。公式如下:
原文地址:http://www.datalearner.com/blog/1051507818535686
论文地址:http://www.datalearner.com/conference_paper_content?paper_id=400002782&paper_name=Probabilistic%20Matrix%20Factorization.&type=0