Facebook广告系统背后的Pacing算法

移动开发 算法
Pacing 是 Facebook 广告系统中调节花费预算节奏的一个算法,一个类比就是竞跑的运动员:过早冲刺意味着在终点前就没劲了,但过晚冲刺也许你就没完成这次比赛。Pacing 保证对所有的广告主在竞争前提下自动分配不同的广告预算。Pacing 就是优化的核心组件让广告主获得最大的投资回报率(ROI)。

[[163141]]

Facebook 上个月公布亮瞎双眼的 2015 年第四季度财报,其中日活用户超过 10 亿,营收达到 58.41 亿美金,而广告就占了 56.37 亿美金,更恐怖的是来自于移动广告业务的营收占了 80%。笔者在 Facebook 上面也曾经创建过营销页面,其实是拿到内部朋友一定限额的广告 (Campaign) 推广费用,当时惊讶投放的高效(太快了,不到 1 小时几十刀都没了),由于自己也做过广告系统,也做过很多对比,从形式多样性,功能的完整性,定位用户,实时性,数据分析报告各项综合指标 Facebook 都是行业翘楚,下面就是它们内部对广告系统 Pacing 算法的剖析,也适合广告技术入门查看。

首先介绍一些在线广告术语

  1. 每个广告 (Ad) 有一个出价 (Bid), 并有其在某情形下实际的点击率 (Click-Through-Rate, CTR)

  2. 广告按点击收费 (Charge per Click, CPC), 策略有一价计费 (First-Price, FP, 即广告出价多少则一次点击计费多少) 和二价计费 (Second-Price, SP, 即广告按下一位出价来支付点击价格, 更普遍的是 GSP,Google,Yahoo, LinkedIn 都是用这一种)

  3. 千次展现收费 (Cost Per Mille, CPM, 或 RPM, R for Revenue), 即对点击付费广告其展示一千次情况下的收入 (一价计费下等价于 1000*CTR*Bid), 或是展示广告的千次展现固定价格

  4. 预估点击率 (predict CTR, pCTR) 是指对某个广告将要在某个情形下展现前, 系统预估其可能的点击概率

Pacing 是 Facebook 广告系统中调节花费预算节奏的一个算法,一个类比就是竞跑的运动员:过早冲刺意味着在终点前就没劲了,但过晚冲刺也许你就没完成这次比赛。Pacing 保证对所有的广告主在竞争前提下自动分配不同的广告预算。Pacing 就是优化的核心组件让广告主获得最大的投资回报率(ROI)。

Facebook Pacing 算法是怎么工作的?

我们通过一个例子解释 Pacing 工作原理。下面会涉及到点击,同样的想法可以应用到浏览,转换,行为,到达率等。

  1. 一个广告主想对一个运动品牌做广告。每天预算 $10,以 CPC 计费,我们预先假定每次广告点击能产生 $5 的收益。

  2. 当他/她创建广告后,对 LINK_CLICKS (点击链接)做优化, bid_amount(出价)设置为 $5, billing_event(触发收费的事件)为 LINK_CLICKS, 基于这些为真的条件. 目标用户群为男性 25-35 岁。

  3. 广告主的利润是这些点击产生的价值减去花去的预算。

为了简化起见,我们假设这些机会(点击,展示等)的当天价格是提前知道的。这样我们能更清楚阐明点击价格和收入关系。这些假设是基于目标产生的机会进行建模。

下面我们通过三个例子去理解 Pacing 算法对广告主提供最大的价值。

情况一:没有 Pacing 算法的时候

没有 Pacing,广告主预算在一开始很短时间就被消耗干净(可能潜在的昂贵点击),前期竞争激烈,后期无竞争,形成一定的资源浪费。下面的图蓝色的点代表广告获得展示的机会,黄色的圈代表广告赢得展示,红线代表出价的价格。结果是平均成本会高些,但广告主会得到基于广告设置的最想要的投放。这叫做加速投放。

广告总花费 = $10

广告总点击价值 = 6 * $5 = $30

每次点击价值 = $5

预算 = $10

广告总收益 = $30 – $10 = $20

