- 阅读论文:2014 Budget Pacing for Targeted Online Advertisements at LinkedIn
- 图片和数据出自原文,为了表示方便,公式编号和文中保持一致
1 背景
在不考虑预算控制的情况下,会出现如下问题
- 广告消耗太快,在一天中结束了竞价,错过了剩余曝光的机会
- 广告商往往从他们所瞄准的受众群体中获得不公平的表现,原文是:Advertisers often get a skewed representation from members within the audience segment they target(没理解意思。。。)
- 随着竞价活动的退出,市场上的竞争也会减少。在广义第二高价的拍卖机制中,竞争减少导致收入减少(需要考虑这个吗,因为现在优化方是dsp)
- 广告服务基础设施可能会在最新的消耗的可用性上有一个延迟,活动的花费预算可能很快超过它的预算。这就导致了广告的过度交付,从而失去了盈利机会
文章主要根据了解全局的流量模式来为调节广告的预算消耗。
2 方法
算法的主要思想就是令每个campaign(推广计划)的消耗趋势与其曝光变化趋势基本保持一致,以天为时间单位,campaign为预算控制单位,首先为每个campaign预测出其在当天的曝光情况;然后基于其曝光情况,在当前时间片,假如 已消耗/当天预算 的比例大于 已曝光/预测的总曝光 的比例,则说明预算已经消耗过快,需要减小消耗的速度,反之则要加快消耗的速度。
部分符号说明使用如下
- : 所有流量的集合
- :campaign i所对应的流量的集合
- : campaign i的出价
- : campaign i一天的预算
- : 一天被划分的时间段个数
- : 对于campaign i来说,当天到t时刻累计消耗的费用
- : 对于campaign i来说,当天到t时刻的累计曝光
所有到t时刻,应该消耗的费用计算方式如下所示
根据上述计算的比例,计算每一时刻,campaign i参与竞价的概率,文中称之为pass through rate(PTR),计算方式如下所示
其中 称作调整速率(adjustment rate)。
对于 campaign i , 和在当天开始已经确定,预算控制根据进行计算。
文中还提到了预算控制的方式[1],如下所示
where,
即针对预算消耗的情况,调整出价,存在如下的情况: as 。因此出价很低的时候,使用保留出价,即设置一个出价的下限。这种出价方式并不能改变预算消耗过快的情况(个人觉得一但消耗很快,导致出价很低,也就表示campaign失去竞价力,不能参与竞价了)。
3 实现细节
以下是文中对于上述PTR调节的细节,个人觉得有些点没讲清楚,一些设置过于经验了。
3.1 更新 PTR 频率
每隔1分钟更新一次PTR。这种频繁的更新使系统敏捷,快速达到稳定状态。
3.2 预估曝光量
预测campaign的曝光量十分重要,用于确定预算分配的曲线。不准确的预测可能会导致不必要的限制,并可能导致一些好的campaign没有用完预算。
对于曝光量的预测,文中没有具体展开将,使用[2]中的工作,论文是Yahoo在做保量的合约广告时提出的预估流量的方法。
3.3 调整速率的设置
对于调整速率,设置为10%,容易实现并且鲁棒性较好。理论上设置调整的方式应该为,即偏差较大的时候使用大的调整速率,偏差较小的时候使用小的调整速率。使用固定调整速率的原因有:
- 的估计可能是有噪声的。预算支出曲线并不平滑,特别是对于每次点击成本的活动,它只有在出现点击时才会发生变化,而与曝光相比,点击次数少得多
- PTR更新很快(1分钟一次),因此使用固定的调整速率也可以到达理想的位置
3.4 初始PTR设置(Slow Start)
论文将每个campaign的PTR初始值设置为10%,因为这个值很小,所以将这种方式称为slow start。设置较小的初始值给予系统以时间来调整每个campaign的PTR。如果一个活动的预算花费太慢,那么它可以在25分钟内完全开放。如果PTR一开始就设置得很高,会导致预算很快被花光。
同样,更合理的方式是为每个campaign设置一个PTR,但是论文并没有针对这一点进行深度的探讨。
3.5 Fast Finish
使用统计模型来预测每个活动未来的曝光,模型通常具有较高的精度,但总是存在统计误差。结果,在某些情况下,算法会为campaign设置偏低的PTR值。文中尝试通过快速完成来缓解此问题,即修改(allocation curve),使算法假设一天的最后两个小时内不会有任何流量。通过这种方式,预算控制算法会在22小时内尝试耗尽预算。反过来,这会给在当天早些时候被错误限制的campaign提供更多机会,在以后用尽他们的预算。
4 工程设计
系统工程设计的逻辑如下
具体模块简介如下
- advertiser action: 可能包括创建一个新的campaign或修改现有的campaign,如修改出价或修改每日预算等
- ad requests: 用户浏览而触发的广告请求
- 在ad sever中的campaign index记录着每个campaign当前的状态(曝光,消耗等情况)
- pacing module会根据预设的更新频率从database中获取最新的数据来更新campaign index
广告投放数量的预测是在一个离线的Hadoop系统中计算的。预测信息每天都被推送到pacing module。
pacing module使用更平缓的方式进行更新,在文中提到每1分钟对所有数据更新一次,因此每7秒更新大约12%的campaign。这种更新频率能够让系统的负载较为均匀,也能够较快达到一个稳定状态。
5 实验
5.1 实验设置
为了验证预算控制算法的效果,合理的方式是对一个广告一天跑一致的策略,即使用本文提出的预算控制算法(on)或者不使用(off)。为了消除时间的影响和不同campaign的影响,对一个campaign一天使用on,一天使用off,分配方式如下
还有一种策略就是对所有campaign,将预算对半分,使用两个系统分配使用预算控制或者不用,对比效果。但是文中不使用此策略,原因为
- 对一个系统而言,总预算为原来预算的一半,会影响算法效果
- 实现过于复杂,划不来
5.2 评价指标
使用以下指标,在LinkedIn的所有数据上进行计算的,没有任何抽样。LinkedIn有数千万的页面浏览量,有数以万计的广告客户。具体指标如下,分为三个方面进行评价
广告主利益
- Campaign life time: 预算消耗95%时所花费的时间作为广告的生命周期,计算实验中的平均生命周期,以小时为单位
- Unique impressions per spend: 单位消耗给广告主带来的unique user数量,计算方式 number of unique user/total spend
- 表示当天平台服务的 campaign 的数量
平台收益
- Cost per request:每次请求的平均收益,计算方式 total revenue/number of requests
- Over delivery: 超扣的金额占预算的比例
用户体验
- Unique campaings served: 用户看到的所有广告中有几个unique campaign,表示用户看到的广告的多样性,论文认为这个值越大越好
5.3 实验结果
对比在Direct Ads和Sponsored Status Updates上的实验结果,两种广告形式不同,其中
- Direct Ads是一种自助式广告产品,广告客户可在其中通过基于Web的UI设置campaigns。广告出现在LinkedIn.com域中的许多页面上,例如主页,个人资料页面,联系人页面等的顶部和侧面板上。DirectAds仅出现在桌面环境中。
- Sponsored Status Updates(SSU)是一种广告产品,在成员更新流上提供广告内容。成员的更新流包含由成员的连接,成员所属的组,成员关注的公司等生成的内容。SSU是由公司赞助的要推广的内容,这些公司将在未关注成员的更新流中进行推广公司。 否则,此类内容自然会出现在关注该公司的成员的更新流中。广告商可以通过基于Web的UI或与销售代理商的互动来设置campaigns。更新流和SSU一起出现在台式机,移动设备和平板电脑环境中。
Direct Ads
带加号+的指标表示On在oFF的基础上的变化比例,实验结果如下
结论有
- 预算控制对于广告主和平台都有好处,将广告生命周期提升了44%
- 广告主可以用同样的预算接触到更多的受众,广告也得到了更多的曝光
- 超过预算的情况减少了10%(发生这种情况是因为预算信息回传的延迟)
- 对用户看到的广告内容多样性没有太多的改变。可能是因为用户看到的campaign数量呈长尾分布(本来就没看几个)
绘制campaign一天中CPC的变化,如下所示
使用预算控制,CPC一开始会较低,即有效较少开始过度的消耗预算,在一天中后半段CPC提升,即这个时候开始有效消耗预算。
Sponsored Status Updates
同样的,相关实验指标和CPC变化如下
主要结论有
- SSU会快速消耗完预算,使用预算控制后,广告生命周期大大提升,提升了149%
- 其他指标具有改善,CPC变化趋势和Direct Ads类似
campaign例子
一些个别的campaign的例子,具有特殊性。如下图所示,在SSU广告上,没使用预算控制时,30分钟就消耗完了所有的预算,并且超预算了;使用预算控制,20小时消耗了预算,并且消耗十分平稳。
支出曲线与分配曲线对齐,蓝色的线是观察到的支出曲线,红色虚线是活动的分配曲线。
6 讨论
疑问如下
- 初始PTR设置10%,没考虑调价,胜出概率,理想情况下是不是还是会导致预算提早消耗完?
- Fast Finish中,没有说清楚统计偏差到底是什么?为什么设定22小时这个常数?
7 参考资料
- A. Mehta, A. Saberi, U. Vazirani, and V. Vazirani.Adwords and generalized on-line matching. Journal of the ACM, 54(5):Article no. 22, October 2007
- D. Agarwal, D. Chen, L.-j. Lin, J. Shanmugasundaram, and E. Vee. Forecasting high-dimensional data. In Proceedings of the 2010 ACM SIGMOD International Conference on Management of Data, SIGMOD ’10, pages 1003–1012, New York, NY, USA, 2010. ACM.
- 《Budget Pacing for Targeted Online Advertisements at LinkedIn》 阅读笔记