CTR預估模型中的正負樣本定義、選擇和比例控制

目前推薦系統中給用戶進行推薦大部分都是基於CTR預估來做的,CTR預估中很重要的一環便是正負樣本的選擇,那麼不同業務場景下我們如何定義正負樣本、如何控制正負樣本的比例、正負樣本選擇有哪些技巧?雖然這些只是模型訓練中的一環,但卻也扮演着重要的角色。

這篇文章簡單聊一下上邊提到的問題,如何你對這有什麼想法和意見,歡迎在評論區留言,一起溝通。

分析業務場景

不同業務場景下對應的kpi也是不同的,那麼模型訓練的目標也是不一致的,比如kpi是點擊率,那麼模型訓練的目的就是增加推薦的準確性,提升用戶的準確率;如果kpi是交易額,那麼模型訓練的目的就要考慮用戶的下單率和物品單價,不能僅僅考慮點擊。

但是有些kpi指標並不太容易直接量化成模型訓練的目標,比如內容平臺的用戶停留時長、用戶閱讀率、用戶活躍度度等,但可以通過對業務指標進行分析,簡介量化成模型訓練的目標。之前做過一段時間用戶消息push,個性化消息的推送目標是吸引用戶進入app,從而增加日活、月活,這個時候就是考慮的點擊,因爲用戶一旦點擊了,便可以進入平臺,轉變成活躍用戶。

所以在做推薦的時候,要搞清楚出我們的業務目標是什麼,從而制定合適的模型目標,而不是盲目追尋大衆,看大家都在做ctr,都是用點擊率進行模型訓練的,就盲目的使用點擊率。

正負樣本的定義

一般使用skip-above思想,即用戶點過的Item之上,沒有點過的Item作爲負例 (假設用戶是從上往下瀏覽Item,且會把正負樣本選擇限定在同一個業務場景中)。

對於視頻或者音頻節目而言,分成幾個種類:

  • 喜歡的節目:用戶當天播放過的節目
  • 歷史的節目:用戶在過去的一段時間內播放過所有節目
  • 曝光的節目:一段時間內對用戶曝光的節目。

由此,正樣本可以定義爲用戶當天播放過的節目,也就是“喜歡”。負樣本則有兩種選擇方案:

  • (1)負樣本指的是對用戶曝光過的節目,但是用戶至始至終都沒有播放過,也就是說該節目並不在“歷史”和“喜歡”兩個分類裏面
  • (2)負樣本指的是在整個抽樣的池子裏面,但是用戶至始至終都沒有播放過,也就是說該節目並不在“歷史”和“喜歡”這兩個分類裏面

但是一般情況下,我們會選擇給用戶曝光但是用戶沒有進行播放的節目作爲負陽本。

對於電商平臺而言,如果kpi的指標是GMV,那麼我們的正負樣本的選擇則會很大的不同。點擊率預估時正樣本可以是用戶點擊的商品,負樣本可以是給用戶曝光但是用戶沒有點擊的商品。目標是GMV時,我們要在保證用戶點擊的情況下促進用戶進行下單,繼而增加GMV,這時候正樣本如果還是點擊的話就沒有什麼意義了,簡單講,正樣本可以是用戶點擊且下單的商品,負樣本可以是用戶點擊但沒有下單的商品。但這時候又會引出另外一個問題:樣本稀缺。

阿里之前有一篇論文講述就是上邊提到的問題的解決算法,感興趣的可以閱讀:
【論文】Entire Space Multi-Task Model

