Skip to main content

gCastle 是使用 Python 进行因果结构学习的基础包。

项目描述

g城堡

中文版本

版本 1.0.3 发布。

我们将于 2022/08/08 发布 1.0.3 版本。

介绍

gCastle是华为诺亚方舟实验室开发的因果结构学习工具链。该软件包包含与因果学习和评估相关的各种功能,包括:

  • 数据生成与处理:数据模拟、数据读取算子、数据预处理算子(如先验注入、变量选择)。
  • 因果结构学习:因果结构学习方法,包括经典的和最近开发的方法,尤其是可以处理大问题的基于梯度的方法。
  • 评价指标:因果结构学习常用的各种指标,包括F1、SHD、FDR、TPR、FDR、NNZ等。

算法列表

算法 类别 描述 地位
个人电脑 IID/基于约束的 基于条件独立性检验的经典因果发现算法 v1.0.3
ANM IID/基于函数的 具有加性噪声模型的非线性因果发现 v1.0.3
直接LiNGAM IID/基于函数的 一种线性非高斯无环模型(LiNGAM)的直接学习算法 v1.0.3
灵芝 IID/基于函数的 一种基于 ICA 的线性非高斯无环模型 (LiNGAM) 学习算法 v1.0.3
GES IID/基于分数 经典的贪心等价搜索算法 v1.0.3
盈亏 IID/基于函数的 基于后非线性因果假设的因果发现 v1.0.3
没有眼泪 IID/基于梯度 用于线性数据模型的基于梯度的算法(通常具有最小二乘损失) v1.0.3
NOTEARS-MLP IID/基于梯度 一种使用神经网络建模的非线性因果关系的基于梯度的算法 v1.0.3
NOTEARS-SOB IID/基于梯度 一种基于梯度的算法,使用 Sobolev 空间建模来处理非线性因果关系 v1.0.3
NOTEARS-低级 IID/基于梯度 使 NOTEARS 适应低秩因果图的大问题 v1.0.3
DAG-GNN IID/基于梯度 图神经网络的 DAG 结构学习 v1.0.3
魔像 IID/基于梯度 更高效的 NOTEARS 版本,可以减少优化迭代次数 v1.0.3
格兰达格 IID/基于梯度 一种使用神经网络建模的非线性加性噪声数据的基于梯度的算法 v1.0.3
MCSL IID/基于梯度 一种基于梯度的非线性加性噪声数据学习二元邻接矩阵算法 v1.0.3
GAE IID/基于梯度 一种基于梯度的算法,使用图自编码器对非线性因果关系进行建模 v1.0.3
强化学习 IID/基于梯度 一种基于 RL 的算法,可以使用灵活的评分函数(包括非平滑评分函数) v1.0.3
科尔 IID/基于梯度 一种基于 RL 和基于顺序的算法,可提高以前基于 RL 方法的效率和可扩展性 v1.0.3
TTPM EventSequence/基于函数的 基于拓扑霍克斯过程的时空事件序列因果结构学习算法 v1.0.3
高性能PCI 事件序列/混合 基于Hawkes过程和事件序列CI检验的因果结构学习算法 正在开发中。

安装

依赖项

gCastle 需要:

  • 蟒蛇 (>= 3.6, <=3.9)
  • tqdm (>= 4.48.2)
  • numpy (>= 1.19.1)
  • 熊猫 (>= 0.22.0)
  • scipy (>= 1.7.3)
  • scikit-learn (>= 0.21.1)
  • matplotlib (>=2.1.2)
  • 网络x (>= 2.5)
  • 火炬(>= 1.9.0)

画中画安装

pip install gcastle==1.0.3

使用示例(PC 算法)

from castle.common import GraphDAG
from castle.metrics import MetricsDAG
from castle.datasets import IIDSimulation, DAG
from castle.algorithms import PC

# data simulation, simulate true causal dag and train_data.
weighted_random_dag = DAG.erdos_renyi(n_nodes=10, n_edges=10, 
                                      weight_range=(0.5, 2.0), seed=1)
dataset = IIDSimulation(W=weighted_random_dag, n=2000, method='linear', 
                        sem_type='gauss')
true_causal_matrix, X = dataset.B, dataset.X

# structure learning
pc = PC()
pc.learn(X)

# plot predict_dag and true_dag
GraphDAG(pc.causal_matrix, true_causal_matrix, 'result')

# calculate metrics
mt = MetricsDAG(pc.causal_matrix, true_causal_matrix)
print(mt.metrics)

您可以访问示例以查找更多示例。

引文

如果您发现 gCastle 在您的研究中有用,请考虑引用以下论文

@misc{zhang2021gcastle,
  title={gCastle: A Python Toolbox for Causal Discovery}, 
  author={Keli Zhang and Shengyu Zhu and Marcus Kalander and Ignavier Ng and Junjian Ye and Zhitang Chen and Lujia Pan},
  year={2021},
  eprint={2111.15155},
  archivePrefix={arXiv},
  primaryClass={cs.LG}
}

下一步和贡献

这是 gCastle 的第一个发布版本,我们将不断补充和优化代码和文档。我们欢迎所有经验水平的新贡献者,关于如何贡献代码的规范即将发布。如果您有任何问题或建议(例如,贡献新算法、优化代码、改进文档),请在此处提交问题。我们会尽快回复。

项目详情


下载文件

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

源分布

gcastle-1.0.3.tar.gz (129.3 kB 查看哈希

已上传 source

内置分布

gcastle-1.0.3-py3-none-any.whl (214.9 kB 查看哈希

已上传 py3