文章目录
  1. 1. 广告排序
  2. 2. 工作方向
  3. 3. 技术方向
    1. 3.1. 准入门槛优化
    2. 3.2. 排序公式
    3. 3.3. 参数学习
    4. 3.4. 智能出价
    5. 3.5. OCPC算法
    6. 3.6. OCPM算法
    7. 3.7. CEM算法在OCPX中的应用

第11章:广告排序与机制设计

广告排序

工作方向

  • 准入门槛:满足业务需求(平台方红线、各BU差异化出ad条件),保证用户体验。主要从距离、Item质量(星级)和pctr三个条件设定(优先级依次降低);
  • 机制排序:最大化三方收益。排序公式设计(考虑业务差异),超参数学习与优化,多目标优化,智能出价等;

技术方向

准入门槛优化

  • 目标:通过门槛设计与优化,实现:既满足业务需要,保证用户体验的同时,最大化平台收益(RPS);
  • 主要手段:
    • 距离:food、生活服务、酒店等对距离相对敏感;结婚对距离不敏感,可以不设置;
    • item质量分:比如item星级,但要考虑新门店,该权重可以放宽;
    • pCTR,pCVR等:静态门槛 $\rightarrow$ 动态门槛;$\color{red}{动态门槛如何实现?}$

排序公式

已有排序公式如下:

$$
\text{RankScore} = \text{Bid}^{\alpha} \cdot \text{Qualtiy}^{\beta}
$$

$$
\text{Qualtiy} = \underbrace{a_3 \cdot CTR}_{用户体验} + \underbrace{a_4 \cdot CTR^{a_6} \cdot CVR}_{访购率} + \underbrace{a_5 \cdot CTR \cdot CVR \cdot Price_{order}}_{GMV}
$$

公式设计的出发点:在质量分中考虑多目标优化。参数解读:

  • $\alpha$:调控出价因子(默认为1)
  • $\beta$: 调控质量分因子(默认为1)
  • $a_3$: 点击率权重
  • $a_4$: 访购率权重 (下单人数/浏览人数,$a_6$:不考虑CTR时,置为0)
  • $a_5$: GMV权重(销售额,考虑商户利益)

以上排序公式的主要问题是,bid跟访购率、GMV存在乘积关系,不太合理,可能不一定能得到帕累托最优解。所以,考虑从多目标优化的角度,重新设计排序公式。

新公式设计如下:

$$
\text{RankScore} = a_1 \cdot Bid \cdot CTR^{a_{11}} + a_2 \cdot CTR \cdot CVR^{a_{21}} + a_3 \cdot CTR^{a_{31}} \cdot CVR \cdot Price^{a_{32}}
$$

公式解读:

  • $a_1$:广告收入权重
    • $a_{11}$: CPC广告,值为1;CPM广告,值为0;
  • $a_2$:用户体验权重
    • $a_{21}$:用户体验指标是访购率,值为1;用户体验指标是点击率;值为0;
  • $a_3$:广告主收益权重
    • $a_{31}$:考虑CTR,值为1;不考虑CTR,值为0;
    • $a_{32}$:考虑订单价,值为1;不考虑订单价,值为0;
  • 非0/1值:排序结果、计费价格都受影响

参数的设定基于人工经验、数据分析及线上实验效果。由于场景的复杂性,一套参数并不能实现利益最大化,不同场景上采用不同的参数,可以提高整体收益,因此就有了动态调参

动态调参本质上是在人工选择排序公式中的一个参数基础上,进行一定范围的搜索,计算不同参数下的收益(奖励),选择出最优参数。因此,奖励设计是动态调参的关键。

奖励公式如下所示:

$$
Reward = bid \cdot ctr + b_1 \cdot ctr^{b_{11}} \cdot cvr^{b_{12}} + b_2 \cdot ctr^{b_{21}} \cdot cvr \cdot \frac{price_{order}}{bid}
$$

说明

出发点:多目标加权和,分别是广告收入、用户体验、广告主ROI;

  • $b_1$:用户体验权重(如果不考虑CVR,可将$b_{12}$置为0)
  • $b_2$:ROI权重
  • $b_{21}$:如果不考虑CTR对ROI的影响,设置为0

上面的公式是广告位上的计算逻辑。通常,整个请求的Reward,会累加多个广告位的Reward,而且广告位存在位置偏倚。

存在的问题:整体ROI的计算,不能累加多个广告位的ROI,所以计算ROI有问题。
解决办法:计算各个广告位上的广告收入、用户体验指标、GMV,再算整体的广告收入、用户体验指标、ROI。$\color{red}{算整体时,不区分广告位?}$

