注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Koala++'s blog

计算广告学 RTB

 
 
 

日志

 
 

广告点击率实时样本产生  

2016-02-13 20:54:22|  分类: 计算广告学 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

实时样本

什么是样本

样本简单地讲就是用来机器学习的数据,本文所讲样本特指监督学习中的样本,即样本由特征和标签两部分组成。广告点击率预测中的特征主要有三部分,用户特征,广告特征,环境。举例说明,用户特征中有年龄,性别。广告特征中有广告ID,广告主ID。环境特征中有操作系统,联网类型,广告位等等。

什么是实时样本

实 时样本是相对批量样本的概念,批量样本一般是用来训练对实时性要求不高的模型,比如人脸识别,手写识别等。实时样本往往用在数据变化比较大的场景,点击率 预估就是一个场景,因为会不断有新广告等产生(因为现在的技术对于理解广告图片素材,并用来预估点击率还有一些距离,所以广告ID是一个重要特征),并且点击率也是随时间在变化的,比如双11,电商广告的点击率就会高,休息日,游戏广告的点击率会高。使用实时样本的算法目标就是尽可能地掌握这些变化。

批量样本可能是一堆聚合的文件,而实时样本是一个个实时产生的数据,实时训练算法顺序取得这些样本,用来训练,更新模型。

标签

点击率预估问题中的标签是离散的,或是正例,即有广告曝光和点击行为,或负例,即只有曝光,没有点击行为。如果允许一次广告曝光有多次点击,那么标签就是连续的。在实际中,一次曝光的多次点击,最多只有一次会被视为有效点击,所以我们的标签是离散二值的。

曝光和点击会相距一段时间,也就是说只有等一段时间,才能知道样本是正例还是负例。一般来讲有两种选择。

1.       从曝光表中不断扫新数据,数据全部标为负例,从点击表中同时不断扫新数据,数据全部标为正例。这种方式追求速度,但数据的正确性有一定的问题,首先,很明显点击率是对不上了,本来应该是CTR=Postive/(Positive+Negative),现在是Positive/(Positive+Negative+Positive),这个问题倒不大,可以在预测时候修正(Calibration)回来,另一个问题却是无法消除的,这种方法最核心的假设就是各种特征组的点击率都差不多,我这里举一个例子来说明它带来影响,假设一个网页,只有在点了广告的情况下才能看内容,而且用户一般都会点广告后看内容,那这个广告位的点击率接近100%,但使用这种方法后这个广告位却是50%了,但可能这个广告位只占总流量很小的一部分且其它流量点击率很低,使用这种数据学习出来的模型对这个广告位预估点击率无法修正。

2.       关联正负例,通过曝光ID将曝光数据和点击数据关联起来(点击中也有曝光ID),等待一段时间后将关联的数据输出,这里的等待时间就是等待点击数据回流的时间。这种做法在实时性上有了一定的折扣,但更能保证数据的正确性。

等待时间

         有的点击可能在曝光几小时后才产生,如果要保证所有的点击都回流,会对实时性影响非常大。所以我们的实现的时候只会保证绝大部分点击回流就可以了。

         要确定等待时间需要多长,可以统计点击时间和对应的曝光时间的间隔,找到比如能回流99%点击的时间时隔,在广告点击率预估中,一般X0分钟就足够了。

容灾

         实 践中,会因为各种原因导致数据不正常,但最严重且很难监控的是点击数据或是曝光数据丢失。其实曝光和点击数据一起丢了,问题反而不太严重,最多就是模型不 更新。曝光或点击数据丢失往往是网络延时造成的,具体的现象就是曝光和点击丢了一部分,这会导致点击率高一些或是低一些,而对这种监控是比较难做的,因为 每天每小时的点击率都是在变化的,而且实时样本都是流式的,小样本上统计点击率波动很大,很难做到统一的监控。而通过上游进行监控也不太合适,比如曝光丢 了0.1%,影响其实不算大,要这些数据比不要还是会好一些。你可能会想:这丢数据总该是按比例丢的吧,如果没丢到100%,如果用LR算法那预测出来的值或是都偏高,或是都偏低,序是不变的,影响应该也不大。但在广告系统中不是点击率去排序的,而是按eCPM,它等于预估点击率 * 出价,简单地说就是预估出来的值不但要追求序的正确,而且要追求距的正确。

         在 实践中我用了一种非常取巧的方法,先说一下背景,广点通排序分为两步,粗排序和精排序,这两步都会预估点击率,区别粗排序要预测的样本远多于精排序,所以 粗排序模型相对要简单一些。我们的数据主要用于粗排序,精排序没使用我们的数据,也就是我们的数据错了,不会影响精排序的结果。在从曝光和点击表中可以得 到精排序的结果,我通过统计精排序和样本点击率的差距,就可以发现是不是出问题了。你可能还会有疑问:如果那精排序如果也因为相同的原因错了呢?你怎么知 道他们用的是批量学习算法?这种情况虽然很少发生,但当然也不是不可能,为了防止这种情况发生,添加了对点击率绝对值的监控,如果明显高于是或低于同期点 击率,告警。
  评论这张
 
阅读(911)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017