RTB竞价策略学习

背景

近一年的工作基本是围绕着广告ctr/cvr模型优化展开的,但是对竞价广告整体框架还是缺乏了解,最近准备学习一下RTB相关的内容,笔记主要围绕着Display Advertising with Real-Time Bidding (RTB) and Behavioural Targeting 这篇文章学习

Bid Landscape Forecasting

在RTB中,作为广告主(或者DSP方)而言,关键问题其实是2个,一个是是否应该出价,第二个是应该出多少价,对于第一个问题,一般可以根据广告素材的预估ctr/cvr等判断预期收益决定,对于第二个问题则比较复杂一点;因为在RTB中,只有竞价成功了才能知道真实的计费是多少(对于一价而言就是bid,对于二价而言则需要看其他的报价),由于在每次报价之前不知道其他的报价,因此需要根据历史的一些统计经验值或者模型来预估本次出价,这个就是bid landscape forcasting.

了解几个基本的概念:

winning probability: 给定出价 bxb_x 和广告特征 xx 单次请求赢得展示的胜率 P(winx,bx)P(win|x,b_x)
qx(x)P(winx,bx)px(x)q_x(x) \equiv P(win|x,b_x) \cdot p_x(x)
其中 qx(x)q_x(x) 表示广告得到展示的概率,px(x)p_x(x) 表示发起竞价的概率, P(winx,bx)P(win|x,b_x) 表示竞价的胜率

假设我们已经知道市场上出价z的分布 Pz(z)P_z(z) ,那么胜率可以描述为:
w(bx)obxpz(z)dzw(b_x) \equiv \int_o^{b_x}p_z(z)dz

几种常见的bid landscape forecasting
Tree-based log-normal model

这种方法来自Yahoo的一篇文章Bid Landscape Forecasting in Online Ad Exchange Marketplace,方法是对于adset级别的广告素材,先将历史统计的竞价信息按照特征树的方式先做一个树路径划分,每个树的路径的叶子节点值是match这个特征路径的bid,文章对这种树结构做了一个优化:对于不存在的节点将以*补充,如下图所示:
RTB竞价策略学习
特征树划分好之后,使用GBDT去拟合历史报价,从而学习到每条路径的预估bid值,当一个新的request来的时候,则可以根据match到路径的预估值和历史报价进行本次报价预估均值和标准差。在获取到每个adset级别的均值 E[s] 和标准差 std[s] 之后,文章假设每个adset的bid分布是对数正态分布:RTB竞价策略学习
可以求解到RTB竞价策略学习
对于campaign级别的竞价,paper假设一个campaign的bid是这个campaign下面每个adset的混合分布:RTB竞价策略学习其中RTB竞价策略学习

censored linear regression

线性拟合方法就比较简单,对于广告素材 x ,使用一个参数 \beta 来拟合出价bid:z^=βx\hat{z} = \beta x , Pre- dicting winning price in real time bidding with censored data 这篇paper用下面的似然函数来建模:

本质上是对于win的事件,让 βx\beta x 尽量去拟合bid,对于lose的事件,让 βx\beta x 尽量出价比bid高点

survival model

survival model是一种基于统计的预估出价(二价)分布模型,实现步骤如下
将所有出价历史按照bid从小到大排序成 <bi,wi,zi>i=1...N<b_i,w_i,z_i>_{i=1...N} ,其中 bib_i 是第i次的出价,wiw_i表示是否赢得此次出价,ziz_i表示本次胜出的价格
将上述的数据按照bid从小到大转换成 <bj,dj,ni>j=1...M<b_j,d_j,n_i>_{j=1...M} 形式,其中dj表示胜出价为bj1b_{j}-1胜出的次数,njn_j表示出价为bjb_j-1不能胜出的次数,以下面示例图为例,当计算bjb_j=3的时候,那么djd_j=1(wining_prirce为bjb_j-1的胜出次数),njn_j为4(出价为bjb_j-1时候失败的次数)。本质上计算的是当bid增加一块钱(假设单位是元)胜出的概率为: djnj\frac{d_j}{n_j} ,对应的lose概率为 njdjnj\frac{n_j-d_j}{n_j}
对于出价为bxb_x,lose的概率为l(bx)=bj<bxnjdjnjl(b_x) = \prod_{b_j<b_x}\frac{n_j-d_j}{n_j},win的概率为w(bx)=1bj<bxnjdjnjw(b_x) =1- \prod_{b_j<b_x}\frac{n_j-d_j}{n_j}
RTB竞价策略学习

竞价策略优化

竞价策略主要针对广告需求方,根据每次请求的context(广告素材、用户行为等)判断需不需要出价以及出多少价,主要流程可以用下图描述:RTB竞价策略学习

和搜索广告不同的是,RTB是针对每次的展示竞价,而不是针对搜索关键词出价,因此RTB对广告主(或者DSP)来说,需要更实时且精准的预估.
RTB竞价策略通常包括两个部分:Utility Estimation和Cost Estimation。Utility Estimation一般指赢得这次展示的期望收益,比如点击率/转换率等;Cost Estimation则指的是赢得此次竞价需要的成本,可以用下图描述:
RTB竞价策略学习

