想象你是一家蛋糕工厂的厂长。工厂墙上挂着一张生产工艺图:鸡蛋、面粉、糖从原料库出发,经过搅拌、烘烤、裱花三道工序,最后变成蛋糕。图上画满了箭头——糖量指向甜度,甜度指向顾客好评。有一天质检报告说“甜度影响了差评率”,你可不能急着把糖全减了,因为也许真正的问题是烘焙时间太短。你需要做的是亲自走下产线,把糖量旋钮钉死在低位,再观察出货变化——这个“伸手干预”的动作,就是因果推断的核心。 结构因果模型(SCM)干的就是这件事:用一张有向无环图把决策系统的变量关系画清楚,用结构方程描述每道工序的生成规则,再用 do 演算回答“如果我强行改变某个变量,结果会怎样”。在算法公平性领域,SCM 帮我们分清哪些歧视是敏感属性直接造成的,哪些是通过收入、学历等中间变量“绕路”实现的,从而把公平干预精确打在因果链的敏感节点上。本文用信贷审批与招聘两个场景,带你从零看懂这套“因果手术刀”。

岗位关联

掌握结构因果模型,是 AI 从业者从“读懂相关”跃迁到“看清因果”的分水岭;在算法公平审计、反事实解释与可信 AI 岗位上,它是最稀缺的硬技能之一。

目录
  1. 可视化演示
  2. 因果图:流水线的工艺蓝图
  3. do演算:伸手固定一道工序
  4. 公平三问:谁在真正偏心
  5. 信贷审批:重建信用流水线
  6. 招聘决策:审计简历传送带
  7. 反事实推理:重播平行时间线
  8. 工程落地:把因果图搬进产线
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示SCM有向无环图结构、do演算干预效果评估及反事实公平推理三种核心因果分析模式。

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

SCM有向无环图 敏感属性A通过因果路径影响决策D和结果Y 有向边表示变量间因果生成方向 DAG: A→X→D, A→D, D→Y DAG编码变量因果生成机制

因果图:流水线的工艺蓝图

甜心蛋糕厂的墙上挂着一张工艺图:鸡蛋、面粉、糖从原料仓库出发,经过搅拌、烘烤、裱花三道工序,最后变成蛋糕。图上的箭头方向一目了然——糖量指向甜度,甜度指向好评。你要是把箭头画反了,整个工厂的管理就全乱套了。这张“谁影响谁”的工艺图,就是结构因果模型的第一块积木。

在算法决策里,这张图叫有向无环图(DAG)。每个节点是一个变量——信贷场景里可能是收入、学历、还款能力;每条有向边表示“上游变量直接改变下游变量”。注意箭头是单行道,而且整张图不允许有环,因为现实世界的因果不会莫名其妙回到过去。图里那些没有父节点、由外部因素直接决定的变量,我们叫外生变量;那些被图内变量按照“配方”生成出来的,叫内生变量。

光有图还不够,SCM 还给每个节点配了一条“配方”——结构方程。它规定:这个变量的值 = 父节点值的某种函数 + 随机扰动。扰动代表工序里无法观测的波动,比如当天糖的品质不稳定。有了配方,工程师就能在数据里还原“收入是怎么从学历和性别里长出来的”。

有了这张工艺图和每道工序的配方,厂长就能在纸面上推演整个流水线;同样,算法工程师也能在数据里还原“收入怎么生成、还款又受谁影响”。有了这张图,后面关于干预和公平的所有讨论,才算有了地基。

Vi=fi(PAi, Ui)\displaystyle V_i = f_i(PA_i,\, U_i)
这条式子的意思是:任何一个内生变量 Vᵢ,都由它的父节点集合 PAᵢ 和一段随机扰动 Uᵢ 共同决定,就像任何一道成品工序都由上游来料和当天运气共同决定。
  1. 内生变量 Vᵢ流水线上第 i 道工序的产出指标,比如“甜度”这个节点的取值,是由上游决定的。
    ViV_i
  2. 父节点集合 PAᵢ所有直接送入第 i 道工序的上游变量,比如糖量、烘焙时间都会直接影响甜度。
    PAiPA_i
  3. 外生扰动 Uᵢ工序内部无法观测的随机波动,相当于当天批次原料质量的随机起伏。
    UiU_i
  4. 生成函数 fᵢ描述父节点如何加工出当前变量的配方规则,比如“甜度 = 系数1×糖量 + 系数2×烘焙时间 + 扰动”。
    fi(⋅)\displaystyle f_i(\cdot)

