{ "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": 2, "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": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.],\n", " [1.]])" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "X = np.vstack([np.ones(len(x))]).T\n", "display(X)" ] }, { "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": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAD8CAYAAABzTgP2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xl4U2Xa+PHv3QVoWVoKCC07gkVAZamIsgiIIiBQcQEdFZUBnUFHxxFFwZ/gCjKv+A7jq6KD4uio7BRQOiCgqIAUQQpIWcralrWUtUCX5/dHU0xL0iTN2ub+XFevJuec5NxJTnKfZz1ijEEppZQqFuLvAJRSSgUWTQxKKaVK0MSglFKqBE0MSimlStDEoJRSqgRNDEoppUrQxKCUUqoETQxKKaVK0MSglFKqhDB/B1AedevWNc2aNfN3GEopVaFs2LDhmDGmnqPtKmRiaNasGSkpKf4OQymlKhQR2efMdlqVpJRSqgSPJAYRuV1E0kRkl4iMtbG+qoh8ZVm/TkSaWZY3E5FcEdlk+XvfE/EopZQqP7erkkQkFHgXuBU4CKwXkSRjzDarzUYAJ4wxLUVkGDAZGGpZt9sY097dOJRSSnmGJ0oMnYFdxph0Y8xF4EtgcKltBgMzLbfnALeIiHhg30oppTzME4mhIXDA6v5ByzKb2xhj8oGTQB3LuuYislFEvhOR7h6IRymllBs80SvJ1pl/6av/2NsmC2hijDkuIp2ABSLS1hhz6rKdiIwCRgE0adLEzZArtgUbM5iSnEZmTi5x0RGM6RtPYofSuVgppcrHEyWGg0Bjq/uNgEx724hIGBAFZBtjLhhjjgMYYzYAu4GrbO3EGDPdGJNgjEmoV89hN9xKa8HGDF6Yl0pGTi4GyMjJ5YV5qSzYmOHv0JRSlYQnEsN6oJWINBeRKsAwIKnUNknAcMvtu4EVxhgjIvUsjdeISAugFZDugZgqrSnJaeTmFZRYlptXwJTkND9FpJSqbNyuSjLG5IvIE0AyEArMMMZsFZFXgBRjTBLwL+DfIrILyKYoeQD0AF4RkXygAHjcGJPtbkyVWWZOrkvLlXKHVlsGJ4+MfDbGfA18XWrZ/7O6fR64x8bj5gJzPRFDsIiLjiDDRhKIi47wQzSqMiuutiwuoRZXWwKaHCo5HflcwYzpG09EeGiJZRHhoYzpG++niJQ/LNiYQddJK2g+dgldJ63wShuTVlsGrwo5V1JlV1bxvfi/Fu+Dl6/O5LXaMnhpYggwznzpEzs01EQQxOydyf9t1q/89atNHjtZ0GrL4KVVSQFGi+/KEXtn7AXGeLQLs1ZbBi9NDAFGi+/KEWfO2D1xMpHYoSFvDrmGhtERCNAwOoI3h1yjpdUgoFVJAUaL78qRMX3jS1Q32uOJkwmttgxOWmIIMFp8V46UPpMPtTMfpasnE77o6aQqBi0xBBjtdaScYX0mX7rDArh+MqFjFpQ1TQwBSIvvyhXOnkyU1Q26rE4P5TkWdcR0xaaJQemXuBJwdDLhqETgbKcHZ46VBRszGDPnV/IKzKV9jZnz66V9qcCnbQxBTmdrDQ6OukHba4+wXu7ssTJx0dZLSaFYXoFh4qKtHnglyhc0MQQ5HTcRHByVCJzp9ODssXLiXJ7NfdlbrgKPJoYgp+MmgoOjEoEzYxb0WAke2sYQoAoLC7l48SLVqlXz6n503ERwsDX2oXSJwFE7hbPHSnREODm5l5cOoiPCyxO68gMtMQSQnTt38tZbbzFw4EDq1KlDREQENWrUoFmzZvTp04cPP/yQ7GzPXq5Cx00EB0+MYnb2WJkwqC3hISXHVoSHCBMGtS13/Mq3xJjSl2cOfAkJCSYlJcXfYXjM2bNnee211/j73/9Ofn4+8fHx9OjRg6ZNm3L8+HGOHz/O2rVr2bFjB+Hh4SQmJvL666/TqlUrj+xfeyUpZzl7rOgxFZhEZIMxJsHhdpoY/Gvp0qU89thj7N+/n0ceeYRXX32Vhg0v/wIZY/jll1/4/PPP+fDDD7lw4QLPPPMM48aNo2bNmn6IXCnlS+fPnyc/P58aNWqU+zmcTQxaleRHc+fO5Y477qBWrVqsXr2aGTNm2EwKACJCp06dePvtt9mxYwf3338/kydP5uqrr+aHH37wceRKKV/75ptvqFWrFps2bfL6vjQx+MmiRYsYNmwYN9xwA2vWrKFbt25Oz1UTGxvLJ598wpo1a4iIiKBnz55MnTqVilj6U56l8x1VXikpKYSGhhIf7/32P00MXlLWFzQ5OZm7776bDh068PXXX1OjRo1yDTTr0qULKSkpDBw4kGeeeYZhw4aRm6tdB4OVDlas3DZs2EDbtm2JiPB+j0FNDF5Q1hd0//793HPPPbRp04bk5GSioqKA8g80i4qKYt68eUyaNInZs2fTr18/Tp06VSIWPYP0nEB+P3WwYuVljGHDhg106tTJJ/vTcQxeYO8L+tbS7dRYORljDPPnz6d27dqX1rszeEhEeP7552natCkPPvggvXr1YunSpfx48KLOmOlBgT4DqQ5Aq7z279/PsWPHSEhw2G7sER5JDCJyO/C/QCjwkTFmUqn1VYFPgU7AcWCoMWavZd0LwAigAPiLMSbZEzH5k70v4o7vFnB82TLee+89mjVrVmKdJwaaDRs2jFq1anHXXXfRvXt3ag55ldzCyBLbuDNjZrDz9AyknlaeYyg/P58DBw6wZ88e9u7dy6lTp8jPzycvL4/q1asTGxtLbGwsLVu2pEGDBt4MX5Vhw4YNABWnxCAiocC7wK3AQWC9iCQZY7ZZbTYCOGGMaSkiw4DJwFARaQMMA9oCccByEbnKGFP2pakCnK0vaP6pI+SsmkHv3r0ZNWrUZY9xZmSqM/r3789///tf+vXrx8UPn6X+fW8SGhlVYhs9gyyfQD8jd+YYys/P57vvvuO7775j9erVrFu3zul2qSZNmtC5c2duvvlmhgwZQlxcnMdfg7Jtw4YNhIWFce211/pkf54oMXQGdhlj0gFE5EtgMGCdGAYDEyy35wD/FBGxLP/SGHMB2CMiuyzPt8YDcflN6S+oMYac5HcJDxX+9a9/ERJyedOOJy/Q0717dxYtWkSf227nyOyXqT/sdUKqVr+0Xqe7KJ9AmD6krIFjto6hXq3r8dbS7Tz+1qeQ/iPndvzE6ZwThISE0KFDB0aOHElBdGNWZQo5odE0rF+Pp29rzZ2dmnDmzBkyMzPJyspi27ZtrFu3jnXr1jFnzhz+8pe/0LVrV+677z4eeught/rWO3pd6veGZ29PkVPME4mhIXDA6v5B4AZ72xhj8kXkJFDHsnxtqcdW+KOh9Be0RnYa+9M38M4771xWhVT6cZ76MvTq1YsX/udDXv/roxyZM5Er7n2FkPBqOt2FG3q1rsdna/fbXO4LzrRxWB9DX/60k6df+wfZPy8k7/gBJLwaNVrdwPPjH2DcqKHUrFnz9+esU0AYcPgCvLI0nYjI6iR2aEjdunW59tpr6du376U4tm/fzuzZs5k1axajR49m/PjxPPbYYzz55JPlKkW403YTDAnFGENKSgqJiYk+26cneiXZuuBs6Q719rZx5rFFTyAySkRSRCTl6NGjLoboe4kdGvLj2N7smTSAersWExcXx2OPPebTGBK630LTIc9z4eBvHFv0d6Krhbg8P4763crtto87e8s9zdleR2fOnOGNN97gwT6dOPzNP5GwKtQZ8FcaPfkZMQPHsDqvxaXR8uXpydS6dWteeuklUlNTefPjBUhcOyZNmkzjps25e8RfOH36tFdeV2nB0j13//79HD9+3GftC+CZxHAQaGx1vxGQaW8bEQkDooBsJx8LgDFmujEmwRiTUK+eb87QPOH7779n1apVPPfccz4rBsLvXxquvInafUaRu3Mt+79+XwfBucHfbQyO9n/x4kX+8Y9/cOWVVzJu3DjC41pT/w9v0WD4O9Rodwsh4dUuex53XtOCjRnM3F2Vmnc8T9yo6URcdRNzZ0yjaYuWzJgxw+ljrbwxBEv3XF83PINnEsN6oJWINBeRKhQ1JieV2iYJGG65fTewwhQdNUnAMBGpKiLNgVbAzx6IKWC8+uqr1K9fn5EjR/p0v9ZfmlqdBlLz+kROrE/imf/3hk/jqEycucqZq1wZF1HW/r/99luuu+46nnrqKdq2bcuaNWvo8MdJVGvUhqLmPNvP485rsj7GwmvHUnfgszR48H/Ij6zLiBEj6Nu3LwcOHHD4Ossbg78Tta+kpKT4tOEZPJAYjDH5wBNAMvAbMMsYs1VEXhGRQZbN/gXUsTQuPwOMtTx2KzCLoobqpcDoit4jydpPP/3E8uXLGTNmDJGRkY4f4EGlvxy1ez1K5FU3sXfJ+8yfP9+nsVQWnp6i3NWqEFv7D79wElnxDn369OHixYssWrSIFStW0KVLF6fidec12foBrhoXT8ywybz//vv89NNPtGvXjr+88g5j5262+zrLG4M3EnUg2rBhA+3atfNpjYPOrupF/fr1IyUlhb1791K9enXHD/CgrpNWXNaDpjDvAidmj6fw+D5+/PFH2rdv79OYKgNPNnba+oyg6FoJP47tXeb+M06co+r+tWR+8y5553N58cUXbVZXOhNveV+To/jT09N55JFH+P7776ne7hZibvszIeFVbb7O8sRQutEaihJKZWpHM8YQFVOHiJZdiLxltNvHnE677Wfbt2/n6quv5vXXX+fFF1/0+f7tfWnGdL+Cl0cMRkRYv3499evX93lsqkjzsUts9rQQYM+kAXYfd+zYMf70pz8xZ84cbrjhBj755BNat27ttTjtceaHubCwkDo9HiTnx/9Qpf6V1E18gfDoooFyjl6nszFU5l5J05es5bE7biTmtj9Ts0N/wL3k52xi0CkxvOTjjz8mNDSURx991C/7L2tcRPuFC+nWrRt33nknK1eupGrVqg6eTXlDecZFfPfdd9x///0cO3aMN998k2effZawMP98jZ0ZexMSEkKbO0awM7YVxxf9nUMz/0q9IeOo1ridR6p8PNnFOxC9/cVSAKo0aHlpmS9G22ti8IL8/Hw+/fRTBgwY4NdpBOx9aTp27MjMmTO59957efzxx5kxY8ZlDZTK+1wZ7V5QUMBrr73GK6+8wpVXXsnixYvp0KGDL8O1yZkf5jF943nh7EXCY97hyJyJHP5qPHGDn2PM+D/7KMqKK2vHZggNp0q95iWWe7uBXRODFyxdupRDhw7R5uZBdJ20IiCLuffccw8vvfQSr776Kp06deKJJ57w6PNX9iK+Jzg72v3YsWPcd999LF++nAcffJB333034K/aV/rzv6tTQ1Zur0LoA1PIWfg6WfPfZF+PK6DDU/4ONaAVZm2jauxVSFh4ieXebmDXxOAFH3/8MVExdZl/rD7nC4sye6DNxAkwYcIENm7cyNNPP027du3o2bNnuZ/L+ocgKiKcsxfzySsoqkEPlNceCMnKVgz2GpoBfvnlF4YMGcKhQ4f46KOPGDFihA+jLR9bI5nnbsiw1Iv3JnfSYP7whz/w9NNPk52dzYQJE7TEasOZM2c4l7WL2l3uKbHcF7MX6PUYPOzo0aMkJSUR2aYn5wtLHuyBNvgmJCSEzz77jJYtW3LPPfewb9++cj1P6W6XObl5l5JCMX+/9kAYJetqDJ999hldu3alsLCQ1atXV4ikAI4HnkVERDB79mweffRRXnnlFcaPH68DL21Yu3YthQUFjL7vDhpGRyAU9eTyRa8rLTF42Oeff05+fj5yVU+b6wNt8E1UVBQLFy6kc+fODBkyhB9++MHlK0TZ+iGwxZ+v3dkps71ZqnA2hsLCQsaPH8+bb75Jz549mTVrFhVptL8zA89CQ0P58MMPCQ8P54033iAvL4/Jkyf7tOQQCCXIsnz//feEhITwtwcHMrFWLZ/uW0sMHmSMYcaMGXTu3Jlmra62uU0gDr6Jj4/ns88+45dffuHxxx93+ezN2R98f752Z36svFmqWLAxw2YPpNIxnDlzhrvuuos333yTUaNG8d///rdCJQVwfuBZSEgI7733HqNHj2bKlCk+7dYdCCVIR1avXk2HDh2o5eOkAJoYPGrr1q2kpqYyfPhwj4+S9baBAwcyceJEPv30U6ZNm+bSY535wff3a3fmx8pbc+9cmrfKQWyZmZncfPPNJCUl8b//+7+8//77hIeH231coHLl2BcRpk2bxuOPP86kSZOYPHmyT2K091n/bdavfrlsa+kpQ2avS2ft2rV0797dZzFY08TgQUlJRVNE3XnnnSR2aMibQ67xed2gO8aPH8+gQYN45pln+O6775x+nM2pGkKE2pHhAfPanfmx8tbcO2VVtQlF03anpqbSpUsX0tLSWLRoEX/5y18qbIOsq8e+iPDuu+9y//33M3bsWN5//32vx2jvMy0wxuclCFull2ffW8D58+f9lhh05LMHdenSBWMM69at83co5Xbq1Ck6d+5MdnY2KSkpNGnSxKnHBXp9LTiOsTxTVDjD3gjnYoUHNnM86U2ia9UMmPEJ/pCXl8eQIUNYsmQJX3zxBUOHDvXavux91qW5+9mXN5aTa+eQ890nHDlyhHr16nns+6Ujn33s0KFDrFu3jtdee83fobilVq1alxqj77zzTqcboyvCCFRHMXrq8qql2RvhDHBm60qOf/0OkVc0Ye3a72jcuLHN7YJBeHg4s2bNom/fvjz00EM0aNCAm2++2Sv7svVZ2+KLDhO29nHhwBbCYxpdSgrlvZBReWlVkocsXrwYgEGDBjnYMvDFx8fz+eefs3HjRkaNGhU0XQm9Vf1nqxrLGMPJdXM4vvh/qNqoLXWHTapwScGVKcOdFRERwYIFC2jRogWJiYls27bN8YPKofRnHWqn2s4XHSZK78MUFnA+4zdirrwO8M91J7TE4CFJSUk0a9aMdu3a+TsUj7jjjjt45ZVXeOmll+jQoQPPPPOMv0PyCW+UfKxHOGfk5GJMISe+/ZDTGxYReXUP6vb/K43q+r7niTu8eRYbExPDN998w4033ki/fv1Ys2ZNuS4Z6oj1Z2130kkfdJgoXXrJO7oPc+EswwbdBvjnuhNaYvCAc+fOsWzZMgYNGlRhGwxtefHFF7nrrrsYM2YMycnJfo3FG2envlR8qdcpd17NicV/5/SGRdS8PpG6A58lMqJawPZWs8fbZ7HNmjVjyZIlHD9+nMGDB3Pu3DmPPK89/uwsUnrf1Y4VvYd/fXAw4J/rTmiJwQOWL1/O+fPnK0U1krWQkBBmzpzJrl27GDp0KOvWrSM+3vc/YP6oY/WGU6dO8f6LIzm97Xua9nsMuXZgwDbUO+KLs9iOHTvyn//8h8TERB5++GG+/PJLQkJ+P5f1dIcHf7aTWe97wID/I+TKK2natCngvbavsmhi8ICkpCSioqLo0aOHv0PxuOrVq7Nw4UKuv/56Bg4cyLp166hdu7ZPY3B2xLAnLdiYwYSkreTk5gFQOzKclwe2Lff+Dh06RL9+/diyZQuffvopDz74oCfD9bnyTBleHoMGDWLy5Mk899xztGnThgkTJgCV52ShtHPnzrFixQpGjRp1aZmzky16kiYGNxUWFrJo0SL69etXIQcjOaNp06bMmzeP3r17c++99/L111/79LX6uo51wcYMxsz+lbzC3xvdT5zLY8ycX4GiL2pZZ6ul1z1wdRWm/PUhDh8+TFJSEv369fNK3L7ky7PYZ599lm3btjFx4kSuvvpqhg4d6vBkoSJ0n7Zl1apVnD9/nv79+5dY7uvSjCYGN23YsIEjR44wcOBAf4fiFkdfpG7dujF9+nQeeeQRRo8ezQcffOCz9hRfnZ0Wm5KcViIpFMsrMJfq0O2drZZel749lSdffZnIKiGsWLGCG264wSsx+5ovz2JFhPfff5+dO3fyyCOPEB8fX+bJQkUuTSxZsoTIyEivddN1liYGN61atQqA3r29OwjGm5z9Ij388MPs3LmTN954g1atWjFmzBibz+XpHwtbZ6fFI4a9oaySSGZOrsOG1+J1uXs2cnTBG4RUq0HLR6dUmqRQzFNnsc4cM1WrVmXu3Ll06tSJxMRErnhwKkfyqlz2XHHREX6pevQEYwxLlizhlltuueza3b6mvZLc9FXSUiLqNaHLOxu48oWvaVYBe8240sPk1VdfZejQoTz33HPMmTOnxDpvTUyW2KEhd3VqiHX5xABzN2R45X0uqyQSFx1R5tlq8bozW1dyZM4EwqLq0+CBKZwIr+vxOCsDV46Z+vXrs2DBAg4dOkTu0r9TLaRkqa64Kssf3Ts94bfffmPfvn0MGODedbA9QRODk2x1l5y7fh8bf15DaMO2QNE8KxCYMzWWxZUvUkhICB9//DE33ngjDzzwAKtXr760zptdGFduP3rZtBLeGuQzpm884SGXV5OFhwpj+saX2X0wNqoaJ9fNtQxca0ODP0wmrGZdv84sG8hdfV09ZhISEpg+fTpbUn6i1d4FNruX+qN7pycsWbIE4LL2BX9wa64kEYkBvgKaAXuBe40xJ2xsNxwYb7n7mjFmpmX5KiAWKP4Fus0Yc8TRfss7V9LTS59m06FNLj/u2JkLpB87S6FVvXNIiMDFXHKzdhFWpzGhkVGXPa5qWCgdmkS7vD9f27g/hwv5l08NUFb8eXl5bNy4kYt5F+nQvgPVq1dnbfpxu/vo0qJOmTEcO3OBA9m5XMgvoGpYKI1jIqhbo+ql9e48d3kcO3OBvcfPkV9QCEBYaAjN6kRSt0ZVu8dD8zrVOXRgD9lHDxMSGUV4TCMQISREaFG3eonX4yv2YvVXPKWV93PdtWsXGRkZtG7dmvr165dYF+iv2Z5NmzaRn59PQoL9qYzaN2jPO7e/U+59ODtXkrslhrHAt8aYVsC3lvulA4kBXgZuADoDL4uIdX/HPxhj2lv+HCYFfziQnVviIAMoLDRczD0DQEjV6jYfZ+vHNhA1jokoSnRWQkKExjH2z7DCw8O59tprCQ0JZfPmzZw/f56qYaE2t7W3vFjxF7n4/bqQX0D6sbMcO3PB4XM4eu7yqlujKglNa9OlRR26tKhDQtPaJX5UQqwa3sNCQ2gWE8HhfTvJPnqYOvVjqVG/KYhQNSzUrz9I9o7dA9mBUa1S3s/1yiuvJCoqih07dnDmzJkS6+rWqEqLutUvPYe/PwNn5Ofnc/LkSWLqxPg7FMD9xufBQE/L7ZnAKuD5Utv0BZYZY7IBRGQZcDvwhZv7dll5M6292TGPLJpI3okwYkf+HWzkgIbREax6uGI0Spe30XjLli10796dE6tO8M4/v+St7w9f1oXxzYFljyDtOmkFV5y//Icq6kwEq57ofSk+W90jHT23py3YmMGYOb9S1+rSpZKbQ/6cv5O9NZtp/5jGE0884bN4HLF37MpFWPWw/+uy3flcDx8+TKdOnchemc1/U/5LTExg/KiWx+zZs/nxkx/5/PvP/TbVtjV3E0N9Y0wWgDEmS0SusLFNQ+CA1f2DlmXFPhaRAmAuRdVMNuu2RGQUMApweipoT7HVXdIUFnDh4FZqte1p8zH+vjCNq8rbw6Rdu3YsXryYvn378j9/fZAX/vEFH/x81KUE40wbhy+7R5aVJCcu2lrietYXj+7lyJyJmNxTzJ8/n8GDB3s8Hnf4uquvq9z5XOvXr8/cuXPp0aMH999/P0uWLCE01DslSG9bsGABtWvX5sYbb/R3KIATiUFElgMNbKwa5+Q+bHV2L/5m/cEYkyEiNSlKDA8Cn9p6EmPMdGA6FLUxOLlvj7DZXfL4XgovnOPRewawlqIvX6gIBcbQsAINqPGErl27smjRIvr378/Uvz3EihUrXBod7eyPly8G+TjqunviXN6lbXN3r+do0luEVIngivsnB1xSAP9Mp+Cq0p9rcWO5M4nihhtuYNq0aTz22GNMmDCBV1991Vdhe8zp06eZP38+Dz30EGFhgTGCwGEUxpg+9taJyGERibWUFmIBW20EB/m9ugmgEUVVThhjMiz/T4vIfyhqg7CZGPzJ1llNqwtHmQk8O/xOYmNj/RtgAOjVqxcLFixg0KBB3HbbbSQnJztdtA+kHy9n+sAbYzj183xyvvuEKlc0p95dLxFWMzC7o/pjOgV3lGdw2siRI/n555957bXXSEhICMgEXZZ58+aRm5sbUNOkuNsraQpw3BgzSUTGAjHGmOdKbRMDbAA6Whb9AnQCTgHRxphjIhJOUZvDcmOMw+v6BcIV3AYOHMiOHTtIS/PenOgV0eLFi7n77rtp1aoVy5Yto0EDW4XNywXKFAZ26+SBPZMGcO24JHbPf5tzv31HZHxX6vR/mpAqEURHhLPp5dt8HW6lU96r6BVfBnPHjh2sX7+eq666ypthelSfPn1IT09n9+7dXp9NwFdXcJsEzBKREcB+4B7LzhOAx40xfzTGZIvIq8B6y2NesSyrDiRbkkIosBz40M14fKKgoIDvv/+eYcOG+TsUvyjrR/yOO+5gyZIlDB48mO7du7N8+fJLs0SWxZ3qBE8qq1orPT2ds/PGcW77VqJ7PEStLvcgIoSHCBMGtfV6bNYCJZF6WnkHp1WrVu3SyOg777yTtWvXUrNmTW+E6FEHDx5kxYoVjB8/PqCm7HcrMRhjjgO32FieAvzR6v4MYEapbc5SVHKocDZt2sSpU6fo2bOnv0PxOWeK+rfccgvLli2jf//+dOvWjSVLlnDttdd6dB/eYq9aq3t4Oh07DkFEGPe/n7DyXCO//ShX5LmAHHG1sbx0gnzy1X8ycfT9PPLII8yePTugfmxLW7Axg6fHvYoxhsXnWlK4IJWV213ruOEtOvK5HNauXQvATTfd5OdIfM/Zkao33ngjq1atwhhD165d+frrrz26D2+N5i190ZTYGqG0Sp/L5GdHctVVV/HLL7/w2l8e4sexvdkzaQA/ju3t8y+vPy716Cu2LoNqr73J1nQaX2RE8dBT45g7dy6TJk3yUdSuK449M+W/VImNJzusDp+t3e/x6WTKKzCawCuY9evXU69ePZ93mw0ErhT1r7vuOtatW8fAgQMZOHAgU6dO5cknn7zsLK70WZ+tM0brfbh6xuxqtUtxtdaWLVt44IEHWPTrrzz55JNMmTKFqlX9P0iqos4F5AxXGsvtJcgCrY3LAAAdVklEQVS0ejczbNhOxo0bR4cOHbj99tt9Ejs4f6xNSU7jZMZO8o7uJebWx20+lz8n/tPEUA7r16/n+uuvD+hiqre4WtRv2LAhq1ev5oEHHuCpp55i7dq1fPDBB5fqf239yAvYbAAu3ocrs2eWp9qlsLCQqVOn8uKLLxIdHc3ChQsD6up8gT42wV3Odku2lwizTp5n2UcfsW3bNu677z7WrVvnk8boso414LKTnzOp30JIKJGt7Q9o81ey16okF50+fZrffvuNzp07+zsUnyquuin+4bbmqGtp9erVmTt3Lq+//jpfffUVnTp1YtOmojmrbP3IGy4f/GK9D1fOmF2tdtm8eTM33XQTzz77LP369SM1NTWgkgK4Vt1SUTlTVVjWZHnFVx4MCwtj4MCB5OTkeDtku8fahKStl1V5mQtnObN5GZFX3WRznrVi/kr2mhhc9Msvv2CM4frrr/d3KD5jXZcLJX+4nb1oekhICC+++CIrV67k7NmzdOnShTfeeIOM46dtbm8sz23rwuyuzJ7pbBI5e/Yszz//PB07dmT37t18+umnzJ8/nyuusDWY37/8eeF6X7DVdvDXrzZdNqW9owTZrFkz5s6dS3p6OsOGDSM/P9+rcds71nJy8y5LGKc2foO5eI5aN9xl9/n8mey1KslFP//8M0BQJQZ7Z/WO+pbb0qNHDzZt2sTo0aMZN24ckQ2aU+vWJ6gaV/ILUNZzuzIgzlG1S35+PjNmzODll1/m0KFDjBgxgsmTJ1OnjudnbPUkf1643tvsHW9guyqwrDr9Hj168H//93+MGjWK5557jrfffttrcZfVPmbN5F/kdMpCqjVtT4vW11yKvVfregHTK0kTg4vWr19P06ZNqVfPO1cPC0SebuysV68es2bNYuHChYwY9TiH/v0s1dv2JKrbHwiPbuDwTMmVBkp7SeSZW65k1qxZTJgwgd9++42uXbsyb968gJmrJpg5Oq6s25OcSZAjR45ky5YtTJ06lZYtW/LnP/+5zO3LO0bE3rFWLTykxFQqZ7asoODsCerc8TfOXcxn6tD2AZfkNTG4aP369UHXvuCtxs7BgwfTq1cvhj/5PEn/mcHZ31bToHN/nn/hOYdfFGfPmEsnkfqRcF3uLzw3bDTp6em0bt360uR3wdiZIBA5c+bt6knJ22+/zZ49e3jyySdp3Lix3Wu0uzNGxN4JC/x+HXBTWMCpn+dRpUFLqjW9jhPn8hgz51ennt+XtI3BBUePHmXv3r1BVY0E3m3srFWrFvNnvseBfXt4fNQfOZbyNX8e3I1+/fqRlJTExYsX3d7HoOtieb1LCD0Pz2HrlGFMnzSOevXqMW/ePLZs2UJiYqImhQBi63grzdWTktDQUL744gs6duzIsGHDsDeljrtjRBI7NLxsjEtxm1CoCOd2riX/RCa1brj70jGXV2ACbgyKJgYXFB9MwZYYfNHYGRcXx3vvvcfevXuZMGECmzdvZvDgwdStW5e77rqLGTNm8NtvvznVgJifn8/27dv517/+xX333UeDBg3o1asXc+fOZejQofzwww+sWbOGO++8s8JO01yZWR9vUHYPNVdUr16dxYsXc8UVVzBgwAB27tx52TbeGiOS2KEhBfl5nPzhc8JqxxJ5Vckqy0Abg+LWJHr+4q9J9CZOnMjEiRM5efJkhZiHpSLLy8sjOTmZaR9/yarlyVw8dQyA8CpVadvmauLi4oiKiiIqKorCwkJOnTrF6dOn2bdvH2lpaeTlFdXpNmjQgFtvvZX+/fszaNAgIiMj/fmyVCnO1Od7el6otLQ0unfvTrVq1Vi9enWJubzKO4mfM5rePpL9yR9R766XiGx5g8ef3xm+mkQvqKxfv56rr75ak0IZPPUlDg8PJ79hB/a3CaNBy2HkHdvHxcO7Mcf3ExKazeHDh0lLS+PkyZOEhoZSq1YtatasSfPmzRkwYABt2rShY8eOtG3bVquJApSz9fme7oEVHx/PsmXL6NmzJ71792b16tXExcUB3psCPj09nUOr/k31+JsuSwrhoRJwY1C0xOAkYwwNGjSgX79+fPLJJz7dd0Vh6zKNxaOYy3PxIm+evSn/8/fnu27dOvr06UPjxo1Zvnz5peTg6RKKMYZ+/frx008/MXX2CqatzSYnt6hEWzsynJcHtvVZw7OWGDzswIEDHDlyJOjaF1zhav9zR8qq762s004HE3/P+ZRVpRFN73uFbTPH0aJdJ6Z+PJs/De7m8RLKrFmzSE5O5h//+Acj+iYwoq/HntprtPHZScHa8OwKZ/ufO8tez5OoiPDLRsb6cyZKVT6ujGD3tOLS7ZmYq6g/7HXyzp/jyT8M5O0vkj26n9TUVB577DESEhIcjp8IJJoYnLR582ZCQkK45ppr/B1KwHLmC+3s2eCCjRmcvXB5D6SI8FBEqLTTTtvirSnG/c2fcz5Zl26rxl5Fgz9MhpBwnnvkLhYuXOiRfezfv59+/fpRvXp15syZU6F6wGlicFJqaiotW7YkIqJyzGDpDc70Pw8RcfgDV3w2V1wPW6x2ZDhvDrmGnHN5Nh8XaF3+PMHWvEGVpXTkzzmfSh8r4XUa0+CBKYTWjiUxMZG//e1vl3q2lUd2dja33347p0+fZunSpU5dxTCQaBuDk1JTU126Clkwsh75aW/67AJLZ4ey2hxstVUARFYJI7FDw0vPX1plmXbamitTjFdE/przydbo6rBadek4ehoJh5fw9ttv89NPP/Hhhx/Srl07l557586d3HfffezevZvk5OQKWcugJQYnnDt3jl27dlXID9jXikd+7p00gKlD2186Gwy10WW0+AeudFWJowv12CqZCNCsTkSlq3LxdwNtZWWvGuv5Adcwbdo0Zs+ezfbt27nuuusYOXIkWVlZDp+zsLCQd999l/bt27N7927mzJlTYS//q4nBCVu3bsUYo4nBRdbTAxTa6RZdXHKwriqxJyoi/NLz3tWpYYkRsQb4cXd2paty8WcDbWXmqBrr7rvvZvfu3Tz11FPMnDmTli1bcv/99zNr1ixOnTpV4rn27t3LtGnT6Nq1K0888QQ9evRgy5Ytdudjqgi0KskJqalFVR6aGMrP3sRooSI2q41ssS50rNx+1OZV3qxVhioXbw24Uo6rsWJiYnj77bcZPXo0kydPZsGCBXzxxReEhYURHR1N1apVEREOHjwIQOvWrfnggw8YOXJkhR9U6VZiEJEY4CugGbAXuNcYc8LGdkuBLsAPxpg7rJY3B74EYoBfgAeNMe7PmuZhqampRERE0KJFC3+HUmHZ+4FzNikAJRqdna1KqehVLq5MMa6848orr2T69Om89957rFmzhqVLl5Kdnc2FCxfIy8ujffv2DBw4kFatWvk7VI9xt8QwFvjWGDNJRMZa7j9vY7spQCTwWKnlk4GpxpgvReR9YATwnpsxeVxqaipt27atUN3NAo29Hzh7Dcm2WFefOHtRlMpQ5VKZL8pTkYSGhtKtWze6devm71C8zt3EMBjoabk9E1iFjcRgjPlWRHpaL5OislZv4H6rx08gQBPDgAED/B1GhWfvB650SSI8RECKpiMuVrr6xFYJpDStclGqfNxNDPWNMVkAxpgsEXHlArl1gBxjTPEopoNAwJ0WHTlyhCNHjmj7gpeUdXGTsqpPbD0ukC6NqFRF5jAxiMhyoIGNVePc3Let1hm77YkiMgoYBdCkSRM3d+08bXj2PnslCVevmLVy+1FNBkp5gMPEYIzpY2+diBwWkVhLaSEWOOLCvo8B0SISZik1NAIyy4hjOjAdimZXdWE/btHEELjcuQyjUso+d8cxJAHDLbeHA05PMmKK5vteCdxdnsf7SmpqKvXq1aN+/fr+DkWV4u5lGJVStrmbGCYBt4rITuBWy31EJEFEPireSERWA7OBW0TkoIgUTzz7PPCMiOyiqM3hX27G43GpqalaWghQOipYKe9wq/HZGHMcuMXG8hTgj1b3u9t5fDrQ2Z0YvKmwsJCtW7cycuRIf4eibLDXZbUydFFVnqPX7nCdTolRhvT0dM6dO2ezxFBZp0KuSPw5bbOqGCrz7LTepImhDPYanvVgCwz+nLZZVQzaDlU+OldSGbZt2wZAmzZtSiyv7FMhB5qyqgJ0VLAqi7ZDlY+WGMqwY8cOGjZsSI0aNUos14PNd7R0ptyhs9OWjyaGMqSlpREff3l9tR5svqNVAcod2g5VPpoY7DDGkJaWxlVXXXXZOj3YfEdLZ8od2g5VPtrGYMexY8fIycmxWWLQqZB9R7ukKndpO5TrNDHYkZZWVFVhKzGAHmy+oheqUcr3NDHYsWPHDgCbVUnKd7R0pnxFB8L9ThODHWlpaYSHh9OsWTN/h1LpOfpCaulMeZtOyFiSNj7bsWPHDlq2bKlXbfMy7Y6qAoH2fitJE4Md9rqqKs/SL6QKBNr7rSRNDDYUFBSwa9cuTQw+oF9IFQh0bFJJmhhs2Lt3L3l5edrw7AP6hVSBQMcmlaSJwQZHXVWV5+gXUgUCHQhXkvZKsqG4q6omBu/T7qgqUGjvt99pYrAhLS2N2rVrU6dOHX+HEhT0C6lUYNGqJBt27NhBfHw8IuLvUJRSyuc0Mdhgb/I8pZQKBpoYSjlz5gwZGRnavqCUClqaGErZuXMnoA3PSqngpYmhlOKuqlqVpJQKVm4lBhGJEZFlIrLT8r+2ne2WikiOiCwutfwTEdkjIpssf+3diccTiksMLVu29HMkSinlH+6WGMYC3xpjWgHfWu7bMgV40M66McaY9pa/TW7G47b09HQaNmxIRISOvFVKBSd3E8NgYKbl9kwg0dZGxphvgdNu7ssn0tPTad68ub/DUEopv3E3MdQ3xmQBWP5fUY7neF1ENovIVBGpam8jERklIikiknL06NHyxuvQnj17NDEopYKaw8QgIstFZIuNv8Ee2P8LQGvgeiAGeN7ehsaY6caYBGNMQr169Tyw68tdvHiRgwcP0qJFC688v1JKVQQOp8QwxvSxt05EDotIrDEmS0RigSOu7Ly4tAFcEJGPgWddebyn7du3D2OMlhiUUkHN3aqkJGC45fZwYKErD7YkE6Ro7olEYIub8bhlz549AJoYlFJBzd3EMAm4VUR2Arda7iMiCSLyUfFGIrIamA3cIiIHRaSvZdXnIpIKpAJ1gdfcjMctxYlBq5KUUsHMrdlVjTHHgVtsLE8B/mh1v7udx/d2Z/+elp6eTpUqVYiLi/N3KEop5Tc68tnKnj17aNq0KSEh+rYopYKX/gJa2bNnj1YjKaWCniYGKzq4TSmlNDFccurUKbKzszUxKKWCniYGC+2RpJRSRTQxWKSnpwM6hkEppTQxWOjgNqWUKqKJwWLPnj1ERUVRu7bNS0oopVTQ0MRgUdwjqWh2DqWUCl6aGCx0um2llCqiiQEwxujgNqWUsnBrrqTK4tChQ5w/f57mzZuzYGMGU5LTyMzJJS46gjF940ns0NDfISqllM9oYuD3HkmHCmvyz3mp5OYVAJCRk8sL81IBNDkopYKGViXx+xiGxXsKLyWFYrl5BUxJTvNHWEop5ReaGPi9xJAdEmVzfWZOri/DUUopv9LEQNElPRs0aECjurYTQ1x0hI8jUkop/9HEABw4cIDGjRszpm88EeGhJdZFhIcypm+8nyJTSinf08ZnYP/+/bRp0+ZSA7P2SlJKBbOgTwzGGA4cOEDfvkWXoU7s0FATgVIqqAV9VVJOTg5nz56lcePG/g5FKaUCQtAnhgMHDgDQpEkTP0eilFKBwa3EICIxIrJMRHZa/l82NamItBeRNSKyVUQ2i8hQq3XNRWSd5fFfiUgVd+Ipj+LEoCUGpZQq4m6JYSzwrTGmFfCt5X5p54CHjDFtgduBd0Qk2rJuMjDV8vgTwAg343GZJgallCrJ3cQwGJhpuT0TSCy9gTFmhzFmp+V2JnAEqCdF81v3BuaU9XhvO3DgAGFhYTRo0MDXu1ZKqYDkbmKob4zJArD8v6KsjUWkM1AF2A3UAXKMMfmW1QcBn3cHOnDgAHFxcYSGhjreWCmlgoDD7qoishywdTo9zpUdiUgs8G9guDGmUGxfEceU8fhRwCjwbEPx/v37tRpJKaWsOEwMxpg+9taJyGERiTXGZFl++I/Y2a4WsAQYb4xZa1l8DIgWkTBLqaERkFlGHNOB6QAJCQl2E4irDhw4QOfOnT31dEopVeG5W5WUBAy33B4OLCy9gaWn0XzgU2PM7OLlxhgDrATuLuvx3lRYWMjBgwe1xKCUUlbcTQyTgFtFZCdwq+U+IpIgIh9ZtrkX6AE8LCKbLH/tLeueB54RkV0UtTn8y814XHL06FEuXryoYxiUUsqKW1NiGGOOA7fYWJ4C/NFy+zPgMzuPTwf8Vo+jXVWVUupyQT3yWRODUkpdThMDmhiUUspa0CeGatWqUbduXX+HopRSASOoE8P+/ftp1KgRtodUKKVUcArqxFB85TallFK/08SgiUEppUoIqiu4LdiYcemynbE1q5CZmamJQSmlSgmaxLBgYwYvzEslN68AgP0ZGRQWFpJNTT9HppRSgSVoqpKmJKddSgoA+aeOAbAqo9BfISmlVEAKmsSQmZNb4n7B6aMAnAyp5Y9wlFIqYAVNYoiLjihxv7jE0EjbGJRSqoSgSQxj+sYTEf77xXgKTh8lpEoELwzu5MeolFIq8ARN43Nih6KLwxX3Sgo/n0Ncw0aXliullCoSNIkBipJDcSK46fvXiWyg020rpVRpQVOVVFpmZiZxcXH+DkMppQJOUCYGYwxZWVnExsb6OxSllAo4QZkYsrOzuXjxopYYlFLKhqBMDJmZmQBaYlBKKRuCMjFkZWUBaIlBKaVsCMrEoCUGpZSyLygTQ3GJQRODUkpdLigTQ2ZmJtHR0URGRvo7FKWUCjhuJQYRiRGRZSKy0/K/to1t2ovIGhHZKiKbRWSo1bpPRGSPiGyy/LV3Jx5nZWZmamlBKaXscLfEMBb41hjTCvjWcr+0c8BDxpi2wO3AOyISbbV+jDGmveVvk5vxOCUrK0sbnpVSyg53E8NgYKbl9kwgsfQGxpgdxpidltuZwBGgnpv7dYuWGJRSyj53E0N9Y0wWgOX/FWVtLCKdgSrAbqvFr1uqmKaKSNUyHjtKRFJEJOXo0aPlDrh41LOWGJRSyjaHiUFElovIFht/g13ZkYjEAv8GHjHGFF827QWgNXA9EAM8b+/xxpjpxpgEY0xCvXrlL3AUj3rWEoNSStnmcHZVY0wfe+tE5LCIxBpjsiw//EfsbFcLWAKMN8astXruLMvNCyLyMfCsS9G7YMHGDKYkp7F3528AZFyo5q1dKaVUheZuVVISMNxyeziwsPQGIlIFmA98aoyZXWpdrOW/UNQ+scXNeGxasDGDF+alkpGTS/6ZbABmbTvDgo0Z3tidUkpVaO4mhknArSKyE7jVch8RSRCRjyzb3Av0AB620S31cxFJBVKBusBrbsZj05TkNHLzCgAosCSG/GrRTElO88bulFKqQnPrQj3GmOPALTaWpwB/tNz+DPjMzuN7u7N/Z2Xm5F66XZwYQmvULrFcKaVUkaAY+RwXHXHpdsGZbKRqdULCq5VYrpRSqkhQJIYxfeOJCA8FihJDWI0YIsJDGdM33s+RKaVU4AmKaz4XX+d5SnIah85kExldlzeHXHNpuVJKqd8FRYkBipLDj2N7E1vlPANvbKtJQSml7AiaxABFo54zMzN11LNSSpUhqBLDiRMndNSzUko5EFSJofjKbVpiUEop+4IyMWiJQSml7AuqxFB8SU8tMSillH1BlRi0xKCUUo4FVWLIysoiKipKr/WslFJlCKrEoF1VlVLKsaAY+VysU6dOtGrVyt9hKKVUQAuqxPDCCy/4OwSllAp4QVWVpJRSyjFNDEoppUrQxKCUUqoETQxKKaVK0MSglFKqBE0MSimlStDEoJRSqgRNDEoppUoQY4y/Y3CZiBwF9pXz4XWBYx4Mx1M0LtdoXK7RuFxTWeNqaoyp52ijCpkY3CEiKcaYBH/HUZrG5RqNyzUal2uCPS6tSlJKKVWCJgallFIlBGNimO7vAOzQuFyjcblG43JNUMcVdG0MSimlyhaMJQallFJlqJSJQUTuEZGtIlIoInZb8EXkdhFJE5FdIjLWanlzEVknIjtF5CsRqeKhuGJEZJnleZeJSG0b2/QSkU1Wf+dFJNGy7hMR2WO1rr2v4rJsV2C17ySr5f58v9qLyBrL571ZRIZarfPo+2XveLFaX9Xy+ndZ3o9mVutesCxPE5G+7sRRjrieEZFtlvfnWxFparXO5mfqo7geFpGjVvv/o9W64ZbPfaeIDPdxXFOtYtohIjlW67zyfonIDBE5IiJb7KwXEfmHJebNItLRap3n3ytjTKX7A64G4oFVQIKdbUKB3UALoArwK9DGsm4WMMxy+33gTx6K6y1grOX2WGCyg+1jgGwg0nL/E+BuL7xfTsUFnLGz3G/vF3AV0MpyOw7IAqI9/X6VdbxYbfNn4H3L7WHAV5bbbSzbVwWaW54n1Idx9bI6hv5UHFdZn6mP4noY+KeNx8YA6Zb/tS23a/sqrlLbPwnM8MH71QPoCGyxs74/8A0gQBdgnTffq0pZYjDG/GaMSXOwWWdglzEm3RhzEfgSGCwiAvQG5li2mwkkeii0wZbnc/Z57wa+Mcac89D+7XE1rkv8/X4ZY3YYY3ZabmcCRwCHA3jKwebxUka8c4BbLO/PYOBLY8wFY8weYJfl+XwSlzFmpdUxtBZo5KF9uxVXGfoCy4wx2caYE8Ay4HY/xXUf8IWH9m2XMeZ7ik4C7RkMfGqKrAWiRSQWL71XlTIxOKkhcMDq/kHLsjpAjjEmv9RyT6hvjMkCsPy/wsH2w7j8oHzdUpScKiJVfRxXNRFJEZG1xdVbBND7JSKdKToL3G212FPvl73jxeY2lvfjJEXvjzOP9WZc1kZQdOZZzNZn6su47rJ8PnNEpLGLj/VmXFiq3JoDK6wWe+v9csRe3F55ryrsNZ9FZDnQwMaqccaYhc48hY1lpozlbsfl7HNYnicWuAZItlr8AnCIoh+/6cDzwCs+jKuJMSZTRFoAK0QkFThlYzt/vV//BoYbYwoti8v9ftnahY1lpV+nV44pB5x+bhF5AEgAbrZafNlnaozZbevxXohrEfCFMeaCiDxOUWmrt5OP9WZcxYYBc4wxBVbLvPV+OeLTY6vCJgZjTB83n+Ig0NjqfiMgk6J5SKJFJMxy1le83O24ROSwiMQaY7IsP2RHyniqe4H5xpg8q+fOsty8ICIfA8/6Mi5LVQ3GmHQRWQV0AObi5/dLRGoBS4DxlmJ28XOX+/2ywd7xYmubgyISBkRRVD3gzGO9GRci0oeiZHuzMeZC8XI7n6knfugcxmWMOW5190NgstVje5Z67CoPxORUXFaGAaOtF3jx/XLEXtxeea+CuSppPdBKinrUVKHoIEgyRS06Kymq3wcYDjhTAnFGkuX5nHney+o2LT+OxfX6iYDNHgzeiEtEahdXxYhIXaArsM3f75fls5tPUf3r7FLrPPl+2Txeyoj3bmCF5f1JAoZJUa+l5kAr4Gc3YnEpLhHpAHwADDLGHLFabvMz9WFcsVZ3BwG/WW4nA7dZ4qsN3EbJkrNX47LEFk9RY+4aq2XefL8cSQIesvRO6gKctJz4eOe98kYLu7//gDspyqQXgMNAsmV5HPC11Xb9gR0UZfxxVstbUPTF3QXMBqp6KK46wLfATsv/GMvyBOAjq+2aARlASKnHrwBSKfqB+wyo4au4gJss+/7V8n9EILxfwANAHrDJ6q+9N94vW8cLRVVTgyy3q1le/y7L+9HC6rHjLI9LA/p5+Hh3FNdyy/eg+P1JcvSZ+iiuN4Gtlv2vBFpbPfZRy/u4C3jEl3FZ7k8AJpV6nNfeL4pOArMsx/JBitqCHgcet6wX4F1LzKlY9bb0xnulI5+VUkqVEMxVSUoppWzQxKCUUqoETQxKKaVK0MSglFKqBE0MSimlStDEoJRSqgRNDEoppUrQxKCUUqqE/w+MIHo+frwsXwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "0.2598361650255093" ] }, "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": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1. , -1. ],\n", " [ 1. , -0.99328663],\n", " [ 1. , -0.93719294],\n", " [ 1. , -0.89360246],\n", " [ 1. , -0.86658061],\n", " [ 1. , -0.8584034 ],\n", " [ 1. , -0.84089243],\n", " [ 1. , -0.81908021],\n", " [ 1. , -0.80943821],\n", " [ 1. , -0.73017827],\n", " [ 1. , -0.71490174],\n", " [ 1. , -0.66460206],\n", " [ 1. , -0.59665165],\n", " [ 1. , -0.59428837],\n", " [ 1. , -0.53133723],\n", " [ 1. , -0.52793056],\n", " [ 1. , -0.47426817],\n", " [ 1. , -0.45586961],\n", " [ 1. , -0.42435291],\n", " [ 1. , -0.41215125],\n", " [ 1. , -0.41028971],\n", " [ 1. , -0.39562873],\n", " [ 1. , -0.38811145],\n", " [ 1. , -0.36513461],\n", " [ 1. , -0.32660409],\n", " [ 1. , -0.32432334],\n", " [ 1. , -0.32036893],\n", " [ 1. , -0.31846632],\n", " [ 1. , -0.29106553],\n", " [ 1. , -0.29080446],\n", " [ 1. , -0.29062374],\n", " [ 1. , -0.27851353],\n", " [ 1. , -0.26963835],\n", " [ 1. , -0.26662522],\n", " [ 1. , -0.25577565],\n", " [ 1. , -0.2401871 ],\n", " [ 1. , -0.23988007],\n", " [ 1. , -0.23348715],\n", " [ 1. , -0.22322156],\n", " [ 1. , -0.20691318],\n", " [ 1. , -0.16405505],\n", " [ 1. , -0.15464408],\n", " [ 1. , -0.090944 ],\n", " [ 1. , -0.08551193],\n", " [ 1. , -0.07722283],\n", " [ 1. , -0.07470739],\n", " [ 1. , -0.03896271],\n", " [ 1. , -0.0381165 ],\n", " [ 1. , -0.03684277],\n", " [ 1. , -0.03549469],\n", " [ 1. , -0.02681647],\n", " [ 1. , 0.01756142],\n", " [ 1. , 0.04970034],\n", " [ 1. , 0.06166236],\n", " [ 1. , 0.07118171],\n", " [ 1. , 0.08801551],\n", " [ 1. , 0.15193429],\n", " [ 1. , 0.17105251],\n", " [ 1. , 0.18408784],\n", " [ 1. , 0.1849882 ],\n", " [ 1. , 0.20748863],\n", " [ 1. , 0.22010039],\n", " [ 1. , 0.25096797],\n", " [ 1. , 0.25237552],\n", " [ 1. , 0.26665165],\n", " [ 1. , 0.31025199],\n", " [ 1. , 0.32229674],\n", " [ 1. , 0.35296593],\n", " [ 1. , 0.3765849 ],\n", " [ 1. , 0.39976059],\n", " [ 1. , 0.40751661],\n", " [ 1. , 0.4435275 ],\n", " [ 1. , 0.44383196],\n", " [ 1. , 0.44863764],\n", " [ 1. , 0.47268276],\n", " [ 1. , 0.51165268],\n", " [ 1. , 0.51756837],\n", " [ 1. , 0.52470369],\n", " [ 1. , 0.54234739],\n", " [ 1. , 0.54904714],\n", " [ 1. , 0.5703933 ],\n", " [ 1. , 0.61015098],\n", " [ 1. , 0.61302179],\n", " [ 1. , 0.61640394],\n", " [ 1. , 0.65557567],\n", " [ 1. , 0.67240494],\n", " [ 1. , 0.71273998],\n", " [ 1. , 0.71289723],\n", " [ 1. , 0.73814258],\n", " [ 1. , 0.74410781],\n", " [ 1. , 0.75493867],\n", " [ 1. , 0.85095778],\n", " [ 1. , 0.8951696 ],\n", " [ 1. , 0.90558563],\n", " [ 1. , 0.90932698],\n", " [ 1. , 0.92182865],\n", " [ 1. , 0.94624166],\n", " [ 1. , 0.95296126],\n", " [ 1. , 0.98843755],\n", " [ 1. , 1. ]])" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# create a data matrix X\n", "X = np.vstack([np.ones(len(x)),x]).T\n", "display(X)" ] }, { "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": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\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": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1.00000000e+00, -1.00000000e+00, 1.00000000e+00],\n", " [ 1.00000000e+00, -9.93286629e-01, 9.86618327e-01],\n", " [ 1.00000000e+00, -9.37192944e-01, 8.78330614e-01],\n", " [ 1.00000000e+00, -8.93602456e-01, 7.98525349e-01],\n", " [ 1.00000000e+00, -8.66580613e-01, 7.50961959e-01],\n", " [ 1.00000000e+00, -8.58403401e-01, 7.36856399e-01],\n", " [ 1.00000000e+00, -8.40892425e-01, 7.07100071e-01],\n", " [ 1.00000000e+00, -8.19080208e-01, 6.70892387e-01],\n", " [ 1.00000000e+00, -8.09438213e-01, 6.55190221e-01],\n", " [ 1.00000000e+00, -7.30178268e-01, 5.33160304e-01],\n", " [ 1.00000000e+00, -7.14901736e-01, 5.11084491e-01],\n", " [ 1.00000000e+00, -6.64602058e-01, 4.41695896e-01],\n", " [ 1.00000000e+00, -5.96651653e-01, 3.55993195e-01],\n", " [ 1.00000000e+00, -5.94288369e-01, 3.53178665e-01],\n", " [ 1.00000000e+00, -5.31337232e-01, 2.82319254e-01],\n", " [ 1.00000000e+00, -5.27930559e-01, 2.78710675e-01],\n", " [ 1.00000000e+00, -4.74268168e-01, 2.24930295e-01],\n", " [ 1.00000000e+00, -4.55869606e-01, 2.07817098e-01],\n", " [ 1.00000000e+00, -4.24352911e-01, 1.80075393e-01],\n", " [ 1.00000000e+00, -4.12151250e-01, 1.69868653e-01],\n", " [ 1.00000000e+00, -4.10289710e-01, 1.68337646e-01],\n", " [ 1.00000000e+00, -3.95628735e-01, 1.56522096e-01],\n", " [ 1.00000000e+00, -3.88111451e-01, 1.50630499e-01],\n", " [ 1.00000000e+00, -3.65134612e-01, 1.33323285e-01],\n", " [ 1.00000000e+00, -3.26604093e-01, 1.06670233e-01],\n", " [ 1.00000000e+00, -3.24323342e-01, 1.05185630e-01],\n", " [ 1.00000000e+00, -3.20368931e-01, 1.02636252e-01],\n", " [ 1.00000000e+00, -3.18466323e-01, 1.01420799e-01],\n", " [ 1.00000000e+00, -2.91065531e-01, 8.47191432e-02],\n", " [ 1.00000000e+00, -2.90804465e-01, 8.45672368e-02],\n", " [ 1.00000000e+00, -2.90623740e-01, 8.44621580e-02],\n", " [ 1.00000000e+00, -2.78513532e-01, 7.75697874e-02],\n", " [ 1.00000000e+00, -2.69638349e-01, 7.27048390e-02],\n", " [ 1.00000000e+00, -2.66625219e-01, 7.10890072e-02],\n", " [ 1.00000000e+00, -2.55775651e-01, 6.54211836e-02],\n", " [ 1.00000000e+00, -2.40187100e-01, 5.76898432e-02],\n", " [ 1.00000000e+00, -2.39880072e-01, 5.75424490e-02],\n", " [ 1.00000000e+00, -2.33487147e-01, 5.45162478e-02],\n", " [ 1.00000000e+00, -2.23221559e-01, 4.98278643e-02],\n", " [ 1.00000000e+00, -2.06913178e-01, 4.28130634e-02],\n", " [ 1.00000000e+00, -1.64055047e-01, 2.69140584e-02],\n", " [ 1.00000000e+00, -1.54644078e-01, 2.39147908e-02],\n", " [ 1.00000000e+00, -9.09440013e-02, 8.27081137e-03],\n", " [ 1.00000000e+00, -8.55119256e-02, 7.31228943e-03],\n", " [ 1.00000000e+00, -7.72228276e-02, 5.96336511e-03],\n", " [ 1.00000000e+00, -7.47073866e-02, 5.58119361e-03],\n", " [ 1.00000000e+00, -3.89627136e-02, 1.51809305e-03],\n", " [ 1.00000000e+00, -3.81164951e-02, 1.45286720e-03],\n", " [ 1.00000000e+00, -3.68427693e-02, 1.35738965e-03],\n", " [ 1.00000000e+00, -3.54946916e-02, 1.25987313e-03],\n", " [ 1.00000000e+00, -2.68164689e-02, 7.19123002e-04],\n", " [ 1.00000000e+00, 1.75614192e-02, 3.08403445e-04],\n", " [ 1.00000000e+00, 4.97003390e-02, 2.47012369e-03],\n", " [ 1.00000000e+00, 6.16623567e-02, 3.80224623e-03],\n", " [ 1.00000000e+00, 7.11817091e-02, 5.06683571e-03],\n", " [ 1.00000000e+00, 8.80155099e-02, 7.74672998e-03],\n", " [ 1.00000000e+00, 1.51934292e-01, 2.30840291e-02],\n", " [ 1.00000000e+00, 1.71052509e-01, 2.92589609e-02],\n", " [ 1.00000000e+00, 1.84087844e-01, 3.38883344e-02],\n", " [ 1.00000000e+00, 1.84988201e-01, 3.42206347e-02],\n", " [ 1.00000000e+00, 2.07488631e-01, 4.30515322e-02],\n", " [ 1.00000000e+00, 2.20100391e-01, 4.84441823e-02],\n", " [ 1.00000000e+00, 2.50967965e-01, 6.29849195e-02],\n", " [ 1.00000000e+00, 2.52375517e-01, 6.36934017e-02],\n", " [ 1.00000000e+00, 2.66651648e-01, 7.11031016e-02],\n", " [ 1.00000000e+00, 3.10251987e-01, 9.62562956e-02],\n", " [ 1.00000000e+00, 3.22296737e-01, 1.03875187e-01],\n", " [ 1.00000000e+00, 3.52965927e-01, 1.24584946e-01],\n", " [ 1.00000000e+00, 3.76584905e-01, 1.41816191e-01],\n", " [ 1.00000000e+00, 3.99760592e-01, 1.59808531e-01],\n", " [ 1.00000000e+00, 4.07516607e-01, 1.66069785e-01],\n", " [ 1.00000000e+00, 4.43527500e-01, 1.96716643e-01],\n", " [ 1.00000000e+00, 4.43831957e-01, 1.96986806e-01],\n", " [ 1.00000000e+00, 4.48637637e-01, 2.01275730e-01],\n", " [ 1.00000000e+00, 4.72682760e-01, 2.23428992e-01],\n", " [ 1.00000000e+00, 5.11652676e-01, 2.61788461e-01],\n", " [ 1.00000000e+00, 5.17568371e-01, 2.67877018e-01],\n", " [ 1.00000000e+00, 5.24703686e-01, 2.75313959e-01],\n", " [ 1.00000000e+00, 5.42347386e-01, 2.94140687e-01],\n", " [ 1.00000000e+00, 5.49047137e-01, 3.01452758e-01],\n", " [ 1.00000000e+00, 5.70393300e-01, 3.25348516e-01],\n", " [ 1.00000000e+00, 6.10150978e-01, 3.72284216e-01],\n", " [ 1.00000000e+00, 6.13021791e-01, 3.75795717e-01],\n", " [ 1.00000000e+00, 6.16403937e-01, 3.79953814e-01],\n", " [ 1.00000000e+00, 6.55575672e-01, 4.29779462e-01],\n", " [ 1.00000000e+00, 6.72404942e-01, 4.52128407e-01],\n", " [ 1.00000000e+00, 7.12739980e-01, 5.07998278e-01],\n", " [ 1.00000000e+00, 7.12897231e-01, 5.08222462e-01],\n", " [ 1.00000000e+00, 7.38142584e-01, 5.44854475e-01],\n", " [ 1.00000000e+00, 7.44107813e-01, 5.53696438e-01],\n", " [ 1.00000000e+00, 7.54938673e-01, 5.69932400e-01],\n", " [ 1.00000000e+00, 8.50957780e-01, 7.24129144e-01],\n", " [ 1.00000000e+00, 8.95169604e-01, 8.01328619e-01],\n", " [ 1.00000000e+00, 9.05585625e-01, 8.20085325e-01],\n", " [ 1.00000000e+00, 9.09326984e-01, 8.26875564e-01],\n", " [ 1.00000000e+00, 9.21828654e-01, 8.49768068e-01],\n", " [ 1.00000000e+00, 9.46241656e-01, 8.95373271e-01],\n", " [ 1.00000000e+00, 9.52961257e-01, 9.08135156e-01],\n", " [ 1.00000000e+00, 9.88437555e-01, 9.77008800e-01],\n", " [ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00]])" ] }, "metadata": {}, "output_type": "display_data" }, { "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=2\n", "X = np.vstack([np.ones(len(x)),x,x**2]).T\n", "display(X)\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": 10, "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": 65, "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": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAD8CAYAAABzTgP2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd4VGXawOHfO5NOC5AQQu+hiNIUlCJVQKSoqFgQG6BrV5BmwbaCuOp+uiuLiICdJgRRkC4iQRKK9C4tgYSEkACpM+/3RyaQhJlkkqlhnvu6cmXmnDNznmnnOW89SmuNEEIIkc/g6QCEEEJ4F0kMQgghCpHEIIQQohBJDEIIIQqRxCCEEKIQSQxCCCEKkcQghBCiEEkMQgghCpHEIIQQohA/TwdQFmFhYbpBgwaeDkMIIcqVuLi4s1rr8JK2K5eJoUGDBsTGxno6DCGEKFeUUsfs2U6qkoQQQhTilMSglOqnlNqvlDqklBpvZX2gUuoHy/rNSqkGluUNlFIZSqntlr/pzohHCCFE2TlclaSUMgL/AfoAJ4EtSqlorfWeAps9DpzTWjdRSg0DpgL3WdYd1lq3cTQOIYQQzuGMEsNNwCGt9RGtdTbwPTC4yDaDgTmW2wuAXkop5YR9CyGEcDJnJIbawIkC909allndRmudC5wHqlvWNVRKbVNKrVdKdXVCPEIIIRzgjF5J1s78i179x9Y2CUA9rXWyUqo9sFgp1UprnXbVTpQaBYwCqFevnoMhl2+Lt51i2or9xKdmUCs0mLF9oxjStmguFkKIsnFGieEkULfA/TpAvK1tlFJ+QBUgRWudpbVOBtBaxwGHgWbWdqK1nqG17qC17hAeXmI33GvW4m2nmLBoJ6dSM9DAqdQMJizayeJtpzwdmhDiGuGMxLAFaKqUaqiUCgCGAdFFtokGRlhuDwXWaK21Uirc0niNUqoR0BQ44oSYrlnTVuwnI8dUaFlGjolpK/Z7KCIhxLXG4aokrXWuUuoZYAVgBGZprXcrpd4CYrXW0cAXwFdKqUNACnnJA6Ab8JZSKhcwAU9qrVMcjelaFp+aUarlQjhCqi19k1NGPmutfwZ+LrLs9QK3M4F7rDxuIbDQGTH4ilqhwZyykgRqhQZ7IBpxLcuvtswvoeZXWwKSHK5xMvK5nBnbN4pgf2OhZcH+Rsb2jfJQRMITFm87Recpa2g4fhmdp6xxSRuTVFv6rnI5V9K1rrjie/5/Kd77LnedyUu1pe+SxOBl7PnRD2lbWxKBD7N1Jv/yvB28+MN2p50sSLWl75KqJC8jxXdREltn7CatndqFWaotfZckBi8jxXdREnvO2J1xMjGkbW3eu6s1tUODUUDt0GDeu6u1lFZ9gFQleRkpvouSjO0bVai60RZnnExItaVvkhKDl5HiuyhJ0TN5o435KEt7MuGOnk6ifJASg5eRXkfCHgXP5It2WIDSn0zImAVRkCQGLyTFd1Ea9p5MFNcNurhOD2X5LsqI6fJNEoOQH/E1oKSTiZJKBPZ2erDnu7J42ynGLthBjklf3tfYBTsu70t4P2lj8HEyW6tvKKkbtK32iILL7f2uvLl09+WkkC/HpHlz6W4nvBLhDpIYfJyMm/ANJZUI7On0YO935dylHKv7srVceB9JDD5Oxk34hpJKBPaMWZDviu+QNgYvZTabyc7OJigoyKX7kXETvsHa2IeiJYKS2ins/a6EBvuTmnF16SA02L8soQsPkBKDFzl48CDvv/8+AwcOpHr16gQHB1OxYkUaNGhA7969+fzzz0lJce7lKmTchG9wxihme78rkwe1wt9QeGyFv0ExeVCrMscv3EtpXfTyzN6vQ4cOOjY21tNhOM3Fixd55513+OCDD8jNzSUqKopu3bpRv359kpOTSU5OJiYmhgMHDuDv78+QIUN49913adq0qVP2L72ShL3s/a7Id8o7KaXitNYdStxOEoNnLV++nNGjR3P8+HEeffRR3n77bWrXvvoHpLVm69atfPPNN3z++edkZWXx0ksvMWnSJCpVquSByIUQ7pSZmUlubi4VK1Ys83PYmxikKsmDFi5cyB133EHlypXZsGEDs2bNspoUAJRStG/fng8//JADBw7wwAMPMHXqVFq0aMHvv//u5siFEO72yy+/ULlyZbZv3+7yfUli8JClS5cybNgwOnbsyKZNm+jSpYvdc9VERkYye/ZsNm3aRHBwMN27d+ejjz6iPJb+hHPJfEfXrtjYWIxGI1FRrm//k8TgIsX9QFesWMHQoUNp27YtP//8MxUrVizTQLNOnToRGxvLwIEDeemllxg2bBgZGdJ10FfJYMVrW1xcHK1atSI42PU9BiUxuEBxP9Djx49zzz330LJlS1asWEGVKlWAsg80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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": 15, "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": 17, "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": 69, "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": 74, "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 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.15" } }, "nbformat": 4, "nbformat_minor": 2 }