快手关于因果科学及其工业界应用落地
导读 本次分享主要结合增长场景,介绍因果推断工具在工业界的落地。
主要围绕以下几方面展开:
-
为什么使用因果工具?
-
因果推断中的数据流规范
-
模型选择
-
模型评估与在线仿真
-
有限资源下的优化问题
分享嘉宾|秦旋 快手 增长算法工程师
编辑整理|卢于欣
内容校对|李瑶
出品社区|DataFun
01为什么使用因果工具?
1. 什么是相关性?
Case 1:电影院中,尼古拉斯凯奇的电影的数量与落水者的数量呈现正相关性。基于模型会得到不好的推论,即通过减少电影会减少落水者人数。但其实它们之间是没有任何因果关系的。
Case 2:我们往往观察到,戴眼镜的同学的学习成绩更好,但真的是戴眼镜能提高学习成绩吗?该问题可以拆成几步,第一步:风险因素(risk factor),即是否戴眼镜;第二步,潜在原因(component causes),在学习上花更多时间;第三步,效果,即更好的准备;第四步,显现出的结果就是有一个好的学习成绩。
2. 相关性模型存在的问题
当使用相关性模型去预估因果效应时会出现什么问题呢?例如,研究学习时长对学习成绩的影响,Y 变量为学习成绩,W 变量为学习时长,X 变量为是否戴眼镜,W 指向X的边会造成 β1 的错误预估。
3. 因果工具如何帮助我们?
因果推断帮助消除 X 指向 T 的边,将 E[Y|t] 转变为 E[Y|do(t)]。对于 E[Y|T=1]- E[Y|T=0] 转变成 E[Y|do(T=1)]- E[Y|do(T=0)],其中 do(T=1),即通过人为干预,将所有样本的 treatment 都变为 T=1;do(T=0),即通过人为干预,将所有样本的 treatment 都变为 T=0。回到眼镜的例子,如果我们计算 E[Y|do(T=1)]- E[Y|do(T=0)],则会发现结果为 0,不同于 E[Y|T=1]- E[Y|T=0]。
从相关性转到因果模型,主要是消除混杂因素。
4. 因果推断的应用
因果工具的应用非常广泛,包括在线旅游平台、网约车、电商、外卖平台等场景中,都会基于因果模型寻求业务的增长。
02因果推断中的数据流规范
1. RCT(随机对照试验 )的优缺点
接下来看一下数据是如何收集的。实践中经常会基于无偏数据建模。
优点:可比性和协变量平衡 (comparability and covariable balance),即相关=因果;可交换性(exchangeability);无后门路径(No backdoor paths)。
缺点:贵(expensive),随机分配干预,如网约车场景下使用不同的折扣券,导致消耗成本较大;缺少普遍性(Lack of generalizability)。
因果推断中需要科学的、高效的RCT设计。
2. 如何设计 RCT
RCT 设计主要包括以下两种:
Nested Design:需要直接从目标人群中随机采样,一组作为对照组,另外一组作为策略组。这样做的好处在于,观测组和对照组与目标人群分布一致。
Non-Nested Design:先有独立的采样机制,通过采样机制,得到对照组和策略组。
实际中更多是使用 Non-Nested Design。主要在于业务场景中,存在部分样本一直采用单一策略,如果将该部分样本引入随机实验,会造成资源浪费。如通过补贴提升用户留存时,从未登录的用户不会给予补贴,如果线上仍随机发放补贴,会造成资源浪费,也是低效的。
如何设计 RCT?
不能清晰地定义目标人群,不仅会造成资源浪费,还会造成数据存在分布不一致。
那么如何保证数据可用呢?
(1)清晰地定义目标人群
- 确保线上代码中 RCT 的最高优先级。使用正交流量时,可能存在被其它正交实验切走部分流量,如果RCT不在最高优先级,被切走的流量就可能会走策略,而不是随机,最终导致数据不一致。
- 另一方面是好的日志记录。每个样本要有唯一且单独的标识。
(2)实验前需要 shuffle 流量,并且正确的 shuffle
- shuffle 实验是重要且容易忽视的一步,主要是为了确保数据的一致性。
- RCT 实验本身是一种策略,有着一致的分布。如果在刚结束的实验上,再开始一个随机实验,会导致样本分布和目标人群分布不一致。
(3)正确地使用特征
工业界常见的 2 种样本维度为:
- 用户维度,即给同一用户同一策略,直到实验结束。用户特征只需要收集第一次请求前的特征。
- 请求维度,即每次请求随机采用策略。需要每次请求前的特征。样本量远远多于用户维度。
具体选择哪种维度,取决于业务场景。
- 用户维度,适用于观测累计因果效应。
- 请求维度,适用于单次因果效应。
(4)在线 RCT
RCT 在线化,相比于大规模 RCT,好处在于永远有一部分数据与 Whole population 同分布。因为:
- 每天都可以得到和 Whole population 同分布的随机样本;
- 改变策略更灵活,避免浪费;
- 让模型更适配于目前的商业环境。如季节性因素会影响因果模型预估,导致模型效果变差。
数据对建模至关重要。没有好的数据,就像无根之木,很难对模型效果进行归因。
03模型选择
1. 常用的因果推断模型
目前已经存在很多因果工具帮助我们预估因果效应,但随着数据量变化,以及对业务的理解加深,会发现当前工具可能无法完全适配业务场景。
2. 因果森林
(1)因果森林原理
通过每个叶子节点间异质性最大化分裂,来保证相同叶子节点内样本同质。在树找到特征后,会分裂左右叶子节点,在左右叶子节点下做回归,W 为干预,Y 为结果,希望左右叶子结点斜率最大化,通过这样的方式,保证左右节点因果效应差异最大,也就是异质性最大。
该模型广泛应用于补贴或增长场景,主要在于因果森林只会在对因果效应提供信息的特征上分裂。回归模型,包括神经网络,是把所有特征放一起回归 Y 本身(Y = θ(x)*T + α*X),而不是 ∆Y(即因果效应),会导致 α 预估不准,造成 θ(x) 预估不准。
(2)广义因果森林
学习 Y 和 W 之间非线性关系,放松假设,数据驱动:即对于每个干预,在统计 Y 时会加上所有的干预的情况。如有 5 个干预的情况,在统计 Y(T=3),会给 T=1,2,4,5 分配权重,基于加权的权重得到 Y(T=3),权重定于基于高斯分布,离 T=3 越近的样本给的权重就越大。
(3)Policy Learning
因果森林的分裂准则,即最大化斜率,这给到一个启发,为什么不能定制化分裂准则,让模型更贴近业务?也就是 policy Learning,使模型的结构更符合业务场景,可基于 ROI、Qini Score、距离分布等来分裂。如左右叶子节点基于 ROI 分裂,使左右叶子节点 ROI 的差最大化,这样能保证同一叶子节点 ROI 接近,进一步保证同一叶子节点在线上给到相同策略,建模目标从建模 ∆ reward 转变为了 ∆ROI。
3. CBIV
第二个方向为 CBIV,业务场景抽象的因果图类似于工具变量(IV)建模。举个例子,如电商平台给客户发放补贴,希望客户得到激励,产生更多的购买欲望。但影响客户购买行为的真的是优惠券吗?实际上,用户更多的是考虑优惠券能省多少钱,影响客户购买行为的直接原因是成本,而不是优惠券本身。在因果图中,优惠券实际是一个工具变量。这引出了一个问题:什么样的特征能影响因果效应?不是能同时影响干预和结果的特征,而是和T一起,对 T-Y 的路径上的某个中介变量产生作用的特征。在刚才的例子里,这个中介变量就可以是成本,T 是优惠券,Y 是 action。
在研究中更多是解决 CBIV 问题:
第一步:Treatment Regression,基于 Z(优惠券)和 X 对 T(成本)进行回归。
第二步:Confounding Balancing,断掉 C 和 T 的关联。
第三步:Outcome Regression,基于 C 和 T 预估 Y。
在实际应用场景中,可进行简化:
第一步:Treatment Regression,仍可基于 Z(优惠券)和 X 对 T(成本)进行回归,这一步,可以获得 Z 和 X 中对因果效应提供信息量的 X1 共同的表征 C。
第二步:Outcome Regression,由于基于 RCT,可直接预估对照组下的 Y,在预估干预组的 Y 时,可采用减法的方式,计算 ∆Y,最后通过第一步中提取到的表征 C 来回归 ∆Y。
4. 其它 De-confounding 方法
其它 De-confounding 方法,如:Feature decomposition,DML,Front-door Path Adjustment 等。
04模型评估与仿真
1. 效果评估指标
AUUC 评估和 Gini Curve 评估,主要是对于排序准确度的评估。实际在做补贴时,更多考虑的是业务场景的贴合程度,即使用 AUCC 评估,排序方式从 uplift 排序调整为 ROI 的排序,评估真实 cost 和 reward 的 ROI 曲线,和预估的 ROI 是否有相同趋势,面积越大的模型在线上效果越好。
2. 离线仿真
我们希望基于离线仿真,能够模拟线上收益。
仿真流程:第一步,存在部分 RCT 数据,假设与观测数据分布一致;第二步,预估 ∆Y,通过运筹规划找到最优解;第三步,评估 RCT 数据上产生的经济效应,并判断策略是否符合业务认知,并展示成本-收益曲线。
经典经济学问题,成本-收益曲线表现出 log 函数关系。在 RCT 数据上,基于限制不同成本拟合曲线,通过比较多个模型的曲线,判断模型效果。
通过特征维度,判断干预策略是否符合业务认知。如打车业务场景,更倾向补贴长里程订单,可对里程进行分桶,检查是否长里程补贴更多。
05有限资源下的优化问题
对于规划求解问题,大部分人是通过离线分配,进行在线决策,但若样本历史未出现过,离线分配无法找到最优策略。我们希望通过在线分配的方式,解决类似问题。处理方案如下:先将优化问题转化为对偶问题,即:
对于样本 i:y*i(λ)=max(0, maxj=1,...,ki(vij-cij)),其中 vij 为策略为 j 时的 reward,Cij 为策略为 j 时的 cost。需要寻找 λ 使目标函数最小,λ 确定后,最优的分配策略也就出现了。
所以该问题在线上转化为贪心问题,在确定 λ 后,只需要找到使 vij-cij 最大的策略 j。
λ 和成本有强相关关系,λ 变大,意味着成本变小;每个 treatment 在下图中代表着一条曲线,截距,为该 Treatment 下的因果效应。如果找到 λ,在线上可找到当前 λ 下的最优干预策略。当预算无限大时,即 λ 为 0,则寻找截距(vij)最大的 treatment 作为分配结果。
最后分享一下系统的流程框架。当有数据后,基于模型进行训练预估,再通过模型做出一个线上的预估值,最后进行运筹规划,分配最优策略。该策略会被应用于线上系统展示给用户,用户基于干预产生更新的行为,行为产生的数据会反哺模型。各模块之间独立又相互连接,通过不断优化模型和流程,实现业务收益的最大化。
以上就是本次分享的内容,谢谢大家。