延迟反馈带来的样本偏差如何处理
在廣告系統中,轉化率預估是個非常常見的任務,但是轉化行為的發生時間往往發生在點擊行為后很久,這樣就產生了一個很嚴重的問題.轉化率模型需要不斷更新,但是產生點擊的數據又不能及時用于轉化率預估,也就是我們常說的延遲反饋問題.以前的方法往往預留一個時間窗口,超過這個窗口的樣本會當作負樣本,如果該樣本后續又發生了轉化,那又會多一條正樣本注入模型,這樣就會帶來樣本偏差.所以這篇論文<Real Negatives Matter: Continuous Training with Real Negatives for Delayed Feedback Modeling>給出了解決方案.
延遲反饋建模
轉化率預估本質就是個二分類問題,每個樣本會被打上{0,1}的標簽,但是由于延遲反饋問題,如下圖所示,在等待窗口中發生轉化的都被標為正確的樣本,但是超出這個窗口后就有被標為負樣本但實際是正樣本的風險.一個非常navie的想法就是擴大等待窗口.但是在廣告系統中數據分布是在動態變化的,擴大等待窗口會導致模型學習不夠充分.
下圖左表示的是以前的方法,假的負例在轉化發生后又會復制一份,作為正例輸入到模型中,右圖中我們可以看到本文提出的方法會復制真實負例和正例,從而保證樣本分布一致.
本文提出的延遲反饋建模方法叫DEFER,q(x)是有偏差的觀測分布(由于延遲反饋,模型訓練的數據分布),p(x)是無偏差的觀測分布,如果不做任何處理,就是假定q(x)約等于p(x),會帶來偏差,為了降低偏差同時保障模型實時性,論文復制了正樣本和真實負樣本.
構建樣本的細節在于,給每個樣本制定一個等待窗口w1,在這個窗口發生轉化就表示它是正樣本,否則就是假負樣本或者真實副樣本,對于這些假負樣本如果后面發生轉化,那這些樣本依然會標上正樣本放到模型訓練,對于那些真實負樣本,依然會復制一份放到模型進行訓練,復制的操作帶來了更多轉化的確定性信息.
因為復制操作,q(x) = p(x),且:
條件概率q(y = 0| x)就可以寫為:
p_dp(x) = p(x,y=1,z>w1|x)是x被當作假負的概率.q(y=1|x)可以寫為:
由此我們可以得到loss function為:
由上公式,因為p(y=1|x)和p(y=0|x)是不可能得到的,所以用模型預估f替換,并且還需要訓練一個模型f_dp預估x是假負例的概率,最終loss function為, [.]是stop gradient操作:
本文還提出了一個多任務離線訓練的方法提升泛化能力,設定不同的窗口大小w1~wN,如下所示:
loss函數如下所示:
參考文獻
延遲反饋帶來的樣本偏差如何處理總結
以上是生活随笔為你收集整理的延迟反馈带来的样本偏差如何处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习模型如何缩小到可以放到微处理器呢
- 下一篇: Short-Session的推荐如何做?