文档章节

Facebook经典CTR预估模型,特征工程模型化、自动化GBDT+LR

o
 osc_ogi0qclx
发布于 2019/08/22 15:07
字数 1886
阅读 125
收藏 0

精选30+云产品,助力企业轻松上云!>>>

背景/来源/参考:

  • 来自知乎王喆机器学习笔记《回顾Facebook经典CTR预估模型》,和推荐系统的局部更新(相反于全量更新)有关,《如何增强推荐系统模型更新的「实时性」?》
  • Facebook在2014发表的“Practical Lessons from Predicting Clicks on Ads at Facebook”

 

摘要:

  • 在这篇文章中,Facebook提出了经典的GBDT(Gradient Boosting Decision Trees)+LR(Logistics Regression)的CTR模型结构,可以说开启了特征工程模型化、自动化的新阶段。其在五年前就采用的online learning,online data joiner,negative down sampling等技术时至今日也有极强的工程意义。简而言之,文章提出了一种利用GBDT自动进行特征筛选和组合,进而生成新的feature vector,再把该feature vector当作logistic regression的模型输入,预测CTR的模型结构。
 
模型:
  • 大家知道,GBDT是由多棵回归树组成的树林,后一棵树利用前面树林的结果与真实结果的残差做为拟合目标。每棵树生成的过程是一棵标准的回归树生成过程,因此每个节点的分裂是一个自然的特征选择的过程,而多层节点的结构自然进行了有效的特征组合,也就非常高效的解决了过去非常棘手的特征选择和特征组合的问题。
  • 我们利用训练集训练好GBDT模型,之后就可以利用该模型构建特征工程。具体过程是这样的,一个样本在输入GBDT的某一子树后,会根据每个节点的规则最终落入某一叶子节点,那么我们把该叶子节点置为1,其他叶子节点置为0,所有叶子节点组成的向量即形成了该棵树的特征向量,把GBDT所有子树的特征向量concatenate起来,即形成了后续LR输入的特征向量。
  • 举例来说,比如GBDT由三颗子树构成,每个子树有4个叶子节点,一个训练样本进来后,先后落到了“子树1”的第3个叶节点中,那么特征向量就是[0,0,1,0],“子树2”的第1个叶节点,特征向量为[1,0,0,0],“子树3”的第4个叶节点,特征向量为[0,0,0,1],最后concatenate所有特征向量,形成的最终的特征向量为[0,0,1,0,1,0,0,0,0,0,0,1],我们再把该向量作为LR的输入,预测CTR。
  • 引入了GBDT+LR的模型后,相比单纯的LR和GBDT,提升效果是非常显著的。混合模型比单纯的LR或Trees模型在loss上减少了3%。
  • GBDT子树数量与loss的关系画图,在规模超过500棵子树后,增加子树规模对于loss下降的贡献就微乎其微了,最终facebook选择了600作为其子树规模。
 
模型缺陷
  • 该模型的优势我们上面已经提到,即可以自动进行特征组合和特征筛选,但在实践过程中,模型的缺陷也比较明显,相比FTRL,FM,NN等能够通过梯度下降训练的模型来说,GBDT缺乏online learning的能力,因此我们往往只能相隔一天甚至几天才能够update GBDT模型,势必影响模型的实效性,那么Facebook是如何解决模型更新的问题的呢?

 

 

模型的实效性问题

  • 模型的训练时间和serving时间之间的间隔越短。daily update的模型相比weekly update的模型效果肯定是有大幅提升的
  • 但囿于facebook巨大的数据量以及GBDT较难实施并行化(一棵树要依赖前一棵树的生成结果)的原因,GBDT的更新时间往往超过24小时,所以为了兼顾data freshness和客观的工程要求,facebook采取了下面的模型更新方法:

 

  • The boosted decision trees can be trained daily or every couple of days, but the linear classifier can be trained in near real-time by using some flavor of online learning.GBDT的部分几天更新一次,而LR的部分进行准实时的更新
  • facebook当时的做法也对我们现在的工程实践有重要的参考价值。因为大量深度学习embedding方法的更新计算开销也非常大,但对实效性要求并不高,我们也完全可以低频更新embedding,高频或实时更新基于embedding特征的LR,NN等预测模型。

facebook的实时数据流架构

把来自不同数据流的数据整合起来形成sample features,并最终与click数据进行join,形成完整的labeled sample。在整个过程中,我认为最应该注意的有三点:

  • 1.waiting window的设定:waiting window指的是在impression发生后,我们要等待多久才能够判定一个impression是否有click。waiting window指的是在impression发生后,我们要等待多久才能够判定一个impression是否有click。
    • 如果waiting window过大,数据实时性受影响,如果waiting window过小,会有一部分click来不及join到impression,导致样本CTR与真实值不符。
    • 这是一个工程调优的问题,需要有针对性的找到跟实际业务匹配的合适的waiting window。
    • 除此之外,无论怎样我们都会漏掉一部分click,这就要求我们阶段性的全量retrain我们的模型,避免online learning误差的积累。
  • 数据流保护机制:facebook专门提到了online data joiner的保护机制,
    • 因为一旦data joiner失效,比如click stream无法join impression stream,那么所有的样本都会成为负样本,由于模型实时进行online learning和serving,模型准确度将立刻受到错误样本数据的影响,进而直接影响广告投放和公司利润,后果是非常严重的。
    • 为此,facebook专门设立了异常检测机制,一旦发现实时样本数据流的分布发生变化,将立即切断online learning的过程,防止预测模型受到影响。

 

