From 3d4b9f7f4aa4462f94a0ba7e7eae740bf92ee349 Mon Sep 17 00:00:00 2001 From: Morten Hjorth-Jensen Date: Mon, 5 Sep 2022 13:03:33 +0200 Subject: [PATCH] update --- .../2022/Project1/html/._Project1-bs000.html | 29 +++- .../2022/Project1/html/Project1-bs.html | 29 +++- doc/Projects/2022/Project1/html/Project1.html | 29 +++- .../2022/Project1/ipynb/Project1.ipynb | 154 +++++++++++------- .../Project1/ipynb/ipynb-Project1-src.tar.gz | Bin 193 -> 193 bytes doc/Projects/2022/Project1/pdf/Project1.p.tex | 26 ++- doc/Projects/2022/Project1/pdf/Project1.pdf | Bin 253625 -> 254351 bytes doc/Projects/2022/Project1/pdf/Project1.tex | 26 ++- .../Projects/2022/Project1/Project1.do.txt | 29 +++- 9 files changed, 214 insertions(+), 108 deletions(-) diff --git a/doc/Projects/2022/Project1/html/._Project1-bs000.html b/doc/Projects/2022/Project1/html/._Project1-bs000.html index 2a2707c2d..229495544 100644 --- a/doc/Projects/2022/Project1/html/._Project1-bs000.html +++ b/doc/Projects/2022/Project1/html/._Project1-bs000.html @@ -302,8 +302,6 @@ plt.show()

Part a): Paper and pencil part (also as weekly exercise for week 36)

-

This part should be included in your theory description of the report.

-

This exercise deals with various mean values and variances in linear regression method (here it may be useful to look up chapter 3, equation (3.8) of Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer).

The assumption we have made is @@ -349,7 +347,7 @@ $$ \mbox{Var}(\boldsymbol{\beta}) = \sigma^2 \, (\mathbf{X}^{T} \mathbf{X})^{-1}. $$ -

We can use the last expression when we define a so-called confidence interval for the parameters \( \beta \). +

We can use the last expression when we define a so-called confidence interval for the parameters \( \beta \). . A given parameter \( \beta_j \) is given by the diagonal matrix element of the above matrix.

Part b) : Ordinary Least Square (OLS) on the Franke function

@@ -436,7 +434,7 @@ dataset \( \mathcal{L} \) consisting of the data \( \mathbf{X}_\mathcal{L}=\{(y_j, \boldsymbol{x}_j), j=0\ldots n-1\} \).

-

Let us assume that the true data is generated from a noisy model

+

As in part a), we assume that the true data is generated from a noisy model

$$ \boldsymbol{y}=f(\boldsymbol{x}) + \boldsymbol{\epsilon}. @@ -462,14 +460,26 @@ $$

Here the expected value \( \mathbb{E} \) is the sample value.

-

Show that you can rewrite this as

+

Show that you can rewrite this in terms of a term which contains the variance of the model itself (the so-called variance term), a +term which measures the deviation from the true data and the mean value of the model (the bias term) and finally the variance of the noise. +That is, show that +

$$ -\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. +\mathbb{E}\left[(\boldsymbol{y}-\boldsymbol{\tilde{y}})^2\right]=(\mathrm{Bias}[\tilde{y}])^2+\mathrm{var}[\tilde{f}]+\sigma^2, $$ -

The answer to this exercise can be included in the theory part of the report. -Explain what the terms mean, which one is the bias and which one is -the variance and discuss their interpretations. +

with

+$$ +(\mathrm{Bias}[\tilde{y}])^2=\left(\boldsymbol{y}-\mathbb{E}\left[\boldsymbol{\tilde{y}}\right]\right)^2, +$$ + +

and

+$$ +\mathrm{var}[\tilde{f}]=\frac{1}{n}\sum_i(\tilde{y}_i-\mathbb{E}\left[\boldsymbol{\tilde{y}}\right])^2. +$$ + +

The answer to this exercise should be included in the theory part of the report. +Explain what the terms mean and discuss their interpretations.

Perform then a bias-variance analysis of the Franke function by @@ -479,6 +489,7 @@ studying the MSE value as function of the complexity of your model.

Discuss the bias and variance trade-off as function of your model complexity (the degree of the polynomial) and the number of data points, and possibly also your training and test data using the bootstrap resampling method. +You can follow the code example in the jupyter-book at https://compphysics.github.io/MachineLearning/doc/LectureNotes/_build/html/chapter3.html#the-bias-variance-tradeoff.

Note also that when you calculate the bias, in all applications you don't know the function values \( f_i \). You would hence replace them with the actual data points \( y_i \).

diff --git a/doc/Projects/2022/Project1/html/Project1-bs.html b/doc/Projects/2022/Project1/html/Project1-bs.html index 2a2707c2d..229495544 100644 --- a/doc/Projects/2022/Project1/html/Project1-bs.html +++ b/doc/Projects/2022/Project1/html/Project1-bs.html @@ -302,8 +302,6 @@ plt.show()

Part a): Paper and pencil part (also as weekly exercise for week 36)

-

This part should be included in your theory description of the report.

-

This exercise deals with various mean values and variances in linear regression method (here it may be useful to look up chapter 3, equation (3.8) of Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer).

The assumption we have made is @@ -349,7 +347,7 @@ $$ \mbox{Var}(\boldsymbol{\beta}) = \sigma^2 \, (\mathbf{X}^{T} \mathbf{X})^{-1}. $$ -

We can use the last expression when we define a so-called confidence interval for the parameters \( \beta \). +

We can use the last expression when we define a so-called confidence interval for the parameters \( \beta \). . A given parameter \( \beta_j \) is given by the diagonal matrix element of the above matrix.

Part b) : Ordinary Least Square (OLS) on the Franke function

@@ -436,7 +434,7 @@ dataset \( \mathcal{L} \) consisting of the data \( \mathbf{X}_\mathcal{L}=\{(y_j, \boldsymbol{x}_j), j=0\ldots n-1\} \).

-

Let us assume that the true data is generated from a noisy model

+

As in part a), we assume that the true data is generated from a noisy model

$$ \boldsymbol{y}=f(\boldsymbol{x}) + \boldsymbol{\epsilon}. @@ -462,14 +460,26 @@ $$

Here the expected value \( \mathbb{E} \) is the sample value.

-

Show that you can rewrite this as

+

Show that you can rewrite this in terms of a term which contains the variance of the model itself (the so-called variance term), a +term which measures the deviation from the true data and the mean value of the model (the bias term) and finally the variance of the noise. +That is, show that +

$$ -\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. +\mathbb{E}\left[(\boldsymbol{y}-\boldsymbol{\tilde{y}})^2\right]=(\mathrm{Bias}[\tilde{y}])^2+\mathrm{var}[\tilde{f}]+\sigma^2, $$ -

The answer to this exercise can be included in the theory part of the report. -Explain what the terms mean, which one is the bias and which one is -the variance and discuss their interpretations. +

with

+$$ +(\mathrm{Bias}[\tilde{y}])^2=\left(\boldsymbol{y}-\mathbb{E}\left[\boldsymbol{\tilde{y}}\right]\right)^2, +$$ + +

and

+$$ +\mathrm{var}[\tilde{f}]=\frac{1}{n}\sum_i(\tilde{y}_i-\mathbb{E}\left[\boldsymbol{\tilde{y}}\right])^2. +$$ + +

The answer to this exercise should be included in the theory part of the report. +Explain what the terms mean and discuss their interpretations.

Perform then a bias-variance analysis of the Franke function by @@ -479,6 +489,7 @@ studying the MSE value as function of the complexity of your model.

Discuss the bias and variance trade-off as function of your model complexity (the degree of the polynomial) and the number of data points, and possibly also your training and test data using the bootstrap resampling method. +You can follow the code example in the jupyter-book at https://compphysics.github.io/MachineLearning/doc/LectureNotes/_build/html/chapter3.html#the-bias-variance-tradeoff.

Note also that when you calculate the bias, in all applications you don't know the function values \( f_i \). You would hence replace them with the actual data points \( y_i \).

diff --git a/doc/Projects/2022/Project1/html/Project1.html b/doc/Projects/2022/Project1/html/Project1.html index 5873ccbfd..2034ad644 100644 --- a/doc/Projects/2022/Project1/html/Project1.html +++ b/doc/Projects/2022/Project1/html/Project1.html @@ -338,8 +338,6 @@ plt.show()

Part a): Paper and pencil part (also as weekly exercise for week 36)

-

This part should be included in your theory description of the report.

-

This exercise deals with various mean values and variances in linear regression method (here it may be useful to look up chapter 3, equation (3.8) of Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer).

The assumption we have made is @@ -385,7 +383,7 @@ $$ \mbox{Var}(\boldsymbol{\beta}) = \sigma^2 \, (\mathbf{X}^{T} \mathbf{X})^{-1}. $$ -

We can use the last expression when we define a so-called confidence interval for the parameters \( \beta \). +

We can use the last expression when we define a so-called confidence interval for the parameters \( \beta \). . A given parameter \( \beta_j \) is given by the diagonal matrix element of the above matrix.

Part b) : Ordinary Least Square (OLS) on the Franke function

