- 该模型的优势我们上面已经提到,即可以自动进行特征组合和特征筛选,但在实践过程中,模型的缺陷也比较明显,相比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
