{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bias v.s. Variance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The objective of the following exercise is to explore the relationship between two competing properties of a statistical learning model: variance and bias. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The *Variance* consists in the amount by which a model changes when we train it on a different data set. It is expexted that the fitted method varies according to the data it is fed with, nevertheless the change shouldn't be significant. If this is not the case the model is generally too flexible and is said to have high variance." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On the other hand the *Bias* is the error introduced when we try to model a real world problem, which may be very complicated, with a too simple approximation. In the example below we try to predict the water flowing out of a dam using the change in water level of an external reservoir. It is immediately clear that the relation between X and y is not linear. Nevertheless, for the purpose of experimenting with ML we'll fit a linear model and check the results we get. Evidently the method poorly estimates the true relationship between X and y. In this case, a linear model is said to have high bias." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a general rule, the more we increase the flexibity of a method, the more the variance increases and the bias decreases. The rate at which the two properties change is not the same though and it is crucial to study their relative fluctuation to find the sweet spot minimizing the total model error. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The water and the dam " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As announced above we will build a predictive model to forecast the amount of water getting out of a dam. We'll do this playing around with Linear Regression. At first drawing a straight line and later on extending the feature space with the addition of p-th degree polynomials of X. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First recall the regularized cost function and its gradient for Linear Regression:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$J(\\theta) = \\frac{1}{2m} \\sum_{i=1}^{m} (h_\\theta(x^{(i)}) - y^{(i)})^2 + \\frac{\\lambda}{2m}\\sum_{j=1}^n\\theta_j^2$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\frac{\\partial J(\\theta)}{\\partial \\theta_0} = \\frac{1}{m} \\sum_{i=1}^{m} (h_\\theta(x^{(i)}) - y^{(i)}) x_j^{(i)} $ for $j=0$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\frac{\\partial J(\\theta)}{\\partial \\theta_j} = \\frac{1}{m} \\sum_{i=1}^{m} (h_\\theta(x^{(i)}) - y^{(i)}) x_j^{(i)} + \\frac{\\lambda}{m}\\sum_{j=1}^n\\theta_j$ for $j\\geq1$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\lambda$ is the regularization paramater, a non negative term which applies a penalty on the overall cost. When the parameters grow in magnitude $\\lambda$ puts a constraint on them, shrinking $\\theta$ and consequently the global cost function. Let's explore this dataset more in detail and check the effects of various models on it." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Univariate Linear Regression - High Bias, Low Variance" ] }, { "cell_type": "code", "execution_count": 140, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import scipy.io\n", "import pandas as pd\n", "from scipy import optimize\n", "plt.style.use('ggplot')\n", "%matplotlib inline\n", "plt.rcParams['figure.figsize'] = (10, 6)" ] }, { "cell_type": "code", "execution_count": 141, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data = scipy.io.loadmat('C:\\\\Users\\\\pochetti\\Machine_Learning\\\\mlclass-ex5-005\\\\mlclass-ex5\\ex5data1.mat')\n", "\n", "X = data['X']\n", "y = data['y']\n", "Xval = data['Xval']\n", "yval = data['yval']\n", "Xtest = data['Xtest']\n", "ytest = data['ytest']\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(1, 1, 1)\n", "ax.plot(X, y, 'o', label='Raw Data')\n", "plt.ylabel('Water flowing out of the dam (y)')\n", "plt.xlabel('Change in water level (x)')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 142, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def computeCost(theta, X, y, lamb):\n", " residual = X.dot(theta) - y\n", " m = y.shape[0]\n", " \n", " cost = 1/(2*m) * (residual**2).sum() + lamb/(2*m) * (theta[1:,]**2).sum()\n", " return np.asscalar(cost.squeeze())\n", "\n", "def computeGradient(theta, X, y, lamb):\n", " theta = theta.reshape(-1, 1)\n", " residual = X.dot(theta) - y\n", " m = y.shape[0]\n", "\n", " gradient = 1/m * X.T.dot(residual)\n", " gradient[1:] += lamb/m * theta[1:,]\n", " return gradient.flatten()\n", "\n", "def gradientDescent(X, y, theta, alpha, num_iters, lamb):\n", " m = y.shape[0]\n", " J_history = np.zeros((num_iters, 1))\n", " for iter in range(num_iters):\n", " residual = X.dot(theta) - y\n", " gradient = alpha/m * X.T.dot(residual)\n", " gradient[1:] += lamb/m * theta[1:,]\n", " temp = theta - gradient\n", " theta = temp\n", " \n", " J_history[iter,0] = computeCost(theta, X, y, lamb)\n", " return theta, J_history\n", "\n", "def learningCurve(X, y, Xval, yval, lamb):\n", " m = y.shape[0]\n", " alpha = 0.001\n", " iterations = 3000\n", " train_error = np.zeros(m)\n", " validation_error = np.zeros(m)\n", "\n", " for i in range(1,m+1):\n", " theta_opt, J_history = gradientDescent(X[:i,:], y[:i,:], initial_theta, alpha, iterations, lamb)\n", " train_error[i-1] = computeCost(theta_opt, X[:i,:], y[:i,:], 0)\n", " validation_error[i-1] = computeCost(theta_opt, Xval, yval, 0) \n", " \n", " return train_error, validation_error\n", "\n", "def polyFeatures(X, p):\n", " X = np.c_[X, np.zeros((X.shape[0], p-1))]\n", " for i in range(2, p+1):\n", " X[:, i-1] = X[:,0]**i\n", " return X\n", "\n", "def featureNormalize(X):\n", " average = np.mean(X, axis=0)\n", " sigma = np.std(X, axis= 0)\n", " X = (X-average)/sigma\n", " return X, average, sigma\n", "\n", "def getExtendedX(min_x, max_x, average, sigma, p):\n", " X = np.arange(min_x-15, max_x+15, 0.05).reshape(-1,1)\n", " \n", " X_poly = polyFeatures(X, p)\n", " X_poly = (X_poly - average)/sigma\n", " X_poly = np.c_[np.ones(X_poly.shape[0]), X_poly]\n", " \n", " return X, X_poly\n", "\n", "def validationCurve(X, y, Xval, yval, lamb_vector):\n", " m = lamb_vector.shape[0]\n", " alpha = 0.001\n", " iterations = 10000\n", " train_error = np.zeros(m)\n", " validation_error = np.zeros(m)\n", "\n", " for i, lamb in enumerate(lamb_vector):\n", " theta_opt, J_history = gradientDescent(X, y, initial_theta, alpha, iterations, lamb)\n", " train_error[i] = computeCost(theta_opt, X, y, 0)\n", " validation_error[i] = computeCost(theta_opt, Xval, yval, 0) \n", " \n", " return train_error, validation_error" ] }, { "cell_type": "code", "execution_count": 143, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Cost @theta = [1,1]; @lambda = 1: 303.9931922202643\n", "Gradient of cost @theta = [1,1]; @lambda = 1: [ -15.30301567 598.25074417]\n" ] } ], "source": [ "data = scipy.io.loadmat('C:\\\\Users\\\\pochetti\\Machine_Learning\\\\mlclass-ex5-005\\\\mlclass-ex5\\ex5data1.mat')\n", "\n", "X = data['X']\n", "y = data['y']\n", "X = np.c_[np.ones(X.shape[0]), X]\n", "\n", "lamb = 1\n", "theta = np.ones((X.shape[1], 1))\n", "cost = computeCost(theta, X, y, lamb)\n", "grad = computeGradient(theta, X, y, lamb)\n", "\n", "print('Cost @theta = [1,1]; @lambda = 1:', cost)\n", "print('Gradient of cost @theta = [1,1]; @lambda = 1:', grad)" ] }, { "cell_type": "code", "execution_count": 144, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Theta found by gradient descent: intercept=12.429578749530522, slope=0.3638309780847176\n" ] } ], "source": [ "initial_theta = np.ones((X.shape[1], 1))\n", "lamb = 0\n", "alpha = 0.001\n", "iterations = 3000\n", "\n", "theta_opt, J_history = gradientDescent(X, y, initial_theta, alpha, iterations, lamb)\n", "print(\"Theta found by gradient descent: intercept={0}, slope={1}\".format(theta_opt[0][0],theta_opt[1][0]))" ] }, { "cell_type": "code", "execution_count": 145, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking minimization of the cost function...\n" ] }, { "data": { "image/png": "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\nvjHKAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print('Checking minimization of the cost function...')\n", "fig = plt.figure()\n", "ax = fig.add_subplot(1, 1, 1)\n", "ax.scatter(range(iterations), J_history)\n", "plt.ylabel('Cost Value')\n", "plt.xlabel('Iteration of Gradient Descent')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 146, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A straight line does not really do the job...\n" ] }, { "data": { "image/png": "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\nVhYtWrSgtLSU2267LeT92rZtS1HQB3lpaSlpaWm0atWKqqoq5syZQ2Fh4W5/H0QkPkT63N/GUBEn\nInXqkpfH2GkzmdWuD1PTWzOrXR/GTptJl7y8mL5H7UKrVatWFBQUcM899wBwyy23MGXKFHr37s20\nadM48cQTQ54/ZMgQtm3bVlPEDRo0iO3bt+/yUOrHH39Mfn4+vXv3pqCggG3btvHvf/+bXr16AVBQ\nUECnTp049NBDOeqooxgwYEDI608//XQKCwvp168fF1xwAT179uSiiy5i1KhRHHzwwRQWFjJw4MCw\nvw8iEp8ide7v7khL4l35vtWrV3udIeZycnLYsmWL1zFiTvOOj/cRqW379u28+OKLZGdnM3LkyN16\nj1T9/dS8E8OUi8Ywybfzeb5T01tz1T8eCvt9OnbsCFD/4YE6aE+ciIiIyG6K1Lm/u7XtqG9BRERE\nJElF49zfcDWJ+hZEREREklTNub8zplNVsp70dq0ZO3lCo8793V0q4kRERET2QJe8PK64466Yb1eH\nU0VEREQSkIo4ERERkQSkIk5EREQkAamIExEREUlAKuJEJCEtXLiQI444wusYSWHVqlXk5+erj6tI\nglERJyJxbciQIbzzzjs7jQ8aNIg333zTg0Q7mzp1Kt26dSM/P59+/fpx0kkn8dFHH3kdK2ydOnWi\nsLCwwV6yIhJ/VMSJiDRCZWVlneMnnngihYWFfPbZZwwdOpSLL744ptsXkdSjIk5EEtL7778f0nR+\nyJAhzJw5kxEjRtC3b18uvfRSduzYUfP4q6++yjHHHEPfvn056aST+PLLL2semzFjBsOGDSM/P5+j\njjqKl156qeYxM+Okk07ipptu4oADDmDq1KkN5kpPT+eUU05h7dq1bNiwIaztf/bZZ4wcOZLevXtz\n8cUXc8kllzBlypSQef7973+nf//+TJo0Kaz5HHrooeTn53PEEUfw7rvvArB48WKOP/54evfuTf/+\n/bn55psBWLlyJZ07d6aqqgqAtWvXMmbMGPr168dhhx3G448/XvPeU6dOZdy4cUycOJH8/Hx+/etf\n89lnn+3qxyUiUaAiTkQSVu3Dfy+88AJPPPEE77//PkuWLMHMAPj888+58sormTJlCl988QVnn302\nY8aMoby8HIBu3brx7LPPUlhYyOWXX85ll13GunXrat530aJFdOvWjU8//ZQJExpupbNjxw6eeuop\nWrZsSW5u7i63X15ezgUXXMDpp5/OF198wUknnRRSRAKsW7eOTZs2sXDhQu68884G32/ZsmU8/PDD\nvPTSSxQWFvL444/TpUsXAG644QYuuOACli5dynvvvceoUaPq/F5ecskldOrUicWLF/OPf/yD22+/\nnffee6/m8VdffZWTTz6ZpUuXMmLECK699tqwf2YiEjkq4kQkaVxwwQW0bduWFi1acPTRR/PFF18A\n8Nhjj3HOOedw0EEHkZaWxqmnnkpWVhYff/wxACeccAJt27YFYNSoUXTv3p1FixbVvG+HDh04//zz\nSU9Pp2nTpnVu+/nnn6dfv3706NGDJ554glmzZpGenr7L7X/88cdUVlYyZswYMjIyOO644zj44IND\n3jsjI4Mrr7ySzMxMmjZt2uD7ZWRkUF5eztKlS6moqKBTp07kBdr/ZGVlsXz5cjZs2EDz5s3p37//\nTvNYtWoVH330EX/+85/JzMykX79+nHHGGcydO7fmOYMGDWL48OE12w7eCyiSjFYUFXH31Vcy5aIx\n3H31lawoKvI6EqC2WyIShtGPLY3I+8w7q3dE3qc+bdq0qbndvHlz1q5dC/gPF86dO5eHHnoIAJ/P\nR3l5OWvWrAHgqaee4r777mPlypUAlJaWsnHjxpr36tix4y63PWrUKKZPn87GjRu58MIL+eSTTxgy\nZEhY2+/QoUPIe9XeXqtWrcjMzKy539D7DR48mMmTJzN16lS++uorhg8fzg033ED79u256667mDJl\nCkcccQRdu3blD3/4AyNGjAjZVnFxMbm5uTRv3rxmrHPnziGHTKsL3urvc1lZGVVVVTVFq0gyWVFU\nxIMTxzEpN43sJhmUFhczdeI4xk6bGZP+qA1RESciuxTt4ivaOnbsyIQJE7jssst2emzVqlVcffXV\nmFnNOXbHHHNMyHIbjblqs2XLltxxxx0cf/zxnHLKKbRt27bB7S9YsKCmmKu2evVqunXrVu/2G3o/\ngNGjRzN69Gi2bdvGH//4R2699VamTZtGt27dmDFjBgD//ve/ufjii/n8889DXtu+fXtKSkooLS0l\nOzsb8H+PaheaIqnCZkyvKeAAsptkMCm3klkzpnvSLzWY/mwSkbhXXl5OWVlZzVdjr9A866yzePTR\nR2sOkZaWlvLaa69RWlpKaWkpaWlptGrViqqqKubMmUNhYeEe5d1///0ZPnx4TcHU0PYPPfRQMjIy\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "optimal_theta = theta_opt\n", "print('A straight line does not really do the job...')\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(1, 1, 1)\n", "ax.plot(X[:,1], y, 'o', label='Raw Data')\n", "ax.plot(X[:,1], np.dot(X, optimal_theta), linestyle='-', label='Linear Regression')\n", "plt.ylabel('Water flowing out of the dam (y)')\n", "plt.xlabel('Change in water level (x)')\n", "legend = ax.legend(loc='upper center', shadow=True)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is evident that a straight line does not model the true relationship between X and y. The method is not flexible enough, resulting in high bias and low variance. The finding is proved by the below learning curve as well. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A learning curve shows the error on the Training Set v.s. Validation Set for an increasing number of data points ingested in the learning process. As you can see, as soon as the training set increases in size the train error grows while the validation error goes down. Despite that, the two quantities end up both pretty high, showing that the method doesn't fit well neither of the two data sets." ] }, { "cell_type": "code", "execution_count": 147, "metadata": { "collapsed": false }, "outputs": [], "source": [ "Xval = np.c_[np.ones(Xval.shape[0]), Xval]\n", "lamb = 0\n", "\n", "train_error, validation_error = learningCurve(X, y, Xval, yval, lamb)" ] }, { "cell_type": "code", "execution_count": 148, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure()\n", "ax = fig.add_subplot(1, 1, 1)\n", "ax.plot(np.arange(1, X.shape[0]+1) , train_error, '-', label='Train')\n", "ax.plot(np.arange(1, X.shape[0]+1) , validation_error, linestyle='-', label='Validation')\n", "plt.ylabel('Error')\n", "plt.xlabel('Training Samples')\n", "legend = ax.legend(loc='upper center', shadow=True)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multivariate Polynomial Regression - Low Bias, High Variance " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we saw above, a straight line is too simplistic to model our data. Something more flexible is needed. We'll get just that with the expansion of the feature space adding up to the 11-th power polynomial of X. This is actually way too flexible! It won't get unnoticed that the curve fits almost perfectly all the data points resulting in unnatural and non sensical trends outside of the boundaries of the X space. Regularization comes to the rescue here, shrinking back all our parameters and re-establishing a balance in the bias-variance trade-off. " ] }, { "cell_type": "code", "execution_count": 149, "metadata": { "collapsed": false }, "outputs": [], "source": [ "data = scipy.io.loadmat('C:\\\\Users\\\\pochetti\\Machine_Learning\\\\mlclass-ex5-005\\\\mlclass-ex5\\ex5data1.mat')\n", "\n", "X = data['X']\n", "y = data['y']\n", "Xval = data['Xval']\n", "yval = data['yval']\n", "Xtest = data['Xtest']\n", "ytest = data['ytest']\n", "p = 11\n", "\n", "# it is important to normalize and scale our dataset before applying any ML on it\n", "X_poly = polyFeatures(X, p)\n", "X_poly, average, sigma = featureNormalize(X_poly)\n", "X_poly = np.c_[np.ones(X_poly.shape[0]), X_poly]\n", "\n", "X_poly_val = polyFeatures(Xval, p)\n", "X_poly_val = (X_poly_val - average)/sigma\n", "X_poly_val = np.c_[np.ones(X_poly_val.shape[0]), X_poly_val]\n", "\n", "X_poly_test = polyFeatures(Xtest, p)\n", "X_poly_test = (X_poly_test - average)/sigma\n", "X_poly_test = np.c_[np.ones(X_poly_test.shape[0]), X_poly_test]" ] }, { "cell_type": "code", "execution_count": 150, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "An 11th degree polynomial is way too wiggly!\n" ] }, { "data": { "image/png": "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\naWlpPP3000yaNInjjjuuyft98MEHnHDCCQwZMoRRo0bx+OOPA5CXl8fFF1/MUUcdRUZGBr/+9a+r\nPzNu3Dg++eQTAMrKyrjjjjsYOXIkI0eO5M4776S8vBzwtDpW3fPoo49m5MiRLFu2rEV5EgmWfcUV\nfJtTHOowfNbqRZy19hMgv9ax9621Lu/bVUCa9/V04HlrbYW1dhueAm9Ma8UqIsGxa9cuVqxYwc9/\n/nMAfve739GnTx/WrVvH448/zr333stnn31W53MzZszgxRdfrH7//fffk5OTw7Rp06qPffDBB7zz\nzjssX76c119/nY8++giAZcuW8eKLL/LSSy/x+eefU1RUdFiRB7Bu3To+/fRTHn30Ue666y7++te/\nYq3lgw8+4PXXX2f16tXV19bsIj322GN5//33Wb9+PWeddRZXXnklZWVlzcqJ2+1m+fLl5Ofn079/\nfwBKSko4//zz+dWvfsV3333H3/72N2699VY2b94MwK233kpCQgLffPMNDz30EC+88EKdrtvly5fz\n5ptv8uGHHzZ5vxtvvJH777+fzMxMVqxYwcSJEwF4/PHHSU1N5bvvvuM///kPN998c73fw8KFC1m3\nbh3vvfce7733HuvWrWPhwoXV5/fu3UtRURFff/01DzzwALfddhsHDhxoVp5EgmlgcifOHNYt1GH4\nrC1ObJgFvOV93QfYUePcLu8xEQlDl156aXVLzoQJE7jmmmvIzs7mq6++4rbbbiM6OpqMjAzOP//8\nw4q1KieddBJbt25l27ZtALz88stMnz79sG7Ca665hoSEBPr06cOECRP4/vvvAc9khCuuuIK0tDTi\n4uK4+eabee2113C5PL8/OhwO5s6dS0xMDJMnTyYuLo4zzzyTbt260atXL8aMGcN3331X7/d19tln\n07VrVyIiIrjiiisoKytjy5YtPuVk9+7dZGRkcOSRR3L55Zdz5513kpGRAcB7771Heno6M2bMwOFw\nkJGRwWmnncbrr7+Oy+Xi7bff5ve//z2xsbEMGjSIGTNm1Ln/tddeS9euXYmNjW30fgDR0dFs2rSJ\ngwcP0qVLF372s59VH9+zZw9ZWVlERkYyevToer+XV155hXnz5tGtWze6devGvHnzeOmll6rPR0dH\nc/311xMZGcnUqVPp3Lmzz3kSkbra1MQGY8xtQLm19p+hjkWkPfrnf/by/Le5dY6f9/Nkzh/ew6fr\nG7rWF0uWLKlu3amSk5NDYmLiYRMc0tLS+Pbbb+t8PjY2lunTp/Pyyy8zd+5cXnnlFf7+978fdk2P\nHv+NLS4ujqKiournpKWlVZ9LS0ujoqKCvXv3Vh/r3r179etOnToddq9OnTpV36u2xx57jOeff549\ne/YAcPDgQfLy8hpORA1VY+LKy8uZP38+n376KZdeeingabH8+uuvq4s6t9tNZWUl55xzDrm5uVRU\nVNC7d+/qe6Wmpta5f83zjd0P4O9//zsPP/ww8+fPZ9iwYdxyyy2MHDmSq666ir/85S9ccMEFOBwO\nLrjgAq6++uo6z9q9ezd9+vz39+w+ffqQk5NT/T4pKYmIiP+2HdT88xGR5mszRZwx5hLgNGBqjcO7\ngL413qd5j9X3+SnAlKr31lqcTmegw+wwYmJilD8/hCJ/vgxaP394j2YVYM29vilVY+JqSklJoaCg\ngOLiYuLj4wFPsdGrV69673HOOecwZ84cRo0aRXx8PCNGjPDp2SkpKezcubP6/c6dO4mOjqZHjx5k\nZ2e34LvxWL16NY8++igvvPACgwcPBiAjI6Pe77Ux0dHR3HrrrUyePJnly5dz0kknkZqayvjx4+sd\nI+hyuYiOjuann35iwIABAPV+HzW7Vxu7H8Dw4cNZsmQJlZWVLFmyhNmzZ/PFF18QHx/PHXfcwR13\n3MGmTZuYMWMGxxxzTJ2CvFevXuzcuZNBgwYBnj/HlJSUZuWhSkREBLGxscTGxrbq3yX929dyyp3/\njDF31Xi70lq7srHrQ1XEObxfABhjTgFuBCZba0trXPca8A9jzEN4ulEHAvWOGPZ+oytrHLqzatCy\nNJ/T6UT5a7lQ5C9c//FMTU1l1KhR/PnPf+b2229ny5YtPP/88yxevLje60eOHElERAT33HPPYQPs\nm3LWWWfxt7/9jRNOOIFu3bpx3333MX369OqWoeYWXVWKioqIiooiKSmJsrIyFi9ezMGDB1t0r+jo\naK688koWLFjASSedxLRp0/jzn//MSy+9xJlnnonb7Wb9+vV07tyZgQMHcuqpp7JgwQLuv/9+du3a\nxYsvvnhYa2Ntjd2vX79+vPHGG0ybNg2n00lCQkL1Lwbvv/8+AwcOpH///nTu3JmoqKh6f2k488wz\nWbhwIUcffTQADz/8cLP+jGpyuVyUlpYSGRnZqn+X9G9fyyl3/nE6nVhr72rOZ1p9TJwx5jngM2Cw\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "initial_theta = np.ones((X_poly.shape[1], 1))\n", "lamb = 0\n", "alpha = 0.001\n", "iterations = 10000\n", "\n", "theta_opt_poly, J_history_poly = gradientDescent(X_poly, y, initial_theta, alpha, iterations, lamb)\n", "\n", "X_ext, X_ext_poly = getExtendedX(min(X), max(X), average, sigma, p)\n", "\n", "print('An 11th degree polynomial is way too wiggly!')\n", "fig = plt.figure()\n", "ax = fig.add_subplot(1, 1, 1)\n", "ax.plot(X, y, 'o', label='Raw Data')\n", "ax.plot(X_ext[:,0], np.dot(X_ext_poly, theta_opt_poly), '--', label='Polynomial Regression')\n", "plt.ylabel('Water flowing out of the dam (y)')\n", "plt.xlabel('Change in water level (x)')\n", "legend = ax.legend(loc='upper center', shadow=True)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The problem with our linear model was that it was too simple for the data and resulted in underfitting (high bias). \n", "\n", "The polynomial fit, on the contrary, is able to follow the datapoints very well - thus, obtaining a low training error. However, the polynomial method is very complex and even drops off at the extremes. This is an indicator that the polynomial regression model is overfitting the training data and will not generalize well.\n", "\n", "To better understand the problems with the unregularized ($\\lambda = 0$) model, you can see that the learning curve (two plots below) shows the same effect where the training error is low, but the validation error is high. There is a gap between the training and cross validation errors, indicating a high variance problem.\n", "\n", "The above curve does not do a good job as a predictive model. To remedy the situation we have to reduce the variance. Regularization come to the rescue; specifically we apply below the \"validation set approach\" to select the \"best\" value of lambda, minimizing the validation set error." ] }, { "cell_type": "code", "execution_count": 151, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking minimization of the cost function...\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnsAAAGGCAYAAAAD0EfNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt43Gd95/33jEayQ6KcQxLnYNkEAkkL2dik6dL2MVAo\nsCW03fpb6JYQwvZpr9I2hba7JGmbsG23DS3lUGC7CyEEthC+QGngWZYGNphu99nQcuq2ECAn2Ymd\nmDiJHVl2HEua/eP3UzySJWus0WgOer+uy5c192hm7rn9G+uj+1ip1+tIkiSpP1U7XQFJkiS1j2FP\nkiSpjxn2JEmS+phhT5IkqY8Z9iRJkvqYYU+SJKmP1Zb7BSPiRuAngZ2Z+dyy7G3AK4EDwD3A6zPz\n8fK+q4ErgQngqsy8bbnrLEmS1Ks60bN3E/ATs8puAy7MzIuAu4CrASLiAiCA5wAvB94XEZVmXiQi\nNi1VhVci2681tt/i2Xatsf1aY/stnm3Xmna237KHvcz8O+CxWWVfzMyp8uYdwNnl15cBt2TmRGaO\nUgTBS5p8qU2t13ZF29TpCvS4TZ2uQA/b1OkK9LhNna5Aj9vU6Qr0sE2drkCP29SuJ+7GOXtXAp8r\nvz4LuL/hvu1lmSRJkprQVWEvIq4FDmbmxzpdF0mSpH5Q6cTZuBGxFvjs9AKNsuwK4BeBF2XmgbLs\nLUA9M28ob38euC4zvzLHc26ioQs0M69r41uQJElaUhHx1oabWzJzy1I8b6fC3ghF2PvB8vbLgLcD\nP5aZjzR83wXAXwI/RDF8+wXgmZnZTKXrO3bsWOqqrxjDw8OMjY11uho9y/ZbPNuuNbZfa2y/xbPt\nWrNmzRqAphahHq1lD3sR8VGKHrhTgJ3AdcA1wBAwHfTuyMxfKb//auANwEGObusVw14L/NC2xvZb\nPNuuNbZfa2y/xbPtWtNXYW8ZGfZa4Ie2Nbbf4tl2rbH9WmP7LZ5t15p2hr2uWqAhSZKkpWXYkyRJ\n6mOGPUmSpD5m2JMkSepjhj1JkqQ+ZtiTJEnqY4Y9SZKkPmbYkyRJ6mOGPUmSpD5m2JMkSepjhj1J\nkqQ+ZtiTJEnqY4Y9SZKkPmbYkyRJ6mOGPUmSpD5m2JMkSepjhj1JkqQ+ZtiTJEnqY4Y9SZKkPmbY\nkyRJ6mOGPUmSpD5m2JMkSepjhj1JkqQ+ZtiTJEnqY4Y9SZKkPmbYkyRJ6mOGPUmSpD5m2JMkSepj\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print('Checking minimization of the cost function...')\n", "fig = plt.figure()\n", "ax = fig.add_subplot(1, 1, 1)\n", "ax.scatter(range(iterations), J_history_poly)\n", "plt.ylabel('Cost Value')\n", "plt.xlabel('Iteration of Gradient Descent')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 152, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nNddddx3PP/883/nOd7j11lu5//77j3vc2267jYceeohf/vKX3Hffffz0pz896vkFCxZw66238sIL\nL/CVr3yFzZs38+yzz1JVVcVtt93GwoULefHFF3nhhRdoaGgAjgy7vvLKK3zkIx/hmmuu4emnn+bi\niy/mPe95D4nEkdvE3HvvvXzve99j27ZtbN++HWttNppLRAqMwpuUlETK5Te7y+MWIZla6nW7kJna\nuHEj995771jv1F133cXGjRsBOP/881m9ejUAa9as4YorrmDbtm3HPea9997LBz/4QRYtWkRdXd1R\nvWYAF198MUuXLgXg3HPP5aKLLjqq928qP/nJT7jkkkt4/etfTzAY5MMf/jBDQ0M8/vjjY9t88IMf\nZMGCBdTV1fGmN72J5557blrHFpHiUh7jSlI2nm0fYFG0kgU1FX6XklfNsTD3vdjpdxkzduV3nz/h\nY9z9zjWz2u/ss8+mvr6en//855x22mk89dRT3HTTTQA88cQTfOELX+CFF15gZGSE4eFhLr/88uMe\ns729ncbGxrHlJUuWHPX8Qw89xFe/+lVaW1txXZehoSFOPvnkadXb3t5OU1PT2LLjODQ2NrJ///6x\ndfPnzx97XFVVRXt7+7SOLSLFJW/hzRhzE3A50G6tXTfuuU8A/wrMt9Z2eOuuA94M9APvtdb+Ll+1\nSvEqp6tMMy2rC7OnZ5iRpEtFsHhOep9t8MqWt73tbXz/+9/nlVde4aKLLmLevHlA+irP97///dx+\n++1UVFSwadMmOjuPH44bGhrYu3fv2PKePXvGHg8PD/PXf/3XXH/99WzYsIFAIMAHPvCBsanNjnex\nwsKFC3nhhReOWrd3714WL1487d9XREpDPodNbwY2jF9pjGkC3gTszFj3ZuAka+1rgA8BN+arSCle\nyZTLI7vL73w3gHAowKLaCtq6ddHCTGzcuJFf/epX3H777WNDpgD9/f3U1dVRUVHBk08+yY9//OOj\n9ptsLtm3vOUtfPvb32bfvn10dXVxww03jD03MjLCyMgI9fX1BAIBHnroIR5++OGx5+fPn09nZye9\nvb2THvvBBx/k17/+NYlEghtvvJFIJMKZZ555Ik0gIkUob+HNWvsrYKKPrl8FPjlu3ZXAd7z9HgXq\njDELc1uhFLvfHxykvirE4mil36X4QtNkzVxTUxNnnnkmg4OD/NEf/dHY+s9//vP867/+K2vWrOFr\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lamb = 0\n", "train_error_poly, validation_error_poly = learningCurve(X_poly, y, X_poly_val, yval, lamb)\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(1, 1, 1)\n", "ax.plot(np.arange(1, X.shape[0]+1) , train_error_poly, '-', label='Train')\n", "ax.plot(np.arange(1, X.shape[0]+1) , validation_error_poly, linestyle='-', label='Validation')\n", "plt.ylabel('Error')\n", "plt.xlabel('Training Samples')\n", "legend = ax.legend(loc='upper center', shadow=True)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Selecting the optimal lambda with CV " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The below chart shows the relation between the Train and Validation Set.\n", "\n", "As expected, the former steadily increase with $\\lambda$, whereas the latter takes a dip before growing again. The value of $\\lambda$ (0.004) minimizing the validation error is the one we want to use for our final model. " ] }, { "cell_type": "code", "execution_count": 153, "metadata": { "collapsed": false }, "outputs": [], "source": [ "lamb_vector = np.arange(0, 0.1, 0.001)\n", "\n", "train_error_lamb, validation_error_lamb = validationCurve(X_poly, y, X_poly_val, yval, lamb_vector)" ] }, { "cell_type": "code", "execution_count": 154, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lambdas = lamb_vector\n", "train = train_error_lamb\n", "valid = validation_error_lamb\n", "\n", "best_lambda = pd.DataFrame(\n", " {'lambdas': lambdas,\n", " 'train_cost': train,\n", " 'validation_cost': valid\n", " })\n", "\n", "l = best_lambda.lambdas[best_lambda.validation_cost.argmin()]\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(1, 1, 1)\n", "ax.plot(lamb_vector , train_error_lamb, '-', label='Train')\n", "ax.plot(lamb_vector , validation_error_lamb, linestyle='-', label='Validation')\n", "ax.annotate(\"Best Lambda: %.3f\" % l, xy=(0.006, 4), xytext=(0.018, 6),\n", " arrowprops=dict(facecolor='black', shrink=0.005))\n", "plt.ylabel('Error')\n", "plt.xlabel('Lambda')\n", "legend = ax.legend(loc='upper center', shadow=True)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### How does our model perform on unseen data?" ] }, { "cell_type": "code", "execution_count": 155, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The test error at the optimal @lambda = 0.04 is equal to 4.71\n" ] } ], "source": [ "initial_theta = np.ones((X_poly.shape[1], 1))\n", "lamb = 0.004\n", "alpha = 0.001\n", "iterations = 10000\n", "\n", "theta_optimal, J_history_poly = gradientDescent(X_poly, y, initial_theta, alpha, iterations, lamb)\n", "\n", "test_error = computeCost(theta_optimal, X_poly_test, ytest, 0.004)\n", "print(\"The test error at the optimal @lambda = 0.04 is equal to %.2f\" % test_error)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Appendix: how do we estimate the error of our model? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The error for a dataset is defined as " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$J(\\theta) = \\frac{1}{2m} \\sum_{i=1}^{m} (h_\\theta(x^{(i)}) - y^{(i)})^2$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is nothing more than the cost function when we set $\\lambda$ to zero. Therefore we don't need an additional logic to calculate the error. We just call the *computeCost* function with $\\lambda = 0$ and we'll get the wished result" ] } ], "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.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }