在矩陣分解在協同過濾推薦算法中的應用中,我們讨論過像funkSVD之類的矩陣分解方法如何用于推薦。今天我們講另一種在實際産品中用的比較多的推薦算法:貝葉斯個性化排序(Bayesian Personalized Ranking, 以下簡稱BPR),它也用到了矩陣分解,但是和funkSVD家族卻有很多不同之處。下面我們來詳細讨論。
1. BPR算法使用背景在很多推薦場景中,我們都是基于現有的用戶和商品之間的一些數據,得到用戶對所有商品的評分,選擇高分的商品推薦給用戶,這是funkSVD之類算法的做法,使用起來也很有效。但是在有些推薦場景中,我們是為了在千萬級别的商品中推薦個位數的商品給用戶,此時,我們更關心的是用戶來說,哪些極少數商品在用戶心中有更高的優先級,也就是排序更靠前。也就是說,我們需要一個排序算法,這個算法可以把每個用戶對應的所有商品按喜好排序。BPR就是這樣的一個我們需要的排序算法。
2. 排序推薦算法背景介紹排序推薦算法曆史很悠久,早在做信息檢索的各種産品中就已經在使用了。最早的第一類排序算法類别是點對方法(Pointwise Approach),這類算法将排序問題被轉化為分類、回歸之類的問題,并使用現有分類、回歸等方法進行實現。第二類排序算法是成對方法(Pairwise Approach),在序列方法中,排序被轉化為對序列分類或對序列回歸。所謂的pair就是成對的排序,比如(a,b)一組表明a比b排的靠前。我們要講到的BPR就屬于這一類。第三類排序算法是列表方法(Listwise Approach),它采用更加直接的方法對排序問題進行了處理。它在學習和預測過程中都将排序列表作為一個樣本。排序的組結構被保持。
4. BPR的算法優化思路
5. BPR算法流程
6. BPR小結
BPR是基于矩陣分解的一種排序算法,但是和funkSVD之類的算法比,它不是做全局的評分優化,而是針對每一個用戶自己的商品喜好分貝做排序優化。因此在叠代優化的思路上完全不同。同時對于訓練集的要求也是不一樣的,funkSVD隻需要用戶物品對應評分數據二元組做訓練集,而BPR則需要用戶對商品的喜好排序三元組做訓練集。
在實際産品中,BPR之類的推薦排序在海量數據中選擇極少量數據做推薦的時候有優勢,因此在某寶某東等大廠中應用也很廣泛。由于BPR并不複雜,下一篇我會用tensorflow來做一個BPR的實踐,敬請期待。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!