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

 

【推荐系统之 BPR 算法】java

一、关于BPR的论文原文: BPR: Bayesian Personalized Ranking from Implicit Feedback算法

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

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

 

 

【Librec的BPR算法实现】ip

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

 

 咱们原先是用Librec1.3版本里面的BPR算法做为对比实验。如今须要有所修改:get

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

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

     // 那就改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提取正样本用作后续的评估。

 ------------------------------------------------------------------pdf

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

 也就是在这里也须要改:

相关文章
相关标签/搜索