机器学习与因果推断

第十一讲:双重机器学习——高维控制与去偏估计

陈志远

中国人民大学商学院

2026-06-02

上节课回顾

因果森林与异质性分析

  • BLP / GATES 检验:验证异质性是否真实存在
  • TOC / Qini 曲线:评估 CATE 模型的排序性能
  • 变量重要性:识别驱动异质性的关键特征
  • 政策树:将 CATE 转化为可解释的决策规则

本节课核心问题

  • 当控制变量维度很高时,如何进行有效的因果推断?
  • 如何同时利用 ML 的灵活性和传统推断的严谨性?

从异质性到高维控制

从 CATE 到 ATE:另一类问题

因果森林回答的是“效应对谁更大?”

但更基本的问题是:当需要控制的混杂变量 很多 时,如何准确估计 平均处理效应

典型场景

  • 医学研究:控制上百种基因表达量
  • 营销归因:控制用户画像的数百个特征
  • 政策评估:控制地区层面的多种经济社会指标

从预测到因果——高维控制的挑战

高维数据的因果挑战

设定:估计处理 D 对结果 Y 的因果效应 \theta_0,同时需要控制大量混杂变量 X

Y = \theta_0 D + g_0(X) + U

挑战

  • p(控制变量数)接近甚至超过 n(样本量)时,OLS 不可用
  • 即使 p < n,高维 OLS 估计不稳定,置信区间过宽
  • g_0(X) 可能是 非线性 的,线性 OLS 存在设定偏误

两种工具的局限

方法 优势 用于因果推断的问题
传统 OLS \sqrt{n} 一致性,有效推断 无法处理 p \gg n,非线性混杂
机器学习 灵活建模,高维预测 正则化导致偏差,无有效推断

核心思想

能否 结合两者?用 ML 灵活地控制高维混杂,同时保留传统方法的 \sqrt{n} 推断能力?

这正是 双重机器学习Double/Debiased Machine Learning, DML)的目标。

朴素想法:直接用 ML

天真的两步策略

  1. 用 LASSO / 随机森林估计 \hat{g}(X) \approx g_0(X)
  2. 计算残差 \tilde{Y} = Y - \hat{g}(X)
  3. 用 OLS 回归 \tilde{Y}D,得到 \hat{\theta}

问题

  • 正则化偏差:ML 的偏差通过 DX 的相关性污染 \hat{\theta}
  • 过拟合偏差:样本内预测过拟合,使 \hat{g}(X) 与误差项相关
  • 结果:\hat{\theta} 有偏且 置信区间不可靠

部分线性模型

部分线性模型(PLM)

Partially Linear Model (Robinson, 1988)

Y_i = \theta_0 D_i + g_0(X_i) + U_i, \quad E[U_i | D_i, X_i] = 0

D_i = m_0(X_i) + V_i, \quad E[V_i | X_i] = 0

  • \theta_0:感兴趣的 因果参数(低维,通常是标量)
  • g_0(X_i)混杂函数(高维,可以非线性——是冗余参数(Nuisance Parameter))
  • m_0(X_i) = E[D_i|X_i]倾向得分函数
  • V_i:处理中不能被 X_i 解释的“外生变异”

FWL 定理的启示

Frisch-Waugh-Lovell 定理

在线性回归中,\theta_0 等价于对残差的回归:

\tilde{Y}_i = \theta_0 \tilde{D}_i + \tilde{U}_i

其中 \tilde{Y} = Y - \text{proj}_X Y\tilde{D} = D - \text{proj}_X D

非参数推广:Robinson (1988) 的关键洞见

Y_i - E[Y_i|X_i] = \theta_0 (D_i - E[D_i|X_i]) + U_i

如果我们知道 E[Y|X]E[D|X],只需回归残差就能恢复 \theta_0

问题E[Y|X]E[D|X] 未知,需要用 ML 估计。

Python 演示:OLS 的偏差

