3、有向无环图(DAG):图模型基础、d-分离、后门准则与前门准则

好,咱们进入因果推断最核心的视觉化工具——有向无环图,简称 DAG。说实话,我入行头两年做风控模型,根本不知道这玩意儿。那时候就是堆特征、调参数,模型效果上不去就加更多特征,结果就是一团乱麻。直到后来接触了因果图,才明白什么叫「结构决定功能」。

3.1 图模型基础:为什么是 DAG?

DAG 说白了就是一张图,里面全是箭头,而且不能有环。箭头从原因指向结果,比如「收入 → 逾期概率」。为什么不能有环?你想想看,如果 A 导致 B,B 又导致 A,那到底谁先谁后?因果推断最讲究时间顺序,有环就乱套了。

我个人习惯把 DAG 当作「因果假设的说明书」。你在建模前,先把所有变量之间的因果关系画出来,后面所有分析都基于这张图。我在项目中遇到过最典型的例子:某次做信贷评分卡,业务方坚持要加入「客户投诉次数」这个特征。我画了个 DAG,发现投诉次数其实是「服务体验差」的结果,而服务体验差又和「收入低」相关。如果直接加进去,反而会引入混杂偏倚。

核心要点: DAG 中的节点代表变量,有向边代表因果关系。没有箭头相连的两个变量,在因果上独立。

画 DAG 有几个基本规则:

  • 节点:每个变量一个节点,可以是可观测的(如年龄、收入),也可以是潜变量(如信用意识)。
  • :有向边 A → B 表示 A 是 B 的直接原因。
  • 路径:沿着箭头方向走,叫有向路径;逆着箭头走,叫后门路径。
  • 碰撞点:两个箭头同时指向同一个节点,这个节点就是碰撞点。比如 X → Z ← Y,Z 就是碰撞点。

嗯,这里要注意:碰撞点是个坑。很多初学者以为两个变量都指向同一个节点,那它们肯定相关。其实恰恰相反——在没有控制 Z 的情况下,X 和 Y 是独立的。但一旦你控制了 Z,X 和 Y 反而会产生虚假相关。这个现象我后面会细说。

3.2 d-分离:判断条件独立的利器

d-分离,全称是「有向分离」。它用来判断:给定一组变量 Z,两个变量 X 和 Y 是否条件独立。说白了,就是看 Z 能不能阻断 X 和 Y 之间的所有路径。

判断规则其实就三条:

  1. 链式路径:X → Z → Y。如果控制了 Z,路径被阻断。X 和 Y 条件独立。
  2. 叉式路径:X ← Z → Y。同样,控制了 Z,路径被阻断。
  3. 碰撞点路径:X → Z ← Y。这里反直觉——不控制 Z 时,路径自然阻断;一旦控制了 Z,路径反而通了。

我曾经在风控项目中踩过这个坑。当时分析「学历」和「逾期率」的关系,发现两者在数据上显著相关。但画了 DAG 后发现,它们之间有个碰撞点「收入水平」。学历和逾期率都指向收入,但彼此独立。我一开始没控制收入,结果看到的是虚假相关。后来控制了收入,学历和逾期率的相关性就消失了。

避坑指南: 我曾经因为没搞懂碰撞点,在模型里加了一堆看似相关实则无关的特征,导致模型过拟合严重。记住:碰撞点控制后,反而会打开后门路径。

d-分离的实用价值在于:你可以用它来找出哪些变量需要控制,哪些不能控制。比如你想估计「利率 → 逾期率」的因果效应,就需要找到所有阻断后门路径的变量集合。

3.3 后门准则:如何消除混杂偏倚?

后门准则,是我在风控建模中最常用的工具。它的核心思想是:要估计 X 对 Y 的因果效应,需要控制所有从 X 到 Y 的后门路径上的变量。

什么叫后门路径?就是那些从 X 出发,逆着箭头走,最终到达 Y 的路径。这些路径上往往藏着混杂变量。比如「收入」既是「学历」的结果,又是「逾期率」的原因,那它就在学历和逾期率之间开了个后门。