不同流量上,动态参数和奖励设置不同。

静态与动态的关系

静态排序公式,考虑了多目标优化,动态的Reward也考虑了多目标优化,它们是什么关系?

  • 还没有动态调参算法时,静态排序公式体现了我们多目标优化的权衡。根据rankScore排序插入,是一种贪婪算法。
  • 有动态调参算法后,Reward体现了我们多目标优化的权衡。排序公式中的参数变成了决策变量。

不考虑计费,不同排序结果的数量是有限的。我们的目标是对比这些不同排序结果的优劣。不同的排序公式,决策变量与排序结果的对应关系不同,可能会影响找到最优解的效率。因此需要设计出更快更方便找到【帕累托最优】的决策变量。$\color{red}{帕累托最优是什么鬼?}$

注意:动态调参方法 通常是采用网格搜索的方式,在一定的区间以一定的步长进行。以关键词搜索为例,ctr权重系数区间:[0.007, 0.012],步长:0.001

参数学习

智能出价

背景-流量的差异化

传统的出价是针对特定人群或广告产品(关键词/推荐列表页)设定一个固定的出价,是一种粗粒度的方式。如果能有更细粒度的方式来匹配出价和流量质量,根据流量质量动态地调整出价,那么可以有效地提升广告主ROI(预算花费更高效或带来更高的GMV),因此就有了智能出价策略。

不考虑广告主之间的博弈关系,可考虑如下方法:

  • 线性出价算法
  • 非线性出价算法
  • 强化学习

$\color{red}{线性出价算法与OCPX的关系是什么?}$

线性出价会考虑广告主之间的博弈过程,OCPX没有。二者均是根据流量差异而进行出价。OCPC期望bid不大于真实bid;

智能出价统称为ocpx,可以是ocpc, ocpm, ocpa等。

以cpc与ocpc举例,比如1,2,3,4,5 有5个访客:

  • cpc不考虑访客因素,出同样的bid,无论哪个访客转化好;
  • ocpc的逻辑是:如果2,3转化了,ocpc会根据2,3人群的标签帮广告主找到类似人群(looalike挖掘),对该部分高转化访客提高出价,而对1,4,5低转化访客人群降低出价。

所以,智能出价是按照转化(或广告主ROI)出价,系统利用转化学习对不同人群(或访客)分别出价。

因此,智能出价通常需要两个阶段:

  • 阶段1:数据收集阶段。按照cpc/cpm投放获取足够的转化数据;
  • 阶段2:智能投放阶段。即根据对访客的转化率(或ROI)预估进行动态出价,大的原则是高CVR则出价高,低CVR则出价低

_智能出价的优势_

  • 广告系统自动为广告主寻找转化人群;
  • 广告系统对不同的转化人群合理出价;
  • 广告系统根据转化情况,展现最优质的物料(???创意)

_智能出价的劣势_

  • 前期成本较高(需要收集转化数据,对电商类是否不存在该问题?)
  • 对预算要求较高;
  • 实验成本较高,需要不断测试智能出价模型;

OCPC算法

问题引导

  1. 排序公式的超参优化与智能出价的关系是什么?
  2. 论文的目标是保ROI的情况下,优化GMV和RPS。那么,ocpc框架怎么迁移至其它业务优化上?
  3. 如何选择最优bid?
  4. ocpc算法对平台收入增长的贡献点在哪里?

OCPC是Optimized Cost Per Click的缩写,即优化点击付费,本质还是按照cpc付费。采用更科学的转化率预估机制的准确性,可帮助广告主在获取更多优质流量的同时提高转化完成率。系统会在广告主出价(固定bid)基础上,基于多维度、实时反馈及历史积累的海量数据,并根据预估的转化率以及竞争环境,智能化的动态调整出价,进而优化广告排序,帮助广告主竞得最适合的流量,并降低转化成本。

因此ocpc是一种优化广告投放效果的智能出价技术,它能根据流量质量自动动态地调整广告的竞价bid,保证ROI的同时提高GMV。该算法出自阿里妈妈淘宝业务场景论文,并且在淘宝移动端猜你喜欢列表页和顶部banner两个广告场景落地。

从第一节中举cpc与ocpc的栗子可以看出,OCPC算法的工作原理是:

对每次广告请求都动态地设置与该流量质量相匹配的bid,同时综合优化用户体验、广告主和平台的三方诉求,并保持使用eCPM排序机制不变(因为优化目标的约束公式)。

这里有两点需要注意:

  1. 优化目标(即排序公式)与具体业务有关,不可照搬;
  2. 论文中排序公式为ecpm+gmv,其中约束条件中是ecpm排序机制,个人绝的可以尝试将ecpm约束条件替换为业务需要的约束排序机制(是否必要替换需要想清楚?大概率不需要,因为排序公式已经体现了业务目标)