from sklearn.linear_model import LinearRegression, LassoCV
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import cross_val_predict

# ===== 模拟数据:部分线性模型 =====
n = 2000
p = 10
X = np.random.normal(0, 1, (n, p))

# 非线性混杂函数 g₀(X):影响结果 Y
g0 = X[:, 0]**2 + 2 * np.sin(X[:, 1]) + 0.5 * X[:, 2] * X[:, 3]

# 处理方程 m₀(X):影响处理分配 D
m0 = 0.8 * X[:, 0] + 0.5 * X[:, 1] - 0.3 * X[:, 2]

# 二值处理变量(受 X 混杂)
D = (m0 + np.random.normal(0, 1, n) > 0).astype(float)

# 真实处理效应
theta_0 = 2.0

# 观测结果
Y = theta_0 * D + g0 + np.random.normal(0, 1, n)

# ===== 预计算 OLS =====
DX = np.column_stack([D.reshape(-1, 1), X])
ols = LinearRegression().fit(DX, Y)
theta_ols = ols.coef_[0]
# OLS 回归:以线性方式控制 X
print(f"真实处理效应: theta_0 = {theta_0:.3f}")
print(f"OLS(线性控制):  hat_theta = {theta_ols:.3f}")
print(f"偏差:              {theta_ols - theta_0:+.3f}")
print()
print("OLS 存在设定偏误:")
print("  g_0(X) 包含 X^2 和 sin(X) 等非线性项,")
print("  线性控制无法完全消除混杂")
真实处理效应: theta_0 = 2.000
OLS(线性控制):  hat_theta = 2.011
偏差:              +0.011

OLS 存在设定偏误:
  g_0(X) 包含 X^2 和 sin(X) 等非线性项,
  线性控制无法完全消除混杂

Neyman 正交性——去偏的关键

偏差的两个来源

来源一:正则化偏差

ML 模型(如 LASSO)为避免过拟合而引入正则化,使 \hat{g}(X) 有系统性偏差

\hat{g}(X) = g_0(X) + \Delta_g(X)

来源二:过拟合偏差

用全部数据训练 ML 又在同一数据上预测 → \hat{g}(X_i)U_i 不独立

关键问题

\Delta_gD 相关时(几乎必然),\hat{\theta} 的偏差为 O(n^{-1/2}) 量级,无法忽略

Neyman 正交条件

定义 得分函数(Score Function, 矩条件)\psi(W; \theta, \eta) = 0,其中 \eta = (\ell_0, m_0) 是冗余参数

Neyman 正交性

如果得分函数满足

\frac{\partial}{\partial \eta} E[\psi(W; \theta_0, \eta)] \Big|_{\eta = \eta_0} = 0

\hat{\eta}一阶估计误差 不影响 \hat{\theta} 的一致性

直觉:正交条件确保 \hat{\theta} 对冗余参数的估计误差“不敏感”

“双重”的含义

标准矩条件(非正交)

\psi_{naive} = (Y - \ell(X) - \theta D) \cdot D

→ 对 \hat{\ell} 的误差敏感,因为 DX 相关

Neyman 正交矩条件

\psi_{DML} = \big(Y - \ell(X) - \theta(D - m(X))\big) \cdot (D - m(X))

双重残差化

  • 第一重:从 Y 中去除 X 的影响 → \tilde{Y} = Y - \hat{\ell}(X)
  • 第二重:从 D 中去除 X 的影响 → \tilde{D} = D - \hat{m}(X)
  • 回归 \tilde{Y}\tilde{D}:正则化偏差被消除

直观理解:为什么需要“双重”

类比:分离信号与背景

X 是“共同背景噪声”,同时影响 YD。DML 的双重残差化就是:

  1. 去掉 Y 中来自 X 的背景 → 只剩 D 的效应 + 随机波动
  2. 去掉 D 中来自 X 的背景 → 只剩“真实的处理变异”
  3. 用“纯净的 D 变异”解释“纯净的 Y 变异” → 因果效应 \theta_0

