PC、FCI、GES和LiNGAM等多种算法用于寻找因果结构。一个基本问题是:它们实际表现如何?确定已发现因果图的准确性和可靠性与发现过程本身具有同等意义。这尤其困难,因为在多数情况下,真实的潜在因果图是未知的。对因果发现算法进行严格评测通常依赖于模拟研究或基准数据集,在这些数据集中,真实结构是已知的。在这种情况下,我们可以使用量化指标来比较估算图 ($\hat{G}$) 与真实图 ($G$)。图比较指标 (真实情况已知时)当您可以知道真实因果图时,有多种指标可以量化您的发现算法的性能。结构汉明距离 (SHD)最常用的指标是结构汉明距离 (SHD)。它衡量估算图与真实图之间的结构差异数量。具体来说,SHD 统计使估算图与真实图匹配所需的最小单边修改(添加、删除或反转)次数。设 $G = (V, E)$ 为真实图,$\hat{G} = (V, \hat{E})$ 为估算图,两者均在相同的顶点集 $V$ 上。SHD 通过比较它们的邻接矩阵计算得出。估算图 $\hat{G}$ 中的一条边 $A \rightarrow B$ 是:一个真阳性 (TP),如果 $A \rightarrow B$ 存在于 $G$ 中。一个假阳性 (FP),如果 $A \rightarrow B$ 不存在于 $G$ 中,且 $B \rightarrow A$ 也不存在于 $G$ 中。一条反向边,如果 $B \rightarrow A$ 存在于 $G$ 中。真实图 $G$ 中的一条边 $A \rightarrow B$ 是一个假阴性 (FN),如果 $A \rightarrow B$ 和 $B \rightarrow A$ 都不存在于 $\hat{G}$ 中。SHD 是将 $\hat{G}$ 转换为 $G$ 所需的边添加(FP)、删除(FN)和反转的总和。SHD 越低,匹配度越高。例如,如果真实图是 $A \rightarrow B \leftarrow C$,算法估算为 $A \rightarrow B \rightarrow C$,则 SHD 为 1(一条边反转:$B \leftarrow C$ 对比 $B \rightarrow C$)。digraph G { layout=neato; node [shape=circle, style=filled, fillcolor="#a5d8ff", fontname="helvetica", fontsize=10, margin=0.1, width=0.3, height=0.3]; edge [arrowhead=vee, penwidth=1.5, color="#495057", len=0.8]; A [pos="0,1!"]; B [pos="1,1!"]; C [pos="2,1!"]; subgraph cluster_0 { label = "真实图 (G)"; bgcolor="#e9ecef"; A_true [label="A", pos="0,1!"]; B_true [label="B", pos="1,1!"]; C_true [label="C", pos="2,1!"]; A_true -> B_true [color="#1c7ed6"]; C_true -> B_true [color="#1c7ed6"]; } subgraph cluster_1 { label = "估算图 (Ĝ)"; bgcolor="#e9ecef"; A_est [label="A", pos="0,0!"]; B_est [label="B", pos="1,0!"]; C_est [pos="2,0!"]; A_est -> B_est [color="#1c7ed6"]; B_est -> C_est [color="#f03e3e"]; // 错误方向的边 } }示例:比较真实图 ($A \rightarrow B \leftarrow C$) 与估算图 ($\hat{G}: A \rightarrow B \rightarrow C$)。SHD 为 1,因为存在一条反向边,$B \leftarrow C$ 对比 $B \rightarrow C$。精确率、召回率和 F1 分数借鉴分类评估方法,我们可以调整精确率、召回率和 F1 分数来评估边发现结果。这些指标通常基于骨架(通过忽略边方向获得的无向图)计算,有时也基于有向边本身计算。结构精确率: 估算图 $\hat{G}$ 中也存在于真实图 $G$ 中的边的比例(忽略方向)。 $$ \text{骨架精确率} = \frac{|\text{正确骨架}|}{|\text{估算图中的边}|} $$结构召回率: 真实图 $G$ 中也存在于估算图 $\hat{G}$ 中的边的比例(忽略方向)。 $$ \text{骨架召回率} = \frac{|\text{正确骨架}|}{|\text{真实图中的边}|} $$结构 F1 分数: 骨架精确率和召回率的调和平均值。 $$ F1_{\text{skel}} = 2 \cdot \frac{\text{Precision}{\text{skel}} \cdot \text{Recall}{\text{skel}}}{\text{Precision}{\text{skel}} + \text{Recall}{\text{skel}}} $$可以为方向准确性定义类似指标,仅关注在正确识别的邻接关系中,方向也正确识别的边。方向精确率: $\hat{G}$ 中所有有向边中,方向正确的边的比例。方向召回率: $\hat{G}$ 中方向正确的边相对于 $G$ 中所有有向边的比例。在没有真实情况下的评估在实践中,您很少知道真实的因果图。那么如何评估表现呢?敏感性分析: 评测所发现结构对算法超参数的敏感程度。对于基于约束的方法(如 PC 或 FCI),调整独立性测试的显著性水平($\alpha$)。对于基于分数的方法(如 GES),尝试不同的分数函数(例如 BIC、BDeu)。如果核心结构在合理的参数变化下保持稳定,这将增强可信度。算法比较: 应用多种具有不同基本假设的发现算法(例如,基于约束的方法如 FCI 和基于分数的方法如 GES,或者假设线性关系的方法如 LiNGAM 与不假设线性的方法)。由不同算法发现的一致结构特征更可能是真实的。差异之处能指出不确定区域或潜在的假设违背情况。行业知识: 咨询行业专家。发现的图是否与已有的知识或合理的机制一致?是否有看起来极不可能的边,或者强烈预期但缺失的边?这种定性评测不可或缺。Bootstrap 重采样: 将发现算法应用于从原始数据中提取的多个 Bootstrap 样本。分析特定边在不同样本的发现图中出现的频率。高频率出现的边被认为是可靠的。下游任务评估: 这是一种间接但实际的方法。使用发现的因果图来指导后续任务,例如构建预测模型(使用因果识别的特征)或估算治疗效果(使用图来识别混杂因素)。如果受因果信息指导的模型表现优于(例如,在新的环境中泛化能力更强,产生更合理的效应估算)忽略因果结构的基础模型,则这为所发现图的实用性(尽管不是绝对正确性)提供了证据。与干预数据的一致性: 如果有有限的干预数据(例如来自 A/B 测试或自然实验),检查已发现的观测图所隐含的因果关系是否与这些干预的观察效应一致。实际考量指标选择: 最好的指标取决于目标。SHD 提供单一的总体距离。精确率/召回率/F1 可以提供对特定错误类型(边过多或过少)的更多理解。图表示: 注意算法的输出。一些算法(如 PC)输出一个完全部分有向无环图 (CPDAG),它代表一个等价类,而其他算法可能输出一个特定的有向无环图 (DAG)。应恰当地应用指标(例如,SHD 可以适用于 CPDAGs)。计算成本: 一些评估方法,例如 Bootstrap,可能计算密集,尤其是在算法复杂或数据集较大时。评估因果发现算法本身就具有挑战性,因为真实情况常常缺失。结合量化指标(在模拟中)、鲁棒性检查、算法比较、行业知识验证以及下游任务表现评估,可以更全面地展现算法在特定应用中的成效。没有单一方法是万无一失的,因此通常建议采用多方面评估策略。