{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Lab 1: Linear regression, OLS and gradient descent " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[1. 0. ]\n", " [1. 0.55555556]\n", " [1. 1.11111111]\n", " [1. 1.66666667]\n", " [1. 2.22222222]\n", " [1. 2.77777778]\n", " [1. 3.33333333]\n", " [1. 3.88888889]\n", " [1. 4.44444444]\n", " [1. 5. ]]\n", "[1. 1.55555556 2.11111111 2.66666667 3.22222222 3.77777778\n", " 4.33333333 4.88888889 5.44444444 6. ]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "\n", "# 1) Generating synthetic data\n", "# =================================\n", "# We start by generating equispaced points on the interval [0,5]. In this case we \n", "# assume a simple parametric model between the targets and the features \n", "# of the form t = h_beta(x) and we suppose \n", "# that our targets are generated as t_i = h_beta(x_i) = beta0 + beta1*x_i for \n", "# some beta0, beta1 (which we fix to arbitrary unknown constants)\n", "\n", "x = np.linspace(0, 5, num=10)\n", "\n", "xtilde = np.hstack((np.ones((len(x),1)).reshape(-1,1), x.reshape(-1,1)))\n", "\n", "\n", "print(xtilde)\n", "\n", "beta0 =1\n", "beta1 = 1\n", "\n", "\n", "beta = np.array([beta0, beta1])\n", "\n", "targets = np.dot(beta, xtilde.T)\n", "\n", "print(targets) # ti's \n", "\n", "# In most situation our assumption on the model h_beta will not be able to \n", "# match perfectly the data set. To put ourselves in such a framework, we perturb \n", "# our samples with some random noise epsilon_i so that they do not perfectly lie on \n", "# a line anymore. \n", "\n", "t_noisy = targets + np.random.normal(0, 0.2, len(x))\n", "\n", "plt.scatter(x, t_noisy, c='r')\n", "plt.plot(x, targets)\n", "plt.show()\n", "\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# 2) Learning the model\n", "# =================================\n", "\n", "# The supervised learning problem then consist in find an appropriate mapping h_beta \n", "# that predicts as well as possible the targets t_i from the features x_i's\n", "# Since we assumed the simple parametric model h_beta(x) = beta0 + beta1*x, we are left with \n", "# finding the beta0 and beta1 such that the t_i are best predicted from the x_i\n", "\n", "# there are several criteria we could use. Here we choose to use a least squares loss (OLS for ordinary least squares)\n", "# of the form L(beta) = sum_i (t_i - (beta0 + beta1*x_i))^2 which penalize the squares of the \n", "# differences between the predictions from our model and the actual targets\n", "\n", "\n", "# We have our criterion, now we need a way to find the associated optimal \n", "# beta0 and beta1, that is to say the values beta0 and beta1 that make this loss minimum\n", "# for this again there are multiple options. The first one is to follow the \n", "# opposite direction to the gradient until we reach a minimum. Indeed, the gradient \n", "# of a function always points in the direction of steepest ascent. By taking - grad, we \n", "# are thus guaranteed to decrease the value of the function. The gradient is the vector concatenating \n", "# the derivatives with respect to each variable (beta0 and beta1), we thus have grad = [dL/dbeta0, dL/dbeta1]\n", "\n", "# Once we have computed the derivatives of L with respect to beta0 and beta1, \n", "# we can then apply the updates\n", "\n", "# beta0 <-- beta0 - eta * dL/dbeta0\n", "# beta1 <-- beta1 - eta * dL/dbeta1\n", "\n", "# for a sufficiently small eta also known as the learning rate. If eta is small enough, since -gradient \n", "# always points in the direction of steepest descent will end up reaching a point of zero derivative\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "\n", "# setting the learning rate\n", "eta = 0.1\n", "\n", "# setting max num of gradient updates\n", "maxIter = 100\n", "\n", "\n", "# initial, starting point for (beta0, beta1)\n", "beta_init = np.random.normal(0,1,2)\n", "beta = beta_init\n", "\n", "reweighting = np.true_divide(1, 2*len(x))\n", "\n", "\n", "\n", "# gradient updates\n", "\n", "for iter in np.arange(0,maxIter):\n", "\n", " \n", " grad_beta0 = 2*reweighting*np.sum((targets.reshape(-1,1) - np.dot(beta, xtilde.T).reshape(-1,1)))*(-1)\n", " grad_beta1_tmp = (targets.reshape(-1,1) - np.dot(beta, xtilde.T).reshape(-1,1))\n", " grad_beta1 = -2*reweighting*np.sum(np.multiply(grad_beta1_tmp,x.reshape(-1,1)))\n", " \n", " beta[0] = beta[0] - eta*grad_beta0\n", " beta[1] = beta[1] - eta*grad_beta1\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "xprediction = np.linspace(0,5,50)\n", "xpredictiontilde = np.hstack((np.ones((len(xprediction),1)).reshape(-1,1), xprediction.reshape(-1,1)))\n", "\n", "targets_prediction = np.dot(beta, xpredictiontilde.T)\n", "\n", "\n", "# plot of the recovered model on top of the true (unknown one)\n", "plt.scatter(x, t_noisy, c='r')\n", "plt.plot(x, targets)\n", "plt.plot(xprediction, targets_prediction, c='g')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-43.21923641728319" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grad_beta0" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }