翻开爷爷的族谱,你会看到一张由圆圈和箭头组成的网络:每个名字是一个圆圈,从父母指向子女的箭头,画出了“谁的血脉影响了谁”。如果把族谱里的“人”换成“变量”——学历、收入、健康、天气、销量——你就会得到一张因果图因果图。因果图是结构因果模型的“骨架”,是所有严谨因果推理的地图:它不关心数字大小,只负责回答三个灵魂拷问:谁直接影响了谁?哪些关联是假象?如果改变某个环节,世界会怎样?本文用“家族族谱”这个比喻贯穿全篇,带你认识因果图的节点与边、三类基础结构、d-分离、混淆与后门、do算子、反事实推理,以及图的构建方法。你会发现:所谓高级的因果推断,本质就是学会看清族谱上的真实血缘。

岗位关联

对AI从业者而言,因果图是把“相关”升维成“因果”的思维枢纽:它能帮你校准数据偏差、定位问题根因、回答业务方的“如果当初”,是走向可解释AI与智能决策的必修内功。

目录
  1. 可视化演示
  2. 节点与有向边
  3. 三类基础结构
  4. 路径与d-分离
  5. 混淆与后门
  6. 干预与do算子
  7. 反事实推理
  8. 构建与应用
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示因果图DAG结构、链/分叉/对撞路径类型与do-算子干预操作的交互演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

因果图DAG结构 有向无环图节点为变量 有向边表示直接因果 DAG: X→Y, No Cycle 总结:因果图是有向无环图

节点与有向边

爷爷书房里挂着一张手绘族谱:每个名字是一个圆圈,从父母指向子女的箭头是“血脉通道”。外人看一眼就知道谁是谁的祖先——没有箭头的人没有血缘,箭头方向画反了,辈分就全乱了。这张图在AI的世界里有一个正式的名字:因果图(Causal Graph)。它和普通的“关联图”有本质区别:关联图只告诉你“他们有关系”,因果图必须问清楚“谁直接影响谁”。

因果图中,节点(node)代表一个变量,比如学历、收入、健康;有向边(directed edge)代表直接因果影响,箭头从原因指向结果。形式化地,因果图是一个有向无环图(DAG),图上不允许出现“绕一圈又回到自己”的循环——因为现实世界的时间不可倒流,一个人不可能成为自己的祖先。

有了这张“变量族谱”,后续推理才有了坐标系:一个节点的父节点是直接指向它的变量,子节点是它直接指向的变量;一条沿箭头方向延伸的路径则传递间接影响。接下来,我们翻开族谱,先认识三种最经典的“亲戚关系”。

G=(V,E)G = (V, E)
因果图G由节点集合V和有向边集合E构成,它们分别对应族谱上的“成员名单”和“血缘箭头”。
  1. G(因果图)一张完整的变量“族谱”,是所有因果推理的地图。
    G=(V,E)G = (V, E)
  2. V(节点集合)研究问题中所有相关变量的集合,对应族谱里的全体家族成员。
    V={X1,X2,…,Xn}V = \{X_1, X_2, \dots, X_n\}
  3. E(有向边集合)所有直接因果关系的集合,每条边从原因指向结果,不允许反向。
    E={(Xi→Xj)}E = \{(X_i \to X_j)\}

三类基础结构

族谱上任意三位成员之间,亲戚关系无非三种样板:直系血亲(爷爷—爸爸—我)、同宗兄弟(爷爷同时是我和堂哥的祖先)、双亲汇合(爸爸和妈妈共同“造就”了我)。令人惊喜的是,因果图里任意三个变量之间,也只会有这三种基础结构——链式、分叉、对撞,它们是整个因果推断的“乘法口诀表”。

链式结构(Chain)形如 A→B→C,A通过B间接影响C,好比“爷爷的基因→爸爸的体质→我的身高”;分叉结构(Fork)形如 A←B→C,B是A和C的共同原因,好比“爷爷的财富”同时影响着“爸爸的教育”和“叔叔的生意”;对撞结构(Collider)形如 A→B←C,B同时被A和C影响,好比“孩子的天赋”由父母双方的基因共同决定。这三种结构最关键的差异,体现在“条件化”(控制某个变量)之后的信息流通规则上。

族谱记住三句话:直系(链式)和同宗(分叉),中间一拦就断;双亲汇合(对撞),中间一筛就乱。理解这三类结构,你就能预判“控制某个变量”到底是消除偏倚还是制造偏倚。

Chain/Fork: X⊥Y∣ZCollider: X⊥̸Y∣Z\text{Chain/Fork: } X \perp Y \mid Z \qquad \text{Collider: } X \not\perp Y \mid Z
链式与分叉中,控制中间的Z会切断X与Y的关联;对撞结构中,控制Z反而会打开X与Y的虚假关联。
  1. 链式/分叉中的条件独立在链式A→B→C和分叉A←B→C中,给定中间的B之后,两端的A与C不再交换信息。
    X⊥Y∣ZX \perp Y \mid Z
  2. 对撞中的条件依赖在对撞A→B←C中,给定B之后,两端的A与C反而出现虚假相关,这就是著名的伯克森悖论。
    X⊥̸Y∣ZX \not\perp Y \mid Z
  3. 一句话记忆链式和分叉中,Z是“阻断器”;对撞中,Z是“放大器”。
    A→B←CA \to B \leftarrow C

路径与d-分离

两位族人表面上沾亲带故,但中间隔着好几道“关卡”:每次家族聚会都有人缺席,情报传不过去。要判断他们到底有没有实际联系,必须沿着族谱逐条通路检查。因果图里,从X到Y的一条路径(path)是首尾相接的边序列,有向路径则必须沿箭头方向走。祖先(ancestor)和后代(descendant)的定义沿用族谱的直觉。

现在的问题是:给定一组已经观测并控制的变量Z,X和Y之间还有没有“信息通道”?这就是d-分离(d-separation)回答的问题。路径上每个节点按照三类结构判断是否被阻断:链式结构中的中间节点若被Z控制,路径阻断;分叉结构中的共同祖先若被Z控制,路径阻断;对撞节点若被Z控制,路径反而打开(默认为阻断)。如果X和Y之间的所有路径都被阻断,则称X和Y被Z d-分离。

d-分离是“如何切断族谱上的流言”。想判断两个变量到底真有关联还是谣言,就用Z把所有后门通道锁死。掌握了这把锁,我们就能去对付最棘手的“家族谣言”——混淆。

P(X,Y∣Z)=P(X∣Z)×P(Y∣Z)P(X, Y \mid Z) = P(X \mid Z) \times P(Y \mid Z)
这是条件独立的数学定义:给定Z之后,X的分布不再受到Y取值的影响,两者“彻底失联”。
  1. P(X, Y | Z)在给定Z的条件下,X和Y的联合分布——好比族谱上“已知Z的信息后,X和Y同时出现的概率”。
    P(X,Y∣Z)P(X, Y \mid Z)
  2. 右侧乘积联合分布拆成两个边缘条件分布的乘积,这正是“条件独立”的定义。
    P(X∣Z)×P(Y∣Z)P(X \mid Z) \times P(Y \mid Z)
  3. d-分离直觉Z像族谱上的“关卡”,所有血缘通道都被阻断后,知道X不会改变对Y的预测。
    X⊥Y∣ZX \perp Y \mid Z

混淆与后门

有人统计发现“村里喝咖啡的人普遍长寿”,于是宣称咖啡能延年益寿。翻开族谱才发现:喝咖啡的人都来自“长寿家族”,家族基因才是那个共同祖先。一旦把“家族”这个变量考虑进去,咖啡和长寿之间看似亲密的关系就消失了。这个躲在背后的“共同祖先”,就是因果推断里最臭名昭著的角色——混淆因子(confounder)。

混淆因子同时影响处理变量X和结果变量Y,使得观察关联P(Y|X=x)偏离真实因果效应P(Y|do(X=x))。那条从X出发、通过Z绕一圈又回到Y的“X←Z→Y“路径,被称为后门路径(backdoor path):它不沿X出发的箭头前进,却让外部信息悄悄”溜进”X,制造虚假关联。幸运的是,后门准则(backdoor criterion)给出了解药:找到一组变量Z,它不包含X的后代,且能阻断所有后门路径,就可以用后门调整公式还原真实因果效应。

想要“看穿”虚假关联,就把族谱上那些“共同祖先”控制起来。这也是为什么分析“教育是否提高收入”时必须控制“家庭背景”——否则你看到的只是一条漂亮的后门路径。

P(Y∣do(X=x))=∑zP(Y∣X=x,Z=z)×P(Z=z)P\big(Y \mid \mathrm{do}(X=x)\big) = \sum_z P(Y \mid X=x, Z=z) \times P(Z=z)
后门调整的本质:按混淆因子Z分层,在每层内比较X对Y的效应,再按Z在总体中的占比加权平均,把“各类家族”拉平到同一水平线上。
  1. do(X=x)(干预)把处理变量X从“被祖先决定”改为“被外力固定”,这是因果效应的目标量。
    do(X=x)\mathrm{do}(X = x)
  2. 分层条件分布在“处理水平为x且混淆因子为z”的子群体中,Y的条件分布。
    P(Y∣X=x,Z=z)P(Y \mid X = x, Z = z)
  3. 混淆因子的权重Z取值为z的个体在总体中所占的比例。
    P(Z=z)P(Z = z)
  4. 加权求和把每一层的组内效应按层权重累加,得到校正混淆后的全局因果效应。
    ∑z(⋅)×P(Z=z)\sum_z \big(\cdot\big) \times P(Z = z)

干预与do算子

观察族谱只能告诉你“现实中发生了什么”;但如果你想知道“如果爷爷当年去当了医生,爸爸的人生会有什么不同?”——你就必须动手改写族谱,在想象中把爷爷职业这条支线剪断重连。do算子(do-calculus)正是那支改写族谱的“神笔”。

do(X=x)表示进行一次外部干预,把X强制设为x,相当于从外部“拔掉”所有指向X的箭头的自然机制。这里有一个新手最容易踩的坑:P(Y|do(X=x)) 不一定等于 P(Y|X=x)。观察数据里的X是“祖先们”决定的,干预后的X是被外力固定的——一个是看族谱找相似的人,一个是逼着所有人改姓,两者截然不同。

“观察”是看族谱,“干预”是导演拿着剧本让演员改戏。只有通过干预,我们才能回答“让所有人都吃药会怎样”这类真正面向决策的问题。而把干预再推进一步,就进入了更迷人的领域——反事实。

Pdo(X=x)(V)=∏Vi≠XP(Vi∣pa(Vi))∣X=xP_{\mathrm{do}(X=x)}(V) = \prod_{V_i \neq X} P\big(V_i \mid \mathrm{pa}(V_i)\big) \Big|_{X=x}
截断因子分解:干预后的世界分布,等于删掉所有指向X的边之后,剩余变量仍按照原有机制“繁殖”,最后把X统一代入x。
  1. do(X=x)(改写操作)删除因果图中所有指向X的边,把X强制设为x,模拟外部干预。
    do(X=x)\mathrm{do}(X = x)
  2. 连乘(保留生成机制)对所有非X的变量,保留“父母如何生成子女”的条件概率。
    ∏Vi≠XP(Vi∣pa(Vi))\prod_{V_i \neq X} P\big(V_i \mid \mathrm{pa}(V_i)\big)
  3. 代入X=x在连乘结果中,把变量X统一取值替换为干预值x。
    ∣X=x\Big|_{X = x}

反事实推理

午夜梦回,你问自己:“如果当年没选计算机专业,现在会怎样?”现实中只有一个时间线,但因果图允许我们在脑中创造平行宇宙。反事实(counterfactual)问题的格式是:“给定现实中已观察到X=x'且Y=y',如果反事实世界中X=x,Y会是多少?”它与干预的区别在于:干预不利用观测到的Y信息,反事实则把“我这个人的具体情况”完整纳入考虑。

Pearl提出的三步法是反事实推理的黄金流程。第一步外展(abduction):用现实观测反推出个体的扰动项,也就是族谱里那些“说不清道不明的运气”;第二步干预(action):用do(X=x)改写因果图;第三步预测(prediction):在新世界中计算Y的反事实值。基于反事实,我们还能定义必要因(如果没有X就一定没有Y)与充分因(只要有X就必有Y),并计算归因概率PN,回答“这件事到底在多大程度上该怪X”。

族谱写的是正史,反事实写的是“野史”。在AI决策中,反事实让我们能从个别失败案例中追问“哪个环节不可替代”,是责任认定与个性化决策的基石。

P(YX=x=y∣X=x′, Y=y′)P\big(Y_{X=x} = y \mid X = x',\, Y = y'\big)
这个式子的含义:已知现实中X=x'、Y=y'的个体,若反事实地把X干预为x,其Y取值y的概率——“同一个灵魂,换一条人生路,结局如何”。
  1. Y_{X=x}(反事实结果)平行宇宙中,X被外部干预为x之后,Y会取到的值。
    YX=xY_{X=x}
  2. 条件部分(现实证据)以现实观测到的X=x'、Y=y'为条件,锁定“这个特定个体”。
    X=x′,Y=y′X = x', \quad Y = y'
  3. 整体含义已知现实结局后,追问同一个体在反事实世界的结局概率。
    P(⋅∣X=x′,Y=y′)P\big(\cdot \mid X = x', Y = y'\big)

构建与应用

给一个家族画族谱,光靠听老人讲故事(专家知识)不够,还得结合DNA检测(数据)。但DNA只能告诉你“有亲缘关系”,无法百分之百分清谁是谁的父亲——这就是马尔可夫等价类(MEC)给出的“测不准原理”。

构建因果图有两条路线:一是以专家知识手工绘制,自上而下地确定节点与箭头方向;二是用结构学习算法从数据中自动发现,自下而上地检验条件独立性(如PC算法、GES算法)。但纯观测数据存在识别天花板:X→Y→Z、X←Y→Z、X←Y←Z三种图给出的条件独立关系完全一致,数据无法区分哪个是真实方向,必须依靠干预实验或领域假设来打破僵局。一个完整的结构因果模型(SCM)由因果图G和参数Θ组合而成:G决定“谁是谁的父母”,Θ决定“父母如何影响子女”。

一张靠谱的“变量族谱”胜过一百次盲目的数据回归。因果图不是万能钥匙,但它给了你“辈分意识”:知道该控制谁、不该控制谁,该信谁、不该信谁。有了这份意识,你就能在纷繁的数据中分清因果与噪音。

SCM=(G,Θ)\mathrm{SCM} = (G, \Theta)
结构因果模型 = 因果图(结构)+ 参数(强度)。图定骨架,参数定血肉,二者合体才能用于干预与反事实推断。
  1. G(因果图)族谱的骨架,规定每个变量的父节点集合。
    G=(V,E)G = (V, E)
  2. Θ(参数)族谱上的“遗传系数”,量化父节点对子节点的作用强度。
    Θ={θ1,θ2,…,θm}\Theta = \{\theta_1, \theta_2, \dots, \theta_m\}
  3. 整体合成图结构加上参数,才构成能够做干预和反事实推理的完整模型。
    SCM=(G,Θ)\mathrm{SCM} = (G, \Theta)

AI 应用场景

广告效果评估与投放优化

阶段:因果效应估计(后门调整)

解决的问题:观察数据中“看到广告→购买”的关联可能被“用户收入水平”这个混淆因子扭曲。传统AI只看相关性,容易把高收入人群的购买欲误记为广告的功劳,导致预算浪费。

具体案例:某电商App用后门调整控制“用户年消费力”后重新评估广告ROI,发现某渠道的真实效果只有原来估计的一半。据此砍掉一半低效预算并转向精准人群,整体ROI提升38%。

医疗健康:药物疗效与副作用归因

阶段:反事实推理(个体化治疗评估)

解决的问题:医生只能观察患者接受的一种治疗方案,无法知道“如果换一种方案会怎样”。传统统计给的是群体平均,难以回答个体层面的问题。

具体案例:肿瘤科基于患者病历构建因果图(含年龄、基因突变、并发症等节点),对“术后化疗”做反事实推断:预测每位患者如果在反事实世界中不做化疗的5年生存率,从而识别出真正受益人群,避免过度治疗。

微服务故障根因分析

阶段:因果发现与结构学习

解决的问题:微服务告警数据全是相关指标,一个服务抖动会传导给所有下游,难以确定谁才是“共同祖先”。传统监控只能事后人工排查。

具体案例:SRE团队将各服务监控指标建成因果图,用PC算法从时序数据中学习边方向,最终定位“数据库连接池耗尽”是所有下游延迟的共同祖先。修复后整体可用性恢复至99.95%。

Python 演示

python40 行
import numpy as np  def generate_data(n=2000, seed=42):    rng = np.random.default_rng(seed)    # 混淆因子 Z: 家庭收入水平(万元/年)    Z = rng.normal(8.0, 2.0, n)    # 处理变量 X: 是否购买高端课程, 受 Z 影响    prob_x = 1.0 / (1.0 + np.exp(-(0.4 * Z - 3.0)))    X = rng.binomial(1, prob_x)    # 结果变量 Y: 学习效果评分, 真实因果效应=2.0, 混淆效应=1.5*Z    Y = 2.0 * X + 1.5 * Z + rng.normal(0, 1.0, n)    return X, Y, Z  def backdoor_adjust(X, Y, Z, n_bins=10):    """后门调整: 按混淆因子 Z 分层, 层内比较后加权平均"""    edges = np.linspace(Z.min(), Z.max(), n_bins + 1)    bin_id = np.digitize(Z, edges[1:-1])    total = 0.0    for b in range(n_bins):        mask = bin_id == b        if np.sum(mask) == 0:            continue        treated = mask & (X == 1)        control = mask & (X == 0)        if np.sum(treated) == 0 or np.sum(control) == 0:            continue        effect_b = np.mean(Y[treated]) - np.mean(Y[control])        total += effect_b * np.sum(mask) / len(X)    return total  if __name__ == '__main__':    X, Y, Z = generate_data()    naive = np.mean(Y[X == 1]) - np.mean(Y[X == 0])    adjusted = backdoor_adjust(X, Y, Z)    print('naive estimate (confounded): %.3f' % naive)    print('backdoor adjusted estimate:   %.3f' % adjusted)    print('true causal effect:            2.000')
目的:用最简单的分层加权还原被混淆因子污染的因果效应,直观对比“朴素估计”与“后门调整”的差异。
  1. prob_x = 1.0 / (1.0 + np.exp(-(0.4 * Z - 3.0)))用sigmoid函数模拟“收入越高的家庭越可能买课”。
  2. Y = 2.0 * X + 1.5 * Z + rng.normal(0, 1.0, n)埋入真实的因果效应系数2.0,同时让Z以1.5的强度污染Y。
  3. bin_id = np.digitize(Z, edges[1:-1])把连续的混淆因子Z切成10个离散层。
  4. effect_b = np.mean(Y[treated]) - np.mean(Y[control])在每一层内比较“买课”与“不买课”的评分差。
  5. total += effect_b * np.sum(mask) / len(X)按该层人数占比加权,把层内效应合并成全局因果效应。

