1034 lines
325 KiB
Plaintext
1034 lines
325 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": 312,
|
||
"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": 313,
|
||
"id": "5f3f924f",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"datafile = \"lausanne-appart.csv\""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "adfab574",
|
||
"metadata": {},
|
||
"source": [
|
||
"Read the data"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 314,
|
||
"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": 315,
|
||
"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": 315,
|
||
"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": 316,
|
||
"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": 317,
|
||
"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": 318,
|
||
"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": 319,
|
||
"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": 320,
|
||
"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"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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KI888ogaN26s8ePHKycnp9Tz+/fv1yuvvCJJuuGGGySp1JkmL730kiRpxIgRks7tmj//G/F5ffr0kSTPbvnzZ4Lk5uZWqM4bbrhBmzdvVnp6uqetsLBQc+bMUfv27dW9e3dPe5MmTRQXF6f33ntPqampCgwMVHx8vNf6brnlFqWnp2vVqlWltpWbm6vi4uIK1VUR568F8uPXGhcXJ5fLpWeffbbM4yiOHz/+k+s+v0fih/NtjPH8nVWkjrLWef311+vDDz/0umpsTk6OFi5cqEGDBnm+4quoirwngNqqVu0ZuZCsrCzNnTtXWVlZatWqlSTp4Ycf1sqVKzV37lw9++yzOnDggDIzM7V48WItWLBAJSUleuihh3TzzTdr3bp1ll8BaqtOnTpp4cKFGjNmjC6//HKvK7Bu2rRJixcv9txnpXfv3kpMTNScOXOUm5urIUOGaPPmzZo/f77i4+M1bNgwSdL8+fP12muv6cYbb1SnTp1UUFCg119/XS6XyxNoGjZsqO7du2vRokXq0qWLmjVrph49eqhHjx5l1jl58mS9++67Gj58uO6//341a9ZM8+fP18GDB/X++++X+vpizJgxuuOOO/Taa68pLi7OcwDleX/84x/197//Xb/85S81btw4RUVFqbCwUDt27NCSJUt06NAhr691LkafPn3k7++v559/Xnl5eXI6nbr22mvVsmVLzZw5U2PHjtWVV16pW2+9VS1atFBWVpY++ugjDRw4UH/9618vuO5u3bqpU6dOevjhh3XkyBG5XC69//77nmM1figqKkqSdP/99ysuLk7+/v669dZby1zv008/rTVr1mjQoEH6/e9/r4CAAM2ePVtFRUV64YUXfJ6DirwngFrL4pk8F0WSWbp0qefx8uXLjSTTuHFjryUgIMDccsstxhhjJkyYYCSZPXv2eMZt3brVSDJffPFFTb8E1DF79+41EyZMMO3btzeBgYEmJCTEDBw40Lz66qteFzQ7e/aseeKJJ0yHDh1MgwYNTGRkZKmLnm3bts3cdtttpm3btsbpdJqWLVuaX/7yl2bLli1e29y0aZOJiooygYGBPl30rEmTJiYoKMj069fP66JnP5Sfn28aNmxoJJl33nmnzD4FBQUmOTnZdO7c2QQGBprmzZubmJgYM3XqVHPmzBljjPdFzyrqx6f2GmPM66+/bjp27Gj8/f1L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zZpVV5l1QmXn+sknn1TLli1111131USZtV5l5vnvf/+7oqOjlZSUpLCwMPXo0UPPPvusSkpKaqrsWqcy8xwTE6OtW7d6vso5cOCAVqxYoRtuuKFGaq4vbHwW+nzX3trixIkTKikp8dxN+LywsDB98cUXZY7Jzs4us392dna11VnbVWaef+xPf/qTWrVqVerND2+VmesNGzbozTffVEZGRg1UWDdUZp4PHDigdevW6fbbb9eKFSu0b98+/f73v9fZs2c1ZcqUmii71qnMPP/mN7/RiRMnNGjQIBljVFxcrHvvvVePPvpoTZRcb5T3WZifn69vv/1WDRs2rPJt1tk9I6gdnnvuOaWmpmrp0qUKCgqyXU6dUlBQoLFjx+r1119X8+bNbZdTp7ndbrVs2VJz5sxRVFSUxowZo8cee0yzZs2yXVqdkpaWpmeffVavvfaatm3bpg8++EAfffSRnnrqKdul4SLV2T0jzZs3l7+/v3Jycrzac3JyFB4eXuaY8PBwn/qjcvN83tSpU/Xcc8/pX//6l3r16lWdZdYJvs71/v37dejQIY0cOdLT5na7JUkBAQHas2ePOnXqVL1F10KVeU9HRESoQYMG8vf397Rdfvnlys7O1pkzZxQYGFitNddGlZnn//qv/9LYsWM1fvx4SVLPnj1VWFiou+++W4899pj8/Pj9uiqU91nocrmqZa+IVIf3jAQGBioqKkpr1671tLndbq1du1bR0dFljomOjvbqL0lr1qwptz8qN8+S9MILL+ipp57SypUrddVVV9VEqbWer3PdrVs37dixQxkZGZ7lV7/6lYYNG6aMjAxFRkbWZPm1RmXe0wMHDtS+ffs8YU+S9u7dq4iICIJIOSozz6dPny4VOM4HQMM9X6uMlc/Cajs09hKQmppqnE6nmTdvntm9e7e5++67TZMmTUx2drYxxpixY8eayZMne/pv3LjRBAQEmKlTp5rPP//cTJkyhVN7K8DXeX7uuedMYGCgWbJkiTl69KhnKSgosPUSag1f5/rHOJumYnyd56ysLBMSEmImTpxo9uzZY5YvX25atmxpnn76aVsvoVbwdZ6nTJliQkJCzLvvvmsOHDhgVq9ebTp16mRuueUWWy+hVigoKDDbt28327dvN5LMSy+9ZLZv324yMzONMcZMnjzZjB071tP//Km9f/zjH83nn39uZsyYwam9F+vVV181bdu2NYGBgaZfv37m008/9Tw3ZMgQk5iY6NX/vffeM126dDGBgYHmiiuuMB999FENV1w7+TLP7dq1M5JKLVOmTKn5wmshX9/TP0QYqThf53nTpk2mf//+xul0mo4dO5pnnnnGFBcX13DVtY8v83z27Fnz+OOPm06dOpmgoCATGRlpfv/735uTJ0/WfOG1yMcff1zmv7nn5zYxMdEMGTKk1Jg+ffqYwMBA07FjRzN37txqrdFhDPu2AACAPXX2mBEAAFA7EEYAAIBVhBEAAGAVYQQAAFhFGAEAAFYRRgAAgFWEEQAAYBVhBACAemr9+vUaOXKkWrVqJYfDoWXLlvm8DmOMpk6dqi5dusjpdKp169Z65plnfFpHnb1RHgAAuLDCwkL17t1bv/3tb3XTTTdVah0PPPCAVq9eralTp6pnz5765ptv9M033/i0Dq7ACgAA5HA4tHTpUsXHx3vaioqK9Nhjj+ndd99Vbm6uevTooeeff15Dhw6VJH3++efq1auXdu7cqa5du1Z623xNAwAAyjRx4kSlp6crNTVV//73vzV69Gj94he/0JdffilJ+sc//qGOHTtq+fLl6tChg9q3b6/x48f7vGeEMAIAAErJysrS3LlztXjxYg0ePFidOnXSww8/rEGDBmnu3LmSpAMHDigzM1OLFy/WggULNG/ePG3dulU333yzT9vimBEAAFDKjh07VFJSoi5duni1FxUV6bLLLpMkud1uFRUVacGCBZ5+b775pqKiorRnz54Kf3VDGAEAAKWcOnVK/v7+2rp1q/z9/b2eCw4OliRFREQoICDAK7Bcfvnlks7tWSGMAACASuvbt69KSkp07NgxDR48uMw+AwcOVHFxsfbv369OnTpJkvbu3StJateuXYW3xdk0AADUU6dOndK+ffsknQsfL730koYNG6ZmzZqpbdu2uuOOO7Rx40ZNmzZNffv21fHjx7V27Vr16tVLI0aMkNvt1tVXX63g4GBNnz5dbrdbSUlJcrlcWr16dYXrIIwAAFBPpaWladiwYaXaExMTNW/ePJ09e1ZPP/20FixYoCNHjqh58+YaMGCAnnjiCfXs2VOS9PXXX+u+++7T6tWr1bhxYw0fPlzTpk1Ts2bNKlwHYQQAAFjFqb0AAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACs+v8h63+BToASGwAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Your code here\n",
|
||
"\n",
|
||
"def gradient_descent(X, y, max_iter, alpha):\n",
|
||
" theta = np.zeros((2))\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",
|
||
"\n",
|
||
" plt.plot(range(0, len(costs)), costs)\n",
|
||
" plt.title(\"Cost over iterations\")\n",
|
||
" plt.show()\n",
|
||
"\n",
|
||
"gradient_descent(X, y, max_iter = 1000000, alpha = 0.0001) # i got the best results with those parameters"
|
||
]
|
||
},
|
||
{
|
||
"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": 330,
|
||
"id": "5a34ad43",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAHFCAYAAAAg3/mzAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAANFNJREFUeJzt3Xlc1WXe//H3AeSgwkFNBVTcR81co1RQUxuKMceRmsyaEmzSagbbnKaRmntsp0XL7sZcWlxqDNPSZsxxGY28VbrNhXtcSnMDM0H9JYtYKJzr94fjqRNgHAQugdfz0feB5zrX9f1+zuXJ8+Z7vovDGGMEAABgiZ/tAgAAQP1GGAEAAFYRRgAAgFWEEQAAYBVhBAAAWEUYAQAAVhFGAACAVYQRAABgFWEEAABYRRgBcMlp3769xo0bZ7sMnzgcDj3++OO2ywBqJcIIUEX279+ve+65Rx07dlRQUJBcLpcGDhyoV155Rd9++22Vb+/06dN6/PHHlZaWVuXrvtTs3r1bjz/+uA4dOmS1jhUrVhA4gGoQYLsAoC746KOPNHr0aDmdTiUkJKhHjx46c+aMNmzYoD/+8Y/atWuX5syZU6XbPH36tJ544glJ0tChQ6t03bbt2bNHfn7f/660e/duPfHEExo6dKjat29vra4VK1ZoxowZZQaSb7/9VgEB/JMKVAb/5wAX6eDBg7r11lvVrl07rVu3ThEREZ7nkpKStG/fPn300UcWK7z0FBcXy+12KzAwsMznnU5njdRRWFioxo0bV8m6goKCqmQ9QL1kAFyUe++910gyGzdurFD/s2fPmieffNJ07NjRBAYGmnbt2pnk5GTz3XffefX77LPPzPXXX28uu+wyExQUZNq3b2/uvPNOY4wxBw8eNJJKLVOmTLngtvfv329uvvlm07RpU9OwYUPTv39/s3z5cs/z2dnZxt/f3zz++OOlxn7xxRdGknn11Vc9bSdPnjQPPPCAadOmjQkMDDSdOnUyzz33nCkpKfH0OV/riy++aF5++WXTsWNH4+fnZ7Zv315une3atTOJiYnGGGPmzp1b5mv9+OOPPf1XrFhhBg0aZBo1amSCg4PNDTfcYHbu3Om1zsTERNO4cWOzb98+M3z4cBMcHGxGjRpljDFm/fr15uabbzaRkZEmMDDQtGnTxjz44IPm9OnTXuPLquO8suZ/27Zt5he/+IUJCQkxjRs3Ntdee61JT0/36nP+9W3YsME89NBDpnnz5qZRo0YmPj7eHDt2zKvvhd4TQG3GnhHgIv3jH/9Qx44dFRMTU6H+48eP1/z583XzzTfrD3/4g/73f/9XKSkp+vzzz7V06VJJ0rFjx3T99derRYsWmjx5spo0aaJDhw7pgw8+kCS1aNFCM2fO1O9+9zvdeOONuummmyRJvXr1Kne7OTk5iomJ0enTp3X//ffrsssu0/z58/WrX/1KS5Ys0Y033qiwsDANGTJE7733nqZMmeI1ftGiRfL399fo0aMlnfuaaMiQITpy5IjuuecetW3bVps2bVJycrKOHj2q6dOne42fO3euvvvuO919991yOp1q1qxZhebrmmuu0f3336///u//1qOPPqrLL79ckjw/3377bSUmJiouLk7PP/+8Tp8+rZkzZ2rQoEHavn2719c6xcXFiouL06BBgzR16lQ1atRIkrR48WKdPn1av/vd73TZZZdp8+bNevXVV/XVV19p8eLFkqR77rlHX3/9tdasWaO33377J+vetWuXBg8eLJfLpUceeUQNGjTQ7NmzNXToUH3yySfq37+/V//77rtPTZs21ZQpU3To0CFNnz5dEydO1KJFiyT99HsCqNVspyGgNsvLyzOSPL9h/5SMjAwjyYwfP96r/eGHHzaSzLp164wxxixdutRIMp999lm56zp+/HiF9oac9+CDDxpJ5n/+5388bQUFBaZDhw6mffv2nr0Zs2fPNpLMjh07vMZ3797dXHvttZ7HTz31lGncuLHZu3evV7/Jkycbf39/k5WVZYz5fs+Iy+Uq9Zt+eX64Z8QYYxYvXlxqb8j5+ps0aWImTJjg1Z6dnW1CQ0O92s/v2Zg8eXKp7f1wD8h5KSkpxuFwmMzMTE9bUlKSKe+fzR//XcTHx5vAwECzf/9+T9vXX39tQkJCzDXXXONpO79nJDY21rjdbk/7Qw89ZPz9/U1ubq4xpmLvCaC24mwa4CLk5+dLkkJCQirUf8WKFZKkSZMmebX/4Q9/kCTPsSVNmjSRJC1fvlxnz56tilK1YsUK9evXT4MGDfK0BQcH6+6779ahQ4e0e/duSdJNN92kgIAAz2/kkrRz507t3r1bY8aM8bQtXrxYgwcPVtOmTXXixAnPEhsbq5KSEq1fv95r+7/+9a/VokWLKnkt561Zs0a5ubm67bbbvGrw9/dX//799fHHH5ca87vf/a5UW8OGDT1/Liws1IkTJxQTEyNjjLZv3+5zXSUlJVq9erXi4+PVsWNHT3tERIR+85vfaMOGDZ73znl33323HA6H5/HgwYNVUlKizMxMSdXzngAuFbUqjKxfv14jR45Uq1at5HA4tGzZMp/XYYzR1KlT1aVLFzmdTrVu3VrPPPNM1ReLesHlckmSCgoKKtQ/MzNTfn5+6ty5s1d7eHi4mjRp4vngGTJkiH7961/riSeeUPPmzTVq1CjNnTtXRUVFla41MzNTXbt2LdV+/uuO89tu3ry5fv7zn+u9997z9Fm0aJECAgI8XwdJ0pdffqmVK1eqRYsWXktsbKykc18r/FCHDh0qXXt5vvzyS0nStddeW6qO1atXl6ohICBAbdq0KbWerKwsjRs3Ts2aNVNwcLBatGihIUOGSJLy8vJ8ruv48eM6ffp0ufPtdrt1+PBhr/a2bdt6PW7atKkk6eTJk5Kq5z0BXCpq1TEjhYWF6t27t3772996/aPoiwceeECrV6/W1KlT1bNnT33zzTf65ptvqrhS1Bcul0utWrXSzp07fRr3w9+Ay3t+yZIl+vTTT/WPf/xDq1at0m9/+1tNmzZNn376qYKDgy+m7J9066236s4771RGRob69Omj9957Tz//+c/VvHlzTx+3263rrrtOjzzySJnr6NKli9fjH+59qCput1vSueNGwsPDSz3/41NtnU6n1ynD0rm9GNddd52++eYb/elPf1K3bt3UuHFjHTlyROPGjfNso7r5+/uX2W6MkWT/PQFUp1oVRoYPH67hw4eX+3xRUZEee+wxvfvuu8rNzVWPHj30/PPPe67B8Pnnn2vmzJnauXOn5zeW6vhtDfXLL3/5S82ZM0fp6emKjo6+YN927drJ7Xbryy+/9OyRkM4dXJqbm6t27dp59R8wYIAGDBigZ555RgsXLtTtt9+u1NRUjR8//icDTVnb3rNnT6n2L774wvP8efHx8brnnns8X9Xs3btXycnJXuM6deqkU6dOefaEVKfyXmunTp0kSS1btqx0HTt27NDevXs1f/58JSQkeNrXrFlT4Tp+rEWLFmrUqFG58+3n56fIyMhK1Xuh9wRQW9Wqr2l+ysSJE5Wenq7U1FT9+9//1ujRo/WLX/zCsyv3/FkPy5cvV4cOHdS+fXuNHz+ePSO4KI888ogaN26s8ePHKycnp9Tz+/fv1yuvvCJJuuGGGySp1JkmL730kiRpxIgRks7tmj//G/F5ffr0kSTPbvnzZ4Lk5uZWqM4bbrhBmzdvVnp6uqetsLBQc+bMUfv27dW9e3dPe5MmTRQXF6f33ntPqampCgwMVHx8vNf6brnlFqWnp2vVqlWltpWbm6vi4uIK1VUR568F8uPXGhcXJ5fLpWeffbbM4yiOHz/+k+s+v0fih/NtjPH8nVWkjrLWef311+vDDz/0umpsTk6OFi5cqEGDBnm+4quoirwngNqqVu0ZuZCsrCzNnTtXWVlZatWqlSTp4Ycf1sqVKzV37lw9++yzOnDggDIzM7V48WItWLBAJSUleuihh3TzzTdr3bp1ll8BaqtOnTpp4cKFGjNmjC6//HKvK7Bu2rRJixcv9txnpXfv3kpMTNScOXOUm5urIUOGaPPmzZo/f77i4+M1bNgwSdL8+fP12muv6cYbb1SnTp1UUFCg119/XS6XyxNoGjZsqO7du2vRokXq0qWLmjVrph49eqhHjx5l1jl58mS9++67Gj58uO6//341a9ZM8+fP18GDB/X++++X+vpizJgxuuOOO/Taa68pLi7OcwDleX/84x/197//Xb/85S81btw4RUVFqbCwUDt27NCSJUt06NAhr691LkafPn3k7++v559/Xnl5eXI6nbr22mvVsmVLzZw5U2PHjtWVV16pW2+9VS1atFBWVpY++ugjDRw4UH/9618vuO5u3bqpU6dOevjhh3XkyBG5XC69//77nmM1figqKkqSdP/99ysuLk7+/v669dZby1zv008/rTVr1mjQoEH6/e9/r4CAAM2ePVtFRUV64YUXfJ6DirwngFrL4pk8F0WSWbp0qefx8uXLjSTTuHFjryUgIMDccsstxhhjJkyYYCSZPXv2eMZt3brVSDJffPFFTb8E1DF79+41EyZMMO3btzeBgYEmJCTEDBw40Lz66qteFzQ7e/aseeKJJ0yHDh1MgwYNTGRkZKmLnm3bts3cdtttpm3btsbpdJqWLVuaX/7yl2bLli1e29y0aZOJiooygYGBPl30rEmTJiYoKMj069fP66JnP5Sfn28aNmxoJJl33nmnzD4FBQUmOTnZdO7c2QQGBprmzZubmJgYM3XqVHPmzBljjPdFzyrqx6f2GmPM66+/bjp27Gj8/f1L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zZpVV5l1QmXn+sknn1TLli1111131USZtV5l5vnvf/+7oqOjlZSUpLCwMPXo0UPPPvusSkpKaqrsWqcy8xwTE6OtW7d6vso5cOCAVqxYoRtuuKFGaq4vbHwW+nzX3trixIkTKikp8dxN+LywsDB98cUXZY7Jzs4us392dna11VnbVWaef+xPf/qTWrVqVerND2+VmesNGzbozTffVEZGRg1UWDdUZp4PHDigdevW6fbbb9eKFSu0b98+/f73v9fZs2c1ZcqUmii71qnMPP/mN7/RiRMnNGjQIBljVFxcrHvvvVePPvpoTZRcb5T3WZifn69vv/1WDRs2rPJt1tk9I6gdnnvuOaWmpmrp0qUKCgqyXU6dUlBQoLFjx+r1119X8+bNbZdTp7ndbrVs2VJz5sxRVFSUxowZo8cee0yzZs2yXVqdkpaWpmeffVavvfaatm3bpg8++EAfffSRnnrqKdul4SLV2T0jzZs3l7+/v3Jycrzac3JyFB4eXuaY8PBwn/qjcvN83tSpU/Xcc8/pX//6l3r16lWdZdYJvs71/v37dejQIY0cOdLT5na7JUkBAQHas2ePOnXqVL1F10KVeU9HRESoQYMG8vf397Rdfvnlys7O1pkzZxQYGFitNddGlZnn//qv/9LYsWM1fvx4SVLPnj1VWFiou+++W4899pj8/Pj9uiqU91nocrmqZa+IVIf3jAQGBioqKkpr1671tLndbq1du1bR0dFljomOjvbqL0lr1qwptz8qN8+S9MILL+ipp57SypUrddVVV9VEqbWer3PdrVs37dixQxkZGZ7lV7/6lYYNG6aMjAxFRkbWZPm1RmXe0wMHDtS+ffs8YU+S9u7dq4iICIJIOSozz6dPny4VOM4HQMM9X6uMlc/Cajs09hKQmppqnE6nmTdvntm9e7e5++67TZMmTUx2drYxxpixY8eayZMne/pv3LjRBAQEmKlTp5rPP//cTJkyhVN7K8DXeX7uuedMYGCgWbJkiTl69KhnKSgosPUSag1f5/rHOJumYnyd56ysLBMSEmImTpxo9uzZY5YvX25atmxpnn76aVsvoVbwdZ6nTJliQkJCzLvvvmsOHDhgVq9ebTp16mRuueUWWy+hVigoKDDbt28327dvN5LMSy+9ZLZv324yMzONMcZMnjzZjB071tP//Km9f/zjH83nn39uZsyYwam9F+vVV181bdu2NYGBgaZfv37m008/9Tw3ZMgQk5iY6NX/vffeM126dDGBgYHmiiuuMB999FENV1w7+TLP7dq1M5JKLVOmTKn5wmshX9/TP0QYqThf53nTpk2mf//+xul0mo4dO5pnnnnGFBcX13DVtY8v83z27Fnz+OOPm06dOpmgoCATGRlpfv/735uTJ0/WfOG1yMcff1zmv7nn5zYxMdEMGTKk1Jg+ffqYwMBA07FjRzN37txqrdFhDPu2AACAPXX2mBEAAFA7EEYAAIBVhBEAAGAVYQQAAFhFGAEAAFYRRgAAgFWEEQAAYBVhBACAemr9+vUaOXKkWrVqJYfDoWXLlvm8DmOMpk6dqi5dusjpdKp169Z65plnfFpHnb1RHgAAuLDCwkL17t1bv/3tb3XTTTdVah0PPPCAVq9eralTp6pnz5765ptv9M033/i0Dq7ACgAA5HA4tHTpUsXHx3vaioqK9Nhjj+ndd99Vbm6uevTooeeff15Dhw6VJH3++efq1auXdu7cqa5du1Z623xNAwAAyjRx4kSlp6crNTVV//73vzV69Gj94he/0JdffilJ+sc//qGOHTtq+fLl6tChg9q3b6/x48f7vGeEMAIAAErJysrS3LlztXjxYg0ePFidOnXSww8/rEGDBmnu3LmSpAMHDigzM1OLFy/WggULNG/ePG3dulU333yzT9vimBEAAFDKjh07VFJSoi5duni1FxUV6bLLLpMkud1uFRUVacGCBZ5+b775pqKiorRnz54Kf3VDGAEAAKWcOnVK/v7+2rp1q/z9/b2eCw4OliRFREQoICDAK7Bcfvnlks7tWSGMAACASuvbt69KSkp07NgxDR48uMw+AwcOVHFxsfbv369OnTpJkvbu3StJateuXYW3xdk0AADUU6dOndK+ffsknQsfL730koYNG6ZmzZqpbdu2uuOOO7Rx40ZNmzZNffv21fHjx7V27Vr16tVLI0aMkNvt1tVXX63g4GBNnz5dbrdbSUlJcrlcWr16dYXrIIwAAFBPpaWladiwYaXaExMTNW/ePJ09e1ZPP/20FixYoCNHjqh58+YaMGCAnnjiCfXs2VOS9PXXX+u+++7T6tWr1bhxYw0fPlzTpk1Ts2bNKlwHYQQAAFjFqb0AAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACs+v8h63+BToASGwAAAABJRU5ErkJggg==",
|
||
"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.title(\"Cost over iterations\")\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": 323,
|
||
"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": 324,
|
||
"id": "5e594f32",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"The best cost value is inf, 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": 325,
|
||
"id": "3f693388",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Theta = [ 0.32873692 29.18572953]\n",
|
||
"Cost = 145335.46042386265\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGzCAYAAAD9pBdvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAASKhJREFUeJzt3Xl8E3X+P/DX5O6V9L6gpeWQQ05RoIDiUanIutRdXeSrCx7gsaAgrq51d8Vj3eoqHusqh/4EXBdBVFARgS7nIkXOKody03L0AtqkTds0yXx+f6QJBFpoaJrp8Xo+HvOATj4zeWcIzSufz2dmJCGEABEREZFCVEoXQERERO0bwwgREREpimGEiIiIFMUwQkRERIpiGCEiIiJFMYwQERGRohhGiIiISFEMI0RERKQohhEiIiJSFMMIEbU4KSkpuP/++5UuwyeSJOGFF15QugyiVolhhMhPDh8+jEceeQSdO3eGwWCA0WjEsGHD8M4776C6utrvz1dVVYUXXngB69ev9/u+W5p9+/bhhRdewLFjxxStY8WKFQwcRM1Ao3QBRG3Bt99+i7vvvht6vR7jx49H7969UVtbi02bNuHpp5/G3r17MXfuXL8+Z1VVFV588UUAwI033ujXfStt//79UKnOfVfat28fXnzxRdx4441ISUlRrK4VK1bgvffeqzeQVFdXQ6Phr1SiK8H/OURNdPToUdxzzz3o1KkT1q5di4SEBM9jkydPxqFDh/Dtt98qWGHL43A4IMsydDpdvY/r9fqA1GG1WhESEuKXfRkMBr/sh6hdEkTUJI8++qgAIL7//vtGtbfb7eKll14SnTt3FjqdTnTq1ElkZWWJmpoar3bbtm0TI0eOFFFRUcJgMIiUlBTxwAMPCCGEOHr0qABw0TJjxoxLPvfhw4fFXXfdJSIiIkRQUJAYPHiwWL58uefxoqIioVarxQsvvHDRtr/88osAIN59913PurKyMjF16lTRsWNHodPpRJcuXcSrr74qnE6np4271tdff1289dZbonPnzkKlUoldu3Y1WGenTp3EhAkThBBCzJs3r97Xum7dOk/7FStWiOHDh4vg4GARGhoqbr/9drFnzx6vfU6YMEGEhISIQ4cOiVGjRonQ0FAxZswYIYQQGzduFHfddZdISkoSOp1OdOzYUUybNk1UVVV5bV9fHW71Hf+dO3eK2267TYSFhYmQkBBx8803i9zcXK827te3adMm8eSTT4ro6GgRHBwsMjMzRUlJiVfbS70niFoz9owQNdE333yDzp07Y+jQoY1qP3HiRCxYsAB33XUXnnrqKfzwww/Izs7Gzz//jKVLlwIASkpKMHLkSMTExODZZ59FeHg4jh07hi+//BIAEBMTg1mzZuGxxx7DnXfeid/85jcAgL59+zb4vMXFxRg6dCiqqqrwxBNPICoqCgsWLMCvf/1rfP7557jzzjsRFxeHESNG4LPPPsOMGTO8tl+8eDHUajXuvvtuAK5hohEjRuDkyZN45JFHkJycjM2bNyMrKwuFhYV4++23vbafN28eampq8PDDD0Ov1yMyMrJRx+uGG27AE088gX/+85947rnn0LNnTwDw/Pnvf/8bEyZMQEZGBl577TVUVVVh1qxZGD58OHbt2uU1rONwOJCRkYHhw4fjjTfeQHBwMABgyZIlqKqqwmOPPYaoqChs3boV7777Lk6cOIElS5YAAB555BGcOnUKOTk5+Pe//33Zuvfu3Yvrr78eRqMRzzzzDLRaLebMmYMbb7wRGzZswODBg73aP/7444iIiMCMGTNw7NgxvP3225gyZQoWL14M4PLvCaJWTek0RNSamc1mAcDzDfty8vLyBAAxceJEr/V//OMfBQCxdu1aIYQQS5cuFQDEtm3bGtxXaWlpo3pD3KZNmyYAiP/973+edRUVFSI1NVWkpKR4ejPmzJkjAIjdu3d7bd+rVy9x8803e35++eWXRUhIiDhw4IBXu2effVao1WpRUFAghDjXM2I0Gi/6pt+Q83tGhBBiyZIlF/WGuOsPDw8XkyZN8lpfVFQkTCaT13p3z8azzz570fOd3wPilp2dLSRJEvn5+Z51kydPFg392rzw3yIzM1PodDpx+PBhz7pTp06JsLAwccMNN3jWuXtG0tPThSzLnvVPPvmkUKvVory8XAjRuPcEUWvFs2mImsBisQAAwsLCGtV+xYoVAIDp06d7rX/qqacAwDO3JDw8HACwfPly2O12f5SKFStWYNCgQRg+fLhnXWhoKB5++GEcO3YM+/btAwD85je/gUaj8XwjB4A9e/Zg3759GDt2rGfdkiVLcP311yMiIgKnT5/2LOnp6XA6ndi4caPX8//2t79FTEyMX16LW05ODsrLyzFu3DivGtRqNQYPHox169ZdtM1j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Yffu3V5v/pycHBiNxos+FNqrW265Bbt370ZeXp5nufbaa3Hvvfd6/s7j7B/Dhg276PT0AwcOoFOnTgCA1NRUxMfHex1ri8WCH374wetYl5eXY8eOHZ42a9euhSzLGDx4cABeRctXVVUFlcr7o0etVkOWZQA8zs3FX8c1LS0NGzduhN1u97TJyclB9+7dr3iIBkD7PrVXr9eL+fPni3379omHH35YhIeHe51xQA177LHHhMlkEuvXrxeFhYWepaqqytPm0UcfFcnJyWLt2rVi+/btIi0tTaSlpXked59yOnLkSJGXlydWrlwpYmJieMrpZZx/No0QPM7+snXrVqHRaMQrr7wiDh48KP7zn/+I4OBg8cknn3javPrqqyI8PFx89dVX4qeffhJjxoyp99TIAQMGiB9++EFs2rRJdOvWrd2fcnq+CRMmiA4dOnhO7f3yyy9FdHS0eOaZZzxteJyvTEVFhdi1a5fYtWuXACDefPNNsWvXLpGfny+E8M9xLS8vF3FxceL3v/+92LNnj1i0aJEIDg7mqb1N8e6774rk5GSh0+nEoEGDxJYtW5QuqdUAUO8yb948T5vq6mrxhz/8QURERIjg4GBx5513isLCQq/9HDt2TIwaNUoEBQWJ6Oho8dRTTwm73R7gV9O6XBhGeJz955tvvhG9e/cWer1e9OjRQ8ydO9frcVmWxV//+lcRFxcn9Hq9uOWWW8T+/fu92pw5c0aMGzdOhIaGCqPRKB544AFRUVERyJfRolksFjF16lSRnJwsDAaD6Ny5s/jzn//sdaooj/OVWbduXb2/lydMmCCE8N9x/fHHH8Xw4cOFXq8XHTp0EK+++mqTa5eEOO+yd0REREQB1i7njBAREVHLwTBCREREimIYISIiIkUxjBAREZGiGEaIiIhIUQwjREREpCiGESIiIlIUwwgREREpimGEiIiIFMUwQkRERIpiGCEiIiJF/X9eaqluII0d2gAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Your code here\n",
|
||
"import random\n",
|
||
"def stochastic_gradient_descent(X, y, max_iter, alpha):\n",
|
||
" \n",
|
||
" theta = np.zeros((2))\n",
|
||
"\n",
|
||
" costs = []\n",
|
||
"\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(f\"Theta = {theta}\")\n",
|
||
" print(f\"Cost = {cost_J(y_pred, y)}\")\n",
|
||
"\n",
|
||
" plt.plot(range(0, len(costs)), costs)\n",
|
||
" plt.title(\"Cost over iterations\")\n",
|
||
" plt.show()\n",
|
||
"\n",
|
||
"stochastic_gradient_descent(X, y, max_iter = 1000, alpha = 0.000001)"
|
||
]
|
||
},
|
||
{
|
||
"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": 326,
|
||
"id": "f73c6af3",
|
||
"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": [
|
||
"# 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": 327,
|
||
"id": "dbcb6f22",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Theta = [240.07710713 26.33242457]\n",
|
||
"Cost = 138034.95779787414\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Your code here\n",
|
||
"y_pred = X @ theta\n",
|
||
"print(f\"Theta = {theta}\")\n",
|
||
"print(f\"Cost = {cost_J(y_pred, y)}\")"
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"The closed form solution is great to have to best value possible, but it is very compute hungry. The inverse of a really big matrix is not something simple to do. So, the gradient descent is better when compute time is limited."
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"Since for each iterations we update theta based on a random point, the outliers could significantly slow the congergence. If there is a lot of them, each update of the thetha values will not decrease the total cost value. This means that, if we are in a while loop searching to improve the cost value, it might either cause more loops to achieve the desired goal or cause the while loop to exit because the cost value is not getting smaller, but bigger."
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"A too small alpha value would make the descent too slow and remove the speed advantage of this method. An alpha too big would cause the theta values to jump from an extreme to another. This would be highly susceptible to outliers. To mitigate this, we could apply the same logic, but pick a small number of samples (mini-batch) rather than a single one for each operations. This would reduce the impact of outliers while keeping the algorithm faster than the full one."
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"If we have a dependency to the square and to the cube of the feature f1, we would augment the matrix to reflect this : h(f) = theta0 + theta1xf1 + theta2xf1² + theta3xf1³. Yes, we need to take precautions because f1³ could mean huge numbers and cause overflows. The solutions would be to scale down each value to keep the relations between them but reduce their overall values"
|
||
]
|
||
},
|
||
{
|
||
"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": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "8ce59c65",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Exercice 6 Optional – Mini-batch gradient descent for linear regression"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "8604ed56",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Stochastic : \n",
|
||
"Theta = [ 0.31013607 29.29520581]\n",
|
||
"Cost = 145871.70198566347\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"batch of 1 : \n",
|
||
"Theta = [ 0.33356128 29.13574287]\n",
|
||
"Cost = 145123.94167962432\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGzCAYAAAD9pBdvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAARYNJREFUeJzt3Xl8VNX9//H3zCSZrJOFkIQlYVUQWQWBIIoLmqK1xlar1Apa94IbrrTfurS10brXWpT2J1otoqhoi7hQFikSRDZlkU2BICQBhOz7zPn9kWRgIIFMksnN8no+HCF3zp37uWdC8p5zz73XZowxAgAAsIjd6gIAAEDHRhgBAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwggAALAUYQQAAFiKMAIAACxFGAHQ6vTs2VPXXXed1WX4xWaz6ZFHHrG6DKBNIowAzeTbb7/VLbfcot69eys0NFQul0tnnXWWnn/+eZWWljb79kpKSvTII49o6dKlzf7arc3mzZv1yCOPaNeuXZbWsWDBAgIHEABBVhcAtAcffvihrrzySjmdTk2aNEkDBw5URUWFli9frvvuu0+bNm3SzJkzm3WbJSUlevTRRyVJ5557brO+ttW2bt0qu/3IZ6XNmzfr0Ucf1bnnnquePXtaVteCBQv04osv1hlISktLFRTEj1SgMfiXAzTRzp07dfXVV6tHjx5avHixunTp4n1uypQp2rFjhz788EMLK2x9qqqq5PF4FBISUufzTqezReooLi5WREREs7xWaGhos7wO0CEZAE1y6623Gknm888/b1D7yspK8/vf/9707t3bhISEmB49epjp06ebsrIyn3Zffvmlueiii0ynTp1MaGio6dmzp7n++uuNMcbs3LnTSDru8fDDD59w299++6254oorTGxsrAkLCzOjRo0y8+fP9z6fk5NjHA6HeeSRR45bd8uWLUaSeeGFF7zLDh8+bO68807TvXt3ExISYvr06WMef/xx43a7vW1qa33yySfNs88+a3r37m3sdrtZt25dvXX26NHDTJ482RhjzKxZs+rc1yVLlnjbL1iwwIwdO9aEh4ebyMhIc/HFF5uNGzf6vObkyZNNRESE2bFjh5kwYYKJjIw0l112mTHGmGXLlpkrrrjCJCcnm5CQENO9e3dz1113mZKSEp/166qjVl39v3btWvOjH/3IREVFmYiICHP++eebzMxMnza1+7d8+XJz9913m/j4eBMeHm7S09PN/v37fdqe6HsCaMsYGQGa6D//+Y969+6tMWPGNKj9jTfeqNdee01XXHGF7rnnHn3xxRfKyMjQN998o3nz5kmS9u/fr4suukidO3fWgw8+qJiYGO3atUvvvfeeJKlz586aMWOGbrvtNl1++eX66U9/KkkaPHhwvdvNzc3VmDFjVFJSojvuuEOdOnXSa6+9pp/85Cd65513dPnllysxMVHjxo3T22+/rYcffthn/bfeeksOh0NXXnmlpOrDROPGjdPevXt1yy23KCUlRStWrND06dOVnZ2t5557zmf9WbNmqaysTDfffLOcTqfi4uIa1F/nnHOO7rjjDv3lL3/Rb37zG5122mmS5P3z9ddf1+TJk5WWlqYnnnhCJSUlmjFjhsaOHat169b5HNapqqpSWlqaxo4dq6eeekrh4eGSpLlz56qkpES33XabOnXqpFWrVumFF17Q999/r7lz50qSbrnlFu3bt08LFy7U66+/ftK6N23apLPPPlsul0v333+/goOD9fLLL+vcc8/VZ599plGjRvm0v/322xUbG6uHH35Yu3bt0nPPPaepU6fqrbfeknTy7wmgTbM6DQFtWX5+vpHk/YR9MuvXrzeSzI033uiz/N577zWSzOLFi40xxsybN89IMl9++WW9r3XgwIEGjYbUuuuuu4wk87///c+7rLCw0PTq1cv07NnTO5rx8ssvG0lmw4YNPusPGDDAnH/++d6v//CHP5iIiAizbds2n3YPPvigcTgcJisryxhzZGTE5XId90m/PkePjBhjzNy5c48bDamtPyYmxtx0000+y3Nyckx0dLTP8tqRjQcffPC47R09AlIrIyPD2Gw2s3v3bu+yKVOmmPp+bB77XqSnp5uQkBDz7bffepft27fPREVFmXPOOce7rHZkZPz48cbj8XiX33333cbhcJi8vDxjTMO+J4C2irNpgCYoKCiQJEVFRTWo/YIFCyRJ06ZN81l+zz33SJJ3bklMTIwkaf78+aqsrGyOUrVgwQKNHDlSY8eO9S6LjIzUzTffrF27dmnz5s2SpJ/+9KcKCgryfiKXpI0bN2rz5s266qqrvMvmzp2rs88+W7GxsTp48KD3MX78eLndbi1btsxn+z/72c/UuXPnZtmXWgsXLlReXp4mTpzoU4PD4dCoUaO0ZMmS49a57bbbjlsWFhbm/XtxcbEOHjyoMWPGyBijdevW+V2X2+3Wp59+qvT0dPXu3du7vEuXLvrFL36h5cuXe793at18882y2Wzer88++2y53W7t3r1bUmC+J4DWok2FkWXLlunSSy9V165dZbPZ9P777/v9GsYYPfXUUzr11FPldDrVrVs3PfbYY81fLDoEl8slSSosLGxQ+927d8tut6tv374+y5OSkhQTE+P9xTNu3Dj97Gc/06OPPqr4+HhddtllmjVrlsrLyxtd6+7du9WvX7/jltce7qjddnx8vC644AK9/fbb3jZvvfWWgoKCvIeDJGn79u36+OOP1blzZ5/H+PHjJVUfVjhar169Gl17fbZv3y5JOv/884+r49NPPz2uhqCgIHXv3v2418nKytJ1112nuLg4RUZGqnPnzho3bpwkKT8/3++6Dhw4oJKSknr72+PxaM+ePT7LU1JSfL6OjY2VJB0+fFhSYL4ngNaiTc0ZKS4u1pAhQ/SrX/3K54eiP+688059+umneuqppzRo0CAdOnRIhw4dauZK0VG4XC517dpVGzdu9Gu9oz8B1/f8O++8o5UrV+o///mPPvnkE/3qV7/S008/rZUrVyoyMrIpZZ/U1Vdfreuvv17r16/X0KFD9fbbb+uCCy5QfHy8t43H49GFF16o+++/v87XOPXUU32+Pnr0obl4PB5J1fNGkpKSjnv+2FNtnU6nzynDUvUoxoUXXqhDhw7pgQceUP/+/RUREaG9e/fquuuu824j0BwOR53LjTGSrP+eAAKpTYWRCRMmaMKECfU+X15ert/+9rd68803lZeXp4EDB+qJJ57wXoPhm2++0YwZM7Rx40bvJ5ZAfFpDx/LjH/9YM2fOVGZmplJTU0/YtkePHvJ4PNq+fbt3REKqnlyal5enHj16+LQfPXq0Ro8erccee0yzZ8/WNddcozlz5ujGG288aaCpa9tbt249bvmWLVu8z9dKT0/XLbfc4j1Us23bNk2fPt1nvT59+qioqMg7EhJI9e1rnz59JEkJCQmNrmPDhg3atm2bXnvtNU2aNMm7fOHChQ2u41idO3dWeHh4vf1tt9uVnJzcqHpP9D0BtFVt6jDNyUydOlWZmZmaM2eOvv76a1155ZX60Y9+5B3KrT3rYf78+erVq5d69uypG2+8kZERNMn999+viIgI3XjjjcrNzT3u+W+//VbPP/+8JOniiy+WpOPONHnmmWckSZdccomk6qH52k/EtYYOHSpJ3mH52jNB8vLyGlTnxRdfrFWrVikzM9O7rLi4WDNnzlTPnj01YMAA7/KYmBilpaXp7bff1pw5cxQSEqL09HSf1/v5z3+uzMxMffLJJ8dtKy8vT1VVVQ2qqyFqrwVy7L6mpaXJ5XLpT3/6U53zKA4cOHDS164dkTi6v40x3vesIXXU9ZoXXXSRPvjgA5+rxubm5mr27NkaO3as9xBfQzXkewJoq9rUyMiJZGVladasWcrKylLXrl0lSffee68+/vhjzZo1S3/605/03Xffaffu3Zo7d67++c9/yu126+6779YVV1yhxYsXW7wHaKv69Omj2bNn66qrrtJpp53mcwXWFStWaO7cud77rAwZMkSTJ0/WzJkzlZeXp3HjxmnVqlV67bXXlJ6ervPOO0+S9Nprr+lvf/ubLr/8cvXp00eFhYX6+9//LpfL5Q00YWFhGjBggN566y2deuqpiouL08CBAzVw4MA663zwwQf15ptvasKECbrjjjsUFxen1157TTt37tS777573OGLq666Sr/85S/1t7/9TWlpad4JlLXuu+8+/fvf/9aPf/xjXXfddRo+fLiKi4u1YcMGvfPOO9q1a5fPYZ2mGDp0qBwOh5544gnl5+fL6XTq/PPPV0JCgmbMmKFrr71WZ5xxhq6++mp17txZWVlZ+vDDD3XWWWfpr3/96wlfu3///urTp4/uvfde7d27Vy6XS++++653rsbRhg8fLkm64447lJaWJofDoauvvrrO1/3jH/+ohQsXauzYsfr1r3+toKAgvfzyyyovL9ef//xnv/ugId8TQJtl4Zk8TSLJzJs3z/v1/PnzjSQTERHh8wgKCjI///nPjTHG3HTTTUaS2bp1q3e9NWvWGElmy5YtLb0LaGe2bdtmbrrpJtOzZ08TEhJioqKizFlnnWVeeOEFnwuaVVZWmkcffdT06tXLBAcHm+Tk5OMuerZ27VozceJEk5KSYpxOp0lISDA//vGPzerVq322uWLFCjN8+HATEhLi10XPYmJiTGhoqBk5cqTPRc+OVlBQYMLCwowk88Ybb9TZprCw0EyfPt307dvXhISEmPj4eDNmzBjz1FNPmYqKCmOM70XPGurYU3uNMebvf/+76d27t3E4HMed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kBANHz5cixYtUnp6uqTqCayLFi3S1KlT61wnNTVVixYt0l133eVdtnDhQqWmpjZ4u3a7Xd27d/enVL+4XC6+0VsIfd0y6OeWQT+3DPq55QSir080IlLL78M006ZN0+TJkzVixAiNHDlSzz33nIqLi3X99ddLkiZNmqRu3bopIyNDknTnnXdq3Lhxevrpp3XJJZdozpw5Wr16tWbOnOnvpgEAQDvkdxi56qqrdODAAT300EPKycnR0KFD9fHHH3snqWZlZcluP3KSzpgxYzR79mz93//9n37zm9/olFNO0fvvv6+BAwc2314AAIA2q1ETWKdOnVrvYZmlS5cet+zKK6/UlVde2ZhNBZTT6dTDDz/sMz8FgUFftwz6uWXQzy2Dfm45Vve13xc9AwAAaE7cKA8AAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKU6dBh58cUX1bNnT4WGhmrUqFFatWqV1SW1GRkZGTrzzDMVFRWlhIQEpaena+vWrT5tysrKNGXKFHXq1EmRkZH62c9+dtytAbKysnTJJZcoPDxcCQkJuu+++1RVVdWSu9KmPP7447LZbD5XNKafm8/evXv1y1/+Up06dVJYWJgGDRqk1atXe583xuihhx5Sly5dFBYWpvHjx2v79u0+r3Ho0CFdc801crlciomJ0Q033KCioqKW3pVWy+1263e/+5169eqlsLAw9enTR3/4wx98bqRGPzfOsmXLdOmll6pr166y2Wx6//33fZ5vrn79+uuvdfbZZys0NFTJycn685//3PTiTQc1Z84cExISYl555RWzadMmc9NNN5mYmBiTm5trdWltQlpampk1a5bZuHGjWb9+vbn44otNSkqKKSoq8ra59dZbTXJyslm0aJFZvXq1GT16tBkzZoz3+aqqKjNw4EAzfvx4s27dOrNgwQITHx9vpk+fbsUutXqrVq0yPXv2NIMHDzZ33nmndzn93DwOHTpkevToYa677jrzxRdfmO+++8588sknZseOHd42jz/+uImOjjbvv/+++eqrr8xPfvIT06tXL1NaWupt86Mf/cgMGTLErFy50vzvf/8zffv2NRMnTrRil1qlxx57zHTq1MnMnz/f7Ny508ydO9dERkaa559/3tuGfm6cBQsWmN/+9rfmvffeM5LMvHnzfJ5vjn7Nz883iYmJ5pprrjEbN240b775pgkL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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Theta = [ 0.32898838 28.78840806]\n",
|
||
"Cost = 144232.79516214516\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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w6uvvgoASEpKwuHDh/HBBx9g+vTpElfXdXz++ef4z3/+gxUrVuDaa69Fbm4u5s+fj+joaJ7nbqxbXqYJDQ2FQqFocsdBcXExIiMjJarKM82dOxfr16/HDz/8gJiYGNv6yMhI1NXVoby83K79lec4MjKy2f8Gje+R9TJMSUkJrrvuOiiVSiiVSmzbtg3/+Mc/oFQqERERwfPsJFFRURgwYIDduv79+6OgoADAL+eqtd8bkZGRKCkpsXu/vr4epaWlPNcNnnzySTz99NO47777MGjQIPz+97/H448/jszMTAA8z67irPPqqt8n3TKMqFQqJCcnY/PmzbZ1FosFmzdvRkpKioSVeQ4hBObOnYs1a9Zgy5YtTbrtkpOT4eXlZXeO8/LyUFBQYDvHKSkpOHTokN0Pf1ZWFjQaTZMvhe7q1ltvxaFDh5Cbm2tbhg0bhqlTp9r+zvPsHKNHj25ye/rx48cRHx8PAEhMTERkZKTduTYYDNi9e7fduS4vL8f+/fttbbZs2QKLxYIRI0a44Sg6v+rqasjl9l89CoUCFosFAM+zqzjrvKakpGD79u0wmUy2NllZWejbt2+7L9EA6N639qrVarFs2TJx9OhR8eCDD4rAwEC7Ow6oZY888ojQarVi69atoqioyLZUV1fb2jz88MMiLi5ObNmyRezbt0+kpKSIlJQU2/uNt5yOHz9e5Obmiu+//16EhYXxltOruPJuGiF4np1lz549QqlUildeeUWcOHFC/Oc//xG+vr7i008/tbV57bXXRGBgoFi3bp346aefxKRJk5q9NTIpKUns3r1b7NixQ/Tp06fb33J6penTp4sePXrYbu396quvRGhoqHjqqadsbXie26eiokLk5OSInJwcAUC8+eabIicnR+Tn5wshnHNey8vLRUREhPj9738vDh8+LFauXCl8fX15a29HvPvuuyIuLk6oVCpx/fXXi127dkldkscA0OyydOlSW5uamhrxxz/+UQQFBQlfX19x9913i6KiIrvPOXv2rJgwYYLw8fERoaGh4oknnhAmk8nNR+NZfh1GeJ6d55tvvhEDBw4UarVa9OvXTyxZssTufYvFIp577jkREREh1Gq1uPXWW0VeXp5dm8uXL4spU6YIf39/odFoxMyZM0VFRYU7D6NTMxgMYt68eSIuLk54e3uLnj17imeffdbuVlGe5/b54Ycfmv29PH36dCGE887rwYMHxZgxY4RarRY9evQQr732WodrlwlxxbR3RERERG7WLceMEBERUefBMEJERESSYhghIiIiSTGMEBERkaQYRoiIiEhSDCNEREQkKYYRIiIikhTDCBEREUmKYYSIiIgkxTBCREREkmIYISIiIkn9fzmwk7w1HyfjAAAAAElFTkSuQmCC",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"def batch_gradient_descent(X, y, batch_size, max_iter, alpha):\n",
|
||
" theta = np.zeros((2))\n",
|
||
"\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",
|
||
" batch_idx = np.random.choice(y.shape[0], batch_size)\n",
|
||
" y_stoch = y[batch_idx]\n",
|
||
" y_pred_stoch = X[batch_idx, :] @ theta\n",
|
||
"\n",
|
||
" theta[0] = theta[0] - alpha * (1/len(y_stoch)) * np.sum(y_pred_stoch - y_stoch)\n",
|
||
" theta[1] = theta[1] - alpha * (1/len(y_stoch)) * np.sum((y_pred_stoch - y_stoch) * X[batch_idx, 1])\n",
|
||
"\n",
|
||
" y_pred = X @ theta\n",
|
||
" costs.append(cost_J(y_pred, y))\n",
|
||
"\n",
|
||
"\n",
|
||
" y_pred = X @ theta\n",
|
||
" print(f\"Theta = {theta}\")\n",
|
||
" print(f\"Cost = {cost_J(y_pred, y)}\")\n",
|
||
"\n",
|
||
" plt.plot(range(0, len(costs)), costs)\n",
|
||
" plt.title(\"Cost over iterations\")\n",
|
||
" plt.show()\n",
|
||
"\n",
|
||
"\n",
|
||
"print(\"Stochastic : \")\n",
|
||
"stochastic_gradient_descent(X, y, max_iter = 1000, alpha=0.000001)\n",
|
||
"print(\"batch of 1 : \")\n",
|
||
"batch_gradient_descent(X, y, batch_size = 1, max_iter = 1000, alpha = 0.000001)\n",
|
||
"print(\"batch of 10 : \")\n",
|
||
"batch_gradient_descent(X, y, batch_size = 10, max_iter = 1000, alpha = 0.000001)"
|
||
]
|
||
}
|
||
],
|
||
"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
|
||
}
|