Paper慢慢读 - AB实验人群定向 Recursive Partitioning for Heterogeneous Casual Effects
这篇是treatment effect估计相关的论文系列第一篇所以会啰嗦一点多给出点背景。
论文
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过程中的过拟合问题。
我们举个例子:科研人员想衡量一种新的降血压药对病人的效果,发现服药的患者有些血压降低但有些血压升高。于是问题可以抽象成我们希望预测降压药会对哪些病人有效?相似的问题经常出现在经济,政治决策,医疗研究以及当下的互联网AB测试中。
Treatment effect之所以比通常的预测问题要更难解决,因为groud-truth在现实中是无法直接观测到的,一个人在同一时刻要么吃药要不么吃药,所以你永远无法知道吃药的人要是没吃药血压会不会也降低,或者没吃药的人要是吃了药血压会不会降低。
既然个体的treatment effect无法估计,只能退而求其次去估计群体的treatment effect- ATE (Average treatment effect),既全部用户中(服药效果- 未服药效果)。 但是当出现个体效果差异时ATE无法反应局部效果(E.g.样本稀释)。这时我们需要估计相似群体的treatment effect-CATE(Conditional average treatment effect)
用数学抽象一下上述问题:
\[
\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}
\]
模型
这里寻找相似用户的方式是通过决策树。树相较线性模型的优点毫无疑问是它对特征类型的兼容,尤其考虑到实际情况中会存在大量离散特征如性别,地域等等。
那究竟怎样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}
\]
熟悉决策树的朋友也就知道后续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(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收藏
欢迎留言~
Paper慢慢读 - AB实验人群定向 Recursive Partitioning for Heterogeneous Casual Effects的更多相关文章
- Paper慢慢读 - AB实验人群定向 Learning Triggers for Heterogeneous Treatment Effects
这篇论文是在 Recursive Partitioning for Heterogeneous Casual Effects 的基础上加入了两个新元素: Trigger:对不同群体的treatment ...
- Paper慢慢读 - AB实验人群定向 Double Machine Learning
Hetergeneous Treatment Effect旨在量化实验对不同人群的差异影响,进而通过人群定向/数值策略的方式进行差异化实验,或者对实验进行调整.Double Machine Learn ...
- AB实验人群定向HTE模型5 - Meta Learner
Meta Learner和之前介绍的Casual Tree直接估计模型不同,属于间接估计模型的一种.它并不直接对treatment effect进行建模,而是通过对response effect(ta ...
- AB实验的高端玩法系列4- 实验渗透低?用户未被触达?CACE/LATE
CACE全称Compiler Average Casual Effect或者Local Average Treatment Effect.在观测数据中的应用需要和Instrument Variable ...
- AB实验的高端玩法系列2 - 更敏感的AB实验, CUPED!
背景 AB实验可谓是互联网公司进行产品迭代增加用户粘性的大杀器.但人们对AB实验的应用往往只停留在开实验算P值,然后let it go...let it go ... 让我们把AB实验的结果简单的拆解 ...
- AB实验的高端玩法系列3 - AB组不随机?观测试验?Propensity Score
背景 都说随机是AB实验的核心,为什么随机这么重要呢?有人说因为随机所以AB组整体不存在差异,这样才能准确估计实验效果(ATE) \[ ATE = E(Y_t(1) - Y_c(0)) \] 那究竟随 ...
- 滴滴数据驱动利器:AB实验之分组提效
桔妹导读:在各大互联网公司都提倡数据驱动的今天,AB实验是我们进行决策分析的一个重要利器.一次实验过程会包含多个环节,今天主要给大家分享滴滴实验平台在分组环节推出的一种提升分组均匀性的新方法.本文首先 ...
- 为什么在数据驱动的路上,AB 实验值得信赖?
在线AB实验成为当今互联网公司中必不可少的数据驱动的工具,很多公司把自己的应用来做一次AB实验作为数据驱动的试金石. 文 | 松宝 来自 字节跳动数据平台团队增长平台 在线AB实验成为当今互联网公司中 ...
- 关于MySQL幻读的实验
该实验基于 CentOS 7 + MySQL 5.7 进行 打开两个窗口连接到MySQL 第一个连接的事务我们命名为 T1 第二个连接的事务我们命名为 T2 T2 发生在 T1 的 O1 操作结束以 ...
随机推荐
- Nginx的安装及配置
1.概述 Nginx是开源免费的一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.其特点是占有内存少,并发能力强,使用nginx网站用户有很多,如百 ...
- LINE 项目总结
前段时间做了一个“国外的公众号”,为什么说是国外的公众号呢,因为他和微信的公众号有很多共通之处.当然了也有很多不同的地方,第一个要说的就是,我在打印信息的时候,使用的alert()弹窗,但是后台才发现 ...
- ASP.NET底层原理
上图基本上演示了IIS 6整个处理过程.在User Mode下,http.sys接收到一个基于aspx的http request,然后它会根据IIS中的Metabase查看该基于该Request的Ap ...
- Dynamics 365-当OrganizationServiceProxy是Null的时候
不少从事D365研发工作的朋友,可能或多或少都经历过这么一种情况,使用CrmServiceClient对象初始化一个实例,然后发现OrganizationServiceProxy对象是null.不仅如 ...
- Kali Linux install "Veil-Evasion"
Xx_Step wget https://github.com/ChrisTruncer/Veil/archive/master.zip unzip master.zip cd Veil-Evasio ...
- TSC打印机防重码在线检测系统
条码标签作为产品的一个身份标识,被应用得越来越普及,但随着使用量的增大,在打印条码流水号的过程中,偶尔会出现打印重复号码的标签出现,这样对产品生产及管理过程中会产生极大的混乱,会收到严重的客诉及返工, ...
- html中的框架frameset和frame及iframe
通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面. 通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面,简而言之,就是在一个窗口中显示多个页面. 每个页面称之为一个框架.并且每个框架独立 ...
- React Hook父组件获取子组件的数据/函数
我们知道在react中,常用props实现子组件数据到父组件的传递,但是父组件调用子组件的功能却不常用.文档上说ref其实不是最佳的选择,但是想着偷懒不学redux,在网上找了很多教程,要不就是hoo ...
- SqlServer性能优化,查看CPU、内存占用大的会话及SQL语句
1,查看CPU占用量最高的会话及SQL语句 select spid,cmd,cpu,physical_io,memusage, (select top 1 [text] from ::fn_get ...
- [译]Vulkan教程(31)加载模型
[译]Vulkan教程(31)加载模型 Loading models 加载模型 Introduction 入门 Your program is now ready to render textured ...