{ "metadata": { "name": "", "signature": "sha256:efb76d63e5323b37079bb1929f7c47755d0cf787abf8b580c04e0716c60ae935" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Validation and Model Selection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section, we'll look at *model evaluation* and the tuning of *hyperparameters*, which are parameters that define the model." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import print_function, division\n", "\n", "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# Use seaborn for plotting defaults\n", "import seaborn as sns; sns.set()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Validating Models\n", "\n", "One of the most important pieces of machine learning is **model validation**: that is, checking how well your model fits a given dataset. But there are some pitfalls you need to watch out for.\n", "\n", "Consider the digits example we've been looking at previously. How might we check how well our model fits the data?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.datasets import load_digits\n", "digits = load_digits()\n", "X = digits.data\n", "y = digits.target" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's fit a K-neighbors classifier" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.neighbors import KNeighborsClassifier\n", "knn = KNeighborsClassifier(n_neighbors=1)\n", "knn.fit(X, y)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n", " metric_params=None, n_neighbors=1, p=2, weights='uniform')" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we'll use this classifier to *predict* labels for the data" ] }, { "cell_type": "code", "collapsed": false, "input": [ "y_pred = knn.predict(X)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can check how well our prediction did:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print(\"{0} / {1} correct\".format(np.sum(y == y_pred), len(y)))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1797 / 1797 correct\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "It seems we have a perfect classifier!\n", "\n", "**Question: what's wrong with this?**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Validation Sets\n", "\n", "Above we made the mistake of testing our data on the same set of data that was used for training. **This is not generally a good idea**. If we optimize our estimator this way, we will tend to **over-fit** the data: that is, we learn the noise.\n", "\n", "A better way to test a model is to use a hold-out set which doesn't enter the training. We've seen this before using scikit-learn's train/test split utility:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.cross_validation import train_test_split\n", "X_train, X_test, y_train, y_test = train_test_split(X, y)\n", "X_train.shape, X_test.shape" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "((1347, 64), (450, 64))" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we train on the training data, and validate on the test data:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "knn = KNeighborsClassifier(n_neighbors=1)\n", "knn.fit(X_train, y_train)\n", "y_pred = knn.predict(X_test)\n", "print(\"{0} / {1} correct\".format(np.sum(y_test == y_pred), len(y_test)))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "442 / 450 correct\n" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This gives us a more reliable estimate of how our model is doing.\n", "\n", "The metric we're using here, comparing the number of matches to the total number of samples, is known as the **accuracy score**, and can be computed using the following routine:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.metrics import accuracy_score\n", "accuracy_score(y_test, y_pred)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "0.98222222222222222" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This can also be computed directly from the ``model.score`` method:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "knn.score(X_test, y_test)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "0.98222222222222222" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using this, we can ask how this changes as we change the model parameters, in this case the number of neighbors:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "for n_neighbors in [1, 5, 10, 20, 30]:\n", " knn = KNeighborsClassifier(n_neighbors)\n", " knn.fit(X_train, y_train)\n", " print(n_neighbors, knn.score(X_test, y_test))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 0.982222222222\n", "5" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 0.984444444444\n", "10" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 0.982222222222\n", "20" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 0.968888888889\n", "30" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 0.971111111111\n" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that in this case, a small number of neighbors seems to be the best option." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cross-Validation\n", "\n", "One problem with validation sets is that you \"lose\" some of the data. Above, we've only used 3/4 of the data for the training, and used 1/4 for the validation. Another option is to use **2-fold cross-validation**, where we split the sample in half and perform the validation twice:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "X1, X2, y1, y2 = train_test_split(X, y, test_size=0.5, random_state=0)\n", "X1.shape, X2.shape" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "((898, 64), (899, 64))" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "print(KNeighborsClassifier(1).fit(X2, y2).score(X1, y1))\n", "print(KNeighborsClassifier(1).fit(X1, y1).score(X2, y2))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0.983296213808\n", "0.982202447164" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thus a two-fold cross-validation gives us two estimates of the score for that parameter.\n", "\n", "Because this is a bit of a pain to do by hand, scikit-learn has a utility routine to help:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.cross_validation import cross_val_score\n", "cv = cross_val_score(KNeighborsClassifier(1), X, y, cv=10)\n", "cv.mean()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "0.97614938602520218" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### K-fold Cross-Validation\n", "\n", "Here we've used 2-fold cross-validation. This is just one specialization of $K$-fold cross-validation, where we split the data into $K$ chunks and perform $K$ fits, where each chunk gets a turn as the validation set.\n", "We can do this by changing the ``cv`` parameter above. Let's do 10-fold cross-validation:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cross_val_score(KNeighborsClassifier(1), X, y, cv=10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "array([ 0.93513514, 0.99453552, 0.97237569, 0.98888889, 0.96089385,\n", " 0.98882682, 0.99441341, 0.98876404, 0.97175141, 0.96590909])" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This gives us an even better idea of how well our model is doing." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Overfitting, Underfitting and Model Selection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we've gone over the basics of validation, and cross-validation, it's time to go into even more depth regarding model selection.\n", "\n", "The issues associated with validation and \n", "cross-validation are some of the most important\n", "aspects of the practice of machine learning. Selecting the optimal model\n", "for your data is vital, and is a piece of the problem that is not often\n", "appreciated by machine learning practitioners.\n", "\n", "Of core importance is the following question:\n", "\n", "**If our estimator is underperforming, how should we move forward?**\n", "\n", "- Use simpler or more complicated model?\n", "- Add more features to each observed data point?\n", "- Add more training samples?\n", "\n", "The answer is often counter-intuitive. In particular, **Sometimes using a\n", "more complicated model will give _worse_ results.** Also, **Sometimes adding\n", "training data will not improve your results.** The ability to determine\n", "what steps will improve your model is what separates the successful machine\n", "learning practitioners from the unsuccessful." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Illustration of the Bias-Variance Tradeoff\n", "\n", "For this section, we'll work with a simple 1D regression problem. This will help us to\n", "easily visualize the data and the model, and the results generalize easily to higher-dimensional\n", "datasets. We'll explore a simple **linear regression** problem.\n", "This can be accomplished within scikit-learn with the `sklearn.linear_model` module.\n", "\n", "We'll create a simple nonlinear function that we'd like to fit" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def test_func(x, err=0.5):\n", " y = 10 - 1. / (x + 0.1)\n", " if err > 0:\n", " y = np.random.normal(y, err)\n", " return y" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's create a realization of this dataset:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def make_data(N=40, error=1.0, random_seed=1):\n", " # randomly sample the data\n", " np.random.seed(1)\n", " X = np.random.random(N)[:, np.newaxis]\n", " y = test_func(X.ravel(), error)\n", " \n", " return X, y" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "X, y = make_data(40, error=1)\n", "plt.scatter(X.ravel(), y);" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now say we want to perform a regression on this data. Let's use the built-in linear regression function to compute a fit:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "X_test = np.linspace(-0.1, 1.1, 500)[:, None]\n", "\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.metrics import mean_squared_error\n", "model = LinearRegression()\n", "model.fit(X, y)\n", "y_test = model.predict(X_test)\n", "\n", "plt.scatter(X.ravel(), y)\n", "plt.plot(X_test.ravel(), y_test)\n", "plt.title(\"mean squared error: {0:.3g}\".format(mean_squared_error(model.predict(X), y)));" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have fit a straight line to the data, but clearly this model is not a good choice. We say that this model is **biased**, or that it **under-fits** the data.\n", "\n", "Let's try to improve this by creating a more complicated model. We can do this by adding degrees of freedom, and computing a polynomial regression over the inputs. Scikit-learn makes this easy with the ``PolynomialFeatures`` preprocessor, which can be pipelined with a linear regression.\n", "\n", "Let's make a convenience routine to do this:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.preprocessing import PolynomialFeatures\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.pipeline import make_pipeline\n", "\n", "def PolynomialRegression(degree=2, **kwargs):\n", " return make_pipeline(PolynomialFeatures(degree),\n", " LinearRegression(**kwargs))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we'll use this to fit a quadratic curve to the data." ] }, { "cell_type": "code", "collapsed": false, "input": [ "model = PolynomialRegression(2)\n", "model.fit(X, y)\n", "y_test = model.predict(X_test)\n", "\n", "plt.scatter(X.ravel(), y)\n", "plt.plot(X_test.ravel(), y_test)\n", "plt.title(\"mean squared error: {0:.3g}\".format(mean_squared_error(model.predict(X), y)));" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This reduces the mean squared error, and makes a much better fit. What happens if we use an even higher-degree polynomial?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "model = PolynomialRegression(30)\n", "model.fit(X, y)\n", "y_test = model.predict(X_test)\n", "\n", "plt.scatter(X.ravel(), y)\n", "plt.plot(X_test.ravel(), y_test)\n", "plt.title(\"mean squared error: {0:.3g}\".format(mean_squared_error(model.predict(X), y)))\n", "plt.ylim(-4, 14);" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "When we increase the degree to this extent, it's clear that the resulting fit is no longer reflecting the true underlying distribution, but is more sensitive to the noise in the training data. For this reason, we call it a **high-variance model**, and we say that it **over-fits** the data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Just for fun, let's use IPython's interact capability (only in IPython 2.0+) to explore this interactively:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.html.widgets import interact\n", "\n", "def plot_fit(degree, Npts):\n", " X, y = make_data(Npts, error=1)\n", " X_test = np.linspace(-0.1, 1.1, 500)[:, None]\n", " \n", " model = PolynomialRegression(degree=degree)\n", " model.fit(X, y)\n", " y_test = model.predict(X_test)\n", "\n", " plt.scatter(X.ravel(), y)\n", " plt.plot(X_test.ravel(), y_test)\n", " plt.ylim(-4, 14)\n", " plt.title(\"mean squared error: {0:.2f}\".format(mean_squared_error(model.predict(X), y)))\n", " \n", "interact(plot_fit, degree=[1, 30], Npts=[2, 100]);" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Detecting Over-fitting with Validation Curves\n", "\n", "Clearly, computing the error on the training data is not enough (we saw this previously). As above, we can use **cross-validation** to get a better handle on how the model fit is working.\n", "\n", "Let's do this here, again using the ``validation_curve`` utility. To make things more clear, we'll use a slightly larger dataset:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "X, y = make_data(120, error=1.0)\n", "plt.scatter(X, y);" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.learning_curve import validation_curve\n", "\n", "def rms_error(model, X, y):\n", " y_pred = model.predict(X)\n", " return np.sqrt(np.mean((y - y_pred) ** 2))\n", "\n", "degree = np.arange(0, 18)\n", "val_train, val_test = validation_curve(PolynomialRegression(), X, y,\n", " 'polynomialfeatures__degree', degree, cv=7,\n", " scoring=rms_error)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's plot the validation curves:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def plot_with_err(x, data, color, **kwargs):\n", " mu, std = data.mean(1), data.std(1)\n", " plt.plot(x, mu, '-', c=color, **kwargs)\n", " plt.fill_between(x, mu - std, mu + std, edgecolor='none', facecolor=color, alpha=0.2)\n", "\n", "plot_with_err(degree, val_train, 'r', label='training scores')\n", "plot_with_err(degree, val_test, 'b', label='validation scores')\n", "plt.xlabel('degree'); plt.ylabel('rms error')\n", "plt.legend();" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nP72XZcuWsXjxUq699rpJLpf3eDLQwZ3TXYEuIpLfLbcEeeCBiX/MmybYdu4P2CuuSHDLLfmXvrzh\nhn/g7W9/F2eccRY7d27nrru+y403fo4vfenz9Pb20NLSzFvf+nauvPJtg69whlZce/Ob38qtt/4z\nu3fvYs6cufT29gLuHOpf+9q/k0zadHZ28KlPfYauri527XqZL3zhFm688XN84Qs38+1v/yd//vMf\nufPOb1FeHqKsLMz119/Myy/v5J577s5ayS3dt7/9dV544VkSiSSbNl3Cu9/9XrZt28rtt38F27Zp\naGjgppu+wL59Tfz7v38Z0zQJBIJcd90N2LbNddf9HVVV1bzyla/ivPMu4Ktf/TKO41BVVcX1199E\nLBbn5puvx3EcYrEYn/rU9UNz008Wzwa61kYXESk8V1zxFh555EHOOOMsHnroAd70prdw8OABLr30\ntVx88WZaWpr5+MevSQv04alVn3jitwwM9HPHHd+no6ODd77TXVO9qamJj3/8b1m+fCW/+tUveOih\nB7juuhtYtWo1//APn8XvH46yW2/9Et/85ndZs2YZ3/jGndx113e54IILc67klu7Xv36U22+/g7q6\nOh5++AEA/vVf/5nPfe6fWbx4KQ899L/s29fErbf+M5/5zI2sXLmKJ598nNtvv42Pf/xvaWtr43vf\nuwe/38+HP/w+brjhFpYsWcqDD97PPffczWmnbaCqqpp//Md/Yu/eJvr7J38ecw8H+kyXQESksN1y\ny8Corel83GlTe0/oe5577vl84xtfpauri5deeoG///tP09LSzH//94944onfEAqVk0wmc752//59\nnHrqWgCqq6tZssRdRa2+voHvf/+7BINB+vp6CYfLc76+o6ODcDhMfX09AKeffgZ33PENLrjgwjFX\ncrvpps/zzW/+B21trZx//gUAtLe3snjxUgDe+MY3AdDS0szKlasA2LDhTL71ra8BMH/+KUMHFvv3\n7+XLX/4S4C70smjRYs4//1UcOHCA66+/Fr/fz9VXf2BiP9hx8OSgOIBoVCPdRUQKjWmabN58KV/+\n8pfYuHEThmFw770/YP3607jxxs+zefOrcZzco5qXLl02tGJaV1cXBw7sB+CrX/0yH/jANdxwwy0s\nX75yaJU20xxe2Q3cg4De3l5aW1sAeOGF54aWPh1tJbd4PM5vf/tr/umf/pn/+I9v8cgjD3L06FHq\n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\nwH8BRGo186AML5sAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice the trend here, which is common for this type of plot.\n", "\n", "1. For a small model complexity, the training error and validation error are very similar. This indicates that the model is **under-fitting** the data: it doesn't have enough complexity to represent the data. Another way of putting it is that this is a **high-bias** model.\n", "\n", "2. As the model complexity grows, the training and validation scores diverge. This indicates that the model is **over-fitting** the data: it has so much flexibility, that it fits the noise rather than the underlying trend. Another way of putting it is that this is a **high-variance** model.\n", "\n", "3. Note that the training score (nearly) always improves with model complexity. This is because a more complicated model can fit the noise better, so the model improves. The validation data generally has a sweet spot, which here is around 5 terms.\n", "\n", "Here's our best-fit model according to the cross-validation:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "model = PolynomialRegression(4).fit(X, y)\n", "plt.scatter(X, y)\n", "plt.plot(X_test, model.predict(X_test));" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n8P8BlC629/W125QAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Detecting Data Sufficiency with Learning Curves\n", "\n", "As you might guess, the exact turning-point of the tradeoff between bias and variance is highly dependent on the number of training points used. Here we'll illustrate the use of *learning curves*, which display this property.\n", "\n", "The idea is to plot the mean-squared-error for the training and test set as a function of *Number of Training Points*" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.learning_curve import learning_curve\n", "\n", "def plot_learning_curve(degree=3):\n", " train_sizes = np.linspace(0.05, 1, 20)\n", " N_train, val_train, val_test = learning_curve(PolynomialRegression(degree),\n", " X, y, train_sizes, cv=5,\n", " scoring=rms_error)\n", " plot_with_err(N_train, val_train, 'r', label='training scores')\n", " plot_with_err(N_train, val_test, 'b', label='validation scores')\n", " plt.xlabel('Training Set Size'); plt.ylabel('rms error')\n", " plt.ylim(0, 3)\n", " plt.xlim(5, 80)\n", " plt.legend()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 27 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's see what the learning curves look like for a linear model:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot_learning_curve(1)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n17B+/Z85++wPkk6nef3r38D++x8w7nOPOeZY1q//M+ec8y+MjMQ59tjjaWpqYr/99uOccz5EU1OU\nnp55rF59YDF+lHvEKGczwWz86lexOS1oc7PHfvt5dTl3b73sbz3tK9TX/tbTvkJ97e/Eff3xj+/k\nda97A+3t7dx447cIhUK8//0fKmMJi6unp2VW11mrpj6FWMwgna6OAx4RkXrV2dnJpz99Do2NTTQ3\nN3PJJVeUu0hlpVCfQq4JftGicpdERESmctxxr+e4415f7mJUDHWUm4bGghcRkWqiUJ9GPG6QTpe7\nFCIiIoVRqE/D86Cvr9ylEBERKYxCfQYKdRERqRYK9RnEYqgJXkSkBD72sbPYuPGFKWdqO+OMU6d9\n/YMP/podO3awa9dOvvKVfy9VMauKer/PINcLvqdHl7eJSHW5/PII69YV92v+pJMyXH55sojvaMw4\nU9tU7rrrdlasWMHSpcs599wLilim6qVQL4BCXUSkMJdccj7vfOe7OeSQQ3nqqb9yyy03sXbt57jq\nqs8Tiw2zY0cvb3vbOznllHdkX+GNztT2T//0Nr70pX/jueeeYd68+cRiMcAfc/3667+G47jEYoN8\n8pOfYXBwkGeeeZorr7yctWs/x5VXXsZ3vvMf/O//PsyNN36bcDhMW1sbF110GU8//RS33XbrbjPA\n5fvOd77Bo4/+mUzG4bjjXsd73vM+nnzyCa677qu4rktPTw+XXnolL764ga997WpM0yQcjnDBBZfg\nui4XXPAp2traec1rjuaII47i2muvxvO8bBkuJZVKc9llF+F5HqlUivPOu2h0LPtiUqgXIB6HVArC\n4XKXRESkcJdfnixyrXpmJ530Vu677x4OOeRQ7r13HSef/FY2b97ECSf8I6997fHs2NHLRz96Vl6o\njw3D+tvf/ppkMsENN9xMf38/p53mz8m+YcMGPvrRT7Lvviv54x8f5N5713HBBZewatX+nH/+xQTz\n5sr+0peu4lvfuonu7m7uvPN2brnlJo466phJZ4DL96tf/YLrrruBrq4ufv7zdQB8+cv/xuc+928s\nXbqce+/9GS++uIEvfenfuPDCtaxcuYrf/e5BrrvuGj760U+ya9cuvve92wgGg3z4w+/nkksuZ9my\n5dxzz0+57bZbedWrDqKtrZ3PfvYKXnhhA4nESEl+/gr1AvX3G8ybp9q6iMh0Xv3qI/nmN69lcHCQ\n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\nO8ZGgOtPAJXZGbGnp4Xe3qFyF2PO1NP+1tO+Qn3tbz3tK8z+AKZcof4UsMqyrA4ght/0/uUylWV6\nrahYd+gAAA2XSURBVK24y1fgZjIYfdnm+cRIuUtVMbxwZCzIGxvLXRwRkbo2V6HuAViW9W6g2bbt\nGy3L+jTwC/zOejfZtr1tjsqyZ4JBvJ4enJ4eiMf9cO/rq8sJY7xgaCzIo/V1akJEpJKVPNRt234B\nOCr7+Ad5y+8B7in155dEUxNuUxMs3qduOtd5gSBeWxteR4fGYxcRqVDqirw3DMOfDa6jE1IpP9x3\n7cJIp8pdsqLwzABea6sf5C2tYBjlLpKIiExDoV4s4TDugoWwYCHG0CDGzp3V2bnONHFbszXy1jaN\nwy4iUkUU6iXgtbTitbTiOg7Grl2V37nOMPCam/1z5CuX4O6a4ysNRESkKBTqpRQIVG7nOsPAa4ri\ntk8YFCZQ4rEARESkZBTqc2VvO9cZBp5h+ue1TdO/jT42xtbnL8/b1iPvdabhd3ar4EFhRERk9hTq\nc21C5zojMTI+dCcNbZ3XFhGRmSnUyykcxtMc4iIiUiSqAoqIiNQIhbqIiEiNUKiLiIjUCIW6iIhI\njVCoi4iI1AiFuoiISI1QqIuIiNQIhbqIiEiNUKiLiIjUCIW6iIhIjVCoi4iI1AiFuoiISI1QqIuI\niNQIhbqIiEiNUKiLiIjUCIW6iIhIjVCoi4iI1AiFuoiISI1QqIuIiNQIhbqIiEiNUKiLiIjUCIW6\niIhIjVCoi4iI1AiFuoiISI1QqIuIiNQIhbqIiEiNUKiLiIjUCIW6iIhIjVCoi4iI1AiFuoiISI1Q\nqIuIiNQIhbqIiEiNUKiLiIjUCIW6iIhIjVCoi4iI1AiFuoiISI0IluqNLcsygW8CBwFJ4EO2bT+X\nt/5TwJlAb3bRWbZtP12q8oiIiNS6koU6cAoQtm37KMuyjgC+kl2Wcyhwum3b60tYBhERkbpRyub3\no4H7AWzb/iPwdxPWHwZcbFnWQ5ZlXVjCcoiIiNSFUoZ6KzCY99zJNsnn/AA4C3gdcIxlWW8uYVlE\nRERqXimb3weBlrznpm3bbt7za23bHgSwLOteYA1w71Rv1tHRRDAYKElBZ9LT0zLzRjWknva3nvYV\n6mt/62lfob72t572dbZKGeq/B04C7rQs60jg8dwKy7LagMcty1oNxPFr6zdN92Z9ffESFnVqPT0t\n9PYOleWzy6Ge9ree9hXqa3/raV+hvva3nvYVZn8AU8pQ/wnwBsuyfp99/gHLst4NNNu2fWP2PPqv\n8XvG/8q27ftLWBYREZGaV7JQt23bA/51wuKn89b/AP+8uoiIiBSBBp8RERGpEQp1ERGRGqFQFxER\nqREKdRERkRqhUBcREakRCnUREZEaoVAXERGpEQp1ERGRGqFQFxERqREKdRERkRqhUBcREakRCnUR\nEZEaoVAXERGpEQp1ERGRGqFQFxERqREKdRERkRqhUBcREakRCnUREZEaoVAXERGpEQp1ERGRGqFQ\nFxERqREKdRERkRqhUBcREakRCnUREZEaoVAXERGpEQp1ERGRGqFQFxERqREKdRERkRqhUBcREakR\nCnUREZEaoVAXERGpEQp1ERGRGqFQFxERqREKdRERkRqhUBcREakRCnUREZEaoVAXERGpEQp1ERGR\nGqFQFxERqREKdRERkRqhUBcREakRCnUREZEaoVAXERGpEcFSvbFlWSbwTeAgIAl8yLbt5/LWnwSs\nBTLA92zb/m6pyiIiIlIPSllTPwUI27Z9FHAh8JXcCsuyQsBXgTcArwU+bFnWvBKWRUREpOaVMtSP\nBu4HsG37j8Df5a17BfCsbdsDtm2ngd8Bx5awLCIiIjWvlKHeCgzmPXeyTfK5dQN564aAthKWRURE\npOaV7Jw6fqC35D03bdt2s48HJqxrAfqme7OenhajuMUrXE9Py8wb1ZB62t962leor/2tp32F+trf\netrX2SplTf33wJsALMs6Eng8b91TwCrr/7d37zF6VHUYx7/lWiiIxZgasakS5DGAIi2mVrGAlotJ\niUkjMdgArcRLwAqkhktTUFCB2CCX0EAplG0TNAZsCkQKNS2CILdy84ZPAYPGBA1VG0OtULbrH+e8\n9GVZFgpZt5x9Pslm35l3Zt7z23d2fjNnzpwjjZW0C6Xq/f4hLEtERETzRvX19Q3JhiWNYmvrd4DZ\nwCRgD9uLJU0HzqecWFxv++ohKUhERMQIMWRJPSIiIv6/0vlMREREI5LUIyIiGpGkHhER0Ygk9YiI\niEYM5XPq70iSJgOX2D5S0n5AD7AF+B1wmu1mWhbW7nqXABOAXYHvA0/SYMySdgQWA/sDfcA3KGMS\n9NBYrB216+VHgM9RYuyh3VgfZWuHVn8CLqbteM8FjgN2Bq6iPELcQ2PxSjoZmFUndwMOBg4DrqCx\n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\n", "text": [ "" ] } ], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This shows a typical learning curve: for very few training points, there is a large separation between the training and test error, which indicates **over-fitting**. Given the same model, for a large number of training points, the training and testing errors converge, which indicates potential **under-fitting**.\n", "\n", "As you add more data points, the training error will never increase, and the testing error will never decrease (why do you think this is?)\n", "\n", "It is easy to see that, in this plot, if you'd like to reduce the MSE down to the nominal value of 1.0 (which is the magnitude of the scatter we put in when constructing the data), then adding more samples will *never* get you there. For $d=1$, the two curves have converged and cannot move lower. What about for a larger value of $d$?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot_learning_curve(3)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nlQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 29 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we see that by adding more model complexity, we've managed to lower the level of convergence to an rms error of 1.0!\n", "\n", "What if we get even more complex?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot_learning_curve(10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAfUAAAFkCAYAAAA5cqL3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmYHFWh/vFvVW+zL8lMdrKwpMKikIBAWBNEBQEFXK5e\nBL2C4HVBNtkiEBAEEUUE5ALiFQT1p0hQCNtVEGQxIouIQLFlXyeZfeulqn5/VM9MTzKZ6Znpdeb9\nPE8/013VXX2qZ6bfOqdOnWN4noeIiIgUPzPfBRAREZHMUKiLiIiMEQp1ERGRMUKhLiIiMkYo1EVE\nRMYIhbqIiMgYEczWhi3LCgB3AnMBD/iqbdv/Tll/AnAZkAB+btv2z7JVFhERkfEgmzX14wHXtu3D\ngO8A1/SssCwrBPwI+AhwJHCmZVmTslgWERGRMS9roW7b9h+As5IPZwNNKav3BN61bbvFtu048Cxw\nRLbKIiIiMh5krfkdwLZtx7KsXwAnAZ9OWVUFtKQ8bgOqs1kWERGRsS7rHeVs2/4S/nn1Oy3LKk0u\nbgEqU55WSf+a/A4SCcfDPzevWxHerrwSzzDwHn88/2XRTTfddCui27Bks6PcqcAM27avBboAl74C\nvgXsYVlWLdCB3/T+g8G219TUma2iDqq+vpKGhra8vHc+ZGt/OzrCQITm5k4aGpyMb38k9Lsdu8bT\nvsL42t/xtK/g7+9wZLOmfj+wn2VZTwOPAd8CTrIs6yvJ8+jnAY8DzwN32ba9MYtlERERGfOyVlO3\nbbsL+I9B1j8MPJyt9xcRERlvNPiM5IRh5LsEIiJjn0JdRERkjFCoi4iIjBEKdckpb9gXaIiISLoU\n6pITpv7SRESyTl+1IiIiY4RCXXJKze8iY1ssFuPhhx9M+/mPPvowzz77zE7X33vvL3jzzX/vdL30\nl9Wx30V66JI2kdwrX/odIg+lH7DpiJ5wIh1Lr97p+m3btvLQQ3/g+ONPTGt7xx57/KDrv/CFLw2n\neOOeQl1ERDLmnnt+zqpV7/OLX/wM13X517/+SXd3FxdffDmPPvowtv0mLS0t7L77Hlx66RXcddft\nTJxYx6xZs7n33rsJh0Ns2LCeD3/4o5x22pe55pqlHH30x9i2bSsvvPAc4LBy5SpOOeWLHHvs8bzx\nxuvceOP1lJWVU1NTSyQS4dJLr+gtz5o1q7n22isJBIJ4nscVV1xNff0kbrzxet588w0SiTinn34W\nhx12JDfffCP/+tc/AfjIR47hM5/5HNdcs5TW1hZaW1u5/vofc999d/Paa6/iui7/8R//yeLFR/PA\nA7/jsceWY5om8+btxTnnXJCnT1+hLiIyZnUsvXrQWnU2fPGLp/P+++/xpS+dwc9/fgdz5uzK2Wef\nT2dnB1VVVdx44624rstpp/0HW7c2YKQ0423evIl77vkNsViME088htNO+3LvesMw6Ojo4Je//AWv\nvPIGF110Lsceezw33HAtl19+NbNnz+GOO37K1q0N/crzj3/8nb32+gD//d/f5LXXXqW9vZ0333yD\nlpYW7rzzbtra2vh//+8+TDPApk0buOOOX5BIJPja185g//0PwDAM9t//QD772c/zwgvPsXHjBn76\n058RjUb56lf/iw996GAeffQhzj//EubN25MHH7wfx3EIBAI5/dx7KNQlp3ROXWRs87b7J99ll1kA\nhMMRmpqaWLp0CaWlZXR2dpJIJPo9d7fddsM0TUpKSohEIjtse4895gJQXz+JWCwG+M39s2fPAWDf\nfefz5z8/0e81xx//Se67727OP/9sKirKOeusr7N27Wr22eeDAFRWVnLGGV/lV7/6JfvuOx+AYDDI\n3nt/gJUrVwIwc6a/D++//y62/Rbf/OZZADiOw8aNG7jkkiv4zW/uZcOG9eyzzwd3+AxySR3lJCcM\nQ2kuMh4YhonruoAf8D017b/97Tm2bNnE0qXXcOaZXyMWiw4QfoN3vjEG6JwzadJkVq3yw/f111/b\nYf1f//o0++47n5tu+imLFn2Ye++9m9mz5/DWW37nu/b2di644Gxmz57Da6+9CkAikeD11//JLrvs\n0u99Z82aw4IF+3Pzzbdz4423snjx0UyfPoOHHnqQCy64hFtuuYO337b597//leanlXmqqYuISMZM\nmDCBRCLObbfdTCQS6Q3Evfbah7vvvouzz/4qEyZMZK+99ultKk9tYu+zY4APtP788y/m2muvorS0\nlFAoRF3dpH6vmTdvT665ZimhUAjHcfjWt85njz0s/vGPv/O1r52B4zh8+ctnctBBC3nllZf46le/\nTDwe58Mf/ghz587r976HHXYEr7zyEl//+lfo6urkiCMWU1ZWxm677cbXv34GZWXl1NdPYq+99snE\nRzkiRj6bCYajoaEtLwUdj3P3ZmN/f/zjEN/7Xgn33tvJRz+q+dTzYTzt73jaVxhf+7v9vj7wwO84\n6qiPUFNTw5133kYoFOJLXzojjyXMrPr6ymFdO6SauuSELmkTkWyYMGEC5533dUpLy6ioqGDJkivz\nXaS8UqiLiEjRWrTowyxa9OF8F6NgqKOciIjIGKFQl5wqki4cIiJFSaEuOaFz6iIi2adQl5xQqIuI\nZJ9CXURE8uKb3zyLNWtW7XSmttNO+49BX//000+xdetWGhu38cMffj9bxSwq6v0uOaVz6iK5s3Rp\nhIceyuzX/AknJFi6NJrBLRpDztS2M/ff/xvmzJnDzJmzOf/8izJYpuKlUJecUPO7yPiwZMm3+cxn\nPs9++y3grbfe4O677+Kyy67i2mu/S0dHO1u3NnDyyZ/hxBM/nXyF1ztT2yc/eTLXX/893nvvHSZN\nmkxHRwfgj7l+yy0/xnFcOjpaOeecC2ltbeWdd97m6quXctllV3H11Vdw++3/y4sv/o077/wfwuEw\n1dXVXHLJFbz99lvcd989O8wAl+r222/l1VdfIpFwWLToKE455Yv8+9+vc/PNP8J1Xerr67n88qtZ\nvXolP/7xDZimSTgc4aKLluC6LhdddC7V1TUsXHgoBx10CDfddAOe5yXLcDmxWJwrrrgEz/OIxWJc\ncMElvWPZZ5JCXURkjFq6NJrhWvXQTjjhJB599GH2228By5c/xCc+cRLr1q3l6KM/xpFHLmbr1ga+\n8Y2zUkK9bxjWZ555imi0mzvu+AXNzc187nP+nOwrV67kG984h1133Z0VK55m+fKHuOiiJeyxx1y+\n/e1LCQb7ouz666/lttvuoq6ujt/97jfcffddHHLIYQPOAJfqT396nJtvvoOJEyfyyCMPAfCDH3yP\nq676HjNnzmb58j+yevVKrr/+e1x88WXsvvsePPvs09x884184xvn0NjYyM9/fh/BYJAzz/wSS5Ys\nZdas2Tz88B+47757+MAHPkh1dQ3f+c6VrFq1ku7urqx8/gp1ySnPU5VdZCw78MCD+elPb6K1tZXX\nXnuV8867kK1bG/jtb3/NM888SVlZBY4z8FDRa9asZt68vQCoqalh1ix/9rW6unp+8Yu7iEQiOE6M\nYHDHGdwAmpubKS8vp66uDoB9992PO+74KYccctiQM8Bdfvl3ue22n9DYuI2DDz4EgKambcycORuA\n4477BABbtzaw++57APDBD87nf/7nFgCmTp3We3CxZs0qbrjhWsCfHGaXXWZy8MGHsnbtWi655HyC\n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\nQmCC\n", "text": [ "" ] } ], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "For an even more complex model, we still converge, but the convergence only happens for *large* amounts of training data.\n", "\n", "So we see the following:\n", "\n", "- you can **cause the lines to converge** by adding more points or by simplifying the model.\n", "- you can **bring the convergence error down** only by increasing the complexity of the model.\n", "\n", "Thus these curves can give you hints about how you might improve a sub-optimal model. If the curves are already close together, you need more model complexity. If the curves are far apart, you might also improve the model by adding more data.\n", "\n", "To make this more concrete, imagine some telescope data in which the results are not robust enough. You must think about whether to spend your valuable telescope time observing *more objects* to get a larger training set, or *more attributes of each object* in order to improve the model. The answer to this question has real consequences, and can be addressed using these metrics." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summary\n", "\n", "We've gone over several useful tools for model validation\n", "\n", "- The **Training Score** shows how well a model fits the data it was trained on. This is not a good indication of model effectiveness\n", "- The **Validation Score** shows how well a model fits hold-out data. The most effective method is some form of cross-validation, where multiple hold-out sets are used.\n", "- **Validation Curves** are a plot of validation score and training score as a function of **model complexity**:\n", " + when the two curves are close, it indicates *underfitting*\n", " + when the two curves are separated, it indicates *overfitting*\n", " + the \"sweet spot\" is in the middle\n", "- **Learning Curves** are a plot of the validation score and training score as a function of **Number of training samples**\n", " + when the curves are close, it indicates *underfitting*, and adding more data will not generally improve the estimator.\n", " + when the curves are far apart, it indicates *overfitting*, and adding more data may increase the effectiveness of the model.\n", " \n", "These tools are powerful means of evaluating your model on your data." ] } ], "metadata": {} } ] }