推薦系統之 BPR 算法及 Librec的BPR算法實現【1】


 

【推薦系統之 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提取正樣本用做后續的評估。

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

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

 也就是在這里也需要改:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM