6667 lines
810 KiB
Plaintext
6667 lines
810 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- dom:TITLE: Data Analysis and Machine Learning: Linear Regression and more Advanced Regression Analysis -->\n",
|
||
"# Data Analysis and Machine Learning: Linear Regression and more Advanced Regression Analysis\n",
|
||
"<!-- dom:AUTHOR: Morten Hjorth-Jensen at Department of Physics, University of Oslo & Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University -->\n",
|
||
"<!-- Author: --> \n",
|
||
"**Morten Hjorth-Jensen**, Department of Physics, University of Oslo and Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University\n",
|
||
"\n",
|
||
"Date: **Sep 11, 2020**\n",
|
||
"\n",
|
||
"Copyright 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Why Linear Regression (aka Ordinary Least Squares and family)\n",
|
||
"\n",
|
||
"Fitting a continuous function with linear parameterization in terms of the parameters $\\boldsymbol{\\beta}$.\n",
|
||
"* Method of choice for fitting a continuous function!\n",
|
||
"\n",
|
||
"* Gives an excellent introduction to central Machine Learning features with **understandable pedagogical** links to other methods like **Neural Networks**, **Support Vector Machines** etc\n",
|
||
"\n",
|
||
"* Analytical expression for the fitting parameters $\\boldsymbol{\\beta}$\n",
|
||
"\n",
|
||
"* Analytical expressions for statistical propertiers like mean values, variances, confidence intervals and more\n",
|
||
"\n",
|
||
"* Analytical relation with probabilistic interpretations \n",
|
||
"\n",
|
||
"* Easy to introduce basic concepts like bias-variance tradeoff, cross-validation, resampling and regularization techniques and many other ML topics\n",
|
||
"\n",
|
||
"* Easy to code! And links well with classification problems and logistic regression and neural networks\n",
|
||
"\n",
|
||
"* Allows for **easy** hands-on understanding of gradient descent methods\n",
|
||
"\n",
|
||
"* and many more features\n",
|
||
"\n",
|
||
"For more discussions of Ridge and Lasso regression, [Wessel van Wieringen's](https://arxiv.org/abs/1509.09169) article is highly recommended.\n",
|
||
"Similarly, [Mehta et al's article](https://arxiv.org/abs/1803.08823) is also recommended.\n",
|
||
"\n",
|
||
"\n",
|
||
"## Regression analysis, overarching aims\n",
|
||
"\n",
|
||
"Regression modeling deals with the description of the sampling distribution of a given random variable $y$ and how it varies as function of another variable or a set of such variables $\\boldsymbol{x} =[x_0, x_1,\\dots, x_{n-1}]^T$. \n",
|
||
"The first variable is called the **dependent**, the **outcome** or the **response** variable while the set of variables $\\boldsymbol{x}$ is called the independent variable, or the predictor variable or the explanatory variable. \n",
|
||
"\n",
|
||
"A regression model aims at finding a likelihood function $p(\\boldsymbol{y}\\vert \\boldsymbol{x})$, that is the conditional distribution for $\\boldsymbol{y}$ with a given $\\boldsymbol{x}$. The estimation of $p(\\boldsymbol{y}\\vert \\boldsymbol{x})$ is made using a data set with \n",
|
||
"* $n$ cases $i = 0, 1, 2, \\dots, n-1$ \n",
|
||
"\n",
|
||
"* Response (target, dependent or outcome) variable $y_i$ with $i = 0, 1, 2, \\dots, n-1$ \n",
|
||
"\n",
|
||
"* $p$ so-called explanatory (independent or predictor) variables $\\boldsymbol{x}_i=[x_{i0}, x_{i1}, \\dots, x_{ip-1}]$ with $i = 0, 1, 2, \\dots, n-1$ and explanatory variables running from $0$ to $p-1$. See below for more explicit examples. \n",
|
||
"\n",
|
||
" The goal of the regression analysis is to extract/exploit relationship between $\\boldsymbol{y}$ and $\\boldsymbol{x}$ in or to infer causal dependencies, approximations to the likelihood functions, functional relationships and to make predictions, making fits and many other things.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Regression analysis, overarching aims II\n",
|
||
"\n",
|
||
"\n",
|
||
"Consider an experiment in which $p$ characteristics of $n$ samples are\n",
|
||
"measured. The data from this experiment, for various explanatory variables $p$ are normally represented by a matrix \n",
|
||
"$\\mathbf{X}$.\n",
|
||
"\n",
|
||
"The matrix $\\mathbf{X}$ is called the *design\n",
|
||
"matrix*. Additional information of the samples is available in the\n",
|
||
"form of $\\boldsymbol{y}$ (also as above). The variable $\\boldsymbol{y}$ is\n",
|
||
"generally referred to as the *response variable*. The aim of\n",
|
||
"regression analysis is to explain $\\boldsymbol{y}$ in terms of\n",
|
||
"$\\boldsymbol{X}$ through a functional relationship like $y_i =\n",
|
||
"f(\\mathbf{X}_{i,\\ast})$. When no prior knowledge on the form of\n",
|
||
"$f(\\cdot)$ is available, it is common to assume a linear relationship\n",
|
||
"between $\\boldsymbol{X}$ and $\\boldsymbol{y}$. This assumption gives rise to\n",
|
||
"the *linear regression model* where $\\boldsymbol{\\beta} = [\\beta_0, \\ldots,\n",
|
||
"\\beta_{p-1}]^{T}$ are the *regression parameters*. \n",
|
||
"\n",
|
||
"Linear regression gives us a set of analytical equations for the parameters $\\beta_j$.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Examples\n",
|
||
"In order to understand the relation among the predictors $p$, the set of data $n$ and the target (outcome, output etc) $\\boldsymbol{y}$,\n",
|
||
"consider the model we discussed for describing nuclear binding energies. \n",
|
||
"\n",
|
||
"There we assumed that we could parametrize the data using a polynomial approximation based on the liquid drop model.\n",
|
||
"Assuming"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"BE(A) = a_0+a_1A+a_2A^{2/3}+a_3A^{-1/3}+a_4A^{-1},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"we have five predictors, that is the intercept, the $A$ dependent term, the $A^{2/3}$ term and the $A^{-1/3}$ and $A^{-1}$ terms.\n",
|
||
"This gives $p=0,1,2,3,4$. Furthermore we have $n$ entries for each predictor. It means that our design matrix is a \n",
|
||
"$p\\times n$ matrix $\\boldsymbol{X}$.\n",
|
||
"\n",
|
||
"Here the predictors are based on a model we have made. A popular data set which is widely encountered in ML applications is the\n",
|
||
"so-called [credit card default data from Taiwan](https://www.sciencedirect.com/science/article/pii/S0957417407006719?via%3Dihub). The data set contains data on $n=30000$ credit card holders with predictors like gender, marital status, age, profession, education, etc. In total there are $24$ such predictors or attributes leading to a design matrix of dimensionality $24 \\times 30000$. This is however a classification problem and we will come back to it when we discuss Logistic Regression.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## General linear models\n",
|
||
"Before we proceed let us study a case from linear algebra where we aim at fitting a set of data $\\boldsymbol{y}=[y_0,y_1,\\dots,y_{n-1}]$. We could think of these data as a result of an experiment or a complicated numerical experiment. These data are functions of a series of variables $\\boldsymbol{x}=[x_0,x_1,\\dots,x_{n-1}]$, that is $y_i = y(x_i)$ with $i=0,1,2,\\dots,n-1$. The variables $x_i$ could represent physical quantities like time, temperature, position etc. We assume that $y(x)$ is a smooth function. \n",
|
||
"\n",
|
||
"Since obtaining these data points may not be trivial, we want to use these data to fit a function which can allow us to make predictions for values of $y$ which are not in the present set. The perhaps simplest approach is to assume we can parametrize our function in terms of a polynomial of degree $n-1$ with $n$ points, that is"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"y=y(x) \\rightarrow y(x_i)=\\tilde{y}_i+\\epsilon_i=\\sum_{j=0}^{n-1} \\beta_j x_i^j+\\epsilon_i,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"where $\\epsilon_i$ is the error in our approximation.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Rewriting the fitting procedure as a linear algebra problem\n",
|
||
"For every set of values $y_i,x_i$ we have thus the corresponding set of equations"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\begin{align*}\n",
|
||
"y_0&=\\beta_0+\\beta_1x_0^1+\\beta_2x_0^2+\\dots+\\beta_{n-1}x_0^{n-1}+\\epsilon_0\\\\\n",
|
||
"y_1&=\\beta_0+\\beta_1x_1^1+\\beta_2x_1^2+\\dots+\\beta_{n-1}x_1^{n-1}+\\epsilon_1\\\\\n",
|
||
"y_2&=\\beta_0+\\beta_1x_2^1+\\beta_2x_2^2+\\dots+\\beta_{n-1}x_2^{n-1}+\\epsilon_2\\\\\n",
|
||
"\\dots & \\dots \\\\\n",
|
||
"y_{n-1}&=\\beta_0+\\beta_1x_{n-1}^1+\\beta_2x_{n-1}^2+\\dots+\\beta_{n-1}x_{n-1}^{n-1}+\\epsilon_{n-1}.\\\\\n",
|
||
"\\end{align*}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Rewriting the fitting procedure as a linear algebra problem, more details\n",
|
||
"Defining the vectors"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{y} = [y_0,y_1, y_2,\\dots, y_{n-1}]^T,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\beta} = [\\beta_0,\\beta_1, \\beta_2,\\dots, \\beta_{n-1}]^T,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\epsilon} = [\\epsilon_0,\\epsilon_1, \\epsilon_2,\\dots, \\epsilon_{n-1}]^T,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and the design matrix"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}=\n",
|
||
"\\begin{bmatrix} \n",
|
||
"1& x_{0}^1 &x_{0}^2& \\dots & \\dots &x_{0}^{n-1}\\\\\n",
|
||
"1& x_{1}^1 &x_{1}^2& \\dots & \\dots &x_{1}^{n-1}\\\\\n",
|
||
"1& x_{2}^1 &x_{2}^2& \\dots & \\dots &x_{2}^{n-1}\\\\ \n",
|
||
"\\dots& \\dots &\\dots& \\dots & \\dots &\\dots\\\\\n",
|
||
"1& x_{n-1}^1 &x_{n-1}^2& \\dots & \\dots &x_{n-1}^{n-1}\\\\\n",
|
||
"\\end{bmatrix}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"we can rewrite our equations as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{y} = \\boldsymbol{X}\\boldsymbol{\\beta}+\\boldsymbol{\\epsilon}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The above design matrix is called a [Vandermonde matrix](https://en.wikipedia.org/wiki/Vandermonde_matrix).\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Generalizing the fitting procedure as a linear algebra problem\n",
|
||
"\n",
|
||
"We are obviously not limited to the above polynomial expansions. We\n",
|
||
"could replace the various powers of $x$ with elements of Fourier\n",
|
||
"series or instead of $x_i^j$ we could have $\\cos{(j x_i)}$ or $\\sin{(j\n",
|
||
"x_i)}$, or time series or other orthogonal functions. For every set\n",
|
||
"of values $y_i,x_i$ we can then generalize the equations to"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\begin{align*}\n",
|
||
"y_0&=\\beta_0x_{00}+\\beta_1x_{01}+\\beta_2x_{02}+\\dots+\\beta_{n-1}x_{0n-1}+\\epsilon_0\\\\\n",
|
||
"y_1&=\\beta_0x_{10}+\\beta_1x_{11}+\\beta_2x_{12}+\\dots+\\beta_{n-1}x_{1n-1}+\\epsilon_1\\\\\n",
|
||
"y_2&=\\beta_0x_{20}+\\beta_1x_{21}+\\beta_2x_{22}+\\dots+\\beta_{n-1}x_{2n-1}+\\epsilon_2\\\\\n",
|
||
"\\dots & \\dots \\\\\n",
|
||
"y_{i}&=\\beta_0x_{i0}+\\beta_1x_{i1}+\\beta_2x_{i2}+\\dots+\\beta_{n-1}x_{in-1}+\\epsilon_i\\\\\n",
|
||
"\\dots & \\dots \\\\\n",
|
||
"y_{n-1}&=\\beta_0x_{n-1,0}+\\beta_1x_{n-1,2}+\\beta_2x_{n-1,2}+\\dots+\\beta_{n-1}x_{n-1,n-1}+\\epsilon_{n-1}.\\\\\n",
|
||
"\\end{align*}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Note that we have $p=n$ here. The matrix is symmetric. This is generally not the case!**\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Generalizing the fitting procedure as a linear algebra problem\n",
|
||
"We redefine in turn the matrix $\\boldsymbol{X}$ as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}=\n",
|
||
"\\begin{bmatrix} \n",
|
||
"x_{00}& x_{01} &x_{02}& \\dots & \\dots &x_{0,n-1}\\\\\n",
|
||
"x_{10}& x_{11} &x_{12}& \\dots & \\dots &x_{1,n-1}\\\\\n",
|
||
"x_{20}& x_{21} &x_{22}& \\dots & \\dots &x_{2,n-1}\\\\ \n",
|
||
"\\dots& \\dots &\\dots& \\dots & \\dots &\\dots\\\\\n",
|
||
"x_{n-1,0}& x_{n-1,1} &x_{n-1,2}& \\dots & \\dots &x_{n-1,n-1}\\\\\n",
|
||
"\\end{bmatrix}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and without loss of generality we rewrite again our equations as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{y} = \\boldsymbol{X}\\boldsymbol{\\beta}+\\boldsymbol{\\epsilon}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The left-hand side of this equation is kwown. Our error vector $\\boldsymbol{\\epsilon}$ and the parameter vector $\\boldsymbol{\\beta}$ are our unknow quantities. How can we obtain the optimal set of $\\beta_i$ values?\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Optimizing our parameters\n",
|
||
"We have defined the matrix $\\boldsymbol{X}$ via the equations"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\begin{align*}\n",
|
||
"y_0&=\\beta_0x_{00}+\\beta_1x_{01}+\\beta_2x_{02}+\\dots+\\beta_{n-1}x_{0n-1}+\\epsilon_0\\\\\n",
|
||
"y_1&=\\beta_0x_{10}+\\beta_1x_{11}+\\beta_2x_{12}+\\dots+\\beta_{n-1}x_{1n-1}+\\epsilon_1\\\\\n",
|
||
"y_2&=\\beta_0x_{20}+\\beta_1x_{21}+\\beta_2x_{22}+\\dots+\\beta_{n-1}x_{2n-1}+\\epsilon_1\\\\\n",
|
||
"\\dots & \\dots \\\\\n",
|
||
"y_{i}&=\\beta_0x_{i0}+\\beta_1x_{i1}+\\beta_2x_{i2}+\\dots+\\beta_{n-1}x_{in-1}+\\epsilon_1\\\\\n",
|
||
"\\dots & \\dots \\\\\n",
|
||
"y_{n-1}&=\\beta_0x_{n-1,0}+\\beta_1x_{n-1,2}+\\beta_2x_{n-1,2}+\\dots+\\beta_{n-1}x_{n-1,n-1}+\\epsilon_{n-1}.\\\\\n",
|
||
"\\end{align*}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"As we noted above, we stayed with a system with the design matrix \n",
|
||
" $\\boldsymbol{X}\\in {\\mathbb{R}}^{n\\times n}$, that is we have $p=n$. For reasons to come later (algorithmic arguments) we will hereafter define \n",
|
||
"our matrix as $\\boldsymbol{X}\\in {\\mathbb{R}}^{n\\times p}$, with the predictors refering to the column numbers and the entries $n$ being the row elements.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Our model for the nuclear binding energies\n",
|
||
"\n",
|
||
"In our [introductory notes](https://compphysics.github.io/MachineLearning/doc/pub/How2ReadData/html/How2ReadData.html) we looked at the so-called [liquid drop model](https://en.wikipedia.org/wiki/Semi-empirical_mass_formula). Let us remind ourselves about what we did by looking at the code.\n",
|
||
"\n",
|
||
"We restate the parts of the code we are most interested in."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
<<<<<<< HEAD
|
||
"ename": "FileNotFoundError",
|
||
"evalue": "[Errno 2] No such file or directory: 'DataFiles/MassEval2016.dat'",
|
||
"output_type": "error",
|
||
"traceback": [
|
||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
|
||
"\u001b[0;32m<ipython-input-1-58d214e24281>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msavefig\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage_path\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfig_id\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m\".png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mformat\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'png'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 32\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 33\u001b[0;31m \u001b[0minfile\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata_path\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"MassEval2016.dat\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'r'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 34\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'DataFiles/MassEval2016.dat'"
|
||
]
|
||
=======
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>1</th>\n",
|
||
" <th>A</th>\n",
|
||
" <th>A^(2/3)</th>\n",
|
||
" <th>A^(-1/3)</th>\n",
|
||
" <th>1/A</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>A</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.587401</td>\n",
|
||
" <td>0.793701</td>\n",
|
||
" <td>0.500000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>2.080084</td>\n",
|
||
" <td>0.693361</td>\n",
|
||
" <td>0.333333</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>2.519842</td>\n",
|
||
" <td>0.629961</td>\n",
|
||
" <td>0.250000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>2.924018</td>\n",
|
||
" <td>0.584804</td>\n",
|
||
" <td>0.200000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>264</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>264.0</td>\n",
|
||
" <td>41.153106</td>\n",
|
||
" <td>0.155883</td>\n",
|
||
" <td>0.003788</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>265</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>265.0</td>\n",
|
||
" <td>41.256962</td>\n",
|
||
" <td>0.155687</td>\n",
|
||
" <td>0.003774</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>266</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>266.0</td>\n",
|
||
" <td>41.360688</td>\n",
|
||
" <td>0.155491</td>\n",
|
||
" <td>0.003759</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>269</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>269.0</td>\n",
|
||
" <td>41.671089</td>\n",
|
||
" <td>0.154911</td>\n",
|
||
" <td>0.003717</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>270</th>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>270.0</td>\n",
|
||
" <td>41.774300</td>\n",
|
||
" <td>0.154720</td>\n",
|
||
" <td>0.003704</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>267 rows × 5 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" 1 A A^(2/3) A^(-1/3) 1/A\n",
|
||
"A \n",
|
||
"1 1.0 1.0 1.000000 1.000000 1.000000\n",
|
||
"2 1.0 2.0 1.587401 0.793701 0.500000\n",
|
||
"3 1.0 3.0 2.080084 0.693361 0.333333\n",
|
||
"4 1.0 4.0 2.519842 0.629961 0.250000\n",
|
||
"5 1.0 5.0 2.924018 0.584804 0.200000\n",
|
||
".. ... ... ... ... ...\n",
|
||
"264 1.0 264.0 41.153106 0.155883 0.003788\n",
|
||
"265 1.0 265.0 41.256962 0.155687 0.003774\n",
|
||
"266 1.0 266.0 41.360688 0.155491 0.003759\n",
|
||
"269 1.0 269.0 41.671089 0.154911 0.003717\n",
|
||
"270 1.0 270.0 41.774300 0.154720 0.003704\n",
|
||
"\n",
|
||
"[267 rows x 5 columns]"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
}
|
||
],
|
||
"source": [
|
||
"%matplotlib inline\n",
|
||
"\n",
|
||
"# Common imports\n",
|
||
"import numpy as np\n",
|
||
"import pandas as pd\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"from IPython.display import display\n",
|
||
"import os\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(\"MassEval2016.dat\"),'r')\n",
|
||
"\n",
|
||
"\n",
|
||
"# Read the experimental data with Pandas\n",
|
||
"Masses = pd.read_fwf(infile, usecols=(2,3,4,6,11),\n",
|
||
" names=('N', 'Z', 'A', 'Element', 'Ebinding'),\n",
|
||
" widths=(1,3,5,5,5,1,3,4,1,13,11,11,9,1,2,11,9,1,3,1,12,11,1),\n",
|
||
" header=39,\n",
|
||
" index_col=False)\n",
|
||
"\n",
|
||
"# Extrapolated values are indicated by '#' in place of the decimal place, so\n",
|
||
"# the Ebinding column won't be numeric. Coerce to float and drop these entries.\n",
|
||
"Masses['Ebinding'] = pd.to_numeric(Masses['Ebinding'], errors='coerce')\n",
|
||
"Masses = Masses.dropna()\n",
|
||
"# Convert from keV to MeV.\n",
|
||
"Masses['Ebinding'] /= 1000\n",
|
||
"\n",
|
||
"# Group the DataFrame by nucleon number, A.\n",
|
||
"Masses = Masses.groupby('A')\n",
|
||
"# Find the rows of the grouped DataFrame with the maximum binding energy.\n",
|
||
"Masses = Masses.apply(lambda t: t[t.Ebinding==t.Ebinding.max()])\n",
|
||
"A = Masses['A']\n",
|
||
"Z = Masses['Z']\n",
|
||
"N = Masses['N']\n",
|
||
"Element = Masses['Element']\n",
|
||
"Energies = Masses['Ebinding']\n",
|
||
"\n",
|
||
"# Now we set up the design matrix X\n",
|
||
"X = np.zeros((len(A),5))\n",
|
||
"X[:,0] = 1\n",
|
||
"X[:,1] = A\n",
|
||
"X[:,2] = A**(2.0/3.0)\n",
|
||
"X[:,3] = A**(-1.0/3.0)\n",
|
||
"X[:,4] = A**(-1.0)\n",
|
||
"# Then nice printout using pandas\n",
|
||
"DesignMatrix = pd.DataFrame(X)\n",
|
||
"DesignMatrix.index = A\n",
|
||
"DesignMatrix.columns = ['1', 'A', 'A^(2/3)', 'A^(-1/3)', '1/A']\n",
|
||
"display(DesignMatrix)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"With $\\boldsymbol{\\beta}\\in {\\mathbb{R}}^{p\\times 1}$, it means that we will hereafter write our equations for the approximation as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\tilde{y}}= \\boldsymbol{X}\\boldsymbol{\\beta},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"throughout these lectures. \n",
|
||
"\n",
|
||
"\n",
|
||
"## Optimizing our parameters, more details\n",
|
||
"With the above we use the design matrix to define the approximation $\\boldsymbol{\\tilde{y}}$ via the unknown quantity $\\boldsymbol{\\beta}$ as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\tilde{y}}= \\boldsymbol{X}\\boldsymbol{\\beta},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and in order to find the optimal parameters $\\beta_i$ instead of solving the above linear algebra problem, we define a function which gives a measure of the spread between the values $y_i$ (which represent hopefully the exact values) and the parameterized values $\\tilde{y}_i$, namely"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"C(\\boldsymbol{\\beta})=\\frac{1}{n}\\sum_{i=0}^{n-1}\\left(y_i-\\tilde{y}_i\\right)^2=\\frac{1}{n}\\left\\{\\left(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}}\\right)^T\\left(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}}\\right)\\right\\},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"or using the matrix $\\boldsymbol{X}$ and in a more compact matrix-vector notation as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"C(\\boldsymbol{\\beta})=\\frac{1}{n}\\left\\{\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)^T\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)\\right\\}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"This function is one possible way to define the so-called cost function.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"It is also common to define\n",
|
||
"the function $C$ as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"C(\\boldsymbol{\\beta})=\\frac{1}{2n}\\sum_{i=0}^{n-1}\\left(y_i-\\tilde{y}_i\\right)^2,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"since when taking the first derivative with respect to the unknown parameters $\\beta$, the factor of $2$ cancels out.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Interpretations and optimizing our parameters\n",
|
||
"\n",
|
||
"The function"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"C(\\boldsymbol{\\beta})=\\frac{1}{n}\\left\\{\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)^T\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)\\right\\},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"can be linked to the variance of the quantity $y_i$ if we interpret the latter as the mean value. \n",
|
||
"When linking (see the discussion below) with the maximum likelihood approach below, we will indeed interpret $y_i$ as a mean value"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"y_{i}=\\langle y_i \\rangle = \\beta_0x_{i,0}+\\beta_1x_{i,1}+\\beta_2x_{i,2}+\\dots+\\beta_{n-1}x_{i,n-1}+\\epsilon_i,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"where $\\langle y_i \\rangle$ is the mean value. Keep in mind also that\n",
|
||
"till now we have treated $y_i$ as the exact value. Normally, the\n",
|
||
"response (dependent or outcome) variable $y_i$ the outcome of a\n",
|
||
"numerical experiment or another type of experiment and is thus only an\n",
|
||
"approximation to the true value. It is then always accompanied by an\n",
|
||
"error estimate, often limited to a statistical error estimate given by\n",
|
||
"the standard deviation discussed earlier. In the discussion here we\n",
|
||
"will treat $y_i$ as our exact value for the response variable.\n",
|
||
"\n",
|
||
"In order to find the parameters $\\beta_i$ we will then minimize the spread of $C(\\boldsymbol{\\beta})$, that is we are going to solve the problem"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in\n",
|
||
"{\\mathbb{R}}^{p}}}\\frac{1}{n}\\left\\{\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)^T\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)\\right\\}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"In practical terms it means we will require"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\frac{\\partial C(\\boldsymbol{\\beta})}{\\partial \\beta_j} = \\frac{\\partial }{\\partial \\beta_j}\\left[ \\frac{1}{n}\\sum_{i=0}^{n-1}\\left(y_i-\\beta_0x_{i,0}-\\beta_1x_{i,1}-\\beta_2x_{i,2}-\\dots-\\beta_{n-1}x_{i,n-1}\\right)^2\\right]=0,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"which results in"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\frac{\\partial C(\\boldsymbol{\\beta})}{\\partial \\beta_j} = -\\frac{2}{n}\\left[ \\sum_{i=0}^{n-1}x_{ij}\\left(y_i-\\beta_0x_{i,0}-\\beta_1x_{i,1}-\\beta_2x_{i,2}-\\dots-\\beta_{n-1}x_{i,n-1}\\right)\\right]=0,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"or in a matrix-vector form as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\frac{\\partial C(\\boldsymbol{\\beta})}{\\partial \\boldsymbol{\\beta}} = 0 = \\boldsymbol{X}^T\\left( \\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right).\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Interpretations and optimizing our parameters\n",
|
||
"We can rewrite"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\frac{\\partial C(\\boldsymbol{\\beta})}{\\partial \\boldsymbol{\\beta}} = 0 = \\boldsymbol{X}^T\\left( \\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right),\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}^T\\boldsymbol{y} = \\boldsymbol{X}^T\\boldsymbol{X}\\boldsymbol{\\beta},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and if the matrix $\\boldsymbol{X}^T\\boldsymbol{X}$ is invertible we have the solution"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\beta} =\\left(\\boldsymbol{X}^T\\boldsymbol{X}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We note also that since our design matrix is defined as $\\boldsymbol{X}\\in\n",
|
||
"{\\mathbb{R}}^{n\\times p}$, the product $\\boldsymbol{X}^T\\boldsymbol{X} \\in\n",
|
||
"{\\mathbb{R}}^{p\\times p}$. In the above case we have that $p \\ll n$,\n",
|
||
"in our case $p=5$ meaning that we end up with inverting a small\n",
|
||
"$5\\times 5$ matrix. This is a rather common situation, in many cases we end up with low-dimensional\n",
|
||
"matrices to invert. The methods discussed here and for many other\n",
|
||
"supervised learning algorithms like classification with logistic\n",
|
||
"regression or support vector machines, exhibit dimensionalities which\n",
|
||
"allow for the usage of direct linear algebra methods such as **LU** decomposition or **Singular Value Decomposition** (SVD) for finding the inverse of the matrix\n",
|
||
"$\\boldsymbol{X}^T\\boldsymbol{X}$.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"**Small question**: Do you think the example we have at hand here (the nuclear binding energies) can lead to problems in inverting the matrix $\\boldsymbol{X}^T\\boldsymbol{X}$? What kind of problems can we expect?\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Some useful matrix and vector expressions\n",
|
||
"\n",
|
||
"The following matrix and vector relation will be useful here and for the rest of the course. Vectors are always written as boldfaced lower case letters and \n",
|
||
"matrices as upper case boldfaced letters."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"2\n",
|
||
"6\n",
|
||
" \n",
|
||
"<\n",
|
||
"<\n",
|
||
"<\n",
|
||
"!\n",
|
||
"!\n",
|
||
"M\n",
|
||
"A\n",
|
||
"T\n",
|
||
"H\n",
|
||
"_\n",
|
||
"B\n",
|
||
"L\n",
|
||
"O\n",
|
||
"C\n",
|
||
"K"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"2\n",
|
||
"7\n",
|
||
" \n",
|
||
"<\n",
|
||
"<\n",
|
||
"<\n",
|
||
"!\n",
|
||
"!\n",
|
||
"M\n",
|
||
"A\n",
|
||
"T\n",
|
||
"H\n",
|
||
"_\n",
|
||
"B\n",
|
||
"L\n",
|
||
"O\n",
|
||
"C\n",
|
||
"K"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"2\n",
|
||
"8\n",
|
||
" \n",
|
||
"<\n",
|
||
"<\n",
|
||
"<\n",
|
||
"!\n",
|
||
"!\n",
|
||
"M\n",
|
||
"A\n",
|
||
"T\n",
|
||
"H\n",
|
||
"_\n",
|
||
"B\n",
|
||
"L\n",
|
||
"O\n",
|
||
"C\n",
|
||
"K"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\frac{\\partial \\log{\\vert\\boldsymbol{A}\\vert}}{\\partial \\boldsymbol{A}} = (\\boldsymbol{A}^{-1})^T.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Interpretations and optimizing our parameters\n",
|
||
"The residuals $\\boldsymbol{\\epsilon}$ are in turn given by"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\epsilon} = \\boldsymbol{y}-\\boldsymbol{\\tilde{y}} = \\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and with"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}^T\\left( \\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)= 0,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"we have"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}^T\\boldsymbol{\\epsilon}=\\boldsymbol{X}^T\\left( \\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)= 0,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"meaning that the solution for $\\boldsymbol{\\beta}$ is the one which minimizes the residuals. Later we will link this with the maximum likelihood approach.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"Let us now return to our nuclear binding energies and simply code the above equations. \n",
|
||
"\n",
|
||
"## Own code for Ordinary Least Squares\n",
|
||
"\n",
|
||
"It is rather straightforward to implement the matrix inversion and obtain the parameters $\\boldsymbol{\\beta}$. After having defined the matrix $\\boldsymbol{X}$ we simply need to \n",
|
||
"write"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# matrix inversion to find beta\n",
|
||
"beta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Energies)\n",
|
||
"# and then make the prediction\n",
|
||
"ytilde = X @ beta"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Alternatively, you can use the least squares functionality in **Numpy** as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"fit = np.linalg.lstsq(X, Energies, rcond =None)[0]\n",
|
||
"ytildenp = np.dot(fit,X.T)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"And finally we plot our fit with and compare with data"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
<<<<<<< HEAD
|
||
"image/png": "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J5KBP37iVSodye6JLFo9PT00NDTQ1dWllWwvgrszMDBAT08Pa9eunfLzIjkEHg/8jGr4IgtKLpejra1NYX+RzIy2trYL/qYUyUQMS+OzdDTCF1loFPYzYzr/jtEM/KJG+CIip4pkIoaV9fDTquGLyBl8+9vfxsx48cUXZ+T1vva1r7F582Y2b97Mddddx7PPPjux7Qc/+AGXXnop69ev59577524/+tf/zqXX345sViM7du3n/R6O3fu5K1vfSuXX345V1555Ywd5I5c4Ls7XqnhpzXCF5Ez2LZtG29729t48MEHZ+T11q5dy2OPPQs7MJkAAAu/SURBVMbOnTv57Gc/y9133w1AEAT8zu/8Dg899BC7du1i27Zt7Nq1C4ArrriCb33rW7zjHe846bVKpRIf+9jH+NKXvsQLL7zAo48+ekEzcc4lckNgD5zAHTeoUQ1fZMH6l19+alZe94E7rz3n9pGREX7605/yyCOPcOutt/L5z3+eRx99lM997nMsXbqUHTt2cNttt3HllVdy3333kc1m+c53vsMll1xCf38/n/jEJ9i/fz8Af/VXf8X111/PddddN/H6b3nLW+jp6QHgySefZP369axbtw6A22+/ne9+97ts2rSJyy677Izte/jhh9m8eTNXXXUVAG1tbRf9bzIuekPgAMIQwjiktXiaiJziO9/5DjfddBMbN26ktbWVZ555BoBnn32W++67j+eee46vfOUr7NmzhyeffJK77rqLv/7rvwbgU5/6FPfccw9PPfUU3/zmN7nrrrtOe/0HHniA9773vQD09vayatWqiW2dnZ309vaes3179uzBzLjxxhu5+uqr+bM/+7OZ6noER/glJ3TH45BJ6kxbkYXqfCPx2bJt2zY+/elPA+UR97Zt27jlllu49tprWb58OQCXXHIJ73nPewC48soreeSRRwD44Q9/OFGSARgeHubEiRM0NDQA8Mgjj/DAAw/w+OOPA+US86nON7umVCrx+OOP89RTT1FbW8sNN9zANddcww033HCRPY9i4AeVwI9BRiN8EZlkYGCAH//4xzz//POYGUEQYGbcfPPNpNPpicfFYrGJv2OxGKVSCYAwDPn5z39OTU3Naa+9c+dO7rrrLh566KGJMkxnZycHDhyYeExPTw8rVqw4Zxs7Ozt55zvfSXt7OwA333wzzzzzzIwEfuQSsZgP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\n",
|
||
=======
|
||
"image/png": "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J5KBP37iVSodye6JLFo9PT00NDTQ1dWllWwvgrszMDBAT08Pa9eunfLzIjkEHg/8jGr4IgtKLpejra1NYX+RzIy2trYL/qYUyUQMS+OzdDTCF1loFPYzYzr/jtEM/KJG+CIip4pkIoaV9fDTquGLyBl8+9vfxsx48cUXZ+T1vva1r7F582Y2b97Mddddx7PPPjux7Qc/+AGXXnop69ev59577524/+tf/zqXX345sViM7du3n/R6O3fu5K1vfSuXX345V1555Ywd5I5c4Ls7XqnhpzXCF5Ez2LZtG29729t48MEHZ+T11q5dy2OPPQs7MJkAAAu/SURBVMbOnTv57Gc/y9133w1AEAT8zu/8Dg899BC7du1i27Zt7Nq1C4ArrriCb33rW7zjHe846bVKpRIf+9jH+NKXvsQLL7zAo48+ekEzcc4lckNgD5zAHTeoUQ1fZMH6l19+alZe94E7rz3n9pGREX7605/yyCOPcOutt/L5z3+eRx99lM997nMsXbqUHTt2cNttt3HllVdy3333kc1m+c53vsMll1xCf38/n/jEJ9i/fz8Af/VXf8X111/PddddN/H6b3nLW+jp6QHgySefZP369axbtw6A22+/ne9+97ts2rSJyy677Izte/jhh9m8eTNXXXUVAG1tbRf9bzIuekPgAMIQwjiktXiaiJziO9/5DjfddBMbN26ktbWVZ555BoBnn32W++67j+eee46vfOUr7NmzhyeffJK77rqLv/7rvwbgU5/6FPfccw9PPfUU3/zmN7nrrrtOe/0HHniA9773vQD09vayatWqiW2dnZ309vaes3179uzBzLjxxhu5+uqr+bM/+7OZ6noER/glJ3TH45BJ6kxbkYXqfCPx2bJt2zY+/elPA+UR97Zt27jlllu49tprWb58OQCXXHIJ73nPewC48soreeSRRwD44Q9/OFGSARgeHubEiRM0NDQA8Mgjj/DAAw/w+OOPA+US86nON7umVCrx+OOP89RTT1FbW8sNN9zANddcww033HCRPY9i4AeVwI9BRiN8EZlkYGCAH//4xzz//POYGUEQYGbcfPPNpNPpicfFYrGJv2OxGKVSCYAwDPn5z39OTU3Naa+9c+dO7rrrLh566KGJMkxnZycHDhyYeExPTw8rVqw4Zxs7Ozt55zvfSXt7OwA333wzzzzzzIwEfuQSsZgP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\n",
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"filenames": {
|
||
<<<<<<< HEAD
|
||
"image/png": "/Users/MortenImac/Teaching/MachineLearning/doc/src/LectureNotes/_build/jupyter_execute/regression_70_0.png"
|
||
=======
|
||
"image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_70_0.png"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
},
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"Masses['Eapprox'] = ytilde\n",
|
||
"# Generate a plot comparing the experimental with the fitted values values.\n",
|
||
"fig, ax = plt.subplots()\n",
|
||
"ax.set_xlabel(r'$A = N + Z$')\n",
|
||
"ax.set_ylabel(r'$E_\\mathrm{bind}\\,/\\mathrm{MeV}$')\n",
|
||
"ax.plot(Masses['A'], Masses['Ebinding'], alpha=0.7, lw=2,\n",
|
||
" label='Ame2016')\n",
|
||
"ax.plot(Masses['A'], Masses['Eapprox'], alpha=0.7, lw=2, c='m',\n",
|
||
" label='Fit')\n",
|
||
"ax.legend()\n",
|
||
"save_fig(\"Masses2016OLS\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Adding error analysis and training set up\n",
|
||
"\n",
|
||
"We can easily test our fit by computing the $R2$ score that we discussed in connection with the functionality of **Scikit-Learn** in the introductory slides.\n",
|
||
"Since we are not using **Scikit-Learn** here we can define our own $R2$ function as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def R2(y_data, y_model):\n",
|
||
" return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and we would be using it as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0.9547578478889096\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(R2(Energies,ytilde))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We can easily add our **MSE** score as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
<<<<<<< HEAD
|
||
"0.037875961483052376\n"
|
||
=======
|
||
"0.03787596148305239\n"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"def MSE(y_data,y_model):\n",
|
||
" n = np.size(y_model)\n",
|
||
" return np.sum((y_data-y_model)**2)/n\n",
|
||
"\n",
|
||
"print(MSE(Energies,ytilde))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and finally the relative error as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"A \n",
|
||
"1 0 inf\n",
|
||
"2 1 1.123190\n",
|
||
"3 2 0.327631\n",
|
||
"4 6 0.344172\n",
|
||
"5 9 0.044402\n",
|
||
" ... \n",
|
||
"264 3304 0.009911\n",
|
||
"265 3310 0.009154\n",
|
||
"266 3317 0.007824\n",
|
||
"269 3338 0.011347\n",
|
||
"270 3344 0.009790\n",
|
||
"Name: Ebinding, Length: 267, dtype: float64\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"def RelativeError(y_data,y_model):\n",
|
||
" return abs((y_data-y_model)/y_data)\n",
|
||
"print(RelativeError(Energies, ytilde))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## The $\\chi^2$ function\n",
|
||
"\n",
|
||
"Normally, the response (dependent or outcome) variable $y_i$ is the\n",
|
||
"outcome of a numerical experiment or another type of experiment and is\n",
|
||
"thus only an approximation to the true value. It is then always\n",
|
||
"accompanied by an error estimate, often limited to a statistical error\n",
|
||
"estimate given by the standard deviation discussed earlier. In the\n",
|
||
"discussion here we will treat $y_i$ as our exact value for the\n",
|
||
"response variable.\n",
|
||
"\n",
|
||
"Introducing the standard deviation $\\sigma_i$ for each measurement\n",
|
||
"$y_i$, we define now the $\\chi^2$ function (omitting the $1/n$ term)\n",
|
||
"as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\chi^2(\\boldsymbol{\\beta})=\\frac{1}{n}\\sum_{i=0}^{n-1}\\frac{\\left(y_i-\\tilde{y}_i\\right)^2}{\\sigma_i^2}=\\frac{1}{n}\\left\\{\\left(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}}\\right)^T\\frac{1}{\\boldsymbol{\\Sigma^2}}\\left(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}}\\right)\\right\\},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"where the matrix $\\boldsymbol{\\Sigma}$ is a diagonal matrix with $\\sigma_i$ as matrix elements.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## The $\\chi^2$ function\n",
|
||
"\n",
|
||
"In order to find the parameters $\\beta_i$ we will then minimize the spread of $\\chi^2(\\boldsymbol{\\beta})$ by requiring"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\frac{\\partial \\chi^2(\\boldsymbol{\\beta})}{\\partial \\beta_j} = \\frac{\\partial }{\\partial \\beta_j}\\left[ \\frac{1}{n}\\sum_{i=0}^{n-1}\\left(\\frac{y_i-\\beta_0x_{i,0}-\\beta_1x_{i,1}-\\beta_2x_{i,2}-\\dots-\\beta_{n-1}x_{i,n-1}}{\\sigma_i}\\right)^2\\right]=0,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"which results in"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\frac{\\partial \\chi^2(\\boldsymbol{\\beta})}{\\partial \\beta_j} = -\\frac{2}{n}\\left[ \\sum_{i=0}^{n-1}\\frac{x_{ij}}{\\sigma_i}\\left(\\frac{y_i-\\beta_0x_{i,0}-\\beta_1x_{i,1}-\\beta_2x_{i,2}-\\dots-\\beta_{n-1}x_{i,n-1}}{\\sigma_i}\\right)\\right]=0,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"or in a matrix-vector form as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\frac{\\partial \\chi^2(\\boldsymbol{\\beta})}{\\partial \\boldsymbol{\\beta}} = 0 = \\boldsymbol{A}^T\\left( \\boldsymbol{b}-\\boldsymbol{A}\\boldsymbol{\\beta}\\right).\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"where we have defined the matrix $\\boldsymbol{A} =\\boldsymbol{X}/\\boldsymbol{\\Sigma}$ with matrix elements $a_{ij} = x_{ij}/\\sigma_i$ and the vector $\\boldsymbol{b}$ with elements $b_i = y_i/\\sigma_i$.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## The $\\chi^2$ function\n",
|
||
"\n",
|
||
"We can rewrite"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\frac{\\partial \\chi^2(\\boldsymbol{\\beta})}{\\partial \\boldsymbol{\\beta}} = 0 = \\boldsymbol{A}^T\\left( \\boldsymbol{b}-\\boldsymbol{A}\\boldsymbol{\\beta}\\right),\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{A}^T\\boldsymbol{b} = \\boldsymbol{A}^T\\boldsymbol{A}\\boldsymbol{\\beta},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and if the matrix $\\boldsymbol{A}^T\\boldsymbol{A}$ is invertible we have the solution"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\beta} =\\left(\\boldsymbol{A}^T\\boldsymbol{A}\\right)^{-1}\\boldsymbol{A}^T\\boldsymbol{b}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## The $\\chi^2$ function\n",
|
||
"\n",
|
||
"If we then introduce the matrix"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{H} = \\left(\\boldsymbol{A}^T\\boldsymbol{A}\\right)^{-1},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"we have then the following expression for the parameters $\\beta_j$ (the matrix elements of $\\boldsymbol{H}$ are $h_{ij}$)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\beta_j = \\sum_{k=0}^{p-1}h_{jk}\\sum_{i=0}^{n-1}\\frac{y_i}{\\sigma_i}\\frac{x_{ik}}{\\sigma_i} = \\sum_{k=0}^{p-1}h_{jk}\\sum_{i=0}^{n-1}b_ia_{ik}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We state without proof the expression for the uncertainty in the parameters $\\beta_j$ as (we leave this as an exercise)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\sigma^2(\\beta_j) = \\sum_{i=0}^{n-1}\\sigma_i^2\\left( \\frac{\\partial \\beta_j}{\\partial y_i}\\right)^2,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"resulting in"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\sigma^2(\\beta_j) = \\left(\\sum_{k=0}^{p-1}h_{jk}\\sum_{i=0}^{n-1}a_{ik}\\right)\\left(\\sum_{l=0}^{p-1}h_{jl}\\sum_{m=0}^{n-1}a_{ml}\\right) = h_{jj}!\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## The $\\chi^2$ function\n",
|
||
"The first step here is to approximate the function $y$ with a first-order polynomial, that is we write"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"y=y(x) \\rightarrow y(x_i) \\approx \\beta_0+\\beta_1 x_i.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"By computing the derivatives of $\\chi^2$ with respect to $\\beta_0$ and $\\beta_1$ show that these are given by"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\frac{\\partial \\chi^2(\\boldsymbol{\\beta})}{\\partial \\beta_0} = -2\\left[ \\frac{1}{n}\\sum_{i=0}^{n-1}\\left(\\frac{y_i-\\beta_0-\\beta_1x_{i}}{\\sigma_i^2}\\right)\\right]=0,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\frac{\\partial \\chi^2(\\boldsymbol{\\beta})}{\\partial \\beta_1} = -\\frac{2}{n}\\left[ \\sum_{i=0}^{n-1}x_i\\left(\\frac{y_i-\\beta_0-\\beta_1x_{i}}{\\sigma_i^2}\\right)\\right]=0.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## The $\\chi^2$ function\n",
|
||
"\n",
|
||
"For a linear fit (a first-order polynomial) we don't need to invert a matrix!! \n",
|
||
"Defining"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\gamma = \\sum_{i=0}^{n-1}\\frac{1}{\\sigma_i^2},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\gamma_x = \\sum_{i=0}^{n-1}\\frac{x_{i}}{\\sigma_i^2},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\gamma_y = \\sum_{i=0}^{n-1}\\left(\\frac{y_i}{\\sigma_i^2}\\right),\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\gamma_{xx} = \\sum_{i=0}^{n-1}\\frac{x_ix_{i}}{\\sigma_i^2},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\gamma_{xy} = \\sum_{i=0}^{n-1}\\frac{y_ix_{i}}{\\sigma_i^2},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"we obtain"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\beta_0 = \\frac{\\gamma_{xx}\\gamma_y-\\gamma_x\\gamma_y}{\\gamma\\gamma_{xx}-\\gamma_x^2},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\beta_1 = \\frac{\\gamma_{xy}\\gamma-\\gamma_x\\gamma_y}{\\gamma\\gamma_{xx}-\\gamma_x^2}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"This approach (different linear and non-linear regression) suffers\n",
|
||
"often from both being underdetermined and overdetermined in the\n",
|
||
"unknown coefficients $\\beta_i$. A better approach is to use the\n",
|
||
"Singular Value Decomposition (SVD) method discussed below. Or using\n",
|
||
"Lasso and Ridge regression. See below.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Fitting an Equation of State for Dense Nuclear Matter\n",
|
||
"\n",
|
||
"Before we continue, let us introduce yet another example. We are going to fit the\n",
|
||
"nuclear equation of state using results from many-body calculations.\n",
|
||
"The equation of state we have made available here, as function of\n",
|
||
"density, has been derived using modern nucleon-nucleon potentials with\n",
|
||
"[the addition of three-body\n",
|
||
"forces](https://www.sciencedirect.com/science/article/pii/S0370157399001106). This\n",
|
||
"time the file is presented as a standard **csv** file.\n",
|
||
"\n",
|
||
"The beginning of the Python code here is similar to what you have seen\n",
|
||
"before, with the same initializations and declarations. We use also\n",
|
||
"**pandas** again, rather extensively in order to organize our data.\n",
|
||
"\n",
|
||
"The difference now is that we use **Scikit-Learn's** regression tools\n",
|
||
"instead of our own matrix inversion implementation. Furthermore, we\n",
|
||
"sneak in **Ridge** regression (to be discussed below) which includes a\n",
|
||
"hyperparameter $\\lambda$, also to be explained below.\n",
|
||
"\n",
|
||
"## The code"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Mean squared error: 12.36\n",
|
||
"Variance score: 1.00\n",
|
||
"Mean absolute error: 2.83\n",
|
||
<<<<<<< HEAD
|
||
"[ 0. 618.32047562 -861.13519106 1404.91549644] -11.057088709963296\n",
|
||
"Mean squared error: 197.93\n",
|
||
"Variance score: 1.00\n",
|
||
"Mean absolute error: 11.69\n",
|
||
"[ 0. 28.18220995 282.79902342 842.30879705] 12.946893955209475\n"
|
||
=======
|
||
"[ 0. 618.32047562 -861.13519106 1404.91549644] -11.057088709963637\n",
|
||
"Mean squared error: 197.93\n",
|
||
"Variance score: 1.00\n",
|
||
"Mean absolute error: 11.69\n",
|
||
"[ 0. 28.18220995 282.79902342 842.30879705] 12.946893955206974\n"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
<<<<<<< HEAD
|
||
"image/png": "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\n",
|
||
=======
|
||
"image/png": "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\n",
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"filenames": {
|
||
<<<<<<< HEAD
|
||
"image/png": "/Users/MortenImac/Teaching/MachineLearning/doc/src/LectureNotes/_build/jupyter_execute/regression_117_1.png"
|
||
=======
|
||
"image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_117_1.png"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
},
|
||
"needs_background": "light"
|
||
},
|
||
"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",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import sklearn.linear_model as skl\n",
|
||
"from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error\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",
|
||
"X = np.zeros((len(Density),4))\n",
|
||
"X[:,3] = Density**(4.0/3.0)\n",
|
||
"X[:,2] = Density\n",
|
||
"X[:,1] = Density**(2.0/3.0)\n",
|
||
"X[:,0] = 1\n",
|
||
"\n",
|
||
"# We use now Scikit-Learn's linear regressor and ridge regressor\n",
|
||
"# OLS part\n",
|
||
"clf = skl.LinearRegression().fit(X, Energies)\n",
|
||
"ytilde = clf.predict(X)\n",
|
||
"EoS['Eols'] = ytilde\n",
|
||
"# The mean squared error \n",
|
||
"print(\"Mean squared error: %.2f\" % mean_squared_error(Energies, ytilde))\n",
|
||
"# Explained variance score: 1 is perfect prediction \n",
|
||
"print('Variance score: %.2f' % r2_score(Energies, ytilde))\n",
|
||
"# Mean absolute error \n",
|
||
"print('Mean absolute error: %.2f' % mean_absolute_error(Energies, ytilde))\n",
|
||
"print(clf.coef_, clf.intercept_)\n",
|
||
"\n",
|
||
"# The Ridge regression with a hyperparameter lambda = 0.1\n",
|
||
"_lambda = 0.1\n",
|
||
"clf_ridge = skl.Ridge(alpha=_lambda).fit(X, Energies)\n",
|
||
"yridge = clf_ridge.predict(X)\n",
|
||
"EoS['Eridge'] = yridge\n",
|
||
"# The mean squared error \n",
|
||
"print(\"Mean squared error: %.2f\" % mean_squared_error(Energies, yridge))\n",
|
||
"# Explained variance score: 1 is perfect prediction \n",
|
||
"print('Variance score: %.2f' % r2_score(Energies, yridge))\n",
|
||
"# Mean absolute error \n",
|
||
"print('Mean absolute error: %.2f' % mean_absolute_error(Energies, yridge))\n",
|
||
"print(clf_ridge.coef_, clf_ridge.intercept_)\n",
|
||
"\n",
|
||
"fig, ax = plt.subplots()\n",
|
||
"ax.set_xlabel(r'$\\rho[\\mathrm{fm}^{-3}]$')\n",
|
||
"ax.set_ylabel(r'Energy per particle')\n",
|
||
"ax.plot(EoS['Density'], EoS['Energy'], alpha=0.7, lw=2,\n",
|
||
" label='Theoretical data')\n",
|
||
"ax.plot(EoS['Density'], EoS['Eols'], alpha=0.7, lw=2, c='m',\n",
|
||
" label='OLS')\n",
|
||
"ax.plot(EoS['Density'], EoS['Eridge'], alpha=0.7, lw=2, c='g',\n",
|
||
" label='Ridge $\\lambda = 0.1$')\n",
|
||
"ax.legend()\n",
|
||
"save_fig(\"EoSfitting\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The above simple polynomial in density $\\rho$ gives an excellent fit\n",
|
||
"to the data. \n",
|
||
"\n",
|
||
"We note also that there is a small deviation between the\n",
|
||
"standard OLS and the Ridge regression at higher densities. We discuss this in more detail\n",
|
||
"below.\n",
|
||
"\n",
|
||
"\n",
|
||
"## Splitting our Data in Training and Test data\n",
|
||
"\n",
|
||
"It is normal in essentially all Machine Learning studies to split the\n",
|
||
"data in a training set and a test set (sometimes also an additional\n",
|
||
"validation set). **Scikit-Learn** has an own function for this. There\n",
|
||
"is no explicit recipe for how much data should be included as training\n",
|
||
"data and say test data. An accepted rule of thumb is to use\n",
|
||
"approximately $2/3$ to $4/5$ of the data as training data. We will\n",
|
||
"postpone a discussion of this splitting to the end of these notes and\n",
|
||
"our discussion of the so-called **bias-variance** tradeoff. Here we\n",
|
||
"limit ourselves to repeat the above equation of state fitting example\n",
|
||
"but now splitting the data into a training set and a test set."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Training R2\n",
|
||
<<<<<<< HEAD
|
||
"0.9999848494015684\n",
|
||
"Training MSE\n",
|
||
"6.636161909712815\n",
|
||
"Test R2\n",
|
||
"0.9999887201912121\n",
|
||
"Test MSE\n",
|
||
"5.338085330411524\n"
|
||
=======
|
||
"0.9999959552801078\n",
|
||
"Training MSE\n",
|
||
"1.399604246278012\n",
|
||
"Test R2\n",
|
||
"0.9998709070860495\n",
|
||
"Test MSE\n",
|
||
"108.66034829156496\n"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import os\n",
|
||
"import numpy as np\n",
|
||
"import pandas as pd\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"from sklearn.model_selection import train_test_split\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",
|
||
"def R2(y_data, y_model):\n",
|
||
" return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2)\n",
|
||
"def MSE(y_data,y_model):\n",
|
||
" n = np.size(y_model)\n",
|
||
" return np.sum((y_data-y_model)**2)/n\n",
|
||
"\n",
|
||
"infile = open(data_path(\"EoS.csv\"),'r')\n",
|
||
"\n",
|
||
"# Read the EoS data as csv file and organized 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",
|
||
"X = np.zeros((len(Density),5))\n",
|
||
"X[:,0] = 1\n",
|
||
"X[:,1] = Density**(2.0/3.0)\n",
|
||
"X[:,2] = Density\n",
|
||
"X[:,3] = Density**(4.0/3.0)\n",
|
||
"X[:,4] = Density**(5.0/3.0)\n",
|
||
"# We split the data in test and training data\n",
|
||
"X_train, X_test, y_train, y_test = train_test_split(X, Energies, test_size=0.2)\n",
|
||
"# matrix inversion to find beta\n",
|
||
"beta = np.linalg.inv(X_train.T.dot(X_train)).dot(X_train.T).dot(y_train)\n",
|
||
"# and then make the prediction\n",
|
||
"ytilde = X_train @ beta\n",
|
||
"print(\"Training R2\")\n",
|
||
"print(R2(y_train,ytilde))\n",
|
||
"print(\"Training MSE\")\n",
|
||
"print(MSE(y_train,ytilde))\n",
|
||
"ypredict = X_test @ beta\n",
|
||
"print(\"Test R2\")\n",
|
||
"print(R2(y_test,ypredict))\n",
|
||
"print(\"Test MSE\")\n",
|
||
"print(MSE(y_test,ypredict))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- !split -->\n",
|
||
"## The Boston housing data example\n",
|
||
"\n",
|
||
"The Boston housing \n",
|
||
"data set was originally a part of UCI Machine Learning Repository\n",
|
||
"and has been removed now. The data set is now included in **Scikit-Learn**'s \n",
|
||
"library. There are 506 samples and 13 feature (predictor) variables\n",
|
||
"in this data set. The objective is to predict the value of prices of\n",
|
||
"the house using the features (predictors) listed here.\n",
|
||
"\n",
|
||
"The features/predictors are\n",
|
||
"1. CRIM: Per capita crime rate by town\n",
|
||
"\n",
|
||
"2. ZN: Proportion of residential land zoned for lots over 25000 square feet\n",
|
||
"\n",
|
||
"3. INDUS: Proportion of non-retail business acres per town\n",
|
||
"\n",
|
||
"4. CHAS: Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n",
|
||
"\n",
|
||
"5. NOX: Nitric oxide concentration (parts per 10 million)\n",
|
||
"\n",
|
||
"6. RM: Average number of rooms per dwelling\n",
|
||
"\n",
|
||
"7. AGE: Proportion of owner-occupied units built prior to 1940\n",
|
||
"\n",
|
||
"8. DIS: Weighted distances to five Boston employment centers\n",
|
||
"\n",
|
||
"9. RAD: Index of accessibility to radial highways\n",
|
||
"\n",
|
||
"10. TAX: Full-value property tax rate per USD10000\n",
|
||
"\n",
|
||
"11. B: $1000(Bk - 0.63)^2$, where $Bk$ is the proportion of [people of African American descent] by town\n",
|
||
"\n",
|
||
"12. LSTAT: Percentage of lower status of the population\n",
|
||
"\n",
|
||
"13. MEDV: Median value of owner-occupied homes in USD 1000s\n",
|
||
"\n",
|
||
"## Housing data, the code\n",
|
||
"We start by importing the libraries"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"import matplotlib.pyplot as plt \n",
|
||
"\n",
|
||
"import pandas as pd \n",
|
||
"import seaborn as sns"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and load the Boston Housing DataSet from **Scikit-Learn**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])"
|
||
]
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.datasets import load_boston\n",
|
||
"\n",
|
||
"boston_dataset = load_boston()\n",
|
||
"\n",
|
||
"# boston_dataset is a dictionary\n",
|
||
"# let's check what it contains\n",
|
||
"boston_dataset.keys()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Then we invoke Pandas"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"boston = pd.DataFrame(boston_dataset.data, columns=boston_dataset.feature_names)\n",
|
||
"boston.head()\n",
|
||
"boston['MEDV'] = boston_dataset.target"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and preprocess the data"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"CRIM 0\n",
|
||
"ZN 0\n",
|
||
"INDUS 0\n",
|
||
"CHAS 0\n",
|
||
"NOX 0\n",
|
||
"RM 0\n",
|
||
"AGE 0\n",
|
||
"DIS 0\n",
|
||
"RAD 0\n",
|
||
"TAX 0\n",
|
||
"PTRATIO 0\n",
|
||
"B 0\n",
|
||
"LSTAT 0\n",
|
||
"MEDV 0\n",
|
||
"dtype: int64"
|
||
]
|
||
},
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# check for missing values in all the columns\n",
|
||
"boston.isnull().sum()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We can then visualize the data"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
<<<<<<< HEAD
|
||
"image/png": "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\n",
|
||
=======
|
||
"image/png": "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GR4ejrVr1+LNN98EADzwwAPYtWsXvl0mfceOHcjKyuq0XSwRkbdjoktENMiWLl3aaUT2ww8/xL333tvpOatWrUJmZmbH7bHHHvvec8bGxqK4uBgAMH36dAiCgJMnTwL4akvSw4cPY/ny5f38SoiI3BunLhARDbLx48dDJpOhqKgIwcHBaGtr65hz+42upi50RSKRQK1WAwCkUimysrLwwQcfYPLkydi7dy9mzpyJ4ODgfn0dRETujokuEZEIlixZgr179yIoKAiZmZl9Pl9hYWGnZPkHP/gBFi5ciNbWVuzYsQPPPfdcn69BRORpmOgSEYkgMzMTy5cvR0BAALZt29anc5WWlmLLli145plnOh4LDAzE7NmzsWnTJshkMiQlJfU1ZCIij8NEl4hIBEajETExMfD19UVAQMB3jq9ateo75cWefPJJxMTEoL29vWMUWCqVQqVS4cknn8SsWbM6PX/lypVYsWIFnn/++QF7HURE7kwifHtZLhERERGRl2DVBSIiIiLySkx0iYiIiMgrMdElIiIiIq/ERJeIiIiIvBITXSIiIiLySkx0iYiIiMgrMdElIiIiIq/ERJeIiIheLxTrAAAACUlEQVSIvNL/B+rFtVky//MGAAAAAElFTkSuQmCC\n",
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
"text/plain": [
|
||
"<Figure size 842.4x595.44 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"filenames": {
|
||
<<<<<<< HEAD
|
||
"image/png": "/Users/MortenImac/Teaching/MachineLearning/doc/src/LectureNotes/_build/jupyter_execute/regression_129_0.png"
|
||
=======
|
||
"image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_129_0.png"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
}
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# set the size of the figure\n",
|
||
"sns.set(rc={'figure.figsize':(11.7,8.27)})\n",
|
||
"\n",
|
||
"# plot a histogram showing the distribution of the target values\n",
|
||
"sns.distplot(boston['MEDV'], bins=30)\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"It is now useful to look at the correlation matrix"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
<<<<<<< HEAD
|
||
"<matplotlib.axes._subplots.AxesSubplot at 0x7fbd9a0141d0>"
|
||
=======
|
||
"<matplotlib.axes._subplots.AxesSubplot at 0x7fa51c5c01c0>"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
<<<<<<< HEAD
|
||
"image/png": "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\n",
|
||
=======
|
||
"image/png": "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\n",
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
"text/plain": [
|
||
"<Figure size 842.4x595.44 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"filenames": {
|
||
<<<<<<< HEAD
|
||
"image/png": "/Users/MortenImac/Teaching/MachineLearning/doc/src/LectureNotes/_build/jupyter_execute/regression_131_1.png"
|
||
=======
|
||
"image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_131_1.png"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
}
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# compute the pair wise correlation for all columns \n",
|
||
"correlation_matrix = boston.corr().round(2)\n",
|
||
"# use the heatmap function from seaborn to plot the correlation matrix\n",
|
||
"# annot = True to print the values inside the square\n",
|
||
"sns.heatmap(data=correlation_matrix, annot=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"From the above coorelation plot we can see that **MEDV** is strongly correlated to **LSTAT** and **RM**. We see also that **RAD** and **TAX** are stronly correlated, but we don't include this in our features together to avoid multi-colinearity"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
<<<<<<< HEAD
|
||
"image/png": "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RkREREREREREQsw4KjBOVSMiIiIiIqJSwTEsMXBUQLHeeFZV+cGhBLbsPAQA/OERERERERGRr3AMSwCnqhXU9u7+rKUIAWA0mcb27v4itYiIiIiIiIhIjGNYAhg4KqjBoYStx4mIiIiIiIiKhWNYAjhVLW925ns21EeFP7CG+qjXzSQiIiIiIiKyRBnn6uEYNliYcZQHZb6nEgxS5nvGeuPC5y9rb0ZlJPuQV0ZCWNbe7HlbiYiIiIiIiMxox7laHMMGDwNHebA737OttQkrO1oy0dmG+ihWdrSwqBgRERERERH5gmicq+AYNpg4VS0PduZ7aqe03dE5hz82IiIiIiIi8hWj+kXrV883fb2dci5UGphxlAe9eZ3ax+1OaSMiIiIiIiIqBqvjXBGOfcsTA0d5sFqziEsYEhERERERUSnIpzYvx77liVPV8qCk25ml4RlNaVuzoYcpfEREREREROQLVse5InbKuRQDp9E5w8BRntpam0y/aA31UdMfkJLCp7wnERERERERUTFYGeeK6I19rUxz85oyjU7JiOIY3DpOVSsAUaqfCFP4iIiIiIiIqFTlM83Na5xG5xwzjgpAlOrn9xQ+IiIiIiIiIjvymebmNY7BnWPgqEC0qX5KbSMtP6TwERERERERETnhdJqb1/w8jc7vGDhyid0iW8vam7PmVwL+SeEjIiIiIiKi0sQC0GIcgzvHwJEL9IpsHT12Cvv7B4U/WD+n8BEREREREVHp8UMBaL8GrjgGd46BIxfoFdl6ft/xzP9FP1i/pvARERERERFR6TEqAF2IsacfAldGOAZ3hququcBqMS1WbCciIiIiIiKvFLsANFcuK08MHLmgpips+bms2E5EREREREReMCr0HOuNe779YgeuyBucquYCSZIsP7dUKrb7dV4qERERERERiS1rb8bGHX3Cv23bc8TzMR5XLitPDBy54Mxw0tLzwhJKomK73+elEhERERERUa621ibdwNGZ4WRm7OrVGM/vK5cxQcIZTlVzgdXoqRSynplUTJyXSkREREREVJqsjk+9GOO1tTZhZUdLpg0N9VGs7GjxRXBGSZBQMqKU4FkhpvCVOmYcuUAUVRVJpuSCVbPPB+elEhERERERlSar41PAmzGeX1cuK/aKc6WMgSMXtLU24eixU+h+/TjSMhCSgLQsfm4pBF84L5WIiIiIiKg0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OfPa2uoIhkeSSKlWP6uMhDD/iibs7x8UrqpmNuXt7EgKD3613XbbreyzqJBbTVUYt11nXribiIiIiIhIjxslMfSee3YkhYXzpmXGWLXVEciyjI07+rC9u99WgEa74rXeOElLG6gyWl16/er5pvvKch/kNQaO8mBUkd/K0vLaH7iVQE5jYx2eeeG3mecZMUqRzGdFNL1UyqrK3DRNIiIiIiIiO6yMpZy+BwD0HIhjZUcLANgaE2nHb42NdRgYOJ35v944qbY6gmhFWHecl+/q0m7UgyIywsBRHoxSKPWWVxwcSuAL39krnDamPhEpP0rOgP0AACAASURBVH71ko1trU144dV3HEWx1e+pnromarvZScaLothEREREREQAMLe5Iaesh92SGEbL3Y8m09i4oy+vMZGI3njozHASD3zlmqwxnjq7yc50M22QaG5zA3oOxB0lBBBZxcBRHowCKNofv5pyctL7URtlAz310puOotja99SeIM32Sc2NOwBERERERERasd44eg7kFsGef4W96VjKczfu6NN9Tj5jIhGjcZLZjA8r081E7yGqm5tP8ItIhKuq5cFsVbG21iasXz3fMKCi/KjVHtt9WDeT6f2Tw8L3OTOcxPrV87Fp7aLMso5qVir1G+2TmqhyP4tiExERERFRvvTGLfv7B22/V1trk6Ob2zVVYduvAYzHSUazVayyOqYDOBuE3MXAUR6sBlDMfrTqv8d64zg7Iq7CPziUgE5Q3PSEaOXEYTX409bahJUdLZltNtRHsbKjxbcR7VhvHGs29GDVur1Ys6HH1jKeRERERERUOG6XxdBbrt5IYiztaMxgNE7Kd79ivXFbx4CzQchNnKqWB6tzUc1WP6utjmDNhp5M7SG7rAR89NqgzOu1W0StVCr351MEnIiIiIiICsto3LJq3V5H4xZgfFaH3g16rWRKdjzVS2+clE+5D2VMYxVng5DbGDjKk5UAilFhtkhYwvBIEmeGkwD059nqsXri1KvU7+dMITcYpYT6eb9FKyMsXVBX7GYREREREXlKb+xkVifWSFtrE7Z391sOHCnbMRLrjeOpl2IYODlsaUyWz8ppRlPUKiMhzL+iCfv7B7mqGnmGgaMC0GYmqbN8RkaTtk5gWutXz3fUhqCcUEpxBTi9LKn6uiq0Xjy5yK0jIiIiIvKO3thJzcqNYO2NWLv9f6NM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b6KwMA/NzW1xf3d7GxARkXMZ3cekcjw96y+5oX8nIndi4oiISAdxGLj4RE+c5gXANYkLt68hlA5tQEREzmR0H2Nln+X2/p2InItT1YiIdEiHYeBuX0MoHdqAiIicyeg+xso+y+39OxE5F0ccERHpkA7DwMUnnG6d6pUObUBERM5kdB9jZZ+V2L9zVzUiMgoTR0REOqTLMHA9ayY4Tbq0AREROY/RfYzVfZbaGoFERMngVDUiIh04DNx+bAMiIjKL0X0M+ywiSgcccUREpIPbp3mlA7YBERGZxeg+hn0WEaUDJo6IiHRy8zSvdME2ICIisxjdx7DPIiK341Q1IiIiIiIiIiKSxMQRERERERERERFJYuKIiIiIiIiIiIgkMXFERERERERERESSmDgiIiIiIiIiIiJJTBwREREREREREZEkv90FSEZGhs/uItjKy+fv5XMHvH3+Xj53gOfv5fP30rl76VzdyKvt49Xztgrr11ysX/Oxjs3F+jWXWL9q9ewTBEGwokBEREREREREROQunKpGRERERERERESSmDgiIiIiIiIiIiJJTBwREREREREREZEkJo6IiIiIiIiIiEgSE0dERERERERERCSJiSMiIiIiIiIiIpLExBEREREREREREUli4oiIiIiIiIiIiCQxcURERERERERERJJckziqq6vDjBkzUFlZiT/+8Y92F8dyCxYsQHV1NWbNmoVZs2bh0KFDdhfJdO3t7aipqcGpU6cAAAcOHEBtbS0qKyuxevVqm0tnvsTzv++++1BZWRm9Bnbv3m1zCc3z+OOPo7q6GtXV1Xj00UcBeKf9pc7dS23/m9/8BjNmzEB1dTU2bNgAwDttD0ifv5fan8hpHnnkEdx77712FyPteDGutVp9fT3mzJmDqqoqPPTQQ3YXJ608//zz0Wt31qxZGDt2LH72s5/ZXay0sm3btmg8/Mgjj9hdnLT05JNPYtq0aaitrcVvf/tb9RcILtDU1CRMnjxZOHv2rHD+/HmhtrZWeP/99+0ulmUikYhQUVEh9PT02F0Uy7z99ttCTU2NUFZWJnz66adCMBgUJk6cKHzyySdCT0+PsHjxYuG1116zu5imSTx/QRCEmpoa4cyZMzaXzHwNDQ3CTTfdJHR1dQnd3d3CwoULhbq6Ok+0v9S5v/rqq55p+9dff12YN2+e0NPTIwSDQWHy5MnC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tw7bt2+HIAiIRCKYMGECli1bhs7OTixYsAAA0NHRgTNnzmDo0KEAgOuuuw733HMPenp6MHnyZJSWluL3v/89AODJJ5/EX/7yFwDAJ598gvz8fOTl5QEAHnvsMQwZMsSKUyYiIiJyvCuvvBLDhw9HRkYGfD4fgsEgcnNzsXz5cowcORIvvvgi7rvvPtx5551YunRp9HWCIGDq1KkIBALYvn27jWdARFZi4oiILLdz507s2bMHW7ZsQU5ODrq6urB06VI8/vjj+OEPf4ht27YBAF5//XX8/Oc/j/4s2r17N0pLS/HOO+/gxIkTGDZsGJYsWYIlS5YAABYsWIDvfve7mD59uuXnRkREROQGGzduxKBBg6I/r1+/Hg899BC2bNkCALjkkkvw8ssvxyWO3njjDXR2diIQCFheXiKyD6eqEZHlmpubEQ6H0dnZCQDIzs7GAw88gKlTp2p6/ebNm/Htb38bM2bMwMaNG80sKhEREVHaC4VCOH36NAYMGBD93fDhw9G3b1+8+eab0d+99NJLmDlzph1FJCIbMXFERJa74YYb0L9/f1RUVOCmm27CypUrcfr0aYwaNUr1tR988AHeeustTJ8+HbNnz8a2bdtw9uxZC0pNRERElD4WLVqE2tpaVFRUYNq0aQCAX/ziF3H/R4y1ACAYDOLgwYOYMGGC5WUlInsxcURElsvLy8NTTz2FnTt3Yu7cuWhpacGSJUuwatUq1ddu3rwZkydPRn5+PkaNGoVLL70UW7dutaDUREREROlj48aNqKurw+9+9zt0dnbimmuuQUFBQdz/qa2txe7du9Hd3Y3du3djypQpyMzMtKnERGQXJo6IyHLr1q3Dm2++iZKSEnznO9/BqlWrsG7dOmzatEnxdR0dHdi2bRsOHjyIKVOmYMqUKWhubsazzz6Lnp4ei0pPRERElD7Kyspw33334d5778WpU6fi/lZYWIgRI0bg73//O/785z/jhhtusKmURGQnJo6IyHKdnZ341a9+hXPnzkV/995772HEiBGKr6urq8PAgQOxb98+1NfXo76+Hnv27EFHRwd27dpldrGJiIiI0lJNTQ1GjRrVa6oacGG62oYNG9DW1obhw4fbUDoisht3VSMiU3V0dGDMmDFxv9u8eTN8Ph/mzZsHn8+HSCSCr33ta/j1r3+teKzNmzfj1ltvjRsi3b9/fyxYsABPP/00amtrTTkHIiIionT3wAMPYObMmdi3b1/c76dOnYoHH3wQy5Yts6lkRGQ3nyAIgt2FICIiIiIiIiIi5+FUNSIiIiIiIiIiksTEERERERERERERSWLiiIiIiIiIiIiIJDFxREREREREREREkpg4IiIiIiIiIiIiSUwcERERERERERGRJCaOiIiIiIiIiIhIEhNHREREREREREQk6f8DB/JCQBlla9IAAAAASUVORK5CYII=\n",
|
||
=======
|
||
"image/png": "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RkREREREREREQsw4KjBOVSMiIiIiIqJSwTEsMXBUQLHeeFZV+cGhBLbsPAQA/OERERERERGRr3AMSwCnqhXU9u7+rKUIAWA0mcb27v4itYiIiIiIiIhIjGNYAhg4KqjBoYStx4mIiIiIiIiKhWNYAjhVLW925ns21EeFP7CG+qjXzSQiIiIiIiKyRBnn6uEYNliYcZQHZb6nEgxS5nvGeuPC5y9rb0ZlJPuQV0ZCWNbe7HlbiYiIiIiIiMxox7laHMMGDwNHebA737OttQkrO1oy0dmG+ihWdrSwqBgRERERERH5gmicq+AYNpg4VS0PduZ7aqe03dE5hz82IiIiIiIi8hWj+kXrV883fb2dci5UGphxlAe9eZ3ax+1OaSMiIiIiIiIqBqvjXBGOfcsTA0d5sFqziEsYEhERERERUSnIpzYvx77liVPV8qCk25ml4RlNaVuzoYcpfEREREREROQLVse5InbKuRQDp9E5w8BRntpam0y/aA31UdMfkJLCp7wnERERERERUTFYGeeK6I19rUxz85oyjU7JiOIY3DpOVSsAUaqfCFP4iIiIiIiIqFTlM83Na5xG5xwzjgpAlOrn9xQ+IiIiIiIiIjvymebmNY7BnWPgqEC0qX5KbSMtP6TwERERERERETnhdJqb1/w8jc7vGDhyid0iW8vam7PmVwL+SeEjIiIiIiKi0sQC0GIcgzvHwJEL9IpsHT12Cvv7B4U/WD+n8BEREREREVHp8UMBaL8GrjgGd46BIxfoFdl6ft/xzP9FP1i/pvARERERERFR6TEqAF2IsacfAldGOAZ3hququcBqMS1WbCciIiIiIiKvFLsANFcuK08MHLmgpips+bms2E5EREREREReMCr0HOuNe779YgeuyBucquYCSZIsP7dUKrb7dV4qERERERERiS1rb8bGHX3Cv23bc8TzMR5XLitPDBy54Mxw0tLzwhJKomK73+elEhERERERUa621ibdwNGZ4WRm7OrVGM/vK5cxQcIZTlVzgdXoqRSynplUTJyXSkREREREVJqsjk+9GOO1tTZhZUdLpg0N9VGs7GjxRXBGSZBQMqKU4FkhpvCVOmYcuUAUVRVJpuSCVbPPB+elEhERERERlSar41PAmzGeX1cuK/aKc6WMgSMXtLU24eixU+h+/TjSMhCSgLQsfm4pBF84L5WIiIiIiKg0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OfPa2uoIhkeSSKlWP6uMhDD/iibs7x8UrqpmNuXt7EgKD3613XbbreyzqJBbTVUYt11nXribiIiIiIhIjxslMfSee3YkhYXzpmXGWLXVEciyjI07+rC9u99WgEa74rXeOElLG6gyWl16/er5pvvKch/kNQaO8mBUkd/K0vLaH7iVQE5jYx2eeeG3mecZMUqRzGdFNL1UyqrK3DRNIiIiIiIiO6yMpZy+BwD0HIhjZUcLANgaE2nHb42NdRgYOJ35v944qbY6gmhFWHecl+/q0m7UgyIywsBRHoxSKPWWVxwcSuAL39krnDamPhEpP0rOgP0AACAASURBVH71ko1trU144dV3HEWx1e+pnromarvZScaLothEREREREQAMLe5Iaesh92SGEbL3Y8m09i4oy+vMZGI3njozHASD3zlmqwxnjq7yc50M22QaG5zA3oOxB0lBBBZxcBRHowCKNofv5pyctL7URtlAz310puOotja99SeIM32Sc2NOwBERERERERasd44eg7kFsGef4W96VjKczfu6NN9Tj5jIhGjcZLZjA8r081E7yGqm5tP8ItIhKuq5cFsVbG21iasXz3fMKCi/KjVHtt9WDeT6f2Tw8L3OTOcxPrV87Fp7aLMso5qVir1G+2TmqhyP4tiExERERFRvvTGLfv7B22/V1trk6Ob2zVVYduvAYzHSUazVayyOqYDOBuE3MXAUR6sBlDMfrTqv8d64zg7Iq7CPziUgE5Q3PSEaOXEYTX409bahJUdLZltNtRHsbKjxbcR7VhvHGs29GDVur1Ys6HH1jKeRERERERUOG6XxdBbrt5IYiztaMxgNE7Kd79ivXFbx4CzQchNnKqWB6tzUc1WP6utjmDNhp5M7SG7rAR89NqgzOu1W0StVCr351MEnIiIiIiICsto3LJq3V5H4xZgfFaH3g16rWRKdjzVS2+clE+5D2VMYxVng5DbGDjKk5UAilFhtkhYwvBIEmeGkwD059nqsXri1KvU7+dMITcYpYT6eb9FKyMsXVBX7GYREREREXlKb+xkVifWSFtrE7Z391sOHCnbMRLrjeOpl2IYODlsaUyWz8ppRlPUKiMhzL+iCfv7B7mqGnmGgaMC0GYmqbN8RkaTtk5gWutXz3fUhqCcUEpxBTi9LKn6uiq0Xjy5yK0jIiIiIvKO3thJzcqNYO2NWLv9f6NM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b6KwMA/NzW1xf3d7GxARkXMZ3cekcjw96y+5oX8nIndi4oiISAdxGLj4RE+c5gXANYkLt68hlA5tQEREzmR0H2Nln+X2/p2InItT1YiIdEiHYeBuX0MoHdqAiIicyeg+xso+y+39OxE5F0ccERHpkA7DwMUnnG6d6pUObUBERM5kdB9jZZ+V2L9zVzUiMgoTR0REOqTLMHA9ayY4Tbq0AREROY/RfYzVfZbaGoFERMngVDUiIh04DNx+bAMiIjKL0X0M+ywiSgcccUREpIPbp3mlA7YBERGZxeg+hn0WEaUDJo6IiHRy8zSvdME2ICIisxjdx7DPIiK341Q1IiIiIiIiIiKSxMQRERERERERERFJYuKIiIiIiIiIiIgkMXFERERERERERESSmDgiIiIiIiIiIiJJTBwREREREREREZEkv90FSEZGhs/uItjKy+fv5XMHvH3+Xj53gOfv5fP30rl76VzdyKvt49Xztgrr11ysX/Oxjs3F+jWXWL9q9ewTBEGwokBEREREREREROQunKpGRERERERERESSmDgiIiIiIiIiIiJJTBwREREREREREZEkJo6IiIiIiIiIiEgSE0dERERERERERCSJiSMiIiIiIiIiIpLExBEREREREREREUli4oiIiIiIiIiIiCQxcURERERERERERJJckziqq6vDjBkzUFlZiT/+8Y92F8dyCxYsQHV1NWbNmoVZs2bh0KFDdhfJdO3t7aipqcGpU6cAAAcOHEBtbS0qKyuxevVqm0tnvsTzv++++1BZWRm9Bnbv3m1zCc3z+OOPo7q6GtXV1Xj00UcBeKf9pc7dS23/m9/8BjNmzEB1dTU2bNgAwDttD0ifv5fan8hpHnnkEdx77712FyPteDGutVp9fT3mzJmDqqoqPPTQQ3YXJ608//zz0Wt31qxZGDt2LH72s5/ZXay0sm3btmg8/Mgjj9hdnLT05JNPYtq0aaitrcVvf/tb9RcILtDU1CRMnjxZOHv2rHD+/HmhtrZWeP/99+0ulmUikYhQUVEh9PT02F0Uy7z99ttCTU2NUFZWJnz66adCMBgUJk6cKHzyySdCT0+PsHjxYuG1116zu5imSTx/QRCEmpoa4cyZMzaXzHwNDQ3CTTfdJHR1dQnd3d3CwoULhbq6Ok+0v9S5v/rqq55p+9dff12YN2+e0NPTIwSDQWHy5MnC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tw7bt2+HIAiIRCKYMGECli1bhs7OTixYsAAA0NHRgTNnzmDo0KEAgOuuuw733HMPenp6MHnyZJSWluL3v/89AODJJ5/EX/7yFwDAJ598gvz8fOTl5QEAHnvsMQwZMsSKUyYiIiJyvCuvvBLDhw9HRkYGfD4fgsEgcnNzsXz5cowcORIvvvgi7rvvPtx5551YunRp9HWCIGDq1KkIBALYvn27jWdARFZi4oiILLdz507s2bMHW7ZsQU5ODrq6urB06VI8/vjj+OEPf4ht27YBAF5//XX8/Oc/j/4s2r17N0pLS/HOO+/gxIkTGDZsGJYsWYIlS5YAABYsWIDvfve7mD59uuXnRkREROQGGzduxKBBg6I/r1+/Hg899BC2bNkCALjkkkvw8ssvxyWO3njjDXR2diIQCFheXiKyD6eqEZHlmpubEQ6H0dnZCQDIzs7GAw88gKlTp2p6/ebNm/Htb38bM2bMwMaNG80sKhEREVHaC4VCOH36NAYMGBD93fDhw9G3b1+8+eab0d+99NJLmDlzph1FJCIbMXFERJa74YYb0L9/f1RUVOCmm27CypUrcfr0aYwaNUr1tR988AHeeustTJ8+HbNnz8a2bdtw9uxZC0pNRERElD4WLVqE2tpaVFRUYNq0aQCAX/ziF3H/R4y1ACAYDOLgwYOYMGGC5WUlInsxcURElsvLy8NTTz2FnTt3Yu7cuWhpacGSJUuwatUq1ddu3rwZkydPRn5+PkaNGoVLL70UW7dutaDUREREROlj48aNqKurw+9+9zt0dnbimmuuQUFBQdz/qa2txe7du9Hd3Y3du3djypQpyMzMtKnERGQXJo6IyHLr1q3Dm2++iZKSEnznO9/BqlWrsG7dOmzatEnxdR0dHdi2bRsOHjyIKVOmYMqUKWhubsazzz6Lnp4ei0pPRERElD7Kyspw33334d5778WpU6fi/lZYWIgRI0bg73//O/785z/jhhtusKmURGQnJo6IyHKdnZ341a9+hXPnzkV/995772HEiBGKr6urq8PAgQOxb98+1NfXo76+Hnv27EFHRwd27dpldrGJiIiI0lJNTQ1GjRrVa6oacGG62oYNG9DW1obhw4fbUDoisht3VSMiU3V0dGDMmDFxv9u8eTN8Ph/mzZsHn8+HSCSCr33ta/j1r3+teKzNmzfj1ltvjRsi3b9/fyxYsABPP/00amtrTTkHIiIionT3wAMPYObMmdi3b1/c76dOnYoHH3wQy5Yts6lkRGQ3nyAIgt2FICIiIiIiIiIi5+FUNSIiIiIiIiIiksTEERERERERERERSWLiiIiIiIiIiIiIJDFxREREREREREREkpg4IiIiIiIiIiIiSUwcERERERERERGRJCaOiIiIiIiIiIhIEhNHREREREREREQk6f8DB/JCQBlla9IAAAAASUVORK5CYII=\n",
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
"text/plain": [
|
||
"<Figure size 1440x360 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"filenames": {
|
||
<<<<<<< HEAD
|
||
"image/png": "/Users/MortenImac/Teaching/MachineLearning/doc/src/LectureNotes/_build/jupyter_execute/regression_133_0.png"
|
||
=======
|
||
"image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_133_0.png"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
}
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plt.figure(figsize=(20, 5))\n",
|
||
"\n",
|
||
"features = ['LSTAT', 'RM']\n",
|
||
"target = boston['MEDV']\n",
|
||
"\n",
|
||
"for i, col in enumerate(features):\n",
|
||
" plt.subplot(1, len(features) , i+1)\n",
|
||
" x = boston[col]\n",
|
||
" y = target\n",
|
||
" plt.scatter(x, y, marker='o')\n",
|
||
" plt.title(col)\n",
|
||
" plt.xlabel(col)\n",
|
||
" plt.ylabel('MEDV')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now we start training our model"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X = pd.DataFrame(np.c_[boston['LSTAT'], boston['RM']], columns = ['LSTAT','RM'])\n",
|
||
"Y = boston['MEDV']"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We split the data into training and test sets"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"(404, 2)\n",
|
||
"(102, 2)\n",
|
||
"(404,)\n",
|
||
"(102,)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"\n",
|
||
"# splits the training and test data set in 80% : 20%\n",
|
||
"# assign random_state to any value.This ensures consistency.\n",
|
||
"X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state=5)\n",
|
||
"print(X_train.shape)\n",
|
||
"print(X_test.shape)\n",
|
||
"print(Y_train.shape)\n",
|
||
"print(Y_test.shape)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Then we use the linear regression functionality from **Scikit-Learn**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"The model performance for training set\n",
|
||
"--------------------------------------\n",
|
||
"RMSE is 5.6371293350711955\n",
|
||
"R2 score is 0.6300745149331701\n",
|
||
"\n",
|
||
"\n",
|
||
"The model performance for testing set\n",
|
||
"--------------------------------------\n",
|
||
<<<<<<< HEAD
|
||
"RMSE is 5.137400784702911\n",
|
||
"R2 score is 0.6628996975186953\n"
|
||
=======
|
||
"RMSE is 5.137400784702912\n",
|
||
"R2 score is 0.6628996975186952\n"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.linear_model import LinearRegression\n",
|
||
"from sklearn.metrics import mean_squared_error, r2_score\n",
|
||
"\n",
|
||
"lin_model = LinearRegression()\n",
|
||
"lin_model.fit(X_train, Y_train)\n",
|
||
"\n",
|
||
"# model evaluation for training set\n",
|
||
"\n",
|
||
"y_train_predict = lin_model.predict(X_train)\n",
|
||
"rmse = (np.sqrt(mean_squared_error(Y_train, y_train_predict)))\n",
|
||
"r2 = r2_score(Y_train, y_train_predict)\n",
|
||
"\n",
|
||
"print(\"The model performance for training set\")\n",
|
||
"print(\"--------------------------------------\")\n",
|
||
"print('RMSE is {}'.format(rmse))\n",
|
||
"print('R2 score is {}'.format(r2))\n",
|
||
"print(\"\\n\")\n",
|
||
"\n",
|
||
"# model evaluation for testing set\n",
|
||
"\n",
|
||
"y_test_predict = lin_model.predict(X_test)\n",
|
||
"# root mean square error of the model\n",
|
||
"rmse = (np.sqrt(mean_squared_error(Y_test, y_test_predict)))\n",
|
||
"\n",
|
||
"# r-squared score of the model\n",
|
||
"r2 = r2_score(Y_test, y_test_predict)\n",
|
||
"\n",
|
||
"print(\"The model performance for testing set\")\n",
|
||
"print(\"--------------------------------------\")\n",
|
||
"print('RMSE is {}'.format(rmse))\n",
|
||
"print('R2 score is {}'.format(r2))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
<<<<<<< HEAD
|
||
"image/png": "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\n",
|
||
=======
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArEAAAHjCAYAAAA0dEdMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dcWydZ30v8J8TJ243YpUae65GWk1edcO17jrEBPNAPWF/ZEldt5WptGzamq0aagVKrjKppYoq0P5ApAUpopdVurpjJWWbJpBSVqIm2wTCUhuPakg0w7dB3CzJKNSJMQU3kB4n8bl/IJvYOT4+5/ic877POZ/PXznHzjnPaz9Kvud5f8/z6yqVSqUAAICEbMh6AAAAUCshFgCA5AixAAAkR4gFACA5QiwAAMkRYgEASI4QCwBAcrqzeuM33vhZLCw4onalvr63xezsxayHQc6ZJ1TDPKEa5gnVyGKebNjQFW9/+6+u+vXMQuzCQkmIXYWfC9UwT6iGeUI1zBOqkbd5opwAAIDkCLEAACSn6hD7xBNPxGOPPRYRESdOnIixsbHYsWNHHDp0qGmDAwCAcqoKsZOTk/Hcc89FRMRbb70VBw4ciKeffjpeeOGF+M53vhMTExNNHSQAAFxrzRD7k5/8JA4dOhQPP/xwREScPHkybrvttti6dWt0d3fH2NhYHD9+vOkDBQCARWueTvDxj3889u/fH6+//npERFy4cCH6+/uXvj4wMBDnz5+v+Y37+t5W89/pFP39W7IeAgkwT6iGeUI1zBOqkbd5UjHEfvnLX45bbrklRkZG4siRIxERsbCwEF1dXUvfUyqVlj2u1uzsxdwd1ZAH/f1bYmbmzayHQc6ZJ1TDPKEa5gnVyGKebNjQVXHRs2KIfeGFF2JmZibuvffe+OlPfxo///nP4wc/+EFs3Lhx6XtmZmZiYGCgcSMGAIA1VAyxzzzzzNKfjxw5Ei+//HL81V/9VezYsSPOnTsX73znO+Po0aPxoQ99qOkDBQCARTV37Orp6YmDBw/G3r17o1gsRqFQiJ07dzZjbAAAUFZXqVTKpDBVTWx5apOohnlCNcwTqmGeUI081sTq2AUAQHKEWAAAkiPEAgCQnJo3dgEA0Bkmp6bjyMTp+PFcMW7u7YnxwlCMDA9mPayIEGIBAChjcmo6Dh87FfNXFiIiYnauGIePnYqIyEWQVU4AAMB1jkycXgqwi+avLMSRidMZjWg5IRYAgOvMzhVrer7VhFgAAK7T19tT0/OtJsQCAHCd8cJQbO5eHhU3d2+I8cJQRiNazsYuAACus7h5y+kEAAAkZWR4MEaGB3PZnlg5AQAAyRFiAQBIjhALAEBy1MQCAB1rsa3q7Fwx+nK2cYnKhFgAoCPlva0qlSknAAA6Ut7bqlKZlVgAaDG3sPMh721VqcxKLAC00OIt7MWgtHgLe3JqOuORdZ68t1WlMiEWAFrILez8yHtbVSpTTgAALeQWdn5c21a1XUs72rl0RYgFgBbq6+0pG1jdws7GYlvVdtTupy8oJwCAFnILm1Zp99IVK7EA0EKdcAubfGj30hUhFgBarJ1vYZMf7V66opwAAKANtXvpipVYAIA21O6lK0IsAECbaufSFeUEAAAkR4gFACA5ygkAgLbQzt2puJ4QCwAkr927U3E95QQAQPLavTsV1xNiAYDktXt3Kq4nxAIAyVutC1W7dKfiempiAYDkjReGltXERrRXd6qsLG6W+/FcMW7O2WY5IRYASF67d6fKQt43ywmxAEBbaOfuVFmotFkuDz9nNbEAAFwn75vlhFgAAK6T981yQiwAANcZLwzF5u7lUTFPm+XUxAIAcJ1rN8s5nQAAgGQsbpbr798SMzNvZj2cZZQTAACQHCEWAIDkCLEAACRHiAUAIDlCLAAAyRFiAQBIjhALAEByhFgAAJIjxAIAkBwhFgCA5AixAAAkpzvrAQBAM01OTceRidMxO1eMvt6eGC8MxcjwYNbDAtZJiAWgbU1OTcfhY6di/spCRETMzhXj8LFTERGCLCROOQEAbevIxOmlALto/spCHJk4ndGIgEaxEgtA25qdK676/IMHv668ABJmJRaAttXX21Px64vlBZNT0y0aEdAoQiwAbWu8MBSbuyv/V6e8ANKknACAtrVYJrB4OsFqKn0NyCchFoC2NjI8uBRmH3n6pbKBda2yAyB/lBMA0DHKlRds7t4Q44WhjEYE1MtKLAAdY2V5gdMJIF1CLAAd5dryAiBdygkAAEiOlVgAMjU5Ne32PlAzIRaAzExOTcfhY6eWWsMuNh+ICEEWqEg5AQCZOTJxeinALtJ8AKiGEAtAZlZrMqD5ALAWIRaAzKzWZEDzAWAtQiwAmdF8AKiXjV0AZEbzAaBeQiwAmdJ8AKiHcgIAAJIjxAIAkBzlBABA3XRcIytCLABQFx3XyJJyAgCgLjqukSUhFgCoi45rZEk5AQBUoOZzdX29PWUDq45rtIKVWABYxWLN52JQW6z5nJyaznhk+aDjGlmyEgtkzkoXeVWp5tMc1XGNbAmxQKbsbibP1HyuTcc1sqKcAMiU3c3k2Wq1nWo+IXtWYoFMWelqjsmp6fjKi5Mx88Ylt3jXYbwwtOxOQYSaT8gLIRbIVF53N6dcp6tEo3HUfEJ+CbFApvK40pV6CLQZqbHUfEI+qYkFMjUyPBh7dm1bWnnt6+2JPbu2ZRoaUq/TVaIBdIKqVmI/+9nPxj//8z9HV1dX3H///fHnf/7nceLEifjUpz4VxWIxdu3aFfv372/2WIE2lbeVrtRDYF5LNAAaac0Q+/LLL8e//du/xfPPPx9XrlyJu+66K0ZGRuLAgQPxxS9+MW655ZZ46KGHYmJiIgqFQivGDHS4Zterph4C81iiAdBoa4bY9773vfHss89Gd3d3nD9/Pq5evRpzc3Nx2223xdatWyMiYmxsLI4fPy7EAk3XinrVRobALDaILb7+V14843QCoG1VVU6wadOmeOqpp+Jv//ZvY+fOnXHhwoXo7+9f+vrAwECcP3++pjfu63tbbSPtIP39W7IeAgno1HnylRcny9arfuXFM3HP9tsb8h73bN8SvVtuiGePvRo/euNSvOPtN8YDu94V29+ztabX+ca3vh/PHv9uFC9fjYhfBO5nj383erfcUPNr1eqe7Vsa9vOg/XXqvyfUJm/zpOrTCfbt2xcf/vCH4+GHH46zZ89GV1fX0tdKpdKyx9WYnb0YCwulmv5OJ+jv3xIzM29mPQxyrpPnycwbl1Z9vpE/k+Fbb4onHhpZ/h41vv4Xjk4tBdhFxctX4wtHp2L41pvWPca1tHqepHwsWSfr5H9PqF4W82TDhq6Ki55rnk5w+vTpePXVVyMi4sYbb4wdO3bEN7/5zZiZmVn6npmZmRgYGGjAcAEqS6mDUuobxGqxWOaxeG2LZR6TU9MZjwxoV2uG2Ndeey0ef/zxmJ+fj/n5+fja174Wu3fvjjNnzsS5c+fi6tWrcfTo0bjzzjtbMV6gw40XhmJz9/J/uvK6aSmlwL1eqR9LBqRnzXKCQqEQJ0+ejPvuuy82btwYO3bsiNHR0bj55ptj7969USwWo1AoxM6dO1sxXqDDpdRBqZNOCeikVWcgH7pKpVImhalqYstTm0Q1zJN0ZFkn2sp58sjTL616LNmnP/L+loyB+vj3hGrksSZW21mAJspbI4dm6aRVZyAfhFggV+xwT1NKZR5AexBigdyop5FBu4TedriOTll1BvJhzdMJAFql1h3u7XKsU7tcB0ArCbFAbtS6w71djnVql+sAaCUhFsiNWs9VbZdjndrlOgBaSYgFcqPWRgbt0kygXa4DoJWEWCA3RoYHY8+ubUvhra+3J/bs2rbqZqGUundV0i7XAdBKTicAcqWWHe7tcqxTXq6jHU5IADqHEAskrV2Odcr6Ouo53gwgS8oJAHBCApAcIRYAJyQAyVFOACSlk+o2W3mtfb09ZQOrExKAvLISCySjkzpbtfpanZAApMZKLLCmvKx+VqrbbLfV2PVe6+TUdHzlxcmYeeNSVb+zvJyQAFAtIRaoKE+71jupbnM911rv7yzrExIAaiHEAhXlafUzL3WbrViZXs+15ul3BtAsamKBivK0+pmHus1W1aqu51rz9DsDaBYrsUBFWa9+rlz1fP//GIyTp2czq9ts1SrnempUs/6dAbSCEAtUNF4YWlZfGdG61c9ytZ0v/cd07Nm1LbPb4q1c5ay3RjXL3xlAqwixQEX1rgg2om40j7WdKaxyLv5svvLimapPJwBIjRALrKnWFcFGnWiQx9rOVFY5R4YH457tt8fMzJtZDwWgKWzsAhqu0gpqLVZb3cxy1XNkeDD27Nq2NIa+3p5MyxsAOpWVWKDhGrWCmtdVT+epAmRPiAUarlF1o7pIAbAaIRaoqNIGrdW+1sgVVKueAJQjxAKrqrRBKyLW3LxlBRWAZhFigVWttUGr0vFXrVxBbVQb2Fa0kwWgMZxOAKyq0gatSl975OmXGt6GdTWNagPbqnayADSGEAusqtIRV5U2abUyADbqOK9GvQ4ArSHEAqsaLwzF5u7l/0wsbtAq97VrtSoANuo4rzw2VgBgdWpigVWttUHr/732k5j49g9joVT+7zcjAK6sW/3VGzbGz966et331XqcVwrtZAH4JSEWqGi1DVqTU9Px0n9MrxpgIxofAMudltC9sSs2dkVcvWYc9RznldfGCgCUJ8QCdSlXQ3qtZgTAcu955Wop3nZjd/Rs2riuUwUcCwaQFiEWqEulUoFmBcDV3vPipSvx1P+8c92vr7ECQDqEWKAulWpIP/2R97f8PQHoLE4nAOpS6eSCRpucmo5Hnn6pbIBVtwrQmazEAnVpVQ3pys1c11K3CtC5hFjoUI1osdqKGtLVNpA1s2wBgPwTYqEDlTuq6vCxUxERuVvV1IQAgHLUxEIHSqnFaqXWtwB0LiEWOlBKq5ut3EAGQDqUE0AHSumoKk0IAChHiIU6NGJTVJZSa7GqCQEAKwmxUKOUNkWtphWrm6kHfQDyTYiFGlXaFJVSSGvm6mY7BH0A8s3GLqhRSpuispLS6QcApEmIhRo58mltgj4AzaacAGpU66aoTqwNTen0AwDSZCUWajQyPBh7dm1bCmR9vT2xZ9e2ssF0sTZ0MdAt1oZOTk23dMyt5mxXAJrNSizUodpNUe2yCawWiyvP81cWYkNXxEIpOmYFGoDWEWKhiTqtNnTlqQQLpV+uwAqwADSScgJook7bBOZUAgBaRYiFJuq02tBOW3kGIDvKCaCJWtEZK09+9YaN8bO3rpZ9HgAaSYiFJmtmZ6y86erqqul5AKiXEAtN0Ilnw0ZEXLx0pabnAaBeQiw02Mod+otnw0b8srygXUOuJgcAtIqNXdBga+3Qb+cGCOU2skX84hofefqltrhGAPLBSiw02Fo79BvZAKHRK7rrfb2VG9muVW5FGgDqJcRCg611S73aY6jWCpTVlC3UolGvt7iR7ZGnX7rumtq9WxkAraOcABpsrbNhq2mAUE3JQaMbCzT69ZwZC0AzCbHQYCPDg7Fn17alUNrX2xN7dm1bWn2spgFCNYGy0SGx0a/Xad3KAGgt5QTQBJXOhq2mAUI1gbLRJwHU+3qrlT2MF4aWlSdEtHe3MgBaS4iFDKzVAKGaQNnokFjP61VTR9uOR4kBkD0hFnKomkBZb0hcbeW0ntdb66SFTupWBkBrCbGQQ9UGylpD4lorp7W+ns1bAGRFiIWcasYqZiPPqI3QoQuA7AixkFPNaE3b6JVTm7cAyIoQCznU6EYGixq9crpW2UMzgjgARAix5FgnBqBrr3mlRnS7KrdyGhFRvHw1Jqem63rt1coemhXEASBCswNyqpqOVe1m5TWXs94NU4uNGH71ho3Lnr946UrDf76N7gAGANcSYsmlTgxA5a55pUZsmBoZHowbNl9/E6bRP18nFwDQTMoJyKVODEBrXVs1G6aqLcFoxc/XyQUANJMQSy51YgBa7ZoXv7ZWTXAtNai1/nzrqU92cgEAzaScgFwaLwzF5u7l07PdA9Bq1/zhsf8en/7I+9cMjbWUYNTy8623Pnmx/nYxGPf19sSeXdts6gKgIazEkkv1tlRN2XqvuZYSgVreaz0NErSdBaBZhFhyqxMD0HquudYSgWrfqxPrkwHIP+UE0CaaVYKxWghu5/pkAPJPiIU20awa1E6sTwYg/5QTQBtpRglGJ9YnA5B/Qiy0gWa36O3E+mQA8k2IhRWaHQgbrZbzYVf7+yldLwBEqImFZeo9EzVL62nRm+L1AkCElVhYZj1nojZDNauk6zkCK2/XCwDVEmI7gNvF1cvTmaiVygTu2b5l6fvW06I3T9cLALVQTtDmsrpdPDk1HY88/VI8ePDr8cjTLyVzezpPZ6JWWyawniOw8nS9AFALIbbNradesl4p11nm6UzUaldJ13M+bJ6uFwBqUVU5wec+97k4duxYREQUCoV49NFH48SJE/GpT30qisVi7Nq1K/bv39/UgVKfLG4Xp1RnWa7UYs+ubZmXX1QK/OVWSes9AssZsACkas0Qe+LEiXjxxRfjueeei66urviLv/iLOHr0aHzmM5+JL37xi3HLLbfEQw89FBMTE1EoFFoxZmqwnnrJeqVSZ7lazemeXdvi0x95f6Zjq7RS3uhVUmfANo76c4DWWbOcoL+/Px577LHYvHlzbNq0KYaGhuLs2bNx2223xdatW6O7uzvGxsbi+PHjrRgvNcridnEqdZZZlFpUq1LgF4ryKeUyGoAUrbkSe/vtty/9+ezZs3Hs2LH4kz/5k+jv7196fmBgIM6fP9+cEbIuWdwuHi8MLVvhjMhnnWWeV4yzWEFnfVb7UPQP//pdq7MATVD1EVvf+9734qGHHopHH300Nm7cGGfPnl36WqlUiq6urpreuK/vbTV9fyfp79+y9jfV4J7tW+Ke7bev/Y0NfL/eLTfEs8dejR+9cSne8fYb44Fd74qIiI/978llz21/z9aWjWul/rffGDNvXCr7fKN/B7X6s7uH43NffiWKl68uPdezaWP82d3DS2PLeows9+NVPvz87K2r8bO3fvF7nJ0rxrPHvxu9W25o2dw3T6iGeUI18jZPqgqx3/rWt2Lfvn1x4MCBGB0djZdffjlmZmaWvj4zMxMDAwM1vfHs7MVYWCjVNtoO0N+/JWZm3sx6GOs2fOtN8cRDI0uPV9afzrxxKf7Xl74dc2++ldmq1H0f+I2yK8b3feA3Mv8dDN96Uzyw879dt4I3fOtNMTPzZtvMk3Zy8yqr5ysVL1+NLxydiuFbb2r6mMwTqmGeUI0s5smGDV0VFz3XDLGvv/56fPSjH41Dhw7FyMgvQskdd9wRZ86ciXPnzsU73/nOOHr0aHzoQx9q3KhpO3k8sSDvO/NtuEpLuTKa1eShZAUgdWuG2M9//vNRLBbj4MGDS8/t3r07Dh48GHv37o1isRiFQiF27tzZ1IGStrzWn64VFOvdbW6Xeucp96GoePlqXLx05brvVdsMsH5rhtjHH388Hn/88bJfe/755xs+INpTihuVKrV9XSv41vP3SN/KD0Ur50JEPjc5AqRIxy5aIsXOUPUewZXno7torfV0UwOgsqpPJ4D1WPxP+x/+9btLO7U3b8r2M9Rat/zrLYHIa+kE2VDbDNAcVmJpqctXfnkixcVLVzI7DL6ag+nrbdqQSrMHAEiZEEvL5Ok2ezVjqbcEIsXSCQBIjXICWiZPt9mrGUu9R3Dl/eguAGgHQiwtk6cTCqodS731jOogAaC5lBPQMnm6zZ6nsQAAtbMSS8vk6TZ7nsYCANROiKVqjehClafb7HkaCwBQGyGWquhCBQDkiZpYqpKn47EAAKzEsqprywdWowtV8zSifAMA2pUQS1krywdWowtVc1RbvpFF0BWuAcgD5QSUVa58YCVHUjVPNeUb1bTObbQs3hMAyhFiKWutMoG+3p7Ys2ubFbgmqaajWBZ1ymqjAcgL5QSUVamj1ac/8v4MRtQZFm/Vr+ba8o0s2vjmqXUwAJ3NSixl6WjVeitv1a+08ue/Wj1yM+uUs3hPACjHSixl6Wi1XCs2M1WqQy73nuOFoes23zX7g0YW7wkA5QixrEpHq19oVaOHSrfky5VwZPFBw4cbAPJCiIU1VNrM1MjwVqkOeTXXftBYXC3+P1/9v00Nlz7cAJAHamJhDa3azLSeOmRHXwHQaYRYWEOrNjONDA/Gnl3bll63lmPMHH0FQKdRTgBraOVmpnpv1Tv6CoBOI8TCGlq5maneUxDqqacFgJQJsSSrFcdeLWrFZqb1nILg6CsAOo2aWJLUjhuZ1lPXup56WgBIkZVYVtXKlc5aVXvsVZ6vYaX11rU6+gqATiLEUlarDvivVzWBL+/XsJK6VgConnICysr7kU3VHHuV92tYaT3nxAJApxFiKSvvRzZVE/jyfg0rqWsFgOopJ6CsWm9tt7r2tJpjr1K8Pa+uFQCqI8RSVi1HNmVVe7pW4HPsFAC0L+UElFXLre281p66PQ8A7ctKLKuq9tZ2nmtP3Z4HgPYkxLJuKdaeUl5K5+oC0NmUE7BujoZqD+3YBQ2A9iXEsm5qT9tDXmubAaAc5QTUbLVbzkJr2vJc2wwAK1mJpSZuObevarqgAUBeCLHUxC3n9qW2GYCUKCegJm45t69quqABQF4IsdTEcVrtTW0zAKlQTkBN3HIGAPLASiw1ccsZAMgDIZaaueUMAGRNOQEAAMkRYgEASI4QCwBAcoRYAACSI8QCAJAcIRYAgOQIsQAAJEeIBQAgOZod0HSTU9M6fAEADSXE0lSTU9Nx+NipmL+yEBERs3PFOHzsVESEIAsA1E05AU11ZOL0UoBdNH9lIY5MnM5oRABAOxBiaarZuWJNzwMAVEOIpan6entqeh4AoBpCLE01XhiKzd3Lp9nm7g0xXhjKaEQAQDuwsasGdtnXbvHn4+cGADSSEFslu+zrNzI82NCfkQ8TAIBygirZZZ8Pix8mFjeGLX6YmJyaznhkAEArCbFVsss+H3yYAAAihNiq2WWfDz5MAAARQmzV7LLPBx8mAIAIG7uqlqdd9p28sWm8MLRsg12EDxMA0ImE2Bo0epd9PTr9lIQ8fZgAALIjxNYgDyuglTY2dUqQy8OHiVbJw5wDgDwSYquUlxVQG5s6R6U5d8/2LVkODQAyZ2NXlfJytJONTZ0jL3MOAPJIiK1SXlZAnZLQOfIy5wAgj4TYKuVlBXRkeDD27Nq29L59vT2xZ9c2dZJtKC9zDgDySE1slfJ0tFMnbWzqZHmacwCQN0JslRztRKuZcwCwOiG2BlZAaTVzDgDKUxMLAEByrMTCKjQaAID8EmKhjLw0twAAylNOAGVoNAAA+SbEQhkaDQBAvgmxUIZGAwCQb0IslKG9LwDkm41dUIZGAwCQb0IsrEKjAQDIL+UEAAAkR4gFACA5HVFOoPMSAEB7afsQq/MSAED7aftyAp2XAADaT1Uh9uLFi3H33XfHa6+9FhERJ06ciLGxsdixY0ccOnSoqQNcL52XAADaz5oh9pVXXok/+qM/irNnz0ZExFtvvRUHDhyIp59+Ol544YX4zne+ExMTE80eZ910XgIAaD9rhtgvfelL8YlPfCIGBgYiIuLkyZNx2223xdatW6O7uzvGxsbi+PHjTR9ovXReAgBoP2tu7PrkJz+57PGFCxeiv79/6fHAwECcP3++5jfu63tbzX+nHvds3xK9W26IZ4+9Gj9641K84+03xgO73hXb37O1Je9fj/7+LVkPgQSYJ1TDPKEa5gnVyNs8qfl0goWFhejq6lp6XCqVlj2u1uzsxVhYKNX89+oxfOtN8cRDI8uem5l5syXvXav+/i25HRv5YZ5QDfOEapgnVCOLebJhQ1fFRc+aTycYHByMmZmZpcczMzNLpQYAANAKNYfYO+64I86cORPnzp2Lq1evxtGjR+POO+9sxtgAAKCsmssJenp64uDBg7F3794oFotRKBRi586dzRgbAACUVXWI/frXv77055GRkXj++eebMiAAAFhL23fsAgCg/QixAAAkR4gFACA5QiwAAMkRYgEASI4QCwBAcoRYAACSI8QCAJAcIRYAgOQIsQAAJEeIBQAgOd1ZD4DKJqem48jE6ZidK0Zfb0+MF4ZiZHgw62EBAGRKiM2xyanpOHzsVMxfWYiIiNm5Yhw+dioiQpAFADqacoIcOzJxeinALpq/shBHJk5nNCIAgHwQYnNsdq5Y0/MAAJ1CiM2xvt6emp4HAOgUQmyOjReGYnP38l/R5u4NMV4YymhEAAD5YGNXRqo5dWDxsdMJAACWE2IzUOnUgXu2b1n2vSPDg0IrAMAKygky4NQBAID1EWIz4NQBAID1EWIz4NQBAID1EWIz4NQBAID1sbErA04dAABYHyE2I04dAACon3ICAACSI8QCAJAcIRYAgOQIsQAAJEeIBQAgOUIsAADJEWIBAEiOEAsAQHKEWAAAkiPEAgCQHCEWAIDkCLEAACRHiAUAIDlCLAAAyRFiAQBIjhALAEByhFgAAJLTnfUA8m5yajqOTJyO2bli9PX2xHhhKEaGB7MeFgBARxNiK5icmo7Dx07F/JWFiIiYnSvG4WOnIiIEWQCADCknqODIxOmlALto/spCHJk4ndGIAACIEGIrmp0r1vQ8AACtIcRW0NfbU9PzAAC0hhBbwXhhKDZ3L/8Rbe7eEOOFoYxGBABAhI1dFS1u3nI6AQBAvgixaxgZHhRaAQByRjkBAADJEWIBAEiOEAsAQHKEWAAAkiPEAgCQHCEWAIDkCLEAACRHiAUAIDlCLAAAyRFiAQBIjhALAEByhFgAAJIjxAIAkBwhFgCA5AixAAAkR4gFACA5QiwAAMkRYgEASI4QCwBAcoRYAACSI8QCAJAcIRYAgOQIsQAAJEeIBQAgOUIsAADJEWIBAEiOEAsAQHKEWAAAktOd9QDoXJNT03Fk4nTMzhWjr7cnxgtDMTI8mPWwAIAECLFkYnJqOg4fOxXzVxYiImJ2rhiHj52KiBBkAYA1KScgE0cmTi8F2EXzVxbiyMTpjEYEAKREiCUTs3PFmp4HALiWEEsm+np7anoeAFzM1yYAAAfWSURBVOBaQiyZGC8Mxebu5dNvc/eGGC8MZTQiACAlNnaRicXNW04nAADqIcSSmZHhQaEVAKiLEEtTOAMWAGgmIZaGcwYsANBsNnbRcM6ABQCabV0h9qtf/WrcddddsWPHjvj7v//7Ro2JxDkDFgBotrrLCc6fPx+HDh2KI0eOxObNm2P37t3xvve9L37zN3+zkeMjQX29PWUDqzNgAYBGqXsl9sSJE/G7v/u7cdNNN8Wv/MqvxB/8wR/E8ePHGzk2EuUMWACg2epeib1w4UL09/cvPR4YGIiTJ09W/ff7+t5W71u3vf7+LVkPYV3u2b4lerfcEM8eezV+9MaleMfbb4wHdr0rtr9na9ZDayupzxNawzyhGuYJ1cjbPKk7xC4sLERXV9fS41KptOzxWmZnL8bCQqnet29b/f1bYmbmzayHsW7Dt94UTzw0suy5driuvGiXeUJzmSdUwzyhGlnMkw0buiouetZdTjA4OBgzMzNLj2dmZmJgYKDelwMAgKrVHWJ/7/d+LyYnJ+PHP/5xXLp0Kf7lX/4l7rzzzkaODQAAyqq7nODXfu3XYv/+/fHAAw/E5cuX4/7774/f+q3fauTYINd0JQOA7KyrY9fY2FiMjY01aiyQDF3JACBbOnZBHXQlA4BsCbFQB13JACBbQizUYbXuY7qSAUBrCLFQB13JACBb69rYBZ1qcfOW0wkAIBtCLNRpZHhQaAWAjCgnAAAgOUIsAADJEWIBAEiOEAsAQHKEWAAAkiPEAgCQHCEWAIDkCLEAACRHiAUAIDlCLAAAyRFiAQBIjhALAEByhFgAAJIjxAIAkBwhFgCA5HRnPYBWmJyajiMTp2N2rhh9vT0xXhiKkeHBrIcFAECd2j7ETk5Nx+Fjp2L+ykJERMzOFePwsVMREYIsAECi2r6c4MjE6aUAu2j+ykIcmTid0YgAAFivtg+xs3PFmp4HACD/2j7E9vX21PQ8AAD51/YhdrwwFJu7l1/m5u4NMV4YymhEAACsV9tv7FrcvOV0AgCA9tH2ITbiF0FWaAUAaB9tX04AAED7EWIBAEiOEAsAQHKEWAAAkiPEAgCQHCEWAIDkCLEAACRHiAUAIDlCLAAAyRFiAQBIjhALAEByhFgAAJIjxAIAkBwhFgCA5HRn9cYbNnRl9da552dDNcwTqmGeUA3zhGq0ep6s9X5dpVKp1KKxAABAQygnAAAgOUIsAADJEWIBAEiOEAsAQHKEWAAAkiPEAgCQHCEWAIDkCLEAACRHiAUAIDlCbMYuXrwYd999d7z22msREXHixIkYGxuLHTt2xKFDhzIeHXnwuc99LkZHR2N0dDSefPLJiDBPuN5nP/vZuOuuu2J0dDSeeeaZiDBPWN0TTzwRjz32WESYJ1zvT//0T2N0dDTuvffeuPfee+OVV17J5zwpkZlvf/vbpbvvvrs0PDxc+v73v1+6dOlSqVAolP7rv/6rdPny5dKDDz5Y+sY3vpH1MMnQSy+9VPrDP/zDUrFYLM3Pz5ceeOCB0le/+lXzhGW++c1vlnbv3l26fPly6dKlS6UPfvCDpVdffdU8oawTJ06U3ve+95U+9rGP+X+H6ywsLJQ+8IEPlC5fvrz0XF7niZXYDH3pS1+KT3ziEzEwMBARESdPnozbbrsttm7dGt3d3TE2NhbHjx/PeJRkqb+/Px577LHYvHlzbNq0KYaGhuLs2bPmCcu8973vjWeffTa6u7tjdnY2rl69GnNzc+YJ1/nJT34Shw4diocffjgi/L/D9f7zP/8zIiIefPDBuOeee+Lv/u7vcjtPhNgMffKTn4zf+Z3fWXp84cKF6O/vX3o8MDAQ58+fz2Jo5MTtt98ev/3bvx0REWfPno1jx45FV1eXecJ1Nm3aFE899VSMjo7GyMiIf08o6+Mf/3js378/ent7I8L/O1xvbm4uRkZG4q//+q/jC1/4QvzjP/5j/PCHP8zlPBFic2RhYSG6urqWHpdKpWWP6Vzf+9734sEHH4xHH300tm7dap5Q1r59+2JycjJef/31OHv2rHnCMl/+8pfjlltuiZGRkaXn/L/DSu9+97vjySefjC1btsTNN98c999/fzz11FO5nCfdWQ+AXxocHIyZmZmlxzMzM0ulBnSub33rW7Fv3744cOBAjI6Oxssvv2yesMzp06djfn4+3vWud8WNN94YO3bsiOPHj8fGjRuXvsc84YUXXoiZmZm4995746c//Wn8/Oc/jx/84AfmCcv8+7//e1y+fHnpw06pVIpf//Vfz+X/O1Zic+SOO+6IM2fOxLlz5+Lq1atx9OjRuPPOO7MeFhl6/fXX46Mf/Wh85jOfidHR0YgwT7jea6+9Fo8//njMz8/H/Px8fO1rX4vdu3ebJyzzzDPPxNGjR+Of/umfYt++ffH7v//78Td/8zfmCcu8+eab8eSTT0axWIyLFy/Gc889F3/5l3+Zy3liJTZHenp64uDBg7F3794oFotRKBRi586dWQ+LDH3+85+PYrEYBw8eXHpu9+7d5gnLFAqFOHnyZNx3332xcePG2LFjR4yOjsbNN99snlCR/3dY6YMf/GC88sorcd9998XCwkL88R//cbz73e/O5TzpKpVKpawHAQAAtVBOAABAcoRYAACSI8QCAJAcIRYAgOQIsQAAJEeIBQAgOUIsAADJEWIBAEjO/wcVn0CJj9vZqwAAAABJRU5ErkJggg==\n",
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
"text/plain": [
|
||
"<Figure size 842.4x595.44 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"filenames": {
|
||
<<<<<<< HEAD
|
||
"image/png": "/Users/MortenImac/Teaching/MachineLearning/doc/src/LectureNotes/_build/jupyter_execute/regression_140_0.png"
|
||
=======
|
||
"image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_140_0.png"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
}
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# plotting the y_test vs y_pred\n",
|
||
"# ideally should have been a straight line\n",
|
||
"plt.scatter(Y_test, y_test_predict)\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Reducing the number of degrees of freedom, overarching view\n",
|
||
"\n",
|
||
"Many Machine Learning problems involve thousands or even millions of\n",
|
||
"features for each training instance. Not only does this make training\n",
|
||
"extremely slow, it can also make it much harder to find a good\n",
|
||
"solution, as we will see. This problem is often referred to as the\n",
|
||
"curse of dimensionality. Fortunately, in real-world problems, it is\n",
|
||
"often possible to reduce the number of features considerably, turning\n",
|
||
"an intractable problem into a tractable one.\n",
|
||
"\n",
|
||
"Later we will discuss some of the most popular dimensionality reduction\n",
|
||
"techniques: the principal component analysis (PCA), Kernel PCA, and\n",
|
||
"Locally Linear Embedding (LLE). \n",
|
||
"\n",
|
||
"\n",
|
||
"Principal component analysis and its various variants deal with the\n",
|
||
"problem of fitting a low-dimensional [affine\n",
|
||
"subspace](https://en.wikipedia.org/wiki/Affine_space) to a set of of\n",
|
||
"data points in a high-dimensional space. With its family of methods it\n",
|
||
"is one of the most used tools in data modeling, compression and\n",
|
||
"visualization.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Preprocessing our data\n",
|
||
"\n",
|
||
"Before we proceed however, we will discuss how to preprocess our\n",
|
||
"data. Till now and in connection with our previous examples we have\n",
|
||
"not met so many cases where we are too sensitive to the scaling of our\n",
|
||
"data. Normally the data may need a rescaling and/or may be sensitive\n",
|
||
"to extreme values. Scaling the data renders our inputs much more\n",
|
||
"suitable for the algorithms we want to employ.\n",
|
||
"\n",
|
||
"**Scikit-Learn** has several functions which allow us to rescale the\n",
|
||
"data, normally resulting in much better results in terms of various\n",
|
||
"accuracy scores. The **StandardScaler** function in **Scikit-Learn**\n",
|
||
"ensures that for each feature/predictor we study the mean value is\n",
|
||
"zero and the variance is one (every column in the design/feature\n",
|
||
"matrix). This scaling has the drawback that it does not ensure that\n",
|
||
"we have a particular maximum or minimum in our data set. Another\n",
|
||
"function included in **Scikit-Learn** is the **MinMaxScaler** which\n",
|
||
"ensures that all features are exactly between $0$ and $1$. The\n",
|
||
"\n",
|
||
"## More preprocessing\n",
|
||
"\n",
|
||
"\n",
|
||
"The **Normalizer** scales each data\n",
|
||
"point such that the feature vector has a euclidean length of one. In other words, it\n",
|
||
"projects a data point on the circle (or sphere in the case of higher dimensions) with a\n",
|
||
"radius of 1. This means every data point is scaled by a different number (by the\n",
|
||
"inverse of it’s length).\n",
|
||
"This normalization is often used when only the direction (or angle) of the data matters,\n",
|
||
"not the length of the feature vector.\n",
|
||
"\n",
|
||
"The **RobustScaler** works similarly to the StandardScaler in that it\n",
|
||
"ensures statistical properties for each feature that guarantee that\n",
|
||
"they are on the same scale. However, the RobustScaler uses the median\n",
|
||
"and quartiles, instead of mean and variance. This makes the\n",
|
||
"RobustScaler ignore data points that are very different from the rest\n",
|
||
"(like measurement errors). These odd data points are also called\n",
|
||
"outliers, and might often lead to trouble for other scaling\n",
|
||
"techniques.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Simple preprocessing examples, Franke function and regression"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"MSE before scaling: 0.00\n",
|
||
"R2 score before scaling 0.99\n",
|
||
"Feature min values before scaling:\n",
|
||
<<<<<<< HEAD
|
||
" [1.00000000e+00 5.70647611e-04 2.86109530e-05 3.25638696e-07\n",
|
||
" 1.63267720e-08 8.18586633e-10 1.85824944e-10 9.31683343e-12\n",
|
||
" 4.67124506e-13 2.34205437e-14 1.06040560e-13 5.31662874e-15\n",
|
||
" 2.66563483e-16 1.33648773e-17 6.70084075e-19 6.05117923e-17\n",
|
||
" 3.03392149e-18 1.52113815e-19 7.62663530e-21 3.82381876e-22\n",
|
||
" 1.91717440e-23]\n",
|
||
"Feature max values before scaling:\n",
|
||
" [1. 0.99888596 0.99975377 0.99777316 0.99864 0.99950759\n",
|
||
" 0.9966616 0.99752748 0.9983941 0.99926148 0.99555128 0.99641619\n",
|
||
" 0.99728185 0.99814827 0.99901543 0.9944422 0.99530615 0.99617084\n",
|
||
" 0.99703629 0.99790249 0.99876944]\n",
|
||
"Feature min values after scaling:\n",
|
||
" [ 0. -1.75397908 -1.83893651 -1.13595195 -1.1563748 -1.17802223\n",
|
||
" -0.89555231 -0.9052364 -0.91523154 -0.92555908 -0.76154161 -0.76696392\n",
|
||
" -0.77251583 -0.77820271 -0.78403036 -0.6735038 -0.67668971 -0.67993767\n",
|
||
" -0.68324996 -0.68662897 -0.69007714]\n",
|
||
"Feature max values after scaling:\n",
|
||
" [0. 1.70542138 1.71231136 2.1970696 2.20495992 2.2124631\n",
|
||
" 2.59210628 2.60447702 2.61644742 2.6280031 2.9321519 2.94723175\n",
|
||
" 2.96200187 2.97645003 2.99056362 3.23417362 3.25065381 3.26687534\n",
|
||
" 3.28282987 3.2985088 3.3139033 ]\n",
|
||
=======
|
||
" [1.00000000e+00 3.41860739e-03 3.03733002e-03 1.16868765e-05\n",
|
||
" 1.03834388e-05 9.22537365e-06 3.99528422e-08 3.54969007e-08\n",
|
||
" 3.15379305e-08 2.80205043e-08 1.36583081e-10 1.21349967e-10\n",
|
||
" 1.07815802e-10 9.57911031e-11 8.51075190e-11 4.66923931e-13\n",
|
||
" 4.14847893e-13 3.68579898e-13 3.27472173e-13 2.90949193e-13\n",
|
||
" 2.58499622e-13]\n",
|
||
"Feature max values before scaling:\n",
|
||
" [1. 0.99885903 0.99923003 0.99771937 0.99808994 0.99846064\n",
|
||
" 0.99658101 0.99695115 0.99732143 0.99769185 0.99544394 0.99581367\n",
|
||
" 0.99618353 0.99655352 0.99692366 0.99430818 0.99467748 0.99504691\n",
|
||
" 0.99541649 0.9957862 0.99615605]\n",
|
||
"Feature min values after scaling:\n",
|
||
" [ 0. -1.7254643 -1.67770844 -1.10618517 -1.1025354 -1.09809372\n",
|
||
" -0.86168855 -0.86697524 -0.87176225 -0.87600208 -0.72427577 -0.73199173\n",
|
||
" -0.7395003 -0.74676012 -0.75372886 -0.63410995 -0.64215466 -0.65016915\n",
|
||
" -0.65812548 -0.66599361 -0.67374146]\n",
|
||
"Feature max values after scaling:\n",
|
||
" [0. 1.83073388 1.70897028 2.39821909 2.29644339 2.19375534\n",
|
||
" 2.86764938 2.77826937 2.68697805 2.59393592 3.27571709 3.19719242\n",
|
||
" 3.11653264 3.03378065 2.94899889 3.64172054 3.57247381 3.50118655\n",
|
||
" 3.42784008 3.35242656 3.27495059]\n",
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
"MSE after scaling: 0.00\n",
|
||
"R2 score for scaled data: 0.99\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Common imports\n",
|
||
"import os\n",
|
||
"import numpy as np\n",
|
||
"import pandas as pd\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import sklearn.linear_model as skl\n",
|
||
"from sklearn.metrics import mean_squared_error\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"from sklearn.preprocessing import MinMaxScaler, StandardScaler, Normalizer\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",
|
||
"\n",
|
||
"def FrankeFunction(x,y):\n",
|
||
"\tterm1 = 0.75*np.exp(-(0.25*(9*x-2)**2) - 0.25*((9*y-2)**2))\n",
|
||
"\tterm2 = 0.75*np.exp(-((9*x+1)**2)/49.0 - 0.1*(9*y+1))\n",
|
||
"\tterm3 = 0.5*np.exp(-(9*x-7)**2/4.0 - 0.25*((9*y-3)**2))\n",
|
||
"\tterm4 = -0.2*np.exp(-(9*x-4)**2 - (9*y-7)**2)\n",
|
||
"\treturn term1 + term2 + term3 + term4\n",
|
||
"\n",
|
||
"\n",
|
||
"def create_X(x, y, n ):\n",
|
||
"\tif len(x.shape) > 1:\n",
|
||
"\t\tx = np.ravel(x)\n",
|
||
"\t\ty = np.ravel(y)\n",
|
||
"\n",
|
||
"\tN = len(x)\n",
|
||
"\tl = int((n+1)*(n+2)/2)\t\t# Number of elements in beta\n",
|
||
"\tX = np.ones((N,l))\n",
|
||
"\n",
|
||
"\tfor i in range(1,n+1):\n",
|
||
"\t\tq = int((i)*(i+1)/2)\n",
|
||
"\t\tfor k in range(i+1):\n",
|
||
"\t\t\tX[:,q+k] = (x**(i-k))*(y**k)\n",
|
||
"\n",
|
||
"\treturn X\n",
|
||
"\n",
|
||
"\n",
|
||
"# Making meshgrid of datapoints and compute Franke's function\n",
|
||
"n = 5\n",
|
||
"N = 1000\n",
|
||
"x = np.sort(np.random.uniform(0, 1, N))\n",
|
||
"y = np.sort(np.random.uniform(0, 1, N))\n",
|
||
"z = FrankeFunction(x, y)\n",
|
||
"X = create_X(x, y, n=n) \n",
|
||
"# split in training and test data\n",
|
||
"X_train, X_test, y_train, y_test = train_test_split(X,z,test_size=0.2)\n",
|
||
"\n",
|
||
"\n",
|
||
"clf = skl.LinearRegression().fit(X_train, y_train)\n",
|
||
"\n",
|
||
"# The mean squared error and R2 score\n",
|
||
"print(\"MSE before scaling: {:.2f}\".format(mean_squared_error(clf.predict(X_test), y_test)))\n",
|
||
"print(\"R2 score before scaling {:.2f}\".format(clf.score(X_test,y_test)))\n",
|
||
"\n",
|
||
"scaler = StandardScaler()\n",
|
||
"scaler.fit(X_train)\n",
|
||
"X_train_scaled = scaler.transform(X_train)\n",
|
||
"X_test_scaled = scaler.transform(X_test)\n",
|
||
"\n",
|
||
"print(\"Feature min values before scaling:\\n {}\".format(X_train.min(axis=0)))\n",
|
||
"print(\"Feature max values before scaling:\\n {}\".format(X_train.max(axis=0)))\n",
|
||
"\n",
|
||
"print(\"Feature min values after scaling:\\n {}\".format(X_train_scaled.min(axis=0)))\n",
|
||
"print(\"Feature max values after scaling:\\n {}\".format(X_train_scaled.max(axis=0)))\n",
|
||
"\n",
|
||
"clf = skl.LinearRegression().fit(X_train_scaled, y_train)\n",
|
||
"\n",
|
||
"\n",
|
||
"print(\"MSE after scaling: {:.2f}\".format(mean_squared_error(clf.predict(X_test_scaled), y_test)))\n",
|
||
"print(\"R2 score for scaled data: {:.2f}\".format(clf.score(X_test_scaled,y_test)))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## The singular value decomposition\n",
|
||
"\n",
|
||
"\n",
|
||
"The examples we have looked at so far are cases where we normally can\n",
|
||
"invert the matrix $\\boldsymbol{X}^T\\boldsymbol{X}$. Using a polynomial expansion as we\n",
|
||
"did both for the masses and the fitting of the equation of state,\n",
|
||
"leads to row vectors of the design matrix which are essentially\n",
|
||
"orthogonal due to the polynomial character of our model. Obtaining the inverse of the design matrix is then often done via a so-called LU, QR or Cholesky decomposition. \n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"This may\n",
|
||
"however not the be case in general and a standard matrix inversion\n",
|
||
"algorithm based on say LU, QR or Cholesky decomposition may lead to singularities. We will see examples of this below.\n",
|
||
"\n",
|
||
"There is however a way to partially circumvent this problem and also gain some insights about the ordinary least squares approach, and later shrinkage methods like Ridge and Lasso regressions. \n",
|
||
"\n",
|
||
"This is given by the **Singular Value Decomposition** algorithm, perhaps\n",
|
||
"the most powerful linear algebra algorithm. Let us look at a\n",
|
||
"different example where we may have problems with the standard matrix\n",
|
||
"inversion algorithm. Thereafter we dive into the math of the SVD.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Linear Regression Problems\n",
|
||
"\n",
|
||
"One of the typical problems we encounter with linear regression, in particular \n",
|
||
"when the matrix $\\boldsymbol{X}$ (our so-called design matrix) is high-dimensional, \n",
|
||
"are problems with near singular or singular matrices. The column vectors of $\\boldsymbol{X}$ \n",
|
||
"may be linearly dependent, normally referred to as super-collinearity. \n",
|
||
"This means that the matrix may be rank deficient and it is basically impossible to \n",
|
||
"to model the data using linear regression. As an example, consider the matrix"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\begin{align*}\n",
|
||
"\\mathbf{X} & = \\left[\n",
|
||
"\\begin{array}{rrr}\n",
|
||
"1 & -1 & 2\n",
|
||
"\\\\\n",
|
||
"1 & 0 & 1\n",
|
||
"\\\\\n",
|
||
"1 & 2 & -1\n",
|
||
"\\\\\n",
|
||
"1 & 1 & 0\n",
|
||
"\\end{array} \\right]\n",
|
||
"\\end{align*}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The columns of $\\boldsymbol{X}$ are linearly dependent. We see this easily since the \n",
|
||
"the first column is the row-wise sum of the other two columns. The rank (more correct,\n",
|
||
"the column rank) of a matrix is the dimension of the space spanned by the\n",
|
||
"column vectors. Hence, the rank of $\\mathbf{X}$ is equal to the number\n",
|
||
"of linearly independent columns. In this particular case the matrix has rank 2.\n",
|
||
"\n",
|
||
"Super-collinearity of an $(n \\times p)$-dimensional design matrix $\\mathbf{X}$ implies\n",
|
||
"that the inverse of the matrix $\\boldsymbol{X}^T\\boldsymbol{X}$ (the matrix we need to invert to solve the linear regression equations) is non-invertible. If we have a square matrix that does not have an inverse, we say this matrix singular. The example here demonstrates this"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\begin{align*}\n",
|
||
"\\boldsymbol{X} & = \\left[\n",
|
||
"\\begin{array}{rr}\n",
|
||
"1 & -1\n",
|
||
"\\\\\n",
|
||
"1 & -1\n",
|
||
"\\end{array} \\right].\n",
|
||
"\\end{align*}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We see easily that $\\mbox{det}(\\boldsymbol{X}) = x_{11} x_{22} - x_{12} x_{21} = 1 \\times (-1) - 1 \\times (-1) = 0$. Hence, $\\mathbf{X}$ is singular and its inverse is undefined.\n",
|
||
"This is equivalent to saying that the matrix $\\boldsymbol{X}$ has at least an eigenvalue which is zero.\n",
|
||
"\n",
|
||
"\n",
|
||
"## Fixing the singularity\n",
|
||
"\n",
|
||
"If our design matrix $\\boldsymbol{X}$ which enters the linear regression problem"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- Equation labels as ordinary links -->\n",
|
||
"<div id=\"_auto1\"></div>\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{equation}\n",
|
||
"\\boldsymbol{\\beta} = (\\boldsymbol{X}^{T} \\boldsymbol{X})^{-1} \\boldsymbol{X}^{T} \\boldsymbol{y},\n",
|
||
"\\label{_auto1} \\tag{1}\n",
|
||
"\\end{equation}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"has linearly dependent column vectors, we will not be able to compute the inverse\n",
|
||
"of $\\boldsymbol{X}^T\\boldsymbol{X}$ and we cannot find the parameters (estimators) $\\beta_i$. \n",
|
||
"The estimators are only well-defined if $(\\boldsymbol{X}^{T}\\boldsymbol{X})^{-1}$ exits. \n",
|
||
"This is more likely to happen when the matrix $\\boldsymbol{X}$ is high-dimensional. In this case it is likely to encounter a situation where \n",
|
||
"the regression parameters $\\beta_i$ cannot be estimated.\n",
|
||
"\n",
|
||
"A cheap *ad hoc* approach is simply to add a small diagonal component to the matrix to invert, that is we change"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}^{T} \\boldsymbol{X} \\rightarrow \\boldsymbol{X}^{T} \\boldsymbol{X}+\\lambda \\boldsymbol{I},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"where $\\boldsymbol{I}$ is the identity matrix. When we discuss **Ridge** regression this is actually what we end up evaluating. The parameter $\\lambda$ is called a hyperparameter. More about this later. \n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Basic math of the SVD\n",
|
||
"\n",
|
||
"\n",
|
||
"From standard linear algebra we know that a square matrix $\\boldsymbol{X}$ can be diagonalized if and only it is \n",
|
||
"a so-called [normal matrix](https://en.wikipedia.org/wiki/Normal_matrix), that is if $\\boldsymbol{X}\\in {\\mathbb{R}}^{n\\times n}$\n",
|
||
"we have $\\boldsymbol{X}\\boldsymbol{X}^T=\\boldsymbol{X}^T\\boldsymbol{X}$ or if $\\boldsymbol{X}\\in {\\mathbb{C}}^{n\\times n}$ we have $\\boldsymbol{X}\\boldsymbol{X}^{\\dagger}=\\boldsymbol{X}^{\\dagger}\\boldsymbol{X}$.\n",
|
||
"The matrix has then a set of eigenpairs"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"(\\lambda_1,\\boldsymbol{u}_1),\\dots, (\\lambda_n,\\boldsymbol{u}_n),\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and the eigenvalues are given by the diagonal matrix"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\Sigma}=\\mathrm{Diag}(\\lambda_1, \\dots,\\lambda_n).\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The matrix $\\boldsymbol{X}$ can be written in terms of an orthogonal/unitary transformation $\\boldsymbol{U}$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X} = \\boldsymbol{U}\\boldsymbol{\\Sigma}\\boldsymbol{V}^T,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"with $\\boldsymbol{U}\\boldsymbol{U}^T=\\boldsymbol{I}$ or $\\boldsymbol{U}\\boldsymbol{U}^{\\dagger}=\\boldsymbol{I}$.\n",
|
||
"\n",
|
||
"Not all square matrices are diagonalizable. A matrix like the one discussed above"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X} = \\begin{bmatrix} \n",
|
||
"1& -1 \\\\\n",
|
||
"1& -1\\\\\n",
|
||
"\\end{bmatrix}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"is not diagonalizable, it is a so-called [defective matrix](https://en.wikipedia.org/wiki/Defective_matrix). It is easy to see that the condition\n",
|
||
"$\\boldsymbol{X}\\boldsymbol{X}^T=\\boldsymbol{X}^T\\boldsymbol{X}$ is not fulfilled. \n",
|
||
"\n",
|
||
"\n",
|
||
"## The SVD, a Fantastic Algorithm\n",
|
||
"\n",
|
||
"\n",
|
||
"However, and this is the strength of the SVD algorithm, any general\n",
|
||
"matrix $\\boldsymbol{X}$ can be decomposed in terms of a diagonal matrix and\n",
|
||
"two orthogonal/unitary matrices. The [Singular Value Decompostion\n",
|
||
"(SVD) theorem](https://en.wikipedia.org/wiki/Singular_value_decomposition)\n",
|
||
"states that a general $m\\times n$ matrix $\\boldsymbol{X}$ can be written in\n",
|
||
"terms of a diagonal matrix $\\boldsymbol{\\Sigma}$ of dimensionality $m\\times n$\n",
|
||
"and two orthognal matrices $\\boldsymbol{U}$ and $\\boldsymbol{V}$, where the first has\n",
|
||
"dimensionality $m \\times m$ and the last dimensionality $n\\times n$.\n",
|
||
"We have then"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X} = \\boldsymbol{U}\\boldsymbol{\\Sigma}\\boldsymbol{V}^T\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"As an example, the above defective matrix can be decomposed as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X} = \\frac{1}{\\sqrt{2}}\\begin{bmatrix} 1& 1 \\\\ 1& -1\\\\ \\end{bmatrix} \\begin{bmatrix} 2& 0 \\\\ 0& 0\\\\ \\end{bmatrix} \\frac{1}{\\sqrt{2}}\\begin{bmatrix} 1& -1 \\\\ 1& 1\\\\ \\end{bmatrix}=\\boldsymbol{U}\\boldsymbol{\\Sigma}\\boldsymbol{V}^T,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"with eigenvalues $\\sigma_1=2$ and $\\sigma_2=0$. \n",
|
||
"The SVD exits always! \n",
|
||
"\n",
|
||
"The SVD\n",
|
||
"decomposition (singular values) gives eigenvalues \n",
|
||
"$\\sigma_i\\geq\\sigma_{i+1}$ for all $i$ and for dimensions larger than $i=p$, the\n",
|
||
"eigenvalues (singular values) are zero.\n",
|
||
"\n",
|
||
"In the general case, where our design matrix $\\boldsymbol{X}$ has dimension\n",
|
||
"$n\\times p$, the matrix is thus decomposed into an $n\\times n$\n",
|
||
"orthogonal matrix $\\boldsymbol{U}$, a $p\\times p$ orthogonal matrix $\\boldsymbol{V}$\n",
|
||
"and a diagonal matrix $\\boldsymbol{\\Sigma}$ with $r=\\mathrm{min}(n,p)$\n",
|
||
"singular values $\\sigma_i\\geq 0$ on the main diagonal and zeros filling\n",
|
||
"the rest of the matrix. There are at most $p$ singular values\n",
|
||
"assuming that $n > p$. In our regression examples for the nuclear\n",
|
||
"masses and the equation of state this is indeed the case, while for\n",
|
||
"the Ising model we have $p > n$. These are often cases that lead to\n",
|
||
"near singular or singular matrices.\n",
|
||
"\n",
|
||
"The columns of $\\boldsymbol{U}$ are called the left singular vectors while the columns of $\\boldsymbol{V}$ are the right singular vectors.\n",
|
||
"\n",
|
||
"## Economy-size SVD\n",
|
||
"\n",
|
||
"If we assume that $n > p$, then our matrix $\\boldsymbol{U}$ has dimension $n\n",
|
||
"\\times n$. The last $n-p$ columns of $\\boldsymbol{U}$ become however\n",
|
||
"irrelevant in our calculations since they are multiplied with the\n",
|
||
"zeros in $\\boldsymbol{\\Sigma}$.\n",
|
||
"\n",
|
||
"The economy-size decomposition removes extra rows or columns of zeros\n",
|
||
"from the diagonal matrix of singular values, $\\boldsymbol{\\Sigma}$, along with the columns\n",
|
||
"in either $\\boldsymbol{U}$ or $\\boldsymbol{V}$ that multiply those zeros in the expression. \n",
|
||
"Removing these zeros and columns can improve execution time\n",
|
||
"and reduce storage requirements without compromising the accuracy of\n",
|
||
"the decomposition.\n",
|
||
"\n",
|
||
"If $n > p$, we keep only the first $p$ columns of $\\boldsymbol{U}$ and $\\boldsymbol{\\Sigma}$ has dimension $p\\times p$. \n",
|
||
"If $p > n$, then only the first $n$ columns of $\\boldsymbol{V}$ are computed and $\\boldsymbol{\\Sigma}$ has dimension $n\\times n$.\n",
|
||
"The $n=p$ case is obvious, we retain the full SVD. \n",
|
||
"In general the economy-size SVD leads to less FLOPS and still conserving the desired accuracy.\n",
|
||
"\n",
|
||
"## Codes for the SVD"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[ 1. -1. 2.]\n",
|
||
" [ 1. 0. 1.]\n",
|
||
" [ 1. 2. -1.]\n",
|
||
" [ 1. 1. 0.]]\n",
|
||
"[[ 4. 2. 2.]\n",
|
||
" [ 2. 6. -4.]\n",
|
||
" [ 2. -4. 6.]]\n",
|
||
<<<<<<< HEAD
|
||
"[[-1.96889890e-16 8.16496581e-01 -5.77350269e-01]\n",
|
||
" [-7.07106781e-01 4.08248290e-01 5.77350269e-01]\n",
|
||
" [ 7.07106781e-01 4.08248290e-01 5.77350269e-01]]\n",
|
||
"[1.00000000e+01 6.00000000e+00 2.38805416e-31]\n",
|
||
"[[-5.76324444e-17 -7.07106781e-01 7.07106781e-01]\n",
|
||
" [ 8.16496581e-01 4.08248290e-01 4.08248290e-01]\n",
|
||
" [-5.77350269e-01 5.77350269e-01 5.77350269e-01]]\n",
|
||
"[[ 1.39583657e+30 -1.39583657e+30 -1.39583657e+30]\n",
|
||
" [-1.39583657e+30 1.39583657e+30 1.39583657e+30]\n",
|
||
" [-1.39583657e+30 1.39583657e+30 1.39583657e+30]]\n"
|
||
=======
|
||
"[[-9.57425734e-17 8.16496581e-01 -5.77350269e-01]\n",
|
||
" [-7.07106781e-01 4.08248290e-01 5.77350269e-01]\n",
|
||
" [ 7.07106781e-01 4.08248290e-01 5.77350269e-01]]\n",
|
||
"[1.00000000e+01 6.00000000e+00 9.10898112e-32]\n",
|
||
"[[ 3.33066907e-17 -7.07106781e-01 7.07106781e-01]\n",
|
||
" [ 8.16496581e-01 4.08248290e-01 4.08248290e-01]\n",
|
||
" [ 5.77350269e-01 -5.77350269e-01 -5.77350269e-01]]\n",
|
||
"[[-3.65939208e+30 3.65939208e+30 3.65939208e+30]\n",
|
||
" [ 3.65939208e+30 -3.65939208e+30 -3.65939208e+30]\n",
|
||
" [ 3.65939208e+30 -3.65939208e+30 -3.65939208e+30]]\n"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"# SVD inversion\n",
|
||
"def SVDinv(A):\n",
|
||
" ''' Takes as input a numpy matrix A and returns inv(A) based on singular value decomposition (SVD).\n",
|
||
" SVD is numerically more stable than the inversion algorithms provided by\n",
|
||
" numpy and scipy.linalg at the cost of being slower.\n",
|
||
" '''\n",
|
||
" U, s, VT = np.linalg.svd(A)\n",
|
||
"# print('test U')\n",
|
||
"# print( (np.transpose(U) @ U - U @np.transpose(U)))\n",
|
||
"# print('test VT')\n",
|
||
"# print( (np.transpose(VT) @ VT - VT @np.transpose(VT)))\n",
|
||
" print(U)\n",
|
||
" print(s)\n",
|
||
" print(VT)\n",
|
||
"\n",
|
||
" D = np.zeros((len(U),len(VT)))\n",
|
||
" for i in range(0,len(VT)):\n",
|
||
" D[i,i]=s[i]\n",
|
||
" UT = np.transpose(U); V = np.transpose(VT); invD = np.linalg.inv(D)\n",
|
||
" return np.matmul(V,np.matmul(invD,UT))\n",
|
||
"\n",
|
||
"\n",
|
||
"X = np.array([ [1.0, -1.0, 2.0], [1.0, 0.0, 1.0], [1.0, 2.0, -1.0], [1.0, 1.0, 0.0] ])\n",
|
||
"print(X)\n",
|
||
"A = np.transpose(X) @ X\n",
|
||
"print(A)\n",
|
||
"# Brute force inversion of super-collinear matrix\n",
|
||
"#B = np.linalg.inv(A)\n",
|
||
"#print(B)\n",
|
||
"C = SVDinv(A)\n",
|
||
"print(C)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The matrix $\\boldsymbol{X}$ has columns that are linearly dependent. The first\n",
|
||
"column is the row-wise sum of the other two columns. The rank of a\n",
|
||
"matrix (the column rank) is the dimension of space spanned by the\n",
|
||
"column vectors. The rank of the matrix is the number of linearly\n",
|
||
"independent columns, in this case just $2$. We see this from the\n",
|
||
"singular values when running the above code. Running the standard\n",
|
||
"inversion algorithm for matrix inversion with $\\boldsymbol{X}^T\\boldsymbol{X}$ results\n",
|
||
"in the program terminating due to a singular matrix.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Mathematical Properties\n",
|
||
"\n",
|
||
"There are several interesting mathematical properties which will be\n",
|
||
"relevant when we are going to discuss the differences between say\n",
|
||
"ordinary least squares (OLS) and **Ridge** regression.\n",
|
||
"\n",
|
||
"We have from OLS that the parameters of the linear approximation are given by"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\tilde{y}} = \\boldsymbol{X}\\boldsymbol{\\beta} = \\boldsymbol{X}\\left(\\boldsymbol{X}^T\\boldsymbol{X}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The matrix to invert can be rewritten in terms of our SVD decomposition as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}^T\\boldsymbol{X} = \\boldsymbol{V}\\boldsymbol{\\Sigma}^T\\boldsymbol{U}^T\\boldsymbol{U}\\boldsymbol{\\Sigma}\\boldsymbol{V}^T.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Using the orthogonality properties of $\\boldsymbol{U}$ we have"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}^T\\boldsymbol{X} = \\boldsymbol{V}\\boldsymbol{\\Sigma}^T\\boldsymbol{\\Sigma}\\boldsymbol{V}^T = \\boldsymbol{V}\\boldsymbol{D}\\boldsymbol{V}^T,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"with $\\boldsymbol{D}$ being a diagonal matrix with values along the diagonal given by the singular values squared. \n",
|
||
"\n",
|
||
"This means that"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"(\\boldsymbol{X}^T\\boldsymbol{X})\\boldsymbol{V} = \\boldsymbol{V}\\boldsymbol{D},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"that is the eigenvectors of $(\\boldsymbol{X}^T\\boldsymbol{X})$ are given by the columns of the right singular matrix of $\\boldsymbol{X}$ and the eigenvalues are the squared singular values. It is easy to show (show this) that"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"(\\boldsymbol{X}\\boldsymbol{X}^T)\\boldsymbol{U} = \\boldsymbol{U}\\boldsymbol{D},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"that is, the eigenvectors of $(\\boldsymbol{X}\\boldsymbol{X})^T$ are the columns of the left singular matrix and the eigenvalues are the same. \n",
|
||
"\n",
|
||
"Going back to our OLS equation we have"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}\\boldsymbol{\\beta} = \\boldsymbol{X}\\left(\\boldsymbol{V}\\boldsymbol{D}\\boldsymbol{V}^T \\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y}=\\boldsymbol{U\\Sigma V^T}\\left(\\boldsymbol{V}\\boldsymbol{D}\\boldsymbol{V}^T \\right)^{-1}(\\boldsymbol{U\\Sigma V^T})^T\\boldsymbol{y}=\\boldsymbol{U}\\boldsymbol{U}^T\\boldsymbol{y}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We will come back to this expression when we discuss Ridge regression. \n",
|
||
"\n",
|
||
"\n",
|
||
"## Ridge and LASSO Regression\n",
|
||
"\n",
|
||
"Let us remind ourselves about the expression for the standard Mean Squared Error (MSE) which we used to define our cost function and the equations for the ordinary least squares (OLS) method, that is \n",
|
||
"our optimization problem is"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in {\\mathbb{R}}^{p}}}\\frac{1}{n}\\left\\{\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)^T\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)\\right\\}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"or we can state it as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in\n",
|
||
"{\\mathbb{R}}^{p}}}\\frac{1}{n}\\sum_{i=0}^{n-1}\\left(y_i-\\tilde{y}_i\\right)^2=\\frac{1}{n}\\vert\\vert \\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\vert\\vert_2^2,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"where we have used the definition of a norm-2 vector, that is"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\vert\\vert \\boldsymbol{x}\\vert\\vert_2 = \\sqrt{\\sum_i x_i^2}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"By minimizing the above equation with respect to the parameters\n",
|
||
"$\\boldsymbol{\\beta}$ we could then obtain an analytical expression for the\n",
|
||
"parameters $\\boldsymbol{\\beta}$. We can add a regularization parameter $\\lambda$ by\n",
|
||
"defining a new cost function to be optimized, that is"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in\n",
|
||
"{\\mathbb{R}}^{p}}}\\frac{1}{n}\\vert\\vert \\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\vert\\vert_2^2+\\lambda\\vert\\vert \\boldsymbol{\\beta}\\vert\\vert_2^2\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"which leads to the Ridge regression minimization problem where we\n",
|
||
"require that $\\vert\\vert \\boldsymbol{\\beta}\\vert\\vert_2^2\\le t$, where $t$ is\n",
|
||
"a finite number larger than zero. By defining"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"C(\\boldsymbol{X},\\boldsymbol{\\beta})=\\frac{1}{n}\\vert\\vert \\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\vert\\vert_2^2+\\lambda\\vert\\vert \\boldsymbol{\\beta}\\vert\\vert_1,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"we have a new optimization equation"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in\n",
|
||
"{\\mathbb{R}}^{p}}}\\frac{1}{n}\\vert\\vert \\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\vert\\vert_2^2+\\lambda\\vert\\vert \\boldsymbol{\\beta}\\vert\\vert_1\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"which leads to Lasso regression. Lasso stands for least absolute shrinkage and selection operator. \n",
|
||
"\n",
|
||
"Here we have defined the norm-1 as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\vert\\vert \\boldsymbol{x}\\vert\\vert_1 = \\sum_i \\vert x_i\\vert.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## More on Ridge Regression\n",
|
||
"\n",
|
||
"Using the matrix-vector expression for Ridge regression,"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"C(\\boldsymbol{X},\\boldsymbol{\\beta})=\\frac{1}{n}\\left\\{(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})^T(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\right\\}+\\lambda\\boldsymbol{\\beta}^T\\boldsymbol{\\beta},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"by taking the derivatives with respect to $\\boldsymbol{\\beta}$ we obtain then\n",
|
||
"a slightly modified matrix inversion problem which for finite values\n",
|
||
"of $\\lambda$ does not suffer from singularity problems. We obtain"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\beta}^{\\mathrm{Ridge}} = \\left(\\boldsymbol{X}^T\\boldsymbol{X}+\\lambda\\boldsymbol{I}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"with $\\boldsymbol{I}$ being a $p\\times p$ identity matrix with the constraint that"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\sum_{i=0}^{p-1} \\beta_i^2 \\leq t,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"with $t$ a finite positive number. \n",
|
||
"\n",
|
||
"We see that Ridge regression is nothing but the standard\n",
|
||
"OLS with a modified diagonal term added to $\\boldsymbol{X}^T\\boldsymbol{X}$. The\n",
|
||
"consequences, in particular for our discussion of the bias-variance tradeoff \n",
|
||
"are rather interesting.\n",
|
||
"\n",
|
||
"Furthermore, if we use the result above in terms of the SVD decomposition (our analysis was done for the OLS method), we had"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"(\\boldsymbol{X}\\boldsymbol{X}^T)\\boldsymbol{U} = \\boldsymbol{U}\\boldsymbol{D}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We can analyse the OLS solutions in terms of the eigenvectors (the columns) of the right singular value matrix $\\boldsymbol{U}$ as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}\\boldsymbol{\\beta} = \\boldsymbol{X}\\left(\\boldsymbol{V}\\boldsymbol{D}\\boldsymbol{V}^T \\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y}=\\boldsymbol{U\\Sigma V^T}\\left(\\boldsymbol{V}\\boldsymbol{D}\\boldsymbol{V}^T \\right)^{-1}(\\boldsymbol{U\\Sigma V^T})^T\\boldsymbol{y}=\\boldsymbol{U}\\boldsymbol{U}^T\\boldsymbol{y}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"For Ridge regression this becomes"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}\\boldsymbol{\\beta}^{\\mathrm{Ridge}} = \\boldsymbol{U\\Sigma V^T}\\left(\\boldsymbol{V}\\boldsymbol{D}\\boldsymbol{V}^T+\\lambda\\boldsymbol{I} \\right)^{-1}(\\boldsymbol{U\\Sigma V^T})^T\\boldsymbol{y}=\\sum_{j=0}^{p-1}\\boldsymbol{u}_j\\boldsymbol{u}_j^T\\frac{\\sigma_j^2}{\\sigma_j^2+\\lambda}\\boldsymbol{y},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"with the vectors $\\boldsymbol{u}_j$ being the columns of $\\boldsymbol{U}$. \n",
|
||
"\n",
|
||
"## Interpreting the Ridge results\n",
|
||
"\n",
|
||
"Since $\\lambda \\geq 0$, it means that compared to OLS, we have"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\frac{\\sigma_j^2}{\\sigma_j^2+\\lambda} \\leq 1.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Ridge regression finds the coordinates of $\\boldsymbol{y}$ with respect to the\n",
|
||
"orthonormal basis $\\boldsymbol{U}$, it then shrinks the coordinates by\n",
|
||
"$\\frac{\\sigma_j^2}{\\sigma_j^2+\\lambda}$. Recall that the SVD has\n",
|
||
"eigenvalues ordered in a descending way, that is $\\sigma_i \\geq\n",
|
||
"\\sigma_{i+1}$.\n",
|
||
"\n",
|
||
"For small eigenvalues $\\sigma_i$ it means that their contributions become less important, a fact which can be used to reduce the number of degrees of freedom.\n",
|
||
"Actually, calculating the variance of $\\boldsymbol{X}\\boldsymbol{v}_j$ shows that this quantity is equal to $\\sigma_j^2/n$.\n",
|
||
"With a parameter $\\lambda$ we can thus shrink the role of specific parameters. \n",
|
||
"\n",
|
||
"\n",
|
||
"## More interpretations\n",
|
||
"\n",
|
||
"For the sake of simplicity, let us assume that the design matrix is orthonormal, that is"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}^T\\boldsymbol{X}=(\\boldsymbol{X}^T\\boldsymbol{X})^{-1} =\\boldsymbol{I}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"In this case the standard OLS results in"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\beta}^{\\mathrm{OLS}} = \\boldsymbol{X}^T\\boldsymbol{y}=\\sum_{i=0}^{p-1}\\boldsymbol{u}_j\\boldsymbol{u}_j^T\\boldsymbol{y},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\beta}^{\\mathrm{Ridge}} = \\left(\\boldsymbol{I}+\\lambda\\boldsymbol{I}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y}=\\left(1+\\lambda\\right)^{-1}\\boldsymbol{\\beta}^{\\mathrm{OLS}},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"that is the Ridge estimator scales the OLS estimator by the inverse of a factor $1+\\lambda$, and\n",
|
||
"the Ridge estimator converges to zero when the hyperparameter goes to\n",
|
||
"infinity.\n",
|
||
"\n",
|
||
"We will come back to more interpreations after we have gone through some of the statistical analysis part. \n",
|
||
"\n",
|
||
"For more discussions of Ridge and Lasso regression, [Wessel van Wieringen's](https://arxiv.org/abs/1509.09169) article is highly recommended.\n",
|
||
"Similarly, [Mehta et al's article](https://arxiv.org/abs/1803.08823) is also recommended.\n",
|
||
"\n",
|
||
"\n",
|
||
"<!-- !split -->\n",
|
||
"## A better understanding of regularization\n",
|
||
"\n",
|
||
"The parameter $\\lambda$ that we have introduced in the Ridge (and\n",
|
||
"Lasso as well) regression is often called a regularization parameter\n",
|
||
"or shrinkage parameter. It is common to call it a hyperparameter. What does it mean mathemtically?\n",
|
||
"\n",
|
||
"Here we will first look at how to analyze the difference between the\n",
|
||
"standard OLS equations and the Ridge expressions in terms of a linear\n",
|
||
"algebra analysis using the SVD algorithm. Thereafter, we will link\n",
|
||
"(see the material on the bias-variance tradeoff below) these\n",
|
||
"observation to the statisical analysis of the results. In particular\n",
|
||
"we consider how the variance of the parameters $\\boldsymbol{\\beta}$ is\n",
|
||
"affected by changing the parameter $\\lambda$.\n",
|
||
"\n",
|
||
"## Decomposing the OLS and Ridge expressions\n",
|
||
"\n",
|
||
"We have our design matrix\n",
|
||
" $\\boldsymbol{X}\\in {\\mathbb{R}}^{n\\times p}$. With the SVD we decompose it as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X} = \\boldsymbol{U\\Sigma V^T},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"with $\\boldsymbol{U}\\in {\\mathbb{R}}^{n\\times n}$, $\\boldsymbol{\\Sigma}\\in {\\mathbb{R}}^{n\\times p}$\n",
|
||
"and $\\boldsymbol{V}\\in {\\mathbb{R}}^{p\\times p}$.\n",
|
||
"\n",
|
||
"The matrices $\\boldsymbol{U}$ and $\\boldsymbol{V}$ are unitary/orthonormal matrices, that is in case the matrices are real we have $\\boldsymbol{U}^T\\boldsymbol{U}=\\boldsymbol{U}\\boldsymbol{U}^T=\\boldsymbol{I}$ and $\\boldsymbol{V}^T\\boldsymbol{V}=\\boldsymbol{V}\\boldsymbol{V}^T=\\boldsymbol{I}$.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Introducing the Covariance and Correlation functions\n",
|
||
"\n",
|
||
"Before we discuss the link between for example Ridge regression and the singular value decomposition, we need to remind ourselves about\n",
|
||
"the definition of the covariance and the correlation function. These are quantities \n",
|
||
"\n",
|
||
"Suppose we have defined two vectors\n",
|
||
"$\\hat{x}$ and $\\hat{y}$ with $n$ elements each. The covariance matrix $\\boldsymbol{C}$ is defined as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{C}[\\boldsymbol{x},\\boldsymbol{y}] = \\begin{bmatrix} \\mathrm{cov}[\\boldsymbol{x},\\boldsymbol{x}] & \\mathrm{cov}[\\boldsymbol{x},\\boldsymbol{y}] \\\\\n",
|
||
" \\mathrm{cov}[\\boldsymbol{y},\\boldsymbol{x}] & \\mathrm{cov}[\\boldsymbol{y},\\boldsymbol{y}] \\\\\n",
|
||
" \\end{bmatrix},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"where for example"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\mathrm{cov}[\\boldsymbol{x},\\boldsymbol{y}] =\\frac{1}{n} \\sum_{i=0}^{n-1}(x_i- \\overline{x})(y_i- \\overline{y}).\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"With this definition and recalling that the variance is defined as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\mathrm{var}[\\boldsymbol{x}]=\\frac{1}{n} \\sum_{i=0}^{n-1}(x_i- \\overline{x})^2,\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"we can rewrite the covariance matrix as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{C}[\\boldsymbol{x},\\boldsymbol{y}] = \\begin{bmatrix} \\mathrm{var}[\\boldsymbol{x}] & \\mathrm{cov}[\\boldsymbol{x},\\boldsymbol{y}] \\\\\n",
|
||
" \\mathrm{cov}[\\boldsymbol{x},\\boldsymbol{y}] & \\mathrm{var}[\\boldsymbol{y}] \\\\\n",
|
||
" \\end{bmatrix}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The covariance takes values between zero and infinity and may thus\n",
|
||
"lead to problems with loss of numerical precision for particularly\n",
|
||
"large values. It is common to scale the covariance matrix by\n",
|
||
"introducing instead the correlation matrix defined via the so-called\n",
|
||
"correlation function"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\mathrm{corr}[\\boldsymbol{x},\\boldsymbol{y}]=\\frac{\\mathrm{cov}[\\boldsymbol{x},\\boldsymbol{y}]}{\\sqrt{\\mathrm{var}[\\boldsymbol{x}] \\mathrm{var}[\\boldsymbol{y}]}}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The correlation function is then given by values $\\mathrm{corr}[\\boldsymbol{x},\\boldsymbol{y}]\n",
|
||
"\\in [-1,1]$. This avoids eventual problems with too large values. We\n",
|
||
"can then define the correlation matrix for the two vectors $\\boldsymbol{x}$\n",
|
||
"and $\\boldsymbol{y}$ as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{K}[\\boldsymbol{x},\\boldsymbol{y}] = \\begin{bmatrix} 1 & \\mathrm{corr}[\\boldsymbol{x},\\boldsymbol{y}] \\\\\n",
|
||
" \\mathrm{corr}[\\boldsymbol{y},\\boldsymbol{x}] & 1 \\\\\n",
|
||
" \\end{bmatrix},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"In the above example this is the function we constructed using **pandas**.\n",
|
||
"\n",
|
||
"## Correlation Function and Design/Feature Matrix\n",
|
||
"\n",
|
||
"In our derivation of the various regression algorithms like **Ordinary Least Squares** or **Ridge regression**\n",
|
||
"we defined the design/feature matrix $\\boldsymbol{X}$ as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}=\\begin{bmatrix}\n",
|
||
"x_{0,0} & x_{0,1} & x_{0,2}& \\dots & \\dots x_{0,p-1}\\\\\n",
|
||
"x_{1,0} & x_{1,1} & x_{1,2}& \\dots & \\dots x_{1,p-1}\\\\\n",
|
||
"x_{2,0} & x_{2,1} & x_{2,2}& \\dots & \\dots x_{2,p-1}\\\\\n",
|
||
"\\dots & \\dots & \\dots & \\dots \\dots & \\dots \\\\\n",
|
||
"x_{n-2,0} & x_{n-2,1} & x_{n-2,2}& \\dots & \\dots x_{n-2,p-1}\\\\\n",
|
||
"x_{n-1,0} & x_{n-1,1} & x_{n-1,2}& \\dots & \\dots x_{n-1,p-1}\\\\\n",
|
||
"\\end{bmatrix},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"with $\\boldsymbol{X}\\in {\\mathbb{R}}^{n\\times p}$, with the predictors/features $p$ refering to the column numbers and the\n",
|
||
"entries $n$ being the row elements.\n",
|
||
"We can rewrite the design/feature matrix in terms of its column vectors as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}=\\begin{bmatrix} \\boldsymbol{x}_0 & \\boldsymbol{x}_1 & \\boldsymbol{x}_2 & \\dots & \\dots & \\boldsymbol{x}_{p-1}\\end{bmatrix},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"with a given vector"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{x}_i^T = \\begin{bmatrix}x_{0,i} & x_{1,i} & x_{2,i}& \\dots & \\dots x_{n-1,i}\\end{bmatrix}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"With these definitions, we can now rewrite our $2\\times 2$\n",
|
||
"correaltion/covariance matrix in terms of a moe general design/feature\n",
|
||
"matrix $\\boldsymbol{X}\\in {\\mathbb{R}}^{n\\times p}$. This leads to a $p\\times p$\n",
|
||
"covariance matrix for the vectors $\\boldsymbol{x}_i$ with $i=0,1,\\dots,p-1$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{C}[\\boldsymbol{x}] = \\begin{bmatrix}\n",
|
||
"\\mathrm{var}[\\boldsymbol{x}_0] & \\mathrm{cov}[\\boldsymbol{x}_0,\\boldsymbol{x}_1] & \\mathrm{cov}[\\boldsymbol{x}_0,\\boldsymbol{x}_2] & \\dots & \\dots & \\mathrm{cov}[\\boldsymbol{x}_0,\\boldsymbol{x}_{p-1}]\\\\\n",
|
||
"\\mathrm{cov}[\\boldsymbol{x}_1,\\boldsymbol{x}_0] & \\mathrm{var}[\\boldsymbol{x}_1] & \\mathrm{cov}[\\boldsymbol{x}_1,\\boldsymbol{x}_2] & \\dots & \\dots & \\mathrm{cov}[\\boldsymbol{x}_1,\\boldsymbol{x}_{p-1}]\\\\\n",
|
||
"\\mathrm{cov}[\\boldsymbol{x}_2,\\boldsymbol{x}_0] & \\mathrm{cov}[\\boldsymbol{x}_2,\\boldsymbol{x}_1] & \\mathrm{var}[\\boldsymbol{x}_2] & \\dots & \\dots & \\mathrm{cov}[\\boldsymbol{x}_2,\\boldsymbol{x}_{p-1}]\\\\\n",
|
||
"\\dots & \\dots & \\dots & \\dots & \\dots & \\dots \\\\\n",
|
||
"\\dots & \\dots & \\dots & \\dots & \\dots & \\dots \\\\\n",
|
||
"\\mathrm{cov}[\\boldsymbol{x}_{p-1},\\boldsymbol{x}_0] & \\mathrm{cov}[\\boldsymbol{x}_{p-1},\\boldsymbol{x}_1] & \\mathrm{cov}[\\boldsymbol{x}_{p-1},\\boldsymbol{x}_{2}] & \\dots & \\dots & \\mathrm{var}[\\boldsymbol{x}_{p-1}]\\\\\n",
|
||
"\\end{bmatrix},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"and the correlation matrix"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{K}[\\boldsymbol{x}] = \\begin{bmatrix}\n",
|
||
"1 & \\mathrm{corr}[\\boldsymbol{x}_0,\\boldsymbol{x}_1] & \\mathrm{corr}[\\boldsymbol{x}_0,\\boldsymbol{x}_2] & \\dots & \\dots & \\mathrm{corr}[\\boldsymbol{x}_0,\\boldsymbol{x}_{p-1}]\\\\\n",
|
||
"\\mathrm{corr}[\\boldsymbol{x}_1,\\boldsymbol{x}_0] & 1 & \\mathrm{corr}[\\boldsymbol{x}_1,\\boldsymbol{x}_2] & \\dots & \\dots & \\mathrm{corr}[\\boldsymbol{x}_1,\\boldsymbol{x}_{p-1}]\\\\\n",
|
||
"\\mathrm{corr}[\\boldsymbol{x}_2,\\boldsymbol{x}_0] & \\mathrm{corr}[\\boldsymbol{x}_2,\\boldsymbol{x}_1] & 1 & \\dots & \\dots & \\mathrm{corr}[\\boldsymbol{x}_2,\\boldsymbol{x}_{p-1}]\\\\\n",
|
||
"\\dots & \\dots & \\dots & \\dots & \\dots & \\dots \\\\\n",
|
||
"\\dots & \\dots & \\dots & \\dots & \\dots & \\dots \\\\\n",
|
||
"\\mathrm{corr}[\\boldsymbol{x}_{p-1},\\boldsymbol{x}_0] & \\mathrm{corr}[\\boldsymbol{x}_{p-1},\\boldsymbol{x}_1] & \\mathrm{corr}[\\boldsymbol{x}_{p-1},\\boldsymbol{x}_{2}] & \\dots & \\dots & 1\\\\\n",
|
||
"\\end{bmatrix},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Covariance Matrix Examples\n",
|
||
"\n",
|
||
"\n",
|
||
"The Numpy function **np.cov** calculates the covariance elements using\n",
|
||
"the factor $1/(n-1)$ instead of $1/n$ since it assumes we do not have\n",
|
||
"the exact mean values. The following simple function uses the\n",
|
||
"**np.vstack** function which takes each vector of dimension $1\\times n$\n",
|
||
"and produces a $2\\times n$ matrix $\\boldsymbol{W}$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{W} = \\begin{bmatrix} x_0 & y_0 \\\\\n",
|
||
" x_1 & y_1 \\\\\n",
|
||
" x_2 & y_2\\\\\n",
|
||
" \\dots & \\dots \\\\\n",
|
||
" x_{n-2} & y_{n-2}\\\\\n",
|
||
" x_{n-1} & y_{n-1} & \n",
|
||
" \\end{bmatrix},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"which in turn is converted into into the $2\\times 2$ covariance matrix\n",
|
||
"$\\boldsymbol{C}$ via the Numpy function **np.cov()**. We note that we can also calculate\n",
|
||
"the mean value of each set of samples $\\boldsymbol{x}$ etc using the Numpy\n",
|
||
"function **np.mean(x)**. We can also extract the eigenvalues of the\n",
|
||
"covariance matrix through the **np.linalg.eig()** function."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
<<<<<<< HEAD
|
||
"-0.0735582043568682\n",
|
||
"3.7149125577492423\n",
|
||
"[[0.83993344 2.70399972]\n",
|
||
" [2.70399972 9.43403589]]\n"
|
||
=======
|
||
"0.04140991370132292\n",
|
||
"4.133094065754784\n",
|
||
"[[0.83862682 2.46540728]\n",
|
||
" [2.46540728 8.112507 ]]\n"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Importing various packages\n",
|
||
"import numpy as np\n",
|
||
"n = 100\n",
|
||
"x = np.random.normal(size=n)\n",
|
||
"print(np.mean(x))\n",
|
||
"y = 4+3*x+np.random.normal(size=n)\n",
|
||
"print(np.mean(y))\n",
|
||
"W = np.vstack((x, y))\n",
|
||
"C = np.cov(W)\n",
|
||
"print(C)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Correlation Matrix\n",
|
||
"\n",
|
||
"The previous example can be converted into the correlation matrix by\n",
|
||
"simply scaling the matrix elements with the variances. We should also\n",
|
||
"subtract the mean values for each column. This leads to the following\n",
|
||
"code which sets up the correlations matrix for the previous example in\n",
|
||
"a more brute force way. Here we scale the mean values for each column of the design matrix, calculate the relevant mean values and variances and then finally set up the $2\\times 2$ correlation matrix (since we have only two vectors)."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
<<<<<<< HEAD
|
||
"0.07408034549174136\n",
|
||
"1.227878920600447\n",
|
||
"[[1. 0.56471431]\n",
|
||
" [0.56471431 1. ]]\n"
|
||
=======
|
||
"0.07656990655277283\n",
|
||
"1.8665678444491798\n",
|
||
"[[1. 0.69108461]\n",
|
||
" [0.69108461 1. ]]\n"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"n = 100\n",
|
||
"# define two vectors \n",
|
||
"x = np.random.random(size=n)\n",
|
||
"y = 4+3*x+np.random.normal(size=n)\n",
|
||
"#scaling the x and y vectors \n",
|
||
"x = x - np.mean(x)\n",
|
||
"y = y - np.mean(y)\n",
|
||
"variance_x = np.sum(x@x)/n\n",
|
||
"variance_y = np.sum(y@y)/n\n",
|
||
"print(variance_x)\n",
|
||
"print(variance_y)\n",
|
||
"cov_xy = np.sum(x@y)/n\n",
|
||
"cov_xx = np.sum(x@x)/n\n",
|
||
"cov_yy = np.sum(y@y)/n\n",
|
||
"C = np.zeros((2,2))\n",
|
||
"C[0,0]= cov_xx/variance_x\n",
|
||
"C[1,1]= cov_yy/variance_y\n",
|
||
"C[0,1]= cov_xy/np.sqrt(variance_y*variance_x)\n",
|
||
"C[1,0]= C[0,1]\n",
|
||
"print(C)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We see that the matrix elements along the diagonal are one as they\n",
|
||
"should be and that the matrix is symmetric. Furthermore, diagonalizing\n",
|
||
"this matrix we easily see that it is a positive definite matrix.\n",
|
||
"\n",
|
||
"The above procedure with **numpy** can be made more compact if we use **pandas**.\n",
|
||
"\n",
|
||
"## Correlation Matrix with Pandas\n",
|
||
"\n",
|
||
"We whow here how we can set up the correlation matrix using **pandas**, as done in this simple code"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
<<<<<<< HEAD
|
||
"[[ 1.07759721 4.53322612]\n",
|
||
" [-0.00649067 -1.36010021]\n",
|
||
" [-0.85832442 -3.75508933]\n",
|
||
" [-0.37345884 -1.18878828]\n",
|
||
" [ 0.57144364 1.84634906]\n",
|
||
" [-1.38212043 -4.65301078]\n",
|
||
" [-0.65245525 -1.6006181 ]\n",
|
||
" [ 1.83103728 6.43606823]\n",
|
||
" [-0.7874819 -1.38076019]\n",
|
||
" [ 0.58025338 1.12272347]]\n",
|
||
" 0 1\n",
|
||
"0 1.077597 4.533226\n",
|
||
"1 -0.006491 -1.360100\n",
|
||
"2 -0.858324 -3.755089\n",
|
||
"3 -0.373459 -1.188788\n",
|
||
"4 0.571444 1.846349\n",
|
||
"5 -1.382120 -4.653011\n",
|
||
"6 -0.652455 -1.600618\n",
|
||
"7 1.831037 6.436068\n",
|
||
"8 -0.787482 -1.380760\n",
|
||
"9 0.580253 1.122723\n",
|
||
" 0 1\n",
|
||
"0 1.000000 0.971936\n",
|
||
"1 0.971936 1.000000\n"
|
||
=======
|
||
"[[-0.64776602 -0.79292513]\n",
|
||
" [ 1.68156561 4.88768237]\n",
|
||
" [-1.08504058 -3.69264564]\n",
|
||
" [ 1.2289263 3.27086518]\n",
|
||
" [ 0.53948725 0.9271575 ]\n",
|
||
" [-1.49466842 -4.88750576]\n",
|
||
" [-0.61503889 -1.84939235]\n",
|
||
" [ 0.49561415 1.88023243]\n",
|
||
" [-0.07610463 -0.68642246]\n",
|
||
" [-0.02697476 0.94295385]]\n",
|
||
" 0 1\n",
|
||
"0 -0.647766 -0.792925\n",
|
||
"1 1.681566 4.887682\n",
|
||
"2 -1.085041 -3.692646\n",
|
||
"3 1.228926 3.270865\n",
|
||
"4 0.539487 0.927158\n",
|
||
"5 -1.494668 -4.887506\n",
|
||
"6 -0.615039 -1.849392\n",
|
||
"7 0.495614 1.880232\n",
|
||
"8 -0.076105 -0.686422\n",
|
||
"9 -0.026975 0.942954\n",
|
||
" 0 1\n",
|
||
"0 1.000000 0.976998\n",
|
||
"1 0.976998 1.000000\n"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"import pandas as pd\n",
|
||
"n = 10\n",
|
||
"x = np.random.normal(size=n)\n",
|
||
"x = x - np.mean(x)\n",
|
||
"y = 4+3*x+np.random.normal(size=n)\n",
|
||
"y = y - np.mean(y)\n",
|
||
"X = (np.vstack((x, y))).T\n",
|
||
"print(X)\n",
|
||
"Xpd = pd.DataFrame(X)\n",
|
||
"print(Xpd)\n",
|
||
"correlation_matrix = Xpd.corr()\n",
|
||
"print(correlation_matrix)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We expand this model to the Franke function discussed above.\n",
|
||
"\n",
|
||
"## Correlation Matrix with Pandas and the Franke function"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 27,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" 0 1 2 3 4 5 6 7 \\\n",
|
||
"0 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
|
||
<<<<<<< HEAD
|
||
"1 0.0 0.084667 0.085622 0.084600 0.084265 0.083876 0.075986 0.075499 \n",
|
||
"2 0.0 0.085622 0.088547 0.088431 0.089114 0.089546 0.081167 0.081248 \n",
|
||
"3 0.0 0.084600 0.088431 0.089974 0.091151 0.092025 0.084268 0.084657 \n",
|
||
"4 0.0 0.084265 0.089114 0.091151 0.092931 0.094306 0.086374 0.087133 \n",
|
||
"5 0.0 0.083876 0.089546 0.092025 0.094306 0.096103 0.088060 0.089134 \n",
|
||
"6 0.0 0.075986 0.081167 0.084268 0.086374 0.088060 0.081340 0.082355 \n",
|
||
"7 0.0 0.075499 0.081248 0.084657 0.087133 0.089134 0.082355 0.083612 \n",
|
||
"8 0.0 0.075062 0.081279 0.084969 0.087758 0.090029 0.083217 0.084683 \n",
|
||
"9 0.0 0.074679 0.081285 0.085233 0.088289 0.090794 0.083968 0.085617 \n",
|
||
"10 0.0 0.067442 0.073098 0.077082 0.079656 0.081772 0.076102 0.077480 \n",
|
||
"11 0.0 0.067096 0.073089 0.077282 0.080091 0.082412 0.076723 0.078263 \n",
|
||
"12 0.0 0.066811 0.073089 0.077476 0.080488 0.082988 0.077292 0.078974 \n",
|
||
"13 0.0 0.066586 0.073106 0.077674 0.080864 0.083521 0.077826 0.079634 \n",
|
||
"14 0.0 0.066416 0.073146 0.077885 0.081231 0.084028 0.078339 0.080260 \n",
|
||
"\n",
|
||
" 8 9 10 11 12 13 14 \n",
|
||
"0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
|
||
"1 0.075062 0.074679 0.067442 0.067096 0.066811 0.066586 0.066416 \n",
|
||
"2 0.081279 0.081285 0.073098 0.073089 0.073089 0.073106 0.073146 \n",
|
||
"3 0.084969 0.085233 0.077082 0.077282 0.077476 0.077674 0.077885 \n",
|
||
"4 0.087758 0.088289 0.079656 0.080091 0.080488 0.080864 0.081231 \n",
|
||
"5 0.090029 0.090794 0.081772 0.082412 0.082988 0.083521 0.084028 \n",
|
||
"6 0.083217 0.083968 0.076102 0.076723 0.077292 0.077826 0.078339 \n",
|
||
"7 0.084683 0.085617 0.077480 0.078263 0.078974 0.079634 0.080260 \n",
|
||
"8 0.085937 0.087033 0.078670 0.079596 0.080434 0.081207 0.081935 \n",
|
||
"9 0.087033 0.088272 0.079721 0.080773 0.081724 0.082600 0.083420 \n",
|
||
"10 0.078670 0.079721 0.072443 0.073326 0.074132 0.074882 0.075591 \n",
|
||
"11 0.079596 0.080773 0.073326 0.074322 0.075229 0.076069 0.076860 \n",
|
||
"12 0.080434 0.081724 0.074132 0.075229 0.076226 0.077148 0.078014 \n",
|
||
"13 0.081207 0.082600 0.074882 0.076069 0.077148 0.078145 0.079080 \n",
|
||
"14 0.081935 0.083420 0.075591 0.076860 0.078014 0.079080 0.080079 \n"
|
||
=======
|
||
"1 0.0 0.078592 0.080857 0.080360 0.081589 0.082766 0.072541 0.073589 \n",
|
||
"2 0.0 0.080857 0.084290 0.081925 0.083646 0.085326 0.073569 0.074907 \n",
|
||
"3 0.0 0.080360 0.081925 0.086912 0.088010 0.089049 0.081480 0.082496 \n",
|
||
"4 0.0 0.081589 0.083646 0.088010 0.089395 0.090727 0.082323 0.083538 \n",
|
||
"5 0.0 0.082766 0.085326 0.089049 0.090727 0.092363 0.083106 0.084525 \n",
|
||
"6 0.0 0.072541 0.073569 0.081480 0.082323 0.083106 0.078559 0.079374 \n",
|
||
"7 0.0 0.073589 0.074907 0.082496 0.083538 0.084525 0.079374 0.080338 \n",
|
||
"8 0.0 0.074700 0.076320 0.083569 0.084817 0.086017 0.080230 0.081349 \n",
|
||
"9 0.0 0.075881 0.077815 0.084701 0.086164 0.087586 0.081130 0.082412 \n",
|
||
"10 0.0 0.064487 0.065152 0.074449 0.075044 0.075578 0.073336 0.073934 \n",
|
||
"11 0.0 0.065356 0.066219 0.075303 0.076047 0.076733 0.074023 0.074738 \n",
|
||
"12 0.0 0.066293 0.067363 0.076224 0.077122 0.077967 0.074765 0.075601 \n",
|
||
"13 0.0 0.067302 0.068589 0.077214 0.078273 0.079283 0.075564 0.076525 \n",
|
||
"14 0.0 0.068386 0.069900 0.078277 0.079503 0.080687 0.076421 0.077514 \n",
|
||
"\n",
|
||
" 8 9 10 11 12 13 14 \n",
|
||
"0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
|
||
"1 0.074700 0.075881 0.064487 0.065356 0.066293 0.067302 0.068386 \n",
|
||
"2 0.076320 0.077815 0.065152 0.066219 0.067363 0.068589 0.069900 \n",
|
||
"3 0.083569 0.084701 0.074449 0.075303 0.076224 0.077214 0.078277 \n",
|
||
"4 0.084817 0.086164 0.075044 0.076047 0.077122 0.078273 0.079503 \n",
|
||
"5 0.086017 0.087586 0.075578 0.076733 0.077967 0.079283 0.080687 \n",
|
||
"6 0.080230 0.081130 0.073336 0.074023 0.074765 0.075564 0.076421 \n",
|
||
"7 0.081349 0.082412 0.073934 0.074738 0.075601 0.076525 0.077514 \n",
|
||
"8 0.082522 0.083753 0.074560 0.075485 0.076474 0.077530 0.078656 \n",
|
||
"9 0.083753 0.085160 0.075217 0.076268 0.077388 0.078581 0.079851 \n",
|
||
"10 0.074560 0.075217 0.069627 0.070134 0.070683 0.071275 0.071913 \n",
|
||
"11 0.075485 0.076268 0.070134 0.070733 0.071378 0.072072 0.072814 \n",
|
||
"12 0.076474 0.077388 0.070683 0.071378 0.072124 0.072922 0.073775 \n",
|
||
"13 0.077530 0.078581 0.071275 0.072072 0.072922 0.073830 0.074797 \n",
|
||
"14 0.078656 0.079851 0.071913 0.072814 0.073775 0.074797 0.075884 \n"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Common imports\n",
|
||
"import numpy as np\n",
|
||
"import pandas as pd\n",
|
||
"\n",
|
||
"\n",
|
||
"def FrankeFunction(x,y):\n",
|
||
"\tterm1 = 0.75*np.exp(-(0.25*(9*x-2)**2) - 0.25*((9*y-2)**2))\n",
|
||
"\tterm2 = 0.75*np.exp(-((9*x+1)**2)/49.0 - 0.1*(9*y+1))\n",
|
||
"\tterm3 = 0.5*np.exp(-(9*x-7)**2/4.0 - 0.25*((9*y-3)**2))\n",
|
||
"\tterm4 = -0.2*np.exp(-(9*x-4)**2 - (9*y-7)**2)\n",
|
||
"\treturn term1 + term2 + term3 + term4\n",
|
||
"\n",
|
||
"\n",
|
||
"def create_X(x, y, n ):\n",
|
||
"\tif len(x.shape) > 1:\n",
|
||
"\t\tx = np.ravel(x)\n",
|
||
"\t\ty = np.ravel(y)\n",
|
||
"\n",
|
||
"\tN = len(x)\n",
|
||
"\tl = int((n+1)*(n+2)/2)\t\t# Number of elements in beta\n",
|
||
"\tX = np.ones((N,l))\n",
|
||
"\n",
|
||
"\tfor i in range(1,n+1):\n",
|
||
"\t\tq = int((i)*(i+1)/2)\n",
|
||
"\t\tfor k in range(i+1):\n",
|
||
"\t\t\tX[:,q+k] = (x**(i-k))*(y**k)\n",
|
||
"\n",
|
||
"\treturn X\n",
|
||
"\n",
|
||
"\n",
|
||
"# Making meshgrid of datapoints and compute Franke's function\n",
|
||
"n = 4\n",
|
||
"N = 100\n",
|
||
"x = np.sort(np.random.uniform(0, 1, N))\n",
|
||
"y = np.sort(np.random.uniform(0, 1, N))\n",
|
||
"z = FrankeFunction(x, y)\n",
|
||
"X = create_X(x, y, n=n) \n",
|
||
"\n",
|
||
"Xpd = pd.DataFrame(X)\n",
|
||
"# subtract the mean values and set up the covariance matrix\n",
|
||
"Xpd = Xpd - Xpd.mean()\n",
|
||
"covariance_matrix = Xpd.cov()\n",
|
||
"print(covariance_matrix)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We note here that the covariance is zero for the first rows and\n",
|
||
"columns since all matrix elements in the design matrix were set to one\n",
|
||
"(we are fitting the function in terms of a polynomial of degree $n$).\n",
|
||
"\n",
|
||
"This means that the variance for these elements will be zero and will\n",
|
||
"cause problems when we set up the correlation matrix. We can simply\n",
|
||
"drop these elements and construct a correlation\n",
|
||
"matrix without these elements. \n",
|
||
"\n",
|
||
"\n",
|
||
"## Rewriting the Covariance and/or Correlation Matrix\n",
|
||
"\n",
|
||
"We can rewrite the covariance matrix in a more compact form in terms of the design/feature matrix $\\boldsymbol{X}$ as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{C}[\\boldsymbol{x}] = \\frac{1}{n}\\boldsymbol{X}^T\\boldsymbol{X}= \\mathbb{E}[\\boldsymbol{X}^T\\boldsymbol{X}].\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"To see this let us simply look at a design matrix $\\boldsymbol{X}\\in {\\mathbb{R}}^{2\\times 2}$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}=\\begin{bmatrix}\n",
|
||
"x_{00} & x_{01}\\\\\n",
|
||
"x_{10} & x_{11}\\\\\n",
|
||
"\\end{bmatrix}=\\begin{bmatrix}\n",
|
||
"\\boldsymbol{x}_{0} & \\boldsymbol{x}_{1}\\\\\n",
|
||
"\\end{bmatrix}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"If we then compute the expectation value"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\mathbb{E}[\\boldsymbol{X}^T\\boldsymbol{X}] = \\frac{1}{n}\\boldsymbol{X}^T\\boldsymbol{X}=\\begin{bmatrix}\n",
|
||
"x_{00}^2+x_{01}^2 & x_{00}x_{10}+x_{01}x_{11}\\\\\n",
|
||
"x_{10}x_{00}+x_{11}x_{01} & x_{10}^2+x_{11}^2\\\\\n",
|
||
"\\end{bmatrix},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"which is just"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{C}[\\boldsymbol{x}_0,\\boldsymbol{x}_1] = \\boldsymbol{C}[\\boldsymbol{x}]=\\begin{bmatrix} \\mathrm{var}[\\boldsymbol{x}_0] & \\mathrm{cov}[\\boldsymbol{x}_0,\\boldsymbol{x}_1] \\\\\n",
|
||
" \\mathrm{cov}[\\boldsymbol{x}_1,\\boldsymbol{x}_0] & \\mathrm{var}[\\boldsymbol{x}_1] \\\\\n",
|
||
" \\end{bmatrix},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"where we wrote $$\\boldsymbol{C}[\\boldsymbol{x}_0,\\boldsymbol{x}_1] = \\boldsymbol{C}[\\boldsymbol{x}]$$ to indicate that this the covariance of the vectors $\\boldsymbol{x}$ of the design/feature matrix $\\boldsymbol{X}$.\n",
|
||
"\n",
|
||
"It is easy to generalize this to a matrix $\\boldsymbol{X}\\in {\\mathbb{R}}^{n\\times p}$.\n",
|
||
"\n",
|
||
"\n",
|
||
"## Linking with SVD\n",
|
||
"\n",
|
||
"See lecture september 11. More text to be added here soon.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Where are we going?\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",
|
||
"This will allow us to link the standard linear algebra methods we have discussed above to a statistical interpretation of the methods. \n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## 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.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## 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.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Why resampling methods ?\n",
|
||
"**Statistical analysis.**\n",
|
||
"\n",
|
||
"\n",
|
||
"* Our simulations can be treated as *computer experiments*. This is particularly the case for Monte Carlo methods\n",
|
||
"\n",
|
||
"* The results can be analysed with the same statistical tools as we would use 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.\n",
|
||
"\n",
|
||
" \n",
|
||
"\n",
|
||
"## 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",
|
||
"\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.\n",
|
||
"\n",
|
||
" \n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"<!-- !split -->\n",
|
||
"## Linking the regression analysis with a statistical interpretation\n",
|
||
"\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",
|
||
"\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",
|
||
"metadata": {},
|
||
"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",
|
||
"metadata": {},
|
||
"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$.\n",
|
||
"\n",
|
||
"\n",
|
||
"## 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",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{y} = f(\\boldsymbol{x})+\\boldsymbol{\\varepsilon}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"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",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\tilde{y}} = \\boldsymbol{X}\\boldsymbol{\\beta}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Expectation value and variance\n",
|
||
"\n",
|
||
"We can calculate the expectation value of $\\boldsymbol{y}$ for a given element $i$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"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",
|
||
"metadata": {},
|
||
"source": [
|
||
"while\n",
|
||
"its variance is"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"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",
|
||
"metadata": {},
|
||
"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). \n",
|
||
"\n",
|
||
"## Expectation value and variance for $\\boldsymbol{\\beta}$\n",
|
||
"\n",
|
||
"With the OLS expressions for the parameters $\\boldsymbol{\\beta}$ we can evaluate the expectation value"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\mathbb{E}(\\boldsymbol{\\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",
|
||
"metadata": {},
|
||
"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 $\\boldsymbol{\\beta}$ is"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\begin{eqnarray*}\n",
|
||
"\\mbox{Var}(\\boldsymbol{\\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",
|
||
"metadata": {},
|
||
"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 \\sqrt{\n",
|
||
"[(\\mathbf{X}^{T} \\mathbf{X})^{-1}]_{jj} }$. This may be used to\n",
|
||
"construct a confidence interval for the estimates.\n",
|
||
"\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",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\mathbb{E} \\big[ \\boldsymbol{\\beta}^{\\mathrm{Ridge}} \\big]=(\\mathbf{X}^{T} \\mathbf{X} + \\lambda \\mathbf{I}_{pp})^{-1} (\\mathbf{X}^{\\top} \\mathbf{X})\\boldsymbol{\\beta}^{\\mathrm{OLS}}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We see clearly that \n",
|
||
"$\\mathbb{E} \\big[ \\boldsymbol{\\beta}^{\\mathrm{Ridge}} \\big] \\not= \\boldsymbol{\\beta}^{\\mathrm{OLS}}$ for any $\\lambda > 0$. We say then that the ridge estimator is biased.\n",
|
||
"\n",
|
||
"We can also compute the variance as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\mbox{Var}[\\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",
|
||
"metadata": {},
|
||
"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",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\mbox{Var}[\\boldsymbol{\\beta}^{\\mathrm{OLS}}]-\\mbox{Var}(\\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",
|
||
"metadata": {},
|
||
"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",
|
||
"\n",
|
||
"## 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 us 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.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Resampling methods: Jackknife and Bootstrap\n",
|
||
"\n",
|
||
"Two famous\n",
|
||
"resampling methods are the **independent bootstrap** and **the jackknife**. \n",
|
||
"\n",
|
||
"The jackknife is a special case of the independent bootstrap. Still, the jackknife was made\n",
|
||
"popular prior to the independent bootstrap. And as the popularity of\n",
|
||
"the independent bootstrap soared, new variants, such as **the dependent bootstrap**.\n",
|
||
"\n",
|
||
"The Jackknife and independent bootstrap work for\n",
|
||
"independent, identically distributed random variables.\n",
|
||
"If these conditions are not\n",
|
||
"satisfied, the methods will fail. Yet, it should be said that if the data are\n",
|
||
"independent, identically distributed, and we only want to estimate the\n",
|
||
"variance of $\\overline{X}$ (which often is the case), then there is no\n",
|
||
"need for bootstrapping. \n",
|
||
"\n",
|
||
"## Resampling methods: Jackknife\n",
|
||
"\n",
|
||
"The Jackknife works by making many replicas of the estimator $\\widehat{\\theta}$. \n",
|
||
"The jackknife is a resampling method where we systematically leave out one observation from the vector of observed values $\\boldsymbol{x} = (x_1,x_2,\\cdots,X_n)$. \n",
|
||
"Let $\\boldsymbol{x}_i$ denote the vector"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{x}_i = (x_1,x_2,\\cdots,x_{i-1},x_{i+1},\\cdots,x_n),\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"which equals the vector $\\boldsymbol{x}$ with the exception that observation\n",
|
||
"number $i$ is left out. Using this notation, define\n",
|
||
"$\\widehat{\\theta}_i$ to be the estimator\n",
|
||
"$\\widehat{\\theta}$ computed using $\\vec{X}_i$. \n",
|
||
"\n",
|
||
"\n",
|
||
"## Jackknife code example"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 28,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
<<<<<<< HEAD
|
||
"Runtime: 0.233321 sec\n",
|
||
"Jackknife Statistics :\n",
|
||
"original bias std. error\n",
|
||
" 99.6932 99.6833 0.149184\n"
|
||
=======
|
||
"Runtime: 0.402381 sec\n",
|
||
"Jackknife Statistics :\n",
|
||
"original bias std. error\n",
|
||
" 99.8665 99.8565 0.150694\n"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from numpy import *\n",
|
||
"from numpy.random import randint, randn\n",
|
||
"from time import time\n",
|
||
"\n",
|
||
"def jackknife(data, stat):\n",
|
||
" n = len(data);t = zeros(n); inds = arange(n); t0 = time()\n",
|
||
" ## 'jackknifing' by leaving out an observation for each i \n",
|
||
" for i in range(n):\n",
|
||
" t[i] = stat(delete(data,i) )\n",
|
||
"\n",
|
||
" # analysis \n",
|
||
" print(\"Runtime: %g sec\" % (time()-t0)); print(\"Jackknife Statistics :\")\n",
|
||
" print(\"original bias std. error\")\n",
|
||
" print(\"%8g %14g %15g\" % (stat(data),(n-1)*mean(t)/n, (n*var(t))**.5))\n",
|
||
"\n",
|
||
" return t\n",
|
||
"\n",
|
||
"\n",
|
||
"# Returns mean of data samples \n",
|
||
"def stat(data):\n",
|
||
" return mean(data)\n",
|
||
"\n",
|
||
"\n",
|
||
"mu, sigma = 100, 15\n",
|
||
"datapoints = 10000\n",
|
||
"x = mu + sigma*random.randn(datapoints)\n",
|
||
"# jackknife returns the data sample \n",
|
||
"t = jackknife(x, stat)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Resampling methods: Bootstrap\n",
|
||
"Bootstrapping is a nonparametric approach 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",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Resampling methods: Bootstrap background\n",
|
||
"\n",
|
||
"Since $\\widehat{\\theta} = \\widehat{\\theta}(\\boldsymbol{X})$ is a function of random variables,\n",
|
||
"$\\widehat{\\theta}$ 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{\\theta}$. 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. \n",
|
||
"\n",
|
||
"\n",
|
||
"## Resampling methods: More Bootstrap background\n",
|
||
"\n",
|
||
"In the case that $\\widehat{\\theta}$ 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 straight forward 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{\\theta}$ called $\\widehat{\\theta}^*$. \n",
|
||
"\n",
|
||
"By repeated use of (1) and (2), many\n",
|
||
"estimates of $\\widehat{\\theta}$ could have been obtained. The\n",
|
||
"idea is to use the relative frequency of $\\widehat{\\theta}^*$\n",
|
||
"(think of a histogram) as an estimate of $p(\\boldsymbol{t})$.\n",
|
||
"\n",
|
||
"## 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$; 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.\n",
|
||
"\n",
|
||
"\n",
|
||
"Instead of generating the histogram for the relative\n",
|
||
"frequency of the observation $X_i$, just draw the values\n",
|
||
"$(X_1^*,X_2^*,\\cdots,X_n^*)$ with replacement from the vector\n",
|
||
"$\\boldsymbol{X}$. \n",
|
||
"\n",
|
||
"## 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{\\theta}^*$ by evaluating $\\widehat \\theta$ 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 \\theta^*$. 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{\\theta}^*$. 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",
|
||
"\\theta$, apply the etsimator $\\widehat \\sigma^2$ to the values\n",
|
||
"$\\widehat \\theta ^*$.\n",
|
||
"\n",
|
||
"\n",
|
||
"## 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": 29,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
<<<<<<< HEAD
|
||
"Runtime: 2.03116 sec\n",
|
||
"Bootstrap Statistics :\n",
|
||
"original bias std. error\n",
|
||
" 99.8535 14.9035 99.8557 0.149538\n"
|
||
=======
|
||
"Runtime: 2.03903 sec\n",
|
||
"Bootstrap Statistics :\n",
|
||
"original bias std. error\n",
|
||
" 100.101 14.9209 100.102 0.149138\n"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
]
|
||
},
|
||
{
|
||
"ename": "AttributeError",
|
||
"evalue": "'Rectangle' object has no property 'normed'",
|
||
"output_type": "error",
|
||
"traceback": [
|
||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
|
||
"\u001b[0;32m<ipython-input-29-53990135e988>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0mt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbootstrap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstat\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdatapoints\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0;31m# the histogram of the bootstrapped data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 31\u001b[0;31m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbinsboot\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpatches\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m50\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnormed\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfacecolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'red'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malpha\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.75\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 32\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[0;31m# add a 'best fit' line\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
<<<<<<< HEAD
|
||
"\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mhist\u001b[0;34m(x, bins, range, density, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, data, **kwargs)\u001b[0m\n\u001b[1;32m 2608\u001b[0m \u001b[0malign\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0malign\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0morientation\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0morientation\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrwidth\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlog\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlog\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2609\u001b[0m color=color, label=label, stacked=stacked, **({\"data\": data}\n\u001b[0;32m-> 2610\u001b[0;31m if data is not None else {}), **kwargs)\n\u001b[0m\u001b[1;32m 2611\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2612\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1563\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minner\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1564\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1565\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msanitize_sequence\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1566\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1567\u001b[0m \u001b[0mbound\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnew_sig\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mhist\u001b[0;34m(self, x, bins, range, density, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, **kwargs)\u001b[0m\n\u001b[1;32m 6806\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mpatch\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6807\u001b[0m \u001b[0mp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpatch\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 6808\u001b[0;31m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6809\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlbl\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6810\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_label\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlbl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36mupdate\u001b[0;34m(self, props)\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1005\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mcbook\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_setattr_cm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0meventson\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1006\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0m_update_property\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mprops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1007\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1008\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mret\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1005\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mcbook\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_setattr_cm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0meventson\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1006\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0m_update_property\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mprops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1007\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1008\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mret\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36m_update_property\u001b[0;34m(self, k, v)\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mcallable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1001\u001b[0m raise AttributeError('{!r} object has no property {!r}'\n\u001b[0;32m-> 1002\u001b[0;31m .format(type(self).__name__, k))\n\u001b[0m\u001b[1;32m 1003\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
=======
|
||
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mhist\u001b[0;34m(x, bins, range, density, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, data, **kwargs)\u001b[0m\n\u001b[1;32m 2603\u001b[0m \u001b[0morientation\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'vertical'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrwidth\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlog\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2604\u001b[0m label=None, stacked=False, *, data=None, **kwargs):\n\u001b[0;32m-> 2605\u001b[0;31m return gca().hist(\n\u001b[0m\u001b[1;32m 2606\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbins\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbins\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrange\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdensity\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdensity\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mweights\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2607\u001b[0m \u001b[0mcumulative\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcumulative\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbottom\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhisttype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mhisttype\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1563\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minner\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1564\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1565\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msanitize_sequence\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1566\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1567\u001b[0m \u001b[0mbound\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnew_sig\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mhist\u001b[0;34m(self, x, bins, range, density, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, **kwargs)\u001b[0m\n\u001b[1;32m 6817\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mpatch\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6818\u001b[0m \u001b[0mp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpatch\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 6819\u001b[0;31m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6820\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlbl\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6821\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_label\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlbl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36mupdate\u001b[0;34m(self, props)\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1005\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mcbook\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_setattr_cm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0meventson\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1006\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0m_update_property\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mprops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1007\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1008\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mret\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1005\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mcbook\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_setattr_cm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0meventson\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1006\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0m_update_property\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mprops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1007\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1008\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mret\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36m_update_property\u001b[0;34m(self, k, v)\u001b[0m\n\u001b[1;32m 999\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'set_'\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mcallable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1001\u001b[0;31m raise AttributeError('{!r} object has no property {!r}'\n\u001b[0m\u001b[1;32m 1002\u001b[0m .format(type(self).__name__, k))\n\u001b[1;32m 1003\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
"\u001b[0;31mAttributeError\u001b[0m: 'Rectangle' object has no property 'normed'"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
<<<<<<< HEAD
|
||
"image/png": "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Y8eOtLS0ZNasWWlqasqePXuSJO3t7WlpaRn1gQEA4JWM+JXbpqambNiwIatWrUpfX18WLlyYJUuWJEk2btyYdevWpaenJ/PmzcvKlStHfWAAAHglw47bhx56aOifFyxYkG3btp2wZu7cudm6devoTAYAACPkE8oAACiGuAUAoBjiFgCAYohbAACKIW4BACiGuAUAoBjiFgCAYvigezhFzedOz7QmdyGgDMeOD6RSaR72+t6+/nQfOVrHieDUeGaGUzStqTGtq9uHvX77ncvrOA3A6Zk6ZfKIH9O66zgPnCqXJQAAUAxxCwBAMcQtAADFELcAABRD3AIAUAxxCwBAMcQtAADFELcAABRD3AIAUAxxCwBAMcQtAADFELcAABRD3AIAUAxxCwBAMRrHegAAYOI5dnwglUrzsNf39vWn+8jROk4EvyJuAYARmzplclpXtw97/fY7l6e7jvPAb7gsAQCAYohbAACKIW4BACiGa27h15rPnZ5pTe4SADCReSaHX5vW1DjiX44AAMYXlyUAAFAMcQsAQDHELQAAxXDNLQBQdy/3iWav9AlnPs2M0yFuAYC6G8knmvk0M06HyxIAACiGuAUAoBjiFgCAYohbAACK4RfKKJaP0wWAs49nforl43QB4OzjsgQAAIohbgEAKIa4BQCgGOIWAIBiiFsAAIrh3RIYUyN9u66+YwNpmjq5jhMBABOZuGVMncrbdQ13vbf2AoCzj7gFAMaVY8cHUqk0D3t9b19/uo8creNETCTiFgAYV6ZOmTzin+p113EeJha/UAYAQDG8cgsATGguY+CFxC0AMKG5jIEXEre8Kv83DABMJOKWV+X/hgFgZEb6Hu5eGBpd4hYAOKvU+6eSp/Ie7l4YGj3illE10gcMADjT/FSybOL2LDPSH5WM1Kk8YADAeOaFm4mlLpWzffv23H333env78/73ve+XHPNNfX4NpyCU/lRCQCczbxwM7GMetx2dnZm06ZNuf/++zN16tSsWLEif/RHf5Tf//3fH+1vVSQXoQPA2WU8vTPReJrlVI163O7evTtvfetb85rXvCZJsnjx4nR0dOQjH/nIsG4/aVLDaI80pmbMmJamEV4G8P/u+Kdhr737428f8Y9KqudNP2vWj6dZzrb142mWs239eJploq8fT7OcbevH0yz1Xj91yuS6Pvf39fWnp6e3LrN8ed2iPH+G2+1krdhQq9Vqo/kNv/SlL+WXv/xlbrnlliTJt771rezduzef/vSnR/PbAADACSaN9l84ODiYhob/v6hrtdqLvgYAgHoZ9bidOXNmurq6hr7u6upKtVod7W8DAAAnGPW4fdvb3pYf//jHefbZZ3P06NH80z/9U1paWkb72wAAwAlG/RfKLrjggtxyyy1ZuXJljh8/nquuuipvetObRvvbAADACUb9F8oAAGCsjPplCQAAMFbELQAAxRC3AAAUQ9wCAFAMcXsWu+eee7J48eK0trbm7rvvTpLcf//9ueKKK9La2po77rgj/f39r3j7xx57LH/4h394psY9a5zqvhw8eDAf+tCH8q53vSsrVqzI008/faZHL9qp7svTTz+da665JsuXL8+1116bAwcOnOnRi9PT05Nly5YN/Te+e/futLa2ZtGiRdm0adPQun379qWtrS2LFy/O2rVrX3Z/jhw5kg996EO5/PLLc80117zofdoZmdHcl5///OdD95v3vOc92bdv3xk7j9KM5r78xv/+7//mLW95y/h9nqlxVvrXf/3X2rJly2rd3d21/v7+2vXXX1/70pe+VLv00ktrnZ2dtVqtVrv99ttr995778ve/pe//GVtxYoVtT/4gz84k2MX73T25X3ve1/tG9/4Rq1Wq9W+8Y1v1G666aYzOnvJTmdfPvaxj9W+/vWv12q1Wu2rX/1qbfXq1Wd09tL8x3/8R23ZsmW1efPm1Z566qna0aNHawsXLqz9z//8T+348eO1D3zgA7Uf/OAHtVqtVlu6dGnt3//932u1Wq32N3/zN0P78ELr16+vfelLX6rVarXaAw884H5zikZ7X1asWFH7/ve/X6vVarXdu3fXWltbz9i5lGS096VWq9UGBgZqH/jAB2rz58+vPfXUU2fsXEbCK7dnqcceeyx/8id/khkzZmTy5Mm59NJL88UvfjHz588f+kS5yy67LN/97ndf9vYbNmzI+973vjM58lnhVPfl2Wefzc9+9rOsWLEiSXLllVfm5ptvPuPzl+p07i+Dg4Pp6elJkhw9ejTTpk07o7OXZsuWLbn99tuH/r3v3bs3c+bMyezZs9PY2JjW1tZ0dHTkwIED6e3tzfz585MkbW1t6ejoOOHv+8EPfpDW1tYkybJly/Iv//IvOX78+Jk7oUKM9r68+93vzqWXXpokeeMb35hnnnnmzJ1MQUZ7X5Lk7//+7/O2t70t55133hk7j5ESt2epefPm5Uc/+lGee+659PX15aGHHsr8+fPzyCOP5JlnnsnAwEA6Ojpy6NChE277ve99L729vVmyZMkYTF62U92Xp556Kr/zO7+TDRs25Morr8xHP/rRTJkyZYzOojync3+56aab8g//8A+59NJLc++99+aDH/zgGJxBOT7zmc/kkksuGfr64MGDqVQqQ19Xq9V0dnaecLxSqaSzs/OEv++F6xobGzNjxow8++yzdTyDMo32vrS1tWXy5MlJkrvuuivveMc76jh9uUZ7Xx599LNj6HQAAAPTSURBVNH85Cc/yV/+5V/Wd/DTJG7PUgsWLEhbW1uuvfbaXHfddbn44oszffr0rF69OjfeeGOuueaavPGNbzwhkLq6unL33Xfnk5/85BhNXrZT3Zf+/v489thjeetb35pvf/vbefvb355PfOITY3QW5TnVfUmSj3/84/nUpz6VH/7wh1m/fn0+8pGPpOazc0bN4OBgGhoahr6u1WppaGh4xeMnU6vVMmmSp8bTNRr7UqvV8rnPfS6PPPJI1qxZU/eZzwansy9Hjx7N+vXrc8cdd4z7+8j4no666enpyaJFi7J9+/bcd999mTp1ai644IK86U1vyne+851885vfzAUXXJDZs2e/6HY/+MEP8txzzw1d6J8ky5cvH/qxK6fnVPelUqnknHPOyWWXXZbkVz9e3bt371icQpFOdV+effbZPP7440OvOi1evDhdXV35xS9+MRanUaSZM2e+6JfAurq6Uq1WTzh+6NChoR/NvlC1Wh16xb2/vz/PP/98XvOa19R/8MKd7r709/fnYx/7WP7zP/8zX/3qV9Pc3HxG5i7d6ezLww8/nMOHD+fGG2/M8uXLh36J+fHHHz9j8w+XuD1LPf300/mrv/qr9Pf3p7u7O1u3bs3y5cvz/ve/Pz09PTl27Fi+9rWv5YorrnjR7d797nfnu9/9btrb29Pe3p4kaW9vz4wZM8biNIpzqvvyu7/7u5k5c2Z27dqVJPn+97+fefPmjcUpFOlU9+W8885LU1NTHn744STJnj17cs455+S1r33tWJxGkS666KI88cQT2b9/fwYGBrJjx460tLRk1qxZaWpqyp49e5L86nGqpaXlhNsvXLgw3/nOd5IkO3fuzCWXXOKSnlFwuvvyuc99Lj09Pbn33nuF7Sg6nX259NJL89BDDw09/1er1dxzzz15/etfPxan8qoax3oAxsbcuXOzaNGivPOd78zAwEDe//735+KLL86HP/zhvOc970l/f3+WLVs29IsWa9euzZ/92Z/l7W9/+xhPXrbT2ZcvfOELuf322/N3f/d3mTFjRjZs2DDGZ1OO09mXL37xi/n0pz+d3t7enHPOOfnCF74wxmdTlqampmzYsCGrVq1KX19fFi5cOPT7ABs3bsy6devS09OTefPmZeXKlUmSz3/+86lWq3nve9+bm266KZ/4xCeydOnSNDc3Z+PGjWN5OsU4nX1ZvHhxvv71r+fCCy/Mu9/97qG/8zcvqHDqTvf+MlE01Fz8BQBAIVyWAABAMcQtAADFELcAABRD3AIAUAxxCwBAMcQtAADFELcAABRD3AIAUIz/D/YNsOLkFOpDAAAAAElFTkSuQmCC\n",
|
||
=======
|
||
"image/png": "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8YtfpL+/P4888kgWLFiQxx9/PM8991wGBwfT1dWV/fv3v+x2zzzzTH7jN34j69aty2WXXZaPfexjmTZt2gSdRVle75okycc//vH8zd/8TS644IJ87Wtfy4c+9KEJOINyfPazn835558//PW+fftSqVSGv65Wq+nu7j7meKVSSXd39zG/30vHNTY25vTTT8/zzz8/hmdQntFek46OjkydOjVJctddd+W9733vGM6+TKO9Jk888UR++MMf5o/+6I/GduKFGs31OHDgQKZPn577778/V1xxRZYvX57BwcGxP4kJJG4LsHDhwnR0dOTaa/YnqGkAAAPkSURBVK/N9ddfn/POOy8zZszIypUrc+ONN+aaa67J2972tmPCdWBgIE8++WTe+c535u///u/znve8J7feeusEnUVZXu+aJMmf/umf5tOf/nS+//3vZ+3atfnoRz+ams9aGTVDQ0NpaGgY/rpWq6WhoeFXHj+eWq2WKVNcSk/EaKxJrVbL5z//+Tz++ONZtWrVmM+5dCeyJocPH87atWtzxx13uG+MkhNZj8HBwezfvz8tLS35u7/7u9xwww256aabxm3uE8HfugL09vZm0aJF2bJlS+67775Mnz49Z599dt7+9rfnoYceyt/+7d/m7LPPzpw5c152u0qlktNOOy0XXnhhkhf/i3XXrl0TcQrFeb1r8vzzz+dnP/vZ8DNPixcvTk9PT37+859PxGkUadasWS97EVhPT0+q1eoxx/fv3z/8X4IvVa1Wh59xHxgYyAsvvJA3vOENYz/xgp3omgwMDOSTn/xk/v3f/z333ntvWlpaxmXeJTuRNXnsscdy4MCB3HjjjVm2bNnwC5d/9rOfjdv8S3Mi63HGGWeksbExS5cuTZK8+93vzi9/+cscOHBgfCY/AcRtAZ599tn88R//cQYGBnLo0KFs2rQpy5Ytywc/+MH09vbmyJEj+cY3vpGLL774Zbf7zd/8zcyaNSvbt29Pknz3u9/N/PnzJ+IUivN61+SMM85IU1NTHnvssSTJzp07c9ppp+XMM8+ciNMo0jnnnJOnnnoqe/bsyeDgYLZu3ZrW1tbMnj07TU1N2blzZ5Kks7Mzra2tx9y+ra0tDz30UJJk27ZtOf/8823nOUEnuiaf//zn09vbm6997WvCdpScyJpccMEFeeSRR9LZ2ZnOzs5Uq9V89atfzZvf/OaJOJUinMh6TJ8+Pe9617vyD//wD0mSH//4x5kxY0bRe6EbJ3oCnLh58+Zl0aJFed/73pfBwcF88IMfzHnnnZebbropV1xxRQYGBrJ06dLhF8GsXr06v//7v5/3vOc9+dKXvpTbb789X/jCF3L66adn3bp1E3w2ZTiRNbn77rvzmc98Jn19fTnttNPypS99aYLPpixNTU1Zt25dVqxYkf7+/rS1tWXJkiVJkvXr12fNmjXp7e3N/Pnzs3z58iTJF7/4xVSr1Vx11VX5+Mc/nltvvTWXXHJJWlpasn79+ok8nSKcyJosXrw43/zmN/OmN70p73//+4d/z87Ozgk5l1Kc6P2E0XWi6/HZz342t912W+6///40NjZmw4YNRW8ZaajZzAcAQCHKzXYAAE454hYAgGKIWwAAiiFuAQAohrgFAKAY4hYAgGKIWwAAiiFuAQAoxv8FsfuShNOdRQsAAAAASUVORK5CYII=\n",
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
"text/plain": [
|
||
"<Figure size 842.4x595.44 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"filenames": {
|
||
<<<<<<< HEAD
|
||
"image/png": "/Users/MortenImac/Teaching/MachineLearning/doc/src/LectureNotes/_build/jupyter_execute/regression_278_2.png"
|
||
=======
|
||
"image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_278_2.png"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
}
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"from numpy import *\n",
|
||
"from numpy.random import randint, randn\n",
|
||
"from time import time\n",
|
||
"import matplotlib.mlab as mlab\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"\n",
|
||
"# Returns mean of bootstrap samples \n",
|
||
"def stat(data):\n",
|
||
" return mean(data)\n",
|
||
"\n",
|
||
"# Bootstrap algorithm\n",
|
||
"def bootstrap(data, statistic, R):\n",
|
||
" t = zeros(R); n = len(data); inds = arange(n); t0 = time()\n",
|
||
" # non-parametric bootstrap \n",
|
||
" for i in range(R):\n",
|
||
" t[i] = statistic(data[randint(0,n,n)])\n",
|
||
"\n",
|
||
" # analysis \n",
|
||
" print(\"Runtime: %g sec\" % (time()-t0)); print(\"Bootstrap Statistics :\")\n",
|
||
" print(\"original bias std. error\")\n",
|
||
" print(\"%8g %8g %14g %15g\" % (statistic(data), std(data),mean(t),std(t)))\n",
|
||
" return t\n",
|
||
"\n",
|
||
"\n",
|
||
"mu, sigma = 100, 15\n",
|
||
"datapoints = 10000\n",
|
||
"x = mu + sigma*random.randn(datapoints)\n",
|
||
"# bootstrap returns the data sample \n",
|
||
"t = bootstrap(x, stat, datapoints)\n",
|
||
"# the histogram of the bootstrapped data \n",
|
||
"n, binsboot, patches = plt.hist(t, 50, normed=1, facecolor='red', alpha=0.75)\n",
|
||
"\n",
|
||
"# add a 'best fit' line \n",
|
||
"y = mlab.normpdf( binsboot, mean(t), std(t))\n",
|
||
"lt = plt.plot(binsboot, y, 'r--', linewidth=1)\n",
|
||
"plt.xlabel('Smarts')\n",
|
||
"plt.ylabel('Probability')\n",
|
||
"plt.axis([99.5, 100.6, 0, 3.0])\n",
|
||
"plt.grid(True)\n",
|
||
"\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- !split -->\n",
|
||
"## 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). \n",
|
||
"\n",
|
||
"<!-- !split -->\n",
|
||
"## How to set up the cross-validation for Ridge and/or Lasso\n",
|
||
"\n",
|
||
"* Define a range of interest for the penalty parameter.\n",
|
||
"\n",
|
||
"* Divide the data set into training and test set comprising samples $\\{1, \\ldots, n\\} \\setminus i$ and $\\{ i \\}$, respectively.\n",
|
||
"\n",
|
||
"* Fit the linear regression model by means of ridge estimation for each $\\lambda$ in the grid using the training set, and the corresponding estimate of the error variance $\\boldsymbol{\\sigma}_{-i}^2(\\lambda)$, as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\begin{align*}\n",
|
||
"\\boldsymbol{\\beta}_{-i}(\\lambda) & = ( \\boldsymbol{X}_{-i, \\ast}^{T}\n",
|
||
"\\boldsymbol{X}_{-i, \\ast} + \\lambda \\boldsymbol{I}_{pp})^{-1}\n",
|
||
"\\boldsymbol{X}_{-i, \\ast}^{T} \\boldsymbol{y}_{-i}\n",
|
||
"\\end{align*}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"* Evaluate the prediction performance of these models on the test set by $\\log\\{L[y_i, \\boldsymbol{X}_{i, \\ast}; \\boldsymbol{\\beta}_{-i}(\\lambda), \\boldsymbol{\\sigma}_{-i}^2(\\lambda)]\\}$. Or, by the prediction error $|y_i - \\boldsymbol{X}_{i, \\ast} \\boldsymbol{\\beta}_{-i}(\\lambda)|$, the relative error, the error squared or the R2 score function.\n",
|
||
"\n",
|
||
"* Repeat the first three steps such that each sample plays the role of the test set once.\n",
|
||
"\n",
|
||
"* Average the prediction performances of the test sets at each grid point of the penalty bias/parameter. It is an estimate of the prediction performance of the model corresponding to this value of the penalty parameter on novel data. It is defined as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\begin{align*}\n",
|
||
"\\frac{1}{n} \\sum_{i = 1}^n \\log\\{L[y_i, \\mathbf{X}_{i, \\ast}; \\boldsymbol{\\beta}_{-i}(\\lambda), \\boldsymbol{\\sigma}_{-i}^2(\\lambda)]\\}.\n",
|
||
"\\end{align*}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"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",
|
||
"\n",
|
||
"5. Summarize the model using the sample of model evaluation scores\n",
|
||
"\n",
|
||
"## 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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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",
|
||
"metadata": {},
|
||
"source": [
|
||
"## The bias-variance tradeoff\n",
|
||
"\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{L}$ consisting of the data\n",
|
||
"$\\mathbf{X}_\\mathcal{L}=\\{(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",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{y}=f(\\boldsymbol{x}) + \\boldsymbol{\\epsilon}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"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",
|
||
"metadata": {},
|
||
"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",
|
||
"metadata": {},
|
||
"source": [
|
||
"We can rewrite this as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"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",
|
||
"metadata": {},
|
||
"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",
|
||
"metadata": {},
|
||
"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",
|
||
"metadata": {},
|
||
"source": [
|
||
"and adding and subtracting $\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right]$ we get"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"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",
|
||
"metadata": {},
|
||
"source": [
|
||
"which, using the abovementioned expectation values can be rewritten as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"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",
|
||
"metadata": {},
|
||
"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}$.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Example code for Bias-Variance tradeoff"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Understanding what happens"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 32,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Polynomial degree: 0\n",
|
||
"Error: 0.2937910450030775\n",
|
||
"Bias^2: 0.2929212799917661\n",
|
||
"Var: 0.0008697650113114119\n",
|
||
"0.2937910450030775 >= 0.2929212799917661 + 0.0008697650113114119 = 0.2937910450030775\n",
|
||
"Polynomial degree: 1\n",
|
||
"Error: 0.06894146856540674\n",
|
||
"Bias^2: 0.06832043024896824\n",
|
||
"Var: 0.0006210383164384989\n",
|
||
"0.06894146856540674 >= 0.06832043024896824 + 0.0006210383164384989 = 0.06894146856540674\n",
|
||
"Polynomial degree: 2\n",
|
||
"Error: 0.06106765054837855\n",
|
||
"Bias^2: 0.060547654220995305\n",
|
||
"Var: 0.0005199963273832372\n",
|
||
"0.06106765054837855 >= 0.060547654220995305 + 0.0005199963273832372 = 0.061067650548378545\n",
|
||
"Polynomial degree: 3\n",
|
||
"Error: 0.03346202229536659\n",
|
||
"Bias^2: 0.0331409564680546\n",
|
||
"Var: 0.00032106582731199456\n",
|
||
"0.03346202229536659 >= 0.0331409564680546 + 0.00032106582731199456 = 0.03346202229536659\n",
|
||
"Polynomial degree: 4\n",
|
||
"Error: 0.0335277871704832\n",
|
||
"Bias^2: 0.03311607538577367\n",
|
||
"Var: 0.0004117117847095335\n",
|
||
"0.0335277871704832 >= 0.03311607538577367 + 0.0004117117847095335 = 0.03352778717048321\n",
|
||
"Polynomial degree: 5\n",
|
||
"Error: 0.025517151530854786\n",
|
||
"Bias^2: 0.024968890209256463\n",
|
||
"Var: 0.0005482613215983259\n",
|
||
"0.025517151530854786 >= 0.024968890209256463 + 0.0005482613215983259 = 0.02551715153085479\n",
|
||
"Polynomial degree: 6\n",
|
||
"Error: 0.01994607606842793\n",
|
||
"Bias^2: 0.019502076889868637\n",
|
||
"Var: 0.00044399917855929527\n",
|
||
"0.01994607606842793 >= 0.019502076889868637 + 0.00044399917855929527 = 0.019946076068427934\n",
|
||
"Polynomial degree: 7\n",
|
||
"Error: 0.018695928655417676\n",
|
||
"Bias^2: 0.01797984009000237\n",
|
||
"Var: 0.0007160885654153078\n",
|
||
"0.018695928655417676 >= 0.01797984009000237 + 0.0007160885654153078 = 0.01869592865541768\n",
|
||
"Polynomial degree: 8\n",
|
||
"Error: 0.010736105188369479\n",
|
||
"Bias^2: 0.010376602508045063\n",
|
||
"Var: 0.00035950268032441344\n",
|
||
"0.010736105188369479 >= 0.010376602508045063 + 0.00035950268032441344 = 0.010736105188369477\n",
|
||
"Polynomial degree: 9\n",
|
||
"Error: 0.01101329065273084\n",
|
||
"Bias^2: 0.010539027867197629\n",
|
||
"Var: 0.0004742627855332104\n",
|
||
"0.01101329065273084 >= 0.010539027867197629 + 0.0004742627855332104 = 0.01101329065273084\n",
|
||
"Polynomial degree: 10\n",
|
||
"Error: 0.010972468815261078\n",
|
||
"Bias^2: 0.010593565969983903\n",
|
||
"Var: 0.00037890284527716995\n",
|
||
"0.010972468815261078 >= 0.010593565969983903 + 0.00037890284527716995 = 0.010972468815261073\n",
|
||
"Polynomial degree: 11\n",
|
||
"Error: 0.01084055593776807\n",
|
||
"Bias^2: 0.010348475861989281\n",
|
||
"Var: 0.0004920800757787882\n",
|
||
"0.01084055593776807 >= 0.010348475861989281 + 0.0004920800757787882 = 0.01084055593776807\n",
|
||
"Polynomial degree: 12\n",
|
||
"Error: 0.010192472149429362\n",
|
||
"Bias^2: 0.009610568640072627\n",
|
||
"Var: 0.0005819035093567355\n",
|
||
"0.010192472149429362 >= 0.009610568640072627 + 0.0005819035093567355 = 0.010192472149429362\n",
|
||
"Polynomial degree: 13\n",
|
||
"Error: 0.010312285920590011\n",
|
||
"Bias^2: 0.009802534263801815\n",
|
||
"Var: 0.0005097516567881938\n",
|
||
"0.010312285920590011 >= 0.009802534263801815 + 0.0005097516567881938 = 0.01031228592059001\n",
|
||
"Polynomial degree: 14\n",
|
||
"Error: 0.010722455299595876\n",
|
||
"Bias^2: 0.01008891676024437\n",
|
||
"Var: 0.0006335385393515036\n",
|
||
"0.010722455299595876 >= 0.01008891676024437 + 0.0006335385393515036 = 0.010722455299595875\n",
|
||
"Polynomial degree: 15\n",
|
||
"Error: 0.011155437503231998\n",
|
||
"Bias^2: 0.010311761228670724\n",
|
||
"Var: 0.0008436762745612778\n",
|
||
"0.011155437503231998 >= 0.010311761228670724 + 0.0008436762745612778 = 0.011155437503232002\n",
|
||
"Polynomial degree: 16\n",
|
||
"Error: 0.011028026782676708\n",
|
||
"Bias^2: 0.010223572382311492\n",
|
||
"Var: 0.0008044544003652116\n",
|
||
"0.011028026782676708 >= 0.010223572382311492 + 0.0008044544003652116 = 0.011028026782676703\n",
|
||
"Polynomial degree: 17\n",
|
||
"Error: 0.011628743129658555\n",
|
||
"Bias^2: 0.010533948734129592\n",
|
||
"Var: 0.001094794395528961\n",
|
||
"0.011628743129658555 >= 0.010533948734129592 + 0.001094794395528961 = 0.011628743129658553\n",
|
||
"Polynomial degree: 18\n",
|
||
"Error: 0.014371682171531027\n",
|
||
"Bias^2: 0.010922362242870073\n",
|
||
"Var: 0.0034493199286609573\n",
|
||
"0.014371682171531027 >= 0.010922362242870073 + 0.0034493199286609573 = 0.01437168217153103\n",
|
||
"Polynomial degree: 19\n",
|
||
"Error: 0.026986306199342624\n",
|
||
"Bias^2: 0.01214176442858653\n",
|
||
"Var: 0.014844541770756087\n",
|
||
"0.026986306199342624 >= 0.01214176442858653 + 0.014844541770756087 = 0.026986306199342617\n",
|
||
"Polynomial degree: 20\n",
|
||
"Error: 0.012249244024160728\n",
|
||
"Bias^2: 0.01006785246285396\n",
|
||
"Var: 0.002181391561306766\n",
|
||
"0.012249244024160728 >= 0.01006785246285396 + 0.002181391561306766 = 0.012249244024160727\n",
|
||
"Polynomial degree: 21\n",
|
||
"Error: 0.014973172820830053\n",
|
||
"Bias^2: 0.010154371176360328\n",
|
||
"Var: 0.00481880164446972\n",
|
||
"0.014973172820830053 >= 0.010154371176360328 + 0.00481880164446972 = 0.014973172820830048\n",
|
||
"Polynomial degree: 22\n",
|
||
"Error: 0.014186606932681737\n",
|
||
"Bias^2: 0.009594131981212376\n",
|
||
"Var: 0.0045924749514693625\n",
|
||
"0.014186606932681737 >= 0.009594131981212376 + 0.0045924749514693625 = 0.014186606932681738\n",
|
||
"Polynomial degree: 23\n",
|
||
"Error: 0.025574552577788824\n",
|
||
"Bias^2: 0.009477519033249752\n",
|
||
"Var: 0.016097033544539077\n",
|
||
"0.025574552577788824 >= 0.009477519033249752 + 0.016097033544539077 = 0.02557455257778883\n",
|
||
"Polynomial degree: 24\n",
|
||
"Error: 0.03147298632679604\n",
|
||
"Bias^2: 0.009565267585507206\n",
|
||
"Var: 0.021907718741288846\n",
|
||
"0.03147298632679604 >= 0.009565267585507206 + 0.021907718741288846 = 0.03147298632679605\n",
|
||
"Polynomial degree: 25\n",
|
||
"Error: 0.03929027799369515\n",
|
||
"Bias^2: 0.009776269005896726\n",
|
||
"Var: 0.029514008987798424\n",
|
||
"0.03929027799369515 >= 0.009776269005896726 + 0.029514008987798424 = 0.03929027799369515\n",
|
||
"Polynomial degree: 26\n",
|
||
"Error: 0.15813256009613183\n",
|
||
"Bias^2: 0.013239726753028333\n",
|
||
"Var: 0.14489283334310352\n",
|
||
"0.15813256009613183 >= 0.013239726753028333 + 0.14489283334310352 = 0.15813256009613186\n",
|
||
"Polynomial degree: 27\n",
|
||
"Error: 0.1360840943498259\n",
|
||
"Bias^2: 0.01326608592145169\n",
|
||
"Var: 0.12281800842837416\n",
|
||
"0.1360840943498259 >= 0.01326608592145169 + 0.12281800842837416 = 0.13608409434982585\n",
|
||
"Polynomial degree: 28\n",
|
||
"Error: 0.7210723692205014\n",
|
||
"Bias^2: 0.04436186918146108\n",
|
||
"Var: 0.6767105000390408\n",
|
||
"0.7210723692205014 >= 0.04436186918146108 + 0.6767105000390408 = 0.7210723692205019\n",
|
||
"Polynomial degree: 29\n",
|
||
"Error: 0.48454430745837984\n",
|
||
"Bias^2: 0.011809368338879722\n",
|
||
"Var: 0.4727349391195001\n",
|
||
"0.48454430745837984 >= 0.011809368338879722 + 0.4727349391195001 = 0.48454430745837984\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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AIAS53qekpmkJBFoJ0CgBQAAKHFJOyP505IItBMh0AIAAJQ4y07LMLOBlh7aoxFoAQAASlx2ZJcjiR3aiRBoAQAASlzCdsZ2aAm0RyPQAgAAlLjRGbQSLQcTIdACAACUOCvpyDBpOZgMgRYAAKDEje7QBnwBmT6OEXglAi0AAECJSySzPbTszk6MQAsAAFDiLNuRP+AoTP/shAi0AAAAJS4baDn2djIEWgAAgBI32nJQSaCdEIEWAACgxI3eFEbLwcQItAAAACXOSjryfNwUNhkCLQAAQIkbtlNyCbSTItACAACUuISTlMQpYZMh0AIAAJQwz/PGAi07tBMj0AIAAJQwO52R50tJItBOhkALAABQwqyRkV2SGNs1CQItAABACcuO7HIkibFdkyDQAgAAlLCEfXiHlpaDiRFoAQAASpiVdGT4aTk4FgItAABACbNsRzLT8smnCn+w2OWUJAItAABACcvu0DqqNCtlGEaxyylJeQXa7du3a+3atVq9erW2bt161PM/+9nP1NbWpiuuuEI33XSTUqnUtBcKAAAwFyVGdmi5IWxyOQNtZ2enNm/erG3btunee+/VXXfdpb179449b1mWbrvtNn3nO9/RT37yE9m2rR/+8IcFLRoAAGCusGxHvoBDoD2GnIF2165dWrFiherq6hQOh7VmzRrt2LFj7PlwOKwHH3xQ8+bNUyKRUE9Pj2pqagpaNAAAwFxhJR35TYcJB8eQM9B2dXUpGo2OPW5qalJnZ+e4awKBgH75y1/qL//yL9XX16fXvva1018pAADAHGTZjgwC7TGZuS5wXXdcA7LneRM2JL/uda/Tww8/rC996Uu69dZb9cUvfjHvIhobI3lfO52i0eqifC6OjXUpTaxL6WJtShPrUprKcV0c15PMtBqqa8qy/nydyHfLGWhjsZj27Nkz9jgej6upqWnscX9/v5588smxXdm2tjZt2rRpSkX09AzJdb0pveZERaPViscHZ/QzkRvrUppYl9LF2pQm1qU0leu69A8m5damZDhmWdafj1xr4/MZx9wAzdlysHLlSu3evVu9vb1KJBLauXOnVq1aNfa853n68Ic/rPb2dknSjh07dN55503lO8y4rj5LqXSm2GUAAADkZKVsyfBoOTiGnDu0zc3N2rRpk9avX690Oq1169Zp2bJl2rBhgzZu3KilS5fqk5/8pK6/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t90mdaYAOBwOnnnmGbZs2cKtt946Lb8zcyqhtSwLpVRmXGudMy7yY+3atTz55JOUlZVRXV3NfffdxxtvvJHvsESK1JvCNW/ePJ577jn8fj8ej4eHHnpI6k6eHDt2jEceeYQ///M/Z968eVJnCkh22SxcuFDqTIH44he/yK5du+ju7qajo2PKdWZOJbT19fX09/dnxvv7+zOH7kT+vP/+++zatSszrrXGbrfnMSKRTepN4Tpy5AivvPJKZlzqTn588MEH/P7v/z5/9md/xqc//WmpMwVkYtlIncm/48ePc+jQIQA8Hg+bN29m9+7dU64zcyqh3bBhA7t27WJoaIhwOMzOnTv55Cc/me+w5ryxsTGefPJJotEogUCAn/70p9x+++35DkukrF69mpMnT3Lq1CkSiQS/+MUvpN4UCK01TzzxBCMjI8TjcX784x9L3bnGuru7+eM//mOeeuoptmzZAkidKRSTlY3Umfw7e/YsX/va14jFYsRiMX71q1+xY8eOKdeZObVbUldXx2OPPcbDDz9MPB7nvvvuY9WqVfkOa87btGkT+/btY/v27ViWxQMPPMDatWvzHZZIcblcfOc73+ELX/gC0WiUjRs3cuedd+Y7LAFcd911fP7zn+f+++/HNE02b97M1q1b8x3WnPL973+faDTKd77zncy0HTt2SJ0pABcqG6kz+bVx40b279/P9u3bsdlsbN68mS1btlBdXT2lOqO01nqGYhZCCCGEEGLGzakuB0IIIYQQYvaRhFYIIYQQQhQ1SWiFEEIIIURRk4RWCCGEEEIUNUlohRBCCCFEUZOEVgghhBBCFDVJaIUQQgghRFGThFYIIYQQQhS1/w/t6SApUuQsvQAAAABJRU5ErkJggg==\n",
|
||
"text/plain": [
|
||
"<Figure size 842.4x595.44 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"filenames": {
|
||
<<<<<<< HEAD
|
||
"image/png": "/Users/MortenImac/Teaching/MachineLearning/doc/src/LectureNotes/_build/jupyter_execute/regression_300_1.png"
|
||
=======
|
||
"image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_300_1.png"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
}
|
||
},
|
||
"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 = 400\n",
|
||
"n_boostraps = 100\n",
|
||
"maxdegree = 30\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",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- !split -->\n",
|
||
"## Summing up\n",
|
||
"\n",
|
||
"\n",
|
||
"\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",
|
||
"\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",
|
||
"\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",
|
||
"\n",
|
||
"You may also find this recent [article](https://www.pnas.org/content/116/32/15849) of interest.\n",
|
||
"\n",
|
||
"## Another Example from Scikit-Learn's Repository"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"\"\"\"\n",
|
||
"============================\n",
|
||
"Underfitting vs. Overfitting\n",
|
||
"============================\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** / **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.\n",
|
||
"\"\"\"\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",
|
||
"metadata": {},
|
||
"source": [
|
||
"## More examples on bootstrap and cross-validation and errors"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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=True).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",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- !split -->\n",
|
||
"## The same example but now with cross-validation"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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()\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",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Cross-validation with Ridge"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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",
|
||
"np.random.seed(3155)\n",
|
||
"# Generate the data.\n",
|
||
"n = 100\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",
|
||
"# Decide degree on polynomial to fit\n",
|
||
"poly = PolynomialFeatures(degree = 10)\n",
|
||
"\n",
|
||
"# Decide which values of lambda to use\n",
|
||
"nlambdas = 500\n",
|
||
"lambdas = np.logspace(-3, 5, nlambdas)\n",
|
||
"# Initialize a KFold instance\n",
|
||
"k = 5\n",
|
||
"kfold = KFold(n_splits = k)\n",
|
||
"estimated_mse_sklearn = np.zeros(nlambdas)\n",
|
||
"i = 0\n",
|
||
"for lmb in lambdas:\n",
|
||
" ridge = Ridge(alpha = lmb)\n",
|
||
" estimated_mse_folds = cross_val_score(ridge, x, y, scoring='neg_mean_squared_error', cv=kfold)\n",
|
||
" estimated_mse_sklearn[i] = np.mean(-estimated_mse_folds)\n",
|
||
" i += 1\n",
|
||
"plt.figure()\n",
|
||
"plt.plot(np.log10(lambdas), estimated_mse_sklearn, label = 'cross_val_score')\n",
|
||
"plt.xlabel('log10(lambda)')\n",
|
||
"plt.ylabel('MSE')\n",
|
||
"plt.legend()\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## The Ising model\n",
|
||
"\n",
|
||
"The one-dimensional Ising model with nearest neighbor interaction, no\n",
|
||
"external field and a constant coupling constant $J$ is given by"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- Equation labels as ordinary links -->\n",
|
||
"<div id=\"_auto2\"></div>\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{equation}\n",
|
||
" H = -J \\sum_{k}^L s_k s_{k + 1},\n",
|
||
"\\label{_auto2} \\tag{2}\n",
|
||
"\\end{equation}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"where $s_i \\in \\{-1, 1\\}$ and $s_{N + 1} = s_1$. The number of spins\n",
|
||
"in the system is determined by $L$. For the one-dimensional system\n",
|
||
"there is no phase transition.\n",
|
||
"\n",
|
||
"We will look at a system of $L = 40$ spins with a coupling constant of\n",
|
||
"$J = 1$. To get enough training data we will generate 10000 states\n",
|
||
"with their respective energies."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"from mpl_toolkits.axes_grid1 import make_axes_locatable\n",
|
||
"import seaborn as sns\n",
|
||
"import scipy.linalg as scl\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"import tqdm\n",
|
||
"sns.set(color_codes=True)\n",
|
||
"cmap_args=dict(vmin=-1., vmax=1., cmap='seismic')\n",
|
||
"\n",
|
||
"L = 40\n",
|
||
"n = int(1e4)\n",
|
||
"\n",
|
||
"spins = np.random.choice([-1, 1], size=(n, L))\n",
|
||
"J = 1.0\n",
|
||
"\n",
|
||
"energies = np.zeros(n)\n",
|
||
"\n",
|
||
"for i in range(n):\n",
|
||
" energies[i] = - J * np.dot(spins[i], np.roll(spins[i], 1))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Here we use ordinary least squares\n",
|
||
"regression to predict the energy for the nearest neighbor\n",
|
||
"one-dimensional Ising model on a ring, i.e., the endpoints wrap\n",
|
||
"around. We will use linear regression to fit a value for\n",
|
||
"the coupling constant to achieve this.\n",
|
||
"\n",
|
||
"## Reformulating the problem to suit regression\n",
|
||
"\n",
|
||
"A more general form for the one-dimensional Ising model is"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- Equation labels as ordinary links -->\n",
|
||
"<div id=\"_auto3\"></div>\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{equation}\n",
|
||
" H = - \\sum_j^L \\sum_k^L s_j s_k J_{jk}.\n",
|
||
"\\label{_auto3} \\tag{3}\n",
|
||
"\\end{equation}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Here we allow for interactions beyond the nearest neighbors and a state dependent\n",
|
||
"coupling constant. This latter expression can be formulated as\n",
|
||
"a matrix-product"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- Equation labels as ordinary links -->\n",
|
||
"<div id=\"_auto4\"></div>\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{equation}\n",
|
||
" \\boldsymbol{H} = \\boldsymbol{X} J,\n",
|
||
"\\label{_auto4} \\tag{4}\n",
|
||
"\\end{equation}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"where $X_{jk} = s_j s_k$ and $J$ is a matrix which consists of the\n",
|
||
"elements $-J_{jk}$. This form of writing the energy fits perfectly\n",
|
||
"with the form utilized in linear regression, that is"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- Equation labels as ordinary links -->\n",
|
||
"<div id=\"_auto5\"></div>\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{equation}\n",
|
||
" \\boldsymbol{y} = \\boldsymbol{X}\\boldsymbol{\\beta} + \\boldsymbol{\\epsilon},\n",
|
||
"\\label{_auto5} \\tag{5}\n",
|
||
"\\end{equation}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We split the data in training and test data as discussed in the previous example"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X = np.zeros((n, L ** 2))\n",
|
||
"for i in range(n):\n",
|
||
" X[i] = np.outer(spins[i], spins[i]).ravel()\n",
|
||
"y = energies\n",
|
||
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Linear regression\n",
|
||
"\n",
|
||
"In the ordinary least squares method we choose the cost function"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- Equation labels as ordinary links -->\n",
|
||
"<div id=\"_auto6\"></div>\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{equation}\n",
|
||
" C(\\boldsymbol{X}, \\boldsymbol{\\beta})= \\frac{1}{n}\\left\\{(\\boldsymbol{X}\\boldsymbol{\\beta} - \\boldsymbol{y})^T(\\boldsymbol{X}\\boldsymbol{\\beta} - \\boldsymbol{y})\\right\\}.\n",
|
||
"\\label{_auto6} \\tag{6}\n",
|
||
"\\end{equation}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We then find the extremal point of $C$ by taking the derivative with respect to $\\boldsymbol{\\beta}$ as discussed above.\n",
|
||
"This yields the expression for $\\boldsymbol{\\beta}$ to be"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\beta} = \\frac{\\boldsymbol{X}^T \\boldsymbol{y}}{\\boldsymbol{X}^T \\boldsymbol{X}},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"which immediately imposes some requirements on $\\boldsymbol{X}$ as there must exist\n",
|
||
"an inverse of $\\boldsymbol{X}^T \\boldsymbol{X}$. If the expression we are modeling contains an\n",
|
||
"intercept, i.e., a constant term, we must make sure that the\n",
|
||
"first column of $\\boldsymbol{X}$ consists of $1$. We do this here"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_train_own = np.concatenate(\n",
|
||
" (np.ones(len(X_train))[:, np.newaxis], X_train),\n",
|
||
" axis=1\n",
|
||
")\n",
|
||
"X_test_own = np.concatenate(\n",
|
||
" (np.ones(len(X_test))[:, np.newaxis], X_test),\n",
|
||
" axis=1\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def ols_inv(x: np.ndarray, y: np.ndarray) -> np.ndarray:\n",
|
||
" return scl.inv(x.T @ x) @ (x.T @ y)\n",
|
||
"beta = ols_inv(X_train_own, y_train)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Singular Value decomposition\n",
|
||
"\n",
|
||
"Doing the inversion directly turns out to be a bad idea since the matrix\n",
|
||
"$\\boldsymbol{X}^T\\boldsymbol{X}$ is singular. An alternative approach is to use the **singular\n",
|
||
"value decomposition**. Using the definition of the Moore-Penrose\n",
|
||
"pseudoinverse we can write the equation for $\\boldsymbol{\\beta}$ as"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{\\beta} = \\boldsymbol{X}^{+}\\boldsymbol{y},\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"where the pseudoinverse of $\\boldsymbol{X}$ is given by"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\n",
|
||
"\\boldsymbol{X}^{+} = \\frac{\\boldsymbol{X}^T}{\\boldsymbol{X}^T\\boldsymbol{X}}.\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Using singular value decomposition we can decompose the matrix $\\boldsymbol{X} = \\boldsymbol{U}\\boldsymbol{\\Sigma} \\boldsymbol{V}^T$,\n",
|
||
"where $\\boldsymbol{U}$ and $\\boldsymbol{V}$ are orthogonal(unitary) matrices and $\\boldsymbol{\\Sigma}$ contains the singular values (more details below).\n",
|
||
"where $X^{+} = V\\Sigma^{+} U^T$. This reduces the equation for\n",
|
||
"$\\omega$ to"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- Equation labels as ordinary links -->\n",
|
||
"<div id=\"_auto7\"></div>\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{equation}\n",
|
||
" \\boldsymbol{\\beta} = \\boldsymbol{V}\\boldsymbol{\\Sigma}^{+} \\boldsymbol{U}^T \\boldsymbol{y}.\n",
|
||
"\\label{_auto7} \\tag{7}\n",
|
||
"\\end{equation}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Note that solving this equation by actually doing the pseudoinverse\n",
|
||
"(which is what we will do) is not a good idea as this operation scales\n",
|
||
"as $\\mathcal{O}(n^3)$, where $n$ is the number of elements in a\n",
|
||
"general matrix. Instead, doing $QR$-factorization and solving the\n",
|
||
"linear system as an equation would reduce this down to\n",
|
||
"$\\mathcal{O}(n^2)$ operations."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def ols_svd(x: np.ndarray, y: np.ndarray) -> np.ndarray:\n",
|
||
" u, s, v = scl.svd(x)\n",
|
||
" return v.T @ scl.pinv(scl.diagsvd(s, u.shape[0], v.shape[0])) @ u.T @ y"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"beta = ols_svd(X_train_own,y_train)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"When extracting the $J$-matrix we need to make sure that we remove the intercept, as is done here"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"J = beta[1:].reshape(L, L)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"A way of looking at the coefficients in $J$ is to plot the matrices as images."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"fig = plt.figure(figsize=(20, 14))\n",
|
||
"im = plt.imshow(J, **cmap_args)\n",
|
||
"plt.title(\"OLS\", fontsize=18)\n",
|
||
"plt.xticks(fontsize=18)\n",
|
||
"plt.yticks(fontsize=18)\n",
|
||
"cb = fig.colorbar(im)\n",
|
||
"cb.ax.set_yticklabels(cb.ax.get_yticklabels(), fontsize=18)\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"It is interesting to note that OLS\n",
|
||
"considers both $J_{j, j + 1} = -0.5$ and $J_{j, j - 1} = -0.5$ as\n",
|
||
"valid matrix elements for $J$.\n",
|
||
"In our discussion below on hyperparameters and Ridge and Lasso regression we will see that\n",
|
||
"this problem can be removed, partly and only with Lasso regression. \n",
|
||
"\n",
|
||
"In this case our matrix inversion was actually possible. The obvious question now is what is the mathematics behind the SVD?\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## The one-dimensional Ising model\n",
|
||
"\n",
|
||
"Let us bring back the Ising model again, but now with an additional\n",
|
||
"focus on Ridge and Lasso regression as well. We repeat some of the\n",
|
||
"basic parts of the Ising model and the setup of the training and test\n",
|
||
"data. The one-dimensional Ising model with nearest neighbor\n",
|
||
"interaction, no external field and a constant coupling constant $J$ is\n",
|
||
"given by"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- Equation labels as ordinary links -->\n",
|
||
"<div id=\"_auto8\"></div>\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{equation}\n",
|
||
" H = -J \\sum_{k}^L s_k s_{k + 1},\n",
|
||
"\\label{_auto8} \\tag{8}\n",
|
||
"\\end{equation}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"where $s_i \\in \\{-1, 1\\}$ and $s_{N + 1} = s_1$. The number of spins in the system is determined by $L$. For the one-dimensional system there is no phase transition.\n",
|
||
"\n",
|
||
"We will look at a system of $L = 40$ spins with a coupling constant of $J = 1$. To get enough training data we will generate 10000 states with their respective energies."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"from mpl_toolkits.axes_grid1 import make_axes_locatable\n",
|
||
"import seaborn as sns\n",
|
||
"import scipy.linalg as scl\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"import sklearn.linear_model as skl\n",
|
||
"import tqdm\n",
|
||
"sns.set(color_codes=True)\n",
|
||
"cmap_args=dict(vmin=-1., vmax=1., cmap='seismic')\n",
|
||
"\n",
|
||
"L = 40\n",
|
||
"n = int(1e4)\n",
|
||
"\n",
|
||
"spins = np.random.choice([-1, 1], size=(n, L))\n",
|
||
"J = 1.0\n",
|
||
"\n",
|
||
"energies = np.zeros(n)\n",
|
||
"\n",
|
||
"for i in range(n):\n",
|
||
" energies[i] = - J * np.dot(spins[i], np.roll(spins[i], 1))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"A more general form for the one-dimensional Ising model is"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- Equation labels as ordinary links -->\n",
|
||
"<div id=\"_auto9\"></div>\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{equation}\n",
|
||
" H = - \\sum_j^L \\sum_k^L s_j s_k J_{jk}.\n",
|
||
"\\label{_auto9} \\tag{9}\n",
|
||
"\\end{equation}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Here we allow for interactions beyond the nearest neighbors and a more\n",
|
||
"adaptive coupling matrix. This latter expression can be formulated as\n",
|
||
"a matrix-product on the form"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- Equation labels as ordinary links -->\n",
|
||
"<div id=\"_auto10\"></div>\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{equation}\n",
|
||
" H = X J,\n",
|
||
"\\label{_auto10} \\tag{10}\n",
|
||
"\\end{equation}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"where $X_{jk} = s_j s_k$ and $J$ is the matrix consisting of the\n",
|
||
"elements $-J_{jk}$. This form of writing the energy fits perfectly\n",
|
||
"with the form utilized in linear regression, viz."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- Equation labels as ordinary links -->\n",
|
||
"<div id=\"_auto11\"></div>\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{equation}\n",
|
||
" \\boldsymbol{y} = \\boldsymbol{X}\\boldsymbol{\\beta} + \\boldsymbol{\\epsilon}.\n",
|
||
"\\label{_auto11} \\tag{11}\n",
|
||
"\\end{equation}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We organize the data as we did above"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X = np.zeros((n, L ** 2))\n",
|
||
"for i in range(n):\n",
|
||
" X[i] = np.outer(spins[i], spins[i]).ravel()\n",
|
||
"y = energies\n",
|
||
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.96)\n",
|
||
"\n",
|
||
"X_train_own = np.concatenate(\n",
|
||
" (np.ones(len(X_train))[:, np.newaxis], X_train),\n",
|
||
" axis=1\n",
|
||
")\n",
|
||
"\n",
|
||
"X_test_own = np.concatenate(\n",
|
||
" (np.ones(len(X_test))[:, np.newaxis], X_test),\n",
|
||
" axis=1\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We will do all fitting with **Scikit-Learn**,"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"clf = skl.LinearRegression().fit(X_train, y_train)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"When extracting the $J$-matrix we make sure to remove the intercept"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"J_sk = clf.coef_.reshape(L, L)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"And then we plot the results"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"fig = plt.figure(figsize=(20, 14))\n",
|
||
"im = plt.imshow(J_sk, **cmap_args)\n",
|
||
"plt.title(\"LinearRegression from Scikit-learn\", fontsize=18)\n",
|
||
"plt.xticks(fontsize=18)\n",
|
||
"plt.yticks(fontsize=18)\n",
|
||
"cb = fig.colorbar(im)\n",
|
||
"cb.ax.set_yticklabels(cb.ax.get_yticklabels(), fontsize=18)\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The results perfectly with our previous discussion where we used our own code.\n",
|
||
"\n",
|
||
"## Ridge regression\n",
|
||
"\n",
|
||
"Having explored the ordinary least squares we move on to ridge\n",
|
||
"regression. In ridge regression we include a **regularizer**. This\n",
|
||
"involves a new cost function which leads to a new estimate for the\n",
|
||
"weights $\\boldsymbol{\\beta}$. This results in a penalized regression problem. The\n",
|
||
"cost function is given by"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"1\n",
|
||
"3\n",
|
||
"6\n",
|
||
" \n",
|
||
"<\n",
|
||
"<\n",
|
||
"<\n",
|
||
"!\n",
|
||
"!\n",
|
||
"M\n",
|
||
"A\n",
|
||
"T\n",
|
||
"H\n",
|
||
"_\n",
|
||
"B\n",
|
||
"L\n",
|
||
"O\n",
|
||
"C\n",
|
||
"K"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"_lambda = 0.1\n",
|
||
"clf_ridge = skl.Ridge(alpha=_lambda).fit(X_train, y_train)\n",
|
||
"J_ridge_sk = clf_ridge.coef_.reshape(L, L)\n",
|
||
"fig = plt.figure(figsize=(20, 14))\n",
|
||
"im = plt.imshow(J_ridge_sk, **cmap_args)\n",
|
||
"plt.title(\"Ridge from Scikit-learn\", fontsize=18)\n",
|
||
"plt.xticks(fontsize=18)\n",
|
||
"plt.yticks(fontsize=18)\n",
|
||
"cb = fig.colorbar(im)\n",
|
||
"cb.ax.set_yticklabels(cb.ax.get_yticklabels(), fontsize=18)\n",
|
||
"\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## LASSO regression\n",
|
||
"\n",
|
||
"In the **Least Absolute Shrinkage and Selection Operator** (LASSO)-method we get a third cost function."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- Equation labels as ordinary links -->\n",
|
||
"<div id=\"_auto13\"></div>\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{equation}\n",
|
||
" C(\\boldsymbol{X}, \\boldsymbol{\\beta}; \\lambda) = (\\boldsymbol{X}\\boldsymbol{\\beta} - \\boldsymbol{y})^T(\\boldsymbol{X}\\boldsymbol{\\beta} - \\boldsymbol{y}) + \\lambda \\sqrt{\\boldsymbol{\\beta}^T\\boldsymbol{\\beta}}.\n",
|
||
"\\label{_auto13} \\tag{13}\n",
|
||
"\\end{equation}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Finding the extremal point of this cost function is not so straight-forward as in least squares and ridge. We will therefore rely solely on the function ``Lasso`` from **Scikit-Learn**."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"clf_lasso = skl.Lasso(alpha=_lambda).fit(X_train, y_train)\n",
|
||
"J_lasso_sk = clf_lasso.coef_.reshape(L, L)\n",
|
||
"fig = plt.figure(figsize=(20, 14))\n",
|
||
"im = plt.imshow(J_lasso_sk, **cmap_args)\n",
|
||
"plt.title(\"Lasso from Scikit-learn\", fontsize=18)\n",
|
||
"plt.xticks(fontsize=18)\n",
|
||
"plt.yticks(fontsize=18)\n",
|
||
"cb = fig.colorbar(im)\n",
|
||
"cb.ax.set_yticklabels(cb.ax.get_yticklabels(), fontsize=18)\n",
|
||
"\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"It is quite striking how LASSO breaks the symmetry of the coupling\n",
|
||
"constant as opposed to ridge and OLS. We get a sparse solution with\n",
|
||
"$J_{j, j + 1} = -1$.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Performance as function of the regularization parameter\n",
|
||
"\n",
|
||
"We see how the different models perform for a different set of values for $\\lambda$."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"lambdas = np.logspace(-4, 5, 10)\n",
|
||
"\n",
|
||
"train_errors = {\n",
|
||
" \"ols_sk\": np.zeros(lambdas.size),\n",
|
||
" \"ridge_sk\": np.zeros(lambdas.size),\n",
|
||
" \"lasso_sk\": np.zeros(lambdas.size)\n",
|
||
"}\n",
|
||
"\n",
|
||
"test_errors = {\n",
|
||
" \"ols_sk\": np.zeros(lambdas.size),\n",
|
||
" \"ridge_sk\": np.zeros(lambdas.size),\n",
|
||
" \"lasso_sk\": np.zeros(lambdas.size)\n",
|
||
"}\n",
|
||
"\n",
|
||
"plot_counter = 1\n",
|
||
"\n",
|
||
"fig = plt.figure(figsize=(32, 54))\n",
|
||
"\n",
|
||
"for i, _lambda in enumerate(tqdm.tqdm(lambdas)):\n",
|
||
" for key, method in zip(\n",
|
||
" [\"ols_sk\", \"ridge_sk\", \"lasso_sk\"],\n",
|
||
" [skl.LinearRegression(), skl.Ridge(alpha=_lambda), skl.Lasso(alpha=_lambda)]\n",
|
||
" ):\n",
|
||
" method = method.fit(X_train, y_train)\n",
|
||
"\n",
|
||
" train_errors[key][i] = method.score(X_train, y_train)\n",
|
||
" test_errors[key][i] = method.score(X_test, y_test)\n",
|
||
"\n",
|
||
" omega = method.coef_.reshape(L, L)\n",
|
||
"\n",
|
||
" plt.subplot(10, 5, plot_counter)\n",
|
||
" plt.imshow(omega, **cmap_args)\n",
|
||
" plt.title(r\"%s, $\\lambda = %.4f$\" % (key, _lambda))\n",
|
||
" plot_counter += 1\n",
|
||
"\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We see that LASSO reaches a good solution for low\n",
|
||
"values of $\\lambda$, but will \"wither\" when we increase $\\lambda$ too\n",
|
||
"much. Ridge is more stable over a larger range of values for\n",
|
||
"$\\lambda$, but eventually also fades away.\n",
|
||
"\n",
|
||
"## Finding the optimal value of $\\lambda$\n",
|
||
"\n",
|
||
"To determine which value of $\\lambda$ is best we plot the accuracy of\n",
|
||
"the models when predicting the training and the testing set. We expect\n",
|
||
"the accuracy of the training set to be quite good, but if the accuracy\n",
|
||
"of the testing set is much lower this tells us that we might be\n",
|
||
"subject to an overfit model. The ideal scenario is an accuracy on the\n",
|
||
"testing set that is close to the accuracy of the training set."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"fig = plt.figure(figsize=(20, 14))\n",
|
||
"\n",
|
||
"colors = {\n",
|
||
" \"ols_sk\": \"r\",\n",
|
||
" \"ridge_sk\": \"y\",\n",
|
||
" \"lasso_sk\": \"c\"\n",
|
||
"}\n",
|
||
"\n",
|
||
"for key in train_errors:\n",
|
||
" plt.semilogx(\n",
|
||
" lambdas,\n",
|
||
" train_errors[key],\n",
|
||
" colors[key],\n",
|
||
" label=\"Train {0}\".format(key),\n",
|
||
" linewidth=4.0\n",
|
||
" )\n",
|
||
"\n",
|
||
"for key in test_errors:\n",
|
||
" plt.semilogx(\n",
|
||
" lambdas,\n",
|
||
" test_errors[key],\n",
|
||
" colors[key] + \"--\",\n",
|
||
" label=\"Test {0}\".format(key),\n",
|
||
" linewidth=4.0\n",
|
||
" )\n",
|
||
"plt.legend(loc=\"best\", fontsize=18)\n",
|
||
"plt.xlabel(r\"$\\lambda$\", fontsize=18)\n",
|
||
"plt.ylabel(r\"$R^2$\", fontsize=18)\n",
|
||
"plt.tick_params(labelsize=18)\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"From the above figure we can see that LASSO with $\\lambda = 10^{-2}$\n",
|
||
"achieves a very good accuracy on the test set. This by far surpasses the\n",
|
||
"other models for all values of $\\lambda$."
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
<<<<<<< HEAD
|
||
"version": "3.6.8"
|
||
=======
|
||
"version": "3.8.3"
|
||
>>>>>>> 490fdaaefb7f465badc10b38c531979d063d6c64
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
} |