{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Recitation Week 2: Bias Variance Tradeoff + Ridge and Lasso regularization" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "\n", "import numpy as np\n", "import matplotlib.pyplot as plt \n", "\n", "\n", "xtrue = np.linspace(-2,1,10)\n", "\n", "ttrue = xtrue+xtrue**2\n", "tnoisy = ttrue+ np.random.normal(0,0.1, len(xtrue))\n", "\n", "xtest = np.linspace(-2,1,100)\n", "ttest = xtrue + xtrue**2\n", "\n", "plt.scatter(xtrue, tnoisy, c='r')\n", "plt.plot(xtrue, ttrue)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# step 1) generate polynomial features with PolynomialFeatures for several max degrees\n", "# step 2) fit a regression model using LinearRegression\n", "# apply our model on test data generated on the [-2,1]\n", "\n", "\n", "from sklearn.preprocessing import PolynomialFeatures\n", "from sklearn.linear_model import LinearRegression\n", "\n", "degree = 20\n", "\n", "poly = PolynomialFeatures(degree)\n", "Xpoly = poly.fit_transform(xtrue.reshape(-1,1)) \n", "# matrix encoding the augmented features vectors \n", "\n", "reg = LinearRegression()\n", "reg.fit(Xpoly, tnoisy)\n", "\n", "Xtestpoly = poly.fit_transform(xtest.reshape(-1,1)) \n", "\n", "prediction = reg.predict(Xtestpoly)\n", "\n", "\n", "plt.scatter(xtrue, tnoisy, c='r')\n", "plt.plot(xtest, prediction)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt \n", "\n", "\n", "xtrue = np.linspace(-2,1,10)\n", "\n", "t = xtrue+xtrue**2\n", "tnoisy = t+ np.random.normal(0,0.1, len(xtrue))\n", "\n", "xtest = np.linspace(-2,1,100)\n", "ttest = xtrue + xtrue**2\n", "\n", "plt.scatter(xtrue, tnoisy, c='r')\n", "plt.plot(xtrue, t)\n", "plt.show()\n", "\n", "\n", "# step 1) generate polynomial features with PolynomialFeatures for several max degrees\n", "# step 2) fit a regression model using LinearRegression\n", "# apply our model on test data generated on the [-2,1]\n", "\n", "\n", "from sklearn.preprocessing import PolynomialFeatures\n", "from sklearn.linear_model import LinearRegression\n", "\n", "degree = 20\n", "\n", "poly = PolynomialFeatures(degree)\n", "Xpoly = poly.fit_transform(xtrue.reshape(-1,1)) \n", "# matrix encoding the augmented features vectors \n", "\n", "reg = LinearRegression()\n", "reg.fit(Xpoly, tnoisy)\n", "\n", "Xtestpoly = poly.fit_transform(xtest.reshape(-1,1)) \n", "\n", "prediction = reg.predict(Xtestpoly)\n", "\n", "\n", "plt.scatter(xtrue, tnoisy, c='r')\n", "plt.plot(xtest, prediction)\n", "plt.show()\n", "\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# demo bias variance \n", "\n", "x = np.linspace(-2,1,10)\n", "\n", "ttrue = 0.1 * x**3 - 0.1* x**2 + x +1\n", "\n", "tnoisy = ttrue+ np.random.normal(0,.25, len(x))\n", "\n", "plt.scatter(x, tnoisy, c='r')\n", "plt.plot(x, ttrue)\n", "plt.show()\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Low Bias, High variance ((almost) no regularization)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from sklearn.linear_model import Ridge\n", "from sklearn.linear_model import Lasso\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "\n", "numXp = 20\n", "\n", "degree = 10\n", "\n", "xtest = np.linspace(-2,1,100)\n", "from sklearn.linear_model import LinearRegression\n", "\n", "\n", "\n", "plt.scatter(x, tnoisy, c='r')\n", "\n", "predictionMat = np.zeros((len(xtest), numXp))\n", "\n", "for xp in np.arange(numXp):\n", " \n", " # generate the subsets D^i \n", " tnoisy = ttrue+ np.random.normal(0,.25, len(x))\n", " \n", " poly = PolynomialFeatures(degree)\n", " Xpoly = poly.fit_transform(x.reshape(-1,1)) \n", " reg = Ridge(alpha=1e-4,tol=1e-2)\n", " reg.fit(Xpoly, tnoisy)\n", " \n", " # represent the model \n", " XpolyTest = poly.fit_transform(xtest.reshape(-1,1))\n", " prediction = reg.predict(XpolyTest)\n", " predictionMat[:,xp] = prediction\n", " \n", " \n", " \n", " plt.plot(xtest, prediction, alpha=.1, c='b')\n", " \n", "familyAverage = np.mean(predictionMat, axis=1)\n", "\n", "plt.plot(xtest, familyAverage, '--',linewidth=2, c='black')\n", " \n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Low Variance, high bias (heavy regularization)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from sklearn.linear_model import Ridge\n", "from sklearn.linear_model import Lasso\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "\n", "numXp = 20\n", "\n", "degree = 10\n", "\n", "xtest = np.linspace(-2,1,100)\n", "from sklearn.linear_model import LinearRegression\n", "\n", "\n", "\n", "plt.scatter(x, tnoisy, c='r')\n", "\n", "predictionMat = np.zeros((len(xtest), numXp))\n", "\n", "for xp in np.arange(numXp):\n", " \n", " # generate the subsets D^i \n", " tnoisy = ttrue+ np.random.normal(0,.25, len(x))\n", " \n", " poly = PolynomialFeatures(degree)\n", " Xpoly = poly.fit_transform(x.reshape(-1,1)) \n", " reg = Ridge(alpha=1e8,tol=1e-2)\n", " reg.fit(Xpoly, tnoisy)\n", " \n", " # represent the model \n", " XpolyTest = poly.fit_transform(xtest.reshape(-1,1))\n", " prediction = reg.predict(XpolyTest)\n", " predictionMat[:,xp] = prediction\n", " \n", " \n", " \n", " plt.plot(xtest, prediction, alpha=.1, c='b')\n", " \n", "familyAverage = np.mean(predictionMat, axis=1)\n", "\n", "plt.plot(xtest, familyAverage, '--',linewidth=2, c='black')\n", " \n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Evolution of the MSE, Bias and Variance as a function of the model complexity" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "numXp = 20\n", "\n", "maxDegree = 7\n", "\n", "xtest = np.linspace(-2,1,100) \n", "\n", "ttest = 0.1 * xtest**3 - 0.1* xtest**2 + xtest +1\n", "\n", "\n", "\n", "bias_squared = np.zeros((maxDegree, 1))\n", "variance = np.zeros((maxDegree, 1))\n", "MSE = np.zeros((maxDegree, 1))\n", "\n", "for degree in np.arange(maxDegree):\n", " \n", " predictionMat = np.zeros((len(xtest), numXp))\n", "\n", " poly = PolynomialFeatures(degree)\n", " \n", " for xp in np.arange(numXp):\n", " \n", " # generate the subsets D^i \n", " tnoisy = ttrue+ np.random.normal(0,.25, len(x))\n", " \n", " Xpoly = poly.fit_transform(x.reshape(-1,1)) \n", " reg = LinearRegression()\n", " reg.fit(Xpoly, tnoisy)\n", " \n", " # represent the model \n", " XpolyTest = poly.fit_transform(xtest.reshape(-1,1))\n", " prediction = reg.predict(XpolyTest)\n", " predictionMat[:,xp] = prediction\n", " \n", " \n", " familyAverage = np.mean(predictionMat, axis=1)\n", " bias_vec = (ttest.reshape(-1,1) - familyAverage.reshape(-1,1))**2\n", " \n", " \n", " ones_vec = np.ones((1, numXp))\n", " tmp = (predictionMat - np.matmul(familyAverage.reshape(-1,1), ones_vec))**2 \n", " variance_vec = np.mean(tmp,axis=1)\n", " \n", " bias_squared[degree] = np.mean(bias_vec)\n", " variance[degree] = np.mean(variance_vec)\n", " \n", " MSE[degree] = bias_squared[degree] + variance[degree]\n", " \n", "plt.plot(bias_squared[1:], label='bias')\n", "plt.plot(variance[1:], label = 'variance')\n", "plt.plot(MSE[1:], label = 'MSE')\n", "plt.legend()\n", "\n", "plt.show()" ] } ], "metadata": { "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.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }