標籤:

關於評分預測和TopN推薦的討論?

剛接觸推薦演算法的時候便聽說過有評分預測和TopN推薦這兩個概念,今天看到項亮的《推薦系統實踐》26頁關於這部分的簡短介紹,覺得這裡面可能有誤區,或者是我理解的問題啊,呵呵,這個恰似我曾經沒弄清楚流數據挖掘和數據流挖掘一樣,所以裡面提到亞馬遜科學家的不同看法貌似是在說預測評分,預測評分才是看了電影后再打分,而評分預測則是用評分結果去做推薦,才是真正的TopN推薦的一種形式,從這個角度看,這兩個概念的討論應該沒有書中說的那麼玄乎吧,求正解?


謝邀!這個問題的本質是在說推薦的目標和損失函數的區別。

推薦主要做的一件事情是主動幫助用戶找到他最需要的信息,如何來做這個事情,一般就轉化為一個優化問題。對於Netflix類似的電影推薦,由於許多用戶看完一個電影以後都會對電影評分來表達自己對電影的滿意程度。推薦這個優化問題一般都會選擇一個損失函數,在這裡損失函數就選擇預測評分與實際評分的平均平方差的根(RMSE),來預測如果給用戶推薦這部電影,用戶的滿意程度如何。但是這裡邊其實存在一個gap,用戶其實希望看到的是從最滿意到最不滿意的一個排序(最滿意的N個就是著名的topN了)。在很多情況下,RMSE下降了,但是topN排序並沒有變好,甚至變差,這就是推薦的目標和損失函數不一致。

基於這個原因,一個優秀的推薦排序,應該是ListWise的準確能夠獲得topN,也就是損失和目標一致,可行的方案比較多,比如L2R。關於目標的不同帶來的損失函數的選擇差異,一個典型的例子就是搜索引擎相關文章排序和競價廣告排序:相關文章排序為的是找到跟query最相關的文章,所以損失是query-doc差異最小化,於是採用PairWise/ListWise的各種優化方法;競價廣告為的是最大化廣告點擊,所以損失一般選擇交叉熵,採用優化CTR的方法。


我也剛看到這個問題。我的觀點:評分預測關注的主要是分數,既預測的分數和真實分數的誤差儘可能小;而TopN推薦側重於推薦N個和用戶喜好相似的物品列。亞馬遜科學家的觀點在於:TopN推薦更符合實際的需求。例如:將一部你喜歡的電影(真實打分為 4.5 分)預測為一般般(預測打分為 3.5 分)和將一部你覺得一般般的電影(真實打分為 3.5 分)預測為非常一般(預測打分為 2.5 分),對於用戶來說,前者顯得更糟糕。擅長對所有電影進行預測評分的推薦引擎並不一定能很好的預測排名靠前的 N 部電影。


推薦閱讀:

如何學習推薦系統?
為什麼感覺「今日頭條」推薦的內容很不準,而且好像也沒見怎麼改善過?
有哪些解決推薦系統中冷啟動的思路和方法?

TAG:推薦系統 |