{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# GPy\n", "\n", "GPy is a framework for Gaussian process based applications. It is design for speed and reliability. The main three pillars of its functionality are made of \n", "\n", " - Ease of use\n", " - Reproduceability\n", " - Scalability\n", " \n", "In this tutorial we will have a look at the three main pillars, so you may be able to use Gaussian processes with ease of mind and without the complications of cutting edge research code." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import GPy, numpy as np\n", "from matplotlib import pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ease of use\n", "\n", "GPy handles the parameters of the parameter based models on the basis of the parameterized framework built in itself. The framework allows to use parameters in an intelligent and intuative way. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "X = np.random.uniform(0, 10, (200, 1))\n", "f = np.sin(.3*X) + .3*np.cos(1.3*X)\n", "f -= f.mean()\n", "Y = f+np.random.normal(0, .1, f.shape)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(X, Y)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "

\n", "Model: GP regression
\n", "Log-likelihood: -198.335478428
\n", "Number of Parameters: 3
\n", "Number of Optimization Parameters: 3
\n", "Updates: True
\n", "

\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "
GP_regression.ValueConstraintPriorTied to
rbf.variance 1.0 +ve
rbf.lengthscale 1.0 +ve
Gaussian_noise.variance 1.0 +ve
" ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = GPy.models.GPRegression(X, Y)\n", "m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Changing parameters is as easy as assigning new values to the respective parameter:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "

\n", "Model: GP regression
\n", "Log-likelihood: -195.694049324
\n", "Number of Parameters: 3
\n", "Number of Optimization Parameters: 3
\n", "Updates: True
\n", "

\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "
GP_regression.ValueConstraintPriorTied to
rbf.variance 1.0 +ve
rbf.lengthscale 1.5 +ve
Gaussian_noise.variance 1.0 +ve
" ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m.rbf.lengthscale = 1.5\n", "m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The whole model gets updated automatically, when updating a parameter, without you having to interfere at all.\n", "\n", "Change some parameters and plot the results, using the models `plot()` function\n", "\n", "What do the different parameters change in the result?" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Type your code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The parameters can be optimized using gradient based optimization. The optimization routines are taken over from scipy. Running the optimization in a GPy model is a call to the models own `optimize` method." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ " :0: FutureWarning:IPython widgets are experimental and may change in the future.\n" ] } ], "source": [ "m.optimize(messages=1)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nLoQQbuT/A5W90A9KSrLrAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_ = m.plot()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# You can use different kernels to use on the data.\n", "# Try out three different kernels and plot the result after optimizing the GP:\n", "# See kernels using GPy.kern." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Type your code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reproduceability\n", "\n", "GPy has a built in save and load functionality, allowing you to pickle a model with all its parameters and data in a single file. This is usefull when transferring models to another location, or rerunning models with different intializations etc." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Try saving a model using the models `pickle()` function and load it again using `GPy.load()`. The loaded model is fully functional and can be used as usual." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Type your code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have put a lot of effort in stability of execution, so try to randomize a model using its `randomize()` function, which randomized the models parameters. After optimization the result whould be very close to previous model optimizations. " ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Type your code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Scalability\n", "\n", " - GPys parameterized framework can handle as many parameters as you like and is memory and speed efficient in setting parameters by having only one copy of the parameters in memory. \n", "\n", " - There are many scalability based Gaussian process methods implemented in GPy, have a look at " ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "GPy.core.SparseGP?" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true }, "outputs": [], "source": [ "GPy.core.SVGP?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can easily run a sparse GP on above data by using the wrapper methods for running different GPy models:\n", "\n", "`GPy.models.`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use the `GPy.models.SparseGPRegression` to run the above data using the sparse GP:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#Type your code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use the GPy.core.SVGP to run the above data. This is a very newly integrated feature and has therefore no thin wrapper yet in the `GPy.models` module. \n", "\n", "The likelihoods of GPy are located at `GPy.likelihoods`" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 0 }