【Causality】因果图入门

文章介绍了因果图的概念,强调了在决策过程中理解因果关系的重要性。因果发现是通过数据和先验知识重建因果对的过程,其中涉及到的算法需解决因果图的识别问题。D-separation和马尔可夫性是判断变量间因果关系的关键,而CPDAG则用于表示马尔科夫等价类。文章还讨论了结构因果模型和各种图的特性,如祖先图和部分祖先图在处理潜在混杂因素中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这部分主要讲了causal discovery的算法描述和图论相关表达。下一篇会整理intervention相关的理论,欢迎大家一起学习。

初始因果发现

了解系统中现象的规律实际上就是以因果的角度取建模变量间的内在联系。尤其在进行决策时,我们需要考虑干预(intervention)造成的潜在影响。实际上, 一个研究的主要目的往往都是在评估一个“动作”(action)的影响,而不是关联性。因此,因果研究的过程时,往往也是将决策的影响划分为因果影响和非因果影响的过程。

当因果图(causal graph)未知时,我们则尝试用数据和先验知识来重现因果对(cause-effect pairs)。这种学习带有因果解释性的图结构的过程就称为因果发现(causal discovery),是因果的一个分支,是从数据中辨别和评价因果效应并且用因果图呈现的学科。

因果图用一条从因指向果的箭头表达因果性,在表达上非常有效。与深度学习算法不同,因果学习是数据驱动的方法,具有无与伦比的可解释性,能够让研究者对研究问题有更深的理解。

因果发现问题

因果发现问题可以描述为为给定的数据寻找一个因果图作为可能的因果关系解释。数学语言表示为设 G G G为数据集 D D D的变量集 V V V定义的一个图结构集, G ∗ ∈ G G^* \in G GG是数据集 D D D生成的真实的但是未知的图。

因果发现算法

我们说一个算法可以解决(solve)一个因果发现问题当且仅当它能够在现有的数据集和先验知识的情况下可以收敛至(converge to)真实的图 G ∗ G^* G。对于因果发现算法有很多的描述。我们认为一个算法是sound的当他可以解决一个因果发现问题;它是complete的当它能够找到最具信息量的因果图。而一个图是最具信息量(most informative)的当且仅当在没有提供其他信息的情况下,该图未确定方向的边无法确定方向,已经确定方向的边无法更改方向。一个算法是具有一致性(consistent)的当它输出的图对应的概率分布总是与输入的数据一致;是具有可识别性(identifiable)的当它能够决定因果图任意边的方向。但这是比较困难的,一般的因果学习算法可以在马尔可夫等价类(markov equivalence class)层面具有可识别性,而马尔科夫等价类的具体表达为CPDAG,这些在定义部分都会阐释。

因果图模型的相关定义

因果图

因果图是由因果关系组成的图结构表达,这也是与贝叶斯网络不同的地方。颠倒贝叶斯网络中的一个边也许会得到相同的概率分布,对于贝叶斯网络来说没有区别。但是对于因果图来说则是彻底改变了因果机制(变量间的因果关系)

因果边假设

因果图中每个变量X的值完全由一个关于其父变量的函数决定:
X : = f ( P a ( x ) ) , ∀ X ∈ V X:= f(Pa(x)), \forall X \in V X:=f(Pa(x)),XV

结构因果模型

也称为结构方程模型,由一个元组 M = ( V , U , F , P ) M=(V,U, F,P) M=(V,U,F,P),其中:

  • V V V是内生的变量.
  • U U U是外生的变量,每个 V V V都有一个 U U U作为父变量;
  • F F F是一个函数集,其中的方程 f ∈ F : ( V ∪ U ) p → V f \in F:(V \cup U)^p \rightarrow V fF:(VU)pV,其中 p p p表示f的参数数量;
  • P P P是外生变量的概率分布假设.

马尔可夫性

一个图具有马尔可夫性,或者说可以做概率因子分解,当其对应的联合概率分布可以被递归分解为:
P ( V ) = ∏ X ∈ V P ( X ∣ P a ( X ) ) P(V) = \prod_{X \in V}P(X|Pa(X)) P(V)=XVP(XPa(X))

D-faithfulness

当概率的独立性可以由图的独立性表达时,我们称图具有D-faithfulness,即
X ⊥ P Y ∣ Z ⇒ X ⊥ G Y ∣ Z X\perp _PY|Z \Rightarrow X\perp_GY|Z XPYZXGYZ,
其中Z是 V ∖ X Y V \setminus XY VXY的子集。

D-separation

用于测试对于任意忠实于因果图G的概率P,在给定Z的情况下,X是否条件独立于Y。具体表现为Z阻断了所有X和Y之间的路径。路径主要有以下几种形式:

  • X ← Z → Y X \leftarrow Z \rightarrow Y XZY是一个叉结构,
  • X → Z → Y X \rightarrow Z \rightarrow Y XZY是一个链结构,
  • X → Z ← Y X \rightarrow Z \leftarrow Y XZY是一个对撞结构。

π \pi π表示X到Y的一个路径,则 π \pi π会被Z阻断当 π \pi π包含了:

  • 叉结构 X ← Z → Y X \leftarrow Z \rightarrow Y XZY或链结构 X → Z → Y X \rightarrow Z \rightarrow Y XZY且中间节点Z被观测,或
  • 对撞结构 X → Z ← Y X \rightarrow Z \leftarrow Y XZY且中间节点Z及其子节点都未被观测。

如下图所示,当Z未被观测时,X和Y是独立的。而X与S想实现条件独立,必须观测Z。
在这里插入图片描述

CPDAG

Partially DAG既包含了有向边(directed edge)又包含了非有向边(undirected edge)。因此,PDAG可以将因果对与未知的因果关系区别开。

Skeleton 是将PDAG所有有向边转化为非有向边后的产物。V-structure则是一个元组 X → Z ← Y X \rightarrow Z \leftarrow Y XZY,其中X与Y不相邻。在PDAG中,v-structure解码了概率分布的条件独立。不可反向边(compelled edge)是任意边满足当该边逆转方向时,会增加或删除v-structure。其他边则称为可逆转边(reversible edge)。

等价类(equivalence class)的性质是设置任意非有向边的方向都不会导致概率分布的变化。

Observational markov equivalence 是指两个DAG G和H图应有相同的seleton和v-structure,记作 G ≡ H G\equiv H GH,意味着改变可转向边的方向虽然导致了不同的机构但是具有相同的因子分解。此时G和H属于同一马尔可夫等价类。

Completed PDAG(CPDAG),也称作essential graph或者最大有向图, 是任意PDAG当所有的有向边都是不可反向边而所有非有向边都是可逆转边。CPDAG是马尔科夫等价类的通常表达。

下图是一个有向图及其等价类图。其中 B → D ← C B\rightarrow D\leftarrow C BDC之间形成了对撞结构。 A → B A \rightarrow B AB A → C A \rightarrow C AC即使转变方向也不会出现新的v-structure,因此是可以转向边,需要变为undirected edge。 D → E D\rightarrow E DE转变方向会出现新的v-structure B → D ← E B\rightarrow D \leftarrow E BDE C → D ← E C\rightarrow D \leftarrow E CDE,因此也是不可转向边(compelled edge),应为有向边。
在这里插入图片描述

Ancestral graph

混合图(Mixed graph)是包含有向边、无向边和双向边的图。双向边 X ↔ Y X\leftrightarrow Y XY便是X是Y的一个对偶集合(节点),记作 X ∈ S p ( Y ) X \in Sp(Y) XSp(Y)。混合图中,叉结构、链结构和对撞结构只有在双向边中才能修改。

M-separation是指对于混合图G中的一个路径 π \pi π和观测变量集V的子集Z, π \pi π被Z阻断当且仅当 π \pi π包含:

  • 非对撞结构而中间变量被观测(包含在Z中),或者
  • 对撞结构但中间变量或其子节点都未被观测。
    我们称Z m-分离了X和Y当Z将所有连接X和Y的路径都阻断了。

祖先图(Ancestral graph)是一个无环混合图,且当有一个双向边连接了X和Y,那么X和Y之间就不存在其他的又向路径。

最大化祖先图(Maximal Ancestral graph)是一个祖先图当不相邻的节点间都是m-separated的。MAG的马尔可夫等价类由部分祖先图表示。对于等价类中的MAG,同一位置的标记一致相同,称为不变标记。

