do-calculus(也有人直接叫“do 演算”)是一套形式化规则,用来回答一个问题:只靠观测数据,加上一张画出来的因果关系图(causal graph,常写作 DAG),我们能不能算出“如果我强行把 X 设成某个值,Y 会怎样”,也就是 P(Y | do(X))。
为什么“看到”和“动手”不是一回事
举个日常例子。数据里显示:带伞的人比不带伞的人更容易被淋湿。这不是因为伞会招雨,而是“今天下雨”这个共同原因,同时影响了“带不带伞”和“淋不淋湿”。这种同时影响两边的变量叫混淆因子(confounder)。于是两种问题必须分开写:
- 观察到一个人在打伞,他淋湿的概率是多少:P(淋湿 | 打伞)
- 我们强行塞给他一把伞,他淋湿的概率是多少:P(淋湿 | do(打伞))
前者只是数据里的相关性,后者才是“动手改一改”的结果。在混杂存在时,两者一般不相等。“相关不等于因果”这句话,do-calculus 把它变成了可计算的工具。
三条规则在做什么
Pearl 把改写干预表达式的合法操作收敛成三条规则,大意是:
1. 若某些变量在图上与结果无关,可以给条件概率加上或删掉对这些变量的观测条件;
2. 满足一定图条件时,可以把“干预 Z”替换成“观测 Z”——这是“用已有数据顶替实验”的关键一步;
3. 满足一定条件时,可以插入或删除对变量的干预。
三条反复套用,就能把 P(Y | do(X)) 一路化简成只含普通条件概率的式子,这一步叫识别(identification)。后门准则(back-door criterion)、前门准则(front-door criterion)本质上都是它的特例。规则每条对应的图形条件比较绕,具体以教材或原文为准,这里只给直觉。
和相邻概念的区别
| 概念 | 关心什么 | 和 do-calculus 的关系 | |
|---|---|---|---|
| 条件概率 / 相关性 | P(Y\ | X):数据里一起出现的模式 | 是它的原料,不是它的答案 |
| 随机对照试验(RCT) | 用随机分组在现实中实现 do(X) | 能做实验最省事;do-calculus 处理做不了实验的情形 | |
| 潜在结果框架(potential outcomes) | 用“同一个体的两种可能结果”定义因果 | 与图模型路线是两套语言,很多结论彼此对应 |
对从业者的意义
机器学习模型拟合的通常是 P(Y|X),也就是观测分布。拿这种模型去做定价、补贴、推荐、内容排序,等于默认假设“我观察到的规律,我动手调整之后依然成立”。do-calculus 的作用就是把这个假设摊到台面上:要么证明它可以从现有数据算出来,要么承认必须做实验,或者补上额外假设。另一个提醒是,样本再大也只是把相关性估得更准,并不会自动长出因果。
