

预测模型给得再准,也回答不了"如果我改了 X 会怎样"。这个问题只有因果推理能接。这篇把因果推理的两套主流范式和一个工程上可用的结构学习算法讲透。

相关性有三种来历,只有一种可靠

观测数据里的关联,可能来自三种机制:真实的因果链、混淆变量(A 和 B 都被 C 驱动)、以及样本选择偏差。机器学习模型对这三种一视同仁地学,所以训练集上表现再好,一旦分布变化就崩——因为模型学到的是"共现",不是"机制"。

典型反例是肤色与犯罪率的伪关联:收入水平作为混淆变量横在中间,控制收入后做组间对照,才能判断肤色本身有没有直接效应。工程上的推论很实际:凡是决策会影响真实世界的场景(信贷、医疗、定价),上线前至少要问一遍"这个特征和标签之间有没有混淆变量"。

两套范式,两种适用场景

结构因果模型(SCM)走的是"先画图再推理"路线:把变量间的因果方向画成有向无环图,用后门准则、前门准则处理混淆,然后在图上做效应估计。它的问题也直白——完整的因果图在观测研究里几乎画不出来,全靠专家知识补图,容易退回"专家系统"时代的老路。

潜在结果框架反其道而行:不要求知道全图,只盯着一个处理变量(比如"是否接种疫苗"),估计它对结果的效应。代价是要假设所有混淆因子都已被观测到——这个假设无法从数据本身验证,只能靠领域知识背书。两套范式选型口诀:变量少、机制清楚用 SCM;只关心某个干预的效应、混淆项可控用潜在结果框架。

结构学习:让图从数据里长出来
图画不出来怎么办?因果发现(causal discovery)就是答案:从样本数据里反推变量间的因果结构,找那棵最能解释数据生成的 DAG。线性高斯场景下,这等价于找一组权重矩阵 W,让每个变量能被它的父节点最优重构。
这个组合优化问题长期无解,直到 2018 年 NO TEARS 论文把它连续化:给 DAG 结构加一个光滑的环约束函数,配合稀疏正则(L1/L2),直接在整个有向无环图空间里做梯度下降。工程意义在于——它把结构学习变成了标准机器学习流程,scikit-learn 用户也能上手。
增量提醒(原文未提的落地坑):NO TEARS 的原始实现假设线性关系与高斯噪声,现实数据两条常不满足。实操验证方法:先对变量做残差正态性检验(Shapiro-Wilk),p 值显著小于 0.05 时应切换到非线性变体(如 NOTEARS-MLP),否则学出来的"因果图"方向可能整棵颠倒。另外,样本量小于变量数的 10 倍时,结构边会出现大量假阳性,此时宁可先做变量筛选再学结构。
判定与验收
因果模型上线前,两条验收线:一是反事实一致性——对已知有干预效果的历史案例回放,模型估计的效应方向和量级是否与真实记录吻合;二是分布外稳定性——把训练期没有的新促销活动数据喂进去,基于因果特征 subgraph 的模型性能衰减应显著小于纯关联模型。两条都过,才值得把因果结论写进决策链。

评论0