后门准则的步骤很简单:

  1. 画出 DAG,标出所有变量。
  2. 找出所有从 X 到 Y 的后门路径。
  3. 找到一组变量 Z,能阻断所有后门路径。
  4. 控制 Z,然后估计 X 对 Y 的效应。

举个例子。假设我们要估计「信用卡额度 → 消费金额」的因果效应。后门路径可能是:额度 ← 收入 → 消费金额。这里收入就是混杂变量。控制收入后,额度对消费的效应就是干净的。

个人经验: 我建议在建模前,先用 DAG 把所有可能的混杂变量列出来。然后通过 d-分离判断哪些需要控制。别一股脑全加进模型,那样反而可能引入新的偏倚。

后门准则有个前提:你选择的控制变量 Z 不能是 X 的后代。换句话说,不能控制那些被 X 影响的变量。否则你会阻断因果路径的一部分,导致估计偏差。

3.4 前门准则:当后门走不通时

后门准则虽然好用,但有时候你找不到合适的控制变量。比如混杂变量不可观测,或者数据里没采集到。这时候前门准则就派上用场了。

前门准则的思路是:通过一个中间变量 M 来估计 X 对 Y 的效应。X 影响 M,M 影响 Y。只要我们能估计出 X → M 和 M → Y 的效应,就能间接算出 X → Y 的总效应。

前门准则需要满足三个条件:

  • X 通过 M 影响 Y,没有其他路径。
  • M 和 Y 之间没有未控制的混杂。
  • X 和 M 之间没有未控制的混杂。

我在实际项目中用过一次前门准则。当时要评估「短信提醒次数 → 还款率」的因果效应。但有个潜变量「客户责任心」同时影响提醒次数和还款率,而且无法观测。后门走不通。后来我发现「客户打开 APP 次数」是个很好的中间变量。提醒次数影响打开次数,打开次数影响还款率。用前门准则,我成功估计出了因果效应。

关键区别: 后门准则控制混杂变量,前门准则利用中间变量。后门需要可观测的混杂,前门需要可观测的中间变量。

前门准则的计算公式是:

P(Y|do(X=x)) = Σ_m P(M=m|X=x) * Σ_x' P(Y|X=x', M=m) * P(X=x')

看着复杂,其实逻辑很简单:先算 X 对 M 的效应,再算 M 对 Y 的效应,最后加权求和。

3.5 本章知识体系图

下面这张图总结了 DAG 的核心逻辑。我习惯把它当作因果推断的「地图」——先画图,再找路径,最后选准则。

DAG 核心知识体系 有向无环图 (DAG) 图模型基础 节点:变量(可观测/潜变量) 边:有向边表示因果关系 路径:有向路径 / 后门路径 / 碰撞点 d-分离 判断条件独立的规则 链式:X→Z→Y,控制Z阻断 叉式:X←Z→Y,控制Z阻断 碰撞点:X→Z←Y,不控制阻断 控制碰撞点会打开路径! 后门/前门准则 后门准则:控制混杂变量 阻断所有后门路径 前门准则:利用中间变量 当混杂不可观测时使用 不能控制X的后代变量 核心:先画图 → 找路径 → 选准则

3.6 实际应用中的避坑指南

最后,我分享几个实战中容易踩的坑:

  • 别把相关当因果:DAG 只是你的假设,不是真理。画图前先和业务方确认因果关系是否合理。
  • 小心遗漏变量:DAG 里漏掉一个关键混杂变量,整个分析就白做了。我习惯先列一个「所有可能变量」的清单,再逐步筛选。
  • 别过度控制:控制太多变量,反而可能引入 M-bias(M型偏倚)。用 d-分离仔细检查每个控制变量是否必要。
  • 前门准则慎用:前门准则对中间变量的要求很高,必须确保没有其他路径。我在项目中只用过一次,因为条件太苛刻。
我的习惯: 每次建模前,先花 30 分钟画 DAG。画完后和业务方过一遍,确认因果关系。这一步虽然费时间,但能避免后面走弯路。

好了,DAG 的基础就讲到这里。记住:图是工具,不是目的。关键是用它来理清因果结构,指导你的建模决策。下一章我们会聊更具体的因果效应估计方法,到时候这些图模型知识会派上大用场。


公众号:蓝海资料掘金营,微信deep3321