Files
FYS-STK4155/doc/LectureNotes/_build/jupyter_execute/week37.ipynb
T
Morten Hjorth-Jensen 3b762e5606 updated book
2024-09-11 05:36:59 +02:00

3333 lines
415 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"id": "7ce0c2c8",
"metadata": {
"editable": true
},
"source": [
"<!-- HTML file automatically generated from DocOnce source (https://github.com/doconce/doconce/)\n",
"doconce format html week37.do.txt --no_mako -->\n",
"<!-- dom:TITLE: Week 37: Statistical interpretations and Resampling Methods -->"
]
},
{
"cell_type": "markdown",
"id": "3bd9c0ba",
"metadata": {
"editable": true
},
"source": [
"# Week 37: Statistical interpretations and Resampling Methods\n",
"**Morten Hjorth-Jensen**, Department of Physics, University of Oslo, Norway\n",
"\n",
"Date: **September 9, 2024**\n",
"\n",
"<!-- todo add link to videos and add link to Van Wieringens notes -->"
]
},
{
"cell_type": "markdown",
"id": "be6135df",
"metadata": {
"editable": true
},
"source": [
"## Plans for week 37, lecture Monday\n",
"\n",
"**Material for the lecture on Monday September 9.**\n",
"\n",
" * [Video of Lecture](https://youtu.be/omLmp_kkie0)\n",
"\n",
" * [Whiteboard notes](https://github.com/CompPhysics/MachineLearning/blob/master/doc/HandWrittenNotes/2024/NotesSeptember9.pdf)\n",
"\n",
" * Statistical interpretation of Ridge and Lasso regression, see also slides from last week\n",
"\n",
" * Resampling techniques, Bootstrap and cross validation and bias-variance tradeoff (this may partly be discussed during the exercise sessions as well.\n",
"\n",
" * Readings and Videos:\n",
" * Raschka et al, pages 175-192\n",
"\n",
" * Hastie et al Chapter 7, here we recommend 7.1-7.5 and 7.10 (cross-validation) and 7.11 (bootstrap). See <https://link.springer.com/book/10.1007/978-0-387-84858-7>.\n",
"\n",
" * [Video on cross validation](https://www.youtube.com/watch?v=fSytzGwwBVw)\n",
"\n",
" * [Video on Bootstrapping](https://www.youtube.com/watch?v=Xz0x-8-cgaQ)\n",
"\n",
" * [Video on bias-variance tradeoff](https://www.youtube.com/watch?v=EuBBz3bI-aA)"
]
},
{
"cell_type": "markdown",
"id": "3ac97fd3",
"metadata": {
"editable": true
},
"source": [
"## Plans for week 37, lab sessions\n",
"\n",
"**Material for the lab sessions on Tuesday and Wednesday.**\n",
"\n",
" * Calculations of expectation values\n",
"\n",
" * Discussion of resampling techniques\n",
"\n",
" * Exercise set for week 37\n",
"\n",
" * Work on project 1\n",
"\n",
" * [Video of exercise sessions week 37](https://youtu.be/bK4AEcTu-oM)\n",
"\n",
" * For more discussions of Ridge regression and calculation of averages, [Wessel van Wieringen's](https://arxiv.org/abs/1509.09169) article is highly recommended."
]
},
{
"cell_type": "markdown",
"id": "7010206d",
"metadata": {
"editable": true
},
"source": [
"## Material for lecture Monday September 9"
]
},
{
"cell_type": "markdown",
"id": "2467ccb1",
"metadata": {
"editable": true
},
"source": [
"## Deriving OLS from a probability distribution\n",
"\n",
"Our basic assumption when we derived the OLS equations was to assume\n",
"that our output is determined by a given continuous function\n",
"$f(\\boldsymbol{x})$ and a random noise $\\boldsymbol{\\epsilon}$ given by the normal\n",
"distribution with zero mean value and an undetermined variance\n",
"$\\sigma^2$.\n",
"\n",
"We found above that the outputs $\\boldsymbol{y}$ have a mean value given by\n",
"$\\boldsymbol{X}\\hat{\\boldsymbol{\\beta}}$ and variance $\\sigma^2$. Since the entries to\n",
"the design matrix are not stochastic variables, we can assume that the\n",
"probability distribution of our targets is also a normal distribution\n",
"but now with mean value $\\boldsymbol{X}\\hat{\\boldsymbol{\\beta}}$. This means that a\n",
"single output $y_i$ is given by the Gaussian distribution"
]
},
{
"cell_type": "markdown",
"id": "4e2b9f77",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"y_i\\sim \\mathcal{N}(\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta}, \\sigma^2)=\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "aa3e18f2",
"metadata": {
"editable": true
},
"source": [
"## Independent and Identically Distrubuted (iid)\n",
"\n",
"We assume now that the various $y_i$ values are stochastically distributed according to the above Gaussian distribution. \n",
"We define this distribution as"
]
},
{
"cell_type": "markdown",
"id": "a9836e09",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(y_i, \\boldsymbol{X}\\vert\\boldsymbol{\\beta})=\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]},\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "81c40e6c",
"metadata": {
"editable": true
},
"source": [
"which reads as finding the likelihood of an event $y_i$ with the input variables $\\boldsymbol{X}$ given the parameters (to be determined) $\\boldsymbol{\\beta}$.\n",
"\n",
"Since these events are assumed to be independent and identicall distributed we can build the probability distribution function (PDF) for all possible event $\\boldsymbol{y}$ as the product of the single events, that is we have"
]
},
{
"cell_type": "markdown",
"id": "fd6babf0",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(\\boldsymbol{y},\\boldsymbol{X}\\vert\\boldsymbol{\\beta})=\\prod_{i=0}^{n-1}\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]}=\\prod_{i=0}^{n-1}p(y_i,\\boldsymbol{X}\\vert\\boldsymbol{\\beta}).\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "71dfe09f",
"metadata": {
"editable": true
},
"source": [
"We will write this in a more compact form reserving $\\boldsymbol{D}$ for the domain of events, including the ouputs (targets) and the inputs. That is\n",
"in case we have a simple one-dimensional input and output case"
]
},
{
"cell_type": "markdown",
"id": "90f49395",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\boldsymbol{D}=[(x_0,y_0), (x_1,y_1),\\dots, (x_{n-1},y_{n-1})].\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "eb1d8923",
"metadata": {
"editable": true
},
"source": [
"In the more general case the various inputs should be replaced by the possible features represented by the input data set $\\boldsymbol{X}$. \n",
"We can now rewrite the above probability as"
]
},
{
"cell_type": "markdown",
"id": "a3b37065",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(\\boldsymbol{D}\\vert\\boldsymbol{\\beta})=\\prod_{i=0}^{n-1}\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "092a8fe2",
"metadata": {
"editable": true
},
"source": [
"It is a conditional probability (see below) and reads as the likelihood of a domain of events $\\boldsymbol{D}$ given a set of parameters $\\boldsymbol{\\beta}$."
]
},
{
"cell_type": "markdown",
"id": "f15ab83a",
"metadata": {
"editable": true
},
"source": [
"## Maximum Likelihood Estimation (MLE)\n",
"\n",
"In statistics, maximum likelihood estimation (MLE) is a method of\n",
"estimating the parameters of an assumed probability distribution,\n",
"given some observed data. This is achieved by maximizing a likelihood\n",
"function so that, under the assumed statistical model, the observed\n",
"data is the most probable. \n",
"\n",
"We will assume here that our events are given by the above Gaussian\n",
"distribution and we will determine the optimal parameters $\\beta$ by\n",
"maximizing the above PDF. However, computing the derivatives of a\n",
"product function is cumbersome and can easily lead to overflow and/or\n",
"underflowproblems, with potentials for loss of numerical precision.\n",
"\n",
"In practice, it is more convenient to maximize the logarithm of the\n",
"PDF because it is a monotonically increasing function of the argument.\n",
"Alternatively, and this will be our option, we will minimize the\n",
"negative of the logarithm since this is a monotonically decreasing\n",
"function.\n",
"\n",
"Note also that maximization/minimization of the logarithm of the PDF\n",
"is equivalent to the maximization/minimization of the function itself."
]
},
{
"cell_type": "markdown",
"id": "5ed97aa3",
"metadata": {
"editable": true
},
"source": [
"## A new Cost Function\n",
"\n",
"We could now define a new cost function to minimize, namely the negative logarithm of the above PDF"
]
},
{
"cell_type": "markdown",
"id": "7b570c43",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"C(\\boldsymbol{\\beta}=-\\log{\\prod_{i=0}^{n-1}p(y_i,\\boldsymbol{X}\\vert\\boldsymbol{\\beta})}=-\\sum_{i=0}^{n-1}\\log{p(y_i,\\boldsymbol{X}\\vert\\boldsymbol{\\beta})},\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "8a82d943",
"metadata": {
"editable": true
},
"source": [
"which becomes"
]
},
{
"cell_type": "markdown",
"id": "a9fe176c",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"C(\\boldsymbol{\\beta}=\\frac{n}{2}\\log{2\\pi\\sigma^2}+\\frac{\\vert\\vert (\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\vert\\vert_2^2}{2\\sigma^2}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "720c650c",
"metadata": {
"editable": true
},
"source": [
"Taking the derivative of the *new* cost function with respect to the parameters $\\beta$ we recognize our familiar OLS equation, namely"
]
},
{
"cell_type": "markdown",
"id": "4c13afe3",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\boldsymbol{X}^T\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right) =0,\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "f23aa0de",
"metadata": {
"editable": true
},
"source": [
"which leads to the well-known OLS equation for the optimal paramters $\\beta$"
]
},
{
"cell_type": "markdown",
"id": "cc0ec7c0",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\hat{\\boldsymbol{\\beta}}^{\\mathrm{OLS}}=\\left(\\boldsymbol{X}^T\\boldsymbol{X}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y}!\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "71275e73",
"metadata": {
"editable": true
},
"source": [
"Before we make a similar analysis for Ridge and Lasso regression, we need a short reminder on statistics."
]
},
{
"cell_type": "markdown",
"id": "4c41ecf0",
"metadata": {
"editable": true
},
"source": [
"## More basic Statistics and Bayes' theorem\n",
"\n",
"A central theorem in statistics is Bayes' theorem. This theorem plays a similar role as the good old Pythagoras' theorem in geometry.\n",
"Bayes' theorem is extremely simple to derive. But to do so we need some basic axioms from statistics.\n",
"\n",
"Assume we have two domains of events $X=[x_0,x_1,\\dots,x_{n-1}]$ and $Y=[y_0,y_1,\\dots,y_{n-1}]$.\n",
"\n",
"We define also the likelihood for $X$ and $Y$ as $p(X)$ and $p(Y)$ respectively.\n",
"The likelihood of a specific event $x_i$ (or $y_i$) is then written as $p(X=x_i)$ or just $p(x_i)=p_i$. \n",
"\n",
"**Union of events is given by.**"
]
},
{
"cell_type": "markdown",
"id": "890ba6f9",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(X \\cup Y)= p(X)+p(Y)-p(X \\cap Y).\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "dfcd3bf6",
"metadata": {
"editable": true
},
"source": [
"**The product rule (aka joint probability) is given by.**"
]
},
{
"cell_type": "markdown",
"id": "956837e7",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(X \\cup Y)= p(X,Y)= p(X\\vert Y)p(Y)=p(Y\\vert X)p(X),\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "d3802c8c",
"metadata": {
"editable": true
},
"source": [
"where we read $p(X\\vert Y)$ as the likelihood of obtaining $X$ given $Y$.\n",
"\n",
"If we have independent events then $p(X,Y)=p(X)p(Y)$."
]
},
{
"cell_type": "markdown",
"id": "95db199e",
"metadata": {
"editable": true
},
"source": [
"## Marginal Probability\n",
"\n",
"The marginal probability is defined in terms of only one of the set of variables $X,Y$. For a discrete probability we have"
]
},
{
"cell_type": "markdown",
"id": "57fb6f6a",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(X)=\\sum_{i=0}^{n-1}p(X,Y=y_i)=\\sum_{i=0}^{n-1}p(X\\vert Y=y_i)p(Y=y_i)=\\sum_{i=0}^{n-1}p(X\\vert y_i)p(y_i).\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "ea33fe6b",
"metadata": {
"editable": true
},
"source": [
"## Conditional Probability\n",
"\n",
"The conditional probability, if $p(Y) > 0$, is"
]
},
{
"cell_type": "markdown",
"id": "5705568f",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(X\\vert Y)= \\frac{p(X,Y)}{p(Y)}=\\frac{p(X,Y)}{\\sum_{i=0}^{n-1}p(Y\\vert X=x_i)p(x_i)}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "ef0bee11",
"metadata": {
"editable": true
},
"source": [
"## Bayes' Theorem\n",
"\n",
"If we combine the conditional probability with the marginal probability and the standard product rule, we have"
]
},
{
"cell_type": "markdown",
"id": "7569074e",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(X\\vert Y)= \\frac{p(X,Y)}{p(Y)},\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "3cecb6a2",
"metadata": {
"editable": true
},
"source": [
"which we can rewrite as"
]
},
{
"cell_type": "markdown",
"id": "c76a1bc7",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(X\\vert Y)= \\frac{p(X,Y)}{\\sum_{i=0}^{n-1}p(Y\\vert X=x_i)p(x_i)}=\\frac{p(Y\\vert X)p(X)}{\\sum_{i=0}^{n-1}p(Y\\vert X=x_i)p(x_i)},\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "d97f5c86",
"metadata": {
"editable": true
},
"source": [
"which is Bayes' theorem. It allows us to evaluate the uncertainty in in $X$ after we have observed $Y$. We can easily interchange $X$ with $Y$."
]
},
{
"cell_type": "markdown",
"id": "6e5646ae",
"metadata": {
"editable": true
},
"source": [
"## Interpretations of Bayes' Theorem\n",
"\n",
"The quantity $p(Y\\vert X)$ on the right-hand side of the theorem is\n",
"evaluated for the observed data $Y$ and can be viewed as a function of\n",
"the parameter space represented by $X$. This function is not\n",
"necesseraly normalized and is normally called the likelihood function.\n",
"\n",
"The function $p(X)$ on the right hand side is called the prior while the function on the left hand side is the called the posterior probability. The denominator on the right hand side serves as a normalization factor for the posterior distribution.\n",
"\n",
"Let us try to illustrate Bayes' theorem through an example."
]
},
{
"cell_type": "markdown",
"id": "3a23e77a",
"metadata": {
"editable": true
},
"source": [
"## Example of Usage of Bayes' theorem\n",
"\n",
"Let us suppose that you are undergoing a series of mammography scans in\n",
"order to rule out possible breast cancer cases. We define the\n",
"sensitivity for a positive event by the variable $X$. It takes binary\n",
"values with $X=1$ representing a positive event and $X=0$ being a\n",
"negative event. We reserve $Y$ as a classification parameter for\n",
"either a negative or a positive breast cancer confirmation. (Short note on wordings: positive here means having breast cancer, although none of us would consider this being a positive thing).\n",
"\n",
"We let $Y=1$ represent the the case of having breast cancer and $Y=0$ as not.\n",
"\n",
"Let us assume that if you have breast cancer, the test will be positive with a probability of $0.8$, that is we have"
]
},
{
"cell_type": "markdown",
"id": "7432af91",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(X=1\\vert Y=1) =0.8.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "ea23569c",
"metadata": {
"editable": true
},
"source": [
"This obviously sounds scary since many would conclude that if the test is positive, there is a likelihood of $80\\%$ for having cancer.\n",
"It is however not correct, as the following Bayesian analysis shows."
]
},
{
"cell_type": "markdown",
"id": "18e40c37",
"metadata": {
"editable": true
},
"source": [
"## Doing it correctly\n",
"\n",
"If we look at various national surveys on breast cancer, the general likelihood of developing breast cancer is a very small number.\n",
"Let us assume that the prior probability in the population as a whole is"
]
},
{
"cell_type": "markdown",
"id": "5c32a5c2",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(Y=1) =0.004.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "b84fb7fb",
"metadata": {
"editable": true
},
"source": [
"We need also to account for the fact that the test may produce a false positive result (false alarm). Let us here assume that we have"
]
},
{
"cell_type": "markdown",
"id": "2c3b605b",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(X=1\\vert Y=0) =0.1.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "d05ca03a",
"metadata": {
"editable": true
},
"source": [
"Using Bayes' theorem we can then find the posterior probability that the person has breast cancer in case of a positive test, that is we can compute"
]
},
{
"cell_type": "markdown",
"id": "4f4cee49",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(Y=1\\vert X=1)=\\frac{p(X=1\\vert Y=1)p(Y=1)}{p(X=1\\vert Y=1)p(Y=1)+p(X=1\\vert Y=0)p(Y=0)}=\\frac{0.8\\times 0.004}{0.8\\times 0.004+0.1\\times 0.996}=0.031.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "4176d701",
"metadata": {
"editable": true
},
"source": [
"That is, in case of a positive test, there is only a $3\\%$ chance of having breast cancer!"
]
},
{
"cell_type": "markdown",
"id": "5ad8813c",
"metadata": {
"editable": true
},
"source": [
"## Bayes' Theorem and Ridge and Lasso Regression\n",
"\n",
"Using Bayes' theorem we can gain a better intuition about Ridge and Lasso regression. \n",
"\n",
"For ordinary least squares we postulated that the maximum likelihood for the doamin of events $\\boldsymbol{D}$ (one-dimensional case)"
]
},
{
"cell_type": "markdown",
"id": "450006d9",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\boldsymbol{D}=[(x_0,y_0), (x_1,y_1),\\dots, (x_{n-1},y_{n-1})],\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "1b2173c5",
"metadata": {
"editable": true
},
"source": [
"is given by"
]
},
{
"cell_type": "markdown",
"id": "10b2d8ce",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(\\boldsymbol{D}\\vert\\boldsymbol{\\beta})=\\prod_{i=0}^{n-1}\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "a18147f9",
"metadata": {
"editable": true
},
"source": [
"In Bayes' theorem this function plays the role of the so-called likelihood. We could now ask the question what is the posterior probability of a parameter set $\\boldsymbol{\\beta}$ given a domain of events $\\boldsymbol{D}$? That is, how can we define the posterior probability"
]
},
{
"cell_type": "markdown",
"id": "3214dac3",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(\\boldsymbol{\\beta}\\vert\\boldsymbol{D}).\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "bd650eeb",
"metadata": {
"editable": true
},
"source": [
"Bayes' theorem comes to our rescue here since (omitting the normalization constant)"
]
},
{
"cell_type": "markdown",
"id": "08d630ed",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(\\boldsymbol{\\beta}\\vert\\boldsymbol{D})\\propto p(\\boldsymbol{D}\\vert\\boldsymbol{\\beta})p(\\boldsymbol{\\beta}).\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "582ebf85",
"metadata": {
"editable": true
},
"source": [
"We have a model for $p(\\boldsymbol{D}\\vert\\boldsymbol{\\beta})$ but need one for the **prior** $p(\\boldsymbol{\\beta})$!"
]
},
{
"cell_type": "markdown",
"id": "1a53c784",
"metadata": {
"editable": true
},
"source": [
"## Ridge and Bayes\n",
"\n",
"With the posterior probability defined by a likelihood which we have\n",
"already modeled and an unknown prior, we are now ready to make\n",
"additional models for the prior.\n",
"\n",
"We can, based on our discussions of the variance of $\\boldsymbol{\\beta}$ and the mean value, assume that the prior for the values $\\boldsymbol{\\beta}$ is given by a Gaussian with mean value zero and variance $\\tau^2$, that is"
]
},
{
"cell_type": "markdown",
"id": "89f8d622",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(\\boldsymbol{\\beta})=\\prod_{j=0}^{p-1}\\exp{\\left(-\\frac{\\beta_j^2}{2\\tau^2}\\right)}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "f1138958",
"metadata": {
"editable": true
},
"source": [
"Our posterior probability becomes then (omitting the normalization factor which is just a constant)"
]
},
{
"cell_type": "markdown",
"id": "c4b8fdc1",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(\\boldsymbol{\\beta\\vert\\boldsymbol{D})}=\\prod_{i=0}^{n-1}\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]}\\prod_{j=0}^{p-1}\\exp{\\left(-\\frac{\\beta_j^2}{2\\tau^2}\\right)}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "0e65c2b7",
"metadata": {
"editable": true
},
"source": [
"We can now optimize this quantity with respect to $\\boldsymbol{\\beta}$. As we\n",
"did for OLS, this is most conveniently done by taking the negative\n",
"logarithm of the posterior probability. Doing so and leaving out the\n",
"constants terms that do not depend on $\\beta$, we have"
]
},
{
"cell_type": "markdown",
"id": "4f7bc40c",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"C(\\boldsymbol{\\beta})=\\frac{\\vert\\vert (\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\vert\\vert_2^2}{2\\sigma^2}+\\frac{1}{2\\tau^2}\\vert\\vert\\boldsymbol{\\beta}\\vert\\vert_2^2,\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "f1c44499",
"metadata": {
"editable": true
},
"source": [
"and replacing $1/2\\tau^2$ with $\\lambda$ we have"
]
},
{
"cell_type": "markdown",
"id": "215c872a",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"C(\\boldsymbol{\\beta})=\\frac{\\vert\\vert (\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\vert\\vert_2^2}{2\\sigma^2}+\\lambda\\vert\\vert\\boldsymbol{\\beta}\\vert\\vert_2^2,\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "a248bb79",
"metadata": {
"editable": true
},
"source": [
"which is our Ridge cost function! Nice, isn't it?"
]
},
{
"cell_type": "markdown",
"id": "bdc951a2",
"metadata": {
"editable": true
},
"source": [
"## Lasso and Bayes\n",
"\n",
"To derive the Lasso cost function, we simply replace the Gaussian prior with an exponential distribution ([Laplace in this case](https://en.wikipedia.org/wiki/Laplace_distribution)) with zero mean value, that is"
]
},
{
"cell_type": "markdown",
"id": "ce54b5ff",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(\\boldsymbol{\\beta})=\\prod_{j=0}^{p-1}\\exp{\\left(-\\frac{\\vert\\beta_j\\vert}{\\tau}\\right)}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "a158d0d6",
"metadata": {
"editable": true
},
"source": [
"Our posterior probability becomes then (omitting the normalization factor which is just a constant)"
]
},
{
"cell_type": "markdown",
"id": "b1010f4a",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"p(\\boldsymbol{\\beta}\\vert\\boldsymbol{D})=\\prod_{i=0}^{n-1}\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]}\\prod_{j=0}^{p-1}\\exp{\\left(-\\frac{\\vert\\beta_j\\vert}{\\tau}\\right)}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "48b806e1",
"metadata": {
"editable": true
},
"source": [
"Taking the negative\n",
"logarithm of the posterior probability and leaving out the\n",
"constants terms that do not depend on $\\beta$, we have"
]
},
{
"cell_type": "markdown",
"id": "4e3090e9",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"C(\\boldsymbol{\\beta})=\\frac{\\vert\\vert (\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\vert\\vert_2^2}{2\\sigma^2}+\\frac{1}{\\tau}\\vert\\vert\\boldsymbol{\\beta}\\vert\\vert_1,\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "af23d3a1",
"metadata": {
"editable": true
},
"source": [
"and replacing $1/\\tau$ with $\\lambda$ we have"
]
},
{
"cell_type": "markdown",
"id": "72d5f20a",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"C(\\boldsymbol{\\beta})=\\frac{\\vert\\vert (\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\vert\\vert_2^2}{2\\sigma^2}+\\lambda\\vert\\vert\\boldsymbol{\\beta}\\vert\\vert_1,\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "45d3140f",
"metadata": {
"editable": true
},
"source": [
"which is our Lasso cost function!"
]
},
{
"cell_type": "markdown",
"id": "6c40d9a0",
"metadata": {
"editable": true
},
"source": [
"## Why resampling methods\n",
"\n",
"Before we proceed, we need to rethink what we have been doing. In our\n",
"eager to fit the data, we have omitted several important elements in\n",
"our regression analysis. In what follows we will\n",
"1. look at statistical properties, including a discussion of mean values, variance and the so-called bias-variance tradeoff\n",
"\n",
"2. introduce resampling techniques like cross-validation, bootstrapping and jackknife and more\n",
"\n",
"and discuss how to select a given model (one of the difficult parts in machine learning)."
]
},
{
"cell_type": "markdown",
"id": "bc0ed879",
"metadata": {
"editable": true
},
"source": [
"## Resampling methods\n",
"Resampling methods are an indispensable tool in modern\n",
"statistics. They involve repeatedly drawing samples from a training\n",
"set and refitting a model of interest on each sample in order to\n",
"obtain additional information about the fitted model. For example, in\n",
"order to estimate the variability of a linear regression fit, we can\n",
"repeatedly draw different samples from the training data, fit a linear\n",
"regression to each new sample, and then examine the extent to which\n",
"the resulting fits differ. Such an approach may allow us to obtain\n",
"information that would not be available from fitting the model only\n",
"once using the original training sample.\n",
"\n",
"Two resampling methods are often used in Machine Learning analyses,\n",
"1. The **bootstrap method**\n",
"\n",
"2. and **Cross-Validation**\n",
"\n",
"In addition there are several other methods such as the Jackknife and the Blocking methods. We will discuss in particular\n",
"cross-validation and the bootstrap method."
]
},
{
"cell_type": "markdown",
"id": "a2f50278",
"metadata": {
"editable": true
},
"source": [
"## Resampling approaches can be computationally expensive\n",
"\n",
"Resampling approaches can be computationally expensive, because they\n",
"involve fitting the same statistical method multiple times using\n",
"different subsets of the training data. However, due to recent\n",
"advances in computing power, the computational requirements of\n",
"resampling methods generally are not prohibitive. In this chapter, we\n",
"discuss two of the most commonly used resampling methods,\n",
"cross-validation and the bootstrap. Both methods are important tools\n",
"in the practical application of many statistical learning\n",
"procedures. For example, cross-validation can be used to estimate the\n",
"test error associated with a given statistical learning method in\n",
"order to evaluate its performance, or to select the appropriate level\n",
"of flexibility. The process of evaluating a models performance is\n",
"known as model assessment, whereas the process of selecting the proper\n",
"level of flexibility for a model is known as model selection. The\n",
"bootstrap is widely used."
]
},
{
"cell_type": "markdown",
"id": "d05b795a",
"metadata": {
"editable": true
},
"source": [
"## Why resampling methods ?\n",
"**Statistical analysis.**\n",
"\n",
"* Our simulations can be treated as *computer experiments*. This is particularly the case for Monte Carlo methods which are widely used in statistical analyses.\n",
"\n",
"* The results can be analysed with the same statistical tools as we would use when analysing experimental data.\n",
"\n",
"* As in all experiments, we are looking for expectation values and an estimate of how accurate they are, i.e., possible sources for errors."
]
},
{
"cell_type": "markdown",
"id": "61291aec",
"metadata": {
"editable": true
},
"source": [
"## Statistical analysis\n",
"\n",
"* As in other experiments, many numerical experiments have two classes of errors:\n",
"\n",
" * Statistical errors\n",
"\n",
" * Systematical errors\n",
"\n",
"* Statistical errors can be estimated using standard tools from statistics\n",
"\n",
"* Systematical errors are method specific and must be treated differently from case to case."
]
},
{
"cell_type": "markdown",
"id": "e0053e66",
"metadata": {
"editable": true
},
"source": [
"## Resampling methods\n",
"\n",
"With all these analytical equations for both the OLS and Ridge\n",
"regression, we will now outline how to assess a given model. This will\n",
"lead to a discussion of the so-called bias-variance tradeoff (see\n",
"below) and so-called resampling methods.\n",
"\n",
"One of the quantities we have discussed as a way to measure errors is\n",
"the mean-squared error (MSE), mainly used for fitting of continuous\n",
"functions. Another choice is the absolute error.\n",
"\n",
"In the discussions below we will focus on the MSE and in particular since we will split the data into test and training data,\n",
"we discuss the\n",
"1. prediction error or simply the **test error** $\\mathrm{Err_{Test}}$, where we have a fixed training set and the test error is the MSE arising from the data reserved for testing. We discuss also the \n",
"\n",
"2. training error $\\mathrm{Err_{Train}}$, which is the average loss over the training data.\n",
"\n",
"As our model becomes more and more complex, more of the training data tends to used. The training may thence adapt to more complicated structures in the data. This may lead to a decrease in the bias (see below for code example) and a slight increase of the variance for the test error.\n",
"For a certain level of complexity the test error will reach minimum, before starting to increase again. The\n",
"training error reaches a saturation."
]
},
{
"cell_type": "markdown",
"id": "5bc0cc49",
"metadata": {
"editable": true
},
"source": [
"## Resampling methods: Bootstrap\n",
"Bootstrapping is a [non-parametric approach](https://en.wikipedia.org/wiki/Nonparametric_statistics) to statistical inference\n",
"that substitutes computation for more traditional distributional\n",
"assumptions and asymptotic results. Bootstrapping offers a number of\n",
"advantages: \n",
"1. The bootstrap is quite general, although there are some cases in which it fails. \n",
"\n",
"2. Because it does not require distributional assumptions (such as normally distributed errors), the bootstrap can provide more accurate inferences when the data are not well behaved or when the sample size is small. \n",
"\n",
"3. It is possible to apply the bootstrap to statistics with sampling distributions that are difficult to derive, even asymptotically. \n",
"\n",
"4. It is relatively simple to apply the bootstrap to complex data-collection plans (such as stratified and clustered samples).\n",
"\n",
"The textbook by [Davison on the Bootstrap Methods and their Applications](https://www.cambridge.org/core/books/bootstrap-methods-and-their-application/ED2FD043579F27952363566DC09CBD6A) provides many more insights and proofs. In this course we will take a more practical approach and use the results and theorems provided in the literature. For those interested in reading more about the bootstrap methods, we recommend the above text and the one by [Efron and Tibshirani](https://www.routledge.com/An-Introduction-to-the-Bootstrap/Efron-Tibshirani/p/book/9780412042317).\n",
"\n",
"Before we proceed however, we need to remind ourselves about a central theorem in statistics, namely the so-called **central limit theorem**."
]
},
{
"cell_type": "markdown",
"id": "61de3a3e",
"metadata": {
"editable": true
},
"source": [
"## The Central Limit Theorem\n",
"\n",
"Suppose we have a PDF $p(x)$ from which we generate a series $N$\n",
"of averages $\\mathbb{E}[x_i]$. Each mean value $\\mathbb{E}[x_i]$\n",
"is viewed as the average of a specific measurement, e.g., throwing \n",
"dice 100 times and then taking the average value, or producing a certain\n",
"amount of random numbers. \n",
"For notational ease, we set $\\mathbb{E}[x_i]=x_i$ in the discussion\n",
"which follows. We do the same for $\\mathbb{E}[z]=z$.\n",
"\n",
"If we compute the mean $z$ of $m$ such mean values $x_i$"
]
},
{
"cell_type": "markdown",
"id": "45c40645",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"z=\\frac{x_1+x_2+\\dots+x_m}{m},\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "f96414b9",
"metadata": {
"editable": true
},
"source": [
"the question we pose is which is the PDF of the new variable $z$."
]
},
{
"cell_type": "markdown",
"id": "89324724",
"metadata": {
"editable": true
},
"source": [
"## Finding the Limit\n",
"\n",
"The probability of obtaining an average value $z$ is the product of the \n",
"probabilities of obtaining arbitrary individual mean values $x_i$,\n",
"but with the constraint that the average is $z$. We can express this through\n",
"the following expression"
]
},
{
"cell_type": "markdown",
"id": "c7dc04c2",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\tilde{p}(z)=\\int dx_1p(x_1)\\int dx_2p(x_2)\\dots\\int dx_mp(x_m)\n",
" \\delta(z-\\frac{x_1+x_2+\\dots+x_m}{m}),\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "451e8d96",
"metadata": {
"editable": true
},
"source": [
"where the $\\delta$-function enbodies the constraint that the mean is $z$.\n",
"All measurements that lead to each individual $x_i$ are expected to\n",
"be independent, which in turn means that we can express $\\tilde{p}$ as the \n",
"product of individual $p(x_i)$. The independence assumption is important in the derivation of the central limit theorem."
]
},
{
"cell_type": "markdown",
"id": "b857136e",
"metadata": {
"editable": true
},
"source": [
"## Rewriting the $\\delta$-function\n",
"\n",
"If we use the integral expression for the $\\delta$-function"
]
},
{
"cell_type": "markdown",
"id": "81465668",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\delta(z-\\frac{x_1+x_2+\\dots+x_m}{m})=\\frac{1}{2\\pi}\\int_{-\\infty}^{\\infty}\n",
" dq\\exp{\\left(iq(z-\\frac{x_1+x_2+\\dots+x_m}{m})\\right)},\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "b145c9fd",
"metadata": {
"editable": true
},
"source": [
"and inserting $e^{i\\mu q-i\\mu q}$ where $\\mu$ is the mean value\n",
"we arrive at"
]
},
{
"cell_type": "markdown",
"id": "c2f110e5",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\tilde{p}(z)=\\frac{1}{2\\pi}\\int_{-\\infty}^{\\infty}\n",
" dq\\exp{\\left(iq(z-\\mu)\\right)}\\left[\\int_{-\\infty}^{\\infty}\n",
" dxp(x)\\exp{\\left(iq(\\mu-x)/m\\right)}\\right]^m,\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "9fffd309",
"metadata": {
"editable": true
},
"source": [
"with the integral over $x$ resulting in"
]
},
{
"cell_type": "markdown",
"id": "6d1a1c34",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\int_{-\\infty}^{\\infty}dxp(x)\\exp{\\left(iq(\\mu-x)/m\\right)}=\n",
" \\int_{-\\infty}^{\\infty}dxp(x)\n",
" \\left[1+\\frac{iq(\\mu-x)}{m}-\\frac{q^2(\\mu-x)^2}{2m^2}+\\dots\\right].\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "3c425d33",
"metadata": {
"editable": true
},
"source": [
"## Identifying Terms\n",
"\n",
"The second term on the rhs disappears since this is just the mean and \n",
"employing the definition of $\\sigma^2$ we have"
]
},
{
"cell_type": "markdown",
"id": "d43d6aa9",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\int_{-\\infty}^{\\infty}dxp(x)e^{\\left(iq(\\mu-x)/m\\right)}=\n",
" 1-\\frac{q^2\\sigma^2}{2m^2}+\\dots,\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "b8bd4093",
"metadata": {
"editable": true
},
"source": [
"resulting in"
]
},
{
"cell_type": "markdown",
"id": "b46c892b",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\left[\\int_{-\\infty}^{\\infty}dxp(x)\\exp{\\left(iq(\\mu-x)/m\\right)}\\right]^m\\approx\n",
" \\left[1-\\frac{q^2\\sigma^2}{2m^2}+\\dots \\right]^m,\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "0a4fcb69",
"metadata": {
"editable": true
},
"source": [
"and in the limit $m\\rightarrow \\infty$ we obtain"
]
},
{
"cell_type": "markdown",
"id": "9c6b1478",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\tilde{p}(z)=\\frac{1}{\\sqrt{2\\pi}(\\sigma/\\sqrt{m})}\n",
" \\exp{\\left(-\\frac{(z-\\mu)^2}{2(\\sigma/\\sqrt{m})^2}\\right)},\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "c179621d",
"metadata": {
"editable": true
},
"source": [
"which is the normal distribution with variance\n",
"$\\sigma^2_m=\\sigma^2/m$, where $\\sigma$ is the variance of the PDF $p(x)$\n",
"and $\\mu$ is also the mean of the PDF $p(x)$."
]
},
{
"cell_type": "markdown",
"id": "de489be5",
"metadata": {
"editable": true
},
"source": [
"## Wrapping it up\n",
"\n",
"Thus, the central limit theorem states that the PDF $\\tilde{p}(z)$ of\n",
"the average of $m$ random values corresponding to a PDF $p(x)$ \n",
"is a normal distribution whose mean is the \n",
"mean value of the PDF $p(x)$ and whose variance is the variance\n",
"of the PDF $p(x)$ divided by $m$, the number of values used to compute $z$.\n",
"\n",
"The central limit theorem leads to the well-known expression for the\n",
"standard deviation, given by"
]
},
{
"cell_type": "markdown",
"id": "43c158c8",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\sigma_m=\n",
"\\frac{\\sigma}{\\sqrt{m}}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "433141f0",
"metadata": {
"editable": true
},
"source": [
"The latter is true only if the average value is known exactly. This is obtained in the limit\n",
"$m\\rightarrow \\infty$ only. Because the mean and the variance are measured quantities we obtain \n",
"the familiar expression in statistics (the so-called Bessel correction)"
]
},
{
"cell_type": "markdown",
"id": "68ffe84c",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\sigma_m\\approx \n",
"\\frac{\\sigma}{\\sqrt{m-1}}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "c685143d",
"metadata": {
"editable": true
},
"source": [
"In many cases however the above estimate for the standard deviation,\n",
"in particular if correlations are strong, may be too simplistic. Keep\n",
"in mind that we have assumed that the variables $x$ are independent\n",
"and identically distributed. This is obviously not always the\n",
"case. For example, the random numbers (or better pseudorandom numbers)\n",
"we generate in various calculations do always exhibit some\n",
"correlations.\n",
"\n",
"The theorem is satisfied by a large class of PDFs. Note however that for a\n",
"finite $m$, it is not always possible to find a closed form /analytic expression for\n",
"$\\tilde{p}(x)$."
]
},
{
"cell_type": "markdown",
"id": "ff2c6f80",
"metadata": {
"editable": true
},
"source": [
"## Confidence Intervals\n",
"\n",
"Confidence intervals are used in statistics and represent a type of estimate\n",
"computed from the observed data. This gives a range of values for an\n",
"unknown parameter such as the parameters $\\boldsymbol{\\beta}$ from linear regression.\n",
"\n",
"With the OLS expressions for the parameters $\\boldsymbol{\\beta}$ we found \n",
"$\\mathbb{E}(\\boldsymbol{\\beta}) = \\boldsymbol{\\beta}$, which means that the estimator of the regression parameters is unbiased.\n",
"\n",
"In the exercises this week we show that the variance of the estimate of the $j$-th regression coefficient is\n",
"$\\boldsymbol{\\sigma}^2 (\\boldsymbol{\\beta}_j ) = \\boldsymbol{\\sigma}^2 [(\\mathbf{X}^{T} \\mathbf{X})^{-1}]_{jj} $.\n",
"\n",
"This quantity can be used to\n",
"construct a confidence interval for the estimates."
]
},
{
"cell_type": "markdown",
"id": "de45a804",
"metadata": {
"editable": true
},
"source": [
"## Standard Approach based on the Normal Distribution\n",
"\n",
"We will assume that the parameters $\\beta$ follow a normal\n",
"distribution. We can then define the confidence interval. Here we will be using as\n",
"shorthands $\\mu_{\\beta}$ for the above mean value and $\\sigma_{\\beta}$\n",
"for the standard deviation. We have then a confidence interval"
]
},
{
"cell_type": "markdown",
"id": "7b76e657",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\left(\\mu_{\\beta}\\pm \\frac{z\\sigma_{\\beta}}{\\sqrt{n}}\\right),\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "68374b3c",
"metadata": {
"editable": true
},
"source": [
"where $z$ defines the level of certainty (or confidence). For a normal\n",
"distribution typical parameters are $z=2.576$ which corresponds to a\n",
"confidence of $99\\%$ while $z=1.96$ corresponds to a confidence of\n",
"$95\\%$. A confidence level of $95\\%$ is commonly used and it is\n",
"normally referred to as a *two-sigmas* confidence level, that is we\n",
"approximate $z\\approx 2$.\n",
"\n",
"For more discussions of confidence intervals (and in particular linked with a discussion of the bootstrap method), see chapter 5 of the textbook by [Davison on the Bootstrap Methods and their Applications](https://www.cambridge.org/core/books/bootstrap-methods-and-their-application/ED2FD043579F27952363566DC09CBD6A)\n",
"\n",
"In this text you will also find an in-depth discussion of the\n",
"Bootstrap method, why it works and various theorems related to it."
]
},
{
"cell_type": "markdown",
"id": "a33b3849",
"metadata": {
"editable": true
},
"source": [
"## Resampling methods: Bootstrap background\n",
"\n",
"Since $\\widehat{\\beta} = \\widehat{\\beta}(\\boldsymbol{X})$ is a function of random variables,\n",
"$\\widehat{\\beta}$ itself must be a random variable. Thus it has\n",
"a pdf, call this function $p(\\boldsymbol{t})$. The aim of the bootstrap is to\n",
"estimate $p(\\boldsymbol{t})$ by the relative frequency of\n",
"$\\widehat{\\beta}$. You can think of this as using a histogram\n",
"in the place of $p(\\boldsymbol{t})$. If the relative frequency closely\n",
"resembles $p(\\vec{t})$, then using numerics, it is straight forward to\n",
"estimate all the interesting parameters of $p(\\boldsymbol{t})$ using point\n",
"estimators."
]
},
{
"cell_type": "markdown",
"id": "3d4a490b",
"metadata": {
"editable": true
},
"source": [
"## Resampling methods: More Bootstrap background\n",
"\n",
"In the case that $\\widehat{\\beta}$ has\n",
"more than one component, and the components are independent, we use the\n",
"same estimator on each component separately. If the probability\n",
"density function of $X_i$, $p(x)$, had been known, then it would have\n",
"been straightforward to do this by: \n",
"1. Drawing lots of numbers from $p(x)$, suppose we call one such set of numbers $(X_1^*, X_2^*, \\cdots, X_n^*)$. \n",
"\n",
"2. Then using these numbers, we could compute a replica of $\\widehat{\\beta}$ called $\\widehat{\\beta}^*$. \n",
"\n",
"By repeated use of the above two points, many\n",
"estimates of $\\widehat{\\beta}$ can be obtained. The\n",
"idea is to use the relative frequency of $\\widehat{\\beta}^*$\n",
"(think of a histogram) as an estimate of $p(\\boldsymbol{t})$."
]
},
{
"cell_type": "markdown",
"id": "293c5a07",
"metadata": {
"editable": true
},
"source": [
"## Resampling methods: Bootstrap approach\n",
"\n",
"But\n",
"unless there is enough information available about the process that\n",
"generated $X_1,X_2,\\cdots,X_n$, $p(x)$ is in general\n",
"unknown. Therefore, [Efron in 1979](https://projecteuclid.org/euclid.aos/1176344552) asked the\n",
"question: What if we replace $p(x)$ by the relative frequency\n",
"of the observation $X_i$?\n",
"\n",
"If we draw observations in accordance with\n",
"the relative frequency of the observations, will we obtain the same\n",
"result in some asymptotic sense? The answer is yes."
]
},
{
"cell_type": "markdown",
"id": "21a752e9",
"metadata": {
"editable": true
},
"source": [
"## Resampling methods: Bootstrap steps\n",
"\n",
"The independent bootstrap works like this: \n",
"\n",
"1. Draw with replacement $n$ numbers for the observed variables $\\boldsymbol{x} = (x_1,x_2,\\cdots,x_n)$. \n",
"\n",
"2. Define a vector $\\boldsymbol{x}^*$ containing the values which were drawn from $\\boldsymbol{x}$. \n",
"\n",
"3. Using the vector $\\boldsymbol{x}^*$ compute $\\widehat{\\beta}^*$ by evaluating $\\widehat \\beta$ under the observations $\\boldsymbol{x}^*$. \n",
"\n",
"4. Repeat this process $k$ times. \n",
"\n",
"When you are done, you can draw a histogram of the relative frequency\n",
"of $\\widehat \\beta^*$. This is your estimate of the probability\n",
"distribution $p(t)$. Using this probability distribution you can\n",
"estimate any statistics thereof. In principle you never draw the\n",
"histogram of the relative frequency of $\\widehat{\\beta}^*$. Instead\n",
"you use the estimators corresponding to the statistic of interest. For\n",
"example, if you are interested in estimating the variance of $\\widehat\n",
"\\beta$, apply the etsimator $\\widehat \\sigma^2$ to the values\n",
"$\\widehat \\beta^*$."
]
},
{
"cell_type": "markdown",
"id": "8409d109",
"metadata": {
"editable": true
},
"source": [
"## Code example for the Bootstrap method\n",
"\n",
"The following code starts with a Gaussian distribution with mean value\n",
"$\\mu =100$ and variance $\\sigma=15$. We use this to generate the data\n",
"used in the bootstrap analysis. The bootstrap analysis returns a data\n",
"set after a given number of bootstrap operations (as many as we have\n",
"data points). This data set consists of estimated mean values for each\n",
"bootstrap operation. The histogram generated by the bootstrap method\n",
"shows that the distribution for these mean values is also a Gaussian,\n",
"centered around the mean value $\\mu=100$ but with standard deviation\n",
"$\\sigma/\\sqrt{n}$, where $n$ is the number of bootstrap samples (in\n",
"this case the same as the number of original data points). The value\n",
"of the standard deviation is what we expect from the central limit\n",
"theorem."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "82f5a45c",
"metadata": {
"collapsed": false,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Bootstrap Statistics :\n",
"original bias std. error\n",
" 100.213 14.98 100.211 0.149466\n"
]
}
],
"source": [
"%matplotlib inline\n",
"\n",
"import numpy as np\n",
"from time import time\n",
"from scipy.stats import norm\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Returns mean of bootstrap samples \n",
"# Bootstrap algorithm\n",
"def bootstrap(data, datapoints):\n",
" t = np.zeros(datapoints)\n",
" n = len(data)\n",
" # non-parametric bootstrap \n",
" for i in range(datapoints):\n",
" t[i] = np.mean(data[np.random.randint(0,n,n)])\n",
" # analysis \n",
" print(\"Bootstrap Statistics :\")\n",
" print(\"original bias std. error\")\n",
" print(\"%8g %8g %14g %15g\" % (np.mean(data), np.std(data),np.mean(t),np.std(t)))\n",
" return t\n",
"\n",
"# We set the mean value to 100 and the standard deviation to 15\n",
"mu, sigma = 100, 15\n",
"datapoints = 10000\n",
"# We generate random numbers according to the normal distribution\n",
"x = mu + sigma*np.random.randn(datapoints)\n",
"# bootstrap returns the data sample \n",
"t = bootstrap(x, datapoints)"
]
},
{
"cell_type": "markdown",
"id": "b1c292eb",
"metadata": {
"editable": true
},
"source": [
"We see that our new variance and from that the standard deviation, agrees with the central limit theorem."
]
},
{
"cell_type": "markdown",
"id": "19a2ff64",
"metadata": {
"editable": true
},
"source": [
"## Plotting the Histogram"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "0e3146d6",
"metadata": {
"collapsed": false,
"editable": true
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {
"filenames": {
"image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/week37_121_0.png"
}
},
"output_type": "display_data"
}
],
"source": [
"# the histogram of the bootstrapped data (normalized data if density = True)\n",
"n, binsboot, patches = plt.hist(t, 50, density=True, facecolor='red', alpha=0.75)\n",
"# add a 'best fit' line \n",
"y = norm.pdf(binsboot, np.mean(t), np.std(t))\n",
"lt = plt.plot(binsboot, y, 'b', linewidth=1)\n",
"plt.xlabel('x')\n",
"plt.ylabel('Probability')\n",
"plt.grid(True)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "33a2920b",
"metadata": {
"editable": true
},
"source": [
"## The bias-variance tradeoff\n",
"\n",
"We will discuss the bias-variance tradeoff in the context of\n",
"continuous predictions such as regression. However, many of the\n",
"intuitions and ideas discussed here also carry over to classification\n",
"tasks. Consider a dataset $\\mathcal{D}$ consisting of the data\n",
"$\\mathbf{X}_\\mathcal{D}=\\{(y_j, \\boldsymbol{x}_j), j=0\\ldots n-1\\}$. \n",
"\n",
"Let us assume that the true data is generated from a noisy model"
]
},
{
"cell_type": "markdown",
"id": "dcd7d41e",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\boldsymbol{y}=f(\\boldsymbol{x}) + \\boldsymbol{\\epsilon}\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "7a13a154",
"metadata": {
"editable": true
},
"source": [
"where $\\epsilon$ is normally distributed with mean zero and standard deviation $\\sigma^2$.\n",
"\n",
"In our derivation of the ordinary least squares method we defined then\n",
"an approximation to the function $f$ in terms of the parameters\n",
"$\\boldsymbol{\\beta}$ and the design matrix $\\boldsymbol{X}$ which embody our model,\n",
"that is $\\boldsymbol{\\tilde{y}}=\\boldsymbol{X}\\boldsymbol{\\beta}$. \n",
"\n",
"Thereafter we found the parameters $\\boldsymbol{\\beta}$ by optimizing the means squared error via the so-called cost function"
]
},
{
"cell_type": "markdown",
"id": "12c56a3e",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"C(\\boldsymbol{X},\\boldsymbol{\\beta}) =\\frac{1}{n}\\sum_{i=0}^{n-1}(y_i-\\tilde{y}_i)^2=\\mathbb{E}\\left[(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}})^2\\right].\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "ded9dfd0",
"metadata": {
"editable": true
},
"source": [
"We can rewrite this as"
]
},
{
"cell_type": "markdown",
"id": "5c8be1fb",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\mathbb{E}\\left[(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}})^2\\right]=\\frac{1}{n}\\sum_i(f_i-\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right])^2+\\frac{1}{n}\\sum_i(\\tilde{y}_i-\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right])^2+\\sigma^2.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "6ae6d83b",
"metadata": {
"editable": true
},
"source": [
"The three terms represent the square of the bias of the learning\n",
"method, which can be thought of as the error caused by the simplifying\n",
"assumptions built into the method. The second term represents the\n",
"variance of the chosen model and finally the last terms is variance of\n",
"the error $\\boldsymbol{\\epsilon}$.\n",
"\n",
"To derive this equation, we need to recall that the variance of $\\boldsymbol{y}$ and $\\boldsymbol{\\epsilon}$ are both equal to $\\sigma^2$. The mean value of $\\boldsymbol{\\epsilon}$ is by definition equal to zero. Furthermore, the function $f$ is not a stochastics variable, idem for $\\boldsymbol{\\tilde{y}}$.\n",
"We use a more compact notation in terms of the expectation value"
]
},
{
"cell_type": "markdown",
"id": "ac6ad12e",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\mathbb{E}\\left[(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}})^2\\right]=\\mathbb{E}\\left[(\\boldsymbol{f}+\\boldsymbol{\\epsilon}-\\boldsymbol{\\tilde{y}})^2\\right],\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "24cd6a77",
"metadata": {
"editable": true
},
"source": [
"and adding and subtracting $\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right]$ we get"
]
},
{
"cell_type": "markdown",
"id": "82580456",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\mathbb{E}\\left[(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}})^2\\right]=\\mathbb{E}\\left[(\\boldsymbol{f}+\\boldsymbol{\\epsilon}-\\boldsymbol{\\tilde{y}}+\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right]-\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right])^2\\right],\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "542a056a",
"metadata": {
"editable": true
},
"source": [
"which, using the abovementioned expectation values can be rewritten as"
]
},
{
"cell_type": "markdown",
"id": "12d87c8f",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\mathbb{E}\\left[(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}})^2\\right]=\\mathbb{E}\\left[(\\boldsymbol{y}-\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right])^2\\right]+\\mathrm{Var}\\left[\\boldsymbol{\\tilde{y}}\\right]+\\sigma^2,\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "661e392d",
"metadata": {
"editable": true
},
"source": [
"that is the rewriting in terms of the so-called bias, the variance of the model $\\boldsymbol{\\tilde{y}}$ and the variance of $\\boldsymbol{\\epsilon}$."
]
},
{
"cell_type": "markdown",
"id": "c92115cc",
"metadata": {
"editable": true
},
"source": [
"## A way to Read the Bias-Variance Tradeoff\n",
"\n",
"<!-- dom:FIGURE: [figures/BiasVariance.png, width=600 frac=0.9] -->\n",
"<!-- begin figure -->\n",
"\n",
"<img src=\"figures/BiasVariance.png\" width=\"600\"><p style=\"font-size: 0.9em\"><i>Figure 1: </i></p>\n",
"<!-- end figure -->"
]
},
{
"cell_type": "markdown",
"id": "555ecab7",
"metadata": {
"editable": true
},
"source": [
"## Example code for Bias-Variance tradeoff"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "a1e3bf2d",
"metadata": {
"collapsed": false,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Error: 0.013121574015585152\n",
"Bias^2: 0.012073649446193166\n",
"Var: 0.0010479245693919886\n",
"0.013121574015585152 >= 0.012073649446193166 + 0.0010479245693919886 = 0.013121574015585155\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {
"filenames": {
"image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/week37_137_1.png"
}
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from sklearn.linear_model import LinearRegression, Ridge, Lasso\n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.pipeline import make_pipeline\n",
"from sklearn.utils import resample\n",
"\n",
"np.random.seed(2018)\n",
"\n",
"n = 500\n",
"n_boostraps = 100\n",
"degree = 18 # A quite high value, just to show.\n",
"noise = 0.1\n",
"\n",
"# Make data set.\n",
"x = np.linspace(-1, 3, n).reshape(-1, 1)\n",
"y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2) + np.random.normal(0, 0.1, x.shape)\n",
"\n",
"# Hold out some test data that is never used in training.\n",
"x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)\n",
"\n",
"# Combine x transformation and model into one operation.\n",
"# Not neccesary, but convenient.\n",
"model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False))\n",
"\n",
"# The following (m x n_bootstraps) matrix holds the column vectors y_pred\n",
"# for each bootstrap iteration.\n",
"y_pred = np.empty((y_test.shape[0], n_boostraps))\n",
"for i in range(n_boostraps):\n",
" x_, y_ = resample(x_train, y_train)\n",
"\n",
" # Evaluate the new model on the same test data each time.\n",
" y_pred[:, i] = model.fit(x_, y_).predict(x_test).ravel()\n",
"\n",
"# Note: Expectations and variances taken w.r.t. different training\n",
"# data sets, hence the axis=1. Subsequent means are taken across the test data\n",
"# set in order to obtain a total value, but before this we have error/bias/variance\n",
"# calculated per data point in the test set.\n",
"# Note 2: The use of keepdims=True is important in the calculation of bias as this \n",
"# maintains the column vector form. Dropping this yields very unexpected results.\n",
"error = np.mean( np.mean((y_test - y_pred)**2, axis=1, keepdims=True) )\n",
"bias = np.mean( (y_test - np.mean(y_pred, axis=1, keepdims=True))**2 )\n",
"variance = np.mean( np.var(y_pred, axis=1, keepdims=True) )\n",
"print('Error:', error)\n",
"print('Bias^2:', bias)\n",
"print('Var:', variance)\n",
"print('{} >= {} + {} = {}'.format(error, bias, variance, bias+variance))\n",
"\n",
"plt.plot(x[::5, :], y[::5, :], label='f(x)')\n",
"plt.scatter(x_test, y_test, label='Data points')\n",
"plt.scatter(x_test, np.mean(y_pred, axis=1), label='Pred')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "b05eafde",
"metadata": {
"editable": true
},
"source": [
"## Understanding what happens"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "23e711c6",
"metadata": {
"collapsed": false,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Polynomial degree: 0\n",
"Error: 0.32149601703519115\n",
"Bias^2: 0.3123314713548606\n",
"Var: 0.009164545680330616\n",
"0.32149601703519115 >= 0.3123314713548606 + 0.009164545680330616 = 0.3214960170351912\n",
"Polynomial degree: 1\n",
"Error: 0.08426840630693411\n",
"Bias^2: 0.0796891867672603\n",
"Var: 0.004579219539673834\n",
"0.08426840630693411 >= 0.0796891867672603 + 0.004579219539673834 = 0.08426840630693413\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Polynomial degree: 2\n",
"Error: 0.10398646080125035\n",
"Bias^2: 0.1007711427354898\n",
"Var: 0.0032153180657605116\n",
"0.10398646080125035 >= 0.1007711427354898 + 0.0032153180657605116 = 0.10398646080125032\n",
"Polynomial degree: 3\n",
"Error: 0.06547790180152355\n",
"Bias^2: 0.06208238634231949\n",
"Var: 0.0033955154592040936\n",
"0.06547790180152355 >= 0.06208238634231949 + 0.0033955154592040936 = 0.06547790180152359\n",
"Polynomial degree: 4\n",
"Error: 0.06844519414009445\n",
"Bias^2: 0.06453579006728324\n",
"Var: 0.003909404072811226\n",
"0.06844519414009445 >= 0.06453579006728324 + 0.003909404072811226 = 0.06844519414009446\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Polynomial degree: 5\n",
"Error: 0.05227921801205686\n",
"Bias^2: 0.0481872773043029\n",
"Var: 0.004091940707753939\n",
"0.05227921801205686 >= 0.0481872773043029 + 0.004091940707753939 = 0.052279218012056844\n",
"Polynomial degree: 6\n",
"Error: 0.037813671417389005\n",
"Bias^2: 0.033657685071527665\n",
"Var: 0.00415598634586135\n",
"0.037813671417389005 >= 0.033657685071527665 + 0.00415598634586135 = 0.03781367141738902\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Polynomial degree: 7\n",
"Error: 0.02760977349102253\n",
"Bias^2: 0.022999498260366312\n",
"Var: 0.004610275230656212\n",
"0.02760977349102253 >= 0.022999498260366312 + 0.004610275230656212 = 0.027609773491022525\n",
"Polynomial degree: 8\n",
"Error: 0.017355848195593347\n",
"Bias^2: 0.010331721306655127\n",
"Var: 0.007024126888938232\n",
"0.017355848195593347 >= 0.010331721306655127 + 0.007024126888938232 = 0.01735584819559336\n",
"Polynomial degree: 9\n",
"Error: 0.02660572763718093\n",
"Bias^2: 0.010018312644137363\n",
"Var: 0.016587414993043573\n",
"0.02660572763718093 >= 0.010018312644137363 + 0.016587414993043573 = 0.026605727637180936\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Polynomial degree: 10\n",
"Error: 0.021592704588025025\n",
"Bias^2: 0.010516485576645508\n",
"Var: 0.011076219011379514\n",
"0.021592704588025025 >= 0.010516485576645508 + 0.011076219011379514 = 0.021592704588025022\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Polynomial degree: 11\n",
"Error: 0.07160048164233104\n",
"Bias^2: 0.014436800088904942\n",
"Var: 0.05716368155342608\n",
"0.07160048164233104 >= 0.014436800088904942 + 0.05716368155342608 = 0.07160048164233102\n",
"Polynomial degree: 12\n",
"Error: 0.11547777218872497\n",
"Bias^2: 0.01628578269596628\n",
"Var: 0.09919198949275869\n",
"0.11547777218872497 >= 0.01628578269596628 + 0.09919198949275869 = 0.11547777218872497\n",
"Polynomial degree: 13\n",
"Error: 0.22842468702219465\n",
"Bias^2: 0.01975416527185249\n",
"Var: 0.20867052175034223\n",
"0.22842468702219465 >= 0.01975416527185249 + 0.20867052175034223 = 0.2284246870221947\n"
]
},
{
"data": {
"image/png": "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AQMG8O6779K5c2dCQ0O54YYbKCwsdJ5jt9t5+umn6datG1arlYSEBJ544gnn8+np6UyePJnw8HAiIyO5+uqrOXjwYOP9wOqhwNJQLr1YbHaDw8dKPVyQiEjbZRgGJZUlHnmc7t7BPj4+3HrrrSxcuNDtNR9++CEVFRXccccdDB48mM8//5yff/6Zu+66iylTprBp0ya367z99tv4+Piwbt06Xn/99Tq/V7t27Vi4cCHbt2/nhRde4I033mDu3Llu5+zbt49PPvmEzz//nM8//5xVq1bx1FNPOZ+fPXs2Tz/9NA8//DDbt29n0aJFxMTEAI6QNWHCBIKDg1m9ejVr164lODiYSy65xDnq01S0W3NDFefCs47Q0rNsIQtuH824HtFN9/1ERMTpxF1/SypLGLZomEdq2XTTJgJ9A0/r3J07d9K7d2+++eYbJkyYAMC4cePo1KkTixYtqnX+5ZdfTu/evfn73/8OOEZY8vPz2bp1q9t5JpOJjz/+mGuuuabO7/vss8+yZMkSvvvuO8AxwvLss8+SmZlJu3btALjvvvtYvXo1GzdupLCwkOjoaF5++WXuuOOOWtd78803eeaZZ9ixYwcmkwlw3J4KCwvjk08+YeLEiXXW0Ri7NfvU+4zULTACrKFQnk+CKZvU3GJAgUVEROrXq1cvRo4cyZtvvsmECRPYt28fa9asYfny5dhsNp566imWLFlCeno65eXllJeXExQU5HaNIUOGnPL7/Pvf/2bevHns3buXoqIiqqqqaoWAzp07O8MKQIcOHcjOzgZgx44dlJeXc8EFF9R5/S1btrB3716314MjkOzbt++0fhZnSoGloUwmiOwCh7fS2ZSpTRBFRDwowCeATTdtOvWJTfS9G2Lq1KncfffdvPLKK7z11lskJiZywQUX8OyzzzJ37lzmzZtH//79CQoKYubMmbVusZwYYE60ceNGbrjhBh577DEuvvhiQkNDef/993nuuefczvP19XX72mQyYbc75mMGBJz8PdntdgYPHsx7771X67no6Kb9x7sCy5mIcASWRO3aLCLiUSaT6bRvy3japEmTuOeee1i0aBFvv/02d955JyaTiTVr1nD11Vdzyy23AI5QsGfPHnr37t2g669bt47ExEQefPBB57G6ViadTPfu3QkICODrr7+u85bQoEGDWLJkCe3bt2/a6Rd10KTbM1Ez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v3crKipYtWpVm/29C8fDyp49e/jqq6+IjIz0dEkeoRGWk5g1axZTpkxhyJAhjBgxggULFpCamsq0adM8XZpHzJgxg0WLFvHpp5/Srl075+hTaGgoAQEBHq7OM9q1a1drDk9QUBCRkZFtem7Pvffey8iRI3nyySeZNGkS3377LQsWLGDBggWeLs1jrrzySp544gkSEhLo27cvW7du5fnnn+f222/3dGnNqqioiL179zq/PnDgANu2bSMiIoKEhARmzpzJk08+Sffu3enevTtPPvkkgYGB3HTTTR6summd7GfSsWNHrr/+er7//ns+//xzbDab83dvREQEfn5+niq7+Xl2kZL3e+WVV4zExETDz8/PGDRoUJtewgvU+Xjrrbc8XZpX0bJmh//85z9Gv379DKvVavTq1ctYsGCBp0vyqIKCAuOee+4xEhISDH9/f6NLly7Ggw8+aJSXl3u6tGa1YsWKOn+P/OY3vzEMw7G0+ZFHHjFiY2MNq9VqjB071vjpp588W3QTO9nP5MCBA/X+7l2xYoWnS29WJsMwjOYMSCIiIiINpTksIiIi4vUUWERERMTrKbCIiIiI11NgEREREa+nwCIiIiJeT4FFREREvJ4Ci4iIiHg9BRYRERHxegosIiIi4vUUWERERMTrKbCIiIiI11NgEREREa/3/wFeGur1AV/LvQAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {
"filenames": {
"image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/week37_139_6.png"
}
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from sklearn.linear_model import LinearRegression, Ridge, Lasso\n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.pipeline import make_pipeline\n",
"from sklearn.utils import resample\n",
"\n",
"np.random.seed(2018)\n",
"\n",
"n = 40\n",
"n_boostraps = 100\n",
"maxdegree = 14\n",
"\n",
"\n",
"# Make data set.\n",
"x = np.linspace(-3, 3, n).reshape(-1, 1)\n",
"y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape)\n",
"error = np.zeros(maxdegree)\n",
"bias = np.zeros(maxdegree)\n",
"variance = np.zeros(maxdegree)\n",
"polydegree = np.zeros(maxdegree)\n",
"x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)\n",
"\n",
"for degree in range(maxdegree):\n",
" model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False))\n",
" y_pred = np.empty((y_test.shape[0], n_boostraps))\n",
" for i in range(n_boostraps):\n",
" x_, y_ = resample(x_train, y_train)\n",
" y_pred[:, i] = model.fit(x_, y_).predict(x_test).ravel()\n",
"\n",
" polydegree[degree] = degree\n",
" error[degree] = np.mean( np.mean((y_test - y_pred)**2, axis=1, keepdims=True) )\n",
" bias[degree] = np.mean( (y_test - np.mean(y_pred, axis=1, keepdims=True))**2 )\n",
" variance[degree] = np.mean( np.var(y_pred, axis=1, keepdims=True) )\n",
" print('Polynomial degree:', degree)\n",
" print('Error:', error[degree])\n",
" print('Bias^2:', bias[degree])\n",
" print('Var:', variance[degree])\n",
" print('{} >= {} + {} = {}'.format(error[degree], bias[degree], variance[degree], bias[degree]+variance[degree]))\n",
"\n",
"plt.plot(polydegree, error, label='Error')\n",
"plt.plot(polydegree, bias, label='bias')\n",
"plt.plot(polydegree, variance, label='Variance')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "d638746f",
"metadata": {
"editable": true
},
"source": [
"## Summing up\n",
"\n",
"The bias-variance tradeoff summarizes the fundamental tension in\n",
"machine learning, particularly supervised learning, between the\n",
"complexity of a model and the amount of training data needed to train\n",
"it. Since data is often limited, in practice it is often useful to\n",
"use a less-complex model with higher bias, that is a model whose asymptotic\n",
"performance is worse than another model because it is easier to\n",
"train and less sensitive to sampling noise arising from having a\n",
"finite-sized training dataset (smaller variance). \n",
"\n",
"The above equations tell us that in\n",
"order to minimize the expected test error, we need to select a\n",
"statistical learning method that simultaneously achieves low variance\n",
"and low bias. Note that variance is inherently a nonnegative quantity,\n",
"and squared bias is also nonnegative. Hence, we see that the expected\n",
"test MSE can never lie below $Var(\\epsilon)$, the irreducible error.\n",
"\n",
"What do we mean by the variance and bias of a statistical learning\n",
"method? The variance refers to the amount by which our model would change if we\n",
"estimated it using a different training data set. Since the training\n",
"data are used to fit the statistical learning method, different\n",
"training data sets will result in a different estimate. But ideally the\n",
"estimate for our model should not vary too much between training\n",
"sets. However, if a method has high variance then small changes in\n",
"the training data can result in large changes in the model. In general, more\n",
"flexible statistical methods have higher variance.\n",
"\n",
"You may also find this recent [article](https://www.pnas.org/content/116/32/15849) of interest."
]
},
{
"cell_type": "markdown",
"id": "6fe999c4",
"metadata": {
"editable": true
},
"source": [
"## Another Example from Scikit-Learn's Repository\n",
"\n",
"This example demonstrates the problems of underfitting and overfitting and\n",
"how we can use linear regression with polynomial features to approximate\n",
"nonlinear functions. The plot shows the function that we want to approximate,\n",
"which is a part of the cosine function. In addition, the samples from the\n",
"real function and the approximations of different models are displayed. The\n",
"models have polynomial features of different degrees. We can see that a\n",
"linear function (polynomial with degree 1) is not sufficient to fit the\n",
"training samples. This is called **underfitting**. A polynomial of degree 4\n",
"approximates the true function almost perfectly. However, for higher degrees\n",
"the model will **overfit** the training data, i.e. it learns the noise of the\n",
"training data.\n",
"We evaluate quantitatively overfitting and underfitting by using\n",
"cross-validation. We calculate the mean squared error (MSE) on the validation\n",
"set, the higher, the less likely the model generalizes correctly from the\n",
"training data."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "8289e153",
"metadata": {
"collapsed": false,
"editable": true
},
"outputs": [
{
"data": {
"image/png": "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mzYtyzF069aN2bNnU7VqVUJDQ6+433fffUdqaipNmzbN8vlFRCS94pL7GzZsyKJFizJsf/TRR4mJiWHChAlUqFDBpXOKiBR0xSXH54ZJkyYBaCnsYk4FGckXGzdudM7LPHbsGH/++ScTJkzAZrPx008/UapUKee+n376KZ07d6Zjx44MHDiQ8PBwoqOj2bJlC2vWrHEm5Oeee45ff/2V9u3b89xzz+Hr68v48eOJi4sDslZtfuWVV/j9999p3rw5I0aMoGbNmiQkJLBnzx5mz57N+PHjqVChAnfddRfffvstXbp04ZFHHuH666/H09OTAwcOsGjRIrp3737VoYbTp08H7H81BfvSf44VN3r37u36N1VEpIArzrk/JCTE+dfhS7enpKRk+piISGFSnHO8Q1Y+3//555+8/vrr9OzZkypVqpCQkMCcOXP47LPPaNeuHbfccouL33kpUtzcVFiKOEcXdsfNy8vLlC5d2rRu3dq88cYb5tixY5ket379enPHHXeY0qVLG09PT1O2bFnTrl07M378+HT7/fnnn6Zp06bG29vblC1b1jz11FPmzTffNIA5ffq0c7/IyEjTtWvXTK91/PhxM2LECFO5cmXj6elpwsLCTOPGjc1zzz1nYmNjnfslJyebd955xzRo0MD4+PiYgIAAU6tWLTN06FATFRV11e/Fxd+HS28iIkWJcv/laZUlESnslOMvyMrn+6ioKNOlSxcTHh5uvL29jY+Pj7nmmmvM66+/bhISEq56DSnaLMZc1AJbpAi4+eab2bNnD9u3b3d3KCIikk+U+0VEii7leCmqNGVJCrXHH3+cRo0aERERQXR0NN9++y2///47X375pbtDExGRPKLcLyJSdCnHS3GigowUaqmpqbz44oscOXIEi8VCnTp1mDx5Mn379nV3aCIikkeU+0VEii7leClONGVJRERERERERCSfadFzEREREREREZF8poKMiIiIiIiIiEg+K/YFmYkTJ2KxWLBYLCxevDjD48YYqlWrhsVioU2bNukeO3nyJCNHjqROnTr4+/sTHBxMrVq16NevHxs2bMj0GpndMrtufnn++eexWCzUq1cvy8fs2rWLXr16ERISQkBAAB06dGDNmjUZ9jtz5gzPPfccNWrUwM/Pj/DwcG6//XY2bdqUm0/B6bvvvqNhw4b4+PhQvnx5Hn30UWJjY9Ptc/bsWZ5++mluvvlmSpUqhcViYdSoUZc9Z3JyMrVq1WL06NG5Fmd0dDSenp789NNPOT6Xq6/fF198QY8ePahUqRK+vr5Uq1aNYcOGcfjw4Qz7VqpUKdOf1wceeCDHcWcmt1+/Vq1a8eijj+ZJrFK4Ke+7ljemTp1Kq1atKFOmDN7e3pQvX55bbrmF5cuXp9vv8OHDPP/88zRr1oySJUsSFBRE48aN+eyzz0hNTc2Lp5KlvLFw4UIGDRpErVq18Pf3Jzw8nO7du7N69epMz1nQ8n6bNm2u+LN05MiRq56jML9vu/L6Ke9LccvvBw4c4NFHH6V169aEhIRgsViYOHGiS+eYMWMGLVq0ICwsjJCQEK6//nomT56cYb/BgwdTr149QkJC8PX1pUaNGjz11FOcOHEil55N1iUnJ/Pyyy9TqVIlvL29qVWrFuPGjct036w+P4CdO3fi7e3NihUrci3WX375BQ8PD44fP+7ysQMHDsz0Z6xWrVoun+vcuXPUqFEDi8XCO++8k+HxHTt20K9fPypWrIivry9Vq1bl8ccf5+TJky5fK6eOHTvGwIEDKVmyJH5+fjRr1owFCxZk2C8xMZG3336bevXq4e/vT5kyZejcuXOGzycLFiwgICCAgwcP5tdTcI0bl9wuECZMmGAAExgYaPr27Zvh8UWLFjkfb926tXP72bNnTbVq1UzZsmXNmDFjzB9//GF+/fVXM2bMGNOiRQszadKkDNeYMGGCWbFiRYZbTExMfjzVDNauXWu8vb1NmTJlTN26dbN0zLFjx0z58uVN3bp1zYwZM8xvv/1mWrZsaQIDA83WrVvT7duqVSvj5+dn3nrrLbNw4ULz9ddfm2rVqpnAwECzZ8+eXH0u33zzjQHM4MGDzcKFC8348eNNcHCw6dChQ7r9du/ebYKDg02rVq3M4MGDDWBeeumly5537NixpnTp0iY2NjbXYv3qq6+Mn5+fiY+Pz9F5svP6lS9f3txzzz3m22+/NYsXLzaffvqpqVChgilXrpw5cuRIun0jIyNNixYtMvy87tq1K0dxZyYvXr/FixcbT0/PDD+XIsr7ruWNcePGmWeffdZMnz7dLF682EydOtU0adLE2Gw2s3jxYud+v/76q4mIiDDPPfec+e2338z8+fPNY489ZqxWq7n33ntz/blkNW/07t3btG3b1nz88cdm8eLFZtq0aeaGG24wHh4eZsGCBRnOW9Dy/qZNmzL8/CxYsMB4enqaG2644arHF/b3bVdeP+V9KW75fdGiRaZkyZLmpptuMnfffbczrqz68ssvDWBuu+02M3v2bDNnzhxz1113GcC8++676fa96667zPvvv29+++03s2DBAvPmm2+aoKAgU6dOHZOYmJjLz+zKBg8ebLy9vc1bb71lFi1aZJ599lljsVjM66+/nm4/V56fMcb06NHDdO3aNVdj7d+/v2nbtm22jh0wYIDx9fXN8DO2bt06l8/1xBNPmPLlyxvAvP322+keO3bsmClRooSpXLmymThxolm4cKEZM2aMCQgIMA0bNjSpqanZij87EhISTL169UyFChXMN998Y+bPn2+6d+9uPDw80n3mMMaYfv36GavVap577jmzYMECM23aNNO4cWPj4eFh/v7773T7tm3b1vTv3z/fnocrVJA5n1QHDx5sfH19MyTRvn37mmbNmpm6deumS9xfffWVAczChQszPe/FP7iOa/z777958hyyIzk52TRs2NCMGDHCtG7dOssfzJ966inj6emZ7oNZTEyMKVmypLnjjjuc26Kiogxgnn/++XTHL1++/LJJMLtSUlJMuXLlzM0335xu+7fffmsAM3v2bOe2tLQ0k5aWZowx5vjx41f8hT45OdmEh4ebZ5999qoxtG7d2gwYMCBL8Xbp0sX07t07S/teTnZfv6NHj2bY9u+//xrAvPrqq+m2R0ZG5vqbUmby6vUzxph69eqZIUOG5EncUngp77uWNzJz+vRp4+npafr16+fcFh0dbZKSkjLs+9BDDxnA7Nu3L9vXu5QreSOzvHf27FlTpkwZ0759+3TbC3Lev9jEiRMNYL744our7lvY37ddef2MUd4v7opbfr84LsfnOVcKMi1atDCRkZHpzpOWlmZq1apl6tevf9XjP/74YwNkWtzOjpdeeslERkZecZ+NGzcai8Vi3njjjXTbhwwZYnx9fc3Jkyed21x5fps3bzaAmTt37lXjzOr3OSkpyYSEhJgPP/zwqvtmZsCAAcbf3z9bx17s77//Nl5eXmbatGmZFmQ+//xzA5g//vgj3fY33njDAGbNmjU5jsGYrL1vfvTRRwYwy5cvd25LTk42derUMddff71zW0JCgrHZbBkKr4cOHTKAGTFiRLrt06dPNzabLVc/i+SWYj9lyeHu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C77++mvncEmHr7/+Ol2FEcjS9Iv777+fbt26XXU/b2/vq+7z7rvvEhUVxS+//HLVfS/nSjFf/NiwYcP46aefeO+997j22ms5cuQIb7/9Nu3atWPRokVERkaSkJDAggULGDZsGH5+fs6h0wBdunThww8/ZOXKlXTu3JnU1FSMMc7HHUPVrhaXK1NcLnbo0CGaNGmSYfuSJUto27Zthu1Lly7l66+/Trdt9+7dVKpUCYC4uDjmzZvHJ5984nw8LS2NtLS0dLHabLbLxpQbr59DQkICvXr1Yu/evSxcuDDDX1ovHVravXt3QkND+fDDD3n88cdp1KhRgX79wF49DwkJKbhd1cXtlPezbsaMGcTFxbFv3z7Gjx9P586d+eWXXzKsVOKwZs0a7rjjDm644Qb+97//Obe7O2+88MILfPvtt4wbN47GjRune6wg5v2LpaSkMGnSJOrWrcsNN9yQpWMc18jKY4XhfftKrx8o78sFxSG/59TcuXPp27cvt99+O3fccQceHh788ssvDBw4kKSkpAzTgq655hr+/fdf4uPjWbduHaNHj6ZDhw4sXLgQPz8/l/IDkOk018y2T5gwgYEDBzq/zmpOy+rzO3ToEJD5FMlXXnkl05E99913H/fdd5/z68jISPbs2eP8esmSJZw4cYJevXo5t10tJ17qscceS/d1hw4daNSoEb179+bzzz/P8PjFUlJSGDRoEHfeeScdO3a87H4Ap06donv37sTHx/Ptt98SERHBxo0befXVV7n11lv57bff8PDwYPny5URHRzNgwIB0ry1Ap06deOutt4iLi8Pf3z/b75uQ9df39ddf55133mHUqFHceOONnDlzhg8//JAOHTowf/58GjVqlO7Y0qVLk5aWxpEjR6hateoVvyf5yq3loALg0sZcr732mildurR58MEH0/2FJrNKemaWLFli/Pz8TKlSpS57DVdlVpnN7HZpZfZSe/fuNb6+vub99983p06dct5atGhhateubU6dOnXFFSDi4+ONxWIxTz31VIbHPvzwQwOYbdu2GWOMmTNnjgHMtGnT0u136tQpExwc7PwLxYEDB676F4Kvv/7aGGNvMnvxdsfIiPHjxxvAbNq0KUNc1113nWnWrFmmz+dqIywyq7IbYx9V8u+//6a7XXvttaZbt24Ztl/cdf777783Hh4e6f4yMGDAgHTP6Uo/Yzl9/S6WkJBgOnXqZHx8fDI08LqSlStXGsB8/PHHxpiC/fo5lCtXztx2221Zfo5S9CnvZy9vXCw5OdnUq1fvsk0f16xZY8LCwsx1111nTp8+ne4xd+aNUaNGGSDDShwOBS3vX+rnn382gHnvvfeytH9Re9++2uvnoLxffBWn/H4pV0fIpKWlmXLlypkuXbpkeKx///7G39//qiMJHJ8LHU2/XckPjpgvvg0ZMsSUK1cuw/YTJ044j7nrrrvSvR4OsbGxBjAjR450+fllNvrC4eDBgxniceSzi7dt2LAh3XHDhg0zjRs3TrftcjnRFampqcbf3z9dU/bMvP322yY4ONhERUU53/vXr19vwL6Qx6lTp5w/Y88884zx9PQ0hw4dSneOhQsXGsBMnDjRGHNhdbwr3RxNc7P7vlm2bFlz++23Z3g+s2bNMoCZN2+eMcbehNlisWQY7ZOUlGSqVatm2rRpk+Ecn376qQHMf//9d7Vvc77SCJlLDBw4kBdffJHx48dnq/Fhq1atuPnmm5k5cybHjh3LtNLqqstVZi91aWX2Urt27eLcuXM88sgjPPLIIxkeDw0N5ZFHHmHs2LGZHu/r60u1atX477//Mjz233//4evrS5UqVQBYt24dQIa/NIaEhFCtWjXn/M7Q0FBsNhv9+vW7bC+CypUrA/Z5+ImJic7tjvmY11xzjTOGi+f9p6SksHXr1gx/0ciqkiVLZjpHMzAwMENTrMDAQEqUKHHZZllg/+tyu3btCA0NdW4bNWoUw4cPT3eey8np6+eQmJhIjx49WLRoET///DPt27e/4v4XM+er+o5qfkF+/RxOnTpFyZIlc3QOKdqU96+eNy7l4eHBtddeyw8//JDhsbVr13LTTTcRGRnJ/PnzMzTcc1feePnllxk1ahSjRo3i//7v/zK9bkHL+5f68ssv8fLyynLT4aL0vp2V189BeV8cinJ+z6mjR49y+PBhhg4dmuGxJk2a8PXXX7Nnz55MezU5XHfddVitVrZv3w64lh8cx19s1qxZeHl5XTGvXnPNNXz33XccOXIkXR8ZR56rV6+ey8/PkS8yy//ly5fPtAdMpUqVLhtnWloaP/30EyNGjEi3/XI50VXGmKv2utm4cSMxMTFUr149w2MvvPACL7zwAmvXrqVhw4asW7eO8PDwDE2tHe8Hjvzv+D6NGzfusqM0y5QpA2T/ffOaa6657HsWXHh9169fjzEmw3uWp6cnDRo0YMmSJRnO4Xh9C9r7gwoylwgPD+epp55i69atDBgw4LL7HT16lFKlSmX4z5CamkpUVBR+fn7OztQ5lVtDGxs2bMiiRYsybH/00UeJiYlhwoQJVKhQ4Yrn6NmzJ2PHjmX//v1EREQAcPbsWX788UduvfVWZ5d1R4JZuXJlupUdTp48yfbt251FAD8/P9q2bcvatWupX78+Xl5el7224wPcpZo2bUq5cuWYOHFiukZt06dPJzY2Nt1QQVfUqlWLnTt3ZuvYSyUkJDB79uwMQ2UrVaqUbojeleTG65eYmEjPnj1ZuHAhP/7441WHMF7KMcTQkYQL8usH9iGoCQkJudqgU4oe5f0r543MJCQksHLlSqpVq5Zu+7p167jpppuoUKECv//+e7pChIM78sarr77KqFGjeP7553nppZcue72ClvcvduTIEWbPnk2vXr0oUaJElo8rCu/bWX39QHlf0ivK+T2nQkND8fHxYeXKlRkeW7FiBVar9bKrTjksWbKEtLQ053uBK/khu7p3787zzz/PpEmTeOaZZ5zbJ06ciK+vL506dQJce36RkZH4+vrmWv5fvnw5R44cybC63uVyoiumT59OfHz8VaetPvvss+mmeYH9feTuu+/mgQce4M4773S+buXLl2fBggUcPHiQ8PBw5/4rVqwAcH5OaNGiBSEhIWzevDndHxZyU8+ePXnwwQf5+++/adq0KWAv1n/zzTc0bdrU+V518XtW69atnccnJiayZs2aTD/b7Nq1ixIlSjiLRgWFCjKZGD169FX3mTx5Mp9++il9+vShSZMmBAcHc+DAAb744gs2bdrEiy++mCEJbdy4McN8O4CqVas6l43LzOUqs64KCQnJdK5/SEgIKSkpGR5r3749S5YsSRfzk08+yeTJk+natSuvvPIK3t7ejB49moSEBEaNGuXcr1evXrz44osMGzaMAwcOcO2113L48GHefvtt4uPj0/2l9v3336dly5bceOONDBs2jEqVKnH27Fl27NjBr7/+ysKFC6/4vGw2G2+99Rb9+vVj6NCh3H333URFRfH000/ToUMHZ2J2mDNnDnFxcc4lMTdv3sz06dMB+/xWPz8/wL5SwyuvvEJ8fLxzW3bNnTuX+Ph4evToke1z5Mbr17t3b+bMmcNzzz1HiRIl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kBEREREREaew5LvLkhIyIuIalJARERERERGnsORbIWO0LHloqK+IVHCKciIiIiIi4hQ5Q33z22VJFTIiUsEpISMiIiIiIk6Rs+21Pb+hvkrIiEjFpoSMiIiIiIg4heWiFTI6VRGRik1RTkREREREnCKnZcl+/ra07ISMVRUyIlKxKSEjIiIiIiJOkW/LUoZalkTENSghIyIiIiIiTmHOOhvJ07JkU8uSiLgGRTkREREREXGK/CtktMuSiLgGJWRERERERMQp8h/qm92ypFMVEanYFOVERERERMQpzg/1vbBCxkNDfUWkglNCRkREREREnOLfLUsOh4M0m4b6iohrUEJGRERERESc4t8tS9nJGFDLkohUfIpyIiIiIiLiFDkJmaw8THa7EqhCRkQqPiVkRERERETEKbITMvasCpnsgb4Wswk3i05VRKRiU5QTERERERGnMJvyDvXN2fLaqtMUEan4FOlERERERMQpcipkshMytqyEjNqVRMQFKCEjIiIiIiJOkb3Lks2et2VJCRkRcQVKyIiIiIiIiFOYs85GMh15W5Y8tMOSiLgARToREREREXGKC1qWcmbIqEJGRCo+JWRERERERMQpsluWMh3/blnSaYqIVHyKdCIiIiIi4hTmrAoZhwMcDgdpGuorIi5ECRkREREREXGK7AoZMLa+zmlZUkJGRFyAEjIiIiIiIuIU2RUyYLQtqWVJRFyJIp2IiIiIiDiFJVdCxm7XUF8RcS1KyIiIiIiIiFPkaVnKVSHjoZYlEXEBSsiIiIiIiIhTmHOdjWTaHaTmDPXVaYqIVHyKdCIiIiIi4hS5K2TsGuorIi5GCRkREREREXEKS0FDfTVDRkRcgBIyIiIiIiLiFCaTiewiGbvdQVqGWpZExHUo0omIiIiIiNNYs6pkMh25Z8ioQkZEKj4lZERERERExGnMWSUy6w/FsvFwHKAKGRFxDVZnL0BERERERFxX9hyZMVM3AhDk407HukHOXJKISKlQQkZERERERJwm905LN7cN4eWBTans4+7EFYmIlA4lZERERERExGkGtKjB5qNxvDigCT0aVnX2ckRESo0SMiIiIiIi4jTv3NLS2UsQEXEKTcsSERERERERESllSsiIiIiIiIiIiJQyJWREREREREREREqZEjIiIiIiIiIiIqVMCRkRERERERERkVKmhIyIiIiIiIiISClTQkZEREREREREpJQpISMiIiIiIiIiUsqUkBERERERERERKWVKyIiIiIiIiIiIlDIlZERERERERERESpkSMiIiIiIiIiIipUwJGRERERERERGRUqaEjIiIiIiIiIhIKVNCRkRERERERESklCkhIyIiIiIiIiJSypSQEREREREREREpZUrIiIiIiIiIiIiUMiVkRERERERERERKmRIyIiIiIiIiIiKlTAkZEREREREREZFSpoSMiIiIiIiIiEgpU0JGRERERERERKSUKSEjIiIiIiIiIlLKrM54U4fDAUB8fLwz3l5ExCmyY152DHQlivsi4qoU+xX7RcT1FDX2OyUhk5CQAEBoaKgz3l5ExKkSEhIICAhw9jJKleK+iLg6xX4REddTWOw3OZyQrrfb7Rw/fhw/Pz9MJlNpv72IiFM4HA4SEhKoWbMmZrNrdYwq7ouIq1LsV+wXEddT1NjvlISMiIiIiIiIiIgrc600vYiIiIiIiIhIGaCEjIiIiIiIiIhIKVNCRkRERERERESklCkhIyIiIiIiIiJSypSQEREREREREREpZUrIiIiIiIiIiIiUMiVkpMI7ffo01atX580338y5bfXq1bi7uzNv3jwnrkxEREqKYr+IiOtR7JfyxuRwOBzOXoRISZs1axY33ngjK1asoHHjxrRp04aBAwfy0UcfOXtpIiJSQhT7RURcj2K/lCdKyIjLGD16NP/88w9XXXUVmzdvZu3atXh6ejp7WSIiUoIU+0VEXI9iv5QXSsiIy0hJSaF58+YcOXKEdevW0bJlS2cvSURESphiv4iI61Hsl/JCM2TEZezfv5/jx49jt9s5dOiQs5cjIiKlQLFfRMT1KPZLeaEKGXEJ6enpdOjQgdatW9O4cWPGjh3L1q1bqVatmrOXJiIiJUSxX0TE9Sj2S3mihIy4hGeeeYZffvmFzZs34+vrS+/evfHz82PmzJnOXpqIiJQQxX4REdej2C/liVqWpMJbtGgRH330EZMnT8bf3x+z2czkyZNZtmwZ48aNc/byRESkBCj2i4i4HsV+KW9UISMiIiIiIiIiUspUISMiIiIiIiIiUsqUkBERERERERERKWVKyIiIiIiIiIiIlDIlZERERERERERESpkSMiIiIiIiIiIipUwJGRERERERERGRUqaEjIiIiIiIiIhIKVNCRkRERERERESklCkhIyIiIiIiIiJSypSQEREREREREREpZUrIiIiIiIiIiIiUMiVkRERERERERERK2f8D3w/V/vYt1v8AAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 1400x500 with 3 Axes>"
]
},
"metadata": {
"filenames": {
"image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/week37_142_0.png"
}
},
"output_type": "display_data"
}
],
"source": [
"\n",
"\n",
"#print(__doc__)\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.model_selection import cross_val_score\n",
"\n",
"\n",
"def true_fun(X):\n",
" return np.cos(1.5 * np.pi * X)\n",
"\n",
"np.random.seed(0)\n",
"\n",
"n_samples = 30\n",
"degrees = [1, 4, 15]\n",
"\n",
"X = np.sort(np.random.rand(n_samples))\n",
"y = true_fun(X) + np.random.randn(n_samples) * 0.1\n",
"\n",
"plt.figure(figsize=(14, 5))\n",
"for i in range(len(degrees)):\n",
" ax = plt.subplot(1, len(degrees), i + 1)\n",
" plt.setp(ax, xticks=(), yticks=())\n",
"\n",
" polynomial_features = PolynomialFeatures(degree=degrees[i],\n",
" include_bias=False)\n",
" linear_regression = LinearRegression()\n",
" pipeline = Pipeline([(\"polynomial_features\", polynomial_features),\n",
" (\"linear_regression\", linear_regression)])\n",
" pipeline.fit(X[:, np.newaxis], y)\n",
"\n",
" # Evaluate the models using crossvalidation\n",
" scores = cross_val_score(pipeline, X[:, np.newaxis], y,\n",
" scoring=\"neg_mean_squared_error\", cv=10)\n",
"\n",
" X_test = np.linspace(0, 1, 100)\n",
" plt.plot(X_test, pipeline.predict(X_test[:, np.newaxis]), label=\"Model\")\n",
" plt.plot(X_test, true_fun(X_test), label=\"True function\")\n",
" plt.scatter(X, y, edgecolor='b', s=20, label=\"Samples\")\n",
" plt.xlabel(\"x\")\n",
" plt.ylabel(\"y\")\n",
" plt.xlim((0, 1))\n",
" plt.ylim((-2, 2))\n",
" plt.legend(loc=\"best\")\n",
" plt.title(\"Degree {}\\nMSE = {:.2e}(+/- {:.2e})\".format(\n",
" degrees[i], -scores.mean(), scores.std()))\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "3a9dffce",
"metadata": {
"editable": true
},
"source": [
"## Various steps in cross-validation\n",
"\n",
"When the repetitive splitting of the data set is done randomly,\n",
"samples may accidently end up in a fast majority of the splits in\n",
"either training or test set. Such samples may have an unbalanced\n",
"influence on either model building or prediction evaluation. To avoid\n",
"this $k$-fold cross-validation structures the data splitting. The\n",
"samples are divided into $k$ more or less equally sized exhaustive and\n",
"mutually exclusive subsets. In turn (at each split) one of these\n",
"subsets plays the role of the test set while the union of the\n",
"remaining subsets constitutes the training set. Such a splitting\n",
"warrants a balanced representation of each sample in both training and\n",
"test set over the splits. Still the division into the $k$ subsets\n",
"involves a degree of randomness. This may be fully excluded when\n",
"choosing $k=n$. This particular case is referred to as leave-one-out\n",
"cross-validation (LOOCV)."
]
},
{
"cell_type": "markdown",
"id": "2ee67263",
"metadata": {
"editable": true
},
"source": [
"## Cross-validation in brief\n",
"\n",
"For the various values of $k$\n",
"\n",
"1. shuffle the dataset randomly.\n",
"\n",
"2. Split the dataset into $k$ groups.\n",
"\n",
"3. For each unique group:\n",
"\n",
"a. Decide which group to use as set for test data\n",
"\n",
"b. Take the remaining groups as a training data set\n",
"\n",
"c. Fit a model on the training set and evaluate it on the test set\n",
"\n",
"d. Retain the evaluation score and discard the model\n",
"\n",
"5. Summarize the model using the sample of model evaluation scores"
]
},
{
"cell_type": "markdown",
"id": "c44868f2",
"metadata": {
"editable": true
},
"source": [
"## Code Example for Cross-validation and $k$-fold Cross-validation\n",
"\n",
"The code here uses Ridge regression with cross-validation (CV) resampling and $k$-fold CV in order to fit a specific polynomial."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "df0c5466",
"metadata": {
"collapsed": false,
"editable": true
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {
"filenames": {
"image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/week37_146_0.png"
}
},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.model_selection import KFold\n",
"from sklearn.linear_model import Ridge\n",
"from sklearn.model_selection import cross_val_score\n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"\n",
"# A seed just to ensure that the random numbers are the same for every run.\n",
"# Useful for eventual debugging.\n",
"np.random.seed(3155)\n",
"\n",
"# Generate the data.\n",
"nsamples = 100\n",
"x = np.random.randn(nsamples)\n",
"y = 3*x**2 + np.random.randn(nsamples)\n",
"\n",
"## Cross-validation on Ridge regression using KFold only\n",
"\n",
"# Decide degree on polynomial to fit\n",
"poly = PolynomialFeatures(degree = 6)\n",
"\n",
"# Decide which values of lambda to use\n",
"nlambdas = 500\n",
"lambdas = np.logspace(-3, 5, nlambdas)\n",
"\n",
"# Initialize a KFold instance\n",
"k = 5\n",
"kfold = KFold(n_splits = k)\n",
"\n",
"# Perform the cross-validation to estimate MSE\n",
"scores_KFold = np.zeros((nlambdas, k))\n",
"\n",
"i = 0\n",
"for lmb in lambdas:\n",
" ridge = Ridge(alpha = lmb)\n",
" j = 0\n",
" for train_inds, test_inds in kfold.split(x):\n",
" xtrain = x[train_inds]\n",
" ytrain = y[train_inds]\n",
"\n",
" xtest = x[test_inds]\n",
" ytest = y[test_inds]\n",
"\n",
" Xtrain = poly.fit_transform(xtrain[:, np.newaxis])\n",
" ridge.fit(Xtrain, ytrain[:, np.newaxis])\n",
"\n",
" Xtest = poly.fit_transform(xtest[:, np.newaxis])\n",
" ypred = ridge.predict(Xtest)\n",
"\n",
" scores_KFold[i,j] = np.sum((ypred - ytest[:, np.newaxis])**2)/np.size(ypred)\n",
"\n",
" j += 1\n",
" i += 1\n",
"\n",
"\n",
"estimated_mse_KFold = np.mean(scores_KFold, axis = 1)\n",
"\n",
"## Cross-validation using cross_val_score from sklearn along with KFold\n",
"\n",
"# kfold is an instance initialized above as:\n",
"# kfold = KFold(n_splits = k)\n",
"\n",
"estimated_mse_sklearn = np.zeros(nlambdas)\n",
"i = 0\n",
"for lmb in lambdas:\n",
" ridge = Ridge(alpha = lmb)\n",
"\n",
" X = poly.fit_transform(x[:, np.newaxis])\n",
" estimated_mse_folds = cross_val_score(ridge, X, y[:, np.newaxis], scoring='neg_mean_squared_error', cv=kfold)\n",
"\n",
" # cross_val_score return an array containing the estimated negative mse for every fold.\n",
" # we have to the the mean of every array in order to get an estimate of the mse of the model\n",
" estimated_mse_sklearn[i] = np.mean(-estimated_mse_folds)\n",
"\n",
" i += 1\n",
"\n",
"## Plot and compare the slightly different ways to perform cross-validation\n",
"\n",
"plt.figure()\n",
"\n",
"plt.plot(np.log10(lambdas), estimated_mse_sklearn, label = 'cross_val_score')\n",
"plt.plot(np.log10(lambdas), estimated_mse_KFold, 'r--', label = 'KFold')\n",
"\n",
"plt.xlabel('log10(lambda)')\n",
"plt.ylabel('mse')\n",
"\n",
"plt.legend()\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "5cbfeb1f",
"metadata": {
"editable": true
},
"source": [
"## More examples on bootstrap and cross-validation and errors"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "34028f77",
"metadata": {
"collapsed": false,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Degree of polynomial: 1\n",
"Mean squared error on training data: 446033.51374050\n",
"Mean squared error on test data: 455173.80460179\n",
"Degree of polynomial: 2\n",
"Mean squared error on training data: 114550.54637219\n",
"Mean squared error on test data: 129963.83146596\n",
"Degree of polynomial: 3\n",
"Mean squared error on training data: 9054.61775176\n",
"Mean squared error on test data: 10572.87627342\n",
"Degree of polynomial: 4\n",
"Mean squared error on training data: 302.15313054\n",
"Mean squared error on test data: 433.26292364\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Degree of polynomial: 5\n",
"Mean squared error on training data: 3.64316192\n",
"Mean squared error on test data: 7.23528337\n",
"Degree of polynomial: 6\n",
"Mean squared error on training data: 3.56589683\n",
"Mean squared error on test data: 10.50427787\n",
"Degree of polynomial: 7\n",
"Mean squared error on training data: 0.47313680\n",
"Mean squared error on test data: 1.53738247\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Degree of polynomial: 8\n",
"Mean squared error on training data: 0.04926746\n",
"Mean squared error on test data: 0.14629156\n",
"Degree of polynomial: 9\n",
"Mean squared error on training data: 0.02546675\n",
"Mean squared error on test data: 0.11202337\n",
"Degree of polynomial: 10\n",
"Mean squared error on training data: 0.02424794\n",
"Mean squared error on test data: 0.22467274\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Degree of polynomial: 11\n",
"Mean squared error on training data: 0.01594452\n",
"Mean squared error on test data: 1.07641937\n",
"Degree of polynomial: 12\n",
"Mean squared error on training data: 0.00805074\n",
"Mean squared error on test data: 0.04295757\n",
"Degree of polynomial: 13\n",
"Mean squared error on training data: 0.00781918\n",
"Mean squared error on test data: 0.56965674\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Degree of polynomial: 14\n",
"Mean squared error on training data: 0.00465099\n",
"Mean squared error on test data: 0.28443039\n",
"Degree of polynomial: 15\n",
"Mean squared error on training data: 0.00420072\n",
"Mean squared error on test data: 568.47051432\n",
"Degree of polynomial: 16\n",
"Mean squared error on training data: 0.00325450\n",
"Mean squared error on test data: 48.97630233\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Degree of polynomial: 17\n",
"Mean squared error on training data: 0.00242954\n",
"Mean squared error on test data: 2.52780600\n",
"Degree of polynomial: 18\n",
"Mean squared error on training data: 0.00219195\n",
"Mean squared error on test data: 429.25695398\n",
"Degree of polynomial: 19\n",
"Mean squared error on training data: 0.00154853\n",
"Mean squared error on test data: 239.97065359\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Degree of polynomial: 20\n",
"Mean squared error on training data: 0.00140846\n",
"Mean squared error on test data: 1350.24493666\n",
"Degree of polynomial: 21\n",
"Mean squared error on training data: 0.00119688\n",
"Mean squared error on test data: 1840.50530832\n",
"Degree of polynomial: 22\n",
"Mean squared error on training data: 0.00092898\n",
"Mean squared error on test data: 1184.60929685\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Degree of polynomial: 23\n",
"Mean squared error on training data: 0.00089193\n",
"Mean squared error on test data: 3892.17483760\n",
"Degree of polynomial: 24\n",
"Mean squared error on training data: 0.00083355\n",
"Mean squared error on test data: 1332.46736215\n",
"Degree of polynomial: 25\n",
"Mean squared error on training data: 0.00079904\n",
"Mean squared error on test data: 7577.76690383\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Degree of polynomial: 26\n",
"Mean squared error on training data: 0.00075590\n",
"Mean squared error on test data: 1079.36895644\n",
"Degree of polynomial: 27\n",
"Mean squared error on training data: 0.00068091\n",
"Mean squared error on test data: 3207.25343155\n",
"Degree of polynomial: 28\n",
"Mean squared error on training data: 0.00063362\n",
"Mean squared error on test data: 674.79633065\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Degree of polynomial: 29\n",
"Mean squared error on training data: 0.00063866\n",
"Mean squared error on test data: 3099.60342978\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/td/3yk470mj5p931p9dtkk0y6jw0000gn/T/ipykernel_6729/626635268.py:73: RuntimeWarning: divide by zero encountered in log10\n",
" plt.plot(polynomial, np.log10(trainingerror), label='Training Error')\n",
"/var/folders/td/3yk470mj5p931p9dtkk0y6jw0000gn/T/ipykernel_6729/626635268.py:74: RuntimeWarning: divide by zero encountered in log10\n",
" plt.plot(polynomial, np.log10(testerror), label='Test Error')\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAGyCAYAAADptr7VAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB0J0lEQVR4nO3dd3xUVfrH8c/MpHdaChB67x0BaYKAFdauoGDvir2t5WdZLGtZdUVXXeyCK9gbIJ2AFGnSew+hppI2c39/3EwgQPokd2byfb9e85o7d255Mo7kyTnPOcdmGIaBiIiIiB+xWx2AiIiIiKcpwRERERG/owRHRERE/I4SHBEREfE7SnBERETE7yjBEREREb+jBEdERET8jhIcERER8TtKcERERMTvBFgdQHVyuVzs27ePyMhIbDab1eGIiIhIGRiGQXp6OvXr18duL1vbjE8lOHv37uWRRx7hl19+4fjx47Rq1YoPP/yQ7t27l+n8ffv2kZiYWMVRioiISFXYvXs3DRs2LNOxPpPgHD16lH79+jF48GB++eUXYmNj2bp1KzExMWW+RmRkJGB+QFFRUVUUqYiIiHhSWloaiYmJhb/Hy8JnEpyXXnqJxMREJk2aVLivSZMm5bqGu1sqKipKCY6IiIiPKU95ic8UGX///ff06NGDyy+/nNjYWLp27cr7779f4jk5OTmkpaUVeYiIiIj/85kEZ9u2bUycOJGWLVvy22+/cdttt3HPPffwySefFHvOhAkTiI6OLnyo/kZERKRmsBmGYVgdRFkEBQXRo0cPkpKSCvfdc889LF26lEWLFp3xnJycHHJycgpfu/vwUlNT1UUlIiLiI9LS0oiOji7X72+fqcFJSEigXbt2Rfa1bduWqVOnFntOcHAwwcHBVR2aiIicwul0kpeXZ3UY4iMCAwNxOBwevabPJDj9+vVj48aNRfZt2rSJxo0bWxSRiIicyjAMkpOTOXbsmNWhiI+JiYkhPj7eY/PU+UyCc99999G3b1/+8Y9/cMUVV7BkyRL+85//8J///Mfq0EREpIA7uYmNjSUsLEyTqkqpDMMgKyuLlJQUwOyx8QSfSXB69uzJN998w2OPPcazzz5L06ZNeeONNxg9erTVoYmICGa3lDu5qVOnjtXhiA8JDQ0FICUlhdjYWI90V/lMggNw4YUXcuGFF1odhoiInIG75iYsLMziSMQXub83eXl5HklwfGaYuIiI+AZ1S0lFePp7owRHRERE/I4SHBERkSowaNAgxo8fX+bjd+zYgc1mY+XKlVUWU02iBEdERGo0m81W4mPcuHEVuu60adN47rnnynx8YmIi+/fvp0OHDhW6X1m5E6kzPRYvXlyl965OPlVk7LWc+WRvnEFIu/OsjkRERMpp//79hdtTpkzhqaeeKjLvmnuEj1teXh6BgYGlXrd27drlisPhcBAfH1+ucypj5syZtG/fvsi+4ka/Ffczl/Wz8NR55aEWnEpy5eWw7+3hhHx1FYeW/M/qcEREpJzi4+MLH9HR0dhstsLX2dnZxMTE8NVXXzFo0CBCQkL47LPPOHz4MFdffTUNGzYkLCyMjh078uWXXxa57qldVE2aNOEf//gHN9xwA5GRkTRq1KjIXG6ndlHNmTMHm83G77//To8ePQgLC6Nv376nTXr7/PPPExsbS2RkJDfddBOPPvooXbp0KfXnrlOnTpGfPT4+vjDpeOaZZ+jSpQv//e9/adasGcHBwRiGgc1m491332XkyJGEh4fz/PPPAzBx4kSaN29OUFAQrVu35tNPPy1yr+LOq0pKcCrJZQ9kWba5iGfYL3eTf2BjKWeIiNQchmGQlZtvycOTSy0+8sgj3HPPPaxfv57hw4eTnZ1N9+7d+fHHH/nrr7+45ZZbuPbaa/njjz9KvM6rr75Kjx49WLFiBXfccQe33347GzZsKPGcJ554gldffZVly5YREBDADTfcUPje559/zgsvvMBLL73E8uXLadSoERMnTvTIz7xlyxa++uorpk6dWqQu6Omnn2bkyJGsWbOGG264gW+++YZ7772XBx54gL/++otbb72V66+/ntmzZxe53qnnVTV1UVVSgMNO1xv+xfK3N9Cd9Rz6+Crq3jsfgiOsDk1ExHLH85y0e+o3S+697tnhhAV55tfc+PHjueSSS4rse/DBBwu37777bn799Vf+97//0bt372Kvc/7553PHHXcAZtL0+uuvM2fOHNq0aVPsOS+88AIDBw4E4NFHH+WCCy4gOzubkJAQ3nrrLW688Uauv/56AJ566immT59ORkZGqT9T3759sduLtnOkpqYWzkGTm5vLp59+Sr169Yocc8011xRJUK655hrGjRtX+HPdf//9LF68mH/+858MHjy42POqmlpwPCCxXjQHz3uXA0YMdbO2cfjLW8E3FmkXEZEy6NGjR5HXTqeTF154gU6dOlGnTh0iIiKYPn06u3btKvE6nTp1Ktx2d4W5lygoyznuZQzc52zcuJFevXoVOf7U18WZMmUKK1euLPI4eYK9xo0bn5bcwOmfxfr16+nXr1+Rff369WP9+vUlnlfV1ILjISPO6sJbG57jtu3jqbPjR44v+Deh/e+yOiwREUuFBjpY9+xwy+7tKeHh4UVev/rqq7z++uu88cYbdOzYkfDwcMaPH09ubm6J1zm1sNZms+Fyucp8jnsyvJPPOXWCvLJ2zSUmJtKiRYti3z/1Zy5p/5liOHVfcderKmrB8aDrr76GiUHjAAj6/SmMnUnWBiQiYjGbzUZYUIAlj6qcUXn+/PmMHDmSMWPG0LlzZ5o1a8bmzZur7H7Fad26NUuWLCmyb9myZdUaQ9u2bVmwYEGRfUlJSbRt27Za4ziVWnA8KCI4gAHXPskP76/jIscijn9xLaF3LYTI6hv2JyIiVa9FixZMnTqVpKQkatWqxWuvvUZycnK1/1K/++67ufnmm+nRowd9+/ZlypQprF69mmbNmpV67uHDh0lOTi6yLyYmhpCQkHLF8NBDD3HFFVfQrVs3hgwZwg8//MC0adOYOXNmua7jaWrB8bAujWqxf+DLbHQ1JDTnENlfXgfOPKvDEhERD3ryySfp1q0bw4cPZ9CgQcTHxzNq1Khqj2P06NE89thjPPjgg3Tr1o3t27czbty4MiUpQ4cOJSEhocjj22+/LXcMo0aN4l//+hevvPIK7du357333mPSpEkMGjSo/D+QB9kMT46j83JpaWlER0eTmppKVFRUld3H6TJ48N2vefbA3UTajuPsfSeO8/5RZfcTEfEG2dnZbN++naZNm5a7FUA859xzzyU+Pv60uWi8XUnfn4r8/lYLThVw2G08PPpCnrLfab7+49/w1zSLoxIREX+TlZXFa6+9xtq1a9mwYQNPP/00M2fOZOzYsVaHZjklOFUkITqU4ZfezMT8iwBwfnsnpJQ8mZOIiEh52Gw2fv75Z/r370/37t354YcfmDp1KkOHDrU6NMupyLgKjegQz9+7PUDSiq30ZR3OyaNx3DIbQqque0xERGqO0NBQy4t5vZVacKrYExd24tWoR9hv1MZxZAvGd3dqEkAREZEqpgSnioUGOXh29GDucd5HruHAtv57SHrL6rBERET8mhKcatC+fjQjRlzEs/nXAWDMfAa2z7c2KBERET+mBKeaXN+3CbubXc1U59nYDCfG19dD2j6rwxIREfFLSnCqid1u459XdOG1oNtZ72qELfMgfDUW8ktet0RERETKTwlONaoXGczzl/fitrzxpBlhsGcJTP+71WGJiIj4HSU41Wxwm1jO6XsW9+Xdbu5Y8h6s/sraoERERPyMEhwLPDKiDXtjB/FW/igAjB/uhQNrrQ1KRKSGstlsJT7GjRtX4Ws3adKEN954o0zHneneL774YoXvXdNpoj8LhAQ6eOvqrlz81hV0dm5lAGtgyhi4ZQ6ERFsdnohIjbJ///7C7SlTpvDUU0+xcePGwn2hoaHVEsezzz7LzTffXGRfZGTkGY81DAOn00lAQNFf47m5uQQFBZX73hU9z5upBcciLeMieeLCDtybdyd7jbpwZBssfNPqsEREapz4+PjCR3R0NDabrci+efPm0b17d0JCQmjWrBn/93//R35+fuH5zzzzDI0aNSI4OJj69etzzz33ADBo0CB27tzJfffdV9giU5LIyMgi942Pjyc8PByAOXPmYLPZ+O233+jRowfBwcHMnz+fQYMGcdddd3H//fdTt25dzj33XADmzp1Lr169CA4OJiEhgUcffbRIzMWd50/UgmOh0b0bMXfTQf6x4Rr+HfQmrhWfYR/0GDj0n0VE/IRhQF6WNfcODINSkorS/Pbbb4wZM4Y333yT/v37s3XrVm655RYAnn76ab7++mtef/11Jk+eTPv27UlOTmbVqlUATJs2jc6dO3PLLbec1jJTUQ8//DD//Oc/adasGTExMQB8/PHH3H777SxcuBDDMNi7dy/nn38+48aN45NPPmHDhg3cfPPNhISE8MwzzxRe69Tz/I1+k1rIZrPx0qWduPiNgxzOnUSdjGTY+ju0Gm51aCIinpGXBf+ob829H98HQeGVusQLL7zAo48+Wrg6d7NmzXjuued4+OGHefrpp9m1axfx8fEMHTqUwMBAGjVqRK9evQCoXbs2DoejsGWmNI888gh//3vRkbU//vgjgwYNKnz97LPPntba0qJFC15++eXC10888QSJiYm8/fbb2Gw22rRpw759+3jkkUd46qmnsNvtZzzP36iLymK1w4MYP6Ij3zjPBsBY/rHFEYmIiNvy5ct59tlniYiIKHzcfPPN7N+/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FvEzgwcPZuLEiQQGBlK/fn0CAwMB2L9/PwA2m63I8YZhnLbvZDfddBNvv/02jz76KJMmTeL6668/7Xj3PU6+vsvlKvb6xhm6mc50jZKue6qHHnqI3377jX/+85+0aNGC0NBQLrvsMnJzc4v92crLfe+ffvqJBg0aFHkvODgYKPvPGxoaWuQ4l8uFw+Fg+fLlOByOIsdGREQUHnPrrbdyzz33nHa9Ro0aVeAnEvFfSnBE/Ex4eDgtWrQ4bX+LFi0ICgpiwYIFXHPNNQDk5eWxbNkyxo8fX+z1xowZw8MPP8ybb77J2rVrGTt2bLniadeuHQsWLCiyLykpiVatWp32i7wy5s+fz7hx4/jb3/4GmDU5O3bsKPP50dHRJCQksHjx4sIWqvz8fJYvX063bt0ACguCd+3axcCBA894nTZt2vDzzz8X2XdycXRxunbtitPpJCUlhf79+5/xmG7durF27doz/vcVkaKU4IjUEOHh4dx+++089NBD1K5dm0aNGvHyyy+TlZXFjTfeWOx5tWrV4pJLLuGhhx5i2LBhNGzYsFz3feCBB+jZsyfPPfccV155JYsWLeLtt9/mnXfeqeyPVESLFi2YNm0aF110ETabjSeffLLY1p7i3Hvvvbz44ou0bNmStm3b8tprrxWZ9DAyMpIHH3yQ++67D5fLxdlnn01aWhpJSUlEREQwduxYbr31Vl577TUeeeQRbrzxRlauXFlYUF1SS1mrVq0YPXo01113Ha+++ipdu3bl0KFDzJo1i44dO3L++efzyCOPcNZZZ3HnnXdy8803Ex4ezvr165kxYwZvvfVWRT42Eb+lGhyRGuTFF1/k0ksv5dprr6Vbt25s2bKF3377jVq1apV43o033khubi433HBDue/ZrVs3vvrqKyZPnkyHDh146qmnePbZZxk3blwFf4oze/3116lVqxZ9+/bloosuYvjw4YUtL2X1wAMPcN111zFu3Dj69OlDZGRkYYuQ23PPPcdTTz3FhAkTaNu2LcOHD+eHH36gadOmADRt2pSvv/6aadOm0alTJyZOnFg4isrdjVWcSZMmcd111/HAAw/QunVrLr74Yv744w8SExMBs05p7ty5bN68mf79+9O1a1eefPLJwronETnBZpypc1hE5CSff/459957L/v27SMoKMjqcHzOCy+8wLvvvsvu3butDkWkxlAXlYgUKysri+3btzNhwgRuvfVWJTdl9M4779CzZ0/q1KnDwoULeeWVVzRXjUg1UxeViBTr5ZdfpkuXLsTFxfHYY49ZHY7P2Lx5MyNHjqRdu3Y899xzPPDAAzzzzDNWhyVSo6iLSkRERPyOWnBERETE7yjBEREREb+jBEdERET8jhIcERER8TtKcERERMTvKMERERERv6MER0RERPyOEhwRERHxO/8PtbEWwDtWn+UAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {
"filenames": {
"image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/week37_148_11.png"
}
},
"output_type": "display_data"
}
],
"source": [
"# Common imports\n",
"import os\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.linear_model import LinearRegression, Ridge, Lasso\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.utils import resample\n",
"from sklearn.metrics import mean_squared_error\n",
"# Where to save the figures and data files\n",
"PROJECT_ROOT_DIR = \"Results\"\n",
"FIGURE_ID = \"Results/FigureFiles\"\n",
"DATA_ID = \"DataFiles/\"\n",
"\n",
"if not os.path.exists(PROJECT_ROOT_DIR):\n",
" os.mkdir(PROJECT_ROOT_DIR)\n",
"\n",
"if not os.path.exists(FIGURE_ID):\n",
" os.makedirs(FIGURE_ID)\n",
"\n",
"if not os.path.exists(DATA_ID):\n",
" os.makedirs(DATA_ID)\n",
"\n",
"def image_path(fig_id):\n",
" return os.path.join(FIGURE_ID, fig_id)\n",
"\n",
"def data_path(dat_id):\n",
" return os.path.join(DATA_ID, dat_id)\n",
"\n",
"def save_fig(fig_id):\n",
" plt.savefig(image_path(fig_id) + \".png\", format='png')\n",
"\n",
"infile = open(data_path(\"EoS.csv\"),'r')\n",
"\n",
"# Read the EoS data as csv file and organize the data into two arrays with density and energies\n",
"EoS = pd.read_csv(infile, names=('Density', 'Energy'))\n",
"EoS['Energy'] = pd.to_numeric(EoS['Energy'], errors='coerce')\n",
"EoS = EoS.dropna()\n",
"Energies = EoS['Energy']\n",
"Density = EoS['Density']\n",
"# The design matrix now as function of various polytrops\n",
"\n",
"Maxpolydegree = 30\n",
"X = np.zeros((len(Density),Maxpolydegree))\n",
"X[:,0] = 1.0\n",
"testerror = np.zeros(Maxpolydegree)\n",
"trainingerror = np.zeros(Maxpolydegree)\n",
"polynomial = np.zeros(Maxpolydegree)\n",
"\n",
"trials = 100\n",
"for polydegree in range(1, Maxpolydegree):\n",
" polynomial[polydegree] = polydegree\n",
" for degree in range(polydegree):\n",
" X[:,degree] = Density**(degree/3.0)\n",
"\n",
"# loop over trials in order to estimate the expectation value of the MSE\n",
" testerror[polydegree] = 0.0\n",
" trainingerror[polydegree] = 0.0\n",
" for samples in range(trials):\n",
" x_train, x_test, y_train, y_test = train_test_split(X, Energies, test_size=0.2)\n",
" model = LinearRegression(fit_intercept=False).fit(x_train, y_train)\n",
" ypred = model.predict(x_train)\n",
" ytilde = model.predict(x_test)\n",
" testerror[polydegree] += mean_squared_error(y_test, ytilde)\n",
" trainingerror[polydegree] += mean_squared_error(y_train, ypred) \n",
"\n",
" testerror[polydegree] /= trials\n",
" trainingerror[polydegree] /= trials\n",
" print(\"Degree of polynomial: %3d\"% polynomial[polydegree])\n",
" print(\"Mean squared error on training data: %.8f\" % trainingerror[polydegree])\n",
" print(\"Mean squared error on test data: %.8f\" % testerror[polydegree])\n",
"\n",
"plt.plot(polynomial, np.log10(trainingerror), label='Training Error')\n",
"plt.plot(polynomial, np.log10(testerror), label='Test Error')\n",
"plt.xlabel('Polynomial degree')\n",
"plt.ylabel('log10[MSE]')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "9c64885c",
"metadata": {
"editable": true
},
"source": [
"Note that we kept the intercept column in the fitting here. This means that we need to set the **intercept** in the call to the **Scikit-Learn** function as **False**. Alternatively, we could have set up the design matrix $X$ without the first column of ones."
]
},
{
"cell_type": "markdown",
"id": "ff70b35f",
"metadata": {
"editable": true
},
"source": [
"## The same example but now with cross-validation\n",
"\n",
"In this example we keep the intercept column again but add cross-validation in order to estimate the best possible value of the means squared error."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "e21b19fd",
"metadata": {
"collapsed": false,
"editable": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/td/3yk470mj5p931p9dtkk0y6jw0000gn/T/ipykernel_6729/3817475779.py:63: RuntimeWarning: divide by zero encountered in log10\n",
" plt.plot(polynomial, np.log10(estimated_mse_sklearn), label='Test Error')\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {
"filenames": {
"image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/week37_151_1.png"
}
},
"output_type": "display_data"
}
],
"source": [
"# Common imports\n",
"import os\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.linear_model import LinearRegression, Ridge, Lasso\n",
"from sklearn.metrics import mean_squared_error\n",
"from sklearn.model_selection import KFold\n",
"from sklearn.model_selection import cross_val_score\n",
"\n",
"\n",
"# Where to save the figures and data files\n",
"PROJECT_ROOT_DIR = \"Results\"\n",
"FIGURE_ID = \"Results/FigureFiles\"\n",
"DATA_ID = \"DataFiles/\"\n",
"\n",
"if not os.path.exists(PROJECT_ROOT_DIR):\n",
" os.mkdir(PROJECT_ROOT_DIR)\n",
"\n",
"if not os.path.exists(FIGURE_ID):\n",
" os.makedirs(FIGURE_ID)\n",
"\n",
"if not os.path.exists(DATA_ID):\n",
" os.makedirs(DATA_ID)\n",
"\n",
"def image_path(fig_id):\n",
" return os.path.join(FIGURE_ID, fig_id)\n",
"\n",
"def data_path(dat_id):\n",
" return os.path.join(DATA_ID, dat_id)\n",
"\n",
"def save_fig(fig_id):\n",
" plt.savefig(image_path(fig_id) + \".png\", format='png')\n",
"\n",
"infile = open(data_path(\"EoS.csv\"),'r')\n",
"\n",
"# Read the EoS data as csv file and organize the data into two arrays with density and energies\n",
"EoS = pd.read_csv(infile, names=('Density', 'Energy'))\n",
"EoS['Energy'] = pd.to_numeric(EoS['Energy'], errors='coerce')\n",
"EoS = EoS.dropna()\n",
"Energies = EoS['Energy']\n",
"Density = EoS['Density']\n",
"# The design matrix now as function of various polytrops\n",
"\n",
"Maxpolydegree = 30\n",
"X = np.zeros((len(Density),Maxpolydegree))\n",
"X[:,0] = 1.0\n",
"estimated_mse_sklearn = np.zeros(Maxpolydegree)\n",
"polynomial = np.zeros(Maxpolydegree)\n",
"k =5\n",
"kfold = KFold(n_splits = k)\n",
"\n",
"for polydegree in range(1, Maxpolydegree):\n",
" polynomial[polydegree] = polydegree\n",
" for degree in range(polydegree):\n",
" X[:,degree] = Density**(degree/3.0)\n",
" OLS = LinearRegression(fit_intercept=False)\n",
"# loop over trials in order to estimate the expectation value of the MSE\n",
" estimated_mse_folds = cross_val_score(OLS, X, Energies, scoring='neg_mean_squared_error', cv=kfold)\n",
"#[:, np.newaxis]\n",
" estimated_mse_sklearn[polydegree] = np.mean(-estimated_mse_folds)\n",
"\n",
"plt.plot(polynomial, np.log10(estimated_mse_sklearn), label='Test Error')\n",
"plt.xlabel('Polynomial degree')\n",
"plt.ylabel('log10[MSE]')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "cc43a51c",
"metadata": {
"editable": true
},
"source": [
"## Material for the lab sessions"
]
},
{
"cell_type": "markdown",
"id": "af5687ed",
"metadata": {
"editable": true
},
"source": [
"## Linking the regression analysis with a statistical interpretation\n",
"\n",
"We will now couple the discussions of ordinary least squares, Ridge\n",
"and Lasso regression with a statistical interpretation, that is we\n",
"move from a linear algebra analysis to a statistical analysis. In\n",
"particular, we will focus on what the regularization terms can result\n",
"in. We will amongst other things show that the regularization\n",
"parameter can reduce considerably the variance of the parameters\n",
"$\\beta$.\n",
"\n",
"The\n",
"advantage of doing linear regression is that we actually end up with\n",
"analytical expressions for several statistical quantities. \n",
"Standard least squares and Ridge regression allow us to\n",
"derive quantities like the variance and other expectation values in a\n",
"rather straightforward way.\n",
"\n",
"It is assumed that $\\varepsilon_i\n",
"\\sim \\mathcal{N}(0, \\sigma^2)$ and the $\\varepsilon_{i}$ are\n",
"independent, i.e.:"
]
},
{
"cell_type": "markdown",
"id": "47c3811a",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\begin{align*} \n",
"\\mbox{Cov}(\\varepsilon_{i_1},\n",
"\\varepsilon_{i_2}) & = \\left\\{ \\begin{array}{lcc} \\sigma^2 & \\mbox{if}\n",
"& i_1 = i_2, \\\\ 0 & \\mbox{if} & i_1 \\not= i_2. \\end{array} \\right.\n",
"\\end{align*}\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "980dac66",
"metadata": {
"editable": true
},
"source": [
"The randomness of $\\varepsilon_i$ implies that\n",
"$\\mathbf{y}_i$ is also a random variable. In particular,\n",
"$\\mathbf{y}_i$ is normally distributed, because $\\varepsilon_i \\sim\n",
"\\mathcal{N}(0, \\sigma^2)$ and $\\mathbf{X}_{i,\\ast} \\, \\boldsymbol{\\beta}$ is a\n",
"non-random scalar. To specify the parameters of the distribution of\n",
"$\\mathbf{y}_i$ we need to calculate its first two moments. \n",
"\n",
"Recall that $\\boldsymbol{X}$ is a matrix of dimensionality $n\\times p$. The\n",
"notation above $\\mathbf{X}_{i,\\ast}$ means that we are looking at the\n",
"row number $i$ and perform a sum over all values $p$."
]
},
{
"cell_type": "markdown",
"id": "be67d8c5",
"metadata": {
"editable": true
},
"source": [
"## Assumptions made\n",
"\n",
"The assumption we have made here can be summarized as (and this is going to be useful when we discuss the bias-variance trade off)\n",
"that there exists a function $f(\\boldsymbol{x})$ and a normal distributed error $\\boldsymbol{\\varepsilon}\\sim \\mathcal{N}(0, \\sigma^2)$\n",
"which describe our data"
]
},
{
"cell_type": "markdown",
"id": "5133bf97",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\boldsymbol{y} = f(\\boldsymbol{x})+\\boldsymbol{\\varepsilon}\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "b76cb41b",
"metadata": {
"editable": true
},
"source": [
"We approximate this function with our model from the solution of the linear regression equations, that is our\n",
"function $f$ is approximated by $\\boldsymbol{\\tilde{y}}$ where we want to minimize $(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}})^2$, our MSE, with"
]
},
{
"cell_type": "markdown",
"id": "b6e9e9ce",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\boldsymbol{\\tilde{y}} = \\boldsymbol{X}\\boldsymbol{\\beta}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "53479926",
"metadata": {
"editable": true
},
"source": [
"## Expectation value and variance\n",
"\n",
"We can calculate the expectation value of $\\boldsymbol{y}$ for a given element $i$"
]
},
{
"cell_type": "markdown",
"id": "1929fd98",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\begin{align*} \n",
"\\mathbb{E}(y_i) & =\n",
"\\mathbb{E}(\\mathbf{X}_{i, \\ast} \\, \\boldsymbol{\\beta}) + \\mathbb{E}(\\varepsilon_i)\n",
"\\, \\, \\, = \\, \\, \\, \\mathbf{X}_{i, \\ast} \\, \\beta, \n",
"\\end{align*}\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "18b53cb3",
"metadata": {
"editable": true
},
"source": [
"while\n",
"its variance is"
]
},
{
"cell_type": "markdown",
"id": "a57528a8",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\begin{align*} \\mbox{Var}(y_i) & = \\mathbb{E} \\{ [y_i\n",
"- \\mathbb{E}(y_i)]^2 \\} \\, \\, \\, = \\, \\, \\, \\mathbb{E} ( y_i^2 ) -\n",
"[\\mathbb{E}(y_i)]^2 \\\\ & = \\mathbb{E} [ ( \\mathbf{X}_{i, \\ast} \\,\n",
"\\beta + \\varepsilon_i )^2] - ( \\mathbf{X}_{i, \\ast} \\, \\boldsymbol{\\beta})^2 \\\\ &\n",
"= \\mathbb{E} [ ( \\mathbf{X}_{i, \\ast} \\, \\boldsymbol{\\beta})^2 + 2 \\varepsilon_i\n",
"\\mathbf{X}_{i, \\ast} \\, \\boldsymbol{\\beta} + \\varepsilon_i^2 ] - ( \\mathbf{X}_{i,\n",
"\\ast} \\, \\beta)^2 \\\\ & = ( \\mathbf{X}_{i, \\ast} \\, \\boldsymbol{\\beta})^2 + 2\n",
"\\mathbb{E}(\\varepsilon_i) \\mathbf{X}_{i, \\ast} \\, \\boldsymbol{\\beta} +\n",
"\\mathbb{E}(\\varepsilon_i^2 ) - ( \\mathbf{X}_{i, \\ast} \\, \\boldsymbol{\\beta})^2 \n",
"\\\\ & = \\mathbb{E}(\\varepsilon_i^2 ) \\, \\, \\, = \\, \\, \\,\n",
"\\mbox{Var}(\\varepsilon_i) \\, \\, \\, = \\, \\, \\, \\sigma^2. \n",
"\\end{align*}\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "b5e5c863",
"metadata": {
"editable": true
},
"source": [
"Hence, $y_i \\sim \\mathcal{N}( \\mathbf{X}_{i, \\ast} \\, \\boldsymbol{\\beta}, \\sigma^2)$, that is $\\boldsymbol{y}$ follows a normal distribution with \n",
"mean value $\\boldsymbol{X}\\boldsymbol{\\beta}$ and variance $\\sigma^2$ (not be confused with the singular values of the SVD)."
]
},
{
"cell_type": "markdown",
"id": "13fe1b50",
"metadata": {
"editable": true
},
"source": [
"## Expectation value and variance for $\\boldsymbol{\\beta}$\n",
"\n",
"With the OLS expressions for the optimal parameters $\\boldsymbol{\\hat{\\beta}}$ we can evaluate the expectation value"
]
},
{
"cell_type": "markdown",
"id": "22327251",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\mathbb{E}(\\boldsymbol{\\hat{\\beta}}) = \\mathbb{E}[ (\\mathbf{X}^{\\top} \\mathbf{X})^{-1}\\mathbf{X}^{T} \\mathbf{Y}]=(\\mathbf{X}^{T} \\mathbf{X})^{-1}\\mathbf{X}^{T} \\mathbb{E}[ \\mathbf{Y}]=(\\mathbf{X}^{T} \\mathbf{X})^{-1} \\mathbf{X}^{T}\\mathbf{X}\\boldsymbol{\\beta}=\\boldsymbol{\\beta}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "f7875671",
"metadata": {
"editable": true
},
"source": [
"This means that the estimator of the regression parameters is unbiased.\n",
"\n",
"We can also calculate the variance\n",
"\n",
"The variance of the optimal value $\\boldsymbol{\\hat{\\beta}}$ is"
]
},
{
"cell_type": "markdown",
"id": "584d9150",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\begin{eqnarray*}\n",
"\\mbox{Var}(\\boldsymbol{\\hat{\\beta}}) & = & \\mathbb{E} \\{ [\\boldsymbol{\\beta} - \\mathbb{E}(\\boldsymbol{\\beta})] [\\boldsymbol{\\beta} - \\mathbb{E}(\\boldsymbol{\\beta})]^{T} \\}\n",
"\\\\\n",
"& = & \\mathbb{E} \\{ [(\\mathbf{X}^{T} \\mathbf{X})^{-1} \\, \\mathbf{X}^{T} \\mathbf{y} - \\boldsymbol{\\beta}] \\, [(\\mathbf{X}^{T} \\mathbf{X})^{-1} \\, \\mathbf{X}^{T} \\mathbf{y} - \\boldsymbol{\\beta}]^{T} \\}\n",
"\\\\\n",
"% & = & \\mathbb{E} \\{ [(\\mathbf{X}^{T} \\mathbf{X})^{-1} \\, \\mathbf{X}^{T} \\mathbf{y}] \\, [(\\mathbf{X}^{T} \\mathbf{X})^{-1} \\, \\mathbf{X}^{T} \\mathbf{y}]^{T} \\} - \\boldsymbol{\\beta} \\, \\boldsymbol{\\beta}^{T}\n",
"% \\\\\n",
"% & = & \\mathbb{E} \\{ (\\mathbf{X}^{T} \\mathbf{X})^{-1} \\, \\mathbf{X}^{T} \\mathbf{y} \\, \\mathbf{y}^{T} \\, \\mathbf{X} \\, (\\mathbf{X}^{T} \\mathbf{X})^{-1} \\} - \\boldsymbol{\\beta} \\, \\boldsymbol{\\beta}^{T}\n",
"% \\\\\n",
"& = & (\\mathbf{X}^{T} \\mathbf{X})^{-1} \\, \\mathbf{X}^{T} \\, \\mathbb{E} \\{ \\mathbf{y} \\, \\mathbf{y}^{T} \\} \\, \\mathbf{X} \\, (\\mathbf{X}^{T} \\mathbf{X})^{-1} - \\boldsymbol{\\beta} \\, \\boldsymbol{\\beta}^{T}\n",
"\\\\\n",
"& = & (\\mathbf{X}^{T} \\mathbf{X})^{-1} \\, \\mathbf{X}^{T} \\, \\{ \\mathbf{X} \\, \\boldsymbol{\\beta} \\, \\boldsymbol{\\beta}^{T} \\, \\mathbf{X}^{T} + \\sigma^2 \\} \\, \\mathbf{X} \\, (\\mathbf{X}^{T} \\mathbf{X})^{-1} - \\boldsymbol{\\beta} \\, \\boldsymbol{\\beta}^{T}\n",
"% \\\\\n",
"% & = & (\\mathbf{X}^T \\mathbf{X})^{-1} \\, \\mathbf{X}^T \\, \\mathbf{X} \\, \\boldsymbol{\\beta} \\, \\boldsymbol{\\beta}^T \\, \\mathbf{X}^T \\, \\mathbf{X} \\, (\\mathbf{X}^T % \\mathbf{X})^{-1}\n",
"% \\\\\n",
"% & & + \\, \\, \\sigma^2 \\, (\\mathbf{X}^T \\mathbf{X})^{-1} \\, \\mathbf{X}^T \\, \\mathbf{X} \\, (\\mathbf{X}^T \\mathbf{X})^{-1} - \\boldsymbol{\\beta} \\boldsymbol{\\beta}^T\n",
"\\\\\n",
"& = & \\boldsymbol{\\beta} \\, \\boldsymbol{\\beta}^{T} + \\sigma^2 \\, (\\mathbf{X}^{T} \\mathbf{X})^{-1} - \\boldsymbol{\\beta} \\, \\boldsymbol{\\beta}^{T}\n",
"\\, \\, \\, = \\, \\, \\, \\sigma^2 \\, (\\mathbf{X}^{T} \\mathbf{X})^{-1},\n",
"\\end{eqnarray*}\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "0ebb2d20",
"metadata": {
"editable": true
},
"source": [
"where we have used that $\\mathbb{E} (\\mathbf{y} \\mathbf{y}^{T}) =\n",
"\\mathbf{X} \\, \\boldsymbol{\\beta} \\, \\boldsymbol{\\beta}^{T} \\, \\mathbf{X}^{T} +\n",
"\\sigma^2 \\, \\mathbf{I}_{nn}$. From $\\mbox{Var}(\\boldsymbol{\\beta}) = \\sigma^2\n",
"\\, (\\mathbf{X}^{T} \\mathbf{X})^{-1}$, one obtains an estimate of the\n",
"variance of the estimate of the $j$-th regression coefficient:\n",
"$\\boldsymbol{\\sigma}^2 (\\boldsymbol{\\beta}_j ) = \\boldsymbol{\\sigma}^2 [(\\mathbf{X}^{T} \\mathbf{X})^{-1}]_{jj} $. This may be used to\n",
"construct a confidence interval for the estimates.\n",
"\n",
"In a similar way, we can obtain analytical expressions for say the\n",
"expectation values of the parameters $\\boldsymbol{\\beta}$ and their variance\n",
"when we employ Ridge regression, allowing us again to define a confidence interval. \n",
"\n",
"It is rather straightforward to show that"
]
},
{
"cell_type": "markdown",
"id": "b701ef3f",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\mathbb{E} \\big[ \\hat{\\boldsymbol{\\beta}}^{\\mathrm{Ridge}} \\big]=(\\mathbf{X}^{T} \\mathbf{X} + \\lambda \\mathbf{I}_{pp})^{-1} (\\mathbf{X}^{\\top} \\mathbf{X})\\boldsymbol{\\beta}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "1453c4df",
"metadata": {
"editable": true
},
"source": [
"We see clearly that \n",
"$\\mathbb{E} \\big[ \\hat{\\boldsymbol{\\beta}}^{\\mathrm{Ridge}} \\big] \\not= \\hat{\\boldsymbol{\\beta}}^{\\mathrm{OLS}}$ for any $\\lambda > 0$.\n",
"\n",
"We can also compute the variance as"
]
},
{
"cell_type": "markdown",
"id": "fade84b6",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\mbox{Var}[\\hat{\\boldsymbol{\\beta}}^{\\mathrm{Ridge}}]=\\sigma^2[ \\mathbf{X}^{T} \\mathbf{X} + \\lambda \\mathbf{I} ]^{-1} \\mathbf{X}^{T} \\mathbf{X} \\{ [ \\mathbf{X}^{\\top} \\mathbf{X} + \\lambda \\mathbf{I} ]^{-1}\\}^{T},\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "e91b254f",
"metadata": {
"editable": true
},
"source": [
"and it is easy to see that if the parameter $\\lambda$ goes to infinity then the variance of Ridge parameters $\\boldsymbol{\\beta}$ goes to zero. \n",
"\n",
"With this, we can compute the difference"
]
},
{
"cell_type": "markdown",
"id": "6f50fb28",
"metadata": {
"editable": true
},
"source": [
"$$\n",
"\\mbox{Var}[\\hat{\\boldsymbol{\\beta}}^{\\mathrm{OLS}}]-\\mbox{Var}(\\hat{\\boldsymbol{\\beta}}^{\\mathrm{Ridge}})=\\sigma^2 [ \\mathbf{X}^{T} \\mathbf{X} + \\lambda \\mathbf{I} ]^{-1}[ 2\\lambda\\mathbf{I} + \\lambda^2 (\\mathbf{X}^{T} \\mathbf{X})^{-1} ] \\{ [ \\mathbf{X}^{T} \\mathbf{X} + \\lambda \\mathbf{I} ]^{-1}\\}^{T}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "e37b2bfb",
"metadata": {
"editable": true
},
"source": [
"The difference is non-negative definite since each component of the\n",
"matrix product is non-negative definite. \n",
"This means the variance we obtain with the standard OLS will always for $\\lambda > 0$ be larger than the variance of $\\boldsymbol{\\beta}$ obtained with the Ridge estimator. This has interesting consequences when we discuss the so-called bias-variance trade-off below. \n",
"\n",
"For more discussions of Ridge regression and calculation of averages, [Wessel van Wieringen's](https://arxiv.org/abs/1509.09169) article is highly recommended."
]
}
],
"metadata": {
"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.9.18"
}
},
"nbformat": 4,
"nbformat_minor": 5
}