推薦系統之 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

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

 也就是在這裏也須要改:

相關文章
相關標籤/搜索