添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
千杯不醉的回锅肉  ·  Java ...·  2 年前    · 
来源: PaperWeekly 
本文约1700字,建议阅读5分钟本文中各类 forest-based methods 主要从 split 和 predict 两个角度展开,忽略渐进高斯性等理论推导。

1. Random Forest

传统随机森林由多棵决策树构成,每棵决策树在第 i 次 split 的时候,分裂准则如下(这里关注回归树):

其中  表示在  的划分情况下, 所在的叶子结点。随机森林构建完成后,给定测试数据 ,预测值为:

2. Causal Forest

类似地,因果森林由多棵因果树构成,由于需要 Honest estimation(用互不重合的数据  分别进行 split 和 estimate),因此相较于决策树,每棵因果树 split 的分裂准则修改如下:

在叶子结点内可以认为所有样本同质,所以因果森林构建完成后,给定测试数据 ,其预测值为:

3. Generalized Random Forest

广义随机森林可以看作是对随机森林进行了推广:原来随机森林只能估计观测目标值 ,现在广义随机森林可以估计任何感兴趣的指标 。

3.1 predict

先假设我们在已经有一棵训练好的广义随机森林,现在关注给定测试数据,如何预测我们感兴趣的指标?

通过公式 (2) 和 (3),传统随机森林预测的做法是:

1. 在单棵树中,将测试数据  所在叶子结点的观测目标值取平均作为该树对  的预测;

2. 在多棵树中,将单棵树的不同预测结果取平均作为最终的预测结果。

而在广义随机森林中,首先基于因果森林得到各数据  相对于测试数据  的权重 ,之后加权求解局部估计等式,具体地:

权重估计阶段: 将数据  与测试数据  在同一叶子结点中的“共现频率”作为其权重,如下:

加权求解局部估计等式阶段: 下式中  表示我们感兴趣的参数, 表示我们不感兴趣但必须估计的参数, 表示观测到的与我们感兴趣的参数相关的值。

在 predict 阶段,我们可以证明,随机森林恰好是广义随机森林的一个特例,证明如下:

首先,在随机森林的 setting 下,,我们感兴趣的参数恰好是 ;

极大似然函数为 ,其 score function 为 ;

因此公式 (11) 为:

因此有 ,可得:

3.2 split

首先,由于广义随机森林的目标是准确估计感兴趣的参数 ,因此针对单一节点  与一组样数据 ,估计参数  的方法是: 4e8937835015683fa2b6c5fe7ae11b54.png

接着,我们要将节点 P 分裂为两个子节点 ,分裂的目标是极小化感兴趣的参数的误差:

3d63566b2aea2745f4608e5d3f16120b.png 但是实际上  是不可见的,经过一番推导,最终可以发现最小化  等价于最大化下面的公式:

也就是说,最小化感兴趣的参数的误差等价于最大化两个子节点的异质性。

如果每个  都通过求解式 (12) 获得,那算法的计算复杂度非常高,因此可以通过 gradient-based 的方法去得到  的近似解:

至此,我们可以将 split 分成两个阶段:

标记阶段: 计算父节点的 ,之后针对每个样本计算虚拟的目标值:

回归阶段: 分裂准则为最大化式 (14):

在 split 阶段,也可以证明随机森林是广义随机森林的一个特例:

首先,在随机森林的 setting 下,score function 为 ;

3.3 局部估计等式

在广义随机森林中,假设下列的数据产生过程:

这里 ,有:

此时  相当于:

带上权重  的时候类似。

3.4 other

causal forest 和 generalized random forest 的分裂准则其实是等价的,只不过式 (4) 考虑了下式的 b 和 c 两部分,式 (13)/(15) 只考虑了 b 部分:

4. Orthogonal Random Forest

orthogonal random forest 只是在 generalized random forest 的基础上进行了两个改动:

加了 DML:在一开始先拟合 ,得到残差(first stage);再对残差跑 generalized random forest(second stage)。与广义随机森林的 score function (16) 相比,正交随机森林的 score function 的定义如下:

此时  相当于:

带上权重  的时候类似:

在 predict 阶段强调 locally,即拟合  的时候(DML 的 first stage)使用上权重 。

5. TO DO

记录一个还没想明白的问题,路过的大佬有懂的欢迎讨论。

到这里我们可以发现一个节点内的数据的 HTE 有两种计算方式:

一种是如式 (8) 所示,直接计算不同 treatment 组的期望相减,即 ;

另外一种是求解式 (12) 的局部估计等式。

在随机森林假设的线性 treatment effect 的情况下,这两种计算本质上是等价的。那为什么式 (13) 中的  不能直接用第一种方式求,而是要大费周章地用梯度去近似呢?

目前的结论:上述等价性成立的前提是线性 effect 和二元 treatments 假设,第二种计算方式可以推广到多元甚至连续 treatments。

[1] Athey S, Imbens G. Recursive partitioning for heterogeneous causal effects[J]. Proceedings of the National Academy of Sciences, 2016, 113(27): 7353-7360.

[2] Wager S, Athey S. Estimation and inference of heterogeneous treatment effects using random forests[J]. Journal of the American Statistical Association, 2018, 113(523): 1228-1242.

[3] Athey S, Tibshirani J, Wager S. Generalized random forests[J]. The Annals of Statistics, 2019, 47(2): 1148-1178.

[4] Oprescu M, Syrgkanis V, Wu Z S. Orthogonal random forest for causal inference[C]//International Conference on Machine Learning. PMLR, 2019: 4932-4941.

编辑:王菁

校对:林亦霖

来源:PaperWeekly本文约1700字,建议阅读5分钟本文中各类 forest-based methods 主要从 split 和 predict 两个角度展开,忽略渐进高斯性等理论推导。1. Random Forest传统随机森林由多棵决策树构成,每棵决策树在第 i 次 split 的时候,分裂准则如下(这里关注回归树):其中表示在的划分情况下,所在的叶子结点。随机森林构建...
近年来, 因果 推断逐渐成为了 机器学习 中的热点话题。增益 模型 (Uplift Model)作为工业界 因果 推断与 机器学习 结合最成熟的 算法 之一,在智能营销中有着广泛的应用。但是目前大多数增益 模型 仅讨论了二元处理变量情况下的处理 效应 估计 ,然而在网约车市场中存在大量多维、连续的处理变量。针对这一困境,我们构造了连续 因果 森林 模型 ,并成功地应用在了网约车交易市场策略上。 在网约车供需策略技术基础能力团队,我们最关注的工作之一就是量化价格对网约车供需关系的影响。这对于精细化定价补贴策略的制定和优化有着重要的.
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录随机 森林 模型 一、随机 森林 模型 1.数据加载二、数据清洗2.1.删除变量2.2变量数据类型转换2.3划分训练集和测试集三、随机 森林 分析3.1建模分析3.2 模型 优化 总结 随机 森林 模型 首先:安装需要的几个R语言包:ggplot2,VIM,ggrepel 数据说明:
森林 顾名思义就是有很多 ,这里的 当然就是决策 。实际上随机 森林 就是将 fully-grown C&RT decision tree 作为 bagging 基 模型 (base model)。 random forest (RF) = bagging + fully-grown C&RT decision...
这是使用python 因果 森林 模型 计算处理 效应 异质 性的代码示例: import numpy as np import pandas as pd from sklearn.ensemble import RandomForestRegressor # 读取数据 data = pd.read_csv('data.csv') # 定义自变量和因变量 X = data[['var1','var2','var3','var4','var5','var6','var7','var8','var9','var10']] y = data['output'] # 使用 因果 森林 模型 计算处理 效应 异质 性 rf = RandomForestRegressor(n_estimators=1000, max_features=3, random_state=42, oob_score=True) rf.fit(X,y) heterogeneity_effect = rf.oob_score_ print('Heterogeneity effect:', heterogeneity_effect)