Quick start guide

This short guide shows the key steps in using BayesPy for variational Bayesian inference by applying BayesPy to a simple problem. The key steps in using BayesPy are the following:

  • Construct the model

  • Observe some of the variables by providing the data in a proper format

  • Run variational Bayesian inference

  • Examine the resulting posterior approximation

To demonstrate BayesPy, we’ll consider a very simple problem: we have a set of observations from a Gaussian distribution with unknown mean and variance, and we want to learn these parameters. In this case, we do not use any real-world data but generate some artificial data. The dataset consists of ten samples from a Gaussian distribution with mean 5 and standard deviation 10. This dataset can be generated with NumPy as follows:

>>> import numpy as np
>>> data = np.random.normal(5, 10, size=(10,))

Constructing the model

Now, given this data we would like to estimate the mean and the standard deviation as if we didn’t know their values. The model can be defined as follows:

\begin{split}
p(\mathbf{y}|\mu,\tau) &= \prod^{9}_{n=0} \mathcal{N}(y_n|\mu,\tau) \\
p(\mu) &= \mathcal{N}(\mu|0,10^{-6}) \\
p(\tau) &= \mathcal{G}(\tau|10^{-6},10^{-6})
\end{split}

where \mathcal{N} is the Gaussian distribution parameterized by its mean and precision (i.e., inverse variance), and \mathcal{G} is the gamma distribution parameterized by its shape and rate parameters. Note that we have given quite uninformative priors for the variables \mu and \tau. This simple model can also be shown as a directed factor graph:

Directed factor graph of the example model.