From e0f2b706c39712c7e67799f6dd8b1d4008025264 Mon Sep 17 00:00:00 2001 From: Morten Hjorth-Jensen Date: Mon, 11 Sep 2023 12:48:26 +0200 Subject: [PATCH] update exercises --- doc/.DS_Store | Bin 10244 -> 10244 bytes doc/LectureNotes/exercisesweek37.ipynb | 44 +- doc/src/week37/exercisesweek37.do.txt | 2 +- .../programs/codeexamplesscaling.do.txt | 105 ++-- .../week37/programs/codeexamplesscaling.ipynb | 457 +++++++++--------- 5 files changed, 307 insertions(+), 301 deletions(-) diff --git a/doc/.DS_Store b/doc/.DS_Store index ae722b469beaea4472676eb0b31d158e76b2443f..542b6d6f4939a507636a59df1a70a11a51ba8d47 100644 GIT binary patch delta 56 ucmZn(XbIS0Av$@rKq-f@skx4Vk-6dI4?^~vKZy!+ZDv<6WW^>WzytsWB@v+j delta 122 zcmZn(XbIS0AHM+K07BjFTZ2* YMNxUi&dnc1#ke-JDj2hprB{>*0NL6k$p8QV diff --git a/doc/LectureNotes/exercisesweek37.ipynb b/doc/LectureNotes/exercisesweek37.ipynb index 3ae3ea9e9..c565e7b07 100644 --- a/doc/LectureNotes/exercisesweek37.ipynb +++ b/doc/LectureNotes/exercisesweek37.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "ebfc874e", + "id": "cfebae03", "metadata": { "editable": true }, @@ -14,7 +14,7 @@ }, { "cell_type": "markdown", - "id": "8ecf95b0", + "id": "353ebb07", "metadata": { "editable": true }, @@ -27,7 +27,7 @@ }, { "cell_type": "markdown", - "id": "7940e437", + "id": "c02815dd", "metadata": { "editable": true }, @@ -45,7 +45,7 @@ }, { "cell_type": "markdown", - "id": "964cf4c4", + "id": "fb152043", "metadata": { "editable": true }, @@ -57,7 +57,7 @@ }, { "cell_type": "markdown", - "id": "bc8b093a", + "id": "9aba7a46", "metadata": { "editable": true }, @@ -68,7 +68,7 @@ }, { "cell_type": "markdown", - "id": "bc1907b5", + "id": "be52c097", "metadata": { "editable": true }, @@ -80,7 +80,7 @@ }, { "cell_type": "markdown", - "id": "c7d29897", + "id": "c54979e5", "metadata": { "editable": true }, @@ -90,7 +90,7 @@ }, { "cell_type": "markdown", - "id": "e45dbe57", + "id": "4b1eb811", "metadata": { "editable": true }, @@ -102,7 +102,7 @@ }, { "cell_type": "markdown", - "id": "0331d3dd", + "id": "036a5440", "metadata": { "editable": true }, @@ -114,7 +114,7 @@ }, { "cell_type": "markdown", - "id": "51159839", + "id": "f7fb8094", "metadata": { "editable": true }, @@ -125,7 +125,7 @@ }, { "cell_type": "markdown", - "id": "6df6ca33", + "id": "d7d92995", "metadata": { "editable": true }, @@ -137,7 +137,7 @@ }, { "cell_type": "markdown", - "id": "6bf812e3", + "id": "29eb9701", "metadata": { "editable": true }, @@ -150,7 +150,7 @@ }, { "cell_type": "markdown", - "id": "1e04714b", + "id": "aa106511", "metadata": { "editable": true }, @@ -162,17 +162,17 @@ }, { "cell_type": "markdown", - "id": "621afaa2", + "id": "58be1091", "metadata": { "editable": true }, "source": [ - "Show finally that the variance of $\\boldsymbol{\\beta}$ is" + "Show finally that the variance of $\\boldsymbol{\\boldsymbol{\\beta}}$ is" ] }, { "cell_type": "markdown", - "id": "b7aa535d", + "id": "4cb58e41", "metadata": { "editable": true }, @@ -184,7 +184,7 @@ }, { "cell_type": "markdown", - "id": "45ea3a92", + "id": "a04df28d", "metadata": { "editable": true }, @@ -195,7 +195,7 @@ }, { "cell_type": "markdown", - "id": "3851ded2", + "id": "c095c96a", "metadata": { "editable": true }, @@ -207,7 +207,7 @@ }, { "cell_type": "markdown", - "id": "c759e617", + "id": "5d425a79", "metadata": { "editable": true }, @@ -220,7 +220,7 @@ }, { "cell_type": "markdown", - "id": "c16482df", + "id": "fb89cfab", "metadata": { "editable": true }, @@ -233,7 +233,7 @@ }, { "cell_type": "markdown", - "id": "2e2cda9b", + "id": "aea8801c", "metadata": { "editable": true }, @@ -245,7 +245,7 @@ }, { "cell_type": "markdown", - "id": "d69a45ab", + "id": "0e885693", "metadata": { "editable": true }, diff --git a/doc/src/week37/exercisesweek37.do.txt b/doc/src/week37/exercisesweek37.do.txt index dcf647389..f6c803e74 100644 --- a/doc/src/week37/exercisesweek37.do.txt +++ b/doc/src/week37/exercisesweek37.do.txt @@ -53,7 +53,7 @@ With the OLS expressions for the optimal parameters $\bm{\hat{\beta}}$ show that \mathbb{E}(\bm{\hat{\beta}}) = \bm{\beta}. \] !et -Show finally that the variance of $\bm{\beta}$ is +Show finally that the variance of $\bm{\bm{\beta}}$ is !bt \[ \mbox{Var}(\bm{\hat{\beta}}) = \sigma^2 \, (\mathbf{X}^{T} \mathbf{X})^{-1}. diff --git a/doc/src/week37/programs/codeexamplesscaling.do.txt b/doc/src/week37/programs/codeexamplesscaling.do.txt index e392d9812..41d94b7e2 100644 --- a/doc/src/week37/programs/codeexamplesscaling.do.txt +++ b/doc/src/week37/programs/codeexamplesscaling.do.txt @@ -5,7 +5,6 @@ DATE: today - ===== This note contains code examples with a simple scaling ===== The programs here use both ordinrary least squares and Ridge regression with one value only for @@ -40,12 +39,7 @@ true_beta = [2, 0.5, 3.7] # Make data set. x = np.linspace(-3, 3, n) -y_real = 2 + 0.5*x + 3.7*x**2 - -y = np.sum( - np.asarray([x ** p * b for p, b in enumerate(true_beta)]), - axis=0) + 0.1 * np.random.normal(size=len(x)) - +y = 2 + 0.5*x + 3.7*x**2 #Design matrix X includes the intercept and scaling is made X = np.zeros((len(x), d)) @@ -216,22 +210,18 @@ Now we try to implement this. np.random.seed(2018) n = 100 -d = 3 +# we do not include the intercept +d = 2 Lambda = 0.01 true_beta = [2, 0.5, 3.7] # Make data set. x = np.linspace(-3, 3, n) -y_real = 2 + 0.5*x + 3.7*x**2 - -y = np.sum( - np.asarray([x ** p * b for p, b in enumerate(true_beta)]), - axis=0) + 0.1 * np.random.normal(size=len(x)) - +y = 2 + 0.5*x + 3.7*x**2 #Design matrix X does not include the intercept. X = np.zeros((len(x), d)) -for p in range(d-1): +for p in range(d): X[:, p] = x ** (p+1) @@ -254,12 +244,13 @@ beta_OLS = OLS_fit_beta(X_train_scaled, y_train_scaled) beta_Ridge = Ridge_fit_beta(X_train_scaled, y_train_scaled,Lambda,d) print(beta_OLS) print(beta_Ridge) - +# calculate intercepts and print them interceptOLS = y_scaler - X_train_mean @ beta_OLS interceptRidge = y_scaler - X_train_mean @ beta_Ridge print(interceptOLS) print(interceptRidge) -#predict value + +#predict value with intercept ytilde_test_OLS = X_test_scaled @ beta_OLS+y_scaler ytilde_test_Ridge = X_test_scaled @ beta_Ridge+y_scaler @@ -275,7 +266,6 @@ print(MSE(y_test,ytilde_test_Ridge)) plt.scatter(x,y,label='Data') -#plt.plot(x,y_real,label='no noise') plt.plot(x, X @ beta_OLS+interceptOLS,'*', label="OLS_Fit") plt.plot(x, X @ beta_Ridge+interceptRidge, label="Ridge_Fit") plt.grid() @@ -286,79 +276,70 @@ plt.show() We see that we get the same values for the parameters! As it should be. The MSE may however change (not the case here). -Finally, instead of using our own function we repeat the same example using the _standardscaler_ functionality of the library _Scikit-Learn_. +Finally, instead of using our own function we repeat the same example +using the _standardscaler_ functionality of the library +_Scikit-Learn_. Here we limit ourselves to Ridge regression only. -#!bc pycod +!bc pycod + +from sklearn import linear_model np.random.seed(2018) n = 100 -d = 3 +d = 2 Lambda = 0.01 true_beta = [2, 0.5, 3.7] # Make data set. x = np.linspace(-3, 3, n) -y_real = 2 + 0.5*x + 3.7*x**2 - -y = np.sum( - np.asarray([x ** p * b for p, b in enumerate(true_beta)]), - axis=0) + 0.1 * np.random.normal(size=len(x)) - +y = (2 + 0.5*x + 3.7*x**2) #Design matrix X does not include the intercept. -X = np.zeros((len(x), d)) -for p in range(d-1): +X = np.zeros((n, d)) +for p in range(d): X[:, p] = x ** (p+1) - #Split data in train and test X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) -# Scale data by subtracting mean value,own implementation -#For our own implementation, we will need to deal with the intercept by centering the design matrix and the target variable -X_train_mean = np.mean(X_train,axis=0) -#Center by removing mean from each feature -X_train_scaled = X_train - X_train_mean -X_test_scaled = X_test - X_train_mean -#The model intercept (called y_scaler) is given by the mean of the target variable (IF X is centered, note) -y_scaler = np.mean(y_train) -y_train_scaled = y_train - y_scaler +# Scale data by subtracting mean value using scikit-learn +from sklearn.preprocessing import StandardScaler +scaler = StandardScaler() +#scaler.fit(X_train) +#scaler.fit(y_train) +#X_train_scaled = scaler.transform(X_train) +#X_test_scaled = scaler.transform(X_test) +#y_train_scaled = scaler.transform(y_train) #Calculate beta -beta_OLS = OLS_fit_beta(X_train_scaled, y_train_scaled) -beta_Ridge = Ridge_fit_beta(X_train_scaled, y_train_scaled,Lambda,d) -print(beta_OLS) -print(beta_Ridge) - -interceptOLS = y_scaler - X_train_mean @ beta_OLS -interceptRidge = y_scaler - X_train_mean @ beta_Ridge -print(interceptOLS) -print(interceptRidge) -#predict value -ytilde_test_OLS = X_test_scaled @ beta_OLS+y_scaler -ytilde_test_Ridge = X_test_scaled @ beta_Ridge+y_scaler - +OLS = LinearRegression() +OLS.fit(X_train,y_train) +ypredictOLS = OLS.predict(X_test) +RegRidge = linear_model.Ridge(Lambda) +RegRidge.fit(X_train,y_train) +ypredictRidge = RegRidge.predict(X_test) +print(OLS.coef_) +print(RegRidge.coef_) +print(OLS.intercept_) +interceptRidge = RegRidge.intercept_ +print(RegRidge.intercept_) +#predict value without intercept +ytilde_test_Ridge = X_test @ RegRidge.coef_+ RegRidge.intercept_ +ytilde_test_OLS = X_test @ OLS.coef_+ OLS.intercept_ #Calculate MSE - print(" ") -print("test MSE of OLS:") +print("test MSE of OLS") print(MSE(y_test,ytilde_test_OLS)) print(" ") print("test MSE of Ridge") print(MSE(y_test,ytilde_test_Ridge)) - - plt.scatter(x,y,label='Data') -#plt.plot(x,y_real,label='no noise') -plt.plot(x, X @ beta_OLS+interceptOLS,'*', label="OLS_Fit") -plt.plot(x, X @ beta_Ridge+interceptRidge, label="Ridge_Fit") +plt.plot(x, X @ RegRidge.coef_ + RegRidge.intercept_ , label="Ridge_Fit") plt.grid() plt.legend() plt.show() - - -#!ec +!ec diff --git a/doc/src/week37/programs/codeexamplesscaling.ipynb b/doc/src/week37/programs/codeexamplesscaling.ipynb index 436fd939b..d4493a0b7 100644 --- a/doc/src/week37/programs/codeexamplesscaling.ipynb +++ b/doc/src/week37/programs/codeexamplesscaling.ipynb @@ -2,10 +2,8 @@ "cells": [ { "cell_type": "markdown", - "id": "718b0cee", - "metadata": { - "editable": true - }, + "id": "a6f6db7d", + "metadata": {}, "source": [ "\n", @@ -14,10 +12,8 @@ }, { "cell_type": "markdown", - "id": "cdce7555", - "metadata": { - "editable": true - }, + "id": "dfa45ba4", + "metadata": {}, "source": [ "# Scaling examples with own code and the library Scikit-Learn\n", "**Morten Hjorth-Jensen**, Department of Physics, University of Oslo and Department of Physics and Astronomy and Facility for Rare Isotope Beams, Michigan State University\n", @@ -29,10 +25,8 @@ }, { "cell_type": "markdown", - "id": "67634fc9", - "metadata": { - "editable": true - }, + "id": "9876e236", + "metadata": {}, "source": [ "## This note contains code examples with a simple scaling\n", "\n", @@ -43,13 +37,35 @@ }, { "cell_type": "code", - "execution_count": 1, - "id": "e75a3307", - "metadata": { - "collapsed": false, - "editable": true - }, - "outputs": [], + "execution_count": 36, + "id": "1e487d08", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2. 0.5 3.7]\n", + "[1.99961963 0.49997712 3.70004316]\n", + " \n", + "test MSE of OLS:\n", + "3.027253723785633e-29\n", + " \n", + "test MSE of Ridge\n", + "7.981935346275908e-08\n" + ] + }, + { + "data": { + "image/png": "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c9zn1f6JbrFybovwW0FbfLi+kWcnHSqxY9d79epFcnIye/fuZe7cuXTr1o0nn3ySm266CYfDUexfP1i5FqE+0a0eAKmEMzjrOY6Z5Wis7ueLkHewkeVuP3dzcom9JoQoiIXbjtL5zUXc/flqvl21j+oc59uQsUQp6awzGjDc/oTXmS0AnepVllstwm8FZfGRuPmI+xv5yWlJJXbsus1mIzo6murVq9O6dWteeuklZs+ezdy5c/n6668BeO+992jevDlly5alZs2aPP7445w9exaAJUuW8MADD5CSkuKeRUlISABg0qRJtG3bloiICKKjoxk4cKA7T0M4b8F0qndh9f8hKjM46zlSzVCuUbczzvoxGs4k129X7Sux14QQBfH09CT34tLypPJtyFiildPsMGrwUNaz7vA8F1lgKvxd0BUfv+04ybApG93fyC6+WnDYvXt3rr76av73v/8BoKoqH330EZs3b+abb75h0aJFPPfccwB07NiRDz74gMjISJKTk0lOTubZZ58FICsri9dee40///yTWbNmsWfPHgYPHlyifxd/l3MB6lazDg9nPUuGaSVeW89Yy+fAhdkOWYQqfE03TE5lgp79sgwlg4khbxOrJnPIrMigrOdJITzX58kCU+Hvgqr40A2Ttxb+Q16T6a7HRv20tcSn2xs1asTevXsBeOqpp+jWrRt169ale/fuvPbaa3z//fcAhISEEBUVhaIoREdHEx0dTXi48wfPgw8+SO/evbnqqqvo0KEDH330EXPnznXPmojcC1AB1piNecL+fzhMldsty3jJMgXXq0EWoQpfW7/vNKM2WLAbCiHYmWD9gJbqbk6b4dyf9QJH8A4NkwWmorQIquJj7d5THE3Lyvd5E0hOySjxBYemabqzLxYvXkx8fDzVq1cnIiKC+++/n5MnT3Lu3LmLXmPjxo3079+f2rVrExERQdeuXQHYv3//RT8v2ORcgAqw0GjDC45HAHjU8guPa3O8PkcWoQpf0A2TP/45yX31dCzY+dj6sVeI2G6zurvt/XG1mfpIB1lgKkqNoCo+jmVvT7t0u4xLNypC27Zto27duuzbt48+ffrQrFkzZsyYwfr16/nkk0+Ai6eBnjt3jp49exIeHs6kSZNYu3YtM2fOBJy3Y4S3vFJQf9S7MNo+EIDnrNN5SPvV63MkBVWUJFd66fhl/7DmqMn7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qxcTJ07E4XCwdetWHnzwQc6cOeM+sC06OtrHPczbI488wn/+8x+vxywWC5UrV/ZRj4JPfrdiAJKpyOuO+/jIMYC7tUU8YEkkWjnNM9Yfecoyg0VGa6bq3VhitMRAzXNdSHSkjbvb1/LrYuRiC0c9lSGT3uoa7rUspI164e+406jOZ/pNzNY7Yc/nR58sJhWiZEjxUYJsNpu7wKhRowZ33nknX3/9tfv5nDMHa9as4bHHHmPbtm00a9aMl19+Odc158yZwzPPPMPBgwfp0KGD+3C406dPU65cOQBWrlzJCy+8wNq1a6lUqRK33HILb7zxhtesxcWEhYXlWRh53napU6cOALfccgvgPEBv7969BRsYUSCet2LyWs+QSlk+0/vyld6bG9XV3G1ZxDXqduK19cRr60k2K/Cz3oGf9Q78acbitUsmNTPXItWRNzamfFmb+5ZGSRckOYuNqWv2cyQ171kOCw46q5vpp63kBnUtZRVngWY3NeYZbZmsX88qowk518PkJItJhSgZpb/4ME2wpxesrWE422ZpUBQntVrDQLm8H8b//PMPiYmJWK15L3A7d+4cN910E927d2fSpEns2bOHJ5980qvN3r17ue2223jyySd5+OGH2bhxI88++6xXm02bNnHDDTfw2muv8eWXX3L8+HGeeOIJnnjiiUuerlsYa9eupUqVKkycOJFevXqhaSVzSnCwcd2KiYutSPu6FfKcCbFjYZbRmVlZnYlVDnGXtphbtWXEKKd4xPIrj1h+5YBRmV+MDiTq7fjLvCrX7o7klAwen7LR67G8CpI2tcuzft9prwIF8FqH4dmmUpjzR45umKzbfTLf6+S3dsNTGTLpqG6hh7qRG7S1VFJS3c/tNyozXe/G93oXdzLsxchtFiFKVukvPuzpMKZagZqqQLmi/NovHYaQgs0eAPz888+Eh4ej6zoZGc4fqu+9916ebSdPnoyu63z11VeEhYXRtGlTDh48yNChQ91tJkyYQMOGDXn77bcBaNiwIZs3b2b06NHuNm+//TYDBw50LwqtX78+H330EV26dGH8+PGUKZP3PW9Pn376KV988YX748cee4x3333Xq43rFky5cuX89vZRoPGcCXHNDry/8G+vNrvN6ox23Ms7jjvoov7JTdpqeqgbqKkeZ4j6E0MsP3HKDGe50YKleguWGy04ns93SV4FiaqA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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "%matplotlib inline\n", "\n", @@ -80,12 +96,7 @@ "\n", "# Make data set.\n", "x = np.linspace(-3, 3, n)\n", - "y_real = 2 + 0.5*x + 3.7*x**2\n", - "\n", - "y = np.sum(\n", - " np.asarray([x ** p * b for p, b in enumerate(true_beta)]), \n", - " axis=0) + 0.1 * np.random.normal(size=len(x))\n", - "\n", + "y = 2 + 0.5*x + 3.7*x**2\n", "\n", "#Design matrix X includes the intercept and scaling is made\n", "X = np.zeros((len(x), d))\n", @@ -124,10 +135,8 @@ }, { "cell_type": "markdown", - "id": "25d58cba", - "metadata": { - "editable": true - }, + "id": "56e83b1f", + "metadata": {}, "source": [ "In this example we do not include the intercept and we scale the data by subtracting the mean values. This follows the discussion in the [lecture material](https://compphysics.github.io/MachineLearning/doc/LectureNotes/_build/html/chapter3.html#more-on-rescaling-data).\n", "see also the weekly slides [for week 36](https://compphysics.github.io/MachineLearning/doc/pub/week36/html/._week36-bs029.html).\n", @@ -143,10 +152,8 @@ }, { "cell_type": "markdown", - "id": "5b820b6d", - "metadata": { - "editable": true - }, + "id": "e6a9876b", + "metadata": {}, "source": [ "$$\n", "C(\\beta_0, \\beta_1, ... , \\beta_{p-1}) = \\frac{1}{n}\\sum_{i=0}^{n} \\left(y_i - \\beta_0 - \\sum_{j=1}^{p-1} X_{ij}\\beta_j\\right)^2,.\n", @@ -155,10 +162,8 @@ }, { "cell_type": "markdown", - "id": "9d3946fb", - "metadata": { - "editable": true - }, + "id": "e1728f0f", + "metadata": {}, "source": [ "Recall also that we use the squared value. This expression can lead to an\n", "increased penalty for higher differences between predicted and\n", @@ -172,10 +177,8 @@ }, { "cell_type": "markdown", - "id": "11228e0d", - "metadata": { - "editable": true - }, + "id": "cbea8cf5", + "metadata": {}, "source": [ "$$\n", "\\frac{\\partial C}{\\partial \\beta_j} = 0,\n", @@ -184,20 +187,16 @@ }, { "cell_type": "markdown", - "id": "6dd5cd47", - "metadata": { - "editable": true - }, + "id": "ad449e9a", + "metadata": {}, "source": [ "for all $j$. For $\\beta_0$ we have" ] }, { "cell_type": "markdown", - "id": "4bf8184e", - "metadata": { - "editable": true - }, + "id": "d5f8dbf6", + "metadata": {}, "source": [ "$$\n", "\\frac{\\partial C}{\\partial \\beta_0} = -\\frac{2}{n}\\sum_{i=0}^{n-1} \\left(y_i - \\beta_0 - \\sum_{j=1}^{p-1} X_{ij} \\beta_j\\right).\n", @@ -206,20 +205,16 @@ }, { "cell_type": "markdown", - "id": "c8c7dc9d", - "metadata": { - "editable": true - }, + "id": "94d5b2e1", + "metadata": {}, "source": [ "Multiplying away the constant $2/n$, we obtain" ] }, { "cell_type": "markdown", - "id": "3c6a746e", - "metadata": { - "editable": true - }, + "id": "eb90528c", + "metadata": {}, "source": [ "$$\n", "\\sum_{i=0}^{n-1} \\beta_0 = \\sum_{i=0}^{n-1}y_i - \\sum_{i=0}^{n-1} \\sum_{j=1}^{p-1} X_{ij} \\beta_j.\n", @@ -228,10 +223,8 @@ }, { "cell_type": "markdown", - "id": "00b74b33", - "metadata": { - "editable": true - }, + "id": "db00a4f5", + "metadata": {}, "source": [ "Let us specialize first to the case where we have only two parameters $\\beta_0$ and $\\beta_1$.\n", "Our result for $\\beta_0$ simplifies then to" @@ -239,10 +232,8 @@ }, { "cell_type": "markdown", - "id": "20d80ba8", - "metadata": { - "editable": true - }, + "id": "7ede14b2", + "metadata": {}, "source": [ "$$\n", "n\\beta_0 = \\sum_{i=0}^{n-1}y_i - \\sum_{i=0}^{n-1} X_{i1} \\beta_1.\n", @@ -251,20 +242,16 @@ }, { "cell_type": "markdown", - "id": "6cf3aa5d", - "metadata": { - "editable": true - }, + "id": "43b05908", + "metadata": {}, "source": [ "We obtain then" ] }, { "cell_type": "markdown", - "id": "3492889a", - "metadata": { - "editable": true - }, + "id": "362edfca", + "metadata": {}, "source": [ "$$\n", "\\beta_0 = \\frac{1}{n}\\sum_{i=0}^{n-1}y_i - \\beta_1\\frac{1}{n}\\sum_{i=0}^{n-1} X_{i1}.\n", @@ -273,20 +260,16 @@ }, { "cell_type": "markdown", - "id": "6f6526ea", - "metadata": { - "editable": true - }, + "id": "fa3a9920", + "metadata": {}, "source": [ "If we define" ] }, { "cell_type": "markdown", - "id": "a34541ec", - "metadata": { - "editable": true - }, + "id": "33282b66", + "metadata": {}, "source": [ "$$\n", "\\mu_{\\boldsymbol{x}_1}=\\frac{1}{n}\\sum_{i=0}^{n-1} X_{i1},\n", @@ -295,20 +278,16 @@ }, { "cell_type": "markdown", - "id": "8d08709c", - "metadata": { - "editable": true - }, + "id": "bf24fa63", + "metadata": {}, "source": [ "and the mean value of the outputs as" ] }, { "cell_type": "markdown", - "id": "0efce920", - "metadata": { - "editable": true - }, + "id": "a2d0ca02", + "metadata": {}, "source": [ "$$\n", "\\mu_y=\\frac{1}{n}\\sum_{i=0}^{n-1}y_i,\n", @@ -317,20 +296,16 @@ }, { "cell_type": "markdown", - "id": "5a0488c6", - "metadata": { - "editable": true - }, + "id": "b0a2a2dc", + "metadata": {}, "source": [ "we have" ] }, { "cell_type": "markdown", - "id": "9727879c", - "metadata": { - "editable": true - }, + "id": "0443c8a7", + "metadata": {}, "source": [ "$$\n", "\\beta_0 = \\mu_y - \\beta_1\\mu_{\\boldsymbol{x}_1}.\n", @@ -339,20 +314,16 @@ }, { "cell_type": "markdown", - "id": "d0297a4d", - "metadata": { - "editable": true - }, + "id": "6a6175b7", + "metadata": {}, "source": [ "In the general case with more parameters than $\\beta_0$ and $\\beta_1$, we have" ] }, { "cell_type": "markdown", - "id": "5b4f7606", - "metadata": { - "editable": true - }, + "id": "42f05288", + "metadata": {}, "source": [ "$$\n", "\\beta_0 = \\frac{1}{n}\\sum_{i=0}^{n-1}y_i - \\frac{1}{n}\\sum_{i=0}^{n-1}\\sum_{j=1}^{p-1} X_{ij}\\beta_j.\n", @@ -361,20 +332,16 @@ }, { "cell_type": "markdown", - "id": "cd6fa027", - "metadata": { - "editable": true - }, + "id": "6f0c24d5", + "metadata": {}, "source": [ "We can rewrite the latter equation as" ] }, { "cell_type": "markdown", - "id": "73827116", - "metadata": { - "editable": true - }, + "id": "8d4fff22", + "metadata": {}, "source": [ "$$\n", "\\beta_0 = \\frac{1}{n}\\sum_{i=0}^{n-1}y_i - \\sum_{j=1}^{p-1} \\mu_{\\boldsymbol{x}_j}\\beta_j,\n", @@ -383,20 +350,16 @@ }, { "cell_type": "markdown", - "id": "83069a4e", - "metadata": { - "editable": true - }, + "id": "e3bf92c9", + "metadata": {}, "source": [ "where we have defined" ] }, { "cell_type": "markdown", - "id": "1fd7a5df", - "metadata": { - "editable": true - }, + "id": "d38a23f6", + "metadata": {}, "source": [ "$$\n", "\\mu_{\\boldsymbol{x}_j}=\\frac{1}{n}\\sum_{i=0}^{n-1} X_{ij},\n", @@ -405,10 +368,8 @@ }, { "cell_type": "markdown", - "id": "e6e597a6", - "metadata": { - "editable": true - }, + "id": "ddcf4fb1", + "metadata": {}, "source": [ "the mean value for all elements of the column vector $\\boldsymbol{x}_j$.\n", "\n", @@ -417,10 +378,8 @@ }, { "cell_type": "markdown", - "id": "6ef1dd83", - "metadata": { - "editable": true - }, + "id": "aa88d023", + "metadata": {}, "source": [ "$$\n", "C(\\boldsymbol{\\beta}) = (\\boldsymbol{\\tilde{y}} - \\tilde{X}\\boldsymbol{\\beta})^T(\\boldsymbol{\\tilde{y}} - \\tilde{X}\\boldsymbol{\\beta}).\n", @@ -429,20 +388,16 @@ }, { "cell_type": "markdown", - "id": "190376f5", - "metadata": { - "editable": true - }, + "id": "77a83d5f", + "metadata": {}, "source": [ "If we minimize with respect to $\\boldsymbol{\\beta}$ we have then" ] }, { "cell_type": "markdown", - "id": "7bfde500", - "metadata": { - "editable": true - }, + "id": "8b1d496d", + "metadata": {}, "source": [ "$$\n", "\\hat{\\boldsymbol{\\beta}} = (\\tilde{X}^T\\tilde{X})^{-1}\\tilde{X}^T\\boldsymbol{\\tilde{y}},\n", @@ -451,10 +406,8 @@ }, { "cell_type": "markdown", - "id": "9fdcab64", - "metadata": { - "editable": true - }, + "id": "bef1d9d7", + "metadata": {}, "source": [ "where $\\boldsymbol{\\tilde{y}} = \\boldsymbol{y} - \\overline{\\boldsymbol{y}}$\n", "and $\\tilde{X}_{ij} = X_{ij} - \\frac{1}{n}\\sum_{k=0}^{n-1}X_{kj}$.\n", @@ -464,10 +417,8 @@ }, { "cell_type": "markdown", - "id": "1ce3f20e", - "metadata": { - "editable": true - }, + "id": "5d964a3b", + "metadata": {}, "source": [ "$$\n", "\\hat{\\boldsymbol{\\beta}} = (\\tilde{X}^T\\tilde{X} + \\lambda I)^{-1}\\tilde{X}^T\\boldsymbol{\\tilde{y}}.\n", @@ -476,43 +427,61 @@ }, { "cell_type": "markdown", - "id": "0431630c", - "metadata": { - "editable": true - }, + "id": "d58c799b", + "metadata": {}, "source": [ "Now we try to implement this." ] }, { "cell_type": "code", - "execution_count": 2, - "id": "9da6e338", - "metadata": { - "collapsed": false, - "editable": true - }, - "outputs": [], + "execution_count": 37, + "id": "c48d6503", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.5 3.7]\n", + "[0.49997445 3.69992817]\n", + "2.0000000000000107\n", + "2.000213450912952\n", + " \n", + "test MSE of OLS:\n", + "6.246792293218887e-29\n", + " \n", + "test MSE of Ridge\n", + "6.420926689411203e-08\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "\n", "np.random.seed(2018)\n", "n = 100\n", - "d = 3\n", + "# we do not include the intercept\n", + "d = 2\n", "Lambda = 0.01\n", "true_beta = [2, 0.5, 3.7]\n", "\n", "# Make data set.\n", "x = np.linspace(-3, 3, n)\n", - "y_real = 2 + 0.5*x + 3.7*x**2\n", - "\n", - "y = np.sum(\n", - " np.asarray([x ** p * b for p, b in enumerate(true_beta)]), \n", - " axis=0) + 0.1 * np.random.normal(size=len(x))\n", - "\n", + "y = 2 + 0.5*x + 3.7*x**2\n", "\n", "#Design matrix X does not include the intercept. \n", "X = np.zeros((len(x), d))\n", - "for p in range(d-1): \n", + "for p in range(d): \n", " X[:, p] = x ** (p+1)\n", "\n", "\n", @@ -535,12 +504,13 @@ "beta_Ridge = Ridge_fit_beta(X_train_scaled, y_train_scaled,Lambda,d)\n", "print(beta_OLS)\n", "print(beta_Ridge)\n", - "\n", + "# calculate intercepts and print them\n", "interceptOLS = y_scaler - X_train_mean @ beta_OLS\n", "interceptRidge = y_scaler - X_train_mean @ beta_Ridge\n", "print(interceptOLS)\n", "print(interceptRidge)\n", - "#predict value\n", + "\n", + "#predict value with intercept\n", "ytilde_test_OLS = X_test_scaled @ beta_OLS+y_scaler\n", "ytilde_test_Ridge = X_test_scaled @ beta_Ridge+y_scaler\n", "\n", @@ -556,7 +526,6 @@ "\n", "\n", "plt.scatter(x,y,label='Data')\n", - "#plt.plot(x,y_real,label='no noise')\n", "plt.plot(x, X @ beta_OLS+interceptOLS,'*', label=\"OLS_Fit\")\n", "plt.plot(x, X @ beta_Ridge+interceptRidge, label=\"Ridge_Fit\")\n", "plt.grid()\n", @@ -566,84 +535,140 @@ }, { "cell_type": "markdown", - "id": "c2271c6b", - "metadata": { - "editable": true - }, + "id": "0686ad2c", + "metadata": {}, "source": [ "We see that we get the same values for the parameters! As it should be. The MSE may however change (not the case here).\n", "\n", - "Finally, instead of using our own function we repeat the same example using the **standardscaler** functionality of the library **Scikit-Learn**.\n", - "\n", - "\n", + "Finally, instead of using our own function we repeat the same example\n", + "using the **standardscaler** functionality of the library\n", + "**Scikit-Learn**. Here we limit ourselves to Ridge regression only." + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "a721dffd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0. 0.5 3.7]\n", + "[0. 0.49997445 3.69992817]\n", + "2.000000000000007\n", + "2.00021345091295\n", + " \n", + "test MSE of OLS\n", + "3.729339929432333e-29\n", + " \n", + "test MSE of Ridge\n", + "6.420926689334773e-08\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn import linear_model\n", "np.random.seed(2018)\n", "n = 100\n", "d = 3\n", "Lambda = 0.01\n", "true_beta = [2, 0.5, 3.7]\n", "\n", - "\n", + "# Make data set.\n", "x = np.linspace(-3, 3, n)\n", - "y_real = 2 + 0.5*x + 3.7*x**2\n", + "y = (2 + 0.5*x + 3.7*x**2)\n", "\n", - "y = np.sum(\n", - " np.asarray([x ** p * b for p, b in enumerate(true_beta)]), \n", - " axis=0) + 0.1 * np.random.normal(size=len(x))\n", "\n", - "\n", - "X = np.zeros((len(x), d))\n", - "for p in range(d-1): \n", - " X[:, p] = x ** (p+1)\n", "\n", - "\n", + "#Design matrix X does include the intercept. \n", + "X = np.zeros((n, d))\n", + "for p in range(d): \n", + " X[:, p] = x ** (p)\n", + "\n", + "\n", + "#Split data in train and test\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n", "\n", - "\n", - "\n", - "X_train_mean = np.mean(X_train,axis=0)\n", - "\n", - "X_train_scaled = X_train - X_train_mean\n", - "X_test_scaled = X_test - X_train_mean\n", - "\n", - "y_scaler = np.mean(y_train)\n", - "y_train_scaled = y_train - y_scaler\n", "\n", - "\n", - "beta_OLS = OLS_fit_beta(X_train_scaled, y_train_scaled)\n", - "beta_Ridge = Ridge_fit_beta(X_train_scaled, y_train_scaled,Lambda,d)\n", - "print(beta_OLS)\n", - "print(beta_Ridge)\n", + "# Scale data by subtracting mean value using scikit-learn\n", + "from sklearn.preprocessing import StandardScaler\n", + "scaler = StandardScaler()\n", + "#scaler.fit(X_train)\n", + "#scaler.fit(y_train)\n", + "#X_train_scaled = scaler.transform(X_train)\n", + "#X_test_scaled = scaler.transform(X_test)\n", + "#y_train_scaled = scaler.transform(y_train)\n", "\n", - "interceptOLS = y_scaler - X_train_mean @ beta_OLS\n", - "interceptRidge = y_scaler - X_train_mean @ beta_Ridge\n", - "print(interceptOLS)\n", - "print(interceptRidge)\n", - "\n", - "ytilde_test_OLS = X_test_scaled @ beta_OLS+y_scaler\n", - "ytilde_test_Ridge = X_test_scaled @ beta_Ridge+y_scaler\n", - "\n", - "\n", + "#Calculate beta\n", + "OLS = LinearRegression(fit_intercept=True)\n", + "OLS.fit(X_train,y_train)\n", + "ypredictOLS = OLS.predict(X_test)\n", + "RegRidge = linear_model.Ridge(Lambda,fit_intercept=True)\n", + "RegRidge.fit(X_train,y_train)\n", + "ypredictRidge = RegRidge.predict(X_test)\n", + "print(OLS.coef_)\n", + "print(RegRidge.coef_)\n", + "print(OLS.intercept_)\n", + "interceptRidge = RegRidge.intercept_\n", + "print(RegRidge.intercept_)\n", + "#predict value without intercept\n", + "ytilde_test_Ridge = X_test @ RegRidge.coef_+ RegRidge.intercept_\n", + "ytilde_test_OLS = X_test @ OLS.coef_+ OLS.intercept_\n", "\n", + "#Calculate MSE\n", "print(\" \")\n", - "print(\"test MSE of OLS:\")\n", + "print(\"test MSE of OLS\")\n", "print(MSE(y_test,ytilde_test_OLS))\n", "print(\" \")\n", "print(\"test MSE of Ridge\")\n", "print(MSE(y_test,ytilde_test_Ridge))\n", - "\n", "plt.scatter(x,y,label='Data')\n", - "\n", - "plt.plot(x, X @ beta_OLS+interceptOLS,'*', label=\"OLS_Fit\")\n", - "plt.plot(x, X @ beta_Ridge+interceptRidge, label=\"Ridge_Fit\")\n", + "plt.plot(x, X @ RegRidge.coef_ + RegRidge.intercept_ , label=\"Ridge_Fit\")\n", "plt.grid()\n", "plt.legend()\n", - "plt.show()\n", - "\n", - "" + "plt.show()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8b3b48ac", + "metadata": {}, + "outputs": [], + "source": [] } ], - "metadata": {}, + "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.10" + } + }, "nbformat": 4, "nbformat_minor": 5 }