作者·黄崇远
『数据虫巢』
全文共8030字
题图ssyer.com
“ 万年长青的CTR预估。”
本文将涉及广告的排序相关业务,以及CTR预估的模型发展,最后将给出XGB+LR的经典组合解决方案。
本文的示例项目,基于Kaggle上的开源CTR预估数据集,见Github地址(记得给start哈):
https://github.com/blogchong/data_and_advertisement
01
前言
在系列第16篇《数据与广告系列十六:广告与游戏》中,我们中断了机器学习广告应用场景的话题,今天我们继续第十五篇的节奏。
在之前我们了解了广告基础属性(性别)的预测,并通过他了解了用机器学习思路解决业务问题的基本流程;随后我们又通过广告中异常检测的话题,学习了CostSensitiveClassification以及Smote过采样等机器学习的知识;紧接着我们对基于标签组合的智能定向话题进行了了解,并结合场景了解和学习了FM算法;接着对于商业兴趣标签的建模构建进行了了解,顺带把XGboost这个神器给学习了。
今天,我们来了解广告领域中算法应用历史最悠久的CTR预估场景,一个广告系统可以没有商业兴趣标签,可以没有智能定向,甚至可以没有基础属性,但只要在效果广告领域范畴内,就少不了CTR的预估。
并且,CTR预估不止在广告领域,在推荐系统场景同样是核心的存在,大致逻辑上是很相似的,只不过场景业务上不一样,有时候优化的目标也有所差异。
02
CTR预估的作用
我们先来看下整个广告系统的大致架构图。
这张图在《数据与广告系列七:广告与推荐系统技术架构》出现过,不知道大家还是否记得,当时我们是按整体逻辑结构进行讲解的,这里我们不关心整体的逻辑架构,只关心CTR核心在哪个环节起作用。
如图所示,显然CTR预估阶段发生在召回之后,投放之前,很多广告系统会把预估跟排序看成一个阶段,其实无所谓,从底层逻辑的角度看,CTR预估模型是核心影响排序的因素,特别是一些相对初级的广告系统,其实最终核心影响排序的因素就是ctr+cpc出价,其他的诸如广告主质量评分,环境上下文评分都不怎么考虑。
当然,一些硬性策略性的控制还是会做的。比如基础的曝光频度控制,主题广告的适当加权,黑白名单的控制等等。
回到广告排序的问题,从一个User进来之后,需要根据一些过滤性策略,包括频控,黑白名单等条件,在剩余的广告池中,再根据广告的定向条件,进行召回匹配,拿到若干个待排序候选广告,形成一个广告列表。
然后广告列表走排序逻辑,最终根据排序的顺序,取第一个score最高的广告给当前user进行曝光。
在这里,我们假设只做最简单的排序计算考虑,其实就是CTR*CPC,而如果再乘以1000转换过来就是eCPM,即千次展示期望收益。
从这里我们可以看到,其实一个排序逻辑就是最终我们系统所期望的优化目标,即如果是CTR*CPC的计算方式,假设CTR预估又十分准确的情况下,这种机制其实是往平台收益目标去优化的。
道理逻辑很简单,假设抛出了其他因素情况下(定向符合,频控符合),哪个广告能给我带来更高的收益,我就把这次曝光机会给谁(广告)。
CPC每个广告给出来的都是明确的,价高价低一目了然,剩下来就是CTR预估的事了,预估的准确意味着你的平台收益更加的稳定,以及达到理论收益最大值。
所以,让CTR预估的更准就变成了广告系统最最最重要的事,毕竟都是真金白银呐。
但是,有个问题不知道大家有没有考虑过,我们一切以CTR*CPC为核心逻辑作为排序基准,来确定流量曝光给哪个广告,但对于广告主来说并不一定都是好事。
以前面几个我们认真了解过的业务领域比如《数据与广告系列八:广告与二类电商》《数据与广告系列九:本地化广告》《数据与广告系列十六:广告与游戏》来说,