优化范围-ROI约束

假设用户u点击率广告a,产生交易的概率为$p(c|u,a)$,并且定义交易额(pay-per-buy,简称PPB,也就是商家设定的商品价格price)为$v_a$。因为一次点击广告主需要付的费用为$b_a$(此处暂不考虑GSP计费),那么可知:

$$
\text{GMV}_{click-and-buy} = p(c|u,a) \cdot v_a \\\
roi_{(u,a)} = \frac{\text{GMV}_{click-and-buy}}{b_a} = \frac{p(c|u,a) \cdot v_a}{b_a}
$$

假设$n_u$是某个用户$u$在过去一段时间对广告$a$的总点击数,$E_u[p(c|u,a)]$表示期望转化率,那么有:

$$
roi_a = \sum_u roi_{(u,a)} = \frac{v_a \cdot \left(\sum_u n_u \cdot p(c|u,a) \right)}{b_a \cdot \sum_u n_u} = v_a \cdot \frac{E_u[p(c|u,a)]}{b_a}
$$

上式$roi_a$就是ocpc优化问题中的约束条件(即$roi_a$不降低或者有上涨)。在阿里论文中,为了防止异常值和离群点,对pCVR进行了截断,即$E_u[p(c|u,a)] = Average(Trim(pCVR, [10\%,90\%]))$。

可以看到,广告主ROI主要受3个因素的影响:期望转化率、客单价和出价bid。

  1. ROI约束是广告系统 广告主诉求,ROI是与业务相关的指标。应用在其它场景,也可以是其他约束条件。
  2. 如果我们优化的不是bid出价,而是商品价格,那么目标也就发生了变化。

Bid优化上下界

假定$b_a^*$是某一次广告出价${bid}_{click}$,那么只需要满足以下公式就可以保证roi不降低。

$$
\frac{b_a^*}{b_a} \le \frac{p(c|u,a)}{E_u[p(c|u,a)]}
$$

但是,商业竞价环境中并不能保证每次的出价$b_a^*$都能保证roi不降低。于是,论文给出了经验公式,并划定了可行域。其中$r_a$是一个调节系数,用来衡量广告位偏差,流量质量低的情况下,对用户点击意愿的妥协程度系数。

$$
\begin{align}
\text{LowerBound:} \quad l(b_a^*) &=
\begin{cases}
\displaystyle
b_a \cdot (1 - r_a) , &\quad \frac{p(c|u,a)}{E_u[p(c|u,a)]} < 1; \\\
b_a , &\quad \frac{p(c|u,a)}{E_u[p(c|u,a)]} \ge 1 \\
\end{cases}
\end{align}
$$

$$
\begin{align}
\text{UpperBound:} \quad u(b_a^*) &=
\begin{cases}
\displaystyle
b_a , &\quad \frac{p(c|u,a)}{E_u[p(c|u,a)]} < 1; \\\
b_a \cdot \min(1 + r_a, \frac{p(c|u,a)}{E_u[p(c|u,a)]}) , &\quad \frac{p(c|u,a)}{E_u[p(c|u,a)]} \ge 1
\end{cases}
\end{align}
$$

从上式可以看出,可行域如下图所示:

// TODO给出可行域空间图

可以看到bid优化的区间范围是$[(1-r_a) \cdot b_a, (1 + r_a) \cdot b_a]$。

问题:$r_a$通常取多少?

OCPC排序公式

在可行域中选取不同的$b_a^*$,会导致目前以eCPM作为排序机制的排序结果的改变。假设我们想要在eCPM的机制下展示一条广告$k$,并且希望$k$能够最大化我们的排序目标公式$f(\cdot)$。

$f(\cdot)$最原始形式是指考虑$pctr$,故

$$
f(k, b_k^{*}) = pctr_k \cdot b_k^*
$$

那么排序公式等价于带约束的优化问题:

$$
\max_{b_1^*, b_2^*, \cdots, b_n^*} f(k, b_k^*) \\\
s.t. \quad k = \arg \max_{i} pctr_i \cdot b_i^* \\\
l(b_i^*) < b_i^* < u(b_i^*), \forall{i} \in A
$$

接下来,我们分别考虑两种排序公式:

$$
\begin{align}
\text{consider GMV:} \quad f_1(k, b_k^*) &= pctr_k \cdot pcvr_k \cdot v_k \\\
\text{consider GMV + eCPM:} \quad f_2(k, b_k^*) &= pctr_k \cdot pcvr_k \cdot v_k + \alpha \cdot pctr_k \cdot b_k^*
\end{align}
$$

假设

$$
s_a^* = pctr_a \cdot b_a^* \rightarrow
\begin{cases}
l(s_a^*) = pctr_a^* \cdot l(b_a^*) \quad \text{LowerBound} \\\
u(s_a^*) = pctr_a^* \cdot u(b_a^*) \quad \text{UpperBound} \\\
\end{cases}
$$

由于pctr、pcvr等指标非负,并且一般意义下,$b_k^*$高将会持续导致与其相关的pctr等指标提升,会在一定程度上保证了$f(k, b_k^*)$函数对$b_k^*$单调不减。

这里有个比较弱的假设:可以认为广告系统近似等于一个增强学习环境,会导致样本出现受出价引导的bias现象。

由以上假设可以认为,我们只需要将所有的$f(k, u(b_k^*))$按照降序排列(那么如此是否可以说,使用ocpc优化后cpc一定会涨,从而带动了平台收入的增长?),并且按顺序找出来排在第一位的广告$k$,就是我们要找的广告(因为单调不减),并且满足以下条件:

$$
u(s_k^*) \ge l(s_i^*) \qquad \forall i \neq k \\\
b_k^* = u(b_k^*)
$$

刚刚是在假设一次性只展示一条广告的情况,若一次需要展示$N$条广告的话,文中给出了一个贪心策略来实现广告排序。假设一次展示$n$条广告$k_1,k_2,\cdots,k_n$。如何保证$Position_i$的广告恰好对应$k_i$。

ocpc-ranking-algo

结合论文中的事例,解读ocpc算法排序过程:

  • 算法第3-5步:按照排序公式对降序排序($f_2$公式) ;选择lowerBound最大的广告(这里是a3);从上到下选择第1个upperBound大于lowerBound的广告并输出(这里是a1)

ocpc-ranking-algo-demo1

  • 算法第6-11步:剔除广告ad1,重新计算剩余广告的bid*(公式9-10),同时更新其它指标的上下边界。第二轮(3-5步):选择在lowerBound最大的广告(这里是a3),自顶向下选择第一条upperBound大于lowerBound的广告屏输出(这里是a3)。

ocpc-ranking-algo-demo2

  • 直至完成所有排序或返回N个广告。

ocpc-ranking-algo-demo3

其它算法细节

_校准calibraction_

从历史经验看,oCPC中的pCVR预估值存在偏低的现象,作者提出了一个经验校正公式:

$$
p(c|u,a) =
\begin{align}
\begin{cases}
\displaystyle
p(c|u,a), &\quad p(c|u,a) < tc; \\\
p(c|u,a) \cdot (1 + \log(\frac{p(c|u,a)}{tc})), &\quad p(c|u,a) \ge tc
\end{cases}
\end{align}
\quad tc = 0.012 (与业务相关参数)
$$

_oCPC算法复杂度_

整个oCPC算法包含两部分:Ranking和Calibration,总起来算法复杂度为$O(N \times \Vert A \Vert \times \log \Vert A \Vert)$。与$N$成线性关系,通常A和N不是太大,可以提供online serving

_模型评估指标-GAUC_

文中对广告位置p和用户u进行组合后分组,并在计算auc时进行加权$w(u,p)$

$$
GAUC = \frac{\sum_{(u,p)} w_{(u,p)} \times AUC_{(u,p)}} {\sum_{(u,p)} w_{(u,p)}}
$$

OCPC算法实现细节

  • 客单价$v_a$:按照shopid粒度区分,计算过去一段时间(周or月)的消费均价来使用。若为空,使用门店均价来代替。实现方式:类似ctr统计特征,加载resource,每日推送新数据。
  • 期望转化率$E[p(c|u,a)]$,按照slot+广告launchid维度区分,计算过去一段时间(周or月)转化数据(如果转化数不超过100,则epcvr计为0,epcvr=0的shop不对其进行ocpc算法处理)。实现方式:统计点击转化率cvr,类似ctr统计特征,加载resource,每日推送。
  • rank极端需要对所有的广告位进行一次处理。加入新的OcpcHandler:setup方法负责加载epcvr和客单价等数据以及docs;handle方法负责计算bound;cleanup方法负责rerank和回填数据。
  • 排序公式f函数暂定论文中f2;
  • 需要修改result,加入修改后的bid,透传给下游计费模块;
  • cvr因为数据稀疏,可以考虑校准。

OCPM算法

什么是ocpm?

