From 9543b54fea512ee3f844170e5dec7580c526b095 Mon Sep 17 00:00:00 2001 From: Morten Hjorth-Jensen Date: Fri, 16 Sep 2022 15:29:02 +0200 Subject: [PATCH] added video --- doc/pub/week37/html/._week37-bs001.html | 3 + doc/pub/week37/html/week37-reveal.html | 5 + doc/pub/week37/html/week37-solarized.html | 3 + doc/pub/week37/html/week37.html | 3 + doc/pub/week37/ipynb/ipynb-week37-src.tar.gz | Bin 1022692 -> 1022692 bytes doc/pub/week37/ipynb/week37.ipynb | 1294 ++++++++---------- doc/src/week37/week37.do.txt | 1 + 7 files changed, 614 insertions(+), 695 deletions(-) diff --git a/doc/pub/week37/html/._week37-bs001.html b/doc/pub/week37/html/._week37-bs001.html index 6ee2bea7f..b74eac619 100644 --- a/doc/pub/week37/html/._week37-bs001.html +++ b/doc/pub/week37/html/._week37-bs001.html @@ -269,6 +269,9 @@ MathJax.Hub.Config({
  • Video of lecture
  • Friday September 16: Resampling methods, bias-variance, overfitting, Cross-validation and Bootstrapping
  • +

    Recommended Reading:

      diff --git a/doc/pub/week37/html/week37-reveal.html b/doc/pub/week37/html/week37-reveal.html index b70a1e09a..8d14acca9 100644 --- a/doc/pub/week37/html/week37-reveal.html +++ b/doc/pub/week37/html/week37-reveal.html @@ -205,6 +205,11 @@ MathJax.Hub.Config({

    1. Friday September 16: Resampling methods, bias-variance, overfitting, Cross-validation and Bootstrapping
    2. + +

      Recommended Reading:

      diff --git a/doc/pub/week37/html/week37-solarized.html b/doc/pub/week37/html/week37-solarized.html index fbba8964d..9a975f887 100644 --- a/doc/pub/week37/html/week37-solarized.html +++ b/doc/pub/week37/html/week37-solarized.html @@ -246,6 +246,9 @@ MathJax.Hub.Config({
    3. Video of lecture
    4. Friday September 16: Resampling methods, bias-variance, overfitting, Cross-validation and Bootstrapping
    5. +

      Recommended Reading:

        diff --git a/doc/pub/week37/html/week37.html b/doc/pub/week37/html/week37.html index 851920ee8..d76ef8636 100644 --- a/doc/pub/week37/html/week37.html +++ b/doc/pub/week37/html/week37.html @@ -323,6 +323,9 @@ MathJax.Hub.Config({
      1. Video of lecture
      2. Friday September 16: Resampling methods, bias-variance, overfitting, Cross-validation and Bootstrapping
      3. +

        Recommended Reading:

          diff --git a/doc/pub/week37/ipynb/ipynb-week37-src.tar.gz b/doc/pub/week37/ipynb/ipynb-week37-src.tar.gz index ea57fbcbc6c7aa5ad42d0c2db6e5f82fe84a9286..73897c70a99a8f18898ffdfd19a3773edc76d615 100644 GIT binary patch delta 63 zcmWN_rvZR4002Syhpx~V=Ez_;#49#nkBo!MAaL?>iaAC0I~3b_Tu3RE)Y3>Ro%|W3 OmqA9EWR@kdzRw3G;t%!! delta 63 zcmWN_Hvxb!002Syhc1BuA2EXxhM#bNkH}%mj0U*za*8=cwks6JyPrrYmDJKmE1moq Pq?bWPnPiqFu|D?)Or#LE diff --git a/doc/pub/week37/ipynb/week37.ipynb b/doc/pub/week37/ipynb/week37.ipynb index cd5c2e8c0..c1a7869c3 100644 --- a/doc/pub/week37/ipynb/week37.ipynb +++ b/doc/pub/week37/ipynb/week37.ipynb @@ -2,8 +2,10 @@ "cells": [ { "cell_type": "markdown", - "id": "83e91ce3", - "metadata": {}, + "id": "cc0c71d1", + "metadata": { + "editable": true + }, "source": [ "\n", @@ -12,8 +14,10 @@ }, { "cell_type": "markdown", - "id": "88f778c9", - "metadata": {}, + "id": "511144ac", + "metadata": { + "editable": true + }, "source": [ "# Week 37: Summary of Ridge and Lasso Regression and Resampling Methods\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", @@ -25,8 +29,10 @@ }, { "cell_type": "markdown", - "id": "8cad2f0c", - "metadata": {}, + "id": "df6a10b7", + "metadata": { + "editable": true + }, "source": [ "## Plans for week 37\n", "\n", @@ -36,6 +42,8 @@ "\n", "* Friday September 16: Resampling methods, bias-variance, overfitting, Cross-validation and Bootstrapping\n", "\n", + " * [Video of lecture](https://youtu.be/rbaHRF-7bsQ)\n", + "\n", "Recommended Reading:\n", "1. Lectures on Resampling methods (these lectures), see also lectures from week 36\n", "\n", @@ -48,16 +56,20 @@ }, { "cell_type": "markdown", - "id": "197e7446", - "metadata": {}, + "id": "b3399a97", + "metadata": { + "editable": true + }, "source": [ "## Thursday September 15, Summary of Ridge and Lasso Regression and start Resampling methods" ] }, { "cell_type": "markdown", - "id": "04951cec", - "metadata": {}, + "id": "a5497ce9", + "metadata": { + "editable": true + }, "source": [ "## Deriving OLS from a probability distribution\n", "\n", @@ -77,8 +89,10 @@ }, { "cell_type": "markdown", - "id": "ce4380d8", - "metadata": {}, + "id": "984d8032", + "metadata": { + "editable": true + }, "source": [ "$$\n", "y_i\\sim \\mathcal{N}(\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta}, \\sigma^2)=\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]}.\n", @@ -87,8 +101,10 @@ }, { "cell_type": "markdown", - "id": "206592ba", - "metadata": {}, + "id": "02b5129a", + "metadata": { + "editable": true + }, "source": [ "## Independent and Identically Distrubuted (iid)\n", "\n", @@ -98,8 +114,10 @@ }, { "cell_type": "markdown", - "id": "4a0d88d0", - "metadata": {}, + "id": "93be1e13", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p(y_i, \\boldsymbol{X}\\vert\\boldsymbol{\\beta})=\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]},\n", @@ -108,8 +126,10 @@ }, { "cell_type": "markdown", - "id": "e6c7ba75", - "metadata": {}, + "id": "14d4d511", + "metadata": { + "editable": true + }, "source": [ "which reads as finding the likelihood of an event $y_i$ with the input variables $\\boldsymbol{X}$ given the parameters (to be determined) $\\boldsymbol{\\beta}$.\n", "\n", @@ -118,8 +138,10 @@ }, { "cell_type": "markdown", - "id": "665e0170", - "metadata": {}, + "id": "faae8a23", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p(\\boldsymbol{y},\\boldsymbol{X}\\vert\\boldsymbol{\\beta})=\\prod_{i=0}^{n-1}\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]}=\\prod_{i=0}^{n-1}p(y_i,\\boldsymbol{X}\\vert\\boldsymbol{\\beta}).\n", @@ -128,8 +150,10 @@ }, { "cell_type": "markdown", - "id": "73636714", - "metadata": {}, + "id": "d1c4d084", + "metadata": { + "editable": true + }, "source": [ "We will write this in a more compact form reserving $\\boldsymbol{D}$ for the domain of events, including the ouputs (targets) and the inputs. That is\n", "in case we have a simple one-dimensional input and output case" @@ -137,8 +161,10 @@ }, { "cell_type": "markdown", - "id": "ad90bb50", - "metadata": {}, + "id": "168d47c1", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\boldsymbol{D}=[(x_0,y_0), (x_1,y_1),\\dots, (x_{n-1},y_{n-1})].\n", @@ -147,8 +173,10 @@ }, { "cell_type": "markdown", - "id": "24493b42", - "metadata": {}, + "id": "b3ae64c2", + "metadata": { + "editable": true + }, "source": [ "In the more general case the various inputs should be replaced by the possible features represented by the input data set $\\boldsymbol{X}$. \n", "We can now rewrite the above probability as" @@ -156,8 +184,10 @@ }, { "cell_type": "markdown", - "id": "fd50e415", - "metadata": {}, + "id": "10ddf118", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p(\\boldsymbol{D}\\vert\\boldsymbol{\\beta})=\\prod_{i=0}^{n-1}\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]}.\n", @@ -166,16 +196,20 @@ }, { "cell_type": "markdown", - "id": "3d8e865e", - "metadata": {}, + "id": "0d08ac4f", + "metadata": { + "editable": true + }, "source": [ "It is a conditional probability (see below) and reads as the likelihood of a domain of events $\\boldsymbol{D}$ given a set of parameters $\\boldsymbol{\\beta}$." ] }, { "cell_type": "markdown", - "id": "17f93455", - "metadata": {}, + "id": "e315f879", + "metadata": { + "editable": true + }, "source": [ "## Maximum Likelihood Estimation (MLE)\n", "\n", @@ -203,8 +237,10 @@ }, { "cell_type": "markdown", - "id": "9d6b2b2a", - "metadata": {}, + "id": "22e448e4", + "metadata": { + "editable": true + }, "source": [ "## A new Cost Function\n", "\n", @@ -213,8 +249,10 @@ }, { "cell_type": "markdown", - "id": "03ca6196", - "metadata": {}, + "id": "dc773d05", + "metadata": { + "editable": true + }, "source": [ "$$\n", "C(\\boldsymbol{\\beta})=-\\log{\\prod_{i=0}^{n-1}p(y_i,\\boldsymbol{X}\\vert\\boldsymbol{\\beta})}=-\\sum_{i=0}^{n-1}\\log{p(y_i,\\boldsymbol{X}\\vert\\boldsymbol{\\beta})},\n", @@ -223,16 +261,20 @@ }, { "cell_type": "markdown", - "id": "a9f157c0", - "metadata": {}, + "id": "01e61d5c", + "metadata": { + "editable": true + }, "source": [ "which becomes" ] }, { "cell_type": "markdown", - "id": "7a0b2baa", - "metadata": {}, + "id": "0153f222", + "metadata": { + "editable": true + }, "source": [ "$$\n", "C(\\boldsymbol{\\beta})=\\frac{n}{2}\\log{2\\pi\\sigma^2}+\\frac{\\vert\\vert (\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\vert\\vert_2^2}{2\\sigma^2}.\n", @@ -241,16 +283,20 @@ }, { "cell_type": "markdown", - "id": "0500cb7f", - "metadata": {}, + "id": "86336c8a", + "metadata": { + "editable": true + }, "source": [ "Taking the derivative of the *new* cost function with respect to the parameters $\\beta$ we recognize our familiar OLS equation, namely" ] }, { "cell_type": "markdown", - "id": "98951cc5", - "metadata": {}, + "id": "eb46993a", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\boldsymbol{X}^T\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right) =0,\n", @@ -259,16 +305,20 @@ }, { "cell_type": "markdown", - "id": "a168a53a", - "metadata": {}, + "id": "1912c6ea", + "metadata": { + "editable": true + }, "source": [ "which leads to the well-known OLS equation for the optimal paramters $\\beta$" ] }, { "cell_type": "markdown", - "id": "40c3e355", - "metadata": {}, + "id": "be1140f2", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\hat{\\boldsymbol{\\beta}}^{\\mathrm{OLS}}=\\left(\\boldsymbol{X}^T\\boldsymbol{X}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y}!\n", @@ -277,8 +327,10 @@ }, { "cell_type": "markdown", - "id": "690e5ebd", - "metadata": {}, + "id": "d846ace7", + "metadata": { + "editable": true + }, "source": [ "## Bayes' Theorem\n", "\n", @@ -287,8 +339,10 @@ }, { "cell_type": "markdown", - "id": "d5e4d063", - "metadata": {}, + "id": "e2332a6d", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p(X\\vert Y)= \\frac{p(X,Y)}{p(Y)},\n", @@ -297,16 +351,20 @@ }, { "cell_type": "markdown", - "id": "f3c99110", - "metadata": {}, + "id": "906102d2", + "metadata": { + "editable": true + }, "source": [ "which we can rewrite as" ] }, { "cell_type": "markdown", - "id": "8b94286b", - "metadata": {}, + "id": "6684085f", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p(X\\vert Y)= \\frac{p(X,Y)}{\\sum_{i=0}^{n-1}p(Y\\vert X=x_i)p(x_i)}=\\frac{p(Y\\vert X)p(X)}{\\sum_{i=0}^{n-1}p(Y\\vert X=x_i)p(x_i)},\n", @@ -315,16 +373,20 @@ }, { "cell_type": "markdown", - "id": "274f358c", - "metadata": {}, + "id": "9f9157a8", + "metadata": { + "editable": true + }, "source": [ "which is Bayes' theorem. It allows us to evaluate the uncertainty in in $X$ after we have observed $Y$. We can easily interchange $X$ with $Y$." ] }, { "cell_type": "markdown", - "id": "75c6245e", - "metadata": {}, + "id": "9990709f", + "metadata": { + "editable": true + }, "source": [ "## Interpretations of Bayes' Theorem\n", "\n", @@ -338,8 +400,10 @@ }, { "cell_type": "markdown", - "id": "c813eb77", - "metadata": {}, + "id": "31930429", + "metadata": { + "editable": true + }, "source": [ "## Test Function for what happens with OLS, Ridge and Lasso\n", "\n", @@ -355,8 +419,11 @@ { "cell_type": "code", "execution_count": 1, - "id": "6bef25fe", - "metadata": {}, + "id": "48aadabf", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "%matplotlib inline\n", @@ -428,16 +495,20 @@ }, { "cell_type": "markdown", - "id": "0ff10c31", - "metadata": {}, + "id": "7f4aa90e", + "metadata": { + "editable": true + }, "source": [ "How can we understand this?" ] }, { "cell_type": "markdown", - "id": "c072a6dd", - "metadata": {}, + "id": "00c84a14", + "metadata": { + "editable": true + }, "source": [ "## Rerunning the above code\n", "\n", @@ -464,8 +535,11 @@ { "cell_type": "code", "execution_count": 2, - "id": "71231be2", - "metadata": {}, + "id": "427863da", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -510,8 +584,10 @@ }, { "cell_type": "markdown", - "id": "b9475a90", - "metadata": {}, + "id": "7793d61f", + "metadata": { + "editable": true + }, "source": [ "## Invoking Bayes' theorem\n", "\n", @@ -522,8 +598,10 @@ }, { "cell_type": "markdown", - "id": "1b3063f0", - "metadata": {}, + "id": "18d91927", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\boldsymbol{D}=[(x_0,y_0), (x_1,y_1),\\dots, (x_{n-1},y_{n-1})],\n", @@ -532,16 +610,20 @@ }, { "cell_type": "markdown", - "id": "e48ff5b1", - "metadata": {}, + "id": "3afb0247", + "metadata": { + "editable": true + }, "source": [ "is given by" ] }, { "cell_type": "markdown", - "id": "d731fabe", - "metadata": {}, + "id": "64cc56ca", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p(\\boldsymbol{D}\\vert\\boldsymbol{\\beta})=\\prod_{i=0}^{n-1}\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]}.\n", @@ -550,16 +632,20 @@ }, { "cell_type": "markdown", - "id": "4cfd7f0e", - "metadata": {}, + "id": "993f2980", + "metadata": { + "editable": true + }, "source": [ "In Bayes' theorem this function plays the role of the so-called likelihood. We could now ask the question what is the posterior probability of a parameter set $\\boldsymbol{\\beta}$ given a domain of events $\\boldsymbol{D}$? That is, how can we define the posterior probability" ] }, { "cell_type": "markdown", - "id": "8f7e06da", - "metadata": {}, + "id": "db3fb09e", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p(\\boldsymbol{\\beta}\\vert\\boldsymbol{D}).\n", @@ -568,16 +654,20 @@ }, { "cell_type": "markdown", - "id": "951c18fa", - "metadata": {}, + "id": "8485615d", + "metadata": { + "editable": true + }, "source": [ "Bayes' theorem comes to our rescue here since (omitting the normalization constant)" ] }, { "cell_type": "markdown", - "id": "f830a42e", - "metadata": {}, + "id": "07bde800", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p(\\boldsymbol{\\beta}\\vert\\boldsymbol{D})\\propto p(\\boldsymbol{D}\\vert\\boldsymbol{\\beta})p(\\boldsymbol{\\beta}).\n", @@ -586,16 +676,20 @@ }, { "cell_type": "markdown", - "id": "dc3bb676", - "metadata": {}, + "id": "23cc0b20", + "metadata": { + "editable": true + }, "source": [ "We have a model for $p(\\boldsymbol{D}\\vert\\boldsymbol{\\beta})$ but need one for the **prior** $p(\\boldsymbol{\\beta}$!" ] }, { "cell_type": "markdown", - "id": "36b4dc39", - "metadata": {}, + "id": "ec609bff", + "metadata": { + "editable": true + }, "source": [ "## Ridge and Bayes\n", "\n", @@ -608,8 +702,10 @@ }, { "cell_type": "markdown", - "id": "e58db2db", - "metadata": {}, + "id": "10504e0d", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p(\\boldsymbol{\\beta})=\\prod_{j=0}^{p-1}\\exp{\\left(-\\frac{\\beta_j^2}{2\\tau^2}\\right)}.\n", @@ -618,16 +714,20 @@ }, { "cell_type": "markdown", - "id": "f9d2d731", - "metadata": {}, + "id": "0564cf69", + "metadata": { + "editable": true + }, "source": [ "Our posterior probability becomes then (omitting the normalization factor which is just a constant)" ] }, { "cell_type": "markdown", - "id": "4285c782", - "metadata": {}, + "id": "c7945bdb", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p(\\boldsymbol{\\beta\\vert\\boldsymbol{D})}=\\prod_{i=0}^{n-1}\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]}\\prod_{j=0}^{p-1}\\exp{\\left(-\\frac{\\beta_j^2}{2\\tau^2}\\right)}.\n", @@ -636,8 +736,10 @@ }, { "cell_type": "markdown", - "id": "860c78f8", - "metadata": {}, + "id": "5d7aa455", + "metadata": { + "editable": true + }, "source": [ "We can now optimize this quantity with respect to $\\boldsymbol{\\beta}$. As we\n", "did for OLS, this is most conveniently done by taking the negative\n", @@ -647,8 +749,10 @@ }, { "cell_type": "markdown", - "id": "5f736b0d", - "metadata": {}, + "id": "d6616c61", + "metadata": { + "editable": true + }, "source": [ "$$\n", "C(\\boldsymbol{\\beta})=\\frac{\\vert\\vert (\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\vert\\vert_2^2}{2\\sigma^2}+\\frac{1}{2\\tau^2}\\vert\\vert\\boldsymbol{\\beta}\\vert\\vert_2^2,\n", @@ -657,16 +761,20 @@ }, { "cell_type": "markdown", - "id": "a8336ec5", - "metadata": {}, + "id": "351d0be7", + "metadata": { + "editable": true + }, "source": [ "and replacing $1/2\\tau^2$ with $\\lambda$ we have" ] }, { "cell_type": "markdown", - "id": "d29a5d9d", - "metadata": {}, + "id": "149edd18", + "metadata": { + "editable": true + }, "source": [ "$$\n", "C(\\boldsymbol{\\beta})=\\frac{\\vert\\vert (\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\vert\\vert_2^2}{2\\sigma^2}+\\lambda\\vert\\vert\\boldsymbol{\\beta}\\vert\\vert_2^2,\n", @@ -675,16 +783,20 @@ }, { "cell_type": "markdown", - "id": "b33925a8", - "metadata": {}, + "id": "a242ce8c", + "metadata": { + "editable": true + }, "source": [ "which is our Ridge cost function! Nice, isn't it?" ] }, { "cell_type": "markdown", - "id": "7af8aa06", - "metadata": {}, + "id": "78dbcd53", + "metadata": { + "editable": true + }, "source": [ "## Lasso and Bayes\n", "\n", @@ -693,8 +805,10 @@ }, { "cell_type": "markdown", - "id": "3b620f9e", - "metadata": {}, + "id": "1d53e2c6", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p(\\boldsymbol{\\beta})=\\prod_{j=0}^{p-1}\\exp{\\left(-\\frac{\\vert\\beta_j\\vert}{\\tau}\\right)}.\n", @@ -703,16 +817,20 @@ }, { "cell_type": "markdown", - "id": "8dda9b19", - "metadata": {}, + "id": "ae18584a", + "metadata": { + "editable": true + }, "source": [ "Our posterior probability becomes then (omitting the normalization factor which is just a constant)" ] }, { "cell_type": "markdown", - "id": "9094fb73", - "metadata": {}, + "id": "07165c37", + "metadata": { + "editable": true + }, "source": [ "$$\n", "p(\\boldsymbol{\\beta}\\vert\\boldsymbol{D})=\\prod_{i=0}^{n-1}\\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp{\\left[-\\frac{(y_i-\\boldsymbol{X}_{i,*}\\boldsymbol{\\beta})^2}{2\\sigma^2}\\right]}\\prod_{j=0}^{p-1}\\exp{\\left(-\\frac{\\vert\\beta_j\\vert}{\\tau}\\right)}.\n", @@ -721,8 +839,10 @@ }, { "cell_type": "markdown", - "id": "3566a77d", - "metadata": {}, + "id": "7ec9dd3e", + "metadata": { + "editable": true + }, "source": [ "Taking the negative\n", "logarithm of the posterior probability and leaving out the\n", @@ -731,8 +851,10 @@ }, { "cell_type": "markdown", - "id": "afd5b520", - "metadata": {}, + "id": "d17bd7c8", + "metadata": { + "editable": true + }, "source": [ "$$\n", "C(\\boldsymbol{\\beta}=\\frac{\\vert\\vert (\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\vert\\vert_2^2}{2\\sigma^2}+\\frac{1}{\\tau}\\vert\\vert\\boldsymbol{\\beta}\\vert\\vert_1,\n", @@ -741,16 +863,20 @@ }, { "cell_type": "markdown", - "id": "fedb062e", - "metadata": {}, + "id": "83d7c64a", + "metadata": { + "editable": true + }, "source": [ "and replacing $1/\\tau$ with $\\lambda$ we have" ] }, { "cell_type": "markdown", - "id": "1c402711", - "metadata": {}, + "id": "47622e31", + "metadata": { + "editable": true + }, "source": [ "$$\n", "C(\\boldsymbol{\\beta}=\\frac{\\vert\\vert (\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\vert\\vert_2^2}{2\\sigma^2}+\\lambda\\vert\\vert\\boldsymbol{\\beta}\\vert\\vert_1,\n", @@ -759,16 +885,20 @@ }, { "cell_type": "markdown", - "id": "ca3ffbe8", - "metadata": {}, + "id": "1a655c74", + "metadata": { + "editable": true + }, "source": [ "which is our Lasso cost function!" ] }, { "cell_type": "markdown", - "id": "ef5649aa", - "metadata": {}, + "id": "f99be513", + "metadata": { + "editable": true + }, "source": [ "## Why resampling methods\n", "\n", @@ -784,8 +914,10 @@ }, { "cell_type": "markdown", - "id": "733c5a10", - "metadata": {}, + "id": "4af152de", + "metadata": { + "editable": true + }, "source": [ "## Resampling methods\n", "Resampling methods are an indispensable tool in modern\n", @@ -810,8 +942,10 @@ }, { "cell_type": "markdown", - "id": "8ab3bfdd", - "metadata": {}, + "id": "f6ad8a93", + "metadata": { + "editable": true + }, "source": [ "## Resampling approaches can be computationally expensive\n", "\n", @@ -834,8 +968,10 @@ }, { "cell_type": "markdown", - "id": "a9ec244e", - "metadata": {}, + "id": "5ab2023d", + "metadata": { + "editable": true + }, "source": [ "## Why resampling methods ?\n", "**Statistical analysis.**\n", @@ -849,8 +985,10 @@ }, { "cell_type": "markdown", - "id": "c48eb948", - "metadata": {}, + "id": "0842dcc6", + "metadata": { + "editable": true + }, "source": [ "## Statistical analysis\n", "\n", @@ -867,8 +1005,10 @@ }, { "cell_type": "markdown", - "id": "00971958", - "metadata": {}, + "id": "12cdd95a", + "metadata": { + "editable": true + }, "source": [ "## Resampling methods\n", "\n", @@ -894,8 +1034,10 @@ }, { "cell_type": "markdown", - "id": "65d9f81b", - "metadata": {}, + "id": "d49e1e28", + "metadata": { + "editable": true + }, "source": [ "## Resampling methods: Jackknife and Bootstrap\n", "\n", @@ -917,8 +1059,10 @@ }, { "cell_type": "markdown", - "id": "cadd98e1", - "metadata": {}, + "id": "031f7a80", + "metadata": { + "editable": true + }, "source": [ "## Resampling methods: Jackknife\n", "\n", @@ -929,8 +1073,10 @@ }, { "cell_type": "markdown", - "id": "e652a034", - "metadata": {}, + "id": "d6318ccc", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\boldsymbol{x}_i = (x_1,x_2,\\cdots,x_{i-1},x_{i+1},\\cdots,x_n),\n", @@ -939,8 +1085,10 @@ }, { "cell_type": "markdown", - "id": "286616bf", - "metadata": {}, + "id": "ffd2a2c0", + "metadata": { + "editable": true + }, "source": [ "which equals the vector $\\boldsymbol{x}$ with the exception that observation\n", "number $i$ is left out. Using this notation, define\n", @@ -950,8 +1098,10 @@ }, { "cell_type": "markdown", - "id": "62d35d9a", - "metadata": {}, + "id": "6cc1c7e3", + "metadata": { + "editable": true + }, "source": [ "## Jackknife code example" ] @@ -959,8 +1109,11 @@ { "cell_type": "code", "execution_count": 3, - "id": "b452c740", - "metadata": {}, + "id": "e560f394", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "from numpy import *\n", @@ -995,8 +1148,10 @@ }, { "cell_type": "markdown", - "id": "4423761d", - "metadata": {}, + "id": "39c01626", + "metadata": { + "editable": true + }, "source": [ "## Resampling methods: Bootstrap\n", "Bootstrapping is a [non-parametric approach](https://en.wikipedia.org/wiki/Nonparametric_statistics) to statistical inference\n", @@ -1018,8 +1173,10 @@ }, { "cell_type": "markdown", - "id": "9e042d22", - "metadata": {}, + "id": "df4c6430", + "metadata": { + "editable": true + }, "source": [ "## The Central Limit Theorem\n", "\n", @@ -1036,8 +1193,10 @@ }, { "cell_type": "markdown", - "id": "17dabd08", - "metadata": {}, + "id": "9f1bb8e8", + "metadata": { + "editable": true + }, "source": [ "$$\n", "z=\\frac{x_1+x_2+\\dots+x_m}{m},\n", @@ -1046,16 +1205,20 @@ }, { "cell_type": "markdown", - "id": "29decc08", - "metadata": {}, + "id": "6b38d44b", + "metadata": { + "editable": true + }, "source": [ "the question we pose is which is the PDF of the new variable $z$." ] }, { "cell_type": "markdown", - "id": "74dded9c", - "metadata": {}, + "id": "96296890", + "metadata": { + "editable": true + }, "source": [ "## Finding the Limit\n", "\n", @@ -1067,8 +1230,10 @@ }, { "cell_type": "markdown", - "id": "ae938950", - "metadata": {}, + "id": "2e6b2d69", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\tilde{p}(z)=\\int dx_1p(x_1)\\int dx_2p(x_2)\\dots\\int dx_mp(x_m)\n", @@ -1078,8 +1243,10 @@ }, { "cell_type": "markdown", - "id": "fe91bf5a", - "metadata": {}, + "id": "d6f4c203", + "metadata": { + "editable": true + }, "source": [ "where the $\\delta$-function enbodies the constraint that the mean is $z$.\n", "All measurements that lead to each individual $x_i$ are expected to\n", @@ -1089,8 +1256,10 @@ }, { "cell_type": "markdown", - "id": "3e0ba223", - "metadata": {}, + "id": "9c63f4f3", + "metadata": { + "editable": true + }, "source": [ "## Rewriting the $\\delta$-function\n", "\n", @@ -1099,8 +1268,10 @@ }, { "cell_type": "markdown", - "id": "5f44dec4", - "metadata": {}, + "id": "ccb553e6", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\delta(z-\\frac{x_1+x_2+\\dots+x_m}{m})=\\frac{1}{2\\pi}\\int_{-\\infty}^{\\infty}\n", @@ -1110,8 +1281,10 @@ }, { "cell_type": "markdown", - "id": "04f24465", - "metadata": {}, + "id": "cb3765b1", + "metadata": { + "editable": true + }, "source": [ "and inserting $e^{i\\mu q-i\\mu q}$ where $\\mu$ is the mean value\n", "we arrive at" @@ -1119,8 +1292,10 @@ }, { "cell_type": "markdown", - "id": "c4d46b5b", - "metadata": {}, + "id": "9c58a610", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\tilde{p}(z)=\\frac{1}{2\\pi}\\int_{-\\infty}^{\\infty}\n", @@ -1131,16 +1306,20 @@ }, { "cell_type": "markdown", - "id": "75f7562f", - "metadata": {}, + "id": "56dab40f", + "metadata": { + "editable": true + }, "source": [ "with the integral over $x$ resulting in" ] }, { "cell_type": "markdown", - "id": "1b4315d0", - "metadata": {}, + "id": "b3ac097e", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\int_{-\\infty}^{\\infty}dxp(x)\\exp{\\left(iq(\\mu-x)/m\\right)}=\n", @@ -1151,8 +1330,10 @@ }, { "cell_type": "markdown", - "id": "904ccefa", - "metadata": {}, + "id": "8d6e0b54", + "metadata": { + "editable": true + }, "source": [ "## Identifying Terms\n", "\n", @@ -1162,8 +1343,10 @@ }, { "cell_type": "markdown", - "id": "947e35c0", - "metadata": {}, + "id": "d232c1a2", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\int_{-\\infty}^{\\infty}dxp(x)e^{\\left(iq(\\mu-x)/m\\right)}=\n", @@ -1173,16 +1356,20 @@ }, { "cell_type": "markdown", - "id": "e8c626e4", - "metadata": {}, + "id": "f9f51ccc", + "metadata": { + "editable": true + }, "source": [ "resulting in" ] }, { "cell_type": "markdown", - "id": "c51cb4dd", - "metadata": {}, + "id": "1b673347", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\left[\\int_{-\\infty}^{\\infty}dxp(x)\\exp{\\left(iq(\\mu-x)/m\\right)}\\right]^m\\approx\n", @@ -1192,16 +1379,20 @@ }, { "cell_type": "markdown", - "id": "d5b1a803", - "metadata": {}, + "id": "43ea6583", + "metadata": { + "editable": true + }, "source": [ "and in the limit $m\\rightarrow \\infty$ we obtain" ] }, { "cell_type": "markdown", - "id": "1a142b5a", - "metadata": {}, + "id": "fb0cf178", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\tilde{p}(z)=\\frac{1}{\\sqrt{2\\pi}(\\sigma/\\sqrt{m})}\n", @@ -1211,8 +1402,10 @@ }, { "cell_type": "markdown", - "id": "0dc30002", - "metadata": {}, + "id": "43479ea3", + "metadata": { + "editable": true + }, "source": [ "which is the normal distribution with variance\n", "$\\sigma^2_m=\\sigma^2/m$, where $\\sigma$ is the variance of the PDF $p(x)$\n", @@ -1221,8 +1414,10 @@ }, { "cell_type": "markdown", - "id": "26f23bd8", - "metadata": {}, + "id": "9b13f71f", + "metadata": { + "editable": true + }, "source": [ "## Wrapping it up\n", "\n", @@ -1238,8 +1433,10 @@ }, { "cell_type": "markdown", - "id": "99e316c5", - "metadata": {}, + "id": "0c7e43d9", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\sigma_m=\n", @@ -1249,8 +1446,10 @@ }, { "cell_type": "markdown", - "id": "35830d99", - "metadata": {}, + "id": "e48629c1", + "metadata": { + "editable": true + }, "source": [ "The latter is true only if the average value is known exactly. This is obtained in the limit\n", "$m\\rightarrow \\infty$ only. Because the mean and the variance are measured quantities we obtain \n", @@ -1259,8 +1458,10 @@ }, { "cell_type": "markdown", - "id": "989bfe6a", - "metadata": {}, + "id": "198ed5d9", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\sigma_m\\approx \n", @@ -1270,8 +1471,10 @@ }, { "cell_type": "markdown", - "id": "9cb57daf", - "metadata": {}, + "id": "4f3d1bf0", + "metadata": { + "editable": true + }, "source": [ "In many cases however the above estimate for the standard deviation,\n", "in particular if correlations are strong, may be too simplistic. Keep\n", @@ -1288,8 +1491,10 @@ }, { "cell_type": "markdown", - "id": "311a55d9", - "metadata": {}, + "id": "1c231229", + "metadata": { + "editable": true + }, "source": [ "## Confidence Intervals\n", "\n", @@ -1309,8 +1514,10 @@ }, { "cell_type": "markdown", - "id": "209dfe12", - "metadata": {}, + "id": "8383b2e9", + "metadata": { + "editable": true + }, "source": [ "## Standard Approach based on the Normal Distribution\n", "\n", @@ -1322,8 +1529,10 @@ }, { "cell_type": "markdown", - "id": "9ddf4ef4", - "metadata": {}, + "id": "f34de276", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\left(\\mu_{\\beta}\\pm \\frac{z\\sigma_{\\beta}}{\\sqrt{n}}\\right),\n", @@ -1332,8 +1541,10 @@ }, { "cell_type": "markdown", - "id": "4b2b7bfc", - "metadata": {}, + "id": "b2a06044", + "metadata": { + "editable": true + }, "source": [ "where $z$ defines the level of certainty (or confidence). For a normal\n", "distribution typical parameters are $z=2.576$ which corresponds to a\n", @@ -1350,8 +1561,10 @@ }, { "cell_type": "markdown", - "id": "8999dff6", - "metadata": {}, + "id": "b0704845", + "metadata": { + "editable": true + }, "source": [ "## Resampling methods: Bootstrap background\n", "\n", @@ -1368,8 +1581,10 @@ }, { "cell_type": "markdown", - "id": "982d5fbc", - "metadata": {}, + "id": "dd91a038", + "metadata": { + "editable": true + }, "source": [ "## Resampling methods: More Bootstrap background\n", "\n", @@ -1390,8 +1605,10 @@ }, { "cell_type": "markdown", - "id": "2ae38e48", - "metadata": {}, + "id": "47ea4783", + "metadata": { + "editable": true + }, "source": [ "## Resampling methods: Bootstrap approach\n", "\n", @@ -1409,8 +1626,10 @@ }, { "cell_type": "markdown", - "id": "bd20d60a", - "metadata": {}, + "id": "e90cd0f7", + "metadata": { + "editable": true + }, "source": [ "## Resampling methods: Bootstrap steps\n", "\n", @@ -1437,8 +1656,10 @@ }, { "cell_type": "markdown", - "id": "0c72fdb0", - "metadata": {}, + "id": "d86c387c", + "metadata": { + "editable": true + }, "source": [ "## Code example for the Bootstrap method\n", "\n", @@ -1458,20 +1679,13 @@ }, { "cell_type": "code", - "execution_count": 43, - "id": "49104a67", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Bootstrap Statistics :\n", - "original bias std. error\n", - " 100.98 14.9328 100.98 0.472154\n" - ] - } - ], + "execution_count": 4, + "id": "898b8352", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "import numpy as np\n", "from time import time\n", @@ -1494,48 +1708,42 @@ "\n", "# We set the mean value to 100 and the standard deviation to 15\n", "mu, sigma = 100, 15\n", - "datapoints = 1000\n", + "datapoints = 10000\n", "# We generate random numbers according to the normal distribution\n", "x = mu + sigma*np.random.randn(datapoints)\n", "# bootstrap returns the data sample \n", - "t = bootstrap(x, datapoints*1000)" + "t = bootstrap(x, datapoints)" ] }, { "cell_type": "markdown", - "id": "27642741", - "metadata": {}, + "id": "1908b6ac", + "metadata": { + "editable": true + }, "source": [ "We see that our new variance and from that the standard deviation, agrees with the central limit theorem." ] }, { "cell_type": "markdown", - "id": "e91dfb35", - "metadata": {}, + "id": "1d1331d3", + "metadata": { + "editable": true + }, "source": [ "## Plotting the Histogram" ] }, { "cell_type": "code", - "execution_count": 45, - "id": "3f088b19", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
          " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "execution_count": 5, + "id": "63f68338", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "# the histogram of the bootstrapped data (normalized data if density = True)\n", "n, binsboot, patches = plt.hist(t, 50, density=True, facecolor='red', alpha=0.75)\n", @@ -1550,8 +1758,10 @@ }, { "cell_type": "markdown", - "id": "1d36aae1", - "metadata": {}, + "id": "85b1e664", + "metadata": { + "editable": true + }, "source": [ "## The bias-variance tradeoff\n", "\n", @@ -1566,8 +1776,10 @@ }, { "cell_type": "markdown", - "id": "b1ed3d14", - "metadata": {}, + "id": "32db9b91", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\boldsymbol{y}=f(\\boldsymbol{x}) + \\boldsymbol{\\epsilon}\n", @@ -1576,8 +1788,10 @@ }, { "cell_type": "markdown", - "id": "d05df5cd", - "metadata": {}, + "id": "40d85d4f", + "metadata": { + "editable": true + }, "source": [ "where $\\epsilon$ is normally distributed with mean zero and standard deviation $\\sigma^2$.\n", "\n", @@ -1591,8 +1805,10 @@ }, { "cell_type": "markdown", - "id": "757ce9bd", - "metadata": {}, + "id": "e74e7a8e", + "metadata": { + "editable": true + }, "source": [ "$$\n", "C(\\boldsymbol{X},\\boldsymbol{\\beta}) =\\frac{1}{n}\\sum_{i=0}^{n-1}(y_i-\\tilde{y}_i)^2=\\mathbb{E}\\left[(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}})^2\\right].\n", @@ -1601,16 +1817,20 @@ }, { "cell_type": "markdown", - "id": "0e176bde", - "metadata": {}, + "id": "266728ac", + "metadata": { + "editable": true + }, "source": [ "We can rewrite this as" ] }, { "cell_type": "markdown", - "id": "6227b309", - "metadata": {}, + "id": "dfb670ba", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\mathbb{E}\\left[(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}})^2\\right]=\\frac{1}{n}\\sum_i(f_i-\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right])^2+\\frac{1}{n}\\sum_i(\\tilde{y}_i-\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right])^2+\\sigma^2.\n", @@ -1619,8 +1839,10 @@ }, { "cell_type": "markdown", - "id": "ad1dab0e", - "metadata": {}, + "id": "dddc050c", + "metadata": { + "editable": true + }, "source": [ "The three terms represent the square of the bias of the learning\n", "method, which can be thought of as the error caused by the simplifying\n", @@ -1634,8 +1856,10 @@ }, { "cell_type": "markdown", - "id": "37753004", - "metadata": {}, + "id": "c7f9a599", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\mathbb{E}\\left[(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}})^2\\right]=\\mathbb{E}\\left[(\\boldsymbol{f}+\\boldsymbol{\\epsilon}-\\boldsymbol{\\tilde{y}})^2\\right],\n", @@ -1644,16 +1868,20 @@ }, { "cell_type": "markdown", - "id": "59e6e439", - "metadata": {}, + "id": "0bea4a68", + "metadata": { + "editable": true + }, "source": [ "and adding and subtracting $\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right]$ we get" ] }, { "cell_type": "markdown", - "id": "5bd100b3", - "metadata": {}, + "id": "f85528f1", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\mathbb{E}\\left[(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}})^2\\right]=\\mathbb{E}\\left[(\\boldsymbol{f}+\\boldsymbol{\\epsilon}-\\boldsymbol{\\tilde{y}}+\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right]-\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right])^2\\right],\n", @@ -1662,16 +1890,20 @@ }, { "cell_type": "markdown", - "id": "c3a847fc", - "metadata": {}, + "id": "e6781c37", + "metadata": { + "editable": true + }, "source": [ "which, using the abovementioned expectation values can be rewritten as" ] }, { "cell_type": "markdown", - "id": "a52ccb28", - "metadata": {}, + "id": "6ce696d3", + "metadata": { + "editable": true + }, "source": [ "$$\n", "\\mathbb{E}\\left[(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}})^2\\right]=\\mathbb{E}\\left[(\\boldsymbol{y}-\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right])^2\\right]+\\mathrm{Var}\\left[\\boldsymbol{\\tilde{y}}\\right]+\\sigma^2,\n", @@ -1680,16 +1912,20 @@ }, { "cell_type": "markdown", - "id": "9d662c2b", - "metadata": {}, + "id": "cd06d66f", + "metadata": { + "editable": true + }, "source": [ "that is the rewriting in terms of the so-called bias, the variance of the model $\\boldsymbol{\\tilde{y}}$ and the variance of $\\boldsymbol{\\epsilon}$." ] }, { "cell_type": "markdown", - "id": "fa90fc6f", - "metadata": {}, + "id": "b7ad09fb", + "metadata": { + "editable": true + }, "source": [ "## A way to Read the Bias-Variance Tradeoff\n", "\n", @@ -1702,8 +1938,10 @@ }, { "cell_type": "markdown", - "id": "7338e614", - "metadata": {}, + "id": "570c05e7", + "metadata": { + "editable": true + }, "source": [ "## Example code for Bias-Variance tradeoff" ] @@ -1711,8 +1949,11 @@ { "cell_type": "code", "execution_count": 6, - "id": "af3464ee", - "metadata": {}, + "id": "5c934b91", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", @@ -1773,187 +2014,23 @@ }, { "cell_type": "markdown", - "id": "aa9520b0", - "metadata": {}, + "id": "395933e9", + "metadata": { + "editable": true + }, "source": [ "## Understanding what happens" ] }, { "cell_type": "code", - "execution_count": 26, - "id": "73f2eca3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Polynomial degree: 0\n", - "Error: 0.26087768276700507\n", - "Bias^2: 0.26052569836894607\n", - "Var: 0.0003519843980589661\n", - "0.26087768276700507 >= 0.26052569836894607 + 0.0003519843980589661 = 0.260877682767005\n", - "Polynomial degree: 1\n", - "Error: 0.053382765951161\n", - "Bias^2: 0.05318651093756056\n", - "Var: 0.00019625501360042666\n", - "0.053382765951161 >= 0.05318651093756056 + 0.00019625501360042666 = 0.05338276595116099\n", - "Polynomial degree: 2\n", - "Error: 0.043773583720810236\n", - "Bias^2: 0.04357423223551591\n", - "Var: 0.0001993514852943256\n", - "0.043773583720810236 >= 0.04357423223551591 + 0.0001993514852943256 = 0.043773583720810236\n", - "Polynomial degree: 3\n", - "Error: 0.031197038899385843\n", - "Bias^2: 0.031066627201582195\n", - "Var: 0.00013041169780364913\n", - "0.031197038899385843 >= 0.031066627201582195 + 0.00013041169780364913 = 0.031197038899385843\n", - "Polynomial degree: 4\n", - "Error: 0.03145204033032611\n", - "Bias^2: 0.03128384737396597\n", - "Var: 0.00016819295636012936\n", - "0.03145204033032611 >= 0.03128384737396597 + 0.00016819295636012936 = 0.0314520403303261\n", - "Polynomial degree: 5\n", - "Error: 0.024294961154836727\n", - "Bias^2: 0.024095739273274318\n", - "Var: 0.00019922188156241106\n", - "0.024294961154836727 >= 0.024095739273274318 + 0.00019922188156241106 = 0.02429496115483673\n", - "Polynomial degree: 6\n", - "Error: 0.018177990988184747\n", - "Bias^2: 0.017992891267666858\n", - "Var: 0.00018509972051789316\n", - "0.018177990988184747 >= 0.017992891267666858 + 0.00018509972051789316 = 0.01817799098818475\n", - "Polynomial degree: 7\n", - "Error: 0.016418481005500078\n", - "Bias^2: 0.016250853953449922\n", - "Var: 0.00016762705205016103\n", - "0.016418481005500078 >= 0.016250853953449922 + 0.00016762705205016103 = 0.01641848100550008\n", - "Polynomial degree: 8\n", - "Error: 0.01020684772021719\n", - "Bias^2: 0.01008111928482136\n", - "Var: 0.00012572843539582982\n", - "0.01020684772021719 >= 0.01008111928482136 + 0.00012572843539582982 = 0.01020684772021719\n", - "Polynomial degree: 9\n", - "Error: 0.010228115989514461\n", - "Bias^2: 0.010094633970070172\n", - "Var: 0.00013348201944429208\n", - "0.010228115989514461 >= 0.010094633970070172 + 0.00013348201944429208 = 0.010228115989514465\n", - "Polynomial degree: 10\n", - "Error: 0.008951315810806127\n", - "Bias^2: 0.008802970225636806\n", - "Var: 0.00014834558516931828\n", - "0.008951315810806127 >= 0.008802970225636806 + 0.00014834558516931828 = 0.008951315810806125\n", - "Polynomial degree: 11\n", - "Error: 0.008898789089521025\n", - "Bias^2: 0.008755904845979361\n", - "Var: 0.00014288424354166586\n", - "0.008898789089521025 >= 0.008755904845979361 + 0.00014288424354166586 = 0.008898789089521027\n", - "Polynomial degree: 12\n", - "Error: 0.00883983993996571\n", - "Bias^2: 0.008683837354612235\n", - "Var: 0.00015600258535347283\n", - "0.00883983993996571 >= 0.008683837354612235 + 0.00015600258535347283 = 0.008839839939965708\n", - "Polynomial degree: 13\n", - "Error: 0.008851338849131321\n", - "Bias^2: 0.00868887053563566\n", - "Var: 0.00016246831349566338\n", - "0.008851338849131321 >= 0.00868887053563566 + 0.00016246831349566338 = 0.008851338849131325\n", - "Polynomial degree: 14\n", - "Error: 0.008895421746573474\n", - "Bias^2: 0.008718627885897168\n", - "Var: 0.00017679386067630563\n", - "0.008895421746573474 >= 0.008718627885897168 + 0.00017679386067630563 = 0.008895421746573474\n", - "Polynomial degree: 15\n", - "Error: 0.00893296711730728\n", - "Bias^2: 0.008735995660492287\n", - "Var: 0.0001969714568149956\n", - "0.00893296711730728 >= 0.008735995660492287 + 0.0001969714568149956 = 0.008932967117307284\n", - "Polynomial degree: 16\n", - "Error: 0.008904000035908194\n", - "Bias^2: 0.008699622553996285\n", - "Var: 0.00020437748191191033\n", - "0.008904000035908194 >= 0.008699622553996285 + 0.00020437748191191033 = 0.008904000035908195\n", - "Polynomial degree: 17\n", - "Error: 0.008915069194359894\n", - "Bias^2: 0.008717351152732068\n", - "Var: 0.00019771804162782618\n", - "0.008915069194359894 >= 0.008717351152732068 + 0.00019771804162782618 = 0.008915069194359894\n", - "Polynomial degree: 18\n", - "Error: 0.009093807329071455\n", - "Bias^2: 0.008873475025160346\n", - "Var: 0.0002203323039111055\n", - "0.009093807329071455 >= 0.008873475025160346 + 0.0002203323039111055 = 0.009093807329071451\n", - "Polynomial degree: 19\n", - "Error: 0.00906219988472003\n", - "Bias^2: 0.00881157803101846\n", - "Var: 0.00025062185370156845\n", - "0.00906219988472003 >= 0.00881157803101846 + 0.00025062185370156845 = 0.00906219988472003\n", - "Polynomial degree: 20\n", - "Error: 0.009054865098005092\n", - "Bias^2: 0.008808460138875485\n", - "Var: 0.00024640495912960536\n", - "0.009054865098005092 >= 0.008808460138875485 + 0.00024640495912960536 = 0.00905486509800509\n", - "Polynomial degree: 21\n", - "Error: 0.00912268392536153\n", - "Bias^2: 0.008858372256683041\n", - "Var: 0.000264311668678491\n", - "0.00912268392536153 >= 0.008858372256683041 + 0.000264311668678491 = 0.009122683925361532\n", - "Polynomial degree: 22\n", - "Error: 0.009155485279071781\n", - "Bias^2: 0.00887720054733764\n", - "Var: 0.0002782847317341437\n", - "0.009155485279071781 >= 0.00887720054733764 + 0.0002782847317341437 = 0.009155485279071784\n", - "Polynomial degree: 23\n", - "Error: 0.009104874270764955\n", - "Bias^2: 0.008829235201736825\n", - "Var: 0.0002756390690281291\n", - "0.009104874270764955 >= 0.008829235201736825 + 0.0002756390690281291 = 0.009104874270764955\n", - "Polynomial degree: 24\n", - "Error: 0.009083432385537459\n", - "Bias^2: 0.008794694009143957\n", - "Var: 0.00028873837639350146\n", - "0.009083432385537459 >= 0.008794694009143957 + 0.00028873837639350146 = 0.009083432385537459\n", - "Polynomial degree: 25\n", - "Error: 0.00910156161861507\n", - "Bias^2: 0.008785447302056047\n", - "Var: 0.0003161143165590216\n", - "0.00910156161861507 >= 0.008785447302056047 + 0.0003161143165590216 = 0.009101561618615068\n", - "Polynomial degree: 26\n", - "Error: 0.009185524394453476\n", - "Bias^2: 0.008738174022612297\n", - "Var: 0.0004473503718411749\n", - "0.009185524394453476 >= 0.008738174022612297 + 0.0004473503718411749 = 0.009185524394453472\n", - "Polynomial degree: 27\n", - "Error: 0.009274185679574349\n", - "Bias^2: 0.008747611629354729\n", - "Var: 0.0005265740502196198\n", - "0.009274185679574349 >= 0.008747611629354729 + 0.0005265740502196198 = 0.009274185679574349\n", - "Polynomial degree: 28\n", - "Error: 0.009446579346894237\n", - "Bias^2: 0.008763463749748906\n", - "Var: 0.0006831155971453328\n", - "0.009446579346894237 >= 0.008763463749748906 + 0.0006831155971453328 = 0.009446579346894239\n", - "Polynomial degree: 29\n", - "Error: 0.012280756740836268\n", - "Bias^2: 0.009528944108758548\n", - "Var: 0.002751812632077718\n", - "0.012280756740836268 >= 0.009528944108758548 + 0.002751812632077718 = 0.012280756740836266\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
          " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "execution_count": 7, + "id": "75e27515", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", @@ -1965,9 +2042,9 @@ "\n", "np.random.seed(2018)\n", "\n", - "n = 1000\n", + "n = 40\n", "n_boostraps = 100\n", - "maxdegree = 30\n", + "maxdegree = 14\n", "\n", "\n", "# Make data set.\n", @@ -2005,8 +2082,10 @@ }, { "cell_type": "markdown", - "id": "e8b3e361", - "metadata": {}, + "id": "fdde47a4", + "metadata": { + "editable": true + }, "source": [ "## Summing up\n", "\n", @@ -2041,56 +2120,23 @@ }, { "cell_type": "markdown", - "id": "122aad6f", - "metadata": {}, + "id": "e5f85a4d", + "metadata": { + "editable": true + }, "source": [ "## Another Example from Scikit-Learn's Repository" ] }, { "cell_type": "code", - "execution_count": 27, - "id": "f8996c67", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "============================\n", - "Underfitting vs. Overfitting\n", - "============================\n", - "\n", - "This example demonstrates the problems of underfitting and overfitting and\n", - "how we can use linear regression with polynomial features to approximate\n", - "nonlinear functions. The plot shows the function that we want to approximate,\n", - "which is a part of the cosine function. In addition, the samples from the\n", - "real function and the approximations of different models are displayed. The\n", - "models have polynomial features of different degrees. We can see that a\n", - "linear function (polynomial with degree 1) is not sufficient to fit the\n", - "training samples. This is called **underfitting**. A polynomial of degree 4\n", - "approximates the true function almost perfectly. However, for higher degrees\n", - "the model will **overfit** the training data, i.e. it learns the noise of the\n", - "training data.\n", - "We evaluate quantitatively **overfitting** / **underfitting** by using\n", - "cross-validation. We calculate the mean squared error (MSE) on the validation\n", - "set, the higher, the less likely the model generalizes correctly from the\n", - "training data.\n", - "\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
          " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": 8, + "id": "6239755e", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "\"\"\"\n", "============================\n", @@ -2167,8 +2213,10 @@ }, { "cell_type": "markdown", - "id": "b877b018", - "metadata": {}, + "id": "d8cd04eb", + "metadata": { + "editable": true + }, "source": [ "## Various steps in cross-validation\n", "\n", @@ -2190,8 +2238,10 @@ }, { "cell_type": "markdown", - "id": "4ba845d0", - "metadata": {}, + "id": "a5c56c47", + "metadata": { + "editable": true + }, "source": [ "## Cross-validation in brief\n", "\n", @@ -2216,8 +2266,10 @@ }, { "cell_type": "markdown", - "id": "dbfb73ea", - "metadata": {}, + "id": "768e8160", + "metadata": { + "editable": true + }, "source": [ "## Code Example for Cross-validation and $k$-fold Cross-validation\n", "\n", @@ -2227,8 +2279,11 @@ { "cell_type": "code", "execution_count": 9, - "id": "67a992a9", - "metadata": {}, + "id": "1a239b26", + "metadata": { + "collapsed": false, + "editable": true + }, "outputs": [], "source": [ "import numpy as np\n", @@ -2324,134 +2379,23 @@ }, { "cell_type": "markdown", - "id": "388aeee5", - "metadata": {}, + "id": "f6bbc1d6", + "metadata": { + "editable": true + }, "source": [ "## More examples on bootstrap and cross-validation and errors" ] }, { "cell_type": "code", - "execution_count": 11, - "id": "e39bfca9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Degree of polynomial: 1\n", - "Mean squared error on training data: 447189.75264629\n", - "Mean squared error on test data: 450754.83184480\n", - "Degree of polynomial: 2\n", - "Mean squared error on training data: 115417.39949496\n", - "Mean squared error on test data: 125990.15468321\n", - "Degree of polynomial: 3\n", - "Mean squared error on training data: 8983.07001834\n", - "Mean squared error on test data: 11013.95691906\n", - "Degree of polynomial: 4\n", - "Mean squared error on training data: 306.33788852\n", - "Mean squared error on test data: 408.96161228\n", - "Degree of polynomial: 5\n", - "Mean squared error on training data: 3.86012617\n", - "Mean squared error on test data: 5.74483107\n", - "Degree of polynomial: 6\n", - "Mean squared error on training data: 3.58298460\n", - "Mean squared error on test data: 11.32194102\n", - "Degree of polynomial: 7\n", - "Mean squared error on training data: 0.47739083\n", - "Mean squared error on test data: 2.16915860\n", - "Degree of polynomial: 8\n", - "Mean squared error on training data: 0.04938006\n", - "Mean squared error on test data: 0.15826209\n", - "Degree of polynomial: 9\n", - "Mean squared error on training data: 0.02588343\n", - "Mean squared error on test data: 0.06542264\n", - "Degree of polynomial: 10\n", - "Mean squared error on training data: 0.02458444\n", - "Mean squared error on test data: 0.27700702\n", - "Degree of polynomial: 11\n", - "Mean squared error on training data: 0.01588504\n", - "Mean squared error on test data: 12.49660817\n", - "Degree of polynomial: 12\n", - "Mean squared error on training data: 0.00809754\n", - "Mean squared error on test data: 1.62136673\n", - "Degree of polynomial: 13\n", - "Mean squared error on training data: 0.00778874\n", - "Mean squared error on test data: 1.06706559\n", - "Degree of polynomial: 14\n", - "Mean squared error on training data: 0.00469418\n", - "Mean squared error on test data: 0.63565789\n", - "Degree of polynomial: 15\n", - "Mean squared error on training data: 0.00416419\n", - "Mean squared error on test data: 0.59749210\n", - "Degree of polynomial: 16\n", - "Mean squared error on training data: 0.00329307\n", - "Mean squared error on test data: 50.03133059\n", - "Degree of polynomial: 17\n", - "Mean squared error on training data: 0.00243097\n", - "Mean squared error on test data: 176.61809428\n", - "Degree of polynomial: 18\n", - "Mean squared error on training data: 0.00223246\n", - "Mean squared error on test data: 3451.18074998\n", - "Degree of polynomial: 19\n", - "Mean squared error on training data: 0.00154876\n", - "Mean squared error on test data: 226.03684348\n", - "Degree of polynomial: 20\n", - "Mean squared error on training data: 0.00142708\n", - "Mean squared error on test data: 58780.25841773\n", - "Degree of polynomial: 21\n", - "Mean squared error on training data: 0.00118511\n", - "Mean squared error on test data: 136.16211209\n", - "Degree of polynomial: 22\n", - "Mean squared error on training data: 0.00092317\n", - "Mean squared error on test data: 19280.37206612\n", - "Degree of polynomial: 23\n", - "Mean squared error on training data: 0.00087006\n", - "Mean squared error on test data: 886.71854932\n", - "Degree of polynomial: 24\n", - "Mean squared error on training data: 0.00081388\n", - "Mean squared error on test data: 125.20547193\n", - "Degree of polynomial: 25\n", - "Mean squared error on training data: 0.00080626\n", - "Mean squared error on test data: 540.86563574\n", - "Degree of polynomial: 26\n", - "Mean squared error on training data: 0.00078498\n", - "Mean squared error on test data: 2405.22624019\n", - "Degree of polynomial: 27\n", - "Mean squared error on training data: 0.00071539\n", - "Mean squared error on test data: 6348.01049243\n", - "Degree of polynomial: 28\n", - "Mean squared error on training data: 0.00062673\n", - "Mean squared error on test data: 937.03452940\n", - "Degree of polynomial: 29\n", - "Mean squared error on training data: 0.00061896\n", - "Mean squared error on test data: 2486.48777608\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/td/3yk470mj5p931p9dtkk0y6jw0000gn/T/ipykernel_34236/626635268.py:73: RuntimeWarning: divide by zero encountered in log10\n", - " plt.plot(polynomial, np.log10(trainingerror), label='Training Error')\n", - "/var/folders/td/3yk470mj5p931p9dtkk0y6jw0000gn/T/ipykernel_34236/626635268.py:74: RuntimeWarning: divide by zero encountered in log10\n", - " plt.plot(polynomial, np.log10(testerror), label='Test Error')\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
          " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "execution_count": 10, + "id": "548794a9", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "# Common imports\n", "import os\n", @@ -2535,16 +2479,20 @@ }, { "cell_type": "markdown", - "id": "10dd42f3", - "metadata": {}, + "id": "74ba9c2d", + "metadata": { + "editable": true + }, "source": [ "Note that we kept the intercept column in the fitting here. This means that we need to set the **intercept** in the call to the **Scikit-Learn** function as **False**. Alternatively, we could have set up the design matrix $X$ without the first column of ones." ] }, { "cell_type": "markdown", - "id": "094bf65d", - "metadata": {}, + "id": "0e295c7b", + "metadata": { + "editable": true + }, "source": [ "## The same example but now with cross-validation\n", "\n", @@ -2553,31 +2501,13 @@ }, { "cell_type": "code", - "execution_count": 30, - "id": "ea273fff", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/td/3yk470mj5p931p9dtkk0y6jw0000gn/T/ipykernel_34236/2054013423.py:63: RuntimeWarning: divide by zero encountered in log10\n", - " plt.plot(polynomial, np.log10(estimated_mse_sklearn), label='Test Error')\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEGCAYAAABrQF4qAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAA6MElEQVR4nO3deXxUd7n48c8zk5UshIRAFgJJoEDCFsq+tLV7qS1grQW6WarWalv1evW6/rR69er1ulatSrXF2g3bSktXilrasoZ9S9gDJJCEkJCd7N/fHzNJA00yWebM+rxfr3mROXPOnOd0midnvsvzFWMMSimlApfN2wEopZSyliZ6pZQKcJrolVIqwGmiV0qpAKeJXimlAlyItwPobOjQoSY9Pd3bYSillN/YsWPHOWNMYk/7+FSiT09PZ/v27d4OQyml/IaInHS1jzbdKKVUgNNEr5RSAU4TvVJKBTifaqPvSnNzM0VFRTQ0NHg7FL8VERHBiBEjCA0N9XYoSikv8PlEX1RURExMDOnp6YiIt8PxO8YYysvLKSoqIiMjw9vhKKW8wOebbhoaGkhISNAk308iQkJCgn4jUiqI+XyiBzTJD5D+91MquFmW6EVknIjs7vSoFpGvWHU+pZRq99qeMxRW1Hs7DJ9hWRu9MeYQkAMgInbgNLDaqvNZoby8nGuvvRaAkpIS7HY7iYmOCWi5ubmEhYX1ePz69esJCwtj7ty5H3lt5cqVfP3rXyc1NbVj23PPPUd2drYbr0Cp4HO4tIZHnt/F4MhQHls2lavG9jhpNCh4qjP2WuCYMcblDC5fkpCQwO7duwF49NFHiY6O5mtf+1qvj1+/fj3R0dFdJnqAJUuW8Lvf/a7b41taWggJCen2eW+PU8HjbE0DP33zIHfNHsm0UfHeDscrNh49B0BCdBj3PZXL124Yxxc/NjqomzA91Ua/FHi+qxdE5AER2S4i28vKyjwUTv/t2LGDq666imnTpnHjjTdSXFwMwGOPPUZ2djaTJ09m6dKlnDhxgj/+8Y/86le/Iicnhw8++KBX779+/XquuOIKFi5cSHZ29keeNzQ0sHz5ciZNmsTUqVN59913Acc3hIULF3LNNdd0fAtRwee1PcX8Y9dpPvmHzXxn9T6qLjR7OySP23SsnJHxg3j9kfncOjmF/1t7iC88s5PaxhZvh+Y1lt/2iUgYsBD4VlevG2NWACsApk+f3uO6hj947QB5Z6rdGl92Sizfv3VCr/Y1xvDII4/w6quvkpiYyKpVq/jOd77Dk08+yU9/+lMKCgoIDw+nsrKSuLg4HnzwwR6/BaxatYoNGzZ0PN+8eTMAO3fuZP/+/WRkZLB+/fqLnv/iF79ARNi3bx8HDx7khhtu4PDhwx3H7d27l/j44LyTU5BbUE5qXCQ3TUziqY0FvJNXyvdvzebjk5KD4o62pbWNLcfL+fikZAaFhfCbpTlMHjGYn7x1kMW/38if7pnG6MRob4fpcZ64o18A7DTGlHrgXJZqbGxk//79XH/99eTk5PCjH/2IoqIiACZPnsxdd93FM8880+tmkyVLlrB79+6OR2RkJAAzZ868aMx75+cbNmzg7rvvBmD8+PGMGjWqI9Fff/31muSDmDGG3IIK5oxO4P/dks2rD81neGw4Dz+3i/tXbguKzskDZ6qpaWhh7pihgGPE2WevyORvn5lJRV0Ti3+3kX/m+X0q6jNPNOQuo5tmm77q7Z23VYwxTJgwoePOu7M33niD999/n9dee40f//jH7Nu3r9/niYqK6vF5b49TweXo2VrO1zczM8Pxx37SiMG88sV5rNx0gl+uO8wNv3qf/7j+Mu6fl0GI3S9GVvfZxmOO9vk5mQkXbZ87eiivPTKfB/+2g88+vZ0vXXsZX7n2Mmy2wP+WAxbf0YtIFHA98A8rz+Mp4eHhlJWVdST65uZmDhw4QFtbG4WFhVx99dX87//+L1VVVdTW1hITE0NNTY1bY7jiiit49tlnATh8+DCnTp1i3Lhxbj2H8k9bCioAmJXx4be6ELuNz16RybqvXsW8MQn8z5sHWfi7jewprPRSlNbafKycccNjSIwJ/8hrqXGRvPjgHG6fNoLH/nWEzz29PWj6MCxN9MaYOmNMgjGmysrzeIrNZuOll17iG9/4BlOmTCEnJ4dNmzbR2trK3Xff3dFB+qUvfYm4uDhuvfVWVq9e3W1n7KpVq8jJyel4bNq0yWUMX/ziF2lra2PSpEksWbKElStXEh7+0f+pVfDJLaggKTaCkfGDPvJaalwkT9w7nT/cdTnnahtZ/PhGHl1zIKA6KBtbWtl2wtF01Z2IUDv/d/tk/nvRBN47XMbi32/kcKl7b8Z8kRjTY/+nR02fPt1cuvBIfn4+WVlZXooocOh/x8BmjGH2T/7FrIwEHls2tcd9qxua+fnaQ/xty0mSYiP4zdKpHc09/mzzsXKWPbGFJ+6dzvXZw13uv+1EBV94Zif1TS08ftflfGzcMA9E6X4issMYM72nfQKzoU6pIHOqop7S6sZeJezYiFB+uGgiL39hLhGhdpY9sYXfv3uUtjbfuenrj83HzmETev1Ha0Z6PG98aT7pCVF87untvLG32OIIvUcTvVIBYGsX7fOuXD5yCGsensfNk5L5v7WH+PRTuZyrbbQqRMttPFbOpBFxDI7sfTnu4bERPP/AbHLS4njk+Z28kHvKwgi9xy8SvS81L/kj/e8X+LYeryA+Kowxw/o2RjwmIpTHlubwP5+YxNaCCm7+zQdsPlZuUZTWqW1sYU9hJXN7aJ/vzuDIUJ6+fxZXXJbIN/+xjxXvH7MgQu/y+UQfERFBeXm5Jqt+aq9HHxER4e1QlIVyT5QzMz2+X5OiRIQ7Z43k1YfmER0ewl1/3sJj/zpCqx815WwrqKClzTBv9NB+HR8ZZueJe6fz8cnJ/M+bB/n52kMBlXN8viDKiBEjKCoqwh/KI/iq9hWmVGA6U3mBwooLLJ87sIVlspJjWfPIfL67eh+/XHeYrQXl/HrJ1C6HKvqaTcfOEWa3MW3UkH6/R1iIjceWTiUmPITfvXuU6oZmHr11QkCMtff5RB8aGqorIynVg20nHO3z7hg5Ex0ewq+W5DBndALfe/UAC37zAY8tzemYaeqrNh4t5/JRcUSG2Qf0Pnab8JPbJjE4MpQ/vX+cmoYWfnb7ZEL9fIKZf0evlGJrQQUx4SFkJce65f1EhCUzRrLm4fkMjgzhrr9s5ZfrDvtsU875uibyiqv73WxzKRHhmwvG8/Ubx7F612m+8MxOGppb3fLe3qKJXik/t/V4OdPTh2B3cxPDuKQYXntkPrdNdcwk/cxft/nkEMzNxx2dx3PH9L0jtjsiwkNXj+G/F03gn/mlLH9qm19PLtNEr5QfO1fbyLGyOmZlui/JdTYoLIRf3DGF7348i/WHyliz54wl5xmITcfOERVmZ/KIOLe/9z1z0vn1khxyT1Rw1xNbOF/X5PZzeIImeqX82LYC97XP9+T+eRlMTI3lZ28f9LlmjE1Hy5mZEW9ZO/riqan86e5p5JfUcMefNnO2psGS81hJE71SfmxrQQWRoXYmpgy29Dw2m/Dtm7M4U9XAkxsLLD1XXxRXXeD4uTrmWdxZfF32cFYun8Hpygvc+cRWv0v2muiV8mO5BRVcPiqOsBDrf5Xnjh7KdVnDePzdYz4zg3bTUUf7fE+FzNxl7uihPHXfDE6f979kr4leKT9VdaGZ/JJqZqZbn+TafXNBFheaW/nNP4947Jw92XSsnCGDQslKcs+II1dmZSY47uz9LNlrolfKT20/UYExMCvTc5UnxwyL5s6ZI3ku9xRHz3q3vK8xhk3HzjFndIJHJzX5Y7LXRK+Un8otqCDMbiMnLc6j5/3KdZcRGWrnp28d9Oh5L3WivJ7iqgbmumn8fF9cmuzLanyjKas7muiV8lNbCyqYkjaYiNCBzQbtq4TocL549Wj+mX+WTc6l+7xh41HHuftTyMwdOif7ZU9s8elkr4leKT9U19jC/tNVXlsw5P55GaTGRfLjN/K9Nolq87FykgdHkDHUe2sl+0uyt3rN2DgReUlEDopIvojMsfJ8SgWLXacqaWkzzMzwzt1sRKidr984jgNnqlm967THz9/W9mH7fH8qdrqTPyR7q+/ofwO8bYwZD0wB8i0+n1JBYWtBOXabDKha40AtnJLC5BGD+fk7h7jQ5NlJVAdLajhf3+y2+jYD5evJ3rJELyKDgSuBvwAYY5qMMZVWnU+pYLK1oIKJKbFEh3uvAG37JKpiL0yiau8bcGd9m4Hy5WRv5R19BlAGPCUiu0TkzyLivcY0pQJEQ3MruwsrfWJB79mZCVyfPZzH3z3q0cS26Vg5mUOjSB4c6bFz9sbFo3G2+EwhNCsTfQhwOfAHY8xUoA745qU7icgDIrJdRLbr4iJKuba3qIqmljavtc9f6lsLxtPY0sav/3nYI+drbm1j6/Fyj8yG7Y9ZmQn8+dPTOVZWy/dfPeDtcABrE30RUGSM2ep8/hKOxH8RY8wKY8x0Y8z0xMREC8NRKjDkFjim/c9I9177fGeZidHcNWskz+ee4kip9ZOo9hZVUdfUanl9m4GYN2YoD19zGS/vLOLV3Z7vrL6UZYneGFMCFIrIOOema4E8q86nVLDYWlDB+KQY4gaFeTuUDl++bixRYSH8xAOTqDY5x8/Psag0s7t86ZoxTBs1hO+u3k9hRb1XY7F61M0jwLMishfIAf7H4vMpFdCaW9vYcfI8s3ygfb6z+KgwHrpmDP8+eLZjIpNVNh47R3ZyLEOifOcPXVdC7DZ+vSQHgC+/sIuW1javxWJpojfG7HY2y0w2xiw2xpy38nxKBboDZ6qpb2r1mfb5zu6bm05qXCQ/eiPfsmUHG5pb2Xmyknk+NNqmJ2nxg/jxbZPYeaqSx/7lvUJwOjNWKT/S0T6f4Rvt851FhNr5r5vGkV9czT92Fllyju0nztPU2uaV+jb9tXBKCrdPG8Hv3j3KVueyh57m94neGMMf3ztGfnG1t0NRynK5BRVkDo1iWEyEt0Pp0q2THZOofvvvoxjj/rv6TcfOEWITZvhY05Urjy6cwMj4QfzHqt1U1Td7/Px+n+gr65tZufEEy5/aRkmV75cLVQqgsaWV63/5Ht9ZvY+mlt613ba1GXILKnxi/Hx3bDbhntmjOFVRz85TlW5//43HypmSFufViWL9ER0ewmPLpnK2ppFvrd5ryR/Bnvh9oh8SFcaT982gpqGZ5Su3UdPg+b+WSvXVkdJajpyt5dmtp7jnL1t7tej0wZIaqhtaPFp/vj9umphEeIjN7cMKqxua2VdUyTwfHT/vyuQRcXztxnG8ua+Ev28v9Oi5/T7RA2SnxPL43dM4XFrDQ8/totmLvdtK9Uaes6nxK9ddxq7CShb9fqPLMejt7fO+2BHbWUxEKNdlDef1vcVu/V3ceryCNgNz/Kh9/lIPXJHJvDEJPLomj6Nnaz123oBI9ABXjU3kx4sn8v7hMr736n6PfzVSqi/yi6uJCLXxyDWX8cIDs6lvauUTj2/i3YNnuz0m90QFqXGRpMb51rT/riyemkpFXRMfHHHfbPdNx84RHmLj8lFxbntPT7PZhF/ekUNEqI0vv7CLxhbPFIMLmEQPsHTmSB66ejTP5xby+Ppj3g5HqW7lF1czLikWu024fOQQ1jw8j5Hxg/jMX7fx5w+Of+RGxRhH+7yvjZ/vzlVjE4kbFMoru8647T03HS1nRno84SGeXWjF3YbHRvCz26dw4Ew1P197yCPnDKhED/C1G8axKCeF/1t7yCemHit1KWMM+cU1ZCfHdGxLiYvkpS/M4YbsJH70Rj7feHnvRZ20x8/Vca62yac7YjsLC7Fx86Rk1uWVUueGwl57iyo5VFrDtVnD3BCd912fPZx7Zo/iiQ8KeO+w9TW+Ai7Riwg/u30yMzPi+fqLe702blWp7hRXNVB1oZms5NiLtg8KC+Hxuy7nS9eM4e/bi7j7z1spr3VUhNx6vAJwFMzyF4tzUrnQ3Mo7eSUDfq+nNp4gKszOJ6eNcENkvuE7H89i7PBo/vPvezhXa23lz4BL9ADhIXZW3DONEfGRPPC3HR7t9FDKlfY5H5cmenC04X71hnE8tmwqe4ocnbSHSmrILSgnMSac9IRBng6336aPGkJqXCSrB9h8c7a6gdf3nuFT09OIjQh1U3TeFxFq57FlU6luaObrL+6xtF8xIBM9QNygMP66fCahdmH5ylyfWgRABbf2RD8+KabbfRZOSWHV5+fQ1NLGbY9v5N8HzzIzI97ry+b1hc0mLMpJYcORsgH9/j2z5SQtbYb75qa7LzgfMT4plu9+PAu7zcaFZus6ZgM20YOjzsRfPj2DsppGPvv0do8vd6ZUV/KLa0iLjyTGxd1pTlocax6eT2ZitGP8vJ+0z3e2eGoqbQZe39u/u/qG5lae3XqKa8cPI92Li4Bb6Z7Zo3ji3mkMCrNuElhAJ3qAKWlxPLZ0KnuLKvnSC7ssK7akVG/lF1eTlfTRZpuuJA2O4O+fn8NPb5vEHdPTLI7M/cYOjyErOZZXdvcv0a/Zc4byuibun5fh5sh8h4hY/k0t4BM9wA0Tkvj+LdmsyyvlR29oSXzlPfVNLRSU13XZPt+dyDA7S2eOJCLUP4cVLs5JYU9hJQXn6vp0nDGGJzcUMD4pxmdXk/IXQZHoAe6bl8H98zJ4auMJ1uxx39hepfriUEkNxnTdERuoFuakIAKv7OrbcOfNx8s5WFLD8nnpftU34YuCJtGDYzjT+KQYfvfvIzpzVnlFfrGjzEF2ECX65MGRzM5I4NXdp/v0e/fUxhPER4WxKCfVwuiCQ1AlertNeODKTA6X1rL+kC5Erjwvv7ia6PAQRgzx/TIG7rR4agonyuvZU1TVq/1Pltfxz/xS7prlv01WviSoEj3ArVNSSBkcwZ/e1xIJyvPyi6sZnxSDzRZcTRE3TUwmzG7rdfPNyk0nsItw9+xRFkcWHIIu0Yfabdw/P4MtxyvYXVjp7XBUEGlrMxwsqQmq9vl2gyNDuTZrGK/vPeNy7dSahmZe3F7ELZOTGR7rmwus+BtLE72InBCRfSKyW0S2W3muvlg6cyQxESGs0Lt65UFF5y9Q29gSlIkeYFFOKudqm9jgYvHwF7cXUdvYwv3zA3dIpad54o7+amNMjjFmugfO1SvR4SHcPXsUb+8v4UQfh3wp1V/tNeizU4Iz0V89PpHYiBBe7WFMfWubYeWmE0wbNYTJI+I8F1yAC7qmm3bL56YTYrPx5w3HvR2KChL5xdXYBMYN7770QSALD7Fz86Rk1h4oob6p64qW/z54llMV9QE9QcobrE70BnhHRHaIyANd7SAiD4jIdhHZXlbmuZEww2IjuO3yVF7cXmR55TilwJHo04dGERkWvKNIFk9Npb6plXV5pV2+/uSGAlIGR3DjhOEejiywWZ3o5xtjLgcWAA+JyJWX7mCMWWGMmW6MmZ6YmGhxOBf77BWZNLa08fTmkx49rwpO+SXVQds+325mejwpgyO6HH2TX1zN5uPl3Ds3nRB70DY2WMLS/5rGmNPOf88Cq4GZVp6vr8YMi+b67OE8vflEt18llXKHmoZmCisuBNVEqa7YbMKtOSm8f+RcR639dk9tLCAy1M7SGf5X08fXWZboRSRKRGLafwZuAPZbdb7++vyVmVTWO4ZzKWWVgyWOGbFZycHZPt/Z4pxUWtsMb+wr7thWXtvIK7vPcNvlqcQNCvNidIHJyjv64cAGEdkD5AJvGGPetvB8/TI9PZ5po4bwxAfHXY7vVaq/elpsJNhkJccyPinmouab57aeoqmljeXz0r0XWACzLNEbY44bY6Y4HxOMMT+26lwD9fkrMyk6f4E39w98yTOlupJfXE3coFCSdAIQ4BhTv/NUJafK62lqaePpLSe5amwiY4bpNx4raI8HcF3WcDITo1jx/jEtdqYskVdcQ1ZSrFZhdFqYkwLAK7tP88a+M5TVNOrdvIU00ePoIHrgikz2n65m0zFdTFy5V2ub4ZCOuLlIalwkMzPieWX3aZ7aeILRiVFceZlnR90FE030TounpjI0Opw/vqdlEZR7nSivo6G5TTtiL7E4J5XjZXXsLapi+byMoCv05kma6J0iQu0sn5fOB0fOkXem2tvhqACiHbFd+/gkR0XL2IgQbrtca85bSRN9J3fPGkVUmF2LnSm3yi+uJsQmXDY82tuh+JTBg0L52o1j+d6tEyxdGFtpor/I4EGhLJ05ktf2FlN0vt7b4agAkV9cw+jEaMJDgrf0QXceuHI0t08b4e0wAp4m+kvcPz8DAZ7ccMLboagAkV9cre3zyqs00V8iNS6ShVNSeGHbKarqm70djvIB3169j//3Sv8mdZ+va6K4qkHb55VXaaLvwueuzKS+qZVntmqxs2BnjOGtfcU8l3uK4qoLfT5eO2KVL9BE34Ws5FiuGpvIUxsLaGhu9XY4yotKqxs5X99Ma5vh+dzCPh+fp4le+YAeE72IxPfiEeehWD3qgSszOVfbxFv7i13vrAJWfokjUQ+PDef5XEc9lj4dX1zD0OhwEmPCrQhPqV5xdUd/BtgO7OjhsdfKAL1lTmYCqXGRPS57pgJfe9PLt2/OoqymkXfy+lYPSTtilS9wlejzjTGZxpiM7h5AQNYMsNmEW6ek8EEXdbNV8MgvriE1LpJbJqeQFh/Zp0VqmlvbOHq2Nuhr0Cvvc5Xo5/TiPXqzj19alJNCa5vhzX3afBOsHHfksdhtwt2zRpFbUMEhZ215V46V1dLU2qbt88rrXCX6ue0/iMhFq/WKyG0AxpgGC+LyCVnJsYwbHsMr2nwTlBqaWzleVtvR9PKp6WmEhdj425YTvTpeR9woX+Eq0f+8088vX/Lad90ci09amJPCjpPnKazQmbLB5khpLW3mw0QdHxXGrZNTWL3zNDUNrudY5BfXEGa3kZkYZXWoSvXIVaKXbn7u6nlAWjjFUTd7zR69qw82Xd2R3ztnFHVNrazuYnHrro4fmxRNqC50rbzM1f+Bppufu3oekNLiBzFt1BDWaPNN0MkrriYy1M6o+EEd26akxTF5xGCe3nzS5SI1+cXVZCVps43yPleJPlNE1ojIa51+bn+e4eJYAETELiK7ROT1AUfrJYtyUjhUWsPBEi1fHEwOllQzLinmI3XS75k9iqNna9lyvKLbY8/WNHCutknb55VPcJXoFwG/wNFW3/5z+/PFvTzHl4H8fsbnE26elIzdJjqmPogYY8gvrukyUd86JYW4QaE9dsrmFztG5miiV76gx0RvjHmv8wPYBFTjGF//nqs3F5ERwMeBP7slWi8ZGh3OFZcNZc3uM7S1BUWLVdArrmqg6kIz2V1MdooItXPH9DTWHiiltLrrQWft7fs6hl75AlclEP4oIhOcPw8G9gBPA7tEZFkv3v/XwH8B3c4bF5EHRGS7iGwvKyvrdeCetignhdOVF9hx6ry3Q1Ee0N5MN76bRH3XrJG0GcNzW091+Xp+cTUpgyMYPCjUshiV6i1XTTdXGGMOOH9eDhw2xkwCpuFI4N0SkVuAs8aYHT3tZ4xZYYyZboyZnpjou4sDX5+dRESojVd3ux5tofxfe9PL+KSuyxeMSojiqrGJPJ97iubWj97HtE+0UsoXuEr0TZ1+vh54BcAY05uCH/OAhSJyAngBuEZEnulHjD4hOjyE67KG88be4i5/sVVgySuuJi0+kpiI7u/I75k9irM1jbxzoPSi7Q3NrRwrq9NEr3yGq0RfKSK3iMhUHIn7bQARCQEiezrQGPMtY8wIY0w6sBT4tzHmbjfE7DWLclI5X9/MhiPnvB2Kslh+cTXjXQyN/Ni4YYwYEsnTm09ctP3o2Vpa24wmeuUzXCX6zwMPA08BX+l0J38t8IaVgfmiq8YmMjgyVJtvAtyFplZOnHN9R263CXfNGsXWggoOl35Y/+bDGvRatVL5Blejbg4bY24yxuQYY1Z22r7WGPOfvT2JMWa9MeaWAcTpE8JCbNw8KZl38kqpb2rxdjjKIodLa2gzdDni5lJLZjjr33SqapnfPtEqQUsfKN8Q0tOLIvJYT68bY77k3nB836KcFJ7PPcW6vFIW5aR6Oxxlgb4UI4uPCuOWycn8Y2cR31gwnujwEPKLHROt7LagqBKi/ICrppsHgfl0vwBJ0JmZHk9SbISWRAhgB0tqiAqzkzZkkOudcXTK1jW1snpnUY8TrZTyFleJPhlYAdwI3AOEAq8aY/5qjPmr1cH5IptNWJiTwnuHyzhf1+T6AOV38oq7Ln3QnZy0OCalOurf9DTRSilvcdVGX26M+aMx5moc4+jjgDwRuccTwfmqRTkptLQZ3tT1ZAOO4468b2PgRYR7Zo/iyNlaVm46AWjpA+VbelU/VUQux1Gz5m7gLYK02aZddnIsY4ZFa+2bAHS68gI1DS3dzojtzq1TUhgcGcqTGwqA7mfUKuUNrkog/FBEdgBfBd4DphtjPmOMyfNIdD5KRFg0JYXcggrOVF7wdjjKjQ46Z8T2teklMszOp6aNoKXNMDJ+ENHhPY5zUMqjXN3RfxdHc80U4CfAThHZKyL7RGSv1cH5soU5uiBJIGofcTOuH3Xk7549CtDx88r3uLrt6FXN+WA0KiGKnLQ4Xt19hgevGu3tcJSb5JdUMyqhf3fk6UOj+OGiCUxI0WYb5Vt6/L/ZGHOyp9eD3aKcFH7wWh6HS2sYO1zv4gJBfnFNt4XMeuPeOenuC0YpN3HVRu9yVSh/XjlqoG6ZnIJN0DH1AaK+qYUT5VqMTAUeV99P54vImh5eFyDbjfH4lcSYcOaNGcqre07znzeMRURnQvqzQyU1GKNDI1XgcZXoF/XiPYJ61tCinFS+9uIedhVWcvnIId4ORw1Ax/J/uqC3CjC9WkoQOAjUOB8HL1licLMnAvVVN04YTliIjVd3aUVLbztb3cD6Q2f7ffzBkmqiw0MYMaTHCtxK+R1XbfQ5IrIFWA/8zPl4T0S2OGvUB72YiFCuyxrG63uLadEFSbzqv9/IZ/nKbRRW1PfreEcN+t6XPlDKX7gaR78S+LIxJssYc53zMR74ivM1BSyYmEx5XRP7z1R7O5Sgdb6uibX7SzAGns/teh3XnhhjOKjFyFSAcpXoo4wxWy/daIzZAmixbacpI+KADyfbKM9bves0Ta1tjB0ezd+3F/V5ucei8xeoaWxhvE52UgHIVaJ/S0TeEJElIjLX+VgiIm/gXFZQwYghkUSHh5Cnd/ReYYxh1bZCpqTF8c0F4zlX28i6vFLXB3bSlxr0SvkbVxOmviQiC3CMvmlfZeM08HtjzJtWB+cvbDYhKzlG7+i9ZFdhJYdKa/jJbZO4auwwUuMieW7rKW6elNzr98gvrkEExunENxWAXM7zNsa8haNiZZ+ISATwPhDuPM9Lxpjv9zlCP5GdHMtLO4poazPamedhq3ILGRRm59YpKdhtwpIZafxy3WFOnKsjfWjvWhjzi6sZFT+IKC1GpgJQr8oUd0VEVrjYpRG4xhgzBcgBbhKR2f09n6/LSo6lrqmVU/0c8aH6p7axhdf2nuHWySkd9WmWzEjDbhNe2FbY6/fJL+lbDXql/Imr4ZXx3TwSgJt7OtY41Dqfhjofxj1h+55sZyErbb7xrNf3nKG+qZUlM9M6tg2PjeDa8cN4aUchTS2uO2XrGls4WV6viV4FLFd39GV8dK3Y7c7HMFdvLiJ2EdkNnAXWdTWCR0QeEJHtIrK9rKysj+H7jrHDHYtB52mi96gXthUydng0U9PiLtp+56yRnKtt4p28EpfvcbDEOSNWE70KUK4S/XHgY8aYjE6PTGNMBuByWIMxptUYkwOMAGaKyMQu9llhjJlujJmemJjYn2vwCRGhdjKHRunIGw86WFLN7sJKlswY+ZE6Q1dcltjRKetK+7ewgVStVMqXuUr0vwa6K+Dys96exBhTCbwL3NTbY/xRdkqsNt140Au5hYTZbXxiaupHXrPbhGUz09h0rJyCc3U9vs/BkmpiIrT0gQpcrmrd/N4Ys6eb137b07Eikigicc6fI4HrcdTMCVjZybGcqWrgfF1Q13nziIbmVlbvOs2NE5OIjwrrcp87pqcRYhOXM2Xzi2vISorV6qMqYPV2cfDbunhcKyI9tdMnA+86lxzchqONPqBr17e38epdvfXWHiih6kIzS2ekdbvPsNgIrssazks7imhsae1yn7Y2w8Hiap0RqwJabwcNfwaYg6P5BeBjODpmM0Tkh8aYv116gDFmLxBUhc/aE31ecTVzxwz1cjSBbdW2QtLiI5mTmdDjfnfOGsnbB0p4e38Ji3I+2sRTeL6euqZW7YhVAa234+hDgCxjzCeNMZ/EsdiIAWYB37AqOH+TGBPOsJhwHXljsZPldWw6Vs6S6WkuJ6fNHzOUkfGDuu2U7ahBr4leBbDeJvo0Y0znUTZnndsqgGb3h+W/spJjdeSNxVZtK8QmcPu07ptt2tlswtKZaWwtqODo2dqPvJ5fXK2lD1TA622iXy8ir4vIp0Xk08Aa57YooNKy6PxQdkosx8pqezVRR/VdS2sbL+4o4prxw0gaHNGrYz41rftO2fziajISoogMs7s7VKV8Rm8T/UPAUzhKGeQAfwUeMsbUGWOutiY0/5SdHEtzq+HI2RpvhxKQ3j1URllNI0tmjOz1MYkx4dw4IYmXdxbR0Hxxp+zBEq1BrwJfrxK9McYAG4B/A/8C3nduU5fo6JDV5htLrNp2imEx4Vw9rm+T6+6cNZLK+mbe3v/hTNmahmZOVdSTpSNuVIDr7fDKO4Bc4HbgDmCriNxuZWD+KmNoFBGhto5OPuU+JVUN/PvgWW6fNoIQe9/q8c3JTCA94eJO2UPO0gfjdTFwFeB6+9vyHWCGMebTxph7gZnA/7MuLP9ltwnjk2LJK67ydigB5+WdRbQZR3XKvrLZhGUzR5J7ooIjpY4E37HYSIomehXYepvobcaYs52el/fh2KDTPvJGW7fcp63N8MK2U8wdncCohP6tYnn7tBGE2W085+yUzS+pITYihJReduoq5a96m6zfFpG1InKfiNwHvAHoClPdyE6JpbqhhTNVDd4OJWBsPl5OYcWFft3Nt0uIDufGiUm8vMPRKZtf7KhBr6UPVKDrbWfs14EVwGTnY4UxRidKdSNbO2Td7oVthQyODOXGCUkDep9lM9OobmjhtT1nOKQjblSQ6PW6acaYl4GXLYwlYIxPikHEkeivzx7u7XD83vm6JtbuL+HOWSOJCB3YePc5mQlkDo3i1/88Qn1Tq464UUHB1QpTNSJS3cWjRkT0drUbUeEhpCdEaXEzN1m96zRNrW0sndn/Zpt2Io5O2dOVFwAtfaCCg6syxTHGmNguHjHGGP0N6UF2cqzWvHEDYwyrthWSkxbntmGQn3R2ytrEsTKYUoFOl7y3SFZyDG/sK6a6oZnYiFBvh+NTWtsMW46Xc76+iYbmNhqaW2lobqWx5cOf27dXNzRzqLSGn942yW3nj48K45PTRnC4tGbATUFK+QNN9BZpXyz8YHENMzPivRyN7zhf18SXV+3m/cNdrw8sAhEhdiJCbUSE2okItTMnM4Fbp6S4NY4fLf7IqpZKBSxN9BbJTh4MOCblaKJ32FdUxYPP7KCsppEfLJzAnNEJHUk9PNTxb5jd5pHhjnYX5Y2VCiSa6C0yPDacIYNCdYil09+3FfLdV/czNCqMFx+cw5S0OG+HpFTQ0ERvEREhO0U7ZBuaW3l0zQFe2FbI/DFDeWzZ1G7XeFVKWcOyMgYikiYi74pInogcEJEvW3UuX5WdHMuh0hpaWvtXm/5vW06y/KlcKuv9c7HxovP1fOqPm3lhWyEPXT2av94/U5O8Ul5gZb2aFuA/jTHZwGzgIRHJtvB8PicrOZamljaOn6vr87FNLW38et1h3j1UxrIntlJe22hBhNZ573AZt/x2AyfO1bHinml8/cbx2i6ulJdYluiNMcXGmJ3On2uAfOCjqzMHsPaRN/1pp197oITyuiY+f1Umx8tqufOJrZTV+H6yb2sz/PZfR7jvqVySYiNY88h8bhhg2QKl1MB4pAKliKQDU4GtXbz2gIhsF5HtZWVdD7nzV6MTowmz2/o1Q/bZrSdJi4/kGzeO56n7ZnCqop6lKzZzttp3C6VVXWjmc09v5xfrDrNoSgr/+OJcMob2r9KkUsp9LE/0IhKNo0bOV4wxH8l4xpgVxpjpxpjpiYl9WzXI14XabVw2PLrPHbJHz9ay5XgFy2aOxGYT5o4ZysrlMyiuamDJii0UV12wKOL+u9DUyid+v5H3Dpfxw0UT+NWSHAaFaV+/Ur7A0kQvIqE4kvyzxph/WHkuX5Xdj9r0z209Rahd+NS0D2u7zMpM4G+fmelYL/VPWyg6X29FuP22p6iS4+fq+MUdU7h3TrqW/lXKh1g56kaAvwD5xphfWnUeX5edEkt5XVOv29cbmlt5eWcRN05IIjEm/KLXpo2K55nPzuJ8fRNL/rSFU+W+k+zb+yHmjh7q5UiUUpey8o5+HnAPcI2I7HY+brbwfD6pvTb9gV4237yxt5iqC83cNWtUl6/npMXx/OdmU9fUwpIVmynox4geK+QVV5MYE/6RP05KKe+zctTNBmOMGGMmG2NynI+gW5VqfB8XIXl260kyE6OYndl92YSJqYN57rOzaWxpY8mfNnP0bK1bYh2IvDPVHX/UlFK+Rdd9tdjgyFBGDIns1cibvDPV7DxVyZ0zR7ps485OieWFB2bTZmDpii0cdi547Q1NLW0cOVvTMZxUKeVbNNF7QG9r0z+Xe5KwEBu3TxvRq/cdOzyGFx6YjU0cyd5bC50cPVtLc6vRO3qlfJQmeg/ISo6l4Fwd9U0t3e5T19jCK7vOcMvkZOIG9b5MwJhh0az6/BzCQ2x87untXGhqdUfIfdL+R0zv6JXyTZroPSA7JRZj4FBJ980ra/acobaxpdtO2J5kDI3iV0tyKDp/gT+sPzqQUPsl70w1kaF20hN0cpRSvkgTvQe0N2l013xjjOGZLScZnxTD5SPj+nWO2ZkJLM5J4Y/vH+eEh0fi5BVXMT45RmvZKOWjNNF7wIghkcREhHQ78mZvURUHzlRz1+xRA5po9O2bswiz23j0tQN9mqA1EMYY8s5U6yLbSvkwTfQeICJkJcd221n67NaTDAqzszhnYMvlDYuN4CvXXcb6Q2Wsyysd0Hv11unKC1Q3tGhHrFI+TBO9h2Qnx3KwpIbWtovvtKsuNLNmzxkW5aQQ44ZFxD89N51xw2P4wWt5HumYbf+Woh2xSvkuTfQekp0cS31TKyfLL24/X72ziIbmNu6c2fdO2K6E2m38cNEETlde4HEPdMzmFVcjAuOTYiw/l1KqfzTRe0j7HW9+8Ycjb4wxPJd7iikjBjNpxGC3nWtWZgKfmJrKn96zvmM270w1GUOjtFKlUj5ME72HjBkWTYhNyCuu6ti2/eR5DpfW9mtIpSvfWjCesBDrO2bzirX0gVK+ThO9h0SE2hmdGH3RyJtnt5wkJjyEW6Yku/18w2Ij+I/rx7L+UBnvWNQxW3WhmaLzF7R9Xikfp4neg7JTPiyFUFHXxJv7Srjt8lTLmj0+PWcU45Ni+KFFHbPto4j0jl4p36aJ3oOyk2MprW6kvLaRl3YU0tTaxp0WNNu0C7Hb+OGiiZZ1zOqIG6X8gyZ6D2qfVHTgTDXP5xYyI30I4ywerTIzI76jY9bdtevziqsZGh3OsJgIt76vUsq9NNF7UFayI6n/ZUMBBefqLOmE7cq3bh5PeIiN769xb8ds3plqvZtXyg9ooveghOhwkmIjeO9wGUMGhXLTxCSPnHdYjKNj9v3DZaw94J6O2Y4a9No+r5TP00TvYe139bdPG0FEqN1j573X2TH736+7p2O2owa93tEr5fOsXBz8SRE5KyL7rTqHP5qU6pgYtWzmSI+et3PH7O/fHXjHbJ6OuFHKb1h5R78SuMnC9/dLn7kikxcfnENmYrTHzz0zI57bpqay4v3jHC8b2DqzeWeqiQi1kTFUa9Ar5eusXBz8faDCqvf3V4MjQ5mR3v3C31b7prNj9jf/OjKg98krrmJ8UqzWoFfKD2gbfZAZFhPBLVOS+WdeKQ3N/Wurb69Br+3zSvkHryd6EXlARLaLyPaysjJvhxMUbpqYTF1TKx8cOdev47UGvVL+xeuJ3hizwhgz3RgzPTEx0dvhBIW5oxMYHBnKW/uL+3W8zohVyr94PdErzwu127guazjr8kppamnr8/Fag14p/2Ll8Mrngc3AOBEpEpHPWHUu1Xc3T0qipqGFTcf63nyjNeiV8i+W/aYaY5ZZ9d5q4OZfNpTo8BDe3l/Cx8YN69OxecXV5KTFWROYUsrttOkmSIWH2Lk2axhrD5TQ0tr75hutQa+U/9FEH8QWTEzifH0zuQW9n+6gNeiV8j+a6IPYVWOHERlq580+jL7RETdK+R9N9EEsMszO1eMTWXuglNa23pUv1hr0SvkfTfRB7qaJyZTVNLLj5Ple7a8zYpXyP5rog9w144cRFmLr1eQprUGvlH/SRB/kosNDuPKyRN7eX0Kbi+YbrUGvlH/SRK+4eVISxVUN7Cmq7HE/rUGvlH/SRK+4Nms4oXbh7f0lPe6nNeiV8k+a6BWDI0OZN2Yob+4v7nHxcK1Br5R/0kSvAMfkqcKKCxxwjpO/lNagV8p/aaJXAFyfnYTdJt2OvtEa9Er5L030CoD4qDBmZ8bz1r6SLptvdEasUv5LE73qcNPEZI6fq+Nw6UcXDtca9Er5L030qsONE4YjQpfNN1qDXin/pYledRgWE8GMUfFdDrPMK67W9nml/JQmenWRBZOSOFhSw/GyD5tvtAa9Uv5NE726yE0TkwB4q9NdvdagV8q/aaJXF0keHMnUkXEXtdPriBul/JuliV5EbhKRQyJyVES+aeW5lPssmJjE/tPVFFbUA1qDXil/Z1miFxE78HtgAZANLBORbKvOp9xnwcRk4MPRNzojVin/ZuUd/UzgqDHmuDGmCXgBWGTh+ZSbpMUPYmJqLG/tL9Ea9EoFACsTfSpQ2Ol5kXPbRUTkARHZLiLby8rKLAxH9cWCicnsOlXJhqNlWoNeKT/n9c5YY8wKY8x0Y8z0xMREb4ejnBY4R9/8at0RQEfcKOXPrEz0p4G0Ts9HOLcpP5CZGM244THsO12lNeiV8nNWJvptwGUikiEiYcBSYI2F51NutmCS465ea9Ar5d8sS/TGmBbgYWAtkA/83RhzwKrzKfdrH32j7fNK+TdLK1QZY94E3rTyHMo6Y4dH87UbxnL1+GHeDkUpNQBailB1S0R4+JrLvB2GUmqAvD7qRimllLU00SulVIDTRK+UUgFOE71SSgU4TfRKKRXgNNErpVSA00SvlFIBThO9UkoFODHGeDuGDiJSBpzstGkocM5L4VgpUK8LAvfa9Lr8T6Be26XXNcoY02PpX59K9JcSke3GmOnejsPdAvW6IHCvTa/L/wTqtfXnurTpRimlApwmeqWUCnC+nuhXeDsAiwTqdUHgXptel/8J1Gvr83X5dBu9UkqpgfP1O3qllFIDpIleKaUCnE8mehG5SUQOichREfmmt+NxJxE5ISL7RGS3iGz3djz9JSJPishZEdnfaVu8iKwTkSPOf4d4M8b+6ubaHhWR087PbbeI3OzNGPtDRNJE5F0RyRORAyLyZed2v/7ceriuQPjMIkQkV0T2OK/tB87tGSKy1ZkjVznX5e7+fXytjV5E7MBh4HqgCMci48uMMXleDcxNROQEMN0Y49cTOUTkSqAWeNoYM9G57WdAhTHmp84/0EOMMd/wZpz90c21PQrUGmN+7s3YBkJEkoFkY8xOEYkBdgCLgfvw48+th+u6A///zASIMsbUikgosAH4MvBV4B/GmBdE5I/AHmPMH7p7H1+8o58JHDXGHDfGNAEvAIu8HJO6hDHmfaDiks2LgL86f/4rjl82v9PNtfk9Y0yxMWan8+caIB9Ixc8/tx6uy+8Zh1rn01DnwwDXAC85t7v8zHwx0acChZ2eFxEgH5qTAd4RkR0i8oC3g3Gz4caYYufPJcBwbwZjgYdFZK+zacevmjcuJSLpwFRgKwH0uV1yXRAAn5mI2EVkN3AWWAccAyqNMS3OXVzmSF9M9IFuvjHmcmAB8JCzmSDgGEeboG+1Cw7MH4DRQA5QDPzCq9EMgIhEAy8DXzHGVHd+zZ8/ty6uKyA+M2NMqzEmBxiBo8VjfF/fwxcT/WkgrdPzEc5tAcEYc9r571lgNY4PLlCUOttL29tNz3o5HrcxxpQ6f+HagCfw08/N2c77MvCsMeYfzs1+/7l1dV2B8pm1M8ZUAu8Cc4A4EQlxvuQyR/piot8GXObsVQ4DlgJrvByTW4hIlLOzCBGJAm4A9vd8lF9ZA3za+fOngVe9GItbtSdCp0/gh5+bs2PvL0C+MeaXnV7y68+tu+sKkM8sUUTinD9H4hikko8j4d/u3M3lZ+Zzo24AnMOgfg3YgSeNMT/2bkTuISKZOO7iAUKA5/z12kTkeeBjOEqmlgLfB14B/g6MxFFu+g5jjN91anZzbR/D0QRggBPA5zu1a/sFEZkPfADsA9qcm7+Noz3bbz+3Hq5rGf7/mU3G0dlqx3Fj/ndjzA+dueQFIB7YBdxtjGns9n18MdErpZRyH19sulFKKeVGmuiVUirAaaJXSqkAp4leKaUCnCZ6pZQKcJrolceJSKuzmuB+EXlRRAb1sO99IvI7T8bX6dw/FJHrXOyzUkRud7FPeudKmEp5miZ65Q0XjDE5zsqQTcCD3g6oK8aY7xlj/untODpzVndVqk800Stv+wAY46yJ/oqzANUW50SRDiISIyIFzqnuiEhs+3MRWS8i/+us231YRK5w7hMhIk+Jo/7/LhG52rn9Pue51oljfYCHReSrzn22iEi8c7+Ou3UR+Z6IbHN+C1nhnI3ZLRGZ5qwhvgd4qNN2u4j8n/O99orI553bbSLyuIgcdMb1Zqdzn3Be307gUyJyg4hsFpGdzm9E0Z3O+Z6zYN7aS2aGqiCmiV55jbNWxwIcMxp/AOwyxkzGMavx6c77OsvPrgc+7ty0FEc97mbn8xBjzEzgKzhmsoIjwRpjzCQcsyT/KiIRztcmArcBM4AfA/XGmKnAZuDeLsL9nTFmhvNbSCRwi4vLewp4xBgz5ZLtnwGqjDEznOf+nIhkOGNJB7KBe3DUM+ms3FkM75/Ad4HrnM+3A191/gH8LXC7MWYa8KTzupQixPUuSrldpLPsKjju6P+CYxr+JwGMMf8WkQQRib3kuD8D/4Wj1MJy4HOdXmsv0LUDR8IEmI8j+WGMOSgiJ4Gxztfedf7xqBGRKuA15/Z9wEXfJpyuFpH/AgbhmHZ+oNMxF3HWJolz1rUH+BuOP2jgqG80uVO7/mDgMmesLzoLcJWIyLuXvO0q57+zcfwx2Oj8UhGG44/TOBx/vNY5t9txVGxUShO98ooLzrKrHVy0hABgjNno7Nj8GGA3xnTu4Gyv89FK7/6/7lwXpK3T87ZLj3d+C3gcx8pgheJYbSqC/hEcd/prLzmHq2Xu6jodv84Ys+yS4ycBB4wxl34TUEqbbpTP+AC4C8CZyM9dWivd6WngORxNI315z7E4inYd6kds7Un9nLM9vMdRNs5yspXOYlu0x+C0FvhCp76GseKoZLoR+KSzrX44jiJqXdkCzBORMc7jo5zXdghIFJE5zu2hIjKhj9epApTe0Stf8SjwpIjsBer5sGzupZ4FfgQ834v3fBz4g4jsA1qA+4wxjb359tCZMaZSRJ7AUea2BEcpbVeW47geA7zTafufcTQt7XR26JbhWAbuZeBaIA/HCms7gaouYikTkfuA50Uk3Ln5u8aYw87moMdEZDCO3+1f42hiUkFOq1cqv+JMZouMMfd4OxZ3E5Fo5yLQCUAuMM8YU+LtuJT/0zt65TdE5Lc4OjVdtWf7q9edHblhwH9rklfuonf0SikV4LQzVimlApwmeqWUCnCa6JVSKsBpoldKqQCniV4ppQLc/wcmi3kxwHDFiQAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
          " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "execution_count": 11, + "id": "94462bf2", + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], "source": [ "# Common imports\n", "import os\n", @@ -2628,7 +2558,7 @@ "X[:,0] = 1.0\n", "estimated_mse_sklearn = np.zeros(Maxpolydegree)\n", "polynomial = np.zeros(Maxpolydegree)\n", - "k = 20\n", + "k =5\n", "kfold = KFold(n_splits = k)\n", "\n", "for polydegree in range(1, Maxpolydegree):\n", @@ -2647,35 +2577,9 @@ "plt.legend()\n", "plt.show()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9bea08ab", - "metadata": {}, - "outputs": [], - "source": [] } ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.14" - } - }, + "metadata": {}, "nbformat": 4, "nbformat_minor": 5 } diff --git a/doc/src/week37/week37.do.txt b/doc/src/week37/week37.do.txt index e16d0ee9b..1c220227a 100644 --- a/doc/src/week37/week37.do.txt +++ b/doc/src/week37/week37.do.txt @@ -8,6 +8,7 @@ DATE: today * Thursday September 15: Summary of Ridge and Lasso with examples and statistical interpretation. Start resampling techniques and discussion of the _bias-variance_ tradeoff. * "Video of lecture":"https://youtu.be/YVQGvcsovpw" * Friday September 16: Resampling methods, bias-variance, overfitting, Cross-validation and Bootstrapping + * "Video of lecture":"https://youtu.be/rbaHRF-7bsQ" Recommended Reading: o Lectures on Resampling methods (these lectures), see also lectures from week 36