论文笔记 | KDD2014 | Practical Lessons from Predicting Clicks on Ads at Facebook

gbdt_lr-title.jpg

论文地址:https://quinonero.net/Publications/predicting-clicks-facebook.pdf

一 为什么读这篇

本文属于深度学习时代之前的一篇经典CTR预估paper,即大名鼎鼎的GBDT+LR,记得当年刚出来的时候还是挺火的,可惜深度学习遍地开花后,就退出舞台了,不过为了夯实下基础,还是得看看,同时希望可以从历史经典中挖出什么一些新的点子。

二 相关背景介绍

截止阅读时这篇论文的引用次数为369,没有FTRL那篇多。中了14年的KDD,出自脸书,总共11个作者,有华人有老外,有趣的是在本文发表时各个作者就已经各奔东西了,去哪的都有,Square,Quora,Twitter,Amazon。一作Xinran He现在在Snap,本篇是他读博二时在Facebook实习的工作。。90后,08年P大本科,12年南加州PHD,个人主页:http://xinranhe.myddns.me/

三 关键词及主要贡献

关键词:ctr predict,gbdt,lr,rank

1 用gbdt来自动做特征工程

2 一些在Facebook的实践经验,如数据新鲜度的影响,特征重要性的评估

四 详细解读

0 摘要

Facebook的日活7.5亿,广告主1百万(14年)。本文提出的模型结合了决策树和逻辑回归,相比各自方法有3%的提升。也探索了一些基本参数是如何影响系统的最终预测性能。毋庸置疑,最重要的是拥有正确的特征:那些捕获用户或广告历史信息的特征占据主导地位。一旦拥有正确的特征和正确的模型,其他因子扮演的就是小角色,挑选新鲜的数据,学习率方案的选择和数据采样能轻微提升模型效果。

1 介绍

广告拍卖的效率取决于点击预测的准确性和校准。受实践经验的启发,特别是围绕着数据新鲜度和在线学习,本文提出了一个模型体系结构,在产生相当紧凑模型的同时,将在线学习层融入其中。

2 实验设置

为了保证严谨的控制实验,本文选择了2013年第四季度任意一周的数据作为离线训练数据。将存储的离线数据分为训练部分和测试部分,用它们来模拟流式数据用于在线训练和预测。

评估指标

因为本文最关心的因素是对机器学习模型的影响,因此使用预测的准确率,而不是直接与利润和收益有关的指标。本文使用归一化熵和校准作为主要评估指标。

归一化熵(Normalized Entropy)

归一化熵,或者说是归一化交叉熵等于每次曝光的平均对数损失除以模型预测每个曝光的背景点击率(CTR)得出的平均每次曝光的对数损失。换句话说,也就是通过背景CTR的熵归一化的预测对数损失。背景CTR即训练数据上平均经验性CTR。将其称为“归一化对数损失”或者更清楚。其值越低模型预测越好。除以背景CTR的熵,使NE对背景CTR不敏感。

假定给N个训练样本,标签为(-1,+1),预测的点击率为,平均经验CTR为,则NE公式如下:

NE本质上是计算相对信息增益(RIG)的一个组成部分,RIG = 1 - NE

校准

校准是平均估计CTR与经验CTR之比。换句话说,就是预期的点击量与实际观察到的点击量之比。校准是一个非常重要的指标,因为准确率和良好校准的CTR预估是在线竞价和拍卖成功的关键。校准度与1的差异越小,模型就越好。

AUC

AUC是一个无需考虑校准,来衡量排序质量的好指标。在真实环境下,我们期望预测是准确的,而不仅仅是得到最优的排名顺序,以避免潜在的广告投放不足或超额投放。NE衡量预测的良好程度并隐含地反映了校准。

3 预测模型结构

本文模型结构如图1所示。

gbdt_lr-fig1.jpg

本文评估的在线学习方案基于应用于稀疏线性分类器的SGD算法。在特征变换后,曝光的广告是以结构化向量的形式给出的:,其中是第i个单元向量,而是n个分类输入特征的值。在训练阶段,假设给定二元标签来表示点击或非点击。

给定带标签的曝光广告,定义有效权重的线性组合定义为公式2:

其中为线性点击分的权重向量。

在SOTA的BOPR(Bayesian online learning scheme for probit regression)算法中,似然度和概率如下定义:
\begin{aligned} p(y | \boldsymbol{x}, \boldsymbol{w}) &=\Phi\left(\frac{s(y, \boldsymbol{x}, \boldsymbol{w})}{\beta}\right) \\ p(\boldsymbol{w}) &=\prod_{k=1}^{N} N\left(w_{k} ; \mu_{k}, \sigma_{k}^{2}\right) \end{aligned}
其中为标准正态分布的累积密度函数,为标准正态分布的密度函数。通过期望传播和矩匹配来实现在线训练。结果模型由权重向量的近似后验分布的均值和方差组成。

本文比较了BOPR与似然函数的SGD,。产生的算法通常称之为逻辑回归(LR)。

上面描述的基于SGD的LR和BOPR都是流式学习器,都可以逐个训练数据。

3.1 决策树特征变换

有两种简单的特征变换方法。对于连续特征,第一种学习非线性变换的trick是将特征分箱,并将箱的索引视为分类特征。线性学习器有效地学习了该特征的分段常数非线性映射。学习有用的分箱边界是非常重要的,有许多信息最大化的方法可以实现这一点。第二个简单且有效的变换在于构建输入特征元组。但不是所有的组合都有用,没有用的可以修剪掉。

本文发现boosted决策树是一种强大且方便的方法,可以实现上面描述的那种非线性变换和元组变换。将每棵树视为一种分类特征,以实例最终落入的叶子的索引为值。使用1-of-k来编码这种类型的特征。举个栗子,如图1所示有两颗子树,第一颗子树有3个叶子,第二颗有2个叶子。如果一个实例最终落在第一颗子树的第二个叶子上,第二颗子树的第一个叶子上,则整个输入变为二元向量 [0, 1, 0, 1, 0]。其中前3个节点对应第一颗子树的叶子节点,后两个对应第二颗子树。

本文使用GBM,经典的L2-TreeBoost算法。在每次学习迭代中,都会创建一棵树来对之前的树的残差进行建模。我们可以将基于boosted决策树的变换理解为一种有监督的特征编码,它将实数型向量转换为紧凑的二元向量。从根节点到叶子节点的遍历,表示某些特征的规则。在二元向量上拟合线性分类器,本质上就是学习规则集的权重。boosted决策树以批处理的方式进行训练。

实验效果如表1所示,这里记得NE值越低表示模型越好。有了树特征变换的方法,有了相对3.4%的提升。作为对比,大多数特征工程的实验只能提升一个百分点。

gbdt_lr-table1.jpg

3.2 数据新鲜度

点击预测系统通常部署在动态环境中,数据分布会随时间变化。

gbdt_lr-fig2.jpg

如图2所示,随着训练集合测试集延迟的增加,两种模型的预测准确率明显降低。使用单核CPU,上亿的实例,数百颗树来构建boosting模型可能需要24小时以上。在实际情况下,在一个多核机器上,通过足够的并发性,在几个小时内就可以完成训练,而多核机器要有足够的内存来保存整个数据集。在下一节会考虑另一种替代方案,gbdt可以天级训练,而线性分类器可以通过一些在线学习实现近实时训练。

3.3 在线线性分类器

为了最大程度的提高数据的新鲜度,一种方法是在线训练线性分类器,即将带有标签的曝光广告到达时就进行训练。在第4节描述了一个可以生成实时训练数据的基础架构。在本节评估几种基于SGD的在线学习的逻辑回归的学习率设置方法。这里给出了5种学习率设置方法,前三种是每个特征的学习率是独立的,后两种是对所有特征使用相同的学习率。通过网格搜索的最佳学习率如表2所示:

gbdt_lr-table2.jpg

实验结果如图3所示:

gbdt_lr-fig3.jpg

per coordinate的效果最好(也就是FTRL),相比per weight有5%的提升。

LR和BOPR的对比如表3所示:

gbdt_lr-table3.jpg

两者效果差不多,但LR相比BOPR的优势在于模型大小只有一半。BOPR相比LR的优势在于可以进行explore/exploit。

4 在线数据连接器

