Optimized Cost per Click in Taobao Display Advertising

TL;DR,

很早期的阿里妈妈在广告出价方向的实践,细节比较多,很适合做baseline。

但很多做法以及解法在今天来看都比较过时了,后续会逐渐写近几年怎么做出价问题的。

摘要

Taobao, as the largest online retail platform in the world, provides billions of online display advertising impressions for millions of advertisers every day. For commercial purposes, the advertisers bid for specific spots and target crowds to compete for business traf- fic. The platform chooses the most suitable ads to display in tens of milliseconds. Common pricing methods include cost per mille (CPM) and cost per click (CPC). Traditional advertising systems target certain traits of users and ad placements with fixed bids, essentially regarded as coarse-grained matching of bid and traffic quality. However, the fixed bids set by the advertisers competing for different quality requests cannot fully optimize the advertisers’ key requirements. Moreover, the platform has to be responsible for the business revenue and user experience. Thus, we proposed a bid optimizing strategy called optimized cost per click (OCPC) which automatically adjusts the bid to achieve finer matching of bid and traffic quality of page view (PV) request granularity. Our approach optimizes advertisers’ demands, platform business rev- enue and user experience and as a whole improves traffic alloca- tion efficiency. We have validated our approach in Taobao display advertising system in production. The online A/B test shows our algorithm yields substantially better results than previous fixed bid manner.

淘宝网作为世界上最大的网上零售平台,每天为数以百万计的广告主供数十亿的展示广告。出于商业目的,广告主对特定的位置和目标人群进行投标,以争夺商业流量,平台在几十毫秒内选择最合适的广告进行展示。

常见的定价方法包括千展曝光成本CPM和单次点击成本CPC。传统的广告系统针对用户的某些特点和广告位置进行固定出价,本质上被视为出价和流量的粗粒度匹配。然而,用广告主设定的固定出价来竞争不同质量的流量并不能完全优化广告主所关心的核心指标。此外,平台必须对商业收入和用户体验负责。

因此,我们提出了一种叫做优化的单次点击成本(OCPC)的出价优化策略,它可以自动调整出价,以实现根据流量质量来进行页面浏览请求的出价。我们的方法同时优化了广告主的需求、平台业务收入和用户体验,并从整体上提高了流量分配效率。我们已经在淘宝网的展示广告系统中验证了我们的方法,在线A/B测试表明,我们的算法比以前的固定出价方式产生了更好的效果。

问题背景

相比于大多数RTB系统,淘宝作为在线广告交易平台,其独特之处在于:

  1. 淘宝同时作为需求方和供给方,能够拥有最全面的用户数据
  2. 大部分广告主都是中小商家,他们更加关注受益的增加,而不是做品牌推广
  3. 不同的广告主往往有不同的目标,曝光、点击、转化或者ROI,商家采用点击付费的方式进行竞价
  4. 广告会有平台指标的要求,比如CTR、CVR或者GMV,我们以GMV为主进行分析。这样做,首先是因为我们希望商业化的流量并不会影响用户的体验,设置GMV目标对于平台和广告主是双赢的局面,其次平台会对商家采用近似固定比例抽成,提高GMV长远来看也有利于平台

淘宝广告系统通过从用户行为数据和广告详情中挖掘用户的偏好,筛选出候选的广告集合,即matching阶段,然后用实时预测引擎RTP对候选广告进行点击率的预估\(\text{pCTR}\),并按照\(\text{bid}\cdot\text{pCTR}\)进行排序,来最大化eCPM。

广告主期望通过出价来匹配流量的质量,由于技术原因,传统方式只能对特定的用户群体和广告位进行出价。对于不同价值的流量进行固定出价是效率低下的,同时最大化eCPM是追求短期商业收益,并不满足平台的长期利益诉求。

解决方案

architecture

这个系统分成两个主要部分,请求打到Front Server然后转发到Merger Server,在Merger Server中线进行Match返回用户的特征,Search Node中去找相应的候选广告,再经过RTP的打分,在Strategy中进行校准和二价排序,在Data Node中寻找合适的创意素材,SCS(智能创意服务SmartCreativeServices)中选择合适素材,然后返回结果给Front Server。

在出价的优化中,首先是出价范围的优化,商家希望出更高的价格来竞得高ROI的流量,对于广告\(a\)和用户\(u\)

,商家基础出价\(b_a\),笔单价\(v_a\),单条流量的ROI可以写作 \[ \text{roi}_{u,a}=\frac{p(c|u,a)\cdot v_a}{b_a} \] 其中\(p(c|u,a)\)表示用户\(u\)点击广告\(a\)之后的转化率,商品的转化率为 \[ \text{roi}_a =\frac{v_a \cdot \sum_u n_u \cdot p(c|u,a)}{b_a\cdot \sum_u n_u} =\frac{\mathbb{E}_u[c|u,a] \cdot v_a}{b_a} \] 我们希望我们优化后的单次出价\(b_a^*\)能够保证ROI不降低,即 \[ \begin{aligned} \text{roi}_{a} & \leq \text{roi}_a^* \\ \frac{\text{roi}_a }{\text{roi}_{a}^* } &\leq 1 \\ \frac{\frac{\mathbb{E}_u[c|u,a] \cdot v_a}{b_a}}{\frac{p(c|u,a)\cdot v_a}{b_a}^*} &\leq 1 \\ \frac{b_a^*}{b_a} &\leq \frac{p(c|u,a)}{\mathbb{E}_u[c|u,a]} \end{aligned} \] 为了保险起见,对出价范围进行限制,上下变动比例系数\(r_a\),上下界为 \[ \begin{aligned} &l(b_a^*) = \begin{cases} b_a * (1-r_a) && \frac{p(c|u,a)}{\mathbb{E}_u[c|u,a]} < 1 \\ b_a && \frac{p(c|u,a)}{\mathbb{E}_u[c|u,a]} \geq 1 \\ \end{cases}\\ &u(b_a^*) = \begin{cases} b_a && \frac{p(c|u,a)}{\mathbb{E}_u[c|u,a]} < 1 \\ b_a * \min\Big(1+r_a, \frac{p(c|u,a)}{\mathbb{E}_u[c|u,a]}\Big)&& \frac{p(c|u,a)}{\mathbb{E}_u[c|u,a]} \geq 1 \\ \end{cases} \end{aligned} \] 取值范围如下图所示

bid_scope

上述这种出价的bound能够做到保证ROI不降低,在此基础上我们希望在可行区间内进行出价优化的同时,最大化平台的利益。 \[ \begin{aligned} \underset{b_1^*,c\dots,b_n^*}{\max} && f(b_k^*) \\ \text{s.t.} && k = \underset{i}{\arg\max} \quad \text{pctr}_i \cdot b_i^* \\ && l(b_i^*)\leq b_i^* \leq u(b_i^*) && i=1,\cdots,n \end{aligned} \] 这个式子写的理解成本偏高,解读一下,最终的商品出价要满足三部分,首先是上下界,其次能够使得平台收益最大化且能在eCPM中出最高价胜出。平台收益\(f\)的选择取决于我们的优化目标,最大化平台GMV时选择\(f_1(b_k^*)=\text{pctr}_k\cdot \text{pcvr}_k\cdot v_k\),如果想兼顾平台收益和商家利益时选择\(f_2(b_k^*)=\text{pctr}_k\cdot \text{pcvr}_k\cdot v_k +\alpha \cdot\text{pctr}_k \cdot b_k^*\)

文中提出一种贪心算法,来决策多个商品的排序和出价问题:

  1. 将全部广告按照上界出价的平台收益\(f(u(b_i^*))\)排序
  2. 选择当前排序中下界最高的广告,eCPM参竞价格为\(t\)
  3. 找到排序中第一个上界大于该价格的,\(u(s_k)\geq t\),选择这个商品
  4. 然后排序中删除这个商品,继续2和3
algo1

下图为一个case

algo_case

文中提到了对点击率和购买率的预估进行校准,但是方法比较简单,这里就不提了,以及当前这种构建区间的方式不够平滑,后续采用了\(f(k,b_k^*)=\text{pctr}_k\cdot b_k^*\cdot(1+\sigma(\frac{\text{pcvr}_k\cdot |A|}{\sum_{i\in A}\text{pcvr}_i},w)\cdot r_a)\)\(w=6\)\(r_a=0.4\),其中\(\sigma(x,w)=\frac{x^w-1}{x^w+1}\)

实验评估

因为文章比较久远了实验baseline比较低,同时分析性质工作并不多,就不写了,有兴趣同学可以单独研究。