七大點擊率預估方法總結(附代碼)

說明:C 表示點擊數,I 表示展示數,p 表示CTR

1. 普通方法

p = C / I

直接使用帖子的點擊數除以曝光數,存在的問題很明顯:

1. 可能有的帖子曝光數很少,甚至為 0,以至於得不到準確的 CTR。至於為什麼會有0,這和日誌統計有關係,因為曝光和點擊日誌是分開記錄的,而日誌ETL又是以自然單位時間來進行的,所以對於某個自然時間窗口,帖子的點擊事件捕獲到了,但是它的曝光事件出現在前面的時間窗口。

至於為什麼會很少,那是因為在自然競爭下,帖子的曝光分佈絕大多數不是平均的,甚至也不是正態分佈的,而是頭部很高、尾巴很長的長尾分佈。

2. 直接使用帖子的點擊數和曝光數,沒有考慮曝光事件和點擊事件裡面的噪音,或者說系統誤差,甚至是作弊行為。

2. 貝葉斯平滑

p = C + α / (I + α + β )

貝葉斯平滑,實際上是給了每個帖子一個先驗的 點擊率, 這個先驗的點擊率就是 α / ( α + β ),意思就是在正式做實驗之前,我們認為已經做了 α + β 次試驗,成功的次數為 α

至於先驗概率參數怎麼獲取,雅虎的專家們曾經發表過一篇論文[1]提供了一些思路。

因為二項分佈的先驗分佈是Beta分佈, 這裡可以看成是根據若干個Beta分佈的樣本估計Beta分佈的參數。

參數估計代碼:

七大點擊率預估方法總結(附代碼)

3. 時間衰減

七大點擊率預估方法總結(附代碼)
七大點擊率預估方法總結(附代碼)

感謝雅虎專家們,同樣是上面那篇論文中提到的時間平滑(我叫它時間衰減)。意思其實是隨著時間推移,發生在過去的點擊事件要做衰減,原文的說法是加權平均,過去的點擊權重小。我實現的時候還考慮了時間範圍。注意衰減我只對點擊進行衰減

七大點擊率預估方法總結(附代碼)

4. 位置糾偏

七大點擊率預估方法總結(附代碼)

位置糾偏或者叫位置衰減,其與時間衰減的原理類似,即發生在不同時間、空間上的點擊事件對我們要預測的用戶行為影響程度是不同的,這一點和subsampling有很大關係。北冥乘海生@劉鵬老師在《計算廣告》課程中有講到,使用歸一化點擊率來預測廣告的點擊率能夠消除展示位置帶來的影響。是的,這裡的歸一化就是要讓帖子的每一次點擊事件的影響轉化為帖子這次點擊事件相對同樣位置點擊事件的相對影響,樸素一點講,

你牛不牛逼要和你同一起跑線的人比,你做的事情牛不牛逼要和相同環境條件下的事情比。

七大點擊率預估方法總結(附代碼)

5. UCB方法

七大點擊率預估方法總結(附代碼)

ucb方法,ctr=普通ctr加1.96*普通CTR標準差,標準差的計算可以探討,暫考慮使用這一種;

主要原理是根據實時反饋預估帖子的曝光收益,假設我們還可以用點擊率來描述的話。那麼實時點擊率計算公式如上,實質上是均值加上標準差,類似於 置信區間(),只不過這裡取得是置信區間上界。為什麼這樣可以?或者說最優?為什麼是2倍不是3倍?我暫時也不清楚。

七大點擊率預估方法總結(附代碼)

6. Tompson採樣

七大點擊率預估方法總結(附代碼)

1. ctr=pymc.rbeta(1 + a, 1 + b);

2. 帖子的點擊事件服從伯努利分佈,點擊率先驗服從Beta分佈

3. 加1是防止a或者b為 0 , 好像為 0 會出問題

貝葉斯平滑是把所有帖子放一起估計一個先驗分佈,Tompson採樣是根據觀測到的點擊次數 a

,未點擊次數 b 來生成一個服從Beta( a, b ) r

這樣操作為什麼可以?是不是最優?

七大點擊率預估方法總結(附代碼)

7. 數據清洗

其實這算不得一個方法,但是其重要性比一個方法可能還要大,所以單列出來說。

總結:

1. 在算法實踐中發現,可比性 是一個貫穿始終的重要概念,不可比的東西無法形式化地放在同一空間進行計算。

2. 從過濾策略中發現,能夠顯著減小整體不確定性的東西比較重要。


分享到:


相關文章: