{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Lab 2: Bayesian Regression" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "12th February 2014 Gaussian Process Road Show, Pereira, Colombia\u00b6" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "written by Neil Lawrence" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As normal, let's first get the plots running in line on the notebook.\n", "$$\\newcommand{\\inputScalar}{x}\n", "\\newcommand{\\lengthScale}{\\ell}\n", "\\newcommand{\\mappingVector}{\\mathbf{w}}\n", "\\newcommand{\\gaussianDist}[3]{\\mathcal{N}\\left(#1|#2,#3\\right)}\n", "\\newcommand{\\gaussianSamp}[2]{\\mathcal{N}\\left(#1,#2\\right)}\n", "\\newcommand{\\zerosVector}{\\mathbf{0}}\n", "\\newcommand{\\eye}{\\mathbf{I}}\n", "\\newcommand{\\dataStd}{\\sigma}\n", "\\newcommand{\\dataScalar}{y}\n", "\\newcommand{\\dataVector}{\\mathbf{y}}\n", "\\newcommand{\\dataMatrix}{\\mathbf{Y}}\n", "\\newcommand{\\noiseScalar}{\\epsilon}\n", "\\newcommand{\\noiseVector}{\\mathbf{\\epsilon}}\n", "\\newcommand{\\noiseMatrix}{\\mathbf{\\Epsilon}}\n", "\\newcommand{\\inputVector}{\\mathbf{x}}\n", "\\newcommand{\\kernelScalar}{k}\n", "\\newcommand{\\ltwoNorm}[1]{\\left\\Vert#1\\right\\Vert_2}\n", "\\newcommand{\\kernelMatrix}{\\mathbf{K}}\n", "\\newcommand{\\basisMatrix}{\\mathbf{\\Phi}}\n", "\\newcommand{\\basisVector}{\\mathbf{\\phi}}\n", "\\newcommand{\\basisScalar}{\\phi}\n", "\\newcommand{\\expSamp}[1]{\\left<#1\\right>}\n", "\\newcommand{\\expDist}[2]{\\left<#1\\right>_{#2}}\n", "\\newcommand{\\covarianceMatrix}{\\mathbf{C}}\n", "\\newcommand{\\numData}{N}\n", "\\newcommand{\\mappingScalar}{w}\n", "\\newcommand{\\mappingFunctionScalar}{f}\n", "\\newcommand{\\mappingFunctionVector}{\\mathbf{f}}\n", "\\newcommand{\\meanVector}{\\boldsymbol{\\mu}}\n", "\\newcommand{\\meanScalar}{\\mu}$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 41 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The next thing to do is to download the olympics data just to make sure it is available for us to study." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import urllib\n", "url = (\"http://staffwww.dcs.shef.ac.uk/\"\n", " + \"people/N.Lawrence/dataset_mirror/\"\n", " + \"olympic_marathon_men/olympicMarathonTimes.csv\")\n", "urllib.urlretrieve(url, 'olympicMarathonTimes.csv')\n", "olympics = np.loadtxt('olympicMarathonTimes.csv', delimiter=',') " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 42 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The aim of this notebook is to study Bayesian approaches to regression. As in previous sessions, first extract both the olympic years and the pace of the winning runner into 2-dimensional arrays with the data points in the rows of the array (the first dimension)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = olympics[:, 0:1]\n", "y = olympics[:, 1:2]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 43 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can plot them to check that they've loaded in correctly.\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(x, y, 'rx')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 44, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 44 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "The Prior Distribution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the Bayesian approach, the first thing we do is assume a prior distribution for the parameters, $\\mappingVector$. In the lectures we took this prior to be " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mappingVector \\sim \\gaussianSamp{\\zerosVector}{\\alpha \\eye}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In other words, we assumed for the prior that each element of the parameters vector, $\\mappingScalar_i$, was drawn from a Gaussian density as follows" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mappingScalar_i \\sim \\gaussianSamp{0}{\\alpha}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start by assigning the parameter of the prior distribution, which is the variance of the prior distribution, $\\alpha$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# set prior variance on w\n", "alpha = 4.\n", "# set the order of the polynomial basis set\n", "order = 5\n", "# set the noise variance\n", "sigma2 = 0.01" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 45 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we have the prior variance, we can sample from the prior distribution to see what form we are imposing on the functions *a priori*. To do this, we first sample a weight vector, then we multiply that weight vector by our basis to compute the the functions. Firstly we compute the basis function matrix. We will do it both for our training data, and for a range of prediction locations (`x_pred`). " ] }, { "cell_type": "code", "collapsed": false, "input": [ "num_data = x.shape[0]\n", "num_pred_data = 100 # how many points to use for plotting predictions\n", "x_pred = linspace(1890, 2016, num_pred_data)[:, None] # input locations for predictions" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 46 }, { "cell_type": "markdown", "metadata": {}, "source": [ "now let's build the basis matrices.\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# build the basis set\n", "Phi = np.zeros((num_data, order+1))\n", "Phi_pred = np.zeros((num_pred_data, order+1))\n", "for i in xrange(0, order+1):\n", " Phi[:, i:i+1] = x**i\n", " Phi_pred[:, i:i+1] = x_pred**i" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 47 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Sampling from the Prior" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we will sample from the prior to produce a vector $\\mappingVector$ and use it to plot a function which is representative of our belief *before* we fit the data. To do this we are going to use the properties of the Gaussian density and a sample from a *standard normal* using the function `np.random.normal`." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Scaling Gaussian-distributed Variables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, let's consider the case where we have one data point and one feature in our basis set. In otherwords $\\mappingFunctionVector$ would be a scalar, $\\mappingVector$ would be a scalar and $\\basisMatrix$ would be a scalar. In this case we have " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mappingFunctionScalar = \\basisScalar \\mappingScalar$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If $\\mappingScalar$ is drawn from a normal density, " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mappingScalar \\sim \\gaussianSamp{\\meanScalar_\\mappingScalar}{c_\\mappingScalar}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and $\\basisScalar$ is a scalar value which we are given, then properties of the Gaussian density tell us that " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\basisScalar \\mappingScalar \\sim \\gaussianSamp{\\basisScalar\\meanScalar_\\mappingScalar}{\\basisScalar^2c_\\mappingScalar}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's test this out numerically. First we will draw 200 samples from a standard normal," ] }, { "cell_type": "code", "collapsed": false, "input": [ "w_vec = np.random.normal(size=200)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 48 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can compute the mean of these samples and their variance" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print 'w sample mean is ', w_vec.mean()\n", "print 'w sample variance is ', w_vec.var()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "w sample mean is -0.0592638350984\n", "w sample variance is 0.926460866716\n" ] } ], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "These are close to zero (the mean) and one (the variance) as you'd expect. Now compute the mean and variance of the scaled version," ] }, { "cell_type": "code", "collapsed": false, "input": [ "phi = 7\n", "f_vec = phi*w_vec\n", "print 'True mean should be phi*0 = 0.'\n", "print 'True variance should be phi*phi*1 = ', phi*phi\n", "print 'f sample mean is ', f_vec.mean()\n", "print 'f sample variance is ', f_vec.var()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "True mean should be phi*0 = 0.\n", "True variance should be phi*phi*1 = 49\n", "f sample mean is -0.414846845689\n", "f sample variance is 45.3965824691\n" ] } ], "prompt_number": 50 }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you increase the number of samples then you will see that the sample mean and the sample variance begin to converge towards the true mean and the true variance. Obviously adding an offset to a sample from `np.random.normal` will change the mean. So if you want to sample from a Gaussian with mean `mu` and standard deviation `sigma` one way of doing it is to sample from the standard normal and scale and shift the result, so to sample a set of $\\mappingScalar$ from a Gaussian with mean $\\meanScalar$ and variance $\\alpha$," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$w \\sim \\gaussianSamp{\\meanScalar}{\\alpha}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can simply scale and offset samples from the *standard normal*." ] }, { "cell_type": "code", "collapsed": false, "input": [ "mu = 4 # mean of the distribution\n", "alpha = 2 # variance of the distribution\n", "w_vec = np.random.normal(size=200)*np.sqrt(alpha) + mu\n", "print 'w sample mean is ', w_vec.mean()\n", "print 'w sample variance is ', w_vec.var()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "w sample mean is 4.23642813796\n", "w sample variance is 2.10712344728\n" ] } ], "prompt_number": 51 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here the `np.sqrt` is necesssary because we need to multiply by the standard deviation and we specified the variance as `alpha`. So scaling and offsetting a Gaussian distributed variable keeps the variable Gaussian, but it effects the mean and variance of the resulting variable. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To get an idea of the overal shape of the resulting distribution, let's do the same thing with a histogram of the results. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# First the standard normal\n", "z_vec = np.random.normal(size=1000) # by convention, in statistics, z is often used to denote samples from the standard normal\n", "w_vec = z_vec*np.sqrt(alpha) + mu\n", "# plot normalized histogram of w, and then normalized histogram of z on top\n", "plt.hist(w_vec, bins=30, normed=True)\n", "plt.hist(z_vec, bins=30, normed=True)\n", "plt.legend(('$w$', '$z$'))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 52, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 52 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now re-run this histogram with 100,000 samples and check that the both histograms look qualitatively Gaussian." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Sampling from the Prior" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's use this way of constructing samples from a Gaussian to check what functions look like *a priori*. The process will be as follows. First, we sample a random vector $K$ dimensional from `np.random.normal`. Then we scale it by $\\sqrt{\\alpha}$ to obtain a prior sample of $\\mappingVector$. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "K = order + 1\n", "z_vec = np.random.normal(size=K)\n", "w_sample = z_vec*np.sqrt(alpha)\n", "print w_sample" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[-1.2178242 -1.04153535 -0.14154338 -0.653577 0.98018 -0.95858804]\n" ] } ], "prompt_number": 53 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can combine our sample from the prior with the basis functions to create a function," ] }, { "cell_type": "code", "collapsed": false, "input": [ "f_sample = np.dot(Phi_pred,w_sample)\n", "plt.plot(x_pred.flatten(), f_sample.flatten(), 'r-')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 54, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nRo8ezfTp0wHIyspi8ODB+Pn54efnR1RUFDk5OQwcOJBvv/229Pk7duwgIiKiLiP/RocOHUr/j16x\nYgXFvywXDw8P59NPPy297ssvv6Rnz574+vq6RX6Ab775hjvvvJOFCxdyzTXXABAQEOAW+Tds2MD7\n77/Po48+yo8//oi3tzc+Pj6MGTPGZfJXlD0yMpIbb7yRjh07AjBo0CBWrlzJn/70J5fJDhXnd9XP\n7s8//8zgwYMZMWIEt/6yJXTPnj3ZuXMnoaGh7Ny5k549ewKu+fmtSn5wzue3TlsG/fr1Y8mSJQB8\n9NFHxMTEAHDTTTeRnp5OcXEx3333Hbm5ufTp0wcwzaG3336b7777jg8++IDw8PC6jPwbR44cAeA/\n//kPc+bMYcCAAQD06tWLlStXcvDgQTIyMvD29i7dxM8d8v/444/ExcUxY8YMIiMjf/Mcd8iflZXF\nvn372LdvH+PGjWPSpEmMGTPGpfJXlD0wMJAdO3bwww8/UFRUxJo1a+jfv79LZa8svyt+dq0KFrqG\nh4fzxhtvcPr0ad54443SL0ZX+/xWNb/TPr/OGf8uKyEhwbriiiusRo0aWVdffbX1xhtvWNu3b7cS\nEhKsbt26WcOHD7d27txpWZZllZSUWE888YTVo0cP64YbbrAWLlxY+jr5+flWaGio1aFDB+t///d/\nayvuBfO//vrr1uzZs61rr73WCggIsJ599tnfXP/iiy9anTp1sgIDA62srCy3yv/0009bzZo1s0JC\nQkpvR44ccZv8v5aUlGS98MILpf+2I39Vs3/wwQdWly5drIiICOvll1+2NXtV87viZ/ezzz6zvLy8\nrODg4NL/nlesWGEdP37cuuWWWyx/f3/r1ltvtU6cOFH6HFf6/FY1v7M+v1p0JiIiOgNZRERUDERE\nBBUDERFBxUBERFAxEBERVAxERAQVAxERQcVARESA/wdhxFFWhf4QAAAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 54 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This shows the recurring problem with the polynomial basis. Our prior allows relatively large coefficients for the basis associated with high polynomial degrees. Because we are operating with input values of around 2000, this leads to output functions of very high values. One fix for this is to rescale our inputs to be between -1 and 1 before applying the model. This is a disadvantage of the polynomial basis. Let's rescale x and x_pred now." ] }, { "cell_type": "code", "collapsed": false, "input": [ "span = np.max(x) - np.min(x) \n", "offset = np.min(x)\n", "x -= offset\n", "x_pred -= offset\n", "x /= span # x is now between zero and 1\n", "x_pred /= span \n", "x = x*2-1 # x is now between -1 and 1\n", "x_pred = x_pred*2 - 1 " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 55 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we need to recompute the basis functions from above, " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# rebuild the basis set\n", "Phi = np.zeros((num_data, order+1))\n", "Phi_pred = np.zeros((num_pred_data, order+1))\n", "for i in xrange(0, order+1):\n", " Phi[:, i:i+1] = x**i\n", " Phi_pred[:, i:i+1] = x_pred**i" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 56 }, { "cell_type": "code", "collapsed": false, "input": [ "f_sample = np.dot(Phi_pred,w_sample)\n", "plt.plot(x_pred.flatten(), f_sample.flatten(), 'r-')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 57, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nRK5CYII=\n", "text": [ "" ] } ], "prompt_number": 57 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's loop through some samples and plot various functions as samples from this system," ] }, { "cell_type": "code", "collapsed": false, "input": [ "num_samples = 10\n", "K = order+1\n", "for i in xrange(num_samples):\n", " z_vec = np.random.normal(size=K)\n", " w_sample = z_vec*np.sqrt(alpha)\n", " f_sample = np.dot(Phi_pred,w_sample)\n", " plt.plot(x_pred.flatten(), f_sample.flatten())\n" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nESnA/wFzHUj8Ib+K6AAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 58 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The predictions for the mean output can now be computed. We want the expected value of the predictions under the posterior distribution. In matrix form, the predictions can be computed as" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mathbf{f} = \\basisMatrix \\mappingVector.$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This involves a matrix multiplication between a fixed matrix $\\basisMatrix$ and a vector that is drawn from a distribution $\\mappingVector$. Because $\\mappingVector$ is drawn from a distribution, this imples that $\\mappingFunctionVector$ should also be drawn from a distribution. Let's work out what that distributions should be. " ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Computing the Posterior" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the lecture we went through how to compute the posterior distribution for $\\mappingVector$. This distribution is also Gaussian," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$p(\\mappingVector | \\dataVector, \\inputVector, \\dataStd^2) = \\mathcal{N}\\left(\\mappingVector|\\meanVector_\\mappingScalar, \\covarianceMatrix_\\mappingScalar\\right)$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "with covariance, $\\covarianceMatrix_\\mappingScalar$, given by" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\covarianceMatrix_\\mappingScalar = \\left(\\dataStd^{-2}\\basisMatrix^\\top \\basisMatrix + \\alpha^{-1} \\eye\\right)^{-1}$$ " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "whilst the mean is given by" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\meanVector_\\mappingScalar = \\covarianceMatrix_\\mappingScalar \\dataStd^{-2}\\basisMatrix^\\top \\dataVector$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's compute the posterior covariance and mean, then we'll sample from these densities to have a look at the posterior belief about $\\mappingVector$ once the data has been accounted for. Remember, the process of Bayesian inference involves combining the prior, $p(\\mappingVector)$ with the likelihood, $p(\\dataVector|\\inputVector, \\mappingVector)$ to form the posterior, $p(\\mappingVector | \\dataVector, \\inputVector)$ through Bayes' rule," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$p(\\mappingVector|\\dataVector, \\inputVector) = \\frac{p(\\dataVector|\\inputVector, \\mappingVector)p(\\mappingVector)}{p(\\dataVector)}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We've looked at the samples for our function $\\mappingFunctionVector = \\basisMatrix\\mappingVector$, which forms the mean of the Gaussian likelihood, under the prior distribution. I.e. we've sampled from $p(\\mappingVector)$ and multiplied the result by the basis matrix. Now we will sample from the posterior density, $p(\\mappingVector|\\dataVector, \\inputVector)$, and check that the new samples fit do correspond to the data, i.e. we want to check that the updated distribution includes information from the data set. First we need to compute the posterior mean and *covariance*." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# compute the posterior covariance and mean\n", "w_cov = np.linalg.inv(1/sigma2*np.dot(Phi.T, Phi) + 1/alpha*np.eye(order+1))\n", "w_mean = np.dot(w_cov, 1/sigma2*np.dot(Phi.T, y))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 59 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before we were able to sample the prior values for the mean *independently* from a Gaussian using `np.random.normal` and scaling the result. However, observing the data *correlates* the parameters. Recall this from the first lab where we had a correlation between the offset, $c$ and the slope $m$ which caused such problems with the coordinate ascent algorithm. We need to sample from a *correlated* Gaussian. For this we can use `np.random.multivariate_normal`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "w_sample = np.random.multivariate_normal(w_mean.flatten(), w_cov)\n", "f_sample = np.dot(Phi_pred,w_sample)\n", "plt.plot(x_pred.flatten(), f_sample.flatten(), 'r-')\n", "plt.plot(x, y, 'rx') # plot data to show fit." ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 60, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\ngg==\n", "text": [ "" ] } ], "prompt_number": 60 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's sample several functions and plot them all to see how the predictions fluctuate." ] }, { "cell_type": "code", "collapsed": false, "input": [ "for i in xrange(num_samples):\n", " w_sample = np.random.multivariate_normal(w_mean.flatten(), w_cov)\n", " f_sample = np.dot(Phi_pred,w_sample)\n", " plt.plot(x_pred.flatten(), f_sample.flatten())\n", "plt.plot(x, y, 'rx') # plot data to show fit." ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 61, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nIiIL+g1T9YPIsvD84AAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 61 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Sum of Gaussian-distributed Variables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The sum of Gaussian random variables is also Gaussian, so if we have a random variable $y_i$ drawn from a Gaussian density with mean $\\meanScalar_i$ and variance $\\dataStd^2_i$, " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$y_i \\sim \\gaussianSamp{\\meanScalar_i}{\\dataStd^2_i}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then the sum of $K$ independently sampled values of $y_i$ will be drawn from a Gaussian with mean $\\sum_{i=1}^K \\mu_i$ and variance $\\sum_{i=1}^K \\dataStd_i^2$," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "$$\\sum_{i=1}^K y_i \\sim \\gaussianSamp{\\sum_{i=1}^K \\meanScalar_i}{\\sum_{i=1}^K \\dataStd_i^2}.$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's try that experimentally. First let's generate a vector of samples from a standard normal distribution, $z \\sim \\gaussianSamp{0}{1}$, then we will scale and offset them, then keep adding them into a vector `y_vec`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "K = 10 # how many Gaussians to add.\n", "num_samples = 1000 # how many samples to have in y_vec\n", "mus = np.linspace(0, 5, K) # mean values generated linearly spaced between 0 and 5\n", "sigmas = np.linspace(0.5, 2, K) # sigmas generated linearly spaced between 0.5 and 2\n", "y_vec = np.zeros(num_samples)\n", "for mu, sigma in zip(mus, sigmas):\n", " z_vec = np.random.normal(size=num_samples) # z is from standard normal\n", " y_vec += z_vec*sigma + mu # add to y z*sigma + mu\n", "\n", "# now y_vec is the sum of each scaled and off set z.\n", "print 'Sample mean is ', y_vec.mean(), ' and sample variance is ', y_vec.var()\n", "print 'True mean should be ', mus.sum()\n", "print 'True variance should be ', (sigmas**2).sum(), ' standard deviation ', np.sqrt((sigmas**2).sum()) " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Sample mean is 24.9550058289 and sample variance is 17.5146648423\n", "True mean should be 25.0\n", "True variance should be 17.9166666667 standard deviation 4.2328083664\n" ] } ], "prompt_number": 62 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Of course, we can histogram `y_vec` as well." ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.hist(y_vec, bins=30, normed=True)\n", "plt.legend('$y$')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 63, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\ngg==\n", "text": [ "" ] } ], "prompt_number": 63 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Matrix Multiplication of Gaussian Variables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Matrix multiplication is just adding and scaling together, in the formula, $\\mappingFunctionVector = \\basisMatrix \\mappingVector$ we can extract the first element from $\\mappingFunctionVector$ as" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mappingFunctionScalar_i = \\basisVector_i^\\top \\mappingVector$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "where $\\basisVector$ is a column vector from the $i$th row of $\\basisMatrix$ and $\\mappingFunctionScalar_i$ is the $i$th element of $\\mappingFunctionVector$. This vector inner product itself merely implies that " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mappingFunctionScalar_i = \\sum_{j=1}^K \\mappingScalar_j \\basisScalar_{i, j}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and if we now say that $\\mappingScalar_i$ is Gaussian distributed, then because a scaled Gaussian is also Gaussian, and because a sum of Gaussians is also Gaussian, we know that $\\mappingFunctionScalar_i$ is also Gaussian distributed. It merely remains to work out its mean and covariance. We can do this by looking at the expectation under a Gaussian distribution. The expectation of the mean vector is given by" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\expDist{\\mappingFunctionVector}{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}} = \\int \\mappingFunctionVector \\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix} \\text{d}\\mappingVector = \\int \\basisMatrix\\mappingVector \\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix} \\text{d}\\mappingVector = \\basisMatrix \\int \\mappingVector \\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix} \\text{d}\\mappingVector = \\basisMatrix \\meanVector$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which is straightforward. The expectation of $\\mappingFunctionVector=\\basisMatrix\\mappingVector$ under the Gaussian distribution for $\\mappingFunctionVector$ is simply $\\mappingFunctionVector=\\basisMatrix\\meanVector$, where $\\meanVector$ is the *mean* of the Gaussian density for $\\mappingVector$. Because our prior distribution was Gaussian with zero mean, the expectation under the prior is given by" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\expDist{\\mappingFunctionVector}{\\gaussianDist{\\mappingVector}{\\zerosVector}{\\alpha\\eye}} = \\zerosVector$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The covariance is a little more complicated. A covariance matrix is defined as" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\text{cov}\\left(\\mappingFunctionVector\\right)_{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}} = \\expDist{\\mappingFunctionVector\\mappingFunctionVector^\\top}{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}} - \\expDist{\\mappingFunctionVector}{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}}\\expDist{\\mappingFunctionVector}{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}}^\\top$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "we've already computed $\\expDist{\\mappingFunctionVector}{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}}=\\basisMatrix \\meanVector$ so we can substitute that in to recover" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\text{cov}\\left(\\mappingFunctionVector\\right)_{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}} = \\expDist{\\mappingFunctionVector\\mappingFunctionVector^\\top}{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}} - \\basisMatrix \\meanVector \\meanVector^\\top \\basisMatrix^\\top$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So we need the expectation of $\\mappingFunctionVector\\mappingFunctionVector^\\top$. Substituting in $\\mappingFunctionVector = \\basisMatrix \\mappingVector$ we have" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\text{cov}\\left(\\mappingFunctionVector\\right)_{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}} = \\expDist{\\basisMatrix\\mappingVector\\mappingVector^\\top \\basisMatrix^\\top}{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}} - \\basisMatrix \\meanVector \\meanVector^\\top \\basisMatrix^\\top$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\text{cov}\\left(\\mappingFunctionVector\\right)_{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}} = \\basisMatrix\\expDist{\\mappingVector\\mappingVector^\\top}{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}} \\basisMatrix^\\top - \\basisMatrix \\meanVector \\meanVector^\\top \\basisMatrix^\\top$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which is dependent on the second moment of the Gaussian," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\expDist{\\mappingVector\\mappingVector^\\top}{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}} = \\covarianceMatrix + \\meanVector\\meanVector^\\top$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "that can be substituted in to recover," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\text{cov}\\left(\\mappingFunctionVector\\right)_{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}} = \\basisMatrix\\covarianceMatrix \\basisMatrix^\\top$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "so in the case of the prior distribution, where we have $\\covarianceMatrix = \\alpha \\eye$ we can write" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\text{cov}\\left(\\mappingFunctionVector\\right)_{\\gaussianDist{\\mappingVector}{\\zerosVector}{\\alpha \\eye}} = \\alpha \\basisMatrix \\basisMatrix^\\top$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This implies that the prior we have suggested for $\\mappingVector$, which is Gaussian with a mean of zero and covariance of $\\alpha \\eye$ suggests that the distribution for $\\mappingVector$ is also Gaussian with a mean of zero and covariance of $\\alpha \\basisMatrix\\basisMatrix^\\top$. Since our observed output, $\\dataVector$, is given by a noise corrupted variation of $\\mappingFunctionVector$, the final distribution for $\\dataVector$ is given as " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\dataVector = \\mappingFunctionVector + \\noiseVector$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "where the noise, $\\noiseVector$, is sampled from a Gaussian density: $\\noiseVector \\sim \\gaussianSamp{\\zerosVector}{\\dataStd^2\\eye}$. So, in other words, we are taking a Gaussian distributed random value $\\mappingFunctionVector$," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mappingFunctionVector \\sim \\gaussianSamp{\\zerosVector}{\\alpha\\basisMatrix\\basisMatrix^\\top}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and adding to it another Gaussian distributed value, $\\noiseVector \\sim \\gaussianSamp{\\zerosVector}{\\dataStd^2\\eye}$, to form our data observations, $\\dataVector$. Once again the sum of two (multivariate) Gaussian distributed variables is also Gaussian, with a mean given by the sum of the means (both zero in this case) and the covariance given by the sum of the covariances. So we now have that the marginal likelihood for the data, $p(\\dataVector)$ is given by" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$p(\\dataVector) = \\gaussianDist{\\dataVector}{\\zerosVector}{\\alpha \\basisMatrix \\basisMatrix^\\top + \\dataStd^2\\eye}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is our *implicit* assumption for $\\dataVector$ given our prior assumption for $\\mappingVector$." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Computing the Mean and Error Bars of the Functions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You should now know enough to compute the mean of the predictions under the posterior density. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# compute mean under posterior density\n", "f_pred_mean = np.dot(Phi_pred, w_mean)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 64 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can plot these predictions alongside the real data," ] }, { "cell_type": "code", "collapsed": false, "input": [ "# print the error and plot the predictions\n", "plt.plot(x_pred, f_pred_mean)\n", "plt.plot(x, y, 'rx')\n", "ax = plt.gca()\n", "ax.set_title('Predictions for Order ' + str(order))\n", "ax.set_xlabel('year')\n", "ax.set_ylabel('pace (min/km)')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 65, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEZCAYAAACTsIJzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xtcjvf/B/DXTWZDdMCKIuWQorpJoZDGmOQwhtjMF2Ob\nnTR+G2bZhs3X2b7fOXzHnLc5zSGHHOYWRWk5jGUjNRNCB25RqM/vj2vdc+tw39113Yd6PR+P+1H3\nfV33db0v13a9+5wVQggBIiKiv1UzdQBERGRemBiIiEgLEwMREWlhYiAiIi1MDEREpIWJgYiItDAx\nkNkZNWoUpk+fDgA4evQo3N3dDTrOW2+9hZkzZ1ZkaDr9/PPP6Nq1K6ytrXHmzBmjnrs0q1evRpcu\nXUwdBlkIJgYyiIuLC2rVqgVra2t06NAB06dPx8OHDyvk2AqFAgqFAgDQpUsXXLhwQed3invwLV26\nFJ988kmFxKSv2bNnY/To0VCr1fD29q6QYx47dgzdu3eHvb09XF1dMXbsWGRnZ1fIsQ01atQo1KxZ\nE9bW1rC2tkbdunXBIVGVBxMDGUShUCAyMhJqtRrffvst1qxZg23bthXZ7/HjxwYd3xIfMkIIxMTE\nICAgwKDvFxQUFPls79696NOnD3x8fHDmzBksX74cly9fhp+fH3Jzc4s9Tn5+vkHnL0tcCoUCH330\nEdRqNdRqNe7evatJ5mT5mBio3Ly9vfHSSy9h9+7dAIBq1aph7dq1UCqVmmqgs2fP4s0330STJk3w\n4Ycf4sqVK5rv//nnnxg3bhwcHBzwxhtvaCUTlUoFZ2dnzfvbt29jwYIFaNu2LerXr493330XFy5c\nwJtvvonjx4/D2toadnZ2ALSrpAqPNWjQILRo0QL//ve/kZWVpdlWrVo1bNiwAT4+PmjevDkWLlyo\n2Xb9+nWMGDECjRo1QoMGDTBs2LAi/wZ5eXmwtrZGXl4elEolWrRoAQBIS0vDJ598AhcXF/zrX//C\nqVOnNN8ZNWoUJk6ciCFDhsDe3h4qlarIcd9//32MHDkSCxcuhJOTE3r27In9+/fj5s2bmhhXr16N\nwMBAREREoGnTpvjss8+Qk5OD2bNnw8nJCS+88AJu3Lihddzr16/jiy++QPPmzTF06FDExcWVKS7A\nMpM36YeJgQxW+GA4deoU9u7di4EDB2q2ffvtt1i9ejXOnz+PjIwMBAUF4aWXXsK5c+dQv359hIWF\nafYdNGgQ6tati3PnzqFVq1bYtGlTiX99jhkzBqdPn8ZPP/2Ea9euYdiwYXB3d8fy5cvRqVMnqNVq\nZGZmAtCukkpJScHAgQMRFhYGlUqFxMRETJw4UevYq1atwg8//IBNmzYhIiICly9fBgAsWLAAjRs3\nRnJyMtLS0vDee+8ViatmzZq4d+8eACkJXrx4EQAwfPhw3LlzBydPnkSXLl0QFBSk9Zf+//73Pwwc\nOBDp6elFShrXrl3DpUuXEBISovW5lZUVevbsiSNHjmg+i4+Px6NHj3D27FlMnToVERERiI6OxtGj\nR/H+++9j0aJFWv+mISEhsLKyQkJCAkaOHImXXnoJOTk5esVV6JtvvoGjoyPGjBmDo0ePFrsPWShB\nZICmTZuKOnXqCFtbW9GlSxfx5Zdfivz8fCGEEAqFQqxdu1az74oVK8Qbb7yhef/48WPRsGFDkZ6e\nLm7cuCGeffZZ8eDBA812Z2dnMX36dCGEEIcPHxZOTk5CCCGys7NFrVq1xO3bt4vE891334nAwECt\nz0aNGqU5zoIFC0RYWJhm28WLF4W9vb1WzFu3btVs79Wrl1i6dKkQQojw8HDx6quvitTUVJ3/LgqF\nQiQnJwshhLh165Z47rnnxL179zTbAwICxLZt24QQQrz++usiODi4xGPFxcUJhUIhsrKyimybN2+e\n8PDw0Fz7c889J/Ly8jTbPTw8xKFDhzTvX3vtNc2/zx9//CFatWqldbwBAwaITZs26RWXEEIkJiaK\nzMxMcefOHbFy5UpRu3ZtkZGRUep3yHKwxEAGUSgU2LFjBzIzMxEdHY2PP/4Y1ar985+Tv7+/5veD\nBw9iw4YNsLW1ha2tLerXr4+cnBxER0cjPj4ezZs3x7PPPqvZv127dsWeMyYmBk2bNoW9vX2Z442N\njUX79u0175s3b47Hjx/j/Pnzms98fHw0vzs6OiItLQ0AMHXqVDg5OaFTp07o3Lkztm/frtc5T5w4\nAVdXV9SuXVvzma+vL44dOwZA+jd88t/paU5OTprYn3b8+HE0adJE897b2xvPPPMMAODu3btISkrS\nuh6lUqn5/eDBg0hJSdHcD1tbWxw6dEjzV7+uuAqPZ2tri7p162L06NEIDg7GunXrSv0OWQ4mBpKF\nlZWV5vfg4GCMHDkSWVlZmte9e/cwePBgdOjQAZcuXcKDBw80+ycmJhZ7zM6dO+PPP/9ERkZGkW3V\nq1cvtc47ICAACQkJmvcXL15E9erV4enpWeJ3Cqte7O3t8eWXX+LatWv49NNPMWLECK32iZJ07NgR\nly9f1qqiKaxSejLukjRq1AjNmzfXtN0UevToEQ4cOICuXbtqPnvy37tu3bpwd3fXas9ITEzUXE9w\ncDDc3Ny07sfdu3exZMkSveIqjhCCbQ6VCBMDyW7o0KHYtm0btm/fjpycHOTk5GD37t24d+8eHBwc\n4OnpiYiICNy6dQsLFixAenp6scexsbFBz549ER4ejkuXLiE3N1fz13T79u1x8eJFTT0/oP2w6tev\nH6KiorBt2zakpaUhIiICoaGhWqWcJz353c2bN+Pq1asoKChA7dq1Ubt2bb0enPXr10eHDh0wdepU\n3Lx5U9Pm0qtXL805dFm0aBHWrl2LiRMn4sqVKzhw4AB69eqFBg0aFGkjeVKfPn0wb948pKSkIDIy\nEocOHdKcr1WrVqhTpw7mzZuHGzdu4NGjRzh58qSmW7A+cW3ZsgX37t2DWq3GmjVrcPjwYbz++us6\nv0eWgYmBKtzTDcc2NjaIiorC4cOH0bJlS7Ro0QJr167VbN+8eTMyMzPRpk0bXLhwAUOHDi3xeCtX\nrkSbNm3Qt29fODs7Y9OmTQAADw8PDBgwAJ6enmjYsKHme4XfdXV1xebNm7Fu3Tp069YNXl5eWLBg\nQYkxP/ndhIQEdOzYEba2tpgxYwaWLl2KunXr6nXtGzZsQK1atdChQweoVCocOnQIzz33XJFzlKRP\nnz7Ys2cPTp8+DaVSiXHjxqFZs2Y4efKkpvqtuONEREQgICAAgYGBWLRoEd577z2tfbZv345Hjx7h\nhRdegKOjI6ZMmaIZh6JPXEuWLIGTkxNatmyJ6Oho7NixA7a2tqV+hyyHQshc/nNxcUHdunVRvXp1\n1KhRA/Hx8VrbVSoV+vfvD1dXVwBSDxVjD0oiIqJ/WOnepXwUCgVUKpWmb3lxunXrhp07d8odChER\n6cEoVUm6CiVstCIiMh+yJwaFQoHg4GAMGDCg2FKBQqFAbGwsfHx8EB4ejuTkZLlDIiKiUsjexnD9\n+nU4OjoiKSkJoaGhOHbsGBwcHDTb1Wq1pv1hzZo12L59OyIjI+UMiYiISiF7YnhSeHg4WrdujTfe\neKPY7UIIODg44MqVK6hZs6bm8+bNm7MkQURURm5ubrh06VKZvydrVdL9+/ehVqsBALdu3UJUVBR6\n9+6ttU96erqmjWHXrl3w8vLSSgoAkJycrOlXXhlfERERJo+B18dr4/VVvpehf1DL2ispPT1dM7Ga\nvb09PvzwQzg7O2P58uUAgPHjx2PLli1YunQprKys4OXlhfnz58sZEhER6SBrYmjWrBlOnz5d5PPx\n48drfp8wYQImTJggZxhERFQGHPlsBoKCgkwdgqwq8/VV5msDeH1VlVEbnw2lUChgAWESEZkVQ5+d\nLDEQEZEWJgYiItLCxEBERFqYGIiISAsTAxERaWFiICIiLUwMRESkhYmBiIi0MDEQEZEWJgYiItLC\nxEBERFqYGCzR7t1Adrb2Z9nZ0udEROXExGCJAgKAadP+SQ7Z2dL7gADTxkVElQJnV7VUhclg8mRg\n7lxg1izAxsbUURGRGTH02cnEYMlSU4FmzYCUFMDFxdTREJGZ4bTbVU12tlRSSEmRfj7d5kBEZCAm\nBktUWI00a5ZUUpg1S7vNgYioHFiVZIl275Yamp9sU8jOBmJigJAQ08VFRGaFbQxERKSFbQxERFQh\nmBiIiEgLEwMREWlhYiAiIi1MDEREpIWJgYiItDAxEBGRFtkTg4uLC7y8vKBUKuHn51fsPlOmTIGr\nqyvat2+PCxcuyB0SERGVwkruEygUCqhUKtjZ2RW7PT4+HkePHkVCQgKioqIwadIkREZGyh0WERGV\nwChVSaWNvIuLi8PgwYNhZ2eHsLAwJCUlGSMkIiIqgeyJQaFQIDg4GAMGDMDOnTuLbI+Pj4eHh4fm\nfYMGDZCcnCx3WEREVALZq5JiYmLg6OiIpKQkhIaGws/PDw4ODprtQogiJQqFQiF3WEREVALZE4Oj\noyMAoHXr1ujXrx927dqFN954Q7Pd398fv/32G3r16gUAuHXrFlxdXYscZ8aMGZrfg4KCEBQUJGvc\nRESWRqVSQaVSlfs4ss6uev/+feTn58Pa2hq3bt1CUFAQ9u3bB2dnZ80+8fHxCA8Px44dOxAVFYWN\nGzcWaXzm7KpERGVn6LNT1hJDeno6Bg4cCACwt7fHhx9+CGdnZyxfvhwAMH78ePj5+SEwMBC+vr6w\ns7PD+vXr5QyJiIh04HoMRESVFNdjICKiCsHEQEREWpgYKtjNm8APP5g6CiIiwzExVLC8PCA8HNi7\n19SREBEZho3PMoiNBQYMAKKjAXd3U0dDRFUVG5/NSOfOwFdfAf37A9nZpo6GiKhsWGKQ0XvvASkp\nwI4dQDWmYCIyMpYYzND8+cCdO8AXX5g6EiIi/bHEILMbNwBfX2DZMqBvX1NHQ0RViaHPTiYGI4iN\nBQYOBE6cAJo1M3U0RFRVsCrJjHXuDEydCgweDOTmmjoaIqLSscRgJEIAQ4YA9vZStRIRkdxYYjBz\nCgWwciXw88/Ahg2mjoaIqGQsMRjZmTNAjx7AsWNAq1amjoaIKjOWGCyEtzcwcybwyivAgwemjoaI\nqCiWGExACGD4cKBuXeDvNYuIiCocSwwWRKGQEsKhQ8DmzaaOhohIG0sMJpSQAPTpA8TFcXwDEVU8\nlhgskK8v8PHHQFgY8OiRqaMhIpKwxGBiBQXSVBk+PsDs2aaOhogqE06JYcFu3gSUSmDdOiA42NTR\nEFFlwaokC9awIfDdd8DIkcDt26aOhoiqOpYYzMjkycAffwDbt0s9l4iIyoMlhkpg1izg6lWObSAi\n02KJwcz8/jsQGAgcOQJ4eJg6GiKyZCwxVBKtWkm9k4YPB/LyTB0NEVVFLDGYISGAQYMAV1dg3jxT\nR0NElordVSuZjAxpbMOqVUDPnqaOhogsEauSKhl7e2D1auBf/2IXViIyLtkTQ35+PpRKJUJDQ4ts\nU6lUqFevHpRKJZRKJWbOnCl3OBblhRek6TLeeEOqXiIiMgYruU+wePFieHh4QK1WF7u9W7du2Llz\np9xhWKyZM4GOHaXV38aONXU0RFQVyFpiuHr1Kvbs2YOxY8eWWM9V1doOyqpmTWkp0I8/lga/ERHJ\nTdbEMHHiRMydOxfVqhV/GoVCgdjYWPj4+CA8PBzJyclyhmNedu8GsrO1P8vOlj5/iocHMGMGMGIE\nZ2ElIvnJVpUUGRmJhg0bQqlUQqVSFbtPu3bt8Ndff6FGjRpYs2YN3n//fURGRha774wZMzS/BwUF\nISgoqOKDNqaAAGDaNGm4s42NlBQK3wNSgggIkLYBmDABiN6Zje9fjcHIH0NMGDgRmSuVSlXi87ZM\nhEymTJkinJychIuLi3BwcBC1atUSr732Won7FxQUiIYNG4rc3Nwi22QM07SysoR4+20hUlKkn1lZ\nRbcVfpaVJXJGvS1aNswSR46YJFoisjCGPjuN8sRVqVSib9++RT6/ceOGKCgoEEIIsWPHDtGjR49i\nv19pE4MQUlIApJ9PKyZx7NolRNOm2jmEiKg4hj47S61KEkLgwIEDSExMxO+//w6FQoFWrVpBqVSi\nZ8+eUJRhCtDCfZf/PUPc+PHjsWXLFixduhRWVlbw8vLC/PnzDSz3WKjsbGDuXCAlRfpZWK1UyMZG\nmnK1WTNpHxsb9O0L7N0LvPUWsHEjZ2EloopX4sjnuXPn4scff4RSqUTr1q3h5uaGgoICXL58GRcu\nXEBiYiLCwsIwadIk+YOsjCOfn2xTeLqNoTA5FH42ebJW4rh/X1oWdOpU4NVXTXsZRGS+KnxKjE2b\nNmHAgAF45plniv1iXl4eduzYgSFDhpT5pGVVKRPDU43LAKREEBMDhIToTBynT0tTZcTHSwUKIqKn\nca6kykZX4gAwfz6wdSsQHQ1YyT5UkYgsjWyJ4dy5c1i+fDmOHz+OvL/ngVYoFDh79qxhkRqgSiYG\nPRQUAL17A507S+MciIieJFtiCAgIwLhx49CpUyetaiUXF5cyn8xQTAwlu3YNaNdOKjkEBJg6GiIy\nJ4Y+O/WqgAgLCyuxrYFMq1EjYMUKqRH69GmgXj1TR0RElk5niSE2NhaLFi1C7969Ue/vp45CocDL\nL79slAALz8cSQ+kmTAAyM9mFlYj+IVuJ4fvvv8eZM2dQo0YNrVKDMRMD6TZvHtChA7B2LfD666aO\nhogsmc4SQ4sWLXD+/HmTViWxxKCfX38FgoOB2FigRQtTR0NEpibbCm7du3fH8ePHDQqKjKttW6l3\nUlgY8PChqaMhIkuls8Tg4eGBCxcuoHHjxrD5u089u6uaLyGAgQMBNzdpnAMRVV2ydVf9888/ixxY\noVCgadOmZT6ZoZgYyiYjA/DxkXorvfSSqaMhIlORrSrp4MGDcHFx0XotXbrUoCDJOOztgfXrgdGj\npXEORERloTMxbNmyBevXr9e8nzBhAm7evClrUFR+3boB48dL4xvy800dDRFZEp1VSQ8ePEC/fv0w\nevRo7N27F7a2tli8eLGx4gPAqiRD5ecDPXpIPZWmTzd1NERkbBXexpCZman5Xa1Wo3///ggMDMTn\nn38OALCzszMw1LJjYjDctWtA+/bADz9IpQgiqjoqPDG4uLhoLcQjhNC8VygUuHz5soGhlh0TQ/ns\n2weMHQskJgING5o6GiIylgpPDGlpaWjcuHG5A6sITAzlN3Uq8Msv0upv1XS2LBFRZVDhiaFPnz7I\nyMhA9+7d0bt3bwQGBsLKRJP+MzGU3+PHQPfu0jTd06aZOhoiMgZZxjE8ePAAKpUKe/fuRWxsLJyd\nnfHSSy+hd+/eaNKkSbkCLlOQTAxlU8IiP7d3xqDtRyH4/nsgKMhk0RGRkRhlBbfLly9j79692Ldv\nH9LT0xEfH1/mExqCiaGMSlkW9MBJG4waBSQkAI6Opg6UiORk9KU98/LyULNmTUO+WmZMDAYoTAaT\nJwNz5/6TJAB8/jlw6JD04pKgRJWXbInh4MGDmD17NhITE5H/90gphUKBu3fvGhapAZgYDJSaCjRr\nBqSkAE+suFdQAPTpA3h5Af/+t8miIyKZyTYlxscff4wvvvgCmZmZUKvVUKvVRk0KZKDsbKmkkJIi\n/czO1myqVk2aMmPTJmlJUCKiJ+lMDM888wzat2+PauzjaDmebGNwcZF+TpumlRzq1we2bAHefBO4\ncMF0oRKR+dFZlfTRRx/hzJkzeOWVV7Sm3ebSnmashF5JiIkBQkK0dv32W2DBAiAuDrC2NnKcRCQr\n2doYRo0apTnBk7777rsyn8xQTAzyGjcOuH1bKkGwYEhUeRi9V5IxMTHIKy9PmkepXz9phDQRVQ4V\nnhjmzJmDjz76CO+++26xJ1uyZEnZozQQE4P80tIAPz9pcZ+napuIyEIZ+uwssRe7h4cHAKB9+/bF\nnkxf+fn58PX1hZOTE3bt2lVk+5QpU/Djjz/C1tYWGzZsgLu7u97HporTuDGweTMwYAAQHQ3wNhBV\nXbJXJS1YsAC//PIL1Go1du7cqbUtPj4e4eHh2LlzJ6KiorBhwwZERkYWDZIlBqNZtQqYM0dqjH6y\n7ZqILI9s4xjOnTuHd999F76+vmjbti3atm0LLy8vvQ5+9epV7NmzB2PHji02uLi4OAwePBh2dnYI\nCwtDUlJSmS+AKtbo0dJEe8OGSRPvEVHVozMxjB8/Hr6+vti4cSN27dqFXbt2FfnLvyQTJ07E3Llz\nSxwDER8fr6myAoAGDRogOTlZz9BJLvPnA0IA4eGmjoSITEGvmXLCwsLwzDPPlOnAkZGRaNiwIZRK\nJVQqVbH7CCGKlCRKar+YMWOG5vegoCAEcXpQ2VhZAT/+CHTqBCxdCrz1lqkjIiJ9qFSqEp+3ZaGz\njSE2NhaLFi1C7969Ua9ePelLegxwmzp1KtatWwcrKyvk5ubi7t27GDRoENauXavZ5+uvv8bjx48x\nceJEAICbm1uxJQa2MZhGcrI0Tm7NGqBXL1NHQ0RlJds4hnfffRf79++Hr6+vVqmhLAPcjhw5gnnz\n5hXplVTY+Lxjxw5ERUVh48aNbHw2M8eOAS+/DBw8KE26R0SWo8K7qxbat28fzp8/X+aqpKcVVhEt\nX74cgNR24efnh8DAQPj6+sLOzg7r168v1zmo4gUGAosXA6GhwPHjQKNGpo6IiOSms8Qwbtw4jBgx\nAt26dTNWTEWwxFDByjCXUqFZs6QpM44cAerWNVKcRFQuslUleXh44MKFC2jcuLHWJHpnz541LFID\nMDFUsFJWeCtp8IIQ0kysKSlAZCRQzgIkERmBbIkhNTW12M9dnlj4RW5MDDIoZYW3kjx+LLU32NhI\nDdJlGABPRCZQ4YkhOztbU0IoyZ07dzQ9leTExCCTElZ4K839+8ALL0htD3PnyhodEZVThY98HjJk\nCF599VXs2bMHKSkpyM/Px+PHj5GcnIzdu3djxIgReOWVV8oVNJlQKSu8laZWLamJYs8eLgtKVFmV\nWpV06tQprFixAqdPn9aML3Bzc4OPjw/GjRsHpVJpnCBZYqhYBrQxPO3qVanUMH06MGaMzPESkUG4\nHgPpz4BeScX54w8gKAhYuBAYOrRij01E5cfEQCZx9izQs6e0RGhoKCqkNEJEFYOJgUwmPh7o2xdY\nvx548UUY1OOJiCoeEwOZ1LFjwMCBwA8/SL2WDOnxREQVS7b1GADg+vXr2LBhAwDg1q1bSElJKfOJ\nqHILDAS2bpXWcTgWaViPJyIyDzoTw4oVKxAWFobPPvsMAPDw4UO8+uqrsgdGlqdrV2Dbqmz88co0\nqHrOkkoKs2ZJ1UpMDkQWQ2diWLduHfbv34/atWsDABo3bgy1Wi17YGSZulSLgfvWWRgyzgb79kFq\nW5g1S+qVREQWQWdiqFevntYKbFeuXIGTk5OsQZEFCwlB5z422L4dGDkS+OknSMmBXVWJLIbOxPD6\n669jxIgRyM7OxmeffYa+ffti7NixxoiNLFjnzsC+fcDbbwPr1pk6GiIqC716JaWmpmLr1q0oKCjA\nsGHD4OzsbIzYNNgryXIlJUldWCdPBt57z9TREFUtsnVXTUlJgYODA5577jkAwIMHD5Cens7ZVUlv\nqanS0qCDBwMzZ3JWViJjka276uDBg1G9evV/vlCtGgYPHlzmE1HV5eIijXM4eFCaV+nRI1NHRESl\n0ZkYCgoKtJb1fOaZZ/Dw4UNZg6LKp0ED4NAh4OZNqR36zh1TR/SU3buLdqnNzpY+J6pidCaG4OBg\nfPPNN3j06BEePnyIb775Bi+88IIxYqNKpk4dYPt2oHlzoEsX4MoVU0f0hIAA7fEWhdN6BASYNi4i\nE9CZGD744APEx8ejefPmaN68OeLj4/Hhhx8aIzaqhKysgP/+Fxg1CujYETh+3NQR/a1wvMW0aVKj\nCCf+oypM77mSHj58CIVCgRo1asgdUxFsfK4knpqSe88e4L2R2Vj2Wgx6LDSTcQ6c44kqEUOfnVb6\n7PT7779j//79yMrK0nz26aeflvlkVMUVVtf8/Zd4n87Z6NhzGnrsmIXAfGD+fMAEf3f84+lV7Vhi\noCpKZ1XS7NmzMXnyZMyZMwdZWVlYvXo1bt68aYzYqLIpprrGbuks/Jxog+RkYJpyN25cMFED8JPr\nRnCOJ6ridFYldejQASdOnICXlxfOnz+PtLQ0DB06FMeOHTNWjKxKqmyKqa4pKAD+PTUbDl9Pg+v3\ns9C1n5EX+eHKc1QJyTaOQaFQoHr16nB3d8e5c+dQr149ZGZmGhQkVQLl7db5dHXN38eqVg34+Csb\nuGyYheSwaVj0QSoKphqxATgkpOh5OMcTVVVCh88//1xkZmaK/fv3i1atWolGjRqJJUuW6PpahdIj\nTDKWrCwh3n5b+lnc+wr47o0TKUIA4pUOKeLPPys2fKKqxNBnZ5lXcMvNzcWzzz4rT5YqAauSzIyh\nS3fqU13z97ELPpyM0yPmYuilWfhssQ3CwjiVBlFZyTZXUl5eHiIjI7Fv3z4oFAr07t0bISEhqFmz\npsHBlhUTgxmSo1vn020K2dm4OW4aQs/MQhMvG3w7cDfq9WE7AJG+ZGtj+Oqrr7Bx40b06tULL774\nIr7//nt89dVXeh08NzcX/v7+8PHxQceOHbFw4cIi+6hUKtSrVw9KpRJKpRIzZ84s80WQkZXQTlBu\nMTHapQ8bGzRcMQvRX8agSRPAb2IALg2dBpHF0clEstJV1+Tu7i5yc3M173Nzc4W7u7vedVU5OTma\n73l6eoqLFy9qbT98+LAIDQ0t9Rh6hEnGUp42hnKKjRXCr2WW2NPsbXEtNsVo5yWyVIY+O3WWGDp3\n7ow9e/Zo3u/duxedOnXSO/HUqlULAHDv3j08fvy42CoowWoiy1HMX/XGWrqzUycg+qwNLoROhmPn\nZlhlPxmP63AAGlFF05kYjh8/jkGDBsHW1ha2trZ4+eWXceLECbRt2xZeXl46T1BQUABvb288//zz\neOedd4os8qNQKBAbGwsfHx+Eh4cjOTnZ8Ksh+Zm4W2fNB9mY+Hgukg+mwG7VXAT5ZOPIEaOcmqjK\n0Nn4nJp7bu+iAAARzElEQVSaWuoB9F2wJzU1FX369MGGDRugVCo1n6vValSvXh01atTAmjVrsH37\ndkRGRmoHqVAgIiJC8z4oKAhBQUF6nZcqkacap0VWNpKHTcOA87PQJtAGX34ptYcTVVUqlQoqlUrz\n/rPPPpOnV1JFmjRpEpo3b44333yz2O1CCDg4OODKlStaVU7slUQASuzumnsoBnPOhWDJEmkhoClT\nAFtb04VJZC5k65VUHrdv30b23z1WMjIysH//fvTv319rn/T0dE3gu3btgpeXl1G7wpIFKaEa69lB\nIYiIAH79FcjKAlq2BL78EsjJMVJcXOSHKhlZE8P169cRHBwMb29vDB8+HJMmTYKjoyOWL1+O5cuX\nAwC2bNmCtm3bwsfHB1u2bMH8+fPlDIkqsUaNgP/9T1pG9NQpaUGg+fONkCC4yA9VMkatSjIUq5LI\nEGfPAp9/LiWKDz4A3noLqFdPppMZOhqcSEayjXw2B0wMVB7nzgFz5kgLA40ZA7z3HuDkJMOJuMgP\nmRmzbGMgMgdt2gDr1gG//AI8egR4eQHDh0vLiur9/4yudgS5RoMTmQATA1UZLi7AwoXSs9vXF3jt\nNaB9e+Dbb4F793R8ubR2BC7yQ5UMq5KoyiooAKKigGXLgOhoYMgQ4F//Avz9S5jJtaR2BC7yQ2aK\nbQxE5XDtGrB6tfSqVk0qTQwfXsyAObYjkAVhGwNROTRqBEydCvz+O7ByJZCWBvj5SQWBJUukxGGS\ndgSOkSATYGIgeoJCISWDb76RksPUqVKjdafW2djWehr+22gWUoSL8doROEaCTIBVSUR6eLR9N1SP\nArBpvw127gQaNgSGvJiNwY4xaDkxBNWry3hyjpEgA7GNgchI8vOB+Hhg1y6pRictDXjxRaBXL+mn\no6MMJ2XbBhmAiYHIRK5eBfbtk3o4HToENG4M9OgBvPAC0LUrULduOU/AEgMZiImByAw8fgwkJgIH\nDgA//wzExQGenkD37kBQkNQ0YG1dhgMWsw621nuiUjAxEJmh3FzgxAlApQIOH5Yaslu3lkoSgYHS\nq0GDUg7AMRJUDkwMRBYgNxc4eVIaUHfsGBAbK7VJBAZKz/+AAKBFixIG2BGVERMDkQXKz5fWkYiJ\nkRJFTIyUPDp3lpJE587StB3PPmvqSMkSMTEQmasyVgf99ZdUkoiNlXZJSgK8vaUkUfhycDBi/GSx\nmBiIzFU5G5BzcqTusYWJ4sQJaenSwqqngADAw0OayoPoSUwMROasArucFhRIpYiYmH9emZlAp07/\nNGh36MDqJ2JiIDJ/Mg5Su3FDShBHj/5T/aRUAl26SD2gOneugPEUZHGYGIjMmZEHqanVUpXT0aNS\nD6iEhH+6yXbrJiUMW1vZTi9hV1uT4+yqROZKzoV8Sph91Tp6N3r2lNa8VqmAjAxgwQLAzg74z3+A\nJk2Adu2A8HBpao87d8ofShGlTQDIWWPNm7AAFhImUfEiI4XIytL+LCtL+lyf7aXJyhLi7bf/+f7T\n70uQlydETIwQM2cK0aOHEHXqCOHrK8T//Z8Qe/cKoVbreW36xpeSUnqcesZNZWPos9MinrhMDFSp\nlfchWdLDtwxyc4U4ckSIGTOE6NJFiNq1hQgMFOLTT6XPc3PLfMh/pKQIAUg/KzhuKh0TA5ElK+9D\nsqSHb2lKKank5AgRFSXERx9JJQlrayFefFGIOXOESEgQ4vFjPc+h67oMiVtH7BXh+nUhwsKE+OOP\nCjmcyTAxEFk6Qx+ShiaVMpRUMjOF+OknId55R4jWrYWwsxNiZqdIseLfWeK334QoKHjimIUPZ13H\nLy1uXQ9+maqiCgqEWLVKiAYNhJg6VYgHD8p1OJNjYiCyZHI93PV9wJbxvGlpQvywLEsccn9btHHK\nEg4OQowdnCXOB70tkn/JkhJFaefWN2mU9uCv4Kqo6Ggh/P2FaN9eiFOnynUos8HEQGSpyvPXb0X8\nZV1SSUWf6pqsLFHw1tvizyMp4nz3t8XYwVmiUSMhGjcWYvhwIZYtE+L8+SdKFGU8ts4Hv6GlrL8V\nFAihUgnRp48QTZsKsX69EPn5Bh3KLDExEFkqmevLS33A6rNNV8J66uFcUCDVzX/7rRAjRwrh4iKE\nvb0Q/foJ8eWX0oP43j09Yy/twV+OEkNWlhArVkjtJy1bSgnM0quNisPEQEQlK+4BWxHVNXo+nNPS\nhPjxRyEmThSiY0chatUSok0bIUaNEmLJEqkaJzv7qS9VRNJ6wrVrUrKa2SlSOFtniUGDhNi16+8S\nQkUmYjNidonhwYMHws/PT3h7ewt/f3+xYMGCYvf7+OOPRbNmzUS7du1EUlJS8UEyMRAZrqQHrL4l\nFV3dTQ2oAsvLk3o3LVsmxPjxQvj5SWMpGjcWomdPIT4ckyVOBbwtdq3LEgkJQqT/niXy39Qv9pwc\nIS5elHaZN0+IESOEcHUVwsZGiCFDhNj4TZZ4MLpqjKEwu8QghBA5OTlCCCFyc3OFp6enuHjxotb2\nuLg4ERAQIDIyMsTGjRtFSEhI8UEyMRAZRs4xEhVcBZafL51mzx4hdoyLFJPfyBKhoUL4+AhRv74Q\ndtWyxNA6kcLFRQhPT6mR2NdX+unpKbUR1K0rRM2aQjRrJnWvfe89qZRw/vxTbQdVZAyFoc9Oo8yV\nlJGRgYCAABw4cADOzs6az7/++mvk5+fjgw8+AAC4ubkhOTm5yPc5VxKRgcozX5GZrTedny/NIqtW\nS1OR5+ZKnwsBPPccUKeOFJZNzG4oAvW4ZhknNTQXBj87KzA5FZGfny+8vLxE9erVxddff11k+6uv\nviqioqI07/39/cWlS5eK7CdzmERUHLkbxeVigq6u5srQZ6esk+hVq1YNZ86cwaVLl/DNN9/g1KlT\nTyelItlMwcVuicxDSEjRkoGNjfnPjGpj889EhampRUs5ck5qWElYGeMkLi4u6NOnD+Li4qBUKjWf\n+/v747fffkOvXr0AALdu3YKrq2uxx5gxY4bm96CgIAQFBckZMhFZMhsbaYrzwqqiJxNcTIx2oihM\nJJVgOnCVSgWVSlXu48jWxnD79m1YWVnBxsYGGRkZ6N69O6KiouDo6KjZJz4+HuHh4dixYweioqKw\nceNGREZGFg2SbQxEVBZGXv/CXBn67JStxHD9+nW8/vrryM/Ph4ODAyZNmgRHR0csX74cADB+/Hj4\n+fkhMDAQvr6+sLOzw/r16+UKh4iqiqcbyQuriqpocjAEV3AjosqFK8dpcGlPIiLSwqU9iYioQjAx\nEBGRFiYGIiLSwsRARERamBiIiEgLEwMREWlhYiAiIi1MDEREpIWJgYiItDAxEBGRFiYGIiLSwsRA\nRERamBiIiEgLEwMREWlhYiAiIi1MDEREpIWJgYiItDAxEBGRFiYGIiLSwsRARERamBiIiEgLEwMR\nEWlhYiAiIi1MDEREpIWJgYiItDAxEBGRFiYGIiLSImti+Ouvv9C9e3d4enoiKCgIGzduLLKPSqVC\nvXr1oFQqoVQqMXPmTDlDIiIiHWRNDDVq1MDChQtx/vx5bNmyBZ988gnUanWR/bp164ZTp07h1KlT\n+OSTT+QMySypVCpThyCrynx9lfnaAF5fVSVrYnBwcICPjw8AoH79+vD09ERCQkKR/YQQcoZh9ir7\nf5yV+foq87UBvL6qymhtDJcuXcL58+fh5+en9blCoUBsbCx8fHwQHh6O5ORkY4VERETFMEpiUKvV\nGDp0KBYuXIjatWtrbWvXrh3++usvnDx5Eh4eHnj//feNERIREZVEyOzhw4eiZ8+eYuHChTr3LSgo\nEA0bNhS5ublan7u5uQkAfPHFF198leHl5uZm0HPbCjISQmDMmDFo06YNPvjgg2L3SU9PR8OGDaFQ\nKLBr1y54eXmhZs2aWvtcunRJzjCJiOgJCiHka/k9duwYunbtCi8vLygUCgDA7NmzceXKFQDA+PHj\n8d///hdLly6FlZUVvLy8MGnSJHh5eckVEhER6SBrYiAiIstjliOfN2/eDE9PT1SvXh2JiYkl7ufi\n4gIvLy8olcoivZ3Mmb7XFx0djdatW6NFixb4+uuvjRih4dRqNfr3748mTZpgwIABuHfvXrH7Wdq9\n0+deTJkyBa6urmjfvj0uXLhg5AjLR9f1WfJA1NGjR+P5559H27ZtS9zHku+drusz6N4Z1DIhs6Sk\nJPH777+LoKAg8csvv5S4n4uLi8jIyDBiZBVD3+vz8fERR44cEampqaJVq1bi1q1bRozSMHPmzBHv\nvPOOyM3NFRMmTBBz584tdj9Lu3e67kVcXJwICAgQGRkZYuPGjSIkJMREkRpG1/UdPnxYhIaGmii6\n8omOjhaJiYmiTZs2xW639Hun6/oMuXdmWWJwd3dHy5Yt9dpXWGBNmD7Xd+fOHQBA165d0bRpU7z4\n4ouIi4szRnjlEh8fjzFjxqBmzZoYPXp0qTFbyr3T517ExcVh8ODBsLOzQ1hYGJKSkkwRqkH0/W/N\nUu7X07p06QJbW9sSt1vyvQN0Xx9Q9ntnlolBXwqFAsHBwRgwYAB27txp6nAq1MmTJ+Hu7q557+Hh\ngRMnTpgwIv08Gbe7uzvi4+OL3c+S7p0+9yI+Ph4eHh6a9w0aNLCYwZr6XF9lHohqyfdOH4bcO1m7\nq5amZ8+euHHjRpHPZ8+ejdDQUL2OERMTA0dHRyQlJSE0NBR+fn5wcHCo6FANUhHXZ65KurZZs2bp\n/ZeJOd87Qwghilx7YU+8yqBwIGqNGjWwZs0avP/++4iMjDR1WBWC964Y5ajakp2uOvgnTZw4UaxY\nsULmiCpWadeXnZ0tfHx8NO/feecdERkZaazQDPbyyy+LxMREIYQQCQkJYtCgQTq/Y+73Tp97sWTJ\nErFgwQLNe1dXV6PFV15l/W+tpIGo5iwlJaXEOnhLvneFSru+J+l778y+KkmU8Bfo/fv3NTO13rp1\nC1FRUejdu7cxQ6sQJV1fvXr1AEi9RVJTU3HgwAH4+/sbMzSD+Pv7Y9WqVXjw4AFWrVqFjh07FtnH\n0u6dPvfC398fW7duRUZGBjZu3IjWrVubIlSD6HN96enpmv9WSxqIaqks+d7pw6B7VxHZqqJt27ZN\nODk5iWeffVY8//zzonfv3kIIIdLS0kSfPn2EEEIkJycLb29v4e3tLYKDg8XKlStNGXKZ6HN9Qgih\nUqmEu7u7cHNzE4sXLzZVuGVy9+5d0a9fP+Hs7Cz69+8v1Gq1EMLy711x92LZsmVi2bJlmn0++ugj\n4eLiItq1ayd+++03U4VqEF3X95///Ed4enoKb29v8dprr4kzZ86YMtwyGTZsmHB0dBQ1atQQTk5O\nYuXKlZXq3um6PkPuHQe4ERGRFrOvSiIiIuNiYiAiIi1MDEREpIWJgYiItDAxEBGRFiYGIiLSwsRA\nRERamBiIjKCgoMDUIRDpjYmB6CkRERFYvHix5v20adOwZMkSbN68GX379kWXLl2wYsUKzfaBAwei\nffv2CA4Oxk8//aT5vE6dOpg+fTp8fHwsYmZcIg15B2sTWZ7U1FTRrl07IYQQ+fn5ws3NTfzyyy9i\nyJAh4tGjRyIvL09069ZNXLt2TQghRGZmphBCiDt37gilUqk5jkKhsJipTIieZLJpt4nMVdOmTWFv\nb4/Tp0/jxo0bUCqVUKlUiI+PR4cOHQAAOTk5+PnnnzFixAj88MMP2LJlC27evIm//voLv/76K9q2\nbYtq1aph1KhRpr0YIgNwriSiYmzatAkxMTFIT0/HqFGj8Ouvv+L+/fuIiIjQ2u/y5csYMGAAVCoV\n7OzsoFQqsXjxYnTt2hXW1taaWWSJLAnbGIiKMXDgQOzbtw8JCQno1asXhg0bhq1bt+LKlSsAgLS0\nNNy6dQvXr19HgwYNYGdnh5iYGJw5c8bEkROVH6uSiIpRo0YNBAcHw9bWFgqFAs7OzpgxYwbefPNN\nXL16FdbW1li/fj0CAgLQtGlTtG7dGm3atEGPHj00x6hMq4BR1cKqJKJiFBQUoF27dti+fTtcXFxM\nHQ6RUbEqiegpv/32Gzw8PPDKK68wKVCVxBIDERFpYYmBiIi0MDEQEZEWJgYiItLCxEBERFqYGIiI\nSAsTAxERafl/EXzHhjvwGfoAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 65 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Computing the Error" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also compute what the training error was. First compute the expected output under the posterior density," ] }, { "cell_type": "code", "collapsed": false, "input": [ "f_mean = np.dot(Phi, w_mean)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 66 }, { "cell_type": "markdown", "metadata": {}, "source": [ "These can be used to compute the error" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$E(\\mappingVector) = \\frac{\\numData}{2} \\log \\dataStd^2 + \\frac{1}{2\\dataStd^2} \\sum_{i=1}^\\numData \\left(\\dataScalar_i - \\mappingVector^\\top \\phi(\\inputVector_i)\\right)^2 \\\\\\\n", "E(\\mappingVector) = \\frac{\\numData}{2} \\log \\dataStd^2 + \\frac{1}{2\\dataStd^2} \\sum_{i=1}^\\numData \\left(\\dataScalar_i - \\mappingFunctionScalar_i\\right)^2$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# compute the sum of squares term\n", "sum_squares = ((y-f_mean)**2).sum()\n", "# fit the noise variance\n", "error = (num_data/2*np.log(sigma2) + sum_squares/(2*sigma2))\n", "print 'The error is: ',error" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The error is: -6.26873167309\n" ] } ], "prompt_number": 67 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we have the fit and the error, let's plot the fit and the error." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Computing Error Bars" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can compute error bars for the predictions. The error bars are the standard deviations of the predictions for $\\mappingFunctionVector=\\basisMatrix\\mappingVector$ under the posterior density for $\\mappingVector$. The standard deviations of these predictions can be found from the variance of the prediction at each point. Those variances are the diagonal entries of the covariance matrix. We've already computed the form of the covariance under Gaussian expectations, " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\text{cov}\\left(\\mappingFunctionVector\\right)_{\\gaussianDist{\\mappingVector}{\\meanVector}{\\covarianceMatrix}} = \\basisMatrix\\covarianceMatrix \\basisMatrix^\\top$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "which under the posterior density is given by" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\text{cov}\\left(\\mappingFunctionVector\\right)_{\\gaussianDist{\\mappingVector}{\\meanVector_w}{\\covarianceMatrix_w}} = \\basisMatrix\\covarianceMatrix_w \\basisMatrix^\\top$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# compute the error bars\n", "f_pred_cov = np.dot(Phi_pred, np.dot(w_cov, Phi_pred.T))\n", "f_pred_var = np.diag(f_pred_cov)[:, None]\n", "f_pred_std = np.sqrt(f_pred_var)\n", "\n", "# plot mean, and error bars at 2 standard deviations\n", "plt.plot(x_pred.flatten(), f_pred_mean.flatten(), 'b-')\n", "plt.plot(x_pred.flatten(), (f_pred_mean+2*f_pred_std).flatten(), 'b--')\n", "plt.plot(x_pred.flatten(), (f_pred_mean-2*f_pred_std).flatten(), 'b--')\n", "plt.plot(x, y, 'rx')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 68, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nau/evejYsWPp86CgIOzZs8eJEVmmfNwdO3ZERkaG2ePc6bOz5LPIyMhAUFBQ6fNmzZq5zYA8S67P\nkwcbuvNnZwlrPrsqu0JWZsCAATh9+rTJ9pdeegnR0dEWnSM1NRUtW7ZEVlYWoqOjERYWBn9//5qE\nZTO2uD5XVdG1JSQkWNxCcOXPzhoiYnLtJT3EPEHJYMM6depgzZo1mDZtGpKSkpwdlk3wszOjBmUi\ni1RVky5vxowZ8tZbb9k5Ituq7PoMBoOEhoaWPp86daokJSU5KjSr/fnPf5b9+/eLiMi+fftk5MiR\nVb7G1T87Sz6L5cuXy2uvvVb6PDAw0GHx1VR1/1uraLChK8vJyamwJu3On12Jyq6vPEs/O4eUZaSC\nluDly5dLZ5jMy8tDSkoKBg0a5IiQbKqi62vcuDEA1YshNzcX27ZtQ3h4uCNDs0p4eDhWr16NK1eu\nYPXq1ejZs6fJMe722VnyWYSHh+PTTz/FuXPnkJiYiE6dOjkjVKtYcn1nzpwp/W+1osGG7sqdPztL\nWPXZ2eIbx5zPPvtMWrduLbfeequ0aNFCBg0aJCIiJ0+elMGDB4uISHZ2tnTt2lW6du0q/fr1k3ff\nfdde4dicJdcnIqLT6aRjx47Srl07WbZsmbPCrZYLFy7I0KFDpU2bNjJs2DDJz88XEff/7Mx9FitX\nrpSVK1eWHvPcc89JQECAdOvWTQ4fPuysUK1S1fW9/vrrEhwcLF27dpXx48fLDz/84Mxwq2X06NHS\nsmVLqVOnjrRu3Vreffddj/rsqro+az47DmIiIvJATu8tQ0REtsfkTkTkgZjciYg8EJM7EZEHYnIn\nIvJATO5ERB6IyZ2IyAMxuRMReaD/B+vvE9DGVEKIAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 68 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Gaussian Processes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we're going to build on our understanding of the marginal likelihood we derived in the lectures, and also across the last part of the lab, to try and see the relationship with Gaussian procces. In the last lab section we sampled directly from the weight vector $\\mappingVector$ and applied it to the basis matrix $\\basisMatrix$ to obtain a sample from the prior and a sample from the posterior. Now we'll start by constructing the prior directly, rather than sampling the weights and then combining with the basis." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Sampling from the Prior" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first thing we'll do is to set up the parameters of the model, these include the parameters of the prior, the parameters of the basis functions and the noise level." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mappingVector \\sim \\gaussianSamp{\\zerosVector}{\\alpha \\eye}$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# set prior variance on w\n", "alpha = 4.\n", "# set the order of the polynomial basis set\n", "order = 5\n", "# set the noise variance\n", "sigma2 = 0.01" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 69 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we have the variance, we can sample from the prior distribution to see what form we are imposing on the functions *a priori*. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before we sample from our prior, recall the problems with the basis set from our last lab: the basis doesn't work well when predictions are made outside the $-1, 1$ region. Let's rescale the data to be within that region." ] }, { "cell_type": "code", "collapsed": false, "input": [ "span = np.max(x) - np.min(x) \n", "offset = np.min(x)\n", "x -= offset\n", "x /= span # x is now between zero and 1\n", "x = x*2-1 # x is now between -1 and 1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 70 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's now compute a range of values to make predictions at, spanning the *new* space of inputs," ] }, { "cell_type": "code", "collapsed": false, "input": [ "num_data = x.shape[0]\n", "num_pred_data = 100 # how many points to use for plotting predictions\n", "x_pred = linspace(-1.2, 1.2, num_pred_data)[:, None] # input locations for predictions" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 71 }, { "cell_type": "markdown", "metadata": {}, "source": [ "now let's build the basis matrices.\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# build the basis set\n", "Phi = np.zeros((num_data, order+1))\n", "Phi_pred = np.zeros((num_pred_data, order+1))\n", "for i in range(0, order+1):\n", " Phi[:, i:i+1] = x**i\n", " Phi_pred[:, i:i+1] = x_pred**i" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 72 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Weight Space View" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we will sample from the prior density to obtain a vector $\\mappingVector$ using the function `np.random.normal` and combine with our basis to create 10 samples from the model over functions," ] }, { "cell_type": "code", "collapsed": false, "input": [ "num_samples = 10\n", "K = order+1\n", "for i in xrange(num_samples):\n", " z_vec = np.random.normal(size=K)\n", " w_sample = z_vec*np.sqrt(alpha)\n", " f_sample = np.dot(Phi_pred,w_sample)\n", " plt.plot(x_pred.flatten(), f_sample.flatten())\n" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\npjP1KgAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 73 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Function Space View" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The process we have used to generate the samples is a two stage process. To obtain each function, we first generated a sample from the prior," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mappingVector \\sim \\gaussianSamp{\\zerosVector}{\\alpha \\eye}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We next applied the likelihood. The mean of the function in the likelihood is given by" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mathbf{f} = \\basisMatrix \\mappingVector.$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "so we plotted the result. In the lecture we talked about computing the marginal likelihood directly. We used properties of Gaussian densities to show that," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mappingFunctionVector \\sim \\gaussianSamp{\\zerosVector}{\\alpha \\basisMatrix \\basisMatrix^\\top},$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "so we should be able to sample directly from this density. To do that we use the `np.random.multivariate_normal` command introduced in the last session. We need to sample from a multivariate normal with covariance given by $\\alpha\\basisMatrix\\basisMatrix^\\top$ and a zero mean," ] }, { "cell_type": "code", "collapsed": false, "input": [ "K = alpha*np.dot(Phi_pred, Phi_pred.T)\n", "for i in xrange(10):\n", " f_sample = np.random.multivariate_normal(mean=np.zeros(x_pred.size), cov=K)\n", " plt.plot(x_pred.flatten(), f_sample.flatten())" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 74 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can plot the covariance given as an image in python with a colorbar to show scale." ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.imshow(K)\n", "plt.colorbar()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 75, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nkkOl8ZpDBTm7gly1hmy55o6ysMKclroTY9dLuQTMVIFpG5jW/sJ1kOzdKCIN4o+OjuK1116LqvkU\nKVJIcNVVV2F8fDxUG15JpDyWLFmC48eNrmHSQqQEliJFihRRIoYgfooUKVJEg5TAUqRI0bGIjMBe\nf/11XHDBBVixYgUeffTRqLoJhSNHjuDqq6/G6tWrMTo6iqeeegoAMDU1hc2bN2NwcBDXX389Tp0y\n+Zy98KhWqxgeHm4sik36eKenp3HLLbfg/PPPx6pVq7Bv377Ej/l73/seLrvsMlxyySW48847AST/\ne+5GREZg3/jGN/DEE09g7969+M53voNjx4yubzCCfD6PXbt2YXJyEs888wx27NiBqakpPPbYYxgc\nHMR7772Hs846C48//ni7h+rCI488glWrVjWCrEkf7z333IPBwUEcOHAABw4cwMqVKxM95uPHj+P+\n++/Hnj17sH//fhw6dAivvPJKosfcrYiEwE6ccJ4qcOWVV+Kcc87Btddei3379kXRVSgsW7YMa9as\nAQAsXboUq1evxv79+zExMYHt27ejp6cHt956a6LGfvToUbz44ov4+te/3li6keTxAsDevXvx7W9/\nG729vcjlcli0aFGix9zX1wfbtnHixAnMzs5iZmYGixcvTvSYuxWRENj+/ftduy6uWrUKb7/9dhRd\nGcP777+PyclJrF+/3jX+lStXem6qFie++c1v4sEHH0Qm0/zXJXm8R48eRbFYxNjYGEZGRrBz507M\nzs4mesx9fX147LHHcO6552LZsmW4/PLLMTIykugxdyvSID6c2MaNN96IXbt2YWBgoC2LUnXw/PPP\n47Of/SyGh4ddY0zqeAGgWCzi0KFD2LJlC8bHxzE5OYmnn3460WP++OOPMTY2ht/97nf48MMP8dZb\nb+H5559P9Ji7FZEQ2Lp16/D73/++8XlychIbNmyIoqvQKJfL2LJlC26++WZs3rwZgDP+gwedzdoO\nHjzoualaXPjlL3+JZ599Fueddx62bt2KV199FTfffHNixwsAy5cvx9DQEDZt2oS+vj5s3boVL7/8\ncqLHPDExgQ0bNmD58uU4/fTTccMNN+CNN95I9Ji7FZEQ2KJFiwA4M5Effvgh9uzZg5GRkSi6CgXb\ntrF9+3ZceOGFjZkmwNkZcvfu3ZidncXu3bsTQ773338/jhw5gg8++AA//vGPcc011+Df//3fEzte\nhhUrVmDfvn2o1Wp44YUXsHHjxkSP+YorrsCvfvUrHD9+HHNzc3jppZdw7bXXJnrMXQs7IoyPj9sr\nV660/+7v/s5+5JFHouomFN544w3bsiz74osvttesWWOvWbPGfumll+yTJ0/aX/rSl+yzzz7b3rx5\nsz01NdXuobZgfHzc3rRpk23bduLH++6779ojIyP2xRdfbN911132qVOnEj/mH/zgB/aVV15pX3rp\npfaOHTvsarWa+DF3I9KlRClSpOhYpEH8FClSdCxSAkuRIkXHIiWwFClSdCxSAkuRIkXHIiWwFClS\ndCxSAkuRIkXHIiWwFClSdCxSAkuRIkXH4v8Dqy+ztYeFZEAAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 75 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because the full model involves corrupting the latent function with Gaussian noise," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\dataVector = \\mappingFunctionVector + \\noiseVector$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and the noise is sampled from an independent Gaussian distribution with variance $\\dataStd^2$," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\noiseVector \\sim \\gaussianSamp{\\zerosVector}{\\dataStd^2 \\eye},$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "we can use properties of Gaussian variables, i.e. the fact that sum of two Gaussian variables is also Gaussian, and that it's covariance is given by the sum of the two covariances, whilst the mean is given by the sum of the means, to write down the marginal likelihood," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\dataScalar \\sim \\gaussianSamp{\\zerosVector}{\\alpha \\basisMatrix \\basisMatrix^\\top + \\dataStd^2 \\eye}$$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sampling directly from this distribution gives us the noise corrupted functions," ] }, { "cell_type": "code", "collapsed": false, "input": [ "K = alpha*np.dot(Phi_pred, Phi_pred.T) + sigma2*np.eye(x_pred.size)\n", "for i in xrange(10):\n", " y_sample = np.random.multivariate_normal(mean=np.zeros(x_pred.size), cov=K)\n", " plt.plot(x_pred.flatten(), y_sample.flatten())" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 76 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we can see the small effect of our noise value, $\\dataStd^2$. We can increase the noise value to see a different effect," ] }, { "cell_type": "code", "collapsed": false, "input": [ "sigma2 = 1.\n", "K = alpha*np.dot(Phi_pred, Phi_pred.T) + sigma2*np.eye(x_pred.size)\n", "for i in xrange(10):\n", " y_sample = np.random.multivariate_normal(mean=np.zeros(x_pred.size), cov=K)\n", " plt.plot(x_pred.flatten(), y_sample.flatten())" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 77 }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "Function Space Reflection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "How would you include the noise term when sampling in the weight space point of view?" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Gaussian Process" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rather than sampling from the prior over parameters, we sampled from the marginal likelihood. Specifying this marginal likelihood directly, and avoiding the intermediate weight-space representation is what Gaussian processes are all about. In a Gaussian process you specify the *covariance function* directly, rather than *implicitly* through a basis matrix and a prior over parameters. Gaussian processes have the advantage that they can be *nonparametric*, which in simple terms means that they can have *infinite* basis functions. In the lectures we introduced the *exponentiated quadratic* covariance, also known as the RBF or the Gaussian or the squared exponential covariance function. This covariance function is specified by" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\kernelScalar(\\inputVector_i, \\inputVector_j) = \\alpha \\exp\\left( -\\frac{\\ltwoNorm{\\inputVector_i-\\inputVector_j}^2}{2\\lengthScale^2}\\right).$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "where $\\ltwoNorm{\\inputVector_i-\\inputVector_j}^2$ is the squared distance between the two input vectors " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's build a covariance matrix based on this function. We will compute the covariance at the points given by `x_pred`" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import urllib\n", "url = (\"http://staffwww.dcs.shef.ac.uk/\"\n", " + \"people/N.Lawrence/dataset_mirror/\"\n", " + \"olympic_marathon_men/olympicMarathonTimes.csv\")\n", "urllib.urlretrieve(url, 'olympicMarathonTimes.csv')\n", "olympics = np.loadtxt('olympicMarathonTimes.csv', delimiter=',')\n", "x = olympics[:, 0:1]\n", "#x_pred = linspace(1892, 2016, num_pred_data)[:, None]\n", "x_pred = linspace(0, 4, num_pred_data)[:, None]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 97 }, { "cell_type": "code", "collapsed": false, "input": [ "def kern(x, xprime, variance=1.0, lengthscale=1.0):\n", " return 64*np.exp((-0.5*(x - xprime)**2)/lengthscale**2) + 16*min(x, xprime) + 64*x*xprime\n", " \n", "alpha = 1.0\n", "lengthscale = 1\n", "K = np.zeros((x_pred.size, x_pred.size))\n", "for i in xrange(x_pred.size):\n", " for j in xrange(x_pred.size):\n", " K[i, j] = kern(x_pred[i], x_pred[j], variance=alpha, lengthscale=lengthscale)\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 113 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can image the resulting covariance," ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.imshow(K,interpolation='none')\n", "plt.colorbar()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 114, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 114 }, { "cell_type": "markdown", "metadata": {}, "source": [ "and sample functions from the marginal likelihood." ] }, { "cell_type": "code", "collapsed": false, "input": [ "for i in xrange(10):\n", " y_sample = np.random.multivariate_normal(mean=np.zeros(x_pred.size), cov=K)\n", " plt.plot(x_pred.flatten(), y_sample.flatten())" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nsSsxqwAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 115 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The new covariance function doesn't have the problems with scaling exhibited by the the polynomial basis. We can reset our data from the olympics matrix and show samples computed across the actual years." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import urllib\n", "url = (\"http://staffwww.dcs.shef.ac.uk/\"\n", " + \"people/N.Lawrence/dataset_mirror/\"\n", " + \"olympic_marathon_men/olympicMarathonTimes.csv\")\n", "urllib.urlretrieve(url, 'olympicMarathonTimes.csv')\n", "olympics = np.loadtxt('olympicMarathonTimes.csv', delimiter=',')\n", "x = olympics[:, 0:1]\n", "x_pred = linspace(1892, 2016, num_pred_data)[:, None]\n", "\n", "alpha = 1.0\n", "lengthscale = 4.\n", "K = np.zeros((x_pred.size, x_pred.size))\n", "for i in xrange(x_pred.size):\n", " for j in xrange(x_pred.size):\n", " K[i, j] = kern(x_pred[i], x_pred[j], variance=alpha, lengthscale=lengthscale)\n", " \n", "for i in xrange(10):\n", " y_sample = np.random.multivariate_normal(mean=np.zeros(x_pred.size), cov=K)\n", " plt.plot(x_pred.flatten(), y_sample.flatten())" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "Moving Parameters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Have a play with the parameters for this covariance function and see what effects the parameters have on the types of functions you observe." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Making Predictions\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now have a probability density that represents functions. How do we make predictions with this density? The density is known as a process because it is *consistent*. By consistency, here, we mean that the model makes predictions for $\\mappingFunctionVector$ that are unaffected by future values of $\\mappingFunctionVector^*$ that are currently unobserved (such as test points). If we think of $\\mappingFunctionVector^\\ast$ as test points, we can still write down a joint probability ensity over the training observations, $\\mappingFunctionVector$ and the test observations, $\\mappingFunctionVector^\\ast$. This joint probability density will be Gaussian, with a covariance matrix given by our covariance function, $\\kernelScalar(\\inputVector_i, \\inputVector_j)$. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\begin{bmatrix}\\mappingFunctionVector \\\\\\ \\mappingFunctionVector^\\ast\\end{bmatrix} \\sim \\gaussianSamp{\\zerosVector}{\\begin{bmatrix} \\kernelMatrix & \\kernelMatrix_\\ast \\\\\\ \\kernelMatrix_\\ast^\\top & \\kernelMatrix_{\\ast,\\ast}\\end{bmatrix}}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "where here $\\kernelMatrix$ is the covariance computed between all the training points, $\\kernelMatrix_\\ast$ is the covariance matrix computed between the training points and the test points and $\\kernelMatrix_{\\ast,\\ast}$ is the covariance matrix computed betwen all the tests points. To be clear, let's compute these now for our example, using `x` and `y` for the training data (although `y` doesn't enter the covariance) and `x_pred` as the test locations." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# set covariance function parameters\n", "alpha = 16.0\n", "lengthscale = 8\n", "# set noise variance\n", "sigma2 = 0.05\n", "\n", "# compute covariance for training data, x\n", "K = np.zeros((x.size, x.size))\n", "for i in xrange(x.size):\n", " for j in xrange(x.size):\n", " K[i, j] = kern(x[i], x[j], variance=alpha, lengthscale=lengthscale)\n", "\n", "# compute covariance between training data, x, and test data, x_pred\n", "K_star = np.zeros((x.size, x_pred.size))\n", "for i in xrange(x.size):\n", " for j in xrange(x_pred.size):\n", " K_star[i, j] = kern(x[i], x_pred[j], variance=alpha, lengthscale=lengthscale)\n", " \n", "# compute covariance for test data, x_pred\n", "K_starstar = np.zeros((x_pred.size, x_pred.size))\n", "for i in xrange(x_pred.size):\n", " for j in xrange(x_pred.size):\n", " K_starstar[i, j] = kern(x_pred[i], x_pred[j], variance=alpha, lengthscale=lengthscale)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The overall covariance between our training and test data can now be plotted as" ] }, { "cell_type": "code", "collapsed": false, "input": [ "full_K = np.vstack([np.hstack([K, K_star]), np.hstack([K_star.T, K_starstar])])\n", "plt.imshow(full_K)\n", "plt.colorbar" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The banded structure we now observe is because some of the training points are near to some of the test points. This is how we obtain 'communication' between our training data and our test data. If there is no structure in $\\kernelMatrix_\\ast$ then our belief about the test data simply matches our prior." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To make predictions about the test data we need the conditional distribution: $p(\\mappingFunctionVector^\\ast|\\mappingFunctionVector)$, or when we include noise, $p(\\mappingFunctionVector^\\ast | \\dataVector)$. This conditional distribution is also Gaussian," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mappingFunctionVector^\\ast \\sim \\gaussianSamp{\\meanVector_\\mappingFunctionScalar}{\\covarianceMatrix_\\mappingFunctionScalar}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " with a mean given by" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\meanVector_\\mappingFunctionScalar = \\kernelMatrix^\\top_\\ast \\left[\\kernelMatrix + \\dataStd^2 \\eye\\right]^{-1} \\dataVector$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and a covariance given by " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\covarianceMatrix_\\mappingFunctionScalar = \\kernelMatrix_{\\ast,\\ast} - \\kernelMatrix^\\top_\\ast \\left[\\kernelMatrix + \\dataStd^2 \\eye\\right]^{-1} \\kernelMatrix_\\ast.$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These results can be proved using *block matrix inverse* rules, but they are beyond the scope of this course, so you don't need to worry about remembering them or rederiving them. We are simply writing them here because it is this *conditional* density that is necessary for making predictions. Let's compute what those predictions are for the olympic marathon data." ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = np.dot(np.linalg.inv(K + sigma2*eye(x.size)), K_star)\n", "mu_f = np.dot(a.T, y)\n", "C_f = K_starstar - np.dot(a.T, K_star)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "where for convenience we've defined" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mathbf{a} = \\left[\\kernelMatrix + \\dataStd^2\\eye\\right]^{-1}\\kernelMatrix_\\ast.$$ " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can visualize the covariance of the *conditional*," ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.imshow(C_f)\n", "plt.colorbar" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and we can plot the mean of the conditional" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(x, y, 'rx')\n", "plt.plot(x_pred, mu_f, 'b-')" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "as well as the associated error bars. These are given (similarly to the Bayesian parametric model from the last lab) by the standard deviations of the marginal posterior densities. The marginal posterior variances are given by the diagonal elements of the posterior covariance," ] }, { "cell_type": "code", "collapsed": false, "input": [ "var_f = np.diag(C_f)[:, None]\n", "std_f = np.sqrt(var_f)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "They can be added to the underlying mean function to give the error bars," ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(x, y, 'rx')\n", "plt.plot(x_pred, mu_f, 'b-')\n", "plt.plot(x_pred, mu_f+2*std_f, 'b--')\n", "plt.plot(x_pred, mu_f-2*std_f, 'b--')" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This gives us a prediction from the Gaussian process. Remember machine learning is data + model = prediction. Here our data is from the olympics, and our model is a Gaussian process with two parameters. The main thing the model expresses is smoothness. But it also sustains the uncertainty about the function, this means we see an increase in the size of the error bars during periods like the 1st and 2nd World Wars when no olympic marathon was held. " ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Exercises" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now try changing the parameters of the covariance function (and the noise) to see how the predictions change." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now try sampling from this conditional density to see what your predictions look like. What happens if you sample from the conditional density in regions a long way into the future or the past? How does this compare with the results from the polynomial model?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Gaussian Process models with GPy" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "(section contains additional contributions by Nicolas Durrande and James Hensman" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You've now had an idea of the Gaussian process predictive equations. In the next part of the lab you will move to GPy to fit the Gaussian process models. Note that the difficulties of the questions of the lab session varies. We do not mark these labs in any way, you should focus on the parts that you find most useful. **In this session you should try and complete at least as far as Exercise 5**." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "1 Getting started: The Covariance Function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We assume that GPy is already installed on your machine. You can get instructions on how to install GPy from the [SheffieldML github page](https://github.com/SheffieldML/GPy). They are written as markdown in the README.md file, which is automatically parsed for you just under the file listing there.\n", "\n", "We first tell the ipython notebook that we want the plots to appear inline, then we import the libraries we will need:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "import numpy as np\n", "import pylab as pb\n", "import GPy" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 116 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The current draft of the online documentation of GPy is available from [this page](http://gpy.readthedocs.org/en/latest/)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start with defining an exponentiated quadratic covariance function (also known as squared exponential or rbf or Gaussian) in one dimension:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "d = 1 # input dimension\n", "var = 1. # variance\n", "theta = 0.2 # lengthscale\n", "k = GPy.kern.rbf(d, variance=var, lengthscale=theta) + GPy.kern.Brownian(1, variance=10)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 118 }, { "cell_type": "markdown", "metadata": {}, "source": [ "A summary of the kernel can be obtained using the command `print k`. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "print k" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " Name | Value | Constraints | Ties \n", "-------------------------------------------------------\n", " rbf_variance | 1.0000 | | \n", " rbf_lengthscale | 0.2000 | | \n", "\n" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is also possible to plot the kernel as a function of one of its inputs (whilst fixing the other) with `k.plot()`. \n", "\n", "*Note*: if you need help with a command in ipython notebook, then you can get it at any time by typing a question mark after the command, e.g. `k.plot?`" ] }, { "cell_type": "code", "collapsed": false, "input": [ "k.plot()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nSUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 8 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Setting Covariance Function Parameters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The value of the covariance function parameters can be accessed and modified using `k['.*var']` where the string in bracket is a regular expression matching the parameter name as it appears in `print k`. Let's use this to get an insight into the effect of the parameters on the shape of the covariance function. \n", "\n", "We'll now use to set the lengthscale of the covariance to different values, and then plot the resulting covariance using the `k.plot()` method." ] }, { "cell_type": "code", "collapsed": false, "input": [ "k = GPy.kern.rbf(d) # By default, the parameters are set to 1.\n", "theta = np.asarray([0.2,0.5,1.,2.,4.])\n", "for t in theta:\n", " k['.*lengthscale']=t\n", " k.plot()\n", "pb.legend(theta)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nrkJggg==\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Exercise 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "a) What is the effect of the lengthscale parameter on the covariance function?" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "# Exercise 1 a) answer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "b) Now change the code used above for plotting the covariances associated with the length scale to see the influence of the variance parameter. What is the effect of the the variance parameter on the covariance function?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exercise 1 b) answer\n" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Covariance Functions in GPy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Many covariance functions are already implemented in GPy. Instead of rbf, try constructing and plotting the following covariance functions: `exponential`, `Matern32`, `Matern52`, `Brownian`, `linear`, `bias`,\n", "`rbfcos`, `periodic_Matern32`, etc. Some of these covariance functions, such as `rbfcos`, are not\n", "parametrized by a variance and a lengthscale. Furthermore, not all kernels are stationary (i.e., they can\u2019t all be written as $k ( x, y) = f ( x \u2212 y)$, see for example the Brownian\n", "covariance function). For plotting so it may be interesting to change the value of the fixed input:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "kb = GPy.kern.Brownian(input_dim=1)\n", "inputs = np.array([2., 4.])\n", "for x in inputs:\n", " kb.plot(x,plot_limits=[0,5])\n", "pb.legend(inputs)\n", "pb.ylim(-0.1,5.1)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "(-0.1, 5.1)" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 10 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Computing the Covariance Function given the Input Data, $\\mathbf{X}$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let $\\mathbf{X}$ be a $n$ \u00d7 $d$ numpy array. Given a kernel $k$, the covariance matrix associated to\n", "$\\mathbf{X}$ is obtained with `C = k.K(X,X)` . The positive semi-definiteness of $k$ ensures that `C`\n", "is a positive semi-definite (psd) matrix regardless of the initial points $\\mathbf{X}$. This can be\n", "checked numerically by looking at the eigenvalues:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "k = GPy.kern.Matern52(input_dim=2)\n", "X = np.random.rand(50,2) # 50*2 matrix of iid standard Gaussians\n", "C = k.K(X,X)\n", "eigvals = np.linalg.eigvals(C) # Computes the eigenvalues of a matrix\n", "pb.bar(np.arange(len(eigvals)), eigvals)\n", "title('Eigenvalues of the Matern 5/2 Covariance')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Combining Covariance Functions" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Exercise 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "a) A matrix, $\\mathbf{K}$, is positive semi-definite if the matrix inner product, $\\mathbf{x}^\\top \\mathbf{K}\\mathbf{x}$ is greater than or equal to zero regardless of the values in $\\mathbf{x}$. Given this it should be easy to see that the sum of two positive semi-definite matrices is also positive semi-definite. In the context of Gaussian processes, this is the sum of two covariance functions. What does this mean from a modelling perspective? " ] }, { "cell_type": "raw", "metadata": {}, "source": [ "# Exercise 2 a) answer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Hint*: there are actually two related interpretations for this. Think about the properties of a Gaussian distribution, and where the sum of Gaussian variances arises." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What about the element-wise product of two covariance functions? In other words if we define" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{align*}\n", "k(\\mathbf{x}, \\mathbf{x}^\\prime) = k_1(\\mathbf{x}, \\mathbf{x}^\\prime) k_2(\\mathbf{x}, \\mathbf{x}^\\prime)\n", "\\end{align*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "then is $k(\\mathbf{x}, \\mathbf{x}^\\prime)$ a valid covariance function?" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "# Exercise 2 b) answer" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Combining Covariance Functions in GPy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In GPy you can easily combine covariance functions you have created using the sum and product operators, `+` and `*`. So, for example, if we wish to combine an exponentiated quadratic covariance with a Matern 5/2 then we can write" ] }, { "cell_type": "code", "collapsed": false, "input": [ "kern1 = GPy.kern.rbf(1, variance=1., lengthscale=2.)\n", "kern2 = GPy.kern.Matern52(1, variance=2., lengthscale=4.)\n", "kern = kern1 + kern2\n", "print kern\n", "kern.plot()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " Name | Value | Constraints | Ties \n", "---------------------------------------------------------\n", " rbf_variance | 1.0000 | | \n", " rbf_lengthscale | 2.0000 | | \n", " Mat52_variance | 2.0000 | | \n", " Mat52_lengthscale | 4.0000 | | \n", "\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n4QAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Or if we wanted to multiply them we can write" ] }, { "cell_type": "code", "collapsed": false, "input": [ "kern = kern1*kern2\n", "print kern\n", "kern.plot()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " Name | Value | Constraints | Ties \n", "---------------------------------------------------------------------\n", " [rbf*Mat52]_rbf_variance | 1.0000 | | \n", " [rbf*Mat52]_rbf_lengthscale | 2.0000 | | \n", " [rbf*Mat52]_Mat52_variance | 2.0000 | | \n", " [rbf*Mat52]_Mat52_lengthscale | 4.0000 | | \n", "\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "2\n", "Sampling from a Gaussian Process" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Gaussian process provides a prior over an infinite dimensional function. It is defined by a covariance *function* and a mean *function*. When we compute the covariance matrix using `kern.K(X, X)` we are computing a covariance *matrix* between the values of the function that correspond to the input locations in the matrix `X`. If we want to have a look at the type of functions that arise from a particular Gaussian process we can never generate all values of the function, because there are infinite values. However, we can generate samples from a Gaussian *distribution* based on a covariance matrix associated with a particular matrix of input locations `X`. If these locations are chosen appropriately then they give us a good idea of the underlying function. For example, for a one dimensional function, if we choose `X` to be uniformly spaced across part of the real line, and the spacing is small enough, we'll get an idea of the underlying function. We will now use this trick to draw sample paths from a Gaussian process. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "k = GPy.kern.\n", "X = X[:,None] # reshape X to make it n*p --- we try to use 'design matrices' in GPy \n", "\n", "mu = np.zeros((500)) # vector of the means --- we could use a mean function here, but here it is just zero.\n", "C = k.K(X,X) # compute the covariance matrix associated with inputs X\n", "\n", "# Generate 20 separate samples paths from a Gaussian with mean mu and covariance C\n", "Z = np.random.multivariate_normal(mu,C,20)\n", "\n", "pb.figure() # open a new plotting window\n", "for i in range(2):\n", " pb.plot(X[:],Z[i,:])" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "non-broadcastable output operand with shape (500,500) doesn't match the broadcast shape (500,1,1,1,500,500)", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mmu\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m500\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# vector of the means --- we could use a mean function here, but here it is just zero.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mC\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mK\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# compute the covariance matrix associated with inputs X\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;31m# Generate 20 separate samples paths from a Gaussian with mean mu and covariance C\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Users/neil/SheffieldML/GPy/GPy/kern/kern.pyc\u001b[0m in \u001b[0;36mK\u001b[0;34m(self, X, X2, which_parts)\u001b[0m\n\u001b[1;32m 338\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 339\u001b[0m \u001b[0mtarget\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 340\u001b[0;31m \u001b[0;34m[\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mK\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi_s\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX2\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi_s\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtarget\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi_s\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpart_i_used\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minput_slices\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwhich_parts\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mpart_i_used\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 341\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mtarget\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 342\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Users/neil/SheffieldML/GPy/GPy/kern/parts/poly.pyc\u001b[0m in \u001b[0;36mK\u001b[0;34m(self, X, X2, target)\u001b[0m\n\u001b[1;32m 80\u001b[0m \u001b[0;34m\"\"\"Return covariance between X and X2.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_K_computations\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 82\u001b[0;31m \u001b[0mtarget\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvariance\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_K_dvar\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 83\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 84\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mKdiag\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mValueError\u001b[0m: non-broadcastable output operand with shape (500,500) doesn't match the broadcast shape (500,1,1,1,500,500)" ] } ], "prompt_number": 141 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our choice of `X` means that the points are close enough together to look like functions. We can see the structure of the covariance matrix we are plotting from if we visualize C." ] }, { "cell_type": "code", "collapsed": false, "input": [ "pb.matshow(C)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 18, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAFOijSu/CwY3AAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now try a range of different covariance functions and values and plot the corresponding sample paths for each using the same approach given above." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Try plotting sample paths here" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Exercise 3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Can you tell the covariance structures that have been used for generating the\n", "sample paths shown in the figure below?\n", "
\n", "
\n", "\"Figure \n", "\"Figure\n", "\"Figure \n", "\"Figure\n", "\"Figure \n", "\"Figure\n", "
\n" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "# Exercise 3 answer" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "3 A Gaussian Process Regression Model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will now combine the Gaussian process prior with some data to form a GP regression model with GPy. We will generate data from the function $f ( x ) = \u2212 \\cos(\\pi x ) + \\sin(4\\pi x )$ over $[0, 1]$, adding some noise to give $y(x) = f(x) + \\epsilon$, with the noise being Gaussian distributed, $\\epsilon \\sim \\mathcal{N}(0, 0.01)$. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "np.random.normal?" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "X = np.linspace(0.05,0.95,10)[:,None]\n", "Y = -np.cos(np.pi*X) + np.sin(4*np.pi*X) + np.random.normal(loc=0.0, scale=0.1, size=(10,1)) \n", "pb.figure()\n", "pb.plot(X,Y,'kx',mew=1.5)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 19, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n89RTT5lgMGiOHTuWhSozY66xGB8fN2vWrDFnzpwxxphpxypfzDUW7e3tZteuXcYYY4aHh01ZWZkZ\nHx/PRqlp1d3dbS5cuGDWrFkz7flUcjNjM/5bt25JkhoaGrRq1Spt27ZNvb29k9r09vaqqalJRUVF\nam5u1uDgYKbKy6hkxuKJJ55QYWGhJCkYDKqrqyvjdWZCMmMhSYcOHVJTU5NKSkoyXWLGJDMW58+f\nV01NjZ555hlJUnFxccbrzIRkxqKwsFCffvqpxsbGdPPmTd133315eb9IfX29li9fPuP5VHIzY8Hf\n398/6W7fqqoq9fT0TGrT19enqqqqxOuSkhINDQ1lqsSMSWYs7nX48OGk75tYbJIZi48//lgnT57U\nrl27JCkv/3FLyY1FLBaT4ziqr69XY2OjYrFYpsvMiGTGorm5WXfu3FFxcbE2b96sI0eOZLrMnJBK\nbqb9zt35MP9/vsu98vUfebLOnj2rzs5OnTt3LtulZM3PfvYz/fKXv5TjONP+HbHJZ599pj//+c86\ne/asbt++ra1bt+qvf/2rvvzlL2e7tIz7zW9+o4KCAv3rX//SBx98oGAwqH/+85/60pfseuhwKrmZ\nsRHauHHjpC8dLl68qE2bNk1q4/F4dOnSpcTr0dFRlZWVZarEjElmLCTpL3/5i3bu3KlTp07pq1/9\naiZLzJhkxuL999/X9u3b9cgjj+j48eN6/vnnderUqUyXmnbJjMUTTzyhQCCglStXqqysTBs2bFB3\nd3emS027ZMaiu7tbP/zhD3XffffJ4/HoG9/4Rl5fBDGTVHIzY8E/sV7d3d2t4eFhnTlzRh6PZ1Ib\nj8ej48eP68aNGzp69KgqKyszVV5GJTMWV69e1bPPPqsjR47oW9/6VjbKzIhkxuLDDz/UlStXdOXK\nFTU1Nam9vT0vn/mUzFhs2rRJXV1dun37tm7evKmBgQE9+eST2Sg3rZIZi+985zs6ffq0xsfH9eGH\nH+rmzZvzenhkvkglNzO61HPw4EG1trZqbGxMu3fvVnFxsTo6OiRJra2tqqur0+bNm7VhwwYVFRWp\ns7Mzk+Vl1Fxj8corr+jmzZvauXOnJGnp0qV5+1jrucbCJnONxde+9jXt2LFDGzZsUElJiV555RXd\nf//9Wa46PeYai+3bt+vSpUuJsbj3qbD5pLm5WV1dXbp+/bpKS0t14MABjY2NSUo9N7mBCwAsY9e3\nIAAAgh8AbEPwA4BlCH4AsAzBDwCWIfgBwDIEPwBYhuAHAMv8DzI+fVL5urKXAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "A GP regression model based on an exponentiated quadratic covariance function can be defined by first defining a covariance function, " ] }, { "cell_type": "code", "collapsed": false, "input": [ "k = GPy.kern.rbf(input_dim=1, variance=1., lengthscale=1.)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And then combining it with the data to form a Gaussian process model," ] }, { "cell_type": "code", "collapsed": false, "input": [ "m = GPy.models.GPRegression(X,Y,k)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Just as for the covariance function object, we can find out about the model using the command `print m`. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "print m" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Log-likelihood: -1.351e+01\n", "\n", " Name | Value | Constraints | Ties | prior \n", "-----------------------------------------------------------------\n", " rbf_variance | 1.0000 | (+ve) | | \n", " rbf_lengthscale | 1.0000 | (+ve) | | \n", " noise_variance | 1.0000 | (+ve) | | \n", "\n" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that by default the model includes some observation noise\n", "with variance 1. We can see the posterior mean prediction and visualize the marginal posterior variances using `m.plot()`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "m.plot()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAW0AAAD9CAYAAAB3ECbVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmQXGW9N/DvWbr79DZbZsjovQGM8JKEkIWQzSwz3BAE\npiJVEkvCEoq4JPiWlPWWFEVZVkiqBL0qy0UFpUopC7BuCSpg1Qsm1J0ZhyUJohhALipEuGhklsxM\nd59ezvLcP87pbdae6Z7pPj3fT1Xbc7pPznlOIt88+Z3nPI8khBAgIiJPkKvdACIiKh1Dm4jIQxja\nREQewtAmIvIQhjYRkYcwtImIPKSs0E6lUti4cSPWrFmDTZs24d57761Uu4iIaAJSueO0dV1HKBRC\nOp3GunXr8Ktf/QrnnXdepdpHREQF1HIPEAqFAADxeBymaSIQCBR939nZiZ6ennJPQ0S0oHR0dKC7\nu3v8F6JMlmWJVatWCUVRxAMPPDDu+wqcomIOHjxY7SZUHK/JG3hN3lBL1zRZdpbd05ZlGa+99hpO\nnTqFq666Clu2bMHatWuL9rnzzjtzP3d2dqKzs7Pc0xIR1ZXu7u6Je9ZjlB3aWeeeey6uuuoqHDt2\nbMrQJiKi8cZ2aA8dOjThfmWNHhkYGMDw8DAAYHBwEL/5zW9w9dVXl3PIOVWPPXxekzfwmrzBC9dU\n1uiRkydP4qabboJlWWhvb8f111+PvXv3Fp9AklDGKYiIFqTJsrPsIX+zPTEREU1usuzkE5FERB7C\n0CYi8hCGNhGRhzC0iYg8hKFNROQhDG0iIg9haBMReQhDm4jIQxjaREQewtAmIvIQhjYRUY2ZauqP\nik3NSkRE0zMtG/Gkgf/5cAT9Z3RkLAHTtmFbArYQMC0BWZ68P83QJiKqANsWyJgWBod1vN8fQ1xP\nw7QAy7Zh2gKmLQAbsCGgKApam8JobmmAqsiQJKnoWBnDmvQ8DG0iommYlo1kxsLfPxzF6cE4Uqad\n6x1btvOyhQAgIRz0Y1FzGIsXhyGPCeNKYGgT0YJlCwHLEhiOp/De6REMx9MwLbdnbNmwbAHh9o5l\nSUJTYwgtTVEsUsf3jucLQ5uI6pJlC2QMC6cH4/h7/yiSGQuGJWDZdr53bAsISAj4VbQ1h3FWWxNk\nuTphXCqGNhF5Tu5m3j9H0D/s3MyzbBtWQbkiOwCjMaqhpSmERp9atd5xJTG0iahmCCFgmDYGRnS8\n/89RxJNGUbnCFoBlCQgI+BQFzU0htCxqhCJLdRHIpWBoE9G8sGwBPWXgHwMx/HMwjpRpwcz1jOHc\n2LOd4I6EAmhtDuOsSLjmyxXzjaFNRGURwukFDwwn8T/9I4jrBjKmDUu4gWxlR1cAiiyhpTGExsYo\nmqt4M8/LGNpENCnbFognM/igfxT9Z3QYpp27mZcdeyxsABAIhQJY1BTGotYwFPaO5wxDm2gBEkIg\nY9joH07gg/4Y4ikDpmnDdIfACRswhTO6QlVltDSG0NAUharIczL2mErH0CaqI9lSxeBoCh/0j2I0\nns73jC0nhE23VCGEQEM0iJbGENoi7B17BUObyAOyPeOBER1/HxhFIunUjU13rHG2ZmxZAoCApvnR\n0rjwRlYsBAxtoiqybYFUxkT/mQT+PhCDnrFyZQphC1iWO6pCAIBANKyhpTGM5pYQw3iBYmgTVVh2\nrPHgSBKnB2MY1TMwTKc8YQkblo3c03iWEJAlGQ0RDc2NQbQ1qCxT0JQY2kQlsIWAYdgYGE7g9GAc\n8ZSBjGnBsgDLvWFnZ8cau4/ihYMBNDUE0dTcwF4xVUxZof3+++9j7969+PDDD9HW1oYvfvGLuO66\n6yrVNqI5I9wxxLFkBv1DCQwM60gaTmnCEsK9oQcIAXe8sQ0JEiKhbBAHIcsSR1LQvJPEVEskTOP0\n6dM4ffo01qxZg4GBAWzYsAGvvfYaotFo/gSSNOUqDESVYNtOSeJMPIUPz8QxPJqCYeUffbaFU54Q\nACwb7kRBAgGfioaIhoaIBp+qsDRBNSFjWLj444smzM6yetrt7e1ob28HALS2tuLCCy/EK6+8gksv\nvbScw9IClu0BJ9MmzsSSGBrWnZqw5T7IIQonBHJGTGRrwxIkhDQ/GqMaok1RqLLMR6Cp7lSspv2X\nv/wFb7zxBjZs2FCpQ5KHWe4EPzE9g+FRHWdiaehpA4bpzlHs7uOEsFMzzgYwACiKjGgogEg4wAAm\nKlCR0I7FYvjsZz+Le++9F+FwuBKHpCop7L3qaQMj8RSGR1OI6WlnPgnbhiUkQIjcDTjLFoCQICBg\nCSeMAUACEAyoCAb9Ti04FIQsSQxfojKUHdqGYeCaa67BjTfeiKuvvnrCfe68887cz52dnejs7Cz3\ntAQnWG3hzBucNkwk0yb0pIGYnkJMzyBj2u5Coc7sabZwerjCfRpOCDizqsH9zv0ewvlMVWWEND8i\nIT9C0QgissSbb0Rz5PhLv8WJl/oA5Ds+EynrRqQQAjfddBNaW1txzz33THwCScotUilJyA17ksZs\n17psyIkx24CzcKdhWsgYNjKGhbRh5t7TGdMJT9t5WMJ2e6Mie1NMAMK2AUiwkT1m/tjO48buC04v\nGG5vWEBAEgAkCYoswe9TEfAp0IJ+hAI+qO4sapIEBi2Rh0x1I7Ks0O7r68P27duxatWqXPjefffd\nuOKKK/InkCT853/9N7JxJ0FyfxKQ3P+V4IQ4su9umGcbJkvOr5aQf8+mmiTJEMhfgnP8CS5JZM+K\n3Hv2eON2F8X7OccV7q+R3M/z3wCAqsjw+WQosgJVleFTFfhUGaqiwOdTILvhmf09kaTsX1wMUyIq\nNmehXQpJkvD6e8NzeQoioroyVWjLVWgPERHNEkObiMhDGNpERB7C0CYi8hCGNhGRhzC0iYg8hKFN\nROQhDG0iIg9haBMReQhDm4jIQxjaREQewtAmIvIQhjYRkYcwtImIPIShTUTkIQxtohrS1320aA5l\nIQT6uo9WsUVUaxjaRDWir/soDuzdjW8dusNdzk7gW4fuwIG9uxnclFOR1diJqHxbOnbghn0H8OiP\nH8p99uiPH8IN+w5gS8eOKraMaglDm6hGSJKE2w/eDQC54L5h3wHcfvBuriVKOSyPEBF5CHvaRDUi\nW8POlkSAfI+bvW3KYmgT1YgXep7PBXa2TAI4wb218zJs7bysiq2jWiGJidZor+QJJAmvvzc8l6cg\nqht93UexpWNHrlcthMALPc8zsBeYjGHh4o8vwkTxzNAmIqoxU4U2b0QSEXkIQ5uIyEMY2kREHsLQ\nJiLykLJDe9++fVi8eDEuuuiiSrSHiIimUHZo33zzzXj22Wcr0RYiIppG2aG9bds2NDc3V6ItREQ0\nDda0iYg8ZF4eY//+PflHctdv3ooNm7fNx2mJiDzj+Eu/xYmX+gAAlj35M48VeSLy1KlT2LVrF06e\nPDn+BHwikohoRvhEJBFRnSg7tPfs2YNPfOITePvtt7FkyRL85Cc/qUS7iIhoApwwimiB4oyCtYvl\nESIqwkWEvYuLIBAtQFxE2LsY2kQLEBcR9i6WR4iIPIQ9baIFiIsIexdDm6gE9TbSgosIexeH/BFN\nIzvSojDgsr3Uh376hGcDrt7+IqonUw35Y0+baBr1OtJibDhLksTA9gCGNtE0ONKCaglHjxAReQh7\n2kTT4EgLqiUMbaJpcKQF1RKOHiEqAUda0HyaavQIQ5uIqMZwlj8iojrB0CaiutHXfbSodyqEqLup\nZhnaRFQXFsoc4Rw9QkR1oV6fXB2LoU1EdcGrT64apoV02kQqYyCZNpBOm4jp6Un3Z2hXEYeREXmL\nEAKGaSGZMpxX2kAylXHfDeipDFLp4u90d99U2kAyncn9Wj2dQSplwrLtGbWBoV0l9TpzHFG1TPfk\nqi0EkkkD8WQaejKDRDIDPZlGPJkp2k4kM0joGSRSznZxQBszDtnpKLIMLaBCC/icd78Pfp+KU5Ps\nz9CukoVSfyOqFMOwENfTiOtpxBIpxPW0G7ROwL7+uxfwix8/hOUbr4LeshV6MoN/ufBtPPrjh9Dz\nlgml6eMVaYeqyAhqPgQDfgQ1H7SADyHNV/SZ8/IjGPA5r+y25myHtPyv9anKuHNkDAv//3sTn58P\n11RRYc8A8Eb9jagclm0joWeKgjeupxFPuGGc204VBLTzns6Y0x5f7/9vBFv/T1HJMTnwNkJtF0CS\ngGDAj3DIj3DQj1DQj3AwgJDmbDufB9zP/bnPc2Gr+RAK+OHzjQ/ZSuN82kRUUUIIJJIZjMSSGE2k\nMBpLYiSewmi8OIhjeqoolBPJzKzPqcgyImE/oiEN4VAAkVAgF76RkBu22rZ86BZ+HvQjGPBDlr3f\nIWJoVwlnjqNaYpgWYokURmIpjMadAB6JJTEad7ZH4ymMZN9jTjjPprYrSUAo6ARvJBRANOyGb8HP\n0bDzXSQUQCT7WUiDFlD53wUY2lXDmeNorgghkEwZBSE7JnTdIM4G9Gg8NasecFDzoTESRGNUQ0Mk\niMaIhmhYc8K3IHijBcEbDPqgyHymrxysaVcRh/xRKSzLxmiisOc7vjdc1AtOJGGaM+sFy7KEhoiG\nhoiGxkiw+D1asB3V0BB2fp6P2u5CNaez/PX29mL//v0wTRO33norvvzlLxefgKFNlCOEQCptFodu\nYoJShBu+IzGnJjxTWkDNhW7DmN7w2EBujAQRCtZHvbdezGlor127Fvfffz/OOeccfPKTn0RfXx9a\nW1vzJ2BoUx2zbBvxRHpc+E5Ugsj2hjOGNaNzyJKEaCSAhnA2fAsDuDB889sBf+1UPvkvypmbs9Ej\nIyMjAIDt27cDAC6//HIcO3YMXV1d5RyWqGpSGcPp8cZSU9SEk7l9YnoKM+32BHyqU2YYU4rI9oZz\nZQq3LBEJBTxbB+ZDZJVXVmifOHECy5Yty22vWLECL7/8MkObaoJtC8T19ISjIUYKa8MFAV3KWOCx\nouHABKWIyWvCmt83B1dbm/gQWeXNy7+hvn9PfnTE+s1bsWHztvk4LdWZjGFOOhpiouFpsXga9gy7\nwaoqu73efP23sATRENaKvouGNSiKN3vB88GrkzhVw/GXfosTL/UBACx78v/flhXa69evx2233Zbb\nfuONN3DFFVeM2+///r87yjkN1SEhBBJ6Jl9qmGY0xGgshWTamPF5wiH/FKMhxgRyREMw4GOYUFVs\n2Lwt16HNGBZ+9B//PuF+ZYV2Y2MjAGcEydlnn40jR47g4MGD5RySPEgIgXTGzA1Hywfx2FKEG8Dx\nFGLx9MxnN1PkkkZDZLejkQBUhcPSqokPkVVe2eWR++67D/v374dhGLj11luLRo6QNxmG5YyEKArf\nfOkhH8D5z2Y6IgIAQpq/hNEQ+SAOaX7+R+4xfIis8vhwTZ1LZ0zEEinEEmn33fl5XA+4oBecTM28\nDOH3KQU344prwdk6cOF30bA24exmVH845G/m5nSc9nQY2pUxNnydURGp3Gxp+e/SiOspjMad99n0\ngBVZRn7YmYaG8NgwLh6a1hBZWCMiiOYaZ/mrEZZt5yZhT+j5Wc/mKnwBwKcqufkgnDkgisO3cYIA\nZhmCqHYxtGcgOxGPE7oZJArCN57bdt7HfhbX09BTs5+Wcmz45ibmCWlF2857dtKeAAI+zoxGVE8W\nTGgbpgU9lUEy6azjpqecFS+SaQN60t1OOT8n3e8TSSdsEwXhO9Nxv2OF3Tl+w+5cwOFgAA0Rhi8R\nlaZmQ9uybGd14pSBdMZEMu0sjOm8THeRzPzCmfngzUBPGrngzW4b5uzKC2MFA77cChfhkBvAwfyE\n7IWBHCmYqD0cCiCocVpKIirPvIT2M/910gnbjImUu0Bm2l0uvjCEC8O4UiGbJctSbgmhoOZHKOis\n0xbSnBUuQu4aboXbIc2PSDiQC+hw0M9xv0RUVfMS2j/8z74Z/xpJgrM6sd9Z/DKo+aD5C1Ysdr8L\nBbMhmw/aUC6cfbmf/T6F5QUi8rx5Ce2ujpUFS8Q7qxFnl4rXisI4+52vqiHLcaVEVKs4TnsMTiVJ\nRNXGcdozwKkkiaiWMbTH4FSSRFTLOP5sgejrPlr0Ty0hBPq6j1axRUQ0GwztMcZOJZktlXzr0B0T\n1pe8IFunz15D9hoP7N3N4CbyGJZHxqjHqSRZpyeqHxw9MoF6HPJX+C8IgHV6olrG0SMzNDacJUny\ndGATUf1gaC8AXPKJqH4wtBeAeqzTEy1UrGkvEPVYpyeqV1xujIjIQ6YKbY7TJiLyEIY2eRaf8qSF\niKFNnsSnPGmh4ugR8iQ+5UkLFUObPImzMdJCxfIIEZGHsKdNnsSnPGmhmnVP++c//zkuvPBCKIqC\nV199tZJtIprW2Kc8bz94d67G/ULP89VuHtGcmfXDNW+99RZkWcb+/fvx3e9+FxdffPHEJ+DDNTRH\n+JQn1as5meVv2bJlZTWKqFycjZEWIt6IJCLykCl72jt37sTp06fHfX7XXXdh165dc9YoIiKa2JSh\nfeTIkYqc5Pv35KcDXb95KzZs3laR4xIR1YvjL/0WJ17qAwBY9uS3Gsue5e/SSy/Fd77zHaxbt27i\nE/BGJBHRjMzJLH+//OUvsWTJErz88svo6urClVdeWVYjiYhoepxPm4ioxnA+bSKiOsHQJiLyEIY2\nEZGHMLSJiDyEoU1E5CEMbSIiD2FoExF5CEObiMhDGNpERB7C0CYi8hCGNlVcX/fRosdvhRDo6z5a\nxRYR1Q+GNlVUX/dRHNi7G986dAeEELkFeA/s3c3gJqoArsZOFbWlY0dugd2s7AK8Wzp2VLFlRPWB\noU0VJUkSbj/oLHqRDe7siunZBXiJaPZYHiEi8hD2tKmisjXsbEkEyPe42dsmKh9DmyrqhZ7nc4Gd\nLZMATnBv7bwMWzsvq2LriLyPK9dQxfV1H8WWjh25XrUQAi/0PM/AJirRVCvXMLSJiGoMlxsjIqoT\nDG0iIg9haBMReQhDm4jIQxjaREQewtAmIvIQhjYRkYcwtImIPIShTUTkIbOee+S2227Dr3/9awSD\nQWzfvh133303gsFgJdtGRDQrQggIAHAfKBQFn4/bt3AHdx9bZN+Fu5gHIEmABAmQANnZgAQJUnZ7\nLKnoLf+xu69UsJ9U8Pl0Zv0Y+5EjR7BjhzOp/f79+7Fp0yZ87nOfG38CPsZOVPdsN9iEELBtAcOy\nkcmYMAwLacOEYVrIGBZs23aCD05OyoATWm4IypAAiFw4OoHonEPKhaCUCzpAyn2PgjCUJUBAQJbk\n/HEK2itJUlGYSlJxuEqyBFWRIUkSZMkJZiHy1wnkr9ey7KLjZv/CEALu1bivgqi13d8A2xZw/3qB\nnT8M/D4F/7bu3Lmbe+SJJ57A008/jZ/+9KfjT8DQJqoZhb3IdMaCnsoglTaQyhgwDCc1BARktwcJ\nCVBkJ+DyvUon1CRIkGXnc1kSkGQZitvr1AIqtICKsOaD5lOhaT5ofhV+VYGcPZ5Ueu9yIcr+BTBW\nRaZmffjhh/H5z3++EocioknYbi/WNG3Ek2kkUyb0VAaWZQHIh6oiy7lwzYeqEwKKLEFWJKiShKCm\nYnFjAA2hCMJBP0IBH2RZcl4M05o1ZWjv3LkTp0+fHvf5XXfdhV27dgEADh8+jGg0is985jOTHuf7\n9+TnVV6/eSs2bN422/YSeZptO3XSjGkhHk874Zs2AACKJLm90Gz4ukErwe3FCvhUGX5VQVtUQ1N7\nBNGwhmBAhez+WvKu7u5udHd3T7tfWeWRRx55BA8//DCef/55aJo28QlYHqE6lC0zmKaNmJ7CaDyF\nVNqAAKBAgiQ7ISzJUkH4OnVSVZGg+VUsagyiuSGIaNAPVZEZulSk4uWRZ599Ft/+9rfR29s7aWAT\neYVtC5iWjbiexmg8BT2VAeDcGJNkp64rZ8sLkgRVcV5+VUF7YxArz25GNOSHqsosLdCcmnVP+/zz\nz0cmk0FLSwsAYPPmzfjBD34w/gTsaVMV2LaAadtI6BkMjyaRTGdyw6rkXAC7YSzL8CkS/KqM5oYg\n2prCaIoE2Pulqpqsp82Va8gzLFvAMCyMxJIYSaRgmDZkAJIMqNkgVvJlCL8qozEawEdaomiMBNgL\nJk+Z09EjRLNl285NuZHRJIZjSZi2gAxn1IMiu+UI2QlinypD8yk496wI2prbENL8UNgTpgWGoU0V\nJ4SAZQvoKQPDozoSeho2nFEQquz0hiXZGXamKjI0v4yzW8NYf8FZCGk+BjHRFBjaVDJbODfrRuMp\nnBnRYZi28/SZ2ytWlfxNOr+qIKL5sGZpKxY1BuFTZT5IQVQBDG0qDuNhHRnLqRUrivNQhqrIkCXA\np0gIqArOag5h1cf+FQ2hAHvFRPOMoV3HCssUZ0Z16LozjE3J9ohlQJYld+SEE8Zrly5BOMhaMVGt\nYmh7lOXewBseTWI0psO0AbXg5p0iy1AVOGWKkB8Xn9eKRQ1B+FSl2k0nojIwtGuMbTu943gijcFR\nHemMAUWS8iMp3Hkj/KoMza/g42dF0L6iHZpfYc2YaAFgaM+TbKkilTFxZkRHLJHKzZKmyJIzzrig\nVNHSoGHF2R9BU0TjAx5ElMPQrgBbODOvjcRSGBrVYVrWpL3jsObDynOacVZzGH4fSxVENDMM7Slk\nJwXSUxkMDCWgpzOQJ+gd+xUZfp+CjzSHsO78RQhrfvaOiWhOLNjQtoVAxrAwNKJjJJaEEM78wxP1\njhsiAWxYthjN0QBv5BFRVdVdaGdrx6OJNAaG4jAsK1c7Vt3ecXZkRdDvw3ntESxe0Q7Nr7J3TEQ1\nz1OhbbtjjgeHE0gkMwAEZHeJI0XOTxYU8MlY1BjCyjX/6kyXqXDReSKqDzUR2sJdyePMSBJnRvXc\ngpiFT+SpsgRVlREN+rB66SIsagzm1psjIloo5iW0h0Z0DA3ryJimU6rITZ8JKJKzkkfAr+Dstgg2\nLl+MoF/lE3lERBOYl9BuCsq48Jx/QUPIeTyaD4EQEc3OvCyCMMenICKqO5NlJ+/QERF5CEObiMhD\nGNpERB7C0CYi8hCGNhGRhzC0iYg8hKFNROQhDG0iIg9haBMReQhDm4jIQ2Yd2l//+texevVqrFmz\nBjfeeCMGBwcr2S4iIprArOceicViiEajAIDDhw/DNE0cPnx4/Ak49wgR0YxVfO6RbGCbpolEIgFN\n02bfOiIiKklZNe2vfe1raG9vR19fH7761a9Wqk1zpru7u9pNqDhekzfwmrzBC9c0ZWjv3LkTF110\n0bjXM888AwD4xje+gffeew8bNmzA7bffPulx7rzzztyrmr8pXvgDmSlekzfwmryh2vlUmJWTmXIR\nhCNHjkx7olAohH379uELX/jCpPtM1QAiIgI6OzvR2dmZ2z506NCE+826PPLnP/8ZgFPT/tnPfoZP\nf/rTsz0UERGVSszSNddcI1auXCnWr18vbrvtNjE0NDThfh0dHQIAX3zxxRdfM3h1dHRMmKlzvtwY\nERFVDp+IJCLyEIY2EZGHMLSJiDyk7kK7t7cXy5cvx/nnn48HHnhgwn3uuOMOLF26FOvWrcNbb701\nzy2cuemu6bHHHsPq1auxevVqXHfddXj77ber0MqZKeXPCQBOnDgBVVXxi1/8Yh5bN3ulXNeJEyew\nfv16LF++vGiIV62a7pqSySRuuukmrF27Fh0dHXjqqaeq0MrS7du3D4sXL8ZFF1006T41nRGzHT1S\nq9asWSN6enrEqVOnxAUXXCD6+/uLvj927JjYsmWLGBwcFI8//rjo6uqqUktLN901vfjii2J4eFgI\nIcQjjzwibrjhhmo0c0amuyYhhDBNU1x66aWiq6tLPPHEE1Vo5cxNd122bYuVK1eKI0eOCCHEhNdd\na6a7pgcffFDccsstQgghTp06JZYuXSps265GU0vS29srXn31VbFy5coJv6/1jKirnvbIyAgAYPv2\n7TjnnHNw+eWX49ixY0X7HDt2DLt370ZLSwv27NmDP/3pT9VoaslKuabNmzejsbERANDV1YWenp55\nb+dMlHJNAPDAAw9g9+7daGtrm+8mzkop1/XKK69g1apVuOyyywAAra2t897OmSjlmhobGxGLxWAY\nBoaGhhAKhSBJUjWaW5Jt27ahubl50u9rPSPqKrRPnDiBZcuW5bZXrFiBl19+uWif48ePY8WKFbnt\ntrY2/PWvf523Ns5UKddU6Ec/+hF27do1H02btVKu6YMPPsBTTz2FW265BQBqOgSySrmu5557DpIk\nYdu2bdi1axeee+65+W7mjJRyTXv27IFlWWhtbcXWrVvx2GOPzXczK6rWM2LKx9jrkRBi3HSHXgiE\nUhw9ehSPPvooXnzxxWo3pWxf+cpX8M1vfjM3PeXYPzOvSqVS+MMf/oCjR49C13Xs3LkTr7/+OoLB\nYLWbNmvf+973oKoq/vGPf+DkyZPo6urC3/72N8iyN/uEtZ4R3vxdncT69euLbhq88cYb2LRpU9E+\nGzduxJtvvpnb7u/vx9KlS+etjTNVyjUBwB//+EccOHAATz/9NJqamuaziTNWyjX97ne/w7XXXouP\nfexjePLJJ/GlL30JTz/99Hw3dUZKua7NmzfjyiuvRHt7O5YuXYpLLrkEvb29893UkpVyTb29vbj+\n+usRCoWwceNGfPSjH/XEzfDJ1HpG1FVoZ+u6vb29OHXqFI4cOYKNGzcW7bNx40Y8+eSTGBwcxOOP\nP47ly5dXo6klK+Wa3nvvPVxzzTV47LHHcN5551WjmTNSyjW98847ePfdd/Huu+9i9+7dePDBB/Gp\nT32qGs0tWSnXtWnTJvT09EDXdQwNDeH3v/89tmzZUo3mlqSUa9qxYweeeeYZ2LaNd955B0NDQ0Ul\nFa+p9Yyou/LIfffdh/3798MwDNx6661obW3FD3/4QwDA/v37sWHDBmzduhWXXHIJWlpa8Oijj1a5\nxdOb7poOHz6MoaEhHDhwAADg8/lw/PjxajZ5WtNdk1dNd12LFi3CzTffjEsuuQRtbW04fPgwIpFI\nlVs9temu6dprr8Wbb76Zu6b777+/yi2e2p49e9DT04OBgQEsWbIEhw4dgmEYALyREZx7hIjIQ+qq\nPEJEVO9z6CXPAAAAJklEQVQY2kREHsLQJiLyEIY2EZGHMLSJiDyEoU1E5CEMbSIiD/lfJMI6xteF\n2sgAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The actual predictions of the model for a set of points `Xstar`\n", "(an $m \\times p$ array) can be computed using `Ystar, Vstar, up95, lo95 = m.predict(Xstar)`" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Exercise 4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "a) What do you think about this first fit? Does the prior given by the GP seem to be\n", "adapted?" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "# Exercise 4 a) answer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "b) The parameters of the models can be modified using a regular expression matching the parameters names (for example `m['noise'] = 0.001` ). Change the values of the parameters to obtain a better fit." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exercise 4 b) answer" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "c) As in Section 2, random sample paths from the conditional GP can be obtained using\n", "`np.random.multivariate_normal(mu[:,0],C)` where the mean vector and covariance\n", "matrix `mu`, `C` are obtained through the predict function `mu, C, up95, lo95 = m.predict(Xp,full_cov=True)`. Obtain 10 samples from the posterior sample and plot them alongside the data below." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exercise 4 c) answer" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Covariance Function Parameter Estimation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we have seen during the lectures, the parameters values can be estimated by maximizing the likelihood of the observations. Since we don\u2019t want one of the variance to become negative during the optimization, we can constrain all parameters to be positive before running the optimisation." ] }, { "cell_type": "code", "collapsed": false, "input": [ "m.constrain_positive('.*') # Constrains all parameters matching .* to be positive, i.e. everything" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Warning: re-constraining these parameters\n", "rbf_variance\n", "rbf_lengthscale\n", "noise_variance\n" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The warnings are because the parameters are already constrained by default, the software is warning us that they are being reconstrained." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can optimize the model using the `m.optimize()` method." ] }, { "cell_type": "code", "collapsed": false, "input": [ "m.optimize()\n", "m.plot()\n", "print m" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Log-likelihood: -6.717e+00\n", "\n", " Name | Value | Constraints | Ties | prior \n", "-----------------------------------------------------------------\n", " rbf_variance | 1.4216 | (+ve) | | \n", " rbf_lengthscale | 0.1525 | (+ve) | | \n", " noise_variance | 0.0000 | (+ve) | | \n", "\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The parameters obtained after optimisation can be compared with the values selected by hand above. As previously, you can modify the kernel used for building the model to investigate its influence on the model." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "4 The Running Example" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we'll consider a small example with real world data, data giving the pace of all marathons run at the olympics. To load the data use" ] }, { "cell_type": "code", "collapsed": false, "input": [ "GPy.util.datasets.authorize_download = True # prevents requesting authorization for download.\n", "data = GPy.util.datasets.olympic_marathon_men()\n", "print data['details']" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Olympic mens' marathon gold medal winning times from 1896 to 2012. Time given in pace (minutes per kilometer). Data is originally downloaded and collated from Wikipedia, we are not responsible for errors in the data\n" ] } ], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "X = data['X']\n", "Y = data['Y']\n", "pb.plot(X, Y, 'bx')\n", "pb.xlabel('year')\n", "pb.ylabel('marathon pace min/km')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 27, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 27 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Exercise 5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "a) Build a Gaussian process model for the olympic data set using a combination of an exponentiated quadratic and a bias covariance function. Fit the covariance function parameters and the noise to the data. Plot the fit and error bars from 1870 to 2030. Do you think the predictions are reasonable? If not why not?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exercise 5 a) answer \n", "kern = GPy.kern.rbf(1, lengthscale=80)*GPy.kern.Matern52(1, lengthscale=10) + GPy.kern.bias(1)\n", "model = GPy.models.GPRegression(X, Y, kern)\n", "model.optimize()\n", "model.plot()# Exercise 5 d) answer\n", "model.log_likelihood()\n", "print model" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Warning: adding jitter of 4.9215670759e-05\n", "\n", "Log-likelihood: -6.394e+00\n", "\n", " Name | Value | Constraints | Ties | prior \n", "---------------------------------------------------------------------------------\n", " [rbf*Mat52]_rbf_variance | 1.5478 | (+ve) | | \n", " [rbf*Mat52]_rbf_lengthscale | 126.1829 | (+ve) | | \n", " [rbf*Mat52]_Mat52_variance | 1.5478 | (+ve) | | \n", " [rbf*Mat52]_Mat52_lengthscale | 153.4003 | (+ve) | | \n", " bias_variance | 15.6483 | (+ve) | | \n", " noise_variance | 0.0483 | (+ve) | | \n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": {}, "source": [ "b) Fit the same model, but this time intialize the length scale of the exponentiated quadratic to 0.5. What has happened? Which of model has the higher log likelihood, this one or the one from (a)? \n", "\n", "*Hint:* use `model.log_likelihood()` for computing the log likelihood." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exercise 5 b) answer\n" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "c) Modify your model by including two covariance functions. Intitialize a covariance function with an exponentiated quadratic part, a Matern 3/2 part and a bias covariance. Set the initial lengthscale of the exponentiated quadratic to 80 years, set the initial length scale of the Matern 3/2 to 10 years. Optimize the new model and plot the fit again. How does it compare with the previous model? " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exercise 5 c) answer" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "d) Repeat part c) but now initialize both of the covariance functions' lengthscales to 20 years. Check the model parameters, what happens now? " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exercise 5 d) answer" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "e) Now model Model the data with a product of an exponentiated quadratic covariance function and a linear covariance function. Fit the covariance function parameters. Why are the variance parameters of the linear part so small? How could this be fixed?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exercise 5 e) answer" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "5 More Advanced: Uncertainty propagation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let $x$ be a random variable defined over the real numbers, $\\Re$, and $f(\\cdot)$ be a function mapping between the real numbers $\\Re \\rightarrow \\Re$. Uncertainty\n", "propagation is the study of the distribution of the random variable $f ( x )$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will see in this section the advantage of using a model when only a few observations of $f$ are available. We consider here the 2-dimensional Branin test function\n", "defined over [\u22125, 10] \u00d7 [0, 15] and a set of 25 observations as seen in Figure 3." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Definition of the Branin test function\n", "def branin(X):\n", " y = (X[:,1]-5.1/(4*np.pi**2)*X[:,0]**2+5*X[:,0]/np.pi-6)**2\n", " y += 10*(1-1/(8*np.pi))*np.cos(X[:,0])+10\n", " return(y)\n", "\n", "# Training set defined as a 5*5 grid:\n", "xg1 = np.linspace(-5,10,5)\n", "xg2 = np.linspace(0,15,5)\n", "X = np.zeros((xg1.size * xg2.size,2))\n", "for i,x1 in enumerate(xg1):\n", " for j,x2 in enumerate(xg2):\n", " X[i+xg1.size*j,:] = [x1,x2]\n", "\n", "Y = branin(X)[:,None]" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We assume here that we are interested in the distribution of $f (U )$ where $U$ is a\n", "random variable with uniform distribution over the input space of $f$. We will focus on\n", "the computation of two quantities: $E[ f (U )]$ and $P( f (U ) > 200)$." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "4.1\n", "Computation of E[ f (U )]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The expectation of $f (U )$ is given by $\\int_x f ( x )\\text{d}x$. A basic approach to approximate this\n", "integral is to compute the mean of the 25 observations: `np.mean(Y)`. Since the points\n", "are distributed on a grid, this can be seen as the approximation of the integral by a\n", "rough Riemann sum. The result can be compared with the actual mean of the Branin\n", "function which is 54.31." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alternatively, we can fit a GP model and compute the integral of the best predictor\n", "by Monte Carlo sampling:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Fit a GP\n", "# Create an exponentiated quadratic plus bias covariance function\n", "kg = GPy.kern.rbf(input_dim=2, ARD = True)\n", "kb = GPy.kern.bias(input_dim=2)\n", "k = kg + kb\n", "\n", "# Build a GP model\n", "m = GPy.models.GPRegression(X,Y,k,normalize_Y=True)\n", "\n", "# constrain parameters to be bounded\n", "m.constrain_bounded('.*rbf_var',1e-3,1e5)\n", "m.constrain_bounded('.*bias_var',1e-3,1e5)\n", "m.constrain_bounded('.*rbf_len',.1,200.)\n", "\n", "# fix the noise variance\n", "m.constrain_fixed('.*noise',1e-5)\n", "\n", "# Randomize the model and optimize\n", "m.randomize()\n", "m.optimize()\n", "\n", "# Plot the resulting approximation to Brainin\n", "# Here you get a two-d plot becaue the function is two dimensional.\n", "m.plot()\n", "\n", "# Compute the mean of model prediction on 1e5 Monte Carlo samples\n", "Xp = np.random.uniform(size=(1e5,2))\n", "Xp[:,0] = Xp[:,0]*15-5\n", "Xp[:,1] = Xp[:,1]*15\n", "Yp = m.predict(Xp)[0]\n", "np.mean(Yp)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Exercise 6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "a) Has the approximation of the mean been improved by using the GP model?" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "# Exercise 6 a) answer " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "b) One particular feature of GPs we have not use for now is their prediction variance. Can you use it to define some confidence intervals around the previous result?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exercise 6 b) answer" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "4.2\n", "Computation of $P( f (U ) > 200)$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In various cases it is interesting to look at the probability that $f$ is greater than a given\n", "threshold. For example, assume that $f$ is the response of a physical model representing\n", "the maximum constraint in a structure depending on some parameters of the system\n", "such as Young\u2019s modulus of the material (say $Y$) and the force applied on the structure\n", "(say $F$). If the later are uncertain, the probability of failure of the structure is given by\n", "$P( f (Y, F ) > \\text{f_max} )$ where $f_\\text{max}$ is the maximum acceptable constraint." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Exercise 7" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "a) As previously, use the 25 observations to compute a rough estimate of the probability that $f (U ) > 200$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exercise 7 a) answer" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "b) Compute the probability that the best predictor is greater than the threshold." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exercise 7 b) answer" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "c) Compute some confidence intervals for the previous result" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exercise 7 c) answer" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These two values can be compared with the actual value {$P( f (U ) > 200) = 1.23\\times 10^{\u22122}$ ." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now assume that we have an extra budget of 10 evaluations of f and we want to\n", "use these new evaluations to improve the accuracy of the previous result." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Exercise 8" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "a) Given the previous GP model, where is it interesting to add the new observations if we want to improve the accuracy of the estimator and reduce its variance?" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "# Exercise 8 a) answer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "b) Can you think about (and implement!) a procedure that updates sequentially the model with new points in order to improve the estimation of $P( f (U ) > 200)$?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Exercise 8 b) answer" ], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }