本文聚焦于CIKM20上百度发表的一篇关于展示广告召回阶段样本优化的文章,论文标题为《Sample Optimization For Display Advertising》。文章提出了多种样本优化方法,有效提升了线上广告收入,值得学习。
1、背景
工业界广告排序系统通常包括两个主要阶段:候选生成阶段(即召回阶段)和排序阶段。如下图所示:
在本文中,我们主要关注召回阶段。在这一阶段,通常采用多种策略并行,如协同过滤、基于上下文的召回等。在百度的系统中,双塔模型是广泛使用的召回方式。从数据层面来看,训练一个合适的召回模型面临如下几方面的挑战:
1)样本选择偏差:召回阶段模型的训练样本是经过排序阶段后最终展示给用户的,仅有一小部分的广告会展示给用户。但模型需要对整个广告队列进行预测,这两者之间存在样本选择偏差。
2)真实的广告曝光分布通常是长尾的,一小部分广告占据了大部分的曝光,这些广告通常有更高的出价,具有更高的ecpm。但由于大部分曝光的广告没有被用户点击,这些高价值的广告通常多次被标记为负样本,其召回概率也降低,平台的收益也会随之下降。
3)曝光但未点击的广告,并不一定是真正的负样本。在广告系统中,一个广告未被点击通常出于多方面的原因,并不能直接认为这些广告与用户兴趣不匹配。
4)广告点击率低,导致样本中正分样本的数量差距较大,正样本比较稀疏。
对于以上几方面的问题,在召回阶段如何从数据层面进行优化呢?论文提出了多种策略,一起来看一下。
2、样本优化
本文提出的策略主要包括Weighted Random Negative Sampling、Real-Negative Subsampling、Sample refinement with PU Learning、Fuzzy Positive Sample Augmentation和Sampling with Noise Contrastive Estimation (NCE)。接下来分别进行简单的介绍。
2.1 Weighted Random Negative Sampling
第一种方法是使用负采样方式来丰富训练样本。由于广告曝光存在明显的长尾现象,因此论文提出了分片加权负采样的方式(piece-wise weighted negative sampling method)。
具体的做法是:首先基于广告的曝光频次对广告进行分组,曝光次数大于一定阈值的计作Ah,曝光次数小于一定阈值的计作Al。随后,产生一个(0,1)之间的随机数p,如果随机数p
- 首先,从正样本集合P中随机选取一部分spy set,记作S,并将S加入到未标记样本集合U中。
- 然后,使用去除S后的正样本集合P\S,作为正样本,U和S的交集作为负样本,训练biased SVM分类器(可参考论文《Building Text Classifiers Using Positive and Unlabeled Examples》)。
- 接着,使用得到的分类器计算U中每个样本的点击概率。
- 计算spy set中所有样本的平均点击概率。
- 最后,U中预测点击率小于4的样本,得到的平均点击概率,作为比较置信的负样本,记作RN。
最后,可以使用正样本集合P和RN来训练得到召回模型。
2.4 Fuzzy Positive Sample Augmentation
为了缓解正样本稀疏的问题,这里采用了一种启发式的方式来扩充正样本。在最终返回的广告列表中,只有头部的广告曝光给了用户,还有很多没有得到曝光。虽然这些样本没有得到曝光,但是是经过召回阶段和排序阶段的广告,有更高的概率与用户的兴趣相匹配。因此,从这部分未曝光的样本中,选择CPM高于预先设定阈值的样本作为模糊正样本,加入到模型训练中,但这些样本的label并非为1,而是小于1的数。
2.5 Sampling with Noise Contrastive Estimation (NCE)
最后一种方法是在采样时使用Noise Contrastive Estimation (NCE)的方式。关于NCE,可以参考论文《Noise-contrastive estimation: A new estimation principle for unnormalized statistical models》,这里不在详述。
3、实验结果
最后来看下实验结果部分,先看下实验的设定:训练集使用所有的正样本以及1%采样的负样本,测试集包括两部分,一部分是不经过排序直接展示在头部的广告,称为Unbiased Test Set,另一部分是经过排序后展示给用户的广告,称为Biased Test Set。
离线评估指标包括AUC、click-recall和cost-recall,其中click-recall的计算方式如下:
在探讨广告召回模型的过程中,我们引入了一个新的策略,即通过不断叠加不同的召回和点击率评估指标来优化模型。这一过程不仅涉及了广告收入的线上评估,还重点考察了广告集合(Lu)和用户有点击行为的广告集合(Bu)之间的差异。
具体来说,召回模型得到的是一组广告集合,而用户有点击行为的广告集合则包含了那些被用户实际点击过的广告。接下来,我们采用成本-召回(cost-recall)的方法来计算广告的点击率。这种方法与点击率-召回(click-recall)类似,但计算方式略有不同。
随着策略的不断叠加,我们观察到模型的AUC值逐渐降低。这种现象的出现,主要是因为上述策略增强了模型的泛化能力,而非仅仅依赖于历史曝光数据进行拟合。此外,我们还注意到recall指标以及在线CPM都得到了显著提升。
至此,本文的内容已经介绍完毕。对于对策略效果感兴趣的同学,我鼓励你们阅读原文以获取更多信息。
最后,让我们轻松一下。分享一下我家可爱的狗狗照片,希望大家喜欢~