这篇是treatment effect估计相关的论文系列第一篇因此会啰嗦一点多给出点背景。html
Athey, S., and Imbens, G. 2016. Recursive partitioning for heterogeneous causal effects. Proceedings of the National Academy of
Sciences.算法
论文给出基于决策树估计实验对不一样用户的不一样影响。并提出Honest,variance Penalty算法旨在改进CART在tree growth过程当中的过拟合问题。app
咱们举个例子:科研人员想衡量一种新的降血压药对病人的效果,发现服药的患者有些血压下降但有些血压升高。因而问题能够抽象成咱们但愿预测降压药会对哪些病人有效?类似的问题常常出如今经济,政治决策,医疗研究以及当下的互联网AB测试中。测试
Treatment effect之因此比一般的预测问题要更难解决,由于groud-truth在现实中是没法直接观测到的,一我的在同一时刻要么吃药要不么吃药,因此你永远没法知道吃药的人要是没吃药血压会不会也下降,或者没吃药的人要是吃了药血压会不会下降。优化
既然个体的treatment effect没法估计,只能退而求其次去估计群体的treatment effect- ATE (Average treatment effect),既所有用户中(服药效果- 未服药效果)。 可是当出现个体效果差别时ATE没法反应局部效果(E.g.样本稀释)。这时咱们须要估计类似群体的treatment effect-CATE(Conditional average treatment effect)spa
用数学抽象一下上述问题:
\[ \begin{align} & {(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(1) & \quad T_i = 0\\ Y(0) & \quad T_i = 1\\ \end{cases}\\ &CATE: \tau(x) = E(Y_i(1)-Y_i(0)|X=x)\\ \end{align} \]code
这里寻找类似用户的方式是经过决策树。树相较线性模型的优势毫无疑问是它对特征类型的兼容,尤为考虑到实际状况中会存在大量离散特征如性别,地域等等。orm
那究竟怎样grow tree来找到局部用户群, 取决于cost function的定义。通常决策/回归树是对Y的拟合例如RMSE,或者cross-entropy等等。这里做者选择最大化\(Y(1)-Y(0)\)做为cost Function, 既咱们经过树划分出的局部人群能够实现局部实验效果最大化(正向或负向)。 cost function 以下:
\[ \begin{align} &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)\\ \end{align} \]htm
熟悉决策树的朋友也就知道后续split criterion就是去寻找最大化CATE增加的特征和阈值。对决策树不太睡的朋友能够来我以前的博客看看Tree-Decision Tree with Sklearn source codeblog
决策树最大的问题就是过拟合,由于每一次split都必定能够带来Information Gain。这里就涉及到ML里最经典的Bias-variance trade off。树划分的节点越小,对样本的估计误差(Bias)越小但方差(Variance)越大。
传统决策树通常经过几个方法来解决过拟合的问题:
做者在文章中给出另外两种解决过拟合的方法:
Honest approach是把训练样本分红train和est两部分,用train来训练模型用est来给出每一个叶节点的估计
Variance Penaly则是直接把叶节点的方差加到cost function中,最终的cost function以下:
\[ 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
其余相关模型详见AB实验的高端玩法系列1-实用HTE论文GitHub收藏
欢迎留言~