营销广告定价平台应用实践

I. 引言

          对于一般的营销广告系统来说,主要目标是吸引用户、合理出价促成用户转化。广告是否合理精准投放,直接决定了用户、广告主、平台三方能否平衡获利。广告定价的业务指标是寻求投入产出比(ROI)、实收(GMV)、转化率(CVR)这三个优化指标的平衡,我们团队在营销广告这个领域,从工程和算法这两个方面持续进行优化,目前取得了一些效果。

工程篇

一、概述
1.业务目标

          寻求投入产出比(ROI)、实收(GMV)、转化率(CVR)这三个优化指标的平稳提升,其三者呈不完全线性相关。我们可以控制的是:广告门槛(Advertise Threshold)、广告出价成本(Advertise Amount)这两个变量。优化的实质就是满足这些目标约束条件下,找到最大化的广告门槛和最小化的出价成本。

figure-ad-multiobjective-optimization

          对于多目标优化问题,应将其转化为单目标优化,我们把多目标拆分为单目标,但需要注意每个目标内指标均为正相关。优化这些单个目标的同时,不能牺牲其他指标来实现,其他指标必须是基本持平、甚至提升。

2.系统架构

          整体系统架构如下,纵向来看,分为接口层、业务策略层、算法模型层、监控体系层、数据指标层,其中实时和定时调度、日志记录贯穿整个体系,以及底层的基础平台设施。

figure-ad-architecture

二、实现
1.接口层

          对于直接触达用户的方式,目前的有广告定价平台暂时为三种:智能权益投放、push通知推送、短信推送。
          第一种是为了保证已经在app上留存的用户的转化率,重点优化转化率CVR,分为定时和实时投放两种方式。

  • 定时权益投放:需要事先建立投放策略模板,按照用户不同活跃时间段定时投放。
  • 实时权益投放:根据用户当前客单价在线计算预估广告出价。

          第二三种是为了引流,吸引用户到广告平台上来,重点优化点击率CTR,通过对接第三方厂商的消息推送SDK接口,实现app通知推送和短消息推送。

  • 智能文案:这里我们事先配置好投放文案模板,根据用户历史行为、热销商品等召回不同的商品和价格,填充到文案模板中,这样可以做到个性化文案精准匹配用户。
  • 时段投放 & 频率控制:主要是用户疲劳度控制,计算用户活跃度,一天中不同时段给用户进行消息推送,尽可能多地促成打开率和点击率提升。比如中午和晚上用户使用手机比较活跃的时段,同时也会结合用户历史点击率,调整发送同时的条数、内容;周末、节假日用户使用手机频率较平时上升,也会在这个时间段集中对用户进行推送。
2.业务策略层
2.1.用户分层 & 人群圈选

          电商营销的核心是获客吸引、用户点击、用户转化、用户留存,对不同用户我们按照价值维度进行用户分层,按标签圈选人群,将广告投放给相应广告定价的目标人群。借鉴电商运营中的RFM用户价值分层体系,用户按照不同维度进行分层打分,例如历史转化率、活跃度、购买力、权益敏感度,综合评判打分决定了广告定价。

figure-ad-user-score

  • 历史转化率:对于偏向高转化率等优质用户,由于用户黏性本身较高,所以广告出价应该在保证这部分用户同时尽量降低出价成本、提升GMV;相反地对于偏向低转化率用户,应该适当用策略促其转化。
  • 活跃度:对于偏向高活跃等优质用户,广告出价应该在这部分人群身上降低出价成本、提升GMV;对于中间段用户,我们细分了其活跃时段,分早间、中午、晚间分别对用户进行不同广告推送,最大化总体转化率;相反地对于低活跃度用户,应该适当用策略促其转化。
  • 购买力:高购买力用户,可以适当提升广告出价以提升GMV, 重点是对于中间部分用户,优化目标是合理预估广告出价,在最小化出价成本的同时,尽量逼近其用户历史真实成交价格,降低广告成本、促其转化。
  • 权益敏感度:对于敏感度不是很高的用户,尽量提升广告出价门槛,降低广告成本,其余则相反。但是要保证整体用户的广告成本下降,广告实收提升。
2.2.定价策略
2.2.1.基本计算方法

          在定价策略方面,用户不同价值维度的分级评分,综合相加,决定了广告的基准出价。
定义用户总评分$(Threshold\;Coefficient)$:

可得归一化分数$(Normalization\;Threshold\;Coefficient\;Score)$:

定义预估广告定价门槛$(Price\;Threshold)$如下:

其中,avg_per_order_fee为用户平均订单金额,threshold_coefficient为门槛系数。
定义预估定价成本 ($ Price\;Amount $) 如下,其中feeRate为基准费率:

该预估模型计算出的广告出价门槛、广告出价成本,存放在离线数据库中。

2.2.2.频率控制

          对广告投放频率进行控制,这个主要区分在定时和实时策略上,在定时策略中,周中和周末、上午下午和晚上时段,按照用户疲劳度控制都会有调节。

