Bayesian Personalized Ranking 算法解析及Python实现 (5)

BPR算法采用的是最大化后验概率来估计参数(关于什么是最大化后验概率,可移步我的另外一篇文章:似然与概率的异同),因此,这里用到了贝叶斯公式。

Bayesian Personalized Ranking 算法解析及Python实现

之前已经假设每个用户之间的偏好行为相互独立,同一用户对不同物品的偏序相互独立,所以:

Bayesian Personalized Ranking 算法解析及Python实现

δ(b)函数返回1 如果条件b成立, 否则返回0。D为训练集, (u,i,j) 表示关系,即相对于j,用户u更喜欢 i 。

由于

Bayesian Personalized Ranking 算法解析及Python实现

满足完整性和反对称性,所以上式可简化为:

Bayesian Personalized Ranking 算法解析及Python实现

其中,δ()为sigmod函数,用户 u 相比于 j 更喜欢 i 通过借助用户 u 对 i 的喜欢程度与对 j 的喜欢程度的差进行度量。

因此,

Bayesian Personalized Ranking 算法解析及Python实现

 可表示为:

Bayesian Personalized Ranking 算法解析及Python实现

目标是求解θ。 由于采用最大后验估计来学习参数,所以假设θ服从正态分布:

Bayesian Personalized Ranking 算法解析及Python实现

根据概率密度函数,求得:

Bayesian Personalized Ranking 算法解析及Python实现

关于这个等式的推导,笔者尝试将概率分布带入到概率密度函数中,发现并不能推导出来,但是由于存在正比关系,所以可以近似等于。

所以,最终的后验概率估计函数为:

Bayesian Personalized Ranking 算法解析及Python实现

通过最大化这个函数,可以求出参数W和H。 

6. Bayesian Personalized Ranking算法实现

网上开源的BPR代码有很多,这里着重表达一下用户embedding矩阵和物品embedding矩阵,以及损失函数的构造。其中损失函数为最小化上一小节的最大后验概率函数。

 

Bayesian Personalized Ranking 算法解析及Python实现

Bayesian Personalized Ranking 算法解析及Python实现

 7. 总结

回顾Bayesian Personalized Ranking 算法,有以下三点值得回味:

1. θ的正态分布(先验)形式:

Bayesian Personalized Ranking 算法解析及Python实现

之所以这样设计,笔者以为有两点:一是方便取对数、二是能与正则化联系起来。

2. 用户 u 相比于 j 更喜欢 i 通过借助用户 u 对 i 的喜欢程度与对 j 的喜欢程度的差进行度量。这当然是最直观的表示方法,当然也可以加以改进。

3. 万物皆可embedding !通过对用户以及物品分别构造embedding向量,从而完成用户对物品喜好程度的计算。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfszx.html