awesome-causality-algorithms
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 | Paper | Code |
---|---|---|
Trustworthy AI | This repository aims to include trustworthy AI related projects from Huawei Noah's Ark Lab. Current projects include:Causal Structure Learning, Causal Disentangled Representation Learning, gCastle (or pyCastle, pCastle). | Python |
YLearn | YLearn, a pun of “learn why”, is a python package for causal learning which supports various aspects of causal inference ranging from causal discovery,causal effect identification, causal effect estimation, counterfactual inference,policy learning,etc. | Python |
Treatment Effect Estimation / Uplift Modeling
Name | Paper | Code |
---|---|---|
DoWhy | Amit Sharma and Emre Kiciman. "Tutorial on Causal Inference and Counterfactual Reasoning." In ACM SIGKDD 2018 | Python |
EconML | "Causal Inference and Machine Learning in Practice with EconML and CausalML" In EconML/CausalML KDD 2021 Tutorial | Python |
Uber CausalML | Chen, Huigang, et al. "Causalml: Python package for causal machine learning." arXiv preprint arXiv:2002.11631 (2020). | Python |
JustCause | For evaluation of heterogeneous treatment effect estimators on common reference as well as synthetic data. Underlying thesis | Python |
WhyNot | An experimental sandbox for causal inference and decision making in dynamics. Documentation | Python |
scikit-uplift | Uplift modeling in scikit-learn style in python. Documentation and User guide for uplift modeling | Python |
Causal Discovery
Name | Paper | Code |
---|---|---|
Bench Press | Reproducible and scalable execution and benchmarks of 41 structure learning algorithms supporting multiple language | Code |
causal-learn | Causal Discovery for Python. A translation and extension of TETRAD. | Python |
TETRAD toolbox | Ramsey, Joseph D., Kun Zhang, Madelyn Glymour, Ruben Sanchez Romero, Biwei Huang, Imme Ebert-Uphoff, Savini Samarasinghe, Elizabeth A. Barnes, and Clark Glymour. "TETRAD-AToolbox FOR CAUSAL DISCOVERY." | R |
Causaldag | Python package for the creation, manipulation, and learning of Causal DAGs | code |
CausalNex | A toolkit for causal reasoning with Bayesian Networks. | Python |
Tetrad | Tetrad is a modular, object-oriented program for causal inference. | Java |
CausalDiscoveryToolbox | Kalainathan, Diviyan, and Olivier Goudet. "Causal Discovery Toolbox: Uncover causal relationships in Python." arXiv preprint arXiv:1903.02278 (2019). | Python |
Other Applications
Name | Paper | Code |
---|---|---|
Chaos Genius | ML powered analytics engine for outlier/anomaly detection and root cause analysis. | Python |
Causal Effect Estimation
With i.i.d Data
Individual Treatment Effect (ITE) / Conditional Average Treatment Effect (CATE)
Deep Learning based methods
Classic Methods
Name | Paper | Code |
---|---|---|
Propensity Score Matching | Rosenbaum, Paul R., and Donald B. Rubin. "The central role of the propensity score in observational studies for causal effects." Biometrika 70, no. 1 (1983): 41-55. | Python |
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)
Name | Paper | Code |
---|---|---|
Network Deconfounder | Guo, Ruocheng, Jundong Li, and Huan Liu. "Learning Individual Causal Effects from Networked Observational Data." WSDM 2020. | Python |
Causal Inference with Network Embeddings | Veitch, Victor, Yixin Wang, and David M. Blei. "Using embeddings to correct for unobserved confounding." arXiv preprint arXiv:1902.04114 (2019). | Python |
Linked Causal Variational Autoencoder (LCVA) | Rakesh, Vineeth, Ruocheng Guo, Raha Moraffah, Nitin Agarwal, and Huan Liu. "Linked Causal Variational Autoencoder for Inferring Paired Spillover Effects." CIKM 2018. | Python |
Method-of-moments Estimators | Li, Wenrui, Daniel L. Sussman, and Eric D. Kolaczyk. "Causal Inference under Network Interference with Noise." arXiv preprint arXiv:2105.04518 (2021). | code |
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
Amortized Causal Discovery
Name | Paper | Code |
---|
Learning IV
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 |