BPR算法采用的是最大化后验概率来估计参数(关于什么是最大化后验概率,可移步我的另外一篇文章:似然与概率的异同),因此,这里用到了贝叶斯公式。
之前已经假设每个用户之间的偏好行为相互独立,同一用户对不同物品的偏序相互独立,所以:
δ(b)函数返回1 如果条件b成立, 否则返回0。D为训练集, (u,i,j) 表示关系,即相对于j,用户u更喜欢 i 。
由于
满足完整性和反对称性,所以上式可简化为:其中,δ()为sigmod函数,用户 u 相比于 j 更喜欢 i 通过借助用户 u 对 i 的喜欢程度与对 j 的喜欢程度的差进行度量。
因此,
可表示为:目标是求解θ。 由于采用最大后验估计来学习参数,所以假设θ服从正态分布:
根据概率密度函数,求得:
关于这个等式的推导,笔者尝试将概率分布带入到概率密度函数中,发现并不能推导出来,但是由于存在正比关系,所以可以近似等于。
所以,最终的后验概率估计函数为:
通过最大化这个函数,可以求出参数W和H。
6. Bayesian Personalized Ranking算法实现网上开源的BPR代码有很多,这里着重表达一下用户embedding矩阵和物品embedding矩阵,以及损失函数的构造。其中损失函数为最小化上一小节的最大后验概率函数。
7. 总结
回顾Bayesian Personalized Ranking 算法,有以下三点值得回味:
1. θ的正态分布(先验)形式:
之所以这样设计,笔者以为有两点:一是方便取对数、二是能与正则化联系起来。
2. 用户 u 相比于 j 更喜欢 i 通过借助用户 u 对 i 的喜欢程度与对 j 的喜欢程度的差进行度量。这当然是最直观的表示方法,当然也可以加以改进。
3. 万物皆可embedding !通过对用户以及物品分别构造embedding向量,从而完成用户对物品喜好程度的计算。