BPR¶
1 BPR使用背景¶
在很多推荐场景中,我们都是基于现有的用户和商品之间的一些数据,得到用户对所有商品的评分,选择高分的商品推荐给用户,这是funkSVD之类算法的做法,使用起来也很有效。但是在有些推荐场景中,我们是为了在千万级别的商品中推荐个位数的商品给用户,此时,我们更关心的是用户来说,哪些极少数商品在用户心中有更高的优先级,也就是排序更靠前。也就是说,我们需要一个排序算法,这个算法可以把每个用户对应的所有商品按喜好排序。BPR就是这样的一个我们需要的排序算法。
2 排序算法¶
排序推荐算法大体上可以分为三类,
第一类排序算法类别是点对方法(Pointwise Approach),这类算法将排序问题被转化为分类、回归之类的问题,并使用现有分类、回归等方法进行实现。
第二类排序算法是成对方法(Pairwise Approach),在序列方法中,排序被转化为对序列分类或对序列回归。所谓的pair就是成对的排序,比如(a,b)一组表明a比b排的靠前。
第三类排序算法是列表方法(Listwise Approach),它采用更加直接的方法对排序问题进行了处理。它在学习和预测过程中都将排序列表作为一个样本。排序的组结构被保持。
我们今天要讲的BPR就属于第二类排序算法
3 BPR特点¶
- 基于item-item推导出个性化i偏好排名。相对于一般的ranking,BPR强调个性化推荐。
- 推导用于评估个性化推荐ranking的优化条件即后验概率,并用Roc曲线来类比证实BPR-OPT的可行性。
- 为极大化BPR-OPT,提出了BPR-OPT的学习算法。基于随机梯度下降的learnBPR。
- 一般的推荐算法是强调用户对项目的打分,只存在用户和单个项目的关系,不去考虑两个项目对用户的影响力。而BPR则从u,i,j出发来求解u,i的大小。
显式反馈:用户对物品的评分,如电影评分
隐式反馈:用户对物品的交互行为,如浏览,购买等,现实中绝大部分数据属于隐式反馈,可以从日志中获取。
BPR是基于用户的隐式反馈,为用户提供物品的推荐,并且是直接对排序进行优化。
4 建模思路¶
4.1 定义¶
U代表所有的用户user集合;
I 代表所有的物品item集合;
S 代表所有用户的隐式反馈,S⊆U×I S。 如下图所示,只要用户对某个物品产生过行为,就标记为+ , 所有+ 样本构成了S 。那些未观察到的数据(即用户没有产生行为的数据)标记为? .


4.2 传统解决方式¶
在使用隐式反馈的情况下,我们会发现观察到的数据均为正例(因为用户对物品交互过才会被观察到),而那些没有被观察到的数据(即用户还没有产生行为的物品),分为两种情况,一种是用户确实对该物品没有兴趣(负类),另一种则是缺失值(即用户以后可能会产生行为的物品)。
传统的个性化推荐通常是计算出用户u对物品i的个性化分数xˆui ,然后根据个性化分数进行排序。为了得到训练数据,通常是将所有观察到的隐式反馈(u,i)∈S 作为正类,其余所有数据作为负类,如下图所示,左图为观察到的数据,右图为填充后的训练数据:

在填零的情况下,我们的优化目标变成了希望在预测时观测到的数据预测为1,其余的均为0. 于是产生的问题是,我们希望模型在以后预测的缺失值,在训练时却都被认为是负类数据。因此,如果这个模型训练的足够好,那么最终得到的结果就是这些未观察的样本最后的预测值都是0。
4.3 BPR解决方案¶