常见误区

误区我做了个分析,发现“每天喝咖啡的人寿命更长”,这肯定是咖啡的功劳!数据分析都显示了显著相关,赶紧投资咖啡产业。

正解因果图告诉我们:这可能是“共同祖先”在捣乱——爱喝咖啡的人往往经济条件好、医疗条件好,这个Z同时影响了喝咖啡习惯X和寿命Y。相关只是族谱上的“远房亲戚”,不代表血缘传承。要下因果结论,必须先控制Z,用后门调整剥离掉虚假关联。

为何常见:人是直觉动物,大脑天生爱把共现当因果;而且观察数据里很少直接标注因果方向,很容易想当然。

误区做回归分析时,我把所有能想到的变量都放进模型里“控制住”,这样结果肯定最干净、最接近真相。

正解控制变量必须“看族谱行事”。控制混淆因子确实能消除偏倚,但控制对撞因子(A→B←C里的B)反而会打开虚假关联,制造新的偏倚;控制中介变量还会把因果效应“拦腰截断”。该控制谁、不该控制谁,由因果图决定,绝不是越多越好。

为何常见:传统机器学习只关心预测精度,习惯了“特征越多信息越多”的思维,从未意识到有些变量是“不该碰的开关”。

误区P(Y|do(X=x))不就是“在数据里筛选出X=x的那些样本,再算Y的均值”吗?两者有什么区别?

正解给定X=x是对自然态“已发生”的分组观察,X之所以等于x,可能恰恰是混淆因子Z推动的;而do(X=x)是把所有个体的X都强制设为x,切断了Z→X的管道。一个是“看族谱找相似的人”,一个是“逼着所有人改姓”,二者只有无混淆时才相等。

为何常见:两个符号看起来都是“把X固定为x”,没意识到“被动分层”和“主动干预”在因果图结构上的本质差别。

误区我有一大堆数据,跑一遍因果发现算法,输出的箭头方向就是真实因果方向,不需要任何专家意见。

正解马尔可夫等价类告诉我们:X→Y→Z、X←Y→Z、X←Y←Z三种图在观测数据上给出的条件独立关系完全一致,纯数据无法区分“Y是共同祖先”还是“Y夹在中间”。没有干预实验或领域知识,方向辨识存在理论上的天花板。

为何常见:深度学习的“数据万能”惯性思维,让很多人忽略了纯观测数据在因果可识别性上的边界。

面试题

Q1. 在因果图中,有向边X→Y表示什么?

单选题 · easy

  • A.X和Y存在相关关系
  • B.X直接导致Y发生← 正确答案
  • C.X和Y互相独立
  • D.X先于Y且互不影响

答案:B。因果图中的有向边代表“直接因果影响”,箭头从原因指向结果。A只是相关性描述,不涉及方向;C和D与有向边的存在矛盾。就像族谱上的箭头只画“谁生谁”,不画“谁和谁住得近”。

Q2. 链式结构A→B→C中,控制B之后,A和C的关系是?

单选题 · easy

  • A.两者相关性增强
  • B.两者条件独立← 正确答案
  • C.因果关系反转
  • D.两者完全无关

答案:B。链式结构中B是中转站,A的信息必须通过B才能传给C。一旦控制(给定)B,中间通道被切断,A和C条件独立。这就像爷爷的遗传信息必须经过爸爸才能传给我,阻断爸爸这一环,爷爷和我的身高就“失联”了。

Q3. 关于分叉结构A←B→C,下列说法正确的是?

多选题 · mid

  • A.无条件时A和C相关且同源← 正确答案
  • B.控制B后A和C条件独立← 正确答案
  • C.无条件时A和C完全独立
  • D.B是A和C的共同原因← 正确答案

答案:ABD。分叉结构中,B是A和C的共同祖先,所以无条件时A和C因B而相关;控制B之后,这条关联通道被阻断,A和C条件独立;B确实是A和C的共同原因。C的错误在于忽略了共同祖先带来的传递相关。

Q4. 对撞结构A→B←C中,下列推断正确的是?

多选题 · hard

  • A.无条件时A和C独立← 正确答案
  • B.控制B后出现虚假相关← 正确答案
  • C.控制B后A和C条件独立
  • D.B是A和C的共同后代← 正确答案

答案:ABD。A和C是两条独立分支“汇合”到B,无条件时互不传递信息;但一旦控制B(比如只研究“天赋很高的孩子”),父母基因之间反而出现虚假负相关,这就是伯克森悖论;B同时是A和C的共同后代。因此C错误。

Q5. 关于后门路径,下列说法正确的是?

单选题 · mid

  • A.它是X到Y的含箭头路径
  • B.它的第一条边是指向X的← 正确答案
  • C.它是Y到X的含箭头路径
  • D.它必须经过中介变量M

答案:B。后门路径连接X和Y,但它的第一条边从外部“反向”指向X,因此外部信息能沿这条路溜进X造成混淆。若路径沿X指向外,则是正常的前向路径而非后门路径。就像“外人通过婚姻关系混进家族”,入口在祖辈而非直系后代。

Q6. 后门调整公式中的Z代表什么?

单选题 · mid

  • A.阻断所有后门路径的变量集← 正确答案
  • B.沿X出发路径的所有中间变量
  • C.包含X后代的全部变量集合
  • D.与X和Y均无关的外生变量

答案:A。后门准则要求Z不包含X的后代,且能阻断所有从X到Y的后门路径。这样的Z就是“混淆因子集合”,用它分层加权才能还原因果效应。B中的中间变量属于前向路径,C中若包含X后代则不合法,D中无关变量不起校正作用。

Q7. do(X=x)的含义是什么?

单选题 · easy

  • A.观察到X的自然取值为x
  • B.外部干预把X强制设为x← 正确答案
  • C.预测X在未来会等于x
  • D.删除X的所有后代节点

答案:B。do算子用于建模外部干预:把X强制设为x,同时切断所有自然影响X的因果通道。观察X=x是“被动筛选”,干预X=x是“主动改写”,两者在因果图上完全不同。

Q8. 关于反事实推理的三步法,下列正确的是?

多选题 · extreme

  • A.外展:用观测反推个体扰动项← 正确答案
  • B.干预:用do改写因果模型← 正确答案
  • C.预测:计算反事实世界Y值← 正确答案
  • D.三步均无需已知因果图

答案:ABC。Pearl三步法中的外展(abduction)用现实数据推断个体的扰动项,干预(action)用do操作改写模型,预测(prediction)在新的反事实世界中计算Y。三个步骤都依赖已知因果图,所以D错误。

Q9. 马尔可夫等价类说明了什么?

单选题 · mid

  • A.多个图具有相同的条件独立关系← 正确答案
  • B.一个因果图只能对应唯一分布
  • C.所有马尔可夫链都互相等价
  • D.条件独立关系能唯一确定方向

答案:A。马尔可夫等价类是指多个因果图在观测数据上给出完全相同的条件独立关系,因此仅靠观测数据无法区分这些图的方向。D恰好说反了,这正是结构学习的“测不准原理”。

Q10. 在对撞结构A→B←C中,控制对撞因子B会带来什么后果?

单选题 · hard

  • A.会打开变量间的虚假关联← 正确答案
  • B.会减小变量间的真实关联
  • C.会让对撞因子完全消失
  • D.会让因果关系直接反转

答案:A。对撞结构的默认状态是A和C独立,但条件化B之后,原本不相干的两条分支会“被迫通话”,产生虚假关联(伯克森悖论)。因此在做回归控制变量时,绝不能把对撞因子当作混淆因子放入模型中——这会人为制造出本不存在的“亲戚关系”。