3276 lines
404 KiB
Plaintext
3276 lines
404 KiB
Plaintext
{
|
||
"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 model’s 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",
|
||
" 99.9111 14.9774 99.9105 0.147583\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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F198Ibm7u0tyuVxq0aKFtHDhQqmkpKTKcwwaNEiaNGnSI1/DkMqNusbz5MmTUu/evSUzMzOpdevW0pIlS6p8ePWVOsZToVBI77//vtSmTRvJ3Nxc8vDwkGbMmCHl5ORo6F1pzrFjxyQA1W4PxqOiokJatGiR5OLiIpmZmUkDBw6Uzp8/X+U57t+/L82aNUuys7OTLCwspODgYCkpKanKOp6entKiRYuqLPv6668lT09PydTUVOrevbteHLYsajxrek0A0vfff6/md6xeIr8//0md5UYmSQa0PZiIiIj0HufcEBERkV5huSEiIiK9wnJDREREeoXlhoiIiPQKyw0RERHpFZYbIiIi0issN0RERKRXWG6IiIhIr7DcEBERkV5huSEiIiK9wnJDREREeoXlhoh03t27d+Hi4oKPPvqoctlvv/0GU1NTHDp0SGAyIhKBF84kIr0QERGBMWPG4OTJk2jfvj28vb0RFBSEFStWiI5GRBrGckNEemPmzJk4fPgwevbsiT/++AOnT5+Gubm56FhEpGEsN0SkN+7fvw8vLy8kJyfjzJkz6NKli+hIRCQA59wQkd64fv06UlNTUVFRgVu3bomOQ0SCcMsNEemF0tJS9OrVC926dUP79u3x2Wef4fz583B2dhYdjYg0jOWGiPTC22+/jZ07d+KPP/5AkyZN4OfnB2tra4SHh4uORkQaxt1SRKTzoqKisGLFCmzcuBE2NjYwMjLCxo0bERsbi9WrV4uOR0Qaxi03REREpFe45YaIiIj0CssNERER6RWWGyIiItIrLDdERESkV1huiIiISK+w3BAREZFeYbkhIiIivcJyQ0RERHqF5YaIiIj0CssNERER6RWWGyIiItIr/w/sbikYpxGRKAAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"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.013121574062587286\n",
|
||
"Bias^2: 0.012073649469946107\n",
|
||
"Var: 0.0010479245926411787\n",
|
||
"0.013121574062587286 >= 0.012073649469946107 + 0.0010479245926411787 = 0.013121574062587286\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"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.08426840630693412\n",
|
||
"Bias^2: 0.0796891867672603\n",
|
||
"Var: 0.004579219539673834\n",
|
||
"0.08426840630693412 >= 0.0796891867672603 + 0.004579219539673834 = 0.08426840630693413\n",
|
||
"Polynomial degree: 2\n",
|
||
"Error: 0.10398646080125037\n",
|
||
"Bias^2: 0.10077114273548984\n",
|
||
"Var: 0.0032153180657605116\n",
|
||
"0.10398646080125037 >= 0.10077114273548984 + 0.0032153180657605116 = 0.10398646080125036\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Polynomial degree: 3\n",
|
||
"Error: 0.06547790180152352\n",
|
||
"Bias^2: 0.062082386342319454\n",
|
||
"Var: 0.0033955154592040923\n",
|
||
"0.06547790180152352 >= 0.062082386342319454 + 0.0033955154592040923 = 0.06547790180152355\n",
|
||
"Polynomial degree: 4\n",
|
||
"Error: 0.06844519414009445\n",
|
||
"Bias^2: 0.06453579006728322\n",
|
||
"Var: 0.003909404072811221\n",
|
||
"0.06844519414009445 >= 0.06453579006728322 + 0.003909404072811221 = 0.06844519414009444\n",
|
||
"Polynomial degree: 5\n",
|
||
"Error: 0.05227921801205679\n",
|
||
"Bias^2: 0.04818727730430286\n",
|
||
"Var: 0.004091940707753925\n",
|
||
"0.05227921801205679 >= 0.04818727730430286 + 0.004091940707753925 = 0.05227921801205679\n",
|
||
"Polynomial degree: 6\n",
|
||
"Error: 0.03781367141738902\n",
|
||
"Bias^2: 0.03365768507152769\n",
|
||
"Var: 0.0041559863458613296\n",
|
||
"0.03781367141738902 >= 0.03365768507152769 + 0.0041559863458613296 = 0.03781367141738902\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Polynomial degree:"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" 7\n",
|
||
"Error: 0.027609773491022394\n",
|
||
"Bias^2: 0.022999498260366198\n",
|
||
"Var: 0.004610275230656182\n",
|
||
"0.027609773491022394 >= 0.022999498260366198 + 0.004610275230656182 = 0.02760977349102238\n",
|
||
"Polynomial degree: 8\n",
|
||
"Error: 0.017355848195593312\n",
|
||
"Bias^2: 0.010331721306655165\n",
|
||
"Var: 0.007024126888938144\n",
|
||
"0.017355848195593312 >= 0.010331721306655165 + 0.007024126888938144 = 0.01735584819559331\n",
|
||
"Polynomial degree: 9\n",
|
||
"Error: 0.026605727637184558\n",
|
||
"Bias^2: 0.010018312644139219\n",
|
||
"Var: 0.016587414993045335\n",
|
||
"0.026605727637184558 >= 0.010018312644139219 + 0.016587414993045335 = 0.026605727637184554\n",
|
||
"Polynomial degree: 10\n",
|
||
"Error: 0.021592704588021178\n",
|
||
"Bias^2: 0.010516485576646504\n",
|
||
"Var: 0.01107621901137467\n",
|
||
"0.021592704588021178 >= 0.010516485576646504 + 0.01107621901137467 = 0.021592704588021174\n",
|
||
"Polynomial degree: 11\n",
|
||
"Error: 0.07160048164232538\n",
|
||
"Bias^2: 0.014436800088896381\n",
|
||
"Var: 0.05716368155342902\n",
|
||
"0.07160048164232538 >= 0.014436800088896381 + 0.05716368155342902 = 0.0716004816423254\n",
|
||
"Polynomial degree: 12\n",
|
||
"Error: 0.11547777218876518\n",
|
||
"Bias^2: 0.016285782696017142\n",
|
||
"Var: 0.09919198949274803\n",
|
||
"0.11547777218876518 >= 0.016285782696017142 + 0.09919198949274803 = 0.11547777218876518\n",
|
||
"Polynomial degree: 13\n",
|
||
"Error: 0.2284246870217162\n",
|
||
"Bias^2: 0.01975416527168255\n",
|
||
"Var: 0.20867052175003364\n",
|
||
"0.2284246870217162 >= 0.01975416527168255 + 0.20867052175003364 = 0.2284246870217162\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": {},
|
||
"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": "iVBORw0KGgoAAAANSUhEUgAABGQAAAHOCAYAAADey9/qAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAADyOElEQVR4nOzdd3jT5dfH8XeS7l02lFL2liEiMmQpMpUhLmSJIKKIe/C4cP5wgCgOnIAoqICiIkspQwRUtuyy9ywU2tJ9P3+EBEoLNF3p+LyuKxfpN99x0pST9PS+z20xxhhERERERERERCTfWN0dgIiIiIiIiIhIcaOCjIiIiIiIiIhIPlNBRkREREREREQkn6kgIyIiIiIiIiKSz1SQERERERERERHJZyrIiIiIiIiIiIjkMxVkRERERERERETymQoyIiIiIiIiIiL5TAUZEREREREREZF8poKM5KlJkyZhsVicNx8fH8qVK0e7du343//+x7Fjx9wdYr44cOAAjz32GG3atCEkJASLxcKkSZPcHZaISJ5Q7s/cCy+8gMVioX79+u4ORUQk25Tj7Vz5fN+2bdt03zPHrVOnTvkbtBQ4KshIvpg4cSIrVqzg999/56OPPqJRo0a89dZb1KlThz/++MPd4eW5HTt28O233+Ll5UWXLl3cHY6ISL4o7rn/YuvWrePdd9+lbNmy7g5FRCRXFPcc7+rn+6pVq7JixYp0t3HjxuV9oFKgebg7ACke6tevz3XXXef8+vbbb+fxxx+nVatW9OrVi6ioqHz/kHru3Dl8fX3z5VqtW7fm+PHjAKxatYpp06bly3VFRNypuOd+h5SUFO677z6GDh3K+vXrOXHiRL5eX0QkLxT3HO/q53tfX19uuOGG/AhNChGNkBG3qVSpEmPGjOHs2bN8+umn6R5btWoVt912GyVKlMDHx4fGjRvzww8/ZDjHsmXLaN68OT4+PoSFhfHiiy/yxRdfYLFY2LNnj3O/ypUr061bN3788UcaN26Mj48Pr7zyCgBHjhxh6NChVKxYES8vL6pUqcIrr7xCSkpKumslJSXx+uuvU7t2bby9vSldujT33XefMxFfidWq/2oiIlC8cr/D6NGjiY6O5o033nDhOyUiUvgUpxyvz/eSGzRCRtyqS5cu2Gw2li5d6ty2aNEiOnXqRLNmzZgwYQLBwcF899133HXXXcTHxzNw4EAANmzYQIcOHahZsyaTJ0/Gz8+PCRMm8M0332R6rTVr1rBlyxZeeOEFqlSpgr+/P0eOHOH666/HarXy0ksvUa1aNVasWMHrr7/Onj17mDhxIgBpaWl0796dP//8k2eeeYYWLVqwd+9eXn75Zdq2bcuqVavy/S+uIiKFVXHK/Zs3b+b111/nxx9/JCAgIHe+gSIiBVhxyvGu2LlzJyVKlODMmTNERERw991388ILL+h3iOLOiOShiRMnGsD8+++/l92nbNmypk6dOs6va9eubRo3bmySk5PT7detWzdTvnx5k5qaaowx5o477jD+/v7m+PHjzn1SU1NN3bp1DWB2797t3B4REWFsNpvZtm1bunMOHTrUBAQEmL1796bb/u677xrAbNq0yRhjzLRp0wxgZs6cmW6/f//91wDm448/zsJ3I/0xEydOzPIxIiKFiXL/hbiaNWtm7rnnHue2Nm3amHr16l3xOBGRgkw5PqOrfb5//vnnzccff2wiIyPNb7/9ZoYPH248PDxM69atnc9diieNsxK3M8Y47+/YsYOtW7dy7733AvZ5945bly5dOHz4MNu2bQNgyZIltG/fnlKlSjmPt1qt3HnnnZlep0GDBtSsWTPdttmzZ9OuXTsqVKiQ7lqdO3d2XsOxX0hICLfeemu6/Ro1akS5cuVYvHhxrn0/RESKg+KQ+8eOHUtUVJSaNopIsVMccrwrXn/9dYYNG0a7du3o0qUL48ePZ/To0SxdupSff/45164jhY+mLIlbxcXFcfLkSa655hoAjh49CsBTTz3FU089lekxjmaIJ0+ezLRR2OWah5UvXz7DtqNHj/Lrr7/i6el5xWsdPXqU06dP4+XldcX9RETk6opD7t+3bx8vvfQSo0ePxsvLi9OnTwP2X0TS0tI4ffo03t7eGqouIkVOccjxuaFv37489dRTrFy5kp49e+bptaTgUkFG3Oq3334jNTWVtm3bAjir4SNHjqRXr16ZHlOrVi0ASpYs6UzwFzty5Eimx1kslgzbSpUqRYMGDS7baLFChQrO/UqWLMm8efMy3S8wMDDT7SIiklFxyP27du3i3LlzPProozz66KMZHg8NDeXRRx/V6BkRKXKKQ47PTWoOXLypICNus2/fPp566imCg4MZOnQoYE/GNWrUYP369bz55ptXPL5NmzbMmTOHEydOOBN9Wloa06dPz3IM3bp1Y86cOVSrVo3Q0NAr7vfdd9+RmppKs2bNsnx+ERFJr7jk/kaNGrFo0aIM2x977DFiYmKYOHEiFStWdOmcIiIFXXHJ8blh8uTJAFoKu5hTQUbyxcaNG53zMo8dO8aff/7JxIkTsdls/PTTT5QuXdq576effkrnzp3p2LEjAwcOJCwsjOjoaLZs2cKaNWucCfn555/n119/5aabbuL555/H19eXCRMmEBcXB2St2vzqq6/y+++/06JFC0aMGEGtWrVISEhgz549zJkzhwkTJlCxYkXuvvtuvv32W7p06cKjjz7K9ddfj6enJwcOHGDRokV07979qkMNZ8yYAdj/agr2pf8cK2707t3b9W+qiEgBV5xzf0hIiPOvw5duT0lJyfQxEZHCpDjneIesfL7/888/eeONN+jZsydVq1YlISGBuXPn8tlnn9G+fXtuvfVWF7/zUqS4uamwFHGOLuyOm5eXlylTpoxp06aNefPNN82xY8cyPW79+vXmzjvvNGXKlDGenp6mXLlypn379mbChAnp9vvzzz9Ns2bNjLe3tylXrpx5+umnzVtvvWUAc/r0aed+ERERpmvXrple6/jx42bEiBGmSpUqxtPT05QoUcI0adLEPP/88yY2Nta5X3Jysnn33XdNw4YNjY+PjwkICDC1a9c2Q4cONVFRUVf9Xlz8fbj0JiJSlCj3X55WWRKRwk45/oKsfL6PiooyXbp0MWFhYcbb29v4+PiYa665xrzxxhsmISHhqteQos1izEUtsEWKgFtuuYU9e/awfft2d4ciIiL5RLlfRKToUo6XokpTlqRQe+KJJ2jcuDHh4eFER0fz7bff8vvvv/Pll1+6OzQREckjyv0iIkWXcrwUJyrISKGWmprKSy+9xJEjR7BYLNStW5cpU6bQt29fd4cmIiJ5RLlfRKToUo6X4kRTlkRERERERERE8pkWPRcRERERERERyWcqyIiIiIiIiIiI5LNiX5CZNGkSFosFi8XC4sWLMzxujKF69epYLBbatm2b7rGTJ08ycuRI6tati7+/P8HBwdSuXZt+/fqxYcOGTK+R2S2z6+aXF154AYvFQv369bN8zK5du+jVqxchISEEBATQoUMH1qxZk2G/M2fO8Pzzz1OzZk38/PwICwvjjjvuYNOmTbn5FJy+++47GjVqhI+PDxUqVOCxxx4jNjY23T5nz57lmWee4ZZbbqF06dJYLBZGjRp12XMmJydTu3ZtRo8enWtxRkdH4+npyU8//ZTjc7n6+n3xxRf06NGDypUr4+vrS/Xq1Rk2bBiHDx/OsG/lypUz/Xl98MEHcxx3ZnL79WvdujWPPfZYnsQqhZvyvmt5Y9q0abRu3ZqyZcvi7e1NhQoVuPXWW1m+fHm6/Q4fPswLL7xA8+bNKVWqFEFBQTRp0oTPPvuM1NTUvHgqWcobkZGRDBo0iNq1a+Pv709YWBjdu3dn9erVmZ6zoOX9tm3bXvFn6ciRI1c9R2F+33bl9VPel+KW3w8cOMBjjz1GmzZtCAkJwWKxMGnSJJfOMXPmTFq2bEmJEiUICQnh+uuvZ8qUKRn2Gzx4MPXr1yckJARfX19q1qzJ008/zYkTJ3Lp2WRdcnIyr7zyCpUrV8bb25vatWszfvz4TPfN6vMD2LlzJ97e3qxYsSLXYv3ll1/w8PDg+PHjLh87cODATH/Gateu7fK5zp07R82aNbFYLLz77rsZHt+xYwf9+vWjUqVK+Pr6Uq1aNZ544glOnjzp8rVy6tixYwwcOJBSpUrh5+dH8+bNWbhwYYb9EhMTeeedd6hfvz7+/v6ULVuWzp07Z/h8snDhQgICAjh48GB+PQXXuHHJ7QJh4sSJBjCBgYGmb9++GR5ftGiR8/E2bdo4t589e9ZUr17dlCtXzowZM8b88ccf5tdffzVjxowxLVu2NJMnT85wjYkTJ5oVK1ZkuMXExOTHU81g7dq1xtvb25QtW9bUq1cvS8ccO3bMVKhQwdSrV8/MnDnT/Pbbb6ZVq1YmMDDQbN26Nd2+rVu3Nn5+fubtt982kZGR5uuvvzbVq1c3gYGBZs+ePbn6XL755hsDmMGDB5vIyEgzYcIEExwcbDp06JBuv927d5vg4GDTunVrM3jwYAOYl19++bLnHTdunClTpoyJjY3NtVi/+uor4+fnZ+Lj43N0nuy8fhUqVDD33nuv+fbbb83ixYvNp59+aipWrGjKly9vjhw5km7fiIgI07Jlyww/r7t27cpR3JnJi9dv8eLFxtPTM8PPpYjyvmt5Y/z48ea5554zM2bMMIsXLzbTpk0zTZs2NTabzSxevNi536+//mrCw8PN888/b3777TezYMEC8/jjjxur1Wruu+++XH8uWc0bvXv3Nu3atTMff/yxWbx4sZk+fbq54YYbjIeHh1m4cGGG8xa0vL9p06YMPz8LFy40np6e5oYbbrjq8YX9fduV1095X4pbfl+0aJEpVaqUufnmm80999zjjCurvvzySwOY22+/3cyZM8fMnTvX3H333QYwY8eOTbfv3Xffbd5//33z22+/mYULF5q33nrLBAUFmbp165rExMRcfmZXNnjwYOPt7W3efvtts2jRIvPcc88Zi8Vi3njjjXT7ufL8jDGmR48epmvXrrkaa//+/U27du2ydeyAAQOMr69vhp+xdevWuXyuJ5980lSoUMEA5p133kn32LFjx0zJkiVNlSpVzKRJk0xkZKQZM2aMCQgIMI0aNTKpqanZij87EhISTP369U3FihXNN998YxYsWGC6d+9uPDw80n3mMMaYfv36GavVap5//nmzcOFCM336dNOkSRPj4eFh/v7773T7tmvXzvTv3z/fnocrVJA5n1QHDx5sfH19MyTRvn37mubNm5t69eqlS9xfffWVAUxkZGSm5734B9dxjX///TdPnkN2JCcnm0aNGpkRI0aYNm3aZPmD+dNPP208PT3TfTCLiYkxpUqVMnfeeadzW1RUlAHMCy+8kO745cuXXzYJZldKSoopX768ueWWW9Jt//bbbw1g5syZ49yWlpZm0tLSjDHGHD9+/Iq/0CcnJ5uwsDDz3HPPXTWGNm3amAEDBmQp3i5dupjevXtnad/Lye7rd/To0Qzb/v33XwOY1157Ld32iIiIXH9TykxevX7GGFO/fn0zZMiQPIlbCi/lfdfyRmZOnz5tPD09Tb9+/ZzboqOjTVJSUoZ9H374YQOYffv2Zft6l3Ilb2SW986ePWvKli1rbrrppnTbC3Lev9ikSZMMYL744our7lvY37ddef2MUd4v7opbfr84LsfnOVcKMi1btjQRERHpzpOWlmZq165tGjRocNXjP/74YwNkWtzOjpdfftlERERccZ+NGzcai8Vi3nzzzXTbhwwZYnx9fc3Jkyed21x5fps3bzaAmTdv3lXjzOr3OSkpyYSEhJgPP/zwqvtmZsCAAcbf3z9bx17s77//Nl5eXmb69OmZFmQ+//xzA5g//vgj3fY333zTAGbNmjU5jsGYrL1vfvTRRwYwy5cvd25LTk42devWNddff71zW0JCgrHZbBkKr4cOHTKAGTFiRLrtM2bMMDabLVc/i+SWYj9lyeGee+4B7EOzHWJiYpg5cyaDBg3KsL9j+Fb58uUzPZ/VWrC/taNHjyY6Opo33njDpeN++ukn2rdvT0REhHNbUFAQvXr14tdffyUlJQUAT09PAIKDg9MdHxISAoCPj0+67VFRUfTp04cyZcrg7e1NnTp1+Oijj7IU08qVKzl8+DD33Xdfuu133HEHAQEB6YaIO4b6ZcUvv/zCwYMH6devX5b2z4ozZ87wxx9/cPvtt+foPNl9/cqUKZNhW5MmTbDZbOzfvz/b8RTE1w+gX79+TJ06lbNnz2b5GCk+lPezLzAwEB8fHzw8PJzbQkNDnbn/Ytdffz1gH1p/sfzKG5nlvYCAAOrWrZsh7xXkvH+xL7/8koCAAO66666r7lvY37ddef1AeV/sikt+z2lcnp6eBAQEpDuPxWIhKCgow//5zJQuXRog3XsB5Cw/XM2sWbMwxmTIH/fddx/nzp1j3rx5zm2uPL9PPvmEcuXK0aFDh1yJE+xTZWJiYujZs2eundNVSUlJDBo0iIcffpjrrrsu031czf9//PEHN910E0FBQfj5+dGyZctMpxRlx08//UStWrVo3ry5c5uHhwd9+/bln3/+cU47slqtWK3WDDEHBQVhtVozxHzrrbcSEBDA559/nitx5qaCmV3cICgoiN69e/PVV185t02bNg2r1ZrpBx7HD0n//v2ZNWtWlubXpaamkpKSku6WlXn1aWlpGY7L7JbVOfqbN2/m9ddf55NPPiEgICBLx4B97uHOnTtp0KBBhscaNGjAuXPn2LVrFwARERF0796d9957j0WLFhEbG8vWrVsZMWIElSpV4u67704XT9OmTdm4cSNjxoxh9uzZdO3alREjRvDKK69cNa6NGzc6Y7iYp6cntWvXdj7uqt9++40yZcpQt27dbB2fmV9//RWLxULXrl2zfY7svn6Xs2TJElJTU6lXr16Gx5YuXUpgYCCenp7UrVuXMWPGZPg5K6ivH9h7L8TFxbm1X4cUXMr7rklNTSU5OZk9e/YwbNgwjDE8/PDDVz0uMjISDw8PatasmS4ed+aNmJgY1qxZkyHvFdS8f7GoqCj+/PNP7r777qu+lkX1fftyrx8o74tdccrvOfHII4+wZcsW3njjDY4fP86JEyd49913Wb16NU899VSmx6SkpBAXF8dff/3Fiy++SKtWrWjZsqXz8Zzmh6vZuHEjpUuXply5cum2O/LJxfnDlef322+/0bp161wtvs2cOZPmzZtToUKFbJ/j3LlzlCtXDpvNRsWKFRk+fDjR0dFZPv7VV18lLi6O11577bL79OjRg0qVKvHkk0+yadMmYmNjWbp0KaNHj+bWW2+lTp06zn2/+eYbbrnlFoKCgpg8eTI//PADJUqUoGPHjrlSlNm4ceNl37MAZ08zT09PHnroISZPnsysWbM4c+YMe/bsYciQIQQHBzNkyJB0x3t5edGiRQt+++23HMeY69w9RMfdLh526JhXunHjRmOMMU2bNjUDBw40xpgMQxuNMebVV181Xl5eBjCAqVKlinnwwQfN+vXrM71GZjebzXbVGF9++eXLHn/x7WpD/IyxD21s1qyZueeee5zbsjp0/eDBgwYw//vf/zI8NnXq1AzDy5KSksyQIUPSxdigQQOze/fudMd27NjRVKxYMcOw0uHDhxsfHx8THR19xbjeeOMNA5jDhw9neOyWW24xNWvWzPS4q015qVOnjunUqVOG7WlpaSY5OTndrXXr1qZ///4Ztl+qR48e5tZbb73i87mSnLx+mTlz5oypU6eOCQ8PN2fPnk332EMPPWS++uors2TJEjNr1ixz7733GiDD0MCC+voZY/8ZtFgs5tlnn71iDFK8KO9nL2/UqlXLed3y5cubZcuWXfWY+fPnG6vVah5//PF0292VNxzuvfde4+HhYVatWpVue0HM+5d69tlnDWBWrFhx1X2L2vu2w+VeP8dzUN4vvopbfr9YdqYsGWPMrFmzTHBwsPO6vr6+5ptvvsl03xUrVqSLsUuXLubMmTPp9nElP1yaP1988UUTERGRYbtjuroxxnTo0MHUqlUr0/i8vLzMAw884PLzO3r0qAHM6NGjM5wzNTU1QzyA+fLLL9NtS0lJSXdcSkqKKVWqlBkzZkymsWbF2LFjzdixY82CBQvMggULzPPPP2/8/PxM7dq1M3xuz8zatWuNp6encxrW7t27M52yZIx9qk/z5s3Tvb533HGHSUhIcO4TFxdnSpQokeE9LTU11TRs2DDdlKLsvm96enqaoUOHZojPMX126tSp6a7x0ksvGavV6oy5UqVKZu3atZl+P55//nljtVpztUdcbkg/vqyYa9OmDdWqVeOrr75i4MCB/Pvvv4wZM+ay+7/44os88MADzJkzh7///pvly5czYcIEvvjiC77++mvncEmHr7/+Ol2FEcjS9IsHHniAbt26XXU/b2/vq+4zduxYoqKi+OWXX6667+VcKeaLHxs2bBg//fQT7733Htdeey1HjhzhnXfeoX379ixatIiIiAgSEhJYuHAhw4YNw8/Pzzl0GqBLly58+OGHrFy5ks6dO5Oamooxxvm4Y6ja1eJyZYrLxQ4dOkTTpk0zbF+yZAnt2rXLsH3p0qV8/fXX6bbt3r2bypUrAxAXF8f8+fP55JNPnI+npaWRlpaWLlabzXbZmHLj9XNISEigV69e7N27l8jIyAx/ab10aGn37t0JDQ3lww8/5IknnqBx48YF+vUDe/U8JCSk4HZVF7dT3s+6mTNnEhcXx759+5gwYQKdO3fml19+ybBSicOaNWu48847ueGGG/jf//7n3O7uvPHiiy/y7bffMn78eJo0aZLusYKY9y+WkpLC5MmTqVevHjfccEOWjnFcIyuPFYb37Su9fqC8LxcUh/yeU/PmzaNv377ccccd3HnnnXh4ePDLL78wcOBAkpKSMkwLuuaaa/j333+Jj49n3bp1jB49mg4dOhAZGYmfn59L+QHIdJprZtsnTpzIwIEDnV9nNadl9fkdOnQIyHyK5KuvvprpyJ7777+f+++/3/l1REQEe/bscX69ZMkSTpw4Qa9evZzbrpYTL/X444+n+7pDhw40btyY3r178/nnn2d4/GIpKSkMGjSIu+66i44dO152P4BTp07RvXt34uPj+fbbbwkPD2fjxo289tpr3Hbbbfz22294eHiwfPlyoqOjGTBgQLrXFqBTp068/fbbxMXF4e/vn+33Tcj66/vGG2/w7rvvMmrUKG688UbOnDnDhx9+SIcOHViwYAGNGzdOd2yZMmVIS0vjyJEjVKtW7Yrfk3zl1nJQAXBpY67XX3/dlClTxjz00EPp/kKTWSU9M0uWLDF+fn6mdOnSl72GqzKrzGZ2u7Qye6m9e/caX19f8/7775tTp045by1btjR16tQxp06duuIKEPHx8cZisZinn346w2MffvihAcy2bduMMcbMnTvXAGb69Onp9jt16pQJDg52/oXiwIEDV/0Lwddff22MsTeZvXi7Y2TEhAkTDGA2bdqUIa7rrrvONG/ePNPnc7URFplV2Y2xjyr5999/092uvfZa061btwzbL+46//333xsPD490fxkYMGBAuud0pZ+x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EqaEjIiIiIiIiIhICVNCRkRERERERESkhCkhIyIiIiIiIiJSwpSQEREREREREREpYUrIiIiIiIiIiIiUMCVkRERERERERERKmBIyIiIiIiIiIiIlTAkZEREREREREZESpoSMiIiIiIiIiEgJU0JGRERERERERKSEKSEjIiIiIiIiIlLClJARERERERERESlhSsiIiIiIiIiIiJQwJWREREREREREREqYEjIiIiIiIiIiIiVMCRkRERERERERkRKmhIyIiIiIiIiISAmzOuNNHQ4HAHFxcc54exERp8iKeVkx0JUo7ouIq1LsV+wXEddT2NjvlIRMfHw8AKGhoc54exERp4qPjycgIMDZyyhRivsi4uoU+0VEXE9Bsd/kcEK63m63c+LECfz8/DCZTCX99iIiTuFwOIiPj6d69eqYza7VMaq4LyKuSrFfsV9EXE9hY79TEjIiIiIiIiIiIq7MtdL0IiIiIiIiIiKlgBIyIiIiIiIiIiIlTAkZEREREREREZESpoSMiIiIiIiIiEgJU0JGRERERERERKSEKSEjIiIiIiIiIlLClJCRcu/MmTNUrVqVt956K/u2NWvW4O7uzvz58524MhERKS6K/SIirkexX8oak8PhcDh7ESLFbfbs2dx0002sXLmShg0b0qpVKwYOHMjHH3/s7KWJiEgxUewXEXE9iv1SlighIy5j9OjR/PPPP1xzzTVs2bKFdevW4enp6exliYhIMVLsFxFxPYr9UlYoISMuIzk5maZNm3L06FHWr19P8+bNnb0kEREpZor9IiKuR7FfygrNkBGXceDAAU6cOIHdbufw4cPOXo6IiJQAxX4REdej2C9lhSpkxCWkpaXRrl07WrZsScOGDRk7dizbtm2jSpUqzl6aiIgUE8V+ERHXo9gvZYkSMuISnn32WX755Re2bNmCr68vPXv2xM/Pj1mzZjl7aSIiUkwU+0VEXI9iv5QlalmScm/x4sV8/PHHTJ48GX9/f8xmM5MnT2b58uWMGzfO2csTEZFioNgvIuJ6FPulrFGFjIiIiIiIiIhICVOFjIiIiIiIiIhICVNCRkRERERERESkhCkhIyIiIiIiIiJSwpSQEREREREREREpYUrIiIiIiIiIiIiUMCVkRERERERERERKmBIyIiIiIiIiIiIlTAkZEREREREREZESpoSMiIiIiIiIiEgJU0JGRERERERERKSEKSEjIiIiIiIiIlLClJARERERERERESlh/w+r/tgHhgdz7wAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 1400x500 with 3 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"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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/fy2qjE7SUlJAAAPDw8AwMWLFxEfH48ePXqY2mi1WnTu3BmRkZEAgKioKGRkZJi18fX1RZMmTUxtckpPT0dycrLZQkREROpkNWFHCIGpU6eiY8eOaNKkCQAgPj4eAODt7W3W1tvb27QvPj4eDg4OqFy5cr5tcgoLC4O7u7tp8fPzs/ThEBERkZWwmrAzceJE/PXXX/jqq69y7dNoNGaPhRC5tuVUUJs5c+YgKSnJtMTGxha/cCIiIrJqVhF2Jk2ahO3bt+PAgQOoUaOGabuPjw8A5OqhSUhIMPX2+Pj4QK/XIzExMd82OWm1Wri5uZktREREpE6Khh0hBCZOnIjvv/8eP//8M+rUqWO2v06dOvDx8cHevXtN2/R6PQ4dOoSgoCAAQGBgIOzt7c3axMXF4dSpU6Y2REREVHHZKfnmEyZMwObNm7Ft2za4urqaenDc3d2h0+mg0WgQGhqKRYsWwd/fH/7+/li0aBGcnJwwZMgQU9tRo0Zh2rRp8PT0hIeHB6ZPn46AgAB0795dycMjIiIiK6Bo2Pnoo48AAF26dDHbvm7dOowcORIAMHPmTKSlpWH8+PFITExE27ZtsWfPHri6uprar1ixAnZ2dhg8eDDS0tLQrVs3rF+/Hra2tmV1KERERGSlrGqeHaVwnh0iIqLyp1zOs0NERERkaQw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRqDDtERESkagw7REREpGoMO0RERKRq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Qa/XK12axSxcuBBBQUFwcnJCpUqVlC7HIlavXo06derA0dERgYGBOHz4sNIlWcwvv/yCfv36wdfXFxqNBj/88IPSJVlUWFgYWrduDVdXV1StWhVPP/00zp07p3RZFvPRRx+hadOmpono2rdvj507dypdVqkJCwuDRqNBaGio0qVYzPz586HRaMwWHx8fRWph2ClDXbt2xddff41z587hu+++w99//42BAwcqXZZFnD17FkajEWvWrEFMTAxWrFiBjz/+GK+99prSpVmMXq/HoEGD8J///EfpUixi69atCA0Nxeuvv44///wTTzzxBHr37o0rV64oXZpFpKamolmzZggPD1e6lFJx6NAhTJgwAUePHsXevXvx4MED9OjRA6mpqUqXZhE1atTAu+++i99//x2///47nnzySQwYMAAxMTFKl2Zxx48fx9q1a9G0aVOlS7G4xo0bIy4uzrScPHlSmUIEKWbbtm1Co9EIvV6vdCmlYsmSJaJOnTpKl2Fx69atE+7u7kqXUWJt2rQR48aNM9vWsGFDMXv2bIUqKj0AREREhNJllKqEhAQBQBw6dEjpUkpN5cqVxaeffqp0GRaVkpIi/P39xd69e0Xnzp3FlClTlC7JYubNmyeaNWumdBlCCCHYs6OQ27dvY9OmTQgKCoK9vb3S5ZSKpKQkeHh4KF0G5UGv1yMqKgo9evQw296jRw9ERkYqVBWVRFJSEgCo8t+cwWDAli1bkJqaivbt2ytdjkVNmDABTz31FLp37650KaXiwoUL8PX1RZ06dfD888/jn3/+UaQOhp0yNmvWLDg7O8PT0xNXrlzBtm3blC6pVPz999/48MMPMW7cOKVLoTzcvHkTBoMB3t7eZtu9vb0RHx+vUFVUXEIITJ06FR07dkSTJk2ULsdiTp48CRcXF2i1WowbNw4RERFo1KiR0mVZzJYtW/DHH38gLCxM6VJKRdu2bfHll19i9+7d+OSTTxAfH4+goCDcunWrzGth2CmhvAZg5Vx+//13U/sZM2bgzz//xJ49e2Bra4vhw4dDWPEk1kU9PgC4fv06evXqhUGDBmH06NEKVV44xTk+NdFoNGaPhRC5tpH1mzhxIv766y989dVXSpdiUQ0aNEB0dDSOHj2K//znPxgxYgROnz6tdFkWERsbiylTpmDjxo1wdHRUupxS0bt3bzz33HMICAhA9+7d8dNPPwEAvvjiizKvxa7M31FlJk6ciOeff77ANrVr1zate3l5wcvLC4899hgef/xx+Pn54ejRo1bbNVvU47t+/Tq6du2K9u3bY+3ataVcXckV9fjUwsvLC7a2trl6cRISEnL19pB1mzRpErZv345ffvkFNWrUULoci3JwcED9+vUBAK1atcLx48fx/vvvY82aNQpXVnJRUVFISEhAYGCgaZvBYMAvv/yC8PBwpKenw9bWVsEKLc/Z2RkBAQG4cOFCmb83w04JZYaX4sjs0UlPT7dkSRZVlOO7du0aunbtisDAQKxbtw42NtbfcViS/3/lmYODAwIDA7F3714888wzpu179+7FgAEDFKyMCksIgUmTJiEiIgIHDx5EnTp1lC6p1AkhrPr3ZVF069Yt15VJL730Eho2bIhZs2apLugA8rPuzJkzeOKJJ8r8vRl2ysixY8dw7NgxdOzYEZUrV8Y///yDuXPnol69elbbq1MU169fR5cuXVCzZk289957uHHjhmmfUvMqWNqVK1dw+/ZtXLlyBQaDAdHR0QCA+vXrw8XFRdniimHq1KkYNmwYWrVqZeqJu3LlimrGWd29exf/+9//TI8vXryI6OhoeHh4oGbNmgpWZhkTJkzA5s2bsW3bNri6upp66dzd3aHT6RSuruRee+019O7dG35+fkhJScGWLVtw8OBB7Nq1S+nSLMLV1TXX+KrM8ZxqGXc1ffp09OvXDzVr1kRCQgLeeecdJCcnY8SIEWVfjJKXglUkf/31l+jatavw8PAQWq1W1K5dW4wbN05cvXpV6dIsYt26dQJAnotajBgxIs/jO3DggNKlFduqVatErVq1hIODg2jZsqWqLls+cOBAnv+/RowYoXRpFpHfv7d169YpXZpFvPzyy6afzSpVqohu3bqJPXv2KF1WqVLbpechISGiWrVqwt7eXvj6+opnn31WxMTEKFKLRggrHh1LREREVELWP6iCiIiIqAQYdoiIiEjVGHaIiIhI1Rh2iIiISNUYdoiIiEjVGHaIiIhI1Rh2iIiISNUYdoiIiEjVGHaIKF9dunRBaGio0mXk6datW6hatSouXboEADh48CA0Gg3u3LlTqu9b3PdZv349KlWqVKTntG7dGt9//32RnkNEuTHsEFGZiYuLw5AhQ9CgQQPY2NjkG6S+++47NGrUCFqtFo0aNUJERESuNmFhYejXr58q70qf6c0338Ts2bNhNBqVLoWoXGPYIaIyk56ejipVquD1119Hs2bN8mzz22+/ISQkBMOGDcOJEycwbNgwDB48GP/9739NbdLS0vDZZ59h9OjRZVW6Ip566ikkJSVh9+7dSpdCVK4x7BBRoSQmJmL48OGoXLkynJyc0Lt3b1y4cMGszSeffAI/Pz84OTnhmWeewfLly81O3dSuXRvvv/8+hg8fDnd39zzfZ+XKlQgODsacOXPQsGFDzJkzB926dcPKlStNbXbu3Ak7Ozu0b98+33pv3bqFF154ATVq1ICTkxMCAgLw1VdfmbXp0qULJk2ahNDQUFSuXBne3t5Yu3YtUlNT8dJLL8HV1RX16tXDzp07c73+r7/+imbNmsHR0RFt27bFyZMnzfavX78eNWvWNH0vbt26Zbb/77//xoABA+Dt7Q0XFxe0bt0a+/btM2tja2uLPn365KqbiIqGYYeICmXkyJH4/fffsX37dvz2228QQqBPnz7IyMgAID/8x40bhylTpiA6OhrBwcFYuHBhkd/nt99+Q48ePcy29ezZE5GRkabHv/zyC1q1alXg69y/fx+BgYH48ccfcerUKbzyyisYNmyYWQ8RAHzxxRfw8vLCsWPHMGnSJPznP//BoEGDEBQUhD/++AM9e/bEsGHDcO/ePbPnzZgxA++99x6OHz+OqlWron///qbvxX//+1+8/PLLGD9+PKKjo9G1a1e88847Zs+/e/cu+vTpg3379uHPP/9Ez5490a9fP1y5csWsXZs2bXD48OHCffOIKG+K3GudiMqFzp07iylTpojz588LAOLXX3817bt586bQ6XTi66+/FkIIERISIp566imz5w8dOlS4u7sX+No52dvbi02bNplt27Rpk3BwcDA9HjBggHj55ZfN2hw4cEAAEImJifkeT58+fcS0adPMaujYsaPp8YMHD4Szs7MYNmyYaVtcXJwAIH777Tez99myZYupza1bt4ROpxNbt24VQgjxwgsviF69epm9d0hISL7fi0yNGjUSH374odm2bdu2CRsbG2EwGAp8LhHljz07RPRIZ86cgZ2dHdq2bWva5unpiQYNGuDMmTMAgHPnzqFNmzZmz8v5uLA0Go3ZYyGE2ba0tDQ4OjoW+BoGgwELFy5E06ZN4enpCRcXF+zZsydXz0nTpk1N67a2tvD09ERAQIBpm7e3NwAgISHB7HnZT6F5eHiYfS/OnDmT6xRbzsepqamYOXMmGjVqhEqVKsHFxQVnz57NVZ9Op4PRaER6enqBx0tE+bNTugAisn5CiHy3Z4aQnIGkoOcVxMfHB/Hx8WbbEhISTKEDALy8vJCYmFjg6yxbtgwrVqzAypUrERAQAGdnZ4SGhkKv15u1s7e3N3us0WjMtmUeU2GuiMr+vXiUGTNmYPfu3XjvvfdQv3596HQ6DBw4MFd9t2/fhpOTE3Q63SNfk4jyxp4dInqkRo0a4cGDB2bjXW7duoXz58/j8ccfBwA0bNgQx44dM3ve77//XuT3at++Pfbu3Wu2bc+ePQgKCjI9btGiBU6fPl3g6xw+fBgDBgzAiy++iGbNmqFu3bq5BlSXxNGjR03riYmJOH/+PBo2bAhAfr+y78/ZPrO+kSNH4plnnkFAQAB8fHxMcwZld+rUKbRs2dJidRNVRAw7RPRI/v7+GDBgAMaMGYMjR47gxIkTePHFF1G9enUMGDAAADBp0iTs2LEDy5cvx4ULF7BmzRrs3LkzV29PdHQ0oqOjcffuXdy4cQPR0dFmwWXKlCnYs2cPFi9ejLNnz2Lx4sXYt2+f2Zw8PXv2RExMTIG9O/Xr18fevXsRGRmJM2fOYOzYsbl6jEpiwYIF2L9/P06dOoWRI0fCy8sLTz/9NABg8uTJ2LVrF5YsWYLz588jPDwcu3btylXf999/j+joaJw4cQJDhgzJs/fo8OHDuQZsE1HRMOwQUaGsW7cOgYGB6Nu3L9q3bw8hBHbs2GE65dOhQwd8/PHHWL58OZo1a4Zdu3bh1VdfzTW2pkWLFmjRogWioqKwefNmtGjRAn369DHtDwoKwpYtW7Bu3To0bdoU69evx9atW83GCwUEBKBVq1b4+uuv8633zTffRMuWLdGzZ0906dIFPj4+pjBiCe+++y6mTJmCwMBAxMXFYfv27XBwcAAAtGvXDp9++ik+/PBDNG/eHHv27MEbb7xh9vwVK1agcuXKCAoKQr9+/dCzZ89cPTjXrl1DZGQkXnrpJYvVTVQRaURxTqoTERXCmDFjcPbs2VK5dHrHjh2YPn06Tp06BRsbdf7dNmPGDCQlJWHt2rVKl0JUrnGAMhFZzHvvvYfg4GA4Oztj586d+OKLL7B69epSea8+ffrgwoULuHbtGvz8/ErlPZRWtWpVTJ8+XekyiMo99uwQkcUMHjwYBw8eREpKCurWrYtJkyZh3LhxSpdFRBUcww4RERGpmjpPdBMRERE9xLBDREREqsawQ0RERKrGsENERESqxrBDREREqsawQ0RERKrGsENERESqxrBDREREqvb/FxL8IS59UXwAAAAASUVORK5CYII=",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"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"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Degree of polynomial: 4\n",
|
||
"Mean squared error on training data: 302.15313054\n",
|
||
"Mean squared error on test data: 433.26292364\n",
|
||
"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",
|
||
"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"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Degree of polynomial: 10\n",
|
||
"Mean squared error on training data: 0.02424794\n",
|
||
"Mean squared error on test data: 0.22467274\n",
|
||
"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.47012753\n",
|
||
"Degree of polynomial: 16\n",
|
||
"Mean squared error on training data: 0.00325450\n",
|
||
"Mean squared error on test data: 48.97685287\n",
|
||
"Degree of polynomial: 17\n",
|
||
"Mean squared error on training data: 0.00242954\n",
|
||
"Mean squared error on test data: 2.52782586\n",
|
||
"Degree of polynomial: 18\n",
|
||
"Mean squared error on training data: 0.00219779\n",
|
||
"Mean squared error on test data: 284.68987081\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Degree of polynomial: 19\n",
|
||
"Mean squared error on training data: 0.00201955\n",
|
||
"Mean squared error on test data: 136.29992510\n",
|
||
"Degree of polynomial: 20\n",
|
||
"Mean squared error on training data: 0.00155735\n",
|
||
"Mean squared error on test data: 70.87930598\n",
|
||
"Degree of polynomial: 21\n",
|
||
"Mean squared error on training data: 0.00154457\n",
|
||
"Mean squared error on test data: 105.03374827\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Degree of polynomial: 22\n",
|
||
"Mean squared error on training data: 0.00150960\n",
|
||
"Mean squared error on test data: 210.67623727\n",
|
||
"Degree of polynomial: 23\n",
|
||
"Mean squared error on training data: 0.00132290\n",
|
||
"Mean squared error on test data: 196.78431405\n",
|
||
"Degree of polynomial: 24\n",
|
||
"Mean squared error on training data: 0.00112186\n",
|
||
"Mean squared error on test data: 1079.88369078\n",
|
||
"Degree of polynomial: 25\n",
|
||
"Mean squared error on training data: 0.00101842\n",
|
||
"Mean squared error on test data: 807.67805612\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Degree of polynomial: 26\n",
|
||
"Mean squared error on training data: 0.00092704\n",
|
||
"Mean squared error on test data: 484.10081797\n",
|
||
"Degree of polynomial: 27\n",
|
||
"Mean squared error on training data: 0.00088177\n",
|
||
"Mean squared error on test data: 197.80984941\n",
|
||
"Degree of polynomial: 28\n",
|
||
"Mean squared error on training data: 0.00091032\n",
|
||
"Mean squared error on test data: 219.14413009\n",
|
||
"Degree of polynomial: 29\n",
|
||
"Mean squared error on training data: 0.00089441\n",
|
||
"Mean squared error on test data: 741.75681920\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/var/folders/td/3yk470mj5p931p9dtkk0y6jw0000gn/T/ipykernel_72310/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_72310/626635268.py:74: RuntimeWarning: divide by zero encountered in log10\n",
|
||
" plt.plot(polynomial, np.log10(testerror), label='Test Error')\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAGyCAYAAADptr7VAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABv6ElEQVR4nO3dd3xT9f7H8VfSvVsKpQXKpuw9FJAlCG647g0O3AO3Xq/jOn44cV5x47xXVHCgKIKyhzIFoexRVimzk67k/P44TaHQ0pX2JOn7+XjkkZOTk5NPY6Tvfs932AzDMBARERHxIXarCxARERFxNwUcERER8TkKOCIiIuJzFHBERETE5yjgiIiIiM9RwBERERGfo4AjIiIiPkcBR0RERHyOAo6IiIj4HH+rC6hNTqeTPXv2EBERgc1ms7ocERERqQDDMMjMzKRRo0bY7RVrm/GqgLN7924efvhhfv75Z44ePUpSUhIffvghPXv2rNDr9+zZQ2JiYg1XKSIiIjVh586dNGnSpELHek3AOXz4MP3792fIkCH8/PPPxMXFsWXLFqKjoyt8joiICMD8gCIjI2uoUhEREXGnjIwMEhMTi3+PV4TXBJwXXniBxMREJk2aVLyvefPmlTqH67JUZGSkAo6IiIiXqUz3Eq/pZPzDDz/Qq1cvLr30UuLi4ujevTvvv//+KV+Tl5dHRkZGiZuIiIj4Pq8JOFu3bmXixIm0adOGGTNmcOutt3L33Xfz6aeflvma8ePHExUVVXxT/xsREZG6wWYYhmF1ERURGBhIr169WLRoUfG+u+++m6VLl7J48eJSX5OXl0deXl7xY9c1vPT0dF2iEhER8RIZGRlERUVV6ve31/TBSUhIoEOHDiX2tW/fnilTppT5mqCgIIKCgmq6NBEROYHD4aCgoMDqMsRLBAQE4Ofn59Zzek3A6d+/Pxs2bCixb+PGjTRr1syiikRE5ESGYZCamsqRI0esLkW8THR0NPHx8W6bp85rAs69995Lv379+L//+z8uu+wy/vzzT9577z3ee+89q0sTEZEirnATFxdHaGioJlWVchmGQU5ODmlpaYB5xcYdvCbg9O7dm2+//ZZHH32Up59+mhYtWvDaa69x9dVXW12aiIhgXpZyhZvY2FiryxEvEhISAkBaWhpxcXFuuVzlNQEH4Pzzz+f888+3ugwRESmFq89NaGioxZWIN3J9bwoKCtwScLxmmLiIiHgHXZaSqnD390YBR0RERHyOAo6IiEgNGDx4MOPGjavw8du3b8dms7Fq1aoaq6kuUcAREZE6zWaznfI2ZsyYKp136tSpPPPMMxU+PjExkb1799KpU6cqvV9FuYJUabclS5bU6HvXJq/qZOyxHIXkbZhFUIezra5EREQqae/evcXbkydP5oknnigx75prhI9LQUEBAQEB5Z63Xr16larDz8+P+Pj4Sr2mOmbNmkXHjh1L7Ctr9FtZP3NFPwt3va4y1IJTTc6CfPa8NYKgry7nwNJvrC5HREQqKT4+vvgWFRWFzWYrfpybm0t0dDRfffUVgwcPJjg4mM8//5yDBw9y5ZVX0qRJE0JDQ+ncuTP/+9//Spz3xEtUzZs35//+7/+44YYbiIiIoGnTpiXmcjvxEtWcOXOw2Wz89ttv9OrVi9DQUPr163fSpLfPPvsscXFxREREcNNNN/HII4/QrVu3cn/u2NjYEj97fHx8ceh46qmn6NatGx999BEtW7YkKCgIwzCw2Wy88847jBw5krCwMJ599lkAJk6cSKtWrQgMDKRt27Z89tlnJd6rrNfVJAWcanLa/VmWay7iGTr9LhwHtlhckYiI5zAMg5z8Qktu7lxq8eGHH+buu+8mOTmZESNGkJubS8+ePfnxxx/5+++/ufnmm7n22mv5448/TnmeV155hV69erFy5Upuv/12brvtNtavX3/K1zz22GO88sorLFu2DH9/f2644Ybi57744guee+45XnjhBZYvX07Tpk2ZOHGiW37mzZs389VXXzFlypQS/YKefPJJRo4cyZo1a7jhhhv49ttvueeee7j//vv5+++/ueWWW7j++uuZPXt2ifOd+LqapktU1eTvZ6fb9a+z4j/r6MEGDky6gvrj5kFASPkvFhHxcUcLHHR4YoYl773u6RGEBrrn19y4ceO46KKLSux74IEHirfvuusufvnlF77++mtOO+20Ms9z7rnncvvttwNmaHr11VeZM2cO7dq1K/M1zz33HIMGDQLgkUce4bzzziM3N5fg4GDefPNNbrzxRq6//noAnnjiCX799VeysrLK/Zn69euH3V6ynSM9Pb14Dpr8/Hw+++wzGjRoUOKYq666qkRAueqqqxgzZkzxz3XfffexZMkSXn75ZYYMGVLm62qaWnDcoGlcFHvOmsh+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+qT9rVu3JjAwkAULFnDVVVcBUFBQwLJlyxg3blyZ57vmmmt46KGHeOONN1i7di2jR4+uVD0dOnRgwYIFJfYtWrSIpKSkk36RV8f8+fMZM2YM//jHPwCzT8727dsr/PqoqCgSEhJYsmRJcQtVYWEhy5cvp0ePHgDFHYJTUlIYNGhQqedp164d06dPL7Hv+M7RZenevTsOh4O0tDQGDBhQ6jE9evRg7dq1pf73FZGSFHBE6oiwsDBuu+02HnzwQerVq0fTpk158cUXycnJ4cYbbyzzdTExMVx00UU8+OCDDB8+nCZNmlTqfe+//3569+7NM888w+WXX87ixYt56623ePvtt6v7I5XQunVrpk6dygUXXIDNZuPxxx8vs7WnLPfccw/PP/88bdq0oX379kyYMKHEpIcRERE88MAD3HvvvTidTs444wwyMjJYtGgR4eHhjB49mltuuYUJEybw8MMPc+ONN7Jq1ariDtWnailLSkri6quv5rrrruOVV16he/fuHDhwgN9//53OnTtz7rnn8vDDD3P66adzxx13MHbsWMLCwkhOTmbmzJm8+eabVfnYRHyW+uCI1CHPP/88F198Mddeey09evRg8+bNzJgxg5iYmFO+7sYbbyQ/P58bbrih0u/Zo0cPvvrqK7788ks6derEE088wdNPP82YMWOq+FOU7tVXXyUmJoZ+/fpxwQUXMGLEiOKWl4q6//77ue666xgzZgx9+/YlIiKiuEXI5ZlnnuGJJ55g/PjxtG/fnhEjRjBt2jRatGgBQIsWLfjmm2+YOnUqXbp0YeLEicWjqFyXscoyadIkrrvuOu6//37atm3LhRdeyB9//EFiYiJg9lOaO3cumzZtYsCAAXTv3p3HH3+8uN+TiBxjM0q7OCwicpwvvviCe+65hz179hAYGGh1OV7nueee45133mHnzp1WlyJSZ+gSlYiUKScnh23btjF+/HhuueUWhZsKevvtt+nduzexsbEsXLiQl156SXPViNQyXaISkTK9+OKLdOvWjYYNG/Loo49aXY7X2LRpEyNHjqRDhw4888wz3H///Tz11FNWlyVSp+gSlYiIiPgcteCIiIiIz1HAEREREZ+jgCMiIiI+RwFHREREfI4CjoiIiPgcBRwRERHxOQo4IiIi4nMUcERERMTn/D8exKYrT3taKgAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"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_72310/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": {},
|
||
"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.15"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
} |