目前有一個應用場景,想在網站內給user(百萬量級)推薦可能喜歡的item(百量級),目前可以拿到user特徵,item特徵,以及user-item交叉特徵。

如果想用非CF方法,用LR來做做預測,就需要涉及到負樣本選取的問題。因為item比較少(百量級),目前我的想法是可以拿所有的user-item組合做樣本,如果user購買過某item,則該user-item的y = 1,否則 y=0.

有幾個問題想請教下業界達人們:

1.這種選取負樣本的方法可取麼? 如果不可取,一般業界是如何選取負樣本呢?2. 針對user數量遠遠多於item的特定場景下,更有效的推薦方法一般有哪些?希望得到達人們的指點,多謝~


謝邀!這是個非常有意思的問題。上面的回答中提到的方案(給用戶展示的item中,購買的作為正樣例,僅僅看過的作為負樣例),確實是在工業界中使用最多的方法。這裡我補充一點,採用這種方法一定要注意負樣例的過濾問題,比如說,我這次看了沒買,但是下次看的時候買了,或者說由於系統的實時反饋要求,需要根據用戶的在線行為調整推薦結果,由於用戶暫時未反饋而已被系統當做負樣例,過會兒用戶才買了,則一定要有相應的最終正負樣例調整過濾策略。另外,推薦演算法建議還是不要同時依賴於必須有正負樣例,原因有兩點:1. 一些應用場景根本不存在負樣例情況,比如移動音頻推薦,曾經跟考拉FM的陳開江老師探討過這個問題,在推薦系統中還是很重要的一個問題;2. 選擇的負樣例不一定是真正的負樣例(有偏),這樣就會影響推薦效果了。我挺同意 @xiao ma的看法,一定要評估一下CF演算法在你所在的場景中的效果,user多於item的話可以先從item-based CF開始,最好能夠綜合不同的CF方法。RecSys上有人研究過,推薦系統中對於超稀疏反饋推薦,特徵密度估計或者最熱門推薦效果最佳;當有一定用戶反饋後,LR效果最佳;當用戶反饋積累到一定數量時,CF效果最佳。如果想在進一步提高效果,可以嘗試一些現在比較火的方法:基於圖模型推薦、RBM或者深度學習,跟其他公司的小夥伴交流過,大家已經在這些領域取得了不錯的結果。對於用戶興趣轉移的問題,我覺得一是要做好特徵工程,能夠捕捉到變化,二是要做好模型,能夠反映相應的變化。好的推薦演算法工程師,都是半個PM。Good luck!

謝邀.首先問:1.item數據分佈是怎樣?2.為什麼放棄cf呢,放棄cf意味著必須非常準確的描述用戶,這通常不容易為什麼不把u2i cf分數或者降維做進模型呢?

然後關於問題,1.這樣抽樣很常見,也可以偏向選擇用戶有明顯負反饋的ui組合

2.數據稠密加入cf特徵,數據稀疏時候加降維特徵,多用用條件模型非線性模型嘗試

問題1:這種選取負樣本的方法可取麼? 如果不可取,一般業界是如何選取負樣本呢?

所有的user-item組合的複雜度也太大了,提供兩個方法做參考:1.user看過一個item,但沒買該item,是負樣本,參考點擊率預估,轉化率預估

2.對所有的item的特徵向量取平均向量avg_item_vector,user+avg_item_vector 作為負樣本

問題2:針對user數量遠遠多於item的特定場景下,更有效的推薦方法一般有哪些?如果你說的有效是指推薦效果,參考 @xiao ma的回答,參考Factorization Machine如果你說的有效是佔用計算資源少,可以先對user聚類,再將user類別-item做樣本


首先對於百級別的商品來說你的數據可能也不是特別稀疏;其實這個問題屬於one class classification,只存在正樣本,對於沒有交互的樣本可能是負樣本也可能是未知樣本,可以採用隨機負採樣的方法,即每個未知樣本都有一定的概率成為負樣本;題主說你已經有用戶特徵、商品特徵和之間的交互特徵(也就是全局特徵),可以參考Feature based Matrix Factorization或雙線性模型。

不請自來。

如果item真是幾百個的話,考慮CF是最划算的方法,如果只有100個,沒必要做推薦了,直接輪循即可,哈哈。

這是常見的負樣本選取方法,如果再整個負採樣是不是會效果好點,可以嘗試下。


@xiao ma

非常感謝您的答覆,讓我的思路清晰不少

您提到的兩個問題:

1:item分佈:我理解的您應該是想問item是否稀疏吧?item產品都是針對不同的 user人羣設計的,每種item都會有購買的人羣,所以item不存在非常稀疏的問題

2:CF也考慮過,主要是以前沒太多CF方面的經驗,所以。。優先考慮了lr

不過您說到可以把u-i的協同過濾分數加入到現有lr模型的備選特徵中,是非常贊的思路,我打算試一下

想再請教xiaoma哥幾個問題:

1: 顯性負樣本定義問題:

假設如下場景:初期用戶對商品不熟悉,購買了某種商品,但後來發現不喜歡,把該商品從收藏夾刪除,添加負面評論。這種 user-item的組合應該是按照顯性負樣本 來對待吧?但用戶曾購買過這種u-i組合,以是否購買作為y的話,這時候怎麼給y賦值比較好呢?y=0(不會購買)還是取一個購買的權重?

2:用戶購買興趣轉移的問題:

以上面的例子來說,用戶的真實購買興趣實際上已經發生了轉移,如何在樣本預處理的過程中處理該問題呢?請xiaoma哥多多賜教~
推薦閱讀:
相關文章