{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# GPyOpt: configuring Scikit-learn methods\n", "\n", "### Written by Javier Gonzalez and Zhenwen Dai, University of Sheffield.\n", "\n", "Modified by Federico Tomasi, University of Genoa.\n", "\n", "*Last updated Thursday, 28 September 2017.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Part I: Regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The goal of this notebook is to use GPyOpt to tune the parameters of Machine Learning algorithms. In particular, in this section we will show how to tune the hyper-parameters for the [Support Vector Regression (SVR)](http://www.svms.org/regression/SmSc98.pdf) implemented in [Scikit-learn](http://scikit-learn.org/stable/). Given the standard interface of Scikit-learn, other models can be tuned in a similar fashion." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We start loading the requires modules." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline \n", "import GPy\n", "import GPyOpt\n", "import numpy as np\n", "from sklearn import svm\n", "from numpy.random import seed\n", "seed(12345)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For this example we will use the Olympic marathon dataset available in GPy. \n", "We split the original dataset into the training data (first 20 data points) and testing data (last 7 data points). The performance of SVR is evaluated in terms of Rooted Mean Squared Error (RMSE) on the testing data." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Let's load the dataset\n", "GPy.util.datasets.authorize_download = lambda x: True # prevents requesting authorization for download.\n", "data = GPy.util.datasets.olympic_marathon_men()\n", "X = data['X']\n", "Y = data['Y']\n", "X_train = X[:20]\n", "Y_train = Y[:20,0]\n", "X_test = X[20:]\n", "Y_test = Y[20:,0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's first see the results with the default kernel parameters." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from sklearn import svm\n", "svr = svm.SVR()\n", "svr.fit(X_train,Y_train)\n", "Y_train_pred = svr.predict(X_train)\n", "Y_test_pred = svr.predict(X_test)\n", "print(\"The default parameters obtained: C=\"+str(svr.C)+\", epilson=\"+str(svr.epsilon)+\", gamma=\"+str(svr.gamma))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We compute the RMSE on the testing data and plot the prediction. With the default parameters, SVR does not give an OK fit to the training data but completely miss out the testing data well." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RMSE = 0.56330740612\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(X_train,Y_train_pred,'b',label='pred-train')\n", "plot(X_test,Y_test_pred,'g',label='pred-test')\n", "plot(X_train,Y_train,'rx',label='ground truth')\n", "plot(X_test,Y_test,'rx')\n", "legend(loc='best')\n", "print(\"RMSE = \"+str(np.sqrt(np.square(Y_test_pred-Y_test).mean())))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's try Bayesian Optimization. We first write a wrap function for fitting with SVR. The objective is the RMSE from cross-validation. We optimize the parameters in *log* space." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "nfold = 3\n", "def fit_svr_val(x):\n", " x = np.atleast_2d(np.exp(x))\n", " fs = np.zeros((x.shape[0],1))\n", " for i in range(x.shape[0]):\n", " fs[i] = 0\n", " for n in range(nfold):\n", " idx = np.array(range(X_train.shape[0]))\n", " idx_valid = np.logical_and(idx>=X_train.shape[0]/nfold*n, idx" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# it may take a few seconds\n", "opt.run_optimization(max_iter=50)\n", "opt.plot_convergence()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's show the best parameters found. They differ significantly from the default parameters." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The best parameters obtained: C=430.280588436, epilson=0.00104925901026, gamma=6.14421235333e-06\n" ] } ], "source": [ "x_best = np.exp(opt.X[np.argmin(opt.Y)])\n", "print(\"The best parameters obtained: C=\"+str(x_best[0])+\", epilson=\"+str(x_best[1])+\", gamma=\"+str(x_best[2]))\n", "svr = svm.SVR(C=x_best[0], epsilon=x_best[1],gamma=x_best[2])\n", "svr.fit(X_train,Y_train)\n", "Y_train_pred = svr.predict(X_train)\n", "Y_test_pred = svr.predict(X_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see SVR does a reasonable fit to the data. The result could be further improved by increasing the *max_iter*. " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RMSE = 0.0709714822355\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(X_train,Y_train_pred,'b',label='pred-train')\n", "plot(X_test,Y_test_pred,'g',label='pred-test')\n", "plot(X_train,Y_train,'rx',label='ground truth')\n", "plot(X_test,Y_test,'rx')\n", "legend(loc='best')\n", "print(\"RMSE = \"+str(np.sqrt(np.square(Y_test_pred-Y_test).mean())))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Part II: Classification" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the same way as we did for the regression task, we can tune the parameters for a classification problem. The function to optimise is treated as a black box, so the procedure is very similar." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can start by loading the standard Iris dataset from scikit-learn." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.datasets import load_iris, make_blobs\n", "\n", "# iris = load_iris()\n", "\n", "# # Take the first two features. We could avoid this by using a two-dim dataset\n", "# X = iris.data[:, :2]\n", "# y = iris.target\n", "\n", "X, y = make_blobs(centers=3, cluster_std=4, random_state=1234)\n", "\n", "for i in np.unique(y):\n", " idx = y == i\n", " plt.plot(X[idx,0], X[idx,1], 'o')\n", "# plt.title(\"First two dimensions of Iris data\")\n", "# plt.xlabel('Sepal length')\n", "# plt.ylabel('Sepal width');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then, let's divide the dataset into a \"learning\" and a \"test\" set. The test set will be used later, in order to assess the performance of parameters selected by GPyOpt in relation to [GridSearchCV](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html) and a SVC with the default parameters.\n", "\n", "For each case, we consider an SVM with RBF kernel.\n", "\n", "Let's plot both the learning (with colors related to their classes) and the test data (red \"x\")." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n0P8HJF+bQxPAQ9AAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.model_selection import StratifiedShuffleSplit\n", "train_index, test_index = next(StratifiedShuffleSplit(test_size=.4, random_state=123).split(X,y))\n", "\n", "X_train, X_test = X[train_index], X[test_index]\n", "y_train, y_test = y[train_index], y[test_index]\n", "\n", "for i in np.unique(y_train):\n", " idx = y_train == i\n", " plt.plot(X_train[idx,0], X_train[idx,1], 'o')\n", "\n", "plt.plot(X_test[:,0], X_test[:,1], 'rx');\n", "plt.title(\"Learning and test sets\")\n", "plt.xlabel('Sepal length')\n", "plt.ylabel('Sepal width');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.1 SVC with no parameter search" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first tentative is to use the SVC with the default parameters." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SVC with default parameters\n", "Test score: 0.700\n" ] } ], "source": [ "from sklearn.svm import SVC\n", "svc = SVC(kernel='rbf').fit(X_train, y_train)\n", "\n", "y_train_pred = svc.predict(X_train)\n", "y_test_pred = svc.predict(X_test)\n", "\n", "print(\"SVC with default parameters\\nTest score: %.3f\" % svc.score(X_test, y_test))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# utility functions taken from\n", "# http://scikit-learn.org/stable/auto_examples/svm/plot_iris.html\n", "\n", "def make_meshgrid(x, y, h=.02):\n", " \"\"\"Create a mesh of points to plot in\n", "\n", " Parameters\n", " ----------\n", " x: data to base x-axis meshgrid on\n", " y: data to base y-axis meshgrid on\n", " h: stepsize for meshgrid, optional\n", "\n", " Returns\n", " -------\n", " xx, yy : ndarray\n", " \"\"\"\n", " x_min, x_max = x.min() - 1, x.max() + 1\n", " y_min, y_max = y.min() - 1, y.max() + 1\n", " xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n", " np.arange(y_min, y_max, h))\n", " return xx, yy\n", "\n", "\n", "def plot_contours(ax, clf, xx, yy, **params):\n", " \"\"\"Plot the decision boundaries for a classifier.\n", "\n", " Parameters\n", " ----------\n", " ax: matplotlib axes object\n", " clf: a classifier\n", " xx: meshgrid ndarray\n", " yy: meshgrid ndarray\n", " params: dictionary of params to pass to contourf, optional\n", " \"\"\"\n", " Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])\n", " Z = Z.reshape(xx.shape)\n", " out = ax.contourf(xx, yy, Z, **params)\n", " return out\n", "\n", "X0, X1 = X[:, 0], X[:, 1]\n", "xx, yy = make_meshgrid(X0, X1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can visualise the surfaces defined by the SVM to differentiate the classes. The points have the color of each own class." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f, ax = plt.subplots(1,1, squeeze=False)\n", " \n", "for i in np.unique(y_test):\n", " plot_contours(ax[0,0], svc, xx, yy, alpha=0.8)\n", " idx = y_test == i\n", " ax[0,0].plot(X_test[idx,0], X_test[idx,1], 'o')\n", " ax[0,0].set_title(\"Difference between SVM prediction (background color) \\nand real classes (point color) in test set\")\n", "# ax[0,0].set_xlim([4,8])\n", "# ax[0,0].set_ylim([2,4.5])\n", " \n", "# plt.xlabel('Sepal length')\n", "# plt.ylabel('Sepal width');\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2 GridSearchCV" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For comparison, we can use the standard [GridSearchCV](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html) for the parameter selection. This will build a grid with the combination of all of the parameters, and then select the best combination of parameters that achieve the maximum validation score (or minimum error)." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "GridSearchCV\n", "Test score: 0.850\n", "Best parameters extracted: {'C': 0.21544346900318834, 'gamma': 0.01}\n" ] } ], "source": [ "from sklearn.model_selection import GridSearchCV\n", "\n", "grid = GridSearchCV(SVC(kernel='rbf'), dict(C=np.logspace(-2,4,10), gamma=np.logspace(-12,-2,10))).fit(X_train,y_train)\n", "\n", "\n", "print(\"GridSearchCV\\nTest score: %.3f\" % grid.score(X_test, y_test))\n", "\n", "print(\"Best parameters extracted: %s\" % grid.best_params_)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# y_test_pred = grid.predict(X_test)\n", "\n", "f, ax = plt.subplots(1,1, squeeze=False)\n", " \n", "for i in np.unique(y_test):\n", " plot_contours(ax[0,0], grid, xx, yy, alpha=0.8)\n", " idx = y_test == i\n", " ax[0,0].plot(X_test[idx,0], X_test[idx,1], 'o')\n", " ax[0,0].set_title(\"Difference between SVM prediction (background color) \\n\"\n", " \"and real classes (point color) in test set, using GridSearchCV\")\n", "# ax[0,0].set_xlim([4,8])\n", "# ax[0,0].set_ylim([2,4.5])\n", " \n", "# plt.xlabel('Sepal length')\n", "# plt.ylabel('Sepal width');\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.3 GPy optimization" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [], "source": [ "domain =[{'name': 'C', 'type': 'continuous', 'domain': (-2.,4.)},\n", "# {'name': 'kernel', 'type': 'categorical', 'domain': (0, 1)},\n", " {'name': 'gamma', 'type': 'continuous', 'domain': (-12.,-2.)}\n", " ]" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from sklearn.model_selection import cross_val_score\n", " \n", "def fit_svc_val(x, mdl=None, cv=None):\n", " x = np.atleast_2d(np.exp(x))\n", " fs = np.zeros((x.shape[0], 1))\n", " for i, params in enumerate(x):\n", " dict_params = dict(zip([el['name'] for el in domain], params))\n", " if 'kernel' in dict_params:\n", " dict_params['kernel'] = 'rbf' if dict_params['kernel'] == 0 else 'poly'\n", " mdl.set_params(**dict_params)\n", " fs[i] = -np.mean(cross_val_score(mdl, X_train, y_train, cv=cv))\n", " return fs" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The set cost function is ignored! LBC acquisition does not make sense with cost.\n" ] }, { "data": { "image/png": "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\nYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from functools import partial\n", "opt = GPyOpt.methods.BayesianOptimization(f = partial(fit_svc_val, mdl=SVC(kernel='rbf')), # function to optimize \n", " domain = domain, # box-constrains of the problem\n", " acquisition_type ='LCB', # LCB acquisition\n", " acquisition_weight = 0.2) # Exploration exploitation\n", "opt.run_optimization(max_iter=50)\n", "opt.plot_convergence()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "opt.plot_acquisition()" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "GPyOpt\n", "Test score: 0.850\n", "Best parameters extracted: {'C': 2.03757065667337, 'gamma': 0.0033852993544374603}\n" ] } ], "source": [ "x_best = np.exp(opt.X[np.argmin(opt.Y)])\n", "best_params = dict(zip([el['name'] for el in domain], x_best))\n", "\n", "svc_opt = SVC(**best_params)\n", "svc_opt.fit(X_train, y_train)\n", "# y_train_pred = svc.predict(X_train)\n", "# y_test_pred = svc.predict(X_test)\n", "\n", "\n", "print(\"GPyOpt\\nTest score: %.3f\" % svc_opt.score(X_test, y_test))\n", "\n", "print(\"Best parameters extracted: %s\" % best_params)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# y_test_pred = grid.predict(X_test)\n", "\n", "f, ax = plt.subplots(1,1, squeeze=False)\n", " \n", "for i in np.unique(y_test):\n", " plot_contours(ax[0,0], svc_opt, xx, yy, alpha=0.8)\n", " idx = y_test == i\n", " ax[0,0].plot(X_test[idx,0], X_test[idx,1], 'o')\n", " ax[0,0].set_title(\"Difference between SVM prediction (background color) \\n\"\n", " \"and real classes (point color) in test set, using GPyOpt\")\n", "# ax[0,0].set_xlim([4,8])\n", "# ax[0,0].set_ylim([2,4.5])\n", " \n", "# plt.xlabel('Sepal length')\n", "# plt.ylabel('Sepal width');\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The parameter selected by GridSearchCV and GPyOpt are very similar. However, it is clear from the convergence plots that GPyOpt converges very quickly to the minimum, while GridSearch has to test each combination of parameters." ] } ], "metadata": { "anaconda-cloud": {}, "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.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }