“我报名参加金石计划1期挑战——分割10万奖池,这是我的第3篇文章,点击检查活动详情”

这篇是treatment effect估量相关的论文系列第一篇所以会啰嗦一点多给出点布景。

其他相关模型详见# AB试验的高端玩法系列1 – 人群定向/HTE/Uplift 论文github收藏

论文

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

布景

论文给出根据决议计划树估量试验对不同用户的不同影响。并提出Honest,variance Penalty算法旨在改善CART在tree growth过程中的过拟合问题。

咱们举个例子:科研人员想衡量一种新的降血压药对患者的作用,发现服药的患者有些血压下降但有些血压升高。所以问题能够笼统成咱们期望预测降压药会对哪些患者有用?类似的问题常常呈现在经济,政治决议计划,医疗研究以及当下的互联网AB测试中。

Treatment effect之所以比通常的预测问题要更难处理,由于groud-truth在实际中是无法直接观测到的,一个人在同一时间要么吃药要不么吃药,所以你永久无法知道吃药的人要是没吃药血压会不会也下降,或者没吃药的人要是吃了药血压会不会下降。

既然个体的treatment effect无法估量,只能退而求其次去估量集体的treatment effect- ATE (Average treatment effect),既悉数用户中(服药作用- 未服药作用)。 但是当呈现个体作用差异时ATE无法反应部分作用(E.g.样本稀释)。这时咱们需要估量类似集体的treatment effect-CATE(Conditional average treatment effect)

用数学笼统一下上述问题:

(Xi,Yi,Ti):Xi∈XwhereX是特征,Y是Response,T是AB试验分组Ti∈0,1Yi={Y(0)Ti=0Y(1)Ti=1CATE:(x)=E(Yi(1)−Yi(0)∣X=x){(X_i, Y_i,T_i): X_i \in X} \\ \text{where X是特征,Y是Response,T是AB试验分组}\\ T_i \in {0,1} \quad \\ Y_i = \begin{cases} Y(0) \quad T_i = 0\\ Y(1) \quad T_i = 1\\ \end{cases}\\ CATE: \tau(x) = E(Y_i(1)-Y_i(0)|X=x)\\

模型

这儿寻觅类似用户的方法是经过决议计划树。树相较线性模型的长处毫无疑问是它对特征类型的兼容,尤其考虑到实际状况中会存在大量离散特征如性别,地域等等。

那究竟怎样grow tree来找到部分用户群, 取决于cost function的界说。一般决议计划/回归树是对Y的拟合例如RMSE,或者cross-entropy等等。这儿作者挑选最大化Y(1)−Y(0)Y(1)-Y(0)作为cost Function, 既咱们经过树划分出的部分人群能够实现部分试验作用最大化(正向或负向)。 cost function 如下:

Sl=(Xi,Yi,Ti):Xi∈Xl叶节点-部分样本t(Sl)=1Nl,t∑Ti=t,i∈SlYiAB组Y的均值(Sl)=1(Sl)−0(Sl)叶节点CATEF(Sl)=Nl∗2(Sl)costfucntion:max∑i=1LF(Si)S_l = {(X_i, Y_i,T_i): X_i \in X_l} \quad \text{叶节点-部分样本}\\ \hat{\mu_t}(S_l) = \frac{1}{N_{l,t}}\sum_{T_i=t, i \in S_l}Y_i \quad \text{AB组Y的均值} \\ \hat{\tau}(S_l) = \hat{\mu_1}(S_l) -\hat{\mu_0}(S_l) \quad \text{叶节点CATE}\\ F(S_l) = N_l * \hat{\tau}^2(S_l)\\ \text{cost fucntion}: max \sum_{i=1}^L F(S_i)\\

了处理议计划树的朋友也就知道后续split criterion就是去寻觅最大化CATE增长的特征和阈值。对决议计划树不太熟的朋友能够来我之前的博客看看Tree-Decision Tree with Sklearn source code

模型优化

决议计划树最大的问题就是过拟合,由于每一次split都必定能够带来Information Gain。这儿就涉及到ML里最经典的Bias-variance trade off。树划分的节点越小,对样本的估量偏差(Bias)越小但方差(Variance)越大。

传统决议计划树一般经过几个方法来处理过拟合的问题:

  • cross-validation来确认树深度
  • min_leaf, min_split_gain 用叶节点的最小样本量等参数来中止growth

作者在文章中给出另外两种处理过拟合的方法:

  • Honest approach
  • Variance Penalty

Honest approach是把练习样本分成train和est两部分,用train来练习模型用est来给出每个叶节点的估量
Variance Penaly则是直接把叶节点的方差加到cost function中,最终的cost function如下:

F(Sl)=Nl∗2(Sl)−Nl(Var(Sl,1)p+Var(Sl,0)1−p))F(S_l) = N_l * \hat{\tau}^2(S_l) – N_l(\frac{Var(S_{l,1})}{p} + \frac{Var(S_{l,0})}{1-p}))

这个模型当时还没找到很好的工程实现,在Uber的Casualml项目中是正在开发中的Enhancement

离散outcome – uplift model

上述cost function的界说更多适用于outcome是连续值的状况,例如时长,收入等等。当outcome是离散值时,casual tree还有一个兄弟叫做uplift-model。在Uber的开源库里这两个方法是彻底独立的实现,一个是UpliftTreeClassifier用于离散问题,一个是CausalTreeRegressor用于连续问题。

不过个人认为除了一些细节例如penalty,honest approach的差异,这两种方法最大的差异只在于用不同的方法来核算Treatment和Outcome的分布间隔。uplift-model支持以下三种间隔核算方法。

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

KL(P∣∣Q)=∑ipilogpiqiED(P,Q)=∑i(pi−qi)22(P,Q)=∑i(pi−qi)2qiKL(P||Q) = \sum_i{p_i log\frac{p_i}{q_i}} \\ ED(P,Q) =\sum_i{(p_i – q_i)^2}\\ \chi^2(P,Q) = \sum_i{\frac{(p_i-q_i)^2}{q_i}}

想看更多因果推理AB试验相关paper的小伙伴看过来 Paper_CausalInference_abtest

欢迎留言~