在混合图中我们不再关注边,而关注端点的标记。如一个 → \rightarrow 可以分解为尾标记(-)和一个箭头标记(>)。而部分祖先图(partial ancestral graph)是一个包含了尾标记(-),箭头(><)和圆标记(o)的图。将图G的等价类记作集合[G],那么

  • G有与[G]相同的骨架(邻接矩阵),并且
  • G中的尾标记和箭头标记都是不变标记。

根据上面两条,显然,PAG中圆标记也是不变的,因此,PAG也是MAG的马尔科夫等价类中最具信息量(most informative)的图,常用作表示MAG的马尔科夫等价类。因此与CPDAG一样满足complete的定义。

祖先图可以可能涉及潜在混杂因素和/或选择偏差的数据生成过程,而不明确地建模未观察变量。PAG的解释非常复杂:

  1. X → Y X \rightarrow Y XY):X导致了Y但Y没有导致X,X和Y之间可能有未被观测的干扰变量。
  2. X ↔ Y X \leftrightarrow Y XY):X与Y之间没有因果关系且必存在一个未被观测的干扰变量同时为X和Y的父节点(因)。
  3. X ∘ → Y X \circ \rightarrow Y XY):两种情况:X导致了Y;X与Y之间没有因果关系且必存在一个未被观测的干扰变量同时为X和Y的父节点。
  4. X ∘ − ∘ Y X \circ -\circ Y XY):三种情况:X导致了Y;Y导致了X;X与Y之间没有因果关系且必存在一个未被观测的干扰变量同时为X和Y的父节点。

下图是混合图(MG)及其部分祖先图(PAG)。
在这里插入图片描述

### 因果推断的学习路径与资源 #### 一、基础知识入门 因果推断是一门结合统计学、计算机科学和哲学的跨学科领域。为了深入理解其核心概念和技术,建议从以下几个方面入手: 1. **理论基础** 掌握概率论和统计学的基础知识是学习因果推断的前提条件。特别是贝叶斯定理、条件独立性和联合分布等内容至关重要[^3]。 2. **因果图模型** 因果图Causal Graphs)是一种直观表示变量间因果关系的方式。熟悉DAG(Directed Acyclic Graphs)、父节点、子节点及其在因果推断中的意义是非常重要的[^1]。 #### 二、推荐书籍 以下是几本经典的因果推断教材,适合不同层次的学习者: - **《The Book of Why》 by Judea Pearl**: 这本书提供了因果推理的核心理念和发展历史,非常适合初学者阅读。 - **《Causality: Models, Reasoning and Inference》 by Judea Pearl**: 更加学术化的一本书籍,涵盖了因果推断的主要理论框架和技术细节[^3]。 - **《Elements of Causal Inference》 by Jonas Peters et al.**: 结合了现代机器学习技术和传统因果推断方法的内容,特别强调了两者之间的联系[^4]。 #### 三、在线课程 对于希望通过视频讲解来加深理解的人群来说,在线课程是一个不错的选择: - Coursera上的“Causal Inference”系列课程由哈佛大学开设,全面介绍了从基本定义到高级应用的知识点。 - edX平台也有类似的专题讲座,通常会附带编程作业以便于实践所学到的概念。 #### 四、实用工具介绍 掌握合适的软件包可以让研究过程事半功倍: - **DoWhy Python Library**: 提供了一个统一接口来进行各种类型的因果分析操作,包括估计效应大小、检测偏差等步骤[^1]。 - **Scikit-Learn**: 尽管主要用于常规ML任务,但它也可以用来构建简单的预测模型作为因果推断的一部分组成部分[^1]。 #### 五、具体算法实例 下面给出一个简单例子展示如何使用Python实现基本的因果效应估算功能: ```python import dowhy.api as dwy_api from sklearn.linear_model import LinearRegression # 创建数据集 data = {"treatment": [0, 1], "outcome":[5,8]} df = pd.DataFrame(data) # 定义因果模型并识别共同原因 model=dwy_api.CausalModel( data=df, treatment='treatment', outcome='outcome' ) identified_estimand=model.identify_effect() # 使用回归拟合法求解ATE(平均处理效果) estimate=model.estimate_effect( identified_estimand, method_name="backdoor.linear_regression", control_value=0, treated_value=1, target_units="ate" ) print("Estimated ATE:", estimate.value) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值