{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Non-parametric Bayes: Gaussian Processes\n", "\n", "Use of the term \"non-parametric\" in the context of Bayesian analysis is something of a misnomer. This is because the first and fundamental step in Bayesian modeling is to specify a *full probability model* for the problem at hand. It is rather difficult to explicitly state a full probability model without the use of probability functions, which are parametric. Bayesian non-parametric methods do not imply that there are no parameters, but rather that the number of parameters grows with the size of the dataset. In fact, Bayesian non-parametric models are *infinitely* parametric." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import scipy as sp\n", "import pandas as pd \n", "import pymc3 as pm\n", "import seaborn as sns\n", "import theano\n", "import theano.tensor as tt\n", "import matplotlib.pylab as plt\n", "import matplotlib.cm as cmap\n", "sns.set_context('notebook')\n", "import warnings\n", "warnings.filterwarnings(\"ignore\", module=\"theano\")\n", "warnings.filterwarnings(\"ignore\", module=\"mkl_fft\")\n", "warnings.filterwarnings(\"ignore\", module=\"matplotlib\")\n", "\n", "np.random.seed(42)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Building models with Gaussians\n", "\n", "What if we chose to use Gaussian distributions to model our data? \n", "\n", "$$p(x \\mid \\pi, \\Sigma) = (2\\pi)^{-k/2}|\\Sigma|^{-1/2} \\exp\\left\\{ -\\frac{1}{2} (x-\\mu)^{\\prime}\\Sigma^{-1}(x-\\mu) \\right\\}$$\n", "\n", "There would not seem to be an advantage to doing this, because normal distributions are not particularly flexible distributions in and of themselves. However, adopting a set of Gaussians (a multivariate normal vector) confers a number of advantages. First, the marginal distribution of any subset of elements from a multivariate normal distribution is also normal:\n", "\n", "$$p(x,y) = \\mathcal{N}\\left(\\left[{\n", "\\begin{array}{c}\n", " {\\mu_x} \\\\\n", " {\\mu_y} \\\\\n", "\\end{array}\n", "}\\right], \\left[{\n", "\\begin{array}{c}\n", " {\\Sigma_x} & {\\Sigma_{xy}} \\\\\n", " {\\Sigma_{xy}^T} & {\\Sigma_y} \\\\\n", "\\end{array}\n", "}\\right]\\right)$$\n", "\n", "$$p(x) = \\int p(x,y) dy = \\mathcal{N}(\\mu_x, \\Sigma_x)$$\n", "\n", "Also, conditionals distributions of a subset of a multivariate normal distribution (conditional on the remaining elements) are normal too:\n", "\n", "$$p(x|y) = \\mathcal{N}(\\mu_x + \\Sigma_{xy}\\Sigma_y^{-1}(y-\\mu_y), \n", "\\Sigma_x-\\Sigma_{xy}\\Sigma_y^{-1}\\Sigma_{xy}^T)$$\n", "\n", "A Gaussian process generalizes the multivariate normal to infinite dimension. It is defined as an infinite collection of random variables, any finite subset of which have a Gaussian distribution. Thus, the marginalization property is explicit in its definition. Another way of thinking about an infinite vector is as a *function*. When we write a function that takes continuous values as inputs, we are essentially specifying an infinte vector that only returns values (indexed by the inputs) when the function is called upon to do so. By the same token, this notion of an infinite-dimensional Gaussian as a function allows us to work with them computationally: we are never required to store all the elements of the Gaussian process, only to calculate them on demand.\n", "\n", "So, we can describe a Gaussian process as a ***disribution over functions***. Just as a multivariate normal distribution is completely specified by a mean vector and covariance matrix, a GP is fully specified by a **mean function** and a **covariance function**:\n", "\n", "$$p(x) \\sim \\mathcal{GP}(m(x), k(x,x^{\\prime}))$$\n", "\n", "It is the marginalization property that makes working with a Gaussian process feasible: we can marginalize over the infinitely-many variables that we are not interested in, or have not observed. \n", "\n", "For example, one specification of a GP might be as follows:\n", "\n", "\\begin{aligned}\n", "m(x) &=0 \\\\\n", "k(x,x^{\\prime}) &= \\theta_1\\exp\\left(-\\frac{\\theta_2}{2}(x-x^{\\prime})^2\\right)\n", "\\end{aligned}\n", "\n", "here, the covariance function is a **squared exponential**, for which values of $x$ and $x^{\\prime}$ that are close together result in values of $k$ closer to 1 and those that are far apart return values closer to zero. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def exponential_cov(x, y, params):\n", " return params[0] * np.exp( -0.5 * params[1] * np.subtract.outer(x, y)**2)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "