因果机器学习
概述
传统机器学习学习的是数据中的相关性,而因果推理追问"为什么"——识别变量之间的因果关系。因果推理是从"预测"迈向"干预"和"反事实推理"的关键一步。
相关内容:因果推断
1. 因果 vs 相关
1.1 辛普森悖论
一个经典案例说明相关性可以误导因果判断:
| 组别 | 药物组恢复率 | 对照组恢复率 | 结论 |
|---|---|---|---|
| 男性 | 93% | 87% | 药物有效 |
| 女性 | 73% | 69% | 药物有效 |
| 总体 | 78% | 83% | 药物无效? |
原因:女性更倾向服药,而女性基础恢复率较低——性别是混杂因素(confounder)。
1.2 因果阶梯(Pearl's Ladder of Causation)
| 层级 | 问题类型 | 数学工具 | 示例 |
|---|---|---|---|
| 1. 关联 | 观察到什么? | \(p(Y\|X)\) | 服药者恢复率更高吗? |
| 2. 干预 | 如果我做了会怎样? | \(p(Y\|do(X))\) | 如果让所有人服药,恢复率会提高吗? |
| 3. 反事实 | 如果当时不同会怎样? | \(p(Y_x\|X', Y')\) | 如果这个患者没有服药,会恢复吗? |
2. 结构因果模型(SCM)
2.1 定义
结构因果模型由三元组 \((U, V, F)\) 组成:
- \(U\):外生变量(不被模型中其他变量解释)
- \(V\):内生变量(由结构方程确定)
- \(F\):结构方程集合 \(v_i = f_i(\text{pa}_i, u_i)\)
2.2 示例
U_X → X → Y ← U_Y
↑
Z
结构方程:
X = f_X(U_X)
Z = f_Z(X, U_Z)
Y = f_Y(X, Z, U_Y)
SCM 同时编码了:
- 观察分布 \(p(X, Y, Z)\)
- 干预分布 \(p(Y | do(X=x))\)
- 反事实 \(Y_{X=x}\)
3. 因果图(DAG)
3.1 因果图基本结构
链 (Chain): X → Z → Y (Z 是中介)
叉 (Fork): X ← Z → Y (Z 是混杂因素)
碰撞 (Collider): X → Z ← Y (Z 是碰撞节点)
d-分离(d-separation):判断给定某些变量后,两个变量是否条件独立。
规则:
- 链 \(X \to Z \to Y\):条件于 \(Z\) 后,\(X \perp Y | Z\)
- 叉 \(X \leftarrow Z \to Y\):条件于 \(Z\) 后,\(X \perp Y | Z\)
- 碰撞 \(X \to Z \leftarrow Y\):不条件于 \(Z\) 时,\(X \perp Y\);条件于 \(Z\) 后,\(X \not\perp Y | Z\)
4. do-演算
4.1 do 算子
\(do(X = x)\) 表示干预——强制设定 \(X = x\),切断所有指向 \(X\) 的因果箭头。
\[
p(Y | do(X = x)) \neq p(Y | X = x)
\]
观察条件 \(p(Y|X=x)\):只是看到 \(X=x\) 时 \(Y\) 的分布(可能受混杂影响)
干预 \(p(Y|do(X=x))\):主动设置 \(X=x\) 后 \(Y\) 的分布(消除混杂)
4.2 后门准则(Backdoor Criterion)
一组变量 \(Z\) 满足后门准则(相对于 \(X \to Y\)),如果:
- \(Z\) 阻断了所有从 \(X\) 到 \(Y\) 的后门路径(经过 \(X\) 的箭头尾部的路径)
- \(Z\) 中没有 \(X\) 的后代
满足后门准则时:
\[
p(Y | do(X = x)) = \sum_z p(Y | X = x, Z = z) \, p(Z = z)
\]
4.3 前门准则(Frontdoor Criterion)
当无法直接控制混杂因素时,如果存在中介变量 \(M\):
\[
X \to M \to Y, \quad U \to X, \quad U \to Y
\]
前门调整公式:
\[
p(Y | do(X = x)) = \sum_m p(M = m | X = x) \sum_{x'} p(Y | X = x', M = m) p(X = x')
\]
5. 因果效应估计
5.1 处理效应
| 概念 | 定义 | 含义 |
|---|---|---|
| ATE | \(\mathbb{E}[Y(1) - Y(0)]\) | 平均处理效应 |
| ATT | \(\mathbb{E}[Y(1) - Y(0) \| T=1]\) | 受处理组的平均效应 |
| CATE | \(\mathbb{E}[Y(1) - Y(0) \| X=x]\) | 条件平均处理效应 |
| ITE | \(Y_i(1) - Y_i(0)\) | 个体处理效应(不可观测) |
根本问题:反事实不可观测——我们无法同时观察同一个体接受和不接受处理的结果。
5.2 估计方法
| 方法 | 适用条件 | 思路 |
|---|---|---|
| 随机实验 (RCT) | 可随机分配 | 金标准,直接比较 |
| 倾向性评分匹配 | 可忽略性假设 | 匹配相似个体 |
| 逆概率加权 (IPW) | 可忽略性假设 | 按接受处理的概率加权 |
| 工具变量 (IV) | 存在工具变量 | 利用外生变量识别因果 |
| 断点回归 (RDD) | 处理有阈值 | 阈值附近近似随机 |
| 双重差分 (DID) | 面板数据 | 处理前后、组间差异 |
5.3 Double Machine Learning
Chernozhukov et al.(2018)提出,结合机器学习和因果推断:
\[
\hat{\tau} = \frac{1}{n}\sum_{i=1}^{n}\left[\hat{Y}_i^{res} \cdot \hat{T}_i^{res} / \hat{T}_i^{res2}\right]
\]
步骤:
- 用 ML 模型拟合 \(Y \sim X\),得到残差 \(\hat{Y}^{res}\)
- 用 ML 模型拟合 \(T \sim X\),得到残差 \(\hat{T}^{res}\)
- 在残差上估计因果效应
- 使用交叉拟合(Cross-fitting)避免过拟合偏差
from econml.dml import DML
from sklearn.ensemble import GradientBoostingRegressor
dml = DML(
model_y=GradientBoostingRegressor(),
model_t=GradientBoostingRegressor(),
model_final=LinearRegression()
)
dml.fit(Y, T, X=X, W=W)
ate = dml.ate(X)
6. 因果发现
从数据中自动发现因果结构(学习因果图)。
6.1 基于约束的方法
| 算法 | 思路 | 输出 |
|---|---|---|
| PC 算法 | 条件独立性测试 | 部分DAG(CPDAG) |
| FCI | 允许隐变量 | PAG |
| GES | 贪心搜索最优图 | CPDAG |
PC 算法流程:
1. 从完全连接的无向图开始
2. 条件独立性测试:如果 X ⊥ Y | Z,删除 X-Y 边
3. 确定碰撞结构:X → Z ← Y
4. 传播方向(避免新碰撞和环)
6.2 基于得分的方法
搜索使得某种得分函数最大化的 DAG:
\[
\text{Score}(G) = \sum_{i} \text{Score}(X_i | \text{Pa}_G(X_i))
\]
常用得分:BIC、BGe、MDL。
6.3 基于函数模型的方法
假设特定的函数形式来识别因果方向:
- LiNGAM:线性非高斯无环模型
- ANM(Additive Noise Model):\(Y = f(X) + \epsilon\),若独立性成立则 \(X \to Y\)
7. 因果推理与机器学习的融合
| 应用 | 方法 | 作用 |
|---|---|---|
| 公平性 | 因果公平 | 识别歧视路径,而非仅统计偏差 |
| 可解释性 | 反事实解释 | "如果特征 X 不同,预测会变吗?" |
| 分布偏移 | 因果不变性 | 在环境变化下保持预测稳定 |
| 推荐系统 | 去混杂 | 区分用户偏好和曝光偏差 |
| 强化学习 | 因果世界模型 | 更高效的规划和迁移 |
参考资料
- "Causality" - Judea Pearl
- "The Book of Why" - Judea Pearl & Dana Mackenzie
- "Elements of Causal Inference" - Peters, Janzing, Schölkopf
- "Causal Inference: What If" - Hernán & Robins
- DoWhy / EconML 文档