单广告计划bid optimisation
继续了解几个概念
  1. 给定市场出价概率密度分布Pz(z)和出价b,对应的胜率为 w(b)=0bpz(z)dzw(b)=\int_0^bp_z(z)dz
  2. 广告的预期回报为 u(r)u(r) ,u(r)u(r)依赖具体的广告策略,如果广告希望回报是点击数,那么 uclk(r)=ru_{clk}(r)=r ;如果广告希望回报是利润,每次点击的收益是vv,那么 uprofit(r,z)=vrzu_{profit}(r,z)=vr-z
  3. cost(如果胜出了,需要花费的成本):
    对于一价广告, c(b)=bc(b)=b
    对于二价广告, c(b)=0bzpz(z)dz0bpz(z)c(b)=\frac{\int_0^bzp_z(z)dz}{\int_0^bp_z(z)}
  4. TT: 广告计划的规则和生命周期决定的拍卖量
  5. BB:广告计划的预算budget
Truth-telling bidding

true-telling bidding是只考虑竞价回报,而不考虑预算的场景,期望收益为
Uprofit(b(.))=Trz=0b(r)uprofit(r,z)pz(z)dzpr(r)dr=Trz=0b(r)(vrz)pz(z)dzpr(r)dr1U_{profit}(b(.)) = T\int_r\int_{z=0}^{b(r)}u_{profit}(r,z)p_z(z)dzp_r(r)dr = T\int_r\int_{z=0}^{b(r)}(vr-z)p_z(z)dzp_r(r)dr (1)
这个相当于是Lagrange无约束优化问题,直接对出价b(.)b(.)求导
(1)式对 b(.) 求导得到:(vrb(r))pz(b(r))pr(r)=0 (vr-b(r))*p_z(b(r))*p_r(r)=0 由此得到出价 br=vrb_r = vr
Truth-telling bidding仅适用于不限budget以及不限拍卖量的情况

Linear Bidding

线性出价则简单的多,基本公式是
blin=ϕvrb_{lin} = \phi vr
其中参数 ϕ\phi 是根据训练数据训练出来的值

预算约束下的bidding

在拍卖量T和预算B受约束的情况下,优化目标变成:
maxb()Tru(r)w(b(r))pr(r)dr max_{b()} T\int_ru(r)w(b(r))p_r(r)dr
st:Trc(b(r))w(b(r))pr(r)dr=B2st: T\int_rc(b(r))w(b(r))p_r(r)dr=B (2)
显然,这是一个等式约束条件下lagrange优化问题,自然的,引入lagrange算子 λ\lambda
l(b(r),λ)=Tru(r)w(b(r))pr(r)drλ(Trc(b(r))w(b(r))pr(r)drB)l(b(r),λ)=T(ru(r)w(b(r))pr(r)drλ(rc(b(r))w(b(r))pr(r)dr)+BTλ) l(b(r),\lambda) = T\int_ru(r)w(b(r))p_r(r)dr - \lambda (T\int_rc(b(r))w(b(r))p_r(r)dr-B) l(b(r),\lambda) = T(\int_ru(r)w(b(r))p_r(r)dr - \lambda (\int_rc(b(r))w(b(r))p_r(r)dr)+\frac{B}{T}\lambda)
等价于优化
ru(r)w(b(r))pr(r)drλ(rc(b(r))w(b(r))pr(r)dr)+BTλ3 \int_ru(r)w(b(r))p_r(r)dr - \lambda (\int_rc(b(r))w(b(r))p_r(r)dr)+\frac{B}{T}\lambda (3)
求解过程:
b(r)b(r)求导值为0可得:
λw(b(r))c(b(r)b(r)=(u(r)λc(b(r)))(w(b(r)))b(r)4 \lambda w(b(r))\frac{\partial c(b(r)}{\partial b(r)} = (u(r)-\lambda c(b(r)))\frac{\partial(w(b(r)))}{\partial b(r)} (4)
令对 λ\lambda 求导值为0可得:
Trc(b(r))w(b(r))pr(r)dr=B5T\int_rc(b(r))w(b(r))p_r(r)dr=B(5)

  1. 对于一价场景
    c(b(r))=b(r)c(b(r))=b(r)
    假设初始zz服从 pz(z)=l(l+z)2p_z(z)=\frac{l}{(l+z)^2}这一分布, l(l+z)2\frac{l}{(l+z)^2}对应的原函数为ll+z-\frac{l}{l+z}
    同时假设 pz(z)p_z(z) 服从均匀分布
    w(b(r))=0brpz(z)dz=b(r)l+b(r)w(b(r))=\int_0^{b_r}p_z(z)dz=\frac{b(r)}{l+b(r)}

    带入4式和5式:
    λb(r)l+b(r)=(u(r)λb(r))l(l+b(r))2T01b(r)b(r)b(r)+l)dr=B \lambda \frac{b(r)}{l+b(r)} = (u(r)-\lambda b(r))\frac{l}{(l+b(r))^2} T\int_0^1b(r)\frac{b(r)}{b(r)+l})dr=B
    由此求得:
    borthb=u(r)lλ+l2lb_{orthb}=\sqrt{\frac{u(r)l}{\lambda}+l^2}-l
    同理,如果 pzzp_zz 服从 1l\frac{1}{l} 的分布,可最终得到 b(r)=r3BlTb(r) = r\sqrt{\frac{3Bl}{T}}

  2. 对于二价场景
    c(b(r))=0b(r)zpz(z)dz0bpz(z)c(b(r))=\frac{\int_0^{b(r)}zp_z(z)dz}{\int_0^bp_z(z)}
    和上面相似的求解方法可以得到:
    bortblin(r)=u(r)λ b_{ortb-lin}(r)=\frac{u(r)}{\lambda}
    如果 pzzp_zz 服从 1l\frac{1}{l} 的分布,同时假设 pz(z)p_z(z) 服从均匀分布
    类似的可以求解:
    b(r)=2r3Bl2T b(r) = 2r^3\sqrt{\frac{Bl^2}{T}}

多广告计划bid optimisation (待续)