mf模型 svd++_序列推荐模型(一): FPMC
Factorizing Personalized Markov Chains for Next-Basket Recommendation
摘要和介紹
這篇文章發表于 WWW2010,當時主流的推薦方法是MF和MC
FPMC(Factorizing Personalized Markov Chains for Next-Basket Recommendation):
MF方法適合于建模personalized的推薦場景,MC方法適合于建模sequential的推薦場景,那么在Next-Basket Rec的任務中,如果既想考慮user-taste,又想考慮sequential信息,應該怎么做?
作者想了一個很自然的方法,那就是給每一個user建模一個markov transition matrix。也就是建模一個
的transition tensor,來融合序列和個性化兩方面的信息。由于我們多考慮了一個user的維度,所以數據更加稀疏,為了應對數據稀疏,導致的不容易估計的問題,作者建立了一個分解模型來做分解。任務介紹
首先為了說明MF和MC方法各有優缺點,Rendle舉了兩個例子:
FPMC的任務:
已知用戶列表
,物品列表 和每一個用戶的歷史交互序列 , 注意,這里的 不是單個的物品,而是物品的basket。去求解一個排序問題: , 也就是說對每一個用戶的每一個時間形成一個item的排序。方法
核心問題在于如何估算transition tensor的參數:
方法1: MLE 和 full parametrization
這是極大似然的估計方法,由于tensor的每一個位置都需要估算,所以又是一個全參數估計的方法。這種方法計算簡單,但是面臨一個問題, 就是每一個
的共現只是對 有貢獻,這造成了本來稀疏的信息更加利用不完全,最后矩陣中出現大量的0。如果我們考慮u,這種問題尤為嚴重,因為要 三者的共現才能做出有效的估計,而這樣的共現對是稀疏的。方法2:tensor分解
根據上面的分析,單獨考慮每一個user->item, 和 item->item之間的轉移概率估計,不能完全利用信息,這說明u-i和i-i之間的信息應該可以share。全參數的估計面臨稀疏性的問題,希望得到低秩表示。
Tucker分解:
顯然有如下的關系式:
考慮最簡單的單位tensor分解核:
通過上面的式子,可以看到這其實是向量內積做矩陣分解的tensor分解版本。
由于數據是稀疏的,Rendle 提出了下面的pairwise interaction的tensor分解:
對user,current item和next item 三者的pair關系設置兩方面的embedding,通過點積的和來估算:
這樣做的好處:
回到MC:
這種建模方法比方法1的全參數建模參數量更少,而且解決了數據稀疏的問題。
訓練方法
對于序列中的每一個轉移,都可以采集作為偏序關系的學習樣本。
從t-1 -> t, 的轉移過程采用BPR優化器訓練,學習偏序關系。序列中的BPR優化方法被作者命名為S-BPR。
和MF/MC方法的關系
注意到在訓練的過程中,并沒有對current-item做負采樣,也就是說這個打分和括號里面和U,L相關的項,對于訓練過程都是一樣的,做差之后就抵消了,完全沒有影響。
所以在BPRloss下可以簡化為:
顯然前一項是描述U-I的關系的,可以視為MF項,后一項是描述I-I關系的,可以視為FMC項。
值得注意的是: 并不能將FPMC視為 簡單的MF,FMC線性相加。理由如下:
- 訓練是聯合的,不是單獨訓練拼起來
- 這是建立在優化器和采樣方法對U-L之間的關系沒有感知的基礎上
- 采用pairwise interaction的tensor分解方法才可能出現這種情況
所以應該將FMC+MF視為一種退化的解。
結果和啟示
- FMC和MC相比克服了數據稀疏的問題,而且這種低秩估計的分解方法不容易overfit。
- MF和FMC相比,在dense數據上MF更好,因為user相關的信息比較多。FMC在sparse數據上更好,因為這時沒有足夠的信息來學習用戶的偏好,反而是最后一項物品更重要。
- 無論在dense還是sparse,FPMC都比FMC和MF好。
總結
以上是生活随笔為你收集整理的mf模型 svd++_序列推荐模型(一): FPMC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 紫光展锐与紫光股份的关系
- 下一篇: 保留小数点后三位_【Meta分析】Sta