{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "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", "# generating data by first taking equispaced \n", "# points on the line and then shifting them with a \n", "# random noise epsilon\n", "\n", "x = np.linspace(-2,2,10)\n", "\n", "epsilon = np.random.normal(0,1, len(x))\n", "\n", "beta = np.asarray([.1, 1, .3, 1])\n", "\n", "t = beta[0] + beta[1]*x + beta[2]*x**2 + beta[3]*x**3\n", "tnoisy2 = t + epsilon\n", "\n", "\n", "plt.scatter(x, tnoisy2, c='r')\n", "plt.plot(x, t)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "\n", "numXP = 20\n", "\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.preprocessing import PolynomialFeatures\n", "import numpy as np\n", "\n", "\n", "poly = PolynomialFeatures(10)\n", "\n", "Xtilde = poly.fit_transform(x.reshape(-1,1))\n", "\n", "myRegression = LinearRegression()\n", "\n", "xprediction = np.linspace(-2,2,100)\n", "\n", "XTildeprediction = poly.fit_transform(xprediction.reshape(-1,1))\n", "\n", "\n", "\n", "plt.scatter(x, tnoisy2, c='r')\n", "\n", "predictionSet = np.zeros((len(xprediction), numXP))\n", "\n", "for xp in np.arange(numXP):\n", " \n", " epsilon = np.random.normal(0,1, len(x))\n", " tnoisy = t + epsilon\n", " myRegression.fit(Xtilde, tnoisy)\n", " \n", " prediction = myRegression.predict(XTildeprediction)\n", " \n", " predictionSet[:,xp] = prediction\n", " \n", " plt.plot(xprediction, prediction, c='b', alpha=.1)\n", " \n", " \n", "meanModel = np.mean(predictionSet, axis=1)\n", "plt.plot(xprediction, meanModel, 'k--')\n", "plt.plot(x, t, c = 'g')\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": [ "\n", "numXP = 20\n", "\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.preprocessing import PolynomialFeatures\n", "from sklearn.linear_model import Ridge\n", "import numpy as np\n", "\n", "\n", "poly = PolynomialFeatures(10)\n", "\n", "Xtilde = poly.fit_transform(x.reshape(-1,1))\n", "\n", "myRegression = Ridge(alpha=1e8)\n", "\n", "xprediction = np.linspace(-2,2,100)\n", "\n", "XTildeprediction = poly.fit_transform(xprediction.reshape(-1,1))\n", "\n", "\n", "\n", "plt.scatter(x, tnoisy2, c='r')\n", "\n", "predictionSet = np.zeros((len(xprediction), numXP))\n", "\n", "for xp in np.arange(numXP):\n", " \n", " epsilon = np.random.normal(0,1, len(x))\n", " tnoisy = t + epsilon\n", " myRegression.fit(Xtilde, tnoisy)\n", " \n", " prediction = myRegression.predict(XTildeprediction)\n", " \n", " predictionSet[:,xp] = prediction\n", " \n", " plt.plot(xprediction, prediction, c='b', alpha=.1)\n", " \n", " \n", "meanModel = np.mean(predictionSet, axis=1)\n", "plt.plot(xprediction, meanModel, 'k--')\n", "plt.plot(x, t, c = 'g')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "\n", "numXP = 20\n", "\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.preprocessing import PolynomialFeatures\n", "from sklearn.linear_model import Ridge\n", "from sklearn.linear_model import Lasso\n", "import warnings\n", "warnings.filterwarnings('ignore') \n", "\n", "import numpy as np\n", "\n", "\n", "poly = PolynomialFeatures(10)\n", "\n", "Xtilde = poly.fit_transform(x.reshape(-1,1))\n", "\n", "myRegression = Lasso(alpha=1000)\n", "\n", "\n", "\n", "\n", "plt.scatter(x, tnoisy2, c='r')\n", "\n", "predictionSet = np.zeros((len(xprediction), numXP))\n", "\n", "for xp in np.arange(numXP):\n", " \n", " epsilon = np.random.normal(0,1, len(x))\n", " tnoisy = t + epsilon\n", " myRegression.fit(Xtilde, tnoisy)\n", " \n", " prediction = myRegression.predict(XTildeprediction)\n", " \n", " predictionSet[:,xp] = prediction\n", " \n", " plt.plot(xprediction, prediction, c='b', alpha=.1)\n", " \n", " \n", "meanModel = np.mean(predictionSet, axis=1)\n", "plt.plot(xprediction, meanModel, 'k--')\n", "plt.plot(x, t, c = 'g')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Evolution of Bias and Variance as a function of model complexity" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "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", "# generating data by first taking equispaced \n", "# points on the line and then shifting them with a \n", "# random noise epsilon\n", "\n", "x = np.linspace(-2,2,10)\n", "\n", "epsilon = np.random.normal(0,1, len(x))\n", "\n", "beta = np.asarray([.1, 1, .3, 1])\n", "\n", "t = beta[0] + beta[1]*x + beta[2]*x**2 + beta[3]*x**3\n", "tnoisy2 = t + epsilon\n", "\n", "\n", "plt.scatter(x, tnoisy2, c='r')\n", "plt.plot(x, t)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "Xtilde = poly.fit_transform(x.reshape(-1,1))\n", "xprediction = np.linspace(-2,2,100)\n", "XTildeprediction = poly.fit_transform(xprediction.reshape(-1,1))\n", "\n", "\n", "trueT = beta[0] + beta[1]*xprediction + beta[2]*(xprediction**2) + beta[3]*(xprediction**3)\n", "\n", "plt.scatter(x, tnoisy2, c='r')\n", "plt.plot(xprediction, trueT)\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "numXP = 50\n", "maxDegree = 10\n", "\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.preprocessing import PolynomialFeatures\n", "import numpy as np\n", "\n", "\n", "\n", "bias2 = np.zeros((len(xprediction),maxDegree ))\n", "variance = np.zeros((len(xprediction), maxDegree))\n", "MSE = np.zeros((len(xprediction), maxDegree))\n", "\n", "\n", "for degree in np.arange(maxDegree):\n", " \n", " poly = PolynomialFeatures(degree)\n", " Xtilde = poly.fit_transform(x.reshape(-1,1))\n", " xprediction = np.linspace(-2,2,100)\n", " XTildeprediction = poly.fit_transform(xprediction.reshape(-1,1))\n", "\n", " \n", " myRegression = LinearRegression()\n", " predictionSet = np.zeros((len(xprediction), numXP))\n", "\n", " for xp in np.arange(numXP):\n", "\n", " epsilon = np.random.normal(0,1, len(x))\n", " tnoisy = t + epsilon\n", " myRegression.fit(Xtilde, tnoisy)\n", "\n", " prediction = myRegression.predict(XTildeprediction)\n", "\n", " predictionSet[:,xp] = prediction\n", "\n", " meanModel = np.mean(predictionSet, axis=1)\n", " \n", " # define the variance as E{(prediction - E{prediction})**2}\n", " # as the mean is one dimensional, we first need to replicate \n", " # it in order to subtract it from each element in predictionSet\n", " \n", " \n", " variance_tmp = predictionSet - np.matmul(meanModel.reshape(-1,1), \n", " np.ones((1, np.shape(predictionSet)[1]))) \n", " \n", " variance[:, degree] = np.mean(variance_tmp**2, axis=1)\n", " \n", " bias2[:,degree] = (meanModel - trueT)**2\n", " \n", " MSE[:,degree] = variance[:, degree] + bias2[:,degree]\n", " \n", "\n", " \n", "plt.plot(np.arange(1,10),(1/len(variance))*np.sum(variance, axis=0)[1:])\n", "plt.plot(np.arange(1,10),(1/len(variance))*np.sum(bias2, axis=0)[1:])\n", "plt.plot(np.arange(1,10),(1/len(variance))*np.sum(MSE, axis=0)[1:])\n", "plt.legend(['variance', 'squared bias', 'MSE'])\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 }