This is a simple library for inference in Bayesian Networks in C++. It implements some basic algorithms for working with Probabilistic Graphical Models (PGM). It is based on the online Stanford course "Probabilistic Graphical Models" on Coursera. There are no dependencies to other libraries, except GoogleTest.
- factor class (conditional probability table)
- factor product/sum
- (max) marginalization
- joint probability
- Variable Elimination algorithm (VE)
- Clique Tree algorithm (Junction Tree)
- cf. Junction Tree - Stanford CS228
- compute marginals
- compute MAP assignements (decoding)
- Dynamic Bayes Nets (DBN) - Hidden Markov Models (HMM)
- Influence Diagram (currently only one decision and one utility factor)
- learn how to do exact inference and solve decision problems
- efficient exact inference with the Clique Tree algorithm (Junction Tree)
- online inference with Dynamical Bayesian Networks (DBN)
- currently only discrete variables are supported
- currently only simple influence diagrams possible (one decision, one utility factor)
There is a tutorial explaining factor calculation and showing how to run inference on Bayesian Networks.
- Disease-Test (Bayes Theorem, factor calculation, variable elimination)
- Water Sprinkler (variable elimination, clique tree)
- Simple Bayesian Traffic Jam Detector (sensor fusion, Hidden Markov Model, Dynamic Bayesian Network)
- Markov Random Field grid sampling (Markov Random Field, Grid, Sampling)
see How to install, build and run
BayesNet is free software. It is released under the BSD Zero Clause License.
- Book: Machine Learning: a Probabilistic Perspective (Murphy)
- Thesis: Dynamic Bayesian Networks: Representation, Inference and Learning (Murphy)
- Book: Probabilistic Graphical Models: Principles and Techniques (Koller, Friedman)
- Video: Graphical Models - Christopher Bishop - Machine Learning Summer School 2013
- Lecture Notes: Standford CS 228 - Probabilistic Graphical Models
- Open Markov: Open-source software tool for Probabilistic Graphical Models in Java