Optimized Cost per Mille的缩写,即优化千次展现出价,本质还是按照cpm付费。采用更精准的点击率和转化率预估机制,将广告展现给最容易产生转化的用户,在获取流量的同时,提高转化率、降低转化成本,跑量提速更快

ocpm算法的逻辑是:广告主按点击竞价而按展现量计费。

今日头条的信息流广告在2018年已经用oCPM替换了之前的ocpc(目前仅在联盟穿山甲广告位上还保留ocpc),除了头条外,还有微信朋友圈广告、facebook使用ocpm出价算法。

社交网络SNS广告用户行为类型比较分散,比如有喜欢、点击、转发、分享、评论等。而电商类广告相对更集中,主要是各种点击,以及下单。

ocpm与ocpc在排序和转化出价上没有区别,区别在于opc中的初始化阶段以及按曝光计费。(为什么头条的信息流广告按照曝光计费而不是点击计费?)

ocpm与ocpc的区别主要在于:

ocpc只能以cpa(如下单、gmv等)作为优化目标;ocpm则多了一个空间,可以按照A(转化相关)作为优化目标,也可以按照C(点击)作为优化目标。对于那些只需要获取流量,不特别计较转化的广告主(如品牌类广告主),ocpm能够提供以点击或流量转化为目标的出价方式是非常有价值的。

今日头条广告计费模式

  • cpm:按展示扣费,只要你的广告被刷出来,不论客户是否会点击都会扣费;
  • cpc:按点击扣费,你的广告展现出来不扣费,只有客户点击了才会扣费;
  • cpa:按转化扣费,你的广告展示出来、被人点击都不扣费,只有当用户产生转化了才会扣费,比如填写了手机号,成为了一个转化,系统才会扣费;
  • ocpm:按展示扣费,ocpm相对cpm的不同是,ocpm可以自动优化人群,以达到广告越跑越精准的效果;

除了这四种常见,还有被头条取消,目前只存在穿山甲广告位的Ocpc:按点击扣费,ocpc相对cpc不同的是,ocpc可以自动优化人群,从而探索到更多优质用户。

那么,$\color{red}{今日头条为什么要取消ocpc,替换为ocpm呢}$?

原因如下(参考今日头条广告oCPM出价优势及广告资源!):

  1. ocpm可以满足广告主在媒体类平台上多样化的转化目标需求,更适合粉丝营销的趋势,如关注、分享、点赞等;
  2. oCPM计划可以支持不同的转化类型组合,提高广告主的转化效果,能够更好的帮助实现计费逻辑。比如今日头条,可以帮助广告主实现多项不同的转化目标,提升广告营销效果;
  3. oCPM计划会支持更多互动性更强的样式,能够有效适配广告创意复杂的点击行为
  4. oCPM计划支持视频播放后自动跳转到广告主的落地页页面,可以有效的帮助减少用户流失

参考:今日头条为什么取消ocpc

CEM算法在OCPX中的应用

CEM(Cross-Entroy Method)算法迭代过程分为两个阶段:

  1. 重要性采样:根据指定的采样机制(可以是超参分布)、生成随机数据样本(或参数);
  2. 根据生成的数据样本,更新采样机制中的超参数,实现在下一次迭代中生成更好(选择top精英)的样本;

因此CEM算法是一种基于参数扰动的进化算法,给参数空间一些合理的扰动,然后在这些扰动中搜索和选择较好的子集合,然后利用交叉熵来指导更新,让这些扰动方向趋近于我们想要的目标优化方向。

CEM优点:无需计算梯度,收敛快,可并行计算,工程实现轻量;
CEM不足:强依赖于随机探索、收敛于局部最优。(应对:多轮训练,择优);

基于进化策略CEM的OCPM建模

业务背景:自动调bid,细粒度的流量匹配。

State: $feature = (bid, gmv, bid_{avg}, gmv_{avg}, gmv/gmv_{avg})$

Action: $\theta^T \cdot feature \\\ Optimized_{bid} = Clip(\theta^T \cdot feature + 1, lower, upper) \cdot bid$

Reward: $f(\Delta cpm, \Delta gmv) = \Delta cpm + \Delta gmv - |\Delta cpm - \Delta gmv|$

目标:采用CEM寻求最优参数$\theta^T$

问题:参数$\theta^T$是ad粒度还是请求粒度?ad之间的bid是否有影响。

文章目录
  1. 1. 广告排序
  2. 2. 工作方向
  3. 3. 技术方向
    1. 3.1. 准入门槛优化
    2. 3.2. 排序公式
    3. 3.3. 参数学习
    4. 3.4. 智能出价
    5. 3.5. OCPC算法
    6. 3.6. OCPM算法
    7. 3.7. CEM算法在OCPX中的应用