{ "metadata": { "name": "", "signature": "sha256:c57d5061e28da12e72e8e85205826f9837a70fb76720c04f7e498cec94b97c21" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# GPy Introduction: Covariance Functions in GPy\n", "\n", "# Gaussian Process Summer School, Melbourne, Australia\n", "### 25th-27th February 2015\n", "### Neil D. Lawrence and Nicolas Durrande\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "from IPython.display import display\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pods\n", "import GPy" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "/Users/neil/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pytz/__init__.py:29: UserWarning: Module pods was already imported from /Users/neil/sods/ods/pods/__init__.pyc, but /Users/neil/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages is being added to sys.path\n", " from pkg_resources import resource_stream\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Covariance Functions in GPy\n", "\n", "We've [introduced Gaussian processes](gaussian process introduction.ipynb) and built a simple class in python for fitting these models. In the last session we introduced Gaussian process models through constructing covariance functions in numpy. The GPy software is a BSD licensed software package for modeling with Gaussian processes in python. It is designed to make it easy for the user to construct models and interact with data. The software is BSD licensed to ensure that there are as few as possible constraints on its use. The GPy documentation is produced with Sphinx and is available [here](http://gpy.readthedocs.org/en/latest/).\n", "\n", "In the introduction to Gaussian processes we defined covariance functions (or kernels) as functions to which we passed objects in GPy covariance functions are objects.\n", "\n", "In GPy the covariance object is stored in GPy.kern. There are several covariance functions available. The exponentiated quadratic covariance is stored as RBF and can be created as follows." ] }, { "cell_type": "code", "collapsed": false, "input": [ "kern = GPy.kern.RBF(input_dim=1)\n", "display(kern)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "
rbf.ValueConstraintPriorTied to
variance 1.0 +ve
lengthscale 1.0 +ve
" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here it's been given the name 'rbf' by default and some default values have been given for the lengthscale and variance, we can also name the covariance and change the initial parameters as follows," ] }, { "cell_type": "code", "collapsed": false, "input": [ "kern = GPy.kern.RBF(input_dim=1, name='signal', variance=4.0, lengthscale=2.0)\n", "display(kern)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "
signal.ValueConstraintPriorTied to
variance 4.0 +ve
lengthscale 2.0 +ve
" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting the Kernel\n", "\n", "The covariance function expresses the covariation between two points. the .plot() method can be applied to the kernel to discover how the covariation changes as a function as one of the inputs with the other fixed (i.e. it plots k(x, z) as a function of a one dimensional x whilst keeping z fixed. By default z is set to 0.0." ] }, { "cell_type": "code", "collapsed": false, "input": [ "kern.plot()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here the title of the kernel is taken from the name we gave it (signal). \n", "\n", "## Changing Covariance Function Parameters\n", "\n", "When we constructed the covariance function we gave it particular parameters. These parameters can be changed later in a couple of different ways firstly, we can simple set the field value of the parameters. If we want to change the lengthscale of the covariance to 3.5 we do so as follows." ] }, { "cell_type": "code", "collapsed": false, "input": [ "kern.lengthscale = 3.5\n", "display(kern)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "
signal.ValueConstraintPriorTied to
variance 4.0 +ve
lengthscale 3.5 +ve
" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can even change the naming of the parameters, let's imagine that this covariance function was operating over time instead of space, we might prefer the name timescale for the lengthscale parameter." ] }, { "cell_type": "code", "collapsed": false, "input": [ "kern.lengthscale.name = 'timescale'\n", "display(kern)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "
signal.ValueConstraintPriorTied to
variance 4.0 +ve
timescale 3.5 +ve
" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can set the time scale appropriately." ] }, { "cell_type": "code", "collapsed": false, "input": [ "kern.timescale = 10.\n", "display(kern)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "
signal.ValueConstraintPriorTied to
variance 4.0 +ve
timescale 10.0 +ve
" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Further Covariance Functions in GPy\n", "\n", "There are other types of basic covariance function in GPy. For example the Linear kernel,\n", "$$\n", "k(\\mathbf{x}, \\mathbf{z}) = \\alpha \\mathbf{x}^\\top \\mathbf{z}\n", "$$\n", "and the Bias kernel,\n", "$$\n", "k(\\mathbf{x}, \\mathbf{z}) = \\alpha\n", "$$\n", "where everything is equally correlated to each other. Brownian implements Brownian motion which has a covariance function of the form,\n", "$$\n", "k(t, t^\\prime) = \\alpha \\text{min}(t, t^\\prime).\n", "$$\n", "\n", "Broadly speaking covariances fall into two classes, *stationary* covariance functions, for which the kernel can always be written in the form\n", "$$\n", "k(\\mathbf{x}, \\mathbf{z}) = f(r)\n", "$$\n", "where $f(\\cdot)$ is a function and $r$ is the distance between the vectors $\\mathbf{x}$ and $\\mathbf{z}$, i.e.,\n", "$$\n", "r = ||\\mathbf{x} - \\mathbf{z}||_2 = \\sqrt{\\left(\\mathbf{x} - \\mathbf{z}\\right)^\\top \\left(\\mathbf{x} - \\mathbf{z}\\right)}.\n", "$$\n", "This partitioning is reflected in the object hierarchy in GPy. There is a base object Kern and this is inherited by Stationary to form the stationary covariance functions (like RBF and Matern32).\n", "\n", "## Computing the Covariance Function\n", "\n", "When using numpy to construct covariances we defined a function, kern_compute which returned a covariance matrix given the name of the covariance function. In GPy, the base object Kern implements a method K. That allows us to compute the associated covariance. Visualizing the structure of this covariance matrix is often informative in understanding whether we have appropriately captured the nature of the relationship between our variables in our covariance function. In GPy the input data is assumed to be provided in a matrix with $n$ rows and $p$ columns where $n$ is the number of data points and $p$ is the number of features we are dealing with. We can compute the entries to the covariance matrix for a given set of inputs X as follows." ] }, { "cell_type": "code", "collapsed": false, "input": [ "data = pods.datasets.olympic_marathon_men()\n", "# Load in the times of the olympics\n", "X = data['X']\n", "K=kern.K(X)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now to visualize this covariation between the time points we plot it as an image using the imshow command from matplotlib.\n", "python\n", "plt.imshow(K, interpolation='None')\n", "\n", "Setting the interpolation to 'None' prevents the pixels being smoothed in the image. To better visualize the structure of the covariance we've also drawn white lines at the points where the First World War and the Second World War begin. At other points the Olympics are held every four years and the covariation is given by the computing the covariance function for two points which are four years apart, appropriately scaled by the time scale." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def visualize_olympics(K):\n", " \"\"\"Helper function for visualizing a covariance computed on the Olympics training data.\"\"\"\n", " fig, ax = plt.subplots(figsize=(8,8))\n", " im = ax.imshow(K, interpolation='None')\n", "\n", " WWI_index = np.argwhere(X==1912)[0][0]\n", " WWII_index = np.argwhere(X==1936)[0][0]\n", "\n", " ax.axhline(WWI_index+0.5,color='w')\n", " ax.axvline(WWI_index+0.5,color='w')\n", " ax.axhline(WWII_index+0.5,color='w')\n", " ax.axvline(WWII_index+0.5,color='w')\n", " plt.colorbar(im)\n", " \n", "visualize_olympics(kern.K(X))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n4tQAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "kern.timescale" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "
Indexsignal.timescaleConstraintPriorTied to
[0]10.0+veN/A
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "\u001b[1msignal.timescale\u001b[0;0m:\n", "Param([ 10.])" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "of 10 is ensuring that neighbouring Olympic years are correlated, but there is only weak dependency across the period of each of the world wars. If we increase the timescale to 20 we obtain stronger dependencies between the wars." ] }, { "cell_type": "code", "collapsed": false, "input": [ "kern.timescale = 20\n", "visualize_olympics(kern.K(X))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAAHWCAYAAADkX4nIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X+0XWV54PHvYwhSRYc6TCMl0YjSLkErVCS0WLm26EQ6\nRejM0kEYrYQOdhVknFlTlD8U2tVWXUqZaheNEhgUkHFAEaf+ILVchS4MxobfYSRCHAIkARELCqtJ\neOaPcwKXm/tr733Ovue9+/tZ6yzOj/d997sOJ3nyvHvv543MRJKkrnrefE9AkqT5ZCCUJHWagVCS\n1GkGQklSpxkIJUmdZiCUJHWagVCSVJSIWBQRGyLiq9N8/tcRcU9E3BoRh882noFQklSas4C7gD1u\nhI+I44BXZebBwH8GLpxtMAOhJKkYEbEUOA64CIgpmhwPXAqQmeuA/SJiyUxjGgglSSX5K+C/A09P\n8/mBwP0TXm8Bls404F6DmZckqasiYmi1OjPzmawvIv4dsD0zN0TE2ExTmjzMTMcwEEqSGju3nTF/\nEzi+fx5wH+DFEfG5zHz3hDYPAMsmvF7af29aLo1KkoqQmedk5rLMfAXwH4F/mBQEAa4F3g0QEUcB\nj2XmtpnGNSOUJDU2T8EkASLidIDMXJ2ZX4uI4yJiE/Az4L2zDRJuwyRJaiIi8mNDGPdsnnuOcFhc\nGpUkdZpLo5KkxkoOJmaEkqROKzmIS5JGxOL5nkADZoSSpE4zI5QkNVZyMCl57pKkEeHSqCRJhTIj\nlCQ1VnIwMSOUJHVayUFckjQiPEcoSVKhzAglSY2VHExKnrskaUS4NCpJUqHMCCVJjZkRSpJUKDNC\nSVJjJQcTM0JJUqeVHMQlSSOi5HOEBkJJUmMlBxOXRiVJnVZyEJckjYiSl0bNCCVJnWZGKElqrORg\nYkYoSeq0koO4JGlElHyO0EAoSWqs5GDi0qgkqdNKDuKSpBFR8tKoGaEkqdPMCCVJjZUcTMwIJUmd\nVnIQlySNiJLPERoIJUmNlRwIXRqVJHWaGaEkqbE2gklE7AN8G3g+sDfwlcz80BTtxoC/opeoPpKZ\nYzONayCUJBUhM5+KiDdn5s8jYi/gxoh4Y2beuLtNROwH/A3wbzNzS0TsP9u4BkJJUmOLhxFNdu75\nVmb+vP90b2AR8OikJu8Crs7MLf32j8x2GAOhJKmxvVoKhBHxPOCfgFcCF2bmXZOaHAwsjojrgRcB\n/yMzPz/TYYYWCCMihzW2JKmezIz5nsN0btgFNz49c5vMfBo4LCL+FfDNiBjLzPEJTRYDvw78DvAC\n4KaI+G5m3jPdmEPNCD8yzfvjwNg0ny2pcZxjavQ55K3V++T76v1+4sSn+QB/ucf7N5379/zGucdO\n2edyTq58nIfXvKxyH66q3oXxGn2AfBIiLpviky8Bvz9Nr8drHOmfa/SZ4p+ec7KjZr+pjDP9n4yu\nGcfvAgb5PZx55pF86lO/O5CxprJ4UfMxfnsR/PaE1x/92fRtM/OnEfF3wBE892+l++ldIPMk8GRE\nfAd4HTBtIKx9+0RErIyIuyPinog4u+44kiTNRUTs378Yhoj4BeAtwIZJzb4CvDEiFkXEC4AVwOTl\n0+eolRFGxCLg08CxwAPA9yLi2szcWGc8SVLZhnKOcE8HAJf2zxM+D/h8Zn4rIk4HyMzVmXl3RHwD\nuA14GvjsFOcRn6Pu1I8ENmXmZoCIuBJ4OzCnQLi85kEXmqVjB833FEbEq+d7AiNi+XxPYIQsn+8J\njIjl8z2BkZKZt9M7/zf5/dWTXn8C+MRcx60bCA+ktw672xZ66eecLK950IVmmYGwz0DYs3y+JzBC\nls/3BEbE8vmewJwN5faJltSduleESpKeNYCLZeZL3UD4ALBswutl9LLC5xif8Hw5Jf3bRpIWgs39\nB6xbN+1Fk51XNxCuBw6OiOXAg8A7gZMmNxqrOytJ0gAsZ3cKsmLFkdx88xXDO1TXlkYzc2dEnAF8\nk15CvMYrRiVJJaodwzPz68DXBzgXSVKpCs4I3Y9QktRpBcdwSdLIKDiaDHXqdeqGbqvR59s1+rC2\nepdD6tYRPxFWsaZSl6R6XdMrTn1X5T4PZ436pI1unllasf0eFyMPSZ36pHUNsj6pNCIKvn3CpVFJ\nUqcVnMxKkkZGwdHEjFCS1GkFx3BJ0sgoOJqYEUqSOq3gGC5JGhkFXzVqIJQkNVdwNHFpVJLUaQXH\ncEnSyCg4mpgRSpI6reAYLkkaGQVfLGNGKEnqtKFmhMfU6FOngHatQt11CkdfV6MPcAjwmmt+WKnP\naSdcVP1A1et0c8WqGoW6qVGo+xmvatB3rtoq1A3tFeu2ULdGXMHriwVPXZI0MgqOJi6NSpI6reAY\nLkkaGQVHEzNCSVKnFRzDJUkjw9snJEkqkxmhJKm5gqNJwVOXJI2MgqOJS6OSpE4rOIZLkkaGF8tI\nklQmM0JJUnMFRxMzQklSpw01hh/ylhqd1lbv0taOFd+ps2MFvd0n+NtqfV5Dtd0qYLR3rOh5Geyz\ntFqXp2oeqjJ3rJAaaSEjjIh96P2V/3xgb+ArmfmhSW1OBv6E3t9ujwN/lJm3zTRuwcmsJGlktHCx\nTGY+FRFvzsyfR8RewI0R8cbMvHFCs3uBN2XmTyNiJfAZ4KiZxjUQSpKKkZk/7z/dm174fXTS5zdN\neLkOmHUZykAoSWqupWgSEc8D/gl4JXBhZt41Q/NVwNdmG9OLZSRJxcjMpzPzMHqZ3psiYmyqdhHx\nZuBU4OzZxjQjlCQ1N4BoMv4AjD84t7b9c4B/BxwBjE/8LCJ+DfgssDIzfzLbWAZCSdJIGDuw99jt\nvO8/9/OI2B/YmZmPRcQvAG8BzpvU5mXAl4BTMnPTXI5rIJQkNddONDkAuLR/nvB5wOcz81sRcTpA\nZq4GPgz8InBhRADsyMwjZxrUQChJaq6d2yduB359ivdXT3h+GnBalXG9WEaS1GlmhJKk5gqOJmaE\nkqROKziGS5JGRsHRZLhTf1/1LofUOU5Lhbq31uiz213XVWtf53torVB3bR+EsYpdxisW6YYWC3VD\ne8W62yrUDRbrVtcUHMMlSSOj4B3qDYSSpOYKjiZeLCNJ6rSCY7gkaWQUHE3MCCVJnVZwDJckjYyC\no4kZoSSp0wqO4ZKkkeHtE5KkTis4mrg0KknqtIJjuCRpZBQcTcwIJUmdFpk5nIEjclhjS5Kqiwgy\nM4YwbuanBz0qxBkMZb6TDTWZ/a/8ReU+q3JN5T6Hfvneyn3ybyt34a4au1wAHJrJuVHt/+VLaxzn\nTTV+Loe8tXqffF+932Wc8DS/lP+vUp+H17ys+oGuqt6l1nYkAE/V2X1iU40+dY7zeI0+UG+ni501\n+rjLRZvOPPPI4R7ApVFJksrUKIZHxGZ6/3zcBezIzCH/k0OSNJIKzgibTj2Bscx8dBCTkSSpbYOI\n4UM/kSlJGnEFV5Zpeo4wgb+PiPUR8YeDmJAkSW1qmhEenZkPRcS/AdZGxN2ZecPuD28691vPNFw6\n9gqWjR3U8HCSpLnb3H/AunX3DPdQXT1HmJkP9f/7cER8GTgSeCYQ/sa5v9NsdpKkBpb3H7BixZHc\nfPMVwztUwYGw9tJoRLwgIl7Uf/5C4K3A7YOamCRJbWgSw5cAX47ejeJ7AZdn5nUDmZUkqSwFZ4S1\np56Z9wGHDXAukiS1ruAYLkkaGQXfPjHUQHg5J1fvVOOuxFUn1qhPSvX6pIdU7vGsJRXbb61xjG/X\nqXFeYzH71TUOA8AJ8K6odrL+ilXvqnyYh6lRn7Tu3bDjS6v3earmsSqrU5+0rjr1SeuwPqkGz4xQ\nktRcwdGk4KlLkkZGwdHE3SckSZ1WcAyXJI2Mgi+WMSOUJHWagVCS1NxeQ3hMEhHLIuL6iLgzIu6I\niPdP0Wb/iPhGRNzSb/MHs03dQChJKsUO4AOZeShwFPDHETH5jq4zgA2ZeRgwBnwyImY8Deg5QklS\ncy1Ek8zcSv8268x8IiI2Ar8MbJzQ7CHg1/rPXwz8ODN3zjSugVCS1FzLF8tExHLgcGDdpI8+C/xD\nRDwIvAh4x2xjGQglSSNh/J9gfMPs7SJiX+Aq4KzMfGLSx+cAt2TmWES8kt5eua/LzMenG89AKElq\nbgDRZOzI3mO38y7Zs01ELAauBi7LzGumGOY3gT8HyMwfRsR9wK8C66c7rhfLSJKKEL19/9YAd2Xm\nBdM0uxs4tt9+Cb0gOGNxaTNCSVJz7USTo4FTgNsiYvci6jnQq7SfmauBvwAuiYhb6SV7f5KZj840\n6FCnvv3il1fuc/mpC2vHit2Oqdj+2zWOsa1Gn3o7VtTp1Nu94zQuqtapxv/b1nasqGukd6yA9nat\ncMcKVZOZNzLLSmZmPgL8XpVxzQglSc0VHE0KnrokaWRYa1SSpDKZEUqSmis4mpgRSpI6reAYLkka\nGQVHEzNCSVKnFRzDJUkjo+CrRg2EkqTmCo4mLo1Kkjqt4BguSRoZBUcTM0JJUqcNN4ZfVb3LdhZW\noW6AQ4FD3lKx09rqx2mrUPd3avSBXtHt11zzw0p9TjuhYpFuaK1QN7RYrNtC3X1tFeoGi3VXZEYo\nSVKZCo7hkqRRkd4+IUnqsl0FRxOXRiVJnVZwDJckjQozQkmSClVwDJckjYqdi4aRVz09hDH3ZEYo\nSeo0M0JJUmO79hpGOPmXIYy5JwOhJKmxXYvKvZHQpVFJUqeZEUqSGttV8M68ww2E40Md/RmjXKgb\n4HyA91Xrc0idA7VVqDtrdNrtb6s1fw3VinRDe4W6oV6x7pEu1A0tFuu2ULdGgxmhJKmxnQVnhJ4j\nlCR1mhmhJKmxXQWHk3JnLkkaGSVfLOPSqCSp08wIJUmNmRFKklQoM0JJUmNmhJIkFcqMUJLUmDfU\nS5I6bRd7DfwxWUQsi4jrI+LOiLgjIt4/3Xwi4g0RsTMifn+2uZsRSpJKsQP4QGbeEhH7At+PiLWZ\nuXFio4hYBHwM+AZzqCQcmU0qKM8wcEQOa2xJUnURQWbWLDE/47h5a/7KoIfldfGDGecbEdcAn8rM\nb016/7/Q29X3DcD/ycyrZzrOUDPCiMtq9KpRMT9eVb3PPtWPE2P1AvvTXwuW8KNKfU7OyysfZxVr\nKvc59Mv3Vu6TFXeQ2C2uS86Lan8Gl9T4I/um6l149Vtr/t1QcVcRgDtPOKhyn4vytMp9rqD6zhgA\nD6+psTvGVTUOVGfrk6fq7FixqUYfqLc7xuM1+tTZHWNn5R5nnnlEjeOMrohYDhwOrJv0/oHA24Hf\nphcIZ/2L26VRSVJjg7h9Yv34z1g//vNZ2/WXRa8CzsrMJyZ9fAHwwczMiAjmsDQ6ayCMiIuB3wW2\nZ+Zr+++9BPhfwMuBzcA7MvOxWWcvSdI0jhh7IUeMvfCZ158575E92kTEYuBq4LLMvGaKYV4PXNmL\ngewPvC0idmTmtdMddy5XjV4CrJz03geBtZn5K8C3+q8lSR21k0UDf0zWz/DWAHdl5gVTzSMzD8rM\nV2TmK+hljX80UxCEOWSEmXlDfy12ouOBY/rPL6W3F73BUJI6qqVtmI4GTgFui4gN/ffOAV4GkJmr\n6wxad+ZLMnNb//k2YEnNcSRJmpPMvJEK979n5nvn0q5xCO+fkJzmqpwvTXj+6v5DktSOe4H7AFi3\nbuPMTRsqudZo3UC4LSJemplbI+IAYPvUzWa9oV+SNDQH9R+wYsUR3Hxz9duyuqBuILwWeA+9O/ff\nA0x15Y4kqSMWdEYYEV+gd2HM/hFxP/Bh4KPAFyNiFf3bJ4Y5SUnSaFvQgTAzT5rmo2MHPBdJklpn\nZRlJUmNuwyRJUqGGnBHWKUBbo9BtnVrYT9Y4zHiNguB92y9+eaX2l596cu1jVbHqxBqFuqleqHu3\nX6rYfmuN/7d1ajlzXb2C6ofU6PMafli5z2knXFTjSPVcsap6se6HqVGou06d8zp/Bp+qcZza6hTq\nrqNOoe7hZmwt3VA/FGaEkqROKzeES5JGxoK+alSSpNmUHAhdGpUkdZoZoSSpMW+fkCSpUGaEkqTG\nvH1CkqRClRvCJUkjo+SrRg2EkqTGSg6ELo1KkjrNjFCS1FjJt08MORDWKQxbR0uFbmsU6u5ZCldV\n67GdakW6oWah7hqFj+sU6gY4lN4Oz1XUKaC9rUafb9eruQ3XVe8y8oW6a/wmWivUXUfdYvmtFetu\nq1D3Pi0dpzxmhJKkxrx9QpKkQpUbwiVJI6Pkq0YNhJKkxkoOhC6NSpI6zYxQktSYGaEkSYUyI5Qk\nNVbyDfVmhJKkTjMjlCQ1VvIN9eXOXJI0MrxYRpKkQg05I9xZo88CK9QNwFIYH/5RWivUXdP5wCFv\nqdhpbfXjtFWoG2oW6x7hQt1Qs1j3QivUDfWKdY90oe7nD3wWE5kRSpJUKAOhJKmxnSwa+GOyiFgW\nEddHxJ0RcUdEvH+quUTEX0fEPRFxa0QcPtvcvVhGklSKHcAHMvOWiNgX+H5ErM3MjbsbRMRxwKsy\n8+CIWAFcCBw106AGQklSY23cPpGZW4Gt/edPRMRG4JeBjROaHQ9c2m+zLiL2i4glmTntpQAGQklS\nY21fLBMRy4HDgXWTPjoQuH/C6y3AUma4Js5zhJKkovSXRa8CzsrMJ6ZqMun1jNd3mxFKkhobREb4\no/HN/Gj8RzO2iYjFwNXAZZl5zRRNHgCWTXi9tP/etAyEkqSR8PKx5bx8bPkzr2887zvP+TwiAlgD\n3JWZF0wzzLXAGcCVEXEU8NhM5wfBQChJGoCWzhEeDZwC3BYRG/rvnQO9SguZuTozvxYRx0XEJuBn\nwHtnG9RAKEkqQmbeyByubcnMM6qMayCUJDVW8n6EBkJJUmNuwzStHcMd/hkFFOp+smLfOgV/a2iz\nUPf5AO+r1qdOsem2CnVDvWLdo1yoG+oV67ZQd99IF+rer60DFafcEC5JGhnuPiFJUqHMCCVJjZkR\nSpJUKDNCSVJj3j4hSeq0km+fcGlUktRp5YZwSdLI8GIZSZIKZUYoSWrMjFCSpEKZEUqSGis5IxzB\nQLjQCnXvtqla8ydrHKKlQt21ixifCneeeFClLodyb+XDtFWoG+oV6x7lQt1Q7/tbaIW6ocVi3a0V\n6t63Tqc5K/k+QpdGJUmdNoIZoSSpNAv6hvqIuDgitkXE7RPeOzcitkTEhv5j5XCnKUnScMwlhF8C\nfAr43IT3Ejg/M88fyqwkSUUp+WKZWTPCzLwB+MkUH9U4bS1J0mhpsqh7ZkS8G1gP/LfMfGxAc5Ik\nFabkjLBuILwQ+NP+8z8DPgms2rPZ+ITny/sPSVI7buo/YN26vYd6pJJvn6gVCDNz++7nEXER8NWp\nW47VGV6SNBC/0X/AihX7cvPNH5vf6YyoWoEwIg7IzIf6L08Ebp+pvSRpYSv59olZZx4RXwCOAfaP\niPuBjwBjEXEYvatH7wNOH+osJUkaklkDYWaeNMXbFw9hLpKkQnXxYhlJkp5RciC01qgkqdMWSEZY\nwo4VWwY2i2m1tGNF1q2lcCqsiSnuspnBqhPXVD5MaztWQK1dK0Z6xwqotWvFQtuxAurtWjHSO1YM\n+W/7km+fMCOUJHXaAskIJUnzqeTbJ8wIJUmdVm4IlySNjJKvGjUQSpIaKzkQujQqSeo0M0JJUmNt\nZIQRcTHwu8D2zHztNG3GgL8CFgOPZObYbOOaEUqSSnEJsHK6DyNiP+BvgN/LzNcA/2Eug5oRSpIa\na+OG+sy8ISKWz9DkXcDVmbml3/6RuYxrRihJWigOBl4SEddHxPqI+E9z6WRGKElqbBA31P9sfD0/\nH1/fZIjFwK8DvwO8ALgpIr6bmffM1MlAKElqbBAXy+wztoJ9xlY88/qR8z5TdYj76V0g8yTwZER8\nB3gdYCCcWluFund7vGL7Fop0Q2uFune7nJOrdahRMLmtQt1Qs1j3CBfqhprFuhdaoW6o9dsb6ULd\nB7dzmHn2FeDTEbEIeD6wAjh/tk4dDoSSpEFp6faJLwDHAPtHxP3AR+gth5KZqzPz7oj4BnAb8DTw\n2cy8a7ZxDYSSpCJk5klzaPMJ4BNVxjUQSpIacz9CSZIKZUYoSWqs5P0Iy525JGlkuPuEJEmFMiOU\nJDVmRihJUqHMCCVJje162oxQkqQimRFKkhrbubPcjNBAWEmTQt3/PLBZTK+lQt1P1e24lO0Xv7xS\nj8tPrVikG1or1A31inWPcqFuqFese6EV6oaaxbrbKtQdNQp11/rhzd2uneWGE5dGJUmdVm4IlySN\njF0FL42aEUqSOs2MUJLUmBmhJEmFMiOUJDW2c0e5GaGBUJLU2NO7yg0nLo1Kkjqt3BAuSRodXiwj\nSVKZzAglSc2ZEUqSVCYzwtbsrNi+jSLdUKtQd50CywAshauq9dhOtSLd0F6hbqhXrHuUC3VDvWLd\nC61QN9Qr1j3Khbr3Zd/qB6piZ80/RCPAQChJaq7qv/VHiEujkqROMyOUJDVnRihJUpnMCCVJzZkR\nSpJUJjNCSVJzO+Z7AvUZCCVJze2a7wnU59KoJKnTzAglSc15sYwkSWUyI5QkNWdGKEnScEXExRGx\nLSJun+bzkyPi1oi4LSL+MSJ+bS7jmhG2po1ri0d4x4rdxgc2iWm1tmMF1No5YKR3rIBau1YstB0r\noN7319aOFVFjC5gjeH3lPpW0kxFeAnwK+Nw0n98LvCkzfxoRK4HPAEfNNqiBUJLUXAuBMDNviIjl\nM3x+04SX64Clcxl3xqXRiFgWEddHxJ0RcUdEvL///ksiYm1E/CAirouI/eZyMEmSWrIK+NpcGs6W\nEe4APpCZt0TEvsD3I2It8F5gbWZ+PCLOBj7Yf0iSumgQGeHt43DHeONhIuLNwKnA0XNpP2MgzMyt\nwNb+8yciYiNwIHA8cEy/2aX0zvwYCCVJ9b12rPfY7crzKg/Rv0Dms8DKzPzJXPrM+Rxhf132cHrr\nrksyc/e57m3AkkozlSQtLCNw+0REvAz4EnBKZm6aa785BcL+sujVwFmZ+XjEs5fKZWZGxDSXMI1P\neL68/5AkteH+8XvZMt674vhB7prn2TQXEV+gtxq5f0TcD3wEWAyQmauBDwO/CFzYj1M7MvPI2cad\nNRBGxGJ6QfDzmXlN/+1tEfHSzNwaEQcA26fuPTbb8JKkIVk2dhDLxg4C4Ld4PV8877LhHayFO8Qy\n86RZPj8NOK3quLNdNRrAGuCuzLxgwkfXAu/pP38PcM3kvpKkDtk1hEdLZssIjwZOAW6LiA399z4E\nfBT4YkSsAjYD7xjaDCVJGqLZrhq9kemzxmMHPx1JUpFG4GKZuqw1KknqNEusSZKaKzgjNBCOrDaK\ndEN7hbr7nqxYsHt8TqUCG6tTqBtqFuse4ULdULNY90Ir1A21inWPcqHul/AvlftUUnAgdGlUktRp\nZoSSpObMCCVJKpMZoSSpOTNCSZLKZEYoSWqu4IzQQChJaq6tO76GwKVRSVKnmRFKkpprcbeIQTMj\nlCR1mhmhJKm5gi+WMSOUJHWaGeGCUkKh7k3Vmj9Z4xAtFeqGesW6R7lQN9Qr1r3QCnVDzWLdLRXq\nPjRrFFQ/6Mc1jlRBwRmhgVCS1FzBgdClUUlSp5kRSpKa84Z6SZLKZEYoSWrOG+olSSqTGaEkqbmC\nrxo1EEqSmis4ELo0KknqNDNCSVJz3j4hSVKZzAglSc0VfPuEgbDz2l7P2DL8Q1iou6dGoW6oV6x7\noRXqhnrFulsr1F3nOG+v0acjDISSpOYKvmrUQChJaq7gQOjFMpKkTjMQSpKa2zGExxQiYmVE3B0R\n90TE2VN8vn9EfCMibomIOyLiD2abuoFQklSEiFgEfBpYSe96q5Mi4tWTmp0BbMjMw4Ax4JMRMeNp\nQAOhJKm5XUN47OlIYFNmbs7MHcCV7Hk97EPAi/vPXwz8ODNnPIPpxTKSpFIcCNw/4fUWYMWkNp8F\n/iEiHgReBLxjtkENhJKk5tq5anQud1CeA9ySmWMR8UpgbUS8LjMfn66DgVCS1NwgAuGPx+HR8Zla\nPAAsm/B6GXtW6fhN4M8BMvOHEXEf8KvA+ukGNRBKkkbDvx7rPXbbdN7kFuuBgyNiOfAg8E7gpElt\n7gaOBf4xIpbQC4Izlj4yEEqSmmuhWmNm7oyIM4BvAouANZm5MSJO73++GvgL4JKIuJXeBaF/kpmP\nzjSugVCSVIzM/Drw9UnvrZ7w/BHg96qMaSBUDU3+6Tft+epptFCkG+oV6obWinW3VqgbahXrXmiF\nuqFese5RLtT9kl+tcZwqCt59wvsIJUmdZkYoSWqu4KLbBkJJUnMFB0KXRiVJnWZGKElqroXbJ4bF\njFCS1GlmhJKk5rx9QpKkMpkRSpKaK/iqUQOhJKm5ggOhS6OSpE4zI5QkNeftE5IklcmMUC375xaO\n0dKOFVBv14oR3rECau5asdB2rIBau1a0tmNFjT6vrdGnEm+fkCSpTDMGwohYFhHXR8SdEXFHRLy/\n//65EbElIjb0Hyvbma4kaSTtHMKjJbMtje4APpCZt0TEvsD3I2ItkMD5mXn+0GcoSRp9Bd8+MWMg\nzMytwNb+8yciYiNwYP/jGmcFJEkaLXM+RxgRy4HDge/23zozIm6NiDURsd8Q5iZJKsWOITxaMqer\nRvvLolcBZ/UzwwuBP+1//GfAJ4FVe/Ycn/B8ef8hSWrDD/oPgO+tWzefUxlpswbCiFgMXA1clpnX\nAGTm9gmfXwR8dereY4OYoySphl/pPwBeu2IFl9x88/AOtlBvn4iIANYAd2XmBRPeP2BCsxOB24cz\nPUmShmu2jPBo4BTgtojY0H/vHOCkiDiM3tWj9wGnD2+KkqSRt4CvGr2RqbPGrw9nOpKkIhUcCK0s\nI0nqNGuNSpKaK3j3CQOhWlZ1/aSNIt1goe5n1SnWvdAKdUPNYt0jXKi7Xgn2bjAQSpKaK/j2CQOh\nJKm5nO8J1OfFMpKkTjMQSpI6zUAoSeo0A6EkqdMMhJKkTjMQSpI6bZ4C4eb5OezI2TzfExgR9W54\nXnhumu8JjIz7x/1NwLN7CZahnZ15I2JlRNwdEfdExNnTzSYi3hAROyPi92ebuYFwXm2e7wmMiPvm\newIjwkBDH9MaAAAFyklEQVS425ZxfxNQWiAcvohYBHwaWEmv+M9JEfHqadp9DPgGc6hh5A31kqQB\naGX7iSOBTZm5GSAirgTeDmyc1O5M4CrgDXMZ1HOEkqRSHAjcP+H1lv57z4iIA+kFxwv7b81a8yYy\nh1MXJyIKLrgjSQtTZtYodz6z3t/3Px3ASDcAN054/dHnzDci/j2wMjP/sP/6FGBFZp45oc3/Bj6R\nmesi4n8CX83Mq2c66tCWRofxZUuSFrLf6j92++jkBg8Ayya8XsaeW8e8HrgyIgD2B94WETsy89rp\njuo5QknSALRyjnA9cHBELAceBN4JnDSxQWYetPt5RFxCLyOcNgiCgVCSNBDD35k3M3dGxBnAN4FF\nwJrM3BgRp/c/X11n3KGdI5QkdUPvHOHWIYz80lZOs7V+1ehcb4Zc6CJic0TcFhEbIuLm+Z5PWyLi\n4ojYFhG3T3jvJRGxNiJ+EBHXRcR+8znHNkzzPZwbEVv6v4kNEbFyPufYhohYFhHXR8SdEXFHRLy/\n/36nfhMzfA8F/SbauaF+GFrNCPs3Of5f4Fh6Jz2/B5yUmZPvAVnwIuI+4PWZ+eh8z6VNEfFbwBPA\n5zLztf33Pg48kpkf7//j6Bcz84PzOc9hm+Z7+AjweGaeP6+Ta1FEvBR4aWbeEhH7At8HTgDeS4d+\nEzN8D++ggN9ELyO8f/aGlS1bkBnhMzdDZuYOYPfNkF3VuStrM/MG4CeT3j4euLT//FJ6fwEsaNN8\nD9Cx30Rmbs3MW/rPn6B3Y/SBdOw3McP3AMX8JnYO4dGOtgPhrDdDdkgCfx8R6yPiD+d7MvNsSWZu\n6z/fBiyZz8nMszMj4taIWLPQlwMn618JeDiwjg7/JiZ8D9/tv9XZ30Rb2g6EXpnzrKMz83DgbcAf\n95fKOi97a/Vd/Z1cCLwCOAx4CPjk/E6nPf3lwKuBszLz8Ymfdek30f8erqL3PTxBUb+Jcs8Rth0I\n53IzZCdk5kP9/z4MfJnesnFXbeufIyEiDgC2z/N85kVmbs8+4CI68puIiMX0guDnM/Oa/tud+01M\n+B4u2/09lPWbcGl0rp65GTIi9qZ3M+SMNzouRBHxgoh4Uf/5C4G3ArfP3GtBuxZ4T//5e4BrZmi7\nYPX/wt/tRDrwm4he+Y81wF2ZecGEjzr1m5jue+jib2I+tH4fYUS8DbiAZ2+G/MtWJzACIuIV9LJA\n6BU1uLwr30NEfAE4hl7po23Ah4GvAF8EXkZvb6p3ZOZj8zXHNkzxPXwEGKO3BJb09qY6fcJ5sgUp\nIt4IfAe4jWeXPz8E3EyHfhPTfA/n0KuaMvK/id5Vo7cOYeTXtXLVqDfUS5IaKT0QWmJNkjQA7Z3T\nGzT3I5QkdZoZoSRpANq73WHQDISSpAFwaVSSpCKZEUqSBqDcpVEzQklSp5kRSpIGwHOEkiQVyYxQ\nkjQA5Z4jNBBKkgbApVFJkopkRihJGoByl0bNCCVJnWZGKEkaADNCSZKKZEYoSRqAcq8aNRBKkgbA\npVFJkopkRihJGoByl0bNCCVJnWZGKEkaAM8RSpJUJDNCSdIAlHuO0EAoSRoAl0YlSSqSGaEkaQDK\nXRo1I5QkFSMiVkbE3RFxT0ScPU2bv+5/fmtEHD7bmGaEkqQBGP45wohYBHwaOBZ4APheRFybmRsn\ntDkOeFVmHhwRK4ALgaNmGteMUJJUiiOBTZm5OTN3AFcCb5/U5njgUoDMXAfsFxFLZhrUjFCSNACt\nnCM8ELh/wustwIo5tFkKbJtuUAOhJGkAzm3jIDnHdlGln4FQktRIZk4OPMPyALBswutl9DK+mdos\n7b83Lc8RSpJKsR44OCKWR8TewDuBaye1uRZ4N0BEHAU8lpnTLouCGaEkqRCZuTMizgC+CSwC1mTm\nxog4vf/56sz8WkQcFxGbgJ8B751t3Mic65KrJEkLj0ujkqROMxBKkjrNQChJ6jQDoSSp0wyEkqRO\nMxBKkjrNQChJ6rT/DzFgfmdhn+YkAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Covariance Matrices and Covariance Functions\n", "\n", "A Gaussian process specifieds that any finite set of realizations of the function will jointly have a Gaussian density. In other words, if we are interested in the joint distribution of function values at a set of particular points, realizations of those functions can be sampled according to a Gaussian density. The Gaussian process provides a prior over an infinite dimensional object: the function. For our purposes we can think of a function as being like an infinite dimensional vector. The mean of our Gaussian process is normally specified by a vector, but is now itself specified by a *mean function*. The covariance of the process, instead of being a matrix is also a *covariance function*. But to construct the infinite dimensional matrix we need to make it a function of two arguments, $k(\\mathbf{x}, \\mathbf{z})$. When we compute the covariance matrix using k.K(X) we are computing the values of that matrix for the different entries in $\\mathbf{X}$. GPy also allows us to compute the cross covariance between two input matrices, $\\mathbf{X}$ and $\\mathbf{Z}$.\n", "\n", "## Sampling from a Gaussian Process\n", "\n", "We cannot sample a full function from a process because it consists of infinite values, however, we can obtain a finite sample from a function as described by a Gaussian process and visualize these samples as functions. This is a useful exercise as it allows us to visualize the type of functions that fall within the support of our Gaussian process prior. Careful selection of the right covariance function can improve the performance of a Gaussian process based model in practice because the covariance function allows us to bring domain knowledge to bear on the problem. If the input domain is low dimensional, then we can at least ensure that we are encoding something reasonable in the covariance through visualizing samples from the Gaussian process. \n", "\n", "For a one dimensional function, if we select a vector of input values, represented by X, to be equally spaced, and ensure that the spacing is small relative to the lengthscale of our process, then we can visualize a sample from the function by sampling from the Gaussian (or a multivariate normal) with the numpy command\n", "python\n", "F = np.random.multivariate_normal(mu, K, num_samps).T\n", "\n", "where mu is the mean (which we will set to be the zero vector) and K is the covariance matrix computed at the points where we wish to visualize the function. The transpose at the end ensures that the the matrix F has num_samps columns and $n$ rows, where $n$ is the dimensionality of the *square* covariance matrix K. \n", "\n", "Below we build a simple helper function for sampling from a Gaussian process and visualizing the result. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "def sample_covariance(kern, X, num_samps=10):\n", " \"\"\"Sample a one dimensional function as if its from a Gaussian process with the given covariance function.\"\"\"\n", " from IPython.display import HTML\n", " display(HTML('

## Samples from a Gaussian Process with ' + kern.name + ' Covariance

'))\n", " display(kern)\n", " K = kern.K(X) \n", "\n", " # Generate samples paths from a Gaussian with zero mean and covariance K\n", " F = np.random.multivariate_normal(np.zeros(X.shape[0]), K, num_samps).T\n", "\n", " fig, ax = plt.subplots(figsize=(8,8))\n", " ax.plot(X,F)\n", "\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are now in a position to define a vector of inputs, a covariance function, and then to visualize the samples from the process." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# create an input vector\n", "X = np.linspace(-2, 2, 200)[:, None]\n", "\n", "# create a covariance to visualize\n", "kern = GPy.kern.RBF(input_dim=1)\n", "\n", "# perform the samples.\n", "sample_covariance(kern, X)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "

## Samples from a Gaussian Process with rbf Covariance

" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] }, { "html": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "
rbf.ValueConstraintPriorTied to
variance 1.0 +ve
lengthscale 1.0 +ve

## Samples from a Gaussian Process with poly Covariance

" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] }, { "html": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "
poly.ValueConstraintPriorTied to
variance 1.0 +ve
" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nERHJUUrWIiIiEadkLSIiEnFK1iIiIhGnZC0iIhJxStYiIiIRp2QtIiIScUrWIiIiEadkLSIiEnFK\n1iIiIhGnZC0iIhJxStYiIiIRp2QtIiIScUrWIiIiEadkLSIiEnFK1iIiIhGnZC0iIhJxStYiIiIR\np2QtIiIScUrWIiIiEadkLSIiEnFK1iIiIhGnZC0iIhJxStYiIiIRp2QtIiIScUrWIiIiEadkLSIi\nEnFK1iIiIhGnZC0iIhJxStYiIiIRp2QtIiIScUrWIiIiEadkLSIiEnFK1iIiIhGXdLI2s/Zm9i8z\n22lmJ1d4rreZrTKz5WZ2fuphRldxcXHYIQQiF8qRC2WA3ChHLpQBVI4oyYUypCKVmvVi4GLgjfIP\nmtmxwOXAscAFwGNmlrM1+Fx5A+VCOXKhDJAb5ciFMoDKESW5UIZUJJ1EnXPLnXMrK3nqv4Hxzrkd\nzrkPgdVA82SvIyIiku/SUeM9BNhQ7v4G4CdpuI6IiEheMOfc7p80mw0cVMlTdzrnZsSOeQ34g3Pu\n3dj9vwJvOeeejd1/EpjlnJtS4dy7v7CIiEiOcs5Zoq+pWc0Jf5lEHB8Dh5a7XxR7rOK5Ew5WREQk\nHwXVDF4+8U4HfmNme5hZI6AxsCCg64iIiOSdVKZuXWxm64EWwEwzewnAObcUmAgsBV4Curuq2tpF\nRESkSlX2WYuIiEj4Mjb/2cz2MbPZZrbSzF4xs8LdHNc7ttjKYjMbZ2a1MhVjPBIoR6GZTTKzZWa2\n1MxaZDrW3Ym3DLFja5jZIjObkckY4xFPOczsUDN7LfaeWmJmN4cRa2XM7ILYwkGrzOyPuznmkdjz\n75nZSZmOsTrVlcHMrozF/r6ZvWlmPwsjzurE87uIHdfMzMrM7JJMxhePON9PrWKf5yVmVpzhEOMS\nx3tqPzP7m5mVxMpxdQhhVsnMRpnZRjNbXMUxiX22nXMZ+QEGAbfHbv8ReKCSYxoCa4BasfvPAZ0z\nFWNQ5Yg99xTQJXa7JtAg7NgTLUPs+VuBZ4HpYced5HvqIODE2O16wArgmAjEXgO/BkFDoAAoqRgX\ncCF+JgXAL/CzLEL/f0+wDKfueu/jF0mKVBniLUe54+YALwKXhh13Er+LQuBfQFHs/n5hx51kOfoB\nA3eVAdgE1Aw79goxngGcBCzezfMJf7YzubJYW3wCI/Zvu0qOKQV2AHXNrCZQl0pGkoes2nKYWQPg\nDOfcKADnXJlz7qvMhViteH4XmFkR/k31JD8cRBgV1ZbDOfeZc64kdnsrsAy/FkDYmgOrnXMfOud2\nABPwCwqV9335nHP/BArN7MDMhlmlasvgnJtf7r3/T/zskKiJ53cBcBMwCfgik8HFKZ4ydAQmO+c2\nADjnvsxwjPGIpxyfAvVjt+sDm5xzZRmMsVrOubnAv6s4JOHPdiaT9YHOuY2x2xuBHwXmnNsMPAh8\nBHwCbHHOvZq5EONSbTmARsAXZjbazN41syfMrG7mQqxWPGUAGAL0Ar7LSFSJi7ccAJhZQ/xfu/9M\nb1hx+Qmwvtz9yhYPquyYKCW7eMpQ3rXArLRGlJxqy2FmP8Enjf+JPRS1wT7x/C4aA/vEuoUWmtlV\nGYsufvGU4wngODP7BHgP6Jmh2IKU8Ge7ynnWiapiEZU+5e8451xli6KY2ZHALfgmkK+A583sShdb\nYCVTUi0H/v/1ZOBG59zbZjYUuAP4U+DB7kYAv4tfA5875xaZWav0RFm9AH4Xu85TD18r6hmrYYct\n3i/7ii0aUUoSccdiZmcDXYDT0hdO0uIpx1Dgjtj7zIheS1M8ZSjAfy+di2+1nG9mbznnVqU1ssTE\nU447gRLnXKtYzphtZk2dc/9Jc2xBS+izHWiydlUsohLrbD/IOfeZmR0MfF7JYacA85xzm2KvmQK0\nxPeZZkwA5dgAbHDOvR27PwmfrDMmgDK0BNqa2YVAbaC+mY11znVKU8iVCqAcmFkBMBl4xjk3LU2h\nJqri4kGH8sNleis7ptIFhkIUTxmIDSp7ArjAOVdV02BY4inHz4EJPk+zH9DGzHY456ZnJsRqxVOG\n9cCXzrntwHYzewNoCkQpWcdTjpbAAADn3AdmthZoAizMSITBSPiznclm8OlA59jtzkBlX5rLgRZm\nVif21+t5+PnaUVJtOZxznwHrzeyo2EPn4Qd2REU8ZbjTOXeoc64R8BtgTqYTdRyqLUfsfTQSWOqc\nG5rB2KqzEGhsZg3NbA/8TnUVv/inA50AzM8m2FKu2T8Kqi2DmR0GTAF+65xbHUKM8ai2HM65I5xz\njWKfh0nADRFK1BDf++kF4HTzMzzq4gc2Re37NZ5yLMd/pxLr522CH5icTRL/bGdwdNw+wKvASuAV\noDD2+CHAzHLH3Y5PbIvxHfAFmYox4HI0Bd7G96lMIVqjweMqQ7njzyKao8GrLQdwOr7PvQRYFPu5\nIOzYY7G1wY9OXw30jj3WDehW7phhseffA04OO+ZEy4AfnLip3P/9grBjTvZ3UaEDXY8AAABtSURB\nVO7Y0cAlYcec5PvptnLfrzeHHXOS76n9gBmxz8RioGPYMVdShvH4cVff4ls0uqT62daiKCIiIhGX\nyWZwERERSYKStYiISMQpWYuIiESckrWIiEjEKVmLiIhEnJK1iIhIxClZi4iIRNz/AWxiasIEmH7X\nAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Combining Covariance Functions\n", "\n", "Covariance functions can be combined in various ways to make new covariance functions. \n", "\n", "### Adding Covariance Functions\n", "\n", "Perhaps simplest thing you can do to combine covariance functions is to add them. The sum of two Gaussian random variables is also Gaussian distributed, with a covariance equal to the sum of the covariances of the original variables (similarly for the mean). This implies that if we add two functions drawn from Gaussian processes together, then the result is another function drawn from a Gaussian process, and the covariance function is the sum of the two covariance functions of the original process.\n", "$$\n", "k(\\mathbf{x}, \\mathbf{z}) = k_1(\\mathbf{x}, \\mathbf{z}) + k_2(\\mathbf{x}, \\mathbf{z}).\n", "$$\n", "Here the domains of the two processes don't even need to be the same, so one of the covariance functions could perhaps depend on time and the other on space,\n", "$$\n", "k\\left(\\left[\\mathbf{x}\\quad t\\right], \\left[\\mathbf{z}\\quad t^\\prime\\right]\\right) = k_1(\\mathbf{x}, \\mathbf{z}) + k_2(t, t^\\prime).\n", "$$\n", "\n", "In GPy the addition operator is overloaded so that it is easy to construct new covariance functions by adding other covariance functions together." ] }, { "cell_type": "code", "collapsed": false, "input": [ "k1 = GPy.kern.RBF(1, variance=4.0, lengthscale=10., name='long term trend')\n", "k2 = GPy.kern.RBF(1, variance=1.0, lengthscale=2., name='short term trend')\n", "kern = k1 + k2\n", "kern.name = 'signal'\n", "kern.long_term_trend.lengthscale.name = 'timescale'\n", "kern.short_term_trend.lengthscale.name = 'timescale'\n", "display(kern)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "
signal.ValueConstraintPriorTied to
long term trend.variance 4.0 +ve
long term trend.timescale 10.0 +ve
short term trend.variance 1.0 +ve
short term trend.timescale 2.0 +ve
" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Multiplying Covariance Functions\n", "\n", "An alternative is to multiply covariance functions together. This also leads to a valid covariance function (i.e. the kernel is within the space of Mercer kernels), although the interpretation isn't as straightforward as the additive covariance. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "k1 = GPy.kern.Linear(1)\n", "k2 = GPy.kern.RBF(1)\n", "kern = k1*k2\n", "display(kern)\n", "fig, ax = plt.subplots(figsize=(8,8))\n", "im = ax.imshow(kern.K(X), interpolation='None')\n", "plt.colorbar(im)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "
mul.ValueConstraintPriorTied to
linear.variances 1.0 +ve
rbf.variance 1.0 +ve
rbf.lengthscale 1.0 +ve