从毕业到现在一直都在从事广告行业,却从来没有写过广告相关的技术文章,也是挺不应该的。 今天就先写一篇来介绍下业内常用的竞价广告排序策略。

概要介绍

广告行业常见术语:

  • CPM Cost Per Thousand,千次曝光价格;最后一个字母 M 其实是罗马数字计数单位,表示 1000;
  • CPC Cost Per Click,单次点击价格
  • CTR Click Through Rae,点击率;点击数除以曝光数;
  • CVR Click Value Rate,转化率;转化数除以点击数;这里的转化目标是多种多样的,可以是一个下载或者是用户填的一个表单预约;
  • pCTR pCVR 预估点击率和预估转化率;当广告系统收到一次广告请求时,会基于请求里的用户信息和位置信息, 以及广告的历史播放数据来计算出每个广告的预估点击率和预估转化率,这两个指标会影响广告的最终排序结果。

广告投放播放过程中有四个参与方:

  • 广告主:花钱投广告,去推广自己的产品;例如可口可乐、红旗汽车等;
  • 流量方:有大量活跃用户,会发送广告请求,展示广告进行流量变现;例如腾讯视频、QQ 空间等;
  • 用户:观看广告,对于感兴趣的广告会进行点击、下载或购买等后续操作;
  • 广告平台:连接广告主和流量方,广告主在广告平台投放广告,流量方从广告平台拉取广告进行展示; 广告平台对广告进行排序以保证流量方收益最大化、广告主能按照合理的价格拿到广告展示机会、用户体验不会受到太大的影响;

广告的排序本质上是一个多方博弈的结果,最终达到一个纳什均衡的状态。

广告检索和网页搜索的区别

  • 网页搜索只需要针对用户的搜索体验进行优化即可(优化召回率和准确率),而广告检索是广告主、流量方、用户的多目标优化问题。
  • 网页评分是一个相对静态的过程,按天或周进行更新;而广告是会动态变化的,广告主随时可能会调整广告出价,暂停广告等。

竞价广告排序发展历程

互联网广告最开始的投放模式和电视广告很像:分时分位置进行售卖,这里就需要销售人员去进行售卖, 售卖价格会相对较高,小的广告主无法参与进来。

GFP (Generalized First Price)

Yahoo 在它的搜索广告中提出了一种新的广告计费方式:

  • 广告主可以为广告选择特定的关键词,并设定一个价格
  • 对用户搜索的关键词,按广告主的出价进行排序并返回
  • 当用户点击时,按照广告主的出价直接进行扣费

这种广告售卖方式高度自动化,不需要销售人员介入,同时很多小的广告主也可以参与进来, 提高流量的竞争激烈程度,进而可以提高流量的总收益。

GFP 的问题是无法让系统达到一个纳什均衡的状态,广告主有动力不断小幅度下调自己的出价以较低价格拿量。 这样可能会导致广告系统收入处于一个持续波动的状态。 我们假定广告主能接受的最高真实出价是 $ P_{real} $,广告主是期望以不超过 $P_{real}$ 的成本拿到量。

GSP (Generalized Second Pricce)

鉴于 GFP 的缺点,谷歌提出了 GSP,也就是按照第二名的出价来计费,同时谷歌还引入了质量分数的概念, 广告的排序分数按照如下的公式计算:

$$ Score = bid * quality $$

实际扣费时按照下面的公式来计算:

$$ ecpm_{second} = \frac {bid_{second} * quality_{second}} { quality_{first}} \le bid_{first} $$

我们可以证明使用 GSP 方式可以让系统到达一个纳什均衡的状态,广告主按照自己的正式意愿 $P_{real}$ 出价时是对自己最优的结果。 我们可以简单证明下,假设其它广告主的出价为 $P_{other}$,则可以分三种情况来讨论:

  • $ P_{other} > P_{real} $:此时广告主最优出价为 $ \le P_{real} $ ,此时都拿不到量;
  • $ P_{other} = P_{real} $:此时广告主最优出价为 $ P_{real} $;
  • $ P_{other} \lt P_{real} $:此时广告主最优出价为 $ \le P_{real} $,此时可以以 $ P_{other} $ 价格拿量;

综合上面三种情况,广告主按真实意愿 $ P_{real} $ 出价时能利益最大化。

VCG(Vickrey Clarke Groves)

