DoWhy简介#

就像机器学习库为预测所做的那样,DoWhy 是一个旨在激发因果思维和分析的 Python 库。DoWhy 提供了多种算法,用于效应估计、预测、因果影响的量化、因果结构学习、因果结构诊断、根本原因分析、干预和反事实推理。 DoWhy 的一个关键特性是其反驳 API,可以测试任何估计方法的因果假设,从而使推理更加稳健,并且对非专家更加易于理解。

DoWhy 支持通过后门、前门、工具变量等识别方法估计平均因果效应,并通过与 EconML 库的集成估计条件效应(CATE)。此外,DoWhy 还支持通过利用图形因果模型回答超出效应估计的因果问题,这些问题包括根本原因分析或因果影响的量化。

支持的因果任务#

DoWhy 的 API 围绕不同的因果任务进行组织,这些任务使用户能够执行。我们将任务分类为估计因果效应量化因果影响根本原因分析和解释提出和回答假设性问题,以及预测分布外输入的结果。 这些任务回答了诸如“如果我将按钮颜色更改为红色,这将如何改变用户的购买决策?”或“我的分布式系统中的哪个服务导致前端比平时慢?”等问题。

为了执行任务,DoWhy 利用了两个强大的框架,即图形因果模型(GCM)和潜在结果(PO),具体取决于手头的任务。大多数任务的共同点是它们需要一个因果图,该图是根据问题领域建模的。因此,本用户指南从建模因果关系开始。

请参阅以下图表,快速了解本用户指南中涵盖的一些DoWhy功能:

帮助用户导航用户指南的视觉导航地图

测试因果分析的有效性#

由于因果任务涉及一个通常未被观察到的干预数据分布,我们需要特殊的方法来评估因果估计的有效性。来自预测机器学习的交叉验证等方法并不适用,除非我们能获取干预分布的样本。因此,对于每个因果任务,分析的一个重要部分是测试所获得的答案是否有效。在DoWhy中,我们称这个过程为反驳,它涉及反驳或挑战因果分析所做的假设。反驳在两个阶段进行:在建模因果图之后,以及在完成任务的因果分析之后。

在第一阶段,图反驳测试编码在给定因果图中的假设是否有效。这是一组重要的反驳,因为所有下游分析都依赖于该图。这些反驳通常是任务无关的,我们建议运行它们以提高假设图的质量。DoWhy的反驳因果图功能在反驳因果图中描述(另见用户给定的有向无环图的证伪以获取替代方法)。对于效应估计问题,第二种反驳,即估计反驳,在任务分析返回因果估计后进行。这些反驳测试分析是否遵循最佳实践,在特殊测试数据下提供正确答案,以及最终估计对假设违反的鲁棒性。估计反驳可以帮助提高分析的鲁棒性或帮助在分析中的多个候选模型之间进行选择。我们在单独的章节反驳因果估计中讨论估计反驳。

在图形因果模型的情况下,人们还可以验证关于潜在因果机制的某些假设,并评估它们在测试数据上的表现。更多详情请参见评估GCM

本用户指南适用于谁#

如果您是因果推断的新手,本用户指南将帮助您理解不同的因果任务,并提供如何使用DoWhy实现这些任务的示例。

如果您熟悉因果推断,可以直接跳转到代码示例。 要查看DoWhy的实际应用,请查看如何将其应用于估计订阅或奖励计划对客户的影响[奖励笔记本] 以及在基准数据集上实现和评估因果推断方法,例如 婴儿健康与发展计划 (IHDP) 数据集,婴儿死亡率(双胞胎) 数据集,以及Lalonde Jobs数据集。 有关使用图形因果模型进行根本原因分析的入门示例,请查看微服务架构中的根本原因分析笔记本在线商店中的因果归因和根本原因分析笔记本。 有关完整的示例笔记本列表,请参见示例笔记本