正負樣本的選擇技巧

  • 對於正樣本的選擇不能簡單認爲用戶產生行爲就是證樣本,比如用戶誤點擊,當然對於視頻類平臺,如果用戶被視頻標題和圖片吸引,產生觀看行爲但是觀看之後發現並不是想看的,這時候就會退出,如果單純的認爲觀看就是正樣本,也會引起模型訓練的誤差,此時有效的做法可以是設定一定的閥值或者一定的觀看比例才能夠反映用戶是否喜歡該節目。比如YouTube的視頻節目,不止有“訂閱”,“添加到”,“分享”,還有能夠反映用戶喜好的“like”(頂一下),“dislike”(踩一下)。有的時候頂一下可能不足以反映用戶是否喜歡,但是踩一下基本上可以確定該用戶不喜歡這個視頻節目。除了“like”和“dislike”,對於其餘的一些APP或者視頻網站,還會有其餘的操作,比方說評論,分享,收藏,下載等操作。這些操作從某些層面上也會看出用戶是否喜歡該節目。

  • 無論是什麼平臺,用戶的活躍度分佈都是一個長尾分佈,越活躍的用戶對應的人數越少,但是其所佔的行爲越多。這種情況下,如果不考慮用戶活躍度去篩選正負樣本,難免活躍用戶所佔的權重就會增大,此時有效的解決辦法是針對每個用戶提取相同的正負樣本。

  • 《美團機器學習實戰》一書提到,它們在 feed 場景中採用了Skip Above的方式來提高效果。具體來講就是根據用戶最後一次點擊行爲的位置,過濾掉最後一次點擊之後的展示,可以認爲用戶沒有看到,也可以保留最後一次點擊之後的少數幾個。筆者認爲也可以進行嘗試。

  • 針對同一個內容在不同時間對同一個用戶曝光多次的情況,這時候訓練集中可能會出現同一用戶對同一內容點擊與不點擊並存的情況,如果多次曝光的間隔非常短,考慮只使用其中的一次曝光數據。

  • 平臺內會存在一些惡意行爲的用戶,此時可以進行相應的識別,模型訓練時去掉這些惡意用戶的行爲數據。

  • 補充一點劃分訓練集和測試集的兩種方法:

    • 隨機拆分(比如整個樣本集拆分爲訓練集和測試集)
    • 按時間維度拆分(比如樣本集 按天分區,前5天的數據作爲訓練集,接下來2天的數據作爲測試集)

正負樣本的比例選擇

正負樣本不均衡問題一直伴隨着算法模型存在,樣本不均衡會導致:對比例大的樣本造成過擬合,也就是說預測偏向樣本數較多的分類。這樣就會大大降低模型的範化能力。往往accuracy(準確率)很高,但auc很低。

正負樣本不均衡問題的解決辦法有三類:

  • 採樣處理——過採樣,欠採樣
  • 類別權重——通過正負樣本的懲罰權重解決樣本不均衡的問題。在算法實現過程中,對於分類中不同樣本數量的類別分別賦予不同的權重
  • 集成方法——使用所有分類中的小樣本量,同時從分類中的大樣本量中隨機抽取數據來與小樣本量合併構成訓練集,這樣反覆多次會得到很多訓練集,從而訓練出多個模型。例如,在數據集中的正、負樣本分別爲100和10000條,比例爲1:100,此時可以將負樣本隨機切分爲100份,每份100條數據,然後每次形成訓練集時使用所有的正樣本(100條)和隨機抽取的負樣本(100條)形成新的訓練數據集。如此反覆可以得到100個模型。然後繼續集成表決

當然常用的是上述集成方法,但是不是直接進行使用,試想訓練100個模型進行表決,離線會很麻煩,而且線上使用也不現實。

所以通常會進行修改使用,一般情況下在選擇正負樣本時會進行相關比例的控制,假設正樣本的條數是N,則負樣本的條數會控制在2N或者3N,即遵循1:2或者1:3的關係,當然具體的業務場景下要進行不同的嘗試和離線評估指標的對比。

當然上述的前提是正負樣本的選擇。好了至此,完事,如果你看到了這裏,麻煩點個在看,可以的話進行分享,讓更多的人看到,畢竟知識是沒有界限的。


【技術服務】,詳情點擊查看: https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg

掃一掃 關注微信公衆號!號主 專注於搜索和推薦系統,嘗試使用算法去更好的服務於用戶,包括但不侷限於機器學習,深度學習,強化學習,自然語言理解,知識圖譜,還不定時分享技術,資料,思考等文章!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章