降采样和模型校正

  为了控制数据规模,降低训练开销。

  facebook实践了两种降采样的方法,uniform subsampling和 negative down sampling。

  • uniform subsampling是对所有样本进行无差别的随机抽样,
    • 为选取最优的采样频率,facebook试验了0.001,0.01, 0.1, 0.5 和1五个采样频率,当采样率是10%时,相比全量数据训练的模型,仅损失了不到1%的效果。
    •  negative down sampling 保留全量正样本,对负样本进行降采样。除了提高训练效率外,负采样还直接解决了正负样本不均衡的问题,facebook经验性的选择了从0.0001到0.1的一组负采样频率。当负采样频率在0.025时,效果最好。

 

  • 、负采样带来的问题是CTR预估值的漂移,比如真实CTR是0.1%,进行0.01的负采样之后,CTR将会攀升到10%左右(1000次点击一次变成10次点击一次)。而为了进行准确的竞价,CTR预估模型是要提供准确的有物理意义的CTR值的,因此在进行负采样后需要进行CTR的校正,使CTR模型的预估值的期望回到0.1%。校正的公式如下.
  • q =正/(正+负)
  • p = 正/(正 + w负)   另负/正=x,消去x


 
 
 
 
 
 
 
 
 
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
CTR预估中GBDT与LR融合方案

转载:https://blog.csdn.net/lilyth_lilyth/article/details/48032119 1、 背景 CTR预估(Click-Through Rate Prediction)是互联网计算广告中的关键环节,预估准确性直接影响公司广告收入。...

osc_a0rvnejm
2018/05/09
1
0
CTR预估之LR与GBDT融合

转载自:http://www.cbdio.com/BigData/2015-08/27/content_3750170.htm 1、背景 CTR预估,广告点击率(Click-Through Rate Prediction)是互联网计算广告中的关键环节,预估准确性直接影响公...

osc_h46fea6z
2019/01/18
1
0
从最近的比赛学习CTR/CVR

https://zhuanlan.zhihu.com/p/35046241 包大人 深度学习炼丹劝退师 278 人赞同了该文章 从最近的比赛学习CTR/CVR 最近在玩kaggle的talking data的比赛,适逢IJCAI2018的比赛也是CTR问题,故...

osc_f85py9gf
2019/05/14
1
0
ctr_FM,FFM,deepffm,

一. 什么是ctr? one hot 特征没有大小关系, ctr即点击率,在推荐系统中,通常是按照ctr来对召回的内容子集进行排序,然后再结合策略进行内容的分发。 二. ctr预估模型的发展。 ctr预估模型...

osc_0lrxxjv2
2019/04/15
2
0
推荐系统遇上深度学习(十)--GBDT+LR融合方案实战

推荐系统遇上深度学习(十)--GBDT+LR融合方案实战 0.8012018.05.19 16:17:18字数 2068阅读 22568 推荐系统遇上深度学习系列: 推荐系统遇上深度学习(一)--FM模型理论和实践:https://www.jia...

osc_47cjrp4f
2019/09/04
9
0

没有更多内容

加载失败,请刷新页面

加载更多

038. RocketMQ 高性能最佳实践

1. 最佳实践之 Producer 1. 一个应用尽可能用一个 Topic,消息子类型用 tags 来标识,tags 可以由应用自由设置。 只有发送消息设置了 tags,消费方在订阅消息时,才可以利用 tags 在 broker...

华夏紫穹
39分钟前
24
0
QQ音乐Android客户端Web页面通用性能优化实践

QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化。本文将介绍 QQ 音乐 Android 客户端在进行 Web 页面通用性能优化过程中...

腾讯云开发者社区
58分钟前
26
0
rabbitmq+sleuth+zinkip 分布式链路追踪

我们都知道,微服务之间通过feign传递,在复杂的微服务架构系统中,几乎每一个前端请求都会形成一个复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟超时或者错误都有可能引...

良许Linux
今天
16
0
5分钟搭建属于你的视频会议系统

前言 在疫情的推动下视频会议和线上办公大力发展,如果你也想了解视频会议,看看这篇文章吧 准备工作 一台Ubuntu18.04拥有公网IP的服务器 一个域名提前解析到这台服务器上 安全组设置规则tcp...

死磕音视频
今天
17
0
从文本JavaScript中删除HTML - Strip HTML from Text JavaScript

问题: 有没有一种简单的方法可以在JavaScript中获取html字符串并去除html? 解决方案: 参考一: https://stackoom.com/question/3RxM/从文本JavaScript中删除HTML 参考二: https://oldbug...

fyin1314
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部