论文阅读 (012): Combining Powers of Two Predictors in Optimizing Real-Time .. | 技术点评

686 阅读4分钟

阅读论文:Combining Powers of Two Predictors in Optimizing Real-Time Bidding Strategy under Constrained Budget

1 背景

实时竞价的流程如下所示

ORTB出价策略中,胜出概率w(b(θ(x)))w(b(\theta(x)))依赖于θ\theta(点击率),即如果点击率估计不准确,导致胜出概率估计不准确,从而导致出价不准确,因此本文的工作在于:使用两个模型来出价,一个模型来估计CTR,一个模型来估计胜出价格(WP)。

2 方法

2.1 问题定义

有一些列竞价ψ:{x1,x2,,xn}\psi:\left\{\vec{x}_{1}, \vec{x}_{2}, \ldots, \vec{x}_{n}\right\},特征表示为xi1in\vec{x}_{i}|1\leq i \leq n,每次campaign的预算为B。竞价活动中问题有

  • 是否对xi\vec{x}_{i}进行竞价
  • 如果竞价,出价值是多少?I(xi)=1I(\vec{x}_{i}) = 1表示竞价成功,I(xi)=0I(\vec{x}_{i}) = 0表示竞价失败
  • 胜出价格为P(xi)P(\vec{x}_{i}),即对于胜出需要支付的价格,在广义第二高价的定价机制下,胜出价格小于竞价

因此出价策略问题为

对每个竞价活动xi\vec{x}_{i},出价为b(xi)b(\vec{x}_{i}),最大化i=1nI(xi)\sum_{i=1}^{n}I(\vec{x}_{i}),约束为i=1nP(xi)B\sum_{i=1}^{n}P(\vec{x}_{i}) \leq B

2.2 PERF算法

PERF算法为理想算法,假设CTR和WP100%准确,可以把预算最高效的利用。

Phase 1 (model training)

输入:

  • 曝光日志

输出:

  • I:点击率预估模型
  • P:胜出价格预估模型
  • Ω:广告系列点击赢得价格的概率密度函数(符合对数正态分布)
  • NtrN_{tr}; NteN_{te}:训练集和测试集上的点击数量

Phase 2 (online bidding)

输入:

  • B:campaign预算
  • xi\vec{x}_{i}:竞价的特征

状态变量:

  • BcurB_{cur}:目前的预算,初始值为B

输出:

  • b(xi)b(\vec{x}_{i}):对于xi\vec{x}_{i}的出价值

流程:

  1. 通过预算约束0βpNteΩ(p)dp=B\int_{0}^{\beta} p N_{t e} \Omega(p) \mathrm{d} p=B求解pboundp_{bound},即出价的上限
  2. 对于输入xi\vec{x}_{i},如果I(xi)=1I(\vec{x}_{i}) = 1(这一步应该是直接通过已有数据判断的),转到第3步;如果I(xi)=0I(\vec{x}_{i}) = 0,继续参与竞价
  3. 使用P(xi)P(\vec{x}_{i})求得胜出价格
  4. 如果P(xi)<BP(\vec{x}_{i}) < B并且P(xi)<pboundP(\vec{x}_{i}) < p_{bound},返回pbound+δp_{bound}+\delta,其中δ\delta可以是一个货币最小单位的值,跳转到5;否则跳转到2
  5. 如果以价格pWP(xi)+δpWP(\vec{x}_{i}) + \delta赢得竞价,更新预算Bcur=BcurP(xi)B_{cur} = B_{cur} - P(\vec{x}_{i})。如果BcurB_{cur}变为0,则停止竞价,否则跳转到2

2.3 PRUD算法

Phase 1 (model training)

输入:

  • 曝光日志

输出:

  • pCTRpCTR:CTR预估值
  • pWpW :胜出价格预估值
  • ρcut\rho_{cut}:竞价效率截止值,计算方式为:ρ(xi)=pCTR(xi)/pWP(xi)\rho(\vec{x}_{i}) = pCTR(\vec{x}_{i}) / pWP (\vec{x}_{i}),当pCTR(xi)pCTR(\vec{x}_{i})低,pWP(xi)pWP (\vec{x}_{i})高时,即转化率低出价高,ρ(xi)\rho(\vec{x}_{i})会较低,要过滤这类情况

Phase 2 (online bidding)

输入:

  • B:campaign预算
  • xi\vec{x}_{i}:竞价的特征

状态变量:

  • BcurB_{cur}:目前的预算,初始值为B

输出:

  • b(xi)b(\vec{x}_{i}):对于xi\vec{x}_{i}的出价值

流程:

  1. 对于xi\vec{x}_{i},检查ρ(xi)ρcut\rho(\vec{x}_{i}) \geq \rho_{cut}是否成立,如果成立跳转到第2步,否则返回0,并继续参与竞价
  2. 如果pWP(xi)<BcurpWP(\vec{x}_{i}) < B_{cur},返回pWP(xi)+δpWP(\vec{x}_{i}) + \delta,跳转到第3步,否则返回0,跳转到第1步
  3. 如果以价格pWP(xi)+δpWP(\vec{x}_{i}) + \delta赢得竞价。更新预算Bcur=BcurP(xi)B_{cur} = B_{cur} - P(\vec{x}_{i})。如果BcurB_{cur}变为0,停止竞价。

3 实验

实验结果如下图所示

先看左边部分,结论有

  • 对于CTR预估,season2的效果比season更好
  • 对于胜出价格预估,还存在较大的误差,但是RMSE<Stdev(作者认为这样是可以接受的)

可以看到预测的WP均值小于真实的WP均值,因此对预测WP进行校正,预测方式如下,加一个偏差,使得95%的数据上预测胜出价格大于真实的胜出价格,这个偏差通过训练数据可以求解。在线竞价中,选择了最优的ρcut\rho_{cut}

pWP(x)+L>P(x)p W P(\vec{x})+L>P(\vec{x}) \quad for 95%95 \% of {xI(x)=1}\quad\{\vec{x} \mid I(\vec{x})=1\}

定义评价指标,即ORTB或者PRUB产生的点击数量除以PERF产生的点击数量。

CR=#ClickORTBPRUD#ClickPERFCR = \frac{\#Click_{ORTB|PRUD}}{\#Click_{PERF}}

因为PERF为理想的结果,因此CR<1。实验结果如下,在大部分情况下PRUD效果比ORTB好(Table 1中也可以得到类似结论)

两种模型的eCPC对比结果如下,PRUD的eCPC比ORTB的eCPC更低,即更有效(个人觉得是因为用到了竞价效率)

4 讨论

相对ORTB,文章提出的PRUD方法在click上提升效果显著,同时eCPC也相对较好,思路简单,可行性高。

值得参考的点有:

  • 使用竞价效率ρ(xi)=pCTR(xi)/pWP(xi)\rho(\vec{x}_{i}) = pCTR(\vec{x}_{i}) / pWP (\vec{x}_{i})过滤无效的竞价
  • 使用了两个模型分别预测CTR和胜出价格

疑问有:

  • 胜出价格预测的有效性,对实验结果保持怀疑(预测的胜出价格和实际胜出价格的均值差的有点多)

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情