只做一重(只残差化 Y)会怎样?

  • \hat{\ell}(X) 的偏差 \Delta_\ellD 相关(因为 D 依赖 X
  • 偏差 \approx E[\Delta_\ell \cdot D] \neq 0,无法消除
  • 残差化 D 后,\tilde{D}\Delta_\ell 不相关 → 偏差消失!

DML 算法框架

交叉拟合(Cross-Fitting)

为什么不能用全样本训练?

样本内 ML 预测过拟合:\hat{g}(X_i) 会 “记住” 个体异质性 U_i,导致残差被扭曲

交叉拟合策略

将数据随机分成 K 折(通常 K = 5)。对每一折 k

  1. 除第 k 折之外的数据 上训练 \hat{\ell}_{-k}\hat{m}_{-k}
  2. k 折数据 上计算残差

\tilde{Y}_i = Y_i - \hat{\ell}_{-k}(X_i), \quad \tilde{D}_i = D_i - \hat{m}_{-k}(X_i), \quad i \in I_k

DML 算法步骤

输入:数据 \{(Y_i, D_i, X_i)\}_{i=1}^n,ML 学习器,折数 K

  1. 将样本随机分成 K 折:I_1, I_2, \ldots, I_K

  2. 对每折 k = 1, \ldots, K

    • I_{-k} 上拟合 \hat{\ell}_{-k}(预测 Y)和 \hat{m}_{-k}(预测 D
    • 计算残差:\tilde{Y}_i = Y_i - \hat{\ell}_{-k}(X_i)\tilde{D}_i = D_i - \hat{m}_{-k}(X_i)
  3. DML 估计量:

\hat{\theta}_{DML} = \frac{\displaystyle\sum_{k=1}^K \sum_{i \in I_k} \tilde{D}_i \tilde{Y}_i}{\displaystyle\sum_{k=1}^K \sum_{i \in I_k} \tilde{D}_i^2}

渐近性质

定理 (Chernozhukov et al., 2018)

在适当条件下,DML 估计量满足:

\sqrt{n}(\hat{\theta}_{DML} - \theta_0) \xrightarrow{d} N(0, \sigma^2)

其中 \sigma^2 = \frac{E[\tilde{D}^2 U^2]}{(E[\tilde{D}^2])^2}

关键条件

  • 乘积率条件\|\hat{\ell} - \ell_0\| \cdot \|\hat{m} - m_0\| = o(n^{-1/2})
  • 两个模型 不需要单独 达到 n^{-1/2} 收敛率
  • 只要误差之积 足够小即可——对 ML 学习器要求宽松

例子

\hat{\ell}\hat{m} 各以 n^{-1/4} 的速率收敛,乘积率为 n^{-1/2},满足条件。随机森林、LASSO、神经网络等常见 ML 方法通常满足此条件。

Python 实现

Python: LinearDML 估计

from econml.dml import LinearDML

dml = LinearDML(
    model_y=RandomForestRegressor(
        n_estimators=200, max_depth=5, random_state=42),
    model_t=RandomForestRegressor(
        n_estimators=200, max_depth=5, random_state=42),
    cv=5, random_state=42
)
dml.fit(Y, D, W=X)

theta_dml = float(dml.const_marginal_effect())
ci = dml.const_marginal_effect_interval(alpha=0.05)
ci_lower, ci_upper = float(ci[0]), float(ci[1])

print(f"DML 估计值:  {theta_dml:.4f}")
print(f"95% 置信区间: [{ci_lower:.4f}, {ci_upper:.4f}]")
print(f"真实值 theta_0 = {theta_0} 在 CI 内: "
      f"{'Yes' if ci_lower <= theta_0 <= ci_upper else 'No'}")
DML 估计值:  1.9124
95% 置信区间: [1.7908, 2.0341]
真实值 theta_0 = 2.0 在 CI 内: Yes

估计结果对比

理解 DML:手动双重残差化

# Step 1: 残差化 Y(交叉拟合)
Y_hat = cross_val_predict(RandomForestRegressor(
    n_estimators=200, max_depth=5, random_state=42),
    X, Y, cv=5)
Y_tilde = Y - Y_hat

# Step 2: 残差化 D(交叉拟合)
D_hat = cross_val_predict(RandomForestRegressor(
    n_estimators=200, max_depth=5, random_state=42),
    X, D, cv=5)
D_tilde = D - D_hat

# Step 3: OLS 回归残差
theta_manual = np.sum(D_tilde * Y_tilde) / np.sum(D_tilde**2)
print(f"手动 DML 估计: {theta_manual:.4f}")
print(f"econml DML:    {theta_dml:.4f}")
print(f"真实值:         {theta_0:.4f}")
手动 DML 估计: 1.9305
econml DML:    1.9124
真实值:         2.0000

双重残差化可视化

推荐工具

提示

Python

  • econml:LinearDML, DML, CausalForestDML
  • doubleml:DoubleMLPLR, DoubleMLIRM(推荐)
  • scikit-learn:交叉验证、ML 学习器

提示

R

  • DoubleML:基于 mlr3 生态系统
  • grf:forest-based DML(内置交叉拟合)
  • hdm:高维稀疏模型,Double Selection

本讲要点(一)

  1. 高维控制
    • 传统 OLS 无法处理 p \gg n;ML 能预测但不能直接做因果推断
  2. 部分线性模型
    • Y = \theta_0 D + g_0(X) + U,目标是估计低维参数 \theta_0
    • Robinson 偏微分思想:去掉条件期望后回归残差
  3. 朴素 ML 插件的失败
    • 正则化偏差 + 过拟合偏差使 \hat{\theta} 有偏且推断无效

本讲要点(二)

  1. Neyman 正交性
    • 正交矩条件对冗余参数的一阶估计误差免疫
    • 双重残差化同时去除 YDX 的影响
  2. 交叉拟合
    • K 折样本分割避免过拟合偏差
    • 确保预测残差与误差项独立
  3. DML 的渐近性质
    • \sqrt{n} 一致性和渐近正态性
    • 乘积率条件:两个学习器误差之积达到 n^{-1/2} 即可

下节课预告

第十二讲:前沿专题——因果推断与 AI

  • 因果推断在大语言模型中的应用
  • AI 赋能的因果效应估计
  • 因果推断未来的研究方向
  • 课程总结与项目准备

提示

核心展望

从经典因果推断方法到现代机器学习框架,我们已经拥有了完整的工具箱。因果推断与人工智能的融合正在重塑社会科学研究、商业决策与政策制定。

最重要的是学会在正确的场景选择正确的工具

参考文献

  • Chernozhukov, V., Chetverikov, D., Demirer, M., Duflo, E., Hansen, C., Newey, W., & Robins, J. (2018). Double/Debiased Machine Learning for Treatment and Structural Parameters. The Econometrics Journal, 21(1), C1–C68.

  • Robinson, P.M. (1988). Root-N-Consistent Semiparametric Regression. Econometrica, 56(4), 931–954.

  • Bach, P., Chernozhukov, V., Kurz, M., & Spindler, M. (2022). DoubleML: An Object-Oriented Implementation of Double Machine Learning in Python. Journal of Machine Learning Research, 23(53), 1–6.

  • Chernozhukov, V., Hansen, C., Kallus, N., Spindler, M., & Syrgkanis, V. (2024). Applied Causal Inference Powered by ML and AI. causalml-book.org

  • Athey, S., & Imbens, G.W. (2019). Machine Learning Methods That Economists Should Know About. Annual Review of Economics, 11, 685–725.

  • Angrist, J.D. & Pischke, J.S. (2009). Mostly Harmless Econometrics. Princeton University Press.