Smart Pacing for Effective Online Ad Campaign Optimization

这篇文章是广告预算控制平滑的第二篇经典文章解读,来自Yahoo,KDD2015。

与之前LinkedIn那篇文章类似,这篇文章也是用概率节流的方式进行预算控制,同时这篇文章考虑有无效率保障情况下,如何平滑预算消耗。

摘要

In targeted online advertising, advertisers look for maximizing campaign performance under delivery constraint within budget schedule. Most of the advertisers typically prefer to impose the delivery constraint to spend budget smoothly over the time in order to reach a wider range of audiences and have a sustainable impact. Since lots of impressions are traded through public auctions for online advertising today, the liquidity makes price elasticity and bid landscape be- tween demand and supply change quite dynamically. There- fore, it is challenging to perform smooth pacing control and maximize campaign performance simultaneously. In this pa- per, we propose a smart pacing approach in which the delivery pace of each campaign is learned from both offline and online data to achieve smooth delivery and optimal perfor- mance goals. The implementation of the proposed approach in a real DSP system is also presented. Experimental evalu- ations on both real online ad campaigns and offline simula- tions show that our approach can effectively improve cam- paign performance and achieve delivery goals.

在在线广告中,广告主希望在预算计划约束最大化广告效果。大多数广告主通常倾向于施加交付约束,在一段时间内平稳地花费预算,以达到更广泛的受众并产生可持续的影响。

由于今天很多曝光是通过在线广告的公开拍卖进行交易的,流动性(liquidity )使得价格弹性和供需之间的竞价格局发生了很大的变化。因此,同时进行平稳的节奏控制和最大限度地提高广告活动的性能是一个挑战。

在这篇论文中,我们提出了一种智能预算平滑的方法,其中每个活动的投放节奏都是从离线和在线数据中学习的,以实现平稳投放和更好的效果。我们还介绍了所提出的方法在一个真实的DSP系统中的实践,通过对真实的在线广告活动和离线模拟的实验的评估表明,我们的方法可以有效地改善广告活动的效果同时实现投放目标。

问题背景

在线广告是价值一个数百亿美元市场,近些年来一直保有两位数的增长。广告主在平台上通常有以下几个目标:

  • 达成投放和效率的目标。对于品牌广告而言,目标通常是在效率保障基础上,触达更广大的用户群体;对于效果广告而言,目标是满足效率约束同时花掉更多的预算。其它类型的广告通常是这两者的折中。
  • 执行预算消耗计划。广告主通常希望他们的预算能够平滑的消耗,这样可以触达更广泛的用户群体,产生更大的影响,并增加其他渠道广告的协同效应。因此广告主一般会有预算消耗计划。
  • 减少创意服务的成本。创意的成本一般并不由平台方收取,因此由第三方创意服务商提供。创意可以理解为投放的广告素材,如图文或者视频。创意服务成本更像是附加库存成本,所以广告主更愿意减少这部分成本,投放给正确的用户。

下图表现了两种不同的预算消耗计划,完全平稳的预算消耗和随着流量变化的投放计划。

budget spending plans

同时满足以上所有目标是一件非常有挑战的事,每个广告计划都有独立的预算投放计划、目标用户、效率目标、创意服务成本等等。本文研究了不同目标下,预算平滑控制的方式。

解决方案

本文主要关注两种场景:

  • 品牌广告,目标是花掉所有预算,同时扩大受众
  • 效率广告,在特定效率目标下,花掉预算。

\(\text{Ad}\)表示广告计划,\(B\)表示预算,\(G\)表示效率目标,预算消耗计划\({\bf{B}}=(B^1,\cdots,B^K)\),其中每一项非负且求和为广告总预算,\(\text{Req}_i\)表示第\(i\)个请求,\(r_i\)表示参竞概率,\(s_i~\text{Bern}(r_i)\)表示是否参加竞选,\(c_i\)表示扣费,\(q_i\)表示是否有结果(比如CPC计费中的点击Click),\(C\)为总消耗,\(P\)为效率指标,等于总收入除以总响应(如CPC值),\({\bf{C}}=(C^1,\cdots,C^K)\)表示消耗序列,预算消耗序序列和预算消耗计划的差异定义为 \[ \Omega({\bf{C},\bf{B}}) = \sqrt{\frac{1}{K}\sum_{t=1}^K\Big(C^t-B^t\Big)^2} \] 没有效率约束广告计划的预算智能平滑问题定义为 \[ \begin{aligned} \min_{r_i} && P \\ \text{s.t.} && C=B \\ && \Omega({\bf{C}, \bf{B}}) \leq \epsilon \end{aligned} \] 可以理解为满足投放计划下,最小化单位成本(即最大化效率)。

