{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "\n", "\n", "*This notebook contains an excerpt from the [Python Data Science Handbook](http://shop.oreilly.com/product/0636920034919.do) by Jake VanderPlas; the content is available [on GitHub](https://github.com/jakevdp/PythonDataScienceHandbook).*\n", "\n", "*The text is released under the [CC-BY-NC-ND license](https://creativecommons.org/licenses/by-nc-nd/3.0/us/legalcode), and code is released under the [MIT license](https://opensource.org/licenses/MIT). If you find this content useful, please consider supporting the work by [buying the book](http://shop.oreilly.com/product/0636920034919.do)!*" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "\n", "< [Introducing Scikit-Learn](05.02-Introducing-Scikit-Learn.ipynb) | [Contents](Index.ipynb) | [Feature Engineering](05.04-Feature-Engineering.ipynb) >" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Hyperparameters and Model Validation" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "deletable": true, "editable": true }, "source": [ "In the previous section, we saw the basic recipe for applying a supervised machine learning model:\n", "\n", "1. Choose a class of model\n", "2. Choose model hyperparameters\n", "3. Fit the model to the training data\n", "4. Use the model to predict labels for new data\n", "\n", "The first two pieces of this—the choice of model and choice of hyperparameters—are perhaps the most important part of using these tools and techniques effectively.\n", "In order to make an informed choice, we need a way to *validate* that our model and our hyperparameters are a good fit to the data.\n", "While this may sound simple, there are some pitfalls that you must avoid to do this effectively." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Thinking about Model Validation\n", "\n", "In principle, model validation is very simple: after choosing a model and its hyperparameters, we can estimate how effective it is by applying it to some of the training data and comparing the prediction to the known value.\n", "\n", "The following sections first show a naive approach to model validation and why it\n", "fails, before exploring the use of holdout sets and cross-validation for more robust\n", "model evaluation." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Model validation the wrong way\n", "\n", "Let's demonstrate the naive approach to validation using the Iris data, which we saw in the previous section.\n", "We will start by loading the data:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "from sklearn.datasets import load_iris\n", "iris = load_iris()\n", "X = iris.data\n", "y = iris.target" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Next we choose a model and hyperparameters. Here we'll use a *k*-neighbors classifier with ``n_neighbors=1``.\n", "This is a very simple and intuitive model that says \"the label of an unknown point is the same as the label of its closest training point:\"" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "from sklearn.neighbors import KNeighborsClassifier\n", "model = KNeighborsClassifier(n_neighbors=1)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Then we train the model, and use it to predict labels for data we already know:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "model.fit(X, y)\n", "y_model = model.predict(X)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Finally, we compute the fraction of correctly labeled points:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.metrics import accuracy_score\n", "accuracy_score(y, y_model)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We see an accuracy score of 1.0, which indicates that 100% of points were correctly labeled by our model!\n", "But is this truly measuring the expected accuracy? Have we really come upon a model that we expect to be correct 100% of the time?\n", "\n", "As you may have gathered, the answer is no.\n", "In fact, this approach contains a fundamental flaw: *it trains and evaluates the model on the same data*.\n", "Furthermore, the nearest neighbor model is an *instance-based* estimator that simply stores the training data, and predicts labels by comparing new data to these stored points: except in contrived cases, it will get 100% accuracy *every time!*" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Model validation the right way: Holdout sets\n", "\n", "So what can be done?\n", "A better sense of a model's performance can be found using what's known as a *holdout set*: that is, we hold back some subset of the data from the training of the model, and then use this holdout set to check the model performance.\n", "This splitting can be done using the ``train_test_split`` utility in Scikit-Learn:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "0.90666666666666662" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.cross_validation import train_test_split\n", "# split the data with 50% in each set\n", "X1, X2, y1, y2 = train_test_split(X, y, random_state=0,\n", " train_size=0.5)\n", "\n", "# fit the model on one set of data\n", "model.fit(X1, y1)\n", "\n", "# evaluate the model on the second set of data\n", "y2_model = model.predict(X2)\n", "accuracy_score(y2, y2_model)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We see here a more reasonable result: the nearest-neighbor classifier is about 90% accurate on this hold-out set.\n", "The hold-out set is similar to unknown data, because the model has not \"seen\" it before." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Model validation via cross-validation\n", "\n", "One disadvantage of using a holdout set for model validation is that we have lost a portion of our data to the model training.\n", "In the above case, half the dataset does not contribute to the training of the model!\n", "This is not optimal, and can cause problems – especially if the initial set of training data is small.\n", "\n", "One way to address this is to use *cross-validation*; that is, to do a sequence of fits where each subset of the data is used both as a training set and as a validation set.\n", "Visually, it might look something like this:\n", "\n", "![](figures/05.03-2-fold-CV.png)\n", "[figure source in Appendix](06.00-Figure-Code.ipynb#2-Fold-Cross-Validation)\n", "\n", "Here we do two validation trials, alternately using each half of the data as a holdout set.\n", "Using the split data from before, we could implement it like this:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "(0.95999999999999996, 0.90666666666666662)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y2_model = model.fit(X1, y1).predict(X2)\n", "y1_model = model.fit(X2, y2).predict(X1)\n", "accuracy_score(y1, y1_model), accuracy_score(y2, y2_model)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "What comes out are two accuracy scores, which we could combine (by, say, taking the mean) to get a better measure of the global model performance.\n", "This particular form of cross-validation is a *two-fold cross-validation*—that is, one in which we have split the data into two sets and used each in turn as a validation set.\n", "\n", "We could expand on this idea to use even more trials, and more folds in the data—for example, here is a visual depiction of five-fold cross-validation:\n", "\n", "![](figures/05.03-5-fold-CV.png)\n", "[figure source in Appendix](06.00-Figure-Code.ipynb#5-Fold-Cross-Validation)\n", "\n", "Here we split the data into five groups, and use each of them in turn to evaluate the model fit on the other 4/5 of the data.\n", "This would be rather tedious to do by hand, and so we can use Scikit-Learn's ``cross_val_score`` convenience routine to do it succinctly:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "array([ 0.96666667, 0.96666667, 0.93333333, 0.93333333, 1. ])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.cross_validation import cross_val_score\n", "cross_val_score(model, X, y, cv=5)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Repeating the validation across different subsets of the data gives us an even better idea of the performance of the algorithm.\n", "\n", "Scikit-Learn implements a number of useful cross-validation schemes that are useful in particular situations; these are implemented via iterators in the ``cross_validation`` module.\n", "For example, we might wish to go to the extreme case in which our number of folds is equal to the number of data points: that is, we train on all points but one in each trial.\n", "This type of cross-validation is known as *leave-one-out* cross validation, and can be used as follows:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 0., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1.])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.cross_validation import LeaveOneOut\n", "scores = cross_val_score(model, X, y, cv=LeaveOneOut(len(X)))\n", "scores" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Because we have 150 samples, the leave one out cross-validation yields scores for 150 trials, and the score indicates either successful (1.0) or unsuccessful (0.0) prediction.\n", "Taking the mean of these gives an estimate of the error rate:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "0.95999999999999996" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scores.mean()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Other cross-validation schemes can be used similarly.\n", "For a description of what is available in Scikit-Learn, use IPython to explore the ``sklearn.cross_validation`` submodule, or take a look at Scikit-Learn's online [cross-validation documentation](http://scikit-learn.org/stable/modules/cross_validation.html)." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Selecting the Best Model\n", "\n", "Now that we've seen the basics of validation and cross-validation, we will go into a litte more depth regarding model selection and selection of hyperparameters.\n", "These issues are some of the most important aspects of the practice of machine learning, and I find that this information is often glossed over in introductory machine learning tutorials.\n", "\n", "Of core importance is the following question: *if our estimator is underperforming, how should we move forward?*\n", "There are several possible answers:\n", "\n", "- Use a more complicated/more flexible model\n", "- Use a less complicated/less flexible model\n", "- Gather more training samples\n", "- Gather more data to add features to each sample\n", "\n", "The answer to this question is often counter-intuitive.\n", "In particular, sometimes using a more complicated model will give worse results, and adding more training samples may not improve your results!\n", "The ability to determine what steps will improve your model is what separates the successful machine learning practitioners from the unsuccessful." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### The Bias-variance trade-off\n", "\n", "Fundamentally, the question of \"the best model\" is about finding a sweet spot in the tradeoff between *bias* and *variance*.\n", "Consider the following figure, which presents two regression fits to the same dataset:\n", "\n", "![](figures/05.03-bias-variance.png)\n", "[figure source in Appendix](06.00-Figure-Code.ipynb#Bias-Variance-Tradeoff)\n", "\n", "It is clear that neither of these models is a particularly good fit to the data, but they fail in different ways.\n", "\n", "The model on the left attempts to find a straight-line fit through the data.\n", "Because the data are intrinsically more complicated than a straight line, the straight-line model will never be able to describe this dataset well.\n", "Such a model is said to *underfit* the data: that is, it does not have enough model flexibility to suitably account for all the features in the data; another way of saying this is that the model has high *bias*.\n", "\n", "The model on the right attempts to fit a high-order polynomial through the data.\n", "Here the model fit has enough flexibility to nearly perfectly account for the fine features in the data, but even though it very accurately describes the training data, its precise form seems to be more reflective of the particular noise properties of the data rather than the intrinsic properties of whatever process generated that data.\n", "Such a model is said to *overfit* the data: that is, it has so much model flexibility that the model ends up accounting for random errors as well as the underlying data distribution; another way of saying this is that the model has high *variance*." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "To look at this in another light, consider what happens if we use these two models to predict the y-value for some new data.\n", "In the following diagrams, the red/lighter points indicate data that is omitted from the training set:\n", "\n", "![](figures/05.03-bias-variance-2.png)\n", "[figure source in Appendix](06.00-Figure-Code.ipynb#Bias-Variance-Tradeoff-Metrics)\n", "\n", "The score here is the $R^2$ score, or [coefficient of determination](https://en.wikipedia.org/wiki/Coefficient_of_determination), which measures how well a model performs relative to a simple mean of the target values. $R^2=1$ indicates a perfect match, $R^2=0$ indicates the model does no better than simply taking the mean of the data, and negative values mean even worse models.\n", "From the scores associated with these two models, we can make an observation that holds more generally:\n", "\n", "- For high-bias models, the performance of the model on the validation set is similar to the performance on the training set.\n", "- For high-variance models, the performance of the model on the validation set is far worse than the performance on the training set." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "If we imagine that we have some ability to tune the model complexity, we would expect the training score and validation score to behave as illustrated in the following figure:\n", "\n", "![](figures/05.03-validation-curve.png)\n", "[figure source in Appendix](06.00-Figure-Code.ipynb#Validation-Curve)\n", "\n", "The diagram shown here is often called a *validation curve*, and we see the following essential features:\n", "\n", "- The training score is everywhere higher than the validation score. This is generally the case: the model will be a better fit to data it has seen than to data it has not seen.\n", "- For very low model complexity (a high-bias model), the training data is under-fit, which means that the model is a poor predictor both for the training data and for any previously unseen data.\n", "- For very high model complexity (a high-variance model), the training data is over-fit, which means that the model predicts the training data very well, but fails for any previously unseen data.\n", "- For some intermediate value, the validation curve has a maximum. This level of complexity indicates a suitable trade-off between bias and variance.\n", "\n", "The means of tuning the model complexity varies from model to model; when we discuss individual models in depth in later sections, we will see how each model allows for such tuning." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "deletable": true, "editable": true }, "source": [ "### Validation curves in Scikit-Learn\n", "\n", "Let's look at an example of using cross-validation to compute the validation curve for a class of models.\n", "Here we will use a *polynomial regression* model: this is a generalized linear model in which the degree of the polynomial is a tunable parameter.\n", "For example, a degree-1 polynomial fits a straight line to the data; for model parameters $a$ and $b$:\n", "\n", "$$\n", "y = ax + b\n", "$$\n", "\n", "A degree-3 polynomial fits a cubic curve to the data; for model parameters $a, b, c, d$:\n", "\n", "$$\n", "y = ax^3 + bx^2 + cx + d\n", "$$\n", "\n", "We can generalize this to any number of polynomial features.\n", "In Scikit-Learn, we can implement this with a simple linear regression combined with the polynomial preprocessor.\n", "We will use a *pipeline* to string these operations together (we will discuss polynomial features and pipelines more fully in [Feature Engineering](05.04-Feature-Engineering.ipynb)):" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "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))" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "deletable": true, "editable": true }, "source": [ "Now let's create some data to which we will fit our model:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "import numpy as np\n", "\n", "def make_data(N, err=1.0, rseed=1):\n", " # randomly sample the data\n", " rng = np.random.RandomState(rseed)\n", " X = rng.rand(N, 1) ** 2\n", " y = 10 - 1. / (X.ravel() + 0.1)\n", " if err > 0:\n", " y += err * rng.randn(N)\n", " return X, y\n", "\n", "X, y = make_data(40)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We can now visualize our data, along with polynomial fits of several degrees:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\nsKmpQPsAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import seaborn; seaborn.set() # plot formatting\n", "\n", "X_test = np.linspace(-0.1, 1.1, 500)[:, None]\n", "\n", "plt.scatter(X.ravel(), y, color='black')\n", "axis = plt.axis()\n", "for degree in [1, 3, 5]:\n", " y_test = PolynomialRegression(degree).fit(X, y).predict(X_test)\n", " plt.plot(X_test.ravel(), y_test, label='degree={0}'.format(degree))\n", "plt.xlim(-0.1, 1.0)\n", "plt.ylim(-2, 12)\n", "plt.legend(loc='best');" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The knob controlling model complexity in this case is the degree of the polynomial, which can be any non-negative integer.\n", "A useful question to answer is this: what degree of polynomial provides a suitable trade-off between bias (under-fitting) and variance (over-fitting)?\n", "\n", "We can make progress in this by visualizing the validation curve for this particular data and model; this can be done straightforwardly using the ``validation_curve`` convenience routine provided by Scikit-Learn.\n", "Given a model, data, parameter name, and a range to explore, this function will automatically compute both the training score and validation score across the range:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\ni4iIWMgPEUMpSKY0y3EAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.learning_curve import validation_curve\n", "degree = np.arange(0, 21)\n", "train_score, val_score = validation_curve(PolynomialRegression(), X, y,\n", " 'polynomialfeatures__degree', degree, cv=7)\n", "\n", "plt.plot(degree, np.median(train_score, 1), color='blue', label='training score')\n", "plt.plot(degree, np.median(val_score, 1), color='red', label='validation score')\n", "plt.legend(loc='best')\n", "plt.ylim(0, 1)\n", "plt.xlabel('degree')\n", "plt.ylabel('score');" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "This shows precisely the qualitative behavior we expect: the training score is everywhere higher than the validation score; the training score is monotonically improving with increased model complexity; and the validation score reaches a maximum before dropping off as the model becomes over-fit.\n", "\n", "From the validation curve, we can read-off that the optimal trade-off between bias and variance is found for a third-order polynomial; we can compute and display this fit over the original data as follows:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(X.ravel(), y)\n", "lim = plt.axis()\n", "y_test = PolynomialRegression(3).fit(X, y).predict(X_test)\n", "plt.plot(X_test.ravel(), y_test);\n", "plt.axis(lim);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Notice that finding this optimal model did not actually require us to compute the training score, but examining the relationship between the training score and validation score can give us useful insight into the performance of the model." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Learning Curves\n", "\n", "One important aspect of model complexity is that the optimal model will generally depend on the size of your training data.\n", "For example, let's generate a new dataset with a factor of five more points:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeYAAAFVCAYAAAA6zUwUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt4VPWB//HPICRiEpoJhpZYHSJr7LruT1egW9oihTaI\nLIouKkGEttuNFpfdenuC4Cq2rOTnPLbl2RUpYmsh+yuhdbERapCngumj1d2IDa3dLWwV8RKqkWRC\ngEASOL8/htwmk8zkzDkz5/J+/aMJSeb7ncv5nO89YBiGIQAA4AgjMl0AAADQi2AGAMBBCGYAAByE\nYAYAwEEIZgAAHIRgBgDAQZIO5n379mnx4sWSpP/5n//RokWLtGTJEv393/+9mpubbSsgAAB+klQw\nP/XUU/rnf/5ndXZ2SpLWrFmjhx56SJs3b1ZpaamefPJJWwsJAIBfJBXMoVBI69at6/n6+9//vi69\n9FJJUldXl7Kzs+0pHQAAPpNUMJeWluqcc87p+fr888+XJL3xxhv6yU9+oq997Wu2FA4AAL8ZafYX\nn3/+eW3YsEFPPvmkgsFgwp83DEOBQMDswwEA4AumgrmmpkY//elPVVVVpTFjxiT1O4FAQE1NbWYe\nzvUKC/N8W3eJ+lN/6u/X+vu57lK0/mYMO5jPnDmjNWvWqKioSP/wD/+gQCCgz372s1q2bJmpAgAA\ngF5JB/MFF1yg6upqSdJ//ud/2lYgAAD8jA1GAABwEIIZAAAHIZgBAHAQghkAAAchmAEAcBCCGQAA\nByGYAQBwEIIZAAAHIZgBAHAQghkAAAchmAEAcBCCGQAAByGYAQBwEIIZAAAHIZgBAHCQpM9jBhDV\n3BzR8uV7dOjQGIVCrQqHZyoYzM90seBxvO/8g2AGhmn58j2qqVksKaCGBkNSlTZuvDHTxTKFi33m\nDPe5t+N9x+vvTAQzMEyHDo2RFDj7VeDs1+7kpZsMtxnuc2/H+47X35kYYwaGKRRqlWSc/cpQKHQ0\nk8VJiZduMtxmuM+9He87Xn9nosUMDFM4PFNS1dnuv6MKh2dkukimhUKtZ1tKAbn9JiOTzHQJD/e5\nt+N9x+vvTAQzMEzBYL5nuvu8dJORSWa6hIf73NvxvuP1dyaCGfAxL91kZJKZLmEnPPdOKAMGYowZ\nAFJk97yD5uaIysuf1axZL6q8fJtaWiKW/n04Cy1mAEiR3V3CzJ72F4IZAFJkd5cws6f9ha5sAL7h\n1i5hLy3RQ2K0mAH4hlu7hJk97S8EMwDfcGuXcDpmT7M9p3MQzAB8w+0batgZnm7tTfAighmAb7i9\nS9jO8HRrb4IXEcwAfMPtG2rYGZ5u703wkqSDed++fXrsscdUVVWld999V/fff79GjBihSy65RKtW\nrbKzjAAA2Ruebu9N8JKkgvmpp55STU2NcnJyJEmVlZW65557NHnyZK1atUq//OUv9ZWvfMXWggJA\nsrw6kcnO8HR7b4KXJBXMoVBI69atU0VFhSTp97//vSZPnixJuvrqq/XrX/+aYAbgGF6dyER4+kNS\nwVxaWqoPPvig52vDMHr+PycnR21tbUk9WGFh3jCL5x1+rrtE/al/euvf2BhU37HYxsZgRl8DP7/+\nfq67WaYmf40Y0bth2PHjxzVmTHITEJqakgtwrykszPNt3SXqT/3TX/+iomZFd8qKjsUWFbVk7DXw\n8+vv57pL5m9KTAXzZZddpvr6ek2ZMkW/+tWv9LnPfc7UgwNAPKmOETthIlN3HRobgyoqanb0OLdX\nx+TdylQwL1++XA8++KA6Ozs1ceJEzZ492+pyAfCxVMeInTAW27cO0da7c8e5vTom71ZJB/MFF1yg\n6upqSdKECRNUVVVlW6EA+JsXNrtwYh0Gaxk7sax+xgYjAByjOzjeeedP6jtGnOp63WS6aq3uznXi\nhh2DtYzNlJXub/sQzAAcozc4WiVtUX7+SU2fPjLlMeJkumqt7s7tHueOjjG3OGLDjsFaxmbG5On+\ntg/BDMAxeoMjX9KtmjDh59q48csW/l1psK5aq7tzu8e5+85MznQrc7CWsZkxebq/7UMwA3AMu7p/\nk/m76eh6znQr08rZ6k7sqvcKghmAY9i1zCmZv5uOJVaZbmVaOVvdCUvSvIpgBuAYdi1zSubvpmOJ\nlRWtzEx3h3dzwpI0ryKYASBNrGhlZro7HPYjmAEHcUpraChuKKNTWdHKzHR3OOxHMAMO4obWkBvK\n6GV2TLriZstZCGbAQdzQGnJDGb3MjklX3Gw5C8EMOIgblqC4oYxeZsekK262nIVgBhzEDUtQ3FBG\nJ3DT6VLcbDkLwQw4SDqWoKQ6nsgymeRk+nSp4bzOZm62GJe2D8EMT+FikRjjiemR6e7h4bzOZm62\neB/Zh2CGp3CxSCzTgeEX8bqH03njaPfrzPvIPgQzPIWLRWKMJw7NqvCMd7pURUX6bhztfp15H9mH\nYIancLFIzC2TtzI1LGFVr0u806XSeeNo9+vslveRGxHMcK14F26/XCxSCS23TN66++5fqLZ2jKRz\n1NAwUh0dO7Rp0222P66d4ZnOG8fhvs7DfU+55X3kRgQzXGuwlo0fLhbpHEtvbo7orrte0GuvjZD0\nsaZOzdXatdfZ3np99dU2SXeoO8ReffUxWx+vm53h6eQbR+ZnOAfBDNfy03hybGvmrbdGKlr3iKRa\n7dollZdvs6W7d/nyPdq58xvqDqra2i3KytqThov2WPV9faNf28/O8HRyK9NPnyenI5jhWna1bIbb\npZeOsdDY1kxRUaWia2NrJZWpvT2gmhp7WjmxF2wpT4cOnbb0MeKZOvW0amt7X9+pU8/Y/phS4vD0\n6pI85mc4B8EM17KrZTPcLr3oz18naacaGoKqr9+sPXuWWHqxjg3HsWNLNGVKlXbtktrb7W3lxF6w\npTaFQl0p/c1kwm3t2tnKyur7+l6T0mNaxaou30TPQbpvAJzcze43BDNcy8puwb4XwXfe+ZOkVkn5\nSibsov++U1KZpIAaG69TRYW1LdfYcLz44hPauPFGlZdvO9tSHryVk+oFPhyeqY6OH+rVV0dIOqKp\nU3MVDs9NqT7JhJtTu32t6PJtbo5o5swqNTZeLumYGhqul7S9X33TPebr1Ofbjwhm+FbfwProo9+r\nsfFOSUFFW4VbJN2qZLr0oqEZlJXjc7FhunLlJMVrzSTTykn1Ah8M5mvTpgUp1SeWm8czrejyje6h\nvUK9vRDVA54DNz9HSA3BDN/qv5fxPEnVkhZKCig//6QmTPh5Ul164fBM1ddvVmPjdbJqfC7ZME2m\nlePEC7ybxzOt6PIdOG6fo1Ao0u9n3PwcITUEM3wr3sUxytD06SO1ceOXk/o7wWC+9uxZoooK68bn\nrAxTJ17g3TyeaUWXb+xrUlT0psLhxf1+JjqEsOHssrGx6ug4rZaWSNLDEF6dpOYHBDNMcdOHfrCy\nxrs4jht3xlRQWD0+Z2WYOjEEvTKeafZzMPA1WTzg94LBfGVlnadIJLqWu7bWUFZW8sMQrEt2L4IZ\nprjpQz9YWZO5OGaKlWFq1yQ5p9+QpYPZz0Gyr0kqPSdOHMJAcghmmOKmD/1gZXVyq82pZXPTDZkd\nYm9M3n47R3Z+DlLpOXHiEAaSQzDDFDd96N1U1mRkstXq5BuyzGz0skbRWdX2vLdS6Tlx4hAGkmMq\nmLu6urR8+XJ98MEHGjlypFavXq3i4mKrywYHc9OH3k1lTUYmW61OvslJx/MSe2NSUDBBU6bY995K\npefEqb0uSMxUMNfV1enMmTOqrq7Wr3/9a33/+9/Xv/7rv1pdNjiYmz70biprMq2+TLZanXyTk47n\nJfbGZOLE0655b6VL3/dwSckJrV49zdfzEMwwFcwTJkzQ6dOnZRiG2traNGrUKKvLBfhSMq2+TLZa\nnXyTk47nxck3Jk4R+x4+dcpf8xCsYCqYc3Jy9P7772v27NmKRCLasGGD1eUCPCXZ8c9kWn2EQ3zp\neF6cfGPiFE6eh+AWpoL5xz/+saZNm6a7775bH374oZYsWaLt27crKytryN8rLMwzVUgv8HPdJer/\n0EMv92tFZGdXa+vWhQN+rqTkRL9WX0lJ+4DnrrAwTz//+ZK0lLuvI0ciuvPOWh08mKvi4jatXz9H\nBQXJdVEm+/qn+hiZeF6S4af3fzLvYQzNVDB/4hOf0MiR0V/Ny8tTV1eXzpxJfCRbU1ObmYdzvcLC\nPN/WXfJ+/RO1hgsL83TgwGj1bUUcODA67nOyevU0nTrV2+pbvXqGY5678vLnem4u6uuT76Iczutv\n9jGczOvv/1h938MlJe1avfqLvqp/X2ZvSEwF81e/+lWtXLlSixYtUldXl+69916de+65pgoAuF3s\nmFpd3WOaPn1cv4BOdvzTyV2lb711jqL7iedKajv7tbXoBk2NEzaA6fse9ttNiVVMBfN5552ntWvX\nWl0WOJgTPvBOFRsmkcgnVVNzjjo6dmjTptskeWNcuLn5kKTeE5GamystfwwnL8fq5uTPgt83gPEK\nNhhBUvjADy42TKRRksr06quP9fyM3S3hRGGRSph0/25LS5Gix2HOkZSvsWNLLK+HG25gnPxZoMfB\nGwhmnxruhZoP/OC6w2T79i6dOTNa0rWKPldj01aGRGGRSpj0Px4zenawVKaLLz5hdTUc3ZXfzcmf\nBTf0OCAxgtmnhnuhdvsH3s7ux+4w+epXq1VbW6bu52jq1MQTIq2SKCysPAxh9OhOzZpV5cjWbDo4\n+bPghh4HJEYw+9RwL9Ru/8BHb0Suk7RTDQ1B1ddv1p49SywdG1y7draysvo+R9dY9rcTSRQWVh6G\nMGuWHN+qtZOTPwtu6HFAYgSzTw33Qu32D3z0xmOnpGiLtrHxOlVUWDs2mMnnKFFYcBiCddz+WYDz\nEcw+5ZeLbXcX9jvvdEk6IqlVUr6cNjaYqkRhwWEIgHsQzD7l1Ytt7FhyR0enamu/od6JS1sk3SrJ\n0Ecf/bdaWiY5ZqkLAEgEMzwmdlJbfv7T6juWHgi0yjCek3RcjY1LVVGx3ZYbFE7YAWAWwQxPiZ3U\nJn2svgfZG8ZxSdfH/Lz1vHjCjpM31gC8hGCGp8ROaps6Na9npvQ77/yvIpF89Q1qu5a6WLHW1WlB\n6OSNNQAvIZg9LJ0XdqeEyMBJbXN7ylFe3qqamusV3SAjR0VFbyocXmxLOaxY65psEKbruXfyxhqA\nlxDMHpbOFk6mW1P9w8nQ1q0DJ3VFQ3v72Z+JKBxerGAw35Zg63uDED1hZ/iz3pMNwnQ9907eWAPw\nEoLZw9LZwon3WN2B19gYVFFRs62t6GTCabCZ6HYEmxUn7CQbhOl6nf2yxA7INILZw9LZwon3WAP3\nWLavFW3NlpMRSbXatUsqL9+W8THdZIKwuTmijz76vaR5suN1jtebYBjRm5kFC/Y6Yuwb8BqC2cNS\nbeEMp4s33mMtWLBX6WqxW7PlZK2kMrW3B1RTk/nJTcmsNY/2SNwpu8bN4/UmSGISGGAjgtnDUt1E\nZDhdvPEeKx0t9u6bh7ffzlFR0RoVFEzQxImnTW05uWuX1N7urslN0TIGJS2UJI0bd8bS1uvgPRHu\nep4ANyGYMahUxy67Ay86xtxiy5hkbHf5lCnDb71131QsWVKtnTt7byTGj//Y8vJaze6bn/h/32AS\nGGAjghmDSvWi3x14Zic/JcPKiU+BQJeiW3bmSWqT1Jly+exm94Sswf8+k8AAuxDM6BE7prxy5SQ5\n/QJsZYvx8OHxkm7o8/XPh/X7mVjLbfee54P9fcaUAfsQzOiR6bXI3YYKOKtuHuI9Rqoh75TnD4C7\nEczoMdxuYbtaiEMFnFXhF+/vpNotzM5YAKxAMKPHUC3GeCFsVwtxqICzKvzi/Z1Uu4XZGQuAFQhm\n9BiqxRgvhO1qIQ4VcFaFnx0h6oSdsZyyZzkA8whm9BiqxRgvhO1qIQ4VcFaFnx0havdErGQ4ZZyb\n86gB8whmJCVeCK9YMUn19ZVqafm0gsH3tXLl9Yn+TFIMo99X/f7NqvBL9Hfc2vJ0yji3F8+jBtKF\nYEZS4rUwKyr2qLFxhaSA2tsNrVlTpY0bQ6YfozsM6+q6FIlkS/qSGho+oUy0+pzS8kwk9gZi/PgO\nR4xzO+UGAXAjghlJidfCtPriO/DQi2pJC9N+UW9ujqiu7kNJOxTdaGSOY4Ml9gbi2mt/oHnzMr/2\nnIlwgHkEM0yLXnxbJO2UlKOPPvq9WloGnoOcrNigl3Jl90V9sNnmkch96r1B2KJQqMu2MqQi9jk7\nfHi8du36ciaLJMma86gBvyKYYVo4PFP19et7urMbG69TRYX5Lt/YVlZ+/h80fbo9e2x3S2a2eX7+\nSYXDpbaVIRVObZlacR414FcEM0wLBvM1btxlamy0pjt74Dh2me0TrpKZbT59+kjHTvxywhItANYy\nHcxPPvmkdu/erc7OTt16662aP3++leWCS4wff1gNDT9R9OCHoxo/3nyLLRPLjeK1ON0Udk5YogXA\nWqaC+b/+67/0m9/8RtXV1Tpx4oR+9KMfWV0uuMYoRc8C7h6P/WHGSmJmiVO8ECbsAGSSqWB++eWX\nVVJSojvvvFPHjx9XRUWF1eWCSxw+fL76Tz46P2NlMbPEiRAG4DSmgrmlpUWNjY3asGGD3nvvPS1d\nulQ7d+60umyIw2kbXzhp8hFrZ1PntPcX4Eemgjk/P18TJ07UyJEjVVxcrOzsbDU3N6ugoGDI3yss\nzDNVSC+wqu7Llu3o1yrMzq7W1q0LLfnbZvzoR/O0dGm1Dh7MVXHxMa1ff70KCgbWNR2vfUnJiX43\nCSUl7Y55zzmlHInY9f5yS/3t4uf6+7nuZpkK5kmTJqmqqkpf+9rX9OGHH+rkyZMKBoMJf8+vSyas\nXC5y4MBo9W0VHjgwOsPP6zl6/PG5PV+dPj3wdU7XcpnVq6fp1Kne8eLVq2c44j3npuVCdry/3FR/\nO/i5/n6uu2T+psRUMH/pS1/S66+/rptuukmGYWjVqlUKBAKJfxEpM9N17JfuScaLU+ekoQnAr0wv\nl7rvvvusLAeSNNRSnsEC2Op9n/0S9H7kpqVigFexwYjLDNUqjBfAjz46w/J9n91ywAOGj14HIPMI\nZg+JNyvZjn2fmf0MAPYZkekCwDqhUKt6zy+Ojg/G3/d5hpqbIyovf1azZr2o8vJtammJpPQ4AABr\n0GL2kPhnJu+Ou+9zefmzprujGYcEAPsQzB7SPT7YPTlrwYK9Gj/+uK699oc6fPj8fiGaSnc045AA\nYB+C2YNiJ2fNm1c14IzeVJfFMDMbAOxBMHtQMq3hVLujmZkNAPYgmD2otzXcKul5vfPOSZWXb+vX\nqk21O5qZ2QBgD4LZg7pbw3V1HyoSuU+RSEA1Nf1btal2RbNDFADYg2D2oO7W8KxZL6qhIX6rNtWu\naGZmA4A9CGaXim3xrlgxSZWVb/RrAQ/Vqk21K5qZ2QBgD4LZpWJbvPX1lWpsXKG+LeChWrV0RQOA\nMxHMLhXb4m1p+bRiW8BDtWoTdUWzHAoAMoNgdqnYFm8w+L7a25NvASfqirZqOVRzc0TLlu3QgQOj\nCXgASALB7FKxLd6VK6/XmjXWTcayajkU650BYHgIZpeK1+LduDFk2d+3agya9c4AMDwEM+KyajkU\nk8wAYHgIZsRl1XKocHimsrOrz44xs94ZABIhmGGrYDBfW7cuVFNTW6aLAgCuQDB7AEubAMA7CGYP\nYOYzAHjHiEwXAKlj5jMAeAfB7AGhUKsk4+xXzHwGADejK9uFYseUV66cJE56AgBvIJhdKHZMua7u\nMU2fPk5bt05i0hcAuBxd2S4UO6YciXxGNTVLVFGxJ5PFAgBYgGB2gObmiMrLn9WsWS+qvHybWloi\nQ/587JiydExM+gIAb6Ar2wHiLXd69NEZg65N7t4us66uS5HIuZLmyOykL9ZAA4CzEMwOEG+501Br\nk7u3y2xpiaiiYo8OHXrJ9KQv1kADgLMQzA4Q76CHZNYmW7GfNWugAcBZCGYHiHeSU0XF7rScysTp\nTwDgLCkF85EjRzR//nw9/fTTKi4utqpMvhOv5WvVsYuJpOtxAADJMR3MXV1dWrVqlc4991wry4Oz\nrDp20SmPAwBIjunlUo8++qgWLlyocePGWVkeAAB8zVSLedu2bRo7dqy+8IUv6Ac/+EHSv1dYmGfm\n4TxhuHU/ciSiO++s1cGDuSoubtP69XNUUODeZUx+fu0l6k/9/Vt/P9fdrIBhGEbiH+vvtttuUyAQ\nncn7hz/8QcXFxVq/fr3Gjh075O81NbWZK6XLFRbmDbvu5eXPnl3G1CrpGY0a9aFycsZr6tTTWrt2\ntqvWGpupv5dQf+rv1/r7ue6S+ZsSUy3mf//3f+/5/8WLF+s73/lOwlDG8PQuY6qVdJ46O1cqEgmo\nttZQVhZrjQHAq1LekrO75Qxr9W67mSspT6w1BgB/SHkd8+bNm60oh+8k2gqzd9vNPykSuUDRkGat\nMQB4HRuMZEiirTD7brt511079Mor/1cnThTovPNa1dGRq5aWiKvGmQEAyeF0qQyJtxVmvFOmgsF8\nbdp0m2bMuEBdXbfr6NEK1dYu5YhHAPAoWswZEm8rzKFa0expDQD+QIs5Q8LhmZo3r0pXXvlzzZtX\npXB4Rp/wjUiq1q5d6mk5x57B3D3OPNyznAEAzkaLOUPibYXZ24qulVSm9vaAamqiLefB9rTm2EYA\n8BaC2UG6w3fXLqm9vX+39WB7WtPFDQDeQle2g3SH76xZhuJ1W8czWBc3AMCdaDE7UGy39YoVV6m8\n/Nl+a54NI9qN/fbbOSoqWqOCggmaOPE0xzYCgMsRzA4U223du2927ziypJ7vSYamTGFsGQC8gGBO\nk0Q7fQ1l8HFkxpYBwGsI5jRJZfZ0vDXPkhHnewAAtyOY02Swnb6SaUWvWDFJ9fWVamn5tILB97Ry\n5Tzl539C8ZZPAQDcjWBOk9hW7/jxf9LMmVVqbFyhRK3oyso3en6uvd3QNdc8punTxw2rOxwA4A4E\nc5rEzrTu6BipxsbLFW+cOLYl/fbbOf1+LhL5jGpq5orNRADAewjmNImdaT1r1ouSjinecY6x49FF\nRWv6/Vz095jwBQBeRDBnSLRr+3pJ1ZJyVFT0psLhxZIGjkcXFEzQlClVqqvrUiRyrqQ5YsIXAHgT\nwZwh0a7t7We7qyMKhxf3jBfHjkdPnHi652zmioo9OnToJSZ8AYBHEcwZMtje19LA8ejuAB7qdwAA\n3kAwOxABDAD+RTBnWOwM7BUrJqmy8g1TO4QBANyPYM6w2BnY9fWVSa1tBgB4E8GcZrEt5LfeGqm+\nM7BbWj4t9sAGAP8imNNs4BrlSvVdoxwMvq/2dvbABgC/IpjTLHaN8tixJZoypXcG9sqV12vNGvbA\nBgC/IpjTLHaN8sUXnxgwhrxxYygjZQMAZB7BnGaDrVEGAEAimNMu3hrlZI9/BAB4H8HsALETwlgi\nBQD+RTCnUXfL+K23zlFz8yGNHVuiiy8+PmDJFEukAMC/COY0uvvuX6i2doykRkkr1NgY0O9+Z+jc\ncx9UvOMfAQD+YyqYu7q6tHLlSn3wwQfq7OzUN7/5Tc2cOdPqsnnOq6+2SbpD0g71bSGfPHmViooq\nNW7cZUwIAwCfMxXMzz33nILBoMLhsFpbW3XDDTcQzEkZq2ggt6lvC1k6pXHjLtOuXV9O+i8xYQwA\nvMlUMF977bWaPXu2JOnMmTMaOZIe8WRMnXpatbWGpDmStkg6KWm0pNkKhbYP628xYQwAvMlUoo4e\nPVqSdOzYMX3rW9/S3XffbWmhvGrt2tnKyoquYR4//oSkTh0+XKBQaHtP93WyLeHYHcSYMAYA3mC6\nqXv48GEtW7ZMt912m+bMmZPU7xQW5pl9OFc7ciSiZctqdfBgroqLR+rFF7+kgoL43c7Llu3o1xLO\nzq7W1q0LB/xcScmJfjuIlZS0O/r5dXLZ0oH6U3+/8nPdzTIVzB9//LG+8Y1v6KGHHtLnPve5pH+v\nqanNzMO53rJltfrpT8skBVRfb+jUqcG7nQ8cGK2+LeEDB0bHfd5Wr56mU6d6dxBbvXqGY5/fwsI8\nx5YtHag/9fdr/f1cd8n8TYmpYN6wYYOOHj2qJ554QuvWrVMgENBTTz2lrKwsU4XwuoMHc5Vst3Ps\nXtqDLZ2Kt4MYAMD9TAXzAw88oAceeMDqsnhWcXGb6ut7w/ZTn/pY5eXPDhhHbm6OqKOjU/n5T0v6\nWFOn5ikcnpvh0gMA0onp1Gmwfv2cft3OHR2dqqn5hmJnVC9fvke1tdHvS4aysqpYAgUAPkMwp0FB\nQf9u51mzXlS8rm1mWgMACOY0OHIkovLy53q6rsePPx53HDnZ8WUAgHcRzGlw5521/ZZAXXvtDzVv\n3sAzmTmrGQBAMKdB7Kzsw4fPV3X1pJ6NRCoqdvdMAGOmNQD4G8Fss+bmiA4fflPSXPXtomZLTQBA\nPASzzZYv36P33/+mpGpJOfrUp/apo+N8vfRSjqL7Zc+RlM9ELwCAJILZdtHADUqKbqt58uR+1dZ+\nU70nS1VLKmOiFwBAkjQi0wXwulCoVdEA1tn/dh/9KEkBjR7dqXnzqpjoBQCQRIvZduHwTGVnV+vA\ngdFnNxfpPvox2mKeNUuMLQMAehDMNgsG87V168KejdxbWiIyjB/qtddGSDqijo4ctbRE2OELACCJ\nYLZdc3NEy5btONtibj3bgs5SJBKdkV1bG916k1YzAEAimG0XXRZ1naSdamgIqr5+swoKJoitNwEA\n8TD5y2bR0N0pqUzS9WpsXKn9+9+R9P8kRcTWmwCAvghmm0VnZeeobwu5s/P/SLpV+fkbmZENAOiH\nYLZZODxT48f/Vv2XTDVLCmjChEu0ceONTPwCAPQgmG0WDObrs5/9lKK7fG0/+99O0YUNAIiHyV9p\n0Nj4SUnX9Xw9evRmzZpFFzYAYCBazGlQXNymvl3Z3ZuK0IUNAIhFizkN1q+fo1OnOGcZAJAYLWab\nNTdHtHRp7dlQblU4PIOWMgBgULSYbca5ywCA4SCYbRbdYKRVUq2kXNXV/Ym9sQEAgyKYbRYKtaqh\n4XlFz2OXNeEbAAANC0lEQVQOKBL5ombMWK9x4y7r2TubkAYAdCOYbRYOz9SvfvWiWlq6d/7aqcbG\nFWpspGsbADAQwWwzw5Bycg6rpeU5SccknSsOsAAADIZZ2TYrL39G778fUjSMDY0a9Yr6rmlm9y8A\nQF+0mG328svHJN2l7mDu7PxfzZvHmmYAQHwEs42amyMyjEL17bqWxjOmDAAYFF3ZNlq+fI+kd9W3\n6zo7+1AGSwQAcDpTLWbDMPTwww9r//79ysrK0iOPPKILL7zQ6rK5XnRiV5mkVZImKBD4o7Zvn5vh\nUgEAnMxUi/mXv/ylOjo6VF1drXvvvVeVlZVWl8sTQqFWSX8p6TuSvq7rr/+MrrzyLzNcKgCAk5lq\nMe/du1fTpk2TJF1xxRV68803LS2UV4TDM9XRsUGvvXZMhlGgjo7TevvtQ6qsfKPP3tlsMAIA6GUq\nmI8dO6a8vLzePzJypM6cOaMRIxiy7isYzFdW1nlqablDUkC1tYb27atUY+MKsXc2ACAeU8Gcm5ur\n48eP93ydbCgXFuYl/BmvOXAgW31nZTc3F/X7urEx6IvnxQ91HAr1p/5+5ee6m2UqmK+66irt2bNH\ns2fPVkNDg0pKSpL6vaamNjMP52r79zdIukXd65hPnvyDorO0o18XFbV4/nkpLMzzfB2HQv2pv1/r\n7+e6S+ZvSkwFc2lpqV555RWVlZVJEpO/hnDmzAWSqiXlKrolZ4Fmz/6hXntthKQj6ujI4bQpAEAP\nU8EcCAT07W9/2+qyeFJW1iF1dBSc/eqMsrI+Vnb2pxSJRM9orq01lJXFODMAIIqdv2w2deqFqquL\nHvkoGZo69cjZ9c0cZAEAGIhp1DZrbb1IfUO4tfWis+ubOcgCADAQLWabjR9/WA0NP5GUJ+moxo8/\nqnB4riQOsgAADEQw26yjIyCptyu7s3ODgsF8xpQBAHHRlW2zvXuz1Lcr+/XXszJZHACAwxHMtvtY\nfceTpSMZLAsAwOkIZptNnZoraYuk7ZK2nP0aAID4GGO22dq11ykv72UdOHBaoVDX2YlfAADERzDb\nLBjM19atC9XU1Kbm5ogqKvZwshQAYFAEcxocORJReflzqqvrUiSSLelLamj4hDhZCgAQi2BOgzvv\nrFVNTXQLzugEsGpJC9nxCwAwAJO/bNTcHFF5+bPasaNTfZdMRQ+0YMcvAMBAtJhttHz5nrMt5S3q\ne9Rjfv4fNH16Czt+AQAGIJht1HtYxRxJ1Ro9ulOzZknhcBmTvgAAcdGVbaPewyryJZVp1ixp48Yb\nCWUAwKBoMdsoHJ4pqUqNjUEVFdF1DQBIjGC2UfdhFYWFeWpqast0cQAALkBXNgAADkIwAwDgIAQz\nAAAOQjADAOAgBDMAAA5CMAMA4CAsl0qD7tOlOO4RAJAIwZwGfU+XamgwxHGPAIDB0JWdBgcP5qrv\n6VIc9wgAGAzBnAbFxW2K7pktSYY++ui/1dISyWSRAAAORTCnwfr1c1RUVCnpOUnVamxcqoqKPZku\nFgDAgRhjToOCgnyNG3eZGhuv7/ke3dkAgHhoMadJ7xGQkmQoFDqayeIAAByKFnOadB8BGV0ydZQj\nIAEAcZkK5mPHjum+++7T8ePH1dnZqfvvv19XXnml1WXzlO4jIAEAGIqpYH766af1+c9/XkuWLNHB\ngwd17733atu2bVaXDQAA3zEVzF//+teVlZUlSerq6lJ2dralhQIAwK8ChmEYQ/3AM888o02bNvX7\nXmVlpS6//HI1NTXp9ttv1wMPPKDJkyfbWlAAAPwgYTAPZv/+/brvvvu0fPlyffGLX0zqd5qa2sw8\nlOsVFub5tu4S9af+1N+v9fdz3aVo/c0w1ZX9xz/+UXfddZfWrl2rSy+91NQDAwCAgUwF8/e+9z11\ndHTokUcekWEYGjNmjNatW2d12QAA8B1TwfzEE09YXQ4AACB2/gIAwFEIZgAAHIRgBgDAQQhmAAAc\nhGAGAMBBCGYAAByEYAYAwEEIZgAAHIRgtllzc0QLFmzRrFkvqrx8m1paIpkuEgDAwUzt/IXkLV++\nRzU1iyUF1NBgSKrSxo03ZrpYAACHosVss0OHxkgKnP0qcPZrAADiI5htFgq1Suo+WdNQKHQ0k8UB\nADgcXdk2C4dnKju7WgcOjFYodFTh8IxMFwkA4GAEs82CwXxt3brQ14eFAwCSR1c2AAAOQjADAOAg\nBDMAAA5CMAMA4CAEMwAADkIwAwDgIAQzAAAOQjADAOAgBDMAAA5CMAMA4CAEMwAADkIwAwDgIAQz\nAAAOQjADAOAgBDMAAA5CMAMA4CApBfNbb72lyZMnq6Ojw6ryAADga6aD+dixYwqHw8rOzrayPAAA\n+JrpYH7ooYd0zz336Nxzz7WyPAAA+NrIRD/wzDPPaNOmTf2+V1RUpL/5m7/RpZdeKsMwbCscAAB+\nEzBMJOs111yjT37ykzIMQ/v27dMVV1yhqqoqO8oHAICvmArmvmbOnKkXXnhBo0aNsqpMAAD4VsrL\npQKBAN3ZAABYJOUWMwAAsA4bjAAA4CAEMwAADkIwAwDgIAQzAAAOYkswnzp1Sv/0T/+kRYsW6Y47\n7lBLS8uAn/nxj3+sW265RQsWLNC6devsKEbaGYahVatWqaysTEuWLNF7773X7993796tm266SWVl\nZfrZz36WoVLaJ1H9d+zYoVtuuUW33nqrHn744cwU0iaJ6t7toYce0ve+9700l85+ier/29/+VosW\nLdKiRYv0rW99y3P76yeq/3PPPae//du/1c0336wtW7ZkqJT22rdvnxYvXjzg+16/7nUbrP6mrnuG\nDZ5++mnj3/7t3wzDMIxf/OIXxr/8y7/0+/d3333XmD9/fs/XZWVlxv79++0oSlrt2rXLuP/++w3D\nMIyGhgZj6dKlPf/W2dlplJaWGm1tbUZHR4cxf/5848iRI5kqqi2Gqv/JkyeN0tJS49SpU4ZhGMY9\n99xj7N69OyPltMNQde+2ZcsWY8GCBcZ3v/vddBfPdonqP2/ePOPdd981DMMwfvaznxkHDx5MdxFt\nlaj+X/jCF4yjR48aHR0dRmlpqXH06NFMFNM2GzduNObOnWssWLCg3/f9cN0zjMHrb/a6Z0uLee/e\nvbr66qslSVdffbVeffXVfv9eVFSkp556qufrrq4uTxyGsXfvXk2bNk2SdMUVV+jNN9/s+be33npL\noVBIubm5GjVqlCZNmqT6+vpMFdUWQ9U/KytL1dXVysrKkuSd17zbUHWXpN/85jf63e9+p7KyskwU\nz3ZD1f/gwYPKz8/X008/rcWLF6u1tVUTJkzIUEntkej1/8xnPqPW1ladOnVKUnT/By8JhUJxez79\ncN2TBq+/2etewr2yE4m3l/b555+v3NxcSVJOTo6OHTvW79/POecc5efnS5IeffRRXXbZZQqFQqkW\nJeOOHTumvLy8nq9HjhypM2fOaMSIEQP+LScnR21tbZkopm2Gqn8gEFBBQYEkqaqqSu3t7fr85z+f\nqaJabqi6NzU16fHHH9cTTzyh559/PoOltM9Q9W9paVFDQ4NWrVqlCy+8UHfccYcuv/xy/fVf/3UG\nS2ytoeovSZdcconmz5+v8847T6WlpT3XR68oLS3VBx98MOD7frjuSYPX3+x1L+Vgvummm3TTTTf1\n+94//uM/6vjx45Kk48eP93thunV0dGjFihXKy8vzzHhjbm5uT70l9ftg5ubm9rtBOX78uMaMGZP2\nMtppqPpL0XG4cDisQ4cO6fHHH89EEW0zVN137typSCSi8vJyNTU16dSpU7r44ot1ww03ZKq4lhuq\n/vn5+broootUXFwsSZo2bZrefPNNTwXzUPXfv3+/XnrpJe3evVvnnXee7rvvPr3wwgu65pprMlXc\ntPHDdS8RM9c9W7qyr7rqKtXV1UmS6urqNHny5AE/s3TpUv35n/+5Hn74Yc906/Std0NDg0pKSnr+\nbeLEiTp06JCOHj2qjo4O1dfX68orr8xUUW0xVP0l6cEHH1RnZ6eeeOKJnq4drxiq7osXL9Z//Md/\naPPmzbr99ts1d+5cT4WyNHT9L7zwQp04caJnQtTevXv1Z3/2Zxkpp12Gqn9eXp5Gjx6trKysnhbU\n0aNHM1VUWxkxG0n64brXV2z9JXPXvZRbzPEsXLhQy5cv16233qqsrCx997vflRSdiR0KhXT69Gm9\n/vrr6uzsVF1dnQKBgO69915dccUVdhQnbUpLS/XKK6/0jCNWVlZqx44dam9v180336wVK1bo7/7u\n72QYhm6++WaNGzcuwyW21lD1/4u/+Att27ZNkyZN0uLFixUIBLRkyRJ95StfyXCprZHotfe6RPV/\n5JFHdM8990iS/uqv/krTp0/PZHEtl6j+3bNys7KydNFFF+nGG2/McInt0d3I8tN1r6/Y+pu97rFX\nNgAADsIGIwAAOAjBDACAgxDMAAA4CMEMAICDEMwAADgIwQwAgIMQzAAAOMj/B2dnbEooC2B1AAAA\nAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X2, y2 = make_data(200)\n", "plt.scatter(X2.ravel(), y2);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We will duplicate the preceding code to plot the validation curve for this larger dataset; for reference let's over-plot the previous results as well:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "degree = np.arange(21)\n", "train_score2, val_score2 = validation_curve(PolynomialRegression(), X2, y2,\n", " 'polynomialfeatures__degree', degree, cv=7)\n", "\n", "plt.plot(degree, np.median(train_score2, 1), color='blue', label='training score')\n", "plt.plot(degree, np.median(val_score2, 1), color='red', label='validation score')\n", "plt.plot(degree, np.median(train_score, 1), color='blue', alpha=0.3, linestyle='dashed')\n", "plt.plot(degree, np.median(val_score, 1), color='red', alpha=0.3, linestyle='dashed')\n", "plt.legend(loc='lower center')\n", "plt.ylim(0, 1)\n", "plt.xlabel('degree')\n", "plt.ylabel('score');" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The solid lines show the new results, while the fainter dashed lines show the results of the previous smaller dataset.\n", "It is clear from the validation curve that the larger dataset can support a much more complicated model: the peak here is probably around a degree of 6, but even a degree-20 model is not seriously over-fitting the data—the validation and training scores remain very close.\n", "\n", "Thus we see that the behavior of the validation curve has not one but two important inputs: the model complexity and the number of training points.\n", "It is often useful to to explore the behavior of the model as a function of the number of training points, which we can do by using increasingly larger subsets of the data to fit our model.\n", "A plot of the training/validation score with respect to the size of the training set is known as a *learning curve.*\n", "\n", "The general behavior we would expect from a learning curve is this:\n", "\n", "- A model of a given complexity will *overfit* a small dataset: this means the training score will be relatively high, while the validation score will be relatively low.\n", "- A model of a given complexity will *underfit* a large dataset: this means that the training score will decrease, but the validation score will increase.\n", "- A model will never, except by chance, give a better score to the validation set than the training set: this means the curves should keep getting closer together but never cross.\n", "\n", "With these features in mind, we would expect a learning curve to look qualitatively like that shown in the following figure:" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "![](figures/05.03-learning-curve.png)\n", "[figure source in Appendix](06.00-Figure-Code.ipynb#Learning-Curve)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The notable feature of the learning curve is the convergence to a particular score as the number of training samples grows.\n", "In particular, once you have enough points that a particular model has converged, *adding more training data will not help you!*\n", "The only way to increase model performance in this case is to use another (often more complex) model." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Learning curves in Scikit-Learn\n", "\n", "Scikit-Learn offers a convenient utility for computing such learning curves from your models; here we will compute a learning curve for our original dataset with a second-order polynomial model and a ninth-order polynomial:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABDAAAAGMCAYAAAAspFK/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmcU+Xd///3yZ6ZZGZYhk0BUUHspsKtUutuqYi2VSuV\narHWXWz1621be+vPpSo3tdJNWxWx7lUq1q0UtVKXtriht9hSFS1uKALDOkv2nPP740ySySwMy2TO\nSfJ6Ph555Gwkn8k10XPec53rMizLsgQAAAAAAOBiHqcLAAAAAAAA6A0BBgAAAAAAcD0CDAAAAAAA\n4HoEGAAAAAAAwPUIMAAAAAAAgOsRYAAAAAAAANcjwACgX/3qV5oxY4bTZZRENpvVr3/9ax155JGa\nOHGivvvd72rlypVOlwUAQMWr5PMLSbr77rs1efJk/dd//Zcuvvhibdy40emSgIpHgAFAkmQYhtMl\nlMTcuXP1yCOPaNasWfrjH/+oYcOG6eyzz1YikXC6NAAAKl6lnl8sWLBAv/zlL/W9731PDz74oDwe\nj8466yynywIqHgEGgIr26KOP6oILLtAXv/hF7bbbbrrmmmu0adMmvfrqq06XBgAAytQ999yj73zn\nO/r617+u3XffXbNmzdInn3yiJUuWOF0aUNF8ThcAoP+tXLlSV1xxhd58801NmDBBo0aNKtr/6quv\n6vrrr9c777yjUaNG6ayzztLXv/71/P677rpLd9xxh2KxmI4//ni98847OvHEE3X88cdrxowZGjdu\nnP7+978rmUzqscceUzKZ1E9+8hO9+OKLGjBggI499lhdeOGF8vv92/R+HR155JFavXp1l+0HHHCA\n7rnnni7br732Wo0dOza/7vHYuW1zc/P2f3AAAKBH1XR+8fHHH2vffffNr4dCIY0ePVqvv/66vvSl\nL+3Q5wegdwQYQJVJpVI655xztP/++2vWrFl68cUXNWvWLE2cOFGS1NTUpHPPPVcXX3yxDjvsMC1f\nvlxXXXWV6uvrdfjhh+vxxx/XTTfdpFmzZmns2LGaM2eOXn31VZ144on593j44Yd1xx13KBAIqKGh\nQSeddJL22msvPfLII9qwYYOuvvpqZTIZXXrppb2+X2d//OMfZZpml+25k5XODjzwwKL1Bx98UJlM\nRvvvv/9OfIoAAKCjaju/GDRokNasWZNftyxLa9as0ebNm3fykwSwNQQYQJV54YUXtGnTJl199dUK\n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\nQoIWLXpGkZGRKioqVHR0jO85tm37Pj527Jiio6MVH19LktSmTVstWPCkrryykxo3birLshQZGamI\niMgzvveUKQ9o3rwsHT16RB06XClJOnIkX4mJDSRJvXtfL0nKz89TkyZNf3z9dpo/f64kqV69CxUS\nEiJJ2rt3tx59dLokqbS0VBdfXP/3vJVG4pzknAQAOAMBhiHKl5CoGgEGAPxWlmXpqqu669FHM9W5\n8//Isiw9//xStWrVWsnJf9Enn/xbH3/84Vmf26hRY7399pvq12+A8vIOKy/vkCRp1qyZSkvLUGJi\nQz377FM6ePB7SZLL5arww2JcXJzc7iIdOZKvmjXjtXnzJ6pfP/Es38mu8FlJSYnWrl2t9PRpkqRB\ng27S1Vdfo1q1auu77/bpoosu1rJli1W/fgPVqlVLu3Z9pSZNmmrz5k2+1y//bbskJSY2VGpqumrX\nrqPPPvtUR47k/+73E38c5yTnJADgTAQYhvAtIWEPDAD4Xa67rq9uvjlZOTn/lCR17NhZs2Y9onfe\neUsxMTEKCQlVSUmJ7wes8j87dfofbdjwsUaOvFV16tRVXNwFkqRrr+2l1NTxql69hhISaqug4Jgk\nqVWr1srImKL775/k+97jxqVo0qT75XK5FBsbq5SUNO3a9VWFH+Z+vhFjWFiYqlevodtvH6bIyEhd\nccWfVLduXd1//0RNm5Yul8ul+PhauvnmW1SvXj09/vgM2bat0NBQTZgwucLfQZLGjp2gBx+corKy\nMrlcLt9jEDick5yTAICKLPunkft54PDhE4EuwZHC3/iXagwdqMIHpslzx+gq/d4JCbGMi8MwJs7D\nmDgT4/LHJSTEBrqESsF54Cxcm87EuDiPk8ckbM3bihvwFxWmpslz95hAl1NlnDwm55Nf6i+4jaoh\nfLdRZQkJAAAAAMBABBiGsNzlAQZLSAAAAAAA5iHAMIRvBgb3RwcAAAAAGIgAwxSe8tuoMgMDAAAA\nAGAeAgxDlN+FhNuoAgAAAABM5NcAw7ZtTZ06VQMGDNCQIUP07bffVji+Zs0a9evXTwMGDNCLL77o\nz1KMZ7nLZ2AQYAAAzEVvAQBA8PJrgLF69WqdPHlSOTk5Gjt2rDIzM33HSktLNX36dC1atEjZ2dla\nvny5jhw54s9yjGaVLyFhBgYAwGD0FgAABC+/BhibNm1S586dJUlt2rRRbm6u79iuXbvUoEEDxcTE\n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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.learning_curve import learning_curve\n", "\n", "fig, ax = plt.subplots(1, 2, figsize=(16, 6))\n", "fig.subplots_adjust(left=0.0625, right=0.95, wspace=0.1)\n", "\n", "for i, degree in enumerate([2, 9]):\n", " N, train_lc, val_lc = learning_curve(PolynomialRegression(degree),\n", " X, y, cv=7,\n", " train_sizes=np.linspace(0.3, 1, 25))\n", "\n", " ax[i].plot(N, np.mean(train_lc, 1), color='blue', label='training score')\n", " ax[i].plot(N, np.mean(val_lc, 1), color='red', label='validation score')\n", " ax[i].hlines(np.mean([train_lc[-1], val_lc[-1]]), N[0], N[-1],\n", " color='gray', linestyle='dashed')\n", "\n", " ax[i].set_ylim(0, 1)\n", " ax[i].set_xlim(N[0], N[-1])\n", " ax[i].set_xlabel('training size')\n", " ax[i].set_ylabel('score')\n", " ax[i].set_title('degree = {0}'.format(degree), size=14)\n", " ax[i].legend(loc='best')" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "This is a valuable diagnostic, because it gives us a visual depiction of how our model responds to increasing training data.\n", "In particular, when your learning curve has already converged (i.e., when the training and validation curves are already close to each other) *adding more training data will not significantly improve the fit!*\n", "This situation is seen in the left panel, with the learning curve for the degree-2 model.\n", "\n", "The only way to increase the converged score is to use a different (usually more complicated) model.\n", "We see this in the right panel: by moving to a much more complicated model, we increase the score of convergence (indicated by the dashed line), but at the expense of higher model variance (indicated by the difference between the training and validation scores).\n", "If we were to add even more data points, the learning curve for the more complicated model would eventually converge.\n", "\n", "Plotting a learning curve for your particular choice of model and dataset can help you to make this type of decision about how to move forward in improving your analysis." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Validation in Practice: Grid Search\n", "\n", "The preceding discussion is meant to give you some intuition into the trade-off between bias and variance, and its dependence on model complexity and training set size.\n", "In practice, models generally have more than one knob to turn, and thus plots of validation and learning curves change from lines to multi-dimensional surfaces.\n", "In these cases, such visualizations are difficult and we would rather simply find the particular model that maximizes the validation score.\n", "\n", "Scikit-Learn provides automated tools to do this in the grid search module.\n", "Here is an example of using grid search to find the optimal polynomial model.\n", "We will explore a three-dimensional grid of model features; namely the polynomial degree, the flag telling us whether to fit the intercept, and the flag telling us whether to normalize the problem.\n", "This can be set up using Scikit-Learn's ``GridSearchCV`` meta-estimator:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "from sklearn.grid_search import GridSearchCV\n", "\n", "param_grid = {'polynomialfeatures__degree': np.arange(21),\n", " 'linearregression__fit_intercept': [True, False],\n", " 'linearregression__normalize': [True, False]}\n", "\n", "grid = GridSearchCV(PolynomialRegression(), param_grid, cv=7)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Notice that like a normal estimator, this has not yet been applied to any data.\n", "Calling the ``fit()`` method will fit the model at each grid point, keeping track of the scores along the way:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "grid.fit(X, y);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Now that this is fit, we can ask for the best parameters as follows:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "{'linearregression__fit_intercept': False,\n", " 'linearregression__normalize': True,\n", " 'polynomialfeatures__degree': 4}" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grid.best_params_" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Finally, if we wish, we can use the best model and show the fit to our data using code from before:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model = grid.best_estimator_\n", "\n", "plt.scatter(X.ravel(), y)\n", "lim = plt.axis()\n", "y_test = model.fit(X, y).predict(X_test)\n", "plt.plot(X_test.ravel(), y_test, hold=True);\n", "plt.axis(lim);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The grid search provides many more options, including the ability to specify a custom scoring function, to parallelize the computations, to do randomized searches, and more.\n", "For information, see the examples in [In-Depth: Kernel Density Estimation](05.13-Kernel-Density-Estimation.ipynb) and [Feature Engineering: Working with Images](05.14-Image-Features.ipynb), or refer to Scikit-Learn's [grid search documentation](http://Scikit-Learn.org/stable/modules/grid_search.html)." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Summary\n", "\n", "In this section, we have begun to explore the concept of model validation and hyperparameter optimization, focusing on intuitive aspects of the bias–variance trade-off and how it comes into play when fitting models to data.\n", "In particular, we found that the use of a validation set or cross-validation approach is *vital* when tuning parameters in order to avoid over-fitting for more complex/flexible models.\n", "\n", "In later sections, we will discuss the details of particularly useful models, and throughout will talk about what tuning is available for these models and how these free parameters affect model complexity.\n", "Keep the lessons of this section in mind as you read on and learn about these machine learning approaches!" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "\n", "< [Introducing Scikit-Learn](05.02-Introducing-Scikit-Learn.ipynb) | [Contents](Index.ipynb) | [Feature Engineering](05.04-Feature-Engineering.ipynb) >" ] } ], "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.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }