这篇论文是在 Recursive Partitioning for Heterogeneous Casual Effects 的基础上加入了两个新元素:html
C. Tran and E. Zheleva, “Learning triggers for heterogeneous treatment effects,” in Proceedings of the AAAI Conference on Artificial Intelligence, 2019node
Trigger的计算主要用在treatment是一个潜在连续变量,例如服药的剂量,优惠券的金额等等。这时实验但愿获得的不只是优惠券是否能提高用户留存,并且是对哪些用户使用多少金额的优惠券能最大化ROI。
做者在经过树划分用户群的同时计算可以使该用户群CATE最大化的Trigger阈值。既在遍历全部特征可能取值的同时遍历全部treatment的可能取值,取jointly的最优解。以下
\[ \begin{align} T = {t_i}&\quad \text{treatment的全部可能取值}\\ \theta_l &\quad \text{最优treatment阈值}\\ F^t(S_l) &= max_{\theta_l}F(S_l)\\ \end{align} \]函数
小思考
感受这里对最佳trigger的选择还有优化的空间。由于上述split假定了实验效果对treatment的取值是单调的,若是不单调上述split可能获得不make sense的结果。并且在一些应用场景下是但愿取到有条件最优解,例如在成本不超过N的状况下收益越高越好,而不是简单的最大化实验效果,这个当前也还没法解决。优化
在Athey(2016)的Casual Tree中,做者经过在Cost Functino中加入叶节点方差,以及用验证集估计CATE的方式来解决决策树过拟合的问题。这里Tran提出的新的penalty旨在衡量相同节点训练集和验证机在CATE估计上的差别。spa
咱们先回顾一下要用到的Notation
\[ \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} \]
如下是Athey(2016) Casual Tree的定义
\[ \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
做者先把全样本切分红train, val和test。 用训练集来建树, 用test来估计叶节点variance,penalize小的叶结点带来的高方差,而后用叶节点上train和val的差别来penalize损失函数,如下\(\lambda\)控制penalty的大小:
\[ \begin{align} &penalty = N_L^{val} * |\hat{\tau}(S_l^{val}) -\hat{\tau}(S_l^{train}) | \\ &cost = \frac{(1-\lambda)F(S_l^{train}) - \lambda * penalty}{|N_l^{train} - N_l^{val}| +1}\\ \end{align} \]blog
小思考
各式各样解决over-fitting的方法不能说没有用,但我的认为最终经过Casual Tree获得的特征和特征取值,仍是要依据业务逻辑来进行验证。以及在不一样的样本集上极可能特征取值的变更要超过over-fitting的影响。因此主观判断在这里也很重要ci
其余相关模型详见AB实验的高端玩法系列1-实用HTE论文GitHub收藏get
欢迎留言~it