{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercise: Linear Regression " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import modules" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Common imports\n", "import numpy as np\n", "import os\n", "\n", "# To plot pretty figures\n", "%matplotlib inline\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generate data" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Let us generate noisy data with a linear feature\n", "\n", "# to make this notebook's output stable across runs\n", "np.random.seed(42)\n", "\n", "# X are picked uniform random [0,2]\n", "X = 2 * np.random.rand(100, 1)\n", "# Linear relation to the predicted value, but with Gaussian noise (mean=0, variance=1)\n", "y = 2 + 4 * X + np.random.randn(100, 1)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArAAAAINCAYAAADGEEwdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAv+UlEQVR4nO3de3BcZ3k/8EeSYzswliCUXIyMCbUmbki5JSkOCcQ4YBVC2mSmUCiEwAjslnAx6QABCk36G2JoS1ra0GLTbcJMm0BLMGSGUpJpFQdIQpNgaLnlQlHwAmnKFCTHtKaRzu+PrWRJlta70u6e8579fGY0O3t8JL17sjr57nue87w9WZZlAQAAiejNewAAANAMARYAgKQIsAAAJEWABQAgKQIsAABJEWABAEiKAAsAQFJW5D2ATpiamoof/vCHsWbNmujp6cl7OAAAzJNlWRw4cCDWrl0bvb3151i7IsD+8Ic/jHXr1uU9DAAAjmL//v0xODhYd5+uCLBr1qyJiNoB6e/vz3k0AADMNzExEevWrZvJbfV0RYCdLhvo7+8XYAEACqyRck83cQEAkBQBFgCApAiwAAAkRYAFACApAiwAAEkRYAEASIoACwBAUgRYAACSIsACAJAUARYAgKQIsAAAJEWABQAgKQIsAABJEWABAEiKAAsAQFIEWACga1WrEaOjtUfSIcACAF2pUolYvz5iy5baY6WS94holAALAHSdajVi27aIqana86mpiO3bzcSmQoAFALrO/fcfDq/TJicjHnggn/HQHAEWAOg6Q0MRvfNSUF9fxIYN+YyH5giwAEDXGRyM2L27Flojao+7dtW2U1PkG9wEWACgK42MRIyN1ULa2FjtOTVFv8GtJ8uyLO9BtNvExEQMDAzE+Ph49Pf35z0cAIDCqlZroXV2jXBfXy3kt3OGupm8ZgYWAIAZKdzgJsACADAjhRvcBFgAAGakcIPbirwHAABAsYyMRAwP18oGNmwoVniNEGABAFjA4GDxgus0JQQAACRFgAUAICkCLAAASRFgAQBIigALAEBSBFgAAJIiwAIAkBQBFgCApAiwAAAkRYAFACApAiwAAEkRYAEASIoACwBAUgRYAACSIsACAJAUARYAgKQIsAAAJEWABQAgKQIsAEAXqVYjRkdrj6kSYAEAmpRqCKxUItavj9iypfZYqeQ9oqURYAEAmpBqCKxWI7Zti5iaqj2fmorYvj29EB5RgAB72223xQUXXBBr166Nnp6e+MxnPjPn37MsiyuuuCLWrl0bxx57bGzevDm++c1v5jNYAKCrLTUEFmHG9v77D4972uRkxAMP5DOe5cg9wB48eDCe8YxnxDXXXLPgv//hH/5hXH311XHNNdfEXXfdFSeeeGK86EUvigMHDnR4pABAt1tKCCzKjO3QUETvvOTX1xexYUM+41mOnizLsrwHMa2npyf27NkTF154YUTUZl/Xrl0bO3bsiHe+850REXHo0KE44YQT4oMf/GBs3769oZ87MTERAwMDMT4+Hv39/e0aPgBQctVqLYTODrF9fRFjYxGDg8vfv90qldqM8eRkbRy7dkWMjHR+HAtpJq/lPgNbz/e+97146KGHYuvWrTPbVq1aFeeee27cfvvti37foUOHYmJiYs4XAMByDQ5G7N5dC38Rh0PgYmG0aJftR0Zq4Xl0tPZYlPDarBV5D6Cehx56KCIiTjjhhDnbTzjhhHjwwQcX/b6dO3fGlVde2daxAQDdaWQkYni4FkI3bKg/kzp92X7+DGyel+0HB/OZ/W2lQs/ATuvp6ZnzPMuyI7bN9q53vSvGx8dnvvbv39/uIQIAXWRwMGLz5qMHwWZnbGlMoWdgTzzxxIiozcSedNJJM9sffvjhI2ZlZ1u1alWsWrWq7eMDADiaZmZsaUyhZ2BPPvnkOPHEE+OWW26Z2fbzn/889u7dG8997nNzHBkAQOManbGlMbnPwD7yyCPxwKxK5u9973vxta99LY477rh48pOfHDt27IirrroqhoaGYmhoKK666qp4zGMeE7/1W7+V46gBAMhL7gH27rvvjhe84AUzzy+77LKIiLjkkkviuuuui3e84x3x3//93/HGN74xfvKTn8RznvOcuPnmm2PNmjV5DRkAgBwVqg9su+gDCwBQbKXpAwsAAPMJsAAAJEWABQAgKQIsAABJEWABAEiKAAsAQFIEWAAAkiLAAgAkolqNGB2tPXYzARYAEiC4UKlErF8fsWVL7bFSyXtE+RFgAaDgBBeq1Yht2yKmpmrPp6Yitm/v3g80AiwAFJjgQkTE/fcffg9Mm5yMeOCBfMaTNwEWAApMcCEiYmgoondeauvri9iwIZ/x5E2ABYACE1yIiBgcjNi9u/bfPqL2uGtXbXs31kcLsABQYPWCC91lZCRibKwWVsfGas+7tT66J8uyLO9BtNvExEQMDAzE+Ph49Pf35z0cAGhatVorG9iwQXilplqthdbZJSZ9fbVwm+J7pJm8tqJDYwIAlmFwMM1Q0mrVaq0ueGioXMdjKa+rXn10mY7NQpQQAABJKOvl8qW+rm6ujxZgAYDCK2s7seW8rm6uj1ZCAAAUXlkvly/3dY2MRAwPd199tAALABTe9OXy+TcspX65vBWvqxvro5UQAACFV9bL5WV9Xe2mjRYAkIyythNb7usqQ3cGbbQAgFIq6+Xy5byuSuXwjWC9vbUZ3ZGR1o6vaJQQAAAkqqzdGY5GgAUASFS9LgZlJsACACSqWxczEGABABLVrV0M3MQFAJCwblzMQIAFAEhcWbszLEYJAQAASRFgAQBIigALAEBSBFgAAJIiwAIAkBQBFgCApAiwAFAS1WrE6GjtEcpMgAWAEqhUItavj9iypfZYqeQ9ImgfARYAEletRmzbFjE1VXs+NRWxfbuZWMpLgAWAxN1//+HwOm1ysra0KJSRAAsAiRsaiuid93/0vr6IDRvyGQ+0mwALAIkbHIzYvbsWWiNqj7t21bZDGa3IewAAwPKNjEQMD9fKBjZsEF4pNwEWAEpicFBwpTsoIQAACkMvWxohwAIAhaCXLY0SYAGA3OllSzMEWACS4zJz+ehl2zll+PsRYAFIisvM5aSXbWeU5e9HgAUgGS4zl5detu1Xpr8fbbQASEa9y8yCTvr0sm2vMv39CLAAJGP6MvPs/wm7zFwuetm2T5n+fpQQAJAMl5kpqhRujCrT309PlmVZ3oNot4mJiRgYGIjx8fHo7+/PezgALFO16jIzxVGpHK4t7e2thcSRkbxHtbii/v00k9cEWACgo6rVWj3m0FCxAtRSVKu1u/nnX5YfG0v/tXVaM3lNCQEA0DFlaeM0Tf/afAiwAEBHlKmN0zT9a/MhwAIAHVHG2coy3RiVEm20AICOKFMbp9n0r+08M7AAQEeUebZycDBi8+ZyvJYUmIEFADrGbCWtIMACAB01e7WtMrXUonOUEAAAuShbSy06R4AFADquaC21UlgKlsMEWACg44rUUstMcHoEWACg44qyAEDRZoJpjAALAHRcUVpqFWkmmMbpQgAA5KIILbXKurhC2ZmBBQByk/cCAEWZCaY5ZmABgK5WhJlgmiPAAgBdb/biChSfEgIAAJIiwAIAkBQBFgBKwmpSdAsBFgBKwGpSdBMBFgAS142rSZlt7m4CLAAkrttWkzLbjAALAImbXk1qtrKuJtWNs80cSYAFgMR102pS3TbbzMIsZAAAJdAtq0lNzzbPDrFlnW1mcYWfgX300Ufj937v9+Lkk0+OY489Np761KfGH/zBH8TU/I9fANDlBgcjNm8ub3iN6K7ZZhZX+BnYD37wg/HRj340Pv7xj8fTnva0uPvuu+N1r3tdDAwMxFvf+ta8hwcAdFi3zDazuMIH2DvuuCN+/dd/Pc4///yIiHjKU54SN9xwQ9x99905jwwAyMvgoODazQpfQnDOOefEP/3TP8V9990XERFf//rX40tf+lK85CUvWfR7Dh06FBMTE3O+AKAb6I9KNyj8DOw73/nOGB8fj40bN0ZfX19MTk7G+9///njlK1+56Pfs3Lkzrrzyyg6OEgDyV6kcbjHV21urFR0ZyXtU0Ho9WZZleQ+ink984hPx9re/Pf7oj/4onva0p8XXvva12LFjR1x99dVxySWXLPg9hw4dikOHDs08n5iYiHXr1sX4+Hj09/d3augAsGTVaq1l1NBQY5fKq9VaU//5d+ePjbnUThomJiZiYGCgobxW+BnYt7/97XH55ZfHK17xioiI+OVf/uV48MEHY+fOnYsG2FWrVsWqVas6OUwAaJmlzKTW648qwFI2ha+B/dnPfha985YX6evr00YLgFJa6kpTRViNS/0tnVL4AHvBBRfE+9///vjc5z4XY2NjsWfPnrj66qvjoosuyntoANByS11pqpX9UZcSRCuVWgnDli21x0ql+d8LjSp8DeyBAwfive99b+zZsycefvjhWLt2bbzyla+M973vfbFy5cqGfkYzNRUAkKfl1rJWq8vrj7qU8gX1t7RCM3mt8AG2FQRYAFJSqdTKBiYnD8+kdqKbwFKD6OhobeZ1oe2bN7d6lCxVszcGdlozea3wJQQA0G1GRmqhcXS09tipVlhLLV8oQv0t9ZWtxEOABYACGhyszV52cqZsqUG0lfW3tN5SbwwsMgEWAIiI5QXRvGaNObqlzqwXWeH7wAIAnTMyEjE8vLQbwQYHzboW0fTM+vza5pRLPMzAAgBz5FG+QPuUscTDDCwAQMktZ2a9iARYAOoqeusdoDFlKvFQQgDAosrWeofWsGQseRNgAVhQGVvvsHw+1FAEAiwACypj6x2Wx4caikKABWBBVldiPh9qKAoBFoAFlbH1DsvjQw1FIcACsCirKzGbDzUUhTZaANRVptY7LE+1GvHUp0bccUfEwYPl6CdKmszAAlBKWj211uzuA5s2RXz3u8Ir+RFgASgdrZ5aS/cBikaABaBUhK3W032AohFgASgVYav1dB+gaARYAEpF2Go93QcoGgEWgFIRttpDSzWKpCfLsizvQbTbxMREDAwMxPj4ePT39+c9HAA6oFqtlQ1o9QRpaCav6QMLQCnpXwvlpYQAANpMT1poLQEWANqoTD1pBXGKQoAFgDYpU0/aMgVx0ifAAkCblKUnbZmCOOUgwAKQrKJf0i5LT9qyBHHKQ4AFIEkpXNIuS0/asgRxykMfWACSU63WQuvsWcG+vlqD/SKGw6X2pK1Wa7OfQ0P5v65KpVY2MDl5OIhbzIBW0gcWgFKrd0k776C3kKX0pK1UDted9vbWZnLzDIwjIxHDwxaHoBjMwAKQnNRmYJtV9tcHC2kmr6mBBSA5ZaktXYybpqA+JQQAJKnMl7Snb5qaPwPrpimoMQMLQLIGByM2by5XeI0o/wwzLJcZWAAooDLPMMNyCbAAUFBL6V4A3UAJAQAASRFgAWhI0ZdtBbqHAAvAUaWwbCud4YMMRSDAAlBXtXp4RaiI2uP27QJMN/JBhqIQYAGoS1N9InyQoVgEWADqmm6qP5um+t3HBxmKRIAFoC5N9YnwQYZiEWABOKqRkYixsdrNO2Njted0Fx9kKJKeLMuyvAfRbhMTEzEwMBDj4+PR39+f93AAIFnVqtXBaI9m8pqVuACAhlkdjCJQQgAAQFIEWAAAkiLAAgCQFAEWAICkCLAAACRFgAUAICkCLAAASRFgAQBIigALQKFUq7Ula6vVvEcCFJUAC0BhVCoR69dHbNlSe6xU8h4RUEQCLACFUK1GbNsWMTVVez41FbF9u5lY4EgCLACFcP/9h8PrtMnJiAceyGc8QHEJsAAUwtBQRO+8/yv19UVs2JDPeIDiEmABKITBwYjdu2uhNaL2uGtXbTvAbCvyHgAATBsZiRgerpUNbNggvAILE2ABKJTBQcEVqE8JAQAASRFgAaBJFluAfAmwANAEiy1A/gRYAGiQxRagGARYAGiQxRagGARYAGiQxRagGARYALrSUm7EstgCFIMAC0DXWc6NWCMjEWNjtfA7NlZ7DnRWT5ZlWd6DaLeJiYkYGBiI8fHx6O/vz3s4AOSoWq2F1tm1rH19tTBqJhXy00xeMwMLQFdxIxakT4AFyJGG+J3nRixInwALNEXgah0N8fPhRixInxpYoGGVyuEm7r29tRDgBpalUYeZv2q1VjawYYNjDkXQthrY/fv3L2tgQLqsQNRaedZhmkWvGRyM2LxZeIUUNRVgN27cGO9973vj4MGD7RoPUFBufGmtvOowlS0AZdBUgL3lllvi5ptvjqGhobj22mvbNSaggNz40lp51GGaRQfKoqkA+9znPje+8pWvxAc+8IF43/veF8961rPi1ltvbdPQgCJx40vrdbohvll0oCyW1IXgNa95Tdx3331xwQUXxPnnnx8XXXRRPNDGM+APfvCDePWrXx1PeMIT4jGPeUw885nPjHvuuadtvw9YmBWIWq+TdZhm0YGyWHIbrSzLYuvWrbFt27a46aab4rTTTovf/d3fjQMHDrRyfPGTn/wkzj777DjmmGPi85//fHzrW9+KD33oQ/G4xz2upb8HaIwbX9KV8iy6G8+A2Zpqo/XRj3407rrrrrjrrrvi29/+dvT19cXTn/702LRpUzzzmc+Mv/3bv4377rsv9uzZE2eccUZLBnj55ZfHl7/85fjiF7+45J+hjRbAYam1j9K+DbpDM3mtqQC7bt262LRp08zXGWecEatWrZqzz1VXXRXXX399fOMb31ja6Oc59dRTY3h4OKrVauzduzee9KQnxRvf+MZ4wxvesOj3HDp0KA4dOjTzfGJiItatWyfAAiRGv1zoHm0LsI34j//4j1i7dm1MTk625OetXr06IiIuu+yyeNnLXhb/8i//Ejt27Ihdu3bFa17zmgW/54orrogrr7zyiO0CLEBaRkdrLb8W2r55c8eHA7RRrgE2y7K47bbb4txzz23Jz1u5cmWcccYZcfvtt89se8tb3hJ33XVX3HHHHQt+jxlYgHIwAwvdo20rcTWip6enZeE1IuKkk06KU089dc62X/qlX4rvf//7i37PqlWror+/f84X0Bg3y1AkKd94BrRPywNsq5199tlx7733ztl23333xfr163MaEZSXVZq6R0ofVLRvA+YrfIB929veFnfeeWdcddVV8cADD8T1118fu3fvjksvvTTvoUGpWKWpe6T4QUX7NmC2wgfYM888M/bs2RM33HBDnHba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Ouus+MIXvjBnn+uuuy56enqO+Pqf//mfdr+Utmjm+Nx6660LvvbvfOc7c/br1vfPa1/72gWPz9Oe9rSZfcry/rntttviggsuiLVr10ZPT0985jOfOer3dNO5p9nj023nnmaPT7ede5o9Pt107tm5c2eceeaZsWbNmjj++OPjwgsvjHvvvfeo35fn+UeAXcAnP/nJ2LFjR7znPe+Jffv2xfOe97x48YtfHN///vcX3P973/tevOQlL4nnPe95sW/fvnj3u98db3nLW+LGG2+c2eeOO+6I3/zN34yLL744vv71r8fFF18cL3/5y+MrX/lKp15WyzR7fG677bZ40YteFP/wD/8Q99xzT7zgBS+ICy64IPbt2zdnv/7+/vjRj34052v16tWdeEkt1ezxmXbvvffOee1DQ0Mz/9bN758Pf/jDc47L/v3747jjjouXvexlc/Yrw/vn4MGD8YxnPCOuueaahvbvtnNPs8en2849zR6fad1y7mn2+HTTuWfv3r1x6aWXxp133hm33HJLPProo7F169Y4ePDgot+T+/kn4wi/8iu/kv32b//2nG0bN27MLr/88gX3f8c73pFt3Lhxzrbt27dnmzZtmnn+8pe/PPvVX/3VOfsMDw9nr3jFK1o06s5p9vgs5NRTT82uvPLKmefXXnttNjAw0Koh5qrZ4zM6OppFRPaTn/xk0Z/p/XPYnj17sp6enmxsbGxmW5neP9MiItuzZ0/dfbrt3DNbI8dnIWU+98zWyPHptnPPbEt5/3TLuSfLsuzhhx/OIiLbu3fvovvkff4xAzvPz3/+87jnnnti69atc7Zv3bo1br/99gW/54477jhi/+Hh4bj77rvjf//3f+vus9jPLKqlHJ/5pqam4sCBA3HcccfN2f7II4/E+vXrY3BwMF760pceMUuSguUcn2c961lx0kknxXnnnRejo6Nz/s3757BKpRIvfOELY/369XO2l+H906xuOve0QpnPPcvRDeeeVuimc8/4+HhExBF/K7Plff4RYOf58Y9/HJOTk3HCCSfM2X7CCSfEQw89tOD3PPTQQwvu/+ijj8aPf/zjuvss9jOLainHZ74PfehDcfDgwXj5y18+s23jxo1x3XXXxU033RQ33HBDrF69Os4+++y4//77Wzr+dlvK8TnppJNi9+7dceONN8anP/3pOOWUU+K8886L2267bWYf75+aH/3oR/H5z38+Xv/618/ZXpb3T7O66dzTCmU+9yxFN517lqubzj1ZlsVll10W55xzTpx22mmL7pf3+WfFsn9CSfX09Mx5nmXZEduOtv/87c3+zCJb6mu54YYb4oorrojPfvazcfzxx89s37RpU2zatGnm+dlnnx3Pfvaz48///M/jz/7sz1o38A5p5viccsopccopp8w8P+uss2L//v3xx3/8x/H85z9/ST+z6Jb6Wq677rp43OMeFxdeeOGc7WV7/zSj2849S9Ut555mdOO5Z6m66dzzpje9Kf71X/81vvSlLx113zzPP2Zg5/mFX/iF6OvrO+LTwcMPP3zEp4hpJ5544oL7r1ixIp7whCfU3Wexn1lUSzk+0z75yU/GyMhI/N3f/V288IUvrLtvb29vnHnmmcl9il3O8Zlt06ZNc16790/tpPfXf/3XcfHFF8fKlSvr7pvq+6dZ3XTuWY5uOPe0SlnPPcvRTeeeN7/5zXHTTTfF6OhoDA4O1t037/OPADvPypUr4/TTT49bbrllzvZbbrklnvvc5y74PWedddYR+998881xxhlnxDHHHFN3n8V+ZlEt5fhE1GY/Xvva18b1118f559//lF/T5Zl8bWvfS1OOumkZY+5k5Z6fObbt2/fnNfe7e+fiNpdsg888ECMjIwc9fek+v5pVjede5aqW849rVLWc89ydMO5J8uyeNOb3hSf/vSn45//+Z/j5JNPPur35H7+WfZtYCX0iU98IjvmmGOySqWSfetb38p27NiRPfaxj5258/Dyyy/PLr744pn9//3f/z17zGMek73tbW/LvvWtb2WVSiU75phjsk996lMz+3z5y1/O+vr6sg984APZt7/97ewDH/hAtmLFiuzOO+/s+OtbrmaPz/XXX5+tWLEi+8hHPpL96Ec/mvn66U9/OrPPFVdckf3jP/5j9t3vfjfbt29f9rrXvS5bsWJF9pWvfKXjr2+5mj0+f/Inf5Lt2bMnu++++7JvfOMb2eWXX55FRHbjjTfO7NPN759pr371q7PnPOc5C/7Msrx/Dhw4kO3bty/bt29fFhHZ1Vdfne3bty978MEHsyxz7mn2+HTbuafZ49Nt555mj8+0bjj3/M7v/E42MDCQ3XrrrXP+Vn72s5/N7FO0848Au4iPfOQj2fr167OVK1dmz372s+e0krjkkkuyc889d87+t956a/asZz0rW7lyZfaUpzwl+8u//Msjfubf//3fZ6ecckp2zDHHZBs3bpxzkkhNM8fn3HPPzSLiiK9LLrlkZp8dO3ZkT37yk7OVK1dmT3ziE7OtW7dmt99+ewdfUWs1c3w++MEPZr/4i7+YrV69Onv84x+fnXPOOdnnPve5I35mt75/sizLfvrTn2bHHntstnv37gV/XlneP9NtjRb7W+n2c0+zx6fbzj3NHp9uO/cs5e+rW849Cx2XiMiuvfbamX2Kdv7p+b+BAwBAEtTAAgCQFAEWAICkCLAAACRFgAUAICkCLAAASRFgAQBIigALAEBSBFgAAJIiwAIAkBQBFqDgbrjhhli9enX84Ac/mNn2+te/Pp7+9KfH+Ph4jiMDyIelZAEKLsuyeOYznxnPe97z4pprrokrr7wy/uqv/iruvPPOeNKTnpT38AA6bkXeAwCgvp6ennj/+98fv/EbvxFr166ND3/4w/HFL35xJrxedNFFceutt8Z5550Xn/rUp3IeLUD7mYEFSMSzn/3s+OY3vxk333xznHvuuTPbR0dH45FHHomPf/zjAizQFdTAAiTgC1/4QnznO9+JycnJOOGEE+b82wte8IJYs2ZNTiMD6DwBFqDgvvrVr8bLXvay2LVrVwwPD8d73/vevIcEkCs1sAAFNjY2Fueff35cfvnlcfHFF8epp54aZ555Ztxzzz1x+umn5z08gFyYgQUoqP/6r/+KF7/4xfFrv/Zr8e53vzsiIk4//fS44IIL4j3veU/OowPIjxlYgII67rjj4tvf/vYR2z/72c/mMBqA4tCFACBxw8PD8dWvfjUOHjwYxx13XOzZsyfOPPPMvIcF0DYCLAAASVEDCwBAUgRYAACSIsACAJAUARYAgKQIsAAAJEWABQAgKQIsAABJEWABAEiKAAsAQFIEWAAAkiLAAgCQlP8PqPmNvWm6TboAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(8,6))\n", "ax.plot(X, y, \"b.\")\n", "ax.set_xlabel(r'$x_1$')\n", "ax.set_ylabel(r'$y$');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Linear regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear regression using scikit-learn" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2.2151] [[3.7701]]\n" ] } ], "source": [ "# Fit the linear regression model with sklearn\n", "from sklearn.linear_model import LinearRegression\n", "lin_reg = LinearRegression()\n", "lin_reg.fit(X, y)\n", "\n", "# Print the linear regression parameters (with a specified precision)\n", "with np.printoptions(precision=4):\n", " print(lin_reg.intercept_, lin_reg.coef_)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "X_predict = np.array([[0], [2]])\n", "y_predict = lin_reg.predict(X_predict)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAq8AAAINCAYAAAAQtZZ4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZpUlEQVR4nO3deXxTVf7/8XcobVmkxYXVQAUpFERFQEVARFDA7Qsz7guCVEEEARnZXFGUbViUTWGmiqPiNgg6KgpqARVQNhFkd6gQAVEHWxaFtrm/P86vhUJbmjbJvTd5PR8PHuWmaXJyW8K7537O53gsy7IEAAAAuEA5uwcAAAAAlBThFQAAAK5BeAUAAIBrEF4BAADgGoRXAAAAuAbhFQAAAK5BeAUAAIBrEF4BAADgGuXtHkCo+f1+7d69W1WqVJHH47F7OAAAADiBZVk6cOCAateurXLlip9bjfjwunv3btWpU8fuYQAAAOAUdu3aJa/XW+x9Ij68VqlSRZI5GQkJCTaPBgAAACfKyspSnTp18nNbcSI+vOaVCiQkJBBeAQAAHKwkJZ4s2AIAAIBrEF4BAADgGoRXAAAAuEbE17yWhGVZysnJUW5urt1DQRDExMSofPnytEYDACACRX14PXr0qPbs2aPDhw/bPRQEUaVKlVSrVi3FxcXZPRQAABBEUR1e/X6/duzYoZiYGNWuXVtxcXHM1rmcZVk6evSofvnlF+3YsUPJycmnbHYMAADcI6rD69GjR+X3+1WnTh1VqlTJ7uEgSCpWrKjY2Fj9+OOPOnr0qCpUqGD3kAAAQJAwJSUxMxeB+J4CABCZ+B8eAAAArkF4BQAAgGsQXlGskSNHqlmzZvnHPXv2VLdu3cr0mMF4DAAAEJ0Iry7Vs2dPeTweeTwexcbGqn79+nr44Yd16NChkD7v888/r9mzZ5fovhkZGfJ4PPr2229L/RgAAADHi+puA27XpUsXvfzyy8rOztYXX3yhe++9V4cOHdILL7xQ4H7Z2dmKjY0NynMmJiY64jEAAEB0Yub1RJYlHToU/j+WFfBQ4+PjVbNmTdWpU0d33HGH7rzzTs2fPz//Uv9LL72k+vXrKz4+XpZlKTMzU71791b16tWVkJCgDh06aN26dQUec+zYsapRo4aqVKmi1NRU/fnnnwU+f+Ilf7/fr3HjxqlBgwaKj49X3bp19eyzz0qS6tWrJ0m66KKL5PF41L59+0If48iRIxowYICqV6+uChUqqG3btlq5cmX+5xcvXiyPx6PPPvtMLVu2VKVKldS6dWtt2bIl4HMGAADcjfB6osOHpdNOC/+fIOzwVbFiRWVnZ0uStm/frrfffltz587Nv2x/3XXXae/evfroo4+0evVqNW/eXB07dtT//vc/SdLbb7+tJ598Us8++6xWrVqlWrVqacaMGcU+54gRIzRu3Dg9/vjj2rhxo+bMmaMaNWpIkr755htJ0qeffqo9e/bo3XffLfQxhg4dqrlz5+qVV17RmjVr1KBBA3Xu3Dl/XHkeffRRTZw4UatWrVL58uXVq1evUp8rAADgTpQNRIhvvvlGc+bMUceOHSWZDRheffVVVatWTZL0+eefa/369dq3b5/i4+MlSRMmTND8+fP173//W71799Zzzz2nXr166d5775UkPfPMM/r0009Pmn3Nc+DAAT3//POaNm2aevToIUk699xz1bZtW0nKf+4zzzxTNWvWLPQx8socZs+erWuuuUaS9I9//EOLFi1SWlqahgwZkn/fZ599VldccYUkafjw4bruuuv0559/sgkBAKBYPp+0bZuUnCx5vXaPBmVFeD1RpUrSwYP2PG+APvjgA5122mnKyclRdna2unbtqqlTp2rGjBlKSkrKD4+StHr1ah08eFBnnnlmgcf4448/9MMPP0iSNm3apPvvv7/A5y+77DKlp6cX+vybNm3SkSNH8gNzafzwww/Kzs5WmzZt8m+LjY3VJZdcok2bNhW47wUXXJD/91q1akmS9u3bp7p165b6+QEAkS0tTerdW/L7pXLlpFmzpNRUu0eFsiC8nsjjkSpXtnsUJXLllVfqhRdeUGxsrGrXrl1gUVblE16D3+9XrVq1tHjx4pMep2rVqqV6/ooVK5bq645n/f9aX4/Hc9LtJ952/OvL+5zf7y/zGAAAkcnnOxZcJfOxTx+pc2dmYN2MmlcXq1y5sho0aKCkpKRTdhNo3ry59u7dq/Lly6tBgwYF/px11lmSpMaNG2vFihUFvu7E4+MlJyerYsWK+uyzzwr9fFxcnCQpNze3yMdo0KCB4uLi9OWXX+bflp2drVWrVqlx48bFviYAAIqzbdux4JonN1favt2e8SA4mHmNEldddZUuu+wydevWTePGjVOjRo20e/duffTRR+rWrZtatmypgQMHqkePHmrZsqXatm2r119/Xd9//73q169f6GNWqFBBw4YN09ChQxUXF6c2bdrol19+0ffff6/U1FRVr15dFStW1Mcffyyv16sKFSqc1CarcuXK6tu3r4YMGaIzzjhDdevW1fjx43X48GGlcl0HAFAGycmmVOD4ABsTIzVoYN+YnMLNdcDMvEYJj8ejjz76SO3atVOvXr3UsGFD3XbbbcrIyMjvDnDrrbfqiSee0LBhw9SiRQv9+OOP6tu3b7GP+/jjj+tvf/ubnnjiCTVu3Fi33nqr9u3bJ0kqX768pkyZopkzZ6p27drq2rVroY8xduxY3XjjjerevbuaN2+u7du365NPPtHpp58e3JMAAIgqXq+pcY2JMccxMdLMme4La8GWliYlJUkdOpiPaWl2jygwHssqRYNRF8nKylJiYqIyMzOVkJBQ4HN//vmnduzYoXr16rFiPcLwvQUA5PH5TKlAgwYEV5/PBNYTZ6MzMuw9N8XltRNRNgAAACKa10tozVNcHbBbzhFlAwAAAFEirw74eG6rAya8AgAARIlIqAOmbAAAACCKpKaaXrdurQMmvAIAAEQZN9cBUzYAAAAA1yC8AgAAwDUIrwAAAHANwisAAABcg/DqUj179pTH45HH41FsbKxq1Kihq6++Wi+99JL8J3YfLsbs2bNVtWrV0A0UAAAgiAivLtalSxft2bNHGRkZWrBgga688koNHDhQ119/vXJycuweHgAAQNARXoPE55PS083HcImPj1fNmjV19tlnq3nz5nrkkUf03nvvacGCBZo9e7YkadKkSTr//PNVuXJl1alTRw888IAOHjwoSVq8eLHuueceZWZm5s/ijhw5UpL02muvqWXLlqpSpYpq1qypO+64Q/v27QvfiwMAACgE4TUI0tKkpCSpQwfzMS3NvrF06NBBF154od59911JUrly5TRlyhRt2LBBr7zyij7//HMNHTpUktS6dWs999xzSkhI0J49e7Rnzx49/PDDkqSjR49q1KhRWrdunebPn68dO3aoZ8+edr0sAAAASWxSUGY+n9S7t5RXZur3S336mJ0r7Gr+m5KSou+++06SNGjQoPzb69Wrp1GjRqlv376aMWOG4uLilJiYKI/Ho5o1axZ4jF69euX/vX79+poyZYouueQSHTx4UKeddlpYXgcAAMCJmHkto23bjgXXPLm5Zss1u1iWJY/HI0lKT0/X1VdfrbPPPltVqlTR3Xffrd9++02HDh0q9jHWrl2rrl27KikpSVWqVFH79u0lSTt37gz18AEAAIpEeC2j5GSp3AlnMSbG7BVsl02bNqlevXr68ccfde2116pp06aaO3euVq9erenTp0uSsrOzi/z6Q4cOqVOnTjrttNP02muvaeXKlZo3b54kU04AAABgF8JrGXm90qxZJrBK5uPMmfaVDHz++edav369brzxRq1atUo5OTmaOHGiWrVqpYYNG2r37t0F7h8XF6fc3NwCt23evFm//vqrxo4dq8svv1wpKSks1gIAAI5AzWsQpKaaGtft282Ma7iC65EjR7R3717l5ubq559/1scff6wxY8bo+uuv1913363169crJydHU6dO1Q033KCvvvpKL774YoHHOOecc3Tw4EF99tlnuvDCC1WpUiXVrVtXcXFxmjp1qu6//35t2LBBo0aNCs+LAgAAKAYzr0Hi9Urt24d3xvXjjz9WrVq1dM4556hLly5KT0/XlClT9N577ykmJkbNmjXTpEmTNG7cODVt2lSvv/66xowZU+AxWrdurfvvv1+33nqrqlWrpvHjx6tatWqaPXu23nnnHTVp0kRjx47VhAkTwvfCAAAAiuCxLMuyexChlJWVpcTERGVmZiohIaHA5/7880/t2LFD9erVU4UKFWwaIUKB7y0AAO5RXF47ETOvAAAAcA3CKwAAAFyD8AoAAADXILwCAABEEJ9PSk83HyMR4RUAACBCpKVJSUlShw7mY1qa3SMKPsKrzHaqiCx8TwEAZeHG2UufT+rd+9i29X6/1KePu15DSdgaXpcuXaobbrhBtWvXlsfj0fz58wt83rIsjRw5UrVr11bFihXVvn17ff/990F7/tjYWEnS4cOHg/aYcIa872ne9xgAgJIq7eyl3YF327ZjwTVPbq7ZRCmS2LrD1qFDh3ThhRfqnnvu0Y033njS58ePH69JkyZp9uzZatiwoZ555hldffXV2rJli6pUqVLm54+JiVHVqlXztz6tVKmSPB5PmR8X9rEsS4cPH9a+fftUtWpVxeTt2wsAQAkUNXvZuXPxGxGlpR37unLlzNbxqanhGXOe5GTz3McH2JgYs/tnJHHMJgUej0fz5s1Tt27dJJkQUrt2bQ0aNEjDhg2TZLZDrVGjhsaNG6c+ffqU6HFP1fTW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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(8,6))\n", "ax.plot(X_predict, y_predict, \"r-\",label=\"Prediction\")\n", "ax.plot(X, y, \"b.\",label=\"Data\")\n", "ax.set_xlabel('X')\n", "ax.set_ylabel('y')\n", "ax.legend(loc='best');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear regression using the Normal Equation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us create the design matrix `X_d` for the linear model.\n", "It is a linear model with two features corresponding to the two terms in a polynom of order 1:\n", "- an $X^0$ (bias)\n", "- an $X^1$ (linear feature) " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "m = len(X) # number of instances\n", "# The design matrix will have shape (m x 2)\n", "# It is created by adding X^0 = 1 to each instance\n", "X_d = np.c_[np.ones((m, 1)), X] " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(100, 2)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_d.shape" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "### EXERCISE\n", "#\n", "# (a) Solve the normal equation to compute the fit parameters\n", "# (b) Print the best fit parameters\n", "# (c) Plot the fitted linear model together with the data\n", "#" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Comment on the base for the sklearn LinearRegression method" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `LinearRegression` class is based on the `scipy.linalg.lstsq()` function (the name stands for \"least squares\"), which you could call directly:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[2.21509616],\n", " [3.77011339]])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "theta_best_svd, residuals, rank, s = np.linalg.lstsq(X_d, y, rcond=1e-6)\n", "theta_best_svd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function computes $\\mathbf{X}^+\\mathbf{y}$, where $\\mathbf{X}^{+}$ is the _pseudoinverse_ of $\\mathbf{X}$ (specifically the Moore-Penrose inverse). You can use `np.linalg.pinv()` to compute the pseudoinverse directly:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "array([[2.21509616],\n", " [3.77011339]])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linalg.pinv(X_d).dot(y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear regression using batch gradient descent" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Gradient descent optimization is not really needed for linear regression since we can solve the normal equation exactly. However, it is instructive to implement it yourself and to be able to compare results with a known solution.\n", "- Define a function to perform gradient descent optimization on the batch of data $(\\boldsymbol{X},\\boldsymbol{y})$ that was produced above.\n", "- For linear regression, the gradient of the cost function can be expressed as a matrix equation and is therefore easy to evaluate. See the chapter [Linear Regression](sec:LinearRegression) in the lecture notes.\n", "- Perform up to 1000 iterations where each iteration is one update of the parameter vector\n", " $$\n", " \\theta = \\theta - \\eta \\nabla_\\theta\\chi^2\n", " $$\n", "- Use a learning hyperparameter `eta = 0.1`\n", "- Start from an initial guess $\\theta_0 = (0,0)$, or some other choice." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "### EXERCISE\n", "#\n", "# (a) Implement batch gradient descent as described above and find the best fit parameters\n", "# (b) Print the best fit parameters\n", "# (c) Plot the fitted linear model together with the data\n", "#" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "# EXERCISE\n", "#\n", "# Compute a learning curve. How fast does the MSE decrease as a function of iteration number?\n", "\n", "# Explore the learning rates with different learning hyperparameter \n", "# For example: eta = 0.001, 0.01, 0.1, 0.5\n", "#\n", "# You can also try to use a learning schedule such that the rate decreases with iteration number \n", "# (taking smaller and smaller steps)\n", "# A popular choice is $\\eta(t) = eta_0 t_0 / (t+t_0)$, where $\\eta_0$ and $t_0$ are learning hyperparameters." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Advanced topic: Linear regression using Stochastic Gradient Descent" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Implement an algorithm that performs *stochastic gradient descent*.\n", "\n", "By convention we proceed in **epochs**. All data will be used once every epoch. The gradient update is performed iteratively for each training sample and the data is usually shuffled for each new epoch to prevent cycles. We will use much fewer epochs that we did for the batch gradient descent approach, thereby losing accuracy but gaining speed.\n", "\n", "It is common to use a learning schedule in which we first take large steps, and then shorter and shorter ones. This approach is similar in spirit to the optimization algorithm *simulated annealing*." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "scrolled": false }, "outputs": [], "source": [ "m = len(X)\n", "\n", "n_epochs = 50\n", "\n", "# We will store the iterations in a list to monitor the convergence\n", "theta_path_sgd = []\n", "\n", "def learning_schedule(t):\n", " eta0, t0 = 1, 50 # learning schedule hyperparameters\n", " # implement proper function here\n", " pass\n", "\n", "# random initialization\n", "np.random.seed(42)\n", "theta = np.random.randn(2,1) \n", "\n", "for epoch in range(n_epochs):\n", " random_indices=np.arange(m)\n", " # shuffle the order of indices randomly\n", " np.random.shuffle(random_indices)\n", " # Loop through data and perform the stochastic gradient descent.\n", "\n", "# Plot the convergence of optimal parameters.\n", "# Possibly compare with BGD and the solution to the normal equation." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
SGDRegressor(eta0=0.1, max_iter=50, penalty=None, random_state=42, tol=1e-05)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "SGDRegressor(eta0=0.1, max_iter=50, penalty=None, random_state=42, tol=1e-05)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The Stochastic Gradient Descent optimizer is built-in scikit-learn\n", "from sklearn.linear_model import SGDRegressor\n", "sgd_reg = SGDRegressor(max_iter=50, tol=1e-5, penalty=None, eta0=0.1, random_state=42)\n", "sgd_reg.fit(X, y.ravel())" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([2.26548882]), array([3.80567955]))" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sgd_reg.intercept_, sgd_reg.coef_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Advanced topic: Mini-batch gradient descent" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Instead of computing the gradients based on the full training set (as in batch gradient descent, BGD), or based on a single instance (as in stochastic gradient descent, SGD) there is a third alternative: **mini-batch gradient descent**, MGD:\n", "- For each iteration, use a random subset (a mini-batch) of the training data (say 10-25%) and compute the gradient based on that.\n", "- An epoch is defined as several such steps after which you have used all instances of training data. E.g. if the mini-batch size is 10% of all instances, then 10 non-overlapping steps would exhaust all data and would correspond to one epoch.\n", "- It is common to use a learning schedule with smaller and smaller steps." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The advantages of the mini-batch gradient descent are the following:\n", "- The convergence is less erratic than with SGD, while still being much faster than full BGD.\n", "- The gradient computation for a mini-batch is a matrix operation, which means that the algorithm can get a performance boost from hardware optimization, especially when using GPUs." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Important note on gradient descent methods" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Gradient descent is a general optimization algorithm. However, there are several important issues that should be known before using it:\n", "1. It requires the computation of partial derivatives of the cost function. This is straight-forward for the linear regression method, but can be difficult for other models. The use of **automatic differentiation** is very popular in the ML community,and is well worth exploring. \n", "1. In principle, gradient descent works well for convex cost functions, i.e. where the gradient will eventually direct you to the position of the global minimum. Again, the linear regression problem is favorable because you can show that the cost function has that property. However, most cost functions---in particular in many dimensions---correspond to very **complicated surfaces with many local minima**. In those cases, gradient descent is often not a good method." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Linear regression with higher-degree polynomials" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Any basis-expansion model that is linear in the parameters is a linear model. \n", "\n", "Here we will consider a case in which we use at least quadratic features in our model. This is sometimes known as *polynomial regression*, but this label is really a misnomer since it is still a linear regression problem." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "# Let us generate some cubic data\n", "m = 100\n", "minX = -3\n", "maxX = 3\n", "np.random.seed(1)\n", "X = (maxX-minX) * np.random.rand(m, 1) + minX\n", "# up to cubic features, plus random noise\n", "theta_true = np.array([2, 1, 0.5, -0.25])\n", "eps_noise = 1.\n", "y = eps_noise * np.random.randn(m, 1)\n", "for order in range(len(theta_true)):\n", " y += theta_true[order] * X**order" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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gr8TcYqJPZbr7+/XkSNHVFtbq0gk4upzp9NpxeNx9fT0qK6uztXnDiLer9LwfpWG96s0vF+l4f0qjRvvl+M4On78uBoaGlRVVXiUTCg6NFVVVYp5fGniuro6vuAl4P0qDe9XaXi/SsP7VRrer9KU+36N1pnJYlAwAACwHoEGAABYj0BTppqaGn33u99VTU2N36VYgferNLxfpeH9Kg3vV2l4v0pT6fcrFIOCAQBAsNGhAQAA1iPQAAAA6xFoAACA9Qg0AADAegQaF1155ZWaOnWqxo8frw9/+MNatmyZjhw54ndZRjp8+LBaW1s1bdo0TZgwQR/96Ef13e9+V6dOnfK7NGNt2LBBc+fO1Zlnnqmzzz7b73KM88ADD2jatGkaP368ZsyYoaefftrvkoz11FNPafHixWpoaFAkEtFjjz3md0nGamtr06xZs1RbW6vJkydryZIleuWVV/wuy1ibNm3ShRdeODCZ3pw5c/TLX/6yIq9NoHHR/Pnz9eijj+qVV17RP/7jP+q1117TNddc43dZRnr55ZfV39+v9vZ2vfTSS/rhD3+oBx98ULfddpvfpRnr1KlTWrp0qb75zW/6XYpxHnnkEd18881av369nn/+eV166aVatGiRuru7/S7NSCdPntRFF12kjRs3+l2K8fbs2aPVq1dr79692rVrlz744AMtXLhQJ0+e9Ls0I8ViMd19993av3+/9u/frwULFuiqq67SSy+95Plrc9q2h3bu3KklS5aot7dXf/AHf+B3Oca77777tGnTJr3++ut+l2K0n/3sZ7r55pv1v//7v36XYozZs2fr4osv1qZNmwaWnX/++VqyZIna2tp8rMx8kUhEO3bs0JIlS/wuxQpvv/22Jk+erD179uizn/2s3+VYob6+Xvfdd59aW1s9fR06NB5555139Pd///eaO3cuYaZIqVRK9fX1fpcBy5w6dUrPPfecFi5cOGT5woUL9cwzz/hUFYIqlUpJEuuqIvT19enhhx/WyZMnNWfOHM9fj0DjsrVr12rixIk655xz1N3drccff9zvkqzw2muv6e/+7u+0atUqv0uBZX7/+9+rr69PU6ZMGbJ8ypQpOnr0qE9VIYgcx9GaNWt0ySWXaPr06X6XY6wXX3xRZ511lmpqarRq1Srt2LFDF1xwgeevS6AZxR133KFIJFLwtn///oHfv+WWW/T888/rySefVHV1ta6//nqF6aheqe+XJB05ckSf//zntXTpUn3961/3qXJ/jOX9Qm6RSGTIz47jjFgGlOOGG27QCy+8oO3bt/tditE+/vGPq6urS3v37tU3v/lNLV++XL/73e88f90zPH8Fy91www267rrrCv7OeeedN/DfkyZN0qRJk/Sxj31M559/vuLxuPbu3VuRdpsJSn2/jhw5ovnz52vOnDnq6OjwuDrzlPp+YaRJkyapurp6RDfm2LFjI7o2wFjdeOON2rlzp5566inFYjG/yzHauHHj1NTUJEmaOXOm9u3bpx//+Mdqb2/39HUJNKPIBpSxyHZment73SzJaKW8X2+99Zbmz5+vGTNmaPPmzaqqCl/DsJzvFzLGjRunGTNmaNeuXbr66qsHlu/atUtXXXWVj5UhCBzH0Y033qgdO3Zo9+7dmjZtmt8lWcdxnIpsBwk0LvnNb36j3/zmN7rkkkv0oQ99SK+//rq+853v6KMf/WhoujOlOHLkiObNm6epU6fq/vvv19tvvz3wb+eee66PlZmru7tb77zzjrq7u9XX16euri5JUlNTk8466yx/i/PZmjVrtGzZMs2cOXOg29fd3c2YrDxOnDihQ4cODfz8xhtvqKurS/X19Zo6daqPlZln9erV2rZtmx5//HHV1tYOdAKj0agmTJjgc3Xmue2227Ro0SLF43EdP35cDz/8sHbv3q1/+Zd/8f7FHbjihRdecObPn+/U19c7NTU1znnnneesWrXKSSaTfpdmpM2bNzuSct6Q2/Lly3O+X52dnX6XZoSf/OQnTmNjozNu3Djn4osvdvbs2eN3Scbq7OzM+V1avny536UZJ996avPmzX6XZqSvfe1rA3+Hf/iHf+hcfvnlzpNPPlmR12YeGgAAYL3wDVoAAACBQ6ABAADWI9AAAADrEWgAAID1CDQAAMB6BBoAAGA9Ag0AALAegQYAAFiPQAMAAKxHoAFgje3bt2v8+PF66623BpZ9/etf14UXXqhUKuVjZQD8xqUPAFjDcRx96lOf0qWXXqqNGzfqzjvv1E9/+lPt3btXf/RHf+R3eQB8xNW2AVgjEolow4YNuuaaa9TQ0KAf//jHevrppwfCzNVXX63du3fr8ssv1z/8wz/4XC2ASqJDA8A6F198sV566SU9+eSTuuyyywaWd3Z26sSJE9qyZQuBBggZxtAAsMoTTzyhl19+WX19fZoyZcqQf5s/f75qa2t9qgyAnwg0AKxx4MABLV26VO3t7WppadHtt9/ud0kADMEYGgBWOHz4sK644grdeuutWrZsmS644ALNmjVLzz33nGbMmOF3eQB8RocGgPHeeecdLVq0SFdeeaVuu+02SdKMGTO0ePFirV+/3ufqAJiADg0A49XX1+s///M/Ryx//PHHfagGgIk4ywlAYLS0tOjAgQM6efKk6uvrtWPHDs2aNcvvsgBUAIEGAABYjzE0AADAegQaAABgPQINAACwHoEGAABYj0ADAACsR6ABAADWI9AAAADrEWgAAID1CDQAAMB6BBoAAGA9Ag0AALAegQYAAFjv/wFoLwafTP7rjgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot the data. It is pretty tricky to see the features\n", "fig,ax = plt.subplots(1,1)\n", "\n", "ax.plot(X, y, \"b.\")\n", "ax.set_xlabel(\"$x_1$\")\n", "ax.set_ylabel(\"$y$\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### using scikit-learn" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the following we use the `LinearRegression` class from scikit-learn. You can equally well construct the design matrix and solve the normal equation explicitly with linear algebra." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `PolynomialFeatures` class offers a fast way to construct the design matrix with all features up to a specified degree.\n", "\n", "Note that problems with more than one input dimension would then contain mixtures up to that degree. E.g., degree-two polynomial features for a problem with $x_1$ and $x_2$ would contain the following features:\n", "1 \n", "; $x_1$\n", "; $x_2$\n", "; $x_1^2$\n", "; $x_2^2$\n", "; $x_1 x_2$" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "from sklearn.preprocessing import PolynomialFeatures\n", "poly_features = PolynomialFeatures(degree=3, include_bias=False)\n", "X_poly = poly_features.fit_transform(X)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-0.49786797])" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Note that the first element of the instance vector is\n", "X[0]" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-0.49786797, 0.24787252, -0.12340779])" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# while the first element of the design matrix is\n", "# NOTE that we have excluded the bias term (x^0). \n", "# This term will later be added in the linear regression\n", "X_poly[0]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([1.96984865]), array([[ 1.02594731, 0.53415279, -0.26334408]]))" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# perform the fit\n", "lin_reg = LinearRegression()\n", "lin_reg.fit(X_poly, y)\n", "\n", "# note the bias term, which is the attribute `intercept_` from the fit\n", "lin_reg.intercept_, lin_reg.coef_" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "# EXERCISE\n", "#\n", "# Compare to the \"known\" amplitudes of the different features. \n", "# Why doesn't the fit parameters agree better?\n", "#\n", "#" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "# Make predictions with the linear regression model on a linear grid of new points\n", "# The PolynomialFeatures.transfom method is useful for preparing the new data for a prediction,\n", "# but it is picky with the shape of the input vector.\n", "X_new=np.linspace(minX, maxX, 100).reshape(100, 1)\n", "X_new_poly = poly_features.transform(X_new)\n", "y_new = lin_reg.predict(X_new_poly)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "# EXERCISE\n", "#\n", "# Plot the data and the prediction\n", "#\n", "#" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Over- and underfitting" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will explore fitting to models that have both too many and too few features." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# For these fits we will employ scaling of the data\n", "# We use the built-in StandardScaler to rescale the data to zero mean and unit variance.\n", "# This will make the fit more stable\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn.pipeline import Pipeline\n", "\n", "fig,ax = plt.subplots(1,1)\n", "\n", "for style, degree in ((\"g-\", 100), (\"b--\", 3), (\"r-.\", 1)):\n", " polybig_features = PolynomialFeatures(degree=degree, include_bias=False)\n", " std_scaler = StandardScaler()\n", " lin_reg = LinearRegression()\n", " # Here we use a Pipeline that assembles several steps that we\n", " # previously applied sequentially:\n", " # 1. The data is transformed to the chosen polynomial features.\n", " # 2. The data is transformed to mean=0 and variance=1 (usually makes it numerically more stable)\n", " # 3. Perform the linear regression fit\n", " polynomial_regression = Pipeline([\n", " (\"poly_features\", polybig_features),\n", " (\"std_scaler\", std_scaler),\n", " (\"lin_reg\", lin_reg),\n", " ])\n", " polynomial_regression.fit(X, y)\n", " y_newbig = polynomial_regression.predict(X_new)\n", " ax.plot(X_new, y_newbig, style, label=f'{degree:>3}')\n", "\n", "\n", "ax.plot(X, y, \"b.\")\n", "ax.legend(loc=\"best\")\n", "ax.set_xlabel(\"$x_1$\")\n", "ax.set_ylim([-10,30])\n", "ax.set_ylabel(\"$y$\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Note how the high-degree polynomial produces a very wiggly curve that tries very hard to go through the training data. The model explodes near the edges where there is no more training data. \n", "- The first degree polynomial, on the other hand, fails to pick up some trends in the data that is clearly there. " ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "# EXERCISE\n", "#\n", "# Which of these models would you label as **overfitting** \n", "# and which one as **underfitting** the data?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Learning curves" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to gauge a model's generalization performance (predictive power) it is common to split the data into a *training set* and a *validation set*. We will also see examples of a third set called the *test set*.\n", "\n", "**Learning curves** are plots of the model's performance on both the training and the validation sets, measured by some performance metric such as the mean squared error. This measure is plotted as a function of the size of the training set, or alternatively as a function of the training iterations." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Performance metric" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApsAAAH5CAYAAADORvWoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAyzklEQVR4nO3dfXRU9Z3H8c9kIgGRRMElGCeEtEmrLZWuQD1Q2w24S2otlT1H60NXqaYleNDKek4XsfXx1E27arvdqpjQqbV1Ubuni3parbLbgLbqEUSqa1sNaiAjpWhrE0ANMDP7xzXPN8ncmfub+/R+nTNnyGTm3m8u8/CZ39ONZbPZrAAAAAADSrwuAAAAAOFF2AQAAIAxhE0AAAAYQ9gEAACAMYRNAAAAGEPYBAAAgDGETQAAABhT6nUBw2UyGe3Zs0dTpkxRLBbzuhwAAAAMk81mtX//flVVVamkZOy2S9+FzT179qi6utrrMgAAADCOrq4uJRKJMe/ju7A5ZcoUSVbx5eXlHlcDAACA4Xp6elRdXd2f28biu7DZ13VeXl5O2AQAAPCxXIY8MkEIAAAAxhA2AQAAYAxhEwAAAMYQNgEAAGAMYRMAAADGEDYBAABgDGETAAAAxhA2AQAAYAxhEwAAAMYQNgEAAGAMYRMAAADGEDYBAABgDGETAAAAxhA2AQAAYAxhEwAAAMYQNt+XSknt7dY1AAAA3EHYlJRMSjU10uLF1nUy6XVFAAAA4RD5sJlKSStWSJmM9XMmIzU308IJAADghsiHzY6OgaDZJ52Wdu70ph4AAIAwiXzYrK+XSoYdhXhcqqvzph4AAIAwiXzYTCSktjYrYErWdWurdTsAAAAKU+p1AX7Q1CQ1Nlpd53V1BE0AAAC3EDbfl0gQMgEAANwW+W50AAAAmEPYBAAAgDGETQAAABhD2AQAAIAxhE0AAAAYQ9gEAACAMYRNAAAAGEPYBAAAgDGETQAAABhD2AQAAIAxhE0AAAAY4zhsPvHEE1q6dKmqqqoUi8X04IMP9v/u8OHDWrNmjT72sY9p8uTJqqqq0sUXX6w9e/a4WTMAAAACwnHYPHjwoObMmaPbb799xO/eeecdbd++Xddee622b9+u//7v/9Yrr7yiz3/+864UCwAAgGCJZbPZbN4PjsW0ceNGLVu2bNT7bN26VZ/4xCe0a9cuzZw5c9xt9vT0qKKiQt3d3SovL8+3NAAAABjiJK+Vmi6mu7tbsVhMxx57rO3ve3t71dvb2/9zT0+P6ZIAAABQJEYnCL333nu6+uqrdeGFF46aeltaWlRRUdF/qa6uNlkSAAAAishY2Dx8+LDOP/98ZTIZ3XnnnaPeb+3ateru7u6/dHV1mSoJAAAARWakG/3w4cP6whe+oNdff12/+tWvxuzLLysrU1lZmYkyAAAA4DHXw2Zf0Ozo6FB7e7umTZvm9i4AAAAQEI7D5oEDB7Rz587+n19//XXt2LFDU6dOVVVVlc455xxt375dP//5z5VOp7V3715J0tSpUzVhwgT3KgcAAIDvOV76aPPmzVq0aNGI25cvX64bbrhBtbW1to9rb29XQ0PDuNtn6SMAAAB/M7r0UUNDg8bKpwUs2wkAAICQ4dzoAAAAMIawCQAAAGMImwAAADCGsAkAAABjCJsAAAAwhrAJAAAAYwibAAAAMIawCQAAAGMImwAAADCGsAkAAABjCJsAAAAwhrAJAAAAYwibAAAAMIawCQAAAGMImwAAADCGsAkAAABjCJsAAAAwhrAJAAAAYwibAAAAMIawCQAAAGMImwAAADCGsAkAAABjCJsAAAAwhrAJAAAAYwibAAAAMIawCQAAAGMImwAAADCGsAkAAABjCJsAAAAwhrAJAAAAYwibAAAAMIawCQAAAGMImwAAADCGsAkAAABjCJsAAAAwhrAJAAAAYwibAAAAMIawCQAAAGMImwAAADCGsAkAAABjCJsAAAAwhrAJAAAAYwibAAAAMIawCQAAAGMImwAAADCGsAkAAABjCJsAAAAwhrAJAAAAYwibDqRSUnu7dQ0AAIDxETZzlExKNTXS4sXWdTLpdUUAAAD+R9jMQSolrVghZTLWz5mM1NxMCycAAMB4CJs56OgYCJp90mlp505v6gEAAAgKx2HziSee0NKlS1VVVaVYLKYHH3xwyO+z2axuuOEGVVVVadKkSWpoaNBLL73kVr2eqK+XSoYdqXhcqqvzph4AAICgcBw2Dx48qDlz5uj222+3/f2//du/6Tvf+Y5uv/12bd26VTNmzNA//MM/aP/+/QUX65VEQmprswKmZF23tlq3AwAAYHSxbDabzfvBsZg2btyoZcuWSbJaNauqqrR69WqtWbNGktTb26vKykp9+9vfVnNz87jb7OnpUUVFhbq7u1VeXp5vaUakUlbXeV0dQRMAAESXk7zm6pjN119/XXv37tWSJUv6bysrK9Pf/d3f6amnnrJ9TG9vr3p6eoZcii3XJY0SCamhgaAJAACQK1fD5t69eyVJlZWVQ26vrKzs/91wLS0tqqio6L9UV1e7WdK4WNIIAADAHCOz0WOx2JCfs9nsiNv6rF27Vt3d3f2Xrq4uEyXZYkkjAAAAs0rd3NiMGTMkWS2cJ5xwQv/t+/btG9Ha2aesrExlZWVulpGzsZY0oqscAACgcK62bNbW1mrGjBnatGlT/22HDh3Sli1btHDhQjd35QqWNAIAADDLcdg8cOCAduzYoR07dkiyJgXt2LFDu3fvViwW0+rVq/Wv//qv2rhxo/7v//5PX/rSl3T00UfrwgsvdLv2grGkEQAAgFmOlz7avHmzFi1aNOL25cuX60c/+pGy2axuvPFGtba26u2339Zpp52mO+64Q7Nnz85p+14sfcSSRgAAALlzktcKWmfTBD+vswkAAAAP19kEAAAABiNsAgAAwBjCJgAAAIwhbBqU62kwAQAAwoqwaQinwQQAACBsGsFpMAEAACyETQPGOg0mAABAlBA2DeA0mAAAABbCpgGcBhMAAMBS6nUBYdXUJDU2chpMAAAQbYRNgxIJQiYAAIg2utEBAABgDGETAAAAxhA2AQAAYAxhEwAAAMYQNgEAAGAMYRMAAADGEDYBAABgDGETAAAAxhA2AQAAYAxhEwAAAMYQNguUSknt7dY1AAAAhiJsFiCZlGpqpMWLretk0uuKAAAA/IWwmadUSlqxQspkrJ8zGam5mRZOAACAwQibeeroGAiafdJpaedOb+oBAADwI8JmnurrpZJhRy8el+rqvKkHAADAjwibeUokpLY2K2BK1nVrq3U7AAAALKVeFxBkTU1SY6PVdV5XR9AEAAAYjrBZoESCkAkAADAautEBAABgDGETAAAAxhA2AQAAYAxh0wOc4hIAAEQFYbPIOMUlAACIEsJmEdmd4nLFCmnrVm/rAgAAMIWwWUR2p7jMZKTTTqOFEwAAhBNhs4jsTnEpSdms1NzMGE4AABA+hM0i6jvFpV3gTKetMxEBAACECWGzyJqapGeekWKxobfH49YpLwEAAMKEsOmB+fOl9eutgClZ162tnPYSAACED+dG90hTk9TYaHWd19URNAEAQDgRNj2USBAyAQBAuNGNDgAAAGMImwAAADCGsAkAAABjCJsAAAAwhrAJAAAAYwibAAAAMIawCQAAAGMImwAAADCGsAkAAABjCJsAAAAwxvWweeTIEX3jG99QbW2tJk2apA984AO66aablMlk3N4VAAAAfM71c6N/+9vf1l133aV77rlHH/3oR7Vt2zZdcsklqqio0JVXXun27gAAAOBjrofNp59+WmeffbbOOussSdKsWbN03333adu2bW7vCgAAAD7nejf66aefrv/93//VK6+8Ikn67W9/q1//+tf67Gc/a3v/3t5e9fT0DLkAAAAgHFxv2VyzZo26u7t10kknKR6PK51O6+abb9YFF1xge/+WlhbdeOONbpcBAAAAH3C9ZfOBBx7Qvffeqw0bNmj79u265557dOutt+qee+6xvf/atWvV3d3df+nq6nK7JAAAAHgkls1ms25usLq6WldffbVWrVrVf9s3v/lN3XvvvfrDH/4w7uN7enpUUVGh7u5ulZeXu1kaAAAAXOAkr7nesvnOO++opGToZuPxOEsfAQAARJDrYzaXLl2qm2++WTNnztRHP/pRPf/88/rOd76jSy+91O1dAQAAwOdc70bfv3+/rr32Wm3cuFH79u1TVVWVLrjgAl133XWaMGHCuI+nGx0AAMDfnOQ118NmoQibAAAA/ubpmE0AAACgD2ETAAAAxhA2AQAAYAxhEwAAAMYQNgEAAGAMYRMAAADGEDYBAABgDGETAAAAxhA2HUqlpPZ26xoAAABjI2w6kExKNTXS4sXWdTLpdUUAAAD+RtjMUSolrVghZTLWz5mM1NxMCycAAMBYCJs56ugYCJp90mlp505v6gEAAAgCwmaO6uulkmFHKx6X6uq8qQcAACAICJs5SiSktjYrYErWdWurdTsAAADslXpdQJA0NUmNjVbXeV0dQRMAAGA8hE2HEglCJgAAQK7oRgcAAIAxhE0AAAAYQ9gEAACAMYRNAAAAGEPYBAAAgDGETQAAABhD2AyhVEpqb+e87QAAwHuEzZBJJqWaGmnxYus6mRz4XaEhlBALAACcImyGSColrVghZTLWz5mM1Nxs3T5WCM1FoY8HAADRRNgMkY6OgaDZJ52Wnn569BCai7FCLAAAwFgImyFSXy+VDPsfjcelbNY+hO7cmdt2RwuxuT4eAABEF2EzRBIJqa3NCpiSdd3aKi1caB9C6+py2+5o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qqmpSbW1tZo0aZI++MEP6vrrr9ehQ4e8Li0Sbr75Zi1cuFBHH320jj32WK/LCbU777xTtbW1mjhxoubOnasnn3zS65Ii4YknntDSpUtVVVWlWCymBx980OuSIqGlpUXz58/XlClTNH36dC1btkwvv/yy12VFwrp163TKKaf0nzVowYIFevTRRz2phbA5zKJFi/TTn/5UL7/8sn72s5/p1Vdf1TnnnON1WaH3hz/8QZlMRq2trXrppZf03e9+V3fddZeuueYar0uLhEOHDuncc8/VZZdd5nUpofbAAw9o9erV+vrXv67nn39en/rUp3TmmWdq9+7dXpcWegcPHtScOXN0++23e11KpGzZskWrVq3SM888o02bNunIkSNasmSJDh486HVpoZdIJPStb31L27Zt07Zt27R48WKdffbZeumll4peC+tsjuPhhx/WsmXL1Nvbq6OOOsrrciLllltu0bp16/Taa695XUpk/OhHP9Lq1av117/+1etSQum0007TqaeeqnXr1vXfdvLJJ2vZsmVqaWnxsLJoicVi2rhxo5YtW+Z1KZHz5ptvavr06dqyZYs+/elPe11O5EydOlW33HKLmpqairpfWjbH8Je//EX/+Z//qYULFxI0PdDd3a2pU6d6XQbgikOHDum5557TkiVLhty+ZMkSPfXUUx5VBRRXd3e3JPHeXmTpdFr333+/Dh48qAULFhR9/4RNG2vWrNHkyZM1bdo07d69Ww899JDXJUXOq6++qu9///tauXKl16UArnjrrbeUTqdVWVk55PbKykrt3bvXo6qA4slms7rqqqt0+umna/bs2V6XEwkvvviijjnmGJWVlWnlypXauHGjPvKRjxS9jkiEzRtuuEGxWGzMy7Zt2/rv/7WvfU3PP/+8Hn/8ccXjcV188cVitEF+nB57SdqzZ48+85nP6Nxzz9WXv/xljyoPvnyOPcyLxWJDfs5msyNuA8Lo8ssv1wsvvKD77rvP61Ii48Mf/rB27NihZ555RpdddpmWL1+u3/3ud0Wvo7Toe/TA5ZdfrvPPP3/M+8yaNav/38cff7yOP/54fehDH9LJJ5+s6upqPfPMM540PQed02O/Z88eLVq0SAsWLFBbW5vh6sLN6bGHWccff7zi8fiIVsx9+/aNaO0EwuaKK67Qww8/rCeeeEKJRMLrciJjwoQJqqurkyTNmzdPW7du1fe+9z21trYWtY5IhM2+8JiPvhbN3t5eN0uKDCfH/o033tCiRYs0d+5c3X333SopiUTDuzGFPO/hvgkTJmju3LnatGmT/vEf/7H/9k2bNunss8/2sDLAnGw2qyuuuEIbN27U5s2bVVtb63VJkZbNZj3JM5EIm7l69tln9eyzz+r000/Xcccdp9dee03XXXedPvjBD9KqadiePXvU0NCgmTNn6tZbb9Wbb77Z/7sZM2Z4WFk07N69W3/5y1+0e/dupdNp7dixQ5JUV1enY445xtviQuSqq67SRRddpHnz5vW33u/evZuxyUVw4MAB7dy5s//n119/XTt27NDUqVM1c+ZMDysLt1WrVmnDhg166KGHNGXKlP6W/YqKCk2aNMnj6sLtmmuu0Zlnnqnq6mrt379f999/vzZv3qxf/vKXxS8mi34vvPBCdtGiRdmpU6dmy8rKsrNmzcquXLkym0qlvC4t9O6+++6sJNsLzFu+fLntsW9vb/e6tNC54447sjU1NdkJEyZkTz311OyWLVu8LikS2tvbbZ/jy5cv97q0UBvtff3uu+/2urTQu/TSS/vfa/7mb/4me8YZZ2Qff/xxT2phnU0AAAAYw6A4AAAAGEPYBAAAgDGETQAAABhD2AQAAIAxhE0AAAAYQ9gEAACAMYRNAAAAGEPYBAAAgDGETQAAABhD2AQAAIAxhE0AAAAY8//0Mels/y9YAAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# EXERCISE\n", "#\n", "# Before moving on, let us first make sure to understand the mean_squared_error metric.\n", "# Perform the training of a first-order polynomial model to the cubic data that we just generated.\n", "\n", "lin_reg = LinearRegression()\n", "lin_reg.fit(X, y)\n", "y_predict = lin_reg.predict(X)\n", "\n", "fig, ax = plt.subplots(figsize=(8,6))\n", "ax.plot(X, y_predict, \"r-\",label=\"Prediction\")\n", "ax.plot(X, y, \"b.\",label=\"Data\");" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "# EXERCISE\n", "#\n", "# Write your own function that evaluates the mean-squared-error \n", "# metric on the training set. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\mathrm{MSE} = \\frac{1}{m}\\sum_{i=1}^m \\left(y_i - y_{\\mathrm{predict},i} \\right)^2$" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "# EXERCISE\n", "#\n", "# Then import the built-in convenience function from sckikit-learn \n", "# for computing the MSE metric\n", "from sklearn.metrics import mean_squared_error\n", "# and use it to compute the same metric. The numbers should agree." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Learning curves" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "# built-in convenience function for computing the MSE metric\n", "from sklearn.metrics import mean_squared_error\n", "# built-in convenience function for splitting data\n", "from sklearn.model_selection import train_test_split\n", "\n", "def plot_learning_curves(model, X, y, ax=None):\n", " # split the data into training and validation sets\n", " X_train, X_val, y_train, y_val = train_test_split(X, y, train_size=0.7, random_state=42)\n", " train_errors, val_errors = [], []\n", " for m in range(1, len(X_train)):\n", " model.fit(X_train[:m], y_train[:m])\n", " y_train_predict = model.predict(X_train[:m])\n", " y_val_predict = model.predict(X_val)\n", " train_errors.append(mean_squared_error(y_train[:m], y_train_predict))\n", " val_errors.append(mean_squared_error(y_val, y_val_predict))\n", "\n", " if not ax:\n", " fig,ax = plt.subplots(1,1)\n", " ax.plot(np.sqrt(train_errors), \"r-+\", label=\"train\")\n", " ax.plot(np.sqrt(val_errors), \"b-\", label=\"validation\")\n", " ax.legend(loc=\"best\")\n", " ax.set_xlabel(\"Training set size\")\n", " ax.set_ylabel(\"MSE\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us use a first-order polynomial to model the training data and plot the learning curve. Recall that a low mean-square error implies that the model predicts the data very well." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "image/png": "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4aeciIjIpTn0SvvNN99g/PjxeOWVV5CQkIAuXbqgV69eSNaqcApISkpC79690aVLFyQkJGDKlCkYO3YsYmJi7FzyYuj1wPTphYMb0/dz7px9y0RERFTFeDjyxd9//30MHToUzzzzDABgzpw52LhxI+bNm4cZM2YU2n7+/PkIDw/HnDlzAAAtWrRAXFwcZs2ahQcffNCeRS8sKwv45Re5/8svwKlTxuf273dIkYiIiKoihwU3OTk5iI+Px8svv2y2vnv37ti9e3eR++zZswfdu3c3W9ejRw8sXrwY169fh6enZ6F9srOzka1VCQFIT08HAGRkZFT0LYjUVFnOnwdefFHWabdF2bULyMyU+8HBshAREVGJtOu2UqrUbR0W3Jw7dw55eXmoV6+e2fp69eohNTW1yH1SU1OL3D43Nxfnzp1DSEhIoX1mzJiB6dOnF1ofFhZWgdJXwNixjnldIiIiF3D58mUEBQWVuI1Dq6UAQFdgniWlVKF1pW1f1HrN5MmTMWHCBMPj/Px8XLhwAbVq1SrxdcojIyMDYWFhOHPmDAIDA6167MqE58GI50LwPAieB8HzYMRzISw5D0opXL58GaGhoaUez2HBTe3ateHu7l4oS5OWllYoO6MJDg4ucnsPDw/UqlWryH28vb3h7e1ttq569erlL7gFAgMDq/SHVMPzYMRzIXgeBM+D4Hkw4rkQpZ2H0jI2Gof1lvLy8kJkZCQ2b95stn7z5s3o1KlTkftER0cX2n7Tpk2Iiooqsr0NERERVT0O7Qo+YcIEfPbZZ/j8889x7NgxPP/880hOTsaIESMASJXSU089Zdh+xIgROH36NCZMmIBjx47h888/x+LFizFx4kRHvQUiIiJyMg5tc/Poo4/i/PnzeOONN6DX63HTTTdhw4YNaPDfKL56vd5szJuIiAhs2LABzz//PD755BOEhobio48+cnw38P94e3tj6tSpharBqhqeByOeC8HzIHgeBM+DEc+FsPZ50ClL+lQRERERVRKcC4CIiIhcCoMbIiIicikMboiIiMilMLghIiIil8Lgxko+/fRTREREwMfHB5GRkdixY4eji2Rz27dvR9++fREaGgqdToc1a9aYPa+UwrRp0xAaGgpfX1907doVR44ccUxhbWjGjBm45ZZbEBAQgLp16+L+++/HiRMnzLapCudi3rx5aNOmjWEQrujo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h3///Re1a9eGh4dHmV/PXgYPHoxLly5hzZo15T5Geno6lFKoXr261cpFRMVz3m8UIrIJvV5vuP/NN9/g9ddfN5vUz9fX12z769evw9PTs9Tj1qxZs0zlcHd3N8wE7OqCgoIcXQSiKoXVUkRVTHBwsGEJCgqCTqczPM7KykL16tXx7bffomvXrvDx8cGKFStw/vx5PP7446hfvz78/PzQunVrfP3112bHLVgt1bBhQ7zzzjsYMmQIAgICEB4ejoULFxqeL1gttW3bNuh0Ovz888+IioqCn58fOnXqVGg25bfeegt169ZFQEAAnnnmGbz88su4+eabi32/Fy9exIABA1CnTh34+vqiadOmWLJkieH5lJQUPProo6hRowZq1aqFfv364dSpUwCAadOmYdmyZfj++++h0+mg0+mwbdu2Il/nf//7H1q3bg1fX1/UqlULd999N65cuQLAvFpKe98Fl65duxqOtXv3btx+++3w9fVFWFgYxo4dazgWEZWOwQ0RFfLSSy9h7NixOHbsGHr06IGsrCxERkbihx9+wG+//YZnn30WTz75JPbt21ficWbPno2oqCgkJCRg5MiReO6553D8+PES93nllVcwe/ZsxMXFwcPDA0OGDDE89+WXX+Ltt9/Gu+++i/j4eISHh2PevHklHu+1117D0aNH8eOPP+LYsWOYN28eateuDQC4evUq7rzzTvj7+2P79u3YuXMn/P390bNnT+Tk5GDixIl45JFH0LNnT+j1euj1enTq1KnQa+j1ejz++OMYMmQIjh07hm3btqF///4oqtY/LCzMcCy9Xo+EhATUqlULt99+OwDg8OHD6NGjB/r3749Dhw7hm2++wc6dOzF69OgS3ycRmSj/3J5EVNktWbJEBQUFGR4nJSUpAGrOnDml7tu7d2/1wgsvGB4XnPm6QYMGauDAgYbH+fn5qm7dumrevHlmr5WQkKCUMs4yv2XLFsM+69evVwDUtWvXlFJKdejQQY0aNcqsHJ07d1Zt27Yttpx9+/ZVTz/9dJHPLV68WDVr1kzl5+cb1mVnZytfX1+1ceNGpZRSgwYNUv369Sv+RCil4uPjFQB16tSpIp8v7hjXrl1THTp0UPfee6/Ky8tTSin15JNPqmeffdZsux07dig3NzfDeSCikjFzQ0SFREVFmT3Oy8vD22+/jTZt2qBWrVrw9/fHpk2bkJycXOJx2rRpY7ivVX+lpaVZvE9ISAgAGPY5ceIEbr31VrPtCz4u6LnnnsPKlStx8803Y9KkSdi9e7fhufj4ePzxxx8ICAiAv78//P39UbNmTWRlZeHPP/8s8bim2rZti27duqF169Z4+OGHsWjRIly8eLHU/YYOHYrLly/jq6++gpubm6FMS5cuNZTH398fPXr0QH5+PpKSkiwuE1FVxgbFRFRItWrVzB7Pnj0bH3zwAebMmYPWrVujWrVqGD9+PHJycko8TsGGyDqdDvn5+Rbvo/XsMt2nYG8vVUqHz169euH06dNYv349tmzZgm7dumHUqFGYNWsW8vPzERkZiS+//LLQfnXq1CnxuKbc3d2xefNm7N69G5s2bcLHH3+MV155Bfv27UNERESR+7z11lv46aefsH//frMeZvn5+Rg+fDjGjh1baJ/w8HCLy0RUlTFzQ0Sl2rFjB/r164eBAweibdu2aNSoEU6ePGn3cjRr1gz79+83WxcXF1fqfnXq1MHgwYOxYsUKzJkzx9CwuX379jh58iTq1q2LJk2amC1aDycvLy/k5eWV+ho6nQ6dO3fG9OnTkZCQAC8vL6xevbrIbWNiYvDGG2/g22+/RePGjc2ea9++PY4cOVKoPE2aNIGXl1ep5SAiBjdEZIEmTZoYMhPHjh3D8OHDkZqaavdyjBkzBosXL8ayZctw8uRJvPXWWzh06FCJY/e8/vrr+P777/HHH3/gyJEj+OGHH9CiRQsAwIABA1C7dm3069cPO3bsQFJSEmJjYzFu3Dj8/fffAKTX16FDh3DixAmcO3cO169fL/Qa+/btwzvvvIO4uDgkJydj1apV+Pfffw2vY+q3337DU089hZdeegmtWrVCamoqUlNTceHCBQDSmHvPnj0YNWoUEhMTcfLkSaxduxZjxoyxxikkqhIY3BBRqV577TW0b98ePXr0QNeuXREcHOyQEXcHDBiAyZMnY+LEiWjfvj2SkpIwePBg+Pj4FLuPl5cXJk+ejDZt2uD222+Hu7s7Vq5cCQDw8/PD9u3bER4ejv79+6NFixYYMmQIrl27hsDAQADAsGHD0KxZM0RFRaFOnTrYtWtXodcIDAzE9u3b0bt3b9x444149dVXMXv2bPTq1avQtnFxcbh69SreeusthISEGJb+/fsDkDZHsbGxOHnyJLp06YJ27drhtddeM7Q/IqLScYRiIqrU7rnnHgQHB+OLL75wdFGIyEmwQTERVRpXr17F/Pnz0aNHD7i7u+Prr7/Gli1bsHnzZkcXjYicCDM3RFRpXLt2DX379sXBgweRnZ2NZs2a4dVXXzVU6RARAQxuiIiIyMWwQTERERG5FAY3RERE5FIY3BAREZFLYXBDRERELoXBDREREbkUBjdERETkUhjcEBERkUthcENEREQuhcENERERuZT/B9lyHmjbxpfmAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lin_reg = LinearRegression()\n", "fig,ax = plt.subplots(1,1)\n", "plot_learning_curves(lin_reg, X, y, ax=ax)\n", "ax.set_ylim([0,4]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Several features deserves to be mentioned:\n", "1. The performance on the training set starts at zero when only 1-2 data are in the training set.\n", "1. The error on the training set then increases steadily as more data is added. \n", "1. It finally reaches a plateau.\n", "1. The validation error is initially very high, but reaches a plateau that is very close to the training error." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "# EXERCISE\n", "#\n", "# This features in a learning curve are typical for a model that underfits. \n", "# Can you explain / understand why that is?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let us try a very high degree polynomial, which should be overfitting the data." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "image/png": "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i4r3t90GuLsb7ceokzqFm4cffhizZs3C+++/jy1btsDZ2Rn9+vVTHz927Bhuv/12ve8nhMDkyZOxefNmxMfHIzAwsNZrwsLCsG3bNo19u3btQmhoaL2CFRERkaV78EG56ePJJ4E77pAjrdLTK2pzqrK1BZ59Fnj9dUBHbxKTqNNoqb///hsjRozA77//DhcXF6xduxYjRoxQHw8PD0evXr3wzjvv6HW/CRMm4JtvvsGPP/6IoKAg9X53d3c4OTkBkM1K2dnZWL9+PQA5FLxLly54+eWXMX78eBw8eBCRkZH49ttv8fjjj9f6nRwtRUREVLu//waWLZOrll+9KpuoVK+qTeWRR+Toq379ZH+exlCX3991CjcqeXl5cHFxgY2Njcb+K1euwNXVVe8alJpmO16zZg0iIiIAABEREcjMzER8pfFqCQkJePXVV3Hy5En4+flh5syZiIyM1Os7GW6IiIga7o8/gA8+AOLiKtav6tVLhpxhw+TvQ0NqtHAzduxYvc778ssv9b2l0THcEBERGU56uuyAvHatHG0FAEFBwO+/A1q6wtZbXX5/16nPzdq1a9G2bVsEBwejHhU+REREZGHuuEPOobNgAbB0qWzK8vQ0bLCpqzqFm8jISGzcuBHnzp3D2LFj8dxzz+mccI+IiIisg48P8M47wKxZsjXDlOrUIrZs2TIolUrMnDkT27Ztg7+/P5566ins3LmTNTlEREQEV1dZm2NKde7u4+DggGeeeQa7d+/GqVOn0LlzZ0yYMAFt27bF9evXG6OMRERERHprUF9mhUIBhUIBIQTKy8sNVSYiIiKieqtzuCkqKsK3336Lhx56CEFBQTh+/Dg+++wzZGVlwcXFpTHKSERERKS3OnUonjBhAjZu3IiAgAC88MIL2Lhxo9YlD6xRixbA7t2mLgURERHVaZ6bZs2aISAgAMHBwTVOwAcAmzZtMkjhGkNjzXNDREREjafR5rkZPXq0zlBDREREZGp1nsSPiIiIqCkz8MoPRERERKbFcENEREQWheGGiIiILArDDREREVkUhhsiIiKyKAw3REREZFEYboiIiMiiMNwQERGRRWG4ISIiIovCcENEREQWheGGiIiILArDDREREVkUhhsiIiKyKAw3REREZFEYboiIiMiiMNwQERGRRWG4ISIiIovCcENEREQWheGGiIiILArDDREREVkUhhsiIiKyKAw3REREZFEYboiIiMiiMNwQERGRRWG4ISIiIoti0nCzb98+DB06FH5+flAoFNiyZYvO8+Pj46FQKKptp0+fNk6BiYiIqMmzNeWX37hxA927d8cLL7yAxx9/XO/r0tLS4Obmpv7cunXrxigeERERmSGThpvBgwdj8ODBdb7Oy8sLHh4ehi8QERERmT2z7HMTHBwMX19fhIeHY+/evTrPLSoqQn5+vsZGRERElsuswo2vry9WrlyJuLg4bNq0CUFBQQgPD8e+fftqvCY6Ohru7u7qzd/f34glJiIiImNTCCGEqQsBAAqFAps3b8bw4cPrdN3QoUOhUCiwdetWrceLiopQVFSk/pyfnw9/f3/k5eVp9NshIiKipis/Px/u7u56/f42q5obbXr16oX09PQajzs4OMDNzU1jIyIiIstl9uEmOTkZvr6+pi4GERERNREmHS11/fp1nD17Vv05IyMDKSkpaNmyJQICAjB79mxkZ2dj/fr1AICYmBi0a9cOnTt3RnFxMTZs2IC4uDjExcWZ6kcgIiKiJsak4SYxMRH333+/+nNUVBQAYMyYMVi7di2USiWysrLUx4uLizF9+nRkZ2fDyckJnTt3xvbt2zFkyBCjl52IiIiapibTodhY6tIhiYiIiJoGq+pQTERERFQZww0RERFZFIYbIiIisigMN0RERGRRGG6IiIjIojDcEBERkUVhuCEiIiKLwnBDREREFoXhhoiIiCwKww0RERFZFIYbIiIisigMN0RERGRRGG6IiIjIojDcEBERkUVhuCEiIiKLwnBDREREFoXhhoiIiCwKww0RERFZFIYbIiIisigMN0RERGRRGG6IiIjIojDcEBERkUVhuCEiIiKLwnBDREREFoXhhoiIiCwKww0RERFZFIYbIiIisigMN0RERGRRGG6IiIjIojDcEBERkUVhuCEiIiKLwnBDREREFoXhhoiIiCwKww0RERFZFIYbIiIisigmDTf79u3D0KFD4efnB4VCgS1bttR6TUJCAkJCQuDo6Ij27dtj+fLljV9QIiIiMhsmDTc3btxA9+7d8dlnn+l1fkZGBoYMGYJ+/fohOTkZc+bMwZQpUxAXF9fIJSUiIiJzYWvKLx88eDAGDx6s9/nLly9HQEAAYmJiAAAdO3ZEYmIiFi9ejMcff7yRSklERETmxKz63Bw8eBADBw7U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xTvvvCPS09PF119/LZydncWGDRvU51jLsygrKxMBAQFi5syZ1Y4Z8hkw3BjI559/Ltq2bSvs7e1Fjx491MOALdnevXsFgGrbmDFjhBByeOP8+fOFj4+PcHBwEP379xfHjx83baEbgbZnAECsWbNGfY41PIuxY8eq/xto3bq1CA8PVwcbIazjGdSkarixlmehmqfEzs5O+Pn5iREjRoiTJ0+qj1vLcxBCiG3btokuXboIBwcHcdddd4mVK1dqHLeWZ7Fz504BQKSlpVU7ZshnoBBCiHrWLBERERE1OexzQ0RERBaF4YaIiIgsCsMNERERWRSGGyIiIrIoDDdERERkURhuiIiIyKIw3BAREZFFYbghIoMYMGAApk2bpvf5mZmZUCgUSElJabQyNRUREREYPny4qYtBZDU4iR+Rlalthd0xY8Zg7dq1db7vlStXYGdnB1dXV73OLysrw99//41WrVrB1ta2zt9nLBEREbh69Sq2bNlS73vk5eVBCAEPDw+DlYuIatZ0/0UhokahVCrV77/77ju8+eabGov6OTk5aZxfUlICOzu7Wu/bsmXLOpXDxsZGvRKwpXN3dzd1EYisCpuliKyMj4+PenN3d4dCoVB/vnnzJjw8PPD9999jwIABcHR0xIYNG/DPP//gmWeeQZs2beDs7IyuXbvi22+/1bhv1Wapdu3a4d1338XYsWPh6uqKgIAArFy5Un28arNUfHw8FAoF/vvf/yI0NBTOzs7o3bt3tdWUFy1aBC8vL7i6uuLFF1/ErFmzcPfdd9f48/77778YNWoUWrduDScnJ9xxxx1Ys2aN+nh2djZGjhyJFi1awNPTE8OGDUNmZiYAYMGCBVi3bh1+/PFHKBQKKBQKxMfHa/2e//u//0PXrl3h5OQET09PPPjgg7hx4wYAzWYp1c9ddRswYID6XgcOHED//v3h5OQEf39/TJkyRX0vIqodww0RVTNz5kxMmTIFqampGDRoEG7evImQkBD89NNPOHHiBF566SU8//zzOHz4sM77fPTRRwgNDUVycjImTJiAV155BadPn9Z5zdy5c/HRRx8hMTERtra2GDt2rPrY119/jXfeeQfvv/8+kpKSEBAQgNjYWJ33e+ONN3Dq1Cn8/PPPSE1NRWxsLFq1agUAKCgowP333w8XFxfs27cPv/32G1xcXPDwww+juLgY06dPx1NPPYWHH34YSqUSSqUSvXv3rvYdSqUSzzzzDMaOHYvU1FTEx8djxIgR0Nbq7+/vr76XUqlEcnIyPD090b9/fwDA8ePHMWjQIIwYMQLHjh3Dd999h99++w2TJk3S+XMSUSX1X9uTiMzdmjVrhLu7u/pzRkaGACBiYmJqvXbIkCHitddeU3+uuvJ127ZtxXPPPaf+XF5eLry8vERsbKzGdyUnJwshKlaZ37Nnj/qa7du3CwCisLBQCCHEvffeKyZOnKhRjj59+oju3bvXWM6hQ4eKF154Qeux1atXi6CgIFFeXq7eV1RUJJycnMTOnTuFEEKMGTNGDBs2rOYHIYRISkoSAERmZqbW4zXdo7CwUNx7773iP//5jygrKxNCCPH888+Ll156SeO8/fv3i2bNmqmfAxHpxpobIqomNDRU43NZWRneeecddOvWDZ6ennBxccGuXbuQlZWl8z7dunVTv1c1f+Xm5up9ja+vLwCor0lLS8M999yjcX7Vz1W98sor2LhxI+6++27MmDEDBw4cUB9LSkrC2bNn4erqChcXF7i4uKBly5a4efMm/vzzT533rax79+4IDw9H165d8eSTT2LVqlX4999/a71u3LhxuHbtGr755hs0a9ZMXaa1a9eqy+Pi4oJBgwahvLwcGRkZepeJyJqxQzERVdO8eXONzx999BE++eQTxMTEoGvXrmjevDmmTZuG4uJinfep2hFZoVCgvLxc72tUI7sqX1N1tJeoZcDn4MGDcf78eWzfvh179uxBeHg4Jk6ciMWLF6O8vBwhISH4+uuvq13XunVrnfetzMbGBrt378aBAwewa9cuLF26FHPnzsXhw4cRGBio9ZpFixbhl19+wZEjRzRGmJWXl+Pll1/GlClTql0TEBCgd5mIrBlrboioVvv378ewYcPw3HPPoXv37mjfvj3S09ONXo6goCAcOXJEY19iYmKt17Vu3RoRERHYsGEDYmJi1B2be/TogfT0dHh5eaFDhw4am2qEk729PcrKymr9DoVCgT59+mDhwoVITk6Gvb09Nm/erPXcuLg4vPXWW/j+++9x++23axzr0aMHTp48Wa08HTp0gL29fa3lICKGGyLSQ4cOHdQ1E6mpqXj55ZeRk5Nj9HJMnjwZq1evxrp165Ceno5Fixbh2LFjOufuefPNN/Hjjz/i7NmzOHnyJH766Sd07NgRADBq1Ci0atUKw4YNw/79+5GRkYGEhARMnToVFy9eBCBHfR07dgxpaWm4fPkySkpKqn3H4cOH8e677yIxMRFZWVnYtGkT/v77b/X3VHbixAmMHj0aM2fOROfOnZGTk4OcnBxcuXIFgOzMffDgQUycOBEpKSlIT0/H1q1bMXnyZEM8QiKrwHBDRLV644030KNHDwwaNAgDBgyAj4+PSWbcHTVqFGbPno3p06ejR48eyMjIQEREBBwdHWu8xt7eHrNnz0a3bt3Qv39/2NjYYOPGjQAAZ2dn7Nu3DwEBARgxYgQ6duyIsWPHorCwEG5ubgCA8ePHIygoCKGhoWjdujV+//33at/h5uaGffv2YciQIbjzzjsxb948fPTRRxg8eHC1cxMTE1FQUIBFixbB19dXvY0YMQKA7HOUkJCA9PR09OvXD8HBwXjjjTfU/Y+IqHacoZiIzNpDDz0EHx8ffPXVV6YuChE1EexQTERmo6CgAMuXL8egQYNgY2ODb7/9Fnv27MHu3btNXTQiakJYc0NEZqOwsBBDhw7F0aNHUVRUhKCgIMybN0/dpENEBDDcEBERkYVhh2IiIiKyKAw3REREZFEYboiIiMiiMNwQERGRRWG4ISIiIovCcENEREQWheGGiIiILArDDREREVkUhhsiIiKyKP8PdSOU+PCO67wAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.pipeline import Pipeline\n", "\n", "polynomial_regression = Pipeline([\n", " (\"poly_features\", PolynomialFeatures(degree=15, include_bias=False)),\n", " (\"lin_reg\", LinearRegression()),\n", " ])\n", "\n", "fig,ax = plt.subplots(1,1)\n", "plot_learning_curves(polynomial_regression, X, y, ax=ax)\n", "ax.set_ylim([0,4]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These learning curves are similar to the underfitting model; but there are some important differences:\n", "1. The training error is much smaller than with the linear model.\n", "1. There is no clear plateau.\n", "1. There is a gap between the curves, which implies that the model performs significantly better on the training data than on the validation set." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Both these examples that we have just studied demonstrate the so called **bias-variance tradeoff**.\n", "- A high bias model has a relatively large error, most probably due to wrong assumptions about the data features.\n", "- A high variance model is excessively sensitive to small variations in the training data.\n", "- The irreducible error is due to the noisiness of the data itself. It can only be reduced by obtaining better data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We seek a more systematic way of distinguishing between under- and overfitting models, and for quantification of the different kinds of errors. \n", "\n", "We will find that **Bayesian statistics** has the promise to deliver on that ultimate goal.\n", "\n", "First, however, we study a common approach to avoid overfitting--namely **regularization**. We will later provide a Bayesian interpretation of this approach." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Regularized models" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ridge regression" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import Ridge" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "# Let's generate some noisy data with a linear feature.\n", "np.random.seed(1)\n", "m = 20\n", "X = 3 * np.random.rand(m, 1)\n", "y = 1 + 0.5 * X + 0.5 * np.random.randn(m, 1) \n", "X_new = np.linspace(0, 3, 100).reshape(100, 1)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "def train_ridge_model(X_train, y_train, alpha, X_predict=None, degree=1, **model_kargs):\n", " model = Ridge(alpha, **model_kargs) if alpha > 0 else LinearRegression()\n", " model = Pipeline([\n", " (\"poly_features\", PolynomialFeatures(degree=degree, include_bias=False)),\n", " (\"std_scaler\", StandardScaler()),\n", " (\"regul_reg\", model),\n", " ])\n", " model.fit(X_train, y_train)\n", " if not len(X_predict):\n", " X_predict=X_train\n", " return model.predict(X_predict)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig,axs = plt.subplots(1,2,figsize=(8,5))\n", "\n", "alphas=(0, 1e-5,10, 100)\n", "for i,degree in enumerate((1,10)):\n", " ax = axs[i]\n", " for alpha, style in zip(alphas, (\"b-\", \"k-.\", \"g--\", \"r:\")):\n", " y_new_regul = train_ridge_model(X, y, alpha, X_predict=X_new, degree=degree, random_state=42)\n", " ax.plot(X_new, y_new_regul, style, label=r'$\\alpha={}$'.format(alpha))\n", " ax.plot(X, y, \"b.\")\n", " ax.legend(loc=\"upper left\")\n", " ax.set_xlabel(\"$x_1$\")\n", " ax.axis([0, 3, 0, 4])\n", "\n", "axs[0].set_ylabel(\"$y$\");" ] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.0" }, "nav_menu": {}, "toc": { "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 6, "toc_cell": false, "toc_section_display": "block", "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 1 }