{ "metadata": { "name": "06A_validation_and_testing" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "import numpy as np\n", "import pylab as pl" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n", "For more information, type 'help(pylab)'.\n" ] } ], "prompt_number": 0 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Parameter selection, Validation & Testing" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Hyperparameters, Over-fitting, and Under-fitting" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*The content in this section is adapted from Andrew Ng's excellent\n", "Coursera course, available here:* https://www.coursera.org/course/ml" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "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": "heading", "level": 3, "metadata": {}, "source": [ "Bias-variance trade-off: illustration on a simple regression problem" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "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 consider the situation where we have only 2 data points:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "X = np.c_[ .5, 1].T\n", "y = [.5, 1]\n", "X_test = np.c_[ 0, 2].T" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "X" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 4, "text": [ "array([[ 0.5],\n", " [ 1. ]])" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "y" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 5, "text": [ "[0.5, 1]" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "X_test" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 6, "text": [ "array([[0],\n", " [2]])" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn import linear_model\n", "regr = linear_model.LinearRegression()\n", "\n", "regr.fit(X, y)\n", "pl.plot(X, y, 'o')\n", "pl.plot(X_test, regr.predict(X_test)) " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "/usr/local/lib/python2.7/site-packages/scikits/__init__.py:1: UserWarning: Module argparse was already imported from /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/argparse.pyc, but /usr/local/lib/python2.7/site-packages is being added to sys.path\n", " __import__('pkg_resources').declare_namespace(__name__)\n" ] }, { "output_type": "pyout", "prompt_number": 7, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\nyXNEuVPrALAwti53ah0AUmPbcqfWASB1tit3ah0A0mercqfWAcActih3ah0AzGV5uVPrAGA+y8qd\nWgeAzElY7v39/Xrttde0atUqffLJJzHH7NmzR6tWrVJlZaWGh4cTvim1nr5QKGT1FFyDa2kurqc9\nxF3cZ2ZmtHv3bvX39+v69es6ffq0vvvuuzljent7dfPmTY2OjuqLL75QW1vbM883NT2ltp42NX3V\npKP1R3V8y3Hl5+ab82/iMfwHZB6upbm4nvYQd3EfGhpSaWmpSkpKtHjxYm3fvl3nz5+fM6a7u1tN\nTU2SpJqaGj148ECTk5Mxz0etA0B2xF3cJyYmVFxcPPu6qKhIExMTCceMj4/HPB+1DgDZEfcHqj6f\nL6mTGIaR1D+36ZVNSU4Lyejo6LB6Cq7BtTQX19N6cRf3QCCgcDg8+zocDquoqCjumPHxcQUCgXnn\nevovAABA5sTdllm3bp1GR0c1Njamx48f6+zZs2poaJgzpqGhQSdPnpQkDQ4OKj8/X4WFhZmbMQAg\nobjlnpOTo87OTm3cuFEzMzNqaWlRWVmZjh07JklqbW1VfX29ent7VVpaqiVLlujEiRNZmTgAIA7D\nZH19fcarr75qlJaWGh9//HHMMe3t7UZpaalRUVFhXLt2zewpuEaia3nhwgXj+eefN6qqqoyqqirj\nww8/tGCWztDc3GwUFBQYa9aseeYY7svkJbqe3JvJu3PnjhEMBo3y8nJj9erVxuHDh2OOW+j9aeri\n/uTJE2PlypXG7du3jcePHxuVlZXG9evX54zp6ekx6urqDMMwjMHBQaOmpsbMKbhGMtfywoULxubN\nmy2aobNcunTJuHbt2jMXI+7LhUl0Pbk3k/f9998bw8PDhmEYxtTUlPHKK6+Ysm6a+tkyZj8X72XJ\nXEuJH1Qna/369Vq2bNkzj3NfLkyi6ylxbyZrxYoVqqqqkiTl5eWprKxMd+/enTMmlfvT1MXd7Ofi\nvSyZa+nz+XTlyhVVVlaqvr5e169fz/Y0XYP70lzcm6kZGxvT8PCwampq5nw/lfvT1A8OM/u5eC9L\n5pqsXbtW4XBYfr9ffX19amxs1I0bN7IwO3fivjQP9+bCPXz4UNu2bdPhw4eVl5c37/hC709Ty93M\n5+K9LplruXTpUvn9fklSXV2dIpGI7t+/n9V5ugX3pbm4NxcmEolo69at2rlzpxobG+cdT+X+NHVx\n57l48yRzLScnJ2f/Nh8aGpJhGFq+fLkV03U87ktzcW8mzzAMtbS0qLy8XPv27Ys5JpX709RtGZ6L\nN08y1/LcuXPq6upSTk6O/H6/zpw5Y/Gs7WvHjh26ePGi7t27p+LiYnV0dCgSiUjivkxFouvJvZm8\ny5cv69SpU6qoqFB1dbUk6eDBg7pz546k1O9Pn8GPtAHAdSz/3+wBAMzH4g4ALsTiDgAuxOIOAC7E\n4g4ALsTiDgAu9P/ymYyv7CczFgAAAABJRU5ErkJggg==\n" } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In real life situation, we have noise (e.g. measurement noise) in our data:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "np.random.seed(0)\n", "for _ in range(6):\n", " noise = np.random.normal(loc=0, scale=.1, size=X.shape)\n", " noisy_X = X + noise\n", " pl.plot(noisy_X, y, 'o') \n", " regr.fit(noisy_X, y)\n", " pl.plot(X_test, regr.predict(X_test))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, our linear model captures and amplifies the noise in the data. It displays a lot of variance.\n", "\n", "We can use another linear estimator that uses regularization, the `Ridge` estimator. This estimator regularizes the coefficients by shrinking them to zero, under the assumption that very high correlations are often spurious. The alpha parameter controls the amount of shrinkage used." ] }, { "cell_type": "code", "collapsed": false, "input": [ "regr = linear_model.Ridge(alpha=.1)\n", "np.random.seed(0)\n", "for _ in range(6):\n", " noise = np.random.normal(loc=0, scale=.1, size=X.shape)\n", " noisy_X = X + noise\n", " pl.plot(noisy_X, y, 'o') \n", " regr.fit(noisy_X, y)\n", " pl.plot(X_test, regr.predict(X_test))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, the estimator displays much less variance. However it systematically under-estimates the coefficient. It displays a biased behavior.\n", "\n", "This is a typical example of bias/variance tradeof: non-regularized estimator are not biased, but they can display a lot of bias. Highly-regularized models have little variance, but high bias. This bias is not necessarily a bad thing: it practice what matters is choosing the tradeoff between bias and variance that leads to the best prediction performance. For a specific dataset there is a sweet spot corresponding to the highest complexity that the data can support, depending on the amount of noise and of observations available." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Learning Curves and the Bias/Variance Tradeoff" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One way to address this issue is to use what are often called **Learning Curves**.\n", "Given a particular dataset and a model we'd like to fit (e.g. a polynomial), we'd\n", "like to tune our value of the *hyperparameter* `d` to give us the best fit.\n", "\n", "We'll imagine we have a simple regression problem: given the size of a house, we'd\n", "like to predict how much it's worth. We'll fit it with our polynomial regression\n", "model.\n", "\n", "Run the following code to see an example plot:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from figures import plot_bias_variance\n", "plot_bias_variance(8, random_seed=42)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAnEAAADaCAYAAADJyRQ8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VEX3wPHvhiRAgNB7CSVSBQQRaUoHQRBFekcR4UUB\nFaVI/Yn4wouAShckSBcMqEgREnpTQESB0EPvPSSkzu+PMUtCQhLI7t67u+fzPHlgS+49u7l379mZ\nMzMWpZRCCCGEEEI4FQ+jAxBCCCGEEE9OkjghhBBCCCckSZwQQgghhBOSJE4IIYQQwglJEieEEEII\n4YQkiRNCCCGEcEJOl8T16NGDESNGGB0GHTt25KeffrLLtosXL05QUJDNttezZ09y5cpFjRo12L59\nO2XLln3qbW3evJmiRYs+9vG+ffsyduzYNG3rSf6WoaGheHh4EBcXl+zjX3zxBe+8806atvU4Bw8e\npHbt2unahjCeWT4jhHHMcgzY8zrxJHbs2MEzzzyDr68vP/30E82bN+f7779/6u3Vq1ePuXPnJvvY\n2bNnyZYtG2mZvSy1z3V7y5YtG6GhoYbsG2DQoEHMnDkzXdtwuiTOYrFgsVhsus1//vmHpk2bkjdv\nXjw8Un9LDh48yMGDB2nVqpVN44hny9e4bds2Nm7cyMWLF9m9ezd16tQhJCTE+njx4sUJDg62yb4A\nZsyYwfDhw9P0XFu+zqFDh/Ltt9+maxuVKlUiR44crF692iYxCWPY4zNi/vz5VKtWjezZs1O0aFEG\nDx5MbGysTfchbMcexwDAqVOnaNGiBb6+vuTNm5fBgwc/9rn2vk48iZEjR9K/f3/u3r1Lq1atWLNm\nDd26dQMgICCAl1566Ym2l9L7W6xYMe7du2eX99/W7t27R/HixQ3b/6BBgxg3bhzR0dFPvQ2nS+KA\nNGX4T8Lb25sOHTo89pvFo2bNmkWXLl1sGoMtxMTEJLnvzJkzFC9enEyZMiX7OxaLxebvpzPr3Lkz\ns2bNMjoMkU62PqYjIiL46quvuHHjBnv27CEoKIiJEyfadB/Ctmx9DERFRdG4cWMaNWrElStXuHDh\nQorXAaOuE8m1ap09e5by5cs7PBazSu5aaYQCBQpQtmxZfv7556fehumTuD///JOqVavi6+tLhw4d\nePDggc33Ubp0aXr27Jnmg3zdunXUrVvXenv06NF07drVevvRJuJ69eoxcuRI6tSpg6+vL02bNuXG\njRvW5y9YsAA/Pz/y5MnDuHHjEu1LKcV///tf/P39yZMnD+3bt+fWrVuJ9vPdd9/h5+dHo0aNEv3u\n3Llzeeedd9i1axfZsmVjzJgxibpDu3btytmzZ2nZsiXZsmWzXpQqV67M0qVLU3wPJk2aRP78+SlU\nqBABAQHW+x/txpgwYQKFChWiSJEizJkzBw8PD06dOmV9/ObNm9ZvtjVq1Ej0WHLmzp1L4cKFKVSo\nEF9++aX1/kf/Bm3btqVgwYLkyJGDunXrcvjwYetja9asoUKFCvj6+lKkSJFE26lbty5BQUHp+mYk\nHMsRnxF9+vShdu3aeHp6UqhQITp37syOHTtsvh/xdBxxDAQEBFCkSBEGDhxI5syZ8fb2pmLFio99\n/qPXCaUUY8eOpXjx4uTPn5/u3btz9+5dAJo1a8a0adMS/X7lypVZtWoVACEhITRu3JjcuXNTtmxZ\nli9fbn1ejx496Nu3L82bNydr1qxs3rw50XZKlSrFqVOnaNmyJb6+vkRFRVm7Q0NCQujTp4/1GpEr\nVy4AFi9eTOXKlVN8P0JDQ5O9pj16/Tt9+jQvv/wyvr6+NG7cmH79+iX6rAZYuHAhfn5+5M2bN8k1\nMN6ePXsoWLBgouR85cqV1jh///13atasSc6cOSlUqBDvv/9+os9xDw8Ppk+fzjPPPEOZMmWs98Vf\nc3799VeqVKlC9uzZKVasGGPGjEn0Wj08PPj++++TjTMuLo5x48bh7++Pr68v1apV4/z586n+7UDn\nB7/++muK73WKlIlFRkaqYsWKqSlTpqiYmBi1YsUK5eXlpUaMGJHs87dt26Zy5Mjx2J8dO3akuL/j\nx48ri8WS4nPCwsKUxWJR169ft943evRo1aVLF+vt06dPK4vFomJjY5VSStWtW1f5+/ur48ePq4iI\nCFWvXj01ZMgQpZRShw4dUlmzZlXbtm1TkZGR6sMPP1Senp4qKChIKaXUlClTVM2aNdWFCxdUVFSU\nevfdd1XHjh0T7ad79+4qPDxcPXjwIEm8AQEBqk6dOtbbmzZtUkWKFLHeLl68uHVfabFp0ybl6emp\nRo0apWJiYtSaNWuUj4+Pun37tlJKqR49elj/PmvXrlUFChRQhw8fVuHh4apz587KYrGokydPKqWU\n6t69u8qdO7f6448/VExMjOrcubPq0KFDsvuNf62dOnVS4eHh6u+//1Z58+ZVGzduTPZvMG/ePBUW\nFqaioqLUwIED1XPPPWd9rECBAmr79u1KKaVu376t9u/fn2hfvr6+6u+//07zeyKM4+jPiHitWrVS\nQ4cOteVLEU/JUcdAz549VdeuXVWzZs1Unjx5VL169R77OZHcdWLu3LnK399fnT59WoWFhanWrVur\nrl27KqWU+v7771Xt2rWtzz106JDKkSOHioqKUmFhYapIkSIqICBAxcbGqj///FPlyZNHHT58WCml\nP0ezZ8+udu7cqZRSyV4HHv2cr1evnpo7d65SKuk1Ii3q1q2rSpUqlew17dHrX40aNdTHH3+soqOj\n1fbt25Wvr6/1dcc/t3fv3urBgwfqr7/+UhkzZlRHjhxJdr+lSpVSGzZssN5u06aNGj9+vFJKqX37\n9qk9e/ao2NhYFRoaqsqVK6emTJlifa7FYlFNmjRRt27dsr5HCa9HmzdvVv/8849SSqmDBw+q/Pnz\nq1WrVqUYZ0hIiFJKqQkTJqiKFSuqY8eOWX//xo0bqf7tlFLqxx9/VFWrVn2i9z8hUydxW7ZsUYUK\nFUp0X61atR57cqZXWpK48+fPK4vFoiIjI633jRo1KsUkrl69eurzzz+3Pj59+nT1yiuvKKWUGjNm\njDUpU0qp+/fvK29vb+sJV65cuUQn38WLF5WXl5eKjY217uf06dOPjXfevHk2T+IyZ85sfW1KKZUv\nXz61Z88epVTiJK5nz55q2LBh1uedOHEi0UnTo0cP9c4771gfX7NmjSpbtmyy+41/rUePHrXe98kn\nn6i3335bKZX0b5DQrVu3lMViUXfv3lVKKVWsWDE1a9YsdefOnWSfX7hwYbVt27aU3whhCo7+jFBK\nX4yLFi2qbty4Ybd9iLRz1DHQuHFj5eXlpdatW6eio6PV//73P1WyZEkVFRWV5LnJXScaNGigZsyY\nYb199OhR62f53bt3VZYsWdTZs2eVUkoNGzbM+tm2dOlS9dJLLyXafu/evdWYMWOUUjqJ6969e4qx\np5TEPXqNSIuUrmkJr39nzpxRnp6eKiIiwvrcLl26WD+r45974cIF6+PVq1dXS5cuTXa/w4cPV2+9\n9ZZSSiV5zx41efJk9cYbb1hvWywWtWnTpkTPSXg9etSAAQPUBx98kGKcy5YtU0opVbp0afXzzz8n\n2UZqfzullPrtt99UyZIlk40hLUzdnXrx4kUKFy6c6D4/Pz9Da7hy5MgB6ILIJ1GgQAHr/zNnzkxY\n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\nVnoAw4IFxhSO25qnp55fbudOmDcPWrbUI1rdUcaMrpPEXbsmLXFmYJbBdXKJFKYxcyZ06QLLl0OP\nHkZHI9zB5cu6237XLj2FTZs2Rkdke6VL60SuUiU9z9ymTUZH5Hiu1hJnVE2cJHHmI0mcMFxMjJ7/\n6quv9AjAl1+2zXbPnTtHZDKFMLGxsYSGhtpmJ8Jpbd+ul8V6+WVYuxYKFjQ6Ivvx9tatjN9/r6ci\nmTz5YZdQaGgosbGxSX4nMjKSc+fOOThS+5AkLv0yZND/xsU5ft9mcOrUKVQy/ahhYWFcvnzZgIg0\nSeKEoe7c0d08R47o1pBSpWy37fHjx9OmTZtEiVxsbCzdu3dn6NChttuRcDqzZsGbb+opRMaMeXiB\ncnWNGumlvBYs0K3e4eEwdOhQunfvniiRi4yMpE2bNowfP97AaG1HkjjbcOcu1T59+tC/f/9EiVxY\nWBivvvoqM2bMMCwuSeKEYU6f1kXXJUroaRxsvYzM5MmT8fb2tiZy8QnclStXmDt3rm13JpxCXBwM\nGgSTJulW3+bNjY7I8YoX16/dwwPq1YMvvpjLlStXrIlcfALn7e3N5MmTjQ7XJlwtiTNiYAO49+CG\n5cuX8/vvv9O/f39AERn5gFdffRV/f39GjRplWFwWlVz7oC02bLEk2/QoBOiLSJs2MGyYnsjXXkWi\n0dHRdOjQgYiICLJmzcqtW7f46aef8PHxsc8OE0jLOSDnieOEh+vWpxs39LJVrjB4IT2UgtGjYeFC\nCAyMYNCg18iZMydhYWFkzpyZpUuX4uXlZdcY0nr8p/c8OX9ej3Y/f/6pN2EauXPraWOMaI3Lnh3O\nnHH8uq1mcefOHZo0acKtWxOBnbz00jG+/fZbPOw8Ai+l41+SOOFwCxfChx/qiVSbNbP//h48eEDm\nzJkBuHXrFjkc9AkkSZx53Lyp53575hn49ls9WlFoc+fCp5/C/Pn3eOUVXwAiIiLI5IDFiR2VxMWv\nM+vso3NjYvSa0ZGRxpQA5Mmjp4AyqjvXDC5cuECRIuuB7cTEfEsGB/whUjr+pTvVxcTFxdGtWzeO\nJbMi9vTp0wkICHB8UP+Ki9NTh4wYAcHBjkngYmNj6dWrF3Xr1qVZs2Z07do12cEOwnVduQL16+uu\n+/nz46ebiKJjx47JFu6PGzeOn376yYBIjfH22zB7dhSvvRbHCy8Mo27duvTq1SvZwQ7OylW6U2/d\n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\n" } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the above figure, we see fits for three different values of `d`.\n", "For `d = 1`, the data is under-fit. This means that the model is too\n", "simplistic: no straight line will ever be a good fit to this data. In\n", "this case, we say that the model suffers from high bias. The model\n", "itself is biased, and this will be reflected in the fact that the data\n", "is poorly fit. At the other extreme, for `d = 6` the data is over-fit.\n", "This means that the model has too many free parameters (6 in this case)\n", "which can be adjusted to perfectly fit the training data. If we add a\n", "new point to this plot, though, chances are it will be very far from\n", "the curve representing the degree-6 fit. In this case, we say that the\n", "model suffers from high variance. The reason for the term \"high variance\" is that if\n", "any of the input points are varied slightly, it could result in a very different model.\n", "\n", "In the middle, for `d = 2`, we have found a good mid-point. It fits\n", "the data fairly well, and does not suffer from the bias and variance\n", "problems seen in the figures on either side. What we would like is a\n", "way to quantitatively identify bias and variance, and optimize the\n", "metaparameters (in this case, the polynomial degree d) in order to\n", "determine the best algorithm. This can be done through a process\n", "called *validation*." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Validation Curves" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll create a dataset like in the example above, and use this to test our\n", "validation scheme. First we'll define some utility routines:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def test_func(x, err=0.5):\n", " return np.random.normal(10 - 1. / (x + 0.1), err)\n", "\n", "def compute_error(x, y, p):\n", " yfit = np.polyval(p, x)\n", " return np.sqrt(np.mean((y - yfit) ** 2))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.cross_validation import train_test_split\n", "\n", "N = 200\n", "test_size = 0.4\n", "error = 1.0\n", "\n", "# randomly sample the data\n", "np.random.seed(1)\n", "x = np.random.random(N)\n", "y = test_func(x, error)\n", "\n", "# split into training, validation, and testing sets.\n", "xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=test_size)\n", "\n", "# show the training and validation sets\n", "plt.scatter(xtrain, ytrain, color='red')\n", "plt.scatter(xtest, ytest, color='blue')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 12, "text": [ "" ] }, { "output_type": "display_data", "png": "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\ns2CDG6ovHwAAAABJRU5ErkJggg==\n" } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to quantify the effects of bias and variance and construct\n", "the best possible estimator, we will split our training data into\n", "a *training set* and a *validation set*. As a general rule, the\n", "training set should be about 60% of the samples.\n", "\n", "The overarching idea is as follows. The model parameters (in our case,\n", "the coefficients of the polynomials) are learned using the training\n", "set as above. The error is evaluated on the validation set,\n", "and the meta-parameters (in our case, the degree of the polynomial)\n", "are adjusted so that this validation error is minimized.\n", "Finally, the labels are predicted for the test set. These labels\n", "are used to evaluate how well the algorithm can be expected to\n", "perform on unlabeled data.\n", "\n", "The validation error of our polynomial classifier can be visualized\n", "by plotting the error as a function of the polynomial degree d. We can do\n", "this as follows:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# suppress warnings from Polyfit\n", "import warnings\n", "warnings.filterwarnings('ignore', message='Polyfit*')\n", "\n", "degrees = np.arange(21)\n", "train_err = np.zeros(len(degrees))\n", "validation_err = np.zeros(len(degrees))\n", "\n", "for i, d in enumerate(degrees):\n", " p = np.polyfit(xtrain, ytrain, d)\n", "\n", " train_err[i] = compute_error(xtrain, ytrain, p)\n", " validation_err[i] = compute_error(xtest, ytest, p)\n", "\n", "fig, ax = plt.subplots()\n", "\n", "ax.plot(degrees, validation_err, lw=2, label = 'cross-validation error')\n", "ax.plot(degrees, train_err, lw=2, label = 'training error')\n", "ax.plot([0, 20], [error, error], '--k', label='intrinsic error')\n", "\n", "ax.legend(loc=0)\n", "ax.set_xlabel('degree of fit')\n", "ax.set_ylabel('rms error')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 13, "text": [ "" ] }, { "output_type": "display_data", "png": "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\nQmCC\n" } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This figure compactly shows the reason that validation is\n", "important. On the left side of the plot, we have very low-degree\n", "polynomial, which under-fits the data. This leads to a very high\n", "error for both the training set and the validation set. On\n", "the far right side of the plot, we have a very high degree\n", "polynomial, which over-fits the data. This can be seen in the fact\n", "that the training error is very low, while the validation\n", "error is very high. Plotted for comparison is the intrinsic error\n", "(this is the scatter artificially added to the data: click on the\n", "above image to see the source code). For this toy dataset,\n", "error = 1.0 is the best we can hope to attain. Choosing `d=6` in\n", "this case gets us very close to the optimal error.\n", "\n", "The astute reader will realize that something is amiss here: in\n", "the above plot, `d = 6` gives the best results. But in the previous\n", "plot, we found that `d = 6` vastly over-fits the data. What\u2019s going\n", "on here? The difference is the **number of training points** used.\n", "In the previous example, there were only eight training points.\n", "In this example, we have 100. As a general rule of thumb, the more\n", "training points used, the more complicated model can be used.\n", "But how can you determine for a given model whether more training\n", "points will be helpful? A useful diagnostic for this are learning curves." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Learning Curves" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A learning curve is a plot of the training and validation\n", "error as a function of the number of training points. Note that\n", "when we train on a small subset of the training data, the training\n", "error is computed using this subset, not the full training set.\n", "These plots can give a quantitative view into how beneficial it\n", "will be to add training samples." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# suppress warnings from Polyfit\n", "import warnings\n", "warnings.filterwarnings('ignore', message='Polyfit*')\n", "\n", "def plot_learning_curve(d, N=200):\n", " n_sizes = 50\n", " n_runs = 10\n", " sizes = np.linspace(2, N, n_sizes).astype(int)\n", " train_err = np.zeros((n_runs, n_sizes))\n", " validation_err = np.zeros((n_runs, n_sizes))\n", " for i in range(n_runs):\n", " for j, size in enumerate(sizes):\n", " xtrain, xtest, ytrain, ytest = train_test_split(\n", " x, y, test_size=test_size, random_state=j)\n", " # Train on only the first `size` points\n", " p = np.polyfit(xtrain[:size], ytrain[:size], d)\n", " \n", " # Validation error is on the *entire* validation set\n", " validation_err[i, j] = compute_error(xtest, ytest, p)\n", " \n", " # Training error is on only the points used for training\n", " train_err[i, j] = compute_error(xtrain[:size], ytrain[:size], p)\n", "\n", " fig, ax = plt.subplots()\n", " ax.plot(sizes, validation_err.mean(axis=0), lw=2, label='mean validation error')\n", " ax.plot(sizes, train_err.mean(axis=0), lw=2, label='mean training error')\n", " ax.plot([0, N], [error, error], '--k', label='intrinsic error')\n", "\n", " ax.set_xlabel('traning set size')\n", " ax.set_ylabel('rms error')\n", " \n", " ax.legend(loc=0)\n", " \n", " ax.set_xlim(0, N-1)\n", "\n", " ax.set_title('d = %i' % d)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we've defined this function, we can plot the learning curve.\n", "But first, take a moment to think about what we're going to see:\n", "\n", "**Questions:**\n", "\n", "- **As the number of training samples are increased, what do you expect to see for the training error? For the validation error?**\n", "- **Would you expect the training error to be higher or lower than the validation error? Would you ever expect this to change?**\n", "\n", "We can run the following code to plot the learning curve for a ``d=1`` model:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot_learning_curve(d=1)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nuLMAAAAASUVORK5CYII=\n" } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that the validation error *generally decreases* with a growing training set,\n", "while the training error *generally increases* with a growing training set. From\n", "this we can infer that as the training size increases, they will converge to a single\n", "value.\n", "\n", "From the above discussion, we know that `d = 1` is a high-bias estimator which\n", "under-fits the data. This is indicated by the fact that both the\n", "training and validation errors are very high. When confronted with this type of learning curve,\n", "we can expect that adding more training data will not help matters: both\n", "lines will converge to a relatively high error.\n", "\n", "**When the learning curves have converged to a high error, we have a high bias model.**\n", "\n", "A high-bias model can be improved by:\n", "\n", "- Using a more sophisticated model (i.e. in this case, increase ``d``)\n", "- Gather more features for each sample.\n", "- Decrease regularlization in a regularized model.\n", "\n", "A high-bias model cannot be improved, however, by increasing the number of training\n", "samples (do yousee why?)\n", "\n", "Now let's look at a high-variance (i.e. over-fit) model:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot_learning_curve(d=20, N=100)\n", "plt.ylim(0, 15)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 16, "text": [ "(0, 15)" ] }, { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we show the learning curve for `d = 20`. From the above\n", "discussion, we know that `d = 20` is a **high-variance** estimator\n", "which **over-fits** the data. This is indicated by the fact that the\n", "training error is much less than the validation error. As\n", "we add more samples to this training set, the training error will\n", "continue to climb, while the cross-validation error will continue\n", "to decrease, until they meet in the middle. In this case, our\n", "intrinsic error was set to 1.0, and we can infer that adding more\n", "data will allow the estimator to very closely match the best\n", "possible cross-validation error.\n", "\n", "**When the learning curves have not yet converged with our full training set, it indicates a high-variance, over-fit model.**\n", "\n", "A high-variance model can be improved by:\n", "\n", "- Gathering more training samples.\n", "- Using a less-sophisticated model (i.e. in this case, make ``d`` smaller)\n", "- Increasing regularization.\n", "\n", "In particular, gathering more features for each sample will not help the results." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Summary" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We\u2019ve seen above that an under-performing algorithm can be due\n", "to two possible situations: high bias (under-fitting) and high\n", "variance (over-fitting). In order to evaluate our algorithm, we\n", "set aside a portion of our training data for cross-validation.\n", "Using the technique of learning curves, we can train on progressively\n", "larger subsets of the data, evaluating the training error and\n", "cross-validation error to determine whether our algorithm has\n", "high variance or high bias. But what do we do with this information?" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "High Bias" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If our algorithm shows high **bias**, the following actions might help:\n", "\n", "- **Add more features**. In our example of predicting home prices,\n", " it may be helpful to make use of information such as the neighborhood\n", " the house is in, the year the house was built, the size of the lot, etc.\n", " Adding these features to the training and test sets can improve\n", " a high-bias estimator\n", "- **Use a more sophisticated model**. Adding complexity to the model can\n", " help improve on bias. For a polynomial fit, this can be accomplished\n", " by increasing the degree d. Each learning technique has its own\n", " methods of adding complexity.\n", "- **Use fewer samples**. Though this will not improve the classification,\n", " a high-bias algorithm can attain nearly the same error with a smaller\n", " training sample. For algorithms which are computationally expensive,\n", " reducing the training sample size can lead to very large improvements\n", " in speed.\n", "- **Decrease regularization**. Regularization is a technique used to impose\n", " simplicity in some machine learning models, by adding a penalty term that\n", " depends on the characteristics of the parameters. If a model has high bias,\n", " decreasing the effect of regularization can lead to better results." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "High Variance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If our algorithm shows **high variance**, the following actions might help:\n", "\n", "- **Use fewer features**. Using a feature selection technique may be\n", " useful, and decrease the over-fitting of the estimator.\n", "- **Use a simpler model**. Model complexity and over-fitting go hand-in-hand.\n", "- **Use more training samples**. Adding training samples can reduce\n", " the effect of over-fitting, and lead to improvements in a high\n", " variance estimator.\n", "- **Increase Regularization**. Regularization is designed to prevent\n", " over-fitting. In a high-variance model, increasing regularization\n", " can lead to better results.\n", "\n", "These choices become very important in real-world situations. For example,\n", "due to limited telescope time, astronomers must seek a balance between\n", "observing a large number of objects, and observing a large number of\n", "features for each object. Determining which is more important for a\n", "particular learning task can inform the observing strategy that the\n", "astronomer employs. In a later exercise, we will explore the use of\n", "learning curves for the photometric redshift problem." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "More Sophisticated Methods" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are a lot more options for performing validation and model testing.\n", "In particular, there are several schemes for cross-validation, in which\n", "the model is fit multiple times with different training and test sets.\n", "The details are different, but the principles are the same as what we've\n", "seen here.\n", "\n", "For more information see the ``sklearn.cross_validation`` module documentation,\n", "and the information on the scikit-learn website." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "One Last Caution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using validation schemes to determine hyper-parameters means that we are\n", "fitting the hyper-parameters to the particular validation set. In the same\n", "way that parameters can be over-fit to the training set, hyperparameters can\n", "be over-fit to the validation set. Because of this, the validation error\n", "tends to under-predict the classification error of new data.\n", "\n", "For this reason, it is recommended to split the data into three sets:\n", "\n", "- The **training set**, used to train the model (usually ~60% of the data)\n", "- The **validation set**, used to validate the model (usually ~20% of the data)\n", "- The **test set**, used to evaluate the expected error of the validated model (usually ~20% of the data)\n", "\n", "This may seem excessive, and many machine learning practitioners ignore the need\n", "for a test set. But if your goal is to predict the error of a model on unknown\n", "data, using a test set is vital." ] } ], "metadata": {} } ] }