跳转到主要内容

未提供项目描述

项目描述

Causica CI Build Open in Dev Containers

Causica

概述

因果机器学习使个人和组织能够做出更好的数据驱动决策。特别是,因果机器学习使我们能够回答关于潜在行动对结果影响的“如果……将怎样”的问题。

因果机器学习是一个新兴领域,我们的目标是实现一个可扩展的、灵活的、适用于现实世界的端到端因果推断框架。具体来说,我们通过在因果发现、因果推断和深度学习之间架起桥梁来实现这一目标。我们的目标是开发出一种技术,仅使用现有的观测数据就能自动化因果决策,并同时输出发现的因果关系和估计行动的效果。

Causica是一个端到端因果推断的深度学习库,包括因果发现和推断。它实现了深度端到端推断框架 [2] 和不同的替代方案。

该项目将干预决策与观测决策分开,参考了在此找到的Azua存储库 Azua

本代码库已经进行了大量重构,您可以在这里找到之前的版本。

DECI:端到端因果推理

安装

Causica存储库位于PyPI上,因此您可以使用pip安装。

pip install causica

关于

现实世界的基于数据的决策需要因果推理来确保得出结论的有效性。然而,通常很难事先完美了解相关变量背后的因果关系的知识。DECI允许最终用户在不完全了解因果图的情况下进行因果推理。这是通过在单个模型中将因果发现和因果推理步骤相结合来实现的。DECI接受观测数据并输出ATE和CATE估计。

有关更多信息,请参阅论文

模型描述

DECI是一个生成模型,它使用加性噪声结构方程模型(ANM-SEM)来捕捉变量和外部噪声之间的功能关系,同时学习一个关于因果图的变分分布。具体来说,变量之间的关系通过灵活的神经网络来捕捉,而外部噪声则被建模为高斯噪声或spline-flow噪声模型。SEM是可逆的,这意味着我们可以通过前向模拟从一个外部噪声向量生成一个观测向量,并且给定一个观测向量,我们可以恢复一个唯一的对应外部噪声向量。从这个意义上说,DECI SEM可以被视为从外部噪声到观测的流动。我们采用图上的平均场近似后验分布,它与通过优化证据下界(ELBO)学习的变量之间的功能关系一起学习。此外,DECI支持在部分观测数据下学习。

基于模拟的因果推理

DECI通过对其学习的因果图应用相关干预措施(即切断干预变量的入边)并从生成模型中进行采样来估计因果量(ATE)。这个过程涉及首先从学习的噪声分布中采样一个外部噪声向量,然后前向模拟SEM直到获得一个观测向量。可以通过使用蒙特卡洛样本估计干预分布的效果变量的期望来计算ATE。

如何运行

最佳起点是examples/multi_investment_sales_attribution.ipynb笔记本。它解释了如何使用PyTorch Lightning来拟合模型并测试ATE和ITE结果。

有关组件的更详细介绍以及它们如何组合在一起,请参阅examples/csuite_example.ipynb笔记本,以了解如何训练DECI模型并检查因果发现。

这将从CSuite Azure blob存储中下载数据并在其上训练DECI。有关CSuite数据集的更多信息,请参阅这里。该笔记本适用于任何可用的CSuite数据集。

指定噪声模型

可以通过更改TrainingConfig中的noise_dist字段来修改外部噪声模型,允许高斯或spline。

高斯模型具有高斯外部噪声分布,其均值为0,方差是学习得到的。

Spline模型使用从数据中学习到的灵活的spline flow。在重尾噪声设置中,该模型提供了最大的收益,其中高斯模型可能会过拟合到异常值,但训练时间可能更长。

使用已知的因果图

为了使用DECI学习功能关系,从损失中删除变分分布项,并用已知图替换采样。

使用CLI的示例

一个示例,说明如何使用配置文件src/causica/config/lightning/default_gaussian.yaml中指定的噪声分布和配置文件src/causica/config/lightning/default_data.yaml中指定的数据配置来运行训练作业。

python -m causica.lightning.main \
    --config src/causica/config/lightning/default_gaussian.yaml --data src/causica/config/lightning/default_data.yaml

进一步扩展

目前,我们从代码库中移除了Rhino和DDECI,但它们将重新加入。您仍然可以访问之前发布的版本这里

参考文献

如果您已使用我们代码库中的模型,请考虑引用相应的论文

[1],(VISL) Pablo Morales-Alvarez, Wenbo Gong, Angus Lamb, Simon Woodhead, Simon Peyton Jones, Nick Pawlowski, Miltiadis Allamanis, Cheng Zhang, "Simultaneous Missing Value Imputation and Structure Learning with Groups", ArXiv预印本

[2],(DECI) Tomas Geffner, Javier Antoran, Adam Foster, Wenbo Gong, Chao Ma, Emre Kiciman, Amit Sharma, Angus Lamb, Martin Kukla, Nick Pawlowski, Miltiadis Allamanis, Cheng Zhang. Deep End-to-end Causal Inference. ArXiv预印本 (2022)

[3],(DDECI) Matthew Ashman, Chao Ma, Agrin Hilmkil, Joel Jennings, Cheng Zhang. Causal Reasoning in the Presence of Latent Confounders via Neural ADMG Learning. ICLR (2023)

[4],(Rhino) Wenbo Gong, Joel Jennings, Cheng Zhang, Nick Pawlowski. Rhino: Deep Causal Temporal Relationship Learning with History-dependent Noise. ICLR (2023)

开发

Poetry

我们使用Poetry来管理项目依赖,它们在pyproject.toml中指定。要安装Poetry,请运行

    curl -sSL https://install.python-poetry.org | python3 -

要安装环境,请运行poetry install,这将创建一个虚拟环境,您可以通过运行poetry shellpoetry run {command}来使用它。它也是一个您可以通过常规方式与之交互的虚拟环境。

有关Poetry的更多信息,请参阅这里

mlflow

我们使用mlflow来记录指标和工件。默认情况下,它将在本地运行并将结果存储在./mlruns中。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

causica-0.4.2.tar.gz (103.9 kB 查看散列)

上传时间

构建分布

causica-0.4.2-py3-none-any.whl (142.9 kB 查看散列)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面