想象你是一家快递公司的调度员。客户下单:“如果我把中央大街改造成单行道(干预 do(X)=1),事故率会不会下降(结果 Y)?” 可你手里只有普通车辆的 GPS 行驶记录(观察数据),中央大街从来没有单向过。你翻开城市地图——这是一张因果图,街道是变量,箭头是因果方向。do-演算的三条规则,就像交通局颁布的三种“路权操作”:允许临时加装调流标志、允许把快递专用道改回普通道、允许把普通道临时升格为专用道。而 do-演算完备性 则是一个承诺:只要地图上真的存在一条从“干预世界”通往“观察世界”的合法路线,这三条路权规则就一定能带你找到它;如果三条规则都走不通,那就说明根本不存在这样的路线——该因果效应不可识别。这个承诺让因果推断从“碰运气”变成“查地图”。
对 AI 从业者而言,do-演算完备性是因果推断的“判定定理”:它能告诉你哪些因果问题可以用观察数据回答、哪些必须做实验,从而避免在政策评估、医学研究和商业决策中得出虚假结论。
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
问题源起
快递调度员小周遇到的难题,是所有因果推断问题的起点:客户要的是“改造街道后”的事故率(干预分布),小周手里只有“没改造时”的车辆 GPS 记录(观察分布)。两者之间的差距,就是混杂因素造成的偏差。比如事故多发路段的司机本来就开车谨慎,这会让“单行道导致事故率下降”的结论失真。小周需要一张地图、一套路权规则,才能从普通车流推算快递专用道的效果。
从数学上讲,干预分布写作 $P(y \mid \text{do}(x))$,观察分布写作 $P(y \mid x)$。两者的关键区别在于:观察是在原有因果结构下“看到”数据,而干预是“动手改”因果结构。do-演算研究的正是:给定一张因果图(道路地图),如何把干预表达式一步步改写成只含观察概率的表达式。这项工作叫“识别”(identification),它与“估计”(estimation)不同——识别问的是“理论上能不能算出来”,估计问的是“数据够不够、算法准不准”。
正式地说,一个因果效应 $P(y \mid \text{do}(x))$ 是可识别的,当且仅当它能被观察联合分布的某个函数唯一确定:
回到小周的场景:图的每个箭头都代表一条“因果道路”。可识别性告诉他,哪些配送任务仅凭 GPS 记录就能回答,哪些必须亲自去做路测(随机实验)。这就是完备性讨论的起点——地图先到手,路线才有意义。
- 干预分布 $P(y \mid \text{do}(x))$把变量 $X$ 强行设置为 $x$ 后,$Y$ 的概率分布。这是小周要回答的“改造后事故率”。
- 观察分布集合 $\{P(v_1), \ldots, P(v_n)\}$因果图中所有变量的观察联合分布。这是小周手里能统计到的 GPS 记录。
- 存在函数 $f$$f$ 是一个对所有与图一致的分布都成立的确定性规则,不随具体数据波动。
- 等价关系 $\iff$识别问题被严格归结为“是否存在这个 $f$”,从而与具体的估计方法解耦。
三条规则
小周拿到了交通局颁布的《路权转换手册》,里面只有三条规则。每条规则都像一个“合法转向”,在不破坏因果结构的前提下,把干预表达式向观察表达式推进一步。规则1说:如果 $Z$ 与 $Y$ 在删掉 $X$ 入边的图中条件独立,那么 $Z$ 上的干预符号可以删掉或插入。规则2说:在删掉 $X$ 入边且指向 $Z$ 的边后,如果条件独立成立,那么“行动”($\text{do}(z)$)和“观察”($z$)可以互换。规则3说:在删掉 $X$ 入边及不受 $X$ 影响的 $Z$ 节点的入边后,如果条件独立成立,那么观察变量 $Z$ 可以被“升格”为干预变量。
小周把这本手册贴在调度台前:任何化简动作,必须是这三条规则中的某一条。规则不多,但完备性定理即将告诉他——这三条已经够了。
- 干预记号 $\text{do}(x)$表示对 $X$ 实施干预,就像道路施工队把中央大街改成单行道。
- 条件独立 $(Y \perp Z \mid X, W)$给定 $X$ 和 $W$ 后,$Y$ 与 $Z$ 互不影响。这相当于两条路之间没有“暗巷”相通。
- 图 $G_{\overline{X}}$删除 $X$ 所有入边后的因果图。表示“去掉指向 $X$ 的混杂来源”。
- 规则2的图 $G_{\overline{X}\underline{Z}}$在 $G_{\overline{X}}$ 基础上,删除 $Z$ 的全部出边(用下划线表示),表示 $Z$ 被干预后不再受父母影响。
- 规则3的图 $G_{\overline{X}\overline{Z(W)}}$删除 $X$ 的入边,以及 $Z$ 中不受 $X$ 影响的部分节点的入边。
后门前门
手册里还有两张“常用路线图”,是小周的前辈们踩好的捷径。第一条是后门准则:如果一组变量 $Z$ 阻断了从 $X$ 到 $Y$ 的所有后门路径(即从 $X$ “绕出去”再回到 $Y$ 的路径),且 $Z$ 不含 $X$ 的后代,那么调整 $Z$ 就能算出因果效应。第二条是前门准则:当 $X$ 到 $Y$ 的全部因果路径都经过一个可观测的中间变量 $M$,且 $M$ 到 $Y$ 没有其他后门路径时,可以用两步调整估计因果效应。
后门准则的公式是因果推断中最常用的“主干道”:
小周发现,后门准则和前门准则其实都是三条规则的“快捷组合”:后门准则对应规则2的反复应用,前门准则对应规则2与规则3的配合。这让他对那本薄薄的手册信心大增。
- 求和号 $\sum_{z}$对 $Z$ 的所有可能取值求和,相当于把每条后门路径的贡献都“平均”进去。
- 条件概率 $P(y \mid x, z)$在 $X=x$ 且 $Z=z$ 的条件下 $Y$ 的分布。这是分层内部的“纯净”关联。
- 权重 $P(z)$$Z$ 取 $z$ 的概率,作为该层在总体中的占比。
- 等号连接左端是干预世界,右端全由观察世界的量构成,这就是“识别成功”。
可识别判定
有了地图和路权规则,小周开始思考一个尖锐的问题:什么时候导航会说“无法到达”? 答案是:当从 $X$ 到 $Y$ 存在一条后门路径,而这条路径上有一个变量从未被观测到,且没有任何可观测的调整集能阻断它时,因果效应就不可识别。典型的反例是未观测混杂结构:$X \leftarrow U \rightarrow Y$,其中 $U$ 是 $X$ 和 $Y$ 的共同原因,但 GPS 记录里完全没有它的信息。这时 $P(y \mid x)$ 里同时混着“ $X$ 对 $Y$ 的因果作用”和“ $U$ 带来的虚假关联”,像两条麻绳拧在一起,怎么也解不开。
后门路径的定义可以严格写出:
小周在图上画了又画,终于明白:导航系统说“无法到达”,不是算法太笨,而是地图拓扑结构上真的没有路。完备性定理正是要把这个直觉变成严格的数学承诺。
- “从 $X$ 到 $Y$ 的路径”路径是一连串相邻的边,不考虑方向。
- “第一条边以 $X$ 为终点”这条路径的第一条边是“指向 $X$”的,意味着它绕开了 $X \to Y$ 的直接因果边。
- 阻断调整集 $Z$ 中某个节点在这条路径上“挡路”,使得关联不能沿路径传递。
- 不可识别找不到阻断所有后门路径的调整集,且不存在前门等特殊结构时,效应不可识别。
完备性证明
交通局的手册只有三条规则,小周忍不住怀疑:真的够用吗?完备性定理给出了肯定的回答。它由 Huang 与 Valtorta(2006)、Shpitser 与 Pearl(2006)分别独立证明,核心结论是:如果一个因果效应从观察数据中可识别,那么必定存在一个由三条规则构成的有限序列,把它化简为仅含观察概率的表达式。 换句话说,“可识别”与“可化简”在 do-演算的框架下是等价的。
小周恍然大悟:完备性像是导航系统的“路线完备性承诺”——只要配送任务在物理上可行,导航就一定能规划出路线;如果导航提示无解,那这个任务在物理上就是不可行的。这让他不必再担心“还有没有隐藏规则”。
- “可识别”假设已知某个干预分布能被观察分布唯一确定,即存在那个函数 $f$。
- “不可化简”假设假设不存在三条规则的有限序列能把干预表达式变成观察表达式。
- 反证构造利用不可化简的表达式构造一个“hedge“——两个因果模型,它们的观察分布完全相同,但干预分布不同。这直接与”可识别”矛盾。
- 结论可见“不可化简”不成立,因此可识别必然推出可化简。
应用价值
走出调度室,小周发现这套“导航系统”已经在各行各业发光。政策评估中,政府想知道“提高最低工资是否减少失业率”,用 do-演算判断可识别性,再用后门调整计算政策效应,避免被经济周期等混杂因素误导。医学研究中,利用电子病历的观察数据估计药物疗效时,医生先用完备性定理判断“这个效应能否从回顾性数据中识别”,如果不可识别,就老老实实设计随机对照试验(RCT)。商业决策里,电商平台要评估“发放优惠券是否提升复购率”,同样需要先过识别这一关。
最常见的实用公式是平均因果效应(ATE)的后门调整形式:
如今,小周已经能从 GPS 记录里自信地回答“改单行道有没有用”。他知道:先看图,再谈识别;先识别,再谈估计。完备性让他看清了哪些目标是可达的,也让他学会了在不可识别时果断地说“这个问题需要做实验”。
- ATE 定义两种干预状态下的期望结果之差。
- 分层内期望差在给定 $Z=z$ 的层内,比较 $X=x_1$ 与 $X=x_0$ 的 $Y$ 期望之差。
- 加权求和按 $P(z)$ 加权,让每一层的贡献与它在总体中的比例相称。
AI 应用场景
政策评估中的因果识别
阶段:因果推断与决策支持
解决的问题:传统政策评估容易把“相关”当“因果”,例如观察到最低工资高的地区失业率也高,就断言提高最低工资导致失业。do-演算完备性帮助分析者先判断政策的因果效应能否从观察数据中识别,再决定采用后门调整、工具变量还是必须设计随机实验,避免政策误判。
具体案例:某市政府要评估“地铁新线路对沿线房价的影响”,构建包含房价、距离、区域经济指标的因果图,用 do-演算判断可识别性后,基于后门准则调整区域经济变量,计算出真实因果效应,为土地规划提供依据。
医学研究中的观察数据疗效分析
阶段:医疗数据分析与临床决策
解决的问题:电子病历数据存在大量混杂(病情严重程度、并发用药等),直接对比用药组与对照组会得出错误结论。do-演算完备性用于判断“药物对康复时间的效应是否可从病历中识别”,若不可识别则提示需要补充实验证据,从而提升真实世界研究的严谨性。
具体案例:某药企分析电子病历评估降糖药对心血管事件的影响,识别出不可观测的疾病严重程度阻断了后门路径,判定该效应不可从现有数据识别,于是转向设计前瞻性队列,避免了一次虚假结论的发布。
商业决策中的增量效果衡量
阶段:营销优化与用户增长
解决的问题:电商平台想评估“满减券发放是否提升用户复购率”,但领取优惠券的用户本就活跃,形成选择偏差。do-演算完备性指导分析者构建因果图,识别出可观测的活跃度作为调整集,用后门调整公式估计真实增量效果,优化营销预算分配。
具体案例:某电商平台对用户分层后计算 ATE,发现满减券对高活跃用户增量仅 1.2%,对沉睡用户增量达 8.5%,于是调整投放策略,将预算向沉睡用户倾斜,整体 ROI 提升 3 倍。
Python 演示
import numpy as npimport networkx as nx def find_backdoor_paths(G, X, Y): # 在无向图中找 X 到 Y 的路径, 去掉直接因果边后即为后门路径 H = G.to_undirected() if G.has_edge(X, Y): H.remove_edge(X, Y) paths = [] try: for p in nx.all_simple_paths(H, X, Y): paths.append(p) except nx.NetworkXNoPath: pass return paths def is_backdoor_adjustment_set(G, X, Y, Z): # 简化版判断: 调整集 Z 须阻断所有后门路径 H = G.to_undirected() if G.has_edge(X, Y): H.remove_edge(X, Y) H2 = H.copy() H2.remove_nodes_from(Z) return not nx.has_path(H2, X, Y) def backdoor_ate(data, X_col, Y_col, Z_col, bins=10): # 用后门调整公式估计 ATE: 对 Z 分层, 层内求差再按比例加权 Z = data[:, Z_col] cut = np.percentile(Z, np.linspace(0, 100, bins + 1)) layer = np.digitize(Z, cut[1:-1]) n_total = len(data) ate = 0.0 for k in range(bins): mask = layer == k n_k = mask.sum() if n_k < 5: continue sub = data[mask] w = n_k / n_total m1 = sub[sub[:, X_col] == 1, Y_col].mean() m0 = sub[sub[:, X_col] == 0, Y_col].mean() ate += w * (m1 - m0) return ate def main(): G = nx.DiGraph() G.add_edges_from([("Z", "X"), ("Z", "Y"), ("X", "Y")]) print("后门路径:", find_backdoor_paths(G, "X", "Y")) ok = is_backdoor_adjustment_set(G, "X", "Y", ["Z"]) print("调整集{Z}满足后门条件:", ok) rng = np.random.default_rng(42) n = 2000 z = rng.normal(size=n) x = (1.2 * z + rng.normal(size=n)) > 0 x = x.astype(int) y = 0.8 * x + 0.5 * z + rng.normal(size=n) data = np.stack([x, y, z], axis=1) ate = backdoor_ate(data, 0, 1, 2) print("后门调整估计 ATE:", ate) if __name__ == "__main__": main()
G.add_edges_from([("Z", "X"), ("Z", "Y"), ("X", "Y")])构建因果图:$Z$ 同时影响 $X$ 和 $Y$,$X$ 直接影响 $Y$,$Z$ 是典型的混杂因子。find_backdoor_paths将图转成无向图并移除直接因果边后搜索路径,得到 $X$ 到 $Y$ 的所有后门路径。is_backdoor_adjustment_set把调整集 $Z$ 从图中删除,若 $X$ 与 $Y$ 不再连通,说明 $Z$ 阻断了所有后门路径。backdoor_ate对连续协变量 $Z$ 分层,每层内部比较 $X=1$ 与 $X=0$ 的 $Y$ 均值,再按层占比加权。np.digitize(Z, cut[1:-1])把 $Z$ 的取值按分位数切分为 10 层,完成离散化。ate += w * (m1 - m0)逐层累加权重的层内差异,得到整体 ATE。
常见误区
误区“只要样本量够大、数据够全,任何因果效应都能从观察数据里算出来。” 很多初学者以为因果推断只是统计问题,加大数据量就能解决一切。
正解可识别性由因果图结构决定,与数据量无关。即使拥有无穷多的观察数据,在未观测混杂结构 $X \leftarrow U \rightarrow Y$ 中,$P(Y \mid \text{do}(X))$ 依然不可识别。这就像 GPS 记录再详尽,也补不上地图上根本不存在的道路。
为何常见:因为传统统计学习强调“数据越多越准”,学习者容易把“估计精度”和“识别可行性”混为一谈。
误区“完备性嘛,就是所有因果问题都能用三条规则解决。” 这高估了完备性的适用范围。
正解完备性说的是“可识别 ⇒ 可化简”,它只对本身可识别的问题做出保证。如果效应在图中根本不可识别,三条规则同样无计可施。完备性更像导航的“路线完备性”——只承诺有路就找得到,不承诺每个目的地都有路。
为何常见:“完备”一词在直觉上容易被理解为“万能”,忽略了它针对的是规则系统的表达能力而非问题域的覆盖范围。
误区“既然要排除混杂,那就把所有能测到的变量都放进回归模型。” 初学者常采用“全控”策略。
正解后门准则要求调整集阻断所有后门路径,同时不能包含 $X$ 的后代。控制的变量若在因果路径上(如中介变量),反而会引入偏差;控制了对撞变量还可能打开新的偏差路径。这就像修路时堵错了路口,反而把车流引到了更堵的街区。
为何常见:传统回归教学中“控制变量”是通用的防偏策略,缺少因果图视角的人自然认为“多多益善”。
误区“干预就是把变量取某个值,那 $P(Y \mid \text{do}(X=x))$ 不就是 $P(Y \mid X=x)$ 吗?” 这是混淆观察与干预的最常见误区。
正解在存在混杂时两者不同。比如吸烟者本身健康意识可能更强(未观测的 $U$ 同时影响吸烟和健康),导致 $P(\text{生病} \mid \text{吸烟})$ 低估了吸烟的真实危害,而 $P(\text{生病} \mid \text{do}(\text{吸烟}))$ 才是干预的因果效应。do-演算的全部意义就在于弥合这个差距。
为何常见:日常语言中“做 $X$”和“看到 $X$”不加区分,让初学者习惯性地把条件概率等同于因果效应。
误区“只要有未观测混杂,效应就一定不可识别;没有未观测混杂,就一定可识别。” 这个绝对化的判断是错的。
正解有些图即使存在未观测混杂也可识别,典型如前门结构 $X \to M \to Y$($M$ 可观测且 $M$ 到 $Y$ 无后门路径)。另一些图即便所有变量都可观测,也可能因为对撞结构导致无法找到合适的调整集。可识别性必须逐图判断,靠 do-演算或图准则而非粗略印象。
为何常见:常见反例讲多了,学习者容易把“未观测混杂”当作不可识别的同义词,忽略了因果结构的多样性。
面试题
Q1. do-演算完备性定理主要说的是什么?
- A.所有因果效应都能从观察数据中算出
- B.可识别的效应必能被三条规则化简← 正确答案
- C.三个规则能生成所有可能的因果图
- D.观察数据能代替所有随机对照试验
答案:B。完备性定理断言“可识别 ⇔ 可化简”,它是对规则系统表达能力的保证,而不是说所有效应都可识别。A 夸大了适用范围,C 混淆了规则与图生成,D 更是抛弃了实验的必要性。
Q2. do-演算共有几条基本规则?
- A.两条,后门准则与前门准则
- B.三条,关于干预与观察的转换← 正确答案
- C.四条,加一条独立性公理
- D.五条,加两条图变换规则
答案:B。do-演算有且仅有三条规则:插入/删除干预、交换行动与观察、插入/删除观察。后门准则和前门准则是从这三条规则推导出的快捷方式,不是独立的基本规则。
Q3. 规则2(交换行动与观察)的直接作用是?
- A.在无混淆时把 do(X) 替换为条件 X← 正确答案
- B.在无混淆时删除所有观察变量 Z
- C.在有混淆时引入工具变量
- D.在无混淆时增加新的干预变量
答案:A。规则2允许在条件独立成立时,把 $\text{do}(z)$ 与 $z$ 互换。后门准则正是反复使用规则2把 $\text{do}(x)$ 消去,得到仅含条件概率的表达式。
Q4. 后门准则的核心要求是什么?
- A.调整集 Z 阻断所有前门路径
- B.调整集 Z 阻断所有后门路径← 正确答案
- C.调整集 Z 包含全部未观测变量
- D.调整集 Z 等于 Y 的所有父节点
答案:B。后门准则要求调整集阻断了从 $X$ 到 $Y$ 的所有后门路径,且不包含 $X$ 的后代。阻断前门路径反而会破坏因果信号,C 和 D 都是对调整集构成的误解。
Q5. 未观测混杂结构 $X \leftarrow U \rightarrow Y$ 中,$P(Y \mid \text{do}(X))$ 通常?
- A.可以通过后门调整精确计算
- B.不可识别,无法从观察数据确定← 正确答案
- C.等于 $P(Y \mid X)$ 无需调整
- D.可由前门准则间接计算
答案:B。$U$ 未观测且阻断它的唯一后门路径无法被任何观测集阻断,因此因果效应不可识别。A 需要观测 $U$,C 混淆了条件与干预,D 缺少可观测的中间变量。
Q6. 完备性定理的反证法构造的核心是什么?
- A.构造两个观察分布不同的图
- B.构造干预分布不同的两个模型
- C.构造 hedge 结构导出矛盾← 正确答案
- D.构造一条不存在的后门路径
答案:C。若可识别却不可化简,则构造一个 hedge:两个因果模型观察分布完全相同、干预分布不同,与“可识别”定义矛盾。A 与前提相反,B 是矛盾的目标而非构造工具,D 与证明无关。
Q7. 结构为 $X \to M \to Y$($M$ 可观测,$X$ 与 $Y$ 无其他路径)时,通常可采用?
- A.后门准则直接做调整
- B.前门准则进行间接识别← 正确答案
- C.do-演算规则1删除干预
- D.无法识别改用随机对照
答案:B。该结构没有后门路径,但需要中间变量 $M$ 的中转,这正是前门准则的经典应用场景:先用 $M$ 的分布估计 $X \to M$,再估计 $M \to Y$。A 不需要后门调整,C 规则1不适用,D 忽略了前门准则的可行性。
Q8. 可识别性与可估计性的核心区别是?
- A.可识别是理论层面,可估计是计算层面← 正确答案
- B.可识别需要更多数据,可估计看图
- C.可识别用于观察数据,可估计用于实验
- D.可识别等同于无偏估计量存在
答案:A。识别回答“理论上能否由观察分布唯一确定”,估计回答“给定有限数据如何算得准”。识别是估计的前提,但识别问题不因数据增多而改变答案。
Q9. 关于 do-演算完备性,下列说法正确的有?
- A.完备性保证可识别效应必能化简← 正确答案
- B.完备性仅对线性因果模型成立
- C.完备性已在有向无环图上验证← 正确答案
- D.完备性否定后门准则有效性
答案:AC。完备性由 Huang-Valtorta 与 Shpitser-Pearl 在一般有向无环图(DAG)框架下证明,不限于线性模型。它肯定而非否定后门准则——后门准则本身就是可化简路径的特例。
Q10. 图 $X \to Y$,$U \to X$,$U \to Y$($U$ 未观测)且无工具变量时,$P(Y \mid \text{do}(X))$?
- A.可通过后门调整精确计算
- B.不可识别但可用倾向得分近似← 正确答案
- C.等于 $P(Y \mid X)$ 无需调整
- D.可由前门准则间接计算
答案:B。唯一的后门路径 $X \leftarrow U \to Y$ 被未观测的 $U$ 阻断,且无工具变量可借助,故不可识别。倾向得分只能消除可观测混杂,无法解决 $U$ 带来的偏差,所以 B 仍是最佳描述。