gCastle | 华为诺亚方舟实验室自研的因果结构学习工具链
Posted 叶庭云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gCastle | 华为诺亚方舟实验室自研的因果结构学习工具链相关的知识,希望对你有一定的参考价值。
文章目录
CSDN 叶庭云:https://yetingyun.blog.csdn.net/
一、简介和安装
gCastle 是华为诺亚方舟实验室自研的因果结构学习工具链,主要的功能和愿景包括:
- 数据生成及处理:包含各种模拟数据生成算子,数据读取算子,数据处理算子(如先验注入,变量选择)。
- 因果图构建:提供了一个因果结构学习 Python 算法库,包含了主流的因果学习算法以及最近兴起的基于梯度的因果结构学习算法。
- 因果评价:提供了常用的因果结构学习性能评价指标,包括 F1、SHD、FDR、TPR、FDR、NNZ 等。
Github 地址:https://github.com/huawei-noah/trustworthyAI/tree/master/gcastle
论文地址:gCastle: A Python Toolbox for Causal Discovery
目前最新版本为:1.0.3。已实现的算法,如下列表所示:
算法 | 分类 | 说明 | 状态 |
---|---|---|---|
PC | IID/Constraint-based | 一种基于独立性检验的经典因果发现算法 | v1.0.3 |
ANM | IID/Function-based | 一种非线性的加性噪声因果模型 | v1.0.3 |
DirectLiNGAM | IID/Function-based | 一种线性非高斯无环模型的直接学习方法 | v1.0.3 |
ICALiNGAM | IID/Function-based | 一种线性非高斯无环模型的因果学习算法 | v1.0.3 |
GES | IID/Score-based | 一种经典的基于贪婪等价搜索的结构学习算法 | v1.0.3 |
PNL | IID/Funtion-based | 一种基于后非线性假设的因果发现方法 | v1.0.3 |
NOTEARS | IID/Gradient-based | 一种基于梯度、针对线性数据模型的因果结构学习算法 | v1.0.3 |
NOTEARS-MLP | IID/Gradient-based | 一种深度可微分、基于神经网络建模的因果结构学习算法 | v1.0.3 |
NOTEARS-SOB | IID/Gradient-based | 一种深度可微分、基于 Sobolev 空间建模的因果结构学习算法 | v1.0.3 |
NOTEARS-lOW-RANK | IID/Gradient-based | 基于low rank假定、针对线性数据模型的因果结构学习算法 | v1.0.3 |
DAG-GNN | IID/Gradient-based | 一种基于 GNN 的因果结构学习算法 | v1.0.3 |
GOLEM | IID/Gradient-based | 一种基于 NOTEARS、通过减少优化循环次数提升训练效率的因果结构学习算法 | v1.0.3 |
GraNDAG | IID/Gradient-based | 一种深度可微分、针对非线性加性噪声数据模型的因果结构学习算法 | v1.0.3 |
MCSL | IID/Gradient-based | 一种基于掩码梯度的因果结构学习算法 | v1.0.3 |
GAE | IID/Gradient-based | 一种基于图自编码器的因果发现算法 | v1.0.3 |
RL | IID/Gradient-based | 一种基于强化学习的因果发现算法 | v1.0.3 |
CORL | IID/Gradient-based | 一种基于强化学习搜索因果序的因果发现方法 | v1.0.3 |
TTPM | EventSequence/Function-based | 一种针对时空事件序列的基于时空 Hawkes Process 的因果结构学习算法 | v1.0.3 |
HPCI | EventSequence/Hybrid | 一种针对时序事件序列的基于 Hawkes Process 和 CI tests 的因果结构学习算法 | 开发中 |
gCastle 工作流程图如下示意:
gCastle 获取和安装。相关的依赖库如下:
python (>= 3.6, <=3.9)
tqdm (>= 4.48.2)
numpy (>= 1.19.1)
pandas (>= 0.22.0)
scipy (>= 1.7.3)
scikit-learn (>= 0.21.1)
matplotlib (>=2.1.2)
networkx (>= 2.5)
torch (>= 1.9.0)
我安装配置环境的 requirements.txt 如下:
typer==0.7.0
pyvis==0.3.1
loguru==0.6.0
pandas==1.5.2
gcastle==1.0.3
numpy==1.21.2
scipy==1.9.3
networkx==2.7.1
numexpr==2.8.3
scikit-learn==1.1.2
tqdm==4.61.2
cd 切换到指定目录,pip install -r requirements.txt 即可安装好所有依赖库和 gCastle。并且可以指定 backend 为 “pytorch”。
You can use `os.environ['CASTLE_BACKEND'] = backend` to set the backend(`pytorch` or `mindspore`).
去找到 miniconda3/lib/python3.8/site-packages/castle/__init__.py
加入这一行并保存:os.environ['CASTLE_BACKEND'] = "pytorch"
合作和贡献:欢迎大家使用 gCastle,该项目尚处于起步阶段,欢迎各个经验等级的贡献者,近期官方将公布具体的代码贡献规范和要求。当前有任何疑问及建议,包括修改 Bug、贡献算法、完善文档等,请在社区提交 Issues,官方会及时回复交流。
如果您想在公开的研究成果中使用 gCastle,请考虑引用如下论文:
@misczhang2021gcastle,
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
二、算法使用实践
Python 代码示例如下:
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=2023)
dataset = IIDSimulation(W=weighted_random_dag,
n=2000, method='linear',
sem_type='gauss')
true_causal_matrix, X = dataset.B, dataset.X
# PC methods 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)
'fdr': 0.0, 'tpr': 1.0, 'fpr': 0.0, 'shd': 0, 'nnz': 7, 'precision': 0.5833, 'recall': 1.0, 'F1': 0.7368, 'gscore': 0.2857
结果如下:
gCastle 简洁易用,是很好的 Python 语言的因果结构学习工具链。
还可以学习官方给出的更多示例:https://github.com/huawei-noah/trustworthyAI/tree/master/gcastle/example
参考链接:
- 微信公众号文章 | 诺亚开源因果结构学习工具包 gCastle
- 集智俱乐部 | 因果科学算法、框架、数据集汇总
- 集智俱乐部 | 面向因果规律的表示学习新方法—因果表征学习最新攻略
- Github gCastle 中文 README
- Youtube 视频 张可力 | CastleBoard: The GUI for gCastle
以上是关于gCastle | 华为诺亚方舟实验室自研的因果结构学习工具链的主要内容,如果未能解决你的问题,请参考以下文章
AI简报20220114期AI for Science催生科研新范式华为诺亚Transformer后量化技术...