【推荐系统之 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提取正样本用做后续的评估。

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

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

也就是在这里也需要改:

推荐系统之 BPR 算法及 Librec的BPR算法实现【1】的更多相关文章

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

    先前的是:推荐系统之 BPR 算法及 Librec的BPR算法实现[1] LibREC源码里的BPR算法的输入比较是:“(购买+点击)v.s.没出现的”,先前有修改过一次是让输入比较对为:“购买v.s ...

  2. Librec的AoBPR算法实现

    Librec的AoBPR算法实现:(基于1.3版本) 要用AoBPR,但是没有找到相应的配置文件,应该怎么办呢?       ——因为用的是1.3版本,所以没有,2.0版本有的.[跟BPR参数一样,就 ...

  3. 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)

    其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...

  4. 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用

    图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ...

  5. [Algorithm] 群体智能优化算法之粒子群优化算法

    同进化算法(见博客<[Evolutionary Algorithm] 进化算法简介>,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简 ...

  6. 【转】常用聚类算法(一) DBSCAN算法

    原文链接:http://www.cnblogs.com/chaosimple/p/3164775.html#undefined 1.DBSCAN简介 DBSCAN(Density-Based Spat ...

  7. JVM内存管理------GC算法精解(复制算法与标记/整理算法)

    本次LZ和各位分享GC最后两种算法,复制算法以及标记/整理算法.上一章在讲解标记/清除算法时已经提到过,这两种算法都是在此基础上演化而来的,究竟这两种算法优化了之前标记/清除算法的哪些问题呢? 复制算 ...

  8. 常用聚类算法(一) DBSCAN算法

    1.DBSCAN简介 DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种基于密度 ...

  9. 转载: scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法

    版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] ================== ...

随机推荐

  1. 【POJ】【2068】Art Gallery

    计算几何/半平面交 裸的半平面交,关于半平面交的入门请看神犇博客:http://blog.csdn.net/accry/article/details/6070621 然而代码我是抄的proverbs ...

  2. [6] 胶囊体(Capsule)图形的生成算法

    顶点数据的生成 bool YfBuildCapsuleVertices ( Yreal radius, Yreal height, Yuint slices, Yuint stacks, YeOrig ...

  3. Linux文件实时同步,可实现一对多

    说明:该功能服务端安装sersync2,客户端安装rsync,原理就是服务端主动推送设定目录下的所有更新的文件到各个客户端rsync接收. rsync大家都知道,是Linux自带的数据同步工具,而se ...

  4. Search in Rotated Sorted Array leetcode java

    题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 ...

  5. Simplify Path leetcode java

    题目: Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/&qu ...

  6. 理解JavaScript模仿块作用域

    1.JS没有块作用域 在C和Java中,一对大括号{}决定一个作用域,比如for循环.在js中,变量可以在函数任何一处定义,并且忽略重复定义.变量初始化之前使用,值永远是undefined. func ...

  7. ftp-ftp权限

    在服务器上创建ftp站点时勾选的是读写权限对所有的用户开放,但是发现有些用户还是只能读取不能写入,后来发现是因为ftp指向的文件夹本身的权限没有打开导致的,解决办法是,设置ftp指向的文件夹的权限为u ...

  8. ps aux命令解析

    auxa 显示所有与终端相关的进程,由终端发起的.x 显示所有与终端无关的进程.u 显示用户导向的用户列表.VSZ 虚拟内存集,进程占用的虚拟内存空间RSS 物理内存集,进程战用实际物理内存空间.S ...

  9. 解决WordPress 页面无法评论的问题

    最近在使用WordPress制作一个企业网站,因为是企业网站所以文章和页面都不需要评论功能,因此在主题里禁用掉了评论功能 //禁用页面和文章的评论功能//add_filter('the_posts', ...

  10. Office PPT如何切换到返回幻灯片

    1 如图所示,有"老师""同学""家人"三个板块,如果依次播放,将播放"老师1" "老师2" &qu ...