【推荐系统】深入理解推荐系统:排序
寫在前面
【推薦系統】專欄歷史文章:
深入理解推薦系統:召回?
深入理解YouTube推薦系統算法
作為【推薦系統】系列文章的第三篇,將以“排序”作為今天的主角,會從四個方面來介紹推薦系統中的排序模塊,即建模目標、樣本與特征、常見模型和效果評估的方法。
最近正好在做KDD Cup:Debiasing賽道,不同于其它類型的比賽,推薦系統中的排序建模需要大家自己構建正負樣本。本文也將作為方法梳理,希望能幫助到大家。
一、背景介紹
推薦系統整體架構
排序是推薦系統的第二階段,從召回階段獲得少量的商品交給排序階段,排序階段可以融入較多特征,使用復雜模型,來精準地做個性化推薦。排序所強調的是快和準,快指的是高效的反饋結果,準指的是推薦結果準確性高。
具體地,在生成候選對象之后,另一個模型會對生成的候選對象進行打分和排序,得到最后要推送的item列表。推薦系統可能具有使用不同來源的多個召回隊列,例如:
矩陣分解模型的相關item。
根據各類標簽下的用戶item。
“本地”與“非本地”項目;也就是說,要考慮地理信息。
熱門或流行item。
社交網絡;也就是朋友喜歡或推薦的item。
系統將這些不同的來源組合成一個通用的候選庫,然后由單個模型對其進行打分并根據該分數進行排名。例如,系統可以根據以下特征訓練模型以預測用戶觀看視頻的概率:
查詢特征(例如,用戶觀看記錄,語言,國家/地區,時間)
視頻特征(例如標題,標簽,視頻Embedding)
然后,系統可以根據模型的預測對候選庫中的視頻進行排序。
二、建模目標
排序的目標是根據業務目標來不斷變化的,最早期,業務目標簡單,需要聚焦的時候,往往會選取?個指標來重點優化,當做到中期的時候,就會發現單?指標對整體的提升已經非常有限了,或者說會出現很多問題,這個時候,往往就會引入多目標排序來解決這些問題。另一個方面,pointwise、pairwise和listwise本身它們都屬于排序目標的一部分,但通常會認為它們也屬于不同模型,我們放到后面再講。我們以小視頻自身的排序目標發展來說明排序目標的意義和如何根據業務需求,改進排序目標。
2.1 pointwise、pairwise和listwise
常用的排序算法框架有pointwise、pairwise、listwise三類,上圖中x1,x2,... 代表的是訓練樣本1,2,... 的特征,y1,y2,s1,... 等是訓練集的label(目標函數值)。pointwise學習單個樣本,如果最終預測目標是一個實數值,就是回歸問題,如果目標是概率預測,就是一個分類問題,例如CTR預估。pairwise和listwise分別學習一對有序對和一個有序序列的樣本特征,考慮得更加精細。在推薦系統中常用pointwise方法來做排序,它更直觀,易于理解,也更簡單。
2.2 回歸方式預估完成率
這里以小視頻業務為例,小視頻的業務形態與短視頻有很大的不同,由于全屏滑動這一形態的引入從而會面臨傳統點擊率預估之外的建模問題,也就是完成率建模。不一樣的完成率代表著用戶不一樣的滿意程度,那自然而然的想法就是把完成率這個連續值作為目標來預估,那么,我們的問題就變成了?個回歸問題了,看似完美解決了我們的問題。而實際實驗的效果卻和預期的大相徑庭,其原因還得做進一步討論。
2.3 多目標排序
我們上述說的都是單目標排序的各種建模方式,隨著業務的發展,我們會發現單目標排序迭代對系統的提升越來越有限了。一般多目標是學點擊,時長,消費,點贊,評論,分享等,模型能確實學到的輸出是有切實含義的,比如點擊的概率,觀看的時長,用戶到底會花多少錢等。比如我們以完成率建模,短視頻的完成率天生就要比長視頻要高;作者會想辦法發各種騙完成率的視頻,類似列表頁產品形態中的標題黨,比如,猜謎類視頻等。這些問題反映了單指標建模的脆弱性,所以,多目標建模的魯棒性就由此凸顯出來了。而多目標建模中難點在于如何平衡多個建模目標之間的關系,目前的通用做法是將多個q加權或連乘,比如Prob(click) * watch_time,也就是人工的去制定規則,這種方式可以快速見效、簡單、快捷,而且便于理解。但?個很致命的問題是,人工規則沒辦法挑選出最優的解。其次,當其中的?個因?發生變化時,比如值域發生變化,就會導致整體的公式失效。如何系統的去解決這兩個問題,是多目標建模中的重點和難點。
值得注意的是,Google在RecSys 2019上的最新論文《Recommending What Videoto Watch Next: A Multitask Ranking System》。該論文是youtube上實踐的一篇文章,并且內容應該比較實用。論文本身雖然沒有提出特別新穎的結構,但內容很實在,也 work,算是推薦系統中排序模塊很通俗易懂的文章了,論文主要聚焦于大規模視頻推薦中的排序階段,介紹一些比較實在的經驗和教訓。提出了一套大規模多目標排序框架應用于Youtube視頻推薦,引入MMoE解決多目標學習,以及解決用戶隱式反饋中的selection Bias問題。
三、樣本與特征
我們先來說說樣本,樣本與模型有什么關系呢,形象化的理解樣本是模型的養料,一個模型能夠得到很好的結果,很大一部分成程度上是由樣本的質量決定的。當然,不同的業務數據量,樣本的質量通常存在很大的差異,所以,在樣本上我們的問題就變成了如何根據業務目標,構造合適的樣本并加以使用。我們再來看看特征,特征是用來刻畫樣本的維度,沒有特征,樣本就只有一個label,只有看到了特征,我們才能理解樣本長得什么樣。這也是為什么要辦樣本和特征放在一起討論的原因。
理論上,模型學習的空間是樣本空間,而我們理想建模的空間是真實空間。如果樣本是真實空間的無偏采樣,那么,在樣本足夠充足的情況且模型足夠強大的情況下,我們是能學習到真實分布的。但很遺憾,我們很難去評估樣本的采樣是否是無偏的,模型也并不是那么強大。所以,當我們模型訓練完之后,測試集的error實際就是樣本能力和模型學習能力的兩部分error的加和。模型的學習能力通常根據模型的差異,是相對固定的。比如,svm就是比lr誤差要小。所以,在模型選型的大方向上,大家都是差不多的。真正比拼的實際就是算法工程師做 樣本和做特征的能力。
那么,什么是合適的樣本呢?合適的樣本是符合業務產出邏輯,同優化目標?致的單元。舉個例子,我要訓練一個點擊率模型,那么一條樣本就是一個展現或者點擊的記錄。如果我要訓練一個留存模型,那么,樣本就是這個用戶前一天看了哪些記錄,他們合并作為一個樣本。也就是說,樣本的定義不是一成不變的,而是根據業務目標,人為構造的,但是這個構造方式是要在邏輯上和業務目標融洽的。如果你要訓練一個留存模型,把用戶前一天搜索的關鍵詞作為樣本,那么,可能就不是那么融洽了。樣本的構造是一個看起來很容易,但是缺很難做的工作,它需要對業務很深刻的理解,才能發掘出有效的樣本構造方式。
說完樣本,我們再來看看特征。大部分做模型的同學實際都是做特征,特征的收益還是蠻高的。特征工作的基本思路是,人工預判有效特征->離線評估重要度和覆蓋率->訓練模型離線評估->在線實驗。總的來說在比較低的層面,充斥著大量的數據清洗工作和ETL(Extraction-Transformation-Loading)工作,但從長遠看,特征工程的優劣決定了模型的上限,早期的lr,模型并沒有多復雜,但是卻被業內使?多年,就是因為其中匯聚了特征工程的大量經驗和高效性。特征工程發展到現在,想要帶來比較大的提升的特征往往是根據業務場景的session行為精心設計的特征,比如常見的退場特征,搜索特征等。這些特征同樣需要?程師對業務的深刻理解以及對用戶行為的細致研究。深度學習帶來的?波紅利就是特征提取的自動化,但是在推薦系統中,業務場景的復雜程度要遠遠高于cv等常見特征自動提取場景。所以,特征工程的存在還是有其必要性的,特別是一些高級特征。
3.1 常見基礎特征
用戶側的特征,如用戶的性別、年齡、地域、購買力、家庭結構等。
商品側的特征,如商品描述信息、價格、標簽等。
上下文及場景特征,如位置、頁面、是否是周末節假日等。
交叉特征,如用戶側特征與商品側特征的交叉等。
用戶的行為特征,如用戶點擊、收藏、購買、觀看等。
四、常見模型
推薦系統排序早期都是lr,后續演變成gbdt + lr的方式,再到后來的dnn、fm、wide & deep等。排序目標上,目前業內主要還是pointwise。pairwise據我了解,在部分場景也有應用。listwise 大部分都屬于調研性質的了。另外,前段時間大火的強化學習,看起來在實際的業務 場景中,并不能很好的落地,所以,目前還沒見到比較成功的應用。阿里的DIN是不錯的嘗試,可以找來讀讀。RNN系列的LSTM,seq2seq目前沒看到很成功的范例。總的來說,以我 所?,在模型結構上想要作出出色的?作,是有?定難度的,所以,結合業務情況,可以在項目優先級上作出?定取舍。
4.1 LR
lr是比較簡單的線性模型,通過學習用戶點擊行為來構建CTR預估。利用logistic回歸構建推薦算法模型,具體模型如下面公式。
其中,??是用戶喜歡某個標的物的概率;??是權重,是需要學習的模型參數;??是特征??的值。我們可以通過上述公式計算待推薦標的物的??值。最終我們可以按照??值的大小降序排列來對召回的標的物列表做排序。
在工業界,為了更好地將該模型應用到真實業務場景中,很多公司對lr模型做了推廣。比如用到在線實時推薦場景中做排序,有Google在2013年推廣的FTRL,以及阿里推廣的分片線性模型。
4.2 GBDT+LR
GBDT(Gradient Boosting Decision Tree)是一種基于迭代思路構造的決策樹算法,該算法在實際問題中將生成多棵決策樹,并將所有樹的結果進行匯總來得到最終答案,該算法將決策樹與集成思想進行了有效的結合,通過將弱學習器提升為強學習器的集成方法來提高預測精度。GBDT是一類泛化能力較強的學習算法。
2014年Facebook發表了一篇介紹將GBDT+LR(Logistic Regression)模型用于其廣告CTR預估的論文,開啟了利用GBDT模型應用于搜索、推薦、廣告業務的先河。GBDT作為一種常用的樹模型,可天然地對原始特征進行特征劃分、特征組合和特征選擇,并得到高階特征屬性和非線性映射。從而可將GBDT模型抽象為一個特征處理器,通過GBDT分析原始特征獲取到更利于LR分析的新特征,這也正是GBDT+LR模型的核心思想——利用GBDT構造的新特征來訓練LR模型。
4.3 Wide&deep
Wide&deep模型最早被Google提出來,并用于Android手機應用商店上APP的推薦排序。目前該算法在國內很多互聯網企業得到大規模的采用,有比較好的效果。該模型將傳統模型和深度學習模型相結合。wide部分(傳統模型,如logistic回歸)起記憶(memorization)的作用,即從歷史數據中發現item或者特征之間的相關性,deep部分(深度學習模型)起泛化(generalization)的作用,即相關性的傳遞,發現在歷史數據中很少或者沒有出現的新的特征組合,尋找用戶的新偏好。通過將這兩個模型結合起來可以更好地在用戶的歷史興趣和探索新的興趣點之間做到平衡。
4.4 DeepFM
DeepFM 的結構其實很簡單:采取Wide & Deep的框架,差異在于將Wide部分的LR替換為了FM,從而自動構造二階特征叉乘,而非手工設計叉乘。其中,DeepFM的輸入可由連續型變量和類別型變量共同組成,且類別型變量需要進行One-Hot編碼。而正由于One-Hot編碼,導致了輸入特征變得高維且稀疏。應對的措施是:針對高維稀疏的輸入特征,采用word2vec的詞嵌入方式,把高維稀疏的向量映射到相對低維且向量元素都不為零的空間向量中。由上面網絡結構圖可以看到,DeepFM 包括 FM和 DNN兩部分,所以模型最終的輸出也由這兩部分組成:
五、排序模型效果評估
排序結果的評估主要是兩個步驟:
第一步:離線評估
在離線準備好的驗證集上進行數據驗證,如果效果優于先前的模型數據,則進行第二步,這里的效果包含多個指標,比如準確率、覆蓋率、多樣性等,在不同階段側重的指標也許是不一樣的,這個就是產品經理要去把控確定的,當前這一產品階段側重點在哪里或者是怎么去取舍,平衡。
第二步:線上實驗
直接對于線上用戶進行AB分桶實驗,先小流量實驗一段時間,一般在10天到半個月左右,對比實驗組和對照組數據;如果實驗數據為正向,則推到更多的用戶;如數據持續穩定,則推全到所有用戶。AB實驗在實驗設置還有不少細節,這方面也會在后面單獨在拿出來給大家介紹。
內容搶先看
在第四講的文章中,我將會對推薦系統中的常見經典模型進行介紹和實踐,主要內容分為FM、wide&deep、deepfm、DIN等部分。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習在線手冊AI基礎下載(pdf更新到25集)本站qq群1003271085,加入微信群請回復“加群”獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/yFQV7am喜歡文章,點個在看 與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的【推荐系统】深入理解推荐系统:排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抢人饭碗了!推荐一款全自动的机器学习建模
- 下一篇: java信息管理系统总结_java实现科