本文将这个系统称为“在线连接器”,因为它的关键操作是将标签(点击/不点击)与训练输入(广告曝光)以在线的方式连接在一起,类似的基础架构也用于流式学习,例如google的广告系统Photon。在线连接器将实时训练数据流输出到称为scribe的基础架构中。非点击行为的确认需要等待,等待时间窗口的长度需要仔细调整。等待时间太长会造成实时训练数据的延迟,同时增加等待点击信号的曝光缓冲区内存的增加。窗口时间太短会导致一些点击丢失。这种负面效应称为“点击覆盖”,即成功连接曝光的点击比例。在线连接器系统必须在实时性和点击覆盖间取得平衡。

示意数据和模型流程如图4所示

gbdt_lr-fig4.jpg

为了实现流到流的连接,系统利用了HashQueue,它是由一个先进先出作为缓冲窗口的队列和用于快速随机访问标签曝光的hash map组成的。

在使用实时训练数据生成系统时,还有一个重要的因素需要考虑,即建立保护机制,防止可能破坏在线学习系统的异常情况。异常检测机制在这里是有帮助的,例如当实时训练数据分布突然改变,则可以自动断开在线训练器和在线连接器的连接。

5 内存消耗和延迟

5.1 boosting trees的个数

实验从1颗树到2000颗树,限制每颗树不超过12个叶子节点。从图5可以看到,几乎所有的提升都是来自前500颗树。

gbdt_lr-fig5.jpg

5.2 boosting特征重要性

通常,少数特征贡献了绝大部分的解释力,而其余特征的贡献很小。如图6所示。

gbdt_lr-fig6.jpg

从上图可以看到,top10的特征贡献了一半的特征重要性,最后300个特征贡献了不到1%的特征重要性。

如图7所示实验了不同特征个数对模型效果的影响。

gbdt_lr-fig7.jpg

5.3 历史特征

在Boosting模型中使用的特征可以分为两类:上下文特征和历史特征。图8展示了历史特征在重要性中的占比。

gbdt_lr-fig8.jpg

从上图可以看到,历史特征比上下文特征提供了更多的解释力。top10特征全是历史特征。表4展示了只用历史特征和只用上下文特征的效果。

gbdt_lr-table4.jpg

但是要主要上下文特征对于处理冷启动问题非常重要。

从图9可以看到,上下文特征相比历史特征更依赖数据新鲜度。

gbdt_lr-fig9.jpg

6 应对海量训练数据

本节评估两种降采样技术,均匀降采样和负样本降采样。

6.1 均匀降采样

gbdt_lr-fig10.jpg

6.2 负样本降采样

gbdt_lr-fig11.jpg

6.3 模型重校正

负样本降采样能加速训练,同时提升模型性能。需要注意的是,如果模型用了负采样,那么也需要对降采样空间中的预测进行校准。这里举个例子,p为降采样空间中的预测,w为降采样比率,q为校准后的预测。

五 小结

这篇看起来还是比较轻松愉快的,没有那么难的感觉。一方面可能本篇更偏工业风,都是工业实践经验,没有复杂的算法推导,另一方面可能是一些当时的实践经验在今天已经习以为常了,更加熟悉的缘故。这里不得不感叹技术的发展之快,从新鲜东西变为常规套路也就短短的几年时间。如果再回顾的话,可能重点看3.1节就行了,这里是本篇最创新的地方,也就是GBDT和LR如何结合的,说白了其实就是用GBDT自动给连续特征做特征工程,而不是傻傻的手动指定规则离散化,用以增加LR的特征。另外本文的评估指标有点小众的感觉,所以所有实验数据看起来不是那么的直观。

素质四连

要解决什么问题

广告系统中的排序问题

用了什么方法解决

GBDT+LR

效果如何

相比单纯使用一种方法,有3%的提升。

还存在什么问题

两阶段方法,非端到端的训练

算法背后的模式和原理

组合大法好

六 补充

回顾Facebook经典CTR预估模型

推荐系统遇上深度学习(十)--GBDT+LR融合方案实战

你可能感兴趣的:(论文笔记 | KDD2014 | Practical Lessons from Predicting Clicks on Ads at Facebook)