zoukankan      html  css  js  c++  java
  • 推荐系统之 BPR 算法及 Librec的BPR算法实现【2】

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

    LibREC源码里的BPR算法的输入比较是:“(购买+点击)v.s.没出现的”,先前有修改过一次是让输入比较对为:“购买v.s. 点击”。
    现在的情况是:以上二者结合起来,即比较对是:“(购买+点击)v.s.没出现的”+“购买v.s. 点击”的比较对。
     
    就比如,购买了1,点击了2,而未出现的设为3和4(隐式 item)。
    原先代码默认的比较对比较方式(正样本>负样本)是:1>3;1>4;2>3;2>4.;
     
    现在还要加上一个 1>2 的比较对。
     
    因此最终的比较对是:1>2 ;1>3;1>4;2>3;2>4.
     
    LibREC社区的不二前辈的建议是:
    写代码:正样本只采样1-2的物品。
    然后采样到1的时候,采样2-4的物品作为负样本。
    采样到2的时候,采样3-4的物品作为负样本。
     
     
    目前,BRP训练完的数据是没有缓存的。(——可以等下个版本。我记得@王宇峰 在实现模型的序列化和反序列化。1.3就尽快迁移到2.0吧。或者亦可以自己实现一下,用Json或者Kyro保存。参考一下相关文章。
     
     
    【我的最终做法】
    正样本 i 是已经确定可以采样出来。即为购买+点击的item
    负样本 j 来源于两部分,一个是点击无购买item,一部分是隐式item(随机)。因为两个集合没办法放一起,故采用随机数的方法,如果随机数等于1,采样后者,如果随机数等于0,采样前者。

  • 相关阅读:
    转:关于C++ const 的全面总结
    HDOJ->考新郎(sdut1021)
    有些人笑着,其实心里哭的很疼
    HDU-2084 数塔
    SDUT2176 -> 递归的函数
    删数问题(SDUT2072 )
    微信2种access_token对比
    nginx配置C compiler cc is not found
    ftp无法连接的原因
    php的ftp类
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/8798586.html
Copyright © 2011-2022 走看看