{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Linear regression\n", "\n", "we want to solve linear regression \n", "$${\\rm minimize}_w \\|{\\bf X}w-{\\bf y}\\|_2^2$$\n", "first generate input, output data examples\n", "\n", "there is a subtlety (in notations mainly) in how we handle constant\n", "\n", "given data $x=(x[1],x[2],x[3],\\cdots,x[d])$ in $d$-dimensions, \n", "one option is to use **linear predictor** of the form \n", "$$f(x) = w^Tx = w_1x[1] + w_2x[2] + \\cdots, w_dx[d]$$\n", "\n", "anogher option is to use **affine predictor**, by appending a one to the data, i.e. $x=(1,x[1],x[2],x[3],\\cdots,x[d])$\n", "$$f(x) = w^Tx = w_0 + w_1x[1] + \\cdots + w_d x[d]$$\n", "\n", "We will use these notations interchangeably, as it should be clear from the context which one we are using\n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# generate training data\n", "import numpy as np\n", "n = 100 # sample size\n", "x = np.random.uniform(-1,1,n) #sample input data\n", "x = np.sort(x)\n", "x[0]=-1\n", "x[n-1]=1\n", "\n", "# ground truth is 5-th order polynomial and we add Gaussian noise to it\n", "y = (x-.99)*(x-.4)*(x-.25)*(x+.6)*(x+.8) + .03*np.random.randn(n)\n", "\n", "# plot the samples and grounstruth\n", "t = np.linspace(-1,1,100)\n", "y0 = (t-.99)*(t-.4)*(t-.25)*(t+.6)*(t+.8)\n", "import matplotlib.pyplot as plt\n", "plt.plot(x,y,'o')\n", "#plt.plot(t,y0,'k-')\n", "plt.show()\n", "\n", "# generate test data\n", "n_ = 100\n", "x_ = np.random.uniform(-1,1,n_)\n", "y_ = (x_-.99)*(x_-.4)*(x_-.25)*(x_+.6)*(x_+.8) + .03*np.random.randn(n_)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "next, create **data matrix** ${\\bf X}$\n", "$${\\bf X} = \\begin{bmatrix} (x_1)^T\\\\ (x_2)^T\\\\ \\vdots \\\\ (x_n)^T \\end{bmatrix}$$\n", "- the $i$-th row od ${\\bf X}$ is input raw data of $i$-th sample, transposed\n", "- the $j$-th column of ${\\bf X}$ gives values of $j$-th data entry across $n$ data points \n", "- $X_{ij}$ is the value of $j$-th entry for $i$-th sample data point" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Constant fit example\n", "we are going to ignore any input data and try to fit a constanf function $f(x)=w_1$\n", "\n", "we create a data matrix with $x_i=1$\n", "\n", "data matrix is " ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "# create a data matrix X\n", "X = np.vstack([np.ones(len(x))]).T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that the least squares solution is \n", "\\begin{eqnarray} \n", "\\hat{w}_{\\rm LS} &=& (X^TX)^{-1}X^T y\\\\ \n", "&=& n^{-1} 1^T y \\\\\n", "&=& \\frac{1}{n}\\sum_{i=1}^n y_i\n", "\\end{eqnarray}\n", "\n", "\n", "which is just the average of the sample outcome data, \n", "and the prediction is \n", "$\\hat{w}_{\\rm LS} = \\frac{1}{n}\\sum_{i=1}^n y_i$ for all data point $x$, \n", "\n", "\n", "$$ \\hat{y} = \\begin{bmatrix} \\hat{y}_1\\\\ \\vdots\\\\ \\hat{y}_n \\end{bmatrix} = \\begin{bmatrix} \\hat{w}_{\\rm LS}^Tx_1 \\\\ \\vdots \\\\ \\hat{w}_{\\rm LS}^T x_n\\end{bmatrix} = \\hat{w}_{\\rm LS} \\begin{bmatrix}1\\\\ \\vdots\\\\ 1\\end{bmatrix}$$\n", "\n", "hence, **the average is the best constant fit** for suqared loss\n", "\n", "and the MSE is the variance of the outcome:\n", "\n", "$$ \\frac1n \\sum_{i=1}^n ({\\rm ave}(y)-y_i)^2$$" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "0.3657552635707313" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# linear regression with constant feature\n", "w = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh = w*X\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(x, yh, 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh)**2)\n", "display(MSE_train)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_))]).T\n", "yh_ = w*X_\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "for **affine** fit, we use $(1,x_i)$ as the input data, and the data matrix ${\\bf X}$ is" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "# create a data matrix X\n", "X = np.vstack([np.ones(len(x)),x]).T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "the prediction has the form \n", "$$\\hat{y} = w_1+w_2x$$\n", "this is called **straight-line fit** and if $x$ is time, it is called **trend line**\n" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABAfklEQVR4nO2deXiU1dXAfyd7gJCwhC2GxZZFlAoSFVkURNlUQDYVd60UP1Fa1IpWW9dCwUrbT0tFa0GrIq0YENDIroD4gQYIWxSRLWEJSxITsud+f8wkTpKZZNbMJHN+zzPPzPu+9773zLvcc++595wrxhgURVGU4CXE3wIoiqIo/kUVgaIoSpCjikBRFCXIUUWgKIoS5KgiUBRFCXLC/C2AO7Ru3dp07tzZ32IoiqI0KL7++uvTxpj46vsbpCLo3Lkz27dv97cYiqIoDQoROWxvv1dMQyIyQkTSReSAiMy0c7yHiHwpIkUi8pgreRVFURTf4rEiEJFQ4DVgJNATuE1EelZLdhZ4BHjZjbyKoiiKD/FGj+AK4IAx5qAxphhYDIyxTWCMOWWM2QaUuJpXURRF8S3eUAQJwFGb7WPWfV7NKyJTRGS7iGzPyspyS1BFURSlJt5QBGJnn7MBjJzOa4xZYIxJMsYkxcfXGPRWFEVR3MQbs4aOAYk22xcAmfWQV1GUaiSnZjA3JZ3M7AI6xEXz+PDujO3jbAddCVa80SPYBnQVkS4iEgHcCiyvh7yKotiQnJrBk0vTyMguwAAZ2QU8uTSN5NQMf4umBDgeKwJjTCkwDUgB9gFLjDF7RGSqiEwFEJF2InIMmAE8LSLHRKS5o7yeyqQowcjclHQKSsqq7CsoKWNuSrqfJFIaCl5xKDPGrAJWVdv3D5vfJ7CYfZzKqyiK62RmF7i0X1Eq0FhDitJI6BAX7dJ+RalAFYGiNBIeH96d6PDQKvuiw0N5fHh3P0mkNBQaZKwhRVFqUjE7SGcNKa6iikBRGhFj+yRoxa+4jJqGFEVRghxVBIqiKEGOKgJFUZQgRxWBoihKkKOKQFEUJchRRaAoihLkqCJQFEUJclQRKIqiBDmqCBRFUYIcVQSKoihBjioCRVGUIEcVgaIoSpCjikBRFCXI8YoiEJERIpIuIgdEZKad4yIif7Me3yUil9kcOyQiaSKyQ0S2e0MeRVEUxXk8DkMtIqHAa8D1wDFgm4gsN8bstUk2Euhq/VwJzLd+VzDEGHPaU1kURalfklMzdP2DRoA3egRXAAeMMQeNMcXAYmBMtTRjgLeNha1AnIi090LZiqL4ieTUDJ5cmkZGdgEGyMgu4MmlaSSnZvhbNMVFvKEIEoCjNtvHrPucTWOAz0TkaxGZ4qgQEZkiIttFZHtWVpYXxFYUxRPmpqRTUFJWZV9BSRlzU9L9JJHiLt5QBGJnn3EhzQBjzGVYzEcPicjV9goxxiwwxiQZY5Li4+Pdl1ZRFK+QmV3g0n4lcPHGUpXHgESb7QuATGfTGGMqvk+JyEdYTE2fe0EuRVEc4A3bfoe4aDLsVPod4qK9JaZST3ijR7AN6CoiXUQkArgVWF4tzXLgLuvsoX5AjjHmuIg0FZEYABFpCgwDdntBJkVRHOAt2/7jw7sTHR5aZV90eCiPD+/uRWmV+sDjHoExplREpgEpQCjwljFmj4hMtR7/B7AKGAUcAM4D91qztwU+EpEKWd4zxnzqqUxKTXR2h1JBbbZ9V56JirT6XNUPvnyHxZjq5vzAJykpyWzfri4HzlLRArR9+aPDQ5k1rpe+tEFIl5krawzigWUg74fZN9S3OIoTeOsdFpGvjTFJ1fd7Y4xA8SHeaAV4qwWo+BZ79xq83+JW237Dw9fvsCqCAKZ6K6DClgvUevOrVyj2XnrQ2R2BhL17/fh/doJASZmp3OfM/a+Lx4d3t9u6VNt+4OLrGVoaayiAcWeetr2BQHtzd0FbgIGEvXtdUm4qlUAF3pinP7ZPArPG9SIhLhoBEuKi1UwY4Dh6V731DmuPIIBxpxVgr0IxWOy/tlWKtgADC1dadrZp3TUdju2ToBV/A8LXvTjtEQQw7rQCHFUoBrQFGMC40rKrSKshHoIHX/fitEcQwLjTCnA0JpAQF83mmdf6RE7Fc+zd6/AQqTJGAFXvv04CCC582YvTHkEAY68VML5vAnNT0ukycyUDZq+r0fpTJ5+Gib17PXfipcydcKnDVqCGeFC8hfYIAhzbVoAzs4jUyafh4qjF5+je6TRQxVuoImhAOGsK0IHA4CAYpoGqR3z9oIqgAaGmAMWWxt77c9ePRnEdVQQBRHl5Oenp6Wzbto3t27dz7Ngx4uLiaNGiBRdccAFxRbGcjWiDNTZTJe6YArSl1ThozL0/HQyvv/dUFUEAYIxh2bJlPPPMM+zebQm+2rRpUzp16kRubi5nz57l/PnzAITHtSOqaz+aJ40hrHm8W6YAbWkpDYFg7wHX53uqs4b8zJYtW7jyyiu5+eabKS4u5vXXX2f37t3k5OSwZ88ejh49Sn5+PkePHmX+/Pn84pKLyftmBRmvP0DhhteZcVVLr8YeUpRAwdfetIFO9ffUlJWSe+Iwcz7d7/WyVBH4kXfffZfBgwdz8uRJ3nrrLfbs2cOUKVO4+OKLCQ2tOgX0ggsuYOrUqWz/Yg2HDn7P1Cm/5Ow3nzLt5kG89NJLlJSUOF1usLe0lIZBsE+Frv4+Fp/8nsw3p3Lg/9Z6vSxVBH7AGMOsWbO44447GDBgADt27ODee+8lLMw5S13Hjh2ZP38+Bw4cYMyYMTz99NP069ePXbt2OZU/2FtaSsMg2GMiVX8fi47tBaDTRb29XpYqAj/w6KOP8tRTTzF58mQ+/fRTWrRo4dZ5OnbsyJIlS/jPf/7D0aNHSUpK4rXXXqOuNSaCvaWl+Ifk1AwGzF7n0BnSHmP7JLB55rX8MPsGNs+8NmiUANR8Twsz9hIe147fTRzg9bJUEdQzCxcuZN68eUybNo133nmHyMhIj885YcIE9u7dy7Bhw5g2bRr3338/hYWFDtMHe0tLqX80LpLr2L6nGENJxj4GDhrkk/fUKyuUicgI4K9Ylqp80xgzu9pxsR4fhWWpynuMMd84k9ceDXWFsh07dnDVVVfRv39/UlJSnDYFOUt5eTnPPfcczz//PElJSSQnJ5OQoJW74hhjDLm5uRw7doxjx46Rk5NDWVkZpaWlREREEB8fT3x8PImJicTFxbldzoDZ6zQGlgd8++23dO/enTfeeINf/vKXbp/HZyuUiUgo8BpwPXAM2CYiy40xe22SjQS6Wj9XAvOBK53M2yg4d+4c48aNo1WrVrz//vteVwIAISEhPPfcc/Tt25fbb7+9UuH06NHD62UpDZO8vDzWr1/P1q1b+frrr/n66685ffq0U3kTExO59NJLSUpKYtiwYVxxxRU1JjU4QicoeMamTZsAGDhwoE/O743a6ArggDHmIICILAbGALaV+RjgbWPpfmwVkTgRaQ90diJvo+Dee+/l2LFjfP7557Rp08anZY0ePZrPP/+ckSNHMmDAAFasWMFVV13ldH51NmtcnDp1ig8++ICPP/6YjRs3UlxcTGhoKJdccgmjR4/moosuIjEx0eK0GBdHeHg4oaGhFBYWkpWVRVZWFj/88AM7d+5k586drFq1imeffZYWLVowcuRI7r77boYOHVqrUtC4SJ7xxRdf0KpVK7p39804njcUQQJw1Gb7GJZWf11pEpzMC4CITAGmgGWQtCGxatUqli1bRqeRU7gt+QwdNqzzeeXap08ftmzZwvDhwxk6dCiPzVnA2rwOZGQXECpCmTEk2Knk1dmsfnBX2Tqbr7S0lOXLl/Ovf/2LTz75hLKyMnr06MHDDz/MyJEj6d+/P9HR7lXCZ8+eZfXq1XzyyScsX76c9957j8TERO677z4eeugh4uPja+QJhrhIvmTTpk0MHDiwRlQBb+GNwWJ7klUfeHCUxpm8lp3GLDDGJBljkuw9aIFKSUkJUx56hIiWCZiLR9brQNmFF17I5s2bad/pZ7z463v5bvsGAMpM1TVwbeVQZzPf4+7AqTP5cnJyeOWVV/j5z3/O+PHj+eabb3j00UfZvXs3+/bt4+WXX2bo0KEuKYHqs30+P1zALbfcwsKFC8nMzOSDDz6gZ8+ePP/883Tu3JkZM2aQmZlZ5RzemqDgzsyjhs6JEyc4cOCAz8xC4J0ewTEg0Wb7AiDTyTQRTuRtUFRvsfU4/QUZh74nfsIfkNDwynS2MVN8aYpp06YNrSe9yLE3Hifroz8SP/oJmnTvb1cOUFtufeBuDJ3a8g25sBnz5s1j3rx55ObmcvXVV/OXv/yFm266yWk7vj3q6iFGRUUxadIkJk2axP79+5k1axZ/+9vf+Pvf/86MGTN46qmnaNasWWV6d5/r5NQMnl2+h+yCnxwng6W3unnzZsB34wPgnR7BNqCriHQRkQjgVmB5tTTLgbvEQj8gxxhz3Mm8DYbqLbYjmSdY+OpcorpcRvSFNQbqycwucKl16G5r6FRRGG1veZHIdl3JWjab/P2bashRgTqb+R53la294+UlRez99G26dOnCc889x9ChQ9m2bRsbN25k7NixHikBcK2H2KNHDxYtWsR3333HpEmTmDVrFt26deOdd96p07elNireEVslUJcsjYlNmzYRFRXFZZdd5rMyPFYExphSYBqQAuwDlhhj9ojIVBGZak22CjgIHADeAP6ntryeyuQvqr802V/8m/LiAloPfcCuba9DXLTTL5on87A7xEUTEtmUNpOeJzKhB6c/nsv577ZWHg8R4enktMopftUlVVuud3FX2doeN8aQv+9zMt+cSvbGRfTv35+vv/6apUuXkpRUs9HhLo6UU0Z2gcMGSZcuXXj77bf58ssvSUxM5K677mL48OEcOXLELRnsvSPOyNhY2LRpE1deeSURERE+K8MrDmXGmFXGmG7GmJ8ZY16y7vuHMeYf1t/GGPOQ9XgvY8z22vI2VGwfyNLcLPJ2fUZMn5GEtkp06MlrbyYFUGO/u7b75NQMzuYXARAS2YQ2E54lou3PyUqeTcH32wDLmMG/tx6pLNN28EadzbyPu57dFfmKsw5x8r0nOL18DmHRMbywYAkrVqzwSYsxrkm4w2N1NUj69evHl19+yfz589myZQuXXHIJb775psu9g7oq+sbcW83LyyM1NdWnZiFQz2KvYvtA/vj1x2AMza8YX1mZJliPh4pUVuIhDiYBhFbrQbhjTvjJvlteuS8ksgltJz1HRHwnTn30RwoO7bCb1/CTs48qAe/i7sDp8B4t6ZmxghMLp1Ny5hg/u3kG765Yz9MPTPSJnMmpGeQVltaZrrYGSUhICFOnTiUtLY2kpCQeeOABJkyYQE5OjtNy1FbRN8beqq0J+Mrpf6esrEwVQUOiosVWXnSeH3em0KT7AGJat68c/K04bjtrp9xB46isWqvJHXOCoy51SFQz2tzyAuEtE8ha+gKFx/bZzd/Yu9z+xNUYOhs2bKBXr14s/ddr3HP3XZw6epADS//M+CTfTaWem5JOiaMHtBp1PStdunRhzZo1zJ07l2XLltG3b19SU1OdOre9HhRAiybhja63Wt0EfGz3V0hoGOdiLvRpuaoIvEhFSy/swEZMUT4/G3JLlQe1LlunLQnVKnh3zAm1vZyh0c1pO+kFQpu15NR/n6X45MEaaRpzl7uhkJ+fzyOPPMKQIUMQEdatW8dbb71Fq1atfF62Kw0BZ56VkJAQHnvsMTZu3EhhYSFXXXUVCxcurDOfvR7UX27pTervhzUqJQA164iCH74h8oKevPrFMZ+WqyuUeZmbftGOGXtW0b9/fzb//aEqx5x9sexV8O6sT+vIm7OC0GYtaHvLS5x49wlOLnmGdpNnE94q0aEMnqDeyq6zdetW7rzzTg4cOMAjjzzCrFmzaNKkSb2V7+j5Eao6+7j6rAwYMIDU1FRuu+027r33Xvbt28esWbMICXHcLq1r6mljeb6qjDP+eJqSrEM0HXyvz3vn2iPwMsuWLeOHH35gxowZNY45ajXFRYc7ZS921ZxQW5f6jn4dSYiLJjy2Db94YC7R4aGc/s/vKcs55dEAsb0prhp50jVKS0t5/vnnGThwICUlJbywYAnb24/h4ufX16sTlaNe6O3WZ8cTx7D4+Hg++eQTpk6dypw5cxg3bhx5eXluydmYni/bOqLwh28AiL6wr897516JPlrfBHL00YEDB5KZmcl3331XYw53deccsLxYvrRzOttS2rlzJ9dccw1t2rThiy++oG3btm6VZe//RYWHcO58zTngGnmyJocOHeKOO+5g8+bN3HHHHYx44CleXH24Xp8ZW3zd0jbG8NprrzF9+nT69u3LypUr7YaoqI3GFNnU9h3KSp5NUcZefj7938we/wuvXHefRR9VLCSnZvDcO6vZsXkznUb9io93nahx49wx73iKs96cl156KStXrmTYsGEMHz6cDRs21Ag7XFel4GiKq6NxER2MrsrSpUu5//77KS8v591332Xy5MkMmL3OLS9kb+GJN7AziAjTpk2jc+fOTJo0iYEDB5KSkkLnzp2dPkdj8oavuNZzVu3l6OEdtL5koNeUQG2oacgLVGjxH7Z+ChJCWZeB/PqDHfR5/rMa3dNAXnFpwIABLF26lL1793LDDTeQn59fecyZ7ndt4xH20MFoC4WFhTz88MOMHz+erl27kpqayuTJk4HGVcnVxo033siaNWs4deoU/fv3Jy0tzem8jc0bfmyfBP58bTPKC/N49bf31UsdoYrAC8xNSed8cSn5ezcQ1elSQptZlp48d76kwdkqhw8fznvvvcfWrVu5+eabKSqyOKPV5dCWnJphN4IgWMZAGvrSmL4Kdnbw4EEGDBjAq6++yowZM9i0aRMXXvjTVMHGVsnVRv/+/dm0aRMhISEMHjyYb775xql8jW3p1dLyUpZ+uhRpKcT/Ip51P6zjo30f8a/UfzHvy3kczj7s9TLVNOQFMrMLKMrYT2nOSWIHTK5yrD678d5iwoQJvPnmm9x3333cdtttLFmypM6W6dyUdLthYwV4dvTFlWka4qwOb4fmrjCxffd/6zj7yV+ICg9j2bJljB49ukbaYAvffPHFF/P555/Tb+A1XDHgGtpMfI4uPXvX+rz4w+RaG4WlheQU5pBdmE12YTY5RTa/bfZnF1XbtqbNK86zNNEfgSGLh9Q4f7dW3egU18mrMqsi8AId4qLZ9dkGJCySJt1qLgDTELvx9957Lz/++CPTp0/nvvvuo32Pu8jMLaqRrqJl6sgsZPjpRa2+7sGA2esC4sWtC3ejhdojOTWDmf9J5fiat8jd9hER7brSdvxTlCf2tZs+0Cq5+mBXTiTNx7/IuX8/yYkPnqZ84nM8mV8MOFa83hrLMMaQX5Jfo9K2rcwrj9mpyLMLsykqq/me2BIqocRFxREbFUtcVBxxUXF0a9Wt8nd4WThzXpjD2BFjueeWe6qki42MpXlkc4//Z3VUEXiB31x7Ibe+8AXRP7+CkMia87wbajf+kUceITc3l2eeeYZh48qJuuh2Ckt/CldR0TKtMAvZ6xFUd4yDhrf4jTft9C/9ZwuH3nmOomN7aNZnFC2vfYCysPBalYqvB2wDjbkp6ZQ2bU3bybM4ufh3nPrPH5BJzzM3JaLO61BWXkZuUa79ittRpV6txV5manf6jAqLIjYytrIyj42MpVNcp5/2RcbSIrpF5e+KSrwifdPwprUuMPPuu+/CVpj5l5lc2cPuOl1eRxWBF4jO2kPZ+Vza9LmuRmXoz268N6b+/e53v+P8+fPMmjWLG26L5GyvyRzPKaxyvgGz1zk0C9n7795sYdcH3lpmcePGjXzztymY4gJa3/QYTXsOrjzWEHuNvqC4rJij2ScokzzKm58n9s7bObdlASfSf0d+ixE8s2591Yq7WqWeW5RbZxlRoU0pL4vGlDchKrQ53dq0pd8FPYiLjKvRUrdXkUeFRfn0GixZsoSEhAQuv/xyn5ZjiyoCL/Dvf/+bVq1akb5wJqv2ZAVEN95brW4R4aWXXmL34Sw+fu9Nmh/M4eIxD1b5X44qMVuzkC0NbSaMp3Z6Ywwvv/wyTz75JJEtOxB3y0tExFe18TbUXqMtxhgKSgtqbYFX7ndgHz9fch5sL0UUcIPl548s56UvPq5SUcdFxdElrovDSrvKdmQsG/bl8XTyvir3Mj8jlIlXBkbMouzsbD799FMeeuihWj2tvY0qAg/Jz89n2bJl3HPPPURERARMN96bre5lOzL5tss4mvXOIPerD9mDMDP/PsBS0TtqMdszC0HDW8jcEzt9Tk4O9957Lx999BETJkxg3PQX+f2q76sEcwsPkYAY/C035eQV59Uc1LTT8nZUwZeU13QctCU8JLxGZZ3QPKFKa/zIaVixI5fS0ihCaEqIaUr4+WLyk/+MyS/ki8+/oGfPnm79x1dW7wzo3uiyZcsoLi7m1ltvrddyVRF4yNq1aykoKGD8+PH+FqUK3mx1z01Jp7C0nJbDHgQg96v/AoY5TR+sjKrqSou5Ic6EcUfB79y5kwkTJnDo0CHmzZvH9OnTWbYjs+ZK3XWsR+70gvXlpeQU5rhtH88tyqXclNuR4CeahDepYh+PbxJP15Zda22N2x6LCotyagH25C7V/vOk7lzy8GgGDRrEddddV2OarbMEem908eLFdOnSpV7NQqCKwGNWrVpFTEwMgwYN8rcoVfBmq7viJREJsSgDEUvPwBiMjVOc7Ys7pEc8c1PS+c0HO2pUXsEwE+att97ioYceomXLlqxfv74ynvzclHRKyqqOqJSUGeampDOiV6sqFXdOUQ6r9x3k3/+3l8LyHykPy+d0fj53J5+n69YQoiKLqlTq+SX59kSpQmxkbGUlHRsZS2LzRHq16WW30rZXmYeHOl6oxps4UryrV6/mmmuuYejQoWzatImEBNeemUDujZ45c4Y1a9bw2GOPOaUsvYlHsYZEpCXwAdAZOARMMsacs5NuBPBXIBR40xgz27r/WeABIMua9CljzKq6yg2UWEPGGDp27MgVV1zBnU//LaAqNm/GNaoey8UYw9nV/yAvdSUPPvggr776ahV7pj9iKvkbYwx5xXmcyD7Bb3//W5I/TebSKy5lyvQpmAhT2fKe//kuyjlPueRRLvmUk1/5jdRuVsGEVppKIkObcWXnxJqVt3XGir0WekxEDKEhnq1hHAhs27aNoUOHkpCQwBdffEHr1q2dzhvIz+Ybb7zBlClTSE1NpXfv3j4pw1GsIU8VwRzgrDFmtojMBFoYY56oliYU+Ba4HjiGZcH624wxe62KIM8Y87Ir5XqiCAYvHFxnmhu73chj/R+rTH9P73u4p/c9nD5/mglLJlSmy8/PZ/v27XTodCHnaEq51e7brOw64kOG8+QNCby1/2EevepRbup+E+mn0/nVil/VWX719H8c+kf6J/Zny9EtPLX2qTrzV6SfvXYZszb/gZiCB+kU25XBlx5h88mFdeZ//cbX6d66Ox+nf8yfv/wz9/X4X2atzCCrPIW80DWAZZ3jJkWnOXPyOG3btqV79+6VrZjzx6dzKieCvNA15IWuoV3xbMuJm31M5wv211n+hns2APDylpf58tiXfDjpQwCeXPMkXx77sta8rZq0qpL+TMEZFty0AIApH0/h2zPf2s1nMJSVl5EYm8gTA54guzCbP37xRyJCI7j+wuvJLszm32n/Jq8oj9LyUkpNqeXb5lMXggChGBOCEAqEWr9DCJMwEuKa0btdbzo3uZb/bDvLSVlEk7L+NCu9DkMZZyLmVTlfvwtrrklQ/Vn117NXkb76s1QX1dP/d9J/ad2kNQt3LGThjoWV6bKzs9mVtotmTZtx6aWXcq6glKNnC4g9/1sS49rR96Kd7Dq3rMqztOLbFQCczivi6NkCikrLiAwLJbFlNK2bRQL+efYq+G7rdzRb34z9+/czfNEd7D1mCM+7nQ5x0ZS3fJnIiPNVZHQHXwWdGwMMtv5eBGwAnqiW5grggDHmoFWQxdZ8ez0s2++cOXMGgFwTRXk1hVpQUsar6w/QpL0/JLNwdbd4Pj0ax+s3Dq58uTafdP08o37RnuaRLXl81TryirB5eVpyODqSQ4cOcebHAkJbJhIZHkbz8wWEUnOh7dzCOlq8HmCMobS8lLyiPLZlbCO7MJv9p/dzpuAML295mezCbDYf3czp86cpLS+lrLysSiVeOXf8KCzevbjKuVd+txKwOAKFhoQSFhJGWEgYEaERNAlvQpiEUVhQyLkz5wjPCee31/+WQVcMYtamWVzR4Qoe7f8osZGxDP/3cE7nFXHwdH5lowEgJES4sFVTWjeLpH9ifz76vCehxQWERPyHMNOaMFpTRtWlHSPDGn7L3hPi4uK4uOfF7N69m9Sduyhv0ZFy89M6yge/PkarNvYdu1o3i6ys+AOF4uJiMjMz+f2tv2fZjkz+74ezmLJmtMDyf84U5NIpvsxncnvaI8g2xsTZbJ8zxrSolmYCMMIY80vr9p3AlcaYadYewT1ALrAdeNSeacmabwowBaBjx459Dx/2frwNVxk0aBDnz5/n7PXPO5xH/8PsG+pbrHolOTWDXz35IqdSXicyoQfx458hLLq5Q+cye2GBHU07dGa2SkWegtLaB/tCJKSKfby6GaW6KaW6jbx5ZHPCQmq2m3JycnjwwQd5//33GTx4MO+99x7t29eu/esa/O0yc6Xd61dBoJgyAoF33nmHu+66iybd+tN6zBOIjenLkzDU9b3QzV//+ld+/etfs2fPHh5YfsJnYbXdNg2JyBqgnZ1DvwMWOaEIJgLDqymCK4wxD4tIW+A0FkX+AtDeGHNfXX8mEMYIzp49S3x8PE899RTrmg5pNPHQXWXA7HUcy84n79t1nN34KqGtWxI3/B5Cm0VSVmkDz8Nwni5t4edtQ6pU5u5MO4yNiqVFVAtLRe3ACcjWTh4bFUuziGaESM152RUvfEZ2AaEilBlDgpMv/tatW7nttts4evQozz77LE8++WSNNSjcwVF8fcBp2YKJVtdN4ezaN2j2i2G0HPFwpYnS3YZYfY8jlJeXc9FFF9GyZUu+/PJLhw0BbzQs3TYNGWOuq+WkJ0WkvTHmuIi0B07ZSXYMSLTZvgDItJ670lAhIm8AK+qSJ1BISUmhvLycG264gb6RiQ1uOqQtFdMO7bW66wqSdbTwNOVR5+FSA5dCGac4w5waZYiJZM+ZZpwpbkliXGvim8Tz85Y/t1TodlrjOw4XsfirM5zODSMhtjVPDO/FzZdd4NX/Xf2FL7M2iupyvispKeGFF17gj3/8I4mJiXzxxRdcdVXNGFPu4mh6rfYC7NPjulvZcz6XnC8/ICS6OS0G3wO4PxOovj3fV69ezbfffmsJLYF/ZjZ5OkawHLgbmG39XmYnzTagq4h0ATKAW4HJABVKxJruZmC3h/LUGytXrqR169Zcfvnlla1Af8waMsZYoh3ace6pUZkX2Z9bXte0Q0FoHtm8Ssu7U1wnfhH5C1bn5VFQGEkITRDTFPNjITkbP6T8TA6xSbcS02MUITRFrI9aQlQ0m++vvZeUnJrBwg1pFJS0IRQ4kVPOUx/tRkS8ek3tvfAVOHrx9+7dy5133sk333zDXXfdxd/+9jdiY2O9JhMEx/Rab/L48O7MzLubsoJccr/6LyHRMbQbOMnthpgjn4KM7AK6zFzp9fvxv//7v7Rt25YJEywTUfzhZ+OpIpgNLBGR+4EjwEQAEemAZZroKGNMqYhMA1KwTB99yxizx5p/joj0xmIaOgTUPa0hACgrK+PTTz9l1KhRlUrAXY/iimmHjkLVOmMjLy4rrrWMimiHtmaVdq3bERdZd1yVFlEtiImMsWtWAUjuXK0b3QRaX389R5f+iZxl71J2+Awth06pfNKccdyprxZZXbLYHi8pKeHll1/mueeeIyYmhqVLl3LzzTe7XXZdNuhA8VBvCFSu6tXkN+wszCN7w7+YPOgixvYZ4db5HLXIgSqLMtmW7S7ff/89q1at4plnniEiIqLKOeuzIeCRIjDGnAGG2tmfCYyy2V4F1PAPMMbc6Un5/iI1NZUzZ84wYsQIysrLyCnKqdEKd6ZCr9hflzdnRbTDioiGLaJa0Dmus0Oziq3DUFxUHE3Cm/jMQaXi4Xx2+R6yCyx2/qbNY+l+1wv88Olb5H71X4oyvyV+9OOEt0p0qntbX96ftb3wFccBtm/fzi9/+Ut27tzJxIkTK1tw7tLQoq82BCoUZ/Fj1zBmzBjmv/gEg3t1ZuLEiS6fy16LvDreapi89tprhIaG8qtfVW0D13dDIOg9i4vLiu2649eo0G3MKgeOHYDfwK8O/YrbX7i9zjJiImKqhKxNaJ5Az/ieNQJiOarMI8MCa6qbPYpswlOfO19CeIjQZui9RF7QkzOr/sLxRb+m7bAHeez5R+s8V33ZSGt74aPDQ5narw3Tpk1j/vz5tGvXjuTkZMaMGVMjraszTBpa9NWGREREBB9++CHDhg3j9ttvJyYmhhEjXOsZVNyDR5fsrBw3skdmdoFHs4vy8/N56623GD9+PB06dHBJRm8TVIpg3pfzWLJ3iVvTDm0rac5CzJkY7h92v0PTSoVZpXlk80bhzVkb9iq2knJDXHQ4bZKuIbLtz/gx5a+cWPkXFpTtp8/8+bUuTl5fNlLbLrjtrKEOzSPoU7iDGRPv5OzZszz44IO8+OKLxMXF1TiHO637QI9309Bp0qQJK1asYMiQIYwbN45PPvmEa665xqVzjO2TwG8+2FFrmtjocI96dosWLSInJ4eHH37YJdl8QVApghAJoXlkcxKbJ9aovCta69WnHcZExFQxq5SXl9P6N62ZNG4S80bMq6W04MFRBZZTUMKOPwwDoLz8Dl599VWeeuopLr74Yl588UUefvhhwsJqPoL1aSO17YIbY/j444956qnf8Pc9exg4cCCvvvoql156qcP87rTuAzneTWMhLi6OlJQUrrnmGm688UY+++wzl2d21WY6jA4PRQS3e3b5+fm8+OKLXHXVVfTv398luXxBUCmC6f2mM73fdI/OsXv3bs6dO8fVV1/tJakaPs5UbCEhITzyyCOMHTuW//mf/2HGjBksWLCAWbNmMWbMmBpjGPVpIzXGkJKSwgsvvMCWLVvo2rUrS5YsYcKECXWOrbjTum+I0VcbIm3atGHt2rVcffXVjBw5knXr1nHZZZc5nd+R6bBFk3D+cNPFDnsM9u59dRNS56MpHD9+nCVLltR7gDl71N/KB42Ezz//HEAVgQ2PD+9OdHhV85ejiq1jx458/PHHJCcnY4zh5ptvZtCgQaSkpOCJl7s7lJSUsHjxYvr06cPIkSM5fPgwr7/+Onv27GHixIlOvaCOWvG1te7H9klg1rheJMRFI1icxNRHwDd06NCBtWvXEhsby/XXX09qaqrTee3dp7/c0pvU3w+rXIfDHgaLU2Byagbwk/kwI7sAAxzJPMHiN/+XKwYPr4xK6288CjHhL/zpWTxp0iS++uorAiHERSDhzqBZaWkp//znP3nuuec4fvw4l1xyCTNmzODWW28lOtp3ZpLvv/+ef/7zn/zrX//ixIkTdO/enSeeeILbb7+9cgqfswRyNEvlJ77//nuuvfZacnNzWb16NUlJNZxrncL2OY+NDie/uLRGWPEKKp6DijGoCs6ueZ0fv1lJ71//k9RX7nFLDnfxSfRRf+EvRWCMoV27dgwbNox33nmn3stvrBQVFfH+++/zyiuvkJaWRkxMDDfffDOTJ09myJAhLlfO9vj222/56KOPSE5OZuvWrYSEhHDDDTfwwAMPcMMNN3i0LGB9x6VR3OPQoUMMGTKEs2fPkpKSQr9+/VzKb0/ph4cIzaLCOHfefoiUhLhoMq09AYCSc5lkvvkgzXpdT+sR0+o9FpkqAi+Qnp5Ojx49WLBgAQ888EC9l9/YMcawfv163n33XT788ENycnKIjo5mwIABDB48mL59+9KtWzc6derkMKaPMYbjx4/z/fffs3PnTjZv3syWLVs4cuQIAH379mX8+PHcddddLi9qojR8jhw5wrXXXsvJkydZtmwZ117rfCwwRzGgqlf2tgg/jaEZU86pJX+gKGMvHaa8QacLEuo9FpkqAi9QsXBEeno63bp1q/fyg4mioiJSUlJYu3YtGzZsYNeuXZXHIiMjadu2LTExMcTExACWWRh5eXmcPHmS8+fPV6ZNSEhgwIABXH311YwePZrExMQaZSnBRUZGBiNGjCA9PZ23337b6fWBawsGV9u63RWDzic2LSF7w79oOex/aHPFTX4xH/pqPYKgYuPGjbRt25auXbv6W5RGT2RkJKNHj2b06NGAZe2HvXv38u2335Kens6pU6f48ccf+fHHHzmVW0hGeSxFTVoT2+cybh/Yh/FDkrjoootITEwMiFkZSuBQsbLZmDFjuO2228jMzGTGjBl15qttdlxtM8HG9kng292pzPzj2zTp1p/ug8fx2xE9Asp8qIrASYwxbNy4kauvvlorFj/QqlUrBg0axJlmF7I5qwuZIQV06GFZG/nDrzOIKSkjxpr2i/BQRrW5hI4dA+dFUwKLCj+DO++8k0cffZS9e/fy6quvEhUV5TBPXZU92Pd9yc3N5fVnp5N4QQI7tq6gRYsWjorwG6oInOTw4cMcO3bMZQ9FxXvY8+J9d+uRGt31hhquQQed65eoqCgWL17MH/7wB1566SV27NjBhx9+SKdOneymr8vR0Z7vS2FhIZMnT+bw4cNs3LgxIJUAqCJwmq1btwIEhBegtwnECsieTPa8eB2NcDW0cA0aiM4/hIaG8uKLL3L55Zdz11130bdvX/7xj38wfvx4uz1/Vxwd8/PzGTNmDGvXrmX+/PkMGDDA2+J7DXUoc5Jt27YRGRnJJZdc4m9RvEp1Z5eKCqjCGSaQZKotUmh1fB2uITk1gwGz19Fl5soqzkPuUluoCsX3jBkzhu3bt9OpUycmTpzIuHHjyMzMdPt8OTk5DB8+nPXr17Nw4UKmTp3qRWm9jyoCJ9m+fTu9e/cmPDzc36J4lUCsgBzJFOpgbKb63rrCNXhaiT+dnMZvPtjhVeWpgej8T9euXfnqq6+YM2cOn376KT179uSll14iOzvbpfOsXLmSpKQkvvrqKxYvXszdd9/tG4G9iCoCJygrK+Prr7/m8ssv97coXicQKyBHZZcZYzeUxe39OjodrsHTHlByakat4xLu4k6oCsX7hIWF8fjjj5OWlsbAgQN5+umn6dixI0888QS7d+92GAbFGENqaio33HADN954IyEhIXz22WdurYfgD3SMwAn2799Pfn5+o1QEgRgJs6452c6OZzg7zuDK4PLclHSfjEt4KxBdII73BDr2r9nPWbFiBTt27OBPf/oTL7/8MnPmzKFdu3YMHTqUTp06ERERQVhYGGlpaaxfv55Tp04RExPDyy+/zMMPP+wVj/j6wiNFICItgQ+AzliWmpxkjDlnJ91bwI3AKWPMJa7m9zfbtm0DaJSKIBAjYdqTSYAhPeKdHqxzNPjqaNUpZyvx2tJ5ojy9EXpbB5xdp65r1rt3b95//33mzp3LZ599xpo1a1i7di2nT5+mtLQUsAS2GzZsGNdeey033ngj8fHxfvs/7uKRZ7GIzAHOGmNmi8hMoIUx5gk76a4G8oC3qykCp/JXp749i6dNm8aiRYvIzs52GNqgIROIrcink9NqmGBcCebmKBxAxeIz1UmIi3bK3d/ReQWYd0tvv1632kIg1Hcog4aCJ9esvLyckpISIiIiGoxvka88i8cAg62/FwEbgBoVuTHmcxHp7G5+f7Nt2zb69u3bKJUABOZC6ev3Z3nkH1DXOIO7PSBHvZXb+3X0+zUMxPGeQMeTaxYSEkJkZOAvI+sMng4WtzXGHAewfrep5/w+p7i4mB07djRKs1Ag42ml5shMUzGY7O5aAPZi1M+7pTcvju1VmcbbU0udRQecXUevmYU6ewQisgZoZ+fQ77wvTq1yTAGmgGVxk/oiLS2N4uJiVQT1jLuD2BVmrozsAgRqmJYqzF6u2t6rm84cmQ38aacPxPGeQEevmYU6ewTGmOuMMZfY+SwDTopIewDr9ykXy3c6vzFmgTEmyRiTVJ+DMRVjEaoI6hdXVj2rwHZqKFiUQIXl1t1VwFydbupPvwxd+cx19JpZ8HSMYDlwNzDb+r2snvP7nG3bttGqVSs6d+7sb1GCCndm0TgKQeHJYKmr0039bacPxPGeQCYQJ0r4A08VwWxgiYjcDxwBJgKISAfgTWPMKOv2+1gGhVuLyDHgD8aYfzrKH0hs27aNpKSkBjMroDHhaqXmTiVcV0Xg6jkD0S9DsY9Ot/0JjxSBMeYMMNTO/kxglM32ba7kDxTOnz/Pnj17KmPiK4GNq5WwMxWBq+dUm3PDoa7eXjD1FjTERC3s2LGDsrIyHR9oILg6ruCMPd/Vc6rNueFQW28vEIMx+hINMVELO3fuBKB3797+FURxClfHFZwx+7gzVqF2+oZBbb09T0ORNDRUEdRCWloasbGxus5tA8KVSthZs49W7I2T2sx4v/lgh908jdU5T01DtbBr1y569eqlA8WNFHemqCqNh9rMeMHmaKY9AgcYY9i9ezeTJ0/2tyiKj/BGoDelYeOotxdsg/6qCBxw9OhRcnJy6NWrV92JlQaLmn0UewRbI0EVgQPS0izTCFURKEpwEkyNBB0jcIAqAkVRggXtETggLS2Njh07Ehsb629RlDoIJscfRfEFqggcUDFjSAlsNEyAoniOmobsUFxczP79+1URNAD8Ge1TURoLqgjskJ6eTmlpqSqCBoC/o30qSmNAFYEddKC44RBsjj+K4gtUEdghLS2N8PBwundvnM4jjQn1DlYUz9HBYjvs2rWLHj16EBER4W9RlDoINscfRfEFqgjskJaWxqBBg/wthuIkweT4oyi+QE1D1cjOzubo0aM6PqAoStCgPYJq7N69G9CBYkVRHNPYnBg96hGISEsRWS0i31m/WzhI95aInBKR3dX2PysiGSKyw/oZZS9/fbJnzx4ALrnkEj9LoihKINIYVy/z1DQ0E1hrjOkKrLVu22MhMMLBsXnGmN7WzyoP5fGY9PR0oqOjdTEaRVHs0hidGD1VBGOARdbfi4Cx9hIZYz4HznpYVr2Qnp5Ot27dCAnR4RNFUWrSGJ0YPa3t2hpjjgNYv9u4cY5pIrLLaj6ya1oCEJEpIrJdRLZnZWW5K2+d7N+/X/0HFEVxSGN0YqxTEYjIGhHZbeczxgvlzwd+BvQGjgN/dpTQGLPAGJNkjEmKj4/3QtE1KSoq4tChQ6oIFEVxSGN0Yqxz1pAx5jpHx0TkpIi0N8YcF5H2wClXCjfGnLQ51xvAClfye5sDBw5QXl6uikBRFIc0RidGT6ePLgfuBmZbv5e5krlCiVg3bwZ215be16SnWwZ7VBEoilIbjc2J0dMxgtnA9SLyHXC9dRsR6SAilTOAROR94Eugu4gcE5H7rYfmiEiaiOwChgC/8VAej1BFoChKMOJRj8AYcwYYamd/JjDKZvs2B/nv9KR8b5Oenk6HDh2IiYnxtyiKoij1hs6RtCE9PV17A4qiBB2qCKwYY1QRKIoSlGisISunT5/m3LlzdO/evdHFEVEURakNVQRWKgaKz4S14nVdDF1RlCBCTUNWKhTBqiPS6OKIKIqi1IYqAizRBH+/6DMIDec0ze2machxRBRFUWoj6BVBRUjZc8cPEd6iPRISajddQ44joiiKUhtBrwgqQsqWnM0gvOUFdtM09DgiiqIotRH0iiAzuwBTVkpp9gnCWlVVBAIkxEUza1wvHShWFKXREvSzhjrERXPo+++gvIzwlj9V9glx0Wyeea0fJVMURakfgr5H8Pjw7kiuJe5dhWlITUGKogQTQa8IxvZJ4LoOlumi4S0T1BSkKErQEfSmIYAmRWdo0aIFR/5yi79FURRFqXeCvkcAcPDgQX72s5/5WwxFURS/oD0CLIqgT58+GmNIUZSgJOh7BGVlZRw6dIjSpvE8uTSNjOwCDD/FGEpOzfC3iIqiKD4l6BVBRkYGJSUl7MyO1BhDiqIEJR4pAhFpKSKrReQ763cLO2kSRWS9iOwTkT0iMt2V/L7m4MGDAORFtLR7XGMMKYrS2PG0RzATWGuM6QqstW5XpxR41BhzEdAPeEhEerqQ32ckp2bwy1dXAhDRor3dNBpjSFGUxo6nimAMsMj6exEwtnoCY8xxY8w31t8/AvuABGfz+4qKYHNZmUdBQpCY1jXSqGOZoijBgKeKoK0x5jhYKnygTW2JRaQz0Af4ytX8IjJFRLaLyPasrCwPxf4p2Fxp9gnCYtvUiDqqjmWKogQLdU4fFZE1QDs7h37nSkEi0gz4EPi1MSbXlbwAxpgFwAKApKQk42r+6lTY/i2KoOrf0zhDiqIEE3UqAmPMdY6OichJEWlvjDkuIu2BUw7ShWNRAu8aY5baHHIqvy/oEBdNRnYBpTknaNL1qirHdIBYUZRgwlPT0HLgbuvvu4Fl1ROIiAD/BPYZY15xNb+veHx4d0zRecrP5xAWV7VHoAPEiqIEE54qgtnA9SLyHXC9dRsR6SAiq6xpBgB3AteKyA7rZ1Rt+euDsX0SGNZRAKooAh0gVhQl2PAoxIQx5gww1M7+TGCU9fcmLGu8OJ2/vhjVOZQ3gQ6JncgFDSuhKEpQEtSxhiqcyTY8fwstWtS7L5uiKEpAENQhJg4ePEhcXJwqAUVRgpqgVwQXXnihv8VQFEXxK0GvCHQdAkVRgp2gVQQV4ae1R6AoSrATtIogMzOT4uJiVQSKogQ9QasIKmYMqSJQFCXYUUWgikBRlCAnqBVBSEgIiYmJ/hZFURTFrwStIjhy5AgJCQmEh4f7WxRFURS/EtSKoGPHjv4WQ1EUxe+oIlAURQlyglIRlJeXc/ToUVUEiqIoBKkiOHnyJCUlJaoIFEVRCFJFcOTIEQBVBIqiKKgi8LMkiqIo/kcVgaIoSpDjkSIQkZYislpEvrN+1wjsLyKJIrJeRPaJyB4RmW5z7FkRybCzhKVPOXLkCDExMcTGxtZHcYqiKAGNpz2CmcBaY0xXYK11uzqlwKPGmIuAfsBDItLT5vg8Y0xv62eVnfxep2LqqIjdFTQVRVGCCk8VwRhgkfX3ImBs9QTGmOPGmG+sv38E9gF+XRRYfQgURVF+wlNF0NYYcxwsFT7QprbEItIZ6AN8ZbN7mojsEpG37JmWbPJOEZHtIrI9KyvLI6HVh0BRFOUn6lQEIrJGRHbb+YxxpSARaQZ8CPzaGJNr3T0f+BnQGzgO/NlRfmPMAmNMkjEmKT4+3pWiq1BQUEBWVpYqAkVRFCthdSUwxlzn6JiInBSR9saY4yLSHjjlIF04FiXwrjFmqc25T9qkeQNY4Yrw7nD06FFAZwwpiqJU4KlpaDlwt/X33cCy6gnEMiL7T2CfMeaVasfa22zeDOz2UJ460amjiqIoVfFUEcwGrheR74DrrduISAcRqZgBNAC4E7jWzjTROSKSJiK7gCHAbzyUp05UESiKolSlTtNQbRhjzgBD7ezPBEZZf28C7M7TNMbc6Un57nDkyBFEhIQEv05cUhRFCRiCzrP4yJEjdOjQQRekURRFsRKUikDNQoqiKD+hikBRFCXICSpFYIxRRaAoilKNoFIEWVlZFBUVqSJQFEWxIagUgU4dVRRFqYkqAkVRlCBHFYGiKEqQE3SKoGnTprRo4TDIqaIoStDhkWdxQ2PQoEE0b95cF6RRFEWxQYwx/pbBZZKSksz27dv9LYaiKEqDQkS+NsYkVd8fND2C5NQM5qakk5ldQIe4aB4f3p2xfTTekKIoSlAoguTUDJ5cmkZBSRkAGdkFPLk0DUCVgaIoQU9QDBbPTUmvVAIVFJSUMTcl3U8SKYqiBA5BoQgyswtc2q8oihJMBIUi6BAX7dJ+RVGUYCIoFMHjw7sTHR5aZV90eCiPD+/uJ4kURVECB48UgYi0FJHVIvKd9buGp5aIRInI/4nIThHZIyLPuZLfG4ztk8Cscb1IiItGgIS4aGaN66UDxYqiKHjoRyAic4CzxpjZIjITaGGMeaJaGgGaGmPyRCQc2ARMN8ZsdSa/PdSPQFEUxXUc+RF4ahoaAyyy/l4EjK2ewFjIs26GWz8V2qfO/IqiKIpv8VQRtDXGHAewfrexl0hEQkVkB3AKWG2M+cqV/NZzTBGR7SKyPSsry0OxFUVRlArqdCgTkTVAOzuHfudsIcaYMqC3iMQBH4nIJcaY3U5LaTnHAmABWExDruRVFEVRHFOnIjDGXOfomIicFJH2xpjjItIeS4u/tnNli8gGYASwG3Apv6IoiuJ9PDUNLQfutv6+G1hWPYGIxFt7AohINHAdsN/Z/IqiKIpv8XTWUCtgCdAROAJMNMacFZEOwJvGmFEi8gssA8GhWBTPEmPM87Xld6LcLOCwm2K3Bk67mdeXqFyuoXK5hsrlGoEqF3gmWydjTHz1nQ0yDLUniMh2e9On/I3K5Roql2uoXK4RqHKBb2QLCs9iRVEUxTGqCBRFUYKcYFQEC/wtgANULtdQuVxD5XKNQJULfCBb0I0RKIqiKFUJxh6BoiiKYoMqAkVRlCCnUSoCEZloDXldLiIOp1mJyAgRSReRA9bopxX7fRIe28mw3d1FZIfNJ1dEfm099qyIZNgcG1VfclnTHRKRNGvZ213N7wu5RCRRRNaLyD7rPZ9uc8yr18vR82JzXETkb9bju0TkMmfz+liu263y7BKRLSJyqc0xu/e0nuQaLCI5Nvfn987m9bFcj9vItFtEykSkpfWYT66XiLwlIqdExG7oHZ8/W8aYRvcBLgK6AxuAJAdpQoHvgQuBCGAn0NN6bA4w0/p7JvAnL8nl0nmtMp7A4gQC8CzwmA+ul1NyAYeA1p7+L2/KBbQHLrP+jgG+tbmPXrtetT0vNmlGAZ8AAvQDvnI2r4/l6o8lxDvAyAq5arun9STXYGCFO3l9KVe19DcB6+rhel0NXAbsdnDcp89Wo+wRGGP2GWPqWpn+CuCAMeagMaYYWIwlLDb4Ljy2q+cdCnxvjHHXi9pZPP2/frtexpjjxphvrL9/BPYBvlhxqLbnxVbet42FrUCcWGJoOZPXZ3IZY7YYY85ZN7cCF3ipbI/k8lFeb5/7NuB9L5XtEGPM50BtURV8+mw1SkXgJAnAUZvtY/xUgTgdHttFXD3vrdR8CKdZu4ZvecsE44JcBvhMRL4WkSlu5PeVXACISGegD/CVzW5vXa/anpe60jiT15dy2XI/lpZlBY7uaX3JdZVYVi/8REQudjGvL+VCRJpgCZD5oc1uX12vuvDps1Vn9NFARWoJj22McSZ4ndjZ5/Fc2trkcvE8EcBo4Emb3fOBF7DI+QLwZ+C+epRrgDEmU0TaAKtFZL+1JeM2XrxezbC8sL82xuRad7t9vewVYWdf9efFURqfPGt1lFkzocgQLIpgoM1ur99TF+T6BovZM886fpMMdHUyry/lquAmYLOpGv/MV9erLnz6bDVYRWBqCY/tJMeARJvtC4BM62+3w2PXJpe4FrZ7JPCNMeakzbkrf4vIG8CK+pTLGJNp/T4lIh9h6ZZ+jp+vl1iWQP0QeNcYs9Tm3G5fLzvU9rzUlSbCiby+lAuxBH98ExhpjDlTsb+We+pzuWwUNsaYVSLydxFp7UxeX8plQ40euQ+vV1349NkKZtPQNqCriHSxtr5vxRIWG3wXHtuV89awTVorwwpuxrKmQ73IJSJNRSSm4jcwzKZ8v10vERHgn8A+Y8wr1Y5583rV9rzYynuXdYZHPyDHatJyJq/P5BKRjsBS4E5jzLc2+2u7p/UhVzvr/UNErsBSH51xJq8v5bLKEwtcg80z5+PrVRe+fba8PfodCB8sL/0xoAg4CaRY93cAVtmkG4Vllsn3WExKFftbAWuB76zfLb0kl93z2pGrCZYXIrZa/neANGCX9Wa3ry+5sMxK2Gn97AmU64XFzGGs12SH9TPKF9fL3vMCTAWmWn8L8Jr1eBo2M9YcPWteuk51yfUmcM7m+myv657Wk1zTrOXuxDKI3T8Qrpd1+x5gcbV8PrteWBp9x4ESLHXX/fX5bGmICUVRlCAnmE1DiqIoCqoIFEVRgh5VBIqiKEGOKgJFUZQgRxWBoihKkKOKQFEUJchRRaAoihLk/D9QqFN3caz9RQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# linear regression\n", "p=1\n", "w1 = np.array(2)\n", "w1 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh1= np.matmul(X,w1)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(x, yh1, 'g')\n", "plt.plot(x, yh, 'g-.')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh1)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_]).T\n", "yh_= np.matmul(X_,w1)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.array([[1,MSE_train,MSE_test]]) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Polynomial features\n", "\n", "polynomial functions are useful features, as any smooth function can be represented by polynomials of large enough degree using Taylor expansion. \n", "\n", "for degere 2 polynomial, we use $(1,x,x^2)$ as feature vector" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABMmElEQVR4nO2dd3xUVfbAvzc9EMgkEEpCQkDpICCoSBNEqSpIF7uurC62RVmxrGtdWHF1d38qK7qI2JBVBASU3otLCRBaqCGNEghJSC9zf3/MJKTMJDOZmbQ5389nPjPz3r3vnXnz3j33nnPPuUprjSAIguC+eNS0AIIgCELNIopAEATBzRFFIAiC4OaIIhAEQXBzRBEIgiC4OV41LUBVaNq0qY6MjKxpMQRBEOoUe/fuvaS1Dim7vU4qgsjISPbs2VPTYgiCINQplFJnLW13imlIKTVcKRWjlDqplJppYX9HpdROpVSuUupFe+oKgiAIrsVhRaCU8gQ+BkYAnYH7lFKdyxRLAZ4F3q9CXUEQBMGFOGNEcDNwUmt9WmudBywCRpcsoLW+qLXeDeTbW1cQBEFwLc5QBGFAfInvCeZtTq2rlJqqlNqjlNqTnJxcJUEFQRCE8jhDESgL22xNYGRzXa31PK11b61175CQck5vQRAEoYo4Y9ZQAhBe4nsrIKka6gqCUIalUYnMWR1DUmo2oQZ/ZgzrwJietg7QBXfFGSOC3UA7pVQbpZQPMBlYXg11BUEowdKoRF5eEk1iajYaSEzN5uUl0SyNSqxp0YRajsOKQGtdADwNrAaOAou11oeVUk8qpZ4EUEq1UEolANOB15RSCUqpxtbqOiqTILgjc1bHkJ1fWGpbdn4hc1bH1JBEQl3BKQFlWutVwKoy2/5d4vN5TGYfm+oKgmA/SanZdm0XhCIk15Ag1BNCDf52bReEIkQRCEI9YcawDvh7e5ba5u/tyYxhHWpIIqGuUCdzDQmCUJ6i2UEya0iwF1EEglCPGNMzTBp+wW7ENCQIguDmiCIQBEFwc0QRCIIguDmiCARBENwcUQSCIAhujigCQRAEN0cUgSAIgpsjikAQBMHNEUUgCILg5ogiEARBcHNEEQiCILg5oggEQRDcHFEEgiAIbo5TFIFSarhSKkYpdVIpNdPCfqWU+pd5/0Gl1I0l9sUqpaKVUvuVUnucIY8gCIJgOw6noVZKeQIfA3cCCcBupdRyrfWREsVGAO3Mr1uAueb3IgZrrS85KosgCNXL0qhEWf+gHuCMEcHNwEmt9WmtdR6wCBhdpsxoYKE2sQswKKVaOuHcgiDUEEujEnl5STSJqdloIDE1m5eXRLM0KrGmRRPsxBmKIAyIL/E9wbzN1jIaWKOU2quUmmrtJEqpqUqpPUqpPcnJyU4QWxAER5izOobs/MJS27LzC5mzOqaGJBKqijMUgbKwTdtRpp/W+kZM5qNpSqmBlk6itZ6nte6tte4dEhJSdWkFQXAKSanZdm0Xai/OWKoyAQgv8b0VkGRrGa110ftFpdRPmExNW5wglyAIVnCGbT/U4E+ihUY/1ODvLDGFasIZI4LdQDulVBullA8wGVhepsxy4CHz7KE+QJrW+pxSqqFSqhGAUqohMBQ45ASZBEGwgrNs+zOGdcDf27PUNn9vT2YM6+BEaYXqwOERgda6QCn1NLAa8ATma60PK6WeNO//N7AKGAmcBLKAR83VmwM/KaWKZPlWa/2rozIJ5ZHZHUIRFdn27bknisrKfVU9uPIZVlqXNefXfnr37q337JGQA1sp6gGWfPj9vT2ZNbabPLRuSJuZK8s58cDkyDsze1R1iyPYgLOeYaXUXq1177LbneEjEFyIM3oBzuoBCq7F0n8Nzu9xi22/7uHqZ1gUQS2mbC+gyJYLVPjnl21QLD30ILM7ahOW/usZ/z0ACvILdfE2W/7/ypgxrIPF3qXY9msvrp6hJbmGajFVmadtyRFoae4uSA+wNmHpv8436mIlUIQz5umP6RnGrLHdCDP4o4Awg7+YCWs51p5VZz3DMiKoxVSlF2CpQdGY7L8lmxTpAdYu7OnZlSxbVdPhmJ5h0vDXIVw9ipMRQS2mKr0Aaw2KBukB1mLs6dkVlZUUD+6Dq0dxMiKoxVSlF2DNJxBm8Gf7zNtdIqfgOJb+a28PVcpHAKX/f5kE4F64chQnI4JajKVewLheYcxZHUObmSvpN3tDud6fBPnUTSz913MmdGfO+O5We4GS4kFwFjIiqOWU7AXYMotIgnzqLtZ6fNb+O5kGKjgLUQR1CFtNAeIIdA/cYRqoRMRXD6II6hBiChBKUt9Hf1WNoxHsRxRBLcJoNBITE8Pu3bvZs2cPCQkJGAwGgoKCaNWqFYbcQFJ8mmHOzVRMVUwB0tOqH9Tn0Z84w6vvORVFUAvQWrNs2TL+/Oc/c+iQKflqw4YNad26Nenp6aSkpJCVlQWAt6EFfu360Lj3aLwah1TJFCA9LaEu4O4j4Op8TmXWUA2zY8cObrnlFu69917y8vL49NNPOXToEGlpaRw+fJj4+HgyMzOJj49n7ty53NC1Cxn7VpD46RPkbPqU6bcGOzX3kCDUFlwdTVvbKfuc6sIC0s+f5b1fjzn9XKIIapBvvvmGQYMGceHCBebPn8/hw4eZOnUqXbp0wdOz9BTQVq1a8eSTT7Jn6zpiT5/iyam/I2Xfrzx97wDeffdd8vPzbT6vu/e0hLqBu0+FLvs85l04RdLnT3Lyf+udfi5RBDWA1ppZs2bxwAMP0K9fP/bv38+jjz6Kl5dtlrqIiAjmzp3LyZMnGT16NK+99hp9+vTh4MGDNtV3956WUDdw95xIZZ/H3IQjALTu1MPp5xJFUAO88MILvPLKK0yZMoVff/2VoKCgKh0nIiKCxYsX89///pf4+Hh69+7Nxx9/TGVrTLh7T0uoGZZGJdJv9garwZCWGNMzjO0zb+fM7FFsn3m72ygBKP+c5iQewdvQglcn9HP6uUQRVDMLFizgww8/5Omnn+arr77C19fX4WOOHz+eI0eOMHToUJ5++mkef/xxcnJyrJZ3956WUP1IXiT7KfmcojX5iUfpP2CAS55Tp6xQppQaDvwT01KVn2utZ5fZr8z7R2JaqvIRrfU+W+paoq6uULZ//35uvfVW+vbty+rVq202BdmK0WjkzTff5K233qJ3794sXbqUsDBp3AXraK1JT08nISGBhIQE0tLSKCwspKCgAB8fH0JCQggJCSE8PByDwVDl8/SbvUFyYDnA8ePH6dChA5999hm/+93vqnwcl61QppTyBD4G7gQSgN1KqeVa6yMlio0A2plftwBzgVtsrFsvuHLlCmPHjqVJkyZ89913TlcCAB4eHrz55pv06tWL+++/v1jhdOzY0ennEuomGRkZbNy4kV27drF371727t3LpUuXbKobHh5O9+7d6d27N0OHDuXmm28uN6nBGjJBwTG2bdsGQP/+/V1yfGe0RjcDJ7XWpwGUUouA0UDJxnw0sFCbhh+7lFIGpVRLINKGuvWCRx99lISEBLZs2UKzZs1ceq577rmHLVu2MGLECPr168eKFSu49dZbba4vwWb1i4sXL/L999/z888/s3nzZvLy8vD09KRr167cc889dOrUifDwcFPQosGAt7c3np6e5OTkkJycTHJyMmfOnOHAgQMcOHCAVatW8cYbbxAUFMSIESN4+OGHGTJkSIVKQfIiOcbWrVtp0qQJHTq4xo/nDEUQBsSX+J6AqddfWZkwG+sCoJSaCkwFk5O0LrFq1SqWLVtG6xFTuW/pZUI3bXB549qzZ0927NjBsGHDGDJkCC++N4/1GaEkpmbjqRSFWhNmoZGXYLPqoarK1tZ6BQUFLF++nC+++IJffvmFwsJCOnbsyDPPPMOIESPo27cv/v5Va4RTUlJYu3Ytv/zyC8uXL+fbb78lPDycxx57jGnTphESElKujjvkRXIl27Zto3///uWyCjgLZziLLUlW1vFgrYwtdU0btZ6nte6tte5t6UarreTn5zN12rP4BIehu4yoVkdZ27Zt2b59Oy1bX8c7zz/KiT2bACjUpdfALSmHBJu5nqo6Tm2pl5aWxgcffMD111/PuHHj2LdvHy+88AKHDh3i6NGjvP/++wwZMsQuJVB2ts+Ws9lMmjSJBQsWkJSUxPfff0/nzp156623iIyMZPr06SQlJZU6hrMmKFRl5lFd5/z585w8edJlZiFwzoggAQgv8b0VkGRjGR8b6tYpyvbYOl7aSmLsKULG/wXl6V1crmTOFFeaYpo1a0bTie+Q8NkMkn/6KyH3vESDDn0tygFiy60OqppDp6J6g9sG8OGHH/Lhhx+Snp7OwIED+cc//sHdd99tsx3fEpWNEP38/Jg4cSITJ07k2LFjzJo1i3/961988sknTJ8+nVdeeYWAgIDi8lW9r5dGJfLG8sOkZl8LnHSX0er27dsB1/kHwDkjgt1AO6VUG6WUDzAZWF6mzHLgIWWiD5CmtT5nY906Q9keW1zSeRZ8NAe/Njfi37aco56k1Gy7eodV7Q1dzPWi+aR38G3RjuRls8k8tq2cHEVIsJnrqaqytbTfmJ/LkV8X0qZNG958802GDBnC7t272bx5M2PGjHFICYB9I8SOHTvy5ZdfcuLECSZOnMisWbNo3749X331VaWxLRVR9IyUVAKVyVKf2LZtG35+ftx4440uO4fDikBrXQA8DawGjgKLtdaHlVJPKqWeNBdbBZwGTgKfAX+oqK6jMtUUZR+a1K1fY8zLpumQJyza9kIN/jY/aI7Mww41+OPh25BmE9/CN6wjl36eQ9aJXcX7PZTitaXRxVP8ykoqtlznUlVlW3K/1prMo1tI+vxJUjd/Sd++fdm7dy9Lliyhd+/ynY6qYk05JaZmW+2QtGnThoULF7Jz507Cw8N56KGHGDZsGHFxcVWSwdIzYouM9YVt27Zxyy234OPj47JzOCWgTGu9SmvdXmt9ndb6XfO2f2ut/23+rLXW08z7u2mt91RUt65S8oYsSE8m4+AaGvUcgWeTcKuRvJZmUgDltlfVdr80KpGUzFwAPHwb0Gz8G/g0v57kpbPJPrUbMPkMvt4VV3zOks4bCTZzPlWN7C6ql5ccy4VvX+LS8vfw8m/E2/MWs2LFCpf0GA0NvK3uq6xD0qdPH3bu3MncuXPZsWMHXbt25fPPP7d7dFBZQ1+fR6sZGRlERUW51CwEElnsVErekFf3/gxa0/jmccWNaZh5v6dSxY24h5VJAJ5lRhBVMSdcs+8ai7d5+Dag+cQ38QlpzcWf/kp27H6LdTXXgn1ECTiXqjpOh3UMpnPiCs4veI78ywlcd+90vlmxkdeemOASOZdGJZKRU1BpuYo6JB4eHjz55JNER0fTu3dvnnjiCcaPH09aWprNclTU0NfH0WpJE/Atz31CYWGhKIK6RFGPzZibxdUDq2nQoR+NmrYsdv4W7S85a8dopXNUWKbXVBVzgrUhtYdfAM0mvY13cBjJS94mJ+Goxfr1fchdk9ibQ2fTpk1069aNJV98zCMPP8TF+NOcXPJ3xvV23VTqOatjyLd2g5ahsnulTZs2rFu3jjlz5rBs2TJ69epFVFSUTce2NIICCGrgXe9Gq2VNwAmHfkN5enGlUVuXnlcUgRMp6ul5ndyMzs3kusGTSt2oldk6SxJWpoGvijmhoofT078xzSe+jWdAMBd/eIO8C6fLlanPQ+66QmZmJs8++yyDBw9GKcWGDRuYP38+TZo0cfm57ekI2HKveHh48OKLL7J582ZycnK49dZbWbBgQaX1LI2g/jGpB1GvD61XSgDKtxHZZ/bh26ozH21NcOl5ZYUyJ3P3DS2YfngVffv2Zfsn00rts/XBstTAV2V9WmvRnEV4BgTRfNK7nP/mJS4s/jMtpszGu0m4VRkcQaKV7WfXrl08+OCDnDx5kmeffZZZs2bRoEGDaju/tftHUTrYx957pV+/fkRFRXHffffx6KOPcvToUWbNmoWHh/V+aWVTT+vL/VXKz3j1EvnJsTQc9KjLR+cyInAyy5Yt48yZM0yfPr3cPmu9JoO/t032YnvNCRUNqR/oE0GYwR/vwGbc8MQc/L09ufTf1ylMu+iQg9jSFFfJPGkfBQUFvPXWW/Tv35/8/HzenreYPS1H0+WtjdUaRGVtFHq/+d5xJDAsJCSEX375hSeffJL33nuPsWPHkpGRUSU569P9VbKNyDmzDwD/tr1cPjp3SvbR6qY2Zx/t378/SUlJnDhxotwc7rLBOWB6sFxp57S1p3TgwAFuu+02mjVrxtatW2nevHmVzmXp9/l5e3Alq/wccMk8WZ7Y2FgeeOABtm/fzgMPPMDwJ17hnbVnq/WeKYmre9paaz7++GOee+45evXqxcqVKy2mqKiI+pTZtOQzlLx0NrmJR7j+ua+ZPe4Gp1x3l2UfFUwsjUrkza/Wsn/7dlqP/D0/Hzxf7o+rinnHUWyN5uzevTsrV65k6NChDBs2jE2bNpVLO1xZo2Btiqs1v4g4o0uzZMkSHn/8cYxGI9988w1Tpkyh3+wNVYpCdhaORAPbglKKp59+msjISCZOnEj//v1ZvXo1kZGRNh+jPkXDF13r91YdIf7sfpp27e80JVARYhpyAkVa/MyuX0F5UNimP89/v5+eb60pNzytzSsu9evXjyVLlnDkyBFGjRpFZmZm8T5bht8V+SMsIc5oEzk5OTzzzDOMGzeOdu3aERUVxZQpU4D61chVxF133cW6deu4ePEiffv2JTo62ua69S0afkzPMP5+ewDGnAw++tNj1dJGyIjACcxZHUNWXgGZRzbh17o7ngGmpSevZOXXuVwow4YN49tvv2XSpEnce++9/Pzzz/j6+laaH2dpVGI5J2IRBn9vcguMdTrzZGWjoUJjIem56aTlppGak0paThpX866SkZdh9ZWVn0VKegr/2/c/rmZdpcVrLcgLy+PuX+8mvzCffGM+Sf6ZFOpCNEagKB5E46GgyXveKBRKKTyVJ54ensXv3h7e+Hr54uflh5+XH76eJT57+eLnafrc0KchjX0bF78a+TS69tn32ucAnwA8lGv7jX379mXbtm0MGzaMQYMGsXbtWpuC5OpbZlOjNvLTrz+hvBV33HEH5zPOszN+J6k5qXQO6cwtrSwmaHYIUQROICk1m9zEYxSkXSCw35RS+6pzGO8sxo8fz+eff85jjz3Gfffdx+LFiyvtmc5ZHWNRCSjgjXu6FJepK7M68grzuJh5kfMZ5/npwGHm79xPjjGFQu80kjPTeWDpVVpuyceorpKSnUJaThracuLcUvh4+uDj0YC8fB8KcwopTLuCR6Gia9euhDYPxdfTFx9PH7w9vfH28CaxUR57z6ZRaATTAF7h5eFB37ZNaNO0IVprNJpCYyGF2vwyFpJvzCe3IJfcwlxyCnLILsgmNSeVnIKca9vys8nMzySnwPqypkUoFIF+gQT7B9PEvwlNGjShiX8TmjZoSkiDEEIahtAioAUtA1oS2iiU5gHN8fKwv3np0qULW7ZsoU//27i53200m/AmbTr3qPB+qQmTa0UYtZHkzGT8vf1p7NuY1JxU1pxaU9xBSM1JNX0u6jSY318d8CqTu05mb9Je5njMoePwjgQFBfFzzM+MXTwWgBdvfVEUQW0l1ODPwTWbUF6+NGhffgGYujiMf/TRR7l69SrPPfccjz32GC07PkRSem65ckXDb2tmIc21B7Xsugf9Zm+o9gdXa82lrEvEpcURnx5PQnoCCekJJF5NJOlqEuczznM+4zwp2SmlK3qaXkr746Eb40ljLqUZGNm1D8F+wQT7B2PwM2DwMxDoF0igb2BxT7ro1dCnIasOJjPzv1GcWzef9N0/4dOiHa3GvcLbt99p9fe72mGbX5jP1byrpOemk56bztXcEp/N29Ny0riSc4XL2Ze5nGV6xVyKITkrmYy88rN9FIqQhiG0DGhJy0YtTe/mz60at6J1YGsiDZEY/Azl8nAdTPOl8bh3uPL1y5z//jWME97k5cw8wPrI2tm+jMT0RHw8fQhpGEJuQS4/Hv2xuAEvbtBzSzfsj/R4hJn9Z5KSnUKLv7fgn8P/ybO3PEtCegKTfphUfGxP5Vl8nxTdM+2C22HwMwDQ2NgYfoVhw4cBMKD1AKJ+H4XBz0DTBk2d9htLIorACfzx9rZMfnsr/tffjIdv+XneddVW+eyzz5Kens6f//xnho414tfpfnIKrqWrKBp+V2QWKhsYB65d/KaooT995TSnr5zmTOoZYlNjOZt2lri0OOLS4sjKzypVx9vDm9BGoYQ2CqVj044Maj2IFgEtaBHQguYBzXlywUk8CMJTG1BcS/ylgG/GjrJLvnf/u4PYr94kN+EwAT1HEnz7ExR6eVc4anS1w9bb05tgf5Myqwo5BTnFo6dzV89xLuPctXfz54MXDnIh4wKFurR5sZFPIyINkbQ2tC5WDp9tvEpmgIGm979M8nezufjfv6AmvsWc1T42X4eE9ASM2khEoCny+puD33Ap61Jx77tUo27edkebO/j07k8B6PRxJx7v+TgfDv8QozZy/5L7i4/t5+VHoG9gKaXf2tC6+FwGPwMfj/yYAREDAGgX3I5DTx0qLt/Qu2GFC8zs2bIHdsF9/7iv+Hg9WvSw7c+oIqIInIB/8mEKs9Jp1vOOco1hTdoqndGTfPXVV8nKymLWrFmMus+XlG5TOJeWU+p4/WZvsGoWsvTbq5qPvwitNZezL3P88nGOXz7OicsnOJ5iej915VS5HmpIgxBaG1rTJaQLI64fQetA00MbERhBq8atCGkYUqH9+2+Blqcn2qvgN2/ezL5/TUXnZdP07hdp2HlQ8b66OGosws/Lr/h6VkShsZBLWZeIT4/nbOpZzqadLVbSsamxbDm7hfTcdPNBTS/1tC/6ciHnc18iJbUtd3/XEV9PXzyUBzkFOaUa83bB7Vj30DoARn07ikhDJMsmLwPghTUvcCHzgunQng0xFvqjjQ3w82xM+2bN6dOqIzc0v6FY1rmj5tK+Sfvi33ds2rHihtzPy6/C3+nl4cUfbvpD8XdfL1+6NOti8/VcvHgxYWFh3HTTTTbXcRRRBE7g66+/pkmTJsQsmMmqw8m1wlbprF63Uop3332XQ2eT+fnbz2l8Oo0uo58q9busNWIlzUIlsXUmjFEbiU2N5WjyUY5eOsqxS8c4eukoR5OPciXnSnE5Lw8v2hjacH3w9QxsPZDrgq7juuDraGNoQ6QhkoY+DW3+vZZw1Bmpteb999/n5Zdfxjc4FMOkd/EJaV2qTF0dNZakKCZJKUXS1SSSribRO9Q0Zf2XE79w8MLBaz3xMmaV1JxUDH4Gzj5/lkEf/JejOX+nUCXTwNiPvMZx5HoeIM/rJCuOnyw+n6fypKFPQwx+BkIahBDWKIzTV04TaYhk1pBZBPgEFJfd/cRuGvo0ZOORq7y29Gip/zIz0ZMJt5SOy7j/hmsjAKUUHZpWT2cuNTWVX3/9lWnTplUYae1sRBE4SGZmJsuWLeORRx7Bx8fH5cN4W3G0112SZfuTON5mLAE9Ekn/7UcOo5iZ+RhgauitpSKwZBYCy6kLCkkjsPE5/rnrJNEXo4m+GM2hi4dKmXGaNWxGx6YdmdhlIh2bdqRdcDvaN2lPpCESb0/r6ZIdxRFnZFpaGo8++ig//fQT48ePZ+xz7/D6qlOlkrl5e6haMcPFqE1mPw/lwYWMC8RcjqFveF+8PLzYcnYLW85usWhSKekETXkphQCfAP6+4+98uvdTMl4xjc6+jv6ab6O/xdvDu9guXvQKaxyGwddk/zb4GXhjxEieW3KVnIJs/I09AFAZp0lfPotCjyz+9tnfyGmYU9w5OHbpGHvP7WXvub0sPLiQAJ8Aujbryg3NbuDghYPc0PwGujXrRpB/EB+s3V+jcRmVsWzZMvLy8pg8eXK1nlcUgYOsX7+e7Oxsxo0bV9OilMKZ88/nrI4hp8BI8NCnAEj/7QdA817Dp4qzqtraYy40FjK5r2LWui1kGk+S53GGfI+zFKoUEvLh+dUmU0635t144sYn6BLShc4hnekU0qnKNmxnUBUFf+DAAcaPH09sbCwffvghzz33HMv2J5VfqbuS9chtXrDeaEoZ7eXhRUp2CvvP76d3aG8a+zZm37l9LDu2rHwDXqYxP/DkAbo178YPR37g6V+e5sKLF2jWsBlrT63lna3v0MC7QSn7eEiDENoFtyveVsRjPR/jzuvuLP4+d9RcPr/7c/y8/CpdgN302yaV/s2TxtL12REMGDCANx98k23btvFcn+eK61zJvsKxS8c4nHyY6AvRHLx4kB+O/sC8ffOKy7Rq3IrLWS3w9orER0fibWyDt26FwrPWmOYWLVpEmzZtqtUsBJJiwmGefPJJvv32Wy5duuTSFYTsxZlh921mriz2AWhtJGXtv8mIWkXjm8eSuusHlFLlGqvBHUPYcPQ8Z9OP4x9wlvatLnKlIIYD5w+QXWCSS+GNtzGCQK/rGNWpD1N69ueG5jfQPMD+9Ba1jfnz5zNt2jSCg4P5/vvvi/PJV/S/rH/RtJa0n5cfGXkZbI/bTmJyCHNWXSS9IJ4Mz7UYVSYeHlm0a+GBn29uqR56Zn4mSyctZXTH0aw6sYpR345i1+O7uKXVLXwR9QWPLX+Mxr6Nr81u8g0kyD+ouBE3+Bn4fa/fE9Y4jLi0OI5fPk7/iP74efmRU5CDp/J06cjLFg4dOsRtt91G48aN2bZtG2Fh1pWz1ppzGSZH9cELB4m+GM2S6B1kGeNAmZSm0r5460iCvDrw7qh7uCnsJjqHdK7S1FdHuXz5Mi1atODFF19k1qxZLjmHtRQTDikCpVQw8D0QCcQCE7XWVyyUGw78E9MkvM+11rPN298AngCSzUVf0Vqvquy8tUURaK2JiIjg5ptv5sHX/lUrfANFODOvUdnGS2ttVgYreeqpp/joo49QShGbGstvib/xbdQG1p3aTg6n0Mq8Opr2p2PTGxh6/a30bNmTni160rFpxxpvWJyF1toUJJadxcvTX+aLL7+g+7juzH1nLre2v5XkzGTm7JjD3C0HMZKJUZlfZGFUGRjJBJXPB0M/4I+3/pGPtmzmmY2DaJo3g4aFt5HjcZALPq/hQQAeuiG+ngHcEhle3KAXNeQTOk+gU0gnLmdd5tDFQ/Rs2ZPGvo0pMBagUHh6OLaGcW1g9+7dDBkyhLCwMLZu3UrTprZPqVwalcjMJftIL4gjz+M0eR6nKPA8Dd5nyC4wmbEaeDegZ4ue3BR6EzeF3cQtYbfQNqhtpSMZR/nss8+YOnUqUVFR9OjRwyXncJUieA9I0VrPVkrNBIK01i+VKeMJHAfuBBIwLVh/n9b6iFkRZGit37fnvI4ogkELBlVa5q72d/Fi3xeLyz/S4xEe6fEIl7IuMX7x+OJymZmZ7Nmzh9DWbblCQ4xmu29A4R2EeAzj5VFhzD/2DC/c+gJ3d7ibmEsx/H7F7ys9f9nyfx3yV/qG92VH/A5eWf9KpfWLys9ev4xZ2/9Co+ynaB3YjkHd49h+YUGl9T+961M6NO3AzzE/8/edf+exjv/HrJWJJBtXk+FpmpXhoTTe+edJz7yMT6AP2luTbzQlllN441N4PQpfCtQlmuW9ipcOQwWsJLLVsUrPv+mRTQC8v+N9dibs5MeJPwLw8rqX2Zmws8K6TRo0KVX+cvZl5t1tMg9M/Xkqxy8ft1ivKCirbVBbFt67EIDhXw+nRUALFoxZQH5hPp0/6UxGbgYFxgIKdIHpvcQLwC/Fj9z/y2XmazOZ5TmL4dcN55cHfuFs6lna/LMN4InWHihzYILp3QMv5UWYIYC729/N4BZ/4qUleznj8UcCCu6kceHdFJDKJZ/ZpWTu07b8mgRl79WauveKype9lyqjbPkfJv5A0wZNWbB/AQv2Lygul5qaysHogwQ0DKB79+5cyS4gPiWbwKw/EW5oQa9OBzh4ZVmpe2nF8RUAXMrIJT4lm9yCQny9PAkP9qdpgC9Z+Vk8e8uz7Enaw9JjS4lPjy/2m/h7+RcHiAX6BtLItxGeqrRSreq9V8SJXScI2BjAsWPHGPblAxxJ0Hhn3E+owR9j8Pv4+pj8ZUW/qSq4KuncaGCQ+fOXwCbgpTJlbgZOaq1PmwVZZK53xMFz1ziXL18GIF37YSyjULPzC/lo40katKwJyUwMbB/Cr/EGPr1rUPHDtf2C/ccZeUNLCnUBL687TUHhObTKwkg22b6AL+Tl56GyvPHybomvVwCGrD/jRTAZnuvI8FyHtzatcZCeUz4DqbPQWlNgLCA7/9rI5UzqGa7mXi3+vjtxN0kZSRQYCyg0FpZqxIvmt8elXVtgfWvcVq4Pvh4w2d3Ppp5FKYWXhxdeHl74ePrQwLsBXsqLnOwcrly+gr6kWb16NXfeeSc7v9xZHAUaERjBwNYDuZSRy+lLmcWdBgAPD0XbJg1pGuBLeGA4c1bHkJvviYdPAzwwOdxVGUeCr1fd79k7gsFgoEvnLhw6dIioAwcxBkVg1NfWUT69N4EmzcoHQAI0DfClaYBvue0NvBvwwA0P8MAND9CqcSt2xO/g9dte57eE3/h498ecTDlZKtAwwCfAZGrzNflLHCEvL4+kpCRen/w6y/Yn8b8zKejCAILMv+dydjqtQwotyu0MHB0RpGqtDSW+X9FaB5UpMx4YrrX+nfn7g8AtWuunzSOCR4B0YA/wgiXTkrneVGAqQERERK+zZ89WWW5nMWDAALKyski58y2r8+jPzLYv4Kg2oLUmNjWWzWc3s/XsVrbGbeVEygnA1DO6Oexm+ob35dZWt5JypTV/emMuF1d/im9YR0LG/Rkv/8ZWg8ss+Se01sUpEK7mXi2eqrf17FbOZ5xnQhfTmrx/2/Y3os5HlQsKSstJK/Y7dGraiSPTTH2MAV8MwNvDmw0PbwDgps9u4nLW5eKIzpI28iLzSoemHRjZbiQAR5KPEOwfTIuAFlavVVpaGk899RTfffcdgwYN4ttvv6Vly4q1f2XO35I+GUtUZxrq2s5XX33FQw89RIP2fWk6+iVUCdOXI2morf1HV7KvsCthFzvid7AjYQe7EnYVz2xrG9SWAREDGNh6IIMiB9HG0MZmc9I///lPnn/+eQ4fPswTy8+7LK12lU1DSql1gKUn4VXgSxsUwQRgWBlFcLPW+hmlVHPgEiZF/jbQUmv9WGU/pjb4CFJSUggJCeGVV15hQ8PBdT4femxqLBvObGBT7CY2xW4iPj0egCC/IPpH9Gdg64EMiBjAjS1vLGXX7zd7AwmpmWQc30DK5o/wbBpMs8Fv42sII0cdJ8/jJI0KR6KATu3+R4NGh0vnWTFPOywyK/l5+ZH9qulaPrz0Ybac3cKZ584AMPmHyew7t49Av0CC/IJMDbqvoVS4fmijUMZ2Glv8m3w9fWnZyHrDXPTAJ6Zm46kUhVoTZqOPZ9euXdx3333Ex8fzxhtv8PLLL5dbg6IqWHMoAzbL5k40uWMqKes/I+CGoQQPf6a48a1qR8we/1p+YT77z+9na5ypw7QtbhuXsi4BplHgoMhBDI4czKDIQUQaIi2ez2g00qlTJ4KDg9m5c6fVjoAzOpZVNg1pre+o4KAXlFIttdbnlFItgYsWiiUA4SW+twKSzMcuNlQopT4DVlQmT21h9erVGI1GRo0aRS/f8DqX/fB8xnk2nNnAhjMbWH96PbFpsYApnH1w5GBe6vcSrRq34mTKSX7f+/cE+ATww5EfmLVtVqneeHzOJYx+WdBdQ3co5CLnP55Bs6GvkhO5nzTv7wjIHgZ48lvcMRo0Pki4wZSo7Prg600NeglnZ6BfIFprlu1P4sjRuylIu5N+szcwY1gHFo1fZNdvtPbgFVH2gS80d4oqC77Lz8/n7bff5q9//Svh4eFs3bqVW28tn2OqqlibjiujAMt0vGMyh7PSSdv5PR7+jQka9AhQ9SA9e2JwvD29uSnM5FSefut0tNYcST5i6lCd3cSqE6tYeMDkc4o0RHJ75O0MvW4oQ9oOKc4btHbtWo4fP84333xTLLczItntwVEfwXLgYWC2+X2ZhTK7gXZKqTZAIjAZmAJQpETM5e4FDjkoT7WxcuVKmjZtyk033VTcC6ypWUNFofZFves2QW1o1rAZcWlxLDq0iPu63keTBk346LeP+Pfef3Mh80K5fDtFpOak8mLfF+kb3peFBxby4toXGdNxDAHBAaRkp3Am9QwGPwOtDa25wfcG1mZkkJ3jiwcNULoh+moO6SznwnevYhj+CK26fUPRsheNch8iLP/3bH+84lHStQbaH0/8nZqLqCSWHvgirD34R44c4cEHH2Tfvn089NBD/Otf/yIw0DH7cFlqWzbN2s6MYR2YmfEwhdnppP/2Ax7+jWjRf2KVO2LWYgoSU7NpM3Nlhf+HUoouzbrQpVkXpt08DaM2FiuGjbEbWXJsCfP3z0ehuLHljQy9bigbF2ykWctmjB8/vvj3VHfH0lEfQRNgMRABxAETtNYpSqlQTNNER5rLjQT+gWn66Hyt9bvm7V8BPTCZhmKB35dQDFapadNQYWEhzZs3Z+TIkSxcuNChYxVNOyxp9w5rFEaboDZcyb7CJ7s/4a72d9G9RXcOXTzE9NXTy9nI8wrzSh1z4ZiFPHDDAyw8sJBHlj1CzxY9OZJ8hNzCXBSq2IRyXdB1tAlqU5w5s6hn3j+iP00aNCE7P5u8wjwa+za2auu0NIz2KcgifsnfyDmzl4AewwkeMhXlZYqxsGV4W11LD1Zmiy8pa35+Pu+//z5vvvkmjRo1Yt68edx7771VPnd9WWy9trA0KpH3fjnCga/eJuvYVv7w5/f4+K0ZVTpWRaa5Iqo6Qis0FrL33F7WnFrDmlNr2Bm/kwJdgLf2Zmj7oQy9zvQ6GhfA+2uOO/3+cMmsIa31ZWCIhe1JwMgS31cB5eIDtNYPOnL+miIqKorLly8zfPhwCo2FpOWmFffG03LTaOLfhG7Nu1FoLOSdLe/QL6Ifd7S9g4uZF5n8w+RyYfpFU9SKeHPQm7x+2+tkF2Tz2sbXaNawGd1bdMdDeXA17ypBfkFEGiLLmVX8vP2IvRLLmlNreHXDq8V2/tyCXKbdNI2h1w1lYOuB+HvbNsT09/avtGzRzfnG8sOkZpvs/A0bB9Lhobc58+t80n/7gdyk44TcMwPvJuE2DW+ra1Uua0PwkvsB9uzZw+9+9zsOHDjAhAkT+L//+78qrelchCuzr7orRZHfeS/exujRo5n7zksM6hbJhAkT7D6WpR55WaqalsLTw5Obw27m5rCbeW3ga0ybPo1///pv7n/zfraf387KEysBCG8cztDOQ5l+/QjuaNvf4VlJleH2kcV5hXnlZqA08G5Av4h+AMzZPodWjVtxX7f70Foz+MvBHI8/zrkr5whoGkBGfvlc7A93f5gFYxagtcb/XX/+1O9PvDX4LdJy0hj17ahy0Zxlg4LaN2lPa0NrjNpIfmE+vl7Wp4zFpsay8vhKVpxYwcYzG8ktzCXAJ4A7297JyHYjGX79cFo1buWUa2UNS6MCbw8FCtJifuPyqn+gC3JpPvQpPnnrBe69sWJ5qmtEYEnuIvy9PXllSCt+++HfzJ07lxYtWvDJJ58wevRoi8exp3dfnxZbr41kZWUxdOhQ/ve//7F8+XKGDx9u9zGWRiXywuIDxX4jSyjgw0k9qjyyy8zMJCwsjOHDh7Nokcn/debKGdaeXsuaU2tYd3odablpeHl4MSBiAHe1v4u72t9VnBW1KrgkoKymcEQRjF88nsPJh8tNOyzJwNYD2fzIZgC6ftKVm8Ju4ovRXwBw93d3s+d/e8i8nMnjUx4vtbhEUWMeERjBdcHXAaahoDOjOQuNheyI38HPx39m5YmVHEk2TZW8Pvh67mp3F6Paj2JAxIAKlYezsdawGfy9aejrRVx8AldX/5O0U/sYPnw4c+fOrXBxcmdGRVeGpVlDoY196Jmzn8Vz3yMlJYWnnnqKd955B4PB4BRZXTkrRDCRmprK4MGDiYmJ4ZdffuG2226z+xiVmQ6tLcFq6336ySefMG3aNLZt20a/fv3K7S8wFrAzficrT6xk5YmVHLpocqH+MOEHxnWuWm4zUQRm/rDyD1zKulSu8S5aYCLIP4jmDZvTrkk7wGTDL2kfNxqNNG3alLFjx/L555875fdURlZ+FmtOrWFZzDJWHF/BpaxLeHl4cVvr2xjVbhSj2o9yqJfgKLY0bEajkY8++ohXXnkFrTXvvPMOzzzzDF5elq2TNWFD11rz888/88orr3D48GH69+/PRx99RPfu3a3WqUrvXkYE1cPFixe57bbbSEhIYM2aNXbP7KrIV+Dv7YmftwdXssoHSdryP2ZmZtKuXTsiIyPZvn27TfEGZ1PPsvLESiZ1mUSTBuWjym3BVZHFdY5PRn1iV/myf9ChQ4e4cuUKAwcOdKZY5UjLSWPliZUsObqEX07+QlZ+FgY/A6PajeKeDvcw/PrhNPZt7FIZbMWW6W4eHh48++yzjBkzhj/84Q9Mnz6defPmMWvWLEaPHl3uOldnOm+tTdHAb7/9Njt27KBdu3YsXryY8ePHV/qAVsWfUd8WW6+tNGvWjPXr1zNw4EBGjBjBhg0buPHGG22ub81XENTAm7/c3YU/fr/fYj1L/33Zjk1k/GrOnTvH4sWLbQ46a21oXWrBG2dSfSsf1BO2bNkC4BJFkJyZzH/2/YdR346i2fvNuH/J/eyI38Ej3R9h7YNrufjiRb4e+zUTu0ysNUoATA+Mv3dp85e1hi0iIoKff/6ZpUuXorXm3nvvZcCAAaxevZrqHp3m5+ezaNEievbsyYgRIzh79iyffvophw8fZsKECTY9oNac3xU5xcf0DGPW2G6EGfxRmHqQEiPgGkJDQ1m/fj2BgYHceeedREVF2VzX0v/0j0k9iHp9aPE6HJbQmEYTS6MSgWvmw8TUbDQQl3SeRZ//HzcPGlaclbamcTvTkKNMnDiR3377DWeluEjOTGbJ0SUsPrKYTbGbMGojkYZIxnUax9hOY+nTqk+FyyjWFqpiyikoKOA///kPb775JufOnaNr165Mnz6dyZMn4+/vuuCZU6dO8Z///IcvvviC8+fP06FDB1566SXuv/9+u1OJV6c/Q6g6p06d4vbbbyc9PZ21a9fSu3c564hNlLzPA/29ycwrIL/QchtadB8U+aCKSFn3KVf3raTH8/8h6oNHqiRHVREfgRPQWtOiRQuGDh3KV199VeXjXM66zE/HfuL7w9+z8cxGCnUh7Zu0Z0LnCYzrNI4eLXq4POVtbSI3N5fvvvuODz74gOjoaBo1asS9997LlClTGDx4sFPWeTh+/Dg//fQTS5cuZdeuXXh4eDBq1CieeOIJRo0a5dCygBITUDeIjY1l8ODBpKSksHr1avr06WNXfWuz4wL8vCz6CsA0ikgyjwQA8q8kkfT5UwR0u5Omw5+u9skBogicQExMDB07dmTevHk88cQTdtXNyMtg6bGlfHfoO9acWkOBsYDrg69nUpdJTOwykW7NurlV428JrTUbN27km2++4ccffyQtLQ1/f3/69evHoEGD6NWrF+3bt6d169ZWc/porTl37hynTp3iwIEDbN++nR07dhAXZ8oq2qtXL8aNG8dDDz1U4aImQv0kLi6O22+/nQsXLrBs2TJuv91253xFTv6SjX1JFNd8aFobubj4L+QmHiF06me0bhVW7ZMDRBE4gaKFI2JiYmjfvvJZOnmFeaw5tYZvor9h2bFlZBdkExEYweQuk5nUdRI9W/R0+8bfGrm5uaxevZr169ezadMmDh48WLzP19eX5s2b06hRIxo1agSYZmFkZGRw4cIFsrKupc8ICwujX79+DBw4kHvuuYfw8PBy5xLci8TERIYPH05MTAwLFy60eX3gimbHVbRud5HT+fy2xaRu+oLgoX+g2c1314j5UGYNOYHNmzfTvHlz2rVrZ7WM1prt8dv55uA3LD6ymJTsFJr4N+GRHo8wpdsU+ob3rRM2/5rG19eXe+65h3vuuQcwrf1w5MgRjh8/TkxMDBcvXuTq1atcvXqVi+k5JBoDyW3QlMCeN3J//56MG9ybTp06ER4eLspWKEXRymajR4/mvvvuIykpienTp1dar6LZcRXNBBvTM4zjh6KY+deFNGjflw6DxvKn4R1rlflQFIGNaK3ZvHkzAwcOtNiwnLlyhi8PfMnCAws5k3qGBt4NGNNxDFO6TmHodUPrzZKMNUWTJk0YMGAAlwPasj25DUke2YR2NK2N/OPeRBrlF9LIXHartycjm3UlIqL2PGhC7cJgMLB69WoefPBBXnjhBY4cOcJHH32En5+f1TqVNfZgOVFgeno6n77xHOGtwti/awVBQUHWTlFjiCKwkbNnz5KQkFAqQjErP4slR5cwP2o+G2M3olAMaTuENwa9wdhOYwnwCahBiesflnL0fLMrrtxwvap5YGoacTpXL35+fixatIi//OUvvPvuu+zfv58ff/yR1q1bWyxfWVZYS7EvOTk5TJkyhbNnz7J58+ZaqQRAFIHN7Nq1C4Bbb72V3xJ+Y37UfBYdXkR6bjptg9ryzuB3eKj7Q4QH1j0bdG1sgCzJZClttDUPl7MT1LkaSURXM3h6evLOO+9w00038dBDD9GrVy/+/e9/M27cOIsjf3sCHTMzMxk9ejTr169n7ty5FtNI1BZEEdjIpj2b8Bzgyf077ufY5WM08G7AhM4TeLTHowxoPaDO2v1rYwNkTaaKskGWxZWLeIDzlac9i6EIzmf06NHs2bOHyZMnM2HCBMaMGcPHH39MaGholY6XlpbGqFGj2LlzJwsWLODhhx92ssTORRRBBeQX5rPqxCrm75/P8obLYQgE+Qfx2d2f1bro3qpSGxsgazIVJYUri6L0yKCydA2ONuKvLY0uZZJyhvKsrtTbgnXatWvHb7/9xocffsjrr79O586dmTFjBtOmTbOYcNAaK1eu5Pnnnyc2NpZFixZVKRV2dVM3u7Eu5sTlE7y09iVafdiKMd+P4X+J/8N7tzf3X7mfHY/v4Hc3/q5eKAGonQ2QtXMXam0xlcX9fSJsTtdQNty/qBEvSgdQGUujEiv0S1SVqqSqEJyPl5cXM2bMIDo6mv79+/Paa68RERHBSy+9xKFDh6ymQdFaExUVxahRo7jrrrvw8PBgzZo1dUIJgIwIiskrzGPZsWV8uvdT1p9Zj6fy5K72d/G7G39HeG44PV7swdDJQ2taTKdTE+ujVkZlc7Jt7c3b6mewZwQ0Z3WMS/wSzkpEVxv9PbUdy9fselasWMH+/fv529/+xvvvv897771HixYtGDJkCK1bt8bHxwcvLy+io6PZuHEjFy9epFGjRrz//vs888wzTomIry4cUgRKqWDgeyAS01KTE7XWVyyUmw/cBVzUWne1t74rOZt6ls/2fcbn+z7nQuYFIgIjeHvw2zzW8zFCG5nsgwsWLADgpptuqk7RqoXamAnTkkwKGNwxxGZnnb1+Blsb8YrKOaI8nbFOcW3099R2KrtmPXr04LvvvmPOnDmsWbOGdevWsX79ei5dukRBQQFgSmw3dOhQbr/9du666y5CQkJq7PdUFUfXLH4PSNFaz1ZKzQSCtNYvWSg3EMgAFpZRBDbVL4ujkcVGbWTd6XV8vPtjVhxfAcDIdiN5steTDL9+eLmFZJ5++mm+/PJLUlNTraY2qMvUxl5kWTs82JfMzVo6AGt+BlvXArB23KLVqmryusk6B/bjyDUzGo3k5+fj4+NTZ4IWXRVZPBoYZP78JbAJKNeQa623KKUiq1rfWVzJvsKC/QuYu2cuJ1JOENIghJn9ZvL73r8nIjDCar3du3fTq1eveqkEoHpz/9vKxmPJDsUHVOZnqOoIyNpo5f4+ETV+DWujv6e248g18/DwwNe3+lYCdCWOKoLmWutzAFrrc0qpZtVc3y6e/fVZvj74NX3D+/KX2/7C+M7jK13SMS8vj/379/Pss8+6UjShDI42as7yM5TFFhNOTY2waqO/p7Yj18xEpYpAKbUOaGFh16vOF6dCOaYCU8G0uElVeHXAq0zvM52eLXvaXCc6Opq8vLx66R+ozVT1AS25BrG1aaX2joAsNezWzAY1aaevjf6e2o5cMxOVKgKt9R3W9imlLiilWpp78y2Bi3ae3+b6Wut5wDww+QjsPA8AHZt2tLtOkS9CFEH1UpUHtGwjrLkWYxBWxZ65vQ17TcZlOMPh7G7INTPhqGloOfAwMNv8vqya67uc3bt306RJEyIjI2taFLeiKg+otRQUjjhL7W3Ya9pOXxv9PbWZ2jhRoiZwVBHMBhYrpR4H4oAJAEqpUOBzrfVI8/fvMDmFmyqlEoC/aK3/Y61+bWL37t307t27zswKqE/Y26hVpRGurCGw95hic647yHTbazikCLTWl4EhFrYnASNLfL/Pnvq1haysLA4fPlycE1+o3djbCNvSENh7TLE51x0qG+2502hBUkxUwP79+yksLBT/QB1hxrAOFlNQWGuEK2oIqnrMMT3DmDW2m80pL4Sao6LRnqOpSOoakmKiAg4cOABAjx49alYQwSbs9SvYYvapiq9C7PR1g4pGe7UxGaMrEUVQAdHR0QQGBso6t3UIexphW80+0rDXTyoy4/3x+/0W69TX4DwxDVXAwYMH6datmziK6yn2mn2E+kVFZjx3ywYrIwIraK05dOgQU6ZMqWlRBBchc8gFa6M9d3P6iyKwQnx8PGlpaXTr1q2mRRFciJh9BEu4WydBFIEVoqNN0whFEQiCe+JOnQTxEVhBFIEgCO6CjAisEB0dTUREBIGBgTUtilAJ7hT4IwiuQBSBFYpmDAm1G0kTIAiOI6YhC+Tl5XHs2DFRBHUAW6KDBUGoGFEEFoiJiaGgoEAUQR2gprN9CkJ9QBSBBcRRXHdwt8AfQXAFoggsEB0djbe3Nx061M/gkfqERAcLguOIs9gCBw8epGPHjvj4+NS0KEIluFvgjyC4AlEEFoiOjmbAgAE1LYZgI+4U+CMIrkBMQ2VITU0lPj5e/AOCILgNMiIow6FDhwBxFAuCYJ36FsTo0IhAKRWslFqrlDphfg+yUm6+UuqiUupQme1vKKUSlVL7za+RlupXJ4cPHwaga9euNSyJIAi1kfq4epmjpqGZwHqtdTtgvfm7JRYAw63s+1Br3cP8WuWgPA4TExODv7+/LEYjCIJF6mMQo6OKYDTwpfnzl8AYS4W01luAFAfPVS3ExMTQvn17PDzEfSIIQnnqYxCjo61dc631OQDze7MqHONppdRBs/nIomkJQCk1VSm1Rym1Jzk5uaryVsqxY8ckfkAQBKvUxyDGShWBUmqdUuqQhddoJ5x/LnAd0AM4B/zdWkGt9TytdW+tde+QkBAnnLo8ubm5xMbGiiIQBMEq9TGIsdJZQ1rrO6ztU0pdUEq11FqfU0q1BC7ac3Kt9YUSx/oMWGFPfWdz8uRJjEajKAJBEKxSH4MYHZ0+uhx4GJhtfl9mT+UiJWL+ei9wqKLyriYmxuTsEUUgCEJF1LcgRkd9BLOBO5VSJ4A7zd9RSoUqpYpnACmlvgN2Ah2UUglKqcfNu95TSkUrpQ4Cg4E/OiiPQ4giEATBHXFoRKC1vgwMsbA9CRhZ4vt9Vuo/6Mj5nU1MTAyhoaE0atSopkURBEGoNmSOZAliYmJkNCAIgtshisCM1loUgSAIbonkGjJz6dIlrly5QocOHepdHhFBEISKEEVgpshRfNmrCZ/KYuiCILgRYhoyU6QIVsWpepdHRBAEoSJEEWDKJvj6l2vA05tLNLZYpi7nEREEQagIt1cERSllr5yLxTuoJcrD02K5upxHRBAEoSLcXhEUpZTNT0nEO7iVxTJ1PY+IIAhCRbi9IkhKzUYXFlCQeh6vJqUVgQLCDP7MGttNHMWCINRb3H7WUKjBn9hTJ8BYiHfwtcY+zODP9pm316BkgiAI1YPbjwhmDOuASjflvSsyDYkpSBAEd8LtFcGYnmHcEWqaLuodHCamIEEQ3A63Nw0BNMi9TFBQEHH/mFTTogiCIFQ7bj8iADh9+jTXXXddTYshCIJQI8iIAJMi6Nmzp+QYEgTBLXH7EUFhYSGxsbEUNAzh5SXRJKZmo7mWY2hpVGJNiygIguBS3F4RJCYmkp+fz4FUX8kxJAiCW+KQIlBKBSul1iqlTpjfgyyUCVdKbVRKHVVKHVZKPWdPfVdz+vRpADJ8gi3ulxxDgiDUdxwdEcwE1mut2wHrzd/LUgC8oLXuBPQBpimlOttR32UsjUrkdx+tBMAnqKXFMpJjSBCE+o6jimA08KX585fAmLIFtNbntNb7zJ+vAkeBMFvru4qiZHPJSfGgPFCNmpYrI4FlgiC4A44qguZa63NgavCBZhUVVkpFAj2B3+ytr5SaqpTao5Tak5yc7KDY15LNFaSexyuwWbmsoxJYJgiCu1Dp9FGl1DqghYVdr9pzIqVUAPAj8LzWOt2eugBa63nAPIDevXtre+uXpcj2b1IEpX+e5BkSBMGdqFQRaK3vsLZPKXVBKdVSa31OKdUSuGilnDcmJfCN1npJiV021XcFoQZ/ElOzKUg7T4N2t5baJw5iQRDcCUdNQ8uBh82fHwaWlS2glFLAf4CjWusP7K3vKmYM64DOzcKYlYaXofSIQBzEgiC4E44qgtnAnUqpE8Cd5u8opUKVUqvMZfoBDwK3K6X2m18jK6pfHYzpGcbQCAVQShGIg1gQBHfDoRQTWuvLwBAL25OAkebP2zCt8WJz/epiZKQnnwOh4a1JB0krIQiCW+LWuYaKgsk2vTWJoKBqj2UTBEGoFbh1ionTp09jMBhECQiC4Na4vSJo27ZtTYshCIJQo7i9IpB1CARBcHfcVhEUpZ+WEYEgCO6O2yqCpKQk8vLyRBEIguD2uK0iKJoxJIpAEAR3RxSBKAJBENwct1YEHh4ehIeH17QogiAINYrbKoK4uDjCwsLw9vauaVEEQRBqFLdWBBERETUthiAIQo0jikAQBMHNcUtFYDQaiY+PF0UgCIKAmyqCCxcukJ+fL4pAEAQBN1UEcXFxAKIIBEEQEEVQw5IIgiDUPKIIBEEQ3ByHFIFSKlgptVYpdcL8Xi6xv1IqXCm1USl1VCl1WCn1XIl9byilEi0sYelS4uLiaNSoEYGBgdVxOkEQhFqNoyOCmcB6rXU7YL35e1kKgBe01p2APsA0pVTnEvs/1Fr3ML9WWajvdIqmjiplcQVNQRAEt8JRRTAa+NL8+UtgTNkCWutzWut95s9XgaNAjS4KLDEEgiAI13BUETTXWp8DU4MPNKuosFIqEugJ/FZi89NKqYNKqfmWTEsl6k5VSu1RSu1JTk52SGiJIRAEQbhGpYpAKbVOKXXIwmu0PSdSSgUAPwLPa63TzZvnAtcBPYBzwN+t1ddaz9Na99Za9w4JCbHn1KXIzs4mOTlZFIEgCIIZr8oKaK3vsLZPKXVBKdVSa31OKdUSuGilnDcmJfCN1npJiWNfKFHmM2CFPcJXhfj4eEBmDAmCIBThqGloOfCw+fPDwLKyBZTJI/sf4KjW+oMy+1qW+HovcMhBeSpFpo4KgiCUxlFFMBu4Uyl1ArjT/B2lVKhSqmgGUD/gQeB2C9NE31NKRSulDgKDgT86KE+liCIQBEEoTaWmoYrQWl8GhljYngSMNH/eBlicp6m1ftCR81eFuLg4lFKEhdXoxCVBEIRag9tFFsfFxREaGioL0giCIJhxS0UgZiFBEIRriCIQBEFwc9xKEWitRREIgiCUwa0UQXJyMrm5uaIIBEEQSuBWikCmjgqCIJRHFIEgCIKbI4pAEATBzXE7RdCwYUOCgqwmORUEQXA7HIosrmsMGDCAxo0by4I0giAIJVBa65qWwW569+6t9+zZU9NiCIIg1CmUUnu11r3LbnebEcHSqETmrI4hKTWbUIM/M4Z1YExPyTckCILgFopgaVQiLy+JJju/EIDE1GxeXhINIMpAEAS3xy2cxXNWxxQrgSKy8wuZszqmhiQSBEGoPbiFIkhKzbZruyAIgjvhFoog1OBv13ZBEAR3wi0UwYxhHfD39iy1zd/bkxnDOtSQRIIgCLUHhxSBUipYKbVWKXXC/F4uUksp5aeU+p9S6oBS6rBS6k176juDMT3DmDW2G2EGfxQQZvBn1thu4igWBEHAwTgCpdR7QIrWerZSaiYQpLV+qUwZBTTUWmcopbyBbcBzWutdttS3hMQRCIIg2I+1OAJHTUOjgS/Nn78ExpQtoE1kmL96m19F2qfS+oIgCIJrcVQRNNdanwMwvzezVEgp5amU2g9cBNZqrX+zp775GFOVUnuUUnuSk5MdFFsQBEEootKAMqXUOqCFhV2v2noSrXUh0EMpZQB+Ukp11VofsllK0zHmAfPAZBqyp64gCIJgnUoVgdb6Dmv7lFIXlFIttdbnlFItMfX4KzpWqlJqEzAcOATYVV8QBEFwPo6ahpYDD5s/PwwsK1tAKRViHgmglPIH7gCO2VpfEARBcC2OzhpqAiwGIoA4YILWOkUpFQp8rrUeqZS6AZMj2BOT4lmstX6rovo2nDcZOFtFsZsCl6pY15WIXPYhctmHyGUftVUucEy21lrrkLIb62QaakdQSu2xNH2qphG57EPksg+Ryz5qq1zgGtncIrJYEARBsI4oAkEQBDfHHRXBvJoWwAoil32IXPYhctlHbZULXCCb2/kIBEEQhNK444hAEARBKIEoAkEQBDenXioCpdQEc8pro1LK6jQrpdRwpVSMUuqkOftp0XaXpMe2MW13B6XU/hKvdKXU8+Z9byilEkvsG1ldcpnLxSqlos3n3mNvfVfIpZQKV0ptVEodNf/nz5XY59TrZe1+KbFfKaX+Zd5/UCl1o611XSzX/WZ5DiqldiilupfYZ/E/rSa5Biml0kr8P6/bWtfFcs0oIdMhpVShUirYvM8l10spNV8pdVEpZTH1jsvvLa11vXsBnYAOwCagt5UynsApoC3gAxwAOpv3vQfMNH+eCfzNSXLZdVyzjOcxBYEAvAG86ILrZZNcQCzQ1NHf5Uy5gJbAjebPjYDjJf5Hp12viu6XEmVGAr8ACugD/GZrXRfL1RdTineAEUVyVfSfVpNcg4AVVanrSrnKlL8b2FAN12sgcCNwyMp+l95b9XJEoLU+qrWubGX6m4GTWuvTWus8YBGmtNjguvTY9h53CHBKa13VKGpbcfT31tj10lqf01rvM3++ChwFXLHiUEX3S0l5F2oTuwCDMuXQsqWuy+TSWu/QWl8xf90FtHLSuR2Sy0V1nX3s+4DvnHRuq2ittwAVZVVw6b1VLxWBjYQB8SW+J3CtAbE5Pbad2HvcyZS/CZ82Dw3nO8sEY4dcGlijlNqrlJpahfqukgsApVQk0BP4rcRmZ12viu6XysrYUteVcpXkcUw9yyKs/afVJdetyrR64S9KqS521nWlXCilGmBKkPljic2uul6V4dJ7q9Lso7UVVUF6bK21LcnrlIVtDs+lrUguO4/jA9wDvFxi81zgbUxyvg38HXisGuXqp7VOUko1A9YqpY6ZezJVxonXKwDTA/u81jrdvLnK18vSKSxsK3u/WCvjknutknOWL6jUYEyKoH+JzU7/T+2Qax8ms2eG2X+zFGhnY11XylXE3cB2XTr/mauuV2W49N6qs4pAV5Ae20YSgPAS31sBSebPVU6PXZFcyr603SOAfVrrCyWOXfxZKfUZsKI65dJaJ5nfLyqlfsI0LN1CDV8vZVoC9UfgG631khLHrvL1skBF90tlZXxsqOtKuVCm5I+fAyO01peLtlfwn7pcrhIKG631KqXUJ0qpprbUdaVcJSg3Infh9aoMl95b7mwa2g20U0q1Mfe+J2NKiw2uS49tz3HL2SbNjWER92Ja06Fa5FJKNVRKNSr6DAwtcf4au15KKQX8Bziqtf6gzD5nXq+K7peS8j5knuHRB0gzm7RsqesyuZRSEcAS4EGt9fES2yv6T6tDrhbm/w+l1M2Y2qPLttR1pVxmeQKB2yhxz7n4elWGa+8tZ3u/a8ML00OfAOQCF4DV5u2hwKoS5UZimmVyCpNJqWh7E2A9cML8HuwkuSwe14JcDTA9EIFl6n8FRAMHzX92y+qSC9OshAPm1+Hacr0wmTm0+ZrsN79GuuJ6WbpfgCeBJ82fFfCxeX80JWasWbvXnHSdKpPrc+BKieuzp7L/tJrketp83gOYnNh9a8P1Mn9/BFhUpp7LrhemTt85IB9T2/V4dd5bkmJCEATBzXFn05AgCIKAKAJBEAS3RxSBIAiCmyOKQBAEwc0RRSAIguDmiCIQBEFwc0QRCIIguDn/Dy+ZcTeQjw8TAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "p=2\n", "X = np.vstack([np.ones(len(x)),x,x**2]).T\n", "\n", "# degree-2 polynomial linear regression\n", "w2 = np.array(3)\n", "w2 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh2= np.matmul(X,w2)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(x, yh2, 'g')\n", "plt.plot(x, yh1, 'g-.')\n", "plt.plot(x, yh, 'g-.')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh2)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2]).T\n", "yh_= np.matmul(X_,w2)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "for p=3 degree polynomial, we use feature vector $(1,x,x^2,x^3)$" ] }, { "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": [ "# create a data matrix X\n", "p=3\n", "X = np.vstack([np.ones(len(x)),x,x**2,x**3]).T\n", "\n", "# degree-p polynomial linear regression\n", "w3 = np.array(p+1)\n", "w3 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh3= np.matmul(X,w3)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(x, yh3, 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh3)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2,x_**3]).T\n", "yh_= np.matmul(X_,w3)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "p=4\n", "X = np.vstack([np.ones(len(x)),x,x**2,x**3,x**4]).T\n", "\n", "# degree-p polynomial linear regression\n", "w4 = np.array(p+1)\n", "w4 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh4= np.matmul(X,w4)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(t, np.matmul(np.vstack([np.ones(len(t)),t,t**2,t**3,t**4]).T,w4), 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh4)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2,x_**3,x_**4]).T\n", "yh_= np.matmul(X_,w4)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "p=5\n", "X = np.vstack([np.ones(len(x)),x,x**2,x**3,x**4,x**5]).T\n", "\n", "# degree-p polynomial linear regression\n", "w5 = np.array(p+1)\n", "w5 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh5= np.matmul(X,w5)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(t, np.matmul(np.vstack([np.ones(len(t)),t,t**2,t**3,t**4,t**5]).T,w5), 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh5)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2,x_**3,x_**4,x_**5]).T\n", "yh_= np.matmul(X_,w5)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "p=10\n", "X = np.vstack([np.ones(len(x)),x,x**2,x**3,x**4,x**5,x**6,x**7,x**8,x**9,x**10]).T\n", "\n", "# degree-p polynomial linear regression\n", "w10 = np.array(p+1)\n", "w10 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh10= np.matmul(X,w10)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(t, np.matmul(np.vstack([np.ones(len(t)),t,t**2,t**3,t**4,t**5,t**6,t**7,t**8,t**9,t**10]).T,w10), 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh10)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2,x_**3,x_**4,x_**5,x_**6,x_**7,x_**8,x_**9,x_**10]).T\n", "yh_= np.matmul(X_,w10)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "p=15\n", "X = np.vstack([np.ones(len(x)),x,x**2,x**3,x**4,x**5,x**6,x**7,x**8,x**9,x**10,x**11,x**12,x**13,x**14,x**15]).T\n", "\n", "# degree-p polynomial linear regression\n", "w15 = np.array(p+1)\n", "w15 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh15= np.matmul(X,w15)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(t, np.matmul(np.vstack([np.ones(len(t)),t,t**2,t**3,t**4,t**5,t**6,t**7,t**8,t**9,t**10,t**11,t**12,t**13,t**14,t**15]).T,w15), 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh15)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2,x_**3,x_**4,x_**5,x_**6,x_**7,x_**8,x_**9,x_**10,x_**11,x_**12,x_**13,x_**14,x_**15]).T\n", "yh_= np.matmul(X_,w15)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "p=20\n", "X = np.vstack([np.ones(len(x)),x,x**2,x**3,x**4,x**5,x**6,x**7,x**8,x**9,x**10,x**11,x**12,x**13,x**14,x**15,x**16,x**17,x**18,x**19,x**20]).T\n", "\n", "# degree-p polynomial linear regression\n", "w20 = np.array(p+1)\n", "w20 = np.matmul(np.matmul(np.linalg.inv(np.matmul(X.T,X)),X.T),y)\n", "yh20= np.matmul(X,w20)\n", "\n", "plt.plot(x,y,'o')\n", "plt.plot(t,y0,'k-')\n", "plt.plot(t, np.matmul(np.vstack([np.ones(len(t)),t,t**2,t**3,t**4,t**5,t**6,t**7,t**8,t**9,t**10,t**11,t**12,t**13,t**14,t**15,t**16,t**17,t**18,t**19,t**20]).T,w20), 'g')\n", "plt.show()\n", "\n", "MSE_train = (1/float(n))*np.sum((y - yh20)**2)\n", "\n", "# MSE on fresh data not used in training\n", "X_ = np.vstack([np.ones(len(x_)),x_,x_**2,x_**3,x_**4,x_**5,x_**6,x_**7,x_**8,x_**9,x_**10,x_**11,x_**12,x_**13,x_**14,x_**15,x_**16,x_**17,x_**18,x_**19,x_**20]).T\n", "yh_= np.matmul(X_,w20)\n", "MSE_test = (1/float(n_))*np.sum((y_ - yh_)**2) \n", "MSE = np.append(MSE,[[p,MSE_train,MSE_test]],axis=0) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "feature engineering requires domain knowledge about what are good features for the application\n", "\n" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.plot(MSE.T[0],MSE.T[1],'o-',label='train error')\n", "plt.plot(MSE.T[0],MSE.T[2],'o-',label='test error')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- the **training error** always decrease as we increase the complexity of the model (which in this example is increasing the degree of the polynomial)\n", "- on the other hand, the **test error** that we compute, which is the average error over fresh drawn samples, has a sweet spot where the test error is minimum\n", "- this corresponds usually to the true complexity of the model, which in this case is degree-5 polynomial\n", "-although we did not know (just frmo the samples) that the ground truth is a degree-5 polynomial, we could use the test error to guess the degree of the model we need to use to fit this data (and this process is known as hyper parameter tuning using test error)\n", "- we will learn much more about it in next couple of weeks" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.11.0" } }, "nbformat": 4, "nbformat_minor": 2 }