1. 因果森林(Causal Forest)概述
第一次接触因果森林是在分析一个医疗干预效果评估项目时。传统机器学习模型能预测结果,但无法回答"如果改变治疗方案会怎样"这类反事实问题。因果森林正是为解决这类因果推断问题而生的利器。
因果森林是因果推断领域的一种非参数方法,由Susan Athey团队在2019年提出。它基于随机森林框架,但专门用于估计处理效应(Treatment Effect)。与预测模型不同,因果森林的核心目标是量化干预措施对结果变量的因果影响,例如:
- 新药使患者康复率提升多少个百分点
- 优惠券策略真正带来多少增量销售额
- 培训项目对员工绩效的实际提升效果
关键区别:预测模型回答"会发生什么",因果模型回答"因为什么而发生"
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 因果森林核心原理拆解
2.1 与传统随机森林的差异
在标准随机森林中,每棵决策树通过特征分裂来最小化预测误差(如MSE)。而因果森林中的每棵"因果树"使用特殊的分裂准则:
- 处理效应异质性最大化:寻找能使子节点间处理效应差异最大的分裂点
- 局部正交性:通过样本加权确保处理组和对照组的协变量平衡
- 双重机器学习:采用交叉拟合来消除正则化偏差
python复制# 典型因果树分裂准则伪代码
def split_criterion(node, X, W, Y):
# W: 处理变量(0/1), Y: 结果变量
left_effect = compute_effect(X_left, W_left, Y_left)
right_effect = compute_effect(X_right, W_right, Y_right)
return abs(left_effect - right_effect) # 最大化效应差异
2.2 核心算法流程
因果森林的实现通常包含以下关键步骤:
-
数据准备阶段:
- 确保处理变量W是二元的(0=对照组,1=处理组)
- 检查重叠性假设:0 < P(W=1|X) < 1 对所有X成立
-
树构建阶段:
- 对每棵树使用子样本(bootstrap或subsampling)
- 在每个节点分裂时:
*
