924 lines
223 KiB
Plaintext
924 lines
223 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "18bdba27",
|
|
"metadata": {},
|
|
"source": [
|
|
"# PW4 - Linear Regression"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3629bfdf",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Imports"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 141,
|
|
"id": "d6eb2aab",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import random\n",
|
|
"import pandas as pd\n",
|
|
"import numpy as np\n",
|
|
"from numpy.linalg import inv\n",
|
|
"import matplotlib.pyplot as plt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e69e5d68",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Load data"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ba14bf9f",
|
|
"metadata": {},
|
|
"source": [
|
|
"Define the path to the file containing the data"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 142,
|
|
"id": "5f3f924f",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"datafile = \"lausanne-appart.csv\""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "adfab574",
|
|
"metadata": {},
|
|
"source": [
|
|
"Read the data"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 143,
|
|
"id": "5108e239",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"dataset = pd.read_csv(datafile)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5a97d4cc",
|
|
"metadata": {},
|
|
"source": [
|
|
"Display first rows"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 144,
|
|
"id": "34222aff",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>living_area</th>\n",
|
|
" <th>nb_rooms</th>\n",
|
|
" <th>rent_price</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>69</td>\n",
|
|
" <td>3.0</td>\n",
|
|
" <td>1810</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>95</td>\n",
|
|
" <td>3.5</td>\n",
|
|
" <td>2945</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>21</td>\n",
|
|
" <td>1.5</td>\n",
|
|
" <td>685</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>20</td>\n",
|
|
" <td>1.0</td>\n",
|
|
" <td>720</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>33</td>\n",
|
|
" <td>1.5</td>\n",
|
|
" <td>830</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" living_area nb_rooms rent_price\n",
|
|
"0 69 3.0 1810\n",
|
|
"1 95 3.5 2945\n",
|
|
"2 21 1.5 685\n",
|
|
"3 20 1.0 720\n",
|
|
"4 33 1.5 830"
|
|
]
|
|
},
|
|
"execution_count": 144,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"dataset.head()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2ec4b8eb",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Exercise 1 - Visualize the data"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "dbf6b9cf",
|
|
"metadata": {},
|
|
"source": [
|
|
"a) Plot a histogram to visualize the distribution of the renting price"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 145,
|
|
"id": "ad07d4cd",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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zc1VcXGxhg4dquDgYAUHBys7O1vPPPOMgoODFRMT06rm4+siIyN100036dixY63ufSFJcXFx6t+/v19bv379fF+3tcbP0D//+c/avn27vv/97/vaWuN741IIMtdYYmKiYmNjlZWV5WsrKyvTvn375PV6JUler1clJSXKzc31jdmxY4fq6uo0cuRI35jdu3erpqbGN2bbtm3q06ePOnbseI2O5vKMMZo9e7Y2btyoHTt2KDEx0a9/2LBhCgkJ8ZuLgoICnTx50m8ujhw54vehtG3bNkVERPg+7Lxer98+Loy5sI9AVldXp6qqqlY3F2PHjtWRI0eUl5fn24YPH66pU6f6/t2a5uPrKioq9NFHHykuLq7VvS8k6bbbbrvoZxr+9Kc/qXv37pJa12foBatXr1aXLl00YcIEX1trfG9cktNnG1+PysvLzcGDB83BgweNJLN06VJz8OBB8+c//9kY8+Wlg5GRkebll182hw8fNvfff3+9lw4OGTLE7Nu3z7z11lumd+/efpcOlpSUmJiYGPPd737X5Ofnm/Xr15u2bdsG1KWDDz30kPF4PGbXrl1+lxB+/vnnvjGzZs0yCQkJZseOHWb//v3G6/Uar9fr679w+eA999xj8vLyzJYtW0x0dHS9lw/+5Cc/MR988IFZvnx5QF4++Nhjj5ns7Gxz/Phxc/jwYfPYY48Zl8tl3njjDWNM65qL+nz9qiVjWs98PPzww2bXrl3m+PHjZs+ePSYpKcl07tzZFBcXG2Nazzxc8M4775jg4GDzs5/9zBw9etT8z//8j2nbtq154YUXfGNay2eoMcbU1taahIQE8+ijj17U19reG5dCkGkBO3fuNJIu2qZNm2aM+fLywQULFpiYmBjjdrvN2LFjTUFBgd8+PvvsMzNlyhTTvn17ExERYWbMmGHKy8v9xhw6dMjcfvvtxu12m27dupklS5Zcq0NskPrmQJJZvXq1b8z58+fNv/7rv5qOHTuatm3bmn/6p38yZ86c8dvPiRMnzPjx4014eLjp3Lmzefjhh01NTY3fmJ07d5pbbrnFhIaGmp49e/q9RqB48MEHTffu3U1oaKiJjo42Y8eO9YUYY1rXXNTn74NMa5mPyZMnm7i4OBMaGmq6detmJk+e7PebKa1lHr7u1VdfNQMHDjRut9v07dvX/PrXv/brby2focYYs3XrViPpouMzpnW+N+rjMsYYR5aCAAAArhLnyAAAAGsRZAAAgLUIMgAAwFoEGQAAYC2CDAAAsBZBBgAAWIsgAwAArEWQAQAA1iLIAGj1XC6XNm3a5HQZAJqAIAOgSaZPny6XyyWXy6WQkBAlJibqkUceUWVlZbO+zqJFi3TLLbc06z7/3pkzZzR+/PgWfQ0ALSPY6QIA2GvcuHFavXq1ampqlJubq2nTpsnlcuk///M/nS6tQaqrqxUaGqrY2FinSwHQRKzIAGgyt9ut2NhYxcfHa+LEiUpKStK2bdt8/XV1dcrIyFBiYqLCw8M1ePBgvfTSS77+Xbt2yeVyKSsrS8OHD1fbtm116623qqCgQJK0Zs0aLV68WIcOHfKt/qxZs6beWqZPn66JEydq8eLFio6OVkREhGbNmqXq6mrfmG984xuaPXu25s2bp86dOys5OVnSxV8t/eUvf9GUKVMUFRWldu3aafjw4dq3b5+v/+WXX9bQoUMVFhamnj17avHixfriiy+aY0oBNBIrMgCaRX5+vt5++211797d15aRkaEXXnhBK1euVO/evbV792498MADio6O1l133eUb9/jjj+uXv/yloqOjNWvWLD344IPas2ePJk+erPz8fG3ZskXbt2+XJHk8nkvWkJWVpbCwMO3atUsnTpzQjBkz1KlTJ/3sZz/zjVm7dq0eeugh7dmzp959VFRU6K677lK3bt30yiuvKDY2VgcOHFBdXZ0k6c0339T3vvc9PfPMM7rjjjv00Ucf6Yc//KEkaeHChU2fQABN4/TttwHYadq0aaZNmzamXbt2xu12G0kmKCjIvPTSS8YYYyorK03btm3N22+/7fe8mTNnmilTphhjjNm5c6eRZLZv3+7r37x5s5Fkzp8/b4wxZuHChWbw4MENqicqKsqcO3fO15aZmWnat29vamtrjTHG3HXXXWbIkCEXPVeS2bhxozHGmOeee8506NDBfPbZZ/W+ztixY83Pf/5zv7b//u//NnFxcVesEUDzY0UGQJONHj1amZmZOnfunJYtW6bg4GClpKRIko4dO6bPP/9cd999t99zqqurNWTIEL+2QYMG+f4dFxcnSSouLlZCQkKj6hk8eLDatm3re+z1elVRUaFTp075VoqGDRt22X3k5eVpyJAhioqKqrf/0KFD2rNnj98qT21trSorK/X555/7vT6AlkeQAdBk7dq1U69evSRJzz//vAYPHqxVq1Zp5syZqqiokCRt3rxZ3bp183ue2+32exwSEuL7t8vlkiTfVzktUfPlhIeHX7a/oqJCixcv1qRJky7qCwsLu6raADQeQQZAswgKCtJPf/pTpaWl6Z//+Z/Vv39/ud1unTx50u98mMYKDQ1VbW1tg8YeOnRI58+f94WRvXv3qn379oqPj2/w6w0aNEi//e1vdfbs2XpXZYYOHaqCggJfgAPgLK5aAtBsvv3tb6tNmzZavny5OnTooB//+MeaP3++1q5dq48++kgHDhzQs88+q7Vr1zZ4nz169NDx48eVl5env/71r6qqqrrk2Orqas2cOVPvv/++Xn/9dS1cuFCzZ89WUFDDP+qmTJmi2NhYTZw4UXv27NHHH3+s//u//1NOTo4k6cknn9Tvfvc7LV68WO+9954++OADrV+/Xk888USDXwNA8yHIAGg2wcHBmj17tp566imdO3dO//7v/64FCxYoIyND/fr107hx47R582YlJiY2eJ8pKSkaN26cRo8erejoaL344ouXHDt27Fj17t1bd955pyZPnqxvfvObWrRoUaOOITQ0VG+88Ya6dOmie++9VzfffLOWLFmiNm3aSJKSk5P12muv6Y033tCIESM0atQoLVu2zO9qLQDXjssYY5wuAgCu1vTp01VSUsKtBoBWhhUZAABgLYIMAACwFl8tAQAAa7EiAwAArEWQAQAA1iLIAAAAaxFkAACAtQgyAADAWgQZAABgLYIMAACwFkEGAABY6/8BLH2YBDueK+8AAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Your code here\n",
|
|
"\n",
|
|
"plt.hist(dataset[\"rent_price\"])\n",
|
|
"plt.xlabel(\"Rent price\")\n",
|
|
"plt.ylabel(\"Count\")\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "602770ae",
|
|
"metadata": {},
|
|
"source": [
|
|
"b) Plot a histogram to visualize the distribution of the living area"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 146,
|
|
"id": "ac0c9f07",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAGwCAYAAABCV9SaAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAJEpJREFUeJzt3XtwVPX9//HXYkK4hN2QAEnQhARELnJREHFtpQqRgJQBia3StCKD1wZUUIupIuLYgdEWqBbFVi46FbG04A3EgWCCl0AhchGUjDBBqJBEpckmaC6Sz/eP/tifK0Fz2eTs8nk+ZnaGPefsyXtzJstzTs5uXMYYIwAAgHNcG6cHAAAAaA1EDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsEOH0AC2trq5Ox44dU6dOneRyuZweBwAANIAxRhUVFerevbvatAnOOZpzPnqOHTumpKQkp8cAAABNcPToUV1wwQVB2dc5Hz2dOnWS9L9vmtvtdngaAADQED6fT0lJSf7/x4PhnI+e07/ScrvdRA8AAGEmmJemcCEzAACwAtEDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKxA9AAAACsQPQAAwApEDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsQPQAAAArRDg9ANAQKQ+ud3qERju8YJzTIwAAvoMzPQAAwApEDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKxA9AAAACsQPQAAwApEDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKxA9AAAACsQPQAAwApEDwAAsALRAwAArBAy0bNgwQK5XC7de++9/mVVVVXKyspSXFycoqOjlZGRoZKSEueGBAAAYSskomfHjh167rnnNGjQoIDlM2fO1BtvvKE1a9YoLy9Px44d06RJkxyaEgAAhDPHo6eyslKZmZn629/+ps6dO/uXl5eXa9myZVq4cKFGjhypoUOHasWKFfrggw+0bds2BycGAADhyPHoycrK0rhx45SWlhawvKCgQLW1tQHL+/btq+TkZOXn5591f9XV1fL5fAE3AACACCe/+OrVq/Xhhx9qx44dZ6wrLi5W27ZtFRMT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BwAAWIHoAQAAViB6AACAFYgeAABgBaIHAABYgegBAABWIHoAAIAViB4AAGAFR6Nn69atGj9+vLp37y6Xy6VXX301YL0xRo888ogSExPVvn17paWl6dNPP3VmWAAAENYcjZ6TJ09q8ODBWrJkSb3rn3jiCT311FNaunSptm/fro4dOyo9PV1VVVWtPCkAAAh3EU5+8bFjx2rs2LH1rjPGaPHixXr44Yc1YcIESdKLL76o+Ph4vfrqq7rppptac1QAABDmQvaanqKiIhUXFystLc2/zOPxaPjw4crPzz/r46qrq+Xz+QJuAAAAIRs9xcXFkqT4+PiA5fHx8f519Zk/f748Ho//lpSU1KJzAgCA8BCy0dNU2dnZKi8v99+OHj3q9EgAACAEhGz0JCQkSJJKSkoClpeUlPjX1ScqKkputzvgBgAAELLRk5qaqoSEBOXk5PiX+Xw+bd++XV6v18HJAABAOHL03VuVlZU6ePCg/35RUZF2796t2NhYJScn695779Xjjz+u3r17KzU1VXPmzFH37t01ceJE54YGAABhydHo2blzp6655hr//VmzZkmSpkyZopUrV+p3v/udTp48qdtvv11lZWX66U9/qo0bN6pdu3ZOjQwAAMKUyxhjnB6iJfl8Pnk8HpWXlwf9+p6UB9cHdX8A7HB4wTinRwBCXkv8/x2y1/QAAAAEE9EDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKxA9AAAACsQPQAAwApEDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKxA9AAAACsQPQAAwApEDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwQoTTAwCAbVIeXO/0CI12eME4p0cAmo0zPQAAwApEDwAAsALRAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKxA9AAAACsQPQAAwApEDwAAsALRAwAArBDh9AAAgNCX8uB6p0dotMMLxjk9AkIMZ3oAAIAViB4AAGAFogcAAFiB6AEAAFYgegAAgBWIHgAAYAWiBwAAWIHoAQAAViB6AACAFYgeAABgBaIHAABYgegBAABWIHoAAIAViB4AAGAFogcAAFghwukBAABoCSkPrnd6hEY7vGCc0yOc0zjTAwAArED0AAAAKxA9AADACkQPAACwAtEDAACsQPQAAAArED0AAMAKfE4PAAAhgs8Walmc6QEAAFYgegAAgBWIHgAAYIWwiJ4lS5YoJSVF7dq10/Dhw/Xvf//b6ZEAAECYCfnoeeWVVzRr1izNnTtXH374oQYPHqz09HSVlpY6PRoAAAgjIR89Cxcu1G233aapU6eqf//+Wrp0qTp06KDly5c7PRoAAAgjIf2W9ZqaGhUUFCg7O9u/rE2bNkpLS1N+fn69j6murlZ1dbX/fnl5uSTJ5/MFfb666q+Dvk8AAMJJS/z/+t39GmOCts+Qjp4vv/xSp06dUnx8fMDy+Ph4HThwoN7HzJ8/X/PmzTtjeVJSUovMCACAzTyLW3b/FRUV8ng8QdlXSEdPU2RnZ2vWrFn++3V1dTpx4oTi4uLkcrkcnMxOPp9PSUlJOnr0qNxut9PjWI1jEVo4HqGDYxE6vnssOnXqpIqKCnXv3j1o+w/p6OnSpYvOO+88lZSUBCwvKSlRQkJCvY+JiopSVFRUwLKYmJiWGhEN5Ha7eTEJERyL0MLxCB0ci9Bx+lgE6wzPaSF9IXPbtm01dOhQ5eTk+JfV1dUpJydHXq/XwckAAEC4CekzPZI0a9YsTZkyRZdddpkuv/xyLV68WCdPntTUqVOdHg0AAISRkI+eG2+8UV988YUeeeQRFRcX65JLLtHGjRvPuLgZoSkqKkpz584941eOaH0ci9DC8QgdHIvQ0dLHwmWC+V4wAACAEBXS1/QAAAAEC9EDAACsQPQAAAArED0AAMAKRA+a7dFHH5XL5Qq49e3b17++qqpKWVlZiouLU3R0tDIyMs74wEk03datWzV+/Hh1795dLpdLr776asB6Y4weeeQRJSYmqn379kpLS9Onn34asM2JEyeUmZkpt9utmJgYTZs2TZWVla34LM4NP3YsbrnlljN+VsaMGROwDcciOObPn69hw4apU6dO6tatmyZOnKjCwsKAbRry2nTkyBGNGzdOHTp0ULdu3fTAAw/o22+/bc2nEvYaciyuvvrqM3427rzzzoBtgnEsiB4ExcUXX6zjx4/7b++9955/3cyZM/XGG29ozZo1ysvL07FjxzRp0iQHpz23nDx5UoMHD9aSJUvqXf/EE0/oqaee0tKlS7V9+3Z17NhR6enpqqqq8m+TmZmp/fv3a9OmTXrzzTe1detW3X777a31FM4ZP3YsJGnMmDEBPysvv/xywHqORXDk5eUpKytL27Zt06ZNm1RbW6vRo0fr5MmT/m1+7LXp1KlTGjdunGpqavTBBx/ohRde0MqVK/XII4848ZTCVkOOhSTddtttAT8bTzzxhH9d0I6FAZpp7ty5ZvDgwfWuKysrM5GRkWbNmjX+ZZ988omRZPLz81tpQntIMuvWrfPfr6urMwkJCebJJ5/0LysrKzNRUVHm5ZdfNsYY8/HHHxtJZseOHf5t3nrrLeNyucznn3/earOfa75/LIwxZsqUKWbChAlnfQzHouWUlpYaSSYvL88Y07DXpg0bNpg2bdqY4uJi/zbPPvuscbvdprq6unWfwDnk+8fCGGN+9rOfmXvuueesjwnWseBMD4Li008/Vffu3dWzZ09lZmbqyJEjkqSCggLV1tYqLS3Nv23fvn2VnJys/Px8p8a1RlFRkYqLiwO+/x6PR8OHD/d///Pz8xUTE6PLLrvMv01aWpratGmj7du3t/rM57rc3Fx169ZNffr00V133aWvvvrKv45j0XLKy8slSbGxsZIa9tqUn5+vgQMHBnwYbnp6unw+n/bv39+K059bvn8sTnvppZfUpUsXDRgwQNnZ2fr666/964J1LEL+E5kR+oYPH66VK1eqT58+On78uObNm6errrpK+/btU3Fxsdq2bXvGH32Nj49XcXGxMwNb5PT3+PufYP7d739xcbG6desWsD4iIkKxsbEcoyAbM2aMJk2apNTUVB06dEi///3vNXbsWOXn5+u8887jWLSQuro63XvvvfrJT36iAQMGSFKDXpuKi4vr/dk5vQ6NV9+xkKRf/epX6tGjh7p37669e/dq9uzZKiws1Nq1ayUF71gQPWi2sWPH+v89aNAgDR8+XD169NA//vEPtW/f3sHJgNBy0003+f89cOBADRo0SL169VJubq5GjRrl4GTntqysLO3bty/gWkM442zH4rvXrQ0cOFCJiYkaNWqUDh06pF69egXt6/PrLQRdTEyMLrroIh08eFAJCQmqqalRWVlZwDYlJSVKSEhwZkCLnP4ef/8dKd/9/ickJKi0tDRg/bfffqsTJ05wjFpYz5491aVLFx08eFASx6IlTJ8+XW+++abeeecdXXDBBf7lDXltSkhIqPdn5/Q6NM7ZjkV9hg8fLkkBPxvBOBZED4KusrJShw4dUmJiooYOHarIyEjl5OT41xcWFurIkSPyer0OTmmH1NRUJSQkBHz/fT6ftm/f7v/+e71elZWVqaCgwL/Nli1bVFdX53/hQcv4z3/+o6+++kqJiYmSOBbBZIzR9OnTtW7dOm3ZskWpqakB6xvy2uT1evXRRx8FhOimTZvkdrvVv3//1nki54AfOxb12b17tyQF/GwE5Vg04cJrIMB9991ncnNzTVFRkXn//fdNWlqa6dKliyktLTXGGHPnnXea5ORks2XLFrNz507j9XqN1+t1eOpzR0VFhdm1a5fZtWuXkWQWLlxodu3aZT777DNjjDELFiwwMTEx5rXXXjN79+41EyZMMKmpqeabb77x72PMmDHm0ksvNdu3bzfvvfee6d27t5k8ebJTTyls/dCxqKioMPfff7/Jz883RUVFZvPmzWbIkCGmd+/epqqqyr8PjkVw3HXXXcbj8Zjc3Fxz/Phx/+3rr7/2b/Njr03ffvutGTBggBk9erTZvXu32bhxo+natavJzs524imFrR87FgcPHjSPPfaY2blzpykqKjKvvfaa6dmzpxkxYoR/H8E6FkQPmu3GG280iYmJpm3btub88883N954ozl48KB//TfffGN++9vfms6dO5sOHTqY66+/3hw/ftzBic8t77zzjpF0xm3KlCnGmP+9bX3OnDkmPj7eREVFmVGjRpnCwsKAfXz11Vdm8uTJJjo62rjdbjN16lRTUVHhwLMJbz90LL7++mszevRo07VrVxMZGWl69OhhbrvttoC34BrDsQiW+o6DJLNixQr/Ng15bTp8+LAZO3asad++venSpYu57777TG1tbSs/m/D2Y8fiyJEjZsSIESY2NtZERUWZCy+80DzwwAOmvLw8YD/BOBau/zcQAADAOY1regAAgBWIHgAAYAWiBwAAWIHoAQAAViB6AACAFYgeAABgBaIHAABYgegBAABWIHoABIXL5dKrr77a4O1TUlK0ePHiFpsHAL6P6AHQILfccosmTpx41vXHjx/X2LFjG7y/HTt26Pbbbw/CZA0zf/58nXfeeXryySdb7WsCCC1ED4CgSEhIUFRUVIO379q1qzp06NCCEwVavny5fve732n58uU/um1NTU0rTASgtRE9AILiu7/euvLKKzV79uyA9V988YUiIyO1detWSWf+esvlcun555/X9ddfrw4dOqh37956/fXXA/bx+uuvq3fv3mrXrp2uueYavfDCC3K5XCorK/vB2fLy8vTNN9/osccek8/n0wcffBCw/tFHH9Ull1yi559/XqmpqWrXrp0kqaysTLfeequ6du0qt9utkSNHas+ePf7HHTp0SBMmTFB8fLyio6M1bNgwbd68uTHfNgCtiOgBEHSZmZlavXq1vvv3jF955RV1795dV1111VkfN2/ePP3yl7/U3r17dd111ykzM1MnTpyQJBUVFemGG27QxIkTtWfPHt1xxx166KGHGjTPsmXLNHnyZEVGRmry5MlatmzZGdscPHhQ//rXv7R27Vrt3r1bkvSLX/xCpaWleuutt1RQUKAhQ4Zo1KhR/pkqKyt13XXXKScnR7t27dKYMWM0fvx4HTlypKHfKgCtKSh/Nx7AOW/KlClmwoQJZ10vyaxbt84YY0xpaamJiIgwW7du9a/3er1m9uzZ/vs9evQwixYtCnj8ww8/7L9fWVlpJJm33nrLGGPM7NmzzYABAwK+5kMPPWQkmf/+979nnau8vNy0b9/e7N692xhjzK5du0x0dLSpqKjwbzN37lwTGRlpSktL/cveffdd43a7TVVVVcD+evXqZZ577rmzfr2LL77YPP3002ddD8A5nOkBEHRdu3bV6NGj9dJLL0n631ma/Px8ZWZm/uDjBg0a5P93x44d5Xa7VVpaKkkqLCzUsGHDAra//PLLf3SWl19+Wb169dLgwYMlSZdccol69OihV155JWC7Hj16qGvXrv77e/bsUWVlpeLi4hQdHe2/FRUV6dChQ5L+d6bn/vvvV79+/RQTE6Po6Gh98sknnOkBQlSE0wMAODdlZmbq7rvv1tNPP61Vq1Zp4MCBGjhw4A8+JjIyMuC+y+VSXV1ds+ZYtmyZ9u/fr4iI//9yV1dXp+XLl2vatGn+ZR07dgx4XGVlpRITE5Wbm3vGPmNiYiRJ999/vzZt2qQ//vGPuvDCC9W+fXvdcMMNXAgNhCiiB0CLmDBhgm6//XZt3LhRq1at0s0339ys/fXp00cbNmwIWLZjx44ffMxHH32knTt3Kjc3V7Gxsf7lJ06c0NVXX60DBw6ob9++9T52yJAhKi4uVkREhFJSUurd5v3339ctt9yi66+/XtL/Qunw4cMNf1IAWhXRA6DBysvL/Rf5nhYXF6ekpKQztu3YsaMmTpyoOXPm6JNPPtHkyZOb9bXvuOMOLVy4ULNnz9a0adO0e/durVy5UtL/zgjVZ9myZbr88ss1YsSIM9YNGzZMy5YtO+vn9qSlpcnr9WrixIl64okndNFFF+nYsWNav369rr/+el122WXq3bu31q5dq/Hjx8vlcmnOnDnNPjMFoOVwTQ+ABsvNzdWll14acJs3b95Zt8/MzNSePXt01VVXKTk5uVlfOzU1Vf/85z+1du1aDRo0SM8++6z/3Vv1fT5QTU2N/v73vysjI6Pe/WVkZOjFF19UbW1tvetdLpc2bNigESNGaOrUqbrooot000036bPPPlN8fLwkaeHChercubOuvPJKjR8/Xunp6RoyZEiznieAluMy5jvvKQWAMPKHP/xBS5cu1dGjR50eBUAY4NdbAMLGM888o2HDhikuLk7vv/++nnzySU2fPt3psQCECaIHQNj49NNP9fjjj+vEiRNKTk7Wfffdp+zsbKfHAhAm+PUWAACwAhcyAwAAKxA9AADACkQPAACwAtEDAACsQPQAAAArED0AAMAKRA8AALAC0QMAAKzwf/Dp0EQ29BBXAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Your code here\n",
|
|
"\n",
|
|
"plt.hist(dataset[\"living_area\"])\n",
|
|
"plt.xlabel(\"Living Area\")\n",
|
|
"plt.ylabel(\"Count\")\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b9a954dd",
|
|
"metadata": {},
|
|
"source": [
|
|
"c) Plot a scatter plot of renting price as a function of living area"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 147,
|
|
"id": "6d015af9",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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yJAhpj5du3YN999/P7Zv344jR44gLS0NI0aMQElJidgfFRF5kkBE5CGTJk0SRo4cafU8AOHzzz8XBEEQysvLhSZNmgi7d+82nddoNEJWVpbpebt27YSlS5eavf6FF14wPb927ZoAQNiyZYsgCIKQlZUlJCUlmb3n888/LwAQrly5YrVfOp1OCA8PFwoKCgRBEIQjR44IkZGRwtWrV01tFi5cKISEhAjl5eWmY998842gUCiEqqoqs+t16NBBePfdd62+35133in885//tHqeiLyHI05EJEktW7bEsGHDsHbtWgC3R4vy8vIwfvz4Rl/Xo0cP058jIiKgUChQXl4OADh16hT69u1r1r5fv342+7J+/Xp06NABd911FwCgZ8+eaNeuHf773/+atWvXrh1atmxpen706FFcu3YNMTExiIyMND2Ki4tx9uxZALdHnJ5++ml069YNUVFRiIyMxHfffccRJyKJauLtDhARWTN+/Hj8+c9/xj//+U+sW7cO3bt3R/fu3Rt9TUhIiNlzmUwGg8HgVD9WrVqFEydOoEmT335lGgwGvP/++5gyZYrpWEREhNnrrl27BrVajZ07dza4ZlRUFADg6aefRm5uLv72t7+hY8eOCA8Px5gxY5hcTiRRDJyISLJGjhyJ6dOnIycnB+vWrcPEiROdul6XLl2wefNms2OHDh1q9DXHjx/Ht99+i507dyI6Otp0vKKiAr///e9x8uRJdO3a1eJrk5OTodVq0aRJE7Rv395im7179+Kxxx7Dgw8+COB2sHXu3DnxN0VEHsXAiYg8SqfTmRKnjWJiYtCmTZsGbSMiIjBq1CjMnz8f3333HcaNG+fUe//xj3/Em2++iaysLEyZMgUFBQVYvXo1gNsjU5asWrUK/fr1w6BBgxqc69u3L1atWmW1rlNKSgo0Gg1GjRqFJUuWoHPnzrh48SKys7Px4IMPok+fPujUqRM2bNiAESNGQCaTYf78+U6PkBGR+zDHiYg8aufOnejVq5fZY9GiRVbbjx8/HkePHsW9996Ltm3bOvXeCQkJ+Oyzz7Bhwwb06NEDy5cvN62qs1Q/6ubNm1izZg0yMjIsXi8jIwMfffQRampqLJ6XyWTYvHkzBg0ahMmTJ6Nz584YO3YsfvzxR8TFxQEA3nzzTTRv3hx33303RowYgdTUVCQnJzt1n0TkPjJBqLPWl4gowPz1r3/FihUrcP78eW93hYh8AKfqiCigLFu2DH379kVMTAz27t2LN954A7NmzfJ2t4jIRzBwIqKAcvr0abzyyiuoqKhA27Zt8dRTT2HevHne7hYR+QhO1RERERGJxORwIiIiIpEYOBERERGJxMCJiIiISCQGTkREREQiMXAiIiIiEomBExEREZFIDJyIiIiIRGLgRERERCTS/wfyUY9ut+UUuwAAAABJRU5ErkJggg==",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Your code here\n",
|
|
"\n",
|
|
"plt.scatter(dataset[\"living_area\"], dataset[\"rent_price\"])\n",
|
|
"plt.xlabel(\"Living Area\")\n",
|
|
"plt.ylabel(\"Rent price\")\n",
|
|
"\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9c787c4b",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Exercise 2 - Normal equations for linear regression"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "859bbd89",
|
|
"metadata": {},
|
|
"source": [
|
|
"a) Implement the closed form solution to this problem using the following normal equation:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "cf1d5eda",
|
|
"metadata": {},
|
|
"source": [
|
|
"<div><div style=\"display: table-cell; width: 100%;\"><center>$\\theta = (X^{T}X)^{-1}X^{T}\\vec{y}$</center></div><div style=\"display: table-cell; width: 100%;\">$(3)$</div></div>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c3c8e4c1",
|
|
"metadata": {},
|
|
"source": [
|
|
"Assuming $x$ is the living area and $y$ is the renting price. Use `numpy` for the vector operations. Plot the computed line on top of the scatter plot of exercise 1."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 148,
|
|
"id": "19ffbbd9",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Theta : [240.07710727 26.33242457]\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Your code here\n",
|
|
"X = dataset[\"living_area\"].to_frame()\n",
|
|
"X.insert(0, \"x0\", 1) # add the column full of ones at the start, this represents x0\n",
|
|
"X = np.array(X)\n",
|
|
"\n",
|
|
"y = np.array(dataset[\"rent_price\"])\n",
|
|
"\n",
|
|
"theta = np.linalg.inv(X.T @ X) @ X.T @ y \n",
|
|
"\n",
|
|
"print(f\"Theta : {theta}\")\n",
|
|
"\n",
|
|
"\n",
|
|
"plt.scatter(dataset[\"living_area\"], dataset[\"rent_price\"])\n",
|
|
"plt.xlabel(\"Living Area\")\n",
|
|
"plt.ylabel(\"Rent price\")\n",
|
|
"\n",
|
|
"y_regr = theta[0] + theta[1] * X[:,1]\n",
|
|
"plt.plot(X[:,1], y_regr, color='red', label='Regression line')\n",
|
|
"\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ccc5d7b9",
|
|
"metadata": {},
|
|
"source": [
|
|
"b) Compute the overall cost value according to the following equation:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "31a38211",
|
|
"metadata": {},
|
|
"source": [
|
|
"<div><div style=\"display: table-cell; width: 100%;\"><center>$J(\\theta) = \\frac{1}{2N} \\sum_{n=1}^{N} (h_{\\theta}(\\mathbf{x}_{n}) - y_{n})^{2}$</center></div><div style=\"display: table-cell; width: 100%;\">$(2)$</div></div>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "db65a2fa",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" Overall cost : 138034.95779787414\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Your code here\n",
|
|
"def cost_J(y_pred, y):\n",
|
|
" return (1/(2*len(y))) * np.sum((y_pred - y)**2)\n",
|
|
"\n",
|
|
"y_pred = X @ theta\n",
|
|
"# print(y_pred)\n",
|
|
"# print(X)\n",
|
|
"closed_form_cost = cost_J(y_pred, y)\n",
|
|
"print(f\" Overall cost : {closed_form_cost}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "38fed9aa",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Exercise 3 - Gradient descent for linear regression"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d946ac48",
|
|
"metadata": {},
|
|
"source": [
|
|
"Implement the _full batch_ gradient descent algorithm for the previous problem. As seen in the\n",
|
|
"theory, the update rules are:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9d1618d6",
|
|
"metadata": {},
|
|
"source": [
|
|
"<div><div style=\"display: table-cell; width: 100%;\"><center>$\\theta_{0} \\leftarrow \\theta_{0} - \\alpha \\frac{1}{N} \\sum_{n=1}^{N} (h_{\\theta}(\\mathbf{x}_{n}) - y_{n})$</center></div><div style=\"display: table-cell; width: 100%;\">$(6)$</div></div>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6c0049d3",
|
|
"metadata": {},
|
|
"source": [
|
|
"<div><div style=\"display: table-cell; width: 100%;\"><center>$\\theta_{1} \\leftarrow \\theta_{1} - \\alpha \\frac{1}{N} \\sum_{n=1}^{N} (h_{\\theta}(\\mathbf{x}_{n}) - y_{n}) x_{n,1}$</center></div><div style=\"display: table-cell; width: 100%;\">$(7)$</div></div>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3e0f8c42",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Remark** You need to iterate several times over the training set. If you have problems of convergence, you need to use a smaller value of $\\alpha$. Values such as $0.000001$ are common."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "9ca79a3d",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Theta = [240.07710713 26.33242457]\n",
|
|
"Cost = 138034.95779787414\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Your code here\n",
|
|
"\n",
|
|
"theta = np.zeros((2))\n",
|
|
"\n",
|
|
"\n",
|
|
"alpha = 0.0001 # i got the best results with those parameters\n",
|
|
"\n",
|
|
"max_iter = 1000000\n",
|
|
"costs = []\n",
|
|
"\n",
|
|
"for i in range(0, max_iter): # we could also use a delta on the cost function with a while to stop when the cost is not improving but we wanted to see the curve after x iterations\n",
|
|
" y_pred = X @ theta\n",
|
|
" theta[0] = theta[0] - alpha * (1/len(y)) * np.sum(y_pred - y)\n",
|
|
" theta[1] = theta[1] - alpha * (1/len(y)) * np.sum((y_pred - y) * X[:,1]) \n",
|
|
"\n",
|
|
" c = cost_J(y_pred, y) # to plot the costs over iters\n",
|
|
" costs.append(c)\n",
|
|
"\n",
|
|
"y_pred = X @ theta\n",
|
|
"print(f\"Theta = {theta}\")\n",
|
|
"print(f\"Cost = {cost_J(y_pred, y)}\")\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "da5121b6",
|
|
"metadata": {},
|
|
"source": [
|
|
"a) Plot the cost value (Equation 2) as a function of the iterations. What do you observe?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 167,
|
|
"id": "5a34ad43",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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oc2bN3/pmJKSEt10001yOp0aMmSICgsLO7dIK4QVFRVZUVFR1tq1a62DBw9a8+fPt6677jqrurq62f579uyxIiMjrSeffNJ67733rIcfftjq3r27tX///i6uPLjYnedvf/vb1sqVK63y8nLr0KFD1ne/+13L7XZbH330URdXHnzszvUlx44ds/r06WNNmjTJmjlzZtcUG8TsznNDQ4N18803W9/85jetN9980zp27JhVUlJiVVRUdHHlwcXuPP/617+2nE6n9etf/9o6duyYtWPHDisxMdF64IEHurjy4LJt2zZr8eLF1quvvmpJsjZt2tRq/6NHj1rXXHONtWjRIuu9996zfv7zn1uRkZHW9u3bO63GkA4jY8eOtfLy8gKPGxsbraSkJKugoKDZ/nfccYc1ffr0Jm3jxo2z/v3f/71T6wx2duf5X124cMGKiYmxfvnLX3ZWiSGjPXN94cIFa8KECdbzzz9v5ebmEkbawO48r1q1yho0aJB17ty5rioxJNid57y8POtrX/tak7ZFixZZEydO7NQ6Q0lbwsgPf/hD68Ybb2zSNnv2bCsrK6vT6grZr2nOnTunsrIyZWZmBtoiIiKUmZmp0tLSZseUlpY26S9JWVlZLfZH++b5X/3973/X+fPnFRsb21llhoT2zvWjjz6quLg4zZ07tyvKDHrtmeff/e53ysjIUF5enuLj4zVq1Cj95Cc/UWNjY1eVHXTaM88TJkxQWVlZ4Kuco0ePatu2bfrmN7/ZJTWHCxOfhbYXygsWp0+fVmNjY2ABv0vi4+P117/+tdkxXq+32f5er7fT6gx27Znnf/Xf//3fSkpKuuyPH021Z67ffPNNvfDCC6qoqOiCCkNDe+b56NGjev311/Wd73xH27Zt05EjR/T9739f58+f15IlS7qi7KDTnnn+9re/rdOnT+uWW26RZVm6cOGC7r33Xj300ENdUXLYaOmz0Ofz6bPPPlOPHj06fJ8he2QEwWHp0qUqKirSpk2bFB0dbbqckFJbW6s5c+boF7/4hXr37m26nJDm9/sVFxenNWvWKD09XbNnz9bixYu1evVq06WFlJKSEv3kJz/Rs88+q3feeUevvvqqXnvtNT322GOmS8MVCtkjI71791ZkZKSqq6ubtFdXVyshIaHZMQkJCbb6o33zfMmyZcu0dOlS/fGPf1RKSkpnlhkS7M71hx9+qL/97W+aMWNGoM3v90uSunXrpsOHD2vw4MGdW3QQas/fdGJiorp3767IyMhA24gRI+T1enXu3DlFRUV1as3BqD3z/D//8z+aM2eO5s2bJ0lKTk5WfX297rnnHi1evFgREfz/dUdo6bPQ5XJ1ylERKYSPjERFRSk9PV3FxcWBNr/fr+LiYmVkZDQ7JiMjo0l/Sdq1a1eL/dG+eZakJ598Uo899pi2b9+um2++uStKDXp253r48OHav3+/KioqAtu3vvUtTZ06VRUVFfJ4PF1ZftBoz9/0xIkTdeTIkUDYk6T3339fiYmJBJEWtGee//73v18WOC4FQItl1jqMkc/CTjs19ipQVFRkOZ1Oq7Cw0Hrvvfese+65x7ruuussr9drWZZlzZkzx3rwwQcD/ffs2WN169bNWrZsmXXo0CFryZIlXNrbBnbneenSpVZUVJT1yiuvWCdOnAhstbW1pt5C0LA71/+Kq2naxu48V1VVWTExMdaCBQusw4cPW1u3brXi4uKsxx9/3NRbCAp253nJkiVWTEyM9dJLL1lHjx61du7caQ0ePNi64447TL2FoFBbW2uVl5db5eXlliTr6aeftsrLy63KykrLsizrwQcftObMmRPof+nS3v/6r/+yDh06ZK1cuZJLe6/Uz3/+c6tfv35WVFSUNXbsWOutt94KPDd58mQrNze3Sf/f/OY31tChQ62oqCjrxhtvtF577bUurjg42Znn/v37W5Iu25YsWdL1hQchu3/T/4ww0nZ253nv3r3WuHHjLKfTaQ0aNMh64oknrAsXLnRx1cHHzjyfP3/e+tGPfmQNHjzYio6Otjwej/X973/f+vTTT7u+8CDypz/9qdn/5l6a29zcXGvy5MmXjUlNTbWioqKsQYMGWevWrevUGh2WxbEtAABgTsieMwIAAIIDYQQAABhFGAEAAEYRRgAAgFGEEQAAYBRhBAAAGEUYAQAARhFGAACAUYQRAADC1O7duzVjxgwlJSXJ4XBo8+bNtl/DsiwtW7ZMQ4cOldPpVJ8+ffTEE0/Yeo2QXbUXAAC0rr6+XqNHj9b3vvc93Xbbbe16jYULF2rnzp1atmyZkpOTdebMGZ05c8bWa3A7eAAAIIfDoU2bNik7OzvQ1tDQoMWLF+ull17S2bNnNWrUKP30pz/VlClTJEmHDh1SSkqKDhw4oGHDhrV733xNAwAAmrVgwQKVlpaqqKhI7777rmbNmqVvfOMb+uCDDyRJv//97zVo0CBt3bpVAwcO1IABAzRv3jzbR0YIIwAA4DJVVVVat26dNm7cqEmTJmnw4MH6wQ9+oFtuuUXr1q2TJB09elSVlZXauHGj1q9fr8LCQpWVlen222+3tS/OGQEAAJfZv3+/GhsbNXTo0CbtDQ0Nuv766yVJfr9fDQ0NWr9+faDfCy+8oPT0dB0+fLjNX90QRgAAwGXq6uoUGRmpsrIyRUZGNnmuZ8+ekqTExER169atSWAZMWKEpItHVggjAACg3dLS0tTY2KiTJ09q0qRJzfaZOHGiLly4oA8//FCDBw+WJL3//vuSpP79+7d5X1xNAwBAmKqrq9ORI0ckXQwfTz/9tKZOnarY2Fj169dPd911l/bs2aPly5crLS1Np06dUnFxsVJSUjR9+nT5/X6NGTNGPXv21IoVK+T3+5WXlyeXy6WdO3e2uQ7CCAAAYaqkpERTp069rD03N1eFhYU6f/68Hn/8ca1fv14ff/yxevfurfHjx+vHP/6xkpOTJUmffPKJ7rvvPu3cuVPXXnutpk2bpuXLlys2NrbNdRBGAACAUVzaCwAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwKj/D83cC8kh/J9qAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Your code here\n",
|
|
"plt.plot(range(0, len(costs)), costs)\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "63917be0",
|
|
"metadata": {},
|
|
"source": [
|
|
"In this scenario, we can clearly observe a plateau of the cost function. This means that we have reached a local minimum while trying to minimise the cost."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c5903f37",
|
|
"metadata": {},
|
|
"source": [
|
|
"b) Imagine a stopping criterion, i.e. when do we stop iterating on the training set?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "93905b85",
|
|
"metadata": {},
|
|
"source": [
|
|
"The stopping criterion can be a small delta between each calculations of the cost. Like if the cost did not change of at least delta, this means we are in a plateau and should stop."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "7667bec1",
|
|
"metadata": {},
|
|
"source": [
|
|
"c) Plot the computed line $h_{\\theta}(\\mathbf{x})$ on top of the scatter plot of exercise 1."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 152,
|
|
"id": "e80c04b3",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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119/RatWreDt7Y1HHnkE3333HWQyGQoKCiod2549e3D79m289957UKlUOHDggOj67Nmz0alTJyxduhRhYWHw9vYGABQUFOD5559Hw4YN4e/vj759++L48eO6150/fx5Dhw5FUFAQateujW7dumH79u2m/NiIyIYYOBGRQxo5ciTWrVuH8ueQ/+9//0NISAgefPBBo6+bM2cOnn76aZw4cQKDBw/GyJEjkZ+fDwDIyMjAk08+iWHDhuH48eN48cUX8c4770gaz7JlyxATEwMPDw/ExMRg2bJlen3OnTuHn376CRs2bEBqaioA4KmnnkJubi62bt2KlJQUdOnSBf369dON6caNGxg8eDB27NiBY8eOYeDAgRgyZAgyMzOl/qiIyJYEIiIbGTt2rDB06FCj1wEIP//8syAIgpCbmyvUqlVL2Lt3r+66UqkU4uPjdd83a9ZMWLhwoej17777ru77GzduCACErVu3CoIgCPHx8UJERIToPd955x0BgHDt2jWj4yosLBR8fHyE1NRUQRAE4dixY0Lt2rWF69ev6/rMmjVL8PDwEHJzc3Vtv//+u+Dv7y8UFRWJ7teiRQvh66+/Nvp+9913n/DFF18YvU5E9sMZJyJySA0bNsSAAQOwevVqAJrZouTkZIwcObLS13Xo0EH3335+fvD390dubi4A4MyZM+jWrZuof/fu3ascy9q1a9GiRQt07NgRANCpUyc0a9YM//vf/0T9mjVrhoYNG+q+P378OG7cuIH69eujdu3auq+MjAycP38egGbG6Y033kC7du0QEBCA2rVr488//+SME5GDqmXvARARGTNy5Ei88sor+OKLL7BmzRq0b98e7du3r/Q1Hh4eou9lMhnUanW1xrFs2TKcOnUKtWrd+ytTrVZj+fLlmDBhgq7Nz89P9LobN24gODgYu3fv1rtnQEAAAOCNN95AUlIS/u///g8tW7aEj48PnnzySSaXEzkoBk5E5LCGDh2KF154AYmJiVizZg3GjBlTrfu1adMGW7ZsEbUdOXKk0tecPHkSf/zxB3bv3o169erp2vPz8/Hwww/j9OnTaNu2rcHXdunSBdnZ2ahVqxZCQ0MN9tm/fz/GjRuHxx9/HIAm2Lpw4YL0hyIim2LgREQ2VVhYqEuc1qpfvz6aNGmi19fPzw/Dhg3DjBkz8OeffyImJqZa7/3iiy/i008/RXx8PCZMmIDU1FSsXLkSgGZmypBly5ahe/fu6NOnj961bt26YdmyZUbrOkVGRkKpVGLYsGGYP38+WrdujStXrmDz5s14/PHHcf/996NVq1bYsGEDhgwZAplMhhkzZlR7hoyIrIc5TkRkU7t370bnzp1FX3PmzDHaf+TIkTh+/DgefPBBNG3atFrvHRYWhh9//BEbNmxAhw4dsHjxYt2uOkP1o+7cuYNVq1Zh+PDhBu83fPhwfP/99ygpKTF4XSaTYcuWLejTpw/Gjx+P1q1bY8SIEfjnn38QFBQEAPj0009Rt25dPPDAAxgyZAiioqLQpUuXaj0nEVmPTBDK7fUlIqphPvzwQyxZsgQXL16091CIyAlwqY6IapRFixahW7duqF+/Pvbv348FCxZgypQp9h4WETkJBk5EVKOcPXsWH3zwAfLz89G0aVO8/vrrmD59ur2HRUROgkt1RERERBIxOZyIiIhIIgZORERERBIxcCIiIiKSiIETERERkUQMnIiIiIgkYuBEREREJBEDJyIiIiKJGDgRERERSfT/U/rB2yrKbYwAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.scatter(dataset[\"living_area\"], dataset[\"rent_price\"])\n",
|
|
"plt.xlabel(\"Living Area\")\n",
|
|
"plt.ylabel(\"Rent price\")\n",
|
|
"\n",
|
|
"y_regr = theta[0] + theta[1] * X[:,1]\n",
|
|
"plt.plot(X[:,1], y_regr, color='red', label='Regression line')\n",
|
|
"\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d1fdf27b",
|
|
"metadata": {},
|
|
"source": [
|
|
"d) Compute the final cost value according to Equation 2 and compare it to the one of exercise 2. What can you conclude?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 153,
|
|
"id": "5e594f32",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"The best cost value is 138034.95779787409, the exercice 2 cost value is 138034.95779787414\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Your code here\n",
|
|
"\n",
|
|
"print(f\"The best cost value is {best_cost}, the exercice 2 cost value is {closed_form_cost}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "cd10b91b",
|
|
"metadata": {},
|
|
"source": [
|
|
"We took some time to experiment with the alpha and max_iter values to try to get the best possible result. It seems that the closed form formula is the best one but we can get really close by tweaking those two values. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "54727ff1",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Exercise 4 - Stochastic gradient descent for linear regression"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "32a00957",
|
|
"metadata": {},
|
|
"source": [
|
|
"Implement the stochastic gradient descent algorithm for the previous problem. As seen in the theory, the update rules are:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "636920d2",
|
|
"metadata": {},
|
|
"source": [
|
|
"<div><div style=\"display: table-cell; width: 100%;\"><center>$\\theta_{i} \\leftarrow \\theta_{i} - \\alpha (h_{\\theta}(\\mathbf{x}_{n}) - y_{n}) x_{n,i}$</center></div><div style=\"display: table-cell; width: 100%;\">$(8)$</div></div>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "3f693388",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"144176.78676766725\n",
|
|
"[ 0.32486065 28.59143527]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Your code here\n",
|
|
"import random\n",
|
|
"theta = np.zeros((2))\n",
|
|
"\n",
|
|
"\n",
|
|
"alpha = 0.000001 # i got the best results with those parameters\n",
|
|
"\n",
|
|
"max_iter = 1000\n",
|
|
"costs = []\n",
|
|
"\n",
|
|
"best_cost = np.inf\n",
|
|
"\n",
|
|
"for i in range(0, max_iter): # we could also use a delta on the cost function with a while to stop when the cost is not improving but we wanted to see the curve after x iterations\n",
|
|
" rand = int(random.random() * X.shape[0])\n",
|
|
" y_pred_stoch = X[rand] @ theta\n",
|
|
" theta[0] = theta[0] - alpha * (y_pred_stoch - y[rand])\n",
|
|
" theta[1] = theta[1] - alpha * (y_pred_stoch - y[rand]) * X[rand,1]\n",
|
|
"\n",
|
|
" y_pred = X @ theta\n",
|
|
" costs.append(cost_J(y_pred, y))\n",
|
|
"\n",
|
|
"\n",
|
|
"y_pred = X @ theta\n",
|
|
"print(cost_J(y_pred, y))\n",
|
|
"print(theta)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 178,
|
|
"id": "edbc5a14",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGsCAYAAAAPJKchAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAO41JREFUeJzt3X18VOWd///3mUkySUhmkgC5gwCRe+RWRAh43yilfC1sW78uSwve7lcLXSzdttJa/bWuG3ctVbu1oHUVrUUsreDKekejQJFwKyg3CiJIAiQBJMnkjkkyc35/TDIQSSATJnMyyev5eMyDzJnrnPmcKwnzznWuc45hmqYpAAAAi9isLgAAAHRvhBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFKEEQAAYKmICiMbNmzQLbfcoszMTBmGodWrVwe9DdM09etf/1pDhgyRw+FQnz599Oijj4a+WAAA0CZRVhcQjOrqao0ZM0Z33nmnvvWtb7VrGwsWLNC7776rX//61xo1apROnz6t06dPh7hSAADQVkak3ijPMAytWrVKM2fODCzzeDz6+c9/rldeeUXl5eUaOXKk/uM//kPXX3+9JOmTTz7R6NGjtWfPHg0dOtSawgEAQDMRdZjmYubPn6+CggKtWLFCH3/8sW699VZ9/etf12effSZJeuONN3TZZZdpzZo1ys7O1oABA3T33XczMgIAgIW6TBgpLCzUCy+8oJUrV+qaa67RwIED9a//+q+6+uqr9cILL0iSDh06pCNHjmjlypV66aWXtGzZMu3YsUPf+c53LK4eAIDuK6LmjFzI7t275fV6NWTIkGbLPR6PevbsKUny+XzyeDx66aWXAu3++7//W+PHj9f+/fs5dAMAgAW6TBipqqqS3W7Xjh07ZLfbm72WkJAgScrIyFBUVFSzwDJ8+HBJ/pEVwggAAOHXZcLIuHHj5PV6deLECV1zzTUttpkyZYoaGhr0+eefa+DAgZKkAwcOSJL69+8ftloBAMBZEXU2TVVVlQ4ePCjJHz5+85vf6IYbblBKSor69eun7373u/rggw+0ePFijRs3TidPnlR+fr5Gjx6t6dOny+fzacKECUpISNCTTz4pn8+nefPmyel06t1337V47wAA6J4iKoysW7dON9xww3nL586dq2XLlqm+vl7/9m//ppdeeknHjh1Tr169NGnSJP3yl7/UqFGjJEnHjx/XD37wA7377rvq0aOHpk2bpsWLFyslJSXcuwMAABRhYQQAAHQ9XebUXgAAEJkIIwAAwFIRcTaNz+fT8ePHlZiYKMMwrC4HAAC0gWmaqqysVGZmpmy21sc/IiKMHD9+XFlZWVaXAQAA2qGoqEh9+/Zt9fWICCOJiYmS/DvjdDotrgYAALSF2+1WVlZW4HO8NRERRpoOzTidTsIIAAAR5mJTLJjACgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUoQRAABgKcIIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLEUYAAIClunUYeX7jYT24ercOnqi0uhQAALqtoMLIkiVLNHr06MDdc3NycvTWW2+12n7ZsmUyDKPZIzY29pKLDpU3Pj6ulzcX6vOT1VaXAgBAtxUVTOO+ffvqscce0+DBg2Wapl588UXNmDFDO3fu1OWXX97iOk6nU/v37w88v9hthMMpKS5aklRRU29xJQAAdF9BhZFbbrml2fNHH31US5Ys0ebNm1sNI4ZhKD09vf0VdqCk+BhJUnltncWVAADQfbV7zojX69WKFStUXV2tnJycVttVVVWpf//+ysrK0owZM7R3796Lbtvj8cjtdjd7dARX48hIOSMjAABYJugwsnv3biUkJMjhcOjee+/VqlWrNGLEiBbbDh06VM8//7xef/11vfzyy/L5fJo8ebKOHj16wffIy8uTy+UKPLKysoIts02S4hvDSC1hBAAAqximaZrBrFBXV6fCwkJVVFToL3/5i5577jmtX7++1UByrvr6eg0fPlyzZs3SI4880mo7j8cjj8cTeO52u5WVlaWKigo5nc5gyr2gZR8c1v/3xj5NH5Whp2dfEbLtAgAA/+e3y+W66Od3UHNGJCkmJkaDBg2SJI0fP17btm3TU089pWeeeeai60ZHR2vcuHE6ePDgBds5HA45HI5gSwta05yRT0rc8vlM2WydZ3ItAADdxSVfZ8Tn8zUbxbgQr9er3bt3KyMj41LfNiSuyk6RJB06Wa1PS7jWCAAAVghqZGTRokWaNm2a+vXrp8rKSi1fvlzr1q3TO++8I0maM2eO+vTpo7y8PEnSr371K02aNEmDBg1SeXm5Hn/8cR05ckR333136PekHTKT4jSgZ7y++LJG1XUNVpcDAEC3FFQYOXHihObMmaPi4mK5XC6NHj1a77zzjm666SZJUmFhoWy2s4MtZWVluueee1RSUqLk5GSNHz9emzZtatP8knCJifLXW+/1WVwJAADdU9ATWK3Q1gkw7fGNp/6ufcVuvXjnVbpuSO+QbhsAgO6srZ/f3freNJIU3TQy0sDICAAAVuj2YSTG7j+DpsFHGAEAwArdPoxENc5xqfN2+qNVAAB0Sd0+jHCYBgAAa3X7MMJhGgAArNXtwwiHaQAAsFa3DyMcpgEAwFqEEQ7TAABgKcKIrekKrBymAQDACoSRKP/ISB2HaQAAsARhxO7vAg7TAABgDcKIncM0AABYiTBi5zANAABWIoxwmAYAAEsRRpoO0zRwmAYAACsQRhoP09R7GRkBAMAKhBF70+XgCSMAAFih24cRR5RdkuRhAisAAJbo9mEkPsYfRmrrvBZXAgBA99Ttw0hsdGMYqSeMAABghW4fRppGRmoYGQEAwBLdPozENYaRM4yMAABgCcJIdNPISIPFlQAA0D0RRjhMAwCApbp9GInnMA0AAJbq9mGk6TBNvdfkKqwAAFiAMNI4MiJxei8AAFbo9mEkxm6T3ea/P82OL8osrgYAgO6n24cRwzA0eWBPSdLfPim1uBoAALqfbh9GJOlrw1IlSWU1dRZXAgBA90MYkZTcI0aSVFZdb3ElAAB0P4QRScnxjWGEkREAAMKOMCIppQdhBAAAqxBGJCXFR0vyH6YxTdPiagAA6F4II5KSGg/T1Hl9OlPPhc8AAAgnwoikHjF2NV5qRJVnmMQKAEA4EUbkv9ZIgiNKklTp4e69AACEE2GkUWKsf95I5RnCCAAA4UQYaZQY2zgywmEaAADCKqgwsmTJEo0ePVpOp1NOp1M5OTl66623LrjOypUrNWzYMMXGxmrUqFF68803L6ngjtJ0mKaKkREAAMIqqDDSt29fPfbYY9qxY4e2b9+uG2+8UTNmzNDevXtbbL9p0ybNmjVLd911l3bu3KmZM2dq5syZ2rNnT0iKD6WzIyOEEQAAwskwL/HCGikpKXr88cd11113nffabbfdpurqaq1ZsyawbNKkSRo7dqyWLl3a5vdwu91yuVyqqKiQ0+m8lHJb9YNXduqNj47rwenDdfc1l3XIewAA0J209fO73XNGvF6vVqxYoerqauXk5LTYpqCgQLm5uc2WTZ06VQUFBRfctsfjkdvtbvboaOlOhySp6HRNh78XAAA4K+gwsnv3biUkJMjhcOjee+/VqlWrNGLEiBbblpSUKC0trdmytLQ0lZSUXPA98vLy5HK5Ao+srKxgywza5ZkuSdLe4x0ffAAAwFlBh5GhQ4dq165d2rJli+677z7NnTtX+/btC2lRixYtUkVFReBRVFQU0u235PJM//DRvmK3vD4uCQ8AQLhEBbtCTEyMBg0aJEkaP368tm3bpqeeekrPPPPMeW3T09NVWlrabFlpaanS09Mv+B4Oh0MOhyPY0i7JZb0TFBttU02dV4dPVWtQakJY3x8AgO7qkq8z4vP55PF4WnwtJydH+fn5zZatXbu21TkmVrLbDA3PODs6AgAAwiOokZFFixZp2rRp6tevnyorK7V8+XKtW7dO77zzjiRpzpw56tOnj/Ly8iRJCxYs0HXXXafFixdr+vTpWrFihbZv365nn3029HsSAgN7J2hnYbmOnKq2uhQAALqNoMLIiRMnNGfOHBUXF8vlcmn06NF65513dNNNN0mSCgsLZbOdHWyZPHmyli9frgcffFA/+9nPNHjwYK1evVojR44M7V6ESP+UeElSIWfUAAAQNpd8nZFwCMd1RiTp9V3HtGDFLk0YkKyV907usPcBAKA76PDrjHRFTWfU7DhSph1HyiyuBgCA7oEwco5BqYn6+uXp8pnSI2tCe7oyAABoGWHkK34543IZhrSrqFwlFWesLgcAgC6PMPIVac5Y9U2OkyQdK2ciKwAAHY0w0oLk+BhJUnlNvcWVAADQ9RFGWuCKi5ZEGAEAIBwIIy1IahoZqSWMAADQ0QgjLUhqHBmpqKmzuBIAALo+wkgLkuIbD9MwMgIAQIcjjLSAOSMAAIQPYaQFzBkBACB8CCMtYM4IAADhQxhpAXNGAAAIH8JICwJhhDkjAAB0OMJIC1xx/jkjFbX18vpMi6sBAKBrI4y0wBUXLbvNkCTlf1JqcTUAAHRthJEWxETZNH1UhiRp7T7CCAAAHYkw0oqvj0yXJB0orbS4EgAAujbCSCuGpCVKkg6UVsnHvBEAADoMYaQVA3rGK8ZuU229V8fKa60uBwCALosw0ooou00DUxMkMYkVAICORBi5gFF9nJKklwqOWFwJAABdF2HkAmZd1U+S9GU1l4UHAKCjEEYuIMMVJ0mq9jTINJnECgBARyCMXEAPh12S1OAz5WnwWVwNAABdE2HkAuJjogJfV3saLKwEAICuizByAXabobho/+hItcdrcTUAAHRNhJGL6OHwj45UMTICAECHIIxcRELjvJHqOsIIAAAdgTByEU0jI5Vn6i2uBACArokwchEpPWIkSW98VGxxJQAAdE2EkYuYPbG/JOn9/Se4YR4AAB2AMHIRXxueqrhou8pr6vX5ySqrywEAoMshjFxEtN2mQY03zCsqq7G4GgAAuh7CSBv0TnRIkk5WeiyuBACArocw0ga9EvyTWAkjAACEHmGkDRgZAQCg4xBG2qB3gj+MlLoJIwAAhFpQYSQvL08TJkxQYmKiUlNTNXPmTO3fv/+C6yxbtkyGYTR7xMbGXlLR4davZ7wk6Ysvqy2uBACArieoMLJ+/XrNmzdPmzdv1tq1a1VfX6+bb75Z1dUX/pB2Op0qLi4OPI4cOXJJRYfbwN7+s2kOn6rmWiMAAIRYVDCN33777WbPly1bptTUVO3YsUPXXnttq+sZhqH09PT2VdgJ9E2OV4zdJk+DT4WnazSgVw+rSwIAoMu4pDkjFRUVkqSUlJQLtquqqlL//v2VlZWlGTNmaO/evRds7/F45Ha7mz2sZLcZGtnHKUna9sVpS2sBAKCraXcY8fl8uv/++zVlyhSNHDmy1XZDhw7V888/r9dff10vv/yyfD6fJk+erKNHj7a6Tl5enlwuV+CRlZXV3jJDZkK2P3DtLCq3thAAALoYwzTNdk2CuO+++/TWW29p48aN6tu3b5vXq6+v1/DhwzVr1iw98sgjLbbxeDzyeM6eueJ2u5WVlaWKigo5nc72lHvJXt1WqJ/+dbeuG9JbL955lSU1AAAQSdxut1wu10U/v4OaM9Jk/vz5WrNmjTZs2BBUEJGk6OhojRs3TgcPHmy1jcPhkMPhaE9pHSYzKU6SVFxRa3ElAAB0LUEdpjFNU/Pnz9eqVav03nvvKTs7O+g39Hq92r17tzIyMoJe10pNYeRYWa3aOZgEAABaENTIyLx587R8+XK9/vrrSkxMVElJiSTJ5XIpLs7/YT1nzhz16dNHeXl5kqRf/epXmjRpkgYNGqTy8nI9/vjjOnLkiO6+++4Q70rHynT596+6ziv3mQa54qItrggAgK4hqDCyZMkSSdL111/fbPkLL7yg22+/XZJUWFgom+3sgEtZWZnuuecelZSUKDk5WePHj9emTZs0YsSIS6s8zOJi7EqOj1ZZTb2KK2oJIwAAhEi7J7CGU1snwHS06b/9u/Yed+v526/UjcPSLKsDAIBI0NbPb+5NE4TAvJHyMxZXAgBA10EYCUKmy39PnePlnFEDAECoEEaCEDi9lzACAEDIEEaC0BRGjnOYBgCAkCGMBOHsnBFGRgAACBXCSBCyG+/We6y8VicqGR0BACAUCCNBSOkRo9F9XZKkTQe/tLgaAAC6BsJIkPom+w/VuM/UW1wJAABdA2EkSNF2f5fVNfgsrgQAgK6BMBKkpjBS7+30F64FACAiEEaCdDaMMDICAEAoEEaC5IgijAAAEEqEkSBF2w1JUh1hBACAkCCMBClwmKaBOSMAAIQCYSRIzBkBACC0CCNBimHOCAAAIUUYCRJzRgAACC3CSJC4zggAAKFFGAnS2QmsjIwAABAKhJEgxTCBFQCAkCKMBCk6ijkjAACEEmEkSNwoDwCA0CKMBInrjAAAEFqEkSDFcDYNAAAhRRgJEiMjAACEFmEkSE1XYD1T77W4EgAAugbCSJAyXLGSpOPlZ+T1cagGAIBLRRgJUmZSnGKibKrz+nS0rMbqcgAAiHiEkSDZbYaye/aQJB06VW1xNQAARD7CSDtkpcRJko6X11pcCQAAkY8w0g4ZLsIIAAChQhhph4wk/yTW4vIzFlcCAEDkI4y0Q58k/8gIc0YAALh0hJF2mDAgRZL08dFyna6us7gaAAAiG2GkHTKT4pTdq4d8pvRJsdvqcgAAiGiEkXYa0DNeknTkS641AgDApSCMtFP/xmuNFJ4mjAAAcCkII+2U3csfRjYcOCkfl4UHAKDdCCPt9H9GZyjBEaV9xW698fFxq8sBACBiBRVG8vLyNGHCBCUmJio1NVUzZ87U/v37L7reypUrNWzYMMXGxmrUqFF68803211wZ9EzwaF7r7tMkvSbtQdkmoyOAADQHkGFkfXr12vevHnavHmz1q5dq/r6et18882qrm79ehubNm3SrFmzdNddd2nnzp2aOXOmZs6cqT179lxy8VabM3mAJP8k1po6r7XFAAAQoQzzEv6kP3nypFJTU7V+/Xpde+21Lba57bbbVF1drTVr1gSWTZo0SWPHjtXSpUvb9D5ut1sul0sVFRVyOp3tLTfkTNPUkAffUr3X1AcP3Bi4GBoAAGj75/clzRmpqKiQJKWkpLTapqCgQLm5uc2WTZ06VQUFBa2u4/F45Ha7mz06I8Mw5IqLkSRV1NRbXA0AAJGp3WHE5/Pp/vvv15QpUzRy5MhW25WUlCgtLa3ZsrS0NJWUlLS6Tl5enlwuV+CRlZXV3jI7nCsuSpJUUUsYAQCgPdodRubNm6c9e/ZoxYoVoaxHkrRo0SJVVFQEHkVFRSF/j1BJim8cGanlsvAAALRHVHtWmj9/vtasWaMNGzaob9++F2ybnp6u0tLSZstKS0uVnp7e6joOh0MOh6M9pYWdKy5aEiMjAAC0V1AjI6Zpav78+Vq1apXee+89ZWdnX3SdnJwc5efnN1u2du1a5eTkBFdpJ5XUGEZOVxNGAABoj6BGRubNm6fly5fr9ddfV2JiYmDeh8vlUlyc/0ySOXPmqE+fPsrLy5MkLViwQNddd50WL16s6dOna8WKFdq+fbueffbZEO+KNfok+/e7qIzLwgMA0B5BjYwsWbJEFRUVuv7665WRkRF4vPrqq4E2hYWFKi4uDjyfPHmyli9frmeffVZjxozRX/7yF61evfqCk14jSdM9ao582fq1VgAAQOuCGhlpyyVJ1q1bd96yW2+9VbfeemswbxUxmu7e+8UpRkYAAGgP7k1ziTIaL3R2ovIMN8wDAKAdCCOXqHeC/6yfeq+pcs6oAQAgaISRSxQTZVNyvP+MmhOVZyyuBgCAyEMYCYHUxFhJ0gm3x+JKAACIPISREEh3+cPIgdJKiysBACDyEEZC4MZhqZKklduPMokVAIAgEUZCYObYPkqMjdL+0kqt2NZ576MDAEBnRBgJAVd8tO67fqAk6Zdv7NXJSuaOAADQVoSRELnnmsvkjI2Sp8GnT0vcVpcDAEDEIIyESLTdpvH9kyVJR8tqLa4GAIDIQRgJoawU/6Xhi05zaXgAANqKMBJCfRvv4MvICAAAbUcYCaG+yY0jI2WMjAAA0FaEkRDKagwjjIwAANB2hJEQajpMc7LSoypPg8XVAAAQGQgjIZQUH61+jZNY39lTYnE1AABEBsJICBmGoe+M7ytJeir/M4urAQAgMhBGQuzWK/1hpPB0jbzcpwYAgIsijIRYcnxM4OuaOuaNAABwMYSREHNE2WS3GZKkao/X4moAAOj8CCMhZhiG4mPskqRqRkYAALgowkgHSHBESZKqOb0XAICLIox0gMDICIdpAAC4KMJIB2BkBACAtiOMdID4mMYwwpwRAAAuijDSAXo0jozU1HGYBgCAiyGMdIAejqY5I4yMAABwMYSRDtAjMGeEkREAAC6GMNIBAhNYmTMCAMBFEUY6wNlTewkjAABcDGGkA3BqLwAAbUcY6QBnT+1lzggAABdDGOkAnE0DAEDbEUY6QA9GRgAAaDPCSAfowZwRAADajDDSAZLioyVJpe4z8vpMi6sBAKBzI4x0gMGpCUp0RKnyTIP2Hq+wuhwAADo1wkgHiLLbNLZfkiRp33G3tcUAANDJBR1GNmzYoFtuuUWZmZkyDEOrV6++YPt169bJMIzzHiUlJe2tOSJk9+ohSTpyusbiSgAA6NyCDiPV1dUaM2aMnn766aDW279/v4qLiwOP1NTUYN86ovTv6Q8jh05WWVwJAACdW1SwK0ybNk3Tpk0L+o1SU1OVlJQU9HqRamhaoiRp7b5SvbW7WNNGZVhcEQAAnVPY5oyMHTtWGRkZuummm/TBBx9csK3H45Hb7W72iDSTB/bUmL4u+UxpxbYiq8sBAKDT6vAwkpGRoaVLl+qvf/2r/vrXvyorK0vXX3+9Pvzww1bXycvLk8vlCjyysrI6usyQs9kM3Z87RJJ0qspjcTUAAHReQR+mCdbQoUM1dOjQwPPJkyfr888/1xNPPKE//vGPLa6zaNEiLVy4MPDc7XZHZCDpneiQJJ2sJIwAANCaDg8jLbnqqqu0cePGVl93OBxyOBxhrKhj9Erw78OX1XXy+UzZbIbFFQEA0PlYcp2RXbt2KSOj60/o7JkQI0ny+kyV1dRZXA0AAJ1T0CMjVVVVOnjwYOD54cOHtWvXLqWkpKhfv35atGiRjh07ppdeekmS9OSTTyo7O1uXX365zpw5o+eee07vvfee3n333dDtRScVbbcpOT5aZTX1OlVVp54JkT/aAwBAqAUdRrZv364bbrgh8LxpbsfcuXO1bNkyFRcXq7CwMPB6XV2dfvSjH+nYsWOKj4/X6NGj9be//a3ZNrqyXgkOldXU62SlR0PTE60uBwCATscwTbPT38nN7XbL5XKpoqJCTqfT6nKC8k9/2KxNn3+pJ28bq5nj+lhdDgAAYdPWz2/uTdPBmiaxcnovAAAtI4x0sKbTez8/WW1xJQAAdE6EkQ42vn+yJOmVrYX634+LLa4GAIDOhzDSwaaNTNftkwdIkh5cvVteX6efogMAQFgRRjqYYRj62TeGK9ERpbKaeu05VmF1SQAAdCqEkTCIibJp8qCekqRVO49ZXA0AAJ0LYSRMvjPef2+dDQdOWlwJAACdC2EkTPqlxEuSymvrLa4EAIDOhTASJs44/8Vu3bX1ioDrzAEAEDaEkTBxxkZLkhp8pmrrvRZXAwBA50EYCZP4GLvsNkOS5K5tsLgaAAA6D8JImBiGIVecf3TEfYZ5IwAANCGMhJEz1j9vpIJJrAAABBBGwiilR4wk6fMTVRZXAgBA50EYCaPcEWmSpJcKjlhcCQAAnQdhJIy+c0Vf2W2G9hW79fT7B60uBwCAToEwEkapzlhdN6S3JGnr4dMWVwMAQOdAGAmzpjv4llScsbYQAAA6CcJImGW4YiVJJW7CCAAAEmEk7NIbw0hFbb1OEEgAACCMhFtibLQG9u4hSbrt2c06XV1ncUUAAFiLMGKBp/5xnHolOHT4VLWWb+E0XwBA90YYscDIPi7Nv2GgJGnjwVMWVwMAgLUIIxaZMqiXJGnzodOc5gsA6NYIIxYZnJaomxqvyLrhwEmLqwEAwDqEEQvdMDRVkrSzqMziSgAAsA5hxEJjs5IkSR8VVcjrM60tBgAAixBGLDQkLUFx0XZVeRq0q6jc6nIAALAEYcRCUXabbhzmP1TzyJp9Mk1GRwAA3Q9hxGIP3zJCcdF27Soq17YvmDsCAOh+CCMWS3XGavroDEnSA3/9WEe+rLa4IgAAwosw0gn887WXSZIOnarWHwu4IisAoHshjHQCQ9IS9S9fGyxJ+uxElcXVAAAQXoSRTuKawf4rsn5a4paP03wBAN0IYaSTGJaeqLhou0rdHv3tk1KrywEAIGwII51EYmx04PLwB09yqAYA0H0QRjqR1ESHJKm8pt7iSgAACB/CSCeS3CNGklRWXWdxJQAAhA9hpBNJio+WJJUxMgIA6EaCDiMbNmzQLbfcoszMTBmGodWrV190nXXr1umKK66Qw+HQoEGDtGzZsnaU2vUlx/tHRsprGBkBAHQfQYeR6upqjRkzRk8//XSb2h8+fFjTp0/XDTfcoF27dun+++/X3XffrXfeeSfoYru6pjDyJYdpAADdSFSwK0ybNk3Tpk1rc/ulS5cqOztbixcvliQNHz5cGzdu1BNPPKGpU6cG+/Zd2sDUHpKkw6eqdbLSo96NE1oBAOjKOnzOSEFBgXJzc5stmzp1qgoKClpdx+PxyO12N3t0B6mJsbo80ylJ2nDgpMXVAAAQHh0eRkpKSpSWltZsWVpamtxut2pra1tcJy8vTy6XK/DIysrq6DI7jRuGpkqS1hFGAADdRKc8m2bRokWqqKgIPIqKiqwuKWxyBvaUJO0+Wm5tIQAAhEnQc0aClZ6ertLS5pc3Ly0tldPpVFxcXIvrOBwOORzdc77E4NQESVLh6RqdqfcqNtpucUUAAHSsDh8ZycnJUX5+frNla9euVU5OTke/dUTqnehQYmyUfKb05N8+k2ly0zwAQNcWdBipqqrSrl27tGvXLkn+U3d37dqlwsJCSf5DLHPmzAm0v/fee3Xo0CH95Cc/0aeffqrf//73+vOf/6wf/vCHodmDLsYwDH37ir6SpKXrP9djb31qcUUAAHSsoMPI9u3bNW7cOI0bN06StHDhQo0bN04PPfSQJKm4uDgQTCQpOztb//u//6u1a9dqzJgxWrx4sZ577jlO672Ah/7PiEAgeWbDIW0+9KXFFQEA0HEMMwKOA7jdbrlcLlVUVMjpdFpdTlj4fKa+8du/69OSSiXHR+uDB25UfEyHT/EBACBk2vr53SnPpoFksxl66c6rFBttU1lNvSb82990vLzlU6EBAIhkhJFOLNUZq9/NukKSVF3nVf4npRdZAwCAyEMY6eRyR6Tp/tzBkqQV24rU4PVZXBEAAKFFGIkA00dlKNpuaO9xt97cU2J1OQAAhBRhJAIMTkvU/7t2oCTp7T3FFlcDAEBoEUYixJUDkiVJn5VWWVwJAAChRRiJEIPTEiVJn5+sUrWnweJqAAAIHcJIhMh0xSrTFSufKT2x9oDV5QAAEDKEkQhhGIZ+NWOkJOm5jYf1/qcnLK4IAIDQIIxEkK8NT9WMsZmSpKffP2hxNQAAhAZhJIIYhqGff2O4ou2Gth8p055jFVaXBADAJSOMRJhUZ6ymjcyQJP33xsMWVwMAwKUjjESg707qL0latfOYPi1xW1wNAACXhjASga7KTtGIDP/dDw+e4LojAIDIRhiJUNm9e0iSTrg9FlcCAMClIYxEqNREhyTpRCVhBAAQ2QgjESo1MVaS9OGRMosrAQDg0hBGItSoPi5J0tYvTmvDgZMWVwMAQPsRRiLUlEE99Y8TsiRJL3zAKb4AgMhFGIlQhmHorquzJUnv7z+pbV+ctrgiAADahzASwQalJuiawb0kSX/eVmRxNQAAtA9hJIIZhqHbJw+QJO04UibTNK0tCACAdiCMRLjx/ZMVE2XToVPV2vDZKavLAQAgaISRCJcUH6PvNV4e/scrP1JJxRmLKwIAIDiEkS5g3g2D1CcpTicqPZr65AZVeRqsLgkAgDYjjHQBKT1i9Mz3xkuSKmrrtbOQC6EBACIHYaSLGNnHpYnZKZKko2W1FlcDAEDbEUa6kKHpiZKko2U1FlcCAEDbEUa6kL7JcZKkv+07wWm+AICIQRjpQqaNzJBhSPtLK3XwRJXV5QAA0CaEkS4kKyVel2c6JUlffMmhGgBAZCCMdDH9e/aQJO0vcVtcCQAAbUMY6WKGpvknsb7wwReqa/BZXA0AABdHGOli5uYMUGJslL6srtNLBV9YXQ4AABdFGOliXPHR+s74vpKk/3x7v5as+1yeBq/FVQEA0DrCSBf0068P05RBPVXn9ek/3v5U1z++TjuOnLa6LAAAWkQY6YJio+16/vYJenD6cDljo1RccUbfXlKge/+4Q2XVdVaXBwBAM4SRLsoRZdfd11ymDx64Uf8wro8k6e29JfrLjqMWVwYAQHPtCiNPP/20BgwYoNjYWE2cOFFbt25tte2yZctkGEazR2xsbLsLRnASY6P1xG1jNe+GgZLExdAAAJ1O0GHk1Vdf1cKFC/Xwww/rww8/1JgxYzR16lSdOHGi1XWcTqeKi4sDjyNHjlxS0QjekMZTftcfOMml4gEAnUrQYeQ3v/mN7rnnHt1xxx0aMWKEli5dqvj4eD3//POtrmMYhtLT0wOPtLS0SyoawRuc6g8jJe4z+qc/bFHRaa7QCgDoHIIKI3V1ddqxY4dyc3PPbsBmU25urgoKClpdr6qqSv3791dWVpZmzJihvXv3XvB9PB6P3G53swcuzfCMRP3rzUMkSQWHvtRNT6zX+5+2PpoFAEC4BBVGTp06Ja/Xe97IRlpamkpKSlpcZ+jQoXr++ef1+uuv6+WXX5bP59PkyZN19GjrEynz8vLkcrkCj6ysrGDKRAsMw9D8Gwdr+T0TNSQtQWfqfbpj2Tb932cKtPnQl1aXBwDoxjr8bJqcnBzNmTNHY8eO1XXXXafXXntNvXv31jPPPNPqOosWLVJFRUXgUVRU1NFldhuTB/bSmh9co1lXZckwpK2HT+v2F7ZqzcfHrS4NANBNBRVGevXqJbvdrtLS0mbLS0tLlZ6e3qZtREdHa9y4cTp48GCrbRwOh5xOZ7MHQicmyqa8b43Whh/foCmDeupMvU/zl+/UpH/P14ubvlCDl3vaAADCJ6gwEhMTo/Hjxys/Pz+wzOfzKT8/Xzk5OW3ahtfr1e7du5WRkRFcpQi5rJR4/X72eM26KkvRdkMl7jN6+H/26vt/+tDq0gAA3UjQh2kWLlyoP/zhD3rxxRf1ySef6L777lN1dbXuuOMOSdKcOXO0aNGiQPtf/epXevfdd3Xo0CF9+OGH+u53v6sjR47o7rvvDt1eoN1ccdHK+9Zo7XzoZv3rzUNkGNK7+0qV99YnVpcGAOgmooJd4bbbbtPJkyf10EMPqaSkRGPHjtXbb78dmNRaWFgom+1sxikrK9M999yjkpISJScna/z48dq0aZNGjBgRur3AJUtwRGn+jYNVdLpWr24v0jPrD+lUZZ3uujpbIzI5TAYA6DiGGQFXwHK73XK5XKqoqGD+SAczTVOz/rBZmw+dvbHepMtS9NtZ45SayJVzAQBt19bPb+5Ng2YMw9Af75qoZXdM0DdG+Sclbz50Wve8uF1Hy7hQGgAg9AgjOE+03abrh6bq97PH67XvT1ZstE0fHa3QP7+0w+rSAABdEGEEF3RFv2St/H+TJUn7it16Yu0BiysCAHQ1hBFc1Ki+Lt00wj9B+a09xRZXAwDoaggjaJO8b42SJB0ordLf9pVepDUAAG1HGEGb9Epw6JrBvSRJd7+0Xf+V/5kOnaxSBJyMBQDo5Di1F21W7WnQ3Oe3avuRssCyDFesxvdP1sTLemrWhCxF2cm3AAC/tn5+E0YQlGpPg5Zt+kJ//+ykPjxSrrpz7mOTc1lP/dc/jVOvBIeFFQIAOgvCCDpcbZ1X2744rW1fnNaSdZ+rwWcq3RmrlffmKCsl3uryAAAW46Jn6HBxMXZdO6S3fnTzUL32/cnKdMWqxH1Gc5/fqpOVHqvLAwBECMIIQmJ03yT98e6JirHbdOhUtRb+eReTWwEAbUIYQcgM7J2gX//fMZKkv392Sg//z17V1nktrgoA0NkRRhBS3xyTqR/mDpEkvVRwRFf+21rtL6m0uCoAQGdGGEHIzb9xkO6ckq2k+GhV13n1YsEXVpcEAOjECCMIObvN0EO3jNCS2eMlScu3FGr5lkKLqwIAdFaEEXSYSZelqG9ynCTptQ+PWlwNAKCzIoygwxiGoWe/d6UkafuRMh0rr+UMGwDAeaKsLgBd26DUBEXZDDX4TE157D0lOKI0rl+SfjfrCrnio60uDwDQCTAygg4VE2XTA9OGaXBjKKnyNOjvn53S4rX7VVFTr7oG38U3AgDo0rgcPMKmrsGn371/UL/N/yywLCbKphdun6Apg3pZWBkAoCNwOXh0OjFRNv0wd7B+dNMQxcfYJfkDyuzntuijonLmkwBAN8XICCzh85k6crpGN/x6XWBZVkqc7pySrf494zW6b5JS4mNksxnWFQkAuCTctRcR4eOj5Xrgr7u1r9h93mvO2CiNyUpS7vA03Xx5ms7U+xQXbVe6K9aCSgEAwSKMIKIUna7R79d9ruPltTp8qlpFZTVq7Sfzh7lDdPvkAerhsCvKzpFGAOisCCOIaHUNPu05XqHfvXdQe49XqNTtOa9NUny0Zo7to4G9eyguJkpX9k/WgF49LKgWANASwgi6lMoz9Yq22/TE2gP605ZCVXkaWmyX961RSnfFKueynoqNtoe5SgDAuQgj6LJM01R1nVfLPjisQ6eqVePx6u29Jc3axEbbNHlgL43MdGpgaoKccdFKjo9Rcny0knvEKCEmismxANDBCCPoVj44eEpL13+uM/VefVRUoTrvxS+m1icpTr0SHapr8MlT71Wd16d0Z6xsRishpYXFjiibYqPt6hFjV/Q581fO/aU69zfM1Fd+3cwWvzzvNOfWt/eVzZ3zYrPXvtLQ0+CT+4z/onN2m6GoxmDm9Zmq8/pU1+CTaUo+01S916cGn6leCQ71cNhlMwwZhiFDks2Q6rw+uWsbZMqUafrrM79Si80wZLNJhgzZDP+tAr76b6IjSrExdtkbl9lsRuPXhv9rW+N2Wvv+BMHrM+U1Tfl8prw+U77GfW1aLtN/Kroj6pzvqdnUleZ5y77axa1+z82z/wTeS/4fLaNxv5r6zWzW3jz7/i0s853zvZL8/RQTZVOM3aZeCTHn1ejfRfMr2zu37rOvfXW/m76/5/VJs+2csw/nrdPy/gXzfjq3P87Z7rntvD5TRuPPlt1Q4OfI39dq/Dn2/0w2tZOkBq9P9V6f6rym6hv8Xzf9DsRF2xUbbW+2XbvNpiibIbvdULTNkCn/YWZb4++Vven3xfD/vjT9/thtkr3pey7/989n+vfD5/Pvf9P31Wxa3vi8wev/XvtX9/++RNttirIbirLZGn+nzt03fzv/sqbn57wu//7cdXW2slLiFUpt/fzmcvDoEqYM6hW4cJppmlp/4KQ+Plqhfcfdqqitl/tMvcpr6nW6uk619V5J0rHyWh0rr222naNltedtG370DdC1fXNsZsjDSFsRRtDlGIah64em6vqhqS2+fqbeK/eZen1xqkbu2nrFNI5u+ExTZdV1gXbnjzp85bn8f53U1HlV4/Gqwde8wbl/wButLPe/ZrT62lf3q23ba2Wdc16IstnkiotWTJRNXp+pBp//L2p741/U0Xb/X3uGYSjK7h+NOFnpkafBGxgxaforLspuyBUXHRgtaXrPpr/Amv6y9TV+0ewvwHP+dZ+pl6feK6/pvw6Nzzx39KJpPfO870N7nB11afy66bmtcaRGCowQGS18U5p/b1vu49a+R03tz32vplGJs3+xNq1nNF92Tt82PW3667ZphMswJK/P/9d5tadB5bV1gTYX287Zr5vX3dLP0Ve3ee7y8/bZMM7f5jnbba22lrbZUs1qYZtRNsM/uuDT2Z+jplEGSTrn58//8+nfRozdULTd/zsQHWULPLfbDNXWeeVp8J233QafqYbG0RPJP2LqM6V6r09enxn4+TcDP9tn1z13ZMJ2zs9k0/6dHU05+6+/PiOwL97GEb6mEZxzf0/Mc/a5aUTs3D44d3m607rLJhBG0O3ENg61piZyvRIA6Ay4SAMAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFKEEQAAYKl2hZGnn35aAwYMUGxsrCZOnKitW7desP3KlSs1bNgwxcbGatSoUXrzzTfbVSwAAOh6gg4jr776qhYuXKiHH35YH374ocaMGaOpU6fqxIkTLbbftGmTZs2apbvuuks7d+7UzJkzNXPmTO3Zs+eSiwcAAJEv6Lv2Tpw4URMmTNDvfvc7SZLP51NWVpZ+8IMf6IEHHjiv/W233abq6mqtWbMmsGzSpEkaO3asli5d2qb35K69AABEnrZ+fgc1MlJXV6cdO3YoNzf37AZsNuXm5qqgoKDFdQoKCpq1l6SpU6e22l6SPB6P3G53swcAAOiaggojp06dktfrVVpaWrPlaWlpKikpaXGdkpKSoNpLUl5enlwuV+CRlZUVTJkAACCCdMq79i5atEgLFy4MPK+oqFC/fv0YIQEAIII0fW5fbEZIUGGkV69estvtKi0tbba8tLRU6enpLa6Tnp4eVHtJcjgccjgcgedNO8MICQAAkaeyslIul6vV14MKIzExMRo/frzy8/M1c+ZMSf4JrPn5+Zo/f36L6+Tk5Cg/P1/3339/YNnatWuVk5PT5vfNzMxUUVGREhMTZRhGMCVfkNvtVlZWloqKipgY28Ho6/Cgn8ODfg4P+jl8OqqvTdNUZWWlMjMzL9gu6MM0Cxcu1Ny5c3XllVfqqquu0pNPPqnq6mrdcccdkqQ5c+aoT58+ysvLkyQtWLBA1113nRYvXqzp06drxYoV2r59u5599tk2v6fNZlPfvn2DLbXNnE4nP+hhQl+HB/0cHvRzeNDP4dMRfX2hEZEmQYeR2267TSdPntRDDz2kkpISjR07Vm+//XZgkmphYaFstrPzYidPnqzly5frwQcf1M9+9jMNHjxYq1ev1siRI4N9awAA0AUFfZ2RroTrl4QPfR0e9HN40M/hQT+Hj9V93a3vTeNwOPTwww83myyLjkFfhwf9HB70c3jQz+FjdV9365ERAABgvW49MgIAAKxHGAEAAJYijAAAAEsRRgAAgKW6dRh5+umnNWDAAMXGxmrixInaunWr1SVFjLy8PE2YMEGJiYlKTU3VzJkztX///mZtzpw5o3nz5qlnz55KSEjQt7/97fNuDVBYWKjp06crPj5eqamp+vGPf6yGhoZw7kpEeeyxx2QYRrMrGtPPoXPs2DF997vfVc+ePRUXF6dRo0Zp+/btgddN09RDDz2kjIwMxcXFKTc3V5999lmzbZw+fVqzZ8+W0+lUUlKS7rrrLlVVVYV7Vzotr9erX/ziF8rOzlZcXJwGDhyoRx55pNm9S+jn9tmwYYNuueUWZWZmyjAMrV69utnroerXjz/+WNdcc41iY2OVlZWl//zP/7z04s1uasWKFWZMTIz5/PPPm3v37jXvueceMykpySwtLbW6tIgwdepU84UXXjD37Nlj7tq1y/zGN75h9uvXz6yqqgq0uffee82srCwzPz/f3L59uzlp0iRz8uTJgdcbGhrMkSNHmrm5uebOnTvNN9980+zVq5e5aNEiK3ap09u6das5YMAAc/To0eaCBQsCy+nn0Dh9+rTZv39/8/bbbze3bNliHjp0yHznnXfMgwcPBto89thjpsvlMlevXm1+9NFH5je/+U0zOzvbrK2tDbT5+te/bo4ZM8bcvHmz+fe//90cNGiQOWvWLCt2qVN69NFHzZ49e5pr1qwxDx8+bK5cudJMSEgwn3rqqUAb+rl93nzzTfPnP/+5+dprr5mSzFWrVjV7PRT9WlFRYaalpZmzZ8829+zZY77yyitmXFyc+cwzz1xS7d02jFx11VXmvHnzAs+9Xq+ZmZlp5uXlWVhV5Dpx4oQpyVy/fr1pmqZZXl5uRkdHmytXrgy0+eSTT0xJZkFBgWma/l8cm81mlpSUBNosWbLEdDqdpsfjCe8OdHKVlZXm4MGDzbVr15rXXXddIIzQz6Hz05/+1Lz66qtbfd3n85np6enm448/HlhWXl5uOhwO85VXXjFN0zT37dtnSjK3bdsWaPPWW2+ZhmGYx44d67jiI8j06dPNO++8s9myb33rW+bs2bNN06SfQ+WrYSRU/fr73//eTE5ObvZ/x09/+lNz6NChl1RvtzxMU1dXpx07dig3NzewzGazKTc3VwUFBRZWFrkqKiokSSkpKZKkHTt2qL6+vlkfDxs2TP369Qv0cUFBgUaNGhW4lYAkTZ06VW63W3v37g1j9Z3fvHnzNH369Gb9KdHPofQ///M/uvLKK3XrrbcqNTVV48aN0x/+8IfA64cPH1ZJSUmzvna5XJo4cWKzvk5KStKVV14ZaJObmyubzaYtW7aEb2c6scmTJys/P18HDhyQJH300UfauHGjpk2bJol+7iih6teCggJde+21iomJCbSZOnWq9u/fr7KysnbXF/S9abqCU6dOyev1NvvPWZLS0tL06aefWlRV5PL5fLr//vs1ZcqUwD2HSkpKFBMTo6SkpGZt09LSVFJSEmjT0veg6TX4rVixQh9++KG2bdt23mv0c+gcOnRIS5Ys0cKFC/Wzn/1M27Zt07/8y78oJiZGc+fODfRVS315bl+npqY2ez0qKkopKSn0daMHHnhAbrdbw4YNk91ul9fr1aOPPqrZs2dLEv3cQULVryUlJcrOzj5vG02vJScnt6u+bhlGEFrz5s3Tnj17tHHjRqtL6XKKioq0YMECrV27VrGxsVaX06X5fD5deeWV+vd//3dJ0rhx47Rnzx4tXbpUc+fOtbi6ruPPf/6z/vSnP2n58uW6/PLLtWvXLt1///3KzMykn7uxbnmYplevXrLb7eedcVBaWqr09HSLqopM8+fP15o1a/T++++rb9++geXp6emqq6tTeXl5s/bn9nF6enqL34Om1+A/DHPixAldccUVioqKUlRUlNavX6/f/va3ioqKUlpaGv0cIhkZGRoxYkSzZcOHD1dhYaGks311of830tPTdeLEiWavNzQ06PTp0/R1ox//+Md64IEH9I//+I8aNWqUvve97+mHP/yh8vLyJNHPHSVU/dpR/590yzASExOj8ePHKz8/P7DM5/MpPz9fOTk5FlYWOUzT1Pz587Vq1Sq999575w3bjR8/XtHR0c36eP/+/SosLAz0cU5Ojnbv3t3sh3/t2rVyOp3nfSh0V1/72te0e/du7dq1K/C48sorNXv27MDX9HNoTJky5bzT0w8cOKD+/ftLkrKzs5Went6sr91ut7Zs2dKsr8vLy7Vjx45Am/fee08+n08TJ04Mw150fjU1NbLZmn/02O12+Xw+SfRzRwlVv+bk5GjDhg2qr68PtFm7dq2GDh3a7kM0krr3qb0Oh8NctmyZuW/fPvOf//mfzaSkpGZnHKB19913n+lyucx169aZxcXFgUdNTU2gzb333mv269fPfO+998zt27ebOTk5Zk5OTuD1plNOb775ZnPXrl3m22+/bfbu3ZtTTi/i3LNpTJN+DpWtW7eaUVFR5qOPPmp+9tln5p/+9CczPj7efPnllwNtHnvsMTMpKcl8/fXXzY8//ticMWNGi6dGjhs3ztyyZYu5ceNGc/Dgwd3+lNNzzZ071+zTp0/g1N7XXnvN7NWrl/mTn/wk0IZ+bp/Kykpz586d5s6dO01J5m9+8xtz586d5pEjR0zTDE2/lpeXm2lpaeb3vvc9c8+ePeaKFSvM+Ph4Tu29FP/1X/9l9uvXz4yJiTGvuuoqc/PmzVaXFDEktfh44YUXAm1qa2vN73//+2ZycrIZHx9v/sM//INZXFzcbDtffPGFOW3aNDMuLs7s1auX+aMf/cisr68P895Elq+GEfo5dN544w1z5MiRpsPhMIcNG2Y+++yzzV73+XzmL37xCzMtLc10OBzm1772NXP//v3N2nz55ZfmrFmzzISEBNPpdJp33HGHWVlZGc7d6NTcbre5YMECs1+/fmZsbKx52WWXmT//+c+bnSpKP7fP+++/3+L/y3PnzjVNM3T9+tFHH5lXX3216XA4zD59+piPPfbYJddumOY5l70DAAAIs245ZwQAAHQehBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWOr/Bwmb0h92yL5LAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.plot(range(0, len(costs)), costs)\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "cb73d7c1",
|
|
"metadata": {},
|
|
"source": [
|
|
"a) Plot the computed line $h_{\\theta}(\\mathbf{x})$ on top of the scatter plot of exercise 1."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 179,
|
|
"id": "f73c6af3",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Your code here\n",
|
|
"plt.scatter(dataset[\"living_area\"], dataset[\"rent_price\"])\n",
|
|
"plt.xlabel(\"Living Area\")\n",
|
|
"plt.ylabel(\"Rent price\")\n",
|
|
"\n",
|
|
"y_regr = theta[0] + theta[1] * X[:,1]\n",
|
|
"plt.plot(X[:,1], y_regr, color='red', label='Regression line')\n",
|
|
"\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "16e1eec7",
|
|
"metadata": {},
|
|
"source": [
|
|
"b) How many samples do you need to visit for reaching the convergence?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "fd7870eb",
|
|
"metadata": {},
|
|
"source": [
|
|
"The biggest improvements are made before the first 300ish iterations but smaller improvements still occur after that. If we were very limited in cpu time, we would tell that the convergence vas reached around 300 samples"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c185d7bc",
|
|
"metadata": {},
|
|
"source": [
|
|
"c) What kind of stopping criterion could we use here?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "235f3ac0",
|
|
"metadata": {},
|
|
"source": [
|
|
"We would use the delta of the global cost function. When we compute the cost function, we can stop the iterations when the result is not improving more than a set delta."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5e7ce003",
|
|
"metadata": {},
|
|
"source": [
|
|
"d) Compute the final cost value according to Equation 2 and compare it to the one of exercise 2 and 3. What can you conclude?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 180,
|
|
"id": "dbcb6f22",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"144176.78676766725\n",
|
|
"[ 0.32486065 28.59143527]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Your code here\n",
|
|
"y_pred = X @ theta\n",
|
|
"print(cost_J(y_pred, y))\n",
|
|
"print(theta)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "27a8e7fd",
|
|
"metadata": {},
|
|
"source": [
|
|
"The result is really close to both of the other methods but the stochastic is way faster because we dont loop trough the whole dataset for each update. The stochastic might have a slightly worse final result because it is harder to find the exact perfect values but its speed and efficency compensates this."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "a8a85676",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Exercise 5 - Review questions"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "84f82d3d",
|
|
"metadata": {},
|
|
"source": [
|
|
"a) The linear regression has a mathematical _closed form_ solution. Then, in which conditions would we prefer a gradient descent algorithm to compute the regression model?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "eecbe019",
|
|
"metadata": {},
|
|
"source": [
|
|
"_Your answer here_"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3696b258",
|
|
"metadata": {},
|
|
"source": [
|
|
"b) Outliers in a data set can be defined as values that are out of the \"usual\" range in comparison with other values. They typically come from noise or anomalies in the data capturing process. What is the impact of an outlier in the stochastic gradient descent process? What if we have many outliers? _Hint_: look at the equation of the MSE, and to the equation of the update rule."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4873219d",
|
|
"metadata": {},
|
|
"source": [
|
|
"_Your answer here_"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "22dce221",
|
|
"metadata": {},
|
|
"source": [
|
|
"c) In the case of stochastic gradient descent, what is the danger of having a too large or too small $\\alpha$ value? Could you think of a better (more advanced) strategy as the one stated in Slide 36?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d1536554",
|
|
"metadata": {},
|
|
"source": [
|
|
"_Your answer here_"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "07bdad8b",
|
|
"metadata": {},
|
|
"source": [
|
|
"d) Let's assume we expect that the target variable $y$ has a dependency to the square and to the cube of one of the feature $x_d$ in our multi-variable training set $(x_1, \\ldots, x_d, \\ldots, x_D)$. How would you proceed? Do we need to take precautions in terms of numerical stability?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d4f242c5",
|
|
"metadata": {},
|
|
"source": [
|
|
"_Your answer here_"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b7cf619b",
|
|
"metadata": {},
|
|
"source": [
|
|
"e) _Advanced_. Could we use a descent algorithm without computing the gradient? If yes, give a pseudo code of the algorithm to find $(\\theta_{0}, \\theta_{1})$ using a linear regression $h_{\\theta}(x) = \\theta_0 + \\theta_1 x$."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "89317af1",
|
|
"metadata": {},
|
|
"source": [
|
|
"_Your answer here_"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "2b0997fa",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": ".venv",
|
|
"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.12.3"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|