为什么CTR预估使用AUC来评估模型?
ctr预估简单的解释就是预测用户的点击item的概率。为什么一个回归的问题需要使用分类的方法来评估,这真是一个好问题,尝试从下面几个关键问题去回答。
1、ctr预估是特殊的回归问题
ctr预估的目标函数为
f(x)=P(+1|x)
特殊之处在于目标函数的值域为[0,1],而且由于是条件概率,具有如下特性

如果将ctr预估按照一般的回归问题处理(如使用Linear Regression),面临的问题是一般的linear regression的值域范围是实数域,对于整个实数域的敏感程度是相同的,所以直接使用一般的linear regression来建立ctr预估模型很容易受到noise的影响。以Andrew Ng课程中的例子图1.b所示,增加一个噪音点后,拟合的直线马上偏移。另外,由于目标函数是条件概率,训练样本中会存在特征x完全相同,y为+1和-1的样本都出现的问题,在linear regression看来是一个矛盾的问题,而Logistics Regression很好的解决了这个问题[1]。

2、LR模型的cost function不使用平方差
一般回归问题采用的cost function是预测值和实际值的平方差,而LR模型无法采用平方差作为cost function的原因是由于基于LR模型公式的平方差函数是非凸函数,无法方便的获得全局最优解。
LR模型采用的cost function是采用cross-entropy error function(也有叫做对数似然函数的),error measure是模型假设h产生训练样本D的可能性(likelihood)[2]。
假设y1=+1, y2=-1, ......., yn=-1,对应的likelihood为:


3、为什么AUC也可以用于LR模型的评估
普遍上对于AUC的认识是在分类问题中,取不同的threshold后,在横坐标false positive rate,纵坐标为true positive rate平面上绘制ROC曲线的曲线下面积,所以很难理解是如何与这里的回归问题联系起来。实际上,一个关于AUC的很有趣的性质是:它和Wilcoxon-Mann-Witney Test是等价的[3]。而Wilcoxon-Mann-Witney Test就是测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score。有了这个定义,我们就得到了另外一种计算AUC的方法:具体来说就算统计一下所有M*N(M为正类样本的数目,N为负类样本的数目)个正负样本对中,有多少个组中的正样本的score大于负样本的score。

参考文献
[1]逻辑回归模型(Logistic Regression, LR)基础。 http://www.cnblogs.com/sparkwen/p/3441197.html
[2] Machine Learning Foundation, Coursera.
[3]AUC(Area Under roc Curve )计算及其与ROC的关系 http://www.cnblogs.com/guolei/archive/2013/05/23/3095747.html
原文连接:
为什么CTR预估使用AUC来评估模型?的更多相关文章
- 计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践
计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践 2018年06月13日 16:38:11 轻春 阅读数 6004更多 分类专栏: 机器学习 机器学习荐货情报局 版 ...
- Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率和决策树多元分类使用.precision方法以precision来评估模型的准确率(图文详解)
不多说,直接上干货! Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的 ...
- 召回率、AUC、ROC模型评估指标精要
混淆矩阵 精准率/查准率,presicion 预测为正的样本中实际为正的概率 召回率/查全率,recall 实际为正的样本中被预测为正的概率 TPR F1分数,同时考虑查准率和查全率,二者达到平衡,= ...
- Kaggle : Display Advertising Challenge( ctr 预估 )
原文:http://blog.csdn.net/hero_fantao/article/details/42747281 Display Advertising Challenge --------- ...
- 广告点击率 CTR预估中GBDT与LR融合方案
http://www.cbdio.com/BigData/2015-08/27/content_3750170.htm 1.背景 CTR预估,广告点击率(Click-Through Rate Pred ...
- CTR预估中GBDT与LR融合方案(转载)
1.背景 CTR预估,广告点击率(Click-Through Rate Prediction)是互联网计算广告中的关键环节,预估准确性直接影响公司广告收入.CTR预估中用的最多的模型是LR(Logis ...
- CTR预估中GBDT与LR融合方案
1. 背景 CTR预估(Click-Through Rate Prediction)是互联网计算广告中的关键环节,预估准确性直接影响公司广告收入.CTR预估中用的最多的模型是LR(Logistic R ...
- Spark Mllib里决策树回归分析使用.rootMeanSquaredError方法计算出以RMSE来评估模型的准确率(图文详解)
不多说,直接上干货! Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率和决策树多元分类使用.precision方法以precision来评估模型 ...
- CTR预估之LR与GBDT融合
转载自:http://www.cbdio.com/BigData/2015-08/27/content_3750170.htm 1.背景 CTR预估,广告点击率(Click-Through Rate ...
随机推荐
- Notepad++ 过滤注释行和空行
Notepad++ 删除指定字符开头的行的正则表达式 1.删除A之后的所有字符用:A.*$ 2.删除A之前的所有字符用:^([^s]*)A ####如果是其他字符就把A替换为其他字符 注释:如何是特殊 ...
- IDEA中Update resources和Update classes and resources、Redeploy、Restart server的区别
选项 描述 update resources 所有更改的资源都会更新(HTML,JSP,JavaScript,CSS和图像文件) update classes and resources 更改的资源将 ...
- storm提交拓扑报错processing getcomponentpendingprofileactions
storm提交新的拓扑,拓扑能提交成功,但是在UI界面查看时每个bolt报错Thrift.processing getComponentPendingProfileActions异常. 原因:stor ...
- Effective C++ 总结笔记(五)
六.继承与面向对象设计 32.确定你的public继承塑模出is-a关系 public继承意味着is-a.适用于base class身上的每一件事情也一定适用于derived class身上.每一个d ...
- 偷天换日,用JavaAgent欺骗你的JVM
原创:微信公众号 码农参上(ID:CODER_SANJYOU),欢迎分享,转载请保留出处. 熟悉Spring的小伙伴们应该都对aop比较了解,面向切面编程允许我们在目标方法的前后织入想要执行的逻辑,而 ...
- vue+node+mongondb实战之mongodb登陆操作
页面搭建基本完成,只是样式还没有美化,由于采取的前后端分离开发,所有页面逻辑全部由vue来负责,后台采用express框架只用来提供 接口,注册就是讲数据存入数据库,比较简单,而登陆碰了一些小问题,发 ...
- [nowcoder5671D]Data structure
问题相当于统计$且\sum_{l\le x<y\le r且lca(x,y)=x}1=c(sz[x],2)-\sum_{son}c(sz[son],2)$,考虑用莫队来维护区间,那么相当于要支持: ...
- WebRTC打开本地摄像头
本文使用WebRTC的功能,打开电脑上的摄像头,并且把摄像头预览到的图像显示出来. 纯网页实现,能支持除IE外的多数浏览器.手机浏览器也可用. 引入依赖 我们需要引入adapter-latest.js ...
- Spring Cloud Gateway过滤器精确控制异常返回(分析篇)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 在<Spring Cloud Gate ...
- springboot静态工具类bean的注入
工具类中调用数据.但是由于工具类方法一般都写成static,所以直接注入就存在问题. 所以写成了这样: package com.rm.framework.core; import org.spring ...