趋近智
观察性数据为因果发现提供依据,但仅依赖它常会带来根本性不确定。多个有向无环图(DAG)可以表示数据中观察到的一组条件独立性。这些图构成一个马尔可夫等价类(MEC)。若无额外信息,仅凭观察性数据通常无法分辨MEC内的真实因果结构。在此背景下,干预数据变得不可或缺。干预能主动操控系统,提供被动观察无法得到的因果方向直接证据。
设想一个含X、Y、Z三个变量的简单系统。假设观察性数据显示,给定Y时X和Z条件独立(X⊥Z∣Y),但X和Y相关,Y和Z相关。这种独立性结构与同一MEC内的多个DAG兼容,其中包括:
仅凭观察性数据无法区分这些结构。但进行干预则改变了局面。想象我们可以干预Y,将其值设定为一个特定常数y′,记作do(Y=y′)。此操作在真实图中有效移除了所有指向Y的因果箭头。
通过观察干预分布P(X,Z∣do(Y=y′))中的(不)独立性,我们有可能区分这些结构。例如,如果干预Y后X和Z保持相关,我们可以排除前两种结构。
下图说明了在干预下观察独立性如何帮助区分两个观察性等价图。
对比同一MEC中的两个图。观察性数据显示两者均为X⊥Z∣Y。干预Y(红色节点)会切断入向边。在上方结构(X→Y→Z)中,Y→Z路径仍保持活跃,可能保留相关性。在下方结构(X←Y→Z)中,来自Y的两条路径均被干预切断,导致X⊥Z。
干预在性质和范围上可能有所不同,提供不同种类的信息:
几种因果发现算法旨在利用干预提供的额外信息:
基于约束的扩展(例如,PC/FCI的修改版): 标准的基于约束的算法依赖于对观察性数据的条件独立性测试。当有干预数据时,这些测试可应用于对应特定干预的数据子集。对于一次完美干预do(Xk=xk′),我们知道在该子集中Xk没有父节点。此信息可用于确定观察性MEC中先前无方向边的方向。例如,如果X−Y是基于观察性数据的无向边,但我们观察到在do(Y=y′)下X和Y变为独立,这暗示方向为X→Y。FCI(快速因果推断)处理潜在混杂因素,也能纳入干预数据以完善所得的部分祖先图(PAG)。
基于分数的扩展(例如,GIES): 贪婪干预等价搜索(GIES)扩展了贪婪等价搜索(GES)算法。GES使用评分(如BIC)在MEC空间中进行搜索。GIES修改了评分过程以处理混合的观察性数据和干预数据。它假设干预目标已知。候选图的评分通常通过对不同数据状态(观察性及各种干预)的评分求和来计算,其中每个状态的似然项考虑了干预下的修改图结构(即移除完美干预节点的入向边)。
分数(G,D)=j=0∑m局部分数(G,Dj)其中D0是观察性数据集,Dj(j>0)是在不同干预状态下的数据集,且局部分数评估(可能已修改的)图G与数据Dj的匹配程度。
不变因果预测(ICP): ICP使用来自多个“环境”或“设置”的数据。这些环境可能自然形成(如来自不同地点的数据),或由干预明确生成。核心思想是,目标变量Y的真实因果预测因子Pa(Y)在这些环境中保持不变,即条件分布P(Y∣Pa(Y))是稳定的。非因果预测因子(如后代或通过混杂相关的变量)可能表现出在不同环境中变化的统计关系。ICP寻找一组预测因子S,使得条件分布P(Y∣XS)在所有观察到的环境中保持不变。当存在干预但可能未完美描述时,此方法特别有用。
通常,最有效的方法是同时使用观察性数据和干预数据。观察性数据提供广泛覆盖,并辅助识别初始MEC。随后可以设计或应用定向干预,以解决该类中剩余的不确定性。如GIES等算法便是为此混合环境明确设计的。
处理组合数据时,正确组织其结构很重要。通常这包括汇集数据并添加列,以指示每个样本的干预状态。
import pandas as pd
# 示例观察性数据
obs_data = pd.DataFrame({
'X': [0.1, 1.1, -0.5, ...],
'Y': [0.5, -0.2, 1.8, ...],
'Z': [-1.0, 0.8, 0.1, ...],
'intervention_target': ['None'] * n_obs
})
# 示例干预数据(对Y进行干预)
int_data_Y = pd.DataFrame({
'X': [0.3, -1.2, 0.7, ...],
'Y': [10.0] * n_int_Y, # 通过干预固定的值
'Z': [0.6, -0.9, 1.1, ...],
'intervention_target': ['Y'] * n_int_Y
})
# 组合数据集
combined_data = pd.concat([obs_data, int_data_Y], ignore_index=True)
# 与发现函数一起使用
# from causallearn.search.ScoreBased.gies import gies
# 假设'gies'函数可接受干预目标信息
# result = gies(combined_data[['X', 'Y', 'Z']].values,
# intervention_targets=combined_data['intervention_target'].tolist())
# 'result'将包含关于习得图结构的信息
如果您有资源进行干预,一个问题便出现:哪些干预信息量最大?因果发现中的最优实验设计,旨在选择一系列干预,以最有效率地解决当前估计MEC或PAG中的不确定性。这通常涉及识别预期能最大限度减少与数据一致的可能因果结构数量的干预。这是一个高级议题,常涉及复杂的评分或信息论标准。
尽管功能强大,但使用干预数据也伴随难题:
尽管存在这些难题,干预打破对称性并确定边方向的能力,使得干预数据成为因果发现的宝贵资源,克服了纯粹观察性方法的局限。当有干预数据时,集成它能显著增强对推断因果结构的信心。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造