DoWhy 简介#

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

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

支持的因果任务#

DoWhy 的 API 是围绕其支持用户执行的各种因果任务组织的。我们将任务分为估计因果效应量化因果影响根本原因分析与解释提出并回答假设问题以及预测分布外输入的输出。这些任务可以回答诸如“如果我把按钮的颜色改成红色,这会对用户的购买决策产生多大影响?”或“我的分布式系统中的哪个服务导致前端比平时慢?”等问题。

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

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

Visual navigation map to aid the user in navigating the user guide

测试因果分析的有效性#

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

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

对于图形化因果模型,还可以证伪关于潜在因果机制的某些假设,并在测试数据上评估其性能。更多详细信息请参阅评估 GCM

本用户指南的受众#

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

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