slope one 推荐算法python 代码_基于协同的SlopeOne推荐算法原理介绍和实现
Slope One 算法是由 Daniel Lemire 教授在 2005 年提出的一個 Item-Based 的協同過濾推薦算法。
——文章概要
該篇文章主要介紹Slope One算法。Slope One 算法是由 Daniel Lemire 教授在 2005 年提出的一個 Item-Based 的協同過濾推薦算法。和其它類似算法相比, 它的最大優點在于算法很簡單, 易于實現, 執行效率高, 同時推薦的準確性相對較高。
協同過濾算法理解和Python實現
基于標簽的推薦算法
基于圖的推薦算法
經典的ItemCF的問題
經典的基于物品推薦,相似度矩陣計算無法實時更新,整個過程都是離線計算的,而且還有另一個問題,相似度計算時沒有考慮相似度的置信問題。例如,兩個物品,他們都被同一個用戶喜歡了,且只被這一個用戶喜歡了,那么余弦相似度計算的結果是 1,這個 1 在最后匯總計算推薦分數時,對結果的影響卻最大。
Slope One 算法針對這些問題有很好的改進。不過 Slope One 算法專門針對評分矩陣,不適用于行為矩陣。
Slope One算法過程
Slope One 算法是基于不同物品之間的評分差的線性算法,預測用戶對物品評分的個性化算法。
Slope算法主要分為3步
1. 計算物品之間的評分差的均值,記為物品間的評分偏差 (兩物品同時被評分)
( r_ui - r_uj ) 表示評分的差,這里需要注意的是j相對i的評分偏差是 r_ui - r_uj ,如果是i相對j的評分偏差則是 r_uj - r _ui,兩 者是互為相反數的關系。
其中:
r_ui :用戶u對物品i的評分
r_uj :用戶u對物品j的評分
N(i) :物品i評過分的用戶
N(j) :物品j評過分的用戶
N(i) 交 N(j) :表示同時對物品i 和物品j評過分的用戶數。
2. 根據物品間的評分偏差和用戶的歷史評分,預測用戶對未評分的物品的評分。
其中:
N(u) :用戶u評過分的物品
3. 將預測評分進行排序,取Top N對應的物品推薦給用戶
實例說明
例如現在有一份評分數據,表示用戶對電影的評分:
現在我們來預測預測每個用戶對未評分電影的評分。
Step1: 計算物品之間的評分偏差,以U1為例:
同理可以計算出電影b,c,d,e與其他電影的評分偏差。
Step2: 計算用戶對未評分物品的可能評分(為了方便計算,這里以U2為例)
由上表可知,用戶U2 對電影a沒有評分,這里計算用戶U2對電影a的評分。
Step3: 評分排序
由于給定樣例中,U2只對a沒有評過分,所以這里不需要進行排序,正常的話,按分數進行倒排就行。
代碼實現
這里采用Python實現,在實現過程中并沒有考慮算法的復雜度問題。
加載數據
計算物品之間的評分偏差
計算預估評分
主函數調用
打印結果為:
和上邊我們計算的結果一致。
完整代碼在: https://github.com/Thinkgamer/Machine-Learning-With-Python/tree/master/Recommend
應用場景
該算法適用于物品更新不頻繁,數量相對較穩定并且物品數目明顯小于用戶數的場景。比較依賴用戶的用戶行為日志和物品偏好的相關內容。
其優點:
算法簡單,易于實現,執行效率高;
可以發現用戶潛在的興趣愛好;
其缺點:
依賴用戶行為,存在冷啟動問題和稀疏性問題。
《推薦系統開發實戰》是目前已經在京東非自營上線 ,期待自營的上市,感興趣的朋友可以進行關注!
總結
以上是生活随笔為你收集整理的slope one 推荐算法python 代码_基于协同的SlopeOne推荐算法原理介绍和实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为成为全球领先的移动设备供应商
- 下一篇: websocket python爬虫_p