推荐系统之 BPR 算法及 Librec的BPR算法实现【1】

本文详细介绍BPR(Bayesian Personalized Ranking)算法原理及Librec中BPR算法的实现细节,包括对算法核心思想的理解、针对特定业务场景的数据处理方式调整等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

【推荐系统之 BPR 算法】

1、关于BPR的论文原文: BPR: Bayesian Personalized Ranking from Implicit Feedback

2、参考1:论文快读 - BPR: Bayesian Personalized Ranking from Implicit Feedback   (该博主的网站不错,尤其论文快读模块)

3、参考2:结合librec源代码读论文:Bayesian personalized ranking系列方法 (该博主的网站亦不错)

 

 

【Librec的BPR算法实现】

Librec的推荐系统库可以说是很强大了。郭老师团队特别厉害!

 

 我们原先是用Librec1.3版本里面的BPR算法作为对比实验。现在需要有所修改:

数据集是“购买/点击的商品”,想要计算其购买概率。

LibREC源码里的BPR算法的输入比较是“(购买+点击)v.s.没出现的”,目前需要的是“购买v.s. 点击”。因此需要改一下源码:

     // 那就改BPRRecoomender这里, 把数据集中购买的记录标记为1,点击却没购买的记录标记为0。然后就当作正负样本就行了。
     // 1.3 这个版本没有BPRRecoomender,而是BPR.java 。  1.3叫BPR,2.0叫BPRRecommender。一样的,就改对应的负采样。
     // 正采样不用改,点击记录分数如果是0,会自动被忽略。因此就只需要改负采样就好了。
     // 原来的代码是把所有每个用户正样本之外的物品都假设为负样本啊。
     // j 表示的是负样本是吗?可是它这里怎么是用的随机数??——就是把这里改成不要用随机数。
 
 
   
// 以下两个区别:
 //  是,2.0版本会过滤掉0。 1.3版本不会过滤掉0。
     // 可以在外部判断一下。如果data[index]是0,那么当作负样本,data[index]是1当作正样本。
 
这边改完之后应该没有 相关的配置文件有需要改的。没有影响到配置项。
但是划分器那里可能也得调整。现在得划分器(Splitter)可没有按照0,1提取正样本用做后续的评估。

 ------------------------------------------------------------------

-------------------------------------------------------------------------

 也就是在这里也需要改:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值