因果推断在阿里飞猪广告算法中的实践
分享嘉宾:观宙 阿里飞猪 算法专家
编辑整理:王吉东
出品平台:DataFunTalk
导读: 在飞猪搜索 CPC 广告业务中,广告策略不仅需要考虑 CPC 消耗和广告主 ROI,平台整体营收 ( 即 CPC 消耗 + 自然交易抽佣 ) 也是不能忽略的优化目标。传统上基于广告 pCTR、pCVR、bid 等因子的策略算法仅仅从广告曝光本身来对广告主、平台和用户的利益进行优化,难以准确调优这一平台整体目标。
我们通过引入因果推断技术,将广告投放建模为对搜索产品的干预 ( intervention ),直接预测广告投放与否对业务目标产生的 uplift 效应,作为下游优化问题的线性奖励 ( rewards ) 或约束 ( constraints ),以支持各类线上策略。
在本文,我们从其中预算分配策略的视角,介绍飞猪广告算法如何利用广告效应模型进行业务目标优化,同时也介绍模型底层特征 ( 如 CTR、CVR ) 的一些建模经验。主要内容包括:
- 平台视角下的广告预算分配
- 因果推断技术
- 因果推断在广告策略中的实践
- 未来思考
01 平台视角下的广告预算分配
1. 预算分配:多目标优化问题
广告策略(或者说预算分配),本质上是一个多目标优化的问题。下面结合一个示例简述一下这类优化问题的目标和约束。
从平台角度上来讲,预算分配的优化目标往往是包含多种复杂的因素的函数:
- 平台变现效率(即ecpm)
- 广告点击率(ctrad)
- 广告转化率(cvrad)
- 广告主收入(gmvad)
- 平台利润(revenuead)
同理,从约束角度看,主要包含以下约束:
- 广告主总预算(budget)
- 投放计划的投资回收率(ROI)
- 点击率下限(ctrthres)
- 广告主收入下限(gmvthres)
- 平台利润下限(revenuethres)
另一方面,对于平台中的不同的业务,不同的用户,甚至不同产品不同的投放单元,具体的目标和约束也会存在较大差异。针对不同的目标和约束,需要使用不同的因子加以控制。
2. 常用控制方法和控制对象
常用的控制算法包括:
- PID:最常用的一种传统的工程方法
- 对偶法:基于线性规划求解拉格朗日系数,得到影子成本,通过影子成本进行线上控制
- 线性插值法:通过历史数据拟合控制变量与目标变量的关系
以上提到的几种方法有一个共同的特点:都基于线性模型,因此,要想达到有效的控制,就需要线性因子。
常用的控制对象包括:
- 广告主的出价(bidding)
- CTR/CVR 准入下限
- 参竞概率
3. 使用因果推断的语言建模
广告策略问题,常用的策略因子包括:
- CTR 预估(pCTR)
- CVR 预估(pCVR)
- 出价胜出概率分布(Bidding Landscape)
然而,以上的策略因子具备局限性。以 GMV 为例,对平台 GMV 进行控制,仅使用 pCTR、pCVR 等策略因子是不够的。因为从业务角度看,在电商领域,原生广告和产品(包括搜索、信息流等)的相似度很高,因此广告投放的分布和对应原生产品的分布是相似的;这样带来的结果就是,当广告的 CTR/CVR 高的时候,自然产品的 CTR/CVR 往往也会很高;我们不能基于较高的 CTR/CVR 预估结果推测广告投放的真实效果。
基于此,引入本文的主题——使用因果推断建模。
- 公式中的参数 T 可定义成是否投放广告的 indicator 变量
- 模型控制目标是平台的收入(即 GMV)
- 建模问题定义为广告投放对平台 KPI 的影响,即在给定特征的前提下,投放广告的 GMV 减去不投放广告的 GMV 得到的收益
只有通过建立上述模型,才能优化广告投放的真实效果,实现平台和广告主的共赢。该模型涉及到的因果推断技术,将在下一章节详细阐述。
02 因果推断技术
1. 基本问题
将前文所述的模型抽象成上图所示:我们需要建模的是 T 对 Y 的影响(T 即是否投放广告这个动作;Y 是平台的某项 KPI,如 GMV)。
然而影响平台建模的因素很多,比如不同活跃度的用户、不同的时间段、不同的行业等,都会影响广告在搜索推荐中的转化效率。
2. 影响因素的控制和约束
如何在这种复杂的数据关系中提取出广告投放对平台的 GMV 产生的影响?一个较为朴素的方法就是控制变量法,即人为控制和约束除了广告投放之外的其他相关因子。
具体来说,有两类实现路径:
① 随机实验(切断 X->T):假设 T 是随机分配的,即 T 与任何变量独立;
② 特征工程(切断 X->T,X->Y):假设 X 包含所有的 confounders。
- 定义 confounders:同时影响 T 和 Y 的变量
- 若给定 X,则不同 treatment group 下影响 Y 的协变量分布相同,即 X->Y 是天然的随机分配
基于以上这两条假设,从数学上理解,其核心是比较投放广告与否的前提下,平台 KPI 的期望:
由于 X 与 Y/T 独立,故添加条件概率不影响最终的期望值;这样,待求解的期望值等同于实际样本分布的期望。从因果推断角度看,这是个比较理想的情况:从观察数据上得到的模型,和我们期望的因果效应相等的时候,就可以直接使用机器学习模型解决问题。
抛开数学公式,从常识角度也能解释以上假设:每组特征下可视为随机实验,得到局部的无偏估计;那么任意样本上的效应,可以在相应的 X 的分布上积分得到。
3. 从机器学习视角审视
前文简述了一些因果推断领域的技术背景,下面从机器学习视角审视这个问题,将会遇到两个挑战:
**样本结构方面,对两组样本(T=0 和 T=1)的分布要求更加严格:**
- 对于一般的预测问题,只需要保证样本整体无偏,即可预估
- 对于因果推断问题,除了样本整体无偏,还需要要求两组样本的结构相近;否则会存在误差累计效应
对变量 T 的推断准确度要求更高,这并不是机器学习所擅长的工作:
- 传统的统计模型,通过对数据引入假设,可推断参数分布
- 大数据时代的算法模型,往往关注预测精度而非统计推断能力
4. 样本结构问题
基于前文提到的两个挑战,首先讲述样本结构问题的处理办法。
从业务角度列举一个简单示例:控制目标 Y 是归一化(即单 UV 转化)后的平台 GMV;处理组和控制组的用户分布有明显差别(处理组的用户价值较高,控制组的用户价值较低)。
有 3 种方法可以解决这类问题:
① 随机实验
- 选取部分流量,线上广告随机投放,不采用任何策略
- 成本过高,难以落地
② 后采样
- 通过重采样方法,使两组样本分布一致
③ 特征工程
- 机器学习常用方法
- 假设 X 包含所有的 confounders,则虽然两组样本的 P(T,Y)不相同,但 P(T,X,Y)相同
- 实际很难做到,且对样本也有较高要求
在后面的章节中会详细介绍以上方法在广告策略实践中的具体应用。
5. 变量的统计推断问题
第二个问题是变量的统计推断问题:在大数据时代常用的复杂模型中,如何精准推断某一个变量的效应?具体到我们的广告策略场景上,就是如何推断广告是否投放这个干预变量对平台的 KPI 产生的影响。
这类问题其实是很多学科里面临的一个终极问题,很难得到真正解决。具体到工程实践上,我们可以通过一个模型结构先验和 loss 设计,促使模型对这一单变量学习到正确的效应。
03 因果推断在广告策略中的实践
1. 特征工程
先从前文提到的两大分支(特征工程,样本重采样)入手,具体讲述工程落地的方法。
- 本文地址:因果推断在阿里飞猪广告算法中的实践
- 本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出
特征工程方面,目标是捕捉到所有的 confounders(即影响到广告是否投放,以及影响到我们的平台效率的所有特征)。
首先参考广告系统里其他常见工作,例如广告的 CTR/CVR 预估模型;该类模型对广告效率的预估,会预先将原始的复杂特征做汇总。基于此,整体的思想就是基于原生的广告搜索模型做迁移学习。
然而,搜索推荐的信息流和广告策略的数据,两者的分布往往存在差异;因此会涉及到模型的泛化性能问题,需要对模型的拟合精度和泛化能力做权衡。具体来讲,通过策略采样的方式(模型结构类似 CTR/CVR 多任务模型,但是样本和模型训练方式完全不同于 CTR/CVR),将原生信息流样本和广告样本作为两个任务分别学习,最后通过 loss 融合实现多任务学习。
对于刚刚提到的模型精度和泛化能力的权衡的问题,我们采用 in-batchre-sampling 的方式,对于每个训练 batch,通过超参去动态调整原生样本和广告样本的占比。
除了刚刚详细介绍的 CTR/CVR,特征工程还包括广告系统中常用的 Search Rank Queue(原生产品队列)、用户画像等,在此不做赘述。
2. 样本重采样
除了特征工程,另外一部分就是样本的重采样。对于纯观察数据,如何在避免 AB 实验的前提下,通过重采样方法在投放广告和不投放广告这两组的样本中构造相似的分布。
样本重采样常用的方法包括:
① Propensity Score Weighting/Matching(倾向评分加权/配比法):
- 基于样本被分配到处理组的概率进行重采样
- 采样结果与随机分组相似
- Propensity Score 本身的准确度难以估计,不仅是用户行为用户偏好的高维分布,还受到广告本身的很多策略甚至一些产品业务规则的影响,较难进行机器学习建模,因此实际应用很难
② Original Space Matching(原始空间匹配法)等:
- 避免预估 Propensity Score,直接在特征空间进行匹配
- 需要注意分析样本分布
- 实际应用可行
以上述搜索结果页为例,每个商品都可以得到一个模型预估值(pCTR)。可以将整个页面 pCTR 的分布作为特征,用特征向量 Vmatch 表示;
首先对控制组(即未投放广告)的样本进行全量的索引构建;接着对处理组(即有投放广告),按照控制组的向量索引,使用 KNN 方法查找最相似的 K 个没有广告投放样本,进行配对。将控制组样本和处理组样本进行两两配对以后,很容易通过对比两组对应样本的转化率或 GMV 来描述广告投放与否对平台 KPI 产生的影响。