推荐系统之 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提取正樣本用做后續的評估。?------------------------------------------------------------------
-------------------------------------------------------------------------
?也就是在這里也需要改:
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的推荐系统之 BPR 算法及 Librec的BPR算法实现【1】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Spark】Spark-空RDD判断与
- 下一篇: java信息管理系统总结_java实现科