2.2.3.兜底策略

          对于一些新人用户,类似于推荐系统中的冷启动策略,会给出一些兜底的定价。同时,对于华北、华东、华中、华南等不同地区,我们进行了人群分析,发现不同地区的用户在购买力和折扣敏感度上的差异,会细分调整系数。
          例如华南和华北的对比差异如下,我们看到华南大区的购买力稍高,且整体的折扣敏感度较高。所以对比华北大区,在华南大区的广告的兜底基准定价就会下调价格门槛,同时增加出价成本,促使不同分层用户进行转化。

figure-ad-purchase

figure-ad-discount-sensitivity

2.2.4. 费率限制

          为了使整体ROI得到保证,我们为广告定价的费率做了范围限制,在基准费率的基础之上,实际投放给用户的广告费率会在上下浮动一定百分比,但百分比会被限制在一定阈值范围之内,防止有部分用户的薅羊毛情况,同时也需要保证新人用户的权益优惠力度。

2.2.5. 费率调节 & 步长调节

          对于不同分层用户,我们做到了动态费率,在保证实收GMV和转化CVR的基础之上,尽可能地降低费率,从而降低补贴率,提升整体的ROI。
          同时,对于每个广告的预估定价,由于步长过大导致精度不够高,在策略后期,我们将步长调整到更精细的粒度。

2.3.转化漏斗

          对于广告出价方面,我们进行了线上小流量迭代多组实验,在之前的实验结论基础上,我们对用户转化漏斗进行分析。
          用户转化流程:

figure-ad-user-convert

          通过分析转化漏斗发现,各个环节的人群占比直接关系到广告预估出价。
          从下单转化到用券转化,在之前小流量实验中,有将近60%~70%的用户,其最终用券转化的客单价和广告预估出价差距在真实阈值 $\alpha$ 范围之内,可以认为这部分用户预估是精准的,但仍旧有相当一部分用户(约30%)尚未达到预估门槛而未发生转化、少部分约10%用户达到预估门槛但未发生转化。对于前一种用户,优化方向采取用折扣后客单价替代总的客单价,从而更准确地预估定价门槛;对于后一种用户,只能从其平时消费行为习惯分析着手,但这部分用户基本上也很难再发生转化。
          从点击转化到下单转化,这个环节有大量用户流失,也就是说,在来访率一定的情况下,下单率偏低,这个跟app的产品设计、用户的购物路径习惯有关。一般地,这些跟app内一些推荐位、广告位的曝光有关,而且若采用一般的点击、加车、购买加权置顶方式,还是很容易出现马太效应,所以策略上我们做了改进,同时考虑了广告展位的穿插展示多样性,在下单率方面有一定提升。

3.算法模型层
3.1.离线模型

          在离线模型中,我们采用了分层打分模型、线性逼近模型、多分类模型等。

  • 分层打分模型:如前所述,按照用户各个不同维度价值体系进行分层打分,最终得到综合评分,直接决定广告定价门槛系数、广告定价成本系数、费率系数。从而计算出广告定价门槛、广告定价成本。
  • 线性逼近模型:通过拉取用户近期90天的购买行为,按照时间序列预估用户在下一单的成交成本,对于需要不同转化的用户设定不同的广告定价门槛,达到整体GMV/客单价的提升。
  • 多分类模型:主要指未下单、下单未用券、下单且用券来给用户分类,离线预估其CVR,然后从召回候选集列表的topN个广告中,选择门槛最大、定价成本最低的广告进行投放,以保证最大化ROI。

    3.2.在线模型

              这个主要是在线多特征动态预估,在线预估的定价反过来会定期更新离线模型。

    3.3.在线预估框架

              智能广告定价算法引擎 Ad-Server,其框架图如下:

    figure-ad-server

  • 召回阶段:在多路并发召回中,会召回不同的候选广告列表,比如按照用户最大客单价进行的预估定价、按照用户历史最低折扣价进行的预估定价、按照用户真实折扣后客单进行的预估定价……除了某些单一场景,还会增加不同场景下的预估召回结果。

  • 结果汇总:把不同召回源结果汇总。
  • 过滤调整:费率浮动限制、动态费率调整、步长调整等。
  • 结果排序:当有多个广告定价时,优先级高的应该按照什么策略出价等。
  • 结果封装:结果触达用户投放展示。
4.监控体系层
4.1.离线数据监控
  • 生产任务监控:任务失败、任务运行超时监控、任务占用资源量。
  • 数据量监控:离线数据特征是否稳定。
  • 导数任务监控:写入数据量、数据写入速度。
4.2.在线性能监控

          对接Monitor监控平台,这里主要观测的是系统性能指标:如TPS/QPS、响应时间RT、系统并发数、平均请求PV、TP99/TP999等。

4.3.业务指标监控

          对于广告定价,还特别地对业务指标进行分钟级监控,以能做到实时响应。主要包括:

  • 发送率、匹配率、成功率;
  • 定价的上限率、下限率、范围比率;
  • 召回数、召回时间;
  • 来访率、使用率/转化率、实收/毛利率、客单价/笔单价、ROI/补贴率;
5.数据指标层

          我们进行了多版实验迭代,主要针对以下数据指标进行统计:

  • 定价成本指标:主要包括营销补贴率、ROI、用券补贴率等。
  • 定价收益指标:主要包括实收GMV、客单价/笔单价、毛利率等。
  • 转化留存指标:券使用率、下单转化率、用券转化率等。

算法篇

          在工程篇的开头,我们提到,广告定价平台的业务指标是寻求投入产出比(ROI)、实收(GMV)、转化率(CVR)这三个优化指标的平衡。
          寻求投入产出比(ROI)、实收(GMV)、转化率(CVR)这三个优化指标的平稳提升,其三者呈不完全线性相关。其中可以控制广告门槛(Advertise Threshold)和广告出价成本(Advertise Amount)这两个变量。优化的实质就是满足这些目标约束条件下,找到最大化的广告门槛和最小化的出价成本。

一、问题分析

          对于多目标优化问题,应将其转化为单目标优化,我们把多目标拆分为单目标,但需要注意每个目标内指标均为正相关。优化这些单个目标的同时,不能牺牲其他指标来实现,其他指标必须是基本持平、甚至提升。
          一般意义上讲,广告竞价排名的排序分公式计算如下,其为多目标的线性加和,而优化目标就是寻求合适的 $\alpha$、$\beta$、$\gamma$,计算单个广告位的各个展示广告的排序质量分,得到总的广告展示排序后,获得总体的ROI、GMV、CVR三者最优:

          其中,每个因子的计算方式如下。

          当中,ROI和补贴率(Subsidy Rate)为反比,即ROI为总实收(GMV)除以总补贴费(Subsidy Fee)。分子GMV等于来访UV乘以转化率(CVR),再乘以客单价(Price);分母总补贴费(Subsidy Fee)等于转化UV乘以人均补贴费(avg(Subsidy))。
          总实收(GMV),等于转化UV乘以转化率CVR乘以客单价(Price);
          转化率CVR等于转化UV除以来访UV;

二、问题建模

          在计算广告领域,不是一个类似于搜索推荐的排序问题,而是一个多目标最优化、在给定空间中,找函数最优解的问题。 广告定价预估转为凸优化问题,在解空间里找到最优解,用历史数据取预估,解空间的降维。
          第一阶段的目标是最小化广告出价补贴费用,即最大化ROI。其数学表示为:

          其中费率定义如下:

          其中th为广告出价门槛(Advertise Threshold),amt为广告出价成本(Advertise Amount),FeeRate为初始化约定费率,定义如上所示。
          解空间范围定义:

  • A: 最小门槛值,常量
  • B: 最大门槛值,常量
  • C: 最小成本值,常量
  • D: 最大成本值,常量
  • E/F:出价成本小于出价门槛,有常量范围限制
  • G: 费率下限值,常量
  • H: 费率上限值,常量

          由上定义公式可以推导出,其余两个变量GMV和CVR的约束是保持其不下降,最大化ROI。通过拆分,两者之积等于人均出价成本除以ROI,再乘以券转化率$(CVR_{useCoupon}\;\;\;)$。

          我们可以控制的变量仅为2个,门槛th和出价成本amt。对于此非线性规划问题,目标是在广告转化率有保证、费率符合要求的情况下求解出门槛最大的广告定价。
          解空间如下图阴影部分的矩形面积,即在函数 $y=x$ 的下方部分围成的梯形。

figure-ad-axis

  • 选择LR模型学习训练数据,目的是提高线上求解速度和性能
  • Label: 用户是否有广告转化
  • 特征包括用户特征和广告特征及交叉特征三部分
  • 广告特征主要包括广告门槛th、出价成本amt、费率
  • 用户特征包括平均客单价、平均总价、折扣率、折扣订单率、用户历史转化率等
  • 交叉特征包括门槛客单价比,门槛总价比,定价成本折扣比等
三、非线性规划

          由于解空间的枚举数量较小,所以采用全局搜索的方法,即能在时间复杂度为O(1)的情况下求出最优的门槛和定价成本组合。
          伪代码如下:

1
2
3
4
5
6
7
8
9
10
while(th>min_th && amt>min_amt):
if(CvrCheck(th, amt) && feeRateCheck(th, amt)):
find = true;
break;
if(!CvrCheck(th, amt)):
adjustStep(th, amt);
else if(feeRateCheck(th, amt)):
adjustFeeRateLimit(th, amt);
else:
break;

          通过以上求解方法可以得到全局最优的广告定价,在目前的ROI和CVR优化上取得了一些效果,但是仍然还有提升空间可以进一步优化。