`

BPR [Bayesian Personalized Ranking] 算法详解及应用实践

阅读更多

在推荐系统的实现中,几乎总会遇到从较多候选集中为用户选取特定的少数几个物品进行推荐,这本质上是一个Ranking问题。

 

在推荐场景中用户更缺乏耐性,对推荐结果的消费也十分有限。因此,排序的好坏直接决定了用户对一个准确率为90%的推荐候选集的满意度是否真的有90%。

 

这里我们为大家介绍一种“基于贝叶斯后验优化的个性化排序算法”:Bayesian Personalized Ranking

其本身并不优化用户对物品的评分,而只藉由评分来优化用户对物品的排序。按照论文的说法:it is a real ranking algorithm.

 

BPR算法过程详解:

 

数据pair化预处理:

 

    BPR算法将用户对物品的评分(显示反馈“1”,隐式反馈“0”)处理为一个pair对的集合<i,j>,其中i为评分为1的物品,j为评分为0的物品。假设某用户有M个“1”的评分,N个“0”的评分,则该用户共有M*N个pair对。

    这样数据集就由三元组 <u,i,j>表示,该三元组的物理含义为:相对于物品“j”,用户“u”更喜欢物品“i”。

    

数据假设:

  • 每个用户之间的偏好行为相互独立
  • 同一用户对不同物品的偏序相互独立

则优化问题为极大化如下目标:

 

     

 

   其中theta为所求模型,具体包括:表示用户的隐含因子矩阵P,及表达物品的隐含因子矩阵Q。

 

其中关于似然部分:

      

 

我们假设先验服从如下分布:

     

 

则先验的概率密度函数为:

   

 

基于上述假设,优化目标进一步展开得到:

     

  

对应的最小化问题为:——其中 λθ 为正则系数"model specic regularization parameters"。

   

 

采用SGD求解上述最小化问题,分别针对pu qi qj求偏导如下:

   

 

偏导即为梯度下降方向,模型迭代求解的公式如下:

     

其中α为学习速率。

 

 

关于偏序关系构造的问题:

 

论文中将用户有过反馈(如点击、浏览、购买等)的物品标记为“1”,而将矩阵中剩余其他所有的物品都标记为“0”。

 

论文作者认为:

基于pair-wise的偏序优化,可以避免point-wise模型在对feature-item进行预测时失效(因为feature-item在训练时全被标记为“0”)的问题。

而且feature-item包括两类:1,用户真正讨厌的;2,用户missing的。

对于某个用户来说,在训练时都被标为"0"的item,在预测时的评分也可以排序,因此不影响ranking任务的完成。

 

我认为:

即使用pair-wise的优化方式,可以对训练时标记为“0”的item在预测时进行ranking。

但这本身是“矬子里面拔高个”,且训练数据与用户的实际偏好不符。而且,从数据量考虑,也很不经济。

 

合理的做法:

一般推荐业务场景,都是将一个有限的物品集合(全部物品的子集,通常很小)提供给用户。

我们只将提供给用户,但用户未有反馈的物品标记为“0”。对“未知”给与足够的尊重。

而且,将数据pair化过程限制在某次交互(或某个session)内。

 

 

如下图示: ——用户U1同有两次交互,共10个item

 

则pair化后的数据为:

  • 大小: 19.8 KB
  • 大小: 5.7 KB
  • 大小: 1.6 KB
  • 大小: 2.1 KB
  • 大小: 22.9 KB
  • 大小: 4.3 KB
  • 大小: 10.9 KB
  • 大小: 8.1 KB
  • 大小: 7.3 KB
  • 大小: 4.6 KB
分享到:
评论
7 楼 zhegeliang2 2017-09-25  
qq_20599123 写道
感谢博主的分享,想问下对BPR-OPT的先验概率部分展开那一块
ln p(\Theta) 怎么得到 \lambda_{\Theta}* |\Theta|^2的?
麻烦博主能不能给出更详细的推导?

这步能说明下原理吗?
6 楼 fobdddf 2016-11-16  
kite1988 写道
关于模型迭代更新公式的regularzation部分,有一个疑问想请教一下。在原始论文中, 每一轮迭代更新是加上一个 lambda* theta,



原始论文中的lambda是否和你推导的lambda不一样,比如,符号相反?

多谢!


仔细看了下论文,感觉是论文的符号错了,楼主这里是对的,下边有两份git上的代码,都是楼主这样的求导方法。
code:
https://github.com/hexiangnan/sigir16-eals/blob/master/src/algorithms/MFbpr.java
https://github.com/gamboviol/bpr/blob/master/bpr.py
5 楼 qq_20599123 2016-05-06  
感谢博主的分享,想问下对BPR-OPT的先验概率部分展开那一块
ln p(\Theta) 怎么得到 \lambda_{\Theta}* |\Theta|^2的?
麻烦博主能不能给出更详细的推导?
4 楼 liuzhiqiangruc 2015-06-10  
kite1988 写道
关于模型迭代更新公式的regularzation部分,有一个疑问想请教一下。在原始论文中, 每一轮迭代更新是加上一个 lambda* theta,



原始论文中的lambda是否和你推导的lambda不一样,比如,符号相反?

多谢!

符号应该没问题,写法不一样,你自己实现一遍就明白了。
3 楼 kite1988 2015-06-04  
关于模型迭代更新公式的regularzation部分,有一个疑问想请教一下。在原始论文中, 每一轮迭代更新是加上一个 lambda* theta,



原始论文中的lambda是否和你推导的lambda不一样,比如,符号相反?

多谢!
2 楼 liuzhiqiangruc 2015-02-27  
meffee 写道
请教个问题,推导中这一步是怎么来的?

    lamda * || theta^2 ||
=  lamda * || pu^2 || + lamda * || qi^2 || + lamda * || qj^2 ||
= ...

我看了一下原文,没有看到这一部分,还是赐教!

pu、qi、qj就是theta。展开了而已。
1 楼 meffee 2015-01-27  
请教个问题,推导中这一步是怎么来的?

    lamda * || theta^2 ||
=  lamda * || pu^2 || + lamda * || qi^2 || + lamda * || qj^2 ||
= ...

我看了一下原文,没有看到这一部分,还是赐教!

相关推荐

    BPR-Bayesian Personalized Ranking from Implicit Feedback

    BPR(Bayesian Personalized Ranking)是从隐式反馈中进行个性化排序的一个方法,它重点优化了推荐排序过程,而不仅仅是直接预测用户对单个项目的偏好。 隐式反馈是指用户在使用系统过程中未明确表达出偏好的信息,...

    Neural_Bayesian_Personalized_Ranking.rar_BPR推荐_BPR算法_KQXN_bpr算法实

    - "bpr算法":BPR全称为Bayesian Personalized Ranking,是一种通过优化对未被用户评价的物品的预测来提升推荐质量的方法。 - "kqxn":这可能是个人或者团队的缩写,可能与该算法实现有关。 - "bpr算法实现":指该...

    FrankWolfe_BPR配流算法.rar_FrankWolfe_BPR_FrankWolfe_BPR配流算法_frankwo

    **BPR(Bayesian Personalized Ranking)配流算法** BPR配流算法是推荐系统中的一种特殊优化方法,主要用于解决个性化排序问题。BPR的核心思想是通过最大化用户对未观察到的正样本(潜在喜欢的项目)的偏好,来改进...

    人工智能-项目实践-推荐算法-基于implicit库的常用协同过滤推荐算法实现(ALS\BPR\Logistic Matrix)

    人工智能-项目实践-推荐算法-基于implicit库的常用协同过滤推荐算法实现 ...BRP(Bayesian Personalized Ranking),贝叶斯个性化排序 Logistic Matrix Factorization 使用Cosine, TF-IDF 或 BM25的近邻模型

    智行酒店排序模型实践.pptx

    在这一实践中,主要涉及到两种机器学习方法:SVM Rank(支持向量机排序)和Factorization Machine(因子分解机),以及Bayesian Personalized Ranking(BPR)算法。 首先,SVM Rank是一种基于Pairwise学习的排序...

    Basic-BPR-Demo.zip

    在本实践项目中,我们关注的是“Basic-BPR-Demo.zip”,它是一个包含推荐算法实现的压缩包,特别提到了TensorFlow这一深度学习框架。这个项目的核心是利用TensorFlow来构建一个基本的矩阵分解模型—— Bayesian ...

    BPR贝叶斯个性化推荐算法-推荐系统基础算法(含python代码实现以及详细例子讲解).zip

    BPR全称为Bayesian Personalized Ranking,是一种基于矩阵分解的推荐系统算法,尤其适用于解决稀疏数据问题。该算法的核心思想是通过最大化对未观察到的用户-物品对的偏好来进行模型训练,以提高推荐的精度和多样性...

    BPR算法设计文档1

    本文档主要介绍了贝叶斯个性化排序(Bayesian Personalized Ranking,简称BPR)算法,这是一种基于成对方法(Pairwise Approach)的排序算法,广泛应用于推荐系统中,以实现对用户偏好的个性化排序。 ### 1.1 背景 ...

    基于 BPR 的社会影响力估计.zip

    BPR,全称为 Bayesian Personalized Ranking,是一种常用的推荐系统算法,旨在通过优化用户对物品的排序来提高个性化推荐的质量。在这个项目中,BPR模型被扩展应用到社会影响力估计这一领域。 【描述】提到,该项目...

    第七章算法列表、使用说明及结果1

    1. BPR (Bayesian Personalized Ranking):BPR是一种基于矩阵分解的协同过滤算法,其核心思想是通过最大化正样本和负样本对的排序差异来学习用户和物品的隐向量表示。在给出的结果中,BPR的精确度为0.2244,召回率为...

    基于BPR实现个性化排名推荐任务.zip

    本项目以“基于BPR实现个性化排名推荐任务”为主题,深入探讨了如何利用矩阵分解技术中的 Bayesian Personalized Ranking(BPR)算法来构建这样的系统。 BPR是一种基于概率的优化方法,它在机器学习框架下用于解决...

    Python-Implicit用于隐式数据集的快速Python协同过滤

    在隐式反馈场景下,`Implicit`库主要使用两种核心算法: Alternating Least Squares (ALS) 和 Bayesian Personalized Ranking (BPR)。 1. Alternating Least Squares (ALS): ALS是一种常用的协同过滤方法,它通过...

    推荐算法资源库

    - **BPR (Bayesian Personalized Ranking)**:优化了协同过滤,特别适合处理隐式反馈数据,如点击和购买行为。 - **SlopeOne**:这是一种简单而有效的在线学习算法,用于更新预测评分。 3. **数据处理**:...

    智行 LBS 的 Learning tog Rankg 模型g -g 酒店排序模型为例.pdf

    此外,FM通过Bayesian Personalized Ranking(BPR)方法转化为pairwise学习,从而实现个性化排序。BPR的目标是最大化已点击酒店与未点击酒店之间的差异,确保个性化体验。 总结来说,智行在处理酒店排序时,使用...

    融合多种数据信息的餐馆推荐模型.pdf

    在此过程中,研究者使用了 Bayesian Personalized Ranking (BPR) 优化准则,这是一种广泛应用于推荐系统中评估和优化用户物品排名的方法。BPR 优化的目标是最大化未被观察到的用户-餐馆对的评分,相较于已观察到的高...

    该存储库包含使用图神经网络(GNN)构建推荐系统的代码。_Jupyter Notebook_下载.zip

    5. **损失函数与优化**:讨论用于训练模型的损失函数,如交叉熵或BPR(Bayesian Personalized Ranking),以及优化算法,如Adam或SGD。 6. **训练与验证**:介绍模型的训练过程,包括批处理、训练集/验证集划分以及...

    基于PyTorch实现推荐相关的深度学习算法,包含排序(rank)和召回(match)。.zip

    在PyTorch中,我们可以使用如BPR(Bayesian Personalized Ranking)或者Pairwise Loss等方法来优化模型,目标是最大化已交互物品与未交互物品之间的差距。 召回(Match)阶段则关注于从大量候选物品中快速找出一小...

    Python-FluRS用于流推荐算法的Python库

    `FluRS` 是一个强大的开源工具,它集成了多种流推荐算法,如FMC(Frequent Matrix Completion)、BPR(Bayesian Personalized Ranking)以及基于深度学习的方法。这个库的主要特点包括: 1. **算法丰富**:支持多种...

Global site tag (gtag.js) - Google Analytics