上一章手动实现了 AIPW,展示了双重稳健估计量的核心逻辑:结果模型和处理模型各拴一根保险绳,只要一根不断,估计就是一致的。但第 6 章的两个子模型都是 logistic 回归,函数形式写死了线性加法结构。如果 APACHE 评分和血压之间存在复杂的交互效应,或者某些协变量对死亡率的影响呈阶梯型而非线性,logistic 回归捕捉不到这些模式,两个模型就可能同时犯错。双重稳健性在两个模型都错的时候失效,第 6 章结尾已经预告了这个风险。
本章的解决思路是用机器学习替换参数模型。机器学习算法擅长捕捉非线性关系和高维交互效应,用它们来拟合 AIPW 的两个子模型,可以降低函数形式错误的概率,让"至少一个模型对"的保障更加可靠。但机器学习嵌入因果推断并非直接替换就行,正则化和过拟合会引入新的偏倚问题。本章介绍三个工具来解决这些问题:Super Learner 提供灵活的集成预测框架,Double Machine Learning,简称 DML,用 Neyman 正交化和样本分裂消除正则化偏倚,Targeted Maximum Likelihood Estimation,简称 TMLE,用目标化的最大似然更新步骤把估计拉回参数空间内。
参数模型的天花板
前六章的所有模型都有一个共同特征:函数形式由研究者预先指定。回归调整用 ,G 计算用 logistic 回归预测反事实,IPW 用 logistic 回归估计倾向得分。这些模型假设协变量对结局或处理的影响是线性加法的,经过 logit 链接函数变换后保持可加性。
真实的生物医学数据很少满足这个假设。RHC 数据集有 28 个协变量,它们之间的交互模式多达数百种。APACHE 评分在 20 分以下可能对死亡率影响较弱,超过某个阈值后影响陡然增大。肾功能不全和肝功能不全同时存在时的效应可能远大于两者分别存在时的加总。这些非线性和交互效应在 logistic 回归中都被忽略了,除非研究者手动加入平方项和交互项。但 28 个变量的二阶交互就有 378 项,全部放进模型既不现实也会过拟合。
机器学习算法可以自动学习非线性关系和交互效应,不需要研究者手动指定函数形式。随机森林通过递归分裂捕捉阈值效应和交互,Lasso 在高维空间中做变量选择,神经网络逼近任意连续函数。把这些算法用在 AIPW 的两个子模型上,可以降低函数形式设错的概率,让双重稳健性的"两根保险绳"都更牢固。
但直接替换会遇到两个技术障碍。机器学习的预测性能依赖于交叉验证和正则化,而正则化会引入系统性偏差。用同一份数据既训练模型又做因果估计,训练集上的过拟合残差会传递到最终的 ATE 估计里。这两个障碍分别由 DML 和 TMLE 给出了解决方案,但在介绍它们之前,需要先理解 Super Learner——因为 DML 和 TMLE 都可以用 Super Learner 作为底层的预测引擎。
Super Learner:集成学习的通用框架
单个机器学习算法各有所长。随机森林处理交互效应好但外推能力弱,Lasso 在高维稀疏场景下表现优秀但假设了线性结构,逻辑回归偏差低但灵活性不足。研究者面临的问题是:该用哪个?如果选错了算法,预测性能就会打折扣,连带影响因果估计的质量。
Super Learner 的回答是:不选,全用。它把多个学习器组合成一个集成预测器,通过交叉验证给每个学习器分配最优权重,最终的预测是所有学习器的加权平均。
假设 library 里有三个算法:逻辑回归预测准确率 68%、随机森林 73%、Lasso 70%。SL 给随机森林最大权重 0.55,Lasso 0.30,逻辑回归 0.15,加权平均后准确率 74%。这就是 Super Learner 的基本逻辑:不选最好的单个算法,而是让所有算法按表现分配权重,集成后的预测优于任何单一算法。
给定 个候选学习器 和一个损失函数 ,Super Learner 的集成预测为
其中 是第 个学习器在去掉第 个观测后的交叉验证预测值。
(Polley & van der Laan 2007)
这个公式的核心思想是用交叉验证来评价每个学习器的真实预测能力,然后按表现分配权重。交叉验证避免了过拟合的干扰:每个观测的预测值都来自没有见过该观测的模型,所以预测误差是诚实的。表现好的学习器拿到大权重,表现差的权重趋近于零。
这个设计解决了"该选哪个算法"的纠结。van der Laan 等人在 2007 年证明了 Super Learner 具有渐近最优性:在候选学习器集合中,Super Learner 的预测风险渐近地不差于表现最好的那个单一学习器。换句话说,即使不知道哪个算法最合适,Super Learner 至少和最佳选择一样好。这个性质叫做 oracle 性质。比如在 RHC 数据上,如果 library 里最好的单个算法 AUC 是 0.72,Super Learner 的 AUC 会接近或超过 0.72。
在 RHC 数据上,用 SuperLearner 包拟合结果模型可以直观看到权重分配。下面的代码把逻辑回归、Lasso、随机森林和均值基准四个学习器组合起来。
set.seed(2026)
library(SuperLearner)
# 结果模型:预测 death180 在 rhc 和 28 个协变量条件下的概率
sl_out <- SuperLearner(
Y = d$death180_bin,
X = d |> select(rhc, all_of(covs)),
family = binomial(),
# 四个候选学习器:均值基准、逻辑回归、Lasso、随机森林
SL.library = c("SL.mean", "SL.glm", "SL.glmnet", "SL.ranger"),
cvControl = list(V = 5) # 5 折交叉验证评估各学习器
)
# 查看各学习器的交叉验证风险和集成权重
sl_out
Super Learner 的交叉验证结果显示,随机森林的预测风险最低,为 0.208,逻辑回归次之,为 0.212,Lasso 和逻辑回归几乎持平,均值基准的风险最高,为 0.250。最终的集成权重分配给了随机森林 0.686 和逻辑回归 0.314,Lasso 和均值基准的权重均为零。
这个权重分配传递了有用的信息:随机森林捕捉到了逻辑回归遗漏的非线性模式,但逻辑回归仍然保留了 31% 的权重,说明线性加法结构对这份数据的预测能力并非完全无用。Super Learner 的集成把两者的优势结合起来,预测风险低于任何单一算法。
简而言之,Super Learner 让多个算法各做预测,按交叉验证表现分配权重,取加权平均作为最终预测。
Super Learner 的提出者是 Mark van der Laan 和 Eric Polley,发表于 2007 年。它的理论根基是交叉验证选择器的渐近最优性,在统计学习理论中有严格证明。在因果推断领域,Super Learner 通常作为底层工具嵌入 AIPW、DML 和 TMLE 的子模型中使用,让研究者不必在"选逻辑回归还是随机森林"的问题上做赌注。
停下来想一想。 Super Learner 的权重是通过交叉验证分配的,表现好的算法拿大权重。如果 library 里所有算法表现都差不多,权重分配会是什么样?如果只放了一个算法,Super Learner 还有意义吗?理解了这两个极端情况,再往下看 DML 如何把 Super Learner 嵌入因果估计框架。
DML:正则化偏倚与 Neyman 正交化
Super Learner 提供了灵活的预测工具,但把它直接塞进 AIPW 公式并不能保证因果估计的有效性。问题出在正则化偏倚上。
机器学习算法为了避免过拟合,会对参数施加惩罚,把预测值往"保守方向"收缩。Lasso 把不重要的系数压到零,随机森林在分裂节点时做平滑。这种收缩在预测任务中是好事,但在因果估计中会制造系统性偏差。
用一个简化的例子来理解正则化偏倚的严重性。假设结果模型的偏差是 ,倾向得分模型的偏差是 。如果把机器学习直接塞进普通的因果估计框架,最终估计的偏差正比于 。每个子模型的小偏差直接加到了 ATE 估计上,4% 的偏差在风险差只有 4–5 个百分点的场景中是致命的。
Neyman 正交化做的事情是把偏差的叠加方式从加法变成乘法。同样是 和 ,正交化之后偏差变成 ,比加法的 0.04 缩小了 100 倍。这就是 DML 的核心技巧:不消除偏差,而是让两个偏差互相"抵消"到可以忽略的量级。
一个关于目标参数 的矩条件 称为 Neyman 正交的,如果它对辅助参数 的 Gateaux 导数在真值处为零:
(Chernozhukov et al. 2018)
这个数学条件的实际含义就是前面数字例子展示的效果:辅助模型的偏差对目标参数的影响从一阶降到了二阶。机器学习的收缩偏差通常以 到 的速度趋近于零,乘积之后达到 ,恰好满足渐近正态推断所需的速度。
AIPW 的得分函数恰好满足 Neyman 正交条件。第 6 章的公式中,偏差项正比于 ,这就是一个乘积。所以 AIPW 本身已经具备了 Neyman 正交性。但还有一个问题没解决:如果用同一份数据既训练机器学习模型又计算 AIPW 得分,训练集上的过拟合会让残差偏小,乘积项的期望不再为零。
将样本随机分成两半。用前一半训练辅助模型 ,用后一半计算因果估计的得分 。训练数据和估计数据完全分开。
样本分裂的逻辑类似于考试中的"出题人不批自己的卷子"。训练模型的数据和计算因果估计的数据分开,切断了过拟合通道。
交叉拟合是样本分裂的改进版。将样本随机等分为 折。对第 折中的每个观测 ,用剩余 折训练辅助模型 ,然后在第 折上计算得分 。最终估计为所有折得分的均值。
交叉拟合的好处是每一折数据都轮流充当"估计集",避免了简单分裂只用一半数据做估计导致的效率损失。
把 Neyman 正交化和交叉拟合结合起来,就是 DML 的完整框架。Chernozhukov 等人在 2018 年的论文中系统地提出了这套方法,证明了在机器学习估计辅助参数的条件下,DML 估计量是 一致且渐近正态的。这篇论文发表在 The Econometrics Journal,在计量经济学界产生了深远影响,因为它给出了一套在机器学习年代仍然合法的因果推断框架。
跳过样本分裂直接把机器学习塞进 AIPW,在有限样本中几乎一定会有偏。偏差的来源是过拟合残差:机器学习模型在训练集上的残差系统性地偏小,导致 AIPW 得分中的校正项 低估了真实残差。这个偏差在 Lasso 等正则化方法中尤为严重,因为正则化把系数往零的方向收缩,训练集上的残差比测试集上的更小。诊断方法是把 DML 的 n_folds 从 5 改成 1,比较分裂和不分裂的估计差异。如果差异显著,说明过拟合偏倚在当前数据中是实质性的。
DML 在 RHC 数据上的实现
本章继续使用第 1 章介绍的 RHC 数据集 。DML 的 R 实现使用 DoubleML 包,它基于 mlr3 生态系统,支持多种机器学习后端。下面的代码用随机森林作为两个子模型的学习器,5 折交叉拟合,重复 3 次取平均以增加稳定性。
set.seed(2026)
library(DoubleML); library(mlr3); library(mlr3learners)
library(data.table)
# DoubleML 要求 data.table 格式
dt <- as.data.table(d |> select(death180_bin, rhc, all_of(covs)))
dml_data <- DoubleMLData$new(
data = dt,
y_col = "death180_bin", # 结局
d_cols = "rhc", # 处理
x_cols = covs # 28 个协变量
)
# IRM:Interactive Regression Model,适用于二分类处理
# ml_g 估计 E[Y|X],ml_m 估计 P(A=1|X)
dml_irm <- DoubleMLIRM$new(
data = dml_data,
ml_g = lrn("classif.ranger", predict_type = "prob", num.trees = 500),
ml_m = lrn("classif.ranger", predict_type = "prob", num.trees = 500),
score = "ATE",
n_folds = 5, # 5 折交叉拟合
n_rep = 3 # 重复 3 次取平均,减小随机分裂的波动
)
dml_irm$fit()
dml_irm$summary()
print(dml_irm$confint())
DML 估计的边际风险差为 0.040,标准误 0.013,,,95% CI 为 。置信区间不包含零,结论与前六章一致:接受 RHC 的患者 180 天死亡率显著高于不接受者,效应大小约 4.0 个百分点。
DML 的估计 0.040 比手动 AIPW 的 0.044 略低,接近 IPW 的 0.032。标准误 0.013 与 AIPW 的 0.014 相近。3 次重复交叉拟合的设计让估计对随机折划分的敏感性降低,增加了结果的可信度。
简而言之,DML 在 AIPW 的基础上加两个技巧:Neyman 正交化让偏差从加法变乘法,样本分裂让机器学习的过拟合不污染因果估计。
TMLE:从预测到目标化估计
DML 用 Neyman 正交化加样本分裂解决了正则化偏倚,但它的估计量仍然是 AIPW 形式的线性组合,没有内置参数空间约束。二分类结局的风险差应该在 之间,AIPW 和 DML 都可能在极端情况下给出超出这个范围的估计。第 6 章结尾提到的"出界问题"在小样本或倾向得分极端的数据中并不罕见。
TMLE 的设计动机就是解决出界问题,同时保留双重稳健性和半参数效率。它的核心思想是:先用机器学习拿到一个初始估计,然后通过一步受约束的最大似然更新把初始估计"微调"到正确的目标参数上。用瞄准的比喻来说,初始估计确定了大致方向,目标化更新步骤是轻微转动瞄准镜让十字线对准靶心,整个过程在似然函数的框架内完成,自动保证估计值不会跑出合理范围。
TMLE 的"微调"具体是这样操作的:拿初始预测值和倾向得分,构造一个特殊的变量,用它做一个小小的 logistic 回归来修正初始预测。因为修正在 logit 尺度上完成,修正后的预测永远在 0 到 1 之间,不会像 AIPW 那样越界。整个修正只估计一个参数 ,计算量极小,但效果是把初始预测"推"向正确的因果估计方向。
TMLE 的更新步骤在初始估计 的基础上拟合一个浮动参数 :
通过最大似然估计拟合,使得更新后的 满足 AIPW 得分函数的零偏条件。
(van der Laan & Rubin 2006)
这个公式需要拆解。 是结果模型的初始预测,可以来自 Super Learner 或任何机器学习算法。目标化更新的核心思想是在 logit 尺度上对初始预测做一步微调,让估计朝着正确的因果参数方向移动。因为修正在 logit 尺度上完成,更新后的预测值 仍然在 之间,解决了出界问题。 只是一个标量,通过标准的 logistic 回归拟合,计算量极小。
公式中的 称为聪明协变量。它的形式来自半参数效率理论中的有效影响函数,作用是引导更新方向朝着目标参数 ATE 移动。处理组个体的 值为 ,对照组为 ,倾向得分越极端的个体, 的绝对值越大,更新步骤对它们的修正幅度也越大。
TMLE 的双重稳健性来自更新步骤的设计。更新后的 满足 ,这恰好是 AIPW 得分函数的零偏条件。如果倾向得分模型正确, 构造正确,这个条件保证偏差为零,即使初始结果模型有偏。如果初始结果模型正确, 已经接近真值, 会很小,更新几乎不改变估计,偏差仍然为零。
van der Laan 与 Rubin 在 2006 年提出 TMLE,后续 Gruber & van der Laan 2012 进一步发展了它的实用版本。TMLE 在流行病学领域获得了广泛采纳,因为它的表述更接近统计学家熟悉的"影响函数加似然"语言,而且 tmle 包提供了开箱即用的实现。DML 在计量经济学界更受欢迎,因为 Neyman 正交化和样本分裂的表述与计量经济学训练更契合。两者解决的是同一个问题:如何在使用机器学习估计辅助参数的同时,保证目标参数的渐近推断有效。
TMLE 在 RHC 数据上的实现
TMLE 的 R 实现使用 tmle 包,它内置了 Super Learner 接口,可以直接指定学习器库。下面的代码用逻辑回归、Lasso、随机森林和均值基准四个学习器拟合结果模型和倾向得分模型。
set.seed(2026)
library(tmle); library(SuperLearner)
SL_lib <- c("SL.glm", "SL.glmnet", "SL.ranger", "SL.mean")
tmle_fit <- tmle(
Y = d$death180_bin,
A = d$rhc,
W = d |> select(all_of(covs)),
Q.SL.library = SL_lib, # 结果模型用 Super Learner
g.SL.library = SL_lib, # 倾向得分模型也用 Super Learner
family = "binomial" # 二分类结局
)
tmle_fit
TMLE 估计的边际风险差为 0.088,标准误 0.0075,95% CI 为 。处理组的边际死亡概率估计为 0.558,对照组为 0.469。置信区间远离零,,结论同样是 RHC 增加了 180 天死亡率。
TMLE 的点估计 0.088 比 DML 的 0.040 和 AIPW 的 0.044 都大。这个差异有两层原因。TMLE 的目标化更新步骤在 logit 尺度上操作,更新方向和幅度受聪明协变量 引导,与 DML 直接在线性尺度上做残差校正的路径不同,有限样本中两者可以给出不同的点估计。TMLE 的标准误 0.0075 也比 DML 的 0.013 小了近一半,这反映了 TMLE 在二分类结局上利用了似然结构的额外效率。但更窄的置信区间也意味着如果模型设定存在问题,TMLE 的覆盖率可能偏低。
两种方法的差异提供了有价值的敏感性信息。如果 DML 和 TMLE 给出一致的估计,对结论的信心更强。当两者产生分歧时,应该检查学习器的配置是否一致、倾向得分的极端值处理是否相同、交叉拟合的折数是否匹配。在本例中,DML 使用纯随机森林而 TMLE 使用 Super Learner 集成,学习器配置的差异是分歧的一个来源。
简而言之,TMLE 先用机器学习做初始预测,然后用一步 logistic 回归微调,让估计既满足双重稳健性又不会跑出 0 到 1 的合理范围。
DML 和 TMLE 在同一份数据上给出不同的点估计是正常现象,原因是两者的目标化路径不同。DML 在线性尺度上用 Neyman 正交得分做残差校正,TMLE 在 logit 尺度上做最大似然更新。当样本量足够大且两个子模型都拟合得很好时,两者会收敛到同一个值。但在有限样本中,以下因素可能导致分歧:学习器配置不同、交叉验证折数不同、倾向得分截断方式不同。遇到分歧时的诊断策略是固定学习器和折数设置,让两种方法在尽可能一致的条件下比较,剩余的差异才可归因于方法本身的有限样本行为。
DML 与 TMLE 在同一数据上的对比
把前六章的参数方法和本章的两种 ML 增强方法放在一起:五种方法的点估计全部落在正值区域,方向完全一致:RHC 增加了 ICU 患者的 180 天死亡率。
参数方法的三个估计落在 之间,DML 的 0.040 也在这个范围内。TMLE 的 0.088 高出一倍,但置信区间非常紧凑。五种方法尽管点估计不同,但所有置信区间都不包含零,定性结论高度一致。方法之间的数值差异恰好说明了因果估计对建模选择的敏感性,这也是第 8 章敏感性分析要系统探讨的问题。完整方法对比森林图见 PDF 全文。
DML 更适合以下场景:协变量维度很高、处理变量可能是连续的、研究者熟悉计量经济学的矩方法框架。TMLE 更适合以下场景:结局是有界的、研究者需要估计值严格落在合理范围内、样本量中等且需要利用似然结构的效率增益。在二分类处理和二分类结局的标准设定下,两者都适用,选择更多取决于学科传统和软件习惯。
累积对比表
表 7·1 方法演进对比表,截至第 7 章
| 方法 | ATE 估计 | 95% CI | 核心假设 |
|---|---|---|---|
| 回归调整 | OR = 1.34 | [1.18, 1.52] | 模型设定正确 + 可交换性 + 正值性 |
| G 计算 | RD = 0.052 | [0.027, 0.082] | 结果模型设定正确 + 可交换性 + 正值性 |
| IPW | RD = 0.032 | [0.005, 0.064] | 倾向得分模型正确 + 可交换性 + 正值性 |
| AIPW | RD = 0.044 | [0.017, 0.072] | 两个模型至少一个正确 + 可交换性 + 正值性 |
| DML | RD = 0.040 | [0.014, 0.065] | Neyman 正交 + 交叉拟合 + 可交换性 + 正值性 |
| TMLE | RD = 0.088 | [0.074, 0.103] | 目标化更新 + SL + 可交换性 + 正值性 |
六种方法在方向上完全一致:RHC 增加了 ICU 患者的 180 天死亡率。回归调整报告的是 OR 尺度,与后续方法的风险差尺度不直接可比,但 OR > 1 和 RD > 0 传递的结论相同。参数方法的三个风险差估计都集中在 3–5 个百分点,DML 的 4.0 个百分点也在这个范围内。TMLE 的 8.8 个百分点偏高,但它的置信区间最窄。
跨方法的一致性进一步增强了因果结论的可信度。每种方法依赖不同的假设和建模路径,但都指向同一个方向,说明 RHC 的不利效应不太可能是某种特定建模选择的产物。下一章将用敏感性分析来量化"如果存在未测量的混杂,需要多强才能推翻这个结论",给这张累积对比表加上最后一层稳健性检验。
本章知识地图
表 7·2 第 7 章核心概念与常见误解
| 核心概念 | 核心内容 | 常见误解 | 为什么错 |
|---|---|---|---|
| Super Learner | 交叉验证加权的集成预测器,具有 oracle 最优性 | Super Learner 可以直接输出因果效应 | Super Learner 只是预测工具,因果识别仍需 AIPW/DML/TMLE 的框架 |
| 正则化偏倚 | 机器学习的收缩惩罚在因果估计中引入系统性偏差 | 预测越准因果估计就越准 | 预测准确度和因果估计的无偏性是两个不同目标,正则化为前者牺牲了后者 |
| Neyman 正交化 | 让辅助模型偏差以乘积形式进入,从加法 0.04 降到乘积 0.0004 | 正交化让偏差消失 | 正交化让偏差从一阶降到二阶,偏差仍然存在只是量级大幅缩小 |
| 样本分裂与交叉拟合 | 训练和估计用不同子样本,切断过拟合传导通道 | 分裂损失了一半数据的效率 | 交叉拟合让每个观测都参与估计,效率损失可忽略 |
| TMLE 目标化更新 | 在 logit 尺度上用聪明协变量做一步最大似然修正 | TMLE 是一种全新的估计方法 | TMLE 在渐近层面等价于 AIPW,区别在于有限样本中的参数空间约束和效率 |
| DML vs TMLE 分歧 | 两者在有限样本中可能给出不同点估计 | 分歧意味着某种方法错了 | 分歧来自目标化路径和学习器配置的差异,大样本下两者收敛 |