查看原文
其他

快手关于因果科学及其工业界应用落地

秦旋 DataFunSummit
2024-09-10

导读 本次分享主要结合增长场景,介绍因果推断工具在工业界的落地。

主要围绕以下几方面展开:

1. 为什么使用因果工具?

2. 因果推断中的数据流规范

3. 模型选择

4. 模型评估与在线仿真

5. 有限资源下的优化问题

分享嘉宾|秦旋 快手 增长算法工程师 

编辑整理|卢于欣

内容校对|李瑶

出品社区|DataFun


01

为什么使用因果工具?

  1. 1. 什么是相关性?

Case 1:电影院中,尼古拉斯凯奇的电影的数量与落水者的数量呈现正相关性。基于模型会得到不好的推论,即通过减少电影会减少落水者人数。但其实它们之间是没有任何因果关系的。

Case 2:我们往往观察到,戴眼镜的同学的学习成绩更好,但真的是戴眼镜能提高学习成绩吗?该问题可以拆成几步,第一步:风险因素(risk factor),即是否戴眼镜;第二步,潜在原因(component causes),在学习上花更多时间;第三步,效果,即更好的准备;第四步,显现出的结果就是有一个好的学习成绩。

  1. 2. 相关性模型存在的问题

当使用相关性模型去预估因果效应时会出现什么问题呢?例如,研究学习时长对学习成绩的影响,Y 变量为学习成绩,W 变量为学习时长,X 变量为是否戴眼镜,W 指向X的边会造成 β1 的错误预估。

  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]。

从相关性转到因果模型,主要是消除混杂因素。

  1. 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 作为分配结果。

最后分享一下系统的流程框架。当有数据后,基于模型进行训练预估,再通过模型做出一个线上的预估值,最后进行运筹规划,分配最优策略。该策略会被应用于线上系统展示给用户,用户基于干预产生更新的行为,行为产生的数据会反哺模型。各模块之间独立又相互连接,通过不断优化模型和流程,实现业务收益的最大化。

以上就是本次分享的内容,谢谢大家。


分享嘉宾

INTRODUCTION


秦旋

快手

增长算法工程师

毕业于美国波士顿大学,清华大学计算机系研究员。曾在滴滴出行任职高级算法工程师,研究方向为因果推断。曾自主开发了一套适用于工业界的 RCT&观测数据融合算法。参与开发基于 SPARK 的分布式因果森林,并进行改造与升级。该工作在网约车智能定价业务上多次取得 ROI 收益。加入快手后,负责过补贴,裂变等业务,并参与开发因果机器学习平台。


往期优质文章推荐

往期推荐


货拉拉利用时空熵平衡提升营销效率的实践

小红书应对万亿社交网络关系的图存储实践

百度视频推荐系统跨域多目标设计的双向奔赴之路

小米数据中台建设实践指南

一线大厂数据产品经理成长之路

网易Apache Iceberg +Amoro 构建云原生湖仓探索

CVR 2023进展:Click-aware Structure Transfer with Sample Assignment

坦白局!网易数帆解读 Apache Kyuubi 1.8 特性

美团 Doris Bitmap 精确去重优化实践

华为 当LLM的优势与推荐系统结合后~

B 站基于 StarRocks 构建大数据元仓和诊断系统

深度强化学习的风吹到了电网

两个范式搞定因果与机器学习的前沿初探

以新能源资产为主体的能源运营决策


峰会推荐


点个在看你最好看

继续滑动看下一个
DataFunSummit
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存