案例二:出价过低

这种情况下,追求最低的点击价格,但是广告主的预算最后没有能用完,最终的广告效果也最差。

广告总花费 = $4

广告总点击价值 = 4 * $5 = $20

每次点击价值 = $5

预算 = $10

广告总收益 = $20 – $4 = $16

案例三:Pacing 算法下的均衡状态

这时候,广告客户获得了最大的点击数,获取到了最大收益,同时也用完了每日预算。

广告总花费 = $10

广告总点击价值 =7* $5 = $35

每次点击价值 = $5

预算 = $10

广告总收益 = $35 – $10 = $25

简单的公式

从上面例子中,当我们在整段时间内使用稳定的出价(Pacing),广告主的价值相比没有 Pacing 或者出价过高过低,得到了最大化。为了实现目标,Pacing 期望通过学习其他的有同样目标用户的竞争广告,提出一个优化的竞价。这就是个简单公式。

最终竞价 (每次展示) = 优化竞价 (每次展示)* CTR where 优化竞价 <= max_bid

决定优化竞价的是 Pacing 算法的核心,包括反馈系统让 Pacing 记录下来。

CTR 是点击率。我们使用相同理念来看查看率(VTR) 和转化率(CVR)。这些值的精确性会稳步提高,也受各种因素影响,比如广告类型,受众,时间点,广告上下文等。

Pacing 的重要性

Pacing 在给定预算下最大化广告主的利润。它让广告主更加真实,和 Vickrey–Clarke–Groves (VCG 通过计算一个广告主参加拍卖给别的广告者带来的损失之和来定价的) 拍卖,这里面欺骗价值没有任何好处,也没有必要去想最大竞价应该设多少。如此可以避免拍卖系统中的特殊机会。

Pacing 保证了可预测的投放。这种稳定投放让每日的价格稳定并帮助广告主公平获取他们目标用户的门槛。

FAQ

问:我的广告没有被 pacing 算法正确的优化,可能是什么原因?

答:如果广告显示正常,有两个原因,一个是最优化的价格太低,保证你的竞价在建议价格范围内这样你才有机会赢得席位。对于竞争力的受众,你需要把价格调高到建议价格之上。

另外一个原因是目标受众过于狭窄。

如果这个广告投放过度,你可能有个很大的受众但快速消耗你的预算。

问: 当我改变了我的预算的时候,Pacing 会受到什么影响?

答:Pacing 会去计算新的最优出价,但这个过程会需要一定的时间,这段时间内的出价不是最优的,所以建议不要频繁的修改出价和预算的设置。

总结:Pacing 就是通过学习同一受众目标内的广告竞争环境来决定最优化出价。

参考资料:https://developers.facebook.com/docs/marketing-api/pacing

本文首发于微信公众号董老师在硅谷(ID: donglaoshi-123),转载请注明出处。

责任编辑:倪明 来源: 董老师在硅谷
相关推荐

2012-05-10 17:18:42

Facebook应用中心

2013-08-21 12:29:12

Facebook开源

2013-07-23 09:02:48

Facebook Ho应用设计

2012-08-30 09:32:12

FacebookiOS

2017-03-02 13:56:45

Facebook广告归因

2015-10-19 09:43:11

facebookinternet.or天网

2018-07-31 11:02:21

存储系统算法

2013-10-30 09:42:38

Facebook图搜索大数据

2021-10-10 12:48:48

Facebook服务中断服务离线

2012-06-19 09:33:38

Facebook移动广告

2012-06-18 15:21:38

Facebook竞价广告

2016-11-08 07:36:26

Facebook广告

2014-01-07 13:26:44

移动广告Facebook

2012-10-16 09:57:55

Facebook数据中心开放式数据

2011-04-26 09:18:53

FacebookPHPmysql

2012-12-25 11:24:21

Facebook移动广告

2015-12-11 10:02:51

2013-01-06 16:03:18

Facebook移动广告

2021-10-09 10:03:29

开发Facebook工具

2013-03-08 10:07:20

GO语言Goroutine
点赞
收藏

51CTO技术栈公众号