CTR校准


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

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


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

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

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

7.88491695029e-08       9.80392156863e-05       4|50000
5.4510560119e-07        0.000274509803922       13|50000
1.35458085469e-06       0.000372549019608       18|50000
2.33257130656e-06       0.000588235294118       29|50000
3.39343704862e-06       0.000313725490196       15|50000
4.91818880101e-06       0.000352941176471       17|50000
6.69217711e-06  0.000313725490196       15|50000
8.65811344814e-06       0.000392156862745       19|50000
1.00954604284e-05       9.80392156863e-05       4|50000
1.14438087348e-05       0.00021568627451        10|50000
1.30646586671e-05       0.000196078431373       9|50000
1.50354239562e-05       0.000156862745098       7|50000
1.75724883698e-05       0.000235294117647       11|50000
2.012701573e-05 0.000196078431373       9|50000
2.25293057122e-05       0.000254901960784       12|50000
2.47121329232e-05       0.000294117647059       14|50000
2.68149995297e-05       0.000235294117647       11|50000
2.87109118589e-05       0.000235294117647       11|50000
3.03836824801e-05       0.000274509803922       13|50000
3.27245870019e-05       0.000450980392157       22|50000
3.51748897506e-05       0.000274509803922       13|50000
3.7623296079e-05        0.000352941176471       17|50000
4.03544768064e-05       0.000490196078431       24|50000
。。。

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


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


能夠非常明顯地看出平均預估點擊率大於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)。


1.將score由大到小排序,對於隨意兩個相鄰的score(i)和score(j)。若它們相應的樣本屬於不同類,則我們希望樣本i屬於正類,樣本j屬於負類
2.對於隨意兩個相鄰score,若上述條件不滿足,則令這兩個score所定義區間相應的后驗概率為score(i)和score(j)的均值。
3.對排序后的score依照上述規則進行一次“掃描”(由小到大或由大到小均可),直到沒有變化為止,即完畢了PAV


python-sklearn包中含有http://scikit-learn.org/stable/modules/generated/sklearn.isotonic.IsotonicRegression.html#sklearn.isotonic.IsotonicRegression  能夠直接調用:

from sklearn.isotonic import IsotonicRegression as IR

ir = IR()
ir.fit( p_train, y_train )
p_calibrated = ir.transform( p_test )   # or ir.fit( p_test ), that's the same thing

參考資料:

http://fastml.com/classifier-calibration-with-platts-scaling-and-isotonic-regression/

http://scikit-learn.org/stable/modules/generated/sklearn.isotonic.IsotonicRegression.html#sklearn.isotonic.IsotonicRegression

http://wan.poly.edu/KDD2012/docs/p768.pdf  




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM