如何評價CTR預估效果?

使用邏輯回歸預測點擊率,線下可以使用log loss 和 auc來評估預測效果,除了auc之外,想到了準確率和召回率,

但lr給出的是一個後驗概率,而不是是否點擊,不知道如何計算這些指標了?

另外還有其他評估指標麽?

模型上線之後該怎麼評估是否有效果呢?


CTR預估,難在幾個點上:1. 觀察到的是點擊或沒點擊的二元數據,但是要預估的是一個[0,1]上的點擊概率,換句話說就是沒有絕對的ground truth;2. 各種機器學習模型訓練完以後出來的分數,即使是LR,也不見得就是一個好的可以直接拿來當預估結果的概率;3. 觀察數據往往是有偏的,比如在RTB裡面,觀察到的廣告展現和點擊數據都是贏得競價的那些。

評價CTR預估效果來說,假設給了你一個CTR預估模型,logloss和AUC是兩個比較常用的評價指標。logloss更關注和觀察數據的吻合程度,AUC更關注rank order。舉個例子:三個觀察樣本標籤{0,1,1},一個CTR預估是{0.49, 0.5, 0.51}, 另一個CTR預估是{0.91, 0.9, 1.0}, 可以算一下兩個的logloss和AUC感受一下。這裡AUC一般是指AUC of ROC。此外ROC和PR-Curve的關係可以參看這篇文章 (http://ftp.cs.wisc.edu/machine-learning/shavlik-group/davis.icml06.pdf)。如何計算這些指標這裡就不多說了,很容易一次搜索就找到,這些指標的計算不要求模型給出是否點擊。

上述兩個指標適合線下評估,線上其實有更簡單直接的評價方式:把線上的impression log按照預測的CTR從小到大排序,然後按照某個特點流量步長(比如每10000個impression)分桶,統計每個分桶的平均預估CTR (pCTR)和實際CTR(aCTR),把他兩的對比關係畫出來就行了,理想狀態下應該是一條斜率為1的線。

這裡要特彆強調一下用線上的其它業務指標如點擊率、營收、利潤、eCPC等等是不能給出CTR預估效果評價的。這些業務指標,受到整個廣告系統其它模塊如bid optimization,budget pacing等和外部競價環境的綜合影響,它的變化或者AB test中觀察到的不同,不是簡單地由於CTR預估變化帶來的。換句話說,如果上了一個新的CTR預估模型的實驗,發現業務指標變好了,這不等於說CTR預估更准了。一個簡單的例子:如果一個CTR預估模型給出的預估總是比上帝視角的完美預估在低CTR區域低估,在高CTR區域高估,那麼假設bid是base_bid*pCTR的話,相比完美預估,這個模型會贏得更多的高CTR區域的競價,輸掉更多在低CTR區域的競價,最後會觀察到實驗組的CTR反而比完美預估的試驗組更高。

CTR預估本身,需要解決1. rank order, 2. calibration, 3. sample distribution reconstruction 三個問題,有機會再分享。


2016.12.28第二次更新

離線主要看這三個:AUC, LogLoss,pCTR bias

AUC:主要是評估序,主要的缺點是無法判斷預估的值是否準確,另外對於query級的提升也無法很好的判斷。

AUC評估時需要注意的點:

1. 最好不要把所有流量合起來用AUC評估,雖然這樣看起來AUC的值會高很多,但無法區分廣告點擊率在哪些流量上預測的好或不好。這也是單純地說AUC達到了0.7還是0.8沒有太多的意義。

2. 當AUC指標不好時(感覺不好時),可以通過計算max AUC來驗證是否是數據的問題,計算的方式是計算每一種特徵組合的點擊率,將這個點擊率作為預測值計算AUC,計算出來的值是max AUC。

3. 加入特徵後(特別是user/context特徵後),AUC的提升,上線後不一定會提升,因為離線評估計算的AUC是針對query與query之間的,而在線時,排序是針對ad與ad之間的。

LogLoss:主要是評估距,但LogLoss在pCTR和CTR值比較近的時候(比如差個5%),區別比較小。

LogLoss評估時需要注意的點:

1. LogLoss對把正例預測的值很低,或是將負例的值預測的很高都會有比較高的值,而將負例預測成0.01,或是0.011(雖然相對0.01已經變大了10%),則區別不大。

pCTR bias(mean(pctr) - CTR):主要是彌補LogLoss的問題,給出另一種距的差異。

在線的評估指標,參考我寫的這個:

知乎專欄

懷疑我的也可以看這篇論文:

Predictive Model Performance: Offline and Online Evaluations

題主的疑問是預測出來的是點擊率,而不是是否點擊。其實這在點擊率預測時才是真正合理的,因為點擊率預估這個問題比較特殊,相同的特徵,有大量的正例,少量的負例,所以一個特徵組合的label,可以認為本身就是一個概率值,而不像通常的分類問題,是一個label。

另外說一個坑,一般剛開始做點擊率預測,會認為Logloss的大小不好理解,不如用MAE,但MAE這個指標基本沒什麼用。

舉一個例子一個特徵組合中100個樣本,99個負例,1個正例

全部預測成0.01

MAE = (1 * |1 - 0.01| + 99 * |0-0.01|) / 100 = 0.0198

全部預測成0

MAE = (1 * |1 - 0|) + 99 * |0 - 0| = 0.01

非平衡數據集是不適用的。

換成平衡的

100個樣本,50個負例,50個正例

預測成0.5

MAE = (50 * |1 - 0.5| + 50 * |0-0.5|) / 100 = 0.5

預測成0

MAE = (50 * |1 - 0|) + 50 * |0 - 0| = 0.5

還是不適用的,只是問題沒那麼嚴重了。這是由正負例重疊導致的。

對於online的模型評估,我在實踐中是每N分鐘dump出來一個模型,如果這個模型M分鐘後會發布到伺服器上用於點擊率預估,那麼我就每N分鐘將dump出來的模型去預測M分鐘前的數據,因為我們這裡數據量比較大,不太存在數據量比較小預測值不準的問題。

這裡也說一個大坑,剛開始搞在線點擊率預測的人,可能會感覺預測數據多一點會准一些,會用比較長的時間的數據,比如1天的數據,但是點擊率預估中很多特徵都是新產生的,比如新的廣告ID,也就是如果用比較老的模型去評估,可能效果會比那使用簡單特徵的模型要差,具體的現象就是評估越向後的數據,指標越差,這時候就要警惕了。

另外在online模型評估的時候,可以關注一下隨著評估的數據距離模型生成的時間增加,效果的變化。如果時間影響比較大,需要考慮下如何更快的分發模型。

有人看再更新吧。


lr本身就是個二分類模型,給出的後驗概率一定程度上可以表徵廣告被點擊的概率.

離線一般是通過在測試樣本上計算AUC曲線.

在線部分是通過小流量實驗比對實驗流量和對比流量的點擊率等指標啊~


離線通過看auc評估排序,normalized logloss 評估預測值,也要分廣告主看有多少投放的cpc不在目標範圍內。

線上abtest也可以看這些指標,還可以加上更多業務指標,比如毛利潤,冷啟動時長


CTR是評價你這個廣告也好,或者說你這個營銷方案也好的一個很重要的一個潛質指標。因為其實對於真正評判這個項目做得好不好,我們可能要看一段時間內的ROI,要看這段時間我們帶來多少leads,大概多少的APP的下載,但實際上廣告到底做得好不好,我這個方案做好不好,在最前端的這個廣告點擊上面,其實很多時候我已經能看出來一些端倪了,我能夠做一些評價。而CTR就是一個很好的指標。


推薦閱讀:

除了LR,FM(FFM)方法,CTR預測還有那些方法,應用較為廣泛?
廣告點擊率模型中,LR, GBDT+LR, FM, DNN等模型的優點和缺點?實際效果如何?
為什麼FTRL比FOBOS更容易獲得稀疏解?

TAG:廣告 | 演算法 | 機器學習 | 計算廣告學 | 點擊率 |