@@ -472,7 +470,7 @@ dataset \( \mathcal{L} \) consisting of the data \( \mathbf{X}_\mathcal{L}=\{(y_j, \boldsymbol{x}_j), j=0\ldots n-1\} \).

-

Let us assume that the true data is generated from a noisy model

+

As in part a), we assume that the true data is generated from a noisy model

$$ \boldsymbol{y}=f(\boldsymbol{x}) + \boldsymbol{\epsilon}. @@ -498,14 +496,26 @@ $$

Here the expected value \( \mathbb{E} \) is the sample value.

-

Show that you can rewrite this as

+

Show that you can rewrite this in terms of a term which contains the variance of the model itself (the so-called variance term), a +term which measures the deviation from the true data and the mean value of the model (the bias term) and finally the variance of the noise. +That is, show that +

$$ -\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. +\mathbb{E}\left[(\boldsymbol{y}-\boldsymbol{\tilde{y}})^2\right]=(\mathrm{Bias}[\tilde{y}])^2+\mathrm{var}[\tilde{f}]+\sigma^2, $$ -

The answer to this exercise can be included in the theory part of the report. -Explain what the terms mean, which one is the bias and which one is -the variance and discuss their interpretations. +

with

+$$ +(\mathrm{Bias}[\tilde{y}])^2=\left(\boldsymbol{y}-\mathbb{E}\left[\boldsymbol{\tilde{y}}\right]\right)^2, +$$ + +

and

+$$ +\mathrm{var}[\tilde{f}]=\frac{1}{n}\sum_i(\tilde{y}_i-\mathbb{E}\left[\boldsymbol{\tilde{y}}\right])^2. +$$ + +

The answer to this exercise should be included in the theory part of the report. +Explain what the terms mean and discuss their interpretations.

Perform then a bias-variance analysis of the Franke function by @@ -515,6 +525,7 @@ studying the MSE value as function of the complexity of your model.

Discuss the bias and variance trade-off as function of your model complexity (the degree of the polynomial) and the number of data points, and possibly also your training and test data using the bootstrap resampling method. +You can follow the code example in the jupyter-book at https://compphysics.github.io/MachineLearning/doc/LectureNotes/_build/html/chapter3.html#the-bias-variance-tradeoff.

Note also that when you calculate the bias, in all applications you don't know the function values \( f_i \). You would hence replace them with the actual data points \( y_i \).

