天天看點

CTR校準

普遍預測CTR不準,需要校準。例如。boosted trees and SVM預測結果趨于保守。即預測的機率偏向于中值;而對于NaiveBayes預測的機率,小機率趨于更小。大機率趨于更大。經常使用的校準方法有Binning和Pair‐Adjacent Violators (PAV);以下分别說說這兩種方法。

Binning思想比較簡單,也easy實作。

CTR校準

須要說明的是,通常校準算法不不過将機率校準為還有一機率。而是廣義地将一分類器的輸出score(比如SVM的輸出)校準為一機率;這裡的score在本文中指的就是預估的點選率CTR。

採用以上方法就能夠得到每一個bin的平均輸入機率和輸出機率(輸入輸出都是相對于算法而言的)。

以下是我針對1kw曝光量的測試集得到的每一個bin輸入輸出機率:

這僅僅是前面一些片段,第一列為每一個bin的平均預估點選率,第二列是校準的點選率,第三列為校準時分子分母的值(這裡就是點選量和曝光量),這裡每一個bin的總量均為50000。對整個每一個bin的平均預估點選率和校準點選率畫出散點圖為:

CTR校準

能夠看出兩個點選率是相關的。這樣看還看不出詳細什麼關系,畫出對數圖:

CTR校準

能夠非常明顯地看出平均預估點選率大于0.0001時。平均預估點選率的對數與校準點選率的對數是呈線性關系,

logy = alogx + b                  得到y = cx^a, 預計出參數c和a就可以。

對于平均預估點選率小于0.0001時,能夠簡單地使用線性回歸求出方程。

有了這兩個方程就能夠對随意的點選率進行校準了。

當然,我看也有人将以上平均預估點選率劃分成若幹區間0 < v1 < v2 < : : : < vn+1 < 1,對随意的點選率進行查找所屬區間(vi,vi+1),採用線性插值得到的校準點選率為  α p(vi) + (1 - α )p(vi+1)。

CTR校準

1.将score由大到小排序,對于随意兩個相鄰的score(i)和score(j)。若它們相應的樣本屬于不同類,則我們希望樣本i屬于正類,樣本j屬于負類

2.對于随意兩個相鄰score,若上述條件不滿足,則令這兩個score所定義區間相應的後驗機率為score(i)和score(j)的均值。

3.對排序後的score依照上述規則進行一次“掃描”(由小到大或由大到小均可),直到沒有變化為止,即完畢了PAV

參考資料:

<a target="_blank" href="http://fastml.com/classifier-calibration-with-platts-scaling-and-isotonic-regression/">http://fastml.com/classifier-calibration-with-platts-scaling-and-isotonic-regression/</a>

<a target="_blank" href="http://scikit-learn.org/stable/modules/generated/sklearn.isotonic.IsotonicRegression.html#sklearn.isotonic.IsotonicRegression">http://scikit-learn.org/stable/modules/generated/sklearn.isotonic.IsotonicRegression.html#sklearn.isotonic.IsotonicRegression</a>

本文轉自mfrbuaa部落格園部落格,原文連結:http://www.cnblogs.com/mfrbuaa/p/5036775.html,如需轉載請自行聯系原作者

繼續閱讀