From 7150df551406f055cea8fee5446fd6a5fa7ee32d Mon Sep 17 00:00:00 2001 From: mhjensen Date: Tue, 1 Sep 2020 06:33:33 +0200 Subject: [PATCH] typo in latex variant of hw2 --- doc/Projects/2020/hw2/pdf/hw2.p.tex | 742 ++++++++++++++++++++++++++++ doc/Projects/2020/hw2/pdf/hw2.pdf | Bin 0 -> 253499 bytes doc/Projects/2020/hw2/pdf/hw2.tex | 710 ++++++++++++++++++++++++++ doc/Projects/2020/hw2/pdf/hw2.tex~ | 710 ++++++++++++++++++++++++++ 4 files changed, 2162 insertions(+) create mode 100644 doc/Projects/2020/hw2/pdf/hw2.p.tex create mode 100644 doc/Projects/2020/hw2/pdf/hw2.pdf create mode 100644 doc/Projects/2020/hw2/pdf/hw2.tex create mode 100644 doc/Projects/2020/hw2/pdf/hw2.tex~ diff --git a/doc/Projects/2020/hw2/pdf/hw2.p.tex b/doc/Projects/2020/hw2/pdf/hw2.p.tex new file mode 100644 index 000000000..85004d1d1 --- /dev/null +++ b/doc/Projects/2020/hw2/pdf/hw2.p.tex @@ -0,0 +1,742 @@ +%% +%% Automatically generated file from DocOnce source +%% (https://github.com/hplgit/doconce/) +%% +%% +% #ifdef PTEX2TEX_EXPLANATION +%% +%% The file follows the ptex2tex extended LaTeX format, see +%% ptex2tex: http://code.google.com/p/ptex2tex/ +%% +%% Run +%% ptex2tex myfile +%% or +%% doconce ptex2tex myfile +%% +%% to turn myfile.p.tex into an ordinary LaTeX file myfile.tex. +%% (The ptex2tex program: http://code.google.com/p/ptex2tex) +%% Many preprocess options can be added to ptex2tex or doconce ptex2tex +%% +%% ptex2tex -DMINTED myfile +%% doconce ptex2tex myfile envir=minted +%% +%% ptex2tex will typeset code environments according to a global or local +%% .ptex2tex.cfg configure file. doconce ptex2tex will typeset code +%% according to options on the command line (just type doconce ptex2tex to +%% see examples). If doconce ptex2tex has envir=minted, it enables the +%% minted style without needing -DMINTED. +% #endif + +% #define PREAMBLE + +% #ifdef PREAMBLE +%-------------------- begin preamble ---------------------- + +\documentclass[% +oneside, % oneside: electronic viewing, twoside: printing +final, % draft: marks overfull hboxes, figures with paths +10pt]{article} + +\listfiles % print all files needed to compile this document + +\usepackage{relsize,makeidx,color,setspace,amsmath,amsfonts,amssymb} +\usepackage[table]{xcolor} +\usepackage{bm,ltablex,microtype} + +\usepackage[pdftex]{graphicx} + +\usepackage{ptex2tex} +% #ifdef MINTED +\usepackage{minted} +\usemintedstyle{default} +% #endif + +\usepackage[T1]{fontenc} +%\usepackage[latin1]{inputenc} +\usepackage{ucs} +\usepackage[utf8x]{inputenc} + +\usepackage{lmodern} % Latin Modern fonts derived from Computer Modern + +% Hyperlinks in PDF: +\definecolor{linkcolor}{rgb}{0,0,0.4} +\usepackage{hyperref} +\hypersetup{ + breaklinks=true, + colorlinks=true, + linkcolor=linkcolor, + urlcolor=linkcolor, + citecolor=black, + filecolor=black, + %filecolor=blue, + pdfmenubar=true, + pdftoolbar=true, + bookmarksdepth=3 % Uncomment (and tweak) for PDF bookmarks with more levels than the TOC + } +%\hyperbaseurl{} % hyperlinks are relative to this root + +\setcounter{tocdepth}{2} % levels in table of contents + +% --- fancyhdr package for fancy headers --- +\usepackage{fancyhdr} +\fancyhf{} % sets both header and footer to nothing +\renewcommand{\headrulewidth}{0pt} +\fancyfoot[LE,RO]{\thepage} +% Ensure copyright on titlepage (article style) and chapter pages (book style) +\fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[C]{{\footnotesize \copyright\ 1999-2020, "Data Analysis and Machine Learning FYS-STK3155/FYS4155":"http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html". Released under CC Attribution-NonCommercial 4.0 license}} +% \renewcommand{\footrulewidth}{0mm} + \renewcommand{\headrulewidth}{0mm} +} +% Ensure copyright on titlepages with \thispagestyle{empty} +\fancypagestyle{empty}{ + \fancyhf{} + \fancyfoot[C]{{\footnotesize \copyright\ 1999-2020, "Data Analysis and Machine Learning FYS-STK3155/FYS4155":"http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html". Released under CC Attribution-NonCommercial 4.0 license}} + \renewcommand{\footrulewidth}{0mm} + \renewcommand{\headrulewidth}{0mm} +} + +\pagestyle{fancy} + + +% prevent orhpans and widows +\clubpenalty = 10000 +\widowpenalty = 10000 + +\newenvironment{doconceexercise}{}{} +\newcounter{doconceexercisecounter} + + +% ------ header in subexercises ------ +%\newcommand{\subex}[1]{\paragraph{#1}} +%\newcommand{\subex}[1]{\par\vspace{1.7mm}\noindent{\bf #1}\ \ } +\makeatletter +% 1.5ex is the spacing above the header, 0.5em the spacing after subex title +\newcommand\subex{\@startsection{paragraph}{4}{\z@}% + {1.5ex\@plus1ex \@minus.2ex}% + {-0.5em}% + {\normalfont\normalsize\bfseries}} +\makeatother + + +% --- end of standard preamble for documents --- + + +% insert custom LaTeX commands... + +\raggedbottom +\makeindex +\usepackage[totoc]{idxlayout} % for index in the toc +\usepackage[nottoc]{tocbibind} % for references/bibliography in the toc + +%-------------------- end preamble ---------------------- + +\begin{document} + +% matching end for #ifdef PREAMBLE +% #endif + +\newcommand{\exercisesection}[1]{\subsection*{#1}} + + +% ------------------- main content ---------------------- + + + +% ----------------- title ------------------------- + +\thispagestyle{empty} + +\begin{center} +{\LARGE\bf +\begin{spacing}{1.25} +Homework 2, weeks 36 and 37 +\end{spacing} +} +\end{center} + +% ----------------- author(s) ------------------------- + +\begin{center} +{\bf \href{{http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html}}{Data Analysis and Machine Learning FYS-STK3155/FYS4155}} +\end{center} + + \begin{center} +% List of all institutions: +\centerline{{\small Department of Physics, University of Oslo, Norway}} +\end{center} + +% ----------------- end author(s) ------------------------- + +% --- begin date --- +\begin{center} +Sep 1, 2020 +\end{center} +% --- end date --- + +\vspace{1cm} + + +% --- begin exercise --- +\begin{doconceexercise} +\refstepcounter{doconceexercisecounter} + +\exercisesection{Exercise \thedoconceexercisecounter: Adding Ridge and Lasso Regression} + + +This exercise is a continuation of exercise 3 from exercise set 1 (week 35). We will +use the same function to generate our data set, still staying with a +simple function $y(x)$ which we want to fit using linear regression, +but now extending the analysis to include the Ridge and the Lasso +regression methods. You can use the code under the Regression as an example on how to use the Ridge and the Lasso methods, see the \href{{https://compphysics.github.io/MachineLearning/doc/pub/Regression/html/Regression-bs.html}}{regression slides}). + +We will thus again generate our own dataset for a function $y(x)$ where +$x \in [0,1]$ and defined by random numbers computed with the uniform +distribution. The function $y$ is a quadratic polynomial in $x$ with +added stochastic noise according to the normal distribution $\cal{N}(0,1)$. + +The following simple Python instructions define our $x$ and $y$ values (with 100 data points). +\bpycod +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) +\epycod + + +\subex{a)} +Write your own code for the Ridge method (see chapter 3.4 of Hastie \emph{et al.}, equations (3.43) and (3.44)) and compute the parametrization for different values of $\lambda$. Compare and analyze your results with those from exercise 3. Study the dependence on $\lambda$ while also varying the strength of the noise in your expression for $y(x)$. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +The code here allows you to perform your own Ridge calculation and perform calculations for various values of the regularization parameter $\lambda$. This program can easily be extended upon. +\bpycod +import os +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler + +def R2(y_data, y_model): + return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2) +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n + + +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(3155) + +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) + +# number of features p (here degree of polynomial +p = 3 +# The design matrix now as function of a given polynomial +X = np.zeros((len(x),p)) +X[:,0] = 1.0 +X[:,1] = x +X[:,2] = x*x +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# matrix inversion to find beta +OLSbeta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train +print(OLSbeta) +# and then make the prediction +ytildeOLS = X_train @ OLSbeta +print("Training R2 for OLS") +print(R2(y_train,ytildeOLS)) +print("Training MSE for OLS") +print(MSE(y_train,ytildeOLS)) +ypredictOLS = X_test @ OLSbeta +print("Test R2 for OLS") +print(R2(y_test,ypredictOLS)) +print("Test MSE OLS") +print(MSE(y_test,ypredictOLS)) + +# Repeat now for Ridge regression and various values of the regularization parameter +I = np.eye(p,p) +# Decide which values of lambda to use +nlambdas = 20 +MSEPredict = np.zeros(nlambdas) +MSETrain = np.zeros(nlambdas) +lambdas = np.logspace(-4, 1, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + Ridgebeta = np.linalg.inv(X_train.T @ X_train+lmb*I) @ X_train.T @ y_train + # and then make the prediction + ytildeRidge = X_train @ Ridgebeta + ypredictRidge = X_test @ Ridgebeta + MSEPredict[i] = MSE(y_test,ypredictRidge) + MSETrain[i] = MSE(y_train,ytildeRidge) +# Now plot the resulys +plt.figure() +plt.plot(np.log10(lambdas), MSETrain, label = 'MSE Ridge train') +plt.plot(np.log10(lambdas), MSEPredict, 'r--', label = 'MSE Ridge Test') +plt.xlabel('log10(lambda)') +plt.ylabel('MSE') +plt.legend() +plt.show() +\epycod + +% --- end solution of exercise --- + +\subex{b)} +Repeat the above but using the functionality of \textbf{Scikit-Learn}. Compare your code with the results from \textbf{Scikit-Learn}. Remember to run with the same random numbers for generating $x$ and $y$. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +To use \textbf{scikit-learn} with Ridge, we simply need to add the relevant function \textbf{Ridge()}, as done in the code here. +\bpycod +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import sklearn.linear_model as skl + +def R2(y_data, y_model): + return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2) +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n + + +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(3155) + +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) + +# number of features p (here degree of polynomial +p = 3 +# The design matrix now as function of a given polynomial +X = np.zeros((len(x),p)) +X[:,0] = 1.0 +X[:,1] = x +X[:,2] = x*x +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# matrix inversion to find beta +OLSbeta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train +print(OLSbeta) +# and then make the prediction +ytildeOLS = X_train @ OLSbeta +print("Training R2 for OLS") +print(R2(y_train,ytildeOLS)) +print("Training MSE for OLS") +print(MSE(y_train,ytildeOLS)) +ypredictOLS = X_test @ OLSbeta +print("Test R2 for OLS") +print(R2(y_test,ypredictOLS)) +print("Test MSE OLS") +print(MSE(y_test,ypredictOLS)) + +# Repeat now for Ridge regression and various values of the regularization parameter +I = np.eye(p,p) +# Decide which values of lambda to use +nlambdas = 100 +MSEPredict = np.zeros(nlambdas) +MSEPredictSKL = np.zeros(nlambdas) +MSETrain = np.zeros(nlambdas) +lambdas = np.logspace(-4, 0, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + # add ridge + clf_ridge = skl.Ridge(alpha=lmb).fit(X_train, y_train) + yridge = clf_ridge.predict(X_test) + Ridgebeta = np.linalg.inv(X_train.T @ X_train+lmb*I) @ X_train.T @ y_train + # and then make the prediction + ytildeRidge = X_train @ Ridgebeta + ypredictRidge = X_test @ Ridgebeta + MSEPredict[i] = MSE(y_test,ypredictRidge) + MSEPredictSKL[i] = MSE(y_test,yridge) + MSETrain[i] = MSE(y_train,ytildeRidge) +#then plot the results +plt.figure() +plt.plot(np.log10(lambdas), MSETrain, label = 'MSE Ridge train') +plt.plot(np.log10(lambdas), MSEPredict, 'r--', label = 'MSE Ridge Test') +plt.plot(np.log10(lambdas), MSEPredictSKL, 'g--', label = 'MSE Ridge sickit-learn Test') +plt.xlabel('log10(lambda)') +plt.ylabel('MSE') +plt.legend() +plt.show() +\epycod + +% --- end solution of exercise --- + +\subex{c)} +Our next step is to study the variance of the parameters $\beta_1$ and $\beta_2$ (assuming that we are parameterizing our function with a second-order polynomial). We will use standard linear regression and the Ridge regression. You can now opt for either writing your own function or using \textbf{Scikit-Learn} to find the parameters $\beta$. From your results calculate the variance of these parameters (recall that this is equal to the diagonal elements of the matrix $(\hat{X}^T\hat{X})+\lambda\hat{I})^{-1}$). Discuss the results of these variances as functions of $\lambda$. In particular, try to link your discussion with the discussion in Hastie \emph{et al.} and their figures 3.10 and 3.11. \textbf{Scikit-Learn} may not provide the variance of the parameters $\beta$. This needs to be checked. With your own code you can however do so. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +\bpycod +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import sklearn.linear_model as skl + +def R2(y_data, y_model): + return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2) +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n + + +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(3155) + +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) + +# number of features p (here degree of polynomial +p = 3 +# The design matrix now as function of a given polynomial +X = np.zeros((len(x),p)) +X[:,0] = 1.0 +X[:,1] = x +X[:,2] = x*x +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# matrix inversion to find beta +OLSbeta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train +print(OLSbeta) +# The variance is given by the inverse of the matrix X^TX +print(np.linalg.inv(X_train.T @ X_train)) + +# Repeat now for Ridge regression and various values of the regularization parameter +I = np.eye(p,p) +# Decide which values of lambda to use +nlambdas = 10 +MSEPredict = np.zeros(nlambdas) +MSEPredictSKL = np.zeros(nlambdas) +MSETrain = np.zeros(nlambdas) +lambdas = np.logspace(-4, 0, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + Ridgebeta = np.linalg.inv(X_train.T @ X_train+lmb*I) @ X_train.T @ y_train + print(np.linalg.inv(X_train.T @ X_train+lmb*I)) + + + +\epycod + +% --- end solution of exercise --- + +\subex{d)} +Repeat the previous step but add now the Lasso method, see equation (3.53) of Hastie \emph{et al.}. Discuss your results and compare with standard regression and the Ridge regression results. You can write your own code or use the functionality of \textbf{scikit-learn}. We recommend the latter since we have not yet discussed how to solve the Lasso equations numerically. Also, you do not need to compute the variance of the parameters $\beta$ but you can extract their values and study their behavior as functions of the regularization parameter $\lambda$. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +\bpycod +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import sklearn.linear_model as skl +#from sklearn.linear_model import LinearRegression, Ridge, Lasso +def R2(y_data, y_model): + return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2) +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n + + +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(3155) + +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) + +# number of features p (here degree of polynomial +p = 3 +# The design matrix now as function of a given polynomial +X = np.zeros((len(x),p)) +X[:,0] = 1.0 +X[:,1] = x +X[:,2] = x*x +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# matrix inversion to find beta +OLSbeta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train +print(OLSbeta) +# and then make the prediction +ytildeOLS = X_train @ OLSbeta +print("Training R2 for OLS") +print(R2(y_train,ytildeOLS)) +print("Training MSE for OLS") +print(MSE(y_train,ytildeOLS)) +ypredictOLS = X_test @ OLSbeta +print("Test R2 for OLS") +print(R2(y_test,ypredictOLS)) +print("Test MSE OLS") +print(MSE(y_test,ypredictOLS)) + +# Repeat now for Ridge regression and various values of the regularization parameter +I = np.eye(p,p) +# Decide which values of lambda to use +nlambdas = 100 +MSEPredictLasso = np.zeros(nlambdas) +MSEPredictRidge = np.zeros(nlambdas) +lambdas = np.logspace(-4, 0, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + # add ridge + clf_ridge = skl.Ridge(alpha=lmb).fit(X_train, y_train) + clf_lasso = skl.Lasso(alpha=lmb).fit(X_train, y_train) + yridge = clf_ridge.predict(X_test) + ylasso = clf_lasso.predict(X_test) + MSEPredictLasso[i] = MSE(y_test,ylasso) + MSEPredictRidge[i] = MSE(y_test,yridge) +#then plot the results +plt.figure() +plt.plot(np.log10(lambdas), MSEPredictRidge, 'r--', label = 'MSE Ridge Test') +plt.plot(np.log10(lambdas), MSEPredictLasso, 'g--', label = 'MSE Lasso Test') +plt.xlabel('log10(lambda)') +plt.ylabel('MSE') +plt.legend() +plt.show() +\epycod + +% --- end solution of exercise --- + +\subex{e)} +Finally, using \textbf{Scikit-Learn} or your own code, compute also the mean square error, a risk metric corresponding to the expected value of the squared (quadratic) error defined as +\[ MSE(\hat{y},\hat{\tilde{y}}) = \frac{1}{n} +\sum_{i=0}^{n-1}(y_i-\tilde{y}_i)^2, +\] +and the $R^2$ score function. +If $\tilde{\hat{y}}_i$ is the predicted value of the $i-th$ sample and $y_i$ is the corresponding true value, then the score $R^2$ is defined as +\[ +R^2(\hat{y}, \tilde{\hat{y}}) = 1 - \frac{\sum_{i=0}^{n - 1} (y_i - \tilde{y}_i)^2}{\sum_{i=0}^{n - 1} (y_i - \bar{y})^2}, +\] +where we have defined the mean value of $\hat{y}$ as +\[ +\bar{y} = \frac{1}{n} \sum_{i=0}^{n - 1} y_i. +\] +Discuss these quantities as functions of the variable $\lambda$ in the Ridge and Lasso regression methods. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +These results can all be studied with the codes we have above. These scores are included in the codes above. + +% --- end solution of exercise --- + + +\end{doconceexercise} +% --- end exercise --- + + + + +% --- begin exercise --- +\begin{doconceexercise} +\refstepcounter{doconceexercisecounter} + +\exercisesection{Exercise \thedoconceexercisecounter: Normalizing our data} + + +A much used approach before starting to train the data is to preprocess our +data. Normally the data may need a rescaling and/or may be sensitive +to extreme values. Scaling the data renders our inputs much more +suitable for the algorithms we want to employ. + +\textbf{Scikit-Learn} has several functions which allow us to rescale the +data, normally resulting in much better results in terms of various +accuracy scores. The \textbf{StandardScaler} function in \textbf{Scikit-Learn} +ensures that for each feature/predictor we study the mean value is +zero and the variance is one (every column in the design/feature +matrix). This scaling has the drawback that it does not ensure that +we have a particular maximum or minimum in our data set. Another +function included in \textbf{Scikit-Learn} is the \textbf{MinMaxScaler} which +ensures that all features are exactly between $0$ and $1$. The + + +The \textbf{Normalizer} scales each data +point such that the feature vector has a euclidean length of one. In other words, it +projects a data point on the circle (or sphere in the case of higher dimensions) with a +radius of 1. This means every data point is scaled by a different number (by the +inverse of it’s length). +This normalization is often used when only the direction (or angle) of the data matters, +not the length of the feature vector. + +The \textbf{RobustScaler} works similarly to the StandardScaler in that it +ensures statistical properties for each feature that guarantee that +they are on the same scale. However, the RobustScaler uses the median +and quartiles, instead of mean and variance. This makes the +RobustScaler ignore data points that are very different from the rest +(like measurement errors). These odd data points are also called +outliers, and might often lead to trouble for other scaling +techniques. + + +It also common to split the data in a \textbf{training} set and a \textbf{testing} set. A typical split is to use $80\%$ of the data for training and the rest +for testing. This can be done as follows with our design matrix $\bm{X}$ and data $\bm{y}$ (remember to import \textbf{scikit-learn}) +\bpycod +# split in training and test data +X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2) +\epycod +Then we can use the standard scaler to scale our data as +\bpycod +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) +\epycod + + +In this exercise we want you to to compute the MSE for the training +data and the test data as function of the complexity of a polynomial, +that is the degree of a given polynomial. We want you also to compute the $R2$ score as function of the complexity of the model for both training data and test data. You should also run the calculation with and without scaling. + +One of +the aims is to reproduce Figure 2.11 of \href{{https://github.com/CompPhysics/MLErasmus/blob/master/doc/Textbooks/elementsstat.pdf}}{Hastie et al}. +We will also use Ridge and Lasso regression. + + +Our data is defined by $x\in [-3,3]$ with a total of for example $100$ data points. +\bpycod +np.random.seed() +n = 100 +maxdegree = 14 +# Make data set. +x = np.linspace(-3, 3, n).reshape(-1, 1) +y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape) +\epycod +where $y$ is the function we want to fit with a given polynomial. + + +\subex{a)} +Write a first code which sets up a design matrix $X$ defined by a fifth-order polynomial. Scale your data and split it in training and test data. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +\bpycod +import matplotlib.pyplot as plt +import numpy as np +from sklearn.linear_model import LinearRegression, Ridge, Lasso +from sklearn.preprocessing import PolynomialFeatures +from sklearn.model_selection import train_test_split +from sklearn.pipeline import make_pipeline + + +np.random.seed(2018) +n = 50 +maxdegree = 5 +# Make data set. +x = np.linspace(-3, 3, n).reshape(-1, 1) +y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape) +TestError = np.zeros(maxdegree) +TrainError = np.zeros(maxdegree) +polydegree = np.zeros(maxdegree) +x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +x_train_scaled = scaler.transform(x_train) +x_test_scaled = scaler.transform(x_test) + +for degree in range(maxdegree): + model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) + clf = model.fit(x_train_scale,y_train) + y_fit = clf.predict(x_train_scaled) + y_pred = clf.predict(x_test_scaled) + polydegree[degree] = degree + TestError[degree] = np.mean( np.mean((y_test - y_pred)**2) ) + TrainError[degree] = np.mean( np.mean((y_train - y_fit)**2) ) + +plt.plot(polydegree, TestError, label='Test Error') +plt.plot(polydegree, TrainError, label='Train Error') +plt.legend() +plt.show() +\epycod + +% --- end solution of exercise --- + +\subex{b)} +Perform an ordinary least squares and compute the means squared error and the $R2$ factor for the training data and the test data, with and without scaling. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +This requires a simple extension to the above code where you simply add a statement calling the $R2$ function included in the same code. + +% --- end solution of exercise --- + +\subex{c)} +Add now a model which allows you to make polynomials up to degree $15$. Perform a standard OLS fitting of the training data and compute the MSE and $R2$ for the training and test data and plot both test and training data MSE and $R2$ as functions of the polynomial degree. Compare what you see with Figure 2.11 of Hastie et al.~Comment your results. For which polynomial degree do you find an optimal MSE (smallest value)? + + +% --- begin solution of exercise --- +\paragraph{Solution.} +Here you simply need to change the degree of the polynomial in the above code to $n=15$. + +% --- end solution of exercise --- + +\subex{d)} +Repeat part (2c) but now using Ridge regressions with various hyperparameters $\lambda$. Make the same plots for the optimal $\lambda$ value for each polynomial degree. Compare these results with those from the standard OLS approach. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +Here you need to add for example the same loop over the parameters $\lambda$ as you did in the first exercise, that is add +\bpycod +nlambdas = 100 +MSEPredictRidge = np.zeros(nlambdas) +lambdas = np.logspace(-4, 0, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + # add ridge + clf_ridge = skl.Ridge(alpha=lmb).fit(X_train_scaled, y_train) + +\epycod +The plotting functionality of the first exercise can be reused here as well. + +% --- end solution of exercise --- + + + + + +\end{doconceexercise} +% --- end exercise --- + + +% ------------------- end of main content --------------- + +% #ifdef PREAMBLE +\end{document} +% #endif + diff --git a/doc/Projects/2020/hw2/pdf/hw2.pdf b/doc/Projects/2020/hw2/pdf/hw2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..de91d0a653a3d4bab70c3753c530ad438696c346 GIT binary patch literal 253499 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

2OM)u2h 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�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 y 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 literal 0 HcmV?d00001 diff --git a/doc/Projects/2020/hw2/pdf/hw2.tex b/doc/Projects/2020/hw2/pdf/hw2.tex new file mode 100644 index 000000000..cc3c2b843 --- /dev/null +++ b/doc/Projects/2020/hw2/pdf/hw2.tex @@ -0,0 +1,710 @@ +%% +%% Automatically generated file from DocOnce source +%% (https://github.com/hplgit/doconce/) +%% +%% + + +%-------------------- begin preamble ---------------------- + +\documentclass[% +oneside, % oneside: electronic viewing, twoside: printing +final, % draft: marks overfull hboxes, figures with paths +10pt]{article} + +\listfiles % print all files needed to compile this document + +\usepackage{relsize,makeidx,color,setspace,amsmath,amsfonts,amssymb} +\usepackage[table]{xcolor} +\usepackage{bm,ltablex,microtype} + +\usepackage[pdftex]{graphicx} + +\usepackage{fancyvrb} % packages needed for verbatim environments + +\usepackage[T1]{fontenc} +%\usepackage[latin1]{inputenc} +\usepackage{ucs} +\usepackage[utf8x]{inputenc} + +\usepackage{lmodern} % Latin Modern fonts derived from Computer Modern + +% Hyperlinks in PDF: +\definecolor{linkcolor}{rgb}{0,0,0.4} +\usepackage{hyperref} +\hypersetup{ + breaklinks=true, + colorlinks=true, + linkcolor=linkcolor, + urlcolor=linkcolor, + citecolor=black, + filecolor=black, + %filecolor=blue, + pdfmenubar=true, + pdftoolbar=true, + bookmarksdepth=3 % Uncomment (and tweak) for PDF bookmarks with more levels than the TOC + } +%\hyperbaseurl{} % hyperlinks are relative to this root + +\setcounter{tocdepth}{2} % levels in table of contents + +% --- fancyhdr package for fancy headers --- +\usepackage{fancyhdr} +\fancyhf{} % sets both header and footer to nothing +\renewcommand{\headrulewidth}{0pt} +\fancyfoot[LE,RO]{\thepage} +% Ensure copyright on titlepage (article style) and chapter pages (book style) +\fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[C]{{\footnotesize \copyright\ 1999-2020, "Data Analysis and Machine Learning FYS-STK3155/FYS4155":"http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html". Released under CC Attribution-NonCommercial 4.0 license}} +% \renewcommand{\footrulewidth}{0mm} + \renewcommand{\headrulewidth}{0mm} +} +% Ensure copyright on titlepages with \thispagestyle{empty} +\fancypagestyle{empty}{ + \fancyhf{} + \fancyfoot[C]{{\footnotesize \copyright\ 1999-2020, "Data Analysis and Machine Learning FYS-STK3155/FYS4155":"http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html". Released under CC Attribution-NonCommercial 4.0 license}} + \renewcommand{\footrulewidth}{0mm} + \renewcommand{\headrulewidth}{0mm} +} + +\pagestyle{fancy} + + +% prevent orhpans and widows +\clubpenalty = 10000 +\widowpenalty = 10000 + +\newenvironment{doconceexercise}{}{} +\newcounter{doconceexercisecounter} + + +% ------ header in subexercises ------ +%\newcommand{\subex}[1]{\paragraph{#1}} +%\newcommand{\subex}[1]{\par\vspace{1.7mm}\noindent{\bf #1}\ \ } +\makeatletter +% 1.5ex is the spacing above the header, 0.5em the spacing after subex title +\newcommand\subex{\@startsection*{paragraph}{4}{\z@}% + {1.5ex\@plus1ex \@minus.2ex}% + {-0.5em}% + {\normalfont\normalsize\bfseries}} +\makeatother + + +% --- end of standard preamble for documents --- + + +% insert custom LaTeX commands... + +\raggedbottom +\makeindex +\usepackage[totoc]{idxlayout} % for index in the toc +\usepackage[nottoc]{tocbibind} % for references/bibliography in the toc + +%-------------------- end preamble ---------------------- + +\begin{document} + +% matching end for #ifdef PREAMBLE + +\newcommand{\exercisesection}[1]{\subsection*{#1}} + + +% ------------------- main content ---------------------- + + + +% ----------------- title ------------------------- + +\thispagestyle{empty} + +\begin{center} +{\LARGE\bf +\begin{spacing}{1.25} +Homework 2, weeks 36 and 37 +\end{spacing} +} +\end{center} + +% ----------------- author(s) ------------------------- + +\begin{center} +{\bf \href{{http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html}}{Data Analysis and Machine Learning FYS-STK3155/FYS4155}} +\end{center} + + \begin{center} +% List of all institutions: +\centerline{{\small Department of Physics, University of Oslo, Norway}} +\end{center} + +% ----------------- end author(s) ------------------------- + +% --- begin date --- +\begin{center} +Sep 1, 2020 +\end{center} +% --- end date --- + +\vspace{1cm} + + +% --- begin exercise --- +\begin{doconceexercise} +\refstepcounter{doconceexercisecounter} + +\exercisesection*{Exercise \thedoconceexercisecounter: Adding Ridge and Lasso Regression} + + +This exercise is a continuation of exercise 3 from exercise set 1 (week 35). We will +use the same function to generate our data set, still staying with a +simple function $y(x)$ which we want to fit using linear regression, +but now extending the analysis to include the Ridge and the Lasso +regression methods. You can use the code under the Regression as an example on how to use the Ridge and the Lasso methods, see the \href{{https://compphysics.github.io/MachineLearning/doc/pub/Regression/html/Regression-bs.html}}{regression slides}). + +We will thus again generate our own dataset for a function $y(x)$ where +$x \in [0,1]$ and defined by random numbers computed with the uniform +distribution. The function $y$ is a quadratic polynomial in $x$ with +added stochastic noise according to the normal distribution $\cal{N}(0,1)$. + +The following simple Python instructions define our $x$ and $y$ values (with 100 data points). +\begin{verbatim} +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) +\end{verbatim} + + +\subex{a)} +Write your own code for the Ridge method (see chapter 3.4 of Hastie \emph{et al.}, equations (3.43) and (3.44)) and compute the parametrization for different values of $\lambda$. Compare and analyze your results with those from exercise 3. Study the dependence on $\lambda$ while also varying the strength of the noise in your expression for $y(x)$. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +The code here allows you to perform your own Ridge calculation and perform calculations for various values of the regularization parameter $\lambda$. This program can easily be extended upon. +\begin{verbatim} +import os +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler + +def R2(y_data, y_model): + return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2) +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n + + +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(3155) + +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) + +# number of features p (here degree of polynomial +p = 3 +# The design matrix now as function of a given polynomial +X = np.zeros((len(x),p)) +X[:,0] = 1.0 +X[:,1] = x +X[:,2] = x*x +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# matrix inversion to find beta +OLSbeta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train +print(OLSbeta) +# and then make the prediction +ytildeOLS = X_train @ OLSbeta +print("Training R2 for OLS") +print(R2(y_train,ytildeOLS)) +print("Training MSE for OLS") +print(MSE(y_train,ytildeOLS)) +ypredictOLS = X_test @ OLSbeta +print("Test R2 for OLS") +print(R2(y_test,ypredictOLS)) +print("Test MSE OLS") +print(MSE(y_test,ypredictOLS)) + +# Repeat now for Ridge regression and various values of the regularization parameter +I = np.eye(p,p) +# Decide which values of lambda to use +nlambdas = 20 +MSEPredict = np.zeros(nlambdas) +MSETrain = np.zeros(nlambdas) +lambdas = np.logspace(-4, 1, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + Ridgebeta = np.linalg.inv(X_train.T @ X_train+lmb*I) @ X_train.T @ y_train + # and then make the prediction + ytildeRidge = X_train @ Ridgebeta + ypredictRidge = X_test @ Ridgebeta + MSEPredict[i] = MSE(y_test,ypredictRidge) + MSETrain[i] = MSE(y_train,ytildeRidge) +# Now plot the resulys +plt.figure() +plt.plot(np.log10(lambdas), MSETrain, label = 'MSE Ridge train') +plt.plot(np.log10(lambdas), MSEPredict, 'r--', label = 'MSE Ridge Test') +plt.xlabel('log10(lambda)') +plt.ylabel('MSE') +plt.legend() +plt.show() +\end{verbatim} + +% --- end solution of exercise --- + +\subex{b)} +Repeat the above but using the functionality of \textbf{Scikit-Learn}. Compare your code with the results from \textbf{Scikit-Learn}. Remember to run with the same random numbers for generating $x$ and $y$. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +To use \textbf{scikit-learn} with Ridge, we simply need to add the relevant function \textbf{Ridge()}, as done in the code here. +\begin{verbatim} +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import sklearn.linear_model as skl + +def R2(y_data, y_model): + return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2) +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n + + +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(3155) + +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) + +# number of features p (here degree of polynomial +p = 3 +# The design matrix now as function of a given polynomial +X = np.zeros((len(x),p)) +X[:,0] = 1.0 +X[:,1] = x +X[:,2] = x*x +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# matrix inversion to find beta +OLSbeta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train +print(OLSbeta) +# and then make the prediction +ytildeOLS = X_train @ OLSbeta +print("Training R2 for OLS") +print(R2(y_train,ytildeOLS)) +print("Training MSE for OLS") +print(MSE(y_train,ytildeOLS)) +ypredictOLS = X_test @ OLSbeta +print("Test R2 for OLS") +print(R2(y_test,ypredictOLS)) +print("Test MSE OLS") +print(MSE(y_test,ypredictOLS)) + +# Repeat now for Ridge regression and various values of the regularization parameter +I = np.eye(p,p) +# Decide which values of lambda to use +nlambdas = 100 +MSEPredict = np.zeros(nlambdas) +MSEPredictSKL = np.zeros(nlambdas) +MSETrain = np.zeros(nlambdas) +lambdas = np.logspace(-4, 0, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + # add ridge + clf_ridge = skl.Ridge(alpha=lmb).fit(X_train, y_train) + yridge = clf_ridge.predict(X_test) + Ridgebeta = np.linalg.inv(X_train.T @ X_train+lmb*I) @ X_train.T @ y_train + # and then make the prediction + ytildeRidge = X_train @ Ridgebeta + ypredictRidge = X_test @ Ridgebeta + MSEPredict[i] = MSE(y_test,ypredictRidge) + MSEPredictSKL[i] = MSE(y_test,yridge) + MSETrain[i] = MSE(y_train,ytildeRidge) +#then plot the results +plt.figure() +plt.plot(np.log10(lambdas), MSETrain, label = 'MSE Ridge train') +plt.plot(np.log10(lambdas), MSEPredict, 'r--', label = 'MSE Ridge Test') +plt.plot(np.log10(lambdas), MSEPredictSKL, 'g--', label = 'MSE Ridge sickit-learn Test') +plt.xlabel('log10(lambda)') +plt.ylabel('MSE') +plt.legend() +plt.show() +\end{verbatim} + +% --- end solution of exercise --- + +\subex{c)} +Our next step is to study the variance of the parameters $\beta_1$ and $\beta_2$ (assuming that we are parameterizing our function with a second-order polynomial). We will use standard linear regression and the Ridge regression. You can now opt for either writing your own function or using \textbf{Scikit-Learn} to find the parameters $\beta$. From your results calculate the variance of these parameters (recall that this is equal to the diagonal elements of the matrix $(\hat{X}^T\hat{X})+\lambda\hat{I})^{-1}$). Discuss the results of these variances as functions of $\lambda$. In particular, try to link your discussion with the discussion in Hastie \emph{et al.} and their figures 3.10 and 3.11. \textbf{Scikit-Learn} may not provide the variance of the parameters $\beta$. This needs to be checked. With your own code you can however do so. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +\begin{verbatim} +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import sklearn.linear_model as skl + +def R2(y_data, y_model): + return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2) +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n + + +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(3155) + +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) + +# number of features p (here degree of polynomial +p = 3 +# The design matrix now as function of a given polynomial +X = np.zeros((len(x),p)) +X[:,0] = 1.0 +X[:,1] = x +X[:,2] = x*x +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# matrix inversion to find beta +OLSbeta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train +print(OLSbeta) +# The variance is given by the inverse of the matrix X^TX +print(np.linalg.inv(X_train.T @ X_train)) + +# Repeat now for Ridge regression and various values of the regularization parameter +I = np.eye(p,p) +# Decide which values of lambda to use +nlambdas = 10 +MSEPredict = np.zeros(nlambdas) +MSEPredictSKL = np.zeros(nlambdas) +MSETrain = np.zeros(nlambdas) +lambdas = np.logspace(-4, 0, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + Ridgebeta = np.linalg.inv(X_train.T @ X_train+lmb*I) @ X_train.T @ y_train + print(np.linalg.inv(X_train.T @ X_train+lmb*I)) + + + +\end{verbatim} + +% --- end solution of exercise --- + +\subex{d)} +Repeat the previous step but add now the Lasso method, see equation (3.53) of Hastie \emph{et al.}. Discuss your results and compare with standard regression and the Ridge regression results. You can write your own code or use the functionality of \textbf{scikit-learn}. We recommend the latter since we have not yet discussed how to solve the Lasso equations numerically. Also, you do not need to compute the variance of the parameters $\beta$ but you can extract their values and study their behavior as functions of the regularization parameter $\lambda$. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +\begin{verbatim} +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import sklearn.linear_model as skl +#from sklearn.linear_model import LinearRegression, Ridge, Lasso +def R2(y_data, y_model): + return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2) +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n + + +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(3155) + +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) + +# number of features p (here degree of polynomial +p = 3 +# The design matrix now as function of a given polynomial +X = np.zeros((len(x),p)) +X[:,0] = 1.0 +X[:,1] = x +X[:,2] = x*x +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# matrix inversion to find beta +OLSbeta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train +print(OLSbeta) +# and then make the prediction +ytildeOLS = X_train @ OLSbeta +print("Training R2 for OLS") +print(R2(y_train,ytildeOLS)) +print("Training MSE for OLS") +print(MSE(y_train,ytildeOLS)) +ypredictOLS = X_test @ OLSbeta +print("Test R2 for OLS") +print(R2(y_test,ypredictOLS)) +print("Test MSE OLS") +print(MSE(y_test,ypredictOLS)) + +# Repeat now for Ridge regression and various values of the regularization parameter +I = np.eye(p,p) +# Decide which values of lambda to use +nlambdas = 100 +MSEPredictLasso = np.zeros(nlambdas) +MSEPredictRidge = np.zeros(nlambdas) +lambdas = np.logspace(-4, 0, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + # add ridge + clf_ridge = skl.Ridge(alpha=lmb).fit(X_train, y_train) + clf_lasso = skl.Lasso(alpha=lmb).fit(X_train, y_train) + yridge = clf_ridge.predict(X_test) + ylasso = clf_lasso.predict(X_test) + MSEPredictLasso[i] = MSE(y_test,ylasso) + MSEPredictRidge[i] = MSE(y_test,yridge) +#then plot the results +plt.figure() +plt.plot(np.log10(lambdas), MSEPredictRidge, 'r--', label = 'MSE Ridge Test') +plt.plot(np.log10(lambdas), MSEPredictLasso, 'g--', label = 'MSE Lasso Test') +plt.xlabel('log10(lambda)') +plt.ylabel('MSE') +plt.legend() +plt.show() +\end{verbatim} + +% --- end solution of exercise --- + +\subex{e)} +Finally, using \textbf{Scikit-Learn} or your own code, compute also the mean square error, a risk metric corresponding to the expected value of the squared (quadratic) error defined as +\[ MSE(\hat{y},\hat{\tilde{y}}) = \frac{1}{n} +\sum_{i=0}^{n-1}(y_i-\tilde{y}_i)^2, +\] +and the $R^2$ score function. +If $\tilde{\hat{y}}_i$ is the predicted value of the $i-th$ sample and $y_i$ is the corresponding true value, then the score $R^2$ is defined as +\[ +R^2(\hat{y}, \tilde{\hat{y}}) = 1 - \frac{\sum_{i=0}^{n - 1} (y_i - \tilde{y}_i)^2}{\sum_{i=0}^{n - 1} (y_i - \bar{y})^2}, +\] +where we have defined the mean value of $\hat{y}$ as +\[ +\bar{y} = \frac{1}{n} \sum_{i=0}^{n - 1} y_i. +\] +Discuss these quantities as functions of the variable $\lambda$ in the Ridge and Lasso regression methods. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +These results can all be studied with the codes we have above. These scores are included in the codes above. + +% --- end solution of exercise --- + + +\end{doconceexercise} +% --- end exercise --- + + + + +% --- begin exercise --- +\begin{doconceexercise} +\refstepcounter{doconceexercisecounter} + +\exercisesection*{Exercise \thedoconceexercisecounter: Normalizing our data} + + +A much used approach before starting to train the data is to preprocess our +data. Normally the data may need a rescaling and/or may be sensitive +to extreme values. Scaling the data renders our inputs much more +suitable for the algorithms we want to employ. + +\textbf{Scikit-Learn} has several functions which allow us to rescale the +data, normally resulting in much better results in terms of various +accuracy scores. The \textbf{StandardScaler} function in \textbf{Scikit-Learn} +ensures that for each feature/predictor we study the mean value is +zero and the variance is one (every column in the design/feature +matrix). This scaling has the drawback that it does not ensure that +we have a particular maximum or minimum in our data set. Another +function included in \textbf{Scikit-Learn} is the \textbf{MinMaxScaler} which +ensures that all features are exactly between $0$ and $1$. The + + +The \textbf{Normalizer} scales each data +point such that the feature vector has a euclidean length of one. In other words, it +projects a data point on the circle (or sphere in the case of higher dimensions) with a +radius of 1. This means every data point is scaled by a different number (by the +inverse of it’s length). +This normalization is often used when only the direction (or angle) of the data matters, +not the length of the feature vector. + +The \textbf{RobustScaler} works similarly to the StandardScaler in that it +ensures statistical properties for each feature that guarantee that +they are on the same scale. However, the RobustScaler uses the median +and quartiles, instead of mean and variance. This makes the +RobustScaler ignore data points that are very different from the rest +(like measurement errors). These odd data points are also called +outliers, and might often lead to trouble for other scaling +techniques. + + +It also common to split the data in a \textbf{training} set and a \textbf{testing} set. A typical split is to use $80\%$ of the data for training and the rest +for testing. This can be done as follows with our design matrix $\bm{X}$ and data $\bm{y}$ (remember to import \textbf{scikit-learn}) +\begin{verbatim} +# split in training and test data +X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2) +\end{verbatim} +Then we can use the standard scaler to scale our data as +\begin{verbatim} +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) +\end{verbatim} + + +In this exercise we want you to to compute the MSE for the training +data and the test data as function of the complexity of a polynomial, +that is the degree of a given polynomial. We want you also to compute the $R2$ score as function of the complexity of the model for both training data and test data. You should also run the calculation with and without scaling. + +One of +the aims is to reproduce Figure 2.11 of \href{{https://github.com/CompPhysics/MLErasmus/blob/master/doc/Textbooks/elementsstat.pdf}}{Hastie et al}. +We will also use Ridge and Lasso regression. + + +Our data is defined by $x\in [-3,3]$ with a total of for example $100$ data points. +\begin{verbatim} +np.random.seed() +n = 100 +maxdegree = 14 +# Make data set. +x = np.linspace(-3, 3, n).reshape(-1, 1) +y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape) +\end{verbatim} +where $y$ is the function we want to fit with a given polynomial. + + +\subex{a)} +Write a first code which sets up a design matrix $X$ defined by a fifth-order polynomial. Scale your data and split it in training and test data. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +\begin{verbatim} +import matplotlib.pyplot as plt +import numpy as np +from sklearn.linear_model import LinearRegression, Ridge, Lasso +from sklearn.preprocessing import PolynomialFeatures +from sklearn.model_selection import train_test_split +from sklearn.pipeline import make_pipeline + + +np.random.seed(2018) +n = 50 +maxdegree = 5 +# Make data set. +x = np.linspace(-3, 3, n).reshape(-1, 1) +y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape) +TestError = np.zeros(maxdegree) +TrainError = np.zeros(maxdegree) +polydegree = np.zeros(maxdegree) +x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +x_train_scaled = scaler.transform(x_train) +x_test_scaled = scaler.transform(x_test) + +for degree in range(maxdegree): + model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) + clf = model.fit(x_train_scale,y_train) + y_fit = clf.predict(x_train_scaled) + y_pred = clf.predict(x_test_scaled) + polydegree[degree] = degree + TestError[degree] = np.mean( np.mean((y_test - y_pred)**2) ) + TrainError[degree] = np.mean( np.mean((y_train - y_fit)**2) ) + +plt.plot(polydegree, TestError, label='Test Error') +plt.plot(polydegree, TrainError, label='Train Error') +plt.legend() +plt.show() +\end{verbatim} + +% --- end solution of exercise --- + +\subex{b)} +Perform an ordinary least squares and compute the means squared error and the $R2$ factor for the training data and the test data, with and without scaling. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +This requires a simple extension to the above code where you simply add a statement calling the $R2$ function included in the same code. + +% --- end solution of exercise --- + +\subex{c)} +Add now a model which allows you to make polynomials up to degree $15$. Perform a standard OLS fitting of the training data and compute the MSE and $R2$ for the training and test data and plot both test and training data MSE and $R2$ as functions of the polynomial degree. Compare what you see with Figure 2.11 of Hastie et al.~Comment your results. For which polynomial degree do you find an optimal MSE (smallest value)? + + +% --- begin solution of exercise --- +\paragraph{Solution.} +Here you simply need to change the degree of the polynomial in the above code to $n=15$. + +% --- end solution of exercise --- + +\subex{d)} +Repeat part (2c) but now using Ridge regressions with various hyperparameters $\lambda$. Make the same plots for the optimal $\lambda$ value for each polynomial degree. Compare these results with those from the standard OLS approach. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +Here you need to add for example the same loop over the parameters $\lambda$ as you did in the first exercise, that is add +\begin{verbatim} +nlambdas = 100 +MSEPredictRidge = np.zeros(nlambdas) +lambdas = np.logspace(-4, 0, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + # add ridge + clf_ridge = skl.Ridge(alpha=lmb).fit(X_train_scaled, y_train) + +\end{verbatim} +The plotting functionality of the first exercise can be reused here as well. + +% --- end solution of exercise --- + + + + + +\end{doconceexercise} +% --- end exercise --- + + +% ------------------- end of main content --------------- + +\end{document} + diff --git a/doc/Projects/2020/hw2/pdf/hw2.tex~ b/doc/Projects/2020/hw2/pdf/hw2.tex~ new file mode 100644 index 000000000..41030d5f5 --- /dev/null +++ b/doc/Projects/2020/hw2/pdf/hw2.tex~ @@ -0,0 +1,710 @@ +%% +%% Automatically generated file from DocOnce source +%% (https://github.com/hplgit/doconce/) +%% +%% + + +%-------------------- begin preamble ---------------------- + +\documentclass[% +oneside, % oneside: electronic viewing, twoside: printing +final, % draft: marks overfull hboxes, figures with paths +10pt]{article} + +\listfiles % print all files needed to compile this document + +\usepackage{relsize,makeidx,color,setspace,amsmath,amsfonts,amssymb} +\usepackage[table]{xcolor} +\usepackage{bm,ltablex,microtype} + +\usepackage[pdftex]{graphicx} + +\usepackage{fancyvrb} % packages needed for verbatim environments + +\usepackage[T1]{fontenc} +%\usepackage[latin1]{inputenc} +\usepackage{ucs} +\usepackage[utf8x]{inputenc} + +\usepackage{lmodern} % Latin Modern fonts derived from Computer Modern + +% Hyperlinks in PDF: +\definecolor{linkcolor}{rgb}{0,0,0.4} +\usepackage{hyperref} +\hypersetup{ + breaklinks=true, + colorlinks=true, + linkcolor=linkcolor, + urlcolor=linkcolor, + citecolor=black, + filecolor=black, + %filecolor=blue, + pdfmenubar=true, + pdftoolbar=true, + bookmarksdepth=3 % Uncomment (and tweak) for PDF bookmarks with more levels than the TOC + } +%\hyperbaseurl{} % hyperlinks are relative to this root + +\setcounter{tocdepth}{2} % levels in table of contents + +% --- fancyhdr package for fancy headers --- +\usepackage{fancyhdr} +\fancyhf{} % sets both header and footer to nothing +\renewcommand{\headrulewidth}{0pt} +\fancyfoot[LE,RO]{\thepage} +% Ensure copyright on titlepage (article style) and chapter pages (book style) +\fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[C]{{\footnotesize \copyright\ 1999-2020, "Data Analysis and Machine Learning FYS-STK3155/FYS4155":"http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html". Released under CC Attribution-NonCommercial 4.0 license}} +% \renewcommand{\footrulewidth}{0mm} + \renewcommand{\headrulewidth}{0mm} +} +% Ensure copyright on titlepages with \thispagestyle{empty} +\fancypagestyle{empty}{ + \fancyhf{} + \fancyfoot[C]{{\footnotesize \copyright\ 1999-2020, "Data Analysis and Machine Learning FYS-STK3155/FYS4155":"http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html". Released under CC Attribution-NonCommercial 4.0 license}} + \renewcommand{\footrulewidth}{0mm} + \renewcommand{\headrulewidth}{0mm} +} + +\pagestyle{fancy} + + +% prevent orhpans and widows +\clubpenalty = 10000 +\widowpenalty = 10000 + +\newenvironment{doconceexercise}{}{} +\newcounter{doconceexercisecounter} + + +% ------ header in subexercises ------ +%\newcommand{\subex}[1]{\paragraph{#1}} +%\newcommand{\subex}[1]{\par\vspace{1.7mm}\noindent{\bf #1}\ \ } +\makeatletter +% 1.5ex is the spacing above the header, 0.5em the spacing after subex title +\newcommand\subex{\@startsection*{paragraph}{4}{\z@}% + {1.5ex\@plus1ex \@minus.2ex}% + {-0.5em}% + {\normalfont\normalsize\bfseries}} +\makeatother + + +% --- end of standard preamble for documents --- + + +% insert custom LaTeX commands... + +\raggedbottom +\makeindex +\usepackage[totoc]{idxlayout} % for index in the toc +\usepackage[nottoc]{tocbibind} % for references/bibliography in the toc + +%-------------------- end preamble ---------------------- + +\begin{document} + +% matching end for #ifdef PREAMBLE + +\newcommand{\exercisesection}[1]{\subsection*{#1}} + + +% ------------------- main content ---------------------- + + + +% ----------------- title ------------------------- + +\thispagestyle{empty} + +\begin{center} +{\LARGE\bf +\begin{spacing}{1.25} +Homework 2, weeks 36 and 37 +\end{spacing} +} +\end{center} + +% ----------------- author(s) ------------------------- + +\begin{center} +{\bf \href{{http://www.uio.no/studier/emner/matnat/fys/FYS3155/index-eng.html}}{Data Analysis and Machine Learning FYS-STK3155/FYS4155}} +\end{center} + + \begin{center} +% List of all institutions: +\centerline{{\small Department of Physics, University of Oslo, Norway}} +\end{center} + +% ----------------- end author(s) ------------------------- + +% --- begin date --- +\begin{center} +Sep 1, 2020 +\end{center} +% --- end date --- + +\vspace{1cm} + + +% --- begin exercise --- +\begin{doconceexercise} +\refstepcounter{doconceexercisecounter} + +\exercisesection*{Exercise \thedoconceexercisecounter: Adding Ridge and Lasso Regression} + + +This exercise is a continuation of exercise 3 from exercise set 1 (week 35). We will +use the same function to generate our data set, still staying with a +simple function $y(x)$ which we want to fit using linear regression, +but now extending the analysis to include the Ridge and the Lasso +regression methods. You can use the code under the Regression as an example on how to use the Ridge and the Lasso methods, see the \href{{https://compphysics.github.io/MachineLearning/doc/pub/Regression/html/Regression-bs.html}}{regression slides}). + +We will thus again generate our own dataset for a function $y(x)$ where +$x \in [0,1]$ and defined by random numbers computed with the uniform +distribution. The function $y$ is a quadratic polynomial in $x$ with +added stochastic noise according to the normal distribution $\cal{N}(0,1)$. + +The following simple Python instructions define our $x$ and $y$ values (with 100 data points). +\begin{print} +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) +\end{print} + + +\subex{a)} +Write your own code for the Ridge method (see chapter 3.4 of Hastie \emph{et al.}, equations (3.43) and (3.44)) and compute the parametrization for different values of $\lambda$. Compare and analyze your results with those from exercise 3. Study the dependence on $\lambda$ while also varying the strength of the noise in your expression for $y(x)$. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +The code here allows you to perform your own Ridge calculation and perform calculations for various values of the regularization parameter $\lambda$. This program can easily be extended upon. +\begin{print} +import os +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler + +def R2(y_data, y_model): + return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2) +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n + + +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(3155) + +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) + +# number of features p (here degree of polynomial +p = 3 +# The design matrix now as function of a given polynomial +X = np.zeros((len(x),p)) +X[:,0] = 1.0 +X[:,1] = x +X[:,2] = x*x +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# matrix inversion to find beta +OLSbeta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train +print(OLSbeta) +# and then make the prediction +ytildeOLS = X_train @ OLSbeta +print("Training R2 for OLS") +print(R2(y_train,ytildeOLS)) +print("Training MSE for OLS") +print(MSE(y_train,ytildeOLS)) +ypredictOLS = X_test @ OLSbeta +print("Test R2 for OLS") +print(R2(y_test,ypredictOLS)) +print("Test MSE OLS") +print(MSE(y_test,ypredictOLS)) + +# Repeat now for Ridge regression and various values of the regularization parameter +I = np.eye(p,p) +# Decide which values of lambda to use +nlambdas = 20 +MSEPredict = np.zeros(nlambdas) +MSETrain = np.zeros(nlambdas) +lambdas = np.logspace(-4, 1, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + Ridgebeta = np.linalg.inv(X_train.T @ X_train+lmb*I) @ X_train.T @ y_train + # and then make the prediction + ytildeRidge = X_train @ Ridgebeta + ypredictRidge = X_test @ Ridgebeta + MSEPredict[i] = MSE(y_test,ypredictRidge) + MSETrain[i] = MSE(y_train,ytildeRidge) +# Now plot the resulys +plt.figure() +plt.plot(np.log10(lambdas), MSETrain, label = 'MSE Ridge train') +plt.plot(np.log10(lambdas), MSEPredict, 'r--', label = 'MSE Ridge Test') +plt.xlabel('log10(lambda)') +plt.ylabel('MSE') +plt.legend() +plt.show() +\end{print} + +% --- end solution of exercise --- + +\subex{b)} +Repeat the above but using the functionality of \textbf{Scikit-Learn}. Compare your code with the results from \textbf{Scikit-Learn}. Remember to run with the same random numbers for generating $x$ and $y$. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +To use \textbf{scikit-learn} with Ridge, we simply need to add the relevant function \textbf{Ridge()}, as done in the code here. +\begin{print} +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import sklearn.linear_model as skl + +def R2(y_data, y_model): + return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2) +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n + + +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(3155) + +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) + +# number of features p (here degree of polynomial +p = 3 +# The design matrix now as function of a given polynomial +X = np.zeros((len(x),p)) +X[:,0] = 1.0 +X[:,1] = x +X[:,2] = x*x +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# matrix inversion to find beta +OLSbeta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train +print(OLSbeta) +# and then make the prediction +ytildeOLS = X_train @ OLSbeta +print("Training R2 for OLS") +print(R2(y_train,ytildeOLS)) +print("Training MSE for OLS") +print(MSE(y_train,ytildeOLS)) +ypredictOLS = X_test @ OLSbeta +print("Test R2 for OLS") +print(R2(y_test,ypredictOLS)) +print("Test MSE OLS") +print(MSE(y_test,ypredictOLS)) + +# Repeat now for Ridge regression and various values of the regularization parameter +I = np.eye(p,p) +# Decide which values of lambda to use +nlambdas = 100 +MSEPredict = np.zeros(nlambdas) +MSEPredictSKL = np.zeros(nlambdas) +MSETrain = np.zeros(nlambdas) +lambdas = np.logspace(-4, 0, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + # add ridge + clf_ridge = skl.Ridge(alpha=lmb).fit(X_train, y_train) + yridge = clf_ridge.predict(X_test) + Ridgebeta = np.linalg.inv(X_train.T @ X_train+lmb*I) @ X_train.T @ y_train + # and then make the prediction + ytildeRidge = X_train @ Ridgebeta + ypredictRidge = X_test @ Ridgebeta + MSEPredict[i] = MSE(y_test,ypredictRidge) + MSEPredictSKL[i] = MSE(y_test,yridge) + MSETrain[i] = MSE(y_train,ytildeRidge) +#then plot the results +plt.figure() +plt.plot(np.log10(lambdas), MSETrain, label = 'MSE Ridge train') +plt.plot(np.log10(lambdas), MSEPredict, 'r--', label = 'MSE Ridge Test') +plt.plot(np.log10(lambdas), MSEPredictSKL, 'g--', label = 'MSE Ridge sickit-learn Test') +plt.xlabel('log10(lambda)') +plt.ylabel('MSE') +plt.legend() +plt.show() +\end{print} + +% --- end solution of exercise --- + +\subex{c)} +Our next step is to study the variance of the parameters $\beta_1$ and $\beta_2$ (assuming that we are parameterizing our function with a second-order polynomial). We will use standard linear regression and the Ridge regression. You can now opt for either writing your own function or using \textbf{Scikit-Learn} to find the parameters $\beta$. From your results calculate the variance of these parameters (recall that this is equal to the diagonal elements of the matrix $(\hat{X}^T\hat{X})+\lambda\hat{I})^{-1}$). Discuss the results of these variances as functions of $\lambda$. In particular, try to link your discussion with the discussion in Hastie \emph{et al.} and their figures 3.10 and 3.11. \textbf{Scikit-Learn} may not provide the variance of the parameters $\beta$. This needs to be checked. With your own code you can however do so. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +\begin{print} +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import sklearn.linear_model as skl + +def R2(y_data, y_model): + return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2) +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n + + +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(3155) + +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) + +# number of features p (here degree of polynomial +p = 3 +# The design matrix now as function of a given polynomial +X = np.zeros((len(x),p)) +X[:,0] = 1.0 +X[:,1] = x +X[:,2] = x*x +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# matrix inversion to find beta +OLSbeta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train +print(OLSbeta) +# The variance is given by the inverse of the matrix X^TX +print(np.linalg.inv(X_train.T @ X_train)) + +# Repeat now for Ridge regression and various values of the regularization parameter +I = np.eye(p,p) +# Decide which values of lambda to use +nlambdas = 10 +MSEPredict = np.zeros(nlambdas) +MSEPredictSKL = np.zeros(nlambdas) +MSETrain = np.zeros(nlambdas) +lambdas = np.logspace(-4, 0, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + Ridgebeta = np.linalg.inv(X_train.T @ X_train+lmb*I) @ X_train.T @ y_train + print(np.linalg.inv(X_train.T @ X_train+lmb*I)) + + + +\end{print} + +% --- end solution of exercise --- + +\subex{d)} +Repeat the previous step but add now the Lasso method, see equation (3.53) of Hastie \emph{et al.}. Discuss your results and compare with standard regression and the Ridge regression results. You can write your own code or use the functionality of \textbf{scikit-learn}. We recommend the latter since we have not yet discussed how to solve the Lasso equations numerically. Also, you do not need to compute the variance of the parameters $\beta$ but you can extract their values and study their behavior as functions of the regularization parameter $\lambda$. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +\begin{print} +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import sklearn.linear_model as skl +#from sklearn.linear_model import LinearRegression, Ridge, Lasso +def R2(y_data, y_model): + return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2) +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n + + +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(3155) + +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) + +# number of features p (here degree of polynomial +p = 3 +# The design matrix now as function of a given polynomial +X = np.zeros((len(x),p)) +X[:,0] = 1.0 +X[:,1] = x +X[:,2] = x*x +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# matrix inversion to find beta +OLSbeta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train +print(OLSbeta) +# and then make the prediction +ytildeOLS = X_train @ OLSbeta +print("Training R2 for OLS") +print(R2(y_train,ytildeOLS)) +print("Training MSE for OLS") +print(MSE(y_train,ytildeOLS)) +ypredictOLS = X_test @ OLSbeta +print("Test R2 for OLS") +print(R2(y_test,ypredictOLS)) +print("Test MSE OLS") +print(MSE(y_test,ypredictOLS)) + +# Repeat now for Ridge regression and various values of the regularization parameter +I = np.eye(p,p) +# Decide which values of lambda to use +nlambdas = 100 +MSEPredictLasso = np.zeros(nlambdas) +MSEPredictRidge = np.zeros(nlambdas) +lambdas = np.logspace(-4, 0, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + # add ridge + clf_ridge = skl.Ridge(alpha=lmb).fit(X_train, y_train) + clf_lasso = skl.Lasso(alpha=lmb).fit(X_train, y_train) + yridge = clf_ridge.predict(X_test) + ylasso = clf_lasso.predict(X_test) + MSEPredictLasso[i] = MSE(y_test,ylasso) + MSEPredictRidge[i] = MSE(y_test,yridge) +#then plot the results +plt.figure() +plt.plot(np.log10(lambdas), MSEPredictRidge, 'r--', label = 'MSE Ridge Test') +plt.plot(np.log10(lambdas), MSEPredictLasso, 'g--', label = 'MSE Lasso Test') +plt.xlabel('log10(lambda)') +plt.ylabel('MSE') +plt.legend() +plt.show() +\end{print} + +% --- end solution of exercise --- + +\subex{e)} +Finally, using \textbf{Scikit-Learn} or your own code, compute also the mean square error, a risk metric corresponding to the expected value of the squared (quadratic) error defined as +\[ MSE(\hat{y},\hat{\tilde{y}}) = \frac{1}{n} +\sum_{i=0}^{n-1}(y_i-\tilde{y}_i)^2, +\] +and the $R^2$ score function. +If $\tilde{\hat{y}}_i$ is the predicted value of the $i-th$ sample and $y_i$ is the corresponding true value, then the score $R^2$ is defined as +\[ +R^2(\hat{y}, \tilde{\hat{y}}) = 1 - \frac{\sum_{i=0}^{n - 1} (y_i - \tilde{y}_i)^2}{\sum_{i=0}^{n - 1} (y_i - \bar{y})^2}, +\] +where we have defined the mean value of $\hat{y}$ as +\[ +\bar{y} = \frac{1}{n} \sum_{i=0}^{n - 1} y_i. +\] +Discuss these quantities as functions of the variable $\lambda$ in the Ridge and Lasso regression methods. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +These results can all be studied with the codes we have above. These scores are included in the codes above. + +% --- end solution of exercise --- + + +\end{doconceexercise} +% --- end exercise --- + + + + +% --- begin exercise --- +\begin{doconceexercise} +\refstepcounter{doconceexercisecounter} + +\exercisesection*{Exercise \thedoconceexercisecounter: Normalizing our data} + + +A much used approach before starting to train the data is to preprocess our +data. Normally the data may need a rescaling and/or may be sensitive +to extreme values. Scaling the data renders our inputs much more +suitable for the algorithms we want to employ. + +\textbf{Scikit-Learn} has several functions which allow us to rescale the +data, normally resulting in much better results in terms of various +accuracy scores. The \textbf{StandardScaler} function in \textbf{Scikit-Learn} +ensures that for each feature/predictor we study the mean value is +zero and the variance is one (every column in the design/feature +matrix). This scaling has the drawback that it does not ensure that +we have a particular maximum or minimum in our data set. Another +function included in \textbf{Scikit-Learn} is the \textbf{MinMaxScaler} which +ensures that all features are exactly between $0$ and $1$. The + + +The \textbf{Normalizer} scales each data +point such that the feature vector has a euclidean length of one. In other words, it +projects a data point on the circle (or sphere in the case of higher dimensions) with a +radius of 1. This means every data point is scaled by a different number (by the +inverse of it’s length). +This normalization is often used when only the direction (or angle) of the data matters, +not the length of the feature vector. + +The \textbf{RobustScaler} works similarly to the StandardScaler in that it +ensures statistical properties for each feature that guarantee that +they are on the same scale. However, the RobustScaler uses the median +and quartiles, instead of mean and variance. This makes the +RobustScaler ignore data points that are very different from the rest +(like measurement errors). These odd data points are also called +outliers, and might often lead to trouble for other scaling +techniques. + + +It also common to split the data in a \textbf{training} set and a \textbf{testing} set. A typical split is to use $80\%$ of the data for training and the rest +for testing. This can be done as follows with our design matrix $\bm{X}$ and data $\bm{y}$ (remember to import \textbf{scikit-learn}) +\begin{print} +# split in training and test data +X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2) +\end{print} +Then we can use the standard scaler to scale our data as +\begin{print} +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) +\end{print} + + +In this exercise we want you to to compute the MSE for the training +data and the test data as function of the complexity of a polynomial, +that is the degree of a given polynomial. We want you also to compute the $R2$ score as function of the complexity of the model for both training data and test data. You should also run the calculation with and without scaling. + +One of +the aims is to reproduce Figure 2.11 of \href{{https://github.com/CompPhysics/MLErasmus/blob/master/doc/Textbooks/elementsstat.pdf}}{Hastie et al}. +We will also use Ridge and Lasso regression. + + +Our data is defined by $x\in [-3,3]$ with a total of for example $100$ data points. +\begin{print} +np.random.seed() +n = 100 +maxdegree = 14 +# Make data set. +x = np.linspace(-3, 3, n).reshape(-1, 1) +y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape) +\end{print} +where $y$ is the function we want to fit with a given polynomial. + + +\subex{a)} +Write a first code which sets up a design matrix $X$ defined by a fifth-order polynomial. Scale your data and split it in training and test data. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +\begin{print} +import matplotlib.pyplot as plt +import numpy as np +from sklearn.linear_model import LinearRegression, Ridge, Lasso +from sklearn.preprocessing import PolynomialFeatures +from sklearn.model_selection import train_test_split +from sklearn.pipeline import make_pipeline + + +np.random.seed(2018) +n = 50 +maxdegree = 5 +# Make data set. +x = np.linspace(-3, 3, n).reshape(-1, 1) +y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape) +TestError = np.zeros(maxdegree) +TrainError = np.zeros(maxdegree) +polydegree = np.zeros(maxdegree) +x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2) +scaler = StandardScaler() +scaler.fit(X_train) +x_train_scaled = scaler.transform(x_train) +x_test_scaled = scaler.transform(x_test) + +for degree in range(maxdegree): + model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) + clf = model.fit(x_train_scale,y_train) + y_fit = clf.predict(x_train_scaled) + y_pred = clf.predict(x_test_scaled) + polydegree[degree] = degree + TestError[degree] = np.mean( np.mean((y_test - y_pred)**2) ) + TrainError[degree] = np.mean( np.mean((y_train - y_fit)**2) ) + +plt.plot(polydegree, TestError, label='Test Error') +plt.plot(polydegree, TrainError, label='Train Error') +plt.legend() +plt.show() +\end{print} + +% --- end solution of exercise --- + +\subex{b)} +Perform an ordinary least squares and compute the means squared error and the $R2$ factor for the training data and the test data, with and without scaling. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +This requires a simple extension to the above code where you simply add a statement calling the $R2$ function included in the same code. + +% --- end solution of exercise --- + +\subex{c)} +Add now a model which allows you to make polynomials up to degree $15$. Perform a standard OLS fitting of the training data and compute the MSE and $R2$ for the training and test data and plot both test and training data MSE and $R2$ as functions of the polynomial degree. Compare what you see with Figure 2.11 of Hastie et al.~Comment your results. For which polynomial degree do you find an optimal MSE (smallest value)? + + +% --- begin solution of exercise --- +\paragraph{Solution.} +Here you simply need to change the degree of the polynomial in the above code to $n=15$. + +% --- end solution of exercise --- + +\subex{d)} +Repeat part (2c) but now using Ridge regressions with various hyperparameters $\lambda$. Make the same plots for the optimal $\lambda$ value for each polynomial degree. Compare these results with those from the standard OLS approach. + + +% --- begin solution of exercise --- +\paragraph{Solution.} +Here you need to add for example the same loop over the parameters $\lambda$ as you did in the first exercise, that is add +\begin{print} +nlambdas = 100 +MSEPredictRidge = np.zeros(nlambdas) +lambdas = np.logspace(-4, 0, nlambdas) +for i in range(nlambdas): + lmb = lambdas[i] + # add ridge + clf_ridge = skl.Ridge(alpha=lmb).fit(X_train_scaled, y_train) + +\end{print} +The plotting functionality of the first exercise can be reused here as well. + +% --- end solution of exercise --- + + + + + +\end{doconceexercise} +% --- end exercise --- + + +% ------------------- end of main content --------------- + +\end{document} +