![99d5cb4c0e697d9f95afe0cabe18e076.png](https://i-blog.csdnimg.cn/blog_migrate/d8e6d88e06897c2cf9413a7977482757.png)
目录
一、什么是BPR算法?
二、BPR算法的基本原理
三、一个BPR算法的求解实例
一、什么是BPR算法?
BPR即Bayesian Personalized Ranking,中文名称为贝叶斯个性化排序,是当下推荐系统中常用的一种推荐算法。与其他的基于用户评分矩阵的方法不同的是BPR主要采用用户的隐式反馈(如点击、收藏等),通过对问题进行贝叶斯分析得到的最大后验概率来对item进行排序,进而产生推荐。
二、BPR算法的基本原理
1.符号定义
U:用户集
I:物品集
S:
![16694c6b677d26a2fae207fc07fad12f.png](https://i-blog.csdnimg.cn/blog_migrate/8e21ef698eac3e3d87ac78e43bab1621.png)
,隐式反馈集。如下图所示
![48c5a37809f48f59723208b3df0ec5cb.png](https://i-blog.csdnimg.cn/blog_migrate/8a5dca9a2190569a615f44e11f51da88.png)
有过隐式反馈记录的为“+”,反之为“?”。
>u:用户u的偏好。
![3ebbaba3b1e6ceea6c6da1439a0c5457.png](https://i-blog.csdnimg.cn/blog_migrate/ef3d46140268ad435d4abac819af025d.png)
:i和j同时出现时,用户u对i产生了隐式反馈,即相比于j用户u更偏好i
此关系满足完整性、反对称性和传递性约束
![d831b14b2e4c42d7b71bcb6f39078cc8.png](https://i-blog.csdnimg.cn/blog_migrate/0c644890d6d2b1fbc39538d3f5994662.png)
![caa7c854644b2649038bee3bc66377d8.png](https://i-blog.csdnimg.cn/blog_migrate/2a38981d6cf0d7743f1c3a5a00681ed2.png)
2、训练数据的预处理
首先对隐式反馈矩阵进行预处理
![82bb79c2225f9a4db98522afc8ea3e9c.png](https://i-blog.csdnimg.cn/blog_migrate/060d73855dd439b4081ea9094387fa96.png)
![6d79cdf07c5ade12bb847efad82669e0.png](https://i-blog.csdnimg.cn/blog_migrate/705f2091a366a03ea0dea1c06c12ae5d.png)
得到训练数据集
![9557b4eb0a9f0ea86853cfb5f3bfe0c6.png](https://i-blog.csdnimg.cn/blog_migrate/1231293cf2110c3fe864d5a46c97b8cc.png)
其中的元素
![9c8abf547c1da9af722ff3bf57bf468f.png](https://i-blog.csdnimg.cn/blog_migrate/dacc071f7341e339c4465951c9e253a1.png)
表示对于u来说,在i和j之间更偏好i
3.两个基本假设:
- 每个用户之间的偏好行为相互独立,即用户u在商品i和j之间的偏好和其他用户无关。
- 同一用户对不同物品的偏序相互独立,也就是用户u在商品i和j之间的偏好和其他的商品无关。
4.BPR的推导
BPR算法的基本思想是利用最大化后验概率来确定所有item
![66792f0ada5b341994a961e58ed0e457.png](https://i-blog.csdnimg.cn/blog_migrate/bdb634f1ed604adeb3dffd5e64715b28.png)
的正确个性化排序,我们不妨假设正确的个性化排序可以由某个模型(如矩阵分解)给出,而θ表示这个模型的参数向量。于是我们优化的目标就是使得
![c53cd13127eecab4acad483b4cef6809.png](https://i-blog.csdnimg.cn/blog_migrate/7265e5a5886801779636025693900c48.png)
最大,进而求出θ。
根据贝叶斯公式得
因为BPR假设用户的排序和其他用户无关,那么对于任意一个用户u来说,P(>u)对所有的物品都为一个常数,所以最大化
![c53cd13127eecab4acad483b4cef6809.png](https://i-blog.csdnimg.cn/blog_migrate/7265e5a5886801779636025693900c48.png)
,等价于最大化
![e315c55b9b67449b705b2406de3b6e3a.png](https://i-blog.csdnimg.cn/blog_migrate/bacfbff1480128ff114e28d8714ac2da.png)
即
![4c3aef9c983cfde5785aa5c96316343e.png](https://i-blog.csdnimg.cn/blog_migrate/6f5129de9b606f042f58f089f5dbf662.png)
这个最大化目标可以分为两部分,左边的部分与数据集有关,右边部分P(θ)与数据集无关。
我们先最大化左边的部分
![3321ef8eb25722f45b3e73bb4645dc85.png](https://i-blog.csdnimg.cn/blog_migrate/45853d29546f0d0085df61ce1e3476bf.png)
![f531d480d06f39740dd252e2c08bc10d.png](https://i-blog.csdnimg.cn/blog_migrate/b5a8cc47e68a447910069bd4f73e4183.png)
根据完整性和反对称性约束,上式可以简化成
![548448d35c66d75ff772f9d33027ab5e.png](https://i-blog.csdnimg.cn/blog_migrate/2822a93a09a59eef031deab6d887973f.png)
而对于
![25eeab157a7229866cc7e5afa41b7ade.png](https://i-blog.csdnimg.cn/blog_migrate/600687b8b08f799daf4ff7ecb0c961bb.png)
这个概率,可以使用下面这个式子来代替:
![f63907f73763bfb84577e3a55eeaffbc.png](https://i-blog.csdnimg.cn/blog_migrate/b01d24b4f018dbac91b0a63006b73379.png)
其中,
![a0853396e90f2efd957a8a01fd40a220.png](https://i-blog.csdnimg.cn/blog_migrate/d7e359ee72bd9ff99a8bb8d83172982a.png)
事实上
这儿的
![b1ea7ac76a92a342200b7f745958d57b.png](https://i-blog.csdnimg.cn/blog_migrate/9171cb88b7bd2b75d3390394e88542f6.png)
同样可以是任何关于模型参数向量θ的实值函数,前提是该函数能映射出用户u与物品i和j之间的关系。
于是第一部分的优化目标最终变成了
![a56d5db898151385b8282dcb28c3cb52.png](https://i-blog.csdnimg.cn/blog_migrate/0093731662a3d74d8ff5857f9379b293.png)
接下来我们再对第二部分P(θ)进行最大化
由于θ的分布是未知的,为了方便我们的计算,不妨假设其服从均值为0,协方差矩阵为
![dbe7afd99887796464e565b6293cf0c3.png](https://i-blog.csdnimg.cn/blog_migrate/fe0d545845807688c95ddd35d8b06cf8.png)
的正态分布
于是最大化
![c53cd13127eecab4acad483b4cef6809.png](https://i-blog.csdnimg.cn/blog_migrate/7265e5a5886801779636025693900c48.png)
变成了求解下式的最大值
![836e86120965aeff56ad010d2ced9967.png](https://i-blog.csdnimg.cn/blog_migrate/3752ca98b0919bd840f5aa5d39666070.png)
三、一个BPR算法的求解实例
在上一节的BPR算法的推导中,我们假设θ为某个模型的参数向量,本节我们讨论当这个模型为矩阵分解模型时,BPR算法的求解方法。
此时我们的预测目标是得到一个预测排序矩阵
![c0700532c5d6d4a7da6e6fd03848b736.png](https://i-blog.csdnimg.cn/blog_migrate/7d61135410819d6f9ca49413bc907a01.png)
这个矩阵可以被分解为
![73e85269591b3c1903c4101192636544.png](https://i-blog.csdnimg.cn/blog_migrate/3d80923082251eff9b13613414212c56.png)
,其中W为|U|×k维矩阵,H为|I|×k维矩阵,k远小于|U|和|I|
由于BPR是基于用户维度的,所以对于任意一个用户u,对应的任意一个物品i我们期望有:
![ac7028e02efa10612a5e21efbc5dabc0.png](https://i-blog.csdnimg.cn/blog_migrate/ff03a554714d6472e0a28ed4dab9819e.png)
此时我们再令
![8d129b230ac33277b603bbd6f06d3794.png](https://i-blog.csdnimg.cn/blog_migrate/57392f3d2026703b58a53870bb2602a9.png)
可得到最终需要求解的最大对数后验估计函数
![3cdb097b5f9a5e6e15203cf91fafae32.png](https://i-blog.csdnimg.cn/blog_migrate/70c77ba6c5ab8460712e605fd4b11f25.png)
这个式子对θ求偏导后,可以用梯度上升法或者牛顿法等方法来优化求解模型参数
参考文献
[1]Rendle S , Freudenthaler C , Gantner Z , et al. BPR: Bayesian Personalized Ranking from Implicit Feedback[C]// Conference on Uncertainty in Artificial Intelligence. AUAI Press, 2009.