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的平均预估点击率和校准点击率画出散点图为:
能够看出两个点击率是相关的。这样看还看不出详细什么关系,画出对数图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG1pbmdfMDg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" align="middle" alt="">
能够非常明显地看出平均预估点击率大于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/
CTR校准的更多相关文章
- 美团DSP
https://blog.csdn.net/LW_GHY/article/details/71455535 ADX出价调整, 预估ctr抽样后调整还原 2. 动态调整报价在DSP的报价环节,点击率预估 ...
- 负样本采样及bias校准、ctr平滑
参考:https://zhuanlan.zhihu.com/p/31529643 在CTR预估中,负样本采样是一种常见的特征工程方法.一般CTR预估的原始正负样本比可能达到1:1000~1:10000 ...
- CTR点击率校准
1. 概述 广告CTR预估过程中,正负样本比例差距较大,需要采样,但是采用后模型训练的结果是有偏的. 2. 校准方式 用逻辑回归作为激活函数
- 计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践
计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践 2018年06月13日 16:38:11 轻春 阅读数 6004更多 分类专栏: 机器学习 机器学习荐货情报局 版 ...
- oCPC中转化率模型与校准
翻看日历时间已经来到了2021年,也是共同战役的第二年,许久没有更新文章了,在与懒惰进行过几次斗争都失利之后,今天拿出打工人最后的倔强,终于收获了一场胜利.闲话不多说,今天咱们重点聊聊oCPC中转化率 ...
- 项目 CTR预估
项目和数据介绍 给定查询和用户信息后预测广告点击率 搜索广告是近年来互联网的主流营收来源之一.在搜索广告背后,一个关键技术就是点击率预测-----pCTR(predict the click-thro ...
- 【项目】百度搜索广告CTR预估
-------倒叙查看本文. 6,用auc对测试的结果进行评估: auc代码如下: #!/usr/bin/env python import sys def auc(labels,predicted_ ...
- HTML 5 背离贪吃蛇 写成了类似于屏幕校准
中间写了改 改了写 还是没做出自己满意的效果 ,看来自己的确不是一个走前端的料子.当然h5还是学一点好一点 具体说来 就是 在canvas 的画布中 鼠标点击后画上一个圆形 然后就有随机的在画布上面出 ...
- Google在KDD2013上关于CTR的一篇论文
最近在做CTR,刚好Google在KDD发了一篇文章,讲了他们的一些尝试,总结一下: 先是一些公式的符号说明: 一.优化算法 CTR中经常用Logistic regression进行训练,一个常用的L ...
随机推荐
- Win32环境下的程序崩溃异常定位
1 案例描述 作为Windows程序员,平时最担心见到的事情可能就是程序发生了崩溃(异常),这时Windows会提示该程序执行了非法操作,即将关闭.请与您的供应商联系.呵呵,这句微软的“名 ...
- uva 10602 Editor Nottoobad(排序)
题目连接:10602 Editor Nottoobad 题目大意:要输入n个单词,现在有三种操作, 1.输入一个字符,需要按下一次按键. 2.通过声控删除一个字符.3.通过声控复制一遍上面的单词.现 ...
- iOS_时间相关
计算两个时间之差,并以倒计时的方式显示: 比如:剩余XX天XX小时XX分XX秒 效果图例如以下: NSDate的分类: 使用场景: watermark/2/text/aHR0cDovL2Jsb2cuY ...
- 人事管理系统 c语言版
int menu(){ printf("请按提示输入完毕操作!\n"); printf("1.查询员工信息\n"); printf("2.统计 ...
- Swift - 解析JSON数据(内置NSJSONSerialization与第三方JSONKit)
一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SDK自带的JSON解决方案NSJSONSerialization,这是一个非常好用的JSON生成和解析工具,效率也比其 ...
- go之匿名字段
struct,定义的时候是字段名与其类型一一对应,实际上Go支持只提供类型,而不写字段名的方式,也就是匿名字段,也称为嵌入字段. 当匿名字段是一个struct的时候,那么这个struct所拥有的全部字 ...
- Delphi 数据类型列表 good
Delphi 数据类型列表 分类 范围 字节 备注 简单类型 序数 整数 Integer -2147483648 .. 2147483647 4 有符号32位 Cardinal 0 .. 429496 ...
- Nginx分时段限制下载速度解决方案(原创)_于堡舰_新浪博客
Nginx分时段限制下载速度解决方案(原创)_于堡舰_新浪博客 Nginx分时段限制下载速度解决方案(原创) (2011-03-02 16:40:49) 转载▼ 标签: ngi ...
- graph driver-device mapper-02driver基本操作
// 清除thin pool 1.1 func (d *Driver) Cleanup() error { // 停止thin pool err := d.DeviceSet.Shutdown() r ...
- linux yum命令
1 安装yum install 全部安装yum install package1 安装指定的安装包package1yum groupinsall group1 安装程序组group1 2 更新和升级y ...