{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Demos Weeks 1 and 2\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this demo, we will study multivariate regression as well as well as regularization. We will also study how linear regression can be used to learn a model on data that exhibit a non linear relationship between the features x_i and the targets t_i and we will take this example to illustrate the flexibility of the combination of linear prediction and high dimension for learning" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part I Multivariate regression" ] }, { "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": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "x = np.linspace(0,5,10)\n", "\n", "# Before considering more complex data, we get back to the linearly generated targets. \n", "# In practice, we will not want to re-code the gradient descent each time. We will instead \n", "# rely on the scikit learn library which offers a number of built in implementations. \n", "\n", "\n", "xtilde = np.hstack((np.ones((len(x),1)), x.reshape(-1,1)))\n", "\n", "beta = np.random.normal(0,1,(2,1))\n", "\n", "\n", "# [beta0 beta1] * [1, xtilde] = beta0 + beta1 xtilde_1\n", "\n", "targets = np.dot(beta.T, xtilde.T)\n", "\n", "targets_noisy = targets + np.random.normal(0,.05,len(x))\n", "\n", "\n", "plt.plot(x.reshape(-1,1), targets.T)\n", "plt.scatter(x.reshape(-1,1), targets_noisy.T, c= 'r')\n", "plt.show()\n", "\n", "\n" ] }, { "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": [ "# One of the simplest model in scikit learn is the LinearRegression model \n", "# which can be imported through the lines below\n", "\n", "from sklearn.linear_model import LinearRegression\n", "\n", "# Most of the model in scikit learn requires an initialization \n", "\n", "myRegression = LinearRegression()\n", "\n", "\n", "# the model then come with two functions: (1) A 'fit' function which learns the \n", "# model on some dataset (the equivalent to performing the gradient updates)\n", "myRegression.fit(x.reshape(-1,1), targets_noisy.T)\n", "\n", "xtest = np.linspace(0,5,40)\n", "\n", "# and (2) a 'predict' function, which, once the model has been learned, can be \n", "# used apply the model on new data \n", "prediction = myRegression.predict(xtest.reshape(-1,1))\n", "\n", "\n", "# we can then compare the true model with the model learned as before \n", "plt.plot(x.reshape(-1,1), targets.T)\n", "plt.plot(xtest, prediction, c='g')\n", "plt.scatter(x.reshape(-1,1), targets_noisy.T, c= 'r')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 1. -5. 25. ]\n", " [ 1. -3.88888889 15.12345679]\n", " [ 1. -2.77777778 7.71604938]\n", " [ 1. -1.66666667 2.77777778]\n", " [ 1. -0.55555556 0.30864198]\n", " [ 1. 0.55555556 0.30864198]\n", " [ 1. 1.66666667 2.77777778]\n", " [ 1. 2.77777778 7.71604938]\n", " [ 1. 3.88888889 15.12345679]\n", " [ 1. 5. 25. ]]\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "x = np.linspace(-5,5,10)\n", "\n", "xtilde = np.hstack((np.ones((len(x),1)), x.reshape(-1,1)))\n", "\n", "xtilde = np.hstack((xtilde, (x.reshape(-1,1))**2))\n", "print(xtilde)\n", "\n", "# beta0 + beta1 x --> beta0 + beta1 x + beta2 x^2 --> (beta0, beta1, beta2)" ] }, { "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": [ "# Now that we familiarized ourselves with the LinearRegression model from scikit, \n", "# we will study how it can be combined with a higher dimensional space to learn non \n", "# linear mapping of any kind. \n", "\n", "# we now consider a simple non linear relation betweem the x_i and the t_i \n", "# (so that it cannot be captured by the line anymore) of the form \n", "# t_i = beta0 + beta1*x_i + beta2*x_i^2\n", "\n", "beta = np.asarray([1,1,1])\n", "\n", "targets = np.dot(beta.T, xtilde.T)\n", "\n", "# To which we add some noise as before \n", "\n", "targets_noisy = targets + np.random.normal(0,2,len(x))\n", "\n", "plt.plot(x.reshape(-1,1), targets.T)\n", "plt.scatter(x.reshape(-1,1), targets_noisy.T, c= 'r')\n", "plt.show()\n", "\n" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD4CAYAAAD1jb0+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5CElEQVR4nO3dd3hUxRrH8e+kQkKoCRBaQu890kWKIB1UinREje2iIF4VUGkXAVGUIioiiBBQiihFamjSCb0kkQBJKCEFAul15/6RuLASJEg2m03ez/Pk2ezM2T3vKv4czs6ZUVprhBBCWB8bSxcghBDi35EAF0IIKyUBLoQQVkoCXAghrJQEuBBCWCm73DyZq6ur9vT0zM1TCiGE1Tt27FiU1trt7+25GuCenp74+fnl5imFEMLqKaVCsmqXSyhCCGGlJMCFEMJKSYALIYSVkgAXQggrJQEuhBBWSgJcCCGslAS4EEJYKQlwIYQwo8TURN7e/DYht7Ocyv1YJMCFEMKMvvH7hrlH5hJyRwJcCCGsRkJqAjP3z6RD5Q609Wib4++fq7fSCyFEQfKN3zeEx4ezpt0as7y/jMCFEMIM4lPimbl/Jk9XeZo2ldqY5RwS4EIIYQZf+31NRHwEk9tNNts5JMCFECKHxafE8+n+T+lctTOtKrYy23kkwIUQIod9dfQrIhMizTr6BglwIYTIUXEpccw6MIsu1brQokILs55LAlwIIXLQ/CPziUqIYtJTkzIafHzA0xNsbDIefXxy7FwyjVAIIXJIbHIssw7Momu1rjSv0DwjrL29ISEh44CQkIznAIMHP/b5ZAQuhBA5ZN6RedxKvMWkdpMyGiZMuBvef0lIyGjPARLgQgiRA2KSY/jswGd0r96dZuWbZTSGhqKBTTVbk6buidvQ0Bw5pwS4EELkgLmH5xKdFH139A1QqRIbaz3Jm33GsaVmK5P2nCDXwIUQ4jHdSbrD5wc/p2eNnniV8zK2J0+dxswDKdQOv0TXwAMZjU5OMG1ajpxXRuBCCPGY5hyew+2k26ajb2CZZ0uuFivN+PObsEWDhwcsXJgjX2BCNkbgSqlCwF7AMfP4NVrriUqpksDPgCcQDPTXWkfnSFVCCGElohOj+eLQF/Su2Zsm7k2M7bcTUpjre4Gnarjx5IwtZjl3dkbgyUAHrXVDoBHQRSnVAvgA8NVaVwd8M58LIUSBMuvALO4k3WFK+ykm7fN3BhGXnMb4brXNdu6HBrjOEJf51D7zRwO9gaWZ7UuBPuYoUAgh8qqw2DDmHJ7DwPoDaVCmgbE99GYCSw8G069pRWqWdTHb+bN1DVwpZauUOglEANu11oeBMlrrMIDMx9IPeK23UspPKeUXGRmZQ2ULIYTl/W/v/0hJT2FKO9PR98ytAdjZ2PBO5xpmPX+2Alxrna61bgRUAJoppepl9wRa64Vaay+ttZebm9u/LFMIIfKWS9GXWHh8IS83fpmqJasa24+HRrPpdBjebatQpmghs9bwSLNQtNa3gd1AFyBcKeUOkPkYkdPFCSFEXjVx90Tsbez56KmPjG1aaz7Z5I+biyPebauYvYaHBrhSyk0pVTzz98LA00AAsB4YnnnYcOA3M9UohBB5ypnwM/ic9mFUs1GUcylnbN967gZ+IdG806kGzo7mv80mO2dwB5YqpWzJCPxVWuuNSqmDwCql1EtAKNDPjHUKIUSe8eGuDynqWJT327xvbEtJMzBjcwDVSxehX9MKuVLHQwNca30aaJxF+02gozmKEkKIvOrglYOsD1zP/9r/j5KFSxrbVxwOIfhmAktGPIGdbe7cIyl3YgohRDZprRm/czxlnMvwdou3je13ElOZ43uB1tVK0a5m7k3WkLVQhBAim7Zf2s7u4N3M6zqPIg5FjO1f777I7cRUxnWtjVIq1+qREbgQQmSD1prxvuPxLO6Jd1NvY/vV6AQW77/Ms43LU698sVytSUbgQgiRDWv913Is7BhL+yzFwdbB2P7Z1kAU8G7nmrlek4zAhRDiIdIMaXy480PqutVlcP27KwmeuXqHX09e56U2lSlXvHCu1yUjcCGEeIilJ5cSeDOQdQPWYWtjC2RcUpn2+3lKOTvweruqD3kH85ARuBBC/IOE1AQm7ZlE8/LN6V2zt7F9Z0AEhy7d4u2nq+NSyN4itckIXAgh/sGXh77kasxVfJ7zMc4wSUs38Mnv/lRxdWZgs5zZHu3fkBG4EEI8QER8BDP2zaBPrT609WhrbP/p6BUuRsbzQdda2OfSTTtZkQAXQogHmLx7Molpicx8eqaxLS45jS93/Ekzz5J0qlPGgtVJgAshRJYCogL49ti3vNb0NWqUuruu97d7LhIVl8L47rl7005WJMCFECIL7+94H2cHZz5+6mNj2407SXz3xyV6NSxHo4rFLVdcJglwIYT4m93Bu1kfuJ7xbcbj5nx3bZPPtwViMMB/n8n9m3ayIgEuhBD3MGgD7257l0rFKvFW87eM7eevx7Dm+FVGtPakYkknC1Z4l0wjFEKIe6w8s5JjYcdY/uxyCtvfvbty+mZ/ihay58121SxYnSkZgQshRKbE1ETG7xxPU/emDKw/0Ni+589I/rgQxVsdq1PMyTI37WRFRuBCCJFp7uG5hN4JZWmfpdiojPFtuiFjn0uPUk4MbeFh4QpNyQhcCCGAyPhIPtn3Cb1q9qKdZztj+5pjVwgMj+W9Z2rhYJe3IjNvVSOEEBYyZc8U4lPiTW7aSUhJ4/Ntf9K4UnG61S9rweqylp1d6SsqpXYppfyVUueUUm9ntk9SSl1TSp3M/Olm/nKFECLnBUYF8s2xb/Bu6k0t11rG9u/2XiYiNpkP88BNO1nJzjXwNGCs1vq4UsoFOKaU2p7Z94XW+jPzlSeEEOb33o73KGxXmEntJhnbImKT+HbvRbrWK0tTj5IPfrEFZWdX+jAgLPP3WKWUP1De3IUJIURu2Bq0lfWB65n59ExKO5c2tn+x/QIpaQbe71LrH15tWY90DVwp5Qk0Bg5nNv1HKXVaKbVYKVXiAa/xVkr5KaX8IiMjH69aIYTIQanpqYzeOppqJavxdvO7u8z/GR7Lz0dDGdrSA09XZwtW+M+yHeBKqSLAWmC01joG+BqoCjQiY4T+eVav01ov1Fp7aa293NzcsjpECCEsYv6R+QREBfDlM1/iaOdobJ+xOQBnRzve6lDdgtU9XLYCXCllT0Z4+2itfwHQWodrrdO11gbgO6CZ+coUQoicFR4XzqQ9k+harSvda3Q3tu8PimJnQAT/aV+NEs4O//AOlpedWSgK+B7w11rPvqfd/Z7DngXO5nx5QghhHhN2TiAxNZEvnvnC2GYwaD753Z/yxQszvJWn5YrLpuzMQmkNDAXOKKVOZraNBwYqpRoBGggGXjVDfUIIkeP8rvux+MRixrYcS03XuysL/nryGueuxzDnhUYUsre1YIXZk51ZKPuArCZA/p7z5QghhHkZtIG3Nr9FaefSfPTUR8b2pNR0Zm0NpEGFYvRsUM6CFWafrIUihChQfE77cPDqQZb0XkJRx6LG9u/3XSbsThJfDGiEjU3eu2knK3IrvRCiwIhNjuX9He/TrHwzhjUcZmy/GZfM17sv8nTtMrSoUsqCFT4aGYELIQqMaX9MIywujHUD1hlXGwSY43uBxNR0Puiad2/ayYqMwIUQBULQrSC+OPQFwxsOp3mF5sb2i5Fx+BwOZWCzilQrXcSCFT46CXAhRP7k4wOenmBjA56evPN9fxxsHZjecbrJYTM3B1DY3pbRT9fI+n3yMLmEIoTIf3x8wNsbEhIA2GwfwoaEED4t9QLuLndvYTl86SbbzofzbucauBZxfNC75VkyAhdC5D8TJhjDO9EO/tMNakbB27MPGA/566adskUL8VKbKpaq9LFIgAsh8p/QUOOvnzwJl0rCgk3gEHzF2L7xTBinrt7h3WdqUtgh79+0kxUJcCFE/lOpEgABrjCzDQw5BR0u321PSk1n5uYAarsX5dnG1rs6tgS4ECL/mTYN7VSYN7qDcwp8tg1wcoJp0wD48WAw124nMqFbbWyt5KadrMiXmEKI/GfwYHxi97Er/Bu+2QhlXD0ywnvwYKLjU5i/M4h2Nd1oU93V0pU+FglwIUS+E50YzTuxa2levjmvHDkA99y0M29nEHHJaYzrWtuCFeYMCXAhRL4z3nc8NxNvsm3oNpM7LkNuxrPsUDD9vSpSs6yLBSvMGXINXAiRrxy6eohvj33L283fplHZRiZ9n24JxM7Ghnc6Wd9NO1mRABdC5BtphjRe2/ga5VzKMbndZJO+YyHRbDoThnfbKpQuWshCFeYsqwjwDaeuM+6XM2itLV2KECIPm3d4HqfCTzG361xcHO9eItE646YdNxdHvNta5007WbGKAA+9lcDKI6GsP3Xd0qUIIfKoqzFX+Xj3x3Sr3o1naz1r0rfl7A2OhUTzTqcaODvmn6/+rCLAX3uqKk09SvDRr2e5fjvR0uUIIfKg0VtGk2ZIY37X+WRs5ZshJc3AjC0B1ChThH5NK1iwwpxnFQFua6OY3b8haQbNf9ecwmCQSylCiLs2BG5grf9aPm77MZVLVDbp8zkcQsjNBMZ1q42drVVEXrZlZ1f6ikqpXUopf6XUOaXU25ntJZVS25VSFzIfS5izUI9SznzUow77g27yw4Fgc55KCGFFbifd5rVNr1G/dH3Gthpr0ncnMZU5vhdoXa0U7Wq4WahC88nO/47SgLFa69pAC+BNpVQd4APAV2tdHfDNfG5WLzxRkY61SjNzSwAXwmPNfTohhBX477b/ciPuBot7L8bB1sGkb8GuIO4kpjK+W22Tyyr5xUMDXGsdprU+nvl7LOAPlAd6A0szD1sK9DFTjUZKKWY83wBnRzvGrDpJSprB3KcUQuRhvpd8WXRiEe+2fBevcl4mfQE3YliyP5hnG5enbrliFqrQvB7pgpBSyhNoDBwGymitwyAj5IHSD3iNt1LKTynlFxkZ+ZjlgpuLI588W5+z12KYt/PCY7+fEMI6xaXE8cqGV6hesjqT2k0y6UtKTeftlScpWtie8d2s/5b5B8l2gCuligBrgdFa65jsvk5rvVBr7aW19nJzy5lrUF3qlaVf0wp8tSuIYyHROfKeQgjrMsF3AsG3g1ncezGF7Qub9M3YHEBgeCyf9WtglTvtZFe2AlwpZU9GePtorX/JbA5XSrln9rsDEeYpMWsf96xDueKFGbvqJPHJabl5aiGEhe0P3c+8I/N484k3aVOpjUnfrsAIfjgQzIhWnrSrmeWFgXwjO7NQFPA94K+1nn1P13pgeObvw4Hfcr487tuYFB8fAFwK2fN5v4aE3Epg2u/+Zjm1ECLvSUpL4qX1L1GpWCWmP226QXFkbDL/XX2KWmVd+KBrLQtVmHuyMwJvDQwFOiilTmb+dANmAJ2UUheATpnPc1bmxqRpV0IILKkhJCRjo9LMEG9epRTeT1ZhxeFQdgXk6l8AhBAWMmXPFAJvBrKw50KKOBQxtmuteW/NKWKS0pjzQmMK2VvnNmmPQuXm+iJeXl7az88v+y/w9ISQEEb0ga1V4ewCKJUIeHhAcDAAyWnp9J6/n6i4FLaNaUtJZ4d/eEMhhDU7HnacZt81Y1jDYSzuvdikb+mBYCauP8fkXnUZ3srTMgWaiVLqmNba6+/tefu2pMyNSUcfgptO8GZ303YARztbvhjQiJjEVMbLgldC5Fup6am8tP4l3Jzd+Lzz5yZ9gTdimfa7P+1rujGspYeFKsx9eTvAMzcgbXQDJu6Gn+vBz3Xvtv+ltntRxnauwZZzN/jl+LXcr1MIYXaf7v+UkzdO8k33byhR+O6N30mp6bz90wmKFrJjVr+G+fKGnQfJ2wE+bVrGRqTA+/uh+VV4oweETX73vkNffrIKzTxLMnH9Oa5GJ+R2pUIIMzoTfoYpe6cwoO4AetfqbdI3c0sAATdimdWvYb6eMpiVvB3ggwfDwoXg4YGdViw9XI5EJwdett9836USWxvF5/0bAjB2lSx4JUR+kZyWzJB1QyhRqATzus4z6dsdGMGS/RlTBtvn8ymDWcnbAQ4ZIR4cDAYDNU9fY8Yzs/j9wu98f+L7+w6tWNKJiT3rcPjyLb7fdzn3axVC5LiPd33M6fDTfN/re9yc794MGBWXzLurT1OzTMGYMpiVvB/gf/OfZv+hvWd7xmwdw+Xo+0O6b9MKdK5ThllbAwm8IQteCWHN9obsZdaBWbza9FW61+hubM+YMniamKRU5gxsVCCmDGbF6gLcRtmwpPcSFIoXf3sRgzZd0EopxfTn6lO0sB2jfz5Jclq6hSoVQjyOmOQYhv86nColqvBZ589M+pYdCmFnQATjutaiVtmiFqrQ8qwuwAE8inswp8sc9oTsYe7huff1lyriyMznG+AfFsOXO2TBKyGs0egtowm9E8qyZ5eZ3LDzZ3gs0zb5066mGyPy2XzvR2WVAQ4wotEIetboyTjfcQREBdzX37F2GQY2q8g3ey5yNPiWBSoUooB6wPIXj2Kd/zqWnFzC+DbjaVmxpbE9KTWdt1aeoIijHbP6Fqwpg1mx2gBXSrGw50Kc7Z0Ztm4YaYb7F7T6sHsdKpZw4p1VJ4mTBa+EML/M5S8ICQF9//IX2XEj7gbeG71p4t6Ej5/62KTv0y2BmVMGG+DmUrCmDGbFagMcoGyRsnzd/WuOXj/KJ398cl+/s6Mds/s35Fp0IlM3nLdAhUIUMBMmQMLf7sNISMhozwatNa9seIW4lDiWPbsMe1t7Y9/uwAgW77/M8JYedKhVJiertlpWHeAA/er2Y3D9wUzZM4X9ofvv6/fyLMlrT1XlZ78rbDt3wwIVClGA3LPMRbba/2bR8UVs/HMjMzrOoI5bHWP7zcwpgzXKFGFcPt6g4VFZfYADLOi+gErFKjHol0HcTrp9X//op2tQx70o4345Q1Rccu4XKERB8bdlLh7afo+Lty4yZusYOlbuyKjmo4ztJlMGC8gqg9mVLwK8qGNRfur7E9djr/PKhlfuu0vTwc6GL19oRGxyGh+slQWvhDCbe5a/MHJyymj/B6npqQxdNxR7W3t+6PMDNupuNC0/FIJvQAQfdKlFbfeCO2UwK/kiwAGalW/GtA7TWHN+DYuOL7qvv0YZF957piY7/MNZ7XfVAhUKUQDcs/wFSmU8LlyY0f4PPt71MQevHuSb7t9QoWgFY/uf4bH8b5M/T9Vw48XWnmYu3vrk7fXAH5FBG+iyvAv7Qvfh5+1ncg0NwGDQDF50mNNXb7P57bZUKuX0gHcSQuSWrUFb6eLTBe8m3nzb81tj+19r/UfGJrN59JOUdilkwSotyzrXA39ENsqGH5/9kSIORXhhzQskpiaa9tsoPuvfEBulGLv6JOmy4JUQFnU99jpD1w2lXul6fNnlS5O+v6YMftq3QYEO73+SrwIcMqYWLu2zlDMRZ3h32/3LzpYvXpgpfepyNDiahXsvWaBCIQRAuiGdIb8MIT41np/7/myys/zePyP5ft9lhrX0oGNtmTL4INnZ1HixUipCKXX2nrZJSqlrf9sjM8/oWr0r77R4hwV+C/g14Nf7+vs0Kk+3+mWZvT2Q89djcr9AIQTT/pjGruBdzO86/74pg2NXn6J66SKMlymD/yg7I/AfgC5ZtH+htW6U+fN7zpb1+KY/PZ2m7k0Z+dtIrty5YtKnlGJan/qUcHJgzM8nSUqVBa+EyE17gvcwec9khjQYwohGI4ztWmveX3uaOwmpzB0oUwYf5qEBrrXeC1jdYiIOtg6sfH4lqYZUhqwbQrrBNKRLODvwad8GBIbHMnv7nxaqUoiCJzI+kkG/DKJqiaos6LbAZD2T5YdD2eEfwftdZcpgdjzONfD/KKVOZ15iKfGgg5RS3kopP6WUX2Rk5GOc7tFVL1WdBd0WsDdkL5P3TL6vv13N0gxpUYnv/rjEwYs3c7U2IQoigzYw/Nfh3Ey4yap+q3BxdDH2BUXE8r+N52lbw40XC/gqg9n1bwP8a6Aq0AgIAz5/0IFa64Vaay+ttZebm9uDDjOboQ2HMqLRCKbuncqmPzfd1z++W208Sznz7upTxCSl5np9QhQksw/OZnPQZmY/M5tGZRsZ25PT0hm18iTOjnZ81rcBNjYFe5XB7PpXAa61Dtdap2utDcB3QLOcLStnLei2gEZlGzFk3RAuRZvOPHFyyFjw6kZMEpPXy4JXQpjLoauHGOc7judrP8/rXq+b9M3aEoh/WAyz+jagdFGZMphd/yrAlVLu9zx9Fjj7oGPzgsL2hVnbfy0Az696/r754Y0rleDN9tVYe/wqW86GWaJEIfK1iPgI+q3uR4WiFVjUa5HJde+9f0ayaN9lhraQKYOPKjvTCFcCB4GaSqmrSqmXgE+VUmeUUqeB9sAYM9f52KqUqILPcz6cvHGS1ze9ft96KKM6VKNBhWKM++UMEbFJFqpSiPwnzZDGgDUDiEqIYm3/tRQvVNzYdys+hbGrT1FNpgz+K9mZhTJQa+2utbbXWlfQWn+vtR6qta6vtW6gte6ltbaKYWu36t34uO3HLD21lIXHFpr02dvaMLt/IxJS0nl/zWlZ8EqIHPLe9vfYHbybhT0W0sS9ibH9r1UG7ySkMveFxhR2kCmDjyrf3Yn5MB8/9TFdqnXhrS1vceTaEZO+aqWLMK5rLXYFRrLyyJUHvIMQIrtWnFnBF4e+YFSzUQxtONSkz+dwKDv8w3mvS03qlJMpg/9GgQtwWxtbfJ7zoZxLOfqu6ktkvOnUxmEtPXmyuitTN54nOCreQlUKYf1O3jjJy+tf5slKT/J5Z9OJakERsfxv03merO7KyNaVLVSh9StwAQ5QsnBJ1vZfS0R8BAPXDjS5ycfGRjGrb0Mc7Gx4Z9VJ0tINFqxUCOt0M+Emz/38HCULl2R1v9UmW6Mlp6Xz1sqTODnY8Xm/hjJl8DEUyAAHaOLehAXdF+B72ZePdn1k0le2WCGm9qnH8dDbfLPnooUqFMI6pRvSGfTLIK7FXmNt/7WUKWI6s+SzrYGcD4th5vMyZfBxFdgABxjZeCQvN36Z6fums/b8WpO+Xg3L0athOb7ccYGz1+5YqEIhrM+HOz9k28VtfNXtK5pXaG7S98eFSL774zJDWlSiUx2ZMvi4CnSAA8zrNo/m5ZszdN1QjocdN+mb2rserkUcGS0LXgmRLWvPr2XG/hl4N/Hm5SYvm/Tdik9h7KqMKYMTutV5wDuIR1HgA7yQXSF+feFXXJ1c6bmyJ9djrxv7ijnZM6tfA4Ii4pi5JcCCVQqR952LOMeI30bQokIL5nada9L31yqDtxNSmfNCI5kymEMKfIBDxiYQGwdt5E7SHXqt7EVCaoKx78nqboxo5cmS/cHsb/4M2NiApyf4+FiuYCHymPC4cHqs7EERhyKs6bcGRztHk/4VR0LZfj5jymDdcsUsVGX+IwGeqUGZBqx8fiXHw44z/NfhGPTd2Sfv3zlJ1VtXebfpQO44OEFICHh7S4gLASSmJtL7p96Ex4WzYeAGyhctb9IfFBHH1I0yZdAcJMDv0bNmTz7t9Clrzq9h4q6JxvbCH03giw2fEelcgv92G02asoGEBJgwwYLVCmF5fy0Pe+TaEXye88GrnOm+u8lp6bz90wkK29vymUwZzHES4H8ztuVYRjYayf/++B8rzqzIaAwNpcGNICbs+p5tNVryXrfRGFAQGmrZYoWwsA93fsjq86v5tNOnPFv72fv6P9/2J+euZ0wZLCNTBnOcnaULyGuUUnzd42suRl9k5G8jqVy8Mi0rVYKQEF48toE4Byc+bzsUx7QUPgnYgIwnREG15MQSpu+bjncTb8a2HHtf/74LUSzce4lBzSvRuW5ZC1SY/8kIPAsOtg6s7b+WCkUr0OfnPoRMGgNOTgCMOvgzbx74mZWNujD5zdmy6JUokHZe3on3Rm86VenE/G7zTZaHBYiOT2Hs6pNUdXPmo+4yZdBcJMAfoJRTKTYO2khyWjI9E78n5psvwcMDlOLd0L287JrEDzcdmbElQEJcFCj+kf489/Nz1CxV877b5AFS0w2MXX2KW/EpzJFVBs1KLqH8g1qutVjTfw1dfbrSx2klvwcFUMiuEAqYoDXJv53j2z2XKGRny5hONSxdrhBmFxEfQfcV3SlkV4iNgzZSrJDplMDUdANvrTzBzoAIpvauS73yMmXQnGQE/hBPV3maH3r/wK7gXQxdN9S48JVSism96tLfqwJzfC/w9W5ZM0Xkb4mpifT5qQ834m6wfuB6PIt7mvSnphsYteIEm8/e4MPutRna0jPL9xE5R0bg2TC4wWAi4iN4Z9s7jHIaxVfdvkIphY2NYvpzDUhOMzBzSwCOdjaMbCPzXEX+k5qeyoA1Azh09RCr+62mWXnTbXBT0gyMWnmcrefC+ahHHV6S/w5yhQR4No1pOYbw+HBm7p9JGecyTGyXMU/c1kbxeb+GJKcamLLxPI72Ngxu7mHhaoXIOQZt4KX1L7Hhzw0s6LaA5+s8b9KfkmbgPyuOs+18OB/3qCODmFwkl1AewfSO0xnRaAST9kziG79vjO12tjbMHdiYDrVKM2HdWdYcu2rBKoXIOVprxmwZw7LTy5jafiqvP2G6m3xKmoE3M8N7Yk8J79yWnU2NFyulIpRSZ+9pK6mU2q6UupD5WMK8ZeYNSim+6/kdPWr04I1Nb5gsQetgZ8OCwU14sror7605xYZT1//hnYSwDlP3TmXukbmMaTGGCU+a3nmckmbgDZ/jbD8fzuRedXlRbpPPddkZgf8AdPlb2weAr9a6OuCb+bxAsLOx4+e+P9OyYksG/TKIXZd3GfsK2duycKgXXp4lGf3zSbaeu2HBSoV4PPOPzGfi7okMbziczzp/ZjLXOzktnTd8jrHDP5wpvesyvJWn5QotwLKzK/1e4NbfmnsDSzN/Xwr0ydmy8jYneyc2DNxA9ZLV6f1Tb06EnTD2FXawZfGIJ2hQoRj/WXGcXQERFqxUiH/H57QPozaPonfN3izqtQgbdTcqktPSeWP5cXb4Z0wVHCazTSzm314DL6O1DgPIfCz9oAOVUt5KKT+llF9kZOSDDrM6JQuXZMuQLRQvVJwuPl3wj/Q39hVxtOOHF5tRs6wLry4/xv6gKAtWKsSj2fjnRob/Opz2nu35qe9P2NncneuQnJbO68uP4xsQwdQ+9WSqoIWZ/UtMrfVCrbWX1trLzc3N3KfLVRWKVmD70O0oFO2Xticg6u6mD8UK27NsZHMql3Lm5aV+HLn897/ECJH37A3ZS7/V/Wjs3pjfXviNQnZ3F6BKSk3ntWXH2BkQwf/61GNoC5ltZWn/NsDDlVLuAJmPBfY6QU3XmuwavguNpv3S9gRGBRr7Sjg7sPzl5rgXL8TIH45y8sptyxUqxEMcunqInit74lnck82DN+Pi6GLsS0pN57Xlx9gVGMknz9ZniIR3nvBvA3w9MDzz9+HAbzlTjnWq7VabXcN3kW5Ip/3S9ly4ecHY5+biyIqXW1DS2YFh3x+WDZJFnnTgygE6L+uMm5Mb24dux9XJ1diXlJrOq8uOsTszvAc1r2TBSsW9sjONcCVwEKiplLqqlHoJmAF0UkpdADplPi/Q6rjVYefwnaQaUmm/tD1Bt4KMfWWLFWLFK81xKWTP0O8PE3gj1oKVCmFqX+g+nln+DGWLlGXPiD1UKFrB2PdXeO/5M5Lpz0l45zUqN1fS8/Ly0n5+frl2Pks4E36G9kvbU9i+MLuH76ZqyarGvuCoePp/exCDhlWvtqCKWxELVipExjXvbj7dqFC0AjuH76ScSzljX1JqOq/86Me+oChmPFefAU9IeFuKUuqY1trr7+1yJ2YOq1+mPr7DfElITaD90vZcir5k7PN0dWbFK83RWjPou8OE3kz4h3cSwrx2Xd5FV5+uVCpWid0jdj8wvGc+10DCO4+SADeDhmUb4jvMl7iUONovbU/w7WBjX7XSLix/uTlJaekMWnSI67cTLVeoKLB8L/nSfUV3KhevzK7huyhb5O6OOSbh/XwD+j9R0YKVin8iAW4mjco2YsewHcQkx9B2SVuTKYa13YuybGRz7iSkMui7Q0TEJFmwUlHQbLu4jR4re1CtZDV2Dt9JmSJljH2JKem8vDQjvD99vgH9vSS88zIJcDNq4t6EXcN3kZyeTJvFbTh67aixr36FYvwwshkRsckMWnSYqLhkC1YqCootQVvotbIXNUvVZOfwnZR2vnsPXmJKOi//eJT9F6OY1bch/SS88zwJcDNrVLYR+0fup6hjUdovbc+OSzuMfU09SrB4xBNcjU5gyKLD3E5IsWClIr9bcWYFvVb2oo5bHXyH+ZpMFUxMSeelpUc5cPEmn/VtSN+mFf7hnUReIQGeC6qVrMb+kfupUqIK3Vd0Z835Nca+FlVKsXCoF5ci4xm2+AgxSakWrFTkV58f+JzBvwymVcVW7By+k1JOpYx9CSlpjPzhKAcv3eTzfg15XsLbakiA5xJ3F3f2jNjDE+WeoP/q/nzr962xr20NNxYMbsL56zG8uOQo8clpFqxU5CcGbWDs1rG8u/1d+tbpa1y/5y9/hffhyzeZ3b8hzzWR8LYmEuC5qEThEmwbuo2u1bvy2qbX+OSPT4w72j9dpwzzBjbm5JXbvLT0KIkp6RauVli75LRkhvwyhNmHZjOq2Sh+ev4nk7VNElLSeHHJUY5cvsUXAxrxbGMJb2sjAZ7LnOyd+HXArwxpMIQJOyfwztZ3MGgDAF3ruzO7f0MOX76F9zI/ktMkxMW/E5McQ7cV3Vh5diUzOs5gTpc52NrYGvvjk9MYseQoR4Mzwrt3o/IWrFb8W7InpgXY29qztM9SXAu78uXhL7ked50lvZfgZO9E70blSU418N7a07zpc4KvhzTB3lb+PyuyLyw2jK4+XTkXeY6lfZYyrOEwk/745IyRt1/ILb58oTG9GpZ7wDuJvE6SwUJslA2zn5nNp09/yupzq2m7pC3XYq4B0P+JikzpXZcd/uGM/ukkaekGC1crrEVgVCCtFrci6FYQGwZueGB4HwuNZo6Et9WTALcgpRT/bf1f1g9cT+DNQJ747gmOXDsCwLCWnkzoVptNZ8J4b81pDIbcW7NGWKfNFzbTfFFz4lPi2T1iN12qme6EGJecxoglRzLDuxE9JbytngR4HtCjRg8OvnSQQnaFeOqHp1h5ZiUAr7StwthONfjlxDXGrzsjIS6ypLVmxr4ZdF/RHc/rCRz5JBKvVn3Bx8d4TFxyGiMWH+F46G3mvtCYHg0kvPMDuQaeR9QrXY8jrxzh+VXPM+iXQZyLPMeU9lMY1bE6yWkG5u8KwtHOhkm96ppsLisKtviUeEauH8mqc6sY4G/L4l9ScUoFboeAtzcAsc/3Z8SSjA1F5g1sTLf67pYtWuQYCfA8xNXJle1Dt/PmpjeZ9sc0zkWeY9mzyxjbuQZJqeks2neZQva2fNC1loS44HL0Zfr83Icz4WeYebQ4/910G5M/FQkJxE6cyvA7npy+eof5AxvTVcI7X5EAz2McbB1Y2HMh9cvUZ8zWMbRe3Jp1A9YxoXttktMMfLv3Eo72trzTqYalSxUW5HvJl/5r+mPQBn4f/DtdJne775gYByeGt3yFM1fvMH9QY7rUk/DOb+QaeB6klOKt5m+xefBmQu+E0vjbxqw+v5rJverS36sCc30vMPG3s3LHZgGktebLQ1/yzPJncC/iztFXjmZ8WVnJdL3uGAcnhg2Ywhn36swf1ETCO5+SAM/DOlftzIlXT1DHrQ4D1gzgtU2v8lHPaoxo5cmPh0LoNHsPO86HW7pMkUuiE6MZsGYAY7aOoVfNXhx86SDVSlbL6Jw2DZycgLvhfbZMNb7yTKJLvbL/8K7CmkmA53GexT3ZO2Iv77d+n++Of0fL75vTv6VizWstKVLIjpd/9OP15ccIlzXF87U9wXto+E1D1gWsY3rH6azpv8Zk13gGD4aFC7lTrRZDB0zlXJlqLKiSxDNv9Ldc0cLsHmtPTKVUMBALpANpWe3Zdq+CsCemOW0N2srQdUOJS4ljXtd5DKk/gkX7LjPH9wKOtja817UWg5tVwsZGvuDML1LTU5m0exLT902nWslq+DznwxPln7jvOK0128+HM3XTeW7cSWLB4KZ0qlMmi3cU1sice2K211o3elh4i8f3TLVnOFX6Y1qFal7e8DIvvlSUoVd3sW10WxpULMZHv56l7zcHZNf7fCLoVhBtlrThk32f8GKjFzn+6vEsw/tiZBzDlxzFe9kxCtnZsvyl5hLeBYTMQrEmPj64v/E+WxOTmNEGJrZP4MixV1mcHMryl6aw7sQ1pm48T/e5f+DdtgpvdaxOIXvbh7+vyFO01iw9tZRRm0dhZ2PH6n6r6Vun733HxSalMm9nEIv3XaawvS0f9ajDsJYesnZOAfK4l1AuA9GABr7VWi/M4hhvwBugUqVKTUNCQv71+Qo8T0+455/fvkow7Fm4XAJea/oaMzvNJC2tENM2+bP2+FU8SjkxrU992lR3ffB7ijwlKiGKN39/k1XnVvGUx1Mse3YZFYuZbm2mtWbdiWtM3xxAZGwy/b0q8F6XWrgWcbRQ1cLcHnQJ5XEDvJzW+rpSqjSwHRiltd77oOPlGvhjsrGBv/37ireHjzvAl61sKOdSjq+7f02PGj04EBTFhF/Pcjkqnmcbl+fD7rUpJf+B51laa3489SNjt43lTvIdprSbwnut3zNZAhbg7LU7TFx/jmMh0TSsUIzJvevRqGJxyxQtco1ZroFrra9nPkYA64Bmj/N+4iH+NtcXwDkVPg/w4MDIAxRzLEbPlT0ZtHYQ1d01m99+klEdqrHx9HU6zt7DKr8rPM7/sIV5BEYF0uHHDoz4bQQ1XWty4tUTjHtynEl434pPYdwvZ+g5fx/BUfF8+nwD1r3RWsK7gPvXAa6UclZKufz1O9AZOJtThYks3DPX18jJCaZNo3mF5hx/9TiT201mzfk11P6qNmv9f+KdTjXY9NaTVHMrwntrTjPou8NcioyzTP35lY9PxuUtG5uMx3sWkfonSWlJTNo9iQbfNODkjZN82+Nb/njxD+qVrmc8Ji3dwI8Hg2n/2W5W+V3hxVaV2fluO/o/UVFmG4mMv7r9mx+gCnAq8+ccMOFhr2natKkWj2n5cq09PLRWKuNx+fL7DjkbflY3/665ZhK6y/Iu+nzEeZ2ebtDLDwXrehO36OoTftdzdvypk1PTc738fGf5cq2dnLTOuLiV8ePklOW/l3vtvLRT15hXQzMJPWjtIH0j9sZ9xxy6GKWf+WKP9nh/ox648KAOvBFjrk8h8jjAT2eRqY91DfxRyTXw3JNuSGfekXlM3D2R+JR4vJt6M6ndJEgvyuSN59l0OoxqpYsw/bn6POFZ0tLlWq+/fbFs5OEBwcH3NV+NucqEnRP48dSPVClRha+7f03nqp1Njgm7k8gnvwew4dR1yhcvzIfda9OlXllZwKwAM8uXmI9KAjz3RcZHMmXPFL72+xoneyfGtRnH6BajOXQxlg9/Pcu124kMbFaJD7rUopiTvaXLtT5ZfLEMgFJguLuT0q3EW0z/YzrzjsxDoxnbciwftf2IwvaFjcckp6Wz6I/LzN8ZRLrWvPZUVV5/qiqFHWQqaEEnAV7ABUYF8v6O9/kt8DcqFq3ItA7TeLbWAObsCOL7fZcp6ezIxJ516NHAXUZ6j+IhI/D4lHjmHJ7Dp/s/JSY5hmENhzGp3SQ8i3uaHO7rH86UjecJuZlA5zpl+KhHHSqWdLr/fUWBJAEuANgdvJt3t73LsbBjNHFvwoyOMyjr+ATj153lzLU7tKvpxtTe9SQ8ssvHJ2PjhISEu21OTqR+u4BFNROYsncKN+Ju0KtmL6Z1mGbyBSXA5ah4pmw4x67ASKq6OTOxZ13a1nDL5Q8h8joJcGFk0AZWnlnJON9xXIm5QlP3poxt+S5xt734YnsQWsOYTtUZ2boydnJX38P5+MCECRAaSqpHRVa9352JKdu4GH2RNpXaMKPjDFpXam3ykvjkNObtDOL7fZdwtLPl7Y7VGd7KEwc7+ect7icBLu6TlJbEslPLmHVgFhduXaBayWq83Ogtzgc1Zk/gHeqWK8r05+rToELx+198T2hRqVLGFMfBg3P9M+QV0YnRfHf8O+YdmcfVmKvUL12f6R2n0616N5NLUlpr1p+6zie/+xMek8zzTSrwfpealC5ayILVi7xOAlw8ULohnV8DfmXm/pkcvX6UMs5l6OI5ktMBzbgdb8/wVp6M7VyTIo6ZS+c84LIBCxcWuBAPuhXEnENzWHJyCfGp8XSo3IExLcbQrXo3bJTpaPrc9TtMWn+Oo8HR1C9fjEm96tLUo4SFKhfWRAJcPJTWml3Bu5i5fybbLm7DxcGFGi7duX69OZWK1GNqn/oZq9w94tS5/EZrzZ6QPXxx6As2BG7A3taegfUGMqbFGBqWbXjf8dHxKXy+PZAVh0Mp7uTAf5+pSX+vitjKjTgimyTAxSM5EXaCzw5+xtrza0lOT8bZpjL2ye3pWbU/n749mLKxN+9/0d+mzuU3l6Mvs/LsSnzO+HA+8jyuTq687vU6bzzxBmWL3L/rTbpBs/JIKJ9tCyQmMZVhLT0Z83QNma4pHpkEuPhXbifd5uezP7Pk5A8cvnYItA1F0hox4gTM3HYCp7R7/vzkwxF4eFw4q86tYsXZFRy6egiAJys9ybCGwxhcf7DJPO57HQ2+xcTfznE+LIbmlUsyuXddapUtmpuli3xEAlw8tsCoQOYeXMSS40tI5Cb26YVpdq04fQJSGBqYSJk5+eMa+M2Em2z8cyMrzq5gx6UdGLSBBmUaMKjeIAbWH0ilYvcvKvaX8Jgkpv/uz68nr+NerBDju9WWufXisUmAixyTlp7G1DkT+SpqL9EOZzCoO6AVpRxq06RMO/rU7s4LDTtQ0tk6ZlbEpcTxR8gf+F72xfeyL6dunEKj8SzuaQztv8/f/rvo+BR+9rvCPN8LpKZrvNtW4Y32VXFykD1TxOOTABc5TmvNpag41pzey6YLmzkTtYfbaedBGbDRRXC196JOqSa08fCid91WNKmQN/brjEmO4UTYCXZe3onvZV8OXztMmiENB1sHWlVsRQfPDnSu2plm5ZvdN3JOSzcQfDOe82Gx+IfFEBAWg39YLDcyN5V+unZpPupRB49Szpb4aCKfkgAXuSL0dgQ/+P3GpgtbOHdzP/Hp4cY+e10ad6c61HVrSLvKzeheuxk1XD2wtzXPl3rxKfH4R/lzLuIcZyPOci4y4/FKzBUAbJQNTd2b0qFyBzpW7kjrSq1xsr97B+qdxFT8w2IygzoW/xsxBN6IJTkt44taOxtFtdJFqO1elFplXfDyLEFTD1kYTOQ8CXBhERFxkfweeJDtQYc4EXackNjzJKRfBXX3z52TXUlKO7njWbw8VUtVpLxLecq5lKN4oeLY2thiq2yzfIxNjiUqIYrIhEiiEqJMfg+PCyf0TiiajPM42jpSy7UW9UrXo65bXeqXqU/riq0pUbgE6QZNyM14/MNiCbgRkxnasVy7nWissaSzA7XdXahdtii13ItS292FaqWL4GgnC00J85MAF3nGtTu3WHd2P39cPkVAZChX7lwlyRBFurqFwSaaNOM2q9nnZO+Eq5Mrrk6uuDm54erkSo1SNYyBXbVkVexs7IhNSiXgRqwxpP3DMkbVianpANjaKKq4OlPbvWjmjwu13YtS2sVRvogUFiMBLvIsg0ETFBnH8ZBojodG4xcSxZ+RVzGoBGyUAc9Shanp7kyNMk5UL+OMm4s9Bm3AxdHFGNr3Xvr46z2vRCfgHxbD+bDYjGvVN2K4cuvuqLpYYXtjQNd2L0od96JUK12EQvYyqhZ5iwS4sCq3E1I4ceU2J0KiOR56m5NXbhOXnAZAKWcHGlcqQROP4jSpVILqpYsQfDMjrDMugWQEdnxKxqjaRkFlV2dqZYb0X6FdtmghGVULqyABLqxaukHzZ3gsx0OjOR5ymxOh0VyKir/vOJdCdsbRdK2yGUFdo4yLbIogrNqDAlwmqQqrYGujjJc6Bjf3ADJ2aj8RGs2lyHg8XZ2p7e5C+eKFZVQtCozHCnClVBdgDmALLNJaz8iRqoTIhpLODnSsXYaOtS1diRCW8a9Xj1dK2QJfAV2BOsBApVSdnCpMCCHEP3uc7T+aAUFa60ta6xTgJ6B3zpQlhBDiYR4nwMsDV+55fjWzzYRSylsp5aeU8ouMjHyM0wkhhLjX4wR4Vt8U3TelRWu9UGvtpbX2cnOTzVqFECKnPE6AXwUq3vO8AnD98coRQgiRXY8T4EeB6kqpykopB+AFYH3OlCWEEOJh/vU0Qq11mlLqP8BWMqYRLtZan8uxyoQQQvyjx5oHrrX+Hfg9h2oRQgjxCB7nEooQQggLkgAXQggrJQEuhBBWSgJcCCGslAS4sF4+PuDpCTY2GY8+PpauSIhcJcvJCuvk4wPe3pCQkPE8JCTjOcDgwZarS4hcJCNwYZ0mTLgb3n9JSMhoF6KAkAAX1ik09NHahciHJMCFdapU6dHahciHJMCFdZo2DZxMd6LHySmjXYgCQgJcWKfBg2HhQvDwAKUyHhculC8wRYEis1CE9Ro8WAJbFGgyAhdCCCslAS6EEFZKAlwIIayUBLgQQlgpCXAhhLBSSuv7NpI338mUigRCcu2EOccViLJ0EbmooH1ekM9cUFjrZ/bQWrv9vTFXA9xaKaX8tNZelq4jtxS0zwvymQuK/PaZ5RKKEEJYKQlwIYSwUhLg2bPQ0gXksoL2eUE+c0GRrz6zXAMXQggrJSNwIYSwUhLgQghhpSTAH4FS6l2llFZKuVq6FnNTSs1SSgUopU4rpdYppYpbuiZzUUp1UUoFKqWClFIfWLoec1NKVVRK7VJK+Sulziml3rZ0TblBKWWrlDqhlNpo6VpyigR4NimlKgKdgIKyZ9d2oJ7WugHwJzDOwvWYhVLKFvgK6ArUAQYqpepYtiqzSwPGaq1rAy2ANwvAZwZ4G/C3dBE5SQI8+74A3gMKxLe+WuttWuu0zKeHgAqWrMeMmgFBWutLWusU4Cegt4VrMiutdZjW+njm77FkhFp5y1ZlXkqpCkB3YJGla8lJEuDZoJTqBVzTWp+ydC0WMhLYbOkizKQ8cOWe51fJ52F2L6WUJ9AYOGzhUsztSzIGYAYL15GjZEeeTEqpHUDZLLomAOOBzrlbkfn902fWWv+WecwEMv7K7ZObteUilUVbgfhbllKqCLAWGK21jrF0PeailOoBRGitjyml2lm4nBwlAZ5Ja/10Vu1KqfpAZeCUUgoyLiUcV0o101rfyMUSc9yDPvNflFLDgR5AR51/bxi4ClS853kF4LqFask1Sil7MsLbR2v9i6XrMbPWQC+lVDegEFBUKbVcaz3EwnU9NrmR5xEppYIBL621Na5olm1KqS7AbOAprXWkpesxF6WUHRlf0nYErgFHgUFa63MWLcyMVMZIZClwS2s92sLl5KrMEfi7WuseFi4lR8g1cPEg8wEXYLtS6qRS6htLF2QOmV/U/gfYSsaXeavyc3hnag0MBTpk/rs9mTk6FVZGRuBCCGGlZAQuhBBWSgJcCCGslAS4EEJYKQlwIYSwUhLgQghhpSTAhRDCSkmACyGElfo/Fg0rON5pxUgAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# clearly, one cannot fit a line to this dataset without making a very rough and \n", "# dangerous approximation. However we can view the x_i^2 as an additional feature, \n", "# let us call it 'y' of our model. so that t_i = beta0 + beta1*x_i + beta2*y_i\n", "# viewed like this, we still have a linear model which we can try to learn through \n", "# linear regression. \n", "\n", "\n", "from sklearn.linear_model import LinearRegression\n", "\n", "myRegressionModel2 = LinearRegression()\n", "\n", "\n", "# we can then fit our linear model not to (x_i, t_i) anymore but to the features \n", "# data (t_i, x_i, x_i^2), viewing x_i^2 as a new feature.\n", "\n", "\n", "# Using the LinearRegression() from scikit learn will thus return a set of coefficients \n", "# beta0, beta1 and beta2 such that beta0 + beta1*x_i +beta2 x_i^2 well approximates t_i \n", "# in the OLS sense. And the result is a plane in the 3D space. \n", "\n", "\n", "myRegressionModel2.fit(xtilde, targets_noisy.T)\n", "\n", "\n", "\n", "# We can then use that plane to predict new targets from (x_i, y_i) pairs. \n", "# Of course for us, this only make sense if we take points (x_i, y_i) of the form (x_i, x_i^2)\n", "# For any new point x_i we can thus generate x_i^2 then use our plane to predict t_i. \n", "# This makes because we know that such a plane exists as t_i = beta0 + beta1*x_i + beta2*x_i^2\n", "\n", "\n", "# applying this idea to get prediction on the whole [-5, 5] interval can be \n", "# used to illustrate our learned model on top of the true unknown one\n", "\n", "xtest = np.linspace(-5,5,40)\n", "\n", "phiTest = np.hstack((np.ones((len(xtest),1)),xtest.reshape(-1,1)))\n", "phiTest = np.hstack((phiTest, (xtest.reshape(-1,1))**2)) \n", "np.shape(phiTest)\n", "\n", "\n", "\n", "prediction = myRegressionModel2.predict(phiTest)\n", "\n", "\n", "plt.plot(x, targets)\n", "plt.plot(xtest, prediction, c='g')\n", "plt.scatter(x, targets_noisy, c= 'r')\n", "plt.show()\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "\n", "# we can also represent the plane that is learned in the 3D space using the \n", "# meshgrid function. Meshgrid can be used to generate the coordinates of all \n", "# the points on a grid from the x and y coordinates of the sides. We can then \n", "# apply our linear model to those points to diplay the plane \n", "\n", "\n", "from mpl_toolkits.mplot3d import Axes3D # noqa: F401 unused import\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(111, projection='3d')\n", "\n", "ax.scatter(xtilde[:,1], xtilde[:,2], targets_noisy, c='r')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "image/png": "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+tWvxuFwkM/n+eM//uOqabTS+vVygguVMD09zRve8AY+9alPceeddzb4XW0otIhdimopNNPd+uhHP8rTTz/Nww8/vBEULdeFubk5PvCBD/Dtb3+brVu38opXvIL77rvP1sifSvXr5fTXI5EI999/Px//+Me56667mvmWNgKu7nRXM1AphWbia1/7Go8++ig/+tGPXvCkBlBVlenpaU6fPo2u6zz66KN88pOf5Pz589x1110cPnyYW265pSzJhRB0dHTQ0dFh1a/PzMxw4cIFvF6v1VOeTCZ5wxvewP/8n/+zRerLhKveYlfDd7/7Xf7oj/6If//3f38h1h/XhUQiweOPP86DDz7IyZMn+fVf/3UOHTrEgQMHavaUm/rr09PT/M7v/A7xeJz77ruPP/3TP133CKMXCFqueD249tpryWQy1tC7F73oRdYkiXrx3e9+l3e/+91omsY73vEO3ve+9zXyVq8oLC0t8b3vfY8HH3yQI0eO8LKXvYxDhw7x4he/uOp+PBaLcf/99/OGN7yBRCLBk08+uVEE/ZuNFrEvBzRNY9euXfzgBz9g27ZtHDhwgH/4h3/ghhtuuNy31nRkMhl++MMf8uCDD/LUU09ZPeW/+qu/uqKQJZFI8IY3vIF3vvOdvOlNb2rqPQ0ODhIIBFBVFYfDwdNPP93U610CtIh9OfCzn/2MP/3TP+V73/segJUP/x//439cztu65Mjlcvzbv/0bDz30ED/96U85cOAAhw8f5o477uAtb3kLDzzwAA888EDT72MDVia2Ks8uByYmJujv77d+3rZtGxMTE5fxji4PnE4nd999N1/4whc4evQov/u7v8sPfvAD9u3bx913331JSN2CPVz1UfFLgXJezQt93+hwOLjzzju58847+fSnP31JBg2aEEJw9913I4Tg93//9/m93/u9S3btqwUtYtvAtm3bGBsbs34eHx9/oUr4lEUjJ3bawZNPPsmWLVsIh8PcddddXH/99bzsZS+7pPdwpaPlitvAgQMHOHv2LBcvXiSbzfKNb3yDe++993Lf1gsW5qLa29vLfffdxy9/+cvLfEdXHlrEtgGHw8HnP/95fuM3foM9e/bwxje+kb179677vGNjY7z85S9nz5497N27l89+9rMNuNuNjWQySTwet/7/+9//PjfeeONlvqsrD62o+GXE1NQUU1NT3HrrrcTjcW677Tb+6Z/+6QWRRlsrLly4wH333QcYopBvfvOb+cAHPnCZ72rdaJWUbiRs3rzZUvUIBALs2bOHiYmJFrGrYOfOnRw9evRy38YVj5YrfoVgeHiY5557jjvuuONy30oLGwAtYl8BSCQS3H///XzmM5+5ZMP1WtjYaBH7MiOXy3H//ffzlre8hde97nWX+3Za2CBoBc8uI6SUPPDAA3R2dvKZz3zmct9OC5cPrZLSjYQnn3ySr3/96/zrv/4rt9xyC7fccguPP/54Q86taRr79+/nnnvuacj5monvfve77N69m2uvvZZPfOITl/t2NgRaFnuD4tOf/jRPP/00sViMRx999HLfTkW8kDvnitCy2C3Uxvj4OI899hjveMc7Lvet1MQvf/lLrr32Wnbu3InL5eK3f/u3+fa3v325b+uqRy2L3cJVCCHEg8DHgQDwx1LKK9YfF0K8HniVlPIdhZ/fCtwhpXzX5b2zqxsti73BIIS4BwhLKZ+53PdiE+Xc0Ja1WSdaxN54+BXgXiHEMPAN4NeFEP/v5b2lqhgH+ot+3gZMXqZ72TBoueIbGEKIO7nyXXEHcAZ4BTABPAW8WUr5/GW9sascrVrxFi4rpJR5IcS7gO8BKvDlFqnXj5bFbqGFDYjWHruFFjYgWsRuoYUNiBaxW2hhA6JF7BZa2IBoEbuFFjYgWsRuoYUNiBaxW2hhA6JF7BZa2ID4/wGxWk2rUf0nwgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "\n", "#xx, yy = np.meshgrid(xtilde[:,1],xtilde[:,2])\n", "\n", "xx, yy = np.meshgrid(xtilde[:,1], xtilde[:,2])\n", "\n", "xxF = xx.flatten()\n", "yyF = yy.flatten()\n", "\n", "Xgridtilde = np.hstack((xxF.reshape(-1,1), yyF.reshape(-1,1)))\n", "Xgridtilde = np.hstack((np.ones((len(xx.flatten()),1)), Xgridtilde))\n", "\n", "\n", "predictedTargetsGrid = myRegressionModel2.predict(Xgridtilde)\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(111, projection='3d')\n", "\n", "ax.scatter(xtilde[:,1], xtilde[:,2], targets_noisy, c='r')\n", "ax.plot_surface(xx, yy, np.reshape(predictedTargetsGrid, np.shape(xx)), alpha = 0.2)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part II: Overfitting and Ridge regularization " ] }, { "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", "# we have seen that every type of relation can be captured by the combination of a \n", "# linear model and a sufficiently high dimensional space. But is it always a good \n", "# idea to go to high dimension?\n", "\n", "# To study this, we can get back to the linear relation between the x_i and t_i and \n", "# try to learn some overcomplicated model for that data. For example by generating a \n", "# lot of polynomial features. Not just x_i^2 but x_i^2, x_I^3, x_i^4, ... x_i^d. \n", "# This can be done through another function of scikit learn: the function 'PolynomialFeatures'\n", "\n", "\n", "x = np.linspace(0,5, 10)\n", "\n", "xtilde = np.hstack((np.ones((len(x),1)), x.reshape(-1,1))) # \n", "\n", "beta = np.random.normal(0,1, 2)\n", "\n", "noise = np.random.normal(0,0.3,len(x))\n", "\n", "\n", "targets_noiseless = np.dot(beta, xtilde.T)\n", "targets_noisy = np.dot(beta, xtilde.T) + noise\n", "\n", "\n", "plt.plot(x, targets_noiseless)\n", "plt.scatter(x, targets_noisy, c='r')\n", "plt.show()\n", "\n", "\n" ] }, { "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": [ "from sklearn import linear_model\n", "\n", "# we start with a model of degree one\n", "\n", "myregressionModel = linear_model.LinearRegression()\n", "myregressionModel.fit(x.reshape(-1,1), targets_noisy)\n", "\n", "\n", "xTest = np.linspace(0,5,100)\n", "\n", "prediction = myregressionModel.predict(xTest.reshape(-1,1))\n", "\n", "plt.plot(x, targets_noiseless)\n", "plt.scatter(x, targets_noisy, c='r')\n", "plt.plot(xTest,prediction, c='g')\n", "plt.show()\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# We then generate many more polynomial features with scikit learn \n", "# (try displaying the array higherdegree_x)\n", "# and we fit our model to the vector (x_i, x_i^2, x_i^3, ... x_i^d)\n", "\n", "from sklearn.preprocessing import PolynomialFeatures\n", "\n", "polynomialFeaturesGenerator = PolynomialFeatures(30)\n", "higherdegree_x = polynomialFeaturesGenerator.fit_transform(x.reshape(-1,1))\n", "\n", "myregressionModel = linear_model.LinearRegression()\n", "myregressionModel.fit(higherdegree_x, targets_noisy)\n", "\n", "xTest = np.linspace(0,5,100)\n", "\n", "higherdegree_xTest = polynomialFeaturesGenerator.fit_transform(xTest.reshape(-1,1))\n", "\n", "prediction_xTest = myregressionModel.predict(higherdegree_xTest)\n", "\n", "plt.plot(higherdegree_x[:,1], targets_noiseless)\n", "plt.scatter(higherdegree_x[:,1], targets_noisy, c='r')\n", "plt.plot(higherdegree_xTest[:,1],prediction_xTest, c='g')\n", "plt.show()\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can see from the above that an overly complicated model will perfectly fit the points from the training set (in red) but will poorly approximate the true (in blue) line. This is because we have added noise to sample data from the blue line and a complex model will fit the noise perfectly, while what we really want is a model that neglect the noise as much as possible. To somehow resolve this, we can try to penalyze the coefficients beta, hoping to set the less maningful ones (those associated to powers greater than 1 in this case) to 0. One approach is to extend the loss from the original OLS loss to\n", "\n", "\\begin{align}\n", "\\ell_{\\text{RIDGE}}(\\beta) = \\frac{1}{2N}\\sum_{i=1}^N (t^{(i)} - (\\beta^T \\phi(\\boldsymbol x^{(i)})))^2 + \\alpha \\sum_{j=0}^{D} |\\beta_j|^2\n", "\\end{align}\n", "\n", "where $\\boldsymbol{\\beta} = (\\beta_0, \\beta_1, \\ldots, \\beta_D)$ is our vector of weights and $\\phi(\\boldsymbol{x}^{(i)}) = (1, x^{(i)}, (x^{(i)})^2, \\ldots, x^{(D)})$ is our new feature vector. $\\alpha$ determines by how much we want to steer the weight to 0. Larger values of $\\alpha$ will penalize non zero weights more while smaller values will penalize the fitting term more. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from sklearn.preprocessing import PolynomialFeatures\n", "\n", "# The two models are compared below. We start with the simple OLS loss on the many \n", "# polynomial features\n", "\n", "polynomialFeaturesGenerator = PolynomialFeatures(14)\n", "higherdegree_x = polynomialFeaturesGenerator.fit_transform(x.reshape(-1,1))\n", "\n", "myregressionModel = linear_model.LinearRegression()\n", "myregressionModel.fit(higherdegree_x, targets_noisy)\n", "\n", "xTest = np.linspace(0,5,100)\n", "\n", "higherdegree_xTest = polynomialFeaturesGenerator.fit_transform(xTest.reshape(-1,1))\n", "\n", "prediction_xTest_lin = myregressionModel.predict(higherdegree_xTest)\n", "\n", "\n", "from sklearn.linear_model import Ridge\n", "\n", "polynomialFeaturesGenerator = PolynomialFeatures(14)\n", "higherdegree_x = polynomialFeaturesGenerator.fit_transform(x.reshape(-1,1))\n", "\n", "\n", "# The model corresponding to the Ridge loss \n", "# can be learned in scikit learn through the function with a single parameter ('alpha') \n", "\n", "\n", "myRidgeModel = linear_model.Ridge(alpha = 1e6)\n", "myRidgeModel.fit(higherdegree_x, targets_noisy)\n", "\n", "xTest = np.linspace(0,5,100)\n", "\n", "higherdegree_xTest = polynomialFeaturesGenerator.fit_transform(xTest.reshape(-1,1))\n", "\n", "prediction_xTest = myRidgeModel.predict(higherdegree_xTest)\n", "\n", "plt.plot(higherdegree_x[:,1], targets_noiseless)\n", "plt.scatter(higherdegree_x[:,1], targets_noisy, c='r')\n", "plt.plot(higherdegree_xTest[:,1],prediction_xTest, c='g')\n", "plt.plot(higherdegree_xTest[:,1], prediction_xTest_lin, c = 'm')\n", "plt.show()\n", "\n", "\n" ] } ], "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 }