do演算:伸手固定一道工序

厂长听传闻说“少放糖的蛋糕更好卖”。他不能直接拿超市里甜蛋糕和不甜蛋糕的销量对比——因为甜蛋糕往往用了进口奶油,卖得好是整体配方升级的结果,不赖糖。要得到真答案,他必须亲自走下产线,把糖量旋钮钉死在低位,其他工序一律不动,再观察销量变化。这个动作,和“挑出那些恰好不太甜的蛋糕看销量”完全是两回事。

在 SCM 里,“亲手固定旋钮”写作 do(X=x)。它和“看到 X=x”(条件概率)有本质区别:条件概率是被动筛选样本,do 是主动干预因果机制。执行 do 操作时,所有指向 X 的箭头都会被剪断——因为此刻 X 不再听上游的话,而是由你说了算。这就像你把糖罐从搅拌机上拆下来,自己往里面倒糖,原料仓库的波动再也影响不到糖量了。

可惜现实里很多干预没法直接做,比如你不能真的把全人类的性别改一遍再看信贷结果。这时就要请出后门准则:找到 X 和 Y 的共同祖先(混淆变量 Z),把它“按住不动”,再观察 X 对 Y 的净影响。这等价于把整条产线按原料批次分组,在同一批次内对比不同糖量的销量,批次差异就被抹平了。

do 演算就是厂长的手,后门准则就是帮他堵住“批次先混进去再说”的偷跑捷径。有了这把手术刀,像“把所有人的性别都改成男性会怎样”这种宇宙级的反事实问题,才有了严谨的答案。

P(Y∣do(X=x))=∑zP(Y∣X=x, Z=z) P(Z=z)\displaystyle P(Y \mid do(X=x)) = \sum_{z} P(Y \mid X=x,\, Z=z)\, P(Z=z)
这条后门调整公式告诉你:当无法直接干预 X 时,只要把混淆变量 Z 的每个水平都控制住、再按 Z 的自然分布加权平均,就能用观测数据估算出接近随机实验的因果效应。
  1. 干预分布 P(Y | do(X=x))强行把工序 X 的参数固定为 x 之后,下游 Y 的分布;它不是普通的条件概率。
    P(Y∣do(X=x))\displaystyle P(Y \mid do(X=x))
  2. 后门变量 ZX 与 Y 的共同祖先(混淆因素),比如原料批次同时影响糖量和好评,是必须堵住的“后门捷径”。
    ZZ
  3. 条件概率 P(Y | X=x, Z=z)在给定 X 被固定且 Z 取某个水平时,Y 的分布,相当于同一批次内的销量规律。
    P(Y∣X=x,Z=z)\displaystyle P(Y \mid X=x, Z=z)
  4. 按 P(Z=z) 加权求和把各个混淆水平下的效应按 Z 的自然出现比例加权平均,从而得到全局的干净因果效应。
    ∑z⋯ P(Z=z)\displaystyle \sum_{z} \cdots \, P(Z=z)

公平三问:谁在真正偏心

质检部报告:女质检员的打分普遍偏低。立刻开除她?且慢——调查发现,女质检员分到的原料批次本来就差。到底是她偏心,还是批次在捣鬼?算法歧视的争论与这件事完全同构:当模型对女性申请者给出更差结果,我们得追问——是性别这个节点直接动了手脚,还是经由收入、学历等中间变量“绕路”把偏见运到了终点?

SCM 把歧视精确拆成两条路径。直接歧视:敏感属性到决策结果之间存在一条直接因果边,相当于师傅看到性别就当场压分;间接歧视:敏感属性先影响中间变量(收入),中间变量再影响决策(还款),偏见通过“收入”这个搬运工悄悄渗透进结论。路径分解就是把总效应拆成直接效应与间接效应之和,逐条审计每条边的责任。

在此基础上,反事实公平给出了最强的定义:把同一个人的敏感属性翻转,预测结果必须不变。注意,这跟“让男女通过率一样”是两码事——前者要求每个人的因果路径都不被性别改写,后者只要求群体数字平衡,甚至可能靠压合格者的分来凑数。因果图让我们能把“公平”这个模糊的口号,变成可以逐边检查的工程指标。

公平不是要求蛋糕切成完全相同的八块,而是要求切蛋糕的那只手不因为“你是谁”而发抖。因果图帮我们把发抖的手定位到具体某道工序——接下来就可以对症下药了。

P(YA=1∣X=x)=P(YA=0∣X=x)\displaystyle P(Y_{A=1} \mid X=x) = P(Y_{A=0} \mid X=x)
反事实公平的判定式:对一个特征为 x 的申请人,把他放进“性别=1”和“性别=0”两个平行世界,模型给出的决策分布应当一致。
  1. 反事实变量 Y_{A=1}在“把敏感属性 A 强制设为 1”的平行世界里,决策 Y 会取什么值。
    YA=1Y_{A=1}
  2. 给定观测 X=x锁定某个真实申请人的其他特征不变,只翻转敏感属性这一个旋钮。
    X=xX=x
  3. 两组概率相等无论 A 取 1 还是 0,结果分布相同,说明决策没有被敏感属性改写。
    P(YA=1)=P(YA=0)\displaystyle P(Y_{A=1}) = P(Y_{A=0})

信贷审批:重建信用流水线

银行本质上也是一家蛋糕厂:申请人是原料,审批模型是流水线,成品是“还款能力”评级。在这条流水线上,性别、学历是上游原料,收入是中间工序,还款是成品质检。监管部门真正关心的问题是:性别对“质检结论”到底动了多少手脚?是光明正大地从性别直接压分,还是偷偷通过收入绕了一圈?

建模分三步走。第一步,请信贷专家画出 DAG:哪些变量直接影响哪些变量,箭头方向是什么;第二步,用历史数据拟合每道工序的结构方程,比如“收入 = 系数1×学历 + 系数2×性别 + 噪声”,“还款 = 系数3×收入 - 系数4×性别 + 噪声”。注意那条从性别直指还款的边,就是需要重点审计的敏感边;第三步,用 do 演算评估干预效果。

具体做法是:对全部样本执行 do(性别=男) 和 do(性别=女),比较两组成品分布的差异,得到性别对还款的总效应;再堵住“性别→还款”这条直接边,只保留“性别→收入→还款”的间接通道,对比两轮结果的差,就能算出直接效应。如果直接效应显著不为零,说明模型存在直接歧视——就像老师傅看到是谁做的蛋糕就直接打低分,必须剪掉这条边或重训模型。

信贷厂长最怕的不是蛋糕卖不好,而是“看人下菜”被曝光。SCM 给出的反事实合规报告,等于把每个工序的偏心程度打印成账单:直接效应多少、间接效应多少、修完还剩多少,一目了然。

招聘决策:审计简历传送带

招聘是另一条流水线:简历是原料,能力测评是质检工序,入职与晋升是成品。简历初筛模型经常被质疑“名校歧视”“地域歧视”,但真实的因果链往往更隐蔽:毕业院校影响第一份工作,第一份工作影响技能积累,技能影响绩效,绩效影响晋升——偏见可能藏在这条长长的传送带上任何一个环节。

代理路径识别是审计的第一步。居住小区、兴趣爱好、姓名用字这些特征,本身与绩效没有直接因果,却与敏感属性高度相关,能构成“性别→小区→通勤时长→绩效”这类绕路通道。因果审计要做的,是沿着 DAG 逐条路径做“切除实验”:删掉某条边之后,敏感属性对结果的传递效应是否显著下降?下降最多的边,就是偏心最重的工序。

公平修复也不是简单删特征——删掉性别字段只是摘掉了牌子,传送带还在。更稳妥的做法是:在结构方程里把敏感属性的系数清零,堵住直接边;或者把中介变量换成因果上合法、与敏感属性无关的替代工序;最彻底的是用反事实生成器给每个候选人造一个“性别翻转版本”,把它和原版本一起喂给模型,强制两者输出一致。

招聘流水线要保证的是“同样能力的人,无论从哪条传送带进来,成品等级都一样”。因果图让隐藏的偏心工序无处遁形,这才是算法招聘真正可信的地基。

反事实推理:重播平行时间线

一盒不合格的蛋糕被退回,老师傅盯着裱花台叹气:“如果当时没让实习生上手,这蛋糕会不会合格?”这个“如果当时”的问题,就是反事实推理。它问的不是“现在能做什么”,而是“另一个平行世界本来会发生什么”。算法拒绝了一位申请者,用户最想知道的也正是这句“如果……”。

SCM 给出了标准三步法。第一步外推(Abduction):用观测数据反推每个人身上的外生噪声,相当于还原当天每道工序的隐藏波动;第二步干预(Action):把目标变量强制改成假设值,比如把性别改成另一种;第三步预测(Prediction):拿着改过的变量,沿着结构方程把流水线重放一遍,得到反事实结果。三步缺一不可,顺序也不能乱。

反事实推理给算法决策装上了“后悔药制造机”:当系统拒绝一位申请者,你可以告诉他“如果你的收入达到某个值,结果就会反转”——这是最小改动建议,比一句“模型判的”有说服力得多。它不承诺完美,却承诺诚实,诚实到能说出差在哪一道工序、差多少。

YA=a(U)=fY(a, Ma(U), U)\displaystyle Y_{A=a}(U) = f_Y\big(a,\, M_a(U),\, U\big)
这条式子描述反事实世界的生成规则:把敏感属性固定为 a 后,中间变量 M 也要按新世界重新计算,只有外部噪声 U 保持在真实世界的原样——这就是“只改一件事”的严谨含义。
  1. 反事实决策 Y_{A=a}(U)把敏感属性 A 改为 a 后,流水线重新产出的决策结果。
    YA=a(U)Y_{A=a}(U)
  2. 中介变量改写 M_a(U)中间变量(如收入)也按新的 A 重新生成,体现偏见沿因果链的涟漪效应。
    Ma(U)M_a(U)
  3. 外生噪声 U 保持原样除敏感属性外,所有随机因素与真实世界完全一致,确保结论只归因于被改的那一个变量。
    UU

工程落地:把因果图搬进产线

图纸再美,也要变成量产。把 SCM 搬进真实算法系统的第一步,是构建因果图:以领域专家知识为主干——信贷专家、HR 业务方最清楚变量之间到底谁影响谁——再用因果发现算法和敏感性分析做交叉校验,避免漏掉关键混淆变量或画反箭头方向。这一步错了,后面所有审计结论都会跟着错。

第二步是数据与模型配套。结构方程的系数要用可解释的估计方法拟合,比如线性回归或非参数估计;要检查数据是否存在测量误差和采样偏差;干预效果要报告置信区间,而不是一个孤零零的数字。目前 DoWhy、CausalNex 等开源工具链已经把 DAG 建模、do 演算、反事实估计封装成了标准流水线,工程师不需要从零造轮子。

挑战同样真实:未观测的混淆变量无法从数据里完全排除;分布漂移会让学到的因果系数慢慢过期;因果图的错误假设会传导到所有下游审计结论。所以工程上要持续做敏感性分析和 A/B 验证,把因果结论当成“可证伪的假设”,而不是“最终判决”。

甜心蛋糕厂的经验告诉我们:真正可靠的产线,既要有好图纸,也要有质检员每隔一段时间重新校准工艺参数。SCM 落地同样如此——它不会一劳永逸地消灭偏见,但给了我们一张可以不断修正的因果地图。

AI 应用场景

场景1:信贷审批的公平性审计

阶段:模型审计与监管合规