有效率约束下广告计划的预算只能平滑问题定义为: \[ \begin{aligned} \min_{r_i} && \Omega({\bf{C}, \bf{B}}) \\ \text{s.t.} && P \leq G\\ && B -C \leq \epsilon \end{aligned} \] 可以理解为,单位效果的消耗低于目标情况下,最小化与预算投放计划的差异,并保持整体消耗在一定范围内。

实现方案分为几步:

  1. 先用离线数据学习响应的预测,\(p_i =\mathbb{P}[r_i|\text{Req}_i, \text{Ad}]\),以区分对于不同广告而言,高效率和低效率的流量
  2. 根据转化效率做分组,相同分组内的广告流量采用相同的平滑率(pacing rate,\(r_l\)
  3. 根据在线数据反馈学习一个控制方法,并且动态调整组的平滑率

对于相应的预测,文中提到可以使用一些机器学习方法得到一个精准的预测\(\hat{p}_i\),然后利用用户的属性构建一个浅层决策树,每个叶子节点都标识了一部分相互互斥的请求,并在叶子结点内对预估值进行校准。

对于第三步的控制方法,文中提出一种启发式方法来近似求解上面的最优化问。

对于每一个广告计划,维持一个分组(layer)的数据结构,包括平均响应率(效率指标,如CTR)、广告组请求优先级、平滑率、上一个时间区间内最新的广告消耗。后续做法的原则是,首先高转化效率的分组(or 分层,layer)应该有更高的优先级、同时高优先级的分组的平滑率应该不小于低优先级的平滑率。

在线平滑率调整,假设我们有\(L\)个分层,其预估转化率为\({\bf{p}}=(p_1,\cdots,p_L)\)\(t-1\)时刻的平滑率为\({\bf{r}^{t-1}}=(r_1^{t-1},\cdots, r_L^{t-1})\),消耗为\({\bf{c}^{t-1}}=(c_1^{t-1},\cdots,c_L^{t-1})\),第\(t\)时刻的平滑率为\({\bf{r}^{t}}=(r_1^{t},\cdots, r_L^{t})\)

对于没有效率目标的广告计划,最基础的目标是按照广告预算计划进行投放 \[ \begin{aligned} \underset{\hat{C}^{m+1},\cdots,\hat{C}^{K}}{\arg\min} && \Omega \\ \text{s.t.t} && \sum_{t=m+1}^K \hat{C}^t=B_m \end{aligned} \] 其中\(B_m\)表示剩余预算,\(\hat{C}^{m+1},\cdots,\hat{C}^{K}\)为我们后续决策的每个时段的消耗,所以有最优的决策方案为 \[ \hat{C}^t = B^t + \frac{B_m - \sum_{t=m+1}^K B^t}{K-m} \]\(R=\hat{C}^t - C^{t-1}\)为残差,下图展示了整个算法

algo1

如果上一阶段消耗的残差为0,那么不调整消耗速率,如果有剩余,需要加速消耗预算,按照转化效率从高到低,一次调整消耗速率,反之如果消耗过多,那么按照转化效率从低到高,降低效率速率。

cases

对于有效率目标的广告计划,我们需要在调整同时考虑广告单位转化成本约束,所以需要预估调整后的效率eCPC \[ \text{ExpPerf}({\bf{c}}^{t-1}, {\bf{r}}^{t-1}, {\bf{r}}^{t}, {\bf{e}}, i) = \frac{ \sum_{j=i}^L \frac{c_k^{t-1}\times r_j^t}{r_j^{t-1}} }{ \sum_{j=i}^L \frac{c_k^{t-1}\times r_j^t}{r_j^{t-1}\times e+j} } \] algo2

实验评估

实验就不具体写了,文章对比的方法主要是LinkedIn那篇文章,由于本文更注重于预算平滑基础上保证转化效果,同时需要按照预算计划投放,侧重点不同;而且目前我也没在做相关的工作,实验设计和业务是强关联的,所以就不详细写了,大部分结果都是预算消耗处于预期内,同时转化效率更高。