{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Understanding Kernels in Gaussian Processes Regression\n", "> Using GPy and some interactive visualisations for understanding GPR and applying on a real world data set\n", "\n", "- toc: true \n", "- badges: true\n", "- comments: true\n", "- author: Nipun Batra\n", "- categories: [ML]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Disclaimer\n", "\n", "This blog post is forked from [GPSS 2019](http://gpss.cc/gpss19/) [Lab 1](https://nbviewer.jupyter.org/github/gpschool/labs/blob/2019/2019/.answers/lab_1.ipynb). This is produced only for educational purposes. All credit goes to the GPSS organisers. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Support for maths\n", "import numpy as np\n", "# Plotting tools\n", "from matplotlib import pyplot as plt\n", "# we use the following for plotting figures in jupyter\n", "%matplotlib inline\n", "\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "# GPy: Gaussian processes library\n", "import GPy\n", "from IPython.display import display\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Covariance functions, aka kernels\n", "\n", "We will define a covariance function, from hereon referred to as a kernel, using `GPy`. The most commonly used kernel in machine learning is the Gaussian-form radial basis function (RBF) kernel. It is also commonly referred to as the exponentiated quadratic or squared exponential kernel – all are equivalent.\n", "\n", "The definition of the (1-dimensional) RBF kernel has a Gaussian-form, defined as:\n", "\n", "$$\n", " \\kappa_\\mathrm{rbf}(x,x') = \\sigma^2\\exp\\left(-\\frac{(x-x')^2}{2\\mathscr{l}^2}\\right)\n", "$$\n", "\n", "It has two parameters, described as the variance, $\\sigma^2$ and the lengthscale $\\mathscr{l}$.\n", "\n", "In GPy, we define our kernels using the input dimension as the first argument, in the simplest case `input_dim=1` for 1-dimensional regression. We can also explicitly define the parameters, but for now we will use the default values:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "
rbf. valueconstraintspriors
variance 4.0 +ve
lengthscale 0.5 +ve
" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create a 1-D RBF kernel with default parameters\n", "k = GPy.kern.RBF(lengthscale=0.5, input_dim=1, variance=4)\n", "# Preview the kernel's parameters\n", "k" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fig, ax = plt.subplots()\n", "from matplotlib.animation import FuncAnimation\n", "from matplotlib import rc\n", "ls = [0.0005, 0.05, 0.25, 0.5, 1., 2., 4.]\n", "\n", "X = np.linspace(0.,1.,500)# 500 points evenly spaced over [0,1]\n", "X = X[:,None]\n", "mu = np.zeros((500))\n", "\n", "def update(iteration):\n", " ax.cla()\n", " k = GPy.kern.RBF(1)\n", " k.lengthscale = ls[iteration]\n", " # Calculate the new covariance function at k(x,0)\n", " C = k.K(X,X)\n", " Z = np.random.multivariate_normal(mu,C,40)\n", " for i in range(40):\n", " ax.plot(X[:],Z[i,:],color='k',alpha=0.2)\n", " ax.set_title(\"$\\kappa_{rbf}(x,x')$\\nLength scale = %s\" %k.lengthscale[0]);\n", " ax.set_ylim((-4, 4))\n", "\n", "\n", "\n", "num_iterations = len(ls)\n", "anim = FuncAnimation(fig, update, frames=np.arange(0, num_iterations-1, 1), interval=500)\n", "plt.close()\n", "\n", "rc('animation', html='jshtml')\n", "anim" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### In the animation above, as you increase the length scale, the learnt functions keep getting smoother." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fig, ax = plt.subplots()\n", "from matplotlib.animation import FuncAnimation\n", "from matplotlib import rc\n", "var = [0.0005, 0.05, 0.25, 0.5, 1., 2., 4., 9.]\n", "\n", "X = np.linspace(0.,1.,500)# 500 points evenly spaced over [0,1]\n", "X = X[:,None]\n", "mu = np.zeros((500))\n", "\n", "def update(iteration):\n", " ax.cla()\n", " k = GPy.kern.RBF(1)\n", " k.variance = var[iteration]\n", " # Calculate the new covariance function at k(x,0)\n", " C = k.K(X,X)\n", " Z = np.random.multivariate_normal(mu,C,40)\n", " for i in range(40):\n", " ax.plot(X[:],Z[i,:],color='k',alpha=0.2)\n", " ax.set_title(\"$\\kappa_{rbf}(x,x')$\\nVariance = %s\" %k.variance[0]);\n", " ax.set_ylim((-4, 4))\n", "\n", "\n", "\n", "num_iterations = len(ls)\n", "anim = FuncAnimation(fig, update, frames=np.arange(0, num_iterations-1, 1), interval=500)\n", "plt.close()\n", "\n", "rc('animation', html='jshtml')\n", "anim" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### In the animation above, as you increase the variance, the scale of values increases." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "X1 = np.array([1, 2, 3]).reshape(-1, 1)\n", "\n", "y1 = np.array([0, 1, 0]).reshape(-1, 1)\n", "y2 = np.array([0, -1, 0]).reshape(-1, 1)\n", "y3 = np.array([0, 10, 0]).reshape(-1, 1)\n", "y4 = np.array([0, 0.3, 0]).reshape(-1, 1)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " \u001b[1mrbf. \u001b[0;0m | value | constraints | priors\n", " \u001b[1mvariance \u001b[0;0m | 0.262031485550043 | +ve | \n", " \u001b[1mlengthscale\u001b[0;0m | 0.24277532672486218 | +ve | \n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "k = GPy.kern.RBF(lengthscale=0.5, input_dim=1, variance=4)\n", "\n", "m = GPy.models.GPRegression(X1, y1, k)\n", "#m.Gaussian_noise = 0.0\n", "m.optimize()\n", "print(k)\n", "m.plot();" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " \u001b[1mrbf. \u001b[0;0m | value | constraints | priors\n", " \u001b[1mvariance \u001b[0;0m | 0.262031485550043 | +ve | \n", " \u001b[1mlengthscale\u001b[0;0m | 0.24277532672486218 | +ve | \n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "k = GPy.kern.RBF(lengthscale=0.5, input_dim=1, variance=4)\n", "\n", "m = GPy.models.GPRegression(X1, y2, k)\n", "#m.Gaussian_noise = 0.0\n", "m.optimize()\n", "print(k)\n", "m.plot();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### In the above two examples, the y values are: 0, 1, 0 and 0, -1, 0. This shows smoothness. Thus, length scale can be big (0.24)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " \u001b[1mrbf. \u001b[0;0m | value | constraints | priors\n", " \u001b[1mvariance \u001b[0;0m | 16.918792970578004 | +ve | \n", " \u001b[1mlengthscale\u001b[0;0m | 0.07805339389352635 | +ve | \n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "k = GPy.kern.RBF(lengthscale=0.5, input_dim=1, variance=4)\n", "\n", "m = GPy.models.GPRegression(X1, y3, k)\n", "#m.Gaussian_noise = 0.0\n", "m.optimize()\n", "print(k)\n", "m.plot();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### In the above example, the y values are: 0, 10, 0. The data set is not smooth. Thus, length scale learnt uis very small (0.24). Noise variance of RBF kernel also increased to accomodate the 10." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " \u001b[1mrbf. \u001b[0;0m | value | constraints | priors\n", " \u001b[1mvariance \u001b[0;0m | 5.90821963086592e-06 | +ve | \n", " \u001b[1mlengthscale\u001b[0;0m | 2.163452641925496 | +ve | \n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "k = GPy.kern.RBF(lengthscale=0.5, input_dim=1, variance=4)\n", "\n", "m = GPy.models.GPRegression(X1, y4, k)\n", "#m.Gaussian_noise = 0.0\n", "m.optimize()\n", "print(k)\n", "m.plot();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### In the above examples, the y values are: 0, 0.3, 0. The data set is the smoothest amongst the four. Thus, length scale learnt is large (2.1). Noise variance of RBF kernel is also small." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.3" } }, "nbformat": 4, "nbformat_minor": 2 }