解决的问题:传统风控团队用“删除敏感字段 + 统计均等性检查”应付监管,但代理变量绕路、混淆因素干扰让报告严重失真。SCM 把审批链路画成 DAG,用 do 演算分别测算直接效应与间接效应,精确定位性别直接施压的工序,并量化整改前后的改善幅度。

具体案例:某消费金融公司在合规季报中,用结构因果模型复盘 10 万笔申请,发现“性别→审批”直接效应不显著,但“性别→收入→审批”间接效应显著,于是调整收入这一中介工序的归一化口径,把间接歧视压低 40%。

场景2:招聘算法的反事实公平核查

阶段:模型公平性测试与修复

解决的问题:简历初筛模型上线前需要回答“同一候选人换个性别、换所学校,结果会不会变”。朴素 A/B 对比做不到,反事实推理可以在保留工序噪声的前提下重放流水线,为每一位候选人生成“平行世界版本”。

具体案例:某招聘平台对初筛模型做全量反事实测试,对每位候选人翻转性别属性后,发现约 12% 的候选人结果发生翻转;定位到“学校→第一份工作→技能→绩效”链条上的代理边后,用反事实样本扩充训练集,翻转率降至 3%。

场景3:营销投放的因果效果评估

阶段:策略评估与优化

解决的问题:想评估“给老用户发 8 折券”的真实效果,但领券用户与不领券用户本身有系统性差异(自选择偏差),直接对比转化率会严重高估。SCM 用后门准则控制消费习惯等混淆变量,给出接近随机实验的因果估计。

具体案例:某电商平台用 DAG 建模“优惠券→消费金额→复购”链路,按用户活跃度四等分做后门调整,发现真实增量比朴素对比低 35%,据此重新分配预算,ROI 提升 18%。

Python 演示

python60 行
import numpy as np  class LoanSCM:    """Credit approval causal pipeline:    Z(family)->E(edu), E->M(income), E->Y(repay),    A(gender)->M(income), A->Y(sensitive edge), M->Y(repay).    """     def __init__(self, n=5000, seed=42):        self.n = n        self.rng = np.random.default_rng(seed)     def generate(self):        n = self.n        rng = self.rng        z = rng.normal(0, 1, n)          # 家庭背景        a = rng.binomial(1, 0.5, n)      # 性别        u_e = rng.normal(0, 1, n)        # 学历噪声        u_m = rng.normal(0, 1, n)        # 收入噪声        u_y = rng.normal(0, 1, n)        # 还款噪声        e = 0.8 * z + u_e                # 学历 = f(家庭背景, 噪声)        m = 1.0 * e + 0.9 * a + u_m      # 收入 = f(学历, 性别, 噪声)        y = 0.7 * z + 0.5 * e + 0.6 * m - 0.4 * a + u_y  # 还款 = f(...)        return z, a, e, m, y, u_m, u_y     def counterfactual_repay(self, z, e, u_m, u_y, target_a):        m_cf = 1.0 * e + 0.9 * target_a + u_m        y_cf = 0.7 * z + 0.5 * e + 0.6 * m_cf - 0.4 * target_a + u_y        return y_cf     def backdoor_adjust(self, z, e, y):        cut = np.searchsorted(np.percentile(z, [25, 50, 75]), z)        med = np.median(e)        adj = 0.0        for k in range(4):            mask = cut == k            w = mask.mean()            gap = y[mask & (e >= med)].mean() - y[mask & (e < med)].mean()            adj += w * gap        return adj  def main():    scm = LoanSCM()    z, a, e, m, y, u_m, u_y = scm.generate()    naive_edu = y[e >= np.median(e)].mean() - y[e < np.median(e)].mean()    adj_edu = scm.backdoor_adjust(z, e, y)    y_cf = scm.counterfactual_repay(z, e, u_m, u_y, 1 - a)    unfair = (np.abs(y_cf - y) > 0.5).mean()    ate = (scm.counterfactual_repay(z, e, u_m, u_y, 1).mean() -           scm.counterfactual_repay(z, e, u_m, u_y, 0).mean())    print("naive education gap:", round(naive_edu, 3))    print("backdoor adjusted edu effect:", round(adj_edu, 3))    print("gender do-effect (ATE):", round(ate, 3))    print("counterfactual unfair rate:", round(unfair, 3))  if __name__ == "__main__":    main()
目的:在一条模拟的信贷因果流水线上同时演示三件事——后门准则如何修正混淆带来的虚假关联、do 演算如何估计性别的真实因果效应、反事实推理如何度量个体层面的不公平比例。
  1. class LoanSCM:把整条“蛋糕流水线”封装成一个对象,每个工序的配方(结构方程)都写在里面。
  2. z = rng.normal(0, 1, n)生成家庭背景这个混淆变量,它同时影响学历和还款,是后门路径的源头。
  3. m = 1.0 * e + 0.9 * a + u_m收入这道工序的配方:由学历、性别和随机噪声共同决定。
  4. y = 0.7 * z + 0.5 * e + 0.6 * m - 0.4 * a + u_y还款工序的配方,其中 -0.4 * a 就是那条待审计的敏感边。
  5. def counterfactual_repay(self, z, e, u_m, u_y, target_a):反事实重放:把性别换成目标值,噪声保持原样,只改一件事。
  6. cut = np.searchsorted(np.percentile(z, [25, 50, 75]), z)把混淆变量家庭背景分成四等份,为后门调整做准备。
  7. unfair = (np.abs(y_cf - y) > 0.5).mean()统计有多少人因性别翻转而还款结果大幅改变,即反事实不公平率。

常见误区

误区“我看到学历高的人还款率更高,所以学历就是还款能力的因,直接把它放进模型打分准没错。”

正解观测到的相关可能是混淆变量(如家庭背景)同时推高学历和还款率造成的虚假关联,也可能是反向因果。SCM 要求先画因果图,再用 do 演算或后门准则剥离混淆,才能谈“学历对还款的因果效应”。就像蛋糕卖得好可能只是因为包装好看,而不是糖放得对。

为何常见:人脑天生擅长从共现中总结规律,算法工程师在校验特征时也默认“相关即可用”,很少追问箭头方向。

误区“do(性别=女) 不就是只看女性组的数据吗?把样本筛出来算个均值就行。”

正解do 是强制干预,会剪断上游指向 X 的所有边;P(Y|X=x) 是被动筛选,X 的取值仍受混淆变量影响。两者只有在“X 完全随机、没有上游”时才相等。想评估干预效果,必须用 do 演算公式或随机实验,就像厂长必须亲手拧旋钮,而不是蹲在超市数销量。

为何常见:条件概率在机器学习里天天用,do 又是新概念,初学者最容易把“筛选”和“干预”混为一谈。

误区“模型输入里没有性别字段,总不可能歧视了吧?合规审查肯定能过。”

正解删除敏感属性只是拆掉了直接边,居住地、姓氏、毕业院校等代理变量仍携带性别信息,间接路径照常运转。因果审计要检查的是“敏感属性→任意特征→结果”的全部路径,而不仅是模型输入表。删掉糖罐并不能阻止甜度升高,关键要看整条工艺链。

为何常见:“眼不见为净”的直觉很符合人类心理,而且删除字段在工程上成本极低,容易让人误以为已经做了公平处理。

误区“只要男性和女性的通过率一样,模型就公平了;统计均等性是最靠谱的公平指标。”

正解统计均等性可能通过“故意压合格者的分”实现,反而伤害个体公平。反事实公平要求同一个人翻转敏感属性后结果不变,它尊重个体因果路径,而不是在群体层面做数字拼凑。就像要求每批蛋糕大小一样,不如保证切蛋糕的手不偏心。

为何常见:报表驱动的合规文化让人习惯看群体均值,而因果视角要求追问“每个人的结果是否被敏感属性改变”。

面试题

Q1. 结构因果模型用哪种结构刻画变量间的因果方向?

单选题 · easy

  • A.无向图结构
  • B.有向无环图← 正确答案
  • C.循环依赖图
  • D.完全连通图

答案:B。SCM 用 DAG 表达因果,箭头从上游指向下游且不允许成环,就像蛋糕厂的工艺图。无向图不区分方向,循环图违反因果时序,完全连通图无法识别有效路径。

Q2. do(X=x) 操作在流水线比喻中最接近哪种行为?

单选题 · easy

  • A.观察变量取值
  • B.固定旋钮到 x← 正确答案
  • C.删除变量 X
  • D.给 X 加噪声

答案:B。do(X=x) 是强制干预,把工序 X 的参数钉死在 x 并剪断上游影响,相当于厂长亲手拧旋钮。观察是被动筛选,删除和加噪声都不是干预动作,无法切断因果机制。

Q3. 后门准则解决的核心问题是?

单选题 · mid

  • A.样本量不足
  • B.混淆变量偏误← 正确答案
  • C.模型过拟合
  • D.特征共线性

答案:B。混淆变量同时影响 X 和 Y,使观测相关包含虚假成分。后门准则通过控制 Z 并加权平均剥离这种偏误。样本量、过拟合、共线性分别是数据、复杂度和特征层面的问题,与因果识别无关。

Q4. “性别→收入→还款”中性别对还款无直接边,这种不公称为?

单选题 · mid

  • A.直接歧视
  • B.间接歧视← 正确答案
  • C.反向歧视
  • D.算法幻觉

答案:B。没有直接因果边,歧视经由收入这个中间变量传递,属于间接歧视。直接歧视要求存在 A→Y 的敏感边;反向歧视指对优势群体反向倾斜;算法幻觉与因果路径无关。

Q5. 下列哪些特征可能充当敏感属性的代理变量?

多选题 · mid

  • A.居住小区← 正确答案
  • B.姓氏读音← 正确答案
  • C.毕业院校← 正确答案
  • D.随机编号

答案:ABC。居住小区、姓氏读音、毕业院校都可能与性别或种族等敏感属性强相关,且与结果没有直接因果,构成代理路径。随机编号不含语义信息,不构成代理。

Q6. 反事实公平的核心要求是?

单选题 · mid

  • A.各群体人数均等
  • B.翻转性别预测不变← 正确答案
  • C.各群准确率相同
  • D.属性特征独立

答案:B。反事实公平要求同一个人翻转敏感属性后预测结果不变,是“只改一件事”的平行世界检验。人数均等是统计均等,准确率相同是均等化机会,特征独立是相关性目标,都不是反事实判据。

Q7. 仅删除性别字段为何不足以保证公平?

多选题 · hard

  • A.代理变量仍传信息← 正确答案
  • B.模型可重构性别← 正确答案
  • C.因果路径仍存在← 正确答案
  • D.数据维度减少

答案:ABC。删除字段只是移除直接输入通道,代理变量仍携带信号,模型能从其他特征近似重构性别,原始数据生成机制中的因果路径依然运转。维度减少是结果而非问题本质。

Q8. 外生变量与内生变量的关键区别是?

单选题 · easy

  • A.外生由外部决定← 正确答案
  • B.外生由父节点定
  • C.内生不可被观测
  • D.内生没有噪声

答案:A。外生变量在 DAG 中没有父节点,由模型外部因素决定;内生变量有父节点,由结构方程生成。内生变量可观测,外生噪声也不一定不可观测,且内生变量同样含有噪声。

Q9. 反事实推理三步法的正确顺序是?

单选题 · hard

  • A.预测-干预-外推
  • B.外推-干预-预测← 正确答案
  • C.干预-外推-预测
  • D.外推-预测-干预

答案:B。必须先外推(由观测反推噪声),再干预(改写目标变量),最后预测(沿结构方程重放)。顺序颠会导致无法保证“只改一件事”,反事实结论就不成立。

Q10. 构建因果图时可依据哪些来源?

多选题 · hard

  • A.领域专家经验← 正确答案
  • B.随机对照实验← 正确答案
  • C.因果发现算法← 正确答案
  • D.纯相关分析

答案:ABC。因果图可以从专家知识、随机实验和因果发现算法中得到。纯相关分析只能发现共现关系,无法确定箭头方向,不能单独作为构图依据。