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 ...
随机推荐
- Xtrabackup使用指南 | 简单.生活
Xtrabackup使用指南 | 简单.生活 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好 ...
- Main Memory Object-Relational Database Management System
Main Memory Object-Relational Database Management System FastDBMain Memory Relational Database Manag ...
- javascript实现图片无缝滚动(scrollLeft的使用方法介绍)
<!DOCTYPE html > <html> <head> <meta http-equiv="Content-Type" conten ...
- 硬盘重装Ubuntu12.04的感受
好久没更blog了,最近这两天系统也出了问题,win7蓝屏,ubuntu进不去-.后来win7整好了,ubuntu依旧顽固.用惯了linux,就不想在转到win7下面了,估计是习惯了各种敲命令的感觉吧 ...
- Mybatis在oracle、mysql、db2、sql server的like模糊查询
<!-- oracle --> <select id="searchUserBySearchName" parameterType="java.lang ...
- 【android】禁止Edittext弹出软键盘而且使光标正常显示
/** * 禁止Edittext弹出软件盘,光标依旧正常显示. */ public void disableShowSoftInput() { if (android.os.Build.VERSION ...
- Defender Game 游戏实践(1) 基本游戏场景实现
在网上看到 郑州|boy 这个博客,里面有几篇文章,记录了其用cocos2d-x这个游戏引擎编写的一个游戏,十分不错,所以这段时间,依样画葫芦,依次学习一下. 由于博主开发的平台是在win32,而且屏 ...
- LeetCode My Solution: Minimum Depth of Binary Tree
Minimum Depth of Binary Tree Total Accepted: 24760 Total Submissions: 83665My Submissions Given a bi ...
- hdu3006(状态压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3006 题意:给定一些集合,求这些集合所能组合的集合个数. 分析:这题就是用一个二进制数保存一个集合的元 ...
- C++ 中获取 可变形參函数中的參数
#include <iostream> #include <stdarg.h> using namespace std; int ArgFunc(const char * st ...