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
查看哈希)
内置分布
gcastle-1.0.3-py3-none-any.whl
(214.9 kB
查看哈希)