Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP, ENH] Add native implementation of GES #146

Draft
wants to merge 10 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .codespellignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
raison
wee
wee
ges
83 changes: 73 additions & 10 deletions doc/references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,32 @@ @article{Buhlmann2013
doi = {10.1214/14-AOS1260}
}

@article{chickering2002optimal,
title = {Optimal structure identification with greedy search},
author = {Chickering, David Maxwell},
journal = {Journal of machine learning research},
volume = {3},
number = {Nov},
pages = {507--554},
year = {2002}
}

@article{chickering2015selective,
title = {Selective greedy equivalence search: Finding optimal Bayesian networks using a polynomial number of score evaluations},
author = {Chickering, David Maxwell and Meek, Christopher},
journal = {arXiv preprint arXiv:1506.02113},
year = {2015}
}

@inproceedings{chickering2020statistically,
title = {Statistically efficient greedy equivalence search},
author = {Chickering, Max},
booktitle = {Conference on Uncertainty in Artificial Intelligence},
pages = {241--249},
year = {2020},
organization = {PMLR}
}

@article{Colombo2012,
author = {Diego Colombo and Marloes H. Maathuis and Markus Kalisch and Thomas S. Richardson},
title = {{Learning high-dimensional directed acyclic graphs with latent and selection variables}},
Expand All @@ -38,6 +64,24 @@ @inproceedings{correa2020calculus
year = {2020}
}

@article{hauser2012characterization,
title = {Characterization and greedy learning of interventional Markov equivalence classes of directed acyclic graphs},
author = {Hauser, Alain and B{\"u}hlmann, Peter},
journal = {The Journal of Machine Learning Research},
volume = {13},
number = {1},
pages = {2409--2464},
year = {2012},
publisher = {JMLR. org}
}

@article{heckerman2013learning,
title={Learning bayesian networks: The combination of knowledge and statistical data},
author={Heckerman, David and Geiger, Dan and Chickering, David Maxwell},
journal={arXiv preprint arXiv:1302.6815},
year={2013}
}

@article{Jaber2020causal,
title = {Causal discovery from soft interventions with unknown targets: Characterization and learning},
author = {Jaber, Amin and Kocaoglu, Murat and Shanmugam, Karthikeyan and Bareinboim, Elias},
Expand All @@ -47,6 +91,7 @@ @article{Jaber2020causal
year = {2020}
}


@article{Kocaoglu2019characterization,
title = {Characterization and learning of causal graphs with latent variables from soft interventions},
author = {Kocaoglu, Murat and Jaber, Amin and Shanmugam, Karthikeyan and Bareinboim, Elias},
Expand Down Expand Up @@ -75,19 +120,19 @@ @article{Meek1995
}

@inproceedings{Montagna2023a,
title={Scalable Causal Discovery with Score Matching},
author={Francesco Montagna and Nicoletta Noceti and Lorenzo Rosasco and Kun Zhang and Francesco Locatello},
booktitle={2nd Conference on Causal Learning and Reasoning},
year={2023},
url={https://openreview.net/forum?id=6VvoDjLBPQV}
title = {Scalable Causal Discovery with Score Matching},
author = {Francesco Montagna and Nicoletta Noceti and Lorenzo Rosasco and Kun Zhang and Francesco Locatello},
booktitle = {2nd Conference on Causal Learning and Reasoning},
year = {2023},
url = {https://openreview.net/forum?id=6VvoDjLBPQV}
}

@inproceedings{Montagna2023b,
title={Causal Discovery with Score Matching on Additive Models with Arbitrary Noise},
author={Francesco Montagna and Nicoletta Noceti and Lorenzo Rosasco and Kun Zhang and Francesco Locatello},
booktitle={2nd Conference on Causal Learning and Reasoning},
year={2023},
url={https://openreview.net/forum?id=rVO0Bx90deu}
title = {Causal Discovery with Score Matching on Additive Models with Arbitrary Noise},
author = {Francesco Montagna and Nicoletta Noceti and Lorenzo Rosasco and Kun Zhang and Francesco Locatello},
booktitle = {2nd Conference on Causal Learning and Reasoning},
year = {2023},
url = {https://openreview.net/forum?id=rVO0Bx90deu}
}

@book{Neapolitan2003,
Expand Down Expand Up @@ -279,6 +324,15 @@ @article{Sen2017model
year = {2017}
}

@inproceedings{scutari2016empirical,
title = {An empirical-Bayes score for discrete Bayesian networks},
author = {Scutari, Marco},
booktitle = {Conference on probabilistic graphical models},
pages = {438--448},
year = {2016},
organization = {PMLR}
}


@inproceedings{Yu2020Bregman,
title = {Measuring the Discrepancy between Conditional Distributions: Methods, Properties and Applications},
Expand Down Expand Up @@ -311,6 +365,15 @@ @inproceedings{Zhang2011

% Example refs

@book{koller2009probabilistic,
author = {Koller, Daphne and Friedman, Nir},
title = {Probabilistic Graphical Models: Principles and Techniques - Adaptive Computation and Machine Learning},
year = {2009},
isbn = {0262013193},
publisher = {The MIT Press},
abstract = {Most tasks require a person or an automated system to reasonto reach conclusions based on available information. The framework of probabilistic graphical models, presented in this book, provides a general approach for this task. The approach is model-based, allowing interpretable models to be constructed and then manipulated by reasoning algorithms. These models can also be learned automatically from data, allowing the approach to be used in cases where manually constructing a model is difficult or even impossible. Because uncertainty is an inescapable aspect of most real-world applications, the book focuses on probabilistic models, which make the uncertainty explicit and provide models that are more faithful to reality. Probabilistic Graphical Models discusses a variety of models, spanning Bayesian networks, undirected Markov networks, discrete and continuous models, and extensions to deal with dynamical systems and relational data. For each class of models, the text describes the three fundamental cornerstones: representation, inference, and learning, presenting both basic concepts and advanced techniques. Finally, the book considers the use of the proposed framework for causal reasoning and decision making under uncertainty. The main text in each chapter provides the detailed technical development of the key ideas. Most chapters also include boxes with additional material: skill boxes, which describe techniques; case study boxes, which discuss empirical cases related to the approach described in the text, including applications in computer vision, robotics, natural language understanding, and computational biology; and concept boxes, which present significant concepts drawn from the material in the chapter. Instructors (and readers) can group chapters in various combinations, from core topics to more technically advanced material, to suit their particular needs. Adaptive Computation and Machine Learning series}
}

@article{sachsdataset2005,
author = {Karen Sachs and Omar Perez and Dana Pe'er and Douglas A. Lauffenburger and Garry P. Nolan },
title = {Causal Protein-Signaling Networks Derived from Multiparameter Single-Cell Data},
Expand Down
1 change: 1 addition & 0 deletions dodiscover/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@
from .constraint import FCI, PC, PsiFCI
from .context import Context
from .context_builder import ContextBuilder, InterventionalContextBuilder, make_context
from .score import GreedyEquivalentSearch, ScoreFunction
2 changes: 2 additions & 0 deletions dodiscover/score/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from .ges import GreedyEquivalentSearch
from .score_function import ScoreFunction
Loading
Loading