Awesome
awesome-causality-algorithms ![Awesome](https://awesome.re/badge.svg)
An index of algorithms in
- machine learning for causal inference: solves causal inference problems
- causal machine learning: solves ML problems
Reproducibility is important! We will remove those methods without open-source code unless it is a survey/review paper.
Please cite our survey paper if this index is helpful.
@article{guo2020survey,
title={A survey of learning causality with data: Problems and methods},
author={Guo, Ruocheng and Cheng, Lu and Li, Jundong and Hahn, P Richard and Liu, Huan},
journal={ACM Computing Surveys (CSUR)},
volume={53},
number={4},
pages={1--37},
year={2020},
publisher={ACM New York, NY, USA}
}
Table of Contents
Toolboxes
Comprehensive
Name | Code | Comment |
---|---|---|
Trustworthy AI | Python | Causal Structure Learning, Causal Disentangled Representation Learning, gCastle (or pyCastle, pCastle). |
YLearn | Python | Python package for causal discovery,causal effect identification/estimation, counterfactual inference,policy learning,etc. |
Treatment Effect Estimation / Uplift Modeling
Name | Paper/Documentation | Venue | Code | Comment |
---|---|---|---|---|
DoWhy | Tutorial on Causal Inference and Counterfactual Reasoning | KDD 2018 | Python | Python library for causal inference that supports explicit modeling and testing of causal assumptions. |
EconML | Causal Inference and Machine Learning in Practice with EconML and CausalML | KDD 2021 | Python | Python package that applies the power of machine learning techniques to estimate individualized causal responses from observational or experimental data. |
CausalML | Causalml: Python package for causal machine learning | arxiv | Python | Uplift modeling and causal inference with machine learning algorithms |
JustCause | Underlying thesis | NA | Python | For evaluation of heterogeneous treatment effect estimators on common reference as well as synthetic data. |
WhyNot | Documentation | NA | Python | An experimental sandbox for causal inference and decision making in dynamics. |
scikit-uplift | Documentation and User guide for uplift modeling | NA | Python | Uplift modeling in scikit-learn style in python. |
Causal Discovery
Name | Paper | Code | Comment |
---|---|---|---|
Bench Press | Benchpress: a scalable and versatile workflow for benchmarking structure learning algorithms for graphical models | Code | Reproducible and scalable execution and benchmarks of 41 structure learning algorithms supporting multiple language |
causal-learn | NA | Python | Causal Discovery for Python. A translation and extension of TETRAD. |
TETRAD R/Java | TETRAD-A Toolbox FOR CAUSAL DISCOVERY | R/Java | Causal Discovery Toolbox from CMU |
Causaldag | NA | code | Python package for the creation, manipulation, and learning of Causal DAGs |
CausalNex | NA | Python | A toolkit for causal reasoning with Bayesian Networks. |
CausalDiscoveryToolbox | Causal Discovery Toolbox: Uncover causal relationships in Python | Python |
Rootcause Analysis
Name | Paper | Code | Comments |
---|---|---|---|
Chaos Genius | NA | Python | ML powered analytics engine for outlier/anomaly detection and root cause analysis. |
Causal Effect Estimation
Survey Papers
Name | Paper | Venue |
---|---|---|
A survey on causal inference | TKDD |
With i.i.d Data
Individual Treatment Effect (ITE) / Conditional Average Treatment Effect (CATE)
Deep Learning based methods
Name | Paper | Venue | Code |
---|---|---|---|
TARNet, Counterfactual Regression | Estimating individual treatment effect: generalization bounds and algorithms | ICML 2017 | Python |
BNN, BLR | Learning representations for counterfactual inference | ICML 2016 | Python |
Causal Effect VAE | Causal effect inference with deep latent-variable models | Neurips 2017 | Python |
Dragonnet | Adapting neural networks for the estimation of treatment effects. | Neurips 2019 | Python |
SITE | Representation Learning for Treatment Effect Estimation from Observational Data | Neurips 2018 | Python |
GANITE | GANITE: Estimation of Individualized Treatment Effects using Generative Adversarial Nets | ICLR 2018 | Python |
Perfect Match | Perfect match: A simple method for learning representations for counterfactual inference with neural networks | arxiv | Python |
Intact-VAE | Intact-VAE: Estimating treatment effects under unobserved confounding | ICLR 2022 | code |
CausalEGM | CausalEGM: a general causal inference framework by encoding generative modeling | arxiv | Python |
Classic Methods
Tree based Methods
Name | Paper | Code |
---|---|---|
Causal Forest | Wager, Stefan, and Susan Athey. "Estimation and inference of heterogeneous treatment effects using random forests." JASA (2017). | code R, code Python |
Causal MARS, Causal Boosting, Pollinated Transformed Outcome Forests | S. Powers et al., “Some methods for heterogeneous treatment effect estimation in high-dimensions,” 2017. | code R, code R |
Bayesian Additive Regression Trees (BART) | Hill, Jennifer L. "Bayesian nonparametric modeling for causal inference." Journal of Computational and Graphical Statistics 20, no. 1 (2011): 217-240. | Python |
Meta Learner
Average Treatment Effect (including ATT and ATC)
Instrumental Variable (IV)
Does-Response Curve (Continuous Treatment)
Vectorized Treatments
Name | Paper | Code |
---|---|---|
Causal Effect Inference for Structured Treatments | Jean Kaddour, Qi Liu, Yuchen Zhu, Matt J. Kusner, Ricardo Silva. "Causal Effect Inference for Structured Treatments", In NeurIPS 2021. | Python |
Multiple Causes
Name | Paper | Code |
---|---|---|
Deconfounder | Wang, Yixin, and David M. Blei. "The blessings of multiple causes." arXiv preprint arXiv:1805.06826 (2018). | Python |
Multiple Outcomes
Name | Paper | Code |
---|---|---|
Multiple Responses in Uplift Models | Weiss, Sam. Estimating and Visualizing Business Tradeoffs in Uplift Models | Python |
Non-i.i.d Data
Panel Data / Time Series
Network Data (with or without Interference)
Causal Machine Learning
Surveys
Name | Paper | Code |
---|---|---|
CausalML | Jean Kaddour, Aengus Lynch, Qi Liu, Matt J. Kusner, Ricardo Silva. "Causal Machine Learning: A Survey and Open Problems" arXiv preprint arXiv:2206.15475 (2022). | NA |
OoD Generalization
Name | Paper | Code |
---|---|---|
DomainBed | Gulrajani, Ishaan, and David Lopez-Paz. "In Search of Lost Domain Generalization." In International Conference on Learning Representations. 2020. | code |
WILDS | Koh, Pang Wei, Shiori Sagawa, Henrik Marklund, Sang Michael Xie, Marvin Zhang, Akshay Balsubramani, Weihua Hu et al. "Wilds: A benchmark of in-the-wild distribution shifts." In International Conference on Machine Learning, pp. 5637-5664. PMLR, 2021. | code |
IBM OoD | Repository for theory and methods for Out-of-Distribution (OoD) generalization by IBM Research | code |
OoD Bench | Ye, Nanyang, Kaican Li, Lanqing Hong, Haoyue Bai, Yiting Chen, Fengwei Zhou, and Zhenguo Li. "Ood-bench: Benchmarking and understanding out-of-distribution generalization datasets and algorithms." arXiv preprint arXiv:2106.03721 (2021). | code |
BEDS-Bench | Avati, Anand, Martin Seneviratne, Emily Xue, Zhen Xu, Balaji Lakshminarayanan, and Andrew M. Dai. "BEDS-Bench: Behavior of EHR-models under Distributional Shift--A Benchmark." arXiv preprint arXiv:2107.08189 (2021). | code |
Survey THU | Shen, Zheyan, Jiashuo Liu, Yue He, Xingxuan Zhang, Renzhe Xu, Han Yu, and Peng Cui. "Towards out-of-distribution generalization: A survey." arXiv preprint arXiv:2108.13624 (2021). | NA |
Graph OoD Generalization
Name | Paper | Code |
---|---|---|
CIGA | Chen, Yongqiang, Yonggang Zhang, Yatao Bian, Han Yang, Kaili Ma, Binghui Xie, Tongliang Liu, Bo Han, and James Cheng. "Learning Causally Invariant Representations for Out-of-Distribution Generalization on Graphs." In Advances in Neural Information Processing Systems (2022). | code |
Survey THU | Li, Haoyang, Xin Wang, Ziwei Zhang, and Wenwu Zhu. "Out-of-distribution generalization on graphs: A survey." arXiv preprint arXiv:2202.07987 (2022). | NA |
Recommendation Systems
Inverse Propensity Scoring / Doubly Robust
Hidden Confounding
Domain Adaptation
Name | Paper | Code |
---|---|---|
Causal Embedding for Recommendation | Bonner, Stephen, and Flavian Vasile. "Causal embeddings for recommendation." In Proceedings of the 12th ACM Conference on Recommender Systems, pp. 104-112. ACM, 2018. (BEST PAPER) | Python |
Domain Adversarial Matrix Factorization | Saito, Yuta, and Masahiro Nomura. "Towards Resolving Propensity Contradiction in Offline Recommender Learning." In IJCAI 2022 | code |
Disentanglement
Name | Paper | Code |
---|---|---|
Causal Embedding for User Interest and Conformity | Zheng, Y., Gao, C., Li, X., He, X., Li, Y., & Jin, D. (2021, April). Disentangling User Interest and Conformity for Recommendation with Causal Embedding. In Proceedings of the Web Conference 2021 (pp. 2980-2991). | Python |
Learning to Rank
Off-line Policy Evaluation/Optimization (for Contextual Bandit or RL)
Natural Language Processing
Counterfactual Explanations
Counterfactual Fairness
Reinforcement Learning
Name | Paper | Code |
---|---|---|
Deconfounded RL | Lu, Chaochao, Bernhard Schölkopf, and José Miguel Hernández-Lobato. "Deconfounding reinforcement learning in observational settings." arXiv preprint arXiv:1812.10576 (2018). | Python |
Vansteelandt, Stijn, and Marshall Joffe. "Structural nested models and G-estimation: the partially realized promise." Statistical Science 29, no. 4 (2014): 707-731. | NA | |
Counterfactual-Guided Policy Search (CF-GPS) | Buesing, Lars, Theophane Weber, Yori Zwols, Sebastien Racaniere, Arthur Guez, Jean-Baptiste Lespiau, and Nicolas Heess. "Woulda, Coulda, Shoulda: Counterfactually-Guided Policy Search." arXiv preprint arXiv:1811.06272 (2018). | NA |
Multi-Armed Bandit/Causal Bandit
Causal Discovery
for i.i.d. Data
Classic Methods
Name | Paper | Code |
---|---|---|
IC algorithm | Python | |
PC algorithm | P. Spirtes, C. Glymour, and R. Scheines. Causation, Prediction, and Search. The MIT Press, 2nd edition, 2000. | Python R Julia |
FCI algorithm | P. Spirtes, C. Glymour, and R. Scheines. Causation, Prediction, and Search. The MIT Press, 2nd edition, 2000. | R Julia |
Continuous Optimization
Paper | Venue | Code |
---|---|---|
DAGs with NO TEARS: Continuous optimization for structure learning | NeurIPS 2018 | code |
DAG-GNN: DAG Structure Learning with Graph Neural Networks | ICML 2019 | code |
Learning Sparse Nonparametric DAGs | AISTATS 2020 | code |
Amortized Inference for Causal Structure Learning | Neurips 2022 | code |
Learning IV
Name | Paper | Code |
---|---|---|
Learning instrumental variables with structural and non-gaussianity assumptions | JMLR | code |
Distinguishing Cause from Effect (Bivariate)
Name | Paper | Code |
---|---|---|
BMLiNGAM | S. Shimizu and K. Bollen. Bayesian estimation of causal direction in acyclic structural equation models with individual-specific confounder variables and non-Gaussian distributions. Journal of Machine Learning Research, 15: 2629-2652, 2014. | Python |
Sloppy | Marx, A & Vreeken, J Identifiability of Cause and Effect using Regularized Regression. In: Proceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD), ACM, 2019. | R |
RECI | Blöbaum, Patrick, Dominik Janzing, Takashi Washio, Shohei Shimizu, and Bernhard Schölkopf. "Cause-effect inference by comparing regression errors." In International Conference on Artificial Intelligence and Statistics, pp. 900-909. PMLR, 2018. | in CausalDiscoveryToolbox |
bQCD | Tagasovska, Natasa, Valérie Chavez-Demoulin, and Thibault Vatter. "Distinguishing cause from effect using quantiles: Bivariate quantile causal discovery." In International Conference on Machine Learning, pp. 9311-9323. PMLR, 2020. | code |
CGNN | Goudet, Olivier, Diviyan Kalainathan, Philippe Caillou, Isabelle Guyon, David Lopez-Paz, and Michele Sebag. "Learning functional causal models with generative neural networks." In Explainable and interpretable models in computer vision and machine learning, pp. 39-80. Springer, Cham, 2018. | code |
Conditional Independence Tests (for Constraint-based Algorithms)
Name | Paper | Code |
---|---|---|
RCIT | R |
Causal Discovery with Probabilistic Logic Programming
Name | Paper | Code |
---|---|---|
Causal PSL | Sridhar, Dhanya, Jay Pujara, and Lise Getoor. "Scalable Probabilistic Causal Structure Discovery." In IJCAI, pp. 5112-5118. 2018. | Java |
Scalable Ensemble Causal Discovery
Name | Paper | Code |
---|---|---|
Scalable and Hybrid Ensemble-Based Causality Discovery | Pei Guo, Achuna Ofonedu, Jianwu Wang. "Scalable and Hybrid Ensemble-Based Causality Discovery." In Proceedings of the 2020 IEEE International Conference on Smart Data Services (SMDS), pp. 72-80. | Python |
with Temporal Data
Name | Paper | Code |
---|---|---|
TCDF: Temporal Causal Discovery Framework | Nauta, Meike, Doina Bucur, and Christin Seifert. "Causal discovery with attention-based convolutional neural networks." Machine Learning and Knowledge Extraction. | Pytorch |