点击率校准
来源:互联网 发布:想要女生的身体 知乎 编辑:程序博客网 时间:2024/04/30 01:14
通常预测的点击率都是不准的,需要校准。例如,boosted trees and SVM预测结果趋于保守,即预测的概率偏向于中值;而对于NaiveBayes预测的概率,小概率趋于更小,大概率趋于更大。常用的校准方法有Binning和Pair‐Adjacent Violators (PAV);下面分别说说这两种方法。
Binning思想比较简单,也容易实现。
需要说明的是,通常校准算法不仅仅是将概率校准为另一概率,而是广义地将一分类器的输出score(例如SVM的输出)校准为一概率;这里的score在本文中指的就是预估的点击率CTR。
采用以上方法就可以得到每个bin的平均输入概率和输出概率(输入输出都是相对于算法而言的)。下面是我针对1kw曝光量的测试集得到的每个bin输入输出概率:
7.88491695029e-08 9.80392156863e-05 4|500005.4510560119e-07 0.000274509803922 13|500001.35458085469e-06 0.000372549019608 18|500002.33257130656e-06 0.000588235294118 29|500003.39343704862e-06 0.000313725490196 15|500004.91818880101e-06 0.000352941176471 17|500006.69217711e-06 0.000313725490196 15|500008.65811344814e-06 0.000392156862745 19|500001.00954604284e-05 9.80392156863e-05 4|500001.14438087348e-05 0.00021568627451 10|500001.30646586671e-05 0.000196078431373 9|500001.50354239562e-05 0.000156862745098 7|500001.75724883698e-05 0.000235294117647 11|500002.012701573e-05 0.000196078431373 9|500002.25293057122e-05 0.000254901960784 12|500002.47121329232e-05 0.000294117647059 14|500002.68149995297e-05 0.000235294117647 11|500002.87109118589e-05 0.000235294117647 11|500003.03836824801e-05 0.000274509803922 13|500003.27245870019e-05 0.000450980392157 22|500003.51748897506e-05 0.000274509803922 13|500003.7623296079e-05 0.000352941176471 17|500004.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 IRir = 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
- 点击率校准
- blog点击率
- 点击率计算
- 提高点击率
- CTR(点击率)
- 点击率预估
- 点击率预估
- 触摸屏校准
- tslib校准 .
- eGalaxTouch校准
- ADC校准
- HMC5883L校准
- 传感器校准
- 上海餐馆点击率排名
- 如何提高点击率
- 静态页面点击率统计
- 计算点击率问题
- google 点击率 统计 js
- 关于Verilog中的赋值问题
- 日志文件3种状态
- 第四章 4.10节练习
- using thymeleaf之五条件表达式
- 个人项目:统计文本中的单词出现频率
- 点击率校准
- set、env、export的区别
- 关于日期格式为yyyyMMddHHmmss的14位按日、月、年、季度以及去重、未去重查询
- H3C文档NAT专题
- springMVC添加用户demo
- jsp页面杂记
- Sicily1121
- 堆和栈的区别以及衍生出来的栈的效率为什么比堆高
- sgu118:Digital root