diff --git a/doc/Projects/2022/Project1/ipynb/Project1.ipynb b/doc/Projects/2022/Project1/ipynb/Project1.ipynb index 4758c2997..28018807d 100644 --- a/doc/Projects/2022/Project1/ipynb/Project1.ipynb +++ b/doc/Projects/2022/Project1/ipynb/Project1.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "98e2a2bd", + "id": "2f0d0303", "metadata": { "editable": true }, @@ -14,7 +14,7 @@ }, { "cell_type": "markdown", - "id": "1951a8ff", + "id": "383fa1e8", "metadata": { "editable": true }, @@ -27,7 +27,7 @@ }, { "cell_type": "markdown", - "id": "755dd202", + "id": "00edcc37", "metadata": { "editable": true }, @@ -63,7 +63,7 @@ }, { "cell_type": "markdown", - "id": "3b39d52d", + "id": "b8f880fc", "metadata": { "editable": true }, @@ -85,7 +85,7 @@ }, { "cell_type": "markdown", - "id": "92521420", + "id": "1e667978", "metadata": { "editable": true }, @@ -100,7 +100,7 @@ }, { "cell_type": "markdown", - "id": "5034b29f", + "id": "3ce1ab3a", "metadata": { "editable": true }, @@ -129,7 +129,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "9ee70500", + "id": "965d1f48", "metadata": { "collapsed": false, "editable": true @@ -181,15 +181,13 @@ }, { "cell_type": "markdown", - "id": "94aa10c7", + "id": "6171ab22", "metadata": { "editable": true }, "source": [ "### Part a): Paper and pencil part (also as weekly exercise for week 36)\n", "\n", - "This part should be included in your theory description of the report.\n", - "\n", "This exercise deals with various mean values and variances in linear regression method (here it may be useful to look up chapter 3, equation (3.8) of [Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer](https://www.springer.com/gp/book/9780387848570)).\n", "\n", "The assumption we have made is \n", @@ -199,7 +197,7 @@ }, { "cell_type": "markdown", - "id": "1c6e721e", + "id": "969dd687", "metadata": { "editable": true }, @@ -211,7 +209,7 @@ }, { "cell_type": "markdown", - "id": "d3b0bc88", + "id": "9194b1fc", "metadata": { "editable": true }, @@ -222,7 +220,7 @@ }, { "cell_type": "markdown", - "id": "76226748", + "id": "cb6e0c5a", "metadata": { "editable": true }, @@ -234,7 +232,7 @@ }, { "cell_type": "markdown", - "id": "735571e2", + "id": "ef0c8ce0", "metadata": { "editable": true }, @@ -246,7 +244,7 @@ }, { "cell_type": "markdown", - "id": "7b93fc13", + "id": "c4e904d3", "metadata": { "editable": true }, @@ -258,7 +256,7 @@ }, { "cell_type": "markdown", - "id": "80c44548", + "id": "8ce55ba5", "metadata": { "editable": true }, @@ -269,7 +267,7 @@ }, { "cell_type": "markdown", - "id": "1e70c3f1", + "id": "3aa94ac5", "metadata": { "editable": true }, @@ -281,7 +279,7 @@ }, { "cell_type": "markdown", - "id": "31f5d975", + "id": "8a15da0c", "metadata": { "editable": true }, @@ -294,7 +292,7 @@ }, { "cell_type": "markdown", - "id": "a564fee7", + "id": "9761270b", "metadata": { "editable": true }, @@ -306,7 +304,7 @@ }, { "cell_type": "markdown", - "id": "05fc2911", + "id": "12f47ebc", "metadata": { "editable": true }, @@ -316,7 +314,7 @@ }, { "cell_type": "markdown", - "id": "ca40d503", + "id": "be6e6c6e", "metadata": { "editable": true }, @@ -328,18 +326,18 @@ }, { "cell_type": "markdown", - "id": "039784c1", + "id": "734989a3", "metadata": { "editable": true }, "source": [ - "We can use the last expression when we define a so-called confidence interval for the parameters $\\beta$.\n", + "We can use the last expression when we define a so-called confidence interval for the parameters $\\beta$. .\n", "A given parameter $\\beta_j$ is given by the diagonal matrix element of the above matrix." ] }, { "cell_type": "markdown", - "id": "df1c03c6", + "id": "7e01db05", "metadata": { "editable": true }, @@ -361,7 +359,7 @@ }, { "cell_type": "markdown", - "id": "7e229e98", + "id": "6431c5d5", "metadata": { "editable": true }, @@ -374,7 +372,7 @@ }, { "cell_type": "markdown", - "id": "00b00673", + "id": "e4eae5de", "metadata": { "editable": true }, @@ -386,7 +384,7 @@ }, { "cell_type": "markdown", - "id": "506c2d83", + "id": "6b7f7088", "metadata": { "editable": true }, @@ -398,7 +396,7 @@ }, { "cell_type": "markdown", - "id": "2cfcf061", + "id": "57e680b6", "metadata": { "editable": true }, @@ -408,7 +406,7 @@ }, { "cell_type": "markdown", - "id": "84225fa8", + "id": "bbee460a", "metadata": { "editable": true }, @@ -420,7 +418,7 @@ }, { "cell_type": "markdown", - "id": "7f22646c", + "id": "ab772d43", "metadata": { "editable": true }, @@ -449,7 +447,7 @@ }, { "cell_type": "markdown", - "id": "05fd370a", + "id": "022b31d9", "metadata": { "editable": true }, @@ -476,12 +474,12 @@ "dataset $\\mathcal{L}$ consisting of the data\n", "$\\mathbf{X}_\\mathcal{L}=\\{(y_j, \\boldsymbol{x}_j), j=0\\ldots n-1\\}$.\n", "\n", - "Let us assume that the true data is generated from a noisy model" + "As in part a), we assume that the true data is generated from a noisy model" ] }, { "cell_type": "markdown", - "id": "ac09204e", + "id": "38c61204", "metadata": { "editable": true }, @@ -493,7 +491,7 @@ }, { "cell_type": "markdown", - "id": "09bceede", + "id": "aa00d7dd", "metadata": { "editable": true }, @@ -512,7 +510,7 @@ }, { "cell_type": "markdown", - "id": "f5bae3fa", + "id": "6240984f", "metadata": { "editable": true }, @@ -524,38 +522,83 @@ }, { "cell_type": "markdown", - "id": "a8afd8c5", + "id": "0f01484d", "metadata": { "editable": true }, "source": [ "Here the expected value $\\mathbb{E}$ is the sample value. \n", "\n", - "Show that you can rewrite this as" + "Show that you can rewrite this in terms of a term which contains the variance of the model itself (the so-called variance term), a\n", + "term which measures the deviation from the true data and the mean value of the model (the bias term) and finally the variance of the noise.\n", + "That is, show that" ] }, { "cell_type": "markdown", - "id": "66c12c5c", + "id": "37f1b3f8", "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", + "\\mathbb{E}\\left[(\\boldsymbol{y}-\\boldsymbol{\\tilde{y}})^2\\right]=(\\mathrm{Bias}[\\tilde{y}])^2+\\mathrm{var}[\\tilde{f}]+\\sigma^2,\n", "$$" ] }, { "cell_type": "markdown", - "id": "80d3e8a0", + "id": "0673dacf", "metadata": { "editable": true }, "source": [ - "The answer to this exercise can be included in the theory part of the report.\n", - "Explain what the terms mean, which one is the bias and which one is\n", - "the variance and discuss their interpretations.\n", + "with" + ] + }, + { + "cell_type": "markdown", + "id": "281ae919", + "metadata": { + "editable": true + }, + "source": [ + "$$\n", + "(\\mathrm{Bias}[\\tilde{y}])^2=\\left(\\boldsymbol{y}-\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right]\\right)^2,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "3604e435", + "metadata": { + "editable": true + }, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "cb6e58c2", + "metadata": { + "editable": true + }, + "source": [ + "$$\n", + "\\mathrm{var}[\\tilde{f}]=\\frac{1}{n}\\sum_i(\\tilde{y}_i-\\mathbb{E}\\left[\\boldsymbol{\\tilde{y}}\\right])^2.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "65111a57", + "metadata": { + "editable": true + }, + "source": [ + "The answer to this exercise should be included in the theory part of the report.\n", + "Explain what the terms mean and discuss their interpretations.\n", "\n", "Perform then a bias-variance analysis of the Franke function by\n", "studying the MSE value as function of the complexity of your model.\n", @@ -563,13 +606,14 @@ "Discuss the bias and variance trade-off as function\n", "of your model complexity (the degree of the polynomial) and the number\n", "of data points, and possibly also your training and test data using the **bootstrap** resampling method.\n", + "You can follow the code example in the jupyter-book at .\n", "\n", "Note also that when you calculate the bias, in all applications you don't know the function values $f_i$. You would hence replace them with the actual data points $y_i$." ] }, { "cell_type": "markdown", - "id": "a28b6e71", + "id": "54283cc7", "metadata": { "editable": true }, @@ -594,7 +638,7 @@ }, { "cell_type": "markdown", - "id": "d9cfcca9", + "id": "47078a1a", "metadata": { "editable": true }, @@ -614,7 +658,7 @@ }, { "cell_type": "markdown", - "id": "66f94cf5", + "id": "97849c2c", "metadata": { "editable": true }, @@ -631,7 +675,7 @@ }, { "cell_type": "markdown", - "id": "c0fbed56", + "id": "c37b1811", "metadata": { "editable": true }, @@ -659,7 +703,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "62fe430e", + "id": "646b70df", "metadata": { "collapsed": false, "editable": true @@ -671,7 +715,7 @@ }, { "cell_type": "markdown", - "id": "46a403c0", + "id": "5107f3b6", "metadata": { "editable": true }, @@ -683,7 +727,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "e3f11b71", + "id": "24ae3ba0", "metadata": { "collapsed": false, "editable": true @@ -709,7 +753,7 @@ }, { "cell_type": "markdown", - "id": "9a69144e", + "id": "1f239875", "metadata": { "editable": true }, @@ -734,7 +778,7 @@ }, { "cell_type": "markdown", - "id": "ad7c0e60", + "id": "ea729b77", "metadata": { "editable": true }, @@ -748,7 +792,7 @@ }, { "cell_type": "markdown", - "id": "abc7b07b", + "id": "61fd5713", "metadata": { "editable": true }, @@ -778,7 +822,7 @@ }, { "cell_type": "markdown", - "id": "a85b7b4b", + "id": "9579c5f3", "metadata": { "editable": true }, @@ -800,7 +844,7 @@ }, { "cell_type": "markdown", - "id": "10af239b", + "id": "ecf2eb04", "metadata": { "editable": true }, diff --git a/doc/Projects/2022/Project1/ipynb/ipynb-Project1-src.tar.gz b/doc/Projects/2022/Project1/ipynb/ipynb-Project1-src.tar.gz index 13f7a513b078535a81faefc29763c6d1dd9fb6eb..4cffa264ff0e2f094f57c0384d31c37f8c42e82e 100644 GIT binary patch literal 193 zcmV;y06za8iwFRH*A-&`1MSaC3c@fD2H>uHia9|^>?3PI7cPV%ULdupO|_Ytq+oAv z+JdeWH${YeS^NnZhMB{5z1eRgd$+-22q9ULz?dvcrzETSJ)x8VO=6P9?ywXHbr%)@ zS#G44-dL{PC~e&cWrTWH=gO+;L!WsSc;=rt*3!T(A8d^Z6k1UrULe=lh?Av}>;_dp viNcJZpvA41S^!rA@UoOvqT<)E(|FdrHBtEMbv)1Wye~ZfX03s@00;m89C}!@ literal 193 zcmV;y06za8iwFQS&J|+-1MSaC3c@fD2H>uHia9|^nm*QoUAPd6c!AWWHq~Zol7hXx zeSoeMH${Yeo1bBZVdju+w)-rwck8W&5Rya@OqnL}oFrW88Ko)Eh>@5@DM=U*%3>CJ zK-N3yr8k!A@szf1gfc?Cn;XZf>cgJp6?o>KIM&j@E+1@-3KUvVAYLHX*oc#*f$RoV vK#9UkP0-@jOD%w_0eD$TD^c;Q-)TH+-kQMw^*fH^IL?5T+x00;m8wsczR diff --git a/doc/Projects/2022/Project1/pdf/Project1.p.tex b/doc/Projects/2022/Project1/pdf/Project1.p.tex index 3ba69f328..130c4ecc0 100644 --- a/doc/Projects/2022/Project1/pdf/Project1.p.tex +++ b/doc/Projects/2022/Project1/pdf/Project1.p.tex @@ -290,8 +290,6 @@ plt.show() \paragraph{Part a): Paper and pencil part (also as weekly exercise for week 36).} -This part should be included in your theory description of the report. - This exercise deals with various mean values and variances in linear regression method (here it may be useful to look up chapter 3, equation (3.8) of \href{{https://www.springer.com/gp/book/9780387848570}}{Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer}). The assumption we have made is @@ -329,7 +327,7 @@ Show finally that the variance of $\bm{\beta}$ is \mbox{Var}(\bm{\beta}) = \sigma^2 \, (\mathbf{X}^{T} \mathbf{X})^{-1}. \] -We can use the last expression when we define a so-called confidence interval for the parameters $\beta$. +We can use the last expression when we define a so-called confidence interval for the parameters $\beta$. . A given parameter $\beta_j$ is given by the diagonal matrix element of the above matrix. \paragraph{Part b) : Ordinary Least Square (OLS) on the Franke function.} @@ -405,7 +403,7 @@ Consider a dataset $\mathcal{L}$ consisting of the data $\mathbf{X}_\mathcal{L}=\{(y_j, \boldsymbol{x}_j), j=0\ldots n-1\}$. -Let us assume that the true data is generated from a noisy model +As in part a), we assume that the true data is generated from a noisy model \[ \bm{y}=f(\boldsymbol{x}) + \bm{\epsilon}. @@ -427,13 +425,22 @@ C(\bm{X},\bm{\beta}) =\frac{1}{n}\sum_{i=0}^{n-1}(y_i-\tilde{y}_i)^2=\mathbb{E}\ \] Here the expected value $\mathbb{E}$ is the sample value. -Show that you can rewrite this as +Show that you can rewrite this in terms of a term which contains the variance of the model itself (the so-called variance term), a +term which measures the deviation from the true data and the mean value of the model (the bias term) and finally the variance of the noise. +That is, show that \[ -\mathbb{E}\left[(\bm{y}-\bm{\tilde{y}})^2\right]=\frac{1}{n}\sum_i(f_i-\mathbb{E}\left[\bm{\tilde{y}}\right])^2+\frac{1}{n}\sum_i(\tilde{y}_i-\mathbb{E}\left[\bm{\tilde{y}}\right])^2+\sigma^2. +\mathbb{E}\left[(\bm{y}-\bm{\tilde{y}})^2\right]=(\mathrm{Bias}[\tilde{y}])^2+\mathrm{var}[\tilde{f}]+\sigma^2, \] -The answer to this exercise can be included in the theory part of the report. -Explain what the terms mean, which one is the bias and which one is -the variance and discuss their interpretations. +with +\[ +(\mathrm{Bias}[\tilde{y}])^2=\left(\bm{y}-\mathbb{E}\left[\bm{\tilde{y}}\right]\right)^2, +\] +and +\[ +\mathrm{var}[\tilde{f}]=\frac{1}{n}\sum_i(\tilde{y}_i-\mathbb{E}\left[\bm{\tilde{y}}\right])^2. +\] +The answer to this exercise should be included in the theory part of the report. +Explain what the terms mean and discuss their interpretations. Perform then a bias-variance analysis of the Franke function by studying the MSE value as function of the complexity of your model. @@ -441,6 +448,7 @@ studying the MSE value as function of the complexity of your model. Discuss the bias and variance trade-off as function of your model complexity (the degree of the polynomial) and the number of data points, and possibly also your training and test data using the \textbf{bootstrap} resampling method. +You can follow the code example in the jupyter-book at \href{{https://compphysics.github.io/MachineLearning/doc/LectureNotes/_build/html/chapter3.html#the-bias-variance-tradeoff}}{\nolinkurl{https://compphysics.github.io/MachineLearning/doc/LectureNotes/_build/html/chapter3.html\#the-bias-variance-tradeoff}}. Note also that when you calculate the bias, in all applications you don't know the function values $f_i$. You would hence replace them with the actual data points $y_i$. diff --git a/doc/Projects/2022/Project1/pdf/Project1.pdf b/doc/Projects/2022/Project1/pdf/Project1.pdf index 5f54fb2ad21edc07ce4f9c576ea286e48c6af781..c64d5e78f7bee1d110e88b2c4d41e17930e96ffc 100644 GIT binary patch delta 29272 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%0DjztpBV_l{v1xG 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 delta 28526 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 Q96$~(L>d|?6=}r(2UR}%xc~qF diff --git a/doc/Projects/2022/Project1/pdf/Project1.tex b/doc/Projects/2022/Project1/pdf/Project1.tex index 606fb1053..eed358f11 100644 --- a/doc/Projects/2022/Project1/pdf/Project1.tex +++ b/doc/Projects/2022/Project1/pdf/Project1.tex @@ -260,8 +260,6 @@ plt.show() \paragraph{Part a): Paper and pencil part (also as weekly exercise for week 36).} -This part should be included in your theory description of the report. - This exercise deals with various mean values and variances in linear regression method (here it may be useful to look up chapter 3, equation (3.8) of \href{{https://www.springer.com/gp/book/9780387848570}}{Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer}). The assumption we have made is @@ -299,7 +297,7 @@ Show finally that the variance of $\bm{\beta}$ is \mbox{Var}(\bm{\beta}) = \sigma^2 \, (\mathbf{X}^{T} \mathbf{X})^{-1}. \] -We can use the last expression when we define a so-called confidence interval for the parameters $\beta$. +We can use the last expression when we define a so-called confidence interval for the parameters $\beta$. . A given parameter $\beta_j$ is given by the diagonal matrix element of the above matrix. \paragraph{Part b) : Ordinary Least Square (OLS) on the Franke function.} @@ -375,7 +373,7 @@ Consider a dataset $\mathcal{L}$ consisting of the data $\mathbf{X}_\mathcal{L}=\{(y_j, \boldsymbol{x}_j), j=0\ldots n-1\}$. -Let us assume that the true data is generated from a noisy model +As in part a), we assume that the true data is generated from a noisy model \[ \bm{y}=f(\boldsymbol{x}) + \bm{\epsilon}. @@ -397,13 +395,22 @@ C(\bm{X},\bm{\beta}) =\frac{1}{n}\sum_{i=0}^{n-1}(y_i-\tilde{y}_i)^2=\mathbb{E}\ \] Here the expected value $\mathbb{E}$ is the sample value. -Show that you can rewrite this as +Show that you can rewrite this in terms of a term which contains the variance of the model itself (the so-called variance term), a +term which measures the deviation from the true data and the mean value of the model (the bias term) and finally the variance of the noise. +That is, show that \[ -\mathbb{E}\left[(\bm{y}-\bm{\tilde{y}})^2\right]=\frac{1}{n}\sum_i(f_i-\mathbb{E}\left[\bm{\tilde{y}}\right])^2+\frac{1}{n}\sum_i(\tilde{y}_i-\mathbb{E}\left[\bm{\tilde{y}}\right])^2+\sigma^2. +\mathbb{E}\left[(\bm{y}-\bm{\tilde{y}})^2\right]=(\mathrm{Bias}[\tilde{y}])^2+\mathrm{var}[\tilde{f}]+\sigma^2, \] -The answer to this exercise can be included in the theory part of the report. -Explain what the terms mean, which one is the bias and which one is -the variance and discuss their interpretations. +with +\[ +(\mathrm{Bias}[\tilde{y}])^2=\left(\bm{y}-\mathbb{E}\left[\bm{\tilde{y}}\right]\right)^2, +\] +and +\[ +\mathrm{var}[\tilde{f}]=\frac{1}{n}\sum_i(\tilde{y}_i-\mathbb{E}\left[\bm{\tilde{y}}\right])^2. +\] +The answer to this exercise should be included in the theory part of the report. +Explain what the terms mean and discuss their interpretations. Perform then a bias-variance analysis of the Franke function by studying the MSE value as function of the complexity of your model. @@ -411,6 +418,7 @@ studying the MSE value as function of the complexity of your model. Discuss the bias and variance trade-off as function of your model complexity (the degree of the polynomial) and the number of data points, and possibly also your training and test data using the \textbf{bootstrap} resampling method. +You can follow the code example in the jupyter-book at \href{{https://compphysics.github.io/MachineLearning/doc/LectureNotes/_build/html/chapter3.html#the-bias-variance-tradeoff}}{\nolinkurl{https://compphysics.github.io/MachineLearning/doc/LectureNotes/_build/html/chapter3.html\#the-bias-variance-tradeoff}}. Note also that when you calculate the bias, in all applications you don't know the function values $f_i$. You would hence replace them with the actual data points $y_i$. diff --git a/doc/src/Projects/2022/Project1/Project1.do.txt b/doc/src/Projects/2022/Project1/Project1.do.txt index f5d2cc567..218bf785e 100644 --- a/doc/src/Projects/2022/Project1/Project1.do.txt +++ b/doc/src/Projects/2022/Project1/Project1.do.txt @@ -123,7 +123,6 @@ plt.show() === Part a): Paper and pencil part (also as weekly exercise for week 36) === -This part should be included in your theory description of the report. This exercise deals with various mean values and variances in linear regression method (here it may be useful to look up chapter 3, equation (3.8) of "Trevor Hastie, Robert Tibshirani, Jerome H. Friedman, The Elements of Statistical Learning, Springer":"https://www.springer.com/gp/book/9780387848570"). @@ -176,7 +175,7 @@ Show finally that the variance of $\bm{\beta}$ is !et -We can use the last expression when we define a so-called confidence interval for the parameters $\beta$. +We can use the last expression when we define a so-called confidence interval for the parameters $\beta$. . A given parameter $\beta_j$ is given by the diagonal matrix element of the above matrix. === Part b) : Ordinary Least Square (OLS) on the Franke function === @@ -264,7 +263,7 @@ Consider a dataset $\mathcal{L}$ consisting of the data $\mathbf{X}_\mathcal{L}=\{(y_j, \boldsymbol{x}_j), j=0\ldots n-1\}$. -Let us assume that the true data is generated from a noisy model +As in part a), we assume that the true data is generated from a noisy model !bt \[ @@ -290,15 +289,28 @@ C(\bm{X},\bm{\beta}) =\frac{1}{n}\sum_{i=0}^{n-1}(y_i-\tilde{y}_i)^2=\mathbb{E}\ !et Here the expected value $\mathbb{E}$ is the sample value. -Show that you can rewrite this as +Show that you can rewrite this in terms of a term which contains the variance of the model itself (the so-called variance term), a +term which measures the deviation from the true data and the mean value of the model (the bias term) and finally the variance of the noise. +That is, show that !bt \[ -\mathbb{E}\left[(\bm{y}-\bm{\tilde{y}})^2\right]=\frac{1}{n}\sum_i(f_i-\mathbb{E}\left[\bm{\tilde{y}}\right])^2+\frac{1}{n}\sum_i(\tilde{y}_i-\mathbb{E}\left[\bm{\tilde{y}}\right])^2+\sigma^2. +\mathbb{E}\left[(\bm{y}-\bm{\tilde{y}})^2\right]=(\mathrm{Bias}[\tilde{y}])^2+\mathrm{var}[\tilde{f}]+\sigma^2, \] !et -The answer to this exercise can be included in the theory part of the report. -Explain what the terms mean, which one is the bias and which one is -the variance and discuss their interpretations. +with +!bt +\[ +(\mathrm{Bias}[\tilde{y}])^2=\left(\bm{y}-\mathbb{E}\left[\bm{\tilde{y}}\right]\right)^2, +\] +!et +and +!bt +\[ +\mathrm{var}[\tilde{f}]=\frac{1}{n}\sum_i(\tilde{y}_i-\mathbb{E}\left[\bm{\tilde{y}}\right])^2. +\] +!et +The answer to this exercise should be included in the theory part of the report. +Explain what the terms mean and discuss their interpretations. Perform then a bias-variance analysis of the Franke function by studying the MSE value as function of the complexity of your model. @@ -306,6 +318,7 @@ studying the MSE value as function of the complexity of your model. Discuss the bias and variance trade-off as function of your model complexity (the degree of the polynomial) and the number of data points, and possibly also your training and test data using the _bootstrap_ resampling method. +You can follow the code example in the jupyter-book at URL:"https://compphysics.github.io/MachineLearning/doc/LectureNotes/_build/html/chapter3.html#the-bias-variance-tradeoff". Note also that when you calculate the bias, in all applications you don't know the function values $f_i$. You would hence replace them with the actual data points $y_i$.