VCG 是考虑广告对其它广告的影响,按照广告参与竞争后造成别的广告主的收益损失来计费:

$$ Cost_A = V_{OtherWithoutA} - V_{OtherWithA} $$

下面是一个具体的示例:

VCG 目前只有 Facebook 在用;在只有一个广告位的时候,VCG 和 GSP 是等价的。VCG 是广告主收益(社会效益)最优的分配方式。

VCG 的缺点是:

  • 短期内会造成广告平台收入下降;
  • VCG 规则过于复杂,可能会让广告主难以理解。

广告计费方式

CPM

这种是直接按照展示曝光计费,目前一般只有合约会使用这种计费方式,竞价很少会使用这种计费方式。 这种计费方式基本只会使用到广告平台的定向能力,而且由于别的广告有点击、转化之类的优化目标, 而 CPM 广告没有类似的优化目标,最终会导致 CPM 广告拿到点击率和转化率都很低的劣质流量。 在排序过程中的 ecpm 为:

$$ ecpm_{cpm} = bid $$

CPC

按点击进行收费,会使用到广告平台的点击率预测能力。容易拿到一些点击率高但转化率很低的流量, 例如一些少儿频道。排序过程中的 ecpm 按如下公式计算:

$$ ecpm_{cpc} = bid \times pCtr \times 1000 $$

CPA (Cost Per Action)

按每个 Action 进行收费,这里的 Action 可以是一次下载、一次购买或者是一个表单预约。这种收费方式是广告主比较希望的: 直接按照转化出价,不需要自己考虑转化率,都交给广告平台去计算,而广告平台数据更多, 相比广告主能够更准确地计算点击率和转化率。这种方式排序 ecpm 计算公式计算如下:

$$ ecpm_{cpa} = bid \times pCtr \times pCvr \times 1000 $$

这种计费方式的问题是,在广告刚开始投放时,没有历史数据,无法进行准确的 pCtrv 和 pCvr 预估,需要对广告进行探索, 而广告平台对 CPA 计费方式的广告进行探索时的成本很高,很有可能收不上来钱,极端情况下,如果广告主不回传任何转化数据, 则探索期的所有流量都会被浪费掉。广告平台对 CPA 广告的谨慎探索会导致 CPA 广告积累数据比较慢,很难起量。 同时,由于转化数量相对较少,可能会造成广告系统收入出现比较大的波动。

oCPM / oCPC / oCPA

和前面几种计费方式不同,oCPA 广告是按照转化去排序,但按照曝光(oCPM)或者点击(oCPC)去收费; 这种方式有 CPA 计费方式的优点,既广告主可以直接按转化出价,广告平台会尽量达成广告主的出价。 同时,广告平台前期的广告探索也能收回成本。oCPA 也能促使广告主尽早回传转化数据, 这样 oCPA 广告才能比较有竞争力,才能和别的广告去竞争。oCPA 的排序 ecpm 计算和 CPA 方式一致:

$$ ecpm_{ocpa} = bid \times pCtr \times pCvr \times 1000 $$

如果是 oCPM ,则每个曝光的收费为(简化模型,实际还要考虑乘以 GSP 调价系数):

$$ Cost = bid \times pCtr \times pCvr $$

如果是 oCPC,则每个点击的收费为:

$$ Cost = bid \times pCvr $$

oCPA 也被称作智能出价,意思是广告系统会动态调整广告的 CPM 或者 CPC 出价,以使得广告的转化价格能达到预期。

oCPA 成本达成一般是指实际的转化价格和广告主设定的转化价格的差距在正负 20% 以内。目前业内一般会有 oCPA 赔付机制, 赔付广告主超出成本部分的花费,让广告平台和广告主一起承担广告早期的探索成本。赔付一般会预设一些前提要求:

  • 会设定赔付期,例如3天,只会对赔付期内的超成本部分进行赔付;
  • 实际转化成本要高出一个阈值,例如 10\% 或者 20\%;
  • 在赔付期内有超过一定数量的转化,例如 5 个

新广告探索

新广告探索本质是一个 EE (Exploration and Exploitation) 问题,可以使用 ϵ-greedy 算法来解决:

  • 以 ϵ 的概率去探索新广告;
  • 以 1-ϵ 的概率去选择当前效果最好的广告;

通过使用 Simpson 采样的方法来设定新广告的点击率;

参考资料