2495 lines
328 KiB
Plaintext
2495 lines
328 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<!-- dom:TITLE: Week 35: Linear Regression and Review of Statistical Analysis and Probability Theory -->\n",
|
||
"# Week 35: Linear Regression and Review of Statistical Analysis and Probability Theory\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 16, 2020**\n",
|
||
"\n",
|
||
"Copyright 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"## Plans for week 35, August 24-28\n",
|
||
"\n",
|
||
"* Thursday: Introduction to ordinary Least Squares and derivation of basic equation\n",
|
||
"\n",
|
||
"* Friday: Linear regression and statistical analysis and probability theory\n",
|
||
"\n",
|
||
"## Thursday August 27\n",
|
||
"\n",
|
||
"[Video of Lecture](https://www.uio.no/studier/emner/matnat/fys/FYS-STK4155/h20/forelesningsvideoer/LectureAug27.mp4?vrtx=view-as-webpage).\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": [
|
||
{
|
||
"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"
|
||
}
|
||
],
|
||
"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": {
|
||
"image/png": "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r4+mpiZ6enq0ku0lcHcGBwfp6+tj/fr1035eLIfAE4GfUw1fZEkpFAq0t7cr7C+RmdHe3j7jb0qxTMSwMjFLRyN8kaVGYT83ZvPfMZ6BX9YIX0TkTLFMxLC6Hn5WNXwROYfvfOc7mBnPPvvsnLze1772NbZu3cq1117L6173Op544onJbT/4wQ+48sor2bhxI5/85Ccn7//c5z7Hxo0bMTOOHz9+2us9/PDDbNu2jauvvpo3velNc9JGiGHguztereFnNcIXkXPYsWMHr3/969mxY8ecvN769ev58Y9/zFNPPcXHPvYx7r77bgCCIOB3fud3uP/++9m9ezc7duxg9+7dANx000088MADrFu37rTXGh4e5sMf/jDf+973eOaZZ/jGN74xJ22EGM7S8cAJ3HGDOtXwRZasf/iln8/L637xzhsuuH10dJRHHnmEhx56iFtuuYVPfOITPPzww3z84x+ntbWVp556ive///1ce+21fPrTnyafz/Od73yHK664goGBAX77t3+bAwcOAPCnf/qn3HTTTbzuda+bfP0bb7yRvr4+AB577DE2btzIhg0bALj99tv57ne/y5YtW7juuuvO2b6vf/3r3HbbbaxduxaAzs7OS/5vMiF+Q+AAwhDCJGS1eJqInOG73/0uN998M5s3b6a9vZ1du3YB8MQTT/CFL3yBPXv28JWvfIW9e/fy2GOPcdddd/HZz34WgHvuuYePfOQj/PznP+db3/oWd91111mv/8UvfpF3vOMdAPT397NmzZrJbd3d3fT391+wfXv37mVoaIg3v/nNXH/99Xz5y1+eq67HcIRfcUJ3PAm5tM60FVmqLjYSny87duzgnnvuAaIR944dO3j3u9/NDTfcwKpVqwC44ooreNvb3gbAtddey0MPPQTAAw88MFmSARgZGWF0dJTGxkYAHnroIb74xS/yyCOPzLp9lUqFXbt28aMf/Yh8Ps9rX/tabrzxRjZv3jzr15wQv8APqoGfgJxG+CIyxYkTJ3jwwQd56qmnMDOCIMDMeNe73kU2m518XCKRmPw7kUhQqVQACMOQn/3sZ+RyubNe+8knn+Suu+7i/vvvp729HYCuri4OHjw4+Zi+vj66urou2Mbu7m7a29tpaGigoaGBN77xjTzxxBNzEvixS8RyMcAdSBqpZOy6JyKX4Jvf/CYf+tCH2L9/P729vRw8eJD169fzk5/8ZFrPf9vb3jZZ3gF4/PHHAThw4AC33XYbX/nKV04L5htuuIHnn3+el156iVKpxH333cd73vOeC+7j1ltv5ZFHHqFSqTA+Ps6jjz7KVVddNfPOnkPsErFQXRrZUjq5Q0ROt2PHDt773veedt/73ve+ac/W+cxnPsPOnTvZunUrW7Zs4Qtf+AIAf/RHf8Tg4CAf/vCH2bZtG9u3bwcglUrxuc99jre//e1cddVVvP/97+fqq6+efK3u7m76+vrYunXr5PGAq666iptvvpmtW7fy6le/mrvuuotrrrlmTvpv7j4nLzTXtm/f7jt37pzx8468eIoH3vc4YXuSf/Cj1138CSKyYPbs2TNno1U5939PM9vl7tvP9fjYjfCLxeoFzDXCFxE5TfwCvxAdXEmofi8icprYpWKxWsNPpjXCFxGZakED38xuNrPnzOwFM/vofOyjWAgASCjwRUROs2CBb2ZJ4PPAO4AtwAfMbMtc76dYjAI/qTn4IiKnWchUfDXwgrvvc/cScB9w61zvpDwR+GkFvojIVAuZil3AwSl/91Xvm2Rmd5vZTjPbOTAwMKudNGdTNNelaW6c/nUeRaR2JJNJtm3bNvnT29s7ufhZb28vX//61xe5hfNnSS2t4O73AvdCNA9/Nq+xsb2RdEcDjSsa5rRtIhIPdXV1k2fITvjpT38KvBz4H/zgBxehZfNvIQO/H1gz5e/u6n1zK6roYEkdtBVZyp665al5ed1r//raGT+nsbGR0dFRPvrRj7Jnzx62bdvGHXfcwUc+8pF5aOHiWcjA/zmwyczWEwX97cCcf4x69WpXCnwROZd8Ps+2bduA6MIl3/72tye3ffKTn+RTn/oUf/M3f7NIrZtfCxb47l4xs98F/hZIAn/p7s/M+X4qCnyRy8FsRuJz4VwlnVqxoDV8d/8+8P153cfECF9LK4iInCZ2cxcnRvjo2iciMkNNTU2cOnVqsZsxb+IX+Brhi8gsbd26lWQyyStf+Ur+5E/+ZLGbM+eW1LTMuWApI9mSJFmvIb6InG10dPS896XTaR588MGFbtKCiV3gL/vVZSz71WWL3QwRkSUndiUdERE5NwW+iCyopXqVvcvNbP47KvBFZMHkcjkGBwcV+pfI3RkcHCSXy83oebGr4YvI0jVx0e7ZLo4oL8vlcnR3d8/oOQp8EVkw6XSa9evXL3YzapZKOiIiNUKBLyJSIxT4IiI1wpbq0XIzGwD2z+KpHcDxOW7OUqM+Xv7i3j+Ifx+Xav/Wufvyc21YsoE/W2a20923L3Y75pP6ePmLe/8g/n28HPunko6ISI1Q4IuI1Ig4Bv69i92ABaA+Xv7i3j+Ifx8vu/7FroYvIiLnFscRvoiInIMCX0SkRsQq8M3sZjN7zsxeMLOPLnZ75oqZ9ZrZU2b2uJntrN63zMz+zsyer/5uW+x2TpeZ/aWZHTOzp6fcd87+WOQz1ff0STN71eK1fPrO08c/NLP+6vv4uJm9c8q236/28Tkze/vitHr6zGyNmT1kZrvN7Bkzu6d6f2zexwv08fJ9H909Fj9Ely1/EdgAZIAngC2L3a456lsv0HHGff8J+Gj19keBP17sds6gP28EXgU8fbH+AO8E7gcMuBF4dLHbfwl9/EPg987x2C3Vf69ZYH3133Fysftwkf6tAl5Vvd0E7K32Izbv4wX6eNm+j3Ea4b8aeMHd97l7CbgPuHWR2zSfbgX+R/X2/wB+bfGaMjPu/n+AE2fcfb7+3Ap82SM/A1rNbNWCNPQSnKeP53MrcJ+7F939JeAFon/PS5a7H3b3X1RvnwL2AF3E6H28QB/PZ8m/j3EK/C7g4JS/+7jwm3M5ceCHZrbLzO6u3rfC3Q9Xbx8BVixO0+bM+foTt/f1d6sljb+cUoa7rPtoZj3AdcCjxPR9PKOPcJm+j3EK/Dh7vbu/CngH8Dtm9sapGz36Phmb+bVx688Ufw5cAWwDDgP/eVFbMwfMrBH4FvDP3X1k6ra4vI/n6ONl+z7GKfD7gTVT/u6u3nfZc/f+6u9jwLeJviYenfhKXP19bPFaOCfO15/YvK/uftTdA3cPgf/Ky1/3L8s+mlmaKAi/5u5/Vb07Vu/jufp4Ob+PcQr8nwObzGy9mWWA24HvLXKbLpmZNZhZ08Rt4G3A00R9u6P6sDuA7y5OC+fM+frzPeAfVGd53AicnFIyuKycUbN+L9H7CFEfbzezrJmtBzYBjy10+2bCzAz4IrDH3f/LlE2xeR/P18fL+n1c7KPGc/lDNBNgL9HR8X+z2O2Zoz5tIDry/wTwzES/gHbgR8DzwAPAssVu6wz6tIPoq3CZqM75D8/XH6JZHZ+vvqdPAdsXu/2X0MevVPvwJFE4rJry+H9T7eNzwDsWu/3T6N/rico1TwKPV3/eGaf38QJ9vGzfRy2tICJSI+JU0hERkQtQ4IuI1AgFvohIjVDgi4jUCAW+iEiNUOCLiNQIBb6ISI1Q4EtNMLPPmtn+S3yNf2xmbmZXTblvT/Wsytm83n+fsqb642Z2xMymu8KmyIwp8CX2qisd/gqQmVimYpauJTrb8l3V180RrQbZe579vtnMvnS+F3P333L3be6+jegU/Qpw5yW0T+SCFPhSCz4B/HtgN3D1JbzOVuCPqQY+0QUvnvVLPF3dzDqAHwD/zt0v+/WfZOlS4EusmdnVwDXA/yS6gMU153jMT84orUz8/OoZD91CtBhYp5m1EI34n7zE9tUDfw38L3f/i0t5LZGLSS12A0Tm2b8H/sDd3cz2cI4Rvru/4WIvYmZrgEF3z5vZ3wFvJxrxP3WOxz5KdJm7RmCZmT1e3fSv3P1vpzwuSXRltmfd/WMz7pnIDCnwJbbM7DXAzcB1ZvZ5IMe5A/onRNcsPdPvufsD1dvXTnnu94HfILrm6XfOfJK7v6b6um8G7nT3O8/TxD8D0sA/mk5/RC6VAl/i7D8Ct0yEtpmtAH555oOmM8Ln9NH8j4G/AOo4xwfIdJjZx4HrgTe7e2U2ryEyU6rhSyxV6++ZKSN03P0o0Ghmy2bxkpMjfHcvEtXuS+4+PIu29QB/SLR2/CNTjhn8z1m0S2TatB6+iEiN0AhfRKRGKPBFRGqEAl9EpEYo8EVEaoQCX0SkRijwRURqhAJfRKRG/H9MOLeDK17YBAAAAABJRU5ErkJggg==\n",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"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": [
|
||
"0.03787596148305236\n"
|
||
]
|
||
}
|
||
],
|
||
"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",
|
||
"[ 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.946893955211749\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"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",
|
||
"0.9999897970661451\n",
|
||
"Training MSE\n",
|
||
"3.822527046674737\n",
|
||
"Test R2\n",
|
||
"0.9999569750968279\n",
|
||
"Test MSE\n",
|
||
"26.676583003303044\n"
|
||
]
|
||
}
|
||
],
|
||
"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": 12,
|
||
"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": 13,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])"
|
||
]
|
||
},
|
||
"execution_count": 13,
|
||
"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": 14,
|
||
"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": 15,
|
||
"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": 15,
|
||
"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": 16,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/seaborn/distributions.py:2551: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `histplot` (an axes-level function for histograms).\n",
|
||
" warnings.warn(msg, FutureWarning)\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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mG2wfy1EC86D+TgH5uvJObBaLZe9oBq2IRbZ2dnyeDydjz0ejzIzMy+5vba2VpmZmXr77bfV0NCgz372s1q+fLkkafny5WppaQlXVACXsO3AWSUnxGjC8DSzowxqhblJCoYMnanhcw4AIkHYriDPnz9fTz31lOrr6xUXF6ctW7bou9/9buf2vLw8OZ1OFRcXa+bMmdq4caMWLFigO++8U3feeWfn68aNG6eNGzeGKyYQ0QIhyecPXPmFF+F02GXvwz+Bm7wd2n+iTrfMLpDVarnyDui1Cyvqnahs0ui8ZJPTAADCVpCzsrJ03333afXq1fL7/Vq1apWmTJmiNWvW6N5779XkyZO1du1aPfzww2ppadHEiRO1evXqcMUBopLPH9COPy3xfLVmj8+S3dn7L/Edh2sUDBmaPym71++BnklJcCo10clMFgAQIcJWkCVp2bJlWrZsWbfnnn766c7fFxUV6cUXX7zse5SUlIQlG4DL23agSsOyEpTvHjo3vZqpMDdJJyobzY4BABAr6QG4iMraVp2satb8STlmRxkyCnOS5GloV7O3w+woADDkUZABfMz2g2dltVhYHGQAXRiHzDALADBfjwry1772NW3bti3cWQBEgJBhaNuBs5pUmKZklpYeMMOzE2WxiAVDACAC9Kgg33LLLfrxj3+sxYsX62c/+5kaGhrCHAuAWUpOn9O5Zh835w2w2Bi78jLidYIryABguh4V5DvuuEPPPvusfvzjH6uurk6rVq3S/fff321lPACDw7YDZxXntGna6Ayzoww5I3OSdLKySYYx+Bc6AoBI1uMxyKFQSKdPn9apU6cUDAaVnp6uf/qnf9KTTz4ZznwABpCvI6idJR7NLsqM2hXdollhbpJa2wOqaWgzOwoADGk9muZt3bp1eumll1RQUKC7775bP/zhD+VwOOT1erVw4ULde++94c4JYADsKvXI5w8ye4VJRub8ecGQrFSXyWkAYOjqUUGur6/X008/raKiom7Pu1wu/du//VtYggEYeNsOVCkjOVaj81nNzQx57njFOKw6WdmkeRMZAw4AZunREItgMPixcnzhqvF1113X/6kADLjaxjYdOnVO8ydly2phaWkz2KxWjchO4kY9ADDZZa8g/+M//qOqq6tVXFys+vr6zucDgYDKysrCHg7AwHlv/1lJ0nVTGF5hpsKcJL1eXKZA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uwy/32+0tbUZCxcuNA4fPsw5MMm2bduMa665xviHf/gHPpMGWCgUMq677jrD7/d3Psc5GHhnzpwxrrvuOqOqqsro6OgwPvOZzxhvv/12n88DV5CjzLZt2zR37lylpKTI5XJp8eLF2rx5s9mxhoT169frH//xHztXdty3b5+GDx+ugoIC2e12LVu2jHMRZm63Ww888IBiYmLkcDg0atQonTp1ivMwgObMmaNnnnlGdrtddXV1CgaDampq4hyYoKGhQevWrdNXvvIVSXwmDbQTJ05Ikr74xS/qjjvu0LPPPss5MMHWrVu1ZMkSZWdny+FwaN26dYqLi+vzeaAgR5mamhq53e7Ox5mZmaqurjYx0dDxve99T7Nmzep8zLkYeGPGjNG0adMkSadOndLvf/97WSwWzsMAczgcevLJJ3X77bdr3rx5fC2Y5JFHHtF9992npKQkSXwmDbSmpibNmzdPP/rRj/SLX/xCv/71r1VZWck5GGCnT59WMBjUV77yFS1fvlzPP/98v3wtUJCjTCgUksVi6XxsGEa3xxg4nAvzHD16VF/84hf1zW9+UwUFBZwHE9x7773avn27qqqqdOrUKc7BAPvNb36jnJwczZs3r/M5PpMG1vTp0/XEE08oMTFRaWlpWrVqlZ588knOwQALBoPavn27/vmf/1kvvPCC9u3bp7Kysj6fB3t/B0V4ZWdna+fOnZ2PPR5P54/8MbCys7Pl8Xg6H3MuBkZxcbHuvfdePfjgg7r99tv14Ycfch4G0PHjx9XR0aHx48crLi5OixYt0ubNm2Wz2TpfwzkIv1dffVUej0fLly9XY2OjvF6vKioqOA8DaOfOnfL7/Z3/SDEMQ3l5eXweDbCMjAzNmzdPaWlpkqSbb765Xz6TuIIcZebPn6/t27ervr5ebW1t2rJlixYsWGB2rCFp6tSpOnnyZOePd373u99xLsKsqqpKX/3qV7V27VrdfvvtkjgPA628vFwPP/ywOjo61NHRoTfeeEN33XUX52CA/fznP9fvfvc7bdy4Uffee68+8YlP6Kc//SnnYQA1NzfriSeekM/nU0tLi15++WV94xvf4BwMsIULF+qPf/yjmpqaFAwG9e677+rWW2/t83ngCnKUycrK0n333afVq1fL7/dr1apVmjJlitmxhiSn06nvf//7+trXviafz6cbbrhBt956q9mxBrWf/exn8vl8+v73v9/53F133cV5GEA33HCD9u3bpxUrVshms2nRokW6/fbblZaWxjkwGZ9JA2vhwoXau3evVqxYoVAopLvvvlvTp0/nHAywqVOn6ktf+pLuvvtu+f1+XXvttfrMZz6jwsLCPp0Hi2EYRpgyAwAAAFGHIRYAAABAFxRkAAAAoAsKMgAAANAFBRkAAADogoIMAAAAdME0bwAQ4crLy3XTTTdp9uzZevbZZ7tte+CBB/Tyyy9r+/btmjdvnsaOHSurtfu1jx/96EeSpFtuuUVjx46VdH7Vtfj4eK1evVpLlixRWVmZbrvtNr3xxhvKysrqtv+yZct077336pZbbgnjnxIAIgcFGQCigNPp1MmTJ1VRUaG8vDxJktfr1a5du7q97pe//GXnilJdlZeXKzY2Vhs3bux8rqKiQp///Odls9m0ePFizZ8/Xy+99JL+3//7f52v2b17t5qbm/WJT3wiTH8yAIg8DLEAgChgs9l02223adOmTZ3PbdmyRTfddFOv3zMvL0/33nuvfvazn0mSPvvZz+qll15S1+nx169fr7vuuqvbsq0AMNhRkAEgSqxYsaLbFeANGzbok5/8ZLfX3HPPPVq+fHnnr69+9auXfc+ioiKVlpZKkq6//noZhqEPP/xQ0vmldN944w3deeed/fwnAYDIxhALAIgSkyZNks1m04EDB5Senq7W1tbOMcUXXGqIxaVYLBbFxsZKkqxWq+666y799re/1TXXXKNXXnlFN9xwg9LT0/v1zwEAkY6CDABR5I477tArr7yitLQ0LV++vM/vt3///m4l+1Of+pRuvfVWtbS0aP369Xr00Uf7fAwAiDYUZACIIsuXL9edd96plJQUPfPMM316r5MnT+rHP/6xHnrooc7nUlNTtXDhQj355JOy2WyaNm1aHxMDQPShIANAFMnKytKoUaOUmJiolJSUj22/5557PjbN2ze+8Q2NGjVK7e3tnVedrVarnE6nvvGNb+jGG2/s9vq7775bf/EXf6Hvfe974fpjAEBEsxhdb1cGAAAAhjhmsQAAAAC6oCADAAAAXVCQAQAAgC4oyAAAAEAXFGQAAACgCwoyAAAA0AUFGQAAAOiCggwAAAB08f8D+dNPQkWxGbMAAAAASUVORK5CYII=\n",
|
||
"text/plain": [
|
||
"<Figure size 842.4x595.44 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"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": 17,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<AxesSubplot:>"
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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lPhmHY79e4G84M1wUdtPj9V/712u/32DB4/ahN1f/UirZ7QJk5aPZ9V082dKlColwUuDWDltNXFRcWbLvAjP9+pz9cI17j3KtGvTHtp2bm1STqVW8WbNKvQc2o0txzYwd910SpR2B8CthCvvtWvKqO6BFucwvE7d+uTevIYuUp8na99u1C2eatNv3SBpQA8kQ5teHF2Kvk3P+Hw5GV/o21G5iysylRop3Xhk01KtWzfnjz/+5vbtMADWrdtM166dnrnOuHFDiIuLZ/36rw3LmjdviLf3e6xfv6VQcj3L1p176dKhLd4tm73y1xJenVfeObWzs6N69eqcO3fOsOy3336jceOX/0ZetmxZevfuzTfffINMJqNTp07s3bvX8Pyff/6Jk5MTb775ZqFkB3At6cbDyCff/uKjHmLnaIeNmREiba6WBt6erDv9JTU83+L49qMA3Lhwg/c6t0ShVGBta00jn8Y4uztblEfm5o7u4ZOGWRcfh8zOHmxsnwqjRdWgKU5rt6OsXpucnw4AoChZBrlTMexDFuCw5AusP+pbaA2Ze6nixEY+yRYXFYe9oz229rYmZcctCGDPlr3cvnrHaPmB7w6RmpzKrj+28f1f23lw9wGnjvxuUR5lyeJoop68d5rohygc7JDbGb93MTNWk7L3hMn6ybuOok1OpfLJr6j86xY04VGk/XTWoix5FS9VnId5cj18Rp0aMW8E+7/ez92rd02e02l1jFs2jtVHVnPx94s8uP2gwNkAYpIz8HB68p6VcLQlLVtDenauSdnE9Cy++u0a43zqFsprP83NzPFn+4zjr763J2tOb6CG51v8tF0/Inli+3HSk9P4/OyXrD23kejwKP44ds5k/RehKFEcbcyTOq6NjUNub4/M7sn+0kbFkPXbGcPjYgFDyPzld8jNBYWCrLN/EjcymNiBo7FuWA/7jztZlCWvorafHitutk2wM9smjJk/mh+37DNpEx7z7dqO+Jh4fj34W4EyuZd2JyZPpth82im3Eq788duffD7/C3q2+pTLf15hwZezAXgYE09w/yncu3O/QFkA5MXd0cXFGh7rHsYht7NHZq5Nb9gU503bUb1Vm+yj+588p9NiP24SxVZ9iebSBbQP7hU4F0CZMqW4fz/K8Pj+/SicnBxxcLA3W97V1ZlRowYSFPRkhLlkyRIsWjSNvn1HodXqCiXX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\n",
|
||
"text/plain": [
|
||
"<Figure size 842.4x595.44 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"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": 18,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAABI4AAAFNCAYAAABmLyQkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAACBY0lEQVR4nO39fXxU9Z03/r/OzOROkhSIYSMFXTeKkSwoy9VtU9AARSRCkKJ7Ve0DsGzV/uhK114XW/Tq3e52W5T2S6su12NLBcFeUrVFMalgoWiqIVurotiEm5r1jsVgjNBwk0wyM+f3RzzDzJlzP+d2zuv5F0xmznzOmZlz3p/3+XzeH0EURRFEREREREREREQyEa8bQERERERERERE/sTEERERERERERERKWLiiIiIiIiIiIiIFDFxREREREREREREipg4IiIiIiIiIiIiRUwcERERERERERGRopjXDSCiwnX06FE0Nzdj//79OX/buHEjWltbIYoiUqkUrrrqKtx1110YHBzE0qVLAQBnz57F8ePHcfHFFwMAPvvZz+Ib3/gGhoeHMXv2bNTV1eFnP/sZAOCnP/0pfv3rXwMA3n33XYwZMwYVFRUAgAceeAAXXnihG7tMRERE5HuXXXYZJk2ahEgkAkEQMDAwgPLycnz3u9/FlClTsH37dtx999346le/ilWrVqVfJ4oi5s6di7KyMrS2tnq4B0TkJiaOiMh1O3fuxJ49e/DYY4+htLQU8Xgcq1atwoMPPoivf/3r2LFjBwDg97//Pf71X/81/X/J7t27UVdXhz/+8Y/o7u5GbW0tbr/9dtx+++0AgKVLl+KLX/wi5s+f7/q+EREREQXBli1bMHbs2PT/H3roIXzve9/DY489BgAYP348nn766azE0csvv4zBwUGUlZW53l4i8g6nqhGR63p7e5FMJjE4OAgAKCkpwbe+9S3MnTvX0Ou3bduGz33uc7juuuuwZcsWJ5tKREREVPASiQTef/99fOITn0g/NmnSJJx33nl49dVX0489+eSTWLRokRdNJCIPMXFERK77/Oc/j8rKSsycORNf+MIXsHbtWrz//vuYOnWq7mvffPNN7N+/H/Pnz8fixYuxY8cOnDhxwoVWExERERWO5cuXo7m5GTNnzsS1114LAPjBD36Q9Rwp1gKAgYEBvPLKK7jqqqtcbysReYuJIyJyXUVFBTZt2oSdO3fixhtvRF9fH26//XasW7dO97Xbtm3D7NmzMWbMGEydOhUTJkzA448/7kKriYiIiArHli1b0NLSgv/4j//A4OAgPv3pT6OqqirrOc3Nzdi9ezeGhoawe/duzJkzB9Fo1KMWE5FXmDgiItdt3LgRr776KiZOnIi/+7u/w7p167Bx40Y8+uijmq87e/YsduzYgVdeeQVz5szBnDlz0Nvbi5///OcYHh52qfVEREREhaO+vh5333031qxZg6NHj2b9rbq6GpMnT8bvfvc7PPXUU/j85z/vUSuJyEtMHBGR6wYHB/GjH/0IJ0+eTD925MgRTJ48WfN1LS0tGD16NF544QXs3bsXe/fuxZ49e3D27Fns2rXL4VYTERERFaaFCxdi6tSpOVPVgJHpaps3b8apU6cwadIkD1pHRF7jqmpE5KizZ89i2rRpWY9t27YNgiDgpptugiAISKVS+Ou//mv8+Mc/1tzWtm3b8KUvfSlriHRlZSWWLl2Khx9+GM3NzU7sAhEREVHB+9a3voVFixbhhRdeyHp87ty5+M53voO77rrLo5YRkdcEURRFrxtBRERERERERET+w6lqRERERERERESkiIkjIiIiIiIiIiJSxMQREREREREREREpYuKIiIiIiIiIiIgUMXFERERERERERESKmDgiIiIiIiIiIiJFMa8bYEVf32mvm+CZqqry0O5/mPcdCPf+h3nfAe5/mPc/bPseiQgYM2aU180gFSdOnEEqJXrdDFeF7TfoNh5fZ/H4Oo/H2Fk8vs7KPL56MVggE0dhC1rkwrz/Yd53INz7H+Z9B7j/Yd7/MO87+UsqJYby+xjGfXYTj6+zeHydx2PsLB5fZxk9vpyqRkREREREREREipg4IiIiIiIiIiIiRUwcERERERERERGRIiaOiIiIiIiIiIhIERNHRERERERERESkiIkjIiIiIiIiIiJSFHNy40uXLsVHH32EWGzkbf7lX/4FZ86cwQ9+8APE43E0NTXhrrvucrIJujo6e7C9rRt9/XFEBCAlAlWVJVjSWIuG+hrd127ddRDxYeUl7EaVRnHLNZfhzaMn0fbaMaREICIAjVeOx9Jr60y3paOzB0+92IHeEwOG22iHzHbl875627HrfYiIiMIsCPEXhY9SnLdoVoXXzQoMr+LkoMTnXrTTq76ZWW4em8z3GlUahSAI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pIiJIyIiIiIiIiIiUsTEERERERERERERKWLiiIiIiIiIiIiIFDFxREREREREREREimJeN8CKSETwugmeCvP+h3nfgXDvf5j3HeD+h3n/w7TvYdrXIArr5xPW/XYLj6+zeHydx2PsLB5fZ0nHV+84C6Ioim40iIiIiIiIiIiIgoVT1YiIiIiIiIiISBETR0REREREREREpIiJIyIiIiIiIiIiUsTEERERERERERERKWLiiIiIiIiIiIiIFDFxREREREREREREipg4IiIiIiIiIiIiRUwcERERERERERGRIiaOiIiIiIiIiIhIUWASRy0tLbjuuuswb948/L//9/+8bo7rli5digULFuD666/H9ddfj9dff93rJjnu9OnTWLhwIY4ePQoA2LdvH5qbmzFv3jysX7/e49Y5T77/d999N+bNm5f+DuzevdvjFjrnwQcfxIIFC7BgwQLcd999AMLz+Svte5g++5/85Ce47rrrsGDBAmzevBlAeD57QHn/w/T5E/nNvffeizVr1njdjIITxrjWbXv37sWSJUvQ1NSE733ve143p6A88cQT6e/u9ddfj+nTp+Nf/uVfvG5WQdmxY0c6Hr733nu9bk5B+ulPf4prr70Wzc3N+L//9//qv0AMgJ6eHnH27NniiRMnxDNnzojNzc3in/70J6+b5ZpUKiXOnDlTHB4e9roprnnttdfEhQsXivX19eJ7770nDgwMiI2NjeK7774rDg8PiytWrBCff/55r5vpGPn+i6IoLly4UDx+/LjHLXNee3u7+IUvfEGMx+Pi0NCQuGzZMrGlpSUUn7/Svv/mN78JzWf/+9//XrzpppvE4eFhcWBgQJw9e7Z48ODBUHz2oqi8/93d3aH5/In8Zt++feKnP/1p8Rvf+IbXTSkoYYxr3fbuu++KM2fOFN9//31xaGhIvPnmmwv22um1I0eOiNdcc43Y19fndVMKxtmzZ8VPfepTYl9fnzg8PCzeeOONYnt7u9fNKijt7e3iwoULxVOnTomJREK84447xGeffVbzNYEYcbRv3z585jOfwejRo3Heeefh2muvxa5du7xulmv+67/+CwCwYsUKLFq0CD//+c89bpHzHn/8cXznO9/BuHHjAAAHDhzARRddhIkTJyIWi6G5ubmgvwPy/R8YGMCxY8dwzz33oLm5Gffffz9SqZTHrXRGdXU11qxZg+LiYhQVFaG2thZvv/12KD5/pX0/duxYaD77v/3bv8XWrVsRi8XQ19eHZDKJ/v7+UHz2gPL+l5aWhubzJ/KTkydPYv369fjKV77idVMKThjjWrft3r0b1113HWpqalBUVIT169fjiiuu8LpZBem73/0u7rrrLowdO9brphSMZDKJVCqFgYEBJBIJJBIJlJSUeN2sgtLV1YWZM2eivLwc0WgUV111Ffbs2aP5mkAkjj744ANUV1en/z9u3DgcP37cwxa5q7+/Hw0NDfj3f/93PPzww/jFL36B9vZ2r5vlqH/7t3/D//gf/yP9/7B9B+T7/+GHH+Izn/kMvv/97+Pxxx/Hyy+/jF/+8pcettA5l156Ka688koAwNtvv42dO3dCEIRQfP5K+37VVVeF5rMHgKKiItx///1YsGABGhoaQvfbl+9/IpEI1edP5Bff/va3cdddd6GystLrphScMMa1bnvnnXeQTCbxla98Bddffz0effRRfOITn/C6WQVn3759GBwcRFNTk9dNKSjl5eX42te+hqamJjQ2NuKTn/wk/uZv/sbrZhWU+vp6vPjiizh58iTi8Tj27t2LDz/8UPM1gUgcpVIpCIKQ/r8oiln/L3TTpk3Dfffdh4qKCowdOxY33ngj2travG6Wq8L+HZg4cSL+/d//HePGjUNZWRmWLl1a8N+BP/3pT1ixYgX+6Z/+CRMnTgzV55+573/1V38Vus9+1apV6OjowPvvv4+33347VJ89kL3/HR0dofv8ibz2xBNP4IILLkBDQ4PXTSlIjGudl0wm0dHRge9///t47LHHcODAATz55JNeN6vg/OIXv8CXvvQlr5tRcA4dOoRf/epXeO655/DCCy8gEongoYce8rpZBaWhoQFLlizB0qVL8eUvfxnTp09HUVGR5msCkTiqqalBb29v+v+9vb3pKTxh8PLLL6OjoyP9f1EUEYvFPGyR+8L+HTh8+DCeffbZ9P8L/Tvwyiuv4NZbb8X/+l//C5///OdD9fnL9z1Mn313dzcOHjwIACgrK8O8efPw+9//PjSfvdL+P/PMM6H5/In84plnnkF7ezuuv/563H///di7dy++//3ve92sgsG41nnnn38+GhoaMHbsWJSWlmLu3Lk4cOCA180qKENDQ/jDH/6AOXPmeN2UgvPiiy+ioaEBVVVVKC4uxpIlS/DSSy953ayCcvr0acybNw8tLS145JFHUFxcjIkTJ2q+JhCJo89+9rPo6OjARx99hIGBAfzmN7/B1Vdf7XWzXHPq1Cncd999iMfjOH36NJ588klcc801XjfLVVdccQXeeuut9NDb1tbWUH0HRFHE97//ffz5z3/G8PAwHnvssYL9Drz//vv46le/ih/+8IdYsGABgPB8/kr7HqbP/ujRo/jmN7+JoaEhDA0N4be//S1uuummUHz2gPL+f+pTnwrN50/kF5s3b0Zrayt27NiBVatWYc6cObjnnnu8blbBYFzrvNmzZ+PFF19Ef38/kskkXnjhBdTX13vdrIJy+PBh/OVf/iXOO+88r5tScOrq6rBv3z6cPXsWoihi7969mDJlitfNKihHjx7FypUrkUgkcOrUKfzyl7/UnXIZiPT+X/zFX+Cuu+7CsmXLMDw8jBtvvBFTp071ulmumT17Nl5//XUsXrwYqVQKt9xyC6ZNm+Z1s1xVUlKCtWvX4s4770Q8HkdjYyPmz5/vdbNcU1dXh9tvvx0333wzEokE5s2bh4ULF3rdLEc89NBDiMfjWLt2bfqxm266KRSfv9q+h+Wzb2xsxIEDB7B48WJEo1HMmzcPCxYswNixYwv+sweU9/8f/uEfMGbMmFB8/kQUDoxrnXfFFVfgy1/+Mm655RYMDw9jxowZuOGGG7xuVkF57733UFNT43UzCtLMmTPR1dWFJUuWoKioCFOmTMHtt9/udbMKSl1dHebNm4dFixYhmUzi1ltvxfTp0zVfI4iiKLrUPiIiIiIiIiIiCpBATFUjIiIiIiIiIiL3MXFERERERERERESKmDgiIiIiIiIiIiJFTBwREREREREREZEiJo6IiIiIiIiIiEhRzOsGEFHhOnr0KJqbm7F///6cv23cuBGtra0QRRGpVApXXXUV7rrrLgwODmLp0qUAgLNnz+L48eO4+OKLAQCf/exn8Y1vfAPDw8OYPXs26urq8LOf/QwA8NOf/hS//vWvAQDvvvsuxowZg4qKCgDAAw88gAsvvNCNXSYiIiLyvcsuuwyTJk1CJBKBIAgYGBhAeXk5vvvd72LKlCnYvn077r77bnz1q1/FqlWr0q8TRRFz585FWVkZWltbPdwDInITE0dE5LqdO3diz549eOyxx1BaWop4PI5Vq1bhwQcfxNe//nXs2LEDAPD73/8e//qv/5r+v2T37t2oq6vDH//4R3R3d6O2tha33347br/9dgDA0qVL8cUvfhHz5893fd+IiIiIgmDLli0YO3Zs+v8PPfQQvve97+Gxxx4DAIwfPx5PP/10VuLo5ZdfxuDgIMrKylxvLxF5h1PViMh1vb29SCaTGBwcBACUlJTgW9/6FubOnWvo9du2bcPnPvc5XHfdddiyZYuTTSUiIiIqeIlEAu+//z4+8YlPpB+bNGkSzjvvPLz66qvpx5588kksWrTIiyYSkYeYOCIi133+859HZWUlZs6ciS984QtYu3Yt3n//fUydOlX3tW+++Sb279+P+fPnY/HixdixYwdOnDjhQquJiIiICsfy5cvR3NyMmTNn4tprrwUA/OAHP8h6jhRrAcDAwABeeeUVXHXVVa63lYi8xcQREbmuoqICmzZtws6dO3HjjTeir68Pt99+O9atW6f72m3btmH27NkYM2YMpk6digkTJuDxxx93odVEREREhWPLli1oaWnBf/zHf2BwcBCf/vSnUVVVlfWc5uZm7N69G0NDQ9i9ezfmzJmDaDTqUYuJyCtMHBGR6zZu3IhXX30VEydOxN/93d9h3bp12LhxIx599FHN1509exY7duzAK6+8gjlz5mDOnDno7e3Fz3/+cwwPD7vUeiIiIqLCUV9fj7vvvhtr1qzB0aNHs/5WXV2NyZMn43e/+x2eeuopfP7zn/eolUTkJSaOiMh1g4OD+NGPfoSTJ0+mHzty5AgmT56s+bqWlhaMHj0aL7zwAvbu3Yu9e/diz549OHv2LHbt2uVwq4mIiIgK08KFCzF16tScqWrAyHS1zZs349SpU5g0aZIHrSMir3FVNSJy1NmzZzFt2rSsx7Zt2wZBEHDTTTdBEASkUin89V//NX784x9rbmvbtm340pe+lDVEurKyEkuXLsXDDz+M5uZmJ3aBiIiIqOB961vfwqJFi/DCCy9kPT537lx85zvfwV133eVRy4jIa4IoiqLXjSAiIiIiIiIiIv/hVDUiIiIiIiIiIlLExBERERERERERESli4oiIiIiIiIiIiBQxcURERERERERERIqYOCIiIiIiIiIiIkVMHBERERERERERkSImjoiIiIiIiIiISBETR0REREREREREpOj/DwHz0AG9lvdyAAAAAElFTkSuQmCC\n",
|
||
"text/plain": [
|
||
"<Figure size 1440x360 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"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": 19,
|
||
"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": 20,
|
||
"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": 21,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"The model performance for training set\n",
|
||
"--------------------------------------\n",
|
||
"RMSE is 5.637129335071195\n",
|
||
"R2 score is 0.6300745149331701\n",
|
||
"\n",
|
||
"\n",
|
||
"The model performance for testing set\n",
|
||
"--------------------------------------\n",
|
||
"RMSE is 5.137400784702912\n",
|
||
"R2 score is 0.6628996975186952\n"
|
||
]
|
||
}
|
||
],
|
||
"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": 22,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 842.4x595.44 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"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": 23,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"MSE before scaling: 0.00\n",
|
||
"R2 score before scaling 0.98\n",
|
||
"Feature min values before scaling:\n",
|
||
" [1.00000000e+00 1.37681363e-03 8.30502291e-03 1.89561576e-06\n",
|
||
" 1.14344687e-05 6.89734055e-05 2.60990961e-09 1.57431323e-08\n",
|
||
" 9.49635245e-08 5.72825712e-07 3.59335912e-12 2.16753591e-11\n",
|
||
" 1.30747075e-10 7.88674246e-10 4.75733066e-09 4.94738580e-15\n",
|
||
" 2.98429298e-14 1.80014354e-13 1.08585745e-12 6.54995768e-12\n",
|
||
" 3.95097401e-11]\n",
|
||
"Feature max values before scaling:\n",
|
||
" [1. 0.9998416 0.99878544 0.99968323 0.99862723 0.99757235\n",
|
||
" 0.99952489 0.99846905 0.99741434 0.99636073 0.99936656 0.9983109\n",
|
||
" 0.99725635 0.99620291 0.99515059 0.99920827 0.99815277 0.99709839\n",
|
||
" 0.99604512 0.99499296 0.99394192]\n",
|
||
"Feature min values after scaling:\n",
|
||
" [ 0. -1.78672171 -1.78021729 -1.15782516 -1.16208867 -1.16637426\n",
|
||
" -0.91368993 -0.91588194 -0.91811877 -0.92040187 -0.77756647 -0.77883586\n",
|
||
" -0.78011562 -0.78140675 -0.78271028 -0.68829823 -0.68913126 -0.68996149\n",
|
||
" -0.69078936 -0.69161535 -0.69243996]\n",
|
||
"Feature max values after scaling:\n",
|
||
" [0. 1.67565551 1.68450811 2.14864012 2.15725612 2.16562629\n",
|
||
" 2.52852547 2.53862393 2.54855228 2.55830668 2.85442482 2.86565096\n",
|
||
" 2.87672725 2.88765162 2.89842198 3.14382597 3.15614134 3.16831249\n",
|
||
" 3.1803377 3.19221526 3.20394346]\n",
|
||
"MSE after scaling: 0.00\n",
|
||
"R2 score for scaled data: 0.98\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": [
|
||
"## Friday August 28\n",
|
||
"\n",
|
||
"[Video of Lecture](https://www.uio.no/studier/emner/matnat/fys/FYS-STK4155/h20/forelesningsvideoer/LectureAug28.mp4?vrtx=view-as-webpage) and [handwritten notes](https://github.com/CompPhysics/MachineLearning/blob/master/doc/HandWrittenNotes/NotesAugust28.pdf)\n",
|
||
"\n",
|
||
"More material will be added here, see handwritten notes also."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.8.5"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|