{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Supervised Learning\n", "## Overfitting and Regularization\n", "\n", "Alexander Goncearenco\n", "\n", "March 7, 2019" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Recap supervised learning and regression" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from sklearn.datasets import load_boston\n", "\n", "boston = load_boston()\n", "X = boston.data\n", "y = boston.target\n", "\n", "# boston.DESCR.splitlines()\n", "# ?load_boston" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('X:', (506, 13), 'y:', (506,))" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"X:\", X.shape, \"y:\", y.shape" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7406426641094095" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import LinearRegression\n", "\n", "lr_house_price = LinearRegression().fit(X, y)\n", "lr_house_price.score(X, y)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "predicted_price = lr_house_price.predict(X)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(506,)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predicted_price.shape" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import pandas as pd\n", "import seaborn as sb\n", "\n", "d = pd.DataFrame(X)\n", "d['predicted_price'] = pd.Series(predicted_price)\n", "d['actual_price'] = pd.Series(y)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789101112predicted_priceactual_price
00.0063218.02.310.00.5386.57565.24.09001.0296.015.3396.904.9830.00384324.0
10.027310.07.070.00.4696.42178.94.96712.0242.017.8396.909.1425.02556221.6
20.027290.07.070.00.4697.18561.14.96712.0242.017.8392.834.0330.56759734.7
30.032370.02.180.00.4586.99845.86.06223.0222.018.7394.632.9428.60703633.4
40.069050.02.180.00.4587.14754.26.06223.0222.018.7396.905.3327.94352436.2
\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9 10 \\\n", "0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3 \n", "1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8 \n", "2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 17.8 \n", "3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7 \n", "4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7 \n", "\n", " 11 12 predicted_price actual_price \n", "0 396.90 4.98 30.003843 24.0 \n", "1 396.90 9.14 25.025562 21.6 \n", "2 392.83 4.03 30.567597 34.7 \n", "3 394.63 2.94 28.607036 33.4 \n", "4 396.90 5.33 27.943524 36.2 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### How we evaluate performance of models?" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789101112predicted_priceactual_pricesquared_error
00.0063218.02.310.00.5386.57565.24.09001.0296.015.3396.904.9830.00384324.036.046135
10.027310.07.070.00.4696.42178.94.96712.0242.017.8396.909.1425.02556221.611.734478
20.027290.07.070.00.4697.18561.14.96712.0242.017.8392.834.0330.56759734.717.076757
30.032370.02.180.00.4586.99845.86.06223.0222.018.7394.632.9428.60703633.422.972499
40.069050.02.180.00.4587.14754.26.06223.0222.018.7396.905.3327.94352436.268.169392
\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9 10 \\\n", "0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3 \n", "1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8 \n", "2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 17.8 \n", "3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7 \n", "4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7 \n", "\n", " 11 12 predicted_price actual_price squared_error \n", "0 396.90 4.98 30.003843 24.0 36.046135 \n", "1 396.90 9.14 25.025562 21.6 11.734478 \n", "2 392.83 4.03 30.567597 34.7 17.076757 \n", "3 394.63 2.94 28.607036 33.4 22.972499 \n", "4 396.90 5.33 27.943524 36.2 68.169392 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Squared error for each example:\n", "\n", "d['squared_error'] = (d['predicted_price'] - d['actual_price'])**2\n", "d.head()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-21.894831181729202" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Overall performance: mean squared error:\n", "\n", "-d['squared_error'].mean()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "21.894831181729202" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# It is the same as mean_squared_error in scikit-learn\n", "\n", "from sklearn.metrics import mean_squared_error\n", "mean_squared_error(d['actual_price'], d['predicted_price'])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'np' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Sometimes Root Mean Squared Error (RMSE) is used\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;31m# RMSE preserves the scale of the units (e.g. price in dollars)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmean_squared_error\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'actual_price'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'predicted_price'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'np' is not defined" ] } ], "source": [ "# Sometimes Root Mean Squared Error (RMSE) is used\n", "# RMSE preserves the scale of the units (e.g. price in dollars)\n", "np.sqrt(mean_squared_error(d['actual_price'], d['predicted_price']))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## But will the model be able to predict the future cases?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remember what happens when we train and predict using KNearestNeighbors(K=1)?" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.neighbors import KNeighborsRegressor\n", "\n", "predicted_price = KNeighborsRegressor(n_neighbors=1).fit(X, y).predict(X)\n", "actual_price = y\n", "mean_squared_error(actual_price, predicted_price)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Solution: split the dataset\n", "\n", "The learning algorithm uses examples only from the training set and it cannot use examples from any of the holdout sets.\n", "\n", "* Training set (70% - 95%)\n", "\n", "* Holdout sets: (5% - 30%)\n", " - Validation set\n", " - Test set\n", " \n", "\n", "We want good performance on a holdout set, using the data the model has not seen before!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Why do we need two holdout sets?\n", "\n", "We need validation set to choose the learning algorithm and its hyperparameters." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((339, 13), (339,))" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train.shape, y_train.shape" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((167, 13), (167,))" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_test.shape, y_test.shape" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "20.72402343733974" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Linear Regression\n", "\n", "predicted_price = LinearRegression().fit(X_train, y_train).predict(X_test)\n", "mean_squared_error(y_test, predicted_price)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "44.078263473053894" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# KNN Regression(K=1)\n", "\n", "predicted_price = KNeighborsRegressor(n_neighbors=1).fit(X_train, y_train).predict(X_test)\n", "mean_squared_error(y_test, predicted_price)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Overfitting and Underfitting\n", "\n", "\n", "* Overfitting - model performs well on the training set but performs poorly on the test set\n", "\n", "* Underfitting - model does not perform well on the training set but its performance on test set is not much different\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "from sklearn.preprocessing import PolynomialFeatures\n", "from sklearn.pipeline import Pipeline\n", "\n", "X12 = X[:, 12].reshape(-1, 1) # only one feature only but maintain 2D array shape\n", "X12_train, X12_test, y_train, y_test = train_test_split(X12, y, test_size=0.33, random_state=42)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Examples of underfitting and overfitting:\n", "\n", "m1 - Linear Regression\n", "\n", "m2 - Polynomial regression of the second degree\n", "\n", "m5 - Polynomial regression of the fifth degree" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Model m1:\n", "\n", "$$ y = \\beta_1 x + \\beta_0 $$" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "m1 = LinearRegression(fit_intercept=True)\n", "m1.fit(X12_train, y_train)\n", "m1_train_predicted = m1.predict(X12_train)\n", "m1_test_predicted = m1.predict(X12_test)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "38.71120361270592" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_squared_error(y_train, m1_train_predicted)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "38.410075117662345" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_squared_error(y_test, m1_test_predicted)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sb.scatterplot(X12_train.flatten(), y_train)\n", "sb.scatterplot(X12_train.flatten(), m1_train_predicted)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sb.scatterplot(X12_test.flatten(), y_test)\n", "sb.scatterplot(X12_test.flatten(), m1_test_predicted)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Model m2:\n", "\n", "$$ y = \\beta_1 x + \\beta_2 x^2 + \\beta_0 $$" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "m2 = Pipeline([('poly', PolynomialFeatures(degree=2)),\n", " ('linear', LinearRegression(fit_intercept=True))])\n", "m2.fit(X12_train, y_train)\n", "m2_train_predicted = m2.predict(X12_train)\n", "m2_test_predicted = m2.predict(X12_test)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "29.442905187577004" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_squared_error(y_train, m2_train_predicted)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "32.51162005950131" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_squared_error(y_test, m2_test_predicted)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sb.scatterplot(X12_train.flatten(), y_train)\n", "sb.scatterplot(X12_train.flatten(), m2_train_predicted)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sb.scatterplot(X12_test.flatten(), y_test)\n", "sb.scatterplot(X12_test.flatten(), m2_test_predicted)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Model m10:\n", "\n", "$$ y = \\beta_1 x + \\beta_2 x^2 + \\beta_3 x^3 + ... + \\beta_{10} x^{10} + \\beta_0 $$" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "m10 = Pipeline([('poly', PolynomialFeatures(degree=10)),\n", " ('linear', LinearRegression(fit_intercept=True))])\n", "m10.fit(X12_train, y_train)\n", "m10_train_predicted = m10.predict(X12_train)\n", "m10_test_predicted = m10.predict(X12_test)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "25.73897546019498" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_squared_error(y_train, m10_train_predicted)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "29.210589562808984" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_squared_error(y_test, m10_test_predicted)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sb.scatterplot(X12_train.flatten(), y_train)\n", "sb.scatterplot(X12_train.flatten(), m10_train_predicted)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sb.scatterplot(X12_test.flatten(), y_test)\n", "sb.scatterplot(X12_test.flatten(), m10_test_predicted)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Let us summarize the models' errors" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "M1 train 39.0\n", "M1 test 38.0\n", "M2 train 29.0\n", "M2 test 33.0\n", "M10 train 26.0\n", "M10 test 29.0\n" ] } ], "source": [ "print(\"M1 train\", round(mean_squared_error(y_train, m1_train_predicted)))\n", "print(\"M1 test\", round(mean_squared_error(y_test, m1_test_predicted)))\n", " \n", "print(\"M2 train\", round(mean_squared_error(y_train, m2_train_predicted)))\n", "print(\"M2 test\", round(mean_squared_error(y_test, m2_test_predicted)))\n", "\n", "print(\"M10 train\", round(mean_squared_error(y_train, m10_train_predicted)))\n", "print(\"M10 test\", round(mean_squared_error(y_test, m10_test_predicted)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will talk about model selection and feature selection in mode detail in one of the next classes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Is there only one way to split the dataset? Cross-validation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cross-validation is reusing the dataset and creates multiple train-holdout subset pairs.\n", "\n", "The major assumption is that our whole dataset is a representative sample. By taking the random subsamples from the whole dataset we can estimate the performance of the model on previously unseen data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### LeaveOneOut\n", "\n", "LeaveOneOut (or LOO) is a simple cross-validation. Each learning set is created by taking all the samples except one, the test set being the sample left out. Thus, for n samples, we have n different training sets and n different tests set. This cross-validation procedure does not waste much data as only one sample is removed from the training set" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### KFold\n", "KFold divides all the samples in k groups of samples, called folds (if k = n, this is equivalent to the Leave One Out strategy), of equal sizes (if possible). The prediction function is learned using \n", "k−1folds, and the fold left out is used for test.\n", "\n", "![](https://scikit-learn.org/stable/_images/sphx_glr_plot_cv_indices_0041.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### ShuffleSplit\n", "\n", "The ShuffleSplit iterator will generate a user defined number of independent train / test dataset splits. Samples are first shuffled and then split into a pair of train and test sets.\n", "\n", "![](https://scikit-learn.org/stable/_images/sphx_glr_plot_cv_indices_0061.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### TimeSeriesSplit\n", "\n", "TimeSeriesSplit is a variation of k-fold which returns first \n", "k folds as train set and the (k+1)th fold as test set. Note that unlike standard cross-validation methods, successive training sets are supersets of those that come before them. Also, it adds all surplus data to the first training partition, which is always used to train the model.\n", "\n", "![](https://scikit-learn.org/stable/_images/sphx_glr_plot_cv_indices_0101.png)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.716098217736928" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "KNeighborsRegressor().fit(X, y).score(X, y)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7079649368669324" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.model_selection import ShuffleSplit\n", "from sklearn.model_selection import cross_val_score\n", "\n", "reg = LinearRegression()\n", "cv = ShuffleSplit(n_splits=100, test_size=0.1, random_state=0)\n", "\n", "# here we try to maximize the score, that is why neg_mean_squared_error\n", "# essentially, score = - cost_function\n", "s = cross_val_score(reg, X, y, cv=cv)\n", "pd.Series(s).hist()\n", "s.mean() # R^2" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "['accuracy',\n", " 'adjusted_mutual_info_score',\n", " 'adjusted_rand_score',\n", " 'average_precision',\n", " 'balanced_accuracy',\n", " 'brier_score_loss',\n", " 'completeness_score',\n", " 'explained_variance',\n", " 'f1',\n", " 'f1_macro',\n", " 'f1_micro',\n", " 'f1_samples',\n", " 'f1_weighted',\n", " 'fowlkes_mallows_score',\n", " 'homogeneity_score',\n", " 'mutual_info_score',\n", " 'neg_log_loss',\n", " 'neg_mean_absolute_error',\n", " 'neg_mean_squared_error',\n", " 'neg_mean_squared_log_error',\n", " 'neg_median_absolute_error',\n", " 'normalized_mutual_info_score',\n", " 'precision',\n", " 'precision_macro',\n", " 'precision_micro',\n", " 'precision_samples',\n", " 'precision_weighted',\n", " 'r2',\n", " 'recall',\n", " 'recall_macro',\n", " 'recall_micro',\n", " 'recall_samples',\n", " 'recall_weighted',\n", " 'roc_auc',\n", " 'v_measure_score']" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sklearn.metrics\n", "sorted(sklearn.metrics.SCORERS.keys())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bias - Variance Tradeoff\n", "\n", "The **bias** is an error from erroneous assumptions in the learning algorithm. High bias can cause an algorithm to miss the relevant relations between features and target outputs (underfitting).\n", "\n", "\n", "The **variance** is an error from sensitivity to small fluctuations in the training set. High variance can cause an algorithm to model the random noise in the training data, rather than the intended outputs (overfitting)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Let's plot some learning curves" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "scrolled": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "#From http://scikit-learn.org/stable/auto_examples/model_selection/plot_learning_curve.html\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.naive_bayes import GaussianNB\n", "from sklearn.svm import SVC\n", "from sklearn.datasets import load_digits\n", "from sklearn.model_selection import learning_curve\n", "from sklearn.model_selection import ShuffleSplit\n", "\n", "def plot_learning_curve(estimator, title, X, y, ylim=None, cv=None,\n", " n_jobs=None, train_sizes=np.linspace(.3, 1.0, 10)):\n", " plt.figure()\n", " plt.title(title)\n", " if ylim is not None:\n", " plt.ylim(*ylim)\n", " plt.xlabel(\"Training examples\")\n", " plt.ylabel(\"Score\")\n", " train_sizes, train_scores, test_scores = learning_curve(\n", " estimator, X, y, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes, scoring=\"neg_mean_squared_error\")\n", " train_scores_mean = np.mean(train_scores, axis=1)\n", " train_scores_std = np.std(train_scores, axis=1)\n", " test_scores_mean = np.mean(test_scores, axis=1)\n", " test_scores_std = np.std(test_scores, axis=1)\n", " plt.grid()\n", "\n", " plt.fill_between(train_sizes, train_scores_mean - train_scores_std,\n", " train_scores_mean + train_scores_std, alpha=0.1,\n", " color=\"r\")\n", " plt.fill_between(train_sizes, test_scores_mean - test_scores_std,\n", " test_scores_mean + test_scores_std, alpha=0.1, color=\"g\")\n", " plt.plot(train_sizes, train_scores_mean, 'o-', color=\"r\",\n", " label=\"Training score\")\n", " plt.plot(train_sizes, test_scores_mean, 'o-', color=\"g\",\n", " label=\"Cross-validation score\")\n", "\n", " plt.legend(loc=\"best\")\n", " return plt" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "scrolled": true, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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Fx0tEom0qKtzIBCo+92qqqpq8HvW1XXHawK7rnanqmldgKHAykbWfQr0BiYCryakzwBmtOT448eP1wOtXr267vX3XvmenvrYqUmXSY9OUv/tfuXnNFj8t/v1lEdP0VMePUUnPTpJJz06SU959BQ99bFT9XuvfK/BORO9+eabOmnSpKTr3n77bZ08ebJedNFFOmLECFVV/e1vf6sjR47UkSNH6r333quqqlVVVXr22WfrmDFjdOTIkTp37lxVVb355pt1xIgROnr0aP3hD3/Y4Ph/+tOf9Kabbqp7/9hjj+mNN96oqqrnn3++jhs3To899lh94IEH6rYZOnSo7tq1S1VVc3NzVVXVcRy94YYbdMSIEXr22WfrWWedpc8884yqqv7iF7/QkpISHTlypF5zzTXqOI4+88wzmpubq0ceeaSOHTtWa2pq9NRTT9VFixapquqTTz6po5udw6YAAA/BSURBVEaN0pEjR+qPf/zjunPn5ubqrbfeqmPGjNETTjhBd+zY0eCaSktLdezYsTp27Fg97rjjtKKiQlVVf/WrX+moUaN0zJgxevPNN6uq6ocffqgnnHCCjh49Wr/85S/rnj17VFX11FNP1RkzZugpp5yid999t+7cuVMvvPBCLSkp0ZKSEl24cGGD8yb+Hr399ttJ/z+7su54Tap2XS0BLNYW3sPT1TsrcX6LLwFrY+n9JdbiLCLH41a3lQGLgOEicpiIZAKXAC90RF6D0eRTvgejQbe0giIIHvG0uLF85cqVjB8/vtH177//Pj/96U9ZvXo1S5Ys4bHHHuO9997j3Xff5aGHHuLDDz/kn//8JwMHDmTZsmWsXLmSadOmsWfPHubPn183bftPfvKTBse+6KKLmDdvXt37p556iosvvhiARx99lCVLlrB48WL+8Ic/UFZW1mge58+fz7p161ixYgUPPfRQ3TNKAG688UYWLVrEypUrqa2t5cUXX+Siiy6ipKSEhx9+mKVLl5KdnV23/bZt27j55pt56623WLp0KYsWLeK5554D3Hm1TjzxRJYtW8Ypp5xSV3JLdPfdd3P//fezdOlSFixYQHZ2Nq+88grPPfcc7733HsuWLePHP/4xANOnT+dXv/oVy5cvZ/To0fziF7+oO86+fft45513+OEPf8j3vvc9vv/977No0SKeffZZrr76/2/v7IOsrK87/vmyL2zW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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# http://scikit-learn.org/stable/auto_examples/model_selection/plot_learning_curve.html\n", "title = \"Learning Curves\"\n", "\n", "# Create the CV iterator\n", "cv_iterator = KFold(n_splits=5, shuffle=True, random_state=10)\n", "model = LinearRegression()\n", "# model = KNeighborsRegressor(n_neighbors=2)\n", "\n", "plot_learning_curve(model, title, X, y, cv=cv_iterator, n_jobs=4)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Lasso Regression\n", "\n", "“when you have two competing theories that make exactly the same predictions, the simpler one is the better.” - William of Ockham\n", "\n", "So for a regression model LASSO (least absolute shrinkage and selection operator), or more commonly referred to as L1 regularization, could be used to penalize for the large number of parameters.\n", "\n", "* L1 regularization (the last term of the equation) favors a sparse model with features having coefficients equal to zero or close to zero:\n", "\n", "$$ Loss = ||y - Xw||^2_2 + \\alpha * ||w||_1$$\n", "\n", "L1 norm $||w||_1$ is simply a sum of absolute values of coefficients and $\\alpha$ regulates the strength of regularization. A zero coefficient for a feature essentially mean that the feature is eliminated.\n", "\n" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "scrolled": true, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "34.634124343427146" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import Lasso, LinearRegression\n", "from sklearn.model_selection import cross_val_score, KFold\n", "from sklearn.metrics import mean_squared_error\n", "\n", "llr = Lasso(alpha=0.5)\n", "llr.fit(X, y)\n", "preds = llr.predict(X)\n", "\n", "# Create the CV iterator\n", "cv_iterator = KFold(n_splits=5, shuffle=True, random_state=10)\n", "\n", "# Note: default in sklearn: higher return values are better than lower return values\n", "cross_val_score(llr, X, y, cv=cv_iterator, scoring=\"neg_mean_squared_error\")\n", "cross_val_score(llr, X, y, cv=5, scoring=\"neg_mean_squared_error\")\n", "abs(np.mean(cross_val_score(llr, X, y, cv=5, scoring=\"neg_mean_squared_error\")))" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "scrolled": true, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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XP3PVt9Ta83kyZMZP348P/zwA2vXruXOO+9ky5Ytdc4Lh8N7an6bE8062xrqC8UTTzzRIG/VvkBjKVAEQWhIpxCKWf+dxfhnxidcJjw7gUtevwRvsG6acW/Qy2///dtGr5v131lNPvP999/H6XRyySWXxPYNHz6cY445hsWLF3Pcccdx3nnnMXr0aADuvvvuWNruaNrw6upqTj31VIYNG8bgwYN58cUXAZg9e3YsHXj9OS4AHn74YW644YbY9jPPPMOVV14JmAR+RxxxBIMGDeKxxx5LaHtmZiZgxO6KK65g4MCBnHrqqbHU5gB33HEHI0eOZPDgwcycOROtNS+//DIrVqzgoosuYvjw4fh8PsaPH090MOT8+fMZMmQIgwcPjiUpjD5vzpw5DBs2jNGjRzcQU4AlS5bEJn467LDDqKysBEy68yFDhjBs2DBmz54NwKpVqxg9ergzb8sAAA9PSURBVDRDhw5l8uTJlJWVATB+/Hh+97vfceyxx3Lfffexbds2zjrrLEaOHMnIkSP56KOPGv9BBaETI+MogJpw4nTije1vCatXr45lUU3E8uXLWb16Nd26dWPlypU8/fTTfPrpp2itOfLIIzn22GPZsGEDvXv35o033gBMmo2dO3eycOFCvv32W5RS7Nq1q8G9zz77bMaMGcNdd90FwIsvvsicOXMAeOqpp+jSpQs+n4+RI0dy1lln0bVr14Q2Lly4kHXr1vH111+zZcsWBg4cyG9+8xsArrjiCm655RYAzj//fF5//XXOPvtsHnzwQW6//XaOPfbYOvcqKSnhxhtvZOXKleTl5TFx4kReffVVzjzzTKqrqxk9ejRz587lhhtu4PHHH+fmm2+uc/1f//pX/v73v3P00UdTVVWFx+Phrbfe4tVXX+XTTz8lPT2dnTt3AnDBBRfwwAMPcOyxx3LLLbdw++23x8R3165dLFmyBIDzzjuPq6++mrFjx1JYWMhJJ53EN99808SvKgidk04hFPdOajzNeMgKMeC+ARRVNEwz3i+nH4unL24Xm0aNGsX+++9PZWUlS5cuZfLkybHMq1OmTOHDDz9k0qRJXHfdddx4442cdtppHHPMMbFUHBdddFGddODxdO/enQEDBvDJJ59w0EEHsW7dulgOqfvvv5+FCxcCUFRUxPfff9+oUHzwwQece+652O12evfuzfHHHx879v7773PXXXfh9XrZuXMngwYN4uc//3mj5f3ss88YP3483bt3B2DatGl88MEHnHnmmbhcrlg5jjjiCN55p2Fq96OPPpprrrmGadOmMWXKFPr06cOiRYu48MILY+nOu3TpQnl5Obt27YoJ1a9//Wt+8YtfxO4zderU2PqiRYvqxE8qKipSLv2IILQFncL11Bx3HHcHaY60OvvSnenMnTC31fccNGhQk6Oh66fjTsTBBx/MypUrGTJkCDfddBN33HEHDoeD5cuXc9ZZZ/Hqq68yadIkwuFwzC0TfcufOnUqL730Ev/617+YPHkySikWL17MokWLWLZsGV9++SWHHXZYwpTm8STqGuz3+7nssst4+eWX+frrr5kxY0az92kqp5jT6Yw9p7EU6rNnz+aJJ57A5/MxevRovv3229ic5btD/PduWRbLli1j1apVrFq1iuLiYhEJQUiACAXwy0G/5OHTHqZfTj8Uin45/Xjs548xbci0Vt/z+OOPp6amhscffzy277PPPou5PeIZN24cr776Kl6vl+rqahYuXMgxxxxDSUkJ6enp/OpXv+K6667j888/p6qqivLyck455RTuvfdeVq1ahd1uj1V20VntpkyZwquvvsr8+fNjb9Hl5eXk5eWRnp7Ot99+yyeffNJkGcaNG8eCBQsIh8OUlpby/vvvA8REoVu3blRVVdXpCZWVlUVVVVWDex155JEsWbKE7du3Ew6HmT9/fgP3VFP88MMPDBkyhBtvvJERI0bw7bffMnHiRJ566im8kXlEdu7cSU5ODnl5ebGJnZ577rlGnzNx4kQefPDB2Hai6WEFQegkrqfmsCkbFwy9gF8P+3Wb3VMpxcKFC5k1axbz5s3D4/HQv39/7r33XoqLi+uce/jhhzN9+nRGjRoFmC6lhx12GG+//TbXX389NpsNp9PJww8/TGVlJWeccQZ+vx+tNffcc0/C5+fl5TFw4EDWrl0bu++kSZN45JFHGDp0KIccckgskN4YkydP5r333mPIkCEcfPDBsQo3NzeXGTNmMGTIEPr3719ntr7p06cza9Ys5syZw7Jly2L7e/XqxZ/+9CeOO+44tNaccsopnHHGGS3+Pu+9917ef/997HY7AwcO5OSTT8btdrNq1SpGjBiBy+XilFNO4c477+Qf//gHl1xyCV6vlwEDBvD0008nvOf999/P5ZdfztChQwmF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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# http://scikit-learn.org/stable/auto_examples/model_selection/plot_learning_curve.html\n", "title = \"Learning Curves\"\n", "\n", "# Create the CV iterator\n", "cv_iterator = KFold(n_splits=5, shuffle=True, random_state=10)\n", "llr = Lasso(alpha=0.5)\n", "\n", "plot_learning_curve(llr, title, X, y, cv=cv_iterator, n_jobs=4)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ridge regression addresses some of the problems of Ordinary Least Squares by imposing a penalty on the size of coefficients. The ridge coefficients minimize a penalized residual sum of squares,\n", " \n", "\n", "$$ Loss = ||y - Xw||^2_2 + \\alpha * ||w||^2_2$$\n", "\n", "Here, \n", "α\n", "≥\n", "0\n", " is a complexity parameter that controls the amount of shrinkage: the larger the value of \n", "α\n", ", the greater the amount of shrinkage and thus the coefficients become more robust to collinearity." ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.linear_model import Ridge\n", "\n", "title = \"Learning Curves\"\n", "\n", "# Create the CV iterator\n", "cv_iterator = KFold(n_splits=5, shuffle=True, random_state=10)\n", "llr = Ridge(alpha=0.5)\n", "\n", "plot_learning_curve(llr, title, X, y, cv=cv_iterator, n_jobs=4)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Optimizing hyperparameters with GridSearchCV\n" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "GridSearchCV(cv=KFold(n_splits=5, random_state=None, shuffle=False),\n", " error_score='raise-deprecating',\n", " estimator=KNeighborsRegressor(algorithm='auto', leaf_size=30, metric='minkowski',\n", " metric_params=None, n_jobs=None, n_neighbors=5, p=2,\n", " weights='uniform'),\n", " fit_params=None, iid=False, n_jobs=None,\n", " param_grid={'n_neighbors': [1, 3, 5, 7, 9]},\n", " pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n", " scoring=None, verbose=0)" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.model_selection import GridSearchCV\n", "\n", "# Hyperparameter optimization:\n", "# (Hyper)parameter grid\n", "p_grid = {\n", " \"n_neighbors\": [1, 3, 5, 7, 9]\n", "}\n", "\n", "# Note that GridSearchCV requires a cross-validation scenario, in this case KFold\n", "\n", "knnr = KNeighborsRegressor()\n", "grid_search = GridSearchCV(estimator=knnr, param_grid=p_grid, cv=KFold(n_splits=5), iid=False)\n", "grid_search.fit(X, y)" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
mean_fit_timestd_fit_timemean_score_timestd_score_timeparam_n_neighborsparamssplit0_test_scoresplit1_test_scoresplit2_test_scoresplit3_test_score...mean_test_scorestd_test_scorerank_test_scoresplit0_train_scoresplit1_train_scoresplit2_train_scoresplit3_train_scoresplit4_train_scoremean_train_scorestd_train_score
00.0005030.0002540.0009520.0001171{'n_neighbors': 1}-2.627907-0.236199-0.600097-0.076035...-1.0271720.95897751.0000001.0000001.0000001.0000001.0000001.0000000.000000
10.0003260.0000150.0010070.0000283{'n_neighbors': 3}-1.3100980.217386-0.466775-0.026002...-0.3805460.52129340.8082600.7983740.7804390.7908680.7420800.7840040.022857
20.0003330.0000090.0010820.0001385{'n_neighbors': 5}-1.1092120.149350-0.425920-0.014744...-0.3150160.44013030.7497610.7100130.7300120.7314330.6520180.7146470.033748
30.0003430.0000060.0010800.0000807{'n_neighbors': 7}-1.0081520.166533-0.4385160.031234...-0.3053350.41191920.6986210.6665510.6581430.6958480.6216030.6681530.028160
40.0003580.0000110.0011420.0001219{'n_neighbors': 9}-1.0082670.156244-0.3901390.039706...-0.2742950.41162510.6612070.6358980.6117500.6513730.5798080.6280070.029319
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " mean_fit_time std_fit_time mean_score_time std_score_time \\\n", "0 0.000503 0.000254 0.000952 0.000117 \n", "1 0.000326 0.000015 0.001007 0.000028 \n", "2 0.000333 0.000009 0.001082 0.000138 \n", "3 0.000343 0.000006 0.001080 0.000080 \n", "4 0.000358 0.000011 0.001142 0.000121 \n", "\n", " param_n_neighbors params split0_test_score split1_test_score \\\n", "0 1 {'n_neighbors': 1} -2.627907 -0.236199 \n", "1 3 {'n_neighbors': 3} -1.310098 0.217386 \n", "2 5 {'n_neighbors': 5} -1.109212 0.149350 \n", "3 7 {'n_neighbors': 7} -1.008152 0.166533 \n", "4 9 {'n_neighbors': 9} -1.008267 0.156244 \n", "\n", " split2_test_score split3_test_score ... mean_test_score \\\n", "0 -0.600097 -0.076035 ... -1.027172 \n", "1 -0.466775 -0.026002 ... -0.380546 \n", "2 -0.425920 -0.014744 ... -0.315016 \n", "3 -0.438516 0.031234 ... -0.305335 \n", "4 -0.390139 0.039706 ... -0.274295 \n", "\n", " std_test_score rank_test_score split0_train_score split1_train_score \\\n", "0 0.958977 5 1.000000 1.000000 \n", "1 0.521293 4 0.808260 0.798374 \n", "2 0.440130 3 0.749761 0.710013 \n", "3 0.411919 2 0.698621 0.666551 \n", "4 0.411625 1 0.661207 0.635898 \n", "\n", " split2_train_score split3_train_score split4_train_score \\\n", "0 1.000000 1.000000 1.000000 \n", "1 0.780439 0.790868 0.742080 \n", "2 0.730012 0.731433 0.652018 \n", "3 0.658143 0.695848 0.621603 \n", "4 0.611750 0.651373 0.579808 \n", "\n", " mean_train_score std_train_score \n", "0 1.000000 0.000000 \n", "1 0.784004 0.022857 \n", "2 0.714647 0.033748 \n", "3 0.668153 0.028160 \n", "4 0.628007 0.029319 \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# exploring the results of hyperparameter search using 5-fold cross-validation\n", "\n", "import warnings\n", "\n", "with warnings.catch_warnings():\n", " warnings.filterwarnings(\"ignore\",category=FutureWarning)\n", " df_cv_results = pd.DataFrame(grid_search.cv_results_)\n", "\n", "df_cv_results" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'n_neighbors': 9}" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grid_search.best_params_" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-0.27429538641415063" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grid_search.best_score_" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "KNeighborsRegressor(algorithm='auto', leaf_size=30, metric='minkowski',\n", " metric_params=None, n_jobs=None, n_neighbors=9, p=2,\n", " weights='uniform')" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grid_search.best_estimator_" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 22.333333\n", "1 22.088889\n", "2 23.122222\n", "3 24.600000\n", "4 23.922222\n", "dtype: float64" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "best_model = grid_search.best_estimator_\n", "pd.Series(best_model.predict(X)).head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Nested GridSearchCV cross-validation" ] }, { "cell_type": "code", "execution_count": 86, "metadata": { "scrolled": true, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "array([0.56587668, 0.47906321, 0.46745653, 0.67292231, 0.52349235,\n", " 0.72262197, 0.68445332, 0.46320908, 0.39704074, 0.37277133])" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# CV iterators\n", "inner_cv_iterator = ShuffleSplit(n_splits=20, random_state=10)\n", "outer_cv_iterator = KFold(n_splits=10, shuffle=True, random_state=10)\n", "\n", "# Hyperparameter optimization:\n", "\n", "# (Hyper)parameter grid\n", "p_grid = {\n", " \"n_neighbors\": [1, 3, 5, 7, 9]\n", "}\n", "\n", "knnr = KNeighborsRegressor()\n", "grid_search = GridSearchCV(estimator=knnr, param_grid=p_grid, cv=inner_cv_iterator)\n", "\n", "cross_val_score(estimator=grid_search, X=X, y=y, cv=outer_cv_iterator)" ] } ], "metadata": { "celltoolbar": "Slideshow", "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.7.0" }, "livereveal": { "start_slideshow_at": "selected" } }, "nbformat": 4, "nbformat_minor": 2 }