Causal Inference理论学习篇-Tree Based-Causal Forest
广义随机森林
了解causal forest之前,需要先了解其forest实现的载体:GENERALIZED RANDOM FORESTS[6](GRF)
其是随机森林的一种推广, 经典的随机森林只能去估计label Y,不能用于估计复杂的目标,比如causal effect,Causal Tree、Cauasl Forest的同一个作者对其进行了改良。先定义一下矩估计参数表达式:
\mathbb E[\psi_{\theta(x), \upsilon(x)}(O_i)|X=x]=0
\end{equation}
\]
其中,\(\psi\) 是score function,也就是measure metric,\(\theta\) 是我们不得不去计算的参数,比如tree里面的各项参数如特征threshold,叶子节点估计值..etc, \(\upsilon\)
则是一个可选参数。\(O\) 表示和计算相关的值,比如监督信号。像response类的模型,\(O_i={Y_i}\), 像causal 模型,\(O_i={Y_i, W_i}\) \(W\) 表示某种treatment。
该式在实际优化参数的时候,等价于最小化:
\]
其中,\(\alpha\) 是一种权重,当然,这里也可以理解为树的权重,假设总共需要学习\(B\) 棵树:
\]
\]
其中,\(L_b(x)\) 表示叶子节点里的样本。本质上,这个权重表示的是:训练样本和推理或者测试样本的相似度,因为如果某个样本\(x_i\)落入叶子\(L_b\) ,且我们可以认为叶子节点内的样本同质的情况下,那么可以认为这个样本和当前落入的tree有相似性。
当然,按照这个公式,如果\(L_b\) 很大,说明进入这个叶子的训练样本很多,意味着没划分完全,异质性低,则最后分配给这棵树的权重就低,反之亦然。
分裂准则框架
对于每棵树,父节点\(P\) 通过最优化下式进行分裂:
\]
其中,\(\mathcal{J}\) 表示train set,分裂后形成的2个子节点标准为:通过最小化估计值与真实值间的误差平方:
\]
等价于最大化节点间的异质性:
\]
但是\(\theta\) 参数比较难优化,交给梯度下降:
\]
其中,\(\hat \theta_P\) 通过 (2) 式获得, \(A_p\) 为score function的梯度
\]
梯度计算部分包含2个step:
- step1:labeling-step 得到一个pseudo-outcomes
\]
- step2:回归阶段,用这个pseudo-outcomes 作为信号,传递给split函数, 最终是最大化下式指导节点分割
\]
以下是GRF的几种Applications:
Causal Forest
以Casual-Tree为base,不做任何估计量的改变
与单棵 tree 净化到 ensemble 一样,causal forest[7] 沿用了经典bagging系的随机森林,将一颗causal tree 拓展到多棵:
\]
其中,每科子树\(\hat \tau\) 为一颗Casual Tree。使用随机森林作为拓展的好处之一是不需要对causal tree做任何的变换,这一点比boosing系的GBM显然成本也更低。
不过这个随机森林使用的是广义随机森林 , 经典的随机森林只能去估计label Y,不能用于估计复杂的目标,比如causal effect,Causal Tree、Cauasl Forest的同一个作者对其进行了改良,放在后面再讲。
在实现上,不考虑GRF,单机可以直接套用sklearn的forest子类,重写fit方法即可。分布式可以直接套用spark ml的forest。
self._estimator = CausalTreeRegressor(
control_name=control_name,
criterion=criterion,
groups_cnt=groups_cnt)
trees = [self._make_estimator(append=False, random_state=random_state)
for i in range(n_more_estimators)]
trees = Parallel(
n_jobs=self.n_jobs,
verbose=self.verbose,
**_joblib_parallel_args,
)(
delayed(_parallel_build_trees)(
t,
self,
X,
y,
sample_weight,
i,
len(trees),
verbose=self.verbose,
class_weight=self.class_weight,
n_samples_bootstrap=n_samples_bootstrap,
)
for i, t in enumerate(trees)
)
self.estimators_.extend(trees)
CAPE: 适用连续treatment 的 causal effect预估
Conditional Average Partial Effects(CAPE)
GRF给定了一种框架:输入任意的score-function,能够指导最大化异质节点的方向持续分裂子树,和response类的模型一样,同样我们需要一些估计值(比如gini index、entropy)来计算分裂前后的score-function变化,计算估计值需要估计量,定义连续treatment的估计量为:
\]
估计量参与指导分裂计算,但最终,叶子节点存储的依然是outcome的期望。
此处的motivation来源于工具变量和线性回归:
\]
此处我们假设\(x\)是treatment,y是outcome, \(w\) 作为一个参数简单的描述了施加treatment对结果的直接影响,要寻找到参数我们需要一个指标衡量参数好坏, 也就是loss, 和casual tree一样,通常使用mse:
\]
为了最快的找到这个w,当然是往函数梯度的方向, 我们对loss求偏导并令其为0:
\]
\begin{aligned}
\frac{\partial L}{\partial b} & = \sum(f(x)-y)=\sum(wx+b-y) \\
& \Rightarrow \sum b= \sum y-\sum wx \\
& \Rightarrow b = E(y)-wE(x) = \bar y - w\bar x
\end{aligned}
\]
(2) 代入 (1) 式可得:
\begin{aligned}
\frac{\partial L}{\partial w} & \Rightarrow \sum(wx+\bar y-w\bar x-y)x =0 \\
&\Rightarrow w=\frac{\sum xy-\bar y\sum x}{\sum x^2-\bar x\sum x} \\
&\Rightarrow w=\frac{\sum(x-\bar x)(y-\bar y)}{\sum(x-\bar x)^2}\\
&\Rightarrow w=\frac{Cov(x,y)}{Var(x)}
\end{aligned}
\]
可简化得参数w是关于treatment和outcome的协方差/方差。至于\(\xi\) , 似乎影响不大。
refs
- https://hwcoder.top/Uplift-1
- 工具: scikit-uplift
- Meta-learners for Estimating Heterogeneous Treatment Effects using Machine Learning
- Athey, Susan, and Guido Imbens. "Recursive partitioning for heterogeneous causal effects." Proceedings of the National Academy of Sciences 113.27 (2016): 7353-7360.
- https://zhuanlan.zhihu.com/p/115223013
- Athey, Susan, Julie Tibshirani, and Stefan Wager. "Generalized random forests." (2019): 1148-1178.
- Wager, Stefan, and Susan Athey. "Estimation and inference of heterogeneous treatment effects using random forests." Journal of the American Statistical Association 113.523 (2018): 1228-1242.
- Rzepakowski, P., & Jaroszewicz, S. (2012). Decision trees for uplift modeling with single and multiple treatments. Knowledge and Information Systems, 32, 303-327.
- annik Rößler, Richard Guse, and Detlef Schoder. The best of two worlds: using recent advances from uplift modeling and heterogeneous treatment effects to optimize targeting policies. International Conference on Information Systems, 2022.
Causal Inference理论学习篇-Tree Based-Causal Forest的更多相关文章
- Targeted Learning R Packages for Causal Inference and Machine Learning(转)
Targeted learning methods build machine-learning-based estimators of parameters defined as features ...
- 因果推理综述——《A Survey on Causal Inference》一文的总结和梳理
因果推理 本文档是对<A Survey on Causal Inference>一文的总结和梳理. 论文地址 简介 关联与因果 先有的鸡,还是先有的蛋?这里研究的是因果关系,因果关系与普通 ...
- 【统计】Causal Inference
[统计]Causal Inference 原文传送门 http://www.stat.cmu.edu/~larry/=sml/Causation.pdf 过程 一.Prediction 和 causa ...
- Causal Inference
目录 Standardization 非参数情况 Censoring 参数模型 Time-varying 静态 IP weighting 无参数 Censoring 参数模型 censoring 条件 ...
- A Complete Tutorial on Tree Based Modeling from Scratch (in R & Python)
A Complete Tutorial on Tree Based Modeling from Scratch (in R & Python) MACHINE LEARNING PYTHON ...
- 算法---FaceNet理论学习篇
FaceNet算法-理论学习篇 @WP20190228 ==============目 录============ 一.LFW数据集简介 二.FaceNet算法简介 FaceNet算法=MTCNN模型 ...
- Decision Tree、Random Forest、AdaBoost、GBDT
原文地址:https://www.jianshu.com/p/d8ceeee66a6f Decision Tree 基本思想在于每次分裂节点时选取一个特征使得划分后得到的数据集尽可能纯. 划分标准 信 ...
- Chapter 2 Randomized Experiments
目录 概 2.1 Randomization 2.2 Conditional randomization 2.3 Standardization 2.4 Inverse probability wei ...
- Chapter 6 Graphical Representation of Causal Effects
目录 6.1 Causal diagrams 6.2 Causal diagrams and marginal independence 6.3 Causal diagrams and conditi ...
- Chapter 1 A Definition of Causal Effect
目录 1.1 Individual casual effects 1.2 Average casual effects 1.5 Causation versus association Hern\(\ ...
随机推荐
- [学习笔记] CentOS + .Net后端常用的中间件工具安装
Redis 5.0+ 官方文档:https://redis.io/download/#redis-downloads sudo yum install redis RabbitMQ 3.7.11+ 官 ...
- 软件icon制作流程,就一张256-256的图即可,一键生成windows所有格式
软件icon制作流程,就一张256-256的图即可,一键生成windows所有格式 好久不用这个都有些生疏了,还特意做了好几个尺寸的图,结果白弄了,软件会自动生成. 1.准备256-256px的图 2 ...
- Neural Dynamics on Complex Networks-KDD20
一.摘要 学习复杂网络上的连续时间动态对于理解.预测和控制科学和工程中的复杂系统至关重要.然而,由于高维系统结构中的组合复杂性.它们难以捉摸的连续时间非线性动力学以及它们的结构-动力学依赖性,使得这项 ...
- 基于泰凌微TLSR825x的数据透传解决方案之源码解析
一 概念 串口透传也叫透明传输,简称透传.串口透传是一种工作方式,一般出现在串口蓝牙模块中.串口透传蓝牙模块使用极其便利,开发者不需要了解蓝牙协议栈是如何实现的,只需要使用串口蓝牙模块就可以方便地开发 ...
- idea的安装和无限期试用
十年前在笔者开发的时候一直使用的是eclipse软件,但后来所有的发现公司基本用的是idea,还得重新学习idea用法,所以准备在去新公司前,来学习使用idea吧 第一步:安装idea https:/ ...
- 快速将json装DTO的GsonFormatPlus插件使用
参考:https://www.jianshu.com/p/8fb0e4274436 https://blog.csdn.net/qq_43039260/article/details/12676582 ...
- AsyncTask异步任务类
目录介绍 01.先看下AsyncTask用法 02.AsyncTask源码深入分析 2.1 构造方法源码分析 2.2 看execute(Params... params)方法 2.3 mWorker和 ...
- 三维模型3DTile格式轻量化压缩处理的数据质量提升方法分析
三维模型3DTile格式轻量化压缩处理的数据质量提升方法分析 在处理三维模型3DTile格式的轻量化压缩时,如何在减少数据量的同时,保证或提升数据质量是一大挑战.以下为一些提升数据质量的方法分析: 改 ...
- 关于三维模型OBJ格式轻量化压缩必要性探讨
关于三维模型OBJ格式轻量化压缩必要性探讨 三维模型的OBJ格式轻量化压缩在当前的计算机图形学和虚拟现实应用中具有重要的必要性.以下是对三维模型OBJ格式轻量化压缩必要性的分析: 1.提高加载和传输效 ...
- 记录--JavaScript 令人惊讶的一点:对于空数组every()方法返回true
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 JavaScript 语言的内核足够大,导致我们很容易误解它的某些部分是如何工作的.我最近重构了一些使用 every ()方法的代码,并且 ...