我们做AB测试的基础原理,是查看两个试验组有无显著性差异,由此判断哪个方案更好。
但在现实中,每个个体都是不同的,整体无效不意味着局部群体无效。我们希望通过找到特定群体的共同特征,以设计不同的针对性方案。

  • 如果只有5%的用户对发优惠券敏感,我们能只触达这些用户么?或者不同用户对优惠券敏感的阈值不同,如何通过调整优惠券的阈值吸引更多的用户?
  • 如果降压药只对有特殊症状的患者有效,我们该如何找到这些患者?
  • APP的新功能部分用户不喜欢,部分用户很喜欢,我能通过比较这些用户的差异找到改进这个新功能的方向么?

基本思路:
我们无法观测到每个用户的treatment effect,但我们可以找到一群相似用户来估计实验对他们的影响。

方法1 - HTE模型 Causual Tree

论文

Athey, S., and Imbens, G. 2016. Recursive partitioning for heterogeneous causal effects. Proceedings of the National Academy of
Sciences.

Rzepakowski, P. and Jaroszewicz, S., 2012. Decision trees for uplift modeling with single and multiple treatments. Knowledge and Information Systems, 32(2), pp.303-327

背景

当个体treatment effect无法估计,就估计群体的treatment effect,即Average treatment effect(ATE)
但当出现个体效果差异时,ATE无法反映局部效果,这时需要估计相似群体的treatment effect,即Conditional average treatment effect(CATE)
转换成数学抽象:

图片说明

模型

相较于线性模型,通过决策树寻找相似用户群体,具有对特征类型兼容的优点,尤其考虑到实际情况中会存在大量离散特征如性别,地域等等。
将代价函数cost function定义为最大化Y(1)−Y(0),则可以通过树划分出的局部人群可以实现局部实验效果最大化(正向或负向),这样后续split criterion就是去寻找最大化CATE增长的特征和阈值

图片说明

模型优化

避免过拟合,注意Bias-variance trade off
传统决策树方法:

  • cross-validation来确定树深度
  • min_leaf, min_split_gain 用叶节点的最小样本量等参数来停止growth
    作者文章方法:
  • Honest approach,是把训练样本分成train和est两部分,用train来训练模型用est来给出每个叶节点的估计
  • Variance Penaly则是直接把叶节点的方差加到cost function中

离散型输出变量 - uplift model

在Uber的开源库里这两个方法是完全独立的实现,一个是UpliftTreeClassifier用于离散问题,一个是CausalTreeRegressor用于连续问题。
除了一些细节例如penalty,honest approach的差异,这两种方法最大的差异只在于用不同的方式来计算Treatment和Outcome的分布距离。uplift-model支持以下三种距离计算方式。

图片说明

作者在论文中对ED在对称性以及稳定性(不会像KL一样在0/1附近出现极端之值)的天然优势有偏好。不过ED其实就是上述casual tree的cost function的计算方式

方法2 - HTE模型 Causal Tree with Trigger

论文

C. Tran and E. Zheleva, “Learning triggers for heterogeneous treatment effects,” in Proceedings of the AAAI Conference on Artificial Intelligence, 2019

背景

  • Trigger:对不同群体的treatment选择个性化阈值。 E.g优惠券力度,红包金额
  • 新的Node Penalty: 旨在增强模型generalization

模型

Trigger
Trigger的计算主要用在treatment是一个潜在连续变量,例如服药的剂量,优惠券的金额等等。这时实验希望得到的不仅是优惠券是否能提升用户留存,而且是对哪些用户使用多少金额的优惠券能最大化ROI。
作者在通过树划分用户群的同时计算能够使该用户群CATE最大化的Trigger阈值。既在遍历所有特征可能取值的同时遍历所有treatment的可能取值,取jointly的最优解。如下

图片说明

Node Penalty
回顾方法1中Athey(2016)的causal tree,作者将Cost Function设置成最大化CATE,并通过在Cost Function中加入叶节点方差,以及用验证集估计CATE的方式来解决决策树过拟合的问题
图片说明
图片说明
这里Tran提出的新的penalty旨在衡量相同节点训练集和验证机在CATE估计上的差异。先把全样本切分成train, val和test。用训练集来建树,用test来估计叶节点variance,penalize小的叶结点带来的高方差,然后用叶节点上train和val的差异来penalize损失函数,以下λ控制penalty的大小:

方法3 - HTE模型 Double Machine Learning

论文

V. Chernozhukov, D. Chetverikov, M. Demirer, E. Duflo, C. Hansen, and a. W. Newey. Double Machine Learning for Treatment and Causal Parameters. ArXiv e-prints

背景

还没看明白,自己看引用吧

方法4 - HTE模型 Meta Learner

引用

AB实验的高端玩法系列1 - AB实验人群定向/个体效果差异/HTE/Uplift Model 论文github收藏
AB实验人群定向HTE模型1 - Causal Tree
AB实验人群定向HTE模型2 - Causal Tree with Trigger
AB实验人群定向HTE模型4 - Double Machine Learning
AB实验人群定向HTE模型5 - Meta Learner