From e58831a92f7abc28985eea68c75c8acddd56a239 Mon Sep 17 00:00:00 2001 From: mhjensen Date: Wed, 19 Aug 2020 11:52:34 +0200 Subject: [PATCH] update --- .../How2ReadData/html/How2ReadData-bs.html | 96 +-- .../html/How2ReadData-reveal.html | 92 +-- .../html/How2ReadData-solarized.html | 92 +-- doc/pub/How2ReadData/html/How2ReadData.html | 96 +-- .../ipynb/ipynb-How2ReadData-src.tar.gz | Bin 103631 -> 195 bytes .../How2ReadData/pdf/How2ReadData-minted.pdf | Bin 475371 -> 548587 bytes .../Introduction/html/Introduction-bs.html | 4 +- .../html/Introduction-reveal.html | 4 +- .../html/Introduction-solarized.html | 4 +- doc/pub/Introduction/html/Introduction.html | 4 +- .../ipynb/ipynb-Introduction-src.tar.gz | Bin 193 -> 193 bytes .../Introduction/pdf/Introduction-minted.pdf | Bin 214706 -> 214706 bytes .../Regression/html/._Regression-bs000.html | 436 ++++++------ .../Regression/html/._Regression-bs001.html | 460 ++++++------ .../Regression/html/._Regression-bs002.html | 461 ++++++------ .../Regression/html/._Regression-bs003.html | 460 ++++++------ .../Regression/html/._Regression-bs004.html | 464 ++++++------ .../Regression/html/._Regression-bs005.html | 450 ++++++------ .../Regression/html/._Regression-bs006.html | 451 ++++++------ .../Regression/html/._Regression-bs007.html | 473 ++++++------- .../Regression/html/._Regression-bs008.html | 483 +++++++------ .../Regression/html/._Regression-bs009.html | 466 ++++++------ .../Regression/html/._Regression-bs010.html | 463 ++++++------ .../Regression/html/._Regression-bs011.html | 539 +++++++------- .../Regression/html/._Regression-bs012.html | 544 +++++++------- .../Regression/html/._Regression-bs013.html | 496 +++++++------ .../Regression/html/._Regression-bs014.html | 495 ++++++------- .../Regression/html/._Regression-bs015.html | 486 +++++++------ .../Regression/html/._Regression-bs016.html | 474 ++++++------- .../Regression/html/._Regression-bs017.html | 488 +++++++------ .../Regression/html/._Regression-bs018.html | 485 +++++++------ .../Regression/html/._Regression-bs019.html | 492 ++++++------- .../Regression/html/._Regression-bs020.html | 460 ++++++------ .../Regression/html/._Regression-bs021.html | 446 ++++++------ .../Regression/html/._Regression-bs022.html | 449 ++++++------ .../Regression/html/._Regression-bs023.html | 451 ++++++------ .../Regression/html/._Regression-bs024.html | 478 ++++++------- .../Regression/html/._Regression-bs025.html | 496 +++++++------ .../Regression/html/._Regression-bs026.html | 544 ++++++-------- .../Regression/html/._Regression-bs027.html | 536 +++++++------- .../Regression/html/._Regression-bs028.html | 534 +++++++------- .../Regression/html/._Regression-bs029.html | 606 +++++++--------- .../Regression/html/._Regression-bs030.html | 595 ++++++++++------ .../Regression/html/._Regression-bs031.html | 497 +++++++------ .../Regression/html/._Regression-bs032.html | 485 +++++++------ .../Regression/html/._Regression-bs033.html | 471 ++++++------ .../Regression/html/._Regression-bs034.html | 476 +++++++------ .../Regression/html/._Regression-bs035.html | 477 ++++++------- .../Regression/html/._Regression-bs036.html | 475 +++++++------ .../Regression/html/._Regression-bs037.html | 489 ++++++------- .../Regression/html/._Regression-bs038.html | 494 +++++++------ .../Regression/html/._Regression-bs039.html | 501 ++++++------- .../Regression/html/._Regression-bs040.html | 489 +++++++------ .../Regression/html/._Regression-bs041.html | 467 ++++++------ .../Regression/html/._Regression-bs042.html | 502 +++++++------ .../Regression/html/._Regression-bs043.html | 488 +++++++------ .../Regression/html/._Regression-bs044.html | 457 ++++++------ .../Regression/html/._Regression-bs045.html | 448 ++++++------ .../Regression/html/._Regression-bs046.html | 445 ++++++------ .../Regression/html/._Regression-bs047.html | 463 ++++++------ .../Regression/html/._Regression-bs048.html | 468 ++++++------ .../Regression/html/._Regression-bs049.html | 457 ++++++------ .../Regression/html/._Regression-bs050.html | 446 ++++++------ .../Regression/html/._Regression-bs051.html | 463 ++++++------ .../Regression/html/._Regression-bs052.html | 458 ++++++------ .../Regression/html/._Regression-bs053.html | 465 ++++++------ .../Regression/html/._Regression-bs054.html | 473 +++++++------ .../Regression/html/._Regression-bs055.html | 469 ++++++------ .../Regression/html/._Regression-bs056.html | 500 +++++++------ .../Regression/html/._Regression-bs057.html | 502 ++++++------- .../Regression/html/._Regression-bs058.html | 482 +++++++------ .../Regression/html/._Regression-bs059.html | 462 ++++++------ .../Regression/html/._Regression-bs060.html | 468 ++++++------ .../Regression/html/._Regression-bs061.html | 464 ++++++------ .../Regression/html/._Regression-bs062.html | 461 ++++++------ .../Regression/html/._Regression-bs063.html | 463 ++++++------ .../Regression/html/._Regression-bs064.html | 462 ++++++------ .../Regression/html/._Regression-bs065.html | 451 ++++++------ .../Regression/html/._Regression-bs066.html | 456 ++++++------ .../Regression/html/._Regression-bs067.html | 460 ++++++------ .../Regression/html/._Regression-bs068.html | 464 ++++++------ .../Regression/html/._Regression-bs069.html | 466 ++++++------ .../Regression/html/._Regression-bs070.html | 472 ++++++------ .../Regression/html/._Regression-bs071.html | 462 ++++++------ .../Regression/html/._Regression-bs072.html | 459 ++++++------ .../Regression/html/._Regression-bs073.html | 463 ++++++------ .../Regression/html/._Regression-bs074.html | 470 ++++++------ .../Regression/html/._Regression-bs075.html | 466 ++++++------ .../Regression/html/._Regression-bs076.html | 482 ++++++------- .../Regression/html/._Regression-bs077.html | 472 ++++++------ .../Regression/html/._Regression-bs078.html | 465 ++++++------ .../Regression/html/._Regression-bs079.html | 528 +++++++------- .../Regression/html/._Regression-bs080.html | 522 ++++++++------ .../Regression/html/._Regression-bs081.html | 464 ++++++------ .../Regression/html/._Regression-bs082.html | 458 ++++++------ .../Regression/html/._Regression-bs083.html | 475 ++++++------- .../Regression/html/._Regression-bs084.html | 478 +++++++------ .../Regression/html/._Regression-bs085.html | 460 ++++++------ .../Regression/html/._Regression-bs086.html | 458 ++++++------ .../Regression/html/._Regression-bs087.html | 461 ++++++------ .../Regression/html/._Regression-bs088.html | 464 ++++++------ .../Regression/html/._Regression-bs089.html | 505 ++++++------- .../Regression/html/._Regression-bs090.html | 507 +++++++------ .../Regression/html/._Regression-bs091.html | 475 ++++++------- .../Regression/html/._Regression-bs092.html | 480 +++++++------ .../Regression/html/._Regression-bs093.html | 538 ++++++-------- .../Regression/html/._Regression-bs094.html | 564 ++++++++------- .../Regression/html/._Regression-bs095.html | 532 +++++++------- .../Regression/html/._Regression-bs096.html | 496 ++++++------- .../Regression/html/._Regression-bs097.html | 509 ++++++------- .../Regression/html/._Regression-bs098.html | 534 +++++++------- .../Regression/html/._Regression-bs099.html | 560 ++++++++------- .../Regression/html/._Regression-bs100.html | 475 +++++++------ .../Regression/html/._Regression-bs101.html | 523 +++++++------- .../Regression/html/._Regression-bs102.html | 509 +++++++------ .../Regression/html/._Regression-bs103.html | 498 ++++++------- .../Regression/html/._Regression-bs104.html | 487 ++++++------- .../Regression/html/._Regression-bs105.html | 524 +++++++------- .../Regression/html/._Regression-bs106.html | 584 +++++++-------- .../Regression/html/._Regression-bs107.html | 560 +++++++++------ .../Regression/html/._Regression-bs108.html | 460 ++++++------ .../Regression/html/._Regression-bs109.html | 495 +++++++------ .../Regression/html/._Regression-bs110.html | 505 ++++++------- .../Regression/html/._Regression-bs111.html | 608 ++++++++-------- doc/pub/Regression/html/Regression-bs.html | 436 ++++++------ .../Regression/html/Regression-reveal.html | 438 ++++++------ .../Regression/html/Regression-solarized.html | 660 ++++++++--------- doc/pub/Regression/html/Regression.html | 670 +++++++++--------- .../ipynb/ipynb-Regression-src.tar.gz | Bin 193 -> 193 bytes doc/pub/Regression/pdf/Regression-minted.pdf | Bin 456319 -> 382423 bytes doc/src/How2ReadData/How2ReadData.do.txt | 5 - doc/src/How2ReadData/make.sh | 2 +- doc/src/How2ReadData/todo.list | 7 + doc/src/Introduction/make.sh | 2 +- doc/src/Regression/make.sh | 2 +- doc/src/Regression/todo.list | 12 + 136 files changed, 28678 insertions(+), 28400 deletions(-) create mode 100644 doc/src/How2ReadData/todo.list create mode 100644 doc/src/Regression/todo.list diff --git a/doc/pub/How2ReadData/html/How2ReadData-bs.html b/doc/pub/How2ReadData/html/How2ReadData-bs.html index e8e63b856..283f16cc2 100644 --- a/doc/pub/How2ReadData/html/How2ReadData-bs.html +++ b/doc/pub/How2ReadData/html/How2ReadData-bs.html @@ -166,7 +166,7 @@ MathJax.Hub.Config({
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

-

Dec 25, 2019

+

Aug 19, 2020


@@ -569,7 +569,7 @@ Here follows a simple example where we set up an array of ten elements, all dete

n = 10
 x = np.random.normal(size=n)
-print(x)
+print(x)
 

We defined a vector \( x \) with \( n=10 \) elements with its values given by the Normal distribution \( N(0,1) \). @@ -579,7 +579,7 @@ Another alternative is to declare a vector as follows

import numpy as np
 x = np.array([1, 2, 3])
-print(x)
+print(x)
 

Here we have defined a vector with three elements, with \( x_0=1 \), \( x_1=2 \) and \( x_2=3 \). Note that both Python and C++ @@ -589,7 +589,7 @@ start numbering array elements from \( 0 \) and on. This means that a vector wit

import numpy as np
 x = np.log(np.array([4, 7, 8]))
-print(x)
+print(x)
 

In the last example we used Numpy's unary function \( np.log \). This function is @@ -608,7 +608,7 @@ logarithms of a vector would be to write x = np.array([4, 7, 8]) for i in range(0, len(x)): x[i] = log(x[i]) -print(x) +print(x)

We note that our code is much longer already and we need to import the log function from the math module. @@ -618,7 +618,7 @@ The attentive reader will also notice that the output is \( [1, 1, 2] \). Python

import numpy as np
 x = np.log(np.array([4, 7, 8], dtype = np.float64))
-print(x)
+print(x)
 

or simply write them as double precision numbers (Python uses 64 bits as default for floating point type variables), that is @@ -627,7 +627,7 @@ or simply write them as double precision numbers (Python uses 64 bits as default

import numpy as np
 x = np.log(np.array([4.0, 7.0, 8.0])
-print(x)
+print(x)
 

To check the number of bytes (remember that one byte contains eight bits for double precision variables), you can use simple use the itemsize functionality (the array \( x \) is actually an object which inherits the functionalities defined in Numpy) as @@ -636,7 +636,7 @@ To check the number of bytes (remember that one byte contains eight bits for dou

import numpy as np
 x = np.log(np.array([4.0, 7.0, 8.0])
-print(x.itemsize)
+print(x.itemsize)
 

Matrices in Python

@@ -651,7 +651,7 @@ lowercase letters for vectors and uppercase letters for matrices)
import numpy as np
 A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))
-print(A)
+print(A)
 

If we use the shape function we would get \( (3, 3) \) as output, that is verifying that our matrix is a \( 3\times 3 \) matrix. We can slice the matrix and print for example the first column (Python organized matrix elements in a row-major order, see below) as @@ -661,7 +661,7 @@ If we use the shape function we would get \( (3, 3) \) as output, that is

import numpy as np
 A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))
 # print the first column, row-major order and elements start with 0
-print(A[:,0]) 
+print(A[:,0]) 
 

We can continue this was by printing out other columns or rows. The example here prints out the second column @@ -671,7 +671,7 @@ We can continue this was by printing out other columns or rows. The example here

import numpy as np
 A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))
 # print the first column, row-major order and elements start with 0
-print(A[1,:]) 
+print(A[1,:]) 
 

Numpy contains many other functionalities that allow us to slice, subdivide etc etc arrays. We strongly recommend that you look up the Numpy website for more details. Useful functions when defining a matrix are the np.zeros function which declares a matrix of a given dimension and sets all elements to zero @@ -682,7 +682,7 @@ Numpy contains many other functionalities that allow us to slice, subdivide etc n = 10 # define a matrix of dimension 10 x 10 and set all elements to zero A = np.zeros( (n, n) ) -print(A) +print(A)

or initializing all elements to @@ -693,7 +693,7 @@ or initializing all elements to n = 10 # define a matrix of dimension 10 x 10 and set all elements to one A = np.ones( (n, n) ) -print(A) +print(A)

or as unitarily distributed random numbers (see the material on random number generators in the statistics part) @@ -704,7 +704,7 @@ or as unitarily distributed random numbers (see the material on random number ge n = 10 # define a matrix of dimension 10 x 10 and set all elements to random numbers with x \in [0, 1] A = np.random.rand(n, n) -print(A) +print(A)

As we will see throughout these lectures, there are several extremely useful functionalities in Numpy. @@ -749,16 +749,16 @@ covariance matrix through the np.linalg.eig() function. n = 100 x = np.random.normal(size=n) -print(np.mean(x)) +print(np.mean(x)) y = 4+3*x+np.random.normal(size=n) -print(np.mean(y)) +print(np.mean(y)) z = x**3+np.random.normal(size=n) -print(np.mean(z)) +print(np.mean(z)) W = np.vstack((x, y, z)) Sigma = np.cov(W) -print(Sigma) +print(Sigma) Eigvals, Eigvecs = np.linalg.eig(Sigma) -print(Eigvals) +print(Eigvals)

@@ -767,9 +767,9 @@ Eigvals, Eigvecs = npimport matplotlib.pyplot as plt from scipy import sparse eye = np.eye(4) -print(eye) +print(eye) sparse_mtx = sparse.csr_matrix(eye) -print(sparse_mtx) +print(sparse_mtx) x = np.linspace(-10,10,100) y = np.sin(x) plt.plot(x,y,marker='x') @@ -852,8 +852,8 @@ cols = 5 a = np.random.randn(rows,cols) df = pd.DataFrame(a) display(df) -print(df.mean()) -print(df.std()) +print(df.mean()) +print(df.std()) display(df**2)

@@ -865,9 +865,9 @@ Thereafter we can select specific columns only and plot final results df.index = np.arange(10) display(df) -print(df['Second'].mean() ) -print(df.info()) -print(df.describe()) +print(df['Second'].mean() ) +print(df.info()) +print(df.describe()) from pylab import plt, mpl plt.style.use('seaborn') @@ -886,9 +886,9 @@ We can produce a \( 4\times 4 \) matrix

b = np.arange(16).reshape((4,4))
-print(b)
+print(b)
 df1 = pd.DataFrame(b)
-print(df1)
+print(df1)
 

and many other operations. @@ -1100,7 +1100,7 @@ ypredict = linreg.plot(x, np.abs(ypredict-y)/abs(y), "ro") plt.axis([0,1.0,0.0, 0.5]) plt.xlabel(r'$x$') -plt.ylabel(r'$\epsilon_{\mathrm{relative}}$') +plt.ylabel(r'$\epsilon_{\mathrm{relative}}$') plt.title(r'Relative error') plt.show() @@ -1132,16 +1132,16 @@ y = 2.0+ linreg = LinearRegression() linreg.fit(x,y) ypredict = linreg.predict(x) -print('The intercept alpha: \n', linreg.intercept_) -print('Coefficient beta : \n', linreg.coef_) +print('The intercept alpha: \n', linreg.intercept_) +print('Coefficient beta : \n', linreg.coef_) # The mean squared error -print("Mean squared error: %.2f" % mean_squared_error(y, ypredict)) +print("Mean squared error: %.2f" % mean_squared_error(y, ypredict)) # Explained variance score: 1 is perfect prediction -print('Variance score: %.2f' % r2_score(y, ypredict)) +print('Variance score: %.2f' % r2_score(y, ypredict)) # Mean squared log error -print('Mean squared log error: %.2f' % mean_squared_log_error(y, ypredict) ) +print('Mean squared log error: %.2f' % mean_squared_log_error(y, ypredict) ) # Mean absolute error -print('Mean absolute error: %.2f' % mean_absolute_error(y, ypredict)) +print('Mean absolute error: %.2f' % mean_absolute_error(y, ypredict)) plt.plot(x, ypredict, "r-") plt.plot(x, y ,'ro') plt.axis([0.0,1.0,1.5, 7.0]) @@ -1252,7 +1252,7 @@ plt.show() err=(y-yn)/yn return abs(np.sum(err))/len(err) -print (error(y)) +print (error(y))

To our real data: nuclear binding energies. Brief reminder on masses and binding energies

@@ -1375,7 +1375,7 @@ DATA_ID = " return os.path.join(DATA_ID, dat_id) def save_fig(fig_id): - plt.savefig(image_path(fig_id) + ".png", format='png') + plt.savefig(image_path(fig_id) + ".png", format='png') infile = open(data_path("MassEval2016.dat"),'r') @@ -1433,7 +1433,7 @@ Masses = pd.=('N', 'Z', 'A', 'Element', 'Ebinding'), widths=(1,3,5,5,5,1,3,4,1,13,11,11,9,1,2,11,9,1,3,1,12,11,1), header=39, - index_col=False) + index_col=False) # Extrapolated values are indicated by '#' in place of the decimal place, so # the Ebinding column won't be numeric. Coerce to float and drop these entries. @@ -1467,7 +1467,7 @@ Z = Masses[' N = Masses['N'] Element = Masses['Element'] Energies = Masses['Ebinding'] -print(Masses) +print(Masses)

The next step, and we will define this mathematically later, is to set up the so-called design matrix. We will throughout call this matrix \( \boldsymbol{X} \). @@ -1498,18 +1498,18 @@ Now we can print measures of how our fit is doing, the coefficients from the fit

# The mean squared error                               
-print("Mean squared error: %.2f" % mean_squared_error(Energies, fity))
+print("Mean squared error: %.2f" % mean_squared_error(Energies, fity))
 # Explained variance score: 1 is perfect prediction                                 
-print('Variance score: %.2f' % r2_score(Energies, fity))
+print('Variance score: %.2f' % r2_score(Energies, fity))
 # Mean absolute error                                                           
-print('Mean absolute error: %.2f' % mean_absolute_error(Energies, fity))
-print(clf.coef_, clf.intercept_)
+print('Mean absolute error: %.2f' % mean_absolute_error(Energies, fity))
+print(clf.coef_, clf.intercept_)
 
 Masses['Eapprox']  = fity
 # Generate a plot comparing the experimental with the fitted values values.
 fig, ax = plt.subplots()
 ax.set_xlabel(r'$A = N + Z$')
-ax.set_ylabel(r'$E_\mathrm{bind}\,/\mathrm{MeV}$')
+ax.set_ylabel(r'$E_\mathrm{bind}\,/\mathrm{MeV}$')
 ax.plot(Masses['A'], Masses['Ebinding'], alpha=0.7, lw=2,
             label='Ame2016')
 ax.plot(Masses['A'], Masses['Eapprox'], alpha=0.7, lw=2, c='m',
@@ -1554,8 +1554,8 @@ plt.title("
 plt.legend()
 save_fig("Masses2016Trees")
 plt.show()
-print(Masses)
-print(np.mean( (Energies-y_1)**2))
+print(Masses)
+print(np.mean( (Energies-y_1)**2))
 

And what about using neural networks?

@@ -1589,7 +1589,7 @@ sns.set() train_accuracy[i][j] = dnn.score(X_train, Y_train) fig, ax = plt.subplots(figsize = (10, 10)) -sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis") +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis") ax.set_title("Training Accuracy") ax.set_ylabel("$\eta$") ax.set_xlabel("$\lambda$") @@ -1627,7 +1627,7 @@ Now it is time to dive more into the details of various methods. We will start w
- © 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + © 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license
diff --git a/doc/pub/How2ReadData/html/How2ReadData-reveal.html b/doc/pub/How2ReadData/html/How2ReadData-reveal.html index fca65e9cc..300da8a93 100644 --- a/doc/pub/How2ReadData/html/How2ReadData-reveal.html +++ b/doc/pub/How2ReadData/html/How2ReadData-reveal.html @@ -148,7 +148,7 @@ MathJax.Hub.Config({
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

 
-

Dec 25, 2019

+

Aug 19, 2020


Introduction

@@ -570,7 +570,7 @@ Here follows a simple example where we set up an array of ten elements, all dete
n = 10
 x = np.random.normal(size=n)
-print(x)
+print(x)
 

We defined a vector \( x \) with \( n=10 \) elements with its values given by the Normal distribution \( N(0,1) \). @@ -580,7 +580,7 @@ Another alternative is to declare a vector as follows

import numpy as np
 x = np.array([1, 2, 3])
-print(x)
+print(x)
 

Here we have defined a vector with three elements, with \( x_0=1 \), \( x_1=2 \) and \( x_2=3 \). Note that both Python and C++ @@ -590,7 +590,7 @@ start numbering array elements from \( 0 \) and on. This means that a vector wit

import numpy as np
 x = np.log(np.array([4, 7, 8]))
-print(x)
+print(x)
 

In the last example we used Numpy's unary function \( np.log \). This function is @@ -609,7 +609,7 @@ logarithms of a vector would be to write x = np.array([4, 7, 8]) for i in range(0, len(x)): x[i] = log(x[i]) -print(x) +print(x)

We note that our code is much longer already and we need to import the log function from the math module. @@ -619,7 +619,7 @@ The attentive reader will also notice that the output is \( [1, 1, 2] \). Python

import numpy as np
 x = np.log(np.array([4, 7, 8], dtype = np.float64))
-print(x)
+print(x)
 

or simply write them as double precision numbers (Python uses 64 bits as default for floating point type variables), that is @@ -628,7 +628,7 @@ or simply write them as double precision numbers (Python uses 64 bits as default

import numpy as np
 x = np.log(np.array([4.0, 7.0, 8.0])
-print(x)
+print(x)
 

To check the number of bytes (remember that one byte contains eight bits for double precision variables), you can use simple use the itemsize functionality (the array \( x \) is actually an object which inherits the functionalities defined in Numpy) as @@ -637,7 +637,7 @@ To check the number of bytes (remember that one byte contains eight bits for dou

import numpy as np
 x = np.log(np.array([4.0, 7.0, 8.0])
-print(x.itemsize)
+print(x.itemsize)
 

Matrices in Python

@@ -652,7 +652,7 @@ lowercase letters for vectors and uppercase letters for matrices)
import numpy as np
 A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))
-print(A)
+print(A)
 

If we use the shape function we would get \( (3, 3) \) as output, that is verifying that our matrix is a \( 3\times 3 \) matrix. We can slice the matrix and print for example the first column (Python organized matrix elements in a row-major order, see below) as @@ -662,7 +662,7 @@ If we use the shape function we would get \( (3, 3) \) as output, that is

import numpy as np
 A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))
 # print the first column, row-major order and elements start with 0
-print(A[:,0]) 
+print(A[:,0]) 
 

We can continue this was by printing out other columns or rows. The example here prints out the second column @@ -672,7 +672,7 @@ We can continue this was by printing out other columns or rows. The example here

import numpy as np
 A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))
 # print the first column, row-major order and elements start with 0
-print(A[1,:]) 
+print(A[1,:]) 
 

Numpy contains many other functionalities that allow us to slice, subdivide etc etc arrays. We strongly recommend that you look up the Numpy website for more details. Useful functions when defining a matrix are the np.zeros function which declares a matrix of a given dimension and sets all elements to zero @@ -683,7 +683,7 @@ Numpy contains many other functionalities that allow us to slice, subdivide etc n = 10 # define a matrix of dimension 10 x 10 and set all elements to zero A = np.zeros( (n, n) ) -print(A) +print(A)

or initializing all elements to @@ -694,7 +694,7 @@ or initializing all elements to n = 10 # define a matrix of dimension 10 x 10 and set all elements to one A = np.ones( (n, n) ) -print(A) +print(A)

or as unitarily distributed random numbers (see the material on random number generators in the statistics part) @@ -705,7 +705,7 @@ or as unitarily distributed random numbers (see the material on random number ge n = 10 # define a matrix of dimension 10 x 10 and set all elements to random numbers with x \in [0, 1] A = np.random.rand(n, n) -print(A) +print(A)

As we will see throughout these lectures, there are several extremely useful functionalities in Numpy. @@ -756,16 +756,16 @@ covariance matrix through the np.linalg.eig() function. n = 100 x = np.random.normal(size=n) -print(np.mean(x)) +print(np.mean(x)) y = 4+3*x+np.random.normal(size=n) -print(np.mean(y)) +print(np.mean(y)) z = x**3+np.random.normal(size=n) -print(np.mean(z)) +print(np.mean(z)) W = np.vstack((x, y, z)) Sigma = np.cov(W) -print(Sigma) +print(Sigma) Eigvals, Eigvecs = np.linalg.eig(Sigma) -print(Eigvals) +print(Eigvals)

@@ -774,9 +774,9 @@ Eigvals, Eigvecs = np.linalg.eig(Sigma) import matplotlib.pyplot as plt from scipy import sparse eye = np.eye(4) -print(eye) +print(eye) sparse_mtx = sparse.csr_matrix(eye) -print(sparse_mtx) +print(sparse_mtx) x = np.linspace(-10,10,100) y = np.sin(x) plt.plot(x,y,marker='x') @@ -859,8 +859,8 @@ cols = 5 a = np.random.randn(rows,cols) df = pd.DataFrame(a) display(df) -print(df.mean()) -print(df.std()) +print(df.mean()) +print(df.std()) display(df**2)

@@ -872,9 +872,9 @@ Thereafter we can select specific columns only and plot final results df.index = np.arange(10) display(df) -print(df['Second'].mean() ) -print(df.info()) -print(df.describe()) +print(df['Second'].mean() ) +print(df.info()) +print(df.describe()) from pylab import plt, mpl plt.style.use('seaborn') @@ -893,9 +893,9 @@ We can produce a \( 4\times 4 \) matrix

b = np.arange(16).reshape((4,4))
-print(b)
+print(b)
 df1 = pd.DataFrame(b)
-print(df1)
+print(df1)
 

and many other operations. @@ -1147,16 +1147,16 @@ y = 2.0+ 5print('The intercept alpha: \n', linreg.intercept_) -print('Coefficient beta : \n', linreg.coef_) +print('The intercept alpha: \n', linreg.intercept_) +print('Coefficient beta : \n', linreg.coef_) # The mean squared error -print("Mean squared error: %.2f" % mean_squared_error(y, ypredict)) +print("Mean squared error: %.2f" % mean_squared_error(y, ypredict)) # Explained variance score: 1 is perfect prediction -print('Variance score: %.2f' % r2_score(y, ypredict)) +print('Variance score: %.2f' % r2_score(y, ypredict)) # Mean squared log error -print('Mean squared log error: %.2f' % mean_squared_log_error(y, ypredict) ) +print('Mean squared log error: %.2f' % mean_squared_log_error(y, ypredict) ) # Mean absolute error -print('Mean absolute error: %.2f' % mean_absolute_error(y, ypredict)) +print('Mean absolute error: %.2f' % mean_absolute_error(y, ypredict)) plt.plot(x, ypredict, "r-") plt.plot(x, y ,'ro') plt.axis([0.0,1.0,1.5, 7.0]) @@ -1279,7 +1279,7 @@ plt.show() err=(y-yn)/yn return abs(np.sum(err))/len(err) -print (error(y)) +print (error(y))

To our real data: nuclear binding energies. Brief reminder on masses and binding energies

@@ -1418,7 +1418,7 @@ DATA_ID = "DataFiles/" return os.path.join(DATA_ID, dat_id) def save_fig(fig_id): - plt.savefig(image_path(fig_id) + ".png", format='png') + plt.savefig(image_path(fig_id) + ".png", format='png') infile = open(data_path("MassEval2016.dat"),'r') @@ -1476,7 +1476,7 @@ Masses = pd.read_fwf(infile, usecols=(2,'N'
, 'Z', 'A', 'Element', 'Ebinding'), widths=(1,3,5,5,5,1,3,4,1,13,11,11,9,1,2,11,9,1,3,1,12,11,1), header=39, - index_col=False) + index_col=False) # Extrapolated values are indicated by '#' in place of the decimal place, so # the Ebinding column won't be numeric. Coerce to float and drop these entries. @@ -1510,7 +1510,7 @@ Z = Masses['Z'] N = Masses['N'] Element = Masses['Element'] Energies = Masses['Ebinding'] -print(Masses) +print(Masses)

The next step, and we will define this mathematically later, is to set up the so-called design matrix. We will throughout call this matrix \( \boldsymbol{X} \). @@ -1541,12 +1541,12 @@ Now we can print measures of how our fit is doing, the coefficients from the fit

# The mean squared error                               
-print("Mean squared error: %.2f" % mean_squared_error(Energies, fity))
+print("Mean squared error: %.2f" % mean_squared_error(Energies, fity))
 # Explained variance score: 1 is perfect prediction                                 
-print('Variance score: %.2f' % r2_score(Energies, fity))
+print('Variance score: %.2f' % r2_score(Energies, fity))
 # Mean absolute error                                                           
-print('Mean absolute error: %.2f' % mean_absolute_error(Energies, fity))
-print(clf.coef_, clf.intercept_)
+print('Mean absolute error: %.2f' % mean_absolute_error(Energies, fity))
+print(clf.coef_, clf.intercept_)
 
 Masses['Eapprox']  = fity
 # Generate a plot comparing the experimental with the fitted values values.
@@ -1597,8 +1597,8 @@ plt.title("Decision Tree Regression""Masses2016Trees")
 plt.show()
-print(Masses)
-print(np.mean( (Energies-y_1)**2))
+print(Masses)
+print(np.mean( (Energies-y_1)**2))
 

And what about using neural networks?

@@ -1632,7 +1632,7 @@ sns.set() train_accuracy[i][j] = dnn.score(X_train, Y_train) fig, ax = plt.subplots(figsize = (10, 10)) -sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis") +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis") ax.set_title("Training Accuracy") ax.set_ylabel("$\eta$") ax.set_xlabel("$\lambda$") @@ -1657,7 +1657,7 @@ Now it is time to dive more into the details of various methods. We will start w
- © 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + © 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license
diff --git a/doc/pub/How2ReadData/html/How2ReadData-solarized.html b/doc/pub/How2ReadData/html/How2ReadData-solarized.html index a94087cb1..567ed2460 100644 --- a/doc/pub/How2ReadData/html/How2ReadData-solarized.html +++ b/doc/pub/How2ReadData/html/How2ReadData-solarized.html @@ -135,7 +135,7 @@ MathJax.Hub.Config({
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

-

Dec 25, 2019

+

Aug 19, 2020


Introduction

@@ -529,7 +529,7 @@ Here follows a simple example where we set up an array of ten elements, all dete
n = 10
 x = np.random.normal(size=n)
-print(x)
+print(x)
 

We defined a vector \( x \) with \( n=10 \) elements with its values given by the Normal distribution \( N(0,1) \). @@ -539,7 +539,7 @@ Another alternative is to declare a vector as follows

import numpy as np
 x = np.array([1, 2, 3])
-print(x)
+print(x)
 

Here we have defined a vector with three elements, with \( x_0=1 \), \( x_1=2 \) and \( x_2=3 \). Note that both Python and C++ @@ -549,7 +549,7 @@ start numbering array elements from \( 0 \) and on. This means that a vector wit

import numpy as np
 x = np.log(np.array([4, 7, 8]))
-print(x)
+print(x)
 

In the last example we used Numpy's unary function \( np.log \). This function is @@ -568,7 +568,7 @@ logarithms of a vector would be to write x = np.array([4, 7, 8]) for i in range(0, len(x)): x[i] = log(x[i]) -print(x) +print(x)

We note that our code is much longer already and we need to import the log function from the math module. @@ -578,7 +578,7 @@ The attentive reader will also notice that the output is \( [1, 1, 2] \). Python

import numpy as np
 x = np.log(np.array([4, 7, 8], dtype = np.float64))
-print(x)
+print(x)
 

or simply write them as double precision numbers (Python uses 64 bits as default for floating point type variables), that is @@ -587,7 +587,7 @@ or simply write them as double precision numbers (Python uses 64 bits as default

import numpy as np
 x = np.log(np.array([4.0, 7.0, 8.0])
-print(x)
+print(x)
 

To check the number of bytes (remember that one byte contains eight bits for double precision variables), you can use simple use the itemsize functionality (the array \( x \) is actually an object which inherits the functionalities defined in Numpy) as @@ -596,7 +596,7 @@ To check the number of bytes (remember that one byte contains eight bits for dou

import numpy as np
 x = np.log(np.array([4.0, 7.0, 8.0])
-print(x.itemsize)
+print(x.itemsize)
 

Matrices in Python

@@ -611,7 +611,7 @@ lowercase letters for vectors and uppercase letters for matrices)
import numpy as np
 A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))
-print(A)
+print(A)
 

If we use the shape function we would get \( (3, 3) \) as output, that is verifying that our matrix is a \( 3\times 3 \) matrix. We can slice the matrix and print for example the first column (Python organized matrix elements in a row-major order, see below) as @@ -621,7 +621,7 @@ If we use the shape function we would get \( (3, 3) \) as output, that is

import numpy as np
 A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))
 # print the first column, row-major order and elements start with 0
-print(A[:,0]) 
+print(A[:,0]) 
 

We can continue this was by printing out other columns or rows. The example here prints out the second column @@ -631,7 +631,7 @@ We can continue this was by printing out other columns or rows. The example here

import numpy as np
 A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))
 # print the first column, row-major order and elements start with 0
-print(A[1,:]) 
+print(A[1,:]) 
 

Numpy contains many other functionalities that allow us to slice, subdivide etc etc arrays. We strongly recommend that you look up the Numpy website for more details. Useful functions when defining a matrix are the np.zeros function which declares a matrix of a given dimension and sets all elements to zero @@ -642,7 +642,7 @@ Numpy contains many other functionalities that allow us to slice, subdivide etc n = 10 # define a matrix of dimension 10 x 10 and set all elements to zero A = np.zeros( (n, n) ) -print(A) +print(A)

or initializing all elements to @@ -653,7 +653,7 @@ or initializing all elements to n = 10 # define a matrix of dimension 10 x 10 and set all elements to one A = np.ones( (n, n) ) -print(A) +print(A)

or as unitarily distributed random numbers (see the material on random number generators in the statistics part) @@ -664,7 +664,7 @@ or as unitarily distributed random numbers (see the material on random number ge n = 10 # define a matrix of dimension 10 x 10 and set all elements to random numbers with x \in [0, 1] A = np.random.rand(n, n) -print(A) +print(A)

As we will see throughout these lectures, there are several extremely useful functionalities in Numpy. @@ -709,16 +709,16 @@ covariance matrix through the np.linalg.eig() function. n = 100 x = np.random.normal(size=n) -print(np.mean(x)) +print(np.mean(x)) y = 4+3*x+np.random.normal(size=n) -print(np.mean(y)) +print(np.mean(y)) z = x**3+np.random.normal(size=n) -print(np.mean(z)) +print(np.mean(z)) W = np.vstack((x, y, z)) Sigma = np.cov(W) -print(Sigma) +print(Sigma) Eigvals, Eigvecs = np.linalg.eig(Sigma) -print(Eigvals) +print(Eigvals)

@@ -727,9 +727,9 @@ Eigvals, Eigvecs = np.linalg.eig(Sigma) import matplotlib.pyplot as plt from scipy import sparse eye = np.eye(4) -print(eye) +print(eye) sparse_mtx = sparse.csr_matrix(eye) -print(sparse_mtx) +print(sparse_mtx) x = np.linspace(-10,10,100) y = np.sin(x) plt.plot(x,y,marker='x') @@ -812,8 +812,8 @@ cols = 5 a = np.random.randn(rows,cols) df = pd.DataFrame(a) display(df) -print(df.mean()) -print(df.std()) +print(df.mean()) +print(df.std()) display(df**2)

@@ -825,9 +825,9 @@ Thereafter we can select specific columns only and plot final results df.index = np.arange(10) display(df) -print(df['Second'].mean() ) -print(df.info()) -print(df.describe()) +print(df['Second'].mean() ) +print(df.info()) +print(df.describe()) from pylab import plt, mpl plt.style.use('seaborn') @@ -846,9 +846,9 @@ We can produce a \( 4\times 4 \) matrix

b = np.arange(16).reshape((4,4))
-print(b)
+print(b)
 df1 = pd.DataFrame(b)
-print(df1)
+print(df1)
 

and many other operations. @@ -1092,16 +1092,16 @@ y = 2.0+ 5print('The intercept alpha: \n', linreg.intercept_) -print('Coefficient beta : \n', linreg.coef_) +print('The intercept alpha: \n', linreg.intercept_) +print('Coefficient beta : \n', linreg.coef_) # The mean squared error -print("Mean squared error: %.2f" % mean_squared_error(y, ypredict)) +print("Mean squared error: %.2f" % mean_squared_error(y, ypredict)) # Explained variance score: 1 is perfect prediction -print('Variance score: %.2f' % r2_score(y, ypredict)) +print('Variance score: %.2f' % r2_score(y, ypredict)) # Mean squared log error -print('Mean squared log error: %.2f' % mean_squared_log_error(y, ypredict) ) +print('Mean squared log error: %.2f' % mean_squared_log_error(y, ypredict) ) # Mean absolute error -print('Mean absolute error: %.2f' % mean_absolute_error(y, ypredict)) +print('Mean absolute error: %.2f' % mean_absolute_error(y, ypredict)) plt.plot(x, ypredict, "r-") plt.plot(x, y ,'ro') plt.axis([0.0,1.0,1.5, 7.0]) @@ -1212,7 +1212,7 @@ plt.show() err=(y-yn)/yn return abs(np.sum(err))/len(err) -print (error(y)) +print (error(y))

To our real data: nuclear binding energies. Brief reminder on masses and binding energies

@@ -1335,7 +1335,7 @@ DATA_ID = "DataFiles/" return os.path.join(DATA_ID, dat_id) def save_fig(fig_id): - plt.savefig(image_path(fig_id) + ".png", format='png') + plt.savefig(image_path(fig_id) + ".png", format='png') infile = open(data_path("MassEval2016.dat"),'r') @@ -1393,7 +1393,7 @@ Masses = pd.read_fwf(infile, usecols=(2,'N'
, 'Z', 'A', 'Element', 'Ebinding'), widths=(1,3,5,5,5,1,3,4,1,13,11,11,9,1,2,11,9,1,3,1,12,11,1), header=39, - index_col=False) + index_col=False) # Extrapolated values are indicated by '#' in place of the decimal place, so # the Ebinding column won't be numeric. Coerce to float and drop these entries. @@ -1427,7 +1427,7 @@ Z = Masses['Z'] N = Masses['N'] Element = Masses['Element'] Energies = Masses['Ebinding'] -print(Masses) +print(Masses)

The next step, and we will define this mathematically later, is to set up the so-called design matrix. We will throughout call this matrix \( \boldsymbol{X} \). @@ -1458,12 +1458,12 @@ Now we can print measures of how our fit is doing, the coefficients from the fit

# The mean squared error                               
-print("Mean squared error: %.2f" % mean_squared_error(Energies, fity))
+print("Mean squared error: %.2f" % mean_squared_error(Energies, fity))
 # Explained variance score: 1 is perfect prediction                                 
-print('Variance score: %.2f' % r2_score(Energies, fity))
+print('Variance score: %.2f' % r2_score(Energies, fity))
 # Mean absolute error                                                           
-print('Mean absolute error: %.2f' % mean_absolute_error(Energies, fity))
-print(clf.coef_, clf.intercept_)
+print('Mean absolute error: %.2f' % mean_absolute_error(Energies, fity))
+print(clf.coef_, clf.intercept_)
 
 Masses['Eapprox']  = fity
 # Generate a plot comparing the experimental with the fitted values values.
@@ -1514,8 +1514,8 @@ plt.title("Decision Tree Regression""Masses2016Trees")
 plt.show()
-print(Masses)
-print(np.mean( (Energies-y_1)**2))
+print(Masses)
+print(np.mean( (Energies-y_1)**2))
 

And what about using neural networks?

@@ -1549,7 +1549,7 @@ sns.set() train_accuracy[i][j] = dnn.score(X_train, Y_train) fig, ax = plt.subplots(figsize = (10, 10)) -sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis") +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis") ax.set_title("Training Accuracy") ax.set_ylabel("$\eta$") ax.set_xlabel("$\lambda$") @@ -1576,7 +1576,7 @@ Now it is time to dive more into the details of various methods. We will start w
- © 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + © 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license
diff --git a/doc/pub/How2ReadData/html/How2ReadData.html b/doc/pub/How2ReadData/html/How2ReadData.html index 592f193f8..dcd08eb87 100644 --- a/doc/pub/How2ReadData/html/How2ReadData.html +++ b/doc/pub/How2ReadData/html/How2ReadData.html @@ -140,7 +140,7 @@ MathJax.Hub.Config({
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

-

Dec 25, 2019

+

Aug 19, 2020


Introduction

@@ -534,7 +534,7 @@ Here follows a simple example where we set up an array of ten elements, all dete
n = 10
 x = np.random.normal(size=n)
-print(x)
+print(x)
 

We defined a vector \( x \) with \( n=10 \) elements with its values given by the Normal distribution \( N(0,1) \). @@ -544,7 +544,7 @@ Another alternative is to declare a vector as follows

import numpy as np
 x = np.array([1, 2, 3])
-print(x)
+print(x)
 

Here we have defined a vector with three elements, with \( x_0=1 \), \( x_1=2 \) and \( x_2=3 \). Note that both Python and C++ @@ -554,7 +554,7 @@ start numbering array elements from \( 0 \) and on. This means that a vector wit

import numpy as np
 x = np.log(np.array([4, 7, 8]))
-print(x)
+print(x)
 

In the last example we used Numpy's unary function \( np.log \). This function is @@ -573,7 +573,7 @@ logarithms of a vector would be to write x = np.array([4, 7, 8]) for i in range(0, len(x)): x[i] = log(x[i]) -print(x) +print(x)

We note that our code is much longer already and we need to import the log function from the math module. @@ -583,7 +583,7 @@ The attentive reader will also notice that the output is \( [1, 1, 2] \). Python

import numpy as np
 x = np.log(np.array([4, 7, 8], dtype = np.float64))
-print(x)
+print(x)
 

or simply write them as double precision numbers (Python uses 64 bits as default for floating point type variables), that is @@ -592,7 +592,7 @@ or simply write them as double precision numbers (Python uses 64 bits as default

import numpy as np
 x = np.log(np.array([4.0, 7.0, 8.0])
-print(x)
+print(x)
 

To check the number of bytes (remember that one byte contains eight bits for double precision variables), you can use simple use the itemsize functionality (the array \( x \) is actually an object which inherits the functionalities defined in Numpy) as @@ -601,7 +601,7 @@ To check the number of bytes (remember that one byte contains eight bits for dou

import numpy as np
 x = np.log(np.array([4.0, 7.0, 8.0])
-print(x.itemsize)
+print(x.itemsize)
 

Matrices in Python

@@ -616,7 +616,7 @@ lowercase letters for vectors and uppercase letters for matrices)
import numpy as np
 A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))
-print(A)
+print(A)
 

If we use the shape function we would get \( (3, 3) \) as output, that is verifying that our matrix is a \( 3\times 3 \) matrix. We can slice the matrix and print for example the first column (Python organized matrix elements in a row-major order, see below) as @@ -626,7 +626,7 @@ If we use the shape function we would get \( (3, 3) \) as output, that is

import numpy as np
 A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))
 # print the first column, row-major order and elements start with 0
-print(A[:,0]) 
+print(A[:,0]) 
 

We can continue this was by printing out other columns or rows. The example here prints out the second column @@ -636,7 +636,7 @@ We can continue this was by printing out other columns or rows. The example here

import numpy as np
 A = np.log(np.array([ [4.0, 7.0, 8.0], [3.0, 10.0, 11.0], [4.0, 5.0, 7.0] ]))
 # print the first column, row-major order and elements start with 0
-print(A[1,:]) 
+print(A[1,:]) 
 

Numpy contains many other functionalities that allow us to slice, subdivide etc etc arrays. We strongly recommend that you look up the Numpy website for more details. Useful functions when defining a matrix are the np.zeros function which declares a matrix of a given dimension and sets all elements to zero @@ -647,7 +647,7 @@ Numpy contains many other functionalities that allow us to slice, subdivide etc n = 10 # define a matrix of dimension 10 x 10 and set all elements to zero A = np.zeros( (n, n) ) -print(A) +print(A)

or initializing all elements to @@ -658,7 +658,7 @@ or initializing all elements to n = 10 # define a matrix of dimension 10 x 10 and set all elements to one A = np.ones( (n, n) ) -print(A) +print(A)

or as unitarily distributed random numbers (see the material on random number generators in the statistics part) @@ -669,7 +669,7 @@ or as unitarily distributed random numbers (see the material on random number ge n = 10 # define a matrix of dimension 10 x 10 and set all elements to random numbers with x \in [0, 1] A = np.random.rand(n, n) -print(A) +print(A)

As we will see throughout these lectures, there are several extremely useful functionalities in Numpy. @@ -714,16 +714,16 @@ covariance matrix through the np.linalg.eig() function. n = 100 x = np.random.normal(size=n) -print(np.mean(x)) +print(np.mean(x)) y = 4+3*x+np.random.normal(size=n) -print(np.mean(y)) +print(np.mean(y)) z = x**3+np.random.normal(size=n) -print(np.mean(z)) +print(np.mean(z)) W = np.vstack((x, y, z)) Sigma = np.cov(W) -print(Sigma) +print(Sigma) Eigvals, Eigvecs = np.linalg.eig(Sigma) -print(Eigvals) +print(Eigvals)

@@ -732,9 +732,9 @@ Eigvals, Eigvecs = npimport matplotlib.pyplot as plt from scipy import sparse eye = np.eye(4) -print(eye) +print(eye) sparse_mtx = sparse.csr_matrix(eye) -print(sparse_mtx) +print(sparse_mtx) x = np.linspace(-10,10,100) y = np.sin(x) plt.plot(x,y,marker='x') @@ -817,8 +817,8 @@ cols = 5 a = np.random.randn(rows,cols) df = pd.DataFrame(a) display(df) -print(df.mean()) -print(df.std()) +print(df.mean()) +print(df.std()) display(df**2)

@@ -830,9 +830,9 @@ Thereafter we can select specific columns only and plot final results df.index = np.arange(10) display(df) -print(df['Second'].mean() ) -print(df.info()) -print(df.describe()) +print(df['Second'].mean() ) +print(df.info()) +print(df.describe()) from pylab import plt, mpl plt.style.use('seaborn') @@ -851,9 +851,9 @@ We can produce a \( 4\times 4 \) matrix

b = np.arange(16).reshape((4,4))
-print(b)
+print(b)
 df1 = pd.DataFrame(b)
-print(df1)
+print(df1)
 

and many other operations. @@ -1065,7 +1065,7 @@ ypredict = linreg.plot(x, np.abs(ypredict-y)/abs(y), "ro") plt.axis([0,1.0,0.0, 0.5]) plt.xlabel(r'$x$') -plt.ylabel(r'$\epsilon_{\mathrm{relative}}$') +plt.ylabel(r'$\epsilon_{\mathrm{relative}}$') plt.title(r'Relative error') plt.show() @@ -1097,16 +1097,16 @@ y = 2.0+ linreg = LinearRegression() linreg.fit(x,y) ypredict = linreg.predict(x) -print('The intercept alpha: \n', linreg.intercept_) -print('Coefficient beta : \n', linreg.coef_) +print('The intercept alpha: \n', linreg.intercept_) +print('Coefficient beta : \n', linreg.coef_) # The mean squared error -print("Mean squared error: %.2f" % mean_squared_error(y, ypredict)) +print("Mean squared error: %.2f" % mean_squared_error(y, ypredict)) # Explained variance score: 1 is perfect prediction -print('Variance score: %.2f' % r2_score(y, ypredict)) +print('Variance score: %.2f' % r2_score(y, ypredict)) # Mean squared log error -print('Mean squared log error: %.2f' % mean_squared_log_error(y, ypredict) ) +print('Mean squared log error: %.2f' % mean_squared_log_error(y, ypredict) ) # Mean absolute error -print('Mean absolute error: %.2f' % mean_absolute_error(y, ypredict)) +print('Mean absolute error: %.2f' % mean_absolute_error(y, ypredict)) plt.plot(x, ypredict, "r-") plt.plot(x, y ,'ro') plt.axis([0.0,1.0,1.5, 7.0]) @@ -1217,7 +1217,7 @@ plt.show() err=(y-yn)/yn return abs(np.sum(err))/len(err) -print (error(y)) +print (error(y))

To our real data: nuclear binding energies. Brief reminder on masses and binding energies

@@ -1340,7 +1340,7 @@ DATA_ID = " return os.path.join(DATA_ID, dat_id) def save_fig(fig_id): - plt.savefig(image_path(fig_id) + ".png", format='png') + plt.savefig(image_path(fig_id) + ".png", format='png') infile = open(data_path("MassEval2016.dat"),'r') @@ -1398,7 +1398,7 @@ Masses = pd.=('N', 'Z', 'A', 'Element', 'Ebinding'), widths=(1,3,5,5,5,1,3,4,1,13,11,11,9,1,2,11,9,1,3,1,12,11,1), header=39, - index_col=False) + index_col=False) # Extrapolated values are indicated by '#' in place of the decimal place, so # the Ebinding column won't be numeric. Coerce to float and drop these entries. @@ -1432,7 +1432,7 @@ Z = Masses[' N = Masses['N'] Element = Masses['Element'] Energies = Masses['Ebinding'] -print(Masses) +print(Masses)

The next step, and we will define this mathematically later, is to set up the so-called design matrix. We will throughout call this matrix \( \boldsymbol{X} \). @@ -1463,18 +1463,18 @@ Now we can print measures of how our fit is doing, the coefficients from the fit

# The mean squared error                               
-print("Mean squared error: %.2f" % mean_squared_error(Energies, fity))
+print("Mean squared error: %.2f" % mean_squared_error(Energies, fity))
 # Explained variance score: 1 is perfect prediction                                 
-print('Variance score: %.2f' % r2_score(Energies, fity))
+print('Variance score: %.2f' % r2_score(Energies, fity))
 # Mean absolute error                                                           
-print('Mean absolute error: %.2f' % mean_absolute_error(Energies, fity))
-print(clf.coef_, clf.intercept_)
+print('Mean absolute error: %.2f' % mean_absolute_error(Energies, fity))
+print(clf.coef_, clf.intercept_)
 
 Masses['Eapprox']  = fity
 # Generate a plot comparing the experimental with the fitted values values.
 fig, ax = plt.subplots()
 ax.set_xlabel(r'$A = N + Z$')
-ax.set_ylabel(r'$E_\mathrm{bind}\,/\mathrm{MeV}$')
+ax.set_ylabel(r'$E_\mathrm{bind}\,/\mathrm{MeV}$')
 ax.plot(Masses['A'], Masses['Ebinding'], alpha=0.7, lw=2,
             label='Ame2016')
 ax.plot(Masses['A'], Masses['Eapprox'], alpha=0.7, lw=2, c='m',
@@ -1519,8 +1519,8 @@ plt.title("
 plt.legend()
 save_fig("Masses2016Trees")
 plt.show()
-print(Masses)
-print(np.mean( (Energies-y_1)**2))
+print(Masses)
+print(np.mean( (Energies-y_1)**2))
 

And what about using neural networks?

@@ -1554,7 +1554,7 @@ sns.set() train_accuracy[i][j] = dnn.score(X_train, Y_train) fig, ax = plt.subplots(figsize = (10, 10)) -sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis") +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis") ax.set_title("Training Accuracy") ax.set_ylabel("$\eta$") ax.set_xlabel("$\lambda$") @@ -1581,7 +1581,7 @@ Now it is time to dive more into the details of various methods. We will start w
- © 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + © 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license
diff --git a/doc/pub/How2ReadData/ipynb/ipynb-How2ReadData-src.tar.gz b/doc/pub/How2ReadData/ipynb/ipynb-How2ReadData-src.tar.gz index 7900604e45b2d91210cb17847b5926b8f2431c97..f11f01d551ef60fe38642e0b832cc3223e0c9eaa 100644 GIT binary patch literal 195 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 z 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 diff --git a/doc/pub/How2ReadData/pdf/How2ReadData-minted.pdf b/doc/pub/How2ReadData/pdf/How2ReadData-minted.pdf index 7692b433492df6548280116c844502f001c57107..e6c04b8864b54799e7f3e14f67f51196792e57fb 100644 GIT binary patch delta 138952 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�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ź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 delta 65755 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
D4 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 z�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 JTu}n%e*r-{2Rr}( diff --git a/doc/pub/Introduction/html/Introduction-bs.html b/doc/pub/Introduction/html/Introduction-bs.html index a3a1a9759..b66e0c3fc 100644 --- a/doc/pub/Introduction/html/Introduction-bs.html +++ b/doc/pub/Introduction/html/Introduction-bs.html @@ -108,7 +108,7 @@ end of tocinfo -->
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

-

Nov 19, 2019

+

Aug 19, 2020


@@ -469,7 +469,7 @@ society.

- © 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + © 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license
diff --git a/doc/pub/Introduction/html/Introduction-reveal.html b/doc/pub/Introduction/html/Introduction-reveal.html index 5d7dd8614..87b5520da 100644 --- a/doc/pub/Introduction/html/Introduction-reveal.html +++ b/doc/pub/Introduction/html/Introduction-reveal.html @@ -132,7 +132,7 @@ td.padding {
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

 
-

Nov 19, 2019

+

Aug 19, 2020


Introduction

@@ -219,7 +219,7 @@ of algorithms and methods we will discuss.

- © 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + © 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license
diff --git a/doc/pub/Introduction/html/Introduction-solarized.html b/doc/pub/Introduction/html/Introduction-solarized.html index 591ed0cee..c8a49b06e 100644 --- a/doc/pub/Introduction/html/Introduction-solarized.html +++ b/doc/pub/Introduction/html/Introduction-solarized.html @@ -68,7 +68,7 @@ end of tocinfo -->
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

-

Nov 19, 2019

+

Aug 19, 2020


Introduction

@@ -416,7 +416,7 @@ society.
- © 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + © 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license
diff --git a/doc/pub/Introduction/html/Introduction.html b/doc/pub/Introduction/html/Introduction.html index 9db52b93b..6bc3b2fd4 100644 --- a/doc/pub/Introduction/html/Introduction.html +++ b/doc/pub/Introduction/html/Introduction.html @@ -73,7 +73,7 @@ end of tocinfo -->
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

-

Nov 19, 2019

+

Aug 19, 2020


Introduction

@@ -421,7 +421,7 @@ society.
- © 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + © 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license
diff --git a/doc/pub/Introduction/ipynb/ipynb-Introduction-src.tar.gz b/doc/pub/Introduction/ipynb/ipynb-Introduction-src.tar.gz index fae5d47d3e03a28b60c553e32bce9a8599a19ace..cde3a27943ffd1ddf66cce7300fe8410f4ea226a 100644 GIT binary patch literal 193 zcmV;y06za8iwFSx^gLex1MSaC3c@fD2H>uHia9|^n%b@fU34Lcc!AWWHa=!*l7hXx zeSoeMH${YeS^NzAgqhuXx!SBFcXz>T7-MOYz>rzG7?Z`*JmRqcE;8P~SY!z>E=0-$ zVDqi?(po1?ze;^lXcfNg^|h+{@XvG#Jo8WNYi%LlcCID_B&Q0ZGvw$DmF>Z4!bmqA v7EqG1LjjDswc03<*nuodJ#^$HYz!TZyxJ)I^+}%RdEOTu7jZyS00;m8PxD#H literal 193 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 @@ -281,116 +282,117 @@ MathJax.Hub.Config({
@@ -425,7 +427,7 @@ MathJax.Hub.Config({
[2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

-

Dec 24, 2019

+

Aug 19, 2020


@@ -449,7 +451,7 @@ MathJax.Hub.Config({

  • 9
  • 10
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • @@ -467,7 +469,7 @@ MathJax.Hub.Config({
    - © 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + © 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license
    diff --git a/doc/pub/Regression/html/._Regression-bs001.html b/doc/pub/Regression/html/._Regression-bs001.html index f6e0652f7..efc361c3d 100644 --- a/doc/pub/Regression/html/._Regression-bs001.html +++ b/doc/pub/Regression/html/._Regression-bs001.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,27 +408,21 @@ MathJax.Hub.Config({ -

    Why Linear Regression (aka Ordinary Least Squares and family)

    - -

    -Fitting a continuous function with linear parameterization in terms of the parameters \( \boldsymbol{\beta} \). +

    To do list

      -
    • Method of choice for fitting a continuous function!
    • -
    • Gives an excellent introduction to central Machine Learning features with understandable pedagogical links to other methods like Neural Networks, Support Vector Machines etc
    • -
    • Analytical expression for the fitting parameters \( \boldsymbol{\beta} \)
    • -
    • Analytical expressions for statistical propertiers like mean values, variances, confidence intervals and more
    • -
    • Analytical relation with probabilistic interpretations
    • -
    • Easy to introduce basic concepts like bias-variance tradeoff, cross-validation, resampling and regularization techniques and many other ML topics
    • -
    • Easy to code! And links well with classification problems and logistic regression and neural networks
    • -
    • Allows for easy hands-on understanding of gradient descent methods
    • -
    • and many more features
    • +
    • Clean up Boston Housing data with correlations, add perhaps another more science related example. Add more info about correlation matrix, how to set it up and what it means
    • +
    • show how the data is set up and show the design matrix for this data set
    • +
    • Bring up covid data, say eg recent UK data on race etc
    • +
    • Same for the Ising model
    • +
    • Clean up part on statistics and resampling methods
    • +
    • add material on ridge and lasso and link to SVD, show proofs, use doughnut example
    • +
    • clean up math formalism, hats to boldface
    • +
    • add material about kernel regression and splines
    • +
    • rewrite Cross validation part and add discussion of train, validate and test, think of placing in statistics part or merge statistics into the reg material. add more formal stat on bootstrapping
    • +
    • add discussion of training, validation and testing using ridge and lasso regression. demonstrate usage of gridsearch in validation case.
    -For more discussions of Ridge and Lasso regression, Wessel van Wieringen's article is highly recommended. -Similarly, Mehta et al's article is also recommended. - -

    diff --git a/doc/pub/Regression/html/._Regression-bs002.html b/doc/pub/Regression/html/._Regression-bs002.html index 2f239db32..7c9f1b69d 100644 --- a/doc/pub/Regression/html/._Regression-bs002.html +++ b/doc/pub/Regression/html/._Regression-bs002.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,28 +408,25 @@ MathJax.Hub.Config({ -

    Regression analysis, overarching aims

    -
    -
    -

    +

    Why Linear Regression (aka Ordinary Least Squares and family)

    -Regression modeling deals with the description of the sampling distribution of a given random variable \( y \) and how it varies as function of another variable or a set of such variables \( \boldsymbol{x} =[x_0, x_1,\dots, x_{n-1}]^T \). -The first variable is called the dependent, the outcome or the response variable while the set of variables \( \boldsymbol{x} \) is called the independent variable, or the predictor variable or the explanatory variable. - -

    -A regression model aims at finding a likelihood function \( p(\boldsymbol{y}\vert \boldsymbol{x}) \), that is the conditional distribution for \( \boldsymbol{y} \) with a given \( \boldsymbol{x} \). The estimation of \( p(\boldsymbol{y}\vert \boldsymbol{x}) \) is made using a data set with +Fitting a continuous function with linear parameterization in terms of the parameters \( \boldsymbol{\beta} \).

      -
    • \( n \) cases \( i = 0, 1, 2, \dots, n-1 \)
    • -
    • Response (target, dependent or outcome) variable \( y_i \) with \( i = 0, 1, 2, \dots, n-1 \)
    • -
    • \( p \) so-called explanatory (independent or predictor) variables \( \boldsymbol{x}_i=[x_{i0}, x_{i1}, \dots, x_{ip-1}] \) with \( i = 0, 1, 2, \dots, n-1 \) and explanatory variables running from \( 0 \) to \( p-1 \). See below for more explicit examples.
    • +
    • Method of choice for fitting a continuous function!
    • +
    • Gives an excellent introduction to central Machine Learning features with understandable pedagogical links to other methods like Neural Networks, Support Vector Machines etc
    • +
    • Analytical expression for the fitting parameters \( \boldsymbol{\beta} \)
    • +
    • Analytical expressions for statistical propertiers like mean values, variances, confidence intervals and more
    • +
    • Analytical relation with probabilistic interpretations
    • +
    • Easy to introduce basic concepts like bias-variance tradeoff, cross-validation, resampling and regularization techniques and many other ML topics
    • +
    • Easy to code! And links well with classification problems and logistic regression and neural networks
    • +
    • Allows for easy hands-on understanding of gradient descent methods
    • +
    • and many more features
    - The goal of the regression analysis is to extract/exploit relationship between \( \boldsymbol{y} \) and \( \boldsymbol{x} \) in or to infer causal dependencies, approximations to the likelihood functions, functional relationships and to make predictions, making fits and many other things. -
    -
    - +For more discussions of Ridge and Lasso regression, Wessel van Wieringen's article is highly recommended. +Similarly, Mehta et al's article is also recommended.

    @@ -447,7 +446,7 @@ A regression model aims at finding a likelihood function \( p(\boldsymbol{y}\ver

  • 11
  • 12
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs003.html b/doc/pub/Regression/html/._Regression-bs003.html index b0c22d12c..5b6ba6eb4 100644 --- a/doc/pub/Regression/html/._Regression-bs003.html +++ b/doc/pub/Regression/html/._Regression-bs003.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,33 +408,25 @@ MathJax.Hub.Config({ -

    Regression analysis, overarching aims II

    +

    Regression analysis, overarching aims

    -Consider an experiment in which \( p \) characteristics of \( n \) samples are -measured. The data from this experiment, for various explanatory variables \( p \) are normally represented by a matrix -\( \mathbf{X} \). +Regression modeling deals with the description of the sampling distribution of a given random variable \( y \) and how it varies as function of another variable or a set of such variables \( \boldsymbol{x} =[x_0, x_1,\dots, x_{n-1}]^T \). +The first variable is called the dependent, the outcome or the response variable while the set of variables \( \boldsymbol{x} \) is called the independent variable, or the predictor variable or the explanatory variable.

    -The matrix \( \mathbf{X} \) is called the design -matrix. Additional information of the samples is available in the -form of \( \boldsymbol{y} \) (also as above). The variable \( \boldsymbol{y} \) is -generally referred to as the response variable. The aim of -regression analysis is to explain \( \boldsymbol{y} \) in terms of -\( \boldsymbol{X} \) through a functional relationship like \( y_i = -f(\mathbf{X}_{i,\ast}) \). When no prior knowledge on the form of -\( f(\cdot) \) is available, it is common to assume a linear relationship -between \( \boldsymbol{X} \) and \( \boldsymbol{y} \). This assumption gives rise to -the linear regression model where \( \boldsymbol{\beta} = [\beta_0, \ldots, -\beta_{p-1}]^{T} \) are the regression parameters. +A regression model aims at finding a likelihood function \( p(\boldsymbol{y}\vert \boldsymbol{x}) \), that is the conditional distribution for \( \boldsymbol{y} \) with a given \( \boldsymbol{x} \). The estimation of \( p(\boldsymbol{y}\vert \boldsymbol{x}) \) is made using a data set with -

    -Linear regression gives us a set of analytical equations for the parameters \( \beta_j \). +

      +
    • \( n \) cases \( i = 0, 1, 2, \dots, n-1 \)
    • +
    • Response (target, dependent or outcome) variable \( y_i \) with \( i = 0, 1, 2, \dots, n-1 \)
    • +
    • \( p \) so-called explanatory (independent or predictor) variables \( \boldsymbol{x}_i=[x_{i0}, x_{i1}, \dots, x_{ip-1}] \) with \( i = 0, 1, 2, \dots, n-1 \) and explanatory variables running from \( 0 \) to \( p-1 \). See below for more explicit examples.
    • +
    -

    + The goal of the regression analysis is to extract/exploit relationship between \( \boldsymbol{y} \) and \( \boldsymbol{x} \) in or to infer causal dependencies, approximations to the likelihood functions, functional relationships and to make predictions, making fits and many other things.

    @@ -456,7 +450,7 @@ Linear regression gives us a set of analytical equations for the parameters \( \
  • 12
  • 13
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs004.html b/doc/pub/Regression/html/._Regression-bs004.html index 017825bd7..4d0b040b2 100644 --- a/doc/pub/Regression/html/._Regression-bs004.html +++ b/doc/pub/Regression/html/._Regression-bs004.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,27 +408,31 @@ MathJax.Hub.Config({ -

    Examples

    +

    Regression analysis, overarching aims II

    -In order to understand the relation among the predictors \( p \), the set of data \( n \) and the target (outcome, output etc) \( \boldsymbol{y} \), -consider the model we discussed for describing nuclear binding energies.

    -There we assumed that we could parametrize the data using a polynomial approximation based on the liquid drop model. -Assuming -$$ -BE(A) = a_0+a_1A+a_2A^{2/3}+a_3A^{-1/3}+a_4A^{-1}, -$$ - -we have five predictors, that is the intercept, the \( A \) dependent term, the \( A^{2/3} \) term and the \( A^{-1/3} \) and \( A^{-1} \) terms. -This gives \( p=0,1,2,3,4 \). Furthermore we have \( n \) entries for each predictor. It means that our design matrix is a -\( p\times n \) matrix \( \boldsymbol{X} \). +Consider an experiment in which \( p \) characteristics of \( n \) samples are +measured. The data from this experiment, for various explanatory variables \( p \) are normally represented by a matrix +\( \mathbf{X} \).

    -Here the predictors are based on a model we have made. A popular data set which is widely encountered in ML applications is the -so-called credit card default data from Taiwan. The data set contains data on \( n=30000 \) credit card holders with predictors like gender, marital status, age, profession, education, etc. In total there are \( 24 \) such predictors or attributes leading to a design matrix of dimensionality \( 24 \times 30000 \). This is however a classification problem and we will come back to it when we discuss Logistic Regression. +The matrix \( \mathbf{X} \) is called the design +matrix. Additional information of the samples is available in the +form of \( \boldsymbol{y} \) (also as above). The variable \( \boldsymbol{y} \) is +generally referred to as the response variable. The aim of +regression analysis is to explain \( \boldsymbol{y} \) in terms of +\( \boldsymbol{X} \) through a functional relationship like \( y_i = +f(\mathbf{X}_{i,\ast}) \). When no prior knowledge on the form of +\( f(\cdot) \) is available, it is common to assume a linear relationship +between \( \boldsymbol{X} \) and \( \boldsymbol{y} \). This assumption gives rise to +the linear regression model where \( \boldsymbol{\beta} = [\beta_0, \ldots, +\beta_{p-1}]^{T} \) are the regression parameters. + +

    +Linear regression gives us a set of analytical equations for the parameters \( \beta_j \).

    @@ -453,7 +459,7 @@ so-called 13
  • 14
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs005.html b/doc/pub/Regression/html/._Regression-bs005.html index 2a33cbfc2..7f02b88ac 100644 --- a/doc/pub/Regression/html/._Regression-bs005.html +++ b/doc/pub/Regression/html/._Regression-bs005.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,19 +408,27 @@ MathJax.Hub.Config({ -

    General linear models

    +

    Examples

    -Before we proceed let us study a case from linear algebra where we aim at fitting a set of data \( \boldsymbol{y}=[y_0,y_1,\dots,y_{n-1}] \). We could think of these data as a result of an experiment or a complicated numerical experiment. These data are functions of a series of variables \( \boldsymbol{x}=[x_0,x_1,\dots,x_{n-1}] \), that is \( y_i = y(x_i) \) with \( i=0,1,2,\dots,n-1 \). The variables \( x_i \) could represent physical quantities like time, temperature, position etc. We assume that \( y(x) \) is a smooth function. +In order to understand the relation among the predictors \( p \), the set of data \( n \) and the target (outcome, output etc) \( \boldsymbol{y} \), +consider the model we discussed for describing nuclear binding energies.

    -Since obtaining these data points may not be trivial, we want to use these data to fit a function which can allow us to make predictions for values of \( y \) which are not in the present set. The perhaps simplest approach is to assume we can parametrize our function in terms of a polynomial of degree \( n-1 \) with \( n \) points, that is +There we assumed that we could parametrize the data using a polynomial approximation based on the liquid drop model. +Assuming $$ -y=y(x) \rightarrow y(x_i)=\tilde{y}_i+\epsilon_i=\sum_{j=0}^{n-1} \beta_j x_i^j+\epsilon_i, +BE(A) = a_0+a_1A+a_2A^{2/3}+a_3A^{-1/3}+a_4A^{-1}, $$ -where \( \epsilon_i \) is the error in our approximation. +we have five predictors, that is the intercept, the \( A \) dependent term, the \( A^{2/3} \) term and the \( A^{-1/3} \) and \( A^{-1} \) terms. +This gives \( p=0,1,2,3,4 \). Furthermore we have \( n \) entries for each predictor. It means that our design matrix is a +\( p\times n \) matrix \( \boldsymbol{X} \). + +

    +Here the predictors are based on a model we have made. A popular data set which is widely encountered in ML applications is the +so-called credit card default data from Taiwan. The data set contains data on \( n=30000 \) credit card holders with predictors like gender, marital status, age, profession, education, etc. In total there are \( 24 \) such predictors or attributes leading to a design matrix of dimensionality \( 24 \times 30000 \). This is however a classification problem and we will come back to it when we discuss Logistic Regression.

    @@ -446,7 +456,7 @@ where \( \epsilon_i \) is the error in our approximation.
  • 14
  • 15
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs006.html b/doc/pub/Regression/html/._Regression-bs006.html index 6ce9e5da2..ffc8d16f0 100644 --- a/doc/pub/Regression/html/._Regression-bs006.html +++ b/doc/pub/Regression/html/._Regression-bs006.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,20 +408,21 @@ MathJax.Hub.Config({ -

    Rewriting the fitting procedure as a linear algebra problem

    +

    General linear models

    -For every set of values \( y_i,x_i \) we have thus the corresponding set of equations +Before we proceed let us study a case from linear algebra where we aim at fitting a set of data \( \boldsymbol{y}=[y_0,y_1,\dots,y_{n-1}] \). We could think of these data as a result of an experiment or a complicated numerical experiment. These data are functions of a series of variables \( \boldsymbol{x}=[x_0,x_1,\dots,x_{n-1}] \), that is \( y_i = y(x_i) \) with \( i=0,1,2,\dots,n-1 \). The variables \( x_i \) could represent physical quantities like time, temperature, position etc. We assume that \( y(x) \) is a smooth function. + +

    +Since obtaining these data points may not be trivial, we want to use these data to fit a function which can allow us to make predictions for values of \( y \) which are not in the present set. The perhaps simplest approach is to assume we can parametrize our function in terms of a polynomial of degree \( n-1 \) with \( n \) points, that is $$ -\begin{align*} -y_0&=\beta_0+\beta_1x_0^1+\beta_2x_0^2+\dots+\beta_{n-1}x_0^{n-1}+\epsilon_0\\ -y_1&=\beta_0+\beta_1x_1^1+\beta_2x_1^2+\dots+\beta_{n-1}x_1^{n-1}+\epsilon_1\\ -y_2&=\beta_0+\beta_1x_2^1+\beta_2x_2^2+\dots+\beta_{n-1}x_2^{n-1}+\epsilon_2\\ -\dots & \dots \\ -y_{n-1}&=\beta_0+\beta_1x_{n-1}^1+\beta_2x_{n-1}^2+\dots+\beta_{n-1}x_{n-1}^{n-1}+\epsilon_{n-1}.\\ -\end{align*} +y=y(x) \rightarrow y(x_i)=\tilde{y}_i+\epsilon_i=\sum_{j=0}^{n-1} \beta_j x_i^j+\epsilon_i, $$ + +where \( \epsilon_i \) is the error in our approximation. + +

    @@ -446,7 +449,7 @@ $$
  • 15
  • 16
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs007.html b/doc/pub/Regression/html/._Regression-bs007.html index 91825fca2..288f33325 100644 --- a/doc/pub/Regression/html/._Regression-bs007.html +++ b/doc/pub/Regression/html/._Regression-bs007.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,43 +408,20 @@ MathJax.Hub.Config({ -

    Rewriting the fitting procedure as a linear algebra problem, more details

    +

    Rewriting the fitting procedure as a linear algebra problem

    -Defining the vectors +For every set of values \( y_i,x_i \) we have thus the corresponding set of equations $$ -\boldsymbol{y} = [y_0,y_1, y_2,\dots, y_{n-1}]^T, +\begin{align*} +y_0&=\beta_0+\beta_1x_0^1+\beta_2x_0^2+\dots+\beta_{n-1}x_0^{n-1}+\epsilon_0\\ +y_1&=\beta_0+\beta_1x_1^1+\beta_2x_1^2+\dots+\beta_{n-1}x_1^{n-1}+\epsilon_1\\ +y_2&=\beta_0+\beta_1x_2^1+\beta_2x_2^2+\dots+\beta_{n-1}x_2^{n-1}+\epsilon_2\\ +\dots & \dots \\ +y_{n-1}&=\beta_0+\beta_1x_{n-1}^1+\beta_2x_{n-1}^2+\dots+\beta_{n-1}x_{n-1}^{n-1}+\epsilon_{n-1}.\\ +\end{align*} $$ - -and -$$ -\boldsymbol{\beta} = [\beta_0,\beta_1, \beta_2,\dots, \beta_{n-1}]^T, -$$ - -and -$$ -\boldsymbol{\epsilon} = [\epsilon_0,\epsilon_1, \epsilon_2,\dots, \epsilon_{n-1}]^T, -$$ - -and the design matrix -$$ -\boldsymbol{X}= -\begin{bmatrix} -1& x_{0}^1 &x_{0}^2& \dots & \dots &x_{0}^{n-1}\\ -1& x_{1}^1 &x_{1}^2& \dots & \dots &x_{1}^{n-1}\\ -1& x_{2}^1 &x_{2}^2& \dots & \dots &x_{2}^{n-1}\\ -\dots& \dots &\dots& \dots & \dots &\dots\\ -1& x_{n-1}^1 &x_{n-1}^2& \dots & \dots &x_{n-1}^{n-1}\\ -\end{bmatrix} -$$ - -we can rewrite our equations as -$$ -\boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta}+\boldsymbol{\epsilon}. -$$ - -The above design matrix is called a Vandermonde matrix.

    @@ -470,7 +449,7 @@ The above design matrix is called a 16
  • 17
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs008.html b/doc/pub/Regression/html/._Regression-bs008.html index a20e93d3f..5d0ac2f3a 100644 --- a/doc/pub/Regression/html/._Regression-bs008.html +++ b/doc/pub/Regression/html/._Regression-bs008.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,32 +408,43 @@ MathJax.Hub.Config({ -

    Generalizing the fitting procedure as a linear algebra problem

    +

    Rewriting the fitting procedure as a linear algebra problem, more details

    - -

    -We are obviously not limited to the above polynomial expansions. We -could replace the various powers of \( x \) with elements of Fourier -series or instead of \( x_i^j \) we could have \( \cos{(j x_i)} \) or \( \sin{(j -x_i)} \), or time series or other orthogonal functions. For every set -of values \( y_i,x_i \) we can then generalize the equations to - +Defining the vectors $$ -\begin{align*} -y_0&=\beta_0x_{00}+\beta_1x_{01}+\beta_2x_{02}+\dots+\beta_{n-1}x_{0n-1}+\epsilon_0\\ -y_1&=\beta_0x_{10}+\beta_1x_{11}+\beta_2x_{12}+\dots+\beta_{n-1}x_{1n-1}+\epsilon_1\\ -y_2&=\beta_0x_{20}+\beta_1x_{21}+\beta_2x_{22}+\dots+\beta_{n-1}x_{2n-1}+\epsilon_2\\ -\dots & \dots \\ -y_{i}&=\beta_0x_{i0}+\beta_1x_{i1}+\beta_2x_{i2}+\dots+\beta_{n-1}x_{in-1}+\epsilon_i\\ -\dots & \dots \\ -y_{n-1}&=\beta_0x_{n-1,0}+\beta_1x_{n-1,2}+\beta_2x_{n-1,2}+\dots+\beta_{n-1}x_{n-1,n-1}+\epsilon_{n-1}.\\ -\end{align*} +\boldsymbol{y} = [y_0,y_1, y_2,\dots, y_{n-1}]^T, $$ -

    -Note that we have \( p=n \) here. The matrix is symmetric. This is generally not the case! +and +$$ +\boldsymbol{\beta} = [\beta_0,\beta_1, \beta_2,\dots, \beta_{n-1}]^T, +$$ + +and +$$ +\boldsymbol{\epsilon} = [\epsilon_0,\epsilon_1, \epsilon_2,\dots, \epsilon_{n-1}]^T, +$$ + +and the design matrix +$$ +\boldsymbol{X}= +\begin{bmatrix} +1& x_{0}^1 &x_{0}^2& \dots & \dots &x_{0}^{n-1}\\ +1& x_{1}^1 &x_{1}^2& \dots & \dots &x_{1}^{n-1}\\ +1& x_{2}^1 &x_{2}^2& \dots & \dots &x_{2}^{n-1}\\ +\dots& \dots &\dots& \dots & \dots &\dots\\ +1& x_{n-1}^1 &x_{n-1}^2& \dots & \dots &x_{n-1}^{n-1}\\ +\end{bmatrix} +$$ + +we can rewrite our equations as +$$ +\boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta}+\boldsymbol{\epsilon}. +$$ + +The above design matrix is called a Vandermonde matrix.

    @@ -460,7 +473,7 @@ $$
  • 17
  • 18
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs009.html b/doc/pub/Regression/html/._Regression-bs009.html index c7b5ec532..47cd77d54 100644 --- a/doc/pub/Regression/html/._Regression-bs009.html +++ b/doc/pub/Regression/html/._Regression-bs009.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -410,24 +412,28 @@ MathJax.Hub.Config({

    -We redefine in turn the matrix \( \boldsymbol{X} \) as + +

    +We are obviously not limited to the above polynomial expansions. We +could replace the various powers of \( x \) with elements of Fourier +series or instead of \( x_i^j \) we could have \( \cos{(j x_i)} \) or \( \sin{(j +x_i)} \), or time series or other orthogonal functions. For every set +of values \( y_i,x_i \) we can then generalize the equations to + $$ -\boldsymbol{X}= -\begin{bmatrix} -x_{00}& x_{01} &x_{02}& \dots & \dots &x_{0,n-1}\\ -x_{10}& x_{11} &x_{12}& \dots & \dots &x_{1,n-1}\\ -x_{20}& x_{21} &x_{22}& \dots & \dots &x_{2,n-1}\\ -\dots& \dots &\dots& \dots & \dots &\dots\\ -x_{n-1,0}& x_{n-1,1} &x_{n-1,2}& \dots & \dots &x_{n-1,n-1}\\ -\end{bmatrix} +\begin{align*} +y_0&=\beta_0x_{00}+\beta_1x_{01}+\beta_2x_{02}+\dots+\beta_{n-1}x_{0n-1}+\epsilon_0\\ +y_1&=\beta_0x_{10}+\beta_1x_{11}+\beta_2x_{12}+\dots+\beta_{n-1}x_{1n-1}+\epsilon_1\\ +y_2&=\beta_0x_{20}+\beta_1x_{21}+\beta_2x_{22}+\dots+\beta_{n-1}x_{2n-1}+\epsilon_2\\ +\dots & \dots \\ +y_{i}&=\beta_0x_{i0}+\beta_1x_{i1}+\beta_2x_{i2}+\dots+\beta_{n-1}x_{in-1}+\epsilon_i\\ +\dots & \dots \\ +y_{n-1}&=\beta_0x_{n-1,0}+\beta_1x_{n-1,2}+\beta_2x_{n-1,2}+\dots+\beta_{n-1}x_{n-1,n-1}+\epsilon_{n-1}.\\ +\end{align*} $$ -and without loss of generality we rewrite again our equations as -$$ -\boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta}+\boldsymbol{\epsilon}. -$$ - -The left-hand side of this equation is kwown. Our error vector \( \boldsymbol{\epsilon} \) and the parameter vector \( \boldsymbol{\beta} \) are our unknow quantities. How can we obtain the optimal set of \( \beta_i \) values? +

    +Note that we have \( p=n \) here. The matrix is symmetric. This is generally not the case!

    @@ -457,7 +463,7 @@ The left-hand side of this equation is kwown. Our error vector \( \boldsymbol{\e
  • 18
  • 19
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs010.html b/doc/pub/Regression/html/._Regression-bs010.html index 1fd0ec31c..eeabc8141 100644 --- a/doc/pub/Regression/html/._Regression-bs010.html +++ b/doc/pub/Regression/html/._Regression-bs010.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,29 +408,28 @@ MathJax.Hub.Config({ -

    Optimizing our parameters

    +

    Generalizing the fitting procedure as a linear algebra problem

    -We have defined the matrix \( \boldsymbol{X} \) via the equations +We redefine in turn the matrix \( \boldsymbol{X} \) as $$ -\begin{align*} -y_0&=\beta_0x_{00}+\beta_1x_{01}+\beta_2x_{02}+\dots+\beta_{n-1}x_{0n-1}+\epsilon_0\\ -y_1&=\beta_0x_{10}+\beta_1x_{11}+\beta_2x_{12}+\dots+\beta_{n-1}x_{1n-1}+\epsilon_1\\ -y_2&=\beta_0x_{20}+\beta_1x_{21}+\beta_2x_{22}+\dots+\beta_{n-1}x_{2n-1}+\epsilon_1\\ -\dots & \dots \\ -y_{i}&=\beta_0x_{i0}+\beta_1x_{i1}+\beta_2x_{i2}+\dots+\beta_{n-1}x_{in-1}+\epsilon_1\\ -\dots & \dots \\ -y_{n-1}&=\beta_0x_{n-1,0}+\beta_1x_{n-1,2}+\beta_2x_{n-1,2}+\dots+\beta_{n-1}x_{n-1,n-1}+\epsilon_{n-1}.\\ -\end{align*} +\boldsymbol{X}= +\begin{bmatrix} +x_{00}& x_{01} &x_{02}& \dots & \dots &x_{0,n-1}\\ +x_{10}& x_{11} &x_{12}& \dots & \dots &x_{1,n-1}\\ +x_{20}& x_{21} &x_{22}& \dots & \dots &x_{2,n-1}\\ +\dots& \dots &\dots& \dots & \dots &\dots\\ +x_{n-1,0}& x_{n-1,1} &x_{n-1,2}& \dots & \dots &x_{n-1,n-1}\\ +\end{bmatrix} $$ -

    -As we noted above, we stayed with a system with the design matrix - \( \boldsymbol{X}\in {\mathbb{R}}^{n\times n} \), that is we have \( p=n \). For reasons to come later (algorithmic arguments) we will hereafter define -our matrix as \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \), with the predictors refering to the column numbers and the entries \( n \) being the row elements. +and without loss of generality we rewrite again our equations as +$$ +\boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta}+\boldsymbol{\epsilon}. +$$ -

    +The left-hand side of this equation is kwown. Our error vector \( \boldsymbol{\epsilon} \) and the parameter vector \( \boldsymbol{\beta} \) are our unknow quantities. How can we obtain the optimal set of \( \beta_i \) values?

    @@ -459,7 +460,7 @@ our matrix as \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \), with the predict
  • 19
  • 20
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs011.html b/doc/pub/Regression/html/._Regression-bs011.html index d603884e0..a94c5faf6 100644 --- a/doc/pub/Regression/html/._Regression-bs011.html +++ b/doc/pub/Regression/html/._Regression-bs011.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,93 +408,32 @@ MathJax.Hub.Config({ -

    Our model for the nuclear binding energies

    - -

    -In our introductory notes we looked at the so-called liquid drop model. Let us remind ourselves about what we did by looking at the code. - -

    -We restate the parts of the code we are most interested in. -

    - - -

    # Common imports
    -import numpy as np
    -import pandas as pd
    -import matplotlib.pyplot as plt
    -from IPython.display import display
    -import os
    -
    -# Where to save the figures and data files
    -PROJECT_ROOT_DIR = "Results"
    -FIGURE_ID = "Results/FigureFiles"
    -DATA_ID = "DataFiles/"
    -
    -if not os.path.exists(PROJECT_ROOT_DIR):
    -    os.mkdir(PROJECT_ROOT_DIR)
    -
    -if not os.path.exists(FIGURE_ID):
    -    os.makedirs(FIGURE_ID)
    -
    -if not os.path.exists(DATA_ID):
    -    os.makedirs(DATA_ID)
    -
    -def image_path(fig_id):
    -    return os.path.join(FIGURE_ID, fig_id)
    -
    -def data_path(dat_id):
    -    return os.path.join(DATA_ID, dat_id)
    -
    -def save_fig(fig_id):
    -    plt.savefig(image_path(fig_id) + ".png", format='png')
    -
    -infile = open(data_path("MassEval2016.dat"),'r')
    -
    -
    -# Read the experimental data with Pandas
    -Masses = pd.read_fwf(infile, usecols=(2,3,4,6,11),
    -              names=('N', 'Z', 'A', 'Element', 'Ebinding'),
    -              widths=(1,3,5,5,5,1,3,4,1,13,11,11,9,1,2,11,9,1,3,1,12,11,1),
    -              header=39,
    -              index_col=False)
    -
    -# Extrapolated values are indicated by '#' in place of the decimal place, so
    -# the Ebinding column won't be numeric. Coerce to float and drop these entries.
    -Masses['Ebinding'] = pd.to_numeric(Masses['Ebinding'], errors='coerce')
    -Masses = Masses.dropna()
    -# Convert from keV to MeV.
    -Masses['Ebinding'] /= 1000
    -
    -# Group the DataFrame by nucleon number, A.
    -Masses = Masses.groupby('A')
    -# Find the rows of the grouped DataFrame with the maximum binding energy.
    -Masses = Masses.apply(lambda t: t[t.Ebinding==t.Ebinding.max()])
    -A = Masses['A']
    -Z = Masses['Z']
    -N = Masses['N']
    -Element = Masses['Element']
    -Energies = Masses['Ebinding']
    -
    -# Now we set up the design matrix X
    -X = np.zeros((len(A),5))
    -X[:,0] = 1
    -X[:,1] = A
    -X[:,2] = A**(2.0/3.0)
    -X[:,3] = A**(-1.0/3.0)
    -X[:,4] = A**(-1.0)
    -# Then nice printout using pandas
    -DesignMatrix = pd.DataFrame(X)
    -DesignMatrix.index = A
    -DesignMatrix.columns = ['1', 'A', 'A^(2/3)', 'A^(-1/3)', '1/A']
    -display(DesignMatrix)
    -
    -

    -With \( \boldsymbol{\beta}\in {\mathbb{R}}^{p\times 1} \), it means that we will hereafter write our equations for the approximation as +

    Optimizing our parameters

    +
    +
    +

    +We have defined the matrix \( \boldsymbol{X} \) via the equations $$ -\boldsymbol{\tilde{y}}= \boldsymbol{X}\boldsymbol{\beta}, +\begin{align*} +y_0&=\beta_0x_{00}+\beta_1x_{01}+\beta_2x_{02}+\dots+\beta_{n-1}x_{0n-1}+\epsilon_0\\ +y_1&=\beta_0x_{10}+\beta_1x_{11}+\beta_2x_{12}+\dots+\beta_{n-1}x_{1n-1}+\epsilon_1\\ +y_2&=\beta_0x_{20}+\beta_1x_{21}+\beta_2x_{22}+\dots+\beta_{n-1}x_{2n-1}+\epsilon_1\\ +\dots & \dots \\ +y_{i}&=\beta_0x_{i0}+\beta_1x_{i1}+\beta_2x_{i2}+\dots+\beta_{n-1}x_{in-1}+\epsilon_1\\ +\dots & \dots \\ +y_{n-1}&=\beta_0x_{n-1,0}+\beta_1x_{n-1,2}+\beta_2x_{n-1,2}+\dots+\beta_{n-1}x_{n-1,n-1}+\epsilon_{n-1}.\\ +\end{align*} $$ -throughout these lectures. +

    +As we noted above, we stayed with a system with the design matrix + \( \boldsymbol{X}\in {\mathbb{R}}^{n\times n} \), that is we have \( p=n \). For reasons to come later (algorithmic arguments) we will hereafter define +our matrix as \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \), with the predictors refering to the column numbers and the entries \( n \) being the row elements. + +

    +

    +
    +

    @@ -520,7 +461,7 @@ throughout these lectures.

  • 20
  • 21
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs012.html b/doc/pub/Regression/html/._Regression-bs012.html index deedadf21..eaeb4517a 100644 --- a/doc/pub/Regression/html/._Regression-bs012.html +++ b/doc/pub/Regression/html/._Regression-bs012.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,39 +408,93 @@ MathJax.Hub.Config({ -

    Optimizing our parameters, more details

    -
    -
    -

    -With the above we use the design matrix to define the approximation \( \boldsymbol{\tilde{y}} \) via the unknown quantity \( \boldsymbol{\beta} \) as +

    Our model for the nuclear binding energies

    + +

    +In our introductory notes we looked at the so-called liquid drop model. Let us remind ourselves about what we did by looking at the code. + +

    +We restate the parts of the code we are most interested in. +

    + + +

    # Common imports
    +import numpy as np
    +import pandas as pd
    +import matplotlib.pyplot as plt
    +from IPython.display import display
    +import os
    +
    +# Where to save the figures and data files
    +PROJECT_ROOT_DIR = "Results"
    +FIGURE_ID = "Results/FigureFiles"
    +DATA_ID = "DataFiles/"
    +
    +if not os.path.exists(PROJECT_ROOT_DIR):
    +    os.mkdir(PROJECT_ROOT_DIR)
    +
    +if not os.path.exists(FIGURE_ID):
    +    os.makedirs(FIGURE_ID)
    +
    +if not os.path.exists(DATA_ID):
    +    os.makedirs(DATA_ID)
    +
    +def image_path(fig_id):
    +    return os.path.join(FIGURE_ID, fig_id)
    +
    +def data_path(dat_id):
    +    return os.path.join(DATA_ID, dat_id)
    +
    +def save_fig(fig_id):
    +    plt.savefig(image_path(fig_id) + ".png", format='png')
    +
    +infile = open(data_path("MassEval2016.dat"),'r')
    +
    +
    +# Read the experimental data with Pandas
    +Masses = pd.read_fwf(infile, usecols=(2,3,4,6,11),
    +              names=('N', 'Z', 'A', 'Element', 'Ebinding'),
    +              widths=(1,3,5,5,5,1,3,4,1,13,11,11,9,1,2,11,9,1,3,1,12,11,1),
    +              header=39,
    +              index_col=False)
    +
    +# Extrapolated values are indicated by '#' in place of the decimal place, so
    +# the Ebinding column won't be numeric. Coerce to float and drop these entries.
    +Masses['Ebinding'] = pd.to_numeric(Masses['Ebinding'], errors='coerce')
    +Masses = Masses.dropna()
    +# Convert from keV to MeV.
    +Masses['Ebinding'] /= 1000
    +
    +# Group the DataFrame by nucleon number, A.
    +Masses = Masses.groupby('A')
    +# Find the rows of the grouped DataFrame with the maximum binding energy.
    +Masses = Masses.apply(lambda t: t[t.Ebinding==t.Ebinding.max()])
    +A = Masses['A']
    +Z = Masses['Z']
    +N = Masses['N']
    +Element = Masses['Element']
    +Energies = Masses['Ebinding']
    +
    +# Now we set up the design matrix X
    +X = np.zeros((len(A),5))
    +X[:,0] = 1
    +X[:,1] = A
    +X[:,2] = A**(2.0/3.0)
    +X[:,3] = A**(-1.0/3.0)
    +X[:,4] = A**(-1.0)
    +# Then nice printout using pandas
    +DesignMatrix = pd.DataFrame(X)
    +DesignMatrix.index = A
    +DesignMatrix.columns = ['1', 'A', 'A^(2/3)', 'A^(-1/3)', '1/A']
    +display(DesignMatrix)
    +
    +

    +With \( \boldsymbol{\beta}\in {\mathbb{R}}^{p\times 1} \), it means that we will hereafter write our equations for the approximation as $$ \boldsymbol{\tilde{y}}= \boldsymbol{X}\boldsymbol{\beta}, $$ -and in order to find the optimal parameters \( \beta_i \) instead of solving the above linear algebra problem, we define a function which gives a measure of the spread between the values \( y_i \) (which represent hopefully the exact values) and the parameterized values \( \tilde{y}_i \), namely -$$ -C(\boldsymbol{\beta})=\frac{1}{n}\sum_{i=0}^{n-1}\left(y_i-\tilde{y}_i\right)^2=\frac{1}{n}\left\{\left(\boldsymbol{y}-\boldsymbol{\tilde{y}}\right)^T\left(\boldsymbol{y}-\boldsymbol{\tilde{y}}\right)\right\}, -$$ - -or using the matrix \( \boldsymbol{X} \) and in a more compact matrix-vector notation as -$$ -C(\boldsymbol{\beta})=\frac{1}{n}\left\{\left(\boldsymbol{y}-\boldsymbol{X}^T\boldsymbol{\beta}\right)^T\left(\boldsymbol{y}-\boldsymbol{X}^T\boldsymbol{\beta}\right)\right\}. -$$ - -This function is one possible way to define the so-called cost function. - -

    -It is also common to define -the function \( Q \) as - -$$ -C(\boldsymbol{\beta})=\frac{1}{2n}\sum_{i=0}^{n-1}\left(y_i-\tilde{y}_i\right)^2, -$$ - -since when taking the first derivative with respect to the unknown parameters \( \beta \), the factor of \( 2 \) cancels out. -

    -
    - +throughout these lectures.

    @@ -466,7 +522,7 @@ since when taking the first derivative with respect to the unknown parameters \(

  • 21
  • 22
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs013.html b/doc/pub/Regression/html/._Regression-bs013.html index 81f994907..525b89b10 100644 --- a/doc/pub/Regression/html/._Regression-bs013.html +++ b/doc/pub/Regression/html/._Regression-bs013.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,56 +408,36 @@ MathJax.Hub.Config({ -

    Interpretations and optimizing our parameters

    +

    Optimizing our parameters, more details

    +With the above we use the design matrix to define the approximation \( \boldsymbol{\tilde{y}} \) via the unknown quantity \( \boldsymbol{\beta} \) as +$$ +\boldsymbol{\tilde{y}}= \boldsymbol{X}\boldsymbol{\beta}, +$$ + +and in order to find the optimal parameters \( \beta_i \) instead of solving the above linear algebra problem, we define a function which gives a measure of the spread between the values \( y_i \) (which represent hopefully the exact values) and the parameterized values \( \tilde{y}_i \), namely +$$ +C(\boldsymbol{\beta})=\frac{1}{n}\sum_{i=0}^{n-1}\left(y_i-\tilde{y}_i\right)^2=\frac{1}{n}\left\{\left(\boldsymbol{y}-\boldsymbol{\tilde{y}}\right)^T\left(\boldsymbol{y}-\boldsymbol{\tilde{y}}\right)\right\}, +$$ + +or using the matrix \( \boldsymbol{X} \) and in a more compact matrix-vector notation as +$$ +C(\boldsymbol{\beta})=\frac{1}{n}\left\{\left(\boldsymbol{y}-\boldsymbol{X}^T\boldsymbol{\beta}\right)^T\left(\boldsymbol{y}-\boldsymbol{X}^T\boldsymbol{\beta}\right)\right\}. +$$ + +This function is one possible way to define the so-called cost function.

    -The function +It is also common to define +the function \( Q \) as + $$ -C(\boldsymbol{\beta})=\frac{1}{n}\left\{\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)^T\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)\right\}, +C(\boldsymbol{\beta})=\frac{1}{2n}\sum_{i=0}^{n-1}\left(y_i-\tilde{y}_i\right)^2, $$ -can be linked to the variance of the quantity \( y_i \) if we interpret the latter as the mean value. -When linking (see the discussion below) with the maximum likelihood approach below, we will indeed interpret \( y_i \) as a mean value -$$ -y_{i}=\langle y_i \rangle = \beta_0x_{i,0}+\beta_1x_{i,1}+\beta_2x_{i,2}+\dots+\beta_{n-1}x_{i,n-1}+\epsilon_i, -$$ - -

    -where \( \langle y_i \rangle \) is the mean value. Keep in mind also that -till now we have treated \( y_i \) as the exact value. Normally, the -response (dependent or outcome) variable \( y_i \) the outcome of a -numerical experiment or another type of experiment and is thus only an -approximation to the true value. It is then always accompanied by an -error estimate, often limited to a statistical error estimate given by -the standard deviation discussed earlier. In the discussion here we -will treat \( y_i \) as our exact value for the response variable. - -

    -In order to find the parameters \( \beta_i \) we will then minimize the spread of \( C(\boldsymbol{\beta}) \), that is we are going to solve the problem -$$ -{\displaystyle \min_{\boldsymbol{\beta}\in -{\mathbb{R}}^{p}}}\frac{1}{n}\left\{\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)^T\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)\right\}. -$$ - -In practical terms it means we will require -$$ -\frac{\partial C(\boldsymbol{\beta})}{\partial \beta_j} = \frac{\partial }{\partial \beta_j}\left[ \frac{1}{n}\sum_{i=0}^{n-1}\left(y_i-\beta_0x_{i,0}-\beta_1x_{i,1}-\beta_2x_{i,2}-\dots-\beta_{n-1}x_{i,n-1}\right)^2\right]=0, -$$ - -which results in -$$ -\frac{\partial C(\boldsymbol{\beta})}{\partial \beta_j} = -\frac{2}{n}\left[ \sum_{i=0}^{n-1}x_{ij}\left(y_i-\beta_0x_{i,0}-\beta_1x_{i,1}-\beta_2x_{i,2}-\dots-\beta_{n-1}x_{i,n-1}\right)\right]=0, -$$ - -or in a matrix-vector form as -$$ -\frac{\partial C(\boldsymbol{\beta})}{\partial \boldsymbol{\beta}} = 0 = \boldsymbol{X}^T\left( \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right). -$$ - -

    +since when taking the first derivative with respect to the unknown parameters \( \beta \), the factor of \( 2 \) cancels out.

    @@ -486,7 +468,7 @@ $$
  • 22
  • 23
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs014.html b/doc/pub/Regression/html/._Regression-bs014.html index 598f6a94a..32eeb1d0d 100644 --- a/doc/pub/Regression/html/._Regression-bs014.html +++ b/doc/pub/Regression/html/._Regression-bs014.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -410,41 +412,52 @@ MathJax.Hub.Config({

    -We can rewrite + +

    +The function $$ -\frac{\partial C(\boldsymbol{\beta})}{\partial \boldsymbol{\beta}} = 0 = \boldsymbol{X}^T\left( \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right), +C(\boldsymbol{\beta})=\frac{1}{n}\left\{\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)^T\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)\right\}, $$ -as +can be linked to the variance of the quantity \( y_i \) if we interpret the latter as the mean value. +When linking (see the discussion below) with the maximum likelihood approach below, we will indeed interpret \( y_i \) as a mean value $$ -\boldsymbol{X}^T\boldsymbol{y} = \boldsymbol{X}^T\boldsymbol{X}\boldsymbol{\beta}, -$$ - -and if the matrix \( \boldsymbol{X}^T\boldsymbol{X} \) is invertible we have the solution -$$ -\boldsymbol{\beta} =\left(\boldsymbol{X}^T\boldsymbol{X}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}. +y_{i}=\langle y_i \rangle = \beta_0x_{i,0}+\beta_1x_{i,1}+\beta_2x_{i,2}+\dots+\beta_{n-1}x_{i,n-1}+\epsilon_i, $$

    -We note also that since our design matrix is defined as \( \boldsymbol{X}\in -{\mathbb{R}}^{n\times p} \), the product \( \boldsymbol{X}^T\boldsymbol{X} \in -{\mathbb{R}}^{p\times p} \). In the above case we have that \( p \ll n \), -in our case \( p=5 \) meaning that we end up with inverting a small -\( 5\times 5 \) matrix. This is a rather common situation, in many cases we end up with low-dimensional -matrices to invert. The methods discussed here and for many other -supervised learning algorithms like classification with logistic -regression or support vector machines, exhibit dimensionalities which -allow for the usage of direct linear algebra methods such as LU decomposition or Singular Value Decomposition (SVD) for finding the inverse of the matrix -\( \boldsymbol{X}^T\boldsymbol{X} \). -

    -
    - +where \( \langle y_i \rangle \) is the mean value. Keep in mind also that +till now we have treated \( y_i \) as the exact value. Normally, the +response (dependent or outcome) variable \( y_i \) the outcome of a +numerical experiment or another type of experiment and is thus only an +approximation to the true value. It is then always accompanied by an +error estimate, often limited to a statistical error estimate given by +the standard deviation discussed earlier. In the discussion here we +will treat \( y_i \) as our exact value for the response variable. + +

    +In order to find the parameters \( \beta_i \) we will then minimize the spread of \( C(\boldsymbol{\beta}) \), that is we are going to solve the problem +$$ +{\displaystyle \min_{\boldsymbol{\beta}\in +{\mathbb{R}}^{p}}}\frac{1}{n}\left\{\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)^T\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)\right\}. +$$ + +In practical terms it means we will require +$$ +\frac{\partial C(\boldsymbol{\beta})}{\partial \beta_j} = \frac{\partial }{\partial \beta_j}\left[ \frac{1}{n}\sum_{i=0}^{n-1}\left(y_i-\beta_0x_{i,0}-\beta_1x_{i,1}-\beta_2x_{i,2}-\dots-\beta_{n-1}x_{i,n-1}\right)^2\right]=0, +$$ + +which results in +$$ +\frac{\partial C(\boldsymbol{\beta})}{\partial \beta_j} = -\frac{2}{n}\left[ \sum_{i=0}^{n-1}x_{ij}\left(y_i-\beta_0x_{i,0}-\beta_1x_{i,1}-\beta_2x_{i,2}-\dots-\beta_{n-1}x_{i,n-1}\right)\right]=0, +$$ + +or in a matrix-vector form as +$$ +\frac{\partial C(\boldsymbol{\beta})}{\partial \boldsymbol{\beta}} = 0 = \boldsymbol{X}^T\left( \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right). +$$

    -

    -
    -

    -Small question: Do you think the example we have at hand here (the nuclear binding energies) can lead to problems in inverting the matrix \( \boldsymbol{X}^T\boldsymbol{X} \)? What kind of problems can we expect?

    @@ -475,7 +488,7 @@ allow for the usage of direct linear algebra methods such as LU decomposi
  • 23
  • 24
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs015.html b/doc/pub/Regression/html/._Regression-bs015.html index 755de8d3c..71aeaa780 100644 --- a/doc/pub/Regression/html/._Regression-bs015.html +++ b/doc/pub/Regression/html/._Regression-bs015.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,28 +408,50 @@ MathJax.Hub.Config({ -

    Some useful matrix and vector expressions

    +

    Interpretations and optimizing our parameters

    +
    +
    +

    +We can rewrite +$$ +\frac{\partial C(\boldsymbol{\beta})}{\partial \boldsymbol{\beta}} = 0 = \boldsymbol{X}^T\left( \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right), +$$ + +as +$$ +\boldsymbol{X}^T\boldsymbol{y} = \boldsymbol{X}^T\boldsymbol{X}\boldsymbol{\beta}, +$$ + +and if the matrix \( \boldsymbol{X}^T\boldsymbol{X} \) is invertible we have the solution +$$ +\boldsymbol{\beta} =\left(\boldsymbol{X}^T\boldsymbol{X}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}. +$$

    -The following matrix and vector relation will be useful here and for the rest of the course. Vectors are always written as boldfaced lower case letters and -matrices as upper case boldfaced letters. +We note also that since our design matrix is defined as \( \boldsymbol{X}\in +{\mathbb{R}}^{n\times p} \), the product \( \boldsymbol{X}^T\boldsymbol{X} \in +{\mathbb{R}}^{p\times p} \). In the above case we have that \( p \ll n \), +in our case \( p=5 \) meaning that we end up with inverting a small +\( 5\times 5 \) matrix. This is a rather common situation, in many cases we end up with low-dimensional +matrices to invert. The methods discussed here and for many other +supervised learning algorithms like classification with logistic +regression or support vector machines, exhibit dimensionalities which +allow for the usage of direct linear algebra methods such as LU decomposition or Singular Value Decomposition (SVD) for finding the inverse of the matrix +\( \boldsymbol{X}^T\boldsymbol{X} \). +

    +
    -$$ -\frac{\partial (\boldsymbol{b}^T\boldsymbol{a})}{\partial \boldsymbol{a}} = \boldsymbol{b}, -$$ -$$ -\frac{\partial (\boldsymbol{a}^T\boldsymbol{A}\boldsymbol{a})}{\partial \boldsymbol{a}} = (\boldsymbol{A}+\boldsymbol{A}^T)\boldsymbol{a}, -$$ +

    +

    +
    +

    +Small question: Do you think the example we have at hand here (the nuclear binding energies) can lead to problems in inverting the matrix \( \boldsymbol{X}^T\boldsymbol{X} \)? What kind of problems can we expect? +

    +
    -$$ -\frac{\partial tr(\boldsymbol{B}\boldsymbol{A})}{\partial \boldsymbol{A}} = \boldsymbol{B}^T, -$$ - -$$ -\frac{\partial \log{\vert\boldsymbol{A}\vert}}{\partial \boldsymbol{A}} = (\boldsymbol{A}^{-1})^T. -$$ +

    diff --git a/doc/pub/Regression/html/._Regression-bs016.html b/doc/pub/Regression/html/._Regression-bs016.html index 086e28144..d6a5afdbd 100644 --- a/doc/pub/Regression/html/._Regression-bs016.html +++ b/doc/pub/Regression/html/._Regression-bs016.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,36 +408,28 @@ MathJax.Hub.Config({ -

    Interpretations and optimizing our parameters

    -
    -
    -

    -The residuals \( \boldsymbol{\epsilon} \) are in turn given by -$$ -\boldsymbol{\epsilon} = \boldsymbol{y}-\boldsymbol{\tilde{y}} = \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}, -$$ - -and with -$$ -\boldsymbol{X}^T\left( \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)= 0, -$$ - -we have -$$ -\boldsymbol{X}^T\boldsymbol{\epsilon}=\boldsymbol{X}^T\left( \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)= 0, -$$ - -meaning that the solution for \( \boldsymbol{\beta} \) is the one which minimizes the residuals. Later we will link this with the maximum likelihood approach. +

    Some useful matrix and vector expressions

    -

    -
    +The following matrix and vector relation will be useful here and for the rest of the course. Vectors are always written as boldfaced lower case letters and +matrices as upper case boldfaced letters. +$$ +\frac{\partial (\boldsymbol{b}^T\boldsymbol{a})}{\partial \boldsymbol{a}} = \boldsymbol{b}, +$$ -

    -Let us now return to our nuclear binding energies and simply code the above equations. +$$ +\frac{\partial (\boldsymbol{a}^T\boldsymbol{A}\boldsymbol{a})}{\partial \boldsymbol{a}} = (\boldsymbol{A}+\boldsymbol{A}^T)\boldsymbol{a}, +$$ + +$$ +\frac{\partial tr(\boldsymbol{B}\boldsymbol{A})}{\partial \boldsymbol{A}} = \boldsymbol{B}^T, +$$ + +$$ +\frac{\partial \log{\vert\boldsymbol{A}\vert}}{\partial \boldsymbol{A}} = (\boldsymbol{A}^{-1})^T. +$$ -

      @@ -461,7 +455,7 @@ Let us now return to our nuclear binding energies and simply code the above equa
    • 25
    • 26
    • ...
    • -
    • 111
    • +
    • 112
    • »
    diff --git a/doc/pub/Regression/html/._Regression-bs017.html b/doc/pub/Regression/html/._Regression-bs017.html index 831acc659..21e4f603f 100644 --- a/doc/pub/Regression/html/._Regression-bs017.html +++ b/doc/pub/Regression/html/._Regression-bs017.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,45 +408,35 @@ MathJax.Hub.Config({ -

    Own code for Ordinary Least Squares

    +

    Interpretations and optimizing our parameters

    +
    +
    +

    +The residuals \( \boldsymbol{\epsilon} \) are in turn given by +$$ +\boldsymbol{\epsilon} = \boldsymbol{y}-\boldsymbol{\tilde{y}} = \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}, +$$ + +and with +$$ +\boldsymbol{X}^T\left( \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)= 0, +$$ + +we have +$$ +\boldsymbol{X}^T\boldsymbol{\epsilon}=\boldsymbol{X}^T\left( \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)= 0, +$$ + +meaning that the solution for \( \boldsymbol{\beta} \) is the one which minimizes the residuals. Later we will link this with the maximum likelihood approach.

    -It is rather straightforward to implement the matrix inversion and obtain the parameters \( \boldsymbol{\beta} \). After having defined the matrix \( \boldsymbol{X} \) we simply need to -write -

    +

    +
    - -
    # matrix inversion to find beta
    -beta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Energies)
    -# and then make the prediction
    -ytilde = X @ beta
    -
    -

    -Alternatively, you can use the least squares functionality in Numpy as -

    - -

    fit = np.linalg.lstsq(X, Energies, rcond =None)[0]
    -ytildenp = np.dot(fit,X.T)
    -
    -

    -And finally we plot our fit with and compare with data

    +Let us now return to our nuclear binding energies and simply code the above equations. - -

    Masses['Eapprox']  = ytilde
    -# Generate a plot comparing the experimental with the fitted values values.
    -fig, ax = plt.subplots()
    -ax.set_xlabel(r'$A = N + Z$')
    -ax.set_ylabel(r'$E_\mathrm{bind}\,/\mathrm{MeV}$')
    -ax.plot(Masses['A'], Masses['Ebinding'], alpha=0.7, lw=2,
    -            label='Ame2016')
    -ax.plot(Masses['A'], Masses['Eapprox'], alpha=0.7, lw=2, c='m',
    -            label='Fit')
    -ax.legend()
    -save_fig("Masses2016OLS")
    -plt.show()
    -

    @@ -471,7 +463,7 @@ plt.show()

  • 26
  • 27
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs018.html b/doc/pub/Regression/html/._Regression-bs018.html index 0f9e135d9..1fdedf2c2 100644 --- a/doc/pub/Regression/html/._Regression-bs018.html +++ b/doc/pub/Regression/html/._Regression-bs018.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,52 +408,45 @@ MathJax.Hub.Config({ -

    Adding error analysis and training set up

    +

    Own code for Ordinary Least Squares

    -We can easily test our fit by computing the \( R2 \) score that we discussed in connection with the functionality of _Scikit_Learn_ in the introductory slides. -Since we are not using _Scikit-Learn here we can define our own \( R2 \) function as +It is rather straightforward to implement the matrix inversion and obtain the parameters \( \boldsymbol{\beta} \). After having defined the matrix \( \boldsymbol{X} \) we simply need to +write

    -

    def R2(y_data, y_model):
    -    return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2)
    +
    # matrix inversion to find beta
    +beta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Energies)
    +# and then make the prediction
    +ytilde = X @ beta
     

    -and we would be using it as +Alternatively, you can use the least squares functionality in Numpy as

    -

    print(R2(Energies,ytilde))
    +
    fit = np.linalg.lstsq(X, Energies, rcond =None)[0]
    +ytildenp = np.dot(fit,X.T)
     

    -We can easily add our MSE score as +And finally we plot our fit with and compare with data

    -

    def MSE(y_data,y_model):
    -    n = np.size(y_model)
    -    return np.sum((y_data-y_model)**2)/n
    -
    -print(MSE(Energies,ytilde))
    +
    Masses['Eapprox']  = ytilde
    +# Generate a plot comparing the experimental with the fitted values values.
    +fig, ax = plt.subplots()
    +ax.set_xlabel(r'$A = N + Z$')
    +ax.set_ylabel(r'$E_\mathrm{bind}\,/\mathrm{MeV}$')
    +ax.plot(Masses['A'], Masses['Ebinding'], alpha=0.7, lw=2,
    +            label='Ame2016')
    +ax.plot(Masses['A'], Masses['Eapprox'], alpha=0.7, lw=2, c='m',
    +            label='Fit')
    +ax.legend()
    +save_fig("Masses2016OLS")
    +plt.show()
     
    -

    -and finally the relative error as -

    - - -

    def RelativeError(y_data,y_model):
    -    return abs((y_data-y_model)/y_data)
    -print(RelativeError(Energies, ytilde))
    -
    -

    -We could also add the so-called Huber norm, which we defined as -$$ -H_{\delta}(a)={\begin{cases}{\frac {1}{2}}{a^{2}}&{\text{for }}|a|\leq \delta ,\\\delta (|a|-{\frac {1}{2}}\delta ),&{\text{otherwise.}}\end{cases}}}, -$$ - -with \( a=\boldsymbol{y} - \boldsymbol{\tilde{y}} \). -

    @@ -478,7 +473,7 @@ with \( a=\boldsymbol{y} - \boldsymbol{\tilde{y}} \).

  • 27
  • 28
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs019.html b/doc/pub/Regression/html/._Regression-bs019.html index a2cd2a498..e249f0901 100644 --- a/doc/pub/Regression/html/._Regression-bs019.html +++ b/doc/pub/Regression/html/._Regression-bs019.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,35 +408,51 @@ MathJax.Hub.Config({ -

    The \( \chi^2 \) function

    -
    -
    -

    +

    Adding error analysis and training set up

    -Normally, the response (dependent or outcome) variable \( y_i \) is the -outcome of a numerical experiment or another type of experiment and is -thus only an approximation to the true value. It is then always -accompanied by an error estimate, often limited to a statistical error -estimate given by the standard deviation discussed earlier. In the -discussion here we will treat \( y_i \) as our exact value for the -response variable. - +We can easily test our fit by computing the \( R2 \) score that we discussed in connection with the functionality of _Scikit_Learn_ in the introductory slides. +Since we are not using _Scikit-Learn here we can define our own \( R2 \) function as

    -Introducing the standard deviation \( \sigma_i \) for each measurement -\( y_i \), we define now the \( \chi^2 \) function (omitting the \( 1/n \) term) -as + +

    def R2(y_data, y_model):
    +    return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2)
    +
    +

    +and we would be using it as +

    + + +

    print(R2(Energies,ytilde))
    +
    +

    +We can easily add our MSE score as +

    + + +

    def MSE(y_data,y_model):
    +    n = np.size(y_model)
    +    return np.sum((y_data-y_model)**2)/n
    +
    +print(MSE(Energies,ytilde))
    +
    +

    +and finally the relative error as +

    + + +

    def RelativeError(y_data,y_model):
    +    return abs((y_data-y_model)/y_data)
    +print(RelativeError(Energies, ytilde))
    +
    +

    +We could also add the so-called Huber norm, which we defined as $$ -\chi^2(\boldsymbol{\beta})=\frac{1}{n}\sum_{i=0}^{n-1}\frac{\left(y_i-\tilde{y}_i\right)^2}{\sigma_i^2}=\frac{1}{n}\left\{\left(\boldsymbol{y}-\boldsymbol{\tilde{y}}\right)^T\frac{1}{\boldsymbol{\Sigma^2}}\left(\boldsymbol{y}-\boldsymbol{\tilde{y}}\right)\right\}, +H_{\delta}(a)={\begin{cases}{\frac {1}{2}}{a^{2}}&{\text{for }}|a|\leq \delta ,\\\delta (|a|-{\frac {1}{2}}\delta ),&{\text{otherwise.}}\end{cases}}}, $$ -where the matrix \( \boldsymbol{\Sigma} \) is a diagonal matrix with \( \sigma_i \) as matrix elements. - -

    -

    -
    - +with \( a=\boldsymbol{y} - \boldsymbol{\tilde{y}} \).

    @@ -462,7 +480,7 @@ where the matrix \( \boldsymbol{\Sigma} \) is a diagonal matrix with \( \sigma_i

  • 28
  • 29
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs020.html b/doc/pub/Regression/html/._Regression-bs020.html index 74eaadc1f..2d6b7a159 100644 --- a/doc/pub/Regression/html/._Regression-bs020.html +++ b/doc/pub/Regression/html/._Regression-bs020.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -412,22 +414,26 @@ MathJax.Hub.Config({

    -In order to find the parameters \( \beta_i \) we will then minimize the spread of \( \chi^2(\boldsymbol{\beta}) \) by requiring +Normally, the response (dependent or outcome) variable \( y_i \) is the +outcome of a numerical experiment or another type of experiment and is +thus only an approximation to the true value. It is then always +accompanied by an error estimate, often limited to a statistical error +estimate given by the standard deviation discussed earlier. In the +discussion here we will treat \( y_i \) as our exact value for the +response variable. + +

    +Introducing the standard deviation \( \sigma_i \) for each measurement +\( y_i \), we define now the \( \chi^2 \) function (omitting the \( 1/n \) term) +as + $$ -\frac{\partial \chi^2(\boldsymbol{\beta})}{\partial \beta_j} = \frac{\partial }{\partial \beta_j}\left[ \frac{1}{n}\sum_{i=0}^{n-1}\left(\frac{y_i-\beta_0x_{i,0}-\beta_1x_{i,1}-\beta_2x_{i,2}-\dots-\beta_{n-1}x_{i,n-1}}{\sigma_i}\right)^2\right]=0, +\chi^2(\boldsymbol{\beta})=\frac{1}{n}\sum_{i=0}^{n-1}\frac{\left(y_i-\tilde{y}_i\right)^2}{\sigma_i^2}=\frac{1}{n}\left\{\left(\boldsymbol{y}-\boldsymbol{\tilde{y}}\right)^T\frac{1}{\boldsymbol{\Sigma^2}}\left(\boldsymbol{y}-\boldsymbol{\tilde{y}}\right)\right\}, $$ -which results in -$$ -\frac{\partial \chi^2(\boldsymbol{\beta})}{\partial \beta_j} = -\frac{2}{n}\left[ \sum_{i=0}^{n-1}\frac{x_{ij}}{\sigma_i}\left(\frac{y_i-\beta_0x_{i,0}-\beta_1x_{i,1}-\beta_2x_{i,2}-\dots-\beta_{n-1}x_{i,n-1}}{\sigma_i}\right)\right]=0, -$$ +where the matrix \( \boldsymbol{\Sigma} \) is a diagonal matrix with \( \sigma_i \) as matrix elements. -or in a matrix-vector form as -$$ -\frac{\partial \chi^2(\boldsymbol{\beta})}{\partial \boldsymbol{\beta}} = 0 = \boldsymbol{A}^T\left( \boldsymbol{b}-\boldsymbol{A}\boldsymbol{\beta}\right). -$$ - -where we have defined the matrix \( \boldsymbol{A} =\boldsymbol{X}/\boldsymbol{\Sigma} \) with matrix elements \( a_{ij} = x_{ij}/\sigma_i \) and the vector \( \boldsymbol{b} \) with elements \( b_i = y_i/\sigma_i \). +

    @@ -458,7 +464,7 @@ where we have defined the matrix \( \boldsymbol{A} =\boldsymbol{X}/\boldsymbol{\
  • 29
  • 30
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs021.html b/doc/pub/Regression/html/._Regression-bs021.html index df6bb265b..79c54b535 100644 --- a/doc/pub/Regression/html/._Regression-bs021.html +++ b/doc/pub/Regression/html/._Regression-bs021.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -412,20 +414,22 @@ MathJax.Hub.Config({

    -We can rewrite +In order to find the parameters \( \beta_i \) we will then minimize the spread of \( \chi^2(\boldsymbol{\beta}) \) by requiring $$ -\frac{\partial \chi^2(\boldsymbol{\beta})}{\partial \boldsymbol{\beta}} = 0 = \boldsymbol{A}^T\left( \boldsymbol{b}-\boldsymbol{A}\boldsymbol{\beta}\right), +\frac{\partial \chi^2(\boldsymbol{\beta})}{\partial \beta_j} = \frac{\partial }{\partial \beta_j}\left[ \frac{1}{n}\sum_{i=0}^{n-1}\left(\frac{y_i-\beta_0x_{i,0}-\beta_1x_{i,1}-\beta_2x_{i,2}-\dots-\beta_{n-1}x_{i,n-1}}{\sigma_i}\right)^2\right]=0, $$ -as +which results in $$ -\boldsymbol{A}^T\boldsymbol{b} = \boldsymbol{A}^T\boldsymbol{A}\boldsymbol{\beta}, +\frac{\partial \chi^2(\boldsymbol{\beta})}{\partial \beta_j} = -\frac{2}{n}\left[ \sum_{i=0}^{n-1}\frac{x_{ij}}{\sigma_i}\left(\frac{y_i-\beta_0x_{i,0}-\beta_1x_{i,1}-\beta_2x_{i,2}-\dots-\beta_{n-1}x_{i,n-1}}{\sigma_i}\right)\right]=0, $$ -and if the matrix \( \boldsymbol{A}^T\boldsymbol{A} \) is invertible we have the solution +or in a matrix-vector form as $$ -\boldsymbol{\beta} =\left(\boldsymbol{A}^T\boldsymbol{A}\right)^{-1}\boldsymbol{A}^T\boldsymbol{b}. +\frac{\partial \chi^2(\boldsymbol{\beta})}{\partial \boldsymbol{\beta}} = 0 = \boldsymbol{A}^T\left( \boldsymbol{b}-\boldsymbol{A}\boldsymbol{\beta}\right). $$ + +where we have defined the matrix \( \boldsymbol{A} =\boldsymbol{X}/\boldsymbol{\Sigma} \) with matrix elements \( a_{ij} = x_{ij}/\sigma_i \) and the vector \( \boldsymbol{b} \) with elements \( b_i = y_i/\sigma_i \).

    @@ -456,7 +460,7 @@ $$
  • 30
  • 31
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs022.html b/doc/pub/Regression/html/._Regression-bs022.html index af780a292..130b79a32 100644 --- a/doc/pub/Regression/html/._Regression-bs022.html +++ b/doc/pub/Regression/html/._Regression-bs022.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -412,24 +414,19 @@ MathJax.Hub.Config({

    -If we then introduce the matrix +We can rewrite $$ -\boldsymbol{H} = \left(\boldsymbol{A}^T\boldsymbol{A}\right)^{-1}, +\frac{\partial \chi^2(\boldsymbol{\beta})}{\partial \boldsymbol{\beta}} = 0 = \boldsymbol{A}^T\left( \boldsymbol{b}-\boldsymbol{A}\boldsymbol{\beta}\right), $$ -we have then the following expression for the parameters \( \beta_j \) (the matrix elements of \( \boldsymbol{H} \) are \( h_{ij} \)) +as $$ -\beta_j = \sum_{k=0}^{p-1}h_{jk}\sum_{i=0}^{n-1}\frac{y_i}{\sigma_i}\frac{x_{ik}}{\sigma_i} = \sum_{k=0}^{p-1}h_{jk}\sum_{i=0}^{n-1}b_ia_{ik} +\boldsymbol{A}^T\boldsymbol{b} = \boldsymbol{A}^T\boldsymbol{A}\boldsymbol{\beta}, $$ -We state without proof the expression for the uncertainty in the parameters \( \beta_j \) as (we leave this as an exercise) +and if the matrix \( \boldsymbol{A}^T\boldsymbol{A} \) is invertible we have the solution $$ -\sigma^2(\beta_j) = \sum_{i=0}^{n-1}\sigma_i^2\left( \frac{\partial \beta_j}{\partial y_i}\right)^2, -$$ - -resulting in -$$ -\sigma^2(\beta_j) = \left(\sum_{k=0}^{p-1}h_{jk}\sum_{i=0}^{n-1}a_{ik}\right)\left(\sum_{l=0}^{p-1}h_{jl}\sum_{m=0}^{n-1}a_{ml}\right) = h_{jj}! +\boldsymbol{\beta} =\left(\boldsymbol{A}^T\boldsymbol{A}\right)^{-1}\boldsymbol{A}^T\boldsymbol{b}. $$

    @@ -461,7 +458,7 @@ $$
  • 31
  • 32
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs023.html b/doc/pub/Regression/html/._Regression-bs023.html index 4566b80c3..c3c2a562c 100644 --- a/doc/pub/Regression/html/._Regression-bs023.html +++ b/doc/pub/Regression/html/._Regression-bs023.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -410,19 +412,26 @@ MathJax.Hub.Config({

    -The first step here is to approximate the function \( y \) with a first-order polynomial, that is we write + +

    +If we then introduce the matrix $$ -y=y(x) \rightarrow y(x_i) \approx \beta_0+\beta_1 x_i. +\boldsymbol{H} = \left(\boldsymbol{A}^T\boldsymbol{A}\right)^{-1}, $$ -By computing the derivatives of \( \chi^2 \) with respect to \( \beta_0 \) and \( \beta_1 \) show that these are given by +we have then the following expression for the parameters \( \beta_j \) (the matrix elements of \( \boldsymbol{H} \) are \( h_{ij} \)) $$ -\frac{\partial \chi^2(\boldsymbol{\beta})}{\partial \beta_0} = -2\left[ \frac{1}{n}\sum_{i=0}^{n-1}\left(\frac{y_i-\beta_0-\beta_1x_{i}}{\sigma_i^2}\right)\right]=0, +\beta_j = \sum_{k=0}^{p-1}h_{jk}\sum_{i=0}^{n-1}\frac{y_i}{\sigma_i}\frac{x_{ik}}{\sigma_i} = \sum_{k=0}^{p-1}h_{jk}\sum_{i=0}^{n-1}b_ia_{ik} $$ -and +We state without proof the expression for the uncertainty in the parameters \( \beta_j \) as (we leave this as an exercise) $$ -\frac{\partial \chi^2(\boldsymbol{\beta})}{\partial \beta_1} = -\frac{2}{n}\left[ \sum_{i=0}^{n-1}x_i\left(\frac{y_i-\beta_0-\beta_1x_{i}}{\sigma_i^2}\right)\right]=0. +\sigma^2(\beta_j) = \sum_{i=0}^{n-1}\sigma_i^2\left( \frac{\partial \beta_j}{\partial y_i}\right)^2, +$$ + +resulting in +$$ +\sigma^2(\beta_j) = \left(\sum_{k=0}^{p-1}h_{jk}\sum_{i=0}^{n-1}a_{ik}\right)\left(\sum_{l=0}^{p-1}h_{jl}\sum_{m=0}^{n-1}a_{ml}\right) = h_{jj}! $$

    @@ -454,7 +463,7 @@ $$
  • 32
  • 33
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs024.html b/doc/pub/Regression/html/._Regression-bs024.html index 8a47b5650..5aed25552 100644 --- a/doc/pub/Regression/html/._Regression-bs024.html +++ b/doc/pub/Regression/html/._Regression-bs024.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -410,54 +412,20 @@ MathJax.Hub.Config({

    - -

    -For a linear fit (a first-order polynomial) we don't need to invert a matrix!! -Defining +The first step here is to approximate the function \( y \) with a first-order polynomial, that is we write $$ -\gamma = \sum_{i=0}^{n-1}\frac{1}{\sigma_i^2}, +y=y(x) \rightarrow y(x_i) \approx \beta_0+\beta_1 x_i. $$ - +By computing the derivatives of \( \chi^2 \) with respect to \( \beta_0 \) and \( \beta_1 \) show that these are given by $$ -\gamma_x = \sum_{i=0}^{n-1}\frac{x_{i}}{\sigma_i^2}, +\frac{\partial \chi^2(\boldsymbol{\beta})}{\partial \beta_0} = -2\left[ \frac{1}{n}\sum_{i=0}^{n-1}\left(\frac{y_i-\beta_0-\beta_1x_{i}}{\sigma_i^2}\right)\right]=0, $$ - +and $$ -\gamma_y = \sum_{i=0}^{n-1}\left(\frac{y_i}{\sigma_i^2}\right), +\frac{\partial \chi^2(\boldsymbol{\beta})}{\partial \beta_1} = -\frac{2}{n}\left[ \sum_{i=0}^{n-1}x_i\left(\frac{y_i-\beta_0-\beta_1x_{i}}{\sigma_i^2}\right)\right]=0. $$ - - -$$ -\gamma_{xx} = \sum_{i=0}^{n-1}\frac{x_ix_{i}}{\sigma_i^2}, -$$ - - -$$ -\gamma_{xy} = \sum_{i=0}^{n-1}\frac{y_ix_{i}}{\sigma_i^2}, -$$ - -

    -we obtain - -$$ -\beta_0 = \frac{\gamma_{xx}\gamma_y-\gamma_x\gamma_y}{\gamma\gamma_{xx}-\gamma_x^2}, -$$ - - -$$ -\beta_1 = \frac{\gamma_{xy}\gamma-\gamma_x\gamma_y}{\gamma\gamma_{xx}-\gamma_x^2}. -$$ - -

    -This approach (different linear and non-linear regression) suffers -often from both being underdetermined and overdetermined in the -unknown coefficients \( \beta_i \). A better approach is to use the -Singular Value Decomposition (SVD) method discussed below. Or using -Lasso and Ridge regression. See below. - -

    @@ -488,7 +456,7 @@ Lasso and Ridge regression. See below.
  • 33
  • 34
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs025.html b/doc/pub/Regression/html/._Regression-bs025.html index df3201703..8c9c37aed 100644 --- a/doc/pub/Regression/html/._Regression-bs025.html +++ b/doc/pub/Regression/html/._Regression-bs025.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,27 +408,61 @@ MathJax.Hub.Config({ -

    Fitting an Equation of State for Dense Nuclear Matter

    +

    The \( \chi^2 \) function

    +
    +
    +

    -Before we continue, let us introduce yet another example. We are going to fit the -nuclear equation of state using results from many-body calculations. -The equation of state we have made available here, as function of -density, has been derived using modern nucleon-nucleon potentials with -the addition of three-body -forces. This -time the file is presented as a standard csv file. +For a linear fit (a first-order polynomial) we don't need to invert a matrix!! +Defining +$$ +\gamma = \sum_{i=0}^{n-1}\frac{1}{\sigma_i^2}, +$$ + + +$$ +\gamma_x = \sum_{i=0}^{n-1}\frac{x_{i}}{\sigma_i^2}, +$$ + + +$$ +\gamma_y = \sum_{i=0}^{n-1}\left(\frac{y_i}{\sigma_i^2}\right), +$$ + + +$$ +\gamma_{xx} = \sum_{i=0}^{n-1}\frac{x_ix_{i}}{\sigma_i^2}, +$$ + + +$$ +\gamma_{xy} = \sum_{i=0}^{n-1}\frac{y_ix_{i}}{\sigma_i^2}, +$$

    -The beginning of the Python code here is similar to what you have seen -before, with the same initializations and declarations. We use also -pandas again, rather extensively in order to organize our data. +we obtain + +$$ +\beta_0 = \frac{\gamma_{xx}\gamma_y-\gamma_x\gamma_y}{\gamma\gamma_{xx}-\gamma_x^2}, +$$ + + +$$ +\beta_1 = \frac{\gamma_{xy}\gamma-\gamma_x\gamma_y}{\gamma\gamma_{xx}-\gamma_x^2}. +$$

    -The difference now is that we use Scikit-Learn's regression tools -instead of our own matrix inversion implementation. Furthermore, we -sneak in Ridge regression (to be discussed below) which includes a -hyperparameter \( \lambda \), also to be explained below. +This approach (different linear and non-linear regression) suffers +often from both being underdetermined and overdetermined in the +unknown coefficients \( \beta_i \). A better approach is to use the +Singular Value Decomposition (SVD) method discussed below. Or using +Lasso and Ridge regression. See below. + +

    +

    +
    +

    @@ -454,7 +490,7 @@ hyperparameter \( \lambda \), also to be explained below.

  • 34
  • 35
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs026.html b/doc/pub/Regression/html/._Regression-bs026.html index 151f4a402..8d063dbf5 100644 --- a/doc/pub/Regression/html/._Regression-bs026.html +++ b/doc/pub/Regression/html/._Regression-bs026.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,105 +408,27 @@ MathJax.Hub.Config({ -

    The code

    +

    Fitting an Equation of State for Dense Nuclear Matter

    - - -

    # Common imports
    -import os
    -import numpy as np
    -import pandas as pd
    -import matplotlib.pyplot as plt
    -import matplotlib.pyplot as plt
    -import sklearn.linear_model as skl
    -from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error
    -
    -# Where to save the figures and data files
    -PROJECT_ROOT_DIR = "Results"
    -FIGURE_ID = "Results/FigureFiles"
    -DATA_ID = "DataFiles/"
    -
    -if not os.path.exists(PROJECT_ROOT_DIR):
    -    os.mkdir(PROJECT_ROOT_DIR)
    -
    -if not os.path.exists(FIGURE_ID):
    -    os.makedirs(FIGURE_ID)
    -
    -if not os.path.exists(DATA_ID):
    -    os.makedirs(DATA_ID)
    -
    -def image_path(fig_id):
    -    return os.path.join(FIGURE_ID, fig_id)
    -
    -def data_path(dat_id):
    -    return os.path.join(DATA_ID, dat_id)
    -
    -def save_fig(fig_id):
    -    plt.savefig(image_path(fig_id) + ".png", format='png')
    -
    -infile = open(data_path("EoS.csv"),'r')
    -
    -# Read the EoS data as  csv file and organize the data into two arrays with density and energies
    -EoS = pd.read_csv(infile, names=('Density', 'Energy'))
    -EoS['Energy'] = pd.to_numeric(EoS['Energy'], errors='coerce')
    -EoS = EoS.dropna()
    -Energies = EoS['Energy']
    -Density = EoS['Density']
    -#  The design matrix now as function of various polytrops
    -X = np.zeros((len(Density),4))
    -X[:,3] = Density**(4.0/3.0)
    -X[:,2] = Density
    -X[:,1] = Density**(2.0/3.0)
    -X[:,0] = 1
    -
    -# We use now Scikit-Learn's linear regressor and ridge regressor
    -# OLS part
    -clf = skl.LinearRegression().fit(X, Energies)
    -ytilde = clf.predict(X)
    -EoS['Eols']  = ytilde
    -# The mean squared error                               
    -print("Mean squared error: %.2f" % mean_squared_error(Energies, ytilde))
    -# Explained variance score: 1 is perfect prediction                                 
    -print('Variance score: %.2f' % r2_score(Energies, ytilde))
    -# Mean absolute error                                                           
    -print('Mean absolute error: %.2f' % mean_absolute_error(Energies, ytilde))
    -print(clf.coef_, clf.intercept_)
    -
    -# The Ridge regression with a hyperparameter lambda = 0.1
    -_lambda = 0.1
    -clf_ridge = skl.Ridge(alpha=_lambda).fit(X, Energies)
    -yridge = clf_ridge.predict(X)
    -EoS['Eridge']  = yridge
    -# The mean squared error                               
    -print("Mean squared error: %.2f" % mean_squared_error(Energies, yridge))
    -# Explained variance score: 1 is perfect prediction                                 
    -print('Variance score: %.2f' % r2_score(Energies, yridge))
    -# Mean absolute error                                                           
    -print('Mean absolute error: %.2f' % mean_absolute_error(Energies, yridge))
    -print(clf_ridge.coef_, clf_ridge.intercept_)
    -
    -fig, ax = plt.subplots()
    -ax.set_xlabel(r'$\rho[\mathrm{fm}^{-3}]$')
    -ax.set_ylabel(r'Energy per particle')
    -ax.plot(EoS['Density'], EoS['Energy'], alpha=0.7, lw=2,
    -            label='Theoretical data')
    -ax.plot(EoS['Density'], EoS['Eols'], alpha=0.7, lw=2, c='m',
    -            label='OLS')
    -ax.plot(EoS['Density'], EoS['Eridge'], alpha=0.7, lw=2, c='g',
    -            label='Ridge $\lambda = 0.1$')
    -ax.legend()
    -save_fig("EoSfitting")
    -plt.show()
    -
    -

    -The above simple polynomial in density \( \rho \) gives an excellent fit -to the data. +Before we continue, let us introduce yet another example. We are going to fit the +nuclear equation of state using results from many-body calculations. +The equation of state we have made available here, as function of +density, has been derived using modern nucleon-nucleon potentials with +the addition of three-body +forces. This +time the file is presented as a standard csv file.

    -We note also that there is a small deviation between the -standard OLS and the Ridge regression at higher densities. We discuss this in more detail -below. +The beginning of the Python code here is similar to what you have seen +before, with the same initializations and declarations. We use also +pandas again, rather extensively in order to organize our data. + +

    +The difference now is that we use Scikit-Learn's regression tools +instead of our own matrix inversion implementation. Furthermore, we +sneak in Ridge regression (to be discussed below) which includes a +hyperparameter \( \lambda \), also to be explained below.

    @@ -532,7 +456,7 @@ below.

  • 35
  • 36
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs027.html b/doc/pub/Regression/html/._Regression-bs027.html index a04765bab..af4651805 100644 --- a/doc/pub/Regression/html/._Regression-bs027.html +++ b/doc/pub/Regression/html/._Regression-bs027.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,28 +408,20 @@ MathJax.Hub.Config({ -

    Splitting our Data in Training and Test data

    - -

    -It is normal in essentially all Machine Learning studies to split the -data in a training set and a test set (sometimes also an additional -validation set). Scikit-Learn has an own function for this. There -is no explicit recipe for how much data should be included as training -data and say test data. An accepted rule of thumb is to use -approximately \( 2/3 \) to \( 4/5 \) of the data as training data. We will -postpone a discussion of this splitting to the end of these notes and -our discussion of the so-called bias-variance tradeoff. Here we -limit ourselves to repeat the above equation of state fitting example -but now splitting the data into a training set and a test set. +

    The code

    -

    import os
    +
    # Common imports
    +import os
     import numpy as np
     import pandas as pd
     import matplotlib.pyplot as plt
    -from sklearn.model_selection import train_test_split
    +import matplotlib.pyplot as plt
    +import sklearn.linear_model as skl
    +from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error
    +
     # Where to save the figures and data files
     PROJECT_ROOT_DIR = "Results"
     FIGURE_ID = "Results/FigureFiles"
    @@ -449,45 +443,71 @@ DATA_ID = "
         return os.path.join(DATA_ID, dat_id)
     
     def save_fig(fig_id):
    -    plt.savefig(image_path(fig_id) + ".png", format='png')
    -
    -def R2(y_data, y_model):
    -    return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2)
    -def MSE(y_data,y_model):
    -    n = np.size(y_model)
    -    return np.sum((y_data-y_model)**2)/n
    +    plt.savefig(image_path(fig_id) + ".png", format='png')
     
     infile = open(data_path("EoS.csv"),'r')
     
    -# Read the EoS data as  csv file and organized into two arrays with density and energies
    +# Read the EoS data as  csv file and organize the data into two arrays with density and energies
     EoS = pd.read_csv(infile, names=('Density', 'Energy'))
     EoS['Energy'] = pd.to_numeric(EoS['Energy'], errors='coerce')
     EoS = EoS.dropna()
     Energies = EoS['Energy']
     Density = EoS['Density']
     #  The design matrix now as function of various polytrops
    -X = np.zeros((len(Density),5))
    -X[:,0] = 1
    -X[:,1] = Density**(2.0/3.0)
    -X[:,2] = Density
    +X = np.zeros((len(Density),4))
     X[:,3] = Density**(4.0/3.0)
    -X[:,4] = Density**(5.0/3.0)
    -# We split the data in test and training data
    -X_train, X_test, y_train, y_test = train_test_split(X, Energies, test_size=0.2)
    -# matrix inversion to find beta
    -beta = np.linalg.inv(X_train.T.dot(X_train)).dot(X_train.T).dot(y_train)
    -# and then make the prediction
    -ytilde = X_train @ beta
    -print("Training R2")
    -print(R2(y_train,ytilde))
    -print("Training MSE")
    -print(MSE(y_train,ytilde))
    -ypredict = X_test @ beta
    -print("Test R2")
    -print(R2(y_test,ypredict))
    -print("Test MSE")
    -print(MSE(y_test,ypredict))
    +X[:,2] = Density
    +X[:,1] = Density**(2.0/3.0)
    +X[:,0] = 1
    +
    +# We use now Scikit-Learn's linear regressor and ridge regressor
    +# OLS part
    +clf = skl.LinearRegression().fit(X, Energies)
    +ytilde = clf.predict(X)
    +EoS['Eols']  = ytilde
    +# The mean squared error                               
    +print("Mean squared error: %.2f" % mean_squared_error(Energies, ytilde))
    +# Explained variance score: 1 is perfect prediction                                 
    +print('Variance score: %.2f' % r2_score(Energies, ytilde))
    +# Mean absolute error                                                           
    +print('Mean absolute error: %.2f' % mean_absolute_error(Energies, ytilde))
    +print(clf.coef_, clf.intercept_)
    +
    +# The Ridge regression with a hyperparameter lambda = 0.1
    +_lambda = 0.1
    +clf_ridge = skl.Ridge(alpha=_lambda).fit(X, Energies)
    +yridge = clf_ridge.predict(X)
    +EoS['Eridge']  = yridge
    +# The mean squared error                               
    +print("Mean squared error: %.2f" % mean_squared_error(Energies, yridge))
    +# Explained variance score: 1 is perfect prediction                                 
    +print('Variance score: %.2f' % r2_score(Energies, yridge))
    +# Mean absolute error                                                           
    +print('Mean absolute error: %.2f' % mean_absolute_error(Energies, yridge))
    +print(clf_ridge.coef_, clf_ridge.intercept_)
    +
    +fig, ax = plt.subplots()
    +ax.set_xlabel(r'$\rho[\mathrm{fm}^{-3}]$')
    +ax.set_ylabel(r'Energy per particle')
    +ax.plot(EoS['Density'], EoS['Energy'], alpha=0.7, lw=2,
    +            label='Theoretical data')
    +ax.plot(EoS['Density'], EoS['Eols'], alpha=0.7, lw=2, c='m',
    +            label='OLS')
    +ax.plot(EoS['Density'], EoS['Eridge'], alpha=0.7, lw=2, c='g',
    +            label='Ridge $\lambda = 0.1$')
    +ax.legend()
    +save_fig("EoSfitting")
    +plt.show()
     
    +

    +The above simple polynomial in density \( \rho \) gives an excellent fit +to the data. + +

    +We note also that there is a small deviation between the +standard OLS and the Ridge regression at higher densities. We discuss this in more detail +below. +

    @@ -514,7 +534,7 @@ ypredict = X_test @ beta

  • 36
  • 37
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs028.html b/doc/pub/Regression/html/._Regression-bs028.html index 0ff6873c5..5af4ebf71 100644 --- a/doc/pub/Regression/html/._Regression-bs028.html +++ b/doc/pub/Regression/html/._Regression-bs028.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,37 +406,91 @@ MathJax.Hub.Config({

     

     

     

    - + -

    The Boston housing data example

    +

    Splitting our Data in Training and Test data

    -The Boston housing -data set was originally a part of UCI Machine Learning Repository -and has been removed now. The data set is now included in Scikit-Learn's -library. There are 506 samples and 13 feature (predictor) variables -in this data set. The objective is to predict the value of prices of -the house using the features (predictors) listed here. +It is normal in essentially all Machine Learning studies to split the +data in a training set and a test set (sometimes also an additional +validation set). Scikit-Learn has an own function for this. There +is no explicit recipe for how much data should be included as training +data and say test data. An accepted rule of thumb is to use +approximately \( 2/3 \) to \( 4/5 \) of the data as training data. We will +postpone a discussion of this splitting to the end of these notes and +our discussion of the so-called bias-variance tradeoff. Here we +limit ourselves to repeat the above equation of state fitting example +but now splitting the data into a training set and a test set.

    -The features/predictors are -

      -
    1. CRIM: Per capita crime rate by town
    2. -
    3. ZN: Proportion of residential land zoned for lots over 25000 square feet
    4. -
    5. INDUS: Proportion of non-retail business acres per town
    6. -
    7. CHAS: Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
    8. -
    9. NOX: Nitric oxide concentration (parts per 10 million)
    10. -
    11. RM: Average number of rooms per dwelling
    12. -
    13. AGE: Proportion of owner-occupied units built prior to 1940
    14. -
    15. DIS: Weighted distances to five Boston employment centers
    16. -
    17. RAD: Index of accessibility to radial highways
    18. -
    19. TAX: Full-value property tax rate per USD10000
    20. -
    21. B: \( 1000(Bk - 0.63)^2 \), where \( Bk \) is the proportion of [people of African American descent] by town
    22. -
    23. LSTAT: Percentage of lower status of the population
    24. -
    25. MEDV: Median value of owner-occupied homes in USD 1000s
    26. -
    + +
    import os
    +import numpy as np
    +import pandas as pd
    +import matplotlib.pyplot as plt
    +from sklearn.model_selection import train_test_split
    +# Where to save the figures and data files
    +PROJECT_ROOT_DIR = "Results"
    +FIGURE_ID = "Results/FigureFiles"
    +DATA_ID = "DataFiles/"
     
    +if not os.path.exists(PROJECT_ROOT_DIR):
    +    os.mkdir(PROJECT_ROOT_DIR)
    +
    +if not os.path.exists(FIGURE_ID):
    +    os.makedirs(FIGURE_ID)
    +
    +if not os.path.exists(DATA_ID):
    +    os.makedirs(DATA_ID)
    +
    +def image_path(fig_id):
    +    return os.path.join(FIGURE_ID, fig_id)
    +
    +def data_path(dat_id):
    +    return os.path.join(DATA_ID, dat_id)
    +
    +def save_fig(fig_id):
    +    plt.savefig(image_path(fig_id) + ".png", format='png')
    +
    +def R2(y_data, y_model):
    +    return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2)
    +def MSE(y_data,y_model):
    +    n = np.size(y_model)
    +    return np.sum((y_data-y_model)**2)/n
    +
    +infile = open(data_path("EoS.csv"),'r')
    +
    +# Read the EoS data as  csv file and organized into two arrays with density and energies
    +EoS = pd.read_csv(infile, names=('Density', 'Energy'))
    +EoS['Energy'] = pd.to_numeric(EoS['Energy'], errors='coerce')
    +EoS = EoS.dropna()
    +Energies = EoS['Energy']
    +Density = EoS['Density']
    +#  The design matrix now as function of various polytrops
    +X = np.zeros((len(Density),5))
    +X[:,0] = 1
    +X[:,1] = Density**(2.0/3.0)
    +X[:,2] = Density
    +X[:,3] = Density**(4.0/3.0)
    +X[:,4] = Density**(5.0/3.0)
    +# We split the data in test and training data
    +X_train, X_test, y_train, y_test = train_test_split(X, Energies, test_size=0.2)
    +# matrix inversion to find beta
    +beta = np.linalg.inv(X_train.T.dot(X_train)).dot(X_train.T).dot(y_train)
    +# and then make the prediction
    +ytilde = X_train @ beta
    +print("Training R2")
    +print(R2(y_train,ytilde))
    +print("Training MSE")
    +print(MSE(y_train,ytilde))
    +ypredict = X_test @ beta
    +print("Test R2")
    +print(R2(y_test,ypredict))
    +print("Test MSE")
    +print(MSE(y_test,ypredict))
    +
    +

    diff --git a/doc/pub/Regression/html/._Regression-bs029.html b/doc/pub/Regression/html/._Regression-bs029.html index 4feec208c..e3aeef02f 100644 --- a/doc/pub/Regression/html/._Regression-bs029.html +++ b/doc/pub/Regression/html/._Regression-bs029.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,163 +406,37 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Housing data, the code

    -We start by importing the libraries -

    - - -

    import numpy as np
    -import matplotlib.pyplot as plt 
    -
    -import pandas as pd  
    -import seaborn as sns 
    -
    -

    -and load the Boston Housing DataSet from Scikit-Learn +

    The Boston housing data example

    - - -

    from sklearn.datasets import load_boston
    -
    -boston_dataset = load_boston()
    -
    -# boston_dataset is a dictionary
    -# let's check what it contains
    -boston_dataset.keys()
    -
    -

    -Then we invoke Pandas -

    - - -

    boston = pd.DataFrame(boston_dataset.data, columns=boston_dataset.feature_names)
    -boston.head()
    -boston['MEDV'] = boston_dataset.target
    -
    -

    -and preprocess the data -

    - - -

    # check for missing values in all the columns
    -boston.isnull().sum()
    -
    -

    -We can then visualize the data -

    - - -

    # set the size of the figure
    -sns.set(rc={'figure.figsize':(11.7,8.27)})
    -
    -# plot a histogram showing the distribution of the target values
    -sns.distplot(boston['MEDV'], bins=30)
    -plt.show()
    -
    -

    -It is now useful to look at the correlation matrix -

    - - -

    # compute the pair wise correlation for all columns  
    -correlation_matrix = boston.corr().round(2)
    -# use the heatmap function from seaborn to plot the correlation matrix
    -# annot = True to print the values inside the square
    -sns.heatmap(data=correlation_matrix, annot=True)
    -
    -

    -From the above coorelation plot we can see that MEDV is strongly correlated to LSTAT and RM. We see also that RAD and TAX are stronly correlated, but we don't include this in our features together to avoid multi-colinearity +The Boston housing +data set was originally a part of UCI Machine Learning Repository +and has been removed now. The data set is now included in Scikit-Learn's +library. There are 506 samples and 13 feature (predictor) variables +in this data set. The objective is to predict the value of prices of +the house using the features (predictors) listed here.

    +The features/predictors are - -

    plt.figure(figsize=(20, 5))
    +
      +
    1. CRIM: Per capita crime rate by town
    2. +
    3. ZN: Proportion of residential land zoned for lots over 25000 square feet
    4. +
    5. INDUS: Proportion of non-retail business acres per town
    6. +
    7. CHAS: Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
    8. +
    9. NOX: Nitric oxide concentration (parts per 10 million)
    10. +
    11. RM: Average number of rooms per dwelling
    12. +
    13. AGE: Proportion of owner-occupied units built prior to 1940
    14. +
    15. DIS: Weighted distances to five Boston employment centers
    16. +
    17. RAD: Index of accessibility to radial highways
    18. +
    19. TAX: Full-value property tax rate per USD10000
    20. +
    21. B: \( 1000(Bk - 0.63)^2 \), where \( Bk \) is the proportion of [people of African American descent] by town
    22. +
    23. LSTAT: Percentage of lower status of the population
    24. +
    25. MEDV: Median value of owner-occupied homes in USD 1000s
    26. +
    -features = ['LSTAT', 'RM'] -target = boston['MEDV'] - -for i, col in enumerate(features): - plt.subplot(1, len(features) , i+1) - x = boston[col] - y = target - plt.scatter(x, y, marker='o') - plt.title(col) - plt.xlabel(col) - plt.ylabel('MEDV') -
    -

    -Now we start training our model -

    - - -

    X = pd.DataFrame(np.c_[boston['LSTAT'], boston['RM']], columns = ['LSTAT','RM'])
    -Y = boston['MEDV']
    -
    -

    -We split the data into training and test sets - -

    - - -

    from sklearn.model_selection import train_test_split
    -
    -# splits the training and test data set in 80% : 20%
    -# assign random_state to any value.This ensures consistency.
    -X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state=5)
    -print(X_train.shape)
    -print(X_test.shape)
    -print(Y_train.shape)
    -print(Y_test.shape)
    -
    -

    -Then we use the linear regression functionality from Scikit-Learn -

    - - -

    from sklearn.linear_model import LinearRegression
    -from sklearn.metrics import mean_squared_error, r2_score
    -
    -lin_model = LinearRegression()
    -lin_model.fit(X_train, Y_train)
    -
    -# model evaluation for training set
    -
    -y_train_predict = lin_model.predict(X_train)
    -rmse = (np.sqrt(mean_squared_error(Y_train, y_train_predict)))
    -r2 = r2_score(Y_train, y_train_predict)
    -
    -print("The model performance for training set")
    -print("--------------------------------------")
    -print('RMSE is {}'.format(rmse))
    -print('R2 score is {}'.format(r2))
    -print("\n")
    -
    -# model evaluation for testing set
    -
    -y_test_predict = lin_model.predict(X_test)
    -# root mean square error of the model
    -rmse = (np.sqrt(mean_squared_error(Y_test, y_test_predict)))
    -
    -# r-squared score of the model
    -r2 = r2_score(Y_test, y_test_predict)
    -
    -print("The model performance for testing set")
    -print("--------------------------------------")
    -print('RMSE is {}'.format(rmse))
    -print('R2 score is {}'.format(r2))
    -
    -

    - - -

    # plotting the y_test vs y_pred
    -# ideally should have been a straight line
    -plt.scatter(Y_test, y_test_predict)
    -plt.show()
    -
    -

    diff --git a/doc/pub/Regression/html/._Regression-bs030.html b/doc/pub/Regression/html/._Regression-bs030.html index 06b1ac787..943548d0c 100644 --- a/doc/pub/Regression/html/._Regression-bs030.html +++ b/doc/pub/Regression/html/._Regression-bs030.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,39 +408,160 @@ MathJax.Hub.Config({ -

    The singular value decomposition

    +

    Housing data, the code

    +We start by importing the libraries +

    + + +

    import numpy as np
    +import matplotlib.pyplot as plt 
    +
    +import pandas as pd  
    +import seaborn as sns 
    +
    +

    +and load the Boston Housing DataSet from Scikit-Learn

    -

    -
    -

    + + +

    from sklearn.datasets import load_boston
    +
    +boston_dataset = load_boston()
    +
    +# boston_dataset is a dictionary
    +# let's check what it contains
    +boston_dataset.keys()
    +
    +

    +Then we invoke Pandas +

    + + +

    boston = pd.DataFrame(boston_dataset.data, columns=boston_dataset.feature_names)
    +boston.head()
    +boston['MEDV'] = boston_dataset.target
    +
    +

    +and preprocess the data +

    + + +

    # check for missing values in all the columns
    +boston.isnull().sum()
    +
    +

    +We can then visualize the data +

    + + +

    # set the size of the figure
    +sns.set(rc={'figure.figsize':(11.7,8.27)})
    +
    +# plot a histogram showing the distribution of the target values
    +sns.distplot(boston['MEDV'], bins=30)
    +plt.show()
    +
    +

    +It is now useful to look at the correlation matrix +

    + + +

    # compute the pair wise correlation for all columns  
    +correlation_matrix = boston.corr().round(2)
    +# use the heatmap function from seaborn to plot the correlation matrix
    +# annot = True to print the values inside the square
    +sns.heatmap(data=correlation_matrix, annot=True)
    +
    +

    +From the above coorelation plot we can see that MEDV is strongly correlated to LSTAT and RM. We see also that RAD and TAX are stronly correlated, but we don't include this in our features together to avoid multi-colinearity

    -The examples we have looked at so far are cases where we normally can -invert the matrix \( \boldsymbol{X}^T\boldsymbol{X} \). Using a polynomial expansion as we -did both for the masses and the fitting of the equation of state, -leads to row vectors of the design matrix which are essentially -orthogonal due to the polynomial character of our model. Obtaining the inverse of the design matrix is then often done via a so-called LU, QR or Cholesky decomposition. + + +

    plt.figure(figsize=(20, 5))
    +
    +features = ['LSTAT', 'RM']
    +target = boston['MEDV']
    +
    +for i, col in enumerate(features):
    +    plt.subplot(1, len(features) , i+1)
    +    x = boston[col]
    +    y = target
    +    plt.scatter(x, y, marker='o')
    +    plt.title(col)
    +    plt.xlabel(col)
    +    plt.ylabel('MEDV')
    +
    +

    +Now we start training our model +

    + + +

    X = pd.DataFrame(np.c_[boston['LSTAT'], boston['RM']], columns = ['LSTAT','RM'])
    +Y = boston['MEDV']
    +
    +

    +We split the data into training and test sets

    -This may -however not the be case in general and a standard matrix inversion -algorithm based on say LU, QR or Cholesky decomposition may lead to singularities. We will see examples of this below. + +

    from sklearn.model_selection import train_test_split
    +
    +# splits the training and test data set in 80% : 20%
    +# assign random_state to any value.This ensures consistency.
    +X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state=5)
    +print(X_train.shape)
    +print(X_test.shape)
    +print(Y_train.shape)
    +print(Y_test.shape)
    +

    -There is however a way to partially circumvent this problem and also gain some insight about the ordinary least squares approach. - +Then we use the linear regression functionality from Scikit-Learn

    -This is given by the Singular Value Decomposition algorithm, perhaps -the most powerful linear algebra algorithm. Let us look at a -different example where we may have problems with the standard matrix -inversion algorithm. Thereafter we dive into the math of the SVD. + +

    from sklearn.linear_model import LinearRegression
    +from sklearn.metrics import mean_squared_error, r2_score
    +
    +lin_model = LinearRegression()
    +lin_model.fit(X_train, Y_train)
    +
    +# model evaluation for training set
    +
    +y_train_predict = lin_model.predict(X_train)
    +rmse = (np.sqrt(mean_squared_error(Y_train, y_train_predict)))
    +r2 = r2_score(Y_train, y_train_predict)
    +
    +print("The model performance for training set")
    +print("--------------------------------------")
    +print('RMSE is {}'.format(rmse))
    +print('R2 score is {}'.format(r2))
    +print("\n")
    +
    +# model evaluation for testing set
    +
    +y_test_predict = lin_model.predict(X_test)
    +# root mean square error of the model
    +rmse = (np.sqrt(mean_squared_error(Y_test, y_test_predict)))
    +
    +# r-squared score of the model
    +r2 = r2_score(Y_test, y_test_predict)
    +
    +print("The model performance for testing set")
    +print("--------------------------------------")
    +print('RMSE is {}'.format(rmse))
    +print('R2 score is {}'.format(r2))
    +

    -

    -
    - + +
    # plotting the y_test vs y_pred
    +# ideally should have been a straight line
    +plt.scatter(Y_test, y_test_predict)
    +plt.show()
    +

    @@ -465,7 +588,7 @@ inversion algorithm. Thereafter we dive into the math of the SVD.

  • 39
  • 40
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs031.html b/doc/pub/Regression/html/._Regression-bs031.html index aeaa708c2..7295a596c 100644 --- a/doc/pub/Regression/html/._Regression-bs031.html +++ b/doc/pub/Regression/html/._Regression-bs031.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,53 +408,38 @@ MathJax.Hub.Config({ -

    Linear Regression Problems

    +

    The singular value decomposition

    -One of the typical problems we encounter with linear regression, in particular -when the matrix \( \boldsymbol{X} \) (our so-called design matrix) is high-dimensional, -are problems with near singular or singular matrices. The column vectors of \( \boldsymbol{X} \) -may be linearly dependent, normally referred to as super-collinearity. -This means that the matrix may be rank deficient and it is basically impossible to -to model the data using linear regression. As an example, consider the matrix -$$ -\begin{align*} -\mathbf{X} & = \left[ -\begin{array}{rrr} -1 & -1 & 2 -\\ -1 & 0 & 1 -\\ -1 & 2 & -1 -\\ -1 & 1 & 0 -\end{array} \right] -\end{align*} -$$ +

    +
    +

    -The columns of \( \boldsymbol{X} \) are linearly dependent. We see this easily since the -the first column is the row-wise sum of the other two columns. The rank (more correct, -the column rank) of a matrix is the dimension of the space spanned by the -column vectors. Hence, the rank of \( \mathbf{X} \) is equal to the number -of linearly independent columns. In this particular case the matrix has rank 2. +The examples we have looked at so far are cases where we normally can +invert the matrix \( \boldsymbol{X}^T\boldsymbol{X} \). Using a polynomial expansion as we +did both for the masses and the fitting of the equation of state, +leads to row vectors of the design matrix which are essentially +orthogonal due to the polynomial character of our model. Obtaining the inverse of the design matrix is then often done via a so-called LU, QR or Cholesky decomposition.

    -Super-collinearity of an \( (n \times p) \)-dimensional design matrix \( \mathbf{X} \) implies -that the inverse of the matrix \( \boldsymbol{X}^T\boldsymbol{X} \) (the matrix we need to invert to solve the linear regression equations) is non-invertible. If we have a square matrix that does not have an inverse, we say this matrix singular. The example here demonstrates this -$$ -\begin{align*} -\boldsymbol{X} & = \left[ -\begin{array}{rr} -1 & -1 -\\ -1 & -1 -\end{array} \right]. -\end{align*} -$$ +This may +however not the be case in general and a standard matrix inversion +algorithm based on say LU, QR or Cholesky decomposition may lead to singularities. We will see examples of this below. + +

    +There is however a way to partially circumvent this problem and also gain some insight about the ordinary least squares approach. + +

    +This is given by the Singular Value Decomposition algorithm, perhaps +the most powerful linear algebra algorithm. Let us look at a +different example where we may have problems with the standard matrix +inversion algorithm. Thereafter we dive into the math of the SVD. + +

    +

    +
    -We see easily that \( \mbox{det}(\boldsymbol{X}) = x_{11} x_{22} - x_{12} x_{21} = 1 \times (-1) - 1 \times (-1) = 0 \). Hence, \( \mathbf{X} \) is singular and its inverse is undefined. -This is equivalent to saying that the matrix \( \boldsymbol{X} \) has at least an eigenvalue which is zero.

    @@ -480,7 +467,7 @@ This is equivalent to saying that the matrix \( \boldsymbol{X} \) has at least a

  • 40
  • 41
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs032.html b/doc/pub/Regression/html/._Regression-bs032.html index a5dd193b9..62c47369e 100644 --- a/doc/pub/Regression/html/._Regression-bs032.html +++ b/doc/pub/Regression/html/._Regression-bs032.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,30 +408,53 @@ MathJax.Hub.Config({ -

    Fixing the singularity

    +

    Linear Regression Problems

    -If our design matrix \( \boldsymbol{X} \) which enters the linear regression problem +One of the typical problems we encounter with linear regression, in particular +when the matrix \( \boldsymbol{X} \) (our so-called design matrix) is high-dimensional, +are problems with near singular or singular matrices. The column vectors of \( \boldsymbol{X} \) +may be linearly dependent, normally referred to as super-collinearity. +This means that the matrix may be rank deficient and it is basically impossible to +to model the data using linear regression. As an example, consider the matrix $$ -\begin{align} -\boldsymbol{\beta} & = (\boldsymbol{X}^{T} \boldsymbol{X})^{-1} \boldsymbol{X}^{T} \boldsymbol{y}, -\tag{1} -\end{align} +\begin{align*} +\mathbf{X} & = \left[ +\begin{array}{rrr} +1 & -1 & 2 +\\ +1 & 0 & 1 +\\ +1 & 2 & -1 +\\ +1 & 1 & 0 +\end{array} \right] +\end{align*} $$ -has linearly dependent column vectors, we will not be able to compute the inverse -of \( \boldsymbol{X}^T\boldsymbol{X} \) and we cannot find the parameters (estimators) \( \beta_i \). -The estimators are only well-defined if \( (\boldsymbol{X}^{T}\boldsymbol{X})^{-1} \) exits. -This is more likely to happen when the matrix \( \boldsymbol{X} \) is high-dimensional. In this case it is likely to encounter a situation where -the regression parameters \( \beta_i \) cannot be estimated. -

    -A cheap ad hoc approach is simply to add a small diagonal component to the matrix to invert, that is we change +The columns of \( \boldsymbol{X} \) are linearly dependent. We see this easily since the +the first column is the row-wise sum of the other two columns. The rank (more correct, +the column rank) of a matrix is the dimension of the space spanned by the +column vectors. Hence, the rank of \( \mathbf{X} \) is equal to the number +of linearly independent columns. In this particular case the matrix has rank 2. + +

    +Super-collinearity of an \( (n \times p) \)-dimensional design matrix \( \mathbf{X} \) implies +that the inverse of the matrix \( \boldsymbol{X}^T\boldsymbol{X} \) (the matrix we need to invert to solve the linear regression equations) is non-invertible. If we have a square matrix that does not have an inverse, we say this matrix singular. The example here demonstrates this $$ -\boldsymbol{X}^{T} \boldsymbol{X} \rightarrow \boldsymbol{X}^{T} \boldsymbol{X}+\lambda \boldsymbol{I}, +\begin{align*} +\boldsymbol{X} & = \left[ +\begin{array}{rr} +1 & -1 +\\ +1 & -1 +\end{array} \right]. +\end{align*} $$ -where \( \boldsymbol{I} \) is the identity matrix. When we discuss Ridge regression this is actually what we end up evaluating. The parameter \( \lambda \) is called a hyperparameter. More about this later. +We see easily that \( \mbox{det}(\boldsymbol{X}) = x_{11} x_{22} - x_{12} x_{21} = 1 \times (-1) - 1 \times (-1) = 0 \). Hence, \( \mathbf{X} \) is singular and its inverse is undefined. +This is equivalent to saying that the matrix \( \boldsymbol{X} \) has at least an eigenvalue which is zero.

    @@ -457,7 +482,7 @@ where \( \boldsymbol{I} \) is the identity matrix. When we discuss Ridge

  • 41
  • 42
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs033.html b/doc/pub/Regression/html/._Regression-bs033.html index d6f4d89f5..7b2613985 100644 --- a/doc/pub/Regression/html/._Regression-bs033.html +++ b/doc/pub/Regression/html/._Regression-bs033.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,41 +408,30 @@ MathJax.Hub.Config({ -

    Basic math of the SVD

    +

    Fixing the singularity

    -From standard linear algebra we know that a square matrix \( \boldsymbol{X} \) can be diagonalized if and only it is -a so-called normal matrix, that is if \( \boldsymbol{X}\in {\mathbb{R}}^{n\times n} \) -we have \( \boldsymbol{X}\boldsymbol{X}^T=\boldsymbol{X}^T\boldsymbol{X} \) or if \( \boldsymbol{X}\in {\mathbb{C}}^{n\times n} \) we have \( \boldsymbol{X}\boldsymbol{X}^{\dagger}=\boldsymbol{X}^{\dagger}\boldsymbol{X} \). -The matrix has then a set of eigenpairs - +If our design matrix \( \boldsymbol{X} \) which enters the linear regression problem $$ -(\lambda_1,\boldsymbol{u}_1),\dots, (\lambda_n,\boldsymbol{u}_n), +\begin{align} +\boldsymbol{\beta} & = (\boldsymbol{X}^{T} \boldsymbol{X})^{-1} \boldsymbol{X}^{T} \boldsymbol{y}, +\tag{1} +\end{align} $$ -and the eigenvalues are given by the diagonal matrix -$$ -\boldsymbol{\Sigma}=\mathrm{Diag}(\lambda_1, \dots,\lambda_n). -$$ - -The matrix \( \boldsymbol{X} \) can be written in terms of an orthogonal/unitary transformation \( \boldsymbol{U} \) -$$ -\boldsymbol{X} = \boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T, -$$ - -with \( \boldsymbol{U}\boldsymbol{U}^T=\boldsymbol{I} \) or \( \boldsymbol{U}\boldsymbol{U}^{\dagger}=\boldsymbol{I} \). +has linearly dependent column vectors, we will not be able to compute the inverse +of \( \boldsymbol{X}^T\boldsymbol{X} \) and we cannot find the parameters (estimators) \( \beta_i \). +The estimators are only well-defined if \( (\boldsymbol{X}^{T}\boldsymbol{X})^{-1} \) exits. +This is more likely to happen when the matrix \( \boldsymbol{X} \) is high-dimensional. In this case it is likely to encounter a situation where +the regression parameters \( \beta_i \) cannot be estimated.

    -Not all square matrices are diagonalizable. A matrix like the one discussed above +A cheap ad hoc approach is simply to add a small diagonal component to the matrix to invert, that is we change $$ -\boldsymbol{X} = \begin{bmatrix} -1& -1 \\ -1& -1\\ -\end{bmatrix} +\boldsymbol{X}^{T} \boldsymbol{X} \rightarrow \boldsymbol{X}^{T} \boldsymbol{X}+\lambda \boldsymbol{I}, $$ -is not diagonalizable, it is a so-called defective matrix. It is easy to see that the condition -\( \boldsymbol{X}\boldsymbol{X}^T=\boldsymbol{X}^T\boldsymbol{X} \) is not fulfilled. +where \( \boldsymbol{I} \) is the identity matrix. When we discuss Ridge regression this is actually what we end up evaluating. The parameter \( \lambda \) is called a hyperparameter. More about this later.

    @@ -468,7 +459,7 @@ is not diagonalizable, it is a so-called 42

  • 43
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs034.html b/doc/pub/Regression/html/._Regression-bs034.html index 1ffa3e1f0..223b01bbb 100644 --- a/doc/pub/Regression/html/._Regression-bs034.html +++ b/doc/pub/Regression/html/._Regression-bs034.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,33 +408,41 @@ MathJax.Hub.Config({ -

    The SVD, a Fantastic Algorithm

    +

    Basic math of the SVD

    -However, and this is the strength of the SVD algorithm, any general -matrix \( \boldsymbol{X} \) can be decomposed in terms of a diagonal matrix and -two orthogonal/unitary matrices. The Singular Value Decompostion -(SVD) theorem -states that a general \( m\times n \) matrix \( \boldsymbol{X} \) can be written in -terms of a diagonal matrix \( \boldsymbol{\Sigma} \) of dimensionality \( n\times n \) -and two orthognal matrices \( \boldsymbol{U} \) and \( \boldsymbol{V} \), where the first has -dimensionality \( m \times m \) and the last dimensionality \( n\times n \). -We have then +From standard linear algebra we know that a square matrix \( \boldsymbol{X} \) can be diagonalized if and only it is +a so-called normal matrix, that is if \( \boldsymbol{X}\in {\mathbb{R}}^{n\times n} \) +we have \( \boldsymbol{X}\boldsymbol{X}^T=\boldsymbol{X}^T\boldsymbol{X} \) or if \( \boldsymbol{X}\in {\mathbb{C}}^{n\times n} \) we have \( \boldsymbol{X}\boldsymbol{X}^{\dagger}=\boldsymbol{X}^{\dagger}\boldsymbol{X} \). +The matrix has then a set of eigenpairs -$$ -\boldsymbol{X} = \boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T $$ +(\lambda_1,\boldsymbol{u}_1),\dots, (\lambda_n,\boldsymbol{u}_n), +$$ + +and the eigenvalues are given by the diagonal matrix +$$ +\boldsymbol{\Sigma}=\mathrm{Diag}(\lambda_1, \dots,\lambda_n). +$$ + +The matrix \( \boldsymbol{X} \) can be written in terms of an orthogonal/unitary transformation \( \boldsymbol{U} \) +$$ +\boldsymbol{X} = \boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T, +$$ + +with \( \boldsymbol{U}\boldsymbol{U}^T=\boldsymbol{I} \) or \( \boldsymbol{U}\boldsymbol{U}^{\dagger}=\boldsymbol{I} \).

    -As an example, the above defective matrix can be decomposed as - +Not all square matrices are diagonalizable. A matrix like the one discussed above $$ -\boldsymbol{X} = \frac{1}{\sqrt{2}}\begin{bmatrix} 1& 1 \\ 1& -1\\ \end{bmatrix} \begin{bmatrix} 2& 0 \\ 0& 0\\ \end{bmatrix} \frac{1}{\sqrt{2}}\begin{bmatrix} 1& -1 \\ 1& 1\\ \end{bmatrix}=\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T, +\boldsymbol{X} = \begin{bmatrix} +1& -1 \\ +1& -1\\ +\end{bmatrix} $$ -

    -with eigenvalues \( \sigma_1=2 \) and \( \sigma_2=0 \). -The SVD exits always! +is not diagonalizable, it is a so-called defective matrix. It is easy to see that the condition +\( \boldsymbol{X}\boldsymbol{X}^T=\boldsymbol{X}^T\boldsymbol{X} \) is not fulfilled.

    @@ -460,7 +470,7 @@ The SVD exits always!

  • 43
  • 44
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs035.html b/doc/pub/Regression/html/._Regression-bs035.html index e3ef62736..fea634db6 100644 --- a/doc/pub/Regression/html/._Regression-bs035.html +++ b/doc/pub/Regression/html/._Regression-bs035.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,40 +408,33 @@ MathJax.Hub.Config({ -

    Another Example

    +

    The SVD, a Fantastic Algorithm

    -Consider the following matrix which can be SVD decomposed as +However, and this is the strength of the SVD algorithm, any general +matrix \( \boldsymbol{X} \) can be decomposed in terms of a diagonal matrix and +two orthogonal/unitary matrices. The Singular Value Decompostion +(SVD) theorem +states that a general \( m\times n \) matrix \( \boldsymbol{X} \) can be written in +terms of a diagonal matrix \( \boldsymbol{\Sigma} \) of dimensionality \( n\times n \) +and two orthognal matrices \( \boldsymbol{U} \) and \( \boldsymbol{V} \), where the first has +dimensionality \( m \times m \) and the last dimensionality \( n\times n \). +We have then -$$ -\boldsymbol{X} = \frac{1}{15}\begin{bmatrix} 14 & 2\\ 4 & 22\\ 16 & 13\end{bmatrix}=\frac{1}{3}\begin{bmatrix} 1& 2 & 2 \\ 2& -1 & 1\\ 2 & 1& -2\end{bmatrix} \begin{bmatrix} 2& 0 \\ 0& 1\\ 0 & 0\end{bmatrix}\frac{1}{5}\begin{bmatrix} 3& 4 \\ 4& -3\end{bmatrix}=\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T. +$$ +\boldsymbol{X} = \boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T $$

    -This is a \( 3\times 2 \) matrix which is decomposed in terms of a -\( 3\times 3 \) matrix \( \boldsymbol{U} \), and a \( 2\times 2 \) matrix \( \boldsymbol{V} \). It is easy to see -that \( \boldsymbol{U} \) and \( \boldsymbol{V} \) are orthogonal (how?). +As an example, the above defective matrix can be decomposed as + +$$ +\boldsymbol{X} = \frac{1}{\sqrt{2}}\begin{bmatrix} 1& 1 \\ 1& -1\\ \end{bmatrix} \begin{bmatrix} 2& 0 \\ 0& 0\\ \end{bmatrix} \frac{1}{\sqrt{2}}\begin{bmatrix} 1& -1 \\ 1& 1\\ \end{bmatrix}=\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T, +$$

    -And the SVD -decomposition (singular values) gives eigenvalues -\( \sigma_i\geq\sigma_{i+1} \) for all \( i \) and for dimensions larger than \( i=2 \), the -eigenvalues (singular values) are zero. - -

    -In the general case, where our design matrix \( \boldsymbol{X} \) has dimension -\( n\times p \), the matrix is thus decomposed into an \( n\times n \) -orthogonal matrix \( \boldsymbol{U} \), a \( p\times p \) orthogonal matrix \( \boldsymbol{V} \) -and a diagonal matrix \( \boldsymbol{\Sigma} \) with \( r=\mathrm{min}(n,p) \) -singular values \( \sigma_i\geq 0 \) on the main diagonal and zeros filling -the rest of the matrix. There are at most \( p \) singular values -assuming that \( n > p \). In our regression examples for the nuclear -masses and the equation of state this is indeed the case, while for -the Ising model we have \( p > n \). These are often cases that lead to -near singular or singular matrices. - -

    -The columns of \( \boldsymbol{U} \) are called the left singular vectors while the columns of \( \boldsymbol{V} \) are the right singular vectors. +with eigenvalues \( \sigma_1=2 \) and \( \sigma_2=0 \). +The SVD exits always!

    @@ -467,7 +462,7 @@ The columns of \( \boldsymbol{U} \) are called the left singular vectors while t

  • 44
  • 45
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs036.html b/doc/pub/Regression/html/._Regression-bs036.html index 3d12c15d8..511349d3f 100644 --- a/doc/pub/Regression/html/._Regression-bs036.html +++ b/doc/pub/Regression/html/._Regression-bs036.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,27 +408,40 @@ MathJax.Hub.Config({ -

    Economy-size SVD

    +

    Another Example

    -If we assume that \( n > p \), then our matrix \( \boldsymbol{U} \) has dimension \( n -\times n \). The last \( n-p \) columns of \( \boldsymbol{U} \) become however -irrelevant in our calculations since they are multiplied with the -zeros in \( \boldsymbol{\Sigma} \). +Consider the following matrix which can be SVD decomposed as + +$$ +\boldsymbol{X} = \frac{1}{15}\begin{bmatrix} 14 & 2\\ 4 & 22\\ 16 & 13\end{bmatrix}=\frac{1}{3}\begin{bmatrix} 1& 2 & 2 \\ 2& -1 & 1\\ 2 & 1& -2\end{bmatrix} \begin{bmatrix} 2& 0 \\ 0& 1\\ 0 & 0\end{bmatrix}\frac{1}{5}\begin{bmatrix} 3& 4 \\ 4& -3\end{bmatrix}=\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T. +$$

    -The economy-size decomposition removes extra rows or columns of zeros -from the diagonal matrix of singular values, \( \boldsymbol{\Sigma} \), along with the columns -in either \( \boldsymbol{U} \) or \( \boldsymbol{V} \) that multiply those zeros in the expression. -Removing these zeros and columns can improve execution time -and reduce storage requirements without compromising the accuracy of -the decomposition. +This is a \( 3\times 2 \) matrix which is decomposed in terms of a +\( 3\times 3 \) matrix \( \boldsymbol{U} \), and a \( 2\times 2 \) matrix \( \boldsymbol{V} \). It is easy to see +that \( \boldsymbol{U} \) and \( \boldsymbol{V} \) are orthogonal (how?).

    -If \( n > p \), we keep only the first \( p \) columns of \( \boldsymbol{U} \) and \( \boldsymbol{\Sigma} \) has dimension \( p\times p \). -If \( p > n \), then only the first \( n \) columns of \( \boldsymbol{V} \) are computed and \( \boldsymbol{\Sigma} \) has dimension \( n\times n \). -The \( n=p \) case is obvious, we retain the full SVD. -In general the economy-size SVD leads to less FLOPS and still conserving the desired accuracy. +And the SVD +decomposition (singular values) gives eigenvalues +\( \sigma_i\geq\sigma_{i+1} \) for all \( i \) and for dimensions larger than \( i=2 \), the +eigenvalues (singular values) are zero. + +

    +In the general case, where our design matrix \( \boldsymbol{X} \) has dimension +\( n\times p \), the matrix is thus decomposed into an \( n\times n \) +orthogonal matrix \( \boldsymbol{U} \), a \( p\times p \) orthogonal matrix \( \boldsymbol{V} \) +and a diagonal matrix \( \boldsymbol{\Sigma} \) with \( r=\mathrm{min}(n,p) \) +singular values \( \sigma_i\geq 0 \) on the main diagonal and zeros filling +the rest of the matrix. There are at most \( p \) singular values +assuming that \( n > p \). In our regression examples for the nuclear +masses and the equation of state this is indeed the case, while for +the Ising model we have \( p > n \). These are often cases that lead to +near singular or singular matrices. + +

    +The columns of \( \boldsymbol{U} \) are called the left singular vectors while the columns of \( \boldsymbol{V} \) are the right singular vectors.

    @@ -454,7 +469,7 @@ In general the economy-size SVD leads to less FLOPS and still conserving the des

  • 45
  • 46
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs037.html b/doc/pub/Regression/html/._Regression-bs037.html index 0f258c130..9dba684b1 100644 --- a/doc/pub/Regression/html/._Regression-bs037.html +++ b/doc/pub/Regression/html/._Regression-bs037.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,54 +408,27 @@ MathJax.Hub.Config({ -

    Mathematical Properties

    +

    Economy-size SVD

    -There are several interesting mathematical properties which will be -relevant when we are going to discuss the differences between say -ordinary least squares (OLS) and Ridge regression. +If we assume that \( n > p \), then our matrix \( \boldsymbol{U} \) has dimension \( n +\times n \). The last \( n-p \) columns of \( \boldsymbol{U} \) become however +irrelevant in our calculations since they are multiplied with the +zeros in \( \boldsymbol{\Sigma} \).

    -We have from OLS that the parameters of the linear approximation are given by -$$ -\boldsymbol{\tilde{y}} = \boldsymbol{X}\boldsymbol{\beta} = \boldsymbol{X}\left(\boldsymbol{X}^T\boldsymbol{X}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}. -$$ +The economy-size decomposition removes extra rows or columns of zeros +from the diagonal matrix of singular values, \( \boldsymbol{\Sigma} \), along with the columns +in either \( \boldsymbol{U} \) or \( \boldsymbol{V} \) that multiply those zeros in the expression. +Removing these zeros and columns can improve execution time +and reduce storage requirements without compromising the accuracy of +the decomposition.

    -The matrix to invert can be rewritten in terms of our SVD decomposition as - -$$ -\boldsymbol{X}^T\boldsymbol{X} = \boldsymbol{V}\boldsymbol{\Sigma}^T\boldsymbol{U}^T\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T. -$$ - -Using the orthogonality properties of \( \boldsymbol{U} \) we have - -$$ -\boldsymbol{X}^T\boldsymbol{X} = \boldsymbol{V}\boldsymbol{\Sigma}^T\boldsymbol{\Sigma}\boldsymbol{V}^T = \boldsymbol{V}\boldsymbol{D}\boldsymbol{V}^T, -$$ - -with \( \boldsymbol{D} \) being a diagonal matrix with values along the diagonal given by the singular values squared. - -

    -This means that -$$ -(\boldsymbol{X}^T\boldsymbol{X})\boldsymbol{V} = \boldsymbol{V}\boldsymbol{D}, -$$ - -that is the eigenvectors of \( (\boldsymbol{X}^T\boldsymbol{X}) \) are given by the columns of the right singular matrix of \( \boldsymbol{X} \) and the eigenvalues are the squared singular values. It is easy to show (show this) that -$$ -(\boldsymbol{X}\boldsymbol{X}^T)\boldsymbol{U} = \boldsymbol{U}\boldsymbol{D}, -$$ - -that is, the eigenvectors of \( (\boldsymbol{X}\boldsymbol{X})^T \) are the columns of the left singular matrix and the eigenvalues are the same. - -

    -Going back to our OLS equation we have -$$ -\boldsymbol{X}\boldsymbol{\beta} = \boldsymbol{X}\left(\boldsymbol{V}\boldsymbol{D}\boldsymbol{V}^T \right)^{-1}\boldsymbol{X}^T\boldsymbol{y}=\boldsymbol{U\Sigma V^T}\left(\boldsymbol{V}\boldsymbol{D}\boldsymbol{V}^T \right)^{-1}(\boldsymbol{U\Sigma V^T})^T\boldsymbol{y}=\boldsymbol{U}\boldsymbol{U}^T\boldsymbol{y}. -$$ - -We will come back to this expression when we discuss Ridge regression. +If \( n > p \), we keep only the first \( p \) columns of \( \boldsymbol{U} \) and \( \boldsymbol{\Sigma} \) has dimension \( p\times p \). +If \( p > n \), then only the first \( n \) columns of \( \boldsymbol{V} \) are computed and \( \boldsymbol{\Sigma} \) has dimension \( n\times n \). +The \( n=p \) case is obvious, we retain the full SVD. +In general the economy-size SVD leads to less FLOPS and still conserving the desired accuracy.

    @@ -481,7 +456,7 @@ We will come back to this expression when we discuss Ridge regression.

  • 46
  • 47
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs038.html b/doc/pub/Regression/html/._Regression-bs038.html index 70efde7c1..8ccb7d754 100644 --- a/doc/pub/Regression/html/._Regression-bs038.html +++ b/doc/pub/Regression/html/._Regression-bs038.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,60 +408,54 @@ MathJax.Hub.Config({ -

    Ridge and LASSO Regression

    +

    Mathematical Properties

    -Let us remind ourselves about the expression for the standard Mean Squared Error (MSE) which we used to define our cost function and the equations for the ordinary least squares (OLS) method, that is -our optimization problem is -$$ -{\displaystyle \min_{\boldsymbol{\beta}\in {\mathbb{R}}^{p}}}\frac{1}{n}\left\{\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)^T\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)\right\}. -$$ +There are several interesting mathematical properties which will be +relevant when we are going to discuss the differences between say +ordinary least squares (OLS) and Ridge regression. -or we can state it as +

    +We have from OLS that the parameters of the linear approximation are given by $$ -{\displaystyle \min_{\boldsymbol{\beta}\in -{\mathbb{R}}^{p}}}\frac{1}{n}\sum_{i=0}^{n-1}\left(y_i-\tilde{y}_i\right)^2=\frac{1}{n}\vert\vert \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\vert\vert_2^2, -$$ - -where we have used the definition of a norm-2 vector, that is -$$ -\vert\vert \boldsymbol{x}\vert\vert_2 = \sqrt{\sum_i x_i^2}. +\boldsymbol{\tilde{y}} = \boldsymbol{X}\boldsymbol{\beta} = \boldsymbol{X}\left(\boldsymbol{X}^T\boldsymbol{X}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}. $$

    -By minimizing the above equation with respect to the parameters -\( \boldsymbol{\beta} \) we could then obtain an analytical expression for the -parameters \( \boldsymbol{\beta} \). We can add a regularization parameter \( \lambda \) by -defining a new cost function to be optimized, that is +The matrix to invert can be rewritten in terms of our SVD decomposition as $$ -{\displaystyle \min_{\boldsymbol{\beta}\in -{\mathbb{R}}^{p}}}\frac{1}{n}\vert\vert \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\vert\vert_2^2+\lambda\vert\vert \boldsymbol{\beta}\vert\vert_2^2 +\boldsymbol{X}^T\boldsymbol{X} = \boldsymbol{V}\boldsymbol{\Sigma}^T\boldsymbol{U}^T\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{V}^T. $$ +Using the orthogonality properties of \( \boldsymbol{U} \) we have + +$$ +\boldsymbol{X}^T\boldsymbol{X} = \boldsymbol{V}\boldsymbol{\Sigma}^T\boldsymbol{\Sigma}\boldsymbol{V}^T = \boldsymbol{V}\boldsymbol{D}\boldsymbol{V}^T, +$$ + +with \( \boldsymbol{D} \) being a diagonal matrix with values along the diagonal given by the singular values squared. +

    -which leads to the Ridge regression minimization problem where we -require that \( \vert\vert \boldsymbol{\beta}\vert\vert_2^2\le t \), where \( t \) is -a finite number larger than zero. By defining +This means that +$$ +(\boldsymbol{X}^T\boldsymbol{X})\boldsymbol{V} = \boldsymbol{V}\boldsymbol{D}, +$$ +that is the eigenvectors of \( (\boldsymbol{X}^T\boldsymbol{X}) \) are given by the columns of the right singular matrix of \( \boldsymbol{X} \) and the eigenvalues are the squared singular values. It is easy to show (show this) that $$ -C(\boldsymbol{X},\boldsymbol{\beta})=\frac{1}{n}\vert\vert \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\vert\vert_2^2+\lambda\vert\vert \boldsymbol{\beta}\vert\vert_1, +(\boldsymbol{X}\boldsymbol{X}^T)\boldsymbol{U} = \boldsymbol{U}\boldsymbol{D}, $$ +that is, the eigenvectors of \( (\boldsymbol{X}\boldsymbol{X})^T \) are the columns of the left singular matrix and the eigenvalues are the same. +

    -we have a new optimization equation +Going back to our OLS equation we have $$ -{\displaystyle \min_{\boldsymbol{\beta}\in -{\mathbb{R}}^{p}}}\frac{1}{n}\vert\vert \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\vert\vert_2^2+\lambda\vert\vert \boldsymbol{\beta}\vert\vert_1 +\boldsymbol{X}\boldsymbol{\beta} = \boldsymbol{X}\left(\boldsymbol{V}\boldsymbol{D}\boldsymbol{V}^T \right)^{-1}\boldsymbol{X}^T\boldsymbol{y}=\boldsymbol{U\Sigma V^T}\left(\boldsymbol{V}\boldsymbol{D}\boldsymbol{V}^T \right)^{-1}(\boldsymbol{U\Sigma V^T})^T\boldsymbol{y}=\boldsymbol{U}\boldsymbol{U}^T\boldsymbol{y}. $$ -which leads to Lasso regression. Lasso stands for least absolute shrinkage and selection operator. - -

    -Here we have defined the norm-1 as -$$ -\vert\vert \boldsymbol{x}\vert\vert_1 = \sum_i \vert x_i\vert. -$$ +We will come back to this expression when we discuss Ridge regression.

    @@ -487,7 +483,7 @@ $$

  • 47
  • 48
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs039.html b/doc/pub/Regression/html/._Regression-bs039.html index bbe17bc0d..9dac246d8 100644 --- a/doc/pub/Regression/html/._Regression-bs039.html +++ b/doc/pub/Regression/html/._Regression-bs039.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,62 +408,61 @@ MathJax.Hub.Config({ -

    More on Ridge Regression

    +

    Ridge and LASSO Regression

    -Using the matrix-vector expression for Ridge regression, - +Let us remind ourselves about the expression for the standard Mean Squared Error (MSE) which we used to define our cost function and the equations for the ordinary least squares (OLS) method, that is +our optimization problem is $$ -C(\boldsymbol{X},\boldsymbol{\beta})=\frac{1}{n}\left\{(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})^T(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})\right\}+\lambda\boldsymbol{\beta}^T\boldsymbol{\beta}, +{\displaystyle \min_{\boldsymbol{\beta}\in {\mathbb{R}}^{p}}}\frac{1}{n}\left\{\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)^T\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)\right\}. +$$ + +or we can state it as +$$ +{\displaystyle \min_{\boldsymbol{\beta}\in +{\mathbb{R}}^{p}}}\frac{1}{n}\sum_{i=0}^{n-1}\left(y_i-\tilde{y}_i\right)^2=\frac{1}{n}\vert\vert \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\vert\vert_2^2, +$$ + +where we have used the definition of a norm-2 vector, that is +$$ +\vert\vert \boldsymbol{x}\vert\vert_2 = \sqrt{\sum_i x_i^2}. $$

    -by taking the derivatives with respect to \( \boldsymbol{\beta} \) we obtain then -a slightly modified matrix inversion problem which for finite values -of \( \lambda \) does not suffer from singularity problems. We obtain +By minimizing the above equation with respect to the parameters +\( \boldsymbol{\beta} \) we could then obtain an analytical expression for the +parameters \( \boldsymbol{\beta} \). We can add a regularization parameter \( \lambda \) by +defining a new cost function to be optimized, that is $$ -\boldsymbol{\beta}^{\mathrm{Ridge}} = \left(\boldsymbol{X}^T\boldsymbol{X}+\lambda\boldsymbol{I}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}, +{\displaystyle \min_{\boldsymbol{\beta}\in +{\mathbb{R}}^{p}}}\frac{1}{n}\vert\vert \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\vert\vert_2^2+\lambda\vert\vert \boldsymbol{\beta}\vert\vert_2^2 $$

    -with \( \boldsymbol{I} \) being a \( p\times p \) identity matrix with the constraint that +which leads to the Ridge regression minimization problem where we +require that \( \vert\vert \boldsymbol{\beta}\vert\vert_2^2\le t \), where \( t \) is +a finite number larger than zero. By defining $$ -\sum_{i=0}^{p-1} \beta_i^2 \leq t, +C(\boldsymbol{X},\boldsymbol{\beta})=\frac{1}{n}\vert\vert \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\vert\vert_2^2+\lambda\vert\vert \boldsymbol{\beta}\vert\vert_1, $$

    -with \( t \) a finite positive number. +we have a new optimization equation +$$ +{\displaystyle \min_{\boldsymbol{\beta}\in +{\mathbb{R}}^{p}}}\frac{1}{n}\vert\vert \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\vert\vert_2^2+\lambda\vert\vert \boldsymbol{\beta}\vert\vert_1 +$$ + +which leads to Lasso regression. Lasso stands for least absolute shrinkage and selection operator.

    -We see that Ridge regression is nothing but the standard -OLS with a modified diagonal term added to \( \boldsymbol{X}^T\boldsymbol{X} \). The -consequences, in particular for our discussion of the bias-variance tradeoff -are rather interesting. - -

    -Furthermore, if we use the result above in terms of the SVD decomposition (our analysis was done for the OLS method), we had +Here we have defined the norm-1 as $$ -(\boldsymbol{X}\boldsymbol{X}^T)\boldsymbol{U} = \boldsymbol{U}\boldsymbol{D}. +\vert\vert \boldsymbol{x}\vert\vert_1 = \sum_i \vert x_i\vert. $$ -

    -We can analyse the OLS solutions in terms of the eigenvectors (the columns) of the right singular value matrix \( \boldsymbol{U} \) as -$$ -\boldsymbol{X}\boldsymbol{\beta} = \boldsymbol{X}\left(\boldsymbol{V}\boldsymbol{D}\boldsymbol{V}^T \right)^{-1}\boldsymbol{X}^T\boldsymbol{y}=\boldsymbol{U\Sigma V^T}\left(\boldsymbol{V}\boldsymbol{D}\boldsymbol{V}^T \right)^{-1}(\boldsymbol{U\Sigma V^T})^T\boldsymbol{y}=\boldsymbol{U}\boldsymbol{U}^T\boldsymbol{y} -$$ - -

    -For Ridge regression this becomes - -$$ -\boldsymbol{X}\boldsymbol{\beta}^{\mathrm{Ridge}} = \boldsymbol{U\Sigma V^T}\left(\boldsymbol{V}\boldsymbol{D}\boldsymbol{V}^T+\lambda\boldsymbol{I} \right)^{-1}(\boldsymbol{U\Sigma V^T})^T\boldsymbol{y}=\sum_{j=0}^{p-1}\boldsymbol{u}_j\boldsymbol{u}_j^T\frac{\sigma_j^2}{\sigma_j^2+\lambda}\boldsymbol{y}, -$$ - -

    -with the vectors \( \boldsymbol{u}_j \) being the columns of \( \boldsymbol{U} \). -

    @@ -488,7 +489,7 @@ with the vectors \( \boldsymbol{u}_j \) being the columns of \( \boldsymbol{U} \

  • 48
  • 49
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs040.html b/doc/pub/Regression/html/._Regression-bs040.html index a01b07d45..840fa6e26 100644 --- a/doc/pub/Regression/html/._Regression-bs040.html +++ b/doc/pub/Regression/html/._Regression-bs040.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,26 +408,61 @@ MathJax.Hub.Config({ -

    Interpreting the Ridge results

    +

    More on Ridge Regression

    -Since \( \lambda \geq 0 \), it means that compared to OLS, we have +Using the matrix-vector expression for Ridge regression, $$ -\frac{\sigma_j^2}{\sigma_j^2+\lambda} \leq 1. +C(\boldsymbol{X},\boldsymbol{\beta})=\frac{1}{n}\left\{(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})^T(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})\right\}+\lambda\boldsymbol{\beta}^T\boldsymbol{\beta}, $$

    -Ridge regression finds the coordinates of \( \boldsymbol{y} \) with respect to the -orthonormal basis \( \boldsymbol{U} \), it then shrinks the coordinates by -\( \frac{\sigma_j^2}{\sigma_j^2+\lambda} \). Recall that the SVD has -eigenvalues ordered in a descending way, that is \( \sigma_i \geq -\sigma_{i+1} \). +by taking the derivatives with respect to \( \boldsymbol{\beta} \) we obtain then +a slightly modified matrix inversion problem which for finite values +of \( \lambda \) does not suffer from singularity problems. We obtain + +$$ +\boldsymbol{\beta}^{\mathrm{Ridge}} = \left(\boldsymbol{X}^T\boldsymbol{X}+\lambda\boldsymbol{I}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}, +$$

    -For small eigenvalues \( \sigma_i \) it means that their contributions become less important, a fact which can be used to reduce the number of degrees of freedom. -Actually, calculating the variance of \( \boldsymbol{X}\boldsymbol{v}_j \) shows that this quantity is equal to \( \sigma_j^2/n \). -With a parameter \( \lambda \) we can thus shrink the role of specific parameters. +with \( \boldsymbol{I} \) being a \( p\times p \) identity matrix with the constraint that + +$$ +\sum_{i=0}^{p-1} \beta_i^2 \leq t, +$$ + +

    +with \( t \) a finite positive number. + +

    +We see that Ridge regression is nothing but the standard +OLS with a modified diagonal term added to \( \boldsymbol{X}^T\boldsymbol{X} \). The +consequences, in particular for our discussion of the bias-variance tradeoff +are rather interesting. + +

    +Furthermore, if we use the result above in terms of the SVD decomposition (our analysis was done for the OLS method), we had +$$ +(\boldsymbol{X}\boldsymbol{X}^T)\boldsymbol{U} = \boldsymbol{U}\boldsymbol{D}. +$$ + +

    +We can analyse the OLS solutions in terms of the eigenvectors (the columns) of the right singular value matrix \( \boldsymbol{U} \) as +$$ +\boldsymbol{X}\boldsymbol{\beta} = \boldsymbol{X}\left(\boldsymbol{V}\boldsymbol{D}\boldsymbol{V}^T \right)^{-1}\boldsymbol{X}^T\boldsymbol{y}=\boldsymbol{U\Sigma V^T}\left(\boldsymbol{V}\boldsymbol{D}\boldsymbol{V}^T \right)^{-1}(\boldsymbol{U\Sigma V^T})^T\boldsymbol{y}=\boldsymbol{U}\boldsymbol{U}^T\boldsymbol{y} +$$ + +

    +For Ridge regression this becomes + +$$ +\boldsymbol{X}\boldsymbol{\beta}^{\mathrm{Ridge}} = \boldsymbol{U\Sigma V^T}\left(\boldsymbol{V}\boldsymbol{D}\boldsymbol{V}^T+\lambda\boldsymbol{I} \right)^{-1}(\boldsymbol{U\Sigma V^T})^T\boldsymbol{y}=\sum_{j=0}^{p-1}\boldsymbol{u}_j\boldsymbol{u}_j^T\frac{\sigma_j^2}{\sigma_j^2+\lambda}\boldsymbol{y}, +$$ + +

    +with the vectors \( \boldsymbol{u}_j \) being the columns of \( \boldsymbol{U} \).

    @@ -453,7 +490,7 @@ With a parameter \( \lambda \) we can thus shrink the role of specific parameter

  • 49
  • 50
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs041.html b/doc/pub/Regression/html/._Regression-bs041.html index a085208a5..8d03e878b 100644 --- a/doc/pub/Regression/html/._Regression-bs041.html +++ b/doc/pub/Regression/html/._Regression-bs041.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,39 +408,26 @@ MathJax.Hub.Config({ -

    More interpretations

    +

    Interpreting the Ridge results

    -For the sake of simplicity, let us assume that the design matrix is orthonormal, that is +Since \( \lambda \geq 0 \), it means that compared to OLS, we have $$ -\boldsymbol{X}^T\boldsymbol{X}=(\boldsymbol{X}^T\boldsymbol{X})^{-1} =\boldsymbol{I}. +\frac{\sigma_j^2}{\sigma_j^2+\lambda} \leq 1. $$

    -In this case the standard OLS results in -$$ -\boldsymbol{\beta}^{\mathrm{OLS}} = \boldsymbol{X}^T\boldsymbol{y}=\sum_{i=0}^{p-1}\boldsymbol{u}_j\boldsymbol{u}_j^T\boldsymbol{y}, -$$ +Ridge regression finds the coordinates of \( \boldsymbol{y} \) with respect to the +orthonormal basis \( \boldsymbol{U} \), it then shrinks the coordinates by +\( \frac{\sigma_j^2}{\sigma_j^2+\lambda} \). Recall that the SVD has +eigenvalues ordered in a descending way, that is \( \sigma_i \geq +\sigma_{i+1} \).

    -and - -$$ -\boldsymbol{\beta}^{\mathrm{Ridge}} = \left(\boldsymbol{I}+\lambda\boldsymbol{I}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}=\left(1+\lambda\right)^{-1}\boldsymbol{\beta}^{\mathrm{OLS}}, -$$ - -

    -that is the Ridge estimator scales the OLS estimator by the inverse of a factor \( 1+\lambda \), and -the Ridge estimator converges to zero when the hyperparameter goes to -infinity. - -

    -We will come back to more interpreations after we have gone through some of the statistical analysis part. - -

    -For more discussions of Ridge and Lasso regression, Wessel van Wieringen's article is highly recommended. -Similarly, Mehta et al's article is also recommended. +For small eigenvalues \( \sigma_i \) it means that their contributions become less important, a fact which can be used to reduce the number of degrees of freedom. +Actually, calculating the variance of \( \boldsymbol{X}\boldsymbol{v}_j \) shows that this quantity is equal to \( \sigma_j^2/n \). +With a parameter \( \lambda \) we can thus shrink the role of specific parameters.

    @@ -466,7 +455,7 @@ Similarly, Mehta et al

  • 50
  • 51
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs042.html b/doc/pub/Regression/html/._Regression-bs042.html index f04e76545..c56e47ae7 100644 --- a/doc/pub/Regression/html/._Regression-bs042.html +++ b/doc/pub/Regression/html/._Regression-bs042.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,53 +408,39 @@ MathJax.Hub.Config({ -

    Codes for the SVD

    +

    More interpretations

    +For the sake of simplicity, let us assume that the design matrix is orthonormal, that is - -

    import numpy as np
    -# SVD inversion
    -def SVDinv(A):
    -    ''' Takes as input a numpy matrix A and returns inv(A) based on singular value decomposition (SVD).
    -    SVD is numerically more stable than the inversion algorithms provided by
    -    numpy and scipy.linalg at the cost of being slower.
    -    '''
    -    U, s, VT = np.linalg.svd(A)
    -#    print('test U')
    -#    print( (np.transpose(U) @ U - U @np.transpose(U)))
    -#    print('test VT')
    -#    print( (np.transpose(VT) @ VT - VT @np.transpose(VT)))
    -    print(U)
    -    print(s)
    -    print(VT)
    +$$
    +\boldsymbol{X}^T\boldsymbol{X}=(\boldsymbol{X}^T\boldsymbol{X})^{-1} =\boldsymbol{I}. 
    +$$
     
    -    D = np.zeros((len(U),len(VT)))
    -    for i in range(0,len(VT)):
    -        D[i,i]=s[i]
    -    UT = np.transpose(U); V = np.transpose(VT); invD = np.linalg.inv(D)
    -    return np.matmul(V,np.matmul(invD,UT))
    -
    -
    -X = np.array([ [1.0, -1.0, 2.0], [1.0, 0.0, 1.0], [1.0, 2.0, -1.0], [1.0, 1.0, 0.0] ])
    -print(X)
    -A = np.transpose(X) @ X
    -print(A)
    -# Brute force inversion of super-collinear matrix
    -#B = np.linalg.inv(A)
    -#print(B)
    -C = SVDinv(A)
    -print(C)
    -

    -The matrix \( \boldsymbol{X} \) has columns that are linearly dependent. The first -column is the row-wise sum of the other two columns. The rank of a -matrix (the column rank) is the dimension of space spanned by the -column vectors. The rank of the matrix is the number of linearly -independent columns, in this case just \( 2 \). We see this from the -singular values when running the above code. Running the standard -inversion algorithm for matrix inversion with \( \boldsymbol{X}^T\boldsymbol{X} \) results -in the program terminating due to a singular matrix. +In this case the standard OLS results in +$$ +\boldsymbol{\beta}^{\mathrm{OLS}} = \boldsymbol{X}^T\boldsymbol{y}=\sum_{i=0}^{p-1}\boldsymbol{u}_j\boldsymbol{u}_j^T\boldsymbol{y}, +$$ + +

    +and + +$$ +\boldsymbol{\beta}^{\mathrm{Ridge}} = \left(\boldsymbol{I}+\lambda\boldsymbol{I}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}=\left(1+\lambda\right)^{-1}\boldsymbol{\beta}^{\mathrm{OLS}}, +$$ + +

    +that is the Ridge estimator scales the OLS estimator by the inverse of a factor \( 1+\lambda \), and +the Ridge estimator converges to zero when the hyperparameter goes to +infinity. + +

    +We will come back to more interpreations after we have gone through some of the statistical analysis part. + +

    +For more discussions of Ridge and Lasso regression, Wessel van Wieringen's article is highly recommended. +Similarly, Mehta et al's article is also recommended.

    @@ -480,7 +468,7 @@ in the program terminating due to a singular matrix.

  • 51
  • 52
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs043.html b/doc/pub/Regression/html/._Regression-bs043.html index c6785bdff..72141e0d8 100644 --- a/doc/pub/Regression/html/._Regression-bs043.html +++ b/doc/pub/Regression/html/._Regression-bs043.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,23 +406,55 @@ MathJax.Hub.Config({

     

     

     

    - + -

    A better understanding of regularization

    +

    Codes for the SVD

    -The parameter \( \lambda \) that we have introduced in the Ridge (and -Lasso as well) regression is often called a regularization parameter -or shrinkage parameter. It is common to call it a hyperparameter. What does it mean mathemtically? + +

    import numpy as np
    +# SVD inversion
    +def SVDinv(A):
    +    ''' Takes as input a numpy matrix A and returns inv(A) based on singular value decomposition (SVD).
    +    SVD is numerically more stable than the inversion algorithms provided by
    +    numpy and scipy.linalg at the cost of being slower.
    +    '''
    +    U, s, VT = np.linalg.svd(A)
    +#    print('test U')
    +#    print( (np.transpose(U) @ U - U @np.transpose(U)))
    +#    print('test VT')
    +#    print( (np.transpose(VT) @ VT - VT @np.transpose(VT)))
    +    print(U)
    +    print(s)
    +    print(VT)
    +
    +    D = np.zeros((len(U),len(VT)))
    +    for i in range(0,len(VT)):
    +        D[i,i]=s[i]
    +    UT = np.transpose(U); V = np.transpose(VT); invD = np.linalg.inv(D)
    +    return np.matmul(V,np.matmul(invD,UT))
    +
    +
    +X = np.array([ [1.0, -1.0, 2.0], [1.0, 0.0, 1.0], [1.0, 2.0, -1.0], [1.0, 1.0, 0.0] ])
    +print(X)
    +A = np.transpose(X) @ X
    +print(A)
    +# Brute force inversion of super-collinear matrix
    +#B = np.linalg.inv(A)
    +#print(B)
    +C = SVDinv(A)
    +print(C)
    +

    -Here we will first look at how to analyze the difference between the -standard OLS equations and the Ridge expressions in terms of a linear -algebra analysis using the SVD algorithm. Thereafter, we will link -(see the material on the bias-variance tradeoff below) these -observation to the statisical analysis of the results. In particular -we consider how the variance of the parameters \( \boldsymbol{\beta} \) is -affected by changing the parameter \( \lambda \). +The matrix \( \boldsymbol{X} \) has columns that are linearly dependent. The first +column is the row-wise sum of the other two columns. The rank of a +matrix (the column rank) is the dimension of space spanned by the +column vectors. The rank of the matrix is the number of linearly +independent columns, in this case just \( 2 \). We see this from the +singular values when running the above code. Running the standard +inversion algorithm for matrix inversion with \( \boldsymbol{X}^T\boldsymbol{X} \) results +in the program terminating due to a singular matrix.

    @@ -448,7 +482,7 @@ affected by changing the parameter \( \lambda \).

  • 52
  • 53
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs044.html b/doc/pub/Regression/html/._Regression-bs044.html index 0fd4f57b9..9bb293f72 100644 --- a/doc/pub/Regression/html/._Regression-bs044.html +++ b/doc/pub/Regression/html/._Regression-bs044.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,24 +406,23 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Decomposing the OLS and Ridge expressions

    +

    A better understanding of regularization

    -We have our design matrix - \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \). With the SVD we decompose it as - -$$ -\boldsymbol{X} = \boldsymbol{U\Sigma V^T}, -$$ +The parameter \( \lambda \) that we have introduced in the Ridge (and +Lasso as well) regression is often called a regularization parameter +or shrinkage parameter. It is common to call it a hyperparameter. What does it mean mathemtically?

    -with \( \boldsymbol{U}\in {\mathbb{R}}^{n\times n} \), \( \boldsymbol{\Sigma}\in {\mathbb{R}}^{n\times p} \) -and \( \boldsymbol{V}\in {\mathbb{R}}^{p\times p} \). - -

    -The matrices \( \boldsymbol{U} \) and \( \boldsymbol{V} \) are unitary/orthonormal matrices, that is in case the matrices are real we have \( \boldsymbol{U}^T\boldsymbol{U}=\boldsymbol{U}\boldsymbol{U}^T=\boldsymbol{I} \) and \( \boldsymbol{V}^T\boldsymbol{V}=\boldsymbol{V}\boldsymbol{V}^T=\boldsymbol{I} \). +Here we will first look at how to analyze the difference between the +standard OLS equations and the Ridge expressions in terms of a linear +algebra analysis using the SVD algorithm. Thereafter, we will link +(see the material on the bias-variance tradeoff below) these +observation to the statisical analysis of the results. In particular +we consider how the variance of the parameters \( \boldsymbol{\beta} \) is +affected by changing the parameter \( \lambda \).

    @@ -449,7 +450,7 @@ The matrices \( \boldsymbol{U} \) and \( \boldsymbol{V} \) are unitary/orthonorm

  • 53
  • 54
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs045.html b/doc/pub/Regression/html/._Regression-bs045.html index 705611a4f..4fdebb9bb 100644 --- a/doc/pub/Regression/html/._Regression-bs045.html +++ b/doc/pub/Regression/html/._Regression-bs045.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,10 +408,22 @@ MathJax.Hub.Config({ -

    Spectral Decomposition of the OLS

    +

    Decomposing the OLS and Ridge expressions

    -More material to be added here +We have our design matrix + \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \). With the SVD we decompose it as + +$$ +\boldsymbol{X} = \boldsymbol{U\Sigma V^T}, +$$ + +

    +with \( \boldsymbol{U}\in {\mathbb{R}}^{n\times n} \), \( \boldsymbol{\Sigma}\in {\mathbb{R}}^{n\times p} \) +and \( \boldsymbol{V}\in {\mathbb{R}}^{p\times p} \). + +

    +The matrices \( \boldsymbol{U} \) and \( \boldsymbol{V} \) are unitary/orthonormal matrices, that is in case the matrices are real we have \( \boldsymbol{U}^T\boldsymbol{U}=\boldsymbol{U}\boldsymbol{U}^T=\boldsymbol{I} \) and \( \boldsymbol{V}^T\boldsymbol{V}=\boldsymbol{V}\boldsymbol{V}^T=\boldsymbol{I} \).

    @@ -437,7 +451,7 @@ More material to be added here

  • 54
  • 55
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs046.html b/doc/pub/Regression/html/._Regression-bs046.html index 7c686cf6b..12d39b054 100644 --- a/doc/pub/Regression/html/._Regression-bs046.html +++ b/doc/pub/Regression/html/._Regression-bs046.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,19 +408,10 @@ MathJax.Hub.Config({ -

    Where are we going?

    +

    Spectral Decomposition of the OLS

    -Before we proceed, we need to rethink what we have been doing. In our -eager to fit the data, we have omitted several important elements in -our regression analysis. In what follows we will - -

      -
    1. look at statistical properties, including a discussion of mean values, variance and the so-called bias-variance tradeoff
    2. -
    3. introduce resampling techniques like cross-validation, bootstrapping and jackknife and more
    4. -
    - -This will allow us to link the standard linear algebra methods we have discussed above to a statistical interpretation of the methods. +More material to be added here

    @@ -446,7 +439,7 @@ This will allow us to link the standard linear algebra methods we have discussed

  • 55
  • 56
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs047.html b/doc/pub/Regression/html/._Regression-bs047.html index c24e3df73..648ad2c91 100644 --- a/doc/pub/Regression/html/._Regression-bs047.html +++ b/doc/pub/Regression/html/._Regression-bs047.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,36 +408,19 @@ MathJax.Hub.Config({ -

    Resampling methods

    -
    -
    -

    -Resampling methods are an indispensable tool in modern -statistics. They involve repeatedly drawing samples from a training -set and refitting a model of interest on each sample in order to -obtain additional information about the fitted model. For example, in -order to estimate the variability of a linear regression fit, we can -repeatedly draw different samples from the training data, fit a linear -regression to each new sample, and then examine the extent to which -the resulting fits differ. Such an approach may allow us to obtain -information that would not be available from fitting the model only -once using the original training sample. +

    Where are we going?

    -Two resampling methods are often used in Machine Learning analyses, +Before we proceed, we need to rethink what we have been doing. In our +eager to fit the data, we have omitted several important elements in +our regression analysis. In what follows we will

      -
    1. The bootstrap method
    2. -
    3. and Cross-Validation
    4. +
    5. look at statistical properties, including a discussion of mean values, variance and the so-called bias-variance tradeoff
    6. +
    7. introduce resampling techniques like cross-validation, bootstrapping and jackknife and more
    -In addition there are several other methods such as the Jackknife and the Blocking methods. We will discuss in particular -cross-validation and the bootstrap method. - -

    -

    -
    - +This will allow us to link the standard linear algebra methods we have discussed above to a statistical interpretation of the methods.

    @@ -463,7 +448,7 @@ cross-validation and the bootstrap method.

  • 56
  • 57
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs048.html b/doc/pub/Regression/html/._Regression-bs048.html index f39a9154f..584a659f3 100644 --- a/doc/pub/Regression/html/._Regression-bs048.html +++ b/doc/pub/Regression/html/._Regression-bs048.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,27 +408,31 @@ MathJax.Hub.Config({ -

    Resampling approaches can be computationally expensive

    +

    Resampling methods

    +Resampling methods are an indispensable tool in modern +statistics. They involve repeatedly drawing samples from a training +set and refitting a model of interest on each sample in order to +obtain additional information about the fitted model. For example, in +order to estimate the variability of a linear regression fit, we can +repeatedly draw different samples from the training data, fit a linear +regression to each new sample, and then examine the extent to which +the resulting fits differ. Such an approach may allow us to obtain +information that would not be available from fitting the model only +once using the original training sample.

    -Resampling approaches can be computationally expensive, because they -involve fitting the same statistical method multiple times using -different subsets of the training data. However, due to recent -advances in computing power, the computational requirements of -resampling methods generally are not prohibitive. In this chapter, we -discuss two of the most commonly used resampling methods, -cross-validation and the bootstrap. Both methods are important tools -in the practical application of many statistical learning -procedures. For example, cross-validation can be used to estimate the -test error associated with a given statistical learning method in -order to evaluate its performance, or to select the appropriate level -of flexibility. The process of evaluating a model’s performance is -known as model assessment, whereas the process of selecting the proper -level of flexibility for a model is known as model selection. The -bootstrap is widely used. +Two resampling methods are often used in Machine Learning analyses, + +

      +
    1. The bootstrap method
    2. +
    3. and Cross-Validation
    4. +
    + +In addition there are several other methods such as the Jackknife and the Blocking methods. We will discuss in particular +cross-validation and the bootstrap method.

    @@ -459,7 +465,7 @@ bootstrap is widely used.
  • 57
  • 58
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs049.html b/doc/pub/Regression/html/._Regression-bs049.html index 8494cbb6e..d64108f1e 100644 --- a/doc/pub/Regression/html/._Regression-bs049.html +++ b/doc/pub/Regression/html/._Regression-bs049.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,16 +408,29 @@ MathJax.Hub.Config({ -

    Why resampling methods ?

    +

    Resampling approaches can be computationally expensive

    -

      -
    • Our simulations can be treated as computer experiments. This is particularly the case for Monte Carlo methods
    • -
    • The results can be analysed with the same statistical tools as we would use analysing experimental data.
    • -
    • As in all experiments, we are looking for expectation values and an estimate of how accurate they are, i.e., possible sources for errors.
    • -
    +

    +Resampling approaches can be computationally expensive, because they +involve fitting the same statistical method multiple times using +different subsets of the training data. However, due to recent +advances in computing power, the computational requirements of +resampling methods generally are not prohibitive. In this chapter, we +discuss two of the most commonly used resampling methods, +cross-validation and the bootstrap. Both methods are important tools +in the practical application of many statistical learning +procedures. For example, cross-validation can be used to estimate the +test error associated with a given statistical learning method in +order to evaluate its performance, or to select the appropriate level +of flexibility. The process of evaluating a model’s performance is +known as model assessment, whereas the process of selecting the proper +level of flexibility for a model is known as model selection. The +bootstrap is widely used. + +

    @@ -446,7 +461,7 @@ MathJax.Hub.Config({
  • 58
  • 59
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs050.html b/doc/pub/Regression/html/._Regression-bs050.html index a0d798642..806c8bb82 100644 --- a/doc/pub/Regression/html/._Regression-bs050.html +++ b/doc/pub/Regression/html/._Regression-bs050.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,21 +408,15 @@ MathJax.Hub.Config({ -

    Statistical analysis

    +

    Why resampling methods ?

      -
    • As in other experiments, many numerical experiments have two classes of errors:
    • - -
        -
      • Statistical errors
      • -
      • Systematical errors
      • -
      - -
    • Statistical errors can be estimated using standard tools from statistics
    • -
    • Systematical errors are method specific and must be treated differently from case to case.
    • +
    • Our simulations can be treated as computer experiments. This is particularly the case for Monte Carlo methods
    • +
    • The results can be analysed with the same statistical tools as we would use analysing experimental data.
    • +
    • As in all experiments, we are looking for expectation values and an estimate of how accurate they are, i.e., possible sources for errors.
    @@ -452,7 +448,7 @@ MathJax.Hub.Config({
  • 59
  • 60
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs051.html b/doc/pub/Regression/html/._Regression-bs051.html index ef8a562a5..f1ffce90d 100644 --- a/doc/pub/Regression/html/._Regression-bs051.html +++ b/doc/pub/Regression/html/._Regression-bs051.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,31 +408,22 @@ MathJax.Hub.Config({ -

    Statistics

    +

    Statistical analysis

    -The probability distribution function (PDF) is a function -\( p(x) \) on the domain which, in the discrete case, gives us the -probability or relative frequency with which these values of \( X \) occur: -$$ -p(x) = \mathrm{prob}(X=x) -$$ -In the continuous case, the PDF does not directly depict the -actual probability. Instead we define the probability for the -stochastic variable to assume any value on an infinitesimal interval -around \( x \) to be \( p(x)dx \). The continuous function \( p(x) \) then gives us -the density of the probability rather than the probability -itself. The probability for a stochastic variable to assume any value -on a non-infinitesimal interval \( [a,\,b] \) is then just the integral: -$$ -\mathrm{prob}(a\leq X\leq b) = \int_a^b p(x)dx -$$ +

      +
    • As in other experiments, many numerical experiments have two classes of errors:
    • -Qualitatively speaking, a stochastic variable represents the values of -numbers chosen as if by chance from some specified PDF so that the -selection of a large set of these numbers reproduces this PDF. +
        +
      • Statistical errors
      • +
      • Systematical errors
      • +
      + +
    • Statistical errors can be estimated using standard tools from statistics
    • +
    • Systematical errors are method specific and must be treated differently from case to case.
    • +
    @@ -461,7 +454,7 @@ selection of a large set of these numbers reproduces this PDF.
  • 60
  • 61
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs052.html b/doc/pub/Regression/html/._Regression-bs052.html index 890915f85..a6a48cb67 100644 --- a/doc/pub/Regression/html/._Regression-bs052.html +++ b/doc/pub/Regression/html/._Regression-bs052.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,23 +408,31 @@ MathJax.Hub.Config({ -

    Statistics, moments

    +

    Statistics

    -A particularly useful class of special expectation values are the -moments. The \( n \)-th moment of the PDF \( p \) is defined as -follows: +The probability distribution function (PDF) is a function +\( p(x) \) on the domain which, in the discrete case, gives us the +probability or relative frequency with which these values of \( X \) occur: $$ -\langle x^n\rangle \equiv \int\! x^n p(x)\,dx +p(x) = \mathrm{prob}(X=x) $$ -The zero-th moment \( \langle 1\rangle \) is just the normalization condition of -\( p \). The first moment, \( \langle x\rangle \), is called the mean of \( p \) -and often denoted by the letter \( \mu \): +In the continuous case, the PDF does not directly depict the +actual probability. Instead we define the probability for the +stochastic variable to assume any value on an infinitesimal interval +around \( x \) to be \( p(x)dx \). The continuous function \( p(x) \) then gives us +the density of the probability rather than the probability +itself. The probability for a stochastic variable to assume any value +on a non-infinitesimal interval \( [a,\,b] \) is then just the integral: $$ -\langle x\rangle = \mu \equiv \int\! x p(x)\,dx +\mathrm{prob}(a\leq X\leq b) = \int_a^b p(x)dx $$ + +Qualitatively speaking, a stochastic variable represents the values of +numbers chosen as if by chance from some specified PDF so that the +selection of a large set of these numbers reproduces this PDF.

    @@ -453,7 +463,7 @@ $$
  • 61
  • 62
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs053.html b/doc/pub/Regression/html/._Regression-bs053.html index f6ce4b4d5..bafdabc27 100644 --- a/doc/pub/Regression/html/._Regression-bs053.html +++ b/doc/pub/Regression/html/._Regression-bs053.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,38 +408,23 @@ MathJax.Hub.Config({ -

    Statistics, central moments

    +

    Statistics, moments

    -A special version of the moments is the set of central moments, -the n-th central moment defined as: +A particularly useful class of special expectation values are the +moments. The \( n \)-th moment of the PDF \( p \) is defined as +follows: $$ -\langle (x-\langle x \rangle )^n\rangle \equiv \int\! (x-\langle x\rangle)^n p(x)\,dx +\langle x^n\rangle \equiv \int\! x^n p(x)\,dx $$ -The zero-th and first central moments are both trivial, equal \( 1 \) and -\( 0 \), respectively. But the second central moment, known as the -variance of \( p \), is of particular interest. For the stochastic -variable \( X \), the variance is denoted as \( \sigma^2_X \) or \( \mathrm{var}(X) \): +The zero-th moment \( \langle 1\rangle \) is just the normalization condition of +\( p \). The first moment, \( \langle x\rangle \), is called the mean of \( p \) +and often denoted by the letter \( \mu \): $$ -\begin{align} -\sigma^2_X\ \ =\ \ \mathrm{var}(X) & = \langle (x-\langle x\rangle)^2\rangle = -\int\! (x-\langle x\rangle)^2 p(x)\,dx -\tag{2}\\ -& = \int\! \left(x^2 - 2 x \langle x\rangle^{2} + - \langle x\rangle^2\right)p(x)\,dx -\tag{3}\\ -& = \langle x^2\rangle - 2 \langle x\rangle\langle x\rangle + \langle x\rangle^2 -\tag{4}\\ -& = \langle x^2\rangle - \langle x\rangle^2 -\tag{5} -\end{align} +\langle x\rangle = \mu \equiv \int\! x p(x)\,dx $$ - -The square root of the variance, \( \sigma =\sqrt{\langle (x-\langle x\rangle)^2\rangle} \) is called the standard deviation of \( p \). It is clearly just the RMS (root-mean-square) -value of the deviation of the PDF from its mean value, interpreted -qualitatively as the spread of \( p \) around its mean.

    @@ -468,7 +455,7 @@ qualitatively as the spread of \( p \) around its mean.
  • 62
  • 63
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs054.html b/doc/pub/Regression/html/._Regression-bs054.html index cbbb56dcf..3bbca1f68 100644 --- a/doc/pub/Regression/html/._Regression-bs054.html +++ b/doc/pub/Regression/html/._Regression-bs054.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,31 +408,38 @@ MathJax.Hub.Config({ -

    Statistics, covariance

    +

    Statistics, central moments

    -Another important quantity is the so called covariance, a variant of -the above defined variance. Consider again the set \( \{X_i\} \) of \( n \) -stochastic variables (not necessarily uncorrelated) with the -multivariate PDF \( P(x_1,\dots,x_n) \). The covariance of two -of the stochastic variables, \( X_i \) and \( X_j \), is defined as follows: +A special version of the moments is the set of central moments, +the n-th central moment defined as: +$$ +\langle (x-\langle x \rangle )^n\rangle \equiv \int\! (x-\langle x\rangle)^n p(x)\,dx +$$ + +The zero-th and first central moments are both trivial, equal \( 1 \) and +\( 0 \), respectively. But the second central moment, known as the +variance of \( p \), is of particular interest. For the stochastic +variable \( X \), the variance is denoted as \( \sigma^2_X \) or \( \mathrm{var}(X) \): $$ \begin{align} -\mathrm{cov}(X_i,\,X_j) &\equiv \langle (x_i-\langle x_i\rangle)(x_j-\langle x_j\rangle)\rangle -\nonumber\\ -&= -\int\!\cdots\!\int\!(x_i-\langle x_i \rangle)(x_j-\langle x_j \rangle)\, -P(x_1,\dots,x_n)\,dx_1\dots dx_n -\tag{6} +\sigma^2_X\ \ =\ \ \mathrm{var}(X) & = \langle (x-\langle x\rangle)^2\rangle = +\int\! (x-\langle x\rangle)^2 p(x)\,dx +\tag{2}\\ +& = \int\! \left(x^2 - 2 x \langle x\rangle^{2} + + \langle x\rangle^2\right)p(x)\,dx +\tag{3}\\ +& = \langle x^2\rangle - 2 \langle x\rangle\langle x\rangle + \langle x\rangle^2 +\tag{4}\\ +& = \langle x^2\rangle - \langle x\rangle^2 +\tag{5} \end{align} $$ -with -$$ -\langle x_i\rangle = -\int\!\cdots\!\int\!x_i\,P(x_1,\dots,x_n)\,dx_1\dots dx_n -$$ +The square root of the variance, \( \sigma =\sqrt{\langle (x-\langle x\rangle)^2\rangle} \) is called the standard deviation of \( p \). It is clearly just the RMS (root-mean-square) +value of the deviation of the PDF from its mean value, interpreted +qualitatively as the spread of \( p \) around its mean.

    @@ -461,7 +470,7 @@ $$
  • 63
  • 64
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs055.html b/doc/pub/Regression/html/._Regression-bs055.html index e082de228..a82016283 100644 --- a/doc/pub/Regression/html/._Regression-bs055.html +++ b/doc/pub/Regression/html/._Regression-bs055.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,32 +408,31 @@ MathJax.Hub.Config({ -

    Statistics, more covariance

    +

    Statistics, covariance

    -If we consider the above covariance as a matrix \( C_{ij}=\mathrm{cov}(X_i,\,X_j) \), then the diagonal elements are just the familiar -variances, \( C_{ii} = \mathrm{cov}(X_i,\,X_i) = \mathrm{var}(X_i) \). It turns out that -all the off-diagonal elements are zero if the stochastic variables are -uncorrelated. This is easy to show, keeping in mind the linearity of -the expectation value. Consider the stochastic variables \( X_i \) and -\( X_j \), (\( i\neq j \)): +Another important quantity is the so called covariance, a variant of +the above defined variance. Consider again the set \( \{X_i\} \) of \( n \) +stochastic variables (not necessarily uncorrelated) with the +multivariate PDF \( P(x_1,\dots,x_n) \). The covariance of two +of the stochastic variables, \( X_i \) and \( X_j \), is defined as follows: $$ \begin{align} -\mathrm{cov}(X_i,\,X_j) &= \langle(x_i-\langle x_i\rangle)(x_j-\langle x_j\rangle)\rangle -\tag{7}\\ -&=\langle x_i x_j - x_i\langle x_j\rangle - \langle x_i\rangle x_j + \langle x_i\rangle\langle x_j\rangle\rangle -\tag{8}\\ -&=\langle x_i x_j\rangle - \langle x_i\langle x_j\rangle\rangle - \langle \langle x_i\rangle x_j\rangle + -\langle \langle x_i\rangle\langle x_j\rangle\rangle -\tag{9}\\ -&=\langle x_i x_j\rangle - \langle x_i\rangle\langle x_j\rangle - \langle x_i\rangle\langle x_j\rangle + -\langle x_i\rangle\langle x_j\rangle -\tag{10}\\ -&=\langle x_i x_j\rangle - \langle x_i\rangle\langle x_j\rangle -\tag{11} +\mathrm{cov}(X_i,\,X_j) &\equiv \langle (x_i-\langle x_i\rangle)(x_j-\langle x_j\rangle)\rangle +\nonumber\\ +&= +\int\!\cdots\!\int\!(x_i-\langle x_i \rangle)(x_j-\langle x_j \rangle)\, +P(x_1,\dots,x_n)\,dx_1\dots dx_n +\tag{6} \end{align} $$ + +with +$$ +\langle x_i\rangle = +\int\!\cdots\!\int\!x_i\,P(x_1,\dots,x_n)\,dx_1\dots dx_n +$$

    @@ -462,7 +463,7 @@ $$
  • 64
  • 65
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs056.html b/doc/pub/Regression/html/._Regression-bs056.html index ec6b7ec27..bc9a92b5b 100644 --- a/doc/pub/Regression/html/._Regression-bs056.html +++ b/doc/pub/Regression/html/._Regression-bs056.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,51 +408,35 @@ MathJax.Hub.Config({ -

    Covariance example

    - -

    -Suppose we have defined three vectors \( \hat{x}, \hat{y}, \hat{z} \) with -\( n \) elements each. The covariance matrix is defined as - +

    Statistics, more covariance

    +
    +
    +

    +If we consider the above covariance as a matrix \( C_{ij}=\mathrm{cov}(X_i,\,X_j) \), then the diagonal elements are just the familiar +variances, \( C_{ii} = \mathrm{cov}(X_i,\,X_i) = \mathrm{var}(X_i) \). It turns out that +all the off-diagonal elements are zero if the stochastic variables are +uncorrelated. This is easy to show, keeping in mind the linearity of +the expectation value. Consider the stochastic variables \( X_i \) and +\( X_j \), (\( i\neq j \)): $$ -\hat{\Sigma} = \begin{bmatrix} \sigma_{xx} & \sigma_{xy} & \sigma_{xz} \\ - \sigma_{yx} & \sigma_{yy} & \sigma_{yz} \\ - \sigma_{zx} & \sigma_{zy} & \sigma_{zz} - \end{bmatrix}, +\begin{align} +\mathrm{cov}(X_i,\,X_j) &= \langle(x_i-\langle x_i\rangle)(x_j-\langle x_j\rangle)\rangle +\tag{7}\\ +&=\langle x_i x_j - x_i\langle x_j\rangle - \langle x_i\rangle x_j + \langle x_i\rangle\langle x_j\rangle\rangle +\tag{8}\\ +&=\langle x_i x_j\rangle - \langle x_i\langle x_j\rangle\rangle - \langle \langle x_i\rangle x_j\rangle + +\langle \langle x_i\rangle\langle x_j\rangle\rangle +\tag{9}\\ +&=\langle x_i x_j\rangle - \langle x_i\rangle\langle x_j\rangle - \langle x_i\rangle\langle x_j\rangle + +\langle x_i\rangle\langle x_j\rangle +\tag{10}\\ +&=\langle x_i x_j\rangle - \langle x_i\rangle\langle x_j\rangle +\tag{11} +\end{align} $$ +

    +
    -where for example -$$ -\sigma_{xy} =\frac{1}{n} \sum_{i=0}^{n-1}(x_i- \overline{x})(y_i- \overline{y}). -$$ - -

    -The Numpy function np.cov calculates the covariance elements using -the factor \( 1/(n-1) \) instead of \( 1/n \) since it assumes we do not have -the exact mean valu\ es. - -

    -The following simple function uses the np.vstack function which -takes each vector of dimension \( 1\times n \) and produces a \( 3\times n \) -matrix \( \hat{W} \) - -$$ -\hat{W} = \begin{bmatrix} x_0 & y_0 & z_0 \\ - x_1 & y_1 & z_1 \\ - x_2 & y_2 & z_2 \\ - \dots & \dots & \dots \\ - x_{n-2} & y_{n-2} & z_{n-2} \\ - x_{n-1} & y_{n-1} & z_{n-1} - \end{bmatrix}, -$$ - -

    -which in turn is converted into into the \( 3\times 3 \) covariance matrix -\( \hat{\Sigma} \) via the Numpy function np.cov(). We note that we can -also calculate the mean value of each set of samples \( \hat{x} \) etc -using the Numpy function np.mean(x). We can also extract the -eigenvalues of the covariance matrix through the np.linalg.eig() -function.

    @@ -478,7 +464,7 @@ function.

  • 65
  • 66
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs057.html b/doc/pub/Regression/html/._Regression-bs057.html index d4c28da77..18a9b9520 100644 --- a/doc/pub/Regression/html/._Regression-bs057.html +++ b/doc/pub/Regression/html/._Regression-bs057.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,42 +408,52 @@ MathJax.Hub.Config({ -

    Covariance in numpy

    +

    Covariance example

    +Suppose we have defined three vectors \( \boldsymbol{x}, \boldsymbol{y}, \boldsymbol{z} \) with +\( n \) elements each. The covariance matrix is defined as - -

    # Importing various packages
    -import numpy as np
    +$$
    +\boldsymbol{\Sigma} = \begin{bmatrix} \sigma_{xx} & \sigma_{xy} & \sigma_{xz} \\
    +                              \sigma_{yx} & \sigma_{yy} & \sigma_{yz} \\
    +                              \sigma_{zx} & \sigma_{zy} & \sigma_{zz}
    +             \end{bmatrix},
    +$$
    +
    +where for example
    +$$
    +\sigma_{xy} =\frac{1}{n} \sum_{i=0}^{n-1}(x_i- \overline{x})(y_i- \overline{y}).
    +$$
     
    -n = 100
    -x = np.random.normal(size=n)
    -print(np.mean(x))
    -y = 4+3*x+np.random.normal(size=n)
    -print(np.mean(y))
    -z = x**3+np.random.normal(size=n)
    -print(np.mean(z))
    -W = np.vstack((x, y, z))
    -Sigma = np.cov(W)
    -print(Sigma)
    -Eigvals, Eigvecs = np.linalg.eig(Sigma)
    -print(Eigvals)
    -

    +The Numpy function np.cov calculates the covariance elements using +the factor \( 1/(n-1) \) instead of \( 1/n \) since it assumes we do not have +the exact mean valu\ es. + +

    +The following simple function uses the np.vstack function which +takes each vector of dimension \( 1\times n \) and produces a \( 3\times n \) +matrix \( \boldsymbol{W} \) + +$$ +\boldsymbol{W} = \begin{bmatrix} x_0 & y_0 & z_0 \\ + x_1 & y_1 & z_1 \\ + x_2 & y_2 & z_2 \\ + \dots & \dots & \dots \\ + x_{n-2} & y_{n-2} & z_{n-2} \\ + x_{n-1} & y_{n-1} & z_{n-1} + \end{bmatrix}, +$$ + +

    +which in turn is converted into into the \( 3\times 3 \) covariance matrix +\( \boldsymbol{\Sigma} \) via the Numpy function np.cov(). We note that we can +also calculate the mean value of each set of samples \( \boldsymbol{x} \) etc +using the Numpy function np.mean(x). We can also extract the +eigenvalues of the covariance matrix through the np.linalg.eig() +function. - -

    import numpy as np
    -import matplotlib.pyplot as plt
    -from scipy import sparse
    -eye = np.eye(4)
    -print(eye)
    -sparse_mtx = sparse.csr_matrix(eye)
    -print(sparse_mtx)
    -x = np.linspace(-10,10,100)
    -y = np.sin(x)
    -plt.plot(x,y,marker='x')
    -plt.show()
    -

    @@ -468,7 +480,7 @@ plt.show()

  • 66
  • 67
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs058.html b/doc/pub/Regression/html/._Regression-bs058.html index 8017d1cfe..3c1a64162 100644 --- a/doc/pub/Regression/html/._Regression-bs058.html +++ b/doc/pub/Regression/html/._Regression-bs058.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,30 +408,42 @@ MathJax.Hub.Config({ -

    Statistics, independent variables

    -
    -
    -

    -If \( X_i \) and \( X_j \) are independent, we get -\( \langle x_i x_j\rangle =\langle x_i\rangle\langle x_j\rangle \), resulting in \( \mathrm{cov}(X_i, X_j) = 0\ \ (i\neq j) \). +

    Covariance in numpy

    -Also useful for us is the covariance of linear combinations of -stochastic variables. Let \( \{X_i\} \) and \( \{Y_i\} \) be two sets of -stochastic variables. Let also \( \{a_i\} \) and \( \{b_i\} \) be two sets of -scalars. Consider the linear combination: -$$ -U = \sum_i a_i X_i \qquad V = \sum_j b_j Y_j -$$ -By the linearity of the expectation value -$$ -\mathrm{cov}(U, V) = \sum_{i,j}a_i b_j \mathrm{cov}(X_i, Y_j) -$$ -

    -
    + +
    # Importing various packages
    +import numpy as np
     
    +n = 100
    +x = np.random.normal(size=n)
    +print(np.mean(x))
    +y = 4+3*x+np.random.normal(size=n)
    +print(np.mean(y))
    +z = x**3+np.random.normal(size=n)
    +print(np.mean(z))
    +W = np.vstack((x, y, z))
    +Sigma = np.cov(W)
    +print(Sigma)
    +Eigvals, Eigvecs = np.linalg.eig(Sigma)
    +print(Eigvals)
    +
    +

    + +

    import numpy as np
    +import matplotlib.pyplot as plt
    +from scipy import sparse
    +eye = np.eye(4)
    +print(eye)
    +sparse_mtx = sparse.csr_matrix(eye)
    +print(sparse_mtx)
    +x = np.linspace(-10,10,100)
    +y = np.sin(x)
    +plt.plot(x,y,marker='x')
    +plt.show()
    +

    @@ -456,7 +470,7 @@ $$

  • 67
  • 68
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs059.html b/doc/pub/Regression/html/._Regression-bs059.html index 669507d53..b092cdd47 100644 --- a/doc/pub/Regression/html/._Regression-bs059.html +++ b/doc/pub/Regression/html/._Regression-bs059.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,32 +408,26 @@ MathJax.Hub.Config({ -

    Statistics, more variance

    +

    Statistics, independent variables

    -Now, since the variance is just \( \mathrm{var}(X_i) = \mathrm{cov}(X_i, X_i) \), we get -the variance of the linear combination \( U = \sum_i a_i X_i \): +If \( X_i \) and \( X_j \) are independent, we get +\( \langle x_i x_j\rangle =\langle x_i\rangle\langle x_j\rangle \), resulting in \( \mathrm{cov}(X_i, X_j) = 0\ \ (i\neq j) \). + +

    +Also useful for us is the covariance of linear combinations of +stochastic variables. Let \( \{X_i\} \) and \( \{Y_i\} \) be two sets of +stochastic variables. Let also \( \{a_i\} \) and \( \{b_i\} \) be two sets of +scalars. Consider the linear combination: $$ -\begin{equation} -\mathrm{var}(U) = \sum_{i,j}a_i a_j \mathrm{cov}(X_i, X_j) -\tag{12} -\end{equation} +U = \sum_i a_i X_i \qquad V = \sum_j b_j Y_j $$ -And in the special case when the stochastic variables are -uncorrelated, the off-diagonal elements of the covariance are as we -know zero, resulting in: +By the linearity of the expectation value $$ -\mathrm{var}(U) = \sum_i a_i^2 \mathrm{cov}(X_i, X_i) = \sum_i a_i^2 \mathrm{var}(X_i) +\mathrm{cov}(U, V) = \sum_{i,j}a_i b_j \mathrm{cov}(X_i, Y_j) $$ - -$$ -\mathrm{var}(\sum_i a_i X_i) = \sum_i a_i^2 \mathrm{var}(X_i) -$$ - -which will become very useful in our study of the error in the mean -value of a set of measurements.

    @@ -462,7 +458,7 @@ value of a set of measurements.
  • 68
  • 69
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs060.html b/doc/pub/Regression/html/._Regression-bs060.html index dc2882697..4dbfe24bd 100644 --- a/doc/pub/Regression/html/._Regression-bs060.html +++ b/doc/pub/Regression/html/._Regression-bs060.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,28 +408,32 @@ MathJax.Hub.Config({ -

    Statistics and stochastic processes

    +

    Statistics, more variance

    -A stochastic process is a process that produces sequentially a -chain of values: +Now, since the variance is just \( \mathrm{var}(X_i) = \mathrm{cov}(X_i, X_i) \), we get +the variance of the linear combination \( U = \sum_i a_i X_i \): $$ -\{x_1, x_2,\dots\,x_k,\dots\}. +\begin{equation} +\mathrm{var}(U) = \sum_{i,j}a_i a_j \mathrm{cov}(X_i, X_j) +\tag{12} +\end{equation} $$ -We will call these -values our measurements and the entire set as our measured -sample. The action of measuring all the elements of a sample -we will call a stochastic experiment since, operationally, -they are often associated with results of empirical observation of -some physical or mathematical phenomena; precisely an experiment. We -assume that these values are distributed according to some -PDF \( p_X^{\phantom X}(x) \), where \( X \) is just the formal symbol for the -stochastic variable whose PDF is \( p_X^{\phantom X}(x) \). Instead of -trying to determine the full distribution \( p \) we are often only -interested in finding the few lowest moments, like the mean -\( \mu_X^{\phantom X} \) and the variance \( \sigma_X^{\phantom X} \). +And in the special case when the stochastic variables are +uncorrelated, the off-diagonal elements of the covariance are as we +know zero, resulting in: +$$ +\mathrm{var}(U) = \sum_i a_i^2 \mathrm{cov}(X_i, X_i) = \sum_i a_i^2 \mathrm{var}(X_i) +$$ + +$$ +\mathrm{var}(\sum_i a_i X_i) = \sum_i a_i^2 \mathrm{var}(X_i) +$$ + +which will become very useful in our study of the error in the mean +value of a set of measurements.

    @@ -458,7 +464,7 @@ interested in finding the few lowest moments, like the mean
  • 69
  • 70
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs061.html b/doc/pub/Regression/html/._Regression-bs061.html index fff8d49d7..923891eb4 100644 --- a/doc/pub/Regression/html/._Regression-bs061.html +++ b/doc/pub/Regression/html/._Regression-bs061.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,28 +406,30 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Statistics and sample variables

    +

    Statistics and stochastic processes

    -In practical situations a sample is always of finite size. Let that -size be \( n \). The expectation value of a sample, the sample mean, is then defined as follows: +A stochastic process is a process that produces sequentially a +chain of values: $$ -\bar{x}_n \equiv \frac{1}{n}\sum_{k=1}^n x_k +\{x_1, x_2,\dots\,x_k,\dots\}. $$ -The sample variance is: -$$ -\mathrm{var}(x) \equiv \frac{1}{n}\sum_{k=1}^n (x_k - \bar{x}_n)^2 -$$ - -its square root being the standard deviation of the sample. The -sample covariance is: -$$ -\mathrm{cov}(x)\equiv\frac{1}{n}\sum_{kl}(x_k - \bar{x}_n)(x_l - \bar{x}_n) -$$ +We will call these +values our measurements and the entire set as our measured +sample. The action of measuring all the elements of a sample +we will call a stochastic experiment since, operationally, +they are often associated with results of empirical observation of +some physical or mathematical phenomena; precisely an experiment. We +assume that these values are distributed according to some +PDF \( p_X^{\phantom X}(x) \), where \( X \) is just the formal symbol for the +stochastic variable whose PDF is \( p_X^{\phantom X}(x) \). Instead of +trying to determine the full distribution \( p \) we are often only +interested in finding the few lowest moments, like the mean +\( \mu_X^{\phantom X} \) and the variance \( \sigma_X^{\phantom X} \).

    @@ -456,7 +460,7 @@ $$
  • 70
  • 71
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs062.html b/doc/pub/Regression/html/._Regression-bs062.html index 04a927653..17e7e6b64 100644 --- a/doc/pub/Regression/html/._Regression-bs062.html +++ b/doc/pub/Regression/html/._Regression-bs062.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,23 +406,28 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Statistics, sample variance and covariance

    +

    Statistics and sample variables

    -Note that the sample variance is the sample covariance without the -cross terms. In a similar manner as the covariance in Eq. (6) is a measure of the correlation between -two stochastic variables, the above defined sample covariance is a -measure of the sequential correlation between succeeding measurements -of a sample. +In practical situations a sample is always of finite size. Let that +size be \( n \). The expectation value of a sample, the sample mean, is then defined as follows: +$$ +\bar{x}_n \equiv \frac{1}{n}\sum_{k=1}^n x_k +$$ -

    -These quantities, being known experimental values, differ -significantly from and must not be confused with the similarly named -quantities for stochastic variables, mean \( \mu_X \), variance \( \mathrm{var}(X) \) -and covariance \( \mathrm{cov}(X,Y) \). +The sample variance is: +$$ +\mathrm{var}(x) \equiv \frac{1}{n}\sum_{k=1}^n (x_k - \bar{x}_n)^2 +$$ + +its square root being the standard deviation of the sample. The +sample covariance is: +$$ +\mathrm{cov}(x)\equiv\frac{1}{n}\sum_{kl}(x_k - \bar{x}_n)(x_l - \bar{x}_n) +$$

    @@ -451,7 +458,7 @@ and covariance \( \mathrm{cov}(X,Y) \).
  • 71
  • 72
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs063.html b/doc/pub/Regression/html/._Regression-bs063.html index 09b73276d..cb19007c5 100644 --- a/doc/pub/Regression/html/._Regression-bs063.html +++ b/doc/pub/Regression/html/._Regression-bs063.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,32 +408,21 @@ MathJax.Hub.Config({ -

    Statistics, law of large numbers

    +

    Statistics, sample variance and covariance

    -The law of large numbers -states that as the size of our sample grows to infinity, the sample -mean approaches the true mean \( \mu_X^{\phantom X} \) of the chosen PDF: -$$ -\lim_{n\to\infty}\bar{x}_n = \mu_X^{\phantom X} -$$ - -The sample mean \( \bar{x}_n \) works therefore as an estimate of the true -mean \( \mu_X^{\phantom X} \). +Note that the sample variance is the sample covariance without the +cross terms. In a similar manner as the covariance in Eq. (6) is a measure of the correlation between +two stochastic variables, the above defined sample covariance is a +measure of the sequential correlation between succeeding measurements +of a sample.

    -What we need to find out is how good an approximation \( \bar{x}_n \) is to -\( \mu_X^{\phantom X} \). In any stochastic measurement, an estimated -mean is of no use to us without a measure of its error. A quantity -that tells us how well we can reproduce it in another experiment. We -are therefore interested in the PDF of the sample mean itself. Its -standard deviation will be a measure of the spread of sample means, -and we will simply call it the error of the sample mean, or -just sample error, and denote it by \( \mathrm{err}_X^{\phantom X} \). In -practice, we will only be able to produce an estimate of the -sample error since the exact value would require the knowledge of the -true PDFs behind, which we usually do not have. +These quantities, being known experimental values, differ +significantly from and must not be confused with the similarly named +quantities for stochastic variables, mean \( \mu_X \), variance \( \mathrm{var}(X) \) +and covariance \( \mathrm{cov}(X,Y) \).

    @@ -462,7 +453,7 @@ true PDFs behind, which we usually do not have.
  • 72
  • 73
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs064.html b/doc/pub/Regression/html/._Regression-bs064.html index eeeafbc86..f463dccd7 100644 --- a/doc/pub/Regression/html/._Regression-bs064.html +++ b/doc/pub/Regression/html/._Regression-bs064.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,22 +408,32 @@ MathJax.Hub.Config({ -

    Statistics, more on sample error

    +

    Statistics, law of large numbers

    -Let us first take a look at what happens to the sample error as the -size of the sample grows. In a sample, each of the measurements \( x_i \) -can be associated with its own stochastic variable \( X_i \). The -stochastic variable \( \overline X_n \) for the sample mean \( \bar{x}_n \) is -then just a linear combination, already familiar to us: +The law of large numbers +states that as the size of our sample grows to infinity, the sample +mean approaches the true mean \( \mu_X^{\phantom X} \) of the chosen PDF: $$ -\overline X_n = \frac{1}{n}\sum_{i=1}^n X_i +\lim_{n\to\infty}\bar{x}_n = \mu_X^{\phantom X} $$ -All the coefficients are just equal \( 1/n \). The PDF of \( \overline X_n \), -denoted by \( p_{\overline X_n}(x) \) is the desired PDF of the sample -means. +The sample mean \( \bar{x}_n \) works therefore as an estimate of the true +mean \( \mu_X^{\phantom X} \). + +

    +What we need to find out is how good an approximation \( \bar{x}_n \) is to +\( \mu_X^{\phantom X} \). In any stochastic measurement, an estimated +mean is of no use to us without a measure of its error. A quantity +that tells us how well we can reproduce it in another experiment. We +are therefore interested in the PDF of the sample mean itself. Its +standard deviation will be a measure of the spread of sample means, +and we will simply call it the error of the sample mean, or +just sample error, and denote it by \( \mathrm{err}_X^{\phantom X} \). In +practice, we will only be able to produce an estimate of the +sample error since the exact value would require the knowledge of the +true PDFs behind, which we usually do not have.

    @@ -452,7 +464,7 @@ means.
  • 73
  • 74
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs065.html b/doc/pub/Regression/html/._Regression-bs065.html index d1ba7af0e..233a81661 100644 --- a/doc/pub/Regression/html/._Regression-bs065.html +++ b/doc/pub/Regression/html/._Regression-bs065.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,21 +408,22 @@ MathJax.Hub.Config({ -

    Statistics

    +

    Statistics, more on sample error

    -The probability density of obtaining a sample mean \( \bar x_n \) -is the product of probabilities of obtaining arbitrary values \( x_1, -x_2,\dots,x_n \) with the constraint that the mean of the set \( \{x_i\} \) -is \( \bar x_n \): +Let us first take a look at what happens to the sample error as the +size of the sample grows. In a sample, each of the measurements \( x_i \) +can be associated with its own stochastic variable \( X_i \). The +stochastic variable \( \overline X_n \) for the sample mean \( \bar{x}_n \) is +then just a linear combination, already familiar to us: $$ -p_{\overline X_n}(x) = \int p_X^{\phantom X}(x_1)\cdots -\int p_X^{\phantom X}(x_n)\ -\delta\!\left(x - \frac{x_1+x_2+\dots+x_n}{n}\right)dx_n \cdots dx_1 +\overline X_n = \frac{1}{n}\sum_{i=1}^n X_i $$ -And in particular we are interested in its variance \( \mathrm{var}(\overline X_n) \). +All the coefficients are just equal \( 1/n \). The PDF of \( \overline X_n \), +denoted by \( p_{\overline X_n}(x) \) is the desired PDF of the sample +means.

    @@ -451,7 +454,7 @@ And in particular we are interested in its variance \( \mathrm{var}(\overline X_
  • 74
  • 75
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs066.html b/doc/pub/Regression/html/._Regression-bs066.html index fd5557361..d5f1ca256 100644 --- a/doc/pub/Regression/html/._Regression-bs066.html +++ b/doc/pub/Regression/html/._Regression-bs066.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,25 +408,21 @@ MathJax.Hub.Config({ -

    Statistics, central limit theorem

    +

    Statistics

    -It is generally not possible to express \( p_{\overline X_n}(x) \) in a -closed form given an arbitrary PDF \( p_X^{\phantom X} \) and a number -\( n \). But for the limit \( n\to\infty \) it is possible to make an -approximation. The very important result is called the central limit theorem. It tells us that as \( n \) goes to infinity, -\( p_{\overline X_n}(x) \) approaches a Gaussian distribution whose mean -and variance equal the true mean and variance, \( \mu_{X}^{\phantom X} \) -and \( \sigma_{X}^{2} \), respectively: +The probability density of obtaining a sample mean \( \bar x_n \) +is the product of probabilities of obtaining arbitrary values \( x_1, +x_2,\dots,x_n \) with the constraint that the mean of the set \( \{x_i\} \) +is \( \bar x_n \): $$ -\begin{equation} -\lim_{n\to\infty} p_{\overline X_n}(x) = -\left(\frac{n}{2\pi\mathrm{var}(X)}\right)^{1/2} -e^{-\frac{n(x-\bar x_n)^2}{2\mathrm{var}(X)}} -\tag{13} -\end{equation} +p_{\overline X_n}(x) = \int p_X^{\phantom X}(x_1)\cdots +\int p_X^{\phantom X}(x_n)\ +\delta\!\left(x - \frac{x_1+x_2+\dots+x_n}{n}\right)dx_n \cdots dx_1 $$ + +And in particular we are interested in its variance \( \mathrm{var}(\overline X_n) \).

    @@ -455,7 +453,7 @@ $$
  • 75
  • 76
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs067.html b/doc/pub/Regression/html/._Regression-bs067.html index dec5c6dde..c0d563be2 100644 --- a/doc/pub/Regression/html/._Regression-bs067.html +++ b/doc/pub/Regression/html/._Regression-bs067.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,29 +408,25 @@ MathJax.Hub.Config({ -

    Statistics, more technicalities

    +

    Statistics, central limit theorem

    -The desired variance -\( \mathrm{var}(\overline X_n) \), i.e. the sample error squared -\( \mathrm{err}_X^2 \), is given by: +It is generally not possible to express \( p_{\overline X_n}(x) \) in a +closed form given an arbitrary PDF \( p_X^{\phantom X} \) and a number +\( n \). But for the limit \( n\to\infty \) it is possible to make an +approximation. The very important result is called the central limit theorem. It tells us that as \( n \) goes to infinity, +\( p_{\overline X_n}(x) \) approaches a Gaussian distribution whose mean +and variance equal the true mean and variance, \( \mu_{X}^{\phantom X} \) +and \( \sigma_{X}^{2} \), respectively: $$ \begin{equation} -\mathrm{err}_X^2 = \mathrm{var}(\overline X_n) = \frac{1}{n^2} -\sum_{ij} \mathrm{cov}(X_i, X_j) -\tag{14} +\lim_{n\to\infty} p_{\overline X_n}(x) = +\left(\frac{n}{2\pi\mathrm{var}(X)}\right)^{1/2} +e^{-\frac{n(x-\bar x_n)^2}{2\mathrm{var}(X)}} +\tag{13} \end{equation} $$ - -We see now that in order to calculate the exact error of the sample -with the above expression, we would need the true means -\( \mu_{X_i}^{\phantom X} \) of the stochastic variables \( X_i \). To -calculate these requires that we know the true multivariate PDF of all -the \( X_i \). But this PDF is unknown to us, we have only got the measurements of -one sample. The best we can do is to let the sample itself be an -estimate of the PDF of each of the \( X_i \), estimating all properties of -\( X_i \) through the measurements of the sample.

    @@ -459,7 +457,7 @@ estimate of the PDF of each of the \( X_i \), estimating all properties of
  • 76
  • 77
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs068.html b/doc/pub/Regression/html/._Regression-bs068.html index 12c276cb1..3196ac0b9 100644 --- a/doc/pub/Regression/html/._Regression-bs068.html +++ b/doc/pub/Regression/html/._Regression-bs068.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,27 +408,29 @@ MathJax.Hub.Config({ -

    Statistics

    +

    Statistics, more technicalities

    -Our estimate of \( \mu_{X_i}^{\phantom X} \) is then the sample mean \( \bar x \) -itself, in accordance with the the central limit theorem: +The desired variance +\( \mathrm{var}(\overline X_n) \), i.e. the sample error squared +\( \mathrm{err}_X^2 \), is given by: $$ -\mu_{X_i}^{\phantom X} = \langle x_i\rangle \approx \frac{1}{n}\sum_{k=1}^n x_k = \bar x +\begin{equation} +\mathrm{err}_X^2 = \mathrm{var}(\overline X_n) = \frac{1}{n^2} +\sum_{ij} \mathrm{cov}(X_i, X_j) +\tag{14} +\end{equation} $$ -Using \( \bar x \) in place of \( \mu_{X_i}^{\phantom X} \) we can give an -estimate of the covariance in Eq. (14) -$$ -\mathrm{cov}(X_i, X_j) = \langle (x_i-\langle x_i\rangle)(x_j-\langle x_j\rangle)\rangle -\approx\langle (x_i - \bar x)(x_j - \bar{x})\rangle, -$$ - -resulting in -$$ -\frac{1}{n} \sum_{l}^n \left(\frac{1}{n}\sum_{k}^n (x_k -\bar x_n)(x_l - \bar x_n)\right)=\frac{1}{n}\frac{1}{n} \sum_{kl} (x_k -\bar x_n)(x_l - \bar x_n)=\frac{1}{n}\mathrm{cov}(x) -$$ +We see now that in order to calculate the exact error of the sample +with the above expression, we would need the true means +\( \mu_{X_i}^{\phantom X} \) of the stochastic variables \( X_i \). To +calculate these requires that we know the true multivariate PDF of all +the \( X_i \). But this PDF is unknown to us, we have only got the measurements of +one sample. The best we can do is to let the sample itself be an +estimate of the PDF of each of the \( X_i \), estimating all properties of +\( X_i \) through the measurements of the sample.

    @@ -457,7 +461,7 @@ $$
  • 77
  • 78
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs069.html b/doc/pub/Regression/html/._Regression-bs069.html index 08816c99a..60937008d 100644 --- a/doc/pub/Regression/html/._Regression-bs069.html +++ b/doc/pub/Regression/html/._Regression-bs069.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,39 +408,27 @@ MathJax.Hub.Config({ -

    Statistics and sample variance

    +

    Statistics

    -By the same procedure we can use the sample variance as an -estimate of the variance of any of the stochastic variables \( X_i \) +Our estimate of \( \mu_{X_i}^{\phantom X} \) is then the sample mean \( \bar x \) +itself, in accordance with the the central limit theorem: $$ -\mathrm{var}(X_i)=\langle x_i - \langle x_i\rangle\rangle \approx \langle x_i - \bar x_n\rangle\nonumber, +\mu_{X_i}^{\phantom X} = \langle x_i\rangle \approx \frac{1}{n}\sum_{k=1}^n x_k = \bar x $$ -which is approximated as +Using \( \bar x \) in place of \( \mu_{X_i}^{\phantom X} \) we can give an +estimate of the covariance in Eq. (14) $$ -\begin{equation} -\mathrm{var}(X_i)\approx \frac{1}{n}\sum_{k=1}^n (x_k - \bar x_n)=\mathrm{var}(x) -\tag{15} -\end{equation} +\mathrm{cov}(X_i, X_j) = \langle (x_i-\langle x_i\rangle)(x_j-\langle x_j\rangle)\rangle +\approx\langle (x_i - \bar x)(x_j - \bar{x})\rangle, $$ -

    -Now we can calculate an estimate of the error -\( \mathrm{err}_X^{\phantom X} \) of the sample mean \( \bar x_n \): +resulting in +$$ +\frac{1}{n} \sum_{l}^n \left(\frac{1}{n}\sum_{k}^n (x_k -\bar x_n)(x_l - \bar x_n)\right)=\frac{1}{n}\frac{1}{n} \sum_{kl} (x_k -\bar x_n)(x_l - \bar x_n)=\frac{1}{n}\mathrm{cov}(x) $$ -\begin{align} -\mathrm{err}_X^2 -&=\frac{1}{n^2}\sum_{ij} \mathrm{cov}(X_i, X_j) \nonumber \\ -&\approx&\frac{1}{n^2}\sum_{ij}\frac{1}{n}\mathrm{cov}(x) =\frac{1}{n^2}n^2\frac{1}{n}\mathrm{cov}(x)\nonumber\\ -&=\frac{1}{n}\mathrm{cov}(x) -\tag{16} -\end{align} -$$ - -which is nothing but the sample covariance divided by the number of -measurements in the sample.

    @@ -469,7 +459,7 @@ measurements in the sample.
  • 78
  • 79
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs070.html b/doc/pub/Regression/html/._Regression-bs070.html index ce78b5918..a304645bc 100644 --- a/doc/pub/Regression/html/._Regression-bs070.html +++ b/doc/pub/Regression/html/._Regression-bs070.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,35 +408,39 @@ MathJax.Hub.Config({ -

    Statistics, uncorrelated results

    +

    Statistics and sample variance

    - -

    -In the special case that the measurements of the sample are -uncorrelated (equivalently the stochastic variables \( X_i \) are -uncorrelated) we have that the off-diagonal elements of the covariance -are zero. This gives the following estimate of the sample error: +By the same procedure we can use the sample variance as an +estimate of the variance of any of the stochastic variables \( X_i \) $$ -\mathrm{err}_X^2=\frac{1}{n^2}\sum_{ij} \mathrm{cov}(X_i, X_j) = -\frac{1}{n^2} \sum_i \mathrm{var}(X_i), +\mathrm{var}(X_i)=\langle x_i - \langle x_i\rangle\rangle \approx \langle x_i - \bar x_n\rangle\nonumber, $$ -resulting in +which is approximated as $$ \begin{equation} -\mathrm{err}_X^2\approx \frac{1}{n^2} \sum_i \mathrm{var}(x)= \frac{1}{n}\mathrm{var}(x) -\tag{17} +\mathrm{var}(X_i)\approx \frac{1}{n}\sum_{k=1}^n (x_k - \bar x_n)=\mathrm{var}(x) +\tag{15} \end{equation} $$ -where in the second step we have used Eq. (15). -The error of the sample is then just its standard deviation divided by -the square root of the number of measurements the sample contains. -This is a very useful formula which is easy to compute. It acts as a -first approximation to the error, but in numerical experiments, we -cannot overlook the always present correlations. +

    +Now we can calculate an estimate of the error +\( \mathrm{err}_X^{\phantom X} \) of the sample mean \( \bar x_n \): +$$ +\begin{align} +\mathrm{err}_X^2 +&=\frac{1}{n^2}\sum_{ij} \mathrm{cov}(X_i, X_j) \nonumber \\ +&\approx&\frac{1}{n^2}\sum_{ij}\frac{1}{n}\mathrm{cov}(x) =\frac{1}{n^2}n^2\frac{1}{n}\mathrm{cov}(x)\nonumber\\ +&=\frac{1}{n}\mathrm{cov}(x) +\tag{16} +\end{align} +$$ + +which is nothing but the sample covariance divided by the number of +measurements in the sample.

    @@ -465,7 +471,7 @@ cannot overlook the always present correlations.
  • 79
  • 80
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs071.html b/doc/pub/Regression/html/._Regression-bs071.html index 2c61ee29b..f0a4f8ab8 100644 --- a/doc/pub/Regression/html/._Regression-bs071.html +++ b/doc/pub/Regression/html/._Regression-bs071.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,29 +408,35 @@ MathJax.Hub.Config({ -

    Statistics, computations

    +

    Statistics, uncorrelated results

    -For computational purposes one usually splits up the estimate of -\( \mathrm{err}_X^2 \), given by Eq. (16), into two -parts + +

    +In the special case that the measurements of the sample are +uncorrelated (equivalently the stochastic variables \( X_i \) are +uncorrelated) we have that the off-diagonal elements of the covariance +are zero. This gives the following estimate of the sample error: $$ -\mathrm{err}_X^2 = \frac{1}{n}\mathrm{var}(x) + \frac{1}{n}(\mathrm{cov}(x)-\mathrm{var}(x)), +\mathrm{err}_X^2=\frac{1}{n^2}\sum_{ij} \mathrm{cov}(X_i, X_j) = +\frac{1}{n^2} \sum_i \mathrm{var}(X_i), $$ -which equals +resulting in $$ \begin{equation} -\frac{1}{n^2}\sum_{k=1}^n (x_k - \bar x_n)^2 +\frac{2}{n^2}\sum_{k < l} (x_k - \bar x_n)(x_l - \bar x_n) -\tag{18} +\mathrm{err}_X^2\approx \frac{1}{n^2} \sum_i \mathrm{var}(x)= \frac{1}{n}\mathrm{var}(x) +\tag{17} \end{equation} $$ -The first term is the same as the error in the uncorrelated case, -Eq. (17). This means that the second -term accounts for the error correction due to correlation between the -measurements. For uncorrelated measurements this second term is zero. +where in the second step we have used Eq. (15). +The error of the sample is then just its standard deviation divided by +the square root of the number of measurements the sample contains. +This is a very useful formula which is easy to compute. It acts as a +first approximation to the error, but in numerical experiments, we +cannot overlook the always present correlations.

    @@ -459,7 +467,7 @@ measurements. For uncorrelated measurements this second term is zero.
  • 80
  • 81
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs072.html b/doc/pub/Regression/html/._Regression-bs072.html index 956cc7227..6ee949a7e 100644 --- a/doc/pub/Regression/html/._Regression-bs072.html +++ b/doc/pub/Regression/html/._Regression-bs072.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,22 +408,29 @@ MathJax.Hub.Config({ -

    Statistics, more on computations of errors

    +

    Statistics, computations

    -Computationally the uncorrelated first term is much easier to treat -efficiently than the second. +For computational purposes one usually splits up the estimate of +\( \mathrm{err}_X^2 \), given by Eq. (16), into two +parts $$ -\mathrm{var}(x) = \frac{1}{n}\sum_{k=1}^n (x_k - \bar x_n)^2 = -\left(\frac{1}{n}\sum_{k=1}^n x_k^2\right) - \bar x_n^2 +\mathrm{err}_X^2 = \frac{1}{n}\mathrm{var}(x) + \frac{1}{n}(\mathrm{cov}(x)-\mathrm{var}(x)), $$ -We just accumulate separately the values \( x^2 \) and \( x \) for every -measurement \( x \) we receive. The correlation term, though, has to be -calculated at the end of the experiment since we need all the -measurements to calculate the cross terms. Therefore, all measurements -have to be stored throughout the experiment. +which equals +$$ +\begin{equation} +\frac{1}{n^2}\sum_{k=1}^n (x_k - \bar x_n)^2 +\frac{2}{n^2}\sum_{k < l} (x_k - \bar x_n)(x_l - \bar x_n) +\tag{18} +\end{equation} +$$ + +The first term is the same as the error in the uncorrelated case, +Eq. (17). This means that the second +term accounts for the error correction due to correlation between the +measurements. For uncorrelated measurements this second term is zero.

    @@ -452,7 +461,7 @@ have to be stored throughout the experiment.
  • 81
  • 82
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs073.html b/doc/pub/Regression/html/._Regression-bs073.html index d249c7a74..cc6ec260f 100644 --- a/doc/pub/Regression/html/._Regression-bs073.html +++ b/doc/pub/Regression/html/._Regression-bs073.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,33 +408,22 @@ MathJax.Hub.Config({ -

    Statistics, wrapping up 1

    +

    Statistics, more on computations of errors

    -Let us analyze the problem by splitting up the correlation term into -partial sums of the form: +Computationally the uncorrelated first term is much easier to treat +efficiently than the second. $$ -f_d = \frac{1}{n-d}\sum_{k=1}^{n-d}(x_k - \bar x_n)(x_{k+d} - \bar x_n) +\mathrm{var}(x) = \frac{1}{n}\sum_{k=1}^n (x_k - \bar x_n)^2 = +\left(\frac{1}{n}\sum_{k=1}^n x_k^2\right) - \bar x_n^2 $$ -The correlation term of the error can now be rewritten in terms of -\( f_d \) -$$ -\frac{2}{n}\sum_{k < l} (x_k - \bar x_n)(x_l - \bar x_n) = -2\sum_{d=1}^{n-1} f_d -$$ - -The value of \( f_d \) reflects the correlation between measurements -separated by the distance \( d \) in the sample samples. Notice that for -\( d=0 \), \( f \) is just the sample variance, \( \mathrm{var}(x) \). If we divide \( f_d \) -by \( \mathrm{var}(x) \), we arrive at the so called autocorrelation function -$$ -\kappa_d = \frac{f_d}{\mathrm{var}(x)} -$$ - -which gives us a useful measure of pairwise correlations -starting always at \( 1 \) for \( d=0 \). +We just accumulate separately the values \( x^2 \) and \( x \) for every +measurement \( x \) we receive. The correlation term, though, has to be +calculated at the end of the experiment since we need all the +measurements to calculate the cross terms. Therefore, all measurements +have to be stored throughout the experiment.

    @@ -463,7 +454,7 @@ starting always at \( 1 \) for \( d=0 \).
  • 82
  • 83
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs074.html b/doc/pub/Regression/html/._Regression-bs074.html index c7432f353..4ff023e29 100644 --- a/doc/pub/Regression/html/._Regression-bs074.html +++ b/doc/pub/Regression/html/._Regression-bs074.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,33 +408,33 @@ MathJax.Hub.Config({ -

    Statistics, final expression

    +

    Statistics, wrapping up 1

    -The sample error (see eq. (18)) can now be -written in terms of the autocorrelation function: +Let us analyze the problem by splitting up the correlation term into +partial sums of the form: $$ -\begin{align} -\mathrm{err}_X^2 &= -\frac{1}{n}\mathrm{var}(x)+\frac{2}{n}\cdot\mathrm{var}(x)\sum_{d=1}^{n-1} -\frac{f_d}{\mathrm{var}(x)}\nonumber\\ &=& -\left(1+2\sum_{d=1}^{n-1}\kappa_d\right)\frac{1}{n}\mathrm{var}(x)\nonumber\\ -&=\frac{\tau}{n}\cdot\mathrm{var}(x) -\tag{19} -\end{align} +f_d = \frac{1}{n-d}\sum_{k=1}^{n-d}(x_k - \bar x_n)(x_{k+d} - \bar x_n) $$ -and we see that \( \mathrm{err}_X \) can be expressed in terms the -uncorrelated sample variance times a correction factor \( \tau \) which -accounts for the correlation between measurements. We call this -correction factor the autocorrelation time: +The correlation term of the error can now be rewritten in terms of +\( f_d \) $$ -\begin{equation} -\tau = 1+2\sum_{d=1}^{n-1}\kappa_d -\tag{20} -\end{equation} +\frac{2}{n}\sum_{k < l} (x_k - \bar x_n)(x_l - \bar x_n) = +2\sum_{d=1}^{n-1} f_d $$ + +The value of \( f_d \) reflects the correlation between measurements +separated by the distance \( d \) in the sample samples. Notice that for +\( d=0 \), \( f \) is just the sample variance, \( \mathrm{var}(x) \). If we divide \( f_d \) +by \( \mathrm{var}(x) \), we arrive at the so called autocorrelation function +$$ +\kappa_d = \frac{f_d}{\mathrm{var}(x)} +$$ + +which gives us a useful measure of pairwise correlations +starting always at \( 1 \) for \( d=0 \).

    @@ -463,7 +465,7 @@ $$
  • 83
  • 84
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs075.html b/doc/pub/Regression/html/._Regression-bs075.html index 51e1c9d7f..0d0e480de 100644 --- a/doc/pub/Regression/html/._Regression-bs075.html +++ b/doc/pub/Regression/html/._Regression-bs075.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,25 +408,33 @@ MathJax.Hub.Config({ -

    Statistics, effective number of correlations

    +

    Statistics, final expression

    -For a correlation free experiment, \( \tau \) -equals 1. From the point of view of -eq. (19) we can interpret a sequential -correlation as an effective reduction of the number of measurements by -a factor \( \tau \). The effective number of measurements becomes: +The sample error (see eq. (18)) can now be +written in terms of the autocorrelation function: $$ -n_\mathrm{eff} = \frac{n}{\tau} +\begin{align} +\mathrm{err}_X^2 &= +\frac{1}{n}\mathrm{var}(x)+\frac{2}{n}\cdot\mathrm{var}(x)\sum_{d=1}^{n-1} +\frac{f_d}{\mathrm{var}(x)}\nonumber\\ &=& +\left(1+2\sum_{d=1}^{n-1}\kappa_d\right)\frac{1}{n}\mathrm{var}(x)\nonumber\\ +&=\frac{\tau}{n}\cdot\mathrm{var}(x) +\tag{19} +\end{align} $$ -To neglect the autocorrelation time \( \tau \) will always cause our -simple uncorrelated estimate of \( \mathrm{err}_X^2\approx \mathrm{var}(x)/n \) to -be less than the true sample error. The estimate of the error will be -too good. On the other hand, the calculation of the full -autocorrelation time poses an efficiency problem if the set of -measurements is very large. +and we see that \( \mathrm{err}_X \) can be expressed in terms the +uncorrelated sample variance times a correction factor \( \tau \) which +accounts for the correlation between measurements. We call this +correction factor the autocorrelation time: +$$ +\begin{equation} +\tau = 1+2\sum_{d=1}^{n-1}\kappa_d +\tag{20} +\end{equation} +$$

    @@ -455,7 +465,7 @@ measurements is very large.
  • 84
  • 85
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs076.html b/doc/pub/Regression/html/._Regression-bs076.html index 41d36f1c8..24aca220b 100644 --- a/doc/pub/Regression/html/._Regression-bs076.html +++ b/doc/pub/Regression/html/._Regression-bs076.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,42 +406,30 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Linking the regression analysis with a statistical interpretation

    - -

    -Finally, we are going to discuss several statistical properties which can be obtained in terms of analytical expressions. -The -advantage of doing linear regression is that we actually end up with -analytical expressions for several statistical quantities. -Standard least squares and Ridge regression allow us to -derive quantities like the variance and other expectation values in a -rather straightforward way. - -

    -It is assumed that \( \varepsilon_i -\sim \mathcal{N}(0, \sigma^2) \) and the \( \varepsilon_{i} \) are -independent, i.e.: +

    Statistics, effective number of correlations

    +
    +
    +

    +For a correlation free experiment, \( \tau \) +equals 1. From the point of view of +eq. (19) we can interpret a sequential +correlation as an effective reduction of the number of measurements by +a factor \( \tau \). The effective number of measurements becomes: $$ -\begin{align*} -\mbox{Cov}(\varepsilon_{i_1}, -\varepsilon_{i_2}) & = \left\{ \begin{array}{lcc} \sigma^2 & \mbox{if} -& i_1 = i_2, \\ 0 & \mbox{if} & i_1 \not= i_2. \end{array} \right. -\end{align*} +n_\mathrm{eff} = \frac{n}{\tau} $$ -The randomness of \( \varepsilon_i \) implies that -\( \mathbf{y}_i \) is also a random variable. In particular, -\( \mathbf{y}_i \) is normally distributed, because \( \varepsilon_i \sim -\mathcal{N}(0, \sigma^2) \) and \( \mathbf{X}_{i,\ast} \, \boldsymbol{\beta} \) is a -non-random scalar. To specify the parameters of the distribution of -\( \mathbf{y}_i \) we need to calculate its first two moments. +To neglect the autocorrelation time \( \tau \) will always cause our +simple uncorrelated estimate of \( \mathrm{err}_X^2\approx \mathrm{var}(x)/n \) to +be less than the true sample error. The estimate of the error will be +too good. On the other hand, the calculation of the full +autocorrelation time poses an efficiency problem if the set of +measurements is very large. +

    +
    -

    -Recall that \( \boldsymbol{X} \) is a matrix of dimensionality \( n\times p \). The -notation above \( \mathbf{X}_{i,\ast} \) means that we are looking at the -row number \( i \) and perform a sum over all values \( p \).

    @@ -467,7 +457,7 @@ row number \( i \) and perform a sum over all values \( p \).

  • 85
  • 86
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs077.html b/doc/pub/Regression/html/._Regression-bs077.html index 89ca2bddf..6594bd49b 100644 --- a/doc/pub/Regression/html/._Regression-bs077.html +++ b/doc/pub/Regression/html/._Regression-bs077.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,25 +406,43 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Assumptions made

    +

    Linking the regression analysis with a statistical interpretation

    -The assumption we have made here can be summarized as (and this is going to be useful when we discuss the bias-variance trade off) -that there exists a function \( f(\boldsymbol{x}) \) and a normal distributed error \( \boldsymbol{\varepsilon}\sim \mathcal{N}(0, \sigma^2) \) -which describe our data -$$ -\boldsymbol{y} = f(\boldsymbol{x})+\boldsymbol{\varepsilon} -$$ +Finally, we are going to discuss several statistical properties which can be obtained in terms of analytical expressions. +The +advantage of doing linear regression is that we actually end up with +analytical expressions for several statistical quantities. +Standard least squares and Ridge regression allow us to +derive quantities like the variance and other expectation values in a +rather straightforward way.

    -We approximate this function with our model from the solution of the linear regression equations, that is our -function \( f \) is approximated by \( \boldsymbol{\tilde{y}} \) where we want to minimize \( (\boldsymbol{y}-\boldsymbol{\tilde{y}})^2 \), our MSE, with +It is assumed that \( \varepsilon_i +\sim \mathcal{N}(0, \sigma^2) \) and the \( \varepsilon_{i} \) are +independent, i.e.: $$ -\boldsymbol{\tilde{y}} = \boldsymbol{X}\boldsymbol{\beta}. +\begin{align*} +\mbox{Cov}(\varepsilon_{i_1}, +\varepsilon_{i_2}) & = \left\{ \begin{array}{lcc} \sigma^2 & \mbox{if} +& i_1 = i_2, \\ 0 & \mbox{if} & i_1 \not= i_2. \end{array} \right. +\end{align*} $$ +The randomness of \( \varepsilon_i \) implies that +\( \mathbf{y}_i \) is also a random variable. In particular, +\( \mathbf{y}_i \) is normally distributed, because \( \varepsilon_i \sim +\mathcal{N}(0, \sigma^2) \) and \( \mathbf{X}_{i,\ast} \, \boldsymbol{\beta} \) is a +non-random scalar. To specify the parameters of the distribution of +\( \mathbf{y}_i \) we need to calculate its first two moments. + +

    +Recall that \( \boldsymbol{X} \) is a matrix of dimensionality \( n\times p \). The +notation above \( \mathbf{X}_{i,\ast} \) means that we are looking at the +row number \( i \) and perform a sum over all values \( p \). +

    @@ -449,7 +469,7 @@ $$

  • 86
  • 87
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs078.html b/doc/pub/Regression/html/._Regression-bs078.html index 43a16ad33..e97d0cb80 100644 --- a/doc/pub/Regression/html/._Regression-bs078.html +++ b/doc/pub/Regression/html/._Regression-bs078.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,38 +408,23 @@ MathJax.Hub.Config({ -

    Expectation value and variance

    +

    Assumptions made

    -We can calculate the expectation value of \( \boldsymbol{y} \) for a given element \( i \) +The assumption we have made here can be summarized as (and this is going to be useful when we discuss the bias-variance trade off) +that there exists a function \( f(\boldsymbol{x}) \) and a normal distributed error \( \boldsymbol{\varepsilon}\sim \mathcal{N}(0, \sigma^2) \) +which describe our data $$ -\begin{align*} -\mathbb{E}(y_i) & = -\mathbb{E}(\mathbf{X}_{i, \ast} \, \boldsymbol{\beta}) + \mathbb{E}(\varepsilon_i) -\, \, \, = \, \, \, \mathbf{X}_{i, \ast} \, \beta, -\end{align*} +\boldsymbol{y} = f(\boldsymbol{x})+\boldsymbol{\varepsilon} $$ -while -its variance is +

    +We approximate this function with our model from the solution of the linear regression equations, that is our +function \( f \) is approximated by \( \boldsymbol{\tilde{y}} \) where we want to minimize \( (\boldsymbol{y}-\boldsymbol{\tilde{y}})^2 \), our MSE, with $$ -\begin{align*} \mbox{Var}(y_i) & = \mathbb{E} \{ [y_i -- \mathbb{E}(y_i)]^2 \} \, \, \, = \, \, \, \mathbb{E} ( y_i^2 ) - -[\mathbb{E}(y_i)]^2 \\ & = \mathbb{E} [ ( \mathbf{X}_{i, \ast} \, -\beta + \varepsilon_i )^2] - ( \mathbf{X}_{i, \ast} \, \boldsymbol{\beta})^2 \\ & -= \mathbb{E} [ ( \mathbf{X}_{i, \ast} \, \boldsymbol{\beta})^2 + 2 \varepsilon_i -\mathbf{X}_{i, \ast} \, \boldsymbol{\beta} + \varepsilon_i^2 ] - ( \mathbf{X}_{i, -\ast} \, \beta)^2 \\ & = ( \mathbf{X}_{i, \ast} \, \boldsymbol{\beta})^2 + 2 -\mathbb{E}(\varepsilon_i) \mathbf{X}_{i, \ast} \, \boldsymbol{\beta} + -\mathbb{E}(\varepsilon_i^2 ) - ( \mathbf{X}_{i, \ast} \, \boldsymbol{\beta})^2 -\\ & = \mathbb{E}(\varepsilon_i^2 ) \, \, \, = \, \, \, -\mbox{Var}(\varepsilon_i) \, \, \, = \, \, \, \sigma^2. -\end{align*} +\boldsymbol{\tilde{y}} = \boldsymbol{X}\boldsymbol{\beta}. $$ -Hence, \( y_i \sim \mathcal{N}( \mathbf{X}_{i, \ast} \, \boldsymbol{\beta}, \sigma^2) \), that is \( \boldsymbol{y} \) follows a normal distribution with -mean value \( \boldsymbol{X}\boldsymbol{\beta} \) and variance \( \sigma^2 \) (not be confused with the singular values of the SVD). -

    @@ -464,7 +451,7 @@ mean value \( \boldsymbol{X}\boldsymbol{\beta} \) and variance \( \sigma^2 \) (n

  • 87
  • 88
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs079.html b/doc/pub/Regression/html/._Regression-bs079.html index b6379b0ce..e88f5e414 100644 --- a/doc/pub/Regression/html/._Regression-bs079.html +++ b/doc/pub/Regression/html/._Regression-bs079.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,87 +408,37 @@ MathJax.Hub.Config({ -

    Expectation value and variance for \( \boldsymbol{\beta} \)

    +

    Expectation value and variance

    -With the OLS expressions for the parameters \( \boldsymbol{\beta} \) we can evaluate the expectation value +We can calculate the expectation value of \( \boldsymbol{y} \) for a given element \( i \) $$ -\mathbb{E}(\boldsymbol{\beta}) = \mathbb{E}[ (\mathbf{X}^{\top} \mathbf{X})^{-1}\mathbf{X}^{T} \mathbf{Y}]=(\mathbf{X}^{T} \mathbf{X})^{-1}\mathbf{X}^{T} \mathbb{E}[ \mathbf{Y}]=(\mathbf{X}^{T} \mathbf{X})^{-1} \mathbf{X}^{T}\mathbf{X}\boldsymbol{\beta}=\boldsymbol{\beta}. +\begin{align*} +\mathbb{E}(y_i) & = +\mathbb{E}(\mathbf{X}_{i, \ast} \, \boldsymbol{\beta}) + \mathbb{E}(\varepsilon_i) +\, \, \, = \, \, \, \mathbf{X}_{i, \ast} \, \beta, +\end{align*} $$ -This means that the estimator of the regression parameters is unbiased. - -

    -We can also calculate the variance - -

    -The variance of \( \boldsymbol{\beta} \) is +while +its variance is $$ -\begin{eqnarray*} -\mbox{Var}(\boldsymbol{\beta}) & = & \mathbb{E} \{ [\boldsymbol{\beta} - \mathbb{E}(\boldsymbol{\beta})] [\boldsymbol{\beta} - \mathbb{E}(\boldsymbol{\beta})]^{T} \} -\\ -& = & \mathbb{E} \{ [(\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \mathbf{Y} - \boldsymbol{\beta}] \, [(\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \mathbf{Y} - \boldsymbol{\beta}]^{T} \} -\\ -% & = & \mathbb{E} \{ [(\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \mathbf{Y}] \, [(\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \mathbf{Y}]^{T} \} - \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} -% \\ -% & = & \mathbb{E} \{ (\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \mathbf{Y} \, \mathbf{Y}^{T} \, \mathbf{X} \, (\mathbf{X}^{T} \mathbf{X})^{-1} \} - \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} -% \\ -& = & (\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \, \mathbb{E} \{ \mathbf{Y} \, \mathbf{Y}^{T} \} \, \mathbf{X} \, (\mathbf{X}^{T} \mathbf{X})^{-1} - \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} -\\ -& = & (\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \, \{ \mathbf{X} \, \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} \, \mathbf{X}^{T} + \sigma^2 \} \, \mathbf{X} \, (\mathbf{X}^{T} \mathbf{X})^{-1} - \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} -% \\ -% & = & (\mathbf{X}^T \mathbf{X})^{-1} \, \mathbf{X}^T \, \mathbf{X} \, \boldsymbol{\beta} \, \boldsymbol{\beta}^T \, \mathbf{X}^T \, \mathbf{X} \, (\mathbf{X}^T % \mathbf{X})^{-1} -% \\ -% & & + \, \, \sigma^2 \, (\mathbf{X}^T \mathbf{X})^{-1} \, \mathbf{X}^T \, \mathbf{X} \, (\mathbf{X}^T \mathbf{X})^{-1} - \boldsymbol{\beta} \boldsymbol{\beta}^T -\\ -& = & \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} + \sigma^2 \, (\mathbf{X}^{T} \mathbf{X})^{-1} - \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} -\, \, \, = \, \, \, \sigma^2 \, (\mathbf{X}^{T} \mathbf{X})^{-1}, -\end{eqnarray*} +\begin{align*} \mbox{Var}(y_i) & = \mathbb{E} \{ [y_i +- \mathbb{E}(y_i)]^2 \} \, \, \, = \, \, \, \mathbb{E} ( y_i^2 ) - +[\mathbb{E}(y_i)]^2 \\ & = \mathbb{E} [ ( \mathbf{X}_{i, \ast} \, +\beta + \varepsilon_i )^2] - ( \mathbf{X}_{i, \ast} \, \boldsymbol{\beta})^2 \\ & += \mathbb{E} [ ( \mathbf{X}_{i, \ast} \, \boldsymbol{\beta})^2 + 2 \varepsilon_i +\mathbf{X}_{i, \ast} \, \boldsymbol{\beta} + \varepsilon_i^2 ] - ( \mathbf{X}_{i, +\ast} \, \beta)^2 \\ & = ( \mathbf{X}_{i, \ast} \, \boldsymbol{\beta})^2 + 2 +\mathbb{E}(\varepsilon_i) \mathbf{X}_{i, \ast} \, \boldsymbol{\beta} + +\mathbb{E}(\varepsilon_i^2 ) - ( \mathbf{X}_{i, \ast} \, \boldsymbol{\beta})^2 +\\ & = \mathbb{E}(\varepsilon_i^2 ) \, \, \, = \, \, \, +\mbox{Var}(\varepsilon_i) \, \, \, = \, \, \, \sigma^2. +\end{align*} $$ -

    -where we have used that \( \mathbb{E} (\mathbf{Y} \mathbf{Y}^{T}) = -\mathbf{X} \, \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} \, \mathbf{X}^{T} + -\sigma^2 \, \mathbf{I}_{nn} \). From \( \mbox{Var}(\boldsymbol{\beta}) = \sigma^2 -\, (\mathbf{X}^{T} \mathbf{X})^{-1} \), one obtains an estimate of the -variance of the estimate of the \( j \)-th regression coefficient: -\( \hat{\sigma}^2 (\hat{\beta}_j ) = \hat{\sigma}^2 \sqrt{ -[(\mathbf{X}^{T} \mathbf{X})^{-1}]_{jj} } \). This may be used to -construct a confidence interval for the estimates. - -

    -In a similar way, we can obtain analytical expressions for say the -expectation values of the parameters \( \boldsymbol{\beta} \) and their variance -when we employ Ridge regression, allowing us again to define a confidence interval. - -

    -It is rather straightforward to show that -$$ -\mathbb{E} \big[ \boldsymbol{\beta}^{\mathrm{Ridge}} \big]=(\mathbf{X}^{T} \mathbf{X} + \lambda \mathbf{I}_{pp})^{-1} (\mathbf{X}^{\top} \mathbf{X})\boldsymbol{\beta}^{\mathrm{OLS}}. -$$ - -We see clearly that -\( \mathbb{E} \big[ \boldsymbol{\beta}^{\mathrm{Ridge}} \big] \not= \boldsymbol{\beta}^{\mathrm{OLS}} \) for any \( \lambda > 0 \). We say then that the ridge estimator is biased. - -

    -We can also compute the variance as - -$$ -\mbox{Var}[\boldsymbol{\beta}^{\mathrm{Ridge}}]=\sigma^2[ \mathbf{X}^{T} \mathbf{X} + \lambda \mathbf{I} ]^{-1} \mathbf{X}^{T} \mathbf{X} \{ [ \mathbf{X}^{\top} \mathbf{X} + \lambda \mathbf{I} ]^{-1}\}^{T}, -$$ - -and it is easy to see that if the parameter \( \lambda \) goes to infinity then the variance of Ridge parameters \( \boldsymbol{\beta} \) goes to zero. - -

    -With this, we can compute the difference - -$$ -\mbox{Var}[\boldsymbol{\beta}^{\mathrm{OLS}}]-\mbox{Var}(\boldsymbol{\beta}^{\mathrm{Ridge}})=\sigma^2 [ \mathbf{X}^{T} \mathbf{X} + \lambda \mathbf{I} ]^{-1}[ 2\lambda\mathbf{I} + \lambda^2 (\mathbf{X}^{T} \mathbf{X})^{-1} ] \{ [ \mathbf{X}^{T} \mathbf{X} + \lambda \mathbf{I} ]^{-1}\}^{T}. -$$ - -The difference is non-negative definite since each component of the -matrix product is non-negative definite. -This means the variance we obtain with the standard OLS will always for \( \lambda > 0 \) be larger than the variance of \( \boldsymbol{\beta} \) obtained with the Ridge estimator. This has interesting consequences when we discuss the so-called bias-variance trade-off below. +Hence, \( y_i \sim \mathcal{N}( \mathbf{X}_{i, \ast} \, \boldsymbol{\beta}, \sigma^2) \), that is \( \boldsymbol{y} \) follows a normal distribution with +mean value \( \boldsymbol{X}\boldsymbol{\beta} \) and variance \( \sigma^2 \) (not be confused with the singular values of the SVD).

    @@ -514,7 +466,7 @@ This means the variance we obtain with the standard OLS will always for \( \lamb

  • 88
  • 89
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs080.html b/doc/pub/Regression/html/._Regression-bs080.html index d396949f7..20f05bead 100644 --- a/doc/pub/Regression/html/._Regression-bs080.html +++ b/doc/pub/Regression/html/._Regression-bs080.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,31 +408,87 @@ MathJax.Hub.Config({ -

    Resampling methods

    +

    Expectation value and variance for \( \boldsymbol{\beta} \)

    -With all these analytical equations for both the OLS and Ridge -regression, we will now outline how to assess a given model. This will -lead us to a discussion of the so-called bias-variance tradeoff (see -below) and so-called resampling methods. +With the OLS expressions for the parameters \( \boldsymbol{\beta} \) we can evaluate the expectation value +$$ +\mathbb{E}(\boldsymbol{\beta}) = \mathbb{E}[ (\mathbf{X}^{\top} \mathbf{X})^{-1}\mathbf{X}^{T} \mathbf{Y}]=(\mathbf{X}^{T} \mathbf{X})^{-1}\mathbf{X}^{T} \mathbb{E}[ \mathbf{Y}]=(\mathbf{X}^{T} \mathbf{X})^{-1} \mathbf{X}^{T}\mathbf{X}\boldsymbol{\beta}=\boldsymbol{\beta}. +$$ + +This means that the estimator of the regression parameters is unbiased.

    -One of the quantities we have discussed as a way to measure errors is -the mean-squared error (MSE), mainly used for fitting of continuous -functions. Another choice is the absolute error. +We can also calculate the variance

    -In the discussions below we will focus on the MSE and in particular since we will split the data into test and training data, -we discuss the +The variance of \( \boldsymbol{\beta} \) is +$$ +\begin{eqnarray*} +\mbox{Var}(\boldsymbol{\beta}) & = & \mathbb{E} \{ [\boldsymbol{\beta} - \mathbb{E}(\boldsymbol{\beta})] [\boldsymbol{\beta} - \mathbb{E}(\boldsymbol{\beta})]^{T} \} +\\ +& = & \mathbb{E} \{ [(\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \mathbf{Y} - \boldsymbol{\beta}] \, [(\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \mathbf{Y} - \boldsymbol{\beta}]^{T} \} +\\ +% & = & \mathbb{E} \{ [(\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \mathbf{Y}] \, [(\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \mathbf{Y}]^{T} \} - \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} +% \\ +% & = & \mathbb{E} \{ (\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \mathbf{Y} \, \mathbf{Y}^{T} \, \mathbf{X} \, (\mathbf{X}^{T} \mathbf{X})^{-1} \} - \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} +% \\ +& = & (\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \, \mathbb{E} \{ \mathbf{Y} \, \mathbf{Y}^{T} \} \, \mathbf{X} \, (\mathbf{X}^{T} \mathbf{X})^{-1} - \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} +\\ +& = & (\mathbf{X}^{T} \mathbf{X})^{-1} \, \mathbf{X}^{T} \, \{ \mathbf{X} \, \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} \, \mathbf{X}^{T} + \sigma^2 \} \, \mathbf{X} \, (\mathbf{X}^{T} \mathbf{X})^{-1} - \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} +% \\ +% & = & (\mathbf{X}^T \mathbf{X})^{-1} \, \mathbf{X}^T \, \mathbf{X} \, \boldsymbol{\beta} \, \boldsymbol{\beta}^T \, \mathbf{X}^T \, \mathbf{X} \, (\mathbf{X}^T % \mathbf{X})^{-1} +% \\ +% & & + \, \, \sigma^2 \, (\mathbf{X}^T \mathbf{X})^{-1} \, \mathbf{X}^T \, \mathbf{X} \, (\mathbf{X}^T \mathbf{X})^{-1} - \boldsymbol{\beta} \boldsymbol{\beta}^T +\\ +& = & \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} + \sigma^2 \, (\mathbf{X}^{T} \mathbf{X})^{-1} - \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} +\, \, \, = \, \, \, \sigma^2 \, (\mathbf{X}^{T} \mathbf{X})^{-1}, +\end{eqnarray*} +$$ -

      -
    1. prediction error or simply the test error \( \mathrm{Err_{Test}} \), where we have a fixed training set and the test error is the MSE arising from the data reserved for testing. We discuss also the
    2. -
    3. training error \( \mathrm{Err_{Train}} \), which is the average loss over the training data.
    4. -
    +

    +where we have used that \( \mathbb{E} (\mathbf{Y} \mathbf{Y}^{T}) = +\mathbf{X} \, \boldsymbol{\beta} \, \boldsymbol{\beta}^{T} \, \mathbf{X}^{T} + +\sigma^2 \, \mathbf{I}_{nn} \). From \( \mbox{Var}(\boldsymbol{\beta}) = \sigma^2 +\, (\mathbf{X}^{T} \mathbf{X})^{-1} \), one obtains an estimate of the +variance of the estimate of the \( j \)-th regression coefficient: +\( \boldsymbol{\sigma}^2 (\boldsymbol{\beta}_j ) = \boldsymbol{\sigma}^2 \sqrt{ +[(\mathbf{X}^{T} \mathbf{X})^{-1}]_{jj} } \). This may be used to +construct a confidence interval for the estimates. -As our model becomes more and more complex, more of the training data tends to used. The training may thence adapt to more complicated structures in the data. This may lead to a decrease in the bias (see below for code example) and a slight increase of the variance for the test error. -For a certain level of complexity the test error will reach minimum, before starting to increase again. The -training error reaches a saturation. +

    +In a similar way, we can obtain analytical expressions for say the +expectation values of the parameters \( \boldsymbol{\beta} \) and their variance +when we employ Ridge regression, allowing us again to define a confidence interval. + +

    +It is rather straightforward to show that +$$ +\mathbb{E} \big[ \boldsymbol{\beta}^{\mathrm{Ridge}} \big]=(\mathbf{X}^{T} \mathbf{X} + \lambda \mathbf{I}_{pp})^{-1} (\mathbf{X}^{\top} \mathbf{X})\boldsymbol{\beta}^{\mathrm{OLS}}. +$$ + +We see clearly that +\( \mathbb{E} \big[ \boldsymbol{\beta}^{\mathrm{Ridge}} \big] \not= \boldsymbol{\beta}^{\mathrm{OLS}} \) for any \( \lambda > 0 \). We say then that the ridge estimator is biased. + +

    +We can also compute the variance as + +$$ +\mbox{Var}[\boldsymbol{\beta}^{\mathrm{Ridge}}]=\sigma^2[ \mathbf{X}^{T} \mathbf{X} + \lambda \mathbf{I} ]^{-1} \mathbf{X}^{T} \mathbf{X} \{ [ \mathbf{X}^{\top} \mathbf{X} + \lambda \mathbf{I} ]^{-1}\}^{T}, +$$ + +and it is easy to see that if the parameter \( \lambda \) goes to infinity then the variance of Ridge parameters \( \boldsymbol{\beta} \) goes to zero. + +

    +With this, we can compute the difference + +$$ +\mbox{Var}[\boldsymbol{\beta}^{\mathrm{OLS}}]-\mbox{Var}(\boldsymbol{\beta}^{\mathrm{Ridge}})=\sigma^2 [ \mathbf{X}^{T} \mathbf{X} + \lambda \mathbf{I} ]^{-1}[ 2\lambda\mathbf{I} + \lambda^2 (\mathbf{X}^{T} \mathbf{X})^{-1} ] \{ [ \mathbf{X}^{T} \mathbf{X} + \lambda \mathbf{I} ]^{-1}\}^{T}. +$$ + +The difference is non-negative definite since each component of the +matrix product is non-negative definite. +This means the variance we obtain with the standard OLS will always for \( \lambda > 0 \) be larger than the variance of \( \boldsymbol{\beta} \) obtained with the Ridge estimator. This has interesting consequences when we discuss the so-called bias-variance trade-off below.

    @@ -458,7 +516,7 @@ training error reaches a saturation.

  • 89
  • 90
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs081.html b/doc/pub/Regression/html/._Regression-bs081.html index da2a962a0..b3497984d 100644 --- a/doc/pub/Regression/html/._Regression-bs081.html +++ b/doc/pub/Regression/html/._Regression-bs081.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,25 +408,31 @@ MathJax.Hub.Config({ -

    Resampling methods: Jackknife and Bootstrap

    +

    Resampling methods

    -Two famous -resampling methods are the independent bootstrap and the jackknife. +With all these analytical equations for both the OLS and Ridge +regression, we will now outline how to assess a given model. This will +lead us to a discussion of the so-called bias-variance tradeoff (see +below) and so-called resampling methods.

    -The jackknife is a special case of the independent bootstrap. Still, the jackknife was made -popular prior to the independent bootstrap. And as the popularity of -the independent bootstrap soared, new variants, such as the dependent bootstrap. +One of the quantities we have discussed as a way to measure errors is +the mean-squared error (MSE), mainly used for fitting of continuous +functions. Another choice is the absolute error.

    -The Jackknife and independent bootstrap work for -independent, identically distributed random variables. -If these conditions are not -satisfied, the methods will fail. Yet, it should be said that if the data are -independent, identically distributed, and we only want to estimate the -variance of \( \overline{X} \) (which often is the case), then there is no -need for bootstrapping. +In the discussions below we will focus on the MSE and in particular since we will split the data into test and training data, +we discuss the + +

      +
    1. prediction error or simply the test error \( \mathrm{Err_{Test}} \), where we have a fixed training set and the test error is the MSE arising from the data reserved for testing. We discuss also the
    2. +
    3. training error \( \mathrm{Err_{Train}} \), which is the average loss over the training data.
    4. +
    + +As our model becomes more and more complex, more of the training data tends to used. The training may thence adapt to more complicated structures in the data. This may lead to a decrease in the bias (see below for code example) and a slight increase of the variance for the test error. +For a certain level of complexity the test error will reach minimum, before starting to increase again. The +training error reaches a saturation.

    @@ -452,7 +460,7 @@ need for bootstrapping.

  • 90
  • 91
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs082.html b/doc/pub/Regression/html/._Regression-bs082.html index 4a8dc856e..bfbbd1df6 100644 --- a/doc/pub/Regression/html/._Regression-bs082.html +++ b/doc/pub/Regression/html/._Regression-bs082.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,21 +408,25 @@ MathJax.Hub.Config({ -

    Resampling methods: Jackknife

    +

    Resampling methods: Jackknife and Bootstrap

    -The Jackknife works by making many replicas of the estimator \( \widehat{\theta} \). -The jackknife is a resampling method where we systematically leave out one observation from the vector of observed values \( \boldsymbol{x} = (x_1,x_2,\cdots,X_n) \). -Let \( \boldsymbol{x}_i \) denote the vector -$$ -\boldsymbol{x}_i = (x_1,x_2,\cdots,x_{i-1},x_{i+1},\cdots,x_n), -$$ +Two famous +resampling methods are the independent bootstrap and the jackknife.

    -which equals the vector \( \boldsymbol{x} \) with the exception that observation -number \( i \) is left out. Using this notation, define -\( \widehat{\theta}_i \) to be the estimator -\( \widehat{\theta} \) computed using \( \vec{X}_i \). +The jackknife is a special case of the independent bootstrap. Still, the jackknife was made +popular prior to the independent bootstrap. And as the popularity of +the independent bootstrap soared, new variants, such as the dependent bootstrap. + +

    +The Jackknife and independent bootstrap work for +independent, identically distributed random variables. +If these conditions are not +satisfied, the methods will fail. Yet, it should be said that if the data are +independent, identically distributed, and we only want to estimate the +variance of \( \overline{X} \) (which often is the case), then there is no +need for bootstrapping.

    @@ -448,7 +454,7 @@ number \( i \) is left out. Using this notation, define

  • 91
  • 92
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs083.html b/doc/pub/Regression/html/._Regression-bs083.html index 7c36714c2..10697903a 100644 --- a/doc/pub/Regression/html/._Regression-bs083.html +++ b/doc/pub/Regression/html/._Regression-bs083.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,39 +408,22 @@ MathJax.Hub.Config({ -

    Jackknife code example

    +

    Resampling methods: Jackknife

    +

    +The Jackknife works by making many replicas of the estimator \( \widehat{\theta} \). +The jackknife is a resampling method where we systematically leave out one observation from the vector of observed values \( \boldsymbol{x} = (x_1,x_2,\cdots,X_n) \). +Let \( \boldsymbol{x}_i \) denote the vector +$$ +\boldsymbol{x}_i = (x_1,x_2,\cdots,x_{i-1},x_{i+1},\cdots,x_n), +$$ - -

    from numpy import *
    -from numpy.random import randint, randn
    -from time import time
    +

    +which equals the vector \( \boldsymbol{x} \) with the exception that observation +number \( i \) is left out. Using this notation, define +\( \widehat{\theta}_i \) to be the estimator +\( \widehat{\theta} \) computed using \( \vec{X}_i \). -def jackknife(data, stat): - n = len(data);t = zeros(n); inds = arange(n); t0 = time() - ## 'jackknifing' by leaving out an observation for each i - for i in range(n): - t[i] = stat(delete(data,i) ) - - # analysis - print("Runtime: %g sec" % (time()-t0)); print("Jackknife Statistics :") - print("original bias std. error") - print("%8g %14g %15g" % (stat(data),(n-1)*mean(t)/n, (n*var(t))**.5)) - - return t - - -# Returns mean of data samples -def stat(data): - return mean(data) - - -mu, sigma = 100, 15 -datapoints = 10000 -x = mu + sigma*random.randn(datapoints) -# jackknife returns the data sample -t = jackknife(x, stat) -

    @@ -465,7 +450,7 @@ t = jackknife(x, stat)

  • 92
  • 93
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs084.html b/doc/pub/Regression/html/._Regression-bs084.html index 715ded2d5..f854dad03 100644 --- a/doc/pub/Regression/html/._Regression-bs084.html +++ b/doc/pub/Regression/html/._Regression-bs084.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,25 +408,39 @@ MathJax.Hub.Config({ -

    Resampling methods: Bootstrap

    -
    -
    -

    -Bootstrapping is a nonparametric approach to statistical inference -that substitutes computation for more traditional distributional -assumptions and asymptotic results. Bootstrapping offers a number of -advantages: +

    Jackknife code example

    +

    -

      -
    1. The bootstrap is quite general, although there are some cases in which it fails.
    2. -
    3. Because it does not require distributional assumptions (such as normally distributed errors), the bootstrap can provide more accurate inferences when the data are not well behaved or when the sample size is small.
    4. -
    5. It is possible to apply the bootstrap to statistics with sampling distributions that are difficult to derive, even asymptotically.
    6. -
    7. It is relatively simple to apply the bootstrap to complex data-collection plans (such as stratified and clustered samples).
    8. -
    -
    -
    + +
    from numpy import *
    +from numpy.random import randint, randn
    +from time import time
    +
    +def jackknife(data, stat):
    +    n = len(data);t = zeros(n); inds = arange(n); t0 = time()
    +    ## 'jackknifing' by leaving out an observation for each i                                                                                                                      
    +    for i in range(n):
    +        t[i] = stat(delete(data,i) )
    +
    +    # analysis                                                                                                                                                                     
    +    print("Runtime: %g sec" % (time()-t0)); print("Jackknife Statistics :")
    +    print("original           bias      std. error")
    +    print("%8g %14g %15g" % (stat(data),(n-1)*mean(t)/n, (n*var(t))**.5))
    +
    +    return t
     
     
    +# Returns mean of data samples                                                                                                                                                     
    +def stat(data):
    +    return mean(data)
    +
    +
    +mu, sigma = 100, 15
    +datapoints = 10000
    +x = mu + sigma*random.randn(datapoints)
    +# jackknife returns the data sample                                                                                                                                                
    +t = jackknife(x, stat)
    +

    @@ -451,7 +467,7 @@ advantages:

  • 93
  • 94
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs085.html b/doc/pub/Regression/html/._Regression-bs085.html index e706a8b52..4309a6aa0 100644 --- a/doc/pub/Regression/html/._Regression-bs085.html +++ b/doc/pub/Regression/html/._Regression-bs085.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,18 +408,24 @@ MathJax.Hub.Config({ -

    Resampling methods: Bootstrap background

    +

    Resampling methods: Bootstrap

    +
    +
    +

    +Bootstrapping is a nonparametric approach to statistical inference +that substitutes computation for more traditional distributional +assumptions and asymptotic results. Bootstrapping offers a number of +advantages: + +

      +
    1. The bootstrap is quite general, although there are some cases in which it fails.
    2. +
    3. Because it does not require distributional assumptions (such as normally distributed errors), the bootstrap can provide more accurate inferences when the data are not well behaved or when the sample size is small.
    4. +
    5. It is possible to apply the bootstrap to statistics with sampling distributions that are difficult to derive, even asymptotically.
    6. +
    7. It is relatively simple to apply the bootstrap to complex data-collection plans (such as stratified and clustered samples).
    8. +
    +
    +
    -

    -Since \( \widehat{\theta} = \widehat{\theta}(\boldsymbol{X}) \) is a function of random variables, -\( \widehat{\theta} \) itself must be a random variable. Thus it has -a pdf, call this function \( p(\boldsymbol{t}) \). The aim of the bootstrap is to -estimate \( p(\boldsymbol{t}) \) by the relative frequency of -\( \widehat{\theta} \). You can think of this as using a histogram -in the place of \( p(\boldsymbol{t}) \). If the relative frequency closely -resembles \( p(\vec{t}) \), then using numerics, it is straight forward to -estimate all the interesting parameters of \( p(\boldsymbol{t}) \) using point -estimators.

    @@ -445,7 +453,7 @@ estimators.

  • 94
  • 95
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs086.html b/doc/pub/Regression/html/._Regression-bs086.html index 03586c5c7..8df067e94 100644 --- a/doc/pub/Regression/html/._Regression-bs086.html +++ b/doc/pub/Regression/html/._Regression-bs086.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,24 +408,18 @@ MathJax.Hub.Config({ -

    Resampling methods: More Bootstrap background

    +

    Resampling methods: Bootstrap background

    -In the case that \( \widehat{\theta} \) has -more than one component, and the components are independent, we use the -same estimator on each component separately. If the probability -density function of \( X_i \), \( p(x) \), had been known, then it would have -been straight forward to do this by: - -

      -
    1. Drawing lots of numbers from \( p(x) \), suppose we call one such set of numbers \( (X_1^*, X_2^*, \cdots, X_n^*) \).
    2. -
    3. Then using these numbers, we could compute a replica of \( \widehat{\theta} \) called \( \widehat{\theta}^* \).
    4. -
    - -By repeated use of (1) and (2), many -estimates of \( \widehat{\theta} \) could have been obtained. The -idea is to use the relative frequency of \( \widehat{\theta}^* \) -(think of a histogram) as an estimate of \( p(\boldsymbol{t}) \). +Since \( \widehat{\theta} = \widehat{\theta}(\boldsymbol{X}) \) is a function of random variables, +\( \widehat{\theta} \) itself must be a random variable. Thus it has +a pdf, call this function \( p(\boldsymbol{t}) \). The aim of the bootstrap is to +estimate \( p(\boldsymbol{t}) \) by the relative frequency of +\( \widehat{\theta} \). You can think of this as using a histogram +in the place of \( p(\boldsymbol{t}) \). If the relative frequency closely +resembles \( p(\vec{t}) \), then using numerics, it is straight forward to +estimate all the interesting parameters of \( p(\boldsymbol{t}) \) using point +estimators.

    @@ -451,7 +447,7 @@ idea is to use the relative frequency of \( \widehat{\theta}^* \)

  • 95
  • 96
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs087.html b/doc/pub/Regression/html/._Regression-bs087.html index f227c9cd5..d943b0dbb 100644 --- a/doc/pub/Regression/html/._Regression-bs087.html +++ b/doc/pub/Regression/html/._Regression-bs087.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,23 +408,24 @@ MathJax.Hub.Config({ -

    Resampling methods: Bootstrap approach

    +

    Resampling methods: More Bootstrap background

    -But -unless there is enough information available about the process that -generated \( X_1,X_2,\cdots,X_n \), \( p(x) \) is in general -unknown. Therefore, Efron in 1979 asked the -question: What if we replace \( p(x) \) by the relative frequency -of the observation \( X_i \); if we draw observations in accordance with -the relative frequency of the observations, will we obtain the same -result in some asymptotic sense? The answer is yes. +In the case that \( \widehat{\theta} \) has +more than one component, and the components are independent, we use the +same estimator on each component separately. If the probability +density function of \( X_i \), \( p(x) \), had been known, then it would have +been straight forward to do this by: -

    -Instead of generating the histogram for the relative -frequency of the observation \( X_i \), just draw the values -\( (X_1^*,X_2^*,\cdots,X_n^*) \) with replacement from the vector -\( \boldsymbol{X} \). +

      +
    1. Drawing lots of numbers from \( p(x) \), suppose we call one such set of numbers \( (X_1^*, X_2^*, \cdots, X_n^*) \).
    2. +
    3. Then using these numbers, we could compute a replica of \( \widehat{\theta} \) called \( \widehat{\theta}^* \).
    4. +
    + +By repeated use of (1) and (2), many +estimates of \( \widehat{\theta} \) could have been obtained. The +idea is to use the relative frequency of \( \widehat{\theta}^* \) +(think of a histogram) as an estimate of \( p(\boldsymbol{t}) \).

    @@ -450,7 +453,7 @@ frequency of the observation \( X_i \), just draw the values

  • 96
  • 97
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs088.html b/doc/pub/Regression/html/._Regression-bs088.html index de8507101..f643081e7 100644 --- a/doc/pub/Regression/html/._Regression-bs088.html +++ b/doc/pub/Regression/html/._Regression-bs088.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,27 +408,23 @@ MathJax.Hub.Config({ -

    Resampling methods: Bootstrap steps

    +

    Resampling methods: Bootstrap approach

    -The independent bootstrap works like this: +But +unless there is enough information available about the process that +generated \( X_1,X_2,\cdots,X_n \), \( p(x) \) is in general +unknown. Therefore, Efron in 1979 asked the +question: What if we replace \( p(x) \) by the relative frequency +of the observation \( X_i \); if we draw observations in accordance with +the relative frequency of the observations, will we obtain the same +result in some asymptotic sense? The answer is yes. -

      -
    1. Draw with replacement \( n \) numbers for the observed variables \( \boldsymbol{x} = (x_1,x_2,\cdots,x_n) \).
    2. -
    3. Define a vector \( \boldsymbol{x}^* \) containing the values which were drawn from \( \boldsymbol{x} \).
    4. -
    5. Using the vector \( \boldsymbol{x}^* \) compute \( \widehat{\theta}^* \) by evaluating \( \widehat \theta \) under the observations \( \boldsymbol{x}^* \).
    6. -
    7. Repeat this process \( k \) times.
    8. -
    - -When you are done, you can draw a histogram of the relative frequency -of \( \widehat \theta^* \). This is your estimate of the probability -distribution \( p(t) \). Using this probability distribution you can -estimate any statistics thereof. In principle you never draw the -histogram of the relative frequency of \( \widehat{\theta}^* \). Instead -you use the estimators corresponding to the statistic of interest. For -example, if you are interested in estimating the variance of \( \widehat -\theta \), apply the etsimator \( \widehat \sigma^2 \) to the values -\( \widehat \theta ^* \). +

    +Instead of generating the histogram for the relative +frequency of the observation \( X_i \), just draw the values +\( (X_1^*,X_2^*,\cdots,X_n^*) \) with replacement from the vector +\( \boldsymbol{X} \).

    @@ -454,7 +452,7 @@ example, if you are interested in estimating the variance of \( \widehat

  • 97
  • 98
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs089.html b/doc/pub/Regression/html/._Regression-bs089.html index 6b7880006..afdb549c5 100644 --- a/doc/pub/Regression/html/._Regression-bs089.html +++ b/doc/pub/Regression/html/._Regression-bs089.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,67 +408,28 @@ MathJax.Hub.Config({ -

    Code example for the Bootstrap method

    +

    Resampling methods: Bootstrap steps

    -The following code starts with a Gaussian distribution with mean value -\( \mu =100 \) and variance \( \sigma=15 \). We use this to generate the data -used in the bootstrap analysis. The bootstrap analysis returns a data -set after a given number of bootstrap operations (as many as we have -data points). This data set consists of estimated mean values for each -bootstrap operation. The histogram generated by the bootstrap method -shows that the distribution for these mean values is also a Gaussian, -centered around the mean value \( \mu=100 \) but with standard deviation -\( \sigma/\sqrt{n} \), where \( n \) is the number of bootstrap samples (in -this case the same as the number of original data points). The value -of the standard deviation is what we expect from the central limit -theorem. +The independent bootstrap works like this: -

    +

      +
    1. Draw with replacement \( n \) numbers for the observed variables \( \boldsymbol{x} = (x_1,x_2,\cdots,x_n) \).
    2. +
    3. Define a vector \( \boldsymbol{x}^* \) containing the values which were drawn from \( \boldsymbol{x} \).
    4. +
    5. Using the vector \( \boldsymbol{x}^* \) compute \( \widehat{\theta}^* \) by evaluating \( \widehat \theta \) under the observations \( \boldsymbol{x}^* \).
    6. +
    7. Repeat this process \( k \) times.
    8. +
    - -
    from numpy import *
    -from numpy.random import randint, randn
    -from time import time
    -import matplotlib.mlab as mlab
    -import matplotlib.pyplot as plt
    +When you are done, you can draw a histogram of the relative frequency
    +of \( \widehat \theta^* \). This is your estimate of the probability
    +distribution \( p(t) \). Using this probability distribution you can
    +estimate any statistics thereof. In principle you never draw the
    +histogram of the relative frequency of \( \widehat{\theta}^* \). Instead
    +you use the estimators corresponding to the statistic of interest. For
    +example, if you are interested in estimating the variance of \( \widehat
    +\theta \), apply the etsimator \( \widehat \sigma^2 \) to the values
    +\( \widehat \theta ^* \).
     
    -# Returns mean of bootstrap samples                                                                                                                                                
    -def stat(data):
    -    return mean(data)
    -
    -# Bootstrap algorithm
    -def bootstrap(data, statistic, R):
    -    t = zeros(R); n = len(data); inds = arange(n); t0 = time()
    -    # non-parametric bootstrap         
    -    for i in range(R):
    -        t[i] = statistic(data[randint(0,n,n)])
    -
    -    # analysis    
    -    print("Runtime: %g sec" % (time()-t0)); print("Bootstrap Statistics :")
    -    print("original           bias      std. error")
    -    print("%8g %8g %14g %15g" % (statistic(data), std(data),mean(t),std(t)))
    -    return t
    -
    -
    -mu, sigma = 100, 15
    -datapoints = 10000
    -x = mu + sigma*random.randn(datapoints)
    -# bootstrap returns the data sample                                    
    -t = bootstrap(x, stat, datapoints)
    -# the histogram of the bootstrapped  data                                                                                                    
    -n, binsboot, patches = plt.hist(t, 50, normed=1, facecolor='red', alpha=0.75)
    -
    -# add a 'best fit' line  
    -y = mlab.normpdf( binsboot, mean(t), std(t))
    -lt = plt.plot(binsboot, y, 'r--', linewidth=1)
    -plt.xlabel('Smarts')
    -plt.ylabel('Probability')
    -plt.axis([99.5, 100.6, 0, 3.0])
    -plt.grid(True)
    -
    -plt.show()
    -

    @@ -493,7 +456,7 @@ plt.show()

  • 98
  • 99
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs090.html b/doc/pub/Regression/html/._Regression-bs090.html index 4e5e92b3b..480a3052d 100644 --- a/doc/pub/Regression/html/._Regression-bs090.html +++ b/doc/pub/Regression/html/._Regression-bs090.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,26 +406,69 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Various steps in cross-validation

    +

    Code example for the Bootstrap method

    -When the repetitive splitting of the data set is done randomly, -samples may accidently end up in a fast majority of the splits in -either training or test set. Such samples may have an unbalanced -influence on either model building or prediction evaluation. To avoid -this \( k \)-fold cross-validation structures the data splitting. The -samples are divided into \( k \) more or less equally sized exhaustive and -mutually exclusive subsets. In turn (at each split) one of these -subsets plays the role of the test set while the union of the -remaining subsets constitutes the training set. Such a splitting -warrants a balanced representation of each sample in both training and -test set over the splits. Still the division into the \( k \) subsets -involves a degree of randomness. This may be fully excluded when -choosing \( k=n \). This particular case is referred to as leave-one-out -cross-validation (LOOCV). +The following code starts with a Gaussian distribution with mean value +\( \mu =100 \) and variance \( \sigma=15 \). We use this to generate the data +used in the bootstrap analysis. The bootstrap analysis returns a data +set after a given number of bootstrap operations (as many as we have +data points). This data set consists of estimated mean values for each +bootstrap operation. The histogram generated by the bootstrap method +shows that the distribution for these mean values is also a Gaussian, +centered around the mean value \( \mu=100 \) but with standard deviation +\( \sigma/\sqrt{n} \), where \( n \) is the number of bootstrap samples (in +this case the same as the number of original data points). The value +of the standard deviation is what we expect from the central limit +theorem. +

    + + +

    from numpy import *
    +from numpy.random import randint, randn
    +from time import time
    +import matplotlib.mlab as mlab
    +import matplotlib.pyplot as plt
    +
    +# Returns mean of bootstrap samples                                                                                                                                                
    +def stat(data):
    +    return mean(data)
    +
    +# Bootstrap algorithm
    +def bootstrap(data, statistic, R):
    +    t = zeros(R); n = len(data); inds = arange(n); t0 = time()
    +    # non-parametric bootstrap         
    +    for i in range(R):
    +        t[i] = statistic(data[randint(0,n,n)])
    +
    +    # analysis    
    +    print("Runtime: %g sec" % (time()-t0)); print("Bootstrap Statistics :")
    +    print("original           bias      std. error")
    +    print("%8g %8g %14g %15g" % (statistic(data), std(data),mean(t),std(t)))
    +    return t
    +
    +
    +mu, sigma = 100, 15
    +datapoints = 10000
    +x = mu + sigma*random.randn(datapoints)
    +# bootstrap returns the data sample                                    
    +t = bootstrap(x, stat, datapoints)
    +# the histogram of the bootstrapped  data                                                                                                    
    +n, binsboot, patches = plt.hist(t, 50, normed=1, facecolor='red', alpha=0.75)
    +
    +# add a 'best fit' line  
    +y = mlab.normpdf( binsboot, mean(t), std(t))
    +lt = plt.plot(binsboot, y, 'r--', linewidth=1)
    +plt.xlabel('Smarts')
    +plt.ylabel('Probability')
    +plt.axis([99.5, 100.6, 0, 3.0])
    +plt.grid(True)
    +
    +plt.show()
    +

    @@ -450,7 +495,7 @@ cross-validation (LOOCV).

  • 99
  • 100
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs091.html b/doc/pub/Regression/html/._Regression-bs091.html index 023855f4b..34b0cfdab 100644 --- a/doc/pub/Regression/html/._Regression-bs091.html +++ b/doc/pub/Regression/html/._Regression-bs091.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,34 +408,23 @@ MathJax.Hub.Config({ -

    How to set up the cross-validation for Ridge and/or Lasso

    +

    Various steps in cross-validation

    -
      -
    • Define a range of interest for the penalty parameter.
    • -
    • Divide the data set into training and test set comprising samples \( \{1, \ldots, n\} \setminus i \) and \( \{ i \} \), respectively.
    • -
    • Fit the linear regression model by means of ridge estimation for each \( \lambda \) in the grid using the training set, and the corresponding estimate of the error variance \( \boldsymbol{\sigma}_{-i}^2(\lambda) \), as
    • -
    - -$$ -\begin{align*} -\boldsymbol{\beta}_{-i}(\lambda) & = ( \boldsymbol{X}_{-i, \ast}^{T} -\boldsymbol{X}_{-i, \ast} + \lambda \boldsymbol{I}_{pp})^{-1} -\boldsymbol{X}_{-i, \ast}^{T} \boldsymbol{y}_{-i} -\end{align*} -$$ - - -
      -
    • Evaluate the prediction performance of these models on the test set by \( \log\{L[y_i, \boldsymbol{X}_{i, \ast}; \boldsymbol{\beta}_{-i}(\lambda), \boldsymbol{\sigma}_{-i}^2(\lambda)]\} \). Or, by the prediction error \( |y_i - \boldsymbol{X}_{i, \ast} \boldsymbol{\beta}_{-i}(\lambda)| \), the relative error, the error squared or the R2 score function.
    • -
    • Repeat the first three steps such that each sample plays the role of the test set once.
    • -
    • Average the prediction performances of the test sets at each grid point of the penalty bias/parameter. It is an estimate of the prediction performance of the model corresponding to this value of the penalty parameter on novel data. It is defined as
    • -
    - -$$ -\begin{align*} -\frac{1}{n} \sum_{i = 1}^n \log\{L[y_i, \mathbf{X}_{i, \ast}; \boldsymbol{\beta}_{-i}(\lambda), \boldsymbol{\sigma}_{-i}^2(\lambda)]\}. -\end{align*} -$$ +

    +When the repetitive splitting of the data set is done randomly, +samples may accidently end up in a fast majority of the splits in +either training or test set. Such samples may have an unbalanced +influence on either model building or prediction evaluation. To avoid +this \( k \)-fold cross-validation structures the data splitting. The +samples are divided into \( k \) more or less equally sized exhaustive and +mutually exclusive subsets. In turn (at each split) one of these +subsets plays the role of the test set while the union of the +remaining subsets constitutes the training set. Such a splitting +warrants a balanced representation of each sample in both training and +test set over the splits. Still the division into the \( k \) subsets +involves a degree of randomness. This may be fully excluded when +choosing \( k=n \). This particular case is referred to as leave-one-out +cross-validation (LOOCV).

    @@ -461,7 +452,7 @@ $$

  • 100
  • 101
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs092.html b/doc/pub/Regression/html/._Regression-bs092.html index 9b4d61306..43e5a7505 100644 --- a/doc/pub/Regression/html/._Regression-bs092.html +++ b/doc/pub/Regression/html/._Regression-bs092.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,28 +406,38 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Cross-validation in brief

    +

    How to set up the cross-validation for Ridge and/or Lasso

    + +
      +
    • Define a range of interest for the penalty parameter.
    • +
    • Divide the data set into training and test set comprising samples \( \{1, \ldots, n\} \setminus i \) and \( \{ i \} \), respectively.
    • +
    • Fit the linear regression model by means of ridge estimation for each \( \lambda \) in the grid using the training set, and the corresponding estimate of the error variance \( \boldsymbol{\sigma}_{-i}^2(\lambda) \), as
    • +
    + +$$ +\begin{align*} +\boldsymbol{\beta}_{-i}(\lambda) & = ( \boldsymbol{X}_{-i, \ast}^{T} +\boldsymbol{X}_{-i, \ast} + \lambda \boldsymbol{I}_{pp})^{-1} +\boldsymbol{X}_{-i, \ast}^{T} \boldsymbol{y}_{-i} +\end{align*} +$$ + + +
      +
    • Evaluate the prediction performance of these models on the test set by \( \log\{L[y_i, \boldsymbol{X}_{i, \ast}; \boldsymbol{\beta}_{-i}(\lambda), \boldsymbol{\sigma}_{-i}^2(\lambda)]\} \). Or, by the prediction error \( |y_i - \boldsymbol{X}_{i, \ast} \boldsymbol{\beta}_{-i}(\lambda)| \), the relative error, the error squared or the R2 score function.
    • +
    • Repeat the first three steps such that each sample plays the role of the test set once.
    • +
    • Average the prediction performances of the test sets at each grid point of the penalty bias/parameter. It is an estimate of the prediction performance of the model corresponding to this value of the penalty parameter on novel data. It is defined as
    • +
    + +$$ +\begin{align*} +\frac{1}{n} \sum_{i = 1}^n \log\{L[y_i, \mathbf{X}_{i, \ast}; \boldsymbol{\beta}_{-i}(\lambda), \boldsymbol{\sigma}_{-i}^2(\lambda)]\}. +\end{align*} +$$

    -For the various values of \( k \) - -

      -
    1. shuffle the dataset randomly.
    2. -
    3. Split the dataset into \( k \) groups.
    4. -
    5. For each unique group: - -
        -
      1. Decide which group to use as set for test data
      2. -
      3. Take the remaining groups as a training data set
      4. -
      5. Fit a model on the training set and evaluate it on the test set
      6. -
      7. Retain the evaluation score and discard the model
      8. -
      - -
    6. Summarize the model using the sample of model evaluation scores
    7. -
    -

    diff --git a/doc/pub/Regression/html/._Regression-bs093.html b/doc/pub/Regression/html/._Regression-bs093.html index 2ee6416bb..4dec8d54e 100644 --- a/doc/pub/Regression/html/._Regression-bs093.html +++ b/doc/pub/Regression/html/._Regression-bs093.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,104 +408,26 @@ MathJax.Hub.Config({ -

    Code Example for Cross-validation and \( k \)-fold Cross-validation

    +

    Cross-validation in brief

    -The code here uses Ridge regression with cross-validation (CV) resampling and \( k \)-fold CV in order to fit a specific polynomial. -

    +For the various values of \( k \) - -

    import numpy as np
    -import matplotlib.pyplot as plt
    -from sklearn.model_selection import KFold
    -from sklearn.linear_model import Ridge
    -from sklearn.model_selection import cross_val_score
    -from sklearn.preprocessing import PolynomialFeatures
    +
      +
    1. shuffle the dataset randomly.
    2. +
    3. Split the dataset into \( k \) groups.
    4. +
    5. For each unique group: -# A seed just to ensure that the random numbers are the same for every run. -# Useful for eventual debugging. -np.random.seed(3155) +
        +
      1. Decide which group to use as set for test data
      2. +
      3. Take the remaining groups as a training data set
      4. +
      5. Fit a model on the training set and evaluate it on the test set
      6. +
      7. Retain the evaluation score and discard the model
      8. +
      -# Generate the data. -nsamples = 100 -x = np.random.randn(nsamples) -y = 3*x**2 + np.random.randn(nsamples) +
    6. Summarize the model using the sample of model evaluation scores
    7. +
    -## Cross-validation on Ridge regression using KFold only - -# Decide degree on polynomial to fit -poly = PolynomialFeatures(degree = 6) - -# Decide which values of lambda to use -nlambdas = 500 -lambdas = np.logspace(-3, 5, nlambdas) - -# Initialize a KFold instance -k = 5 -kfold = KFold(n_splits = k) - -# Perform the cross-validation to estimate MSE -scores_KFold = np.zeros((nlambdas, k)) - -i = 0 -for lmb in lambdas: - ridge = Ridge(alpha = lmb) - j = 0 - for train_inds, test_inds in kfold.split(x): - xtrain = x[train_inds] - ytrain = y[train_inds] - - xtest = x[test_inds] - ytest = y[test_inds] - - Xtrain = poly.fit_transform(xtrain[:, np.newaxis]) - ridge.fit(Xtrain, ytrain[:, np.newaxis]) - - Xtest = poly.fit_transform(xtest[:, np.newaxis]) - ypred = ridge.predict(Xtest) - - scores_KFold[i,j] = np.sum((ypred - ytest[:, np.newaxis])**2)/np.size(ypred) - - j += 1 - i += 1 - - -estimated_mse_KFold = np.mean(scores_KFold, axis = 1) - -## Cross-validation using cross_val_score from sklearn along with KFold - -# kfold is an instance initialized above as: -# kfold = KFold(n_splits = k) - -estimated_mse_sklearn = np.zeros(nlambdas) -i = 0 -for lmb in lambdas: - ridge = Ridge(alpha = lmb) - - X = poly.fit_transform(x[:, np.newaxis]) - estimated_mse_folds = cross_val_score(ridge, X, y[:, np.newaxis], scoring='neg_mean_squared_error', cv=kfold) - - # cross_val_score return an array containing the estimated negative mse for every fold. - # we have to the the mean of every array in order to get an estimate of the mse of the model - estimated_mse_sklearn[i] = np.mean(-estimated_mse_folds) - - i += 1 - -## Plot and compare the slightly different ways to perform cross-validation - -plt.figure() - -plt.plot(np.log10(lambdas), estimated_mse_sklearn, label = 'cross_val_score') -plt.plot(np.log10(lambdas), estimated_mse_KFold, 'r--', label = 'KFold') - -plt.xlabel('log10(lambda)') -plt.ylabel('mse') - -plt.legend() - -plt.show() -
    -

    diff --git a/doc/pub/Regression/html/._Regression-bs094.html b/doc/pub/Regression/html/._Regression-bs094.html index 4d66729b5..81458d449 100644 --- a/doc/pub/Regression/html/._Regression-bs094.html +++ b/doc/pub/Regression/html/._Regression-bs094.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,69 +408,103 @@ MathJax.Hub.Config({ -

    The bias-variance tradeoff

    +

    Code Example for Cross-validation and \( k \)-fold Cross-validation

    -We will discuss the bias-variance tradeoff in the context of -continuous predictions such as regression. However, many of the -intuitions and ideas discussed here also carry over to classification -tasks. Consider a dataset \( \mathcal{L} \) consisting of the data -\( \mathbf{X}_\mathcal{L}=\{(y_j, \boldsymbol{x}_j), j=0\ldots n-1\} \). - +The code here uses Ridge regression with cross-validation (CV) resampling and \( k \)-fold CV in order to fit a specific polynomial.

    -Let us assume that the true data is generated from a noisy model -$$ -\boldsymbol{y}=f(\boldsymbol{x}) + \boldsymbol{\epsilon} -$$ + +

    import numpy as np
    +import matplotlib.pyplot as plt
    +from sklearn.model_selection import KFold
    +from sklearn.linear_model import Ridge
    +from sklearn.model_selection import cross_val_score
    +from sklearn.preprocessing import PolynomialFeatures
     
    -

    -where \( \epsilon \) is normally distributed with mean zero and standard deviation \( \sigma^2 \). +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(3155) -

    -In our derivation of the ordinary least squares method we defined then -an approximation to the function \( f \) in terms of the parameters -\( \boldsymbol{\beta} \) and the design matrix \( \boldsymbol{X} \) which embody our model, -that is \( \boldsymbol{\tilde{y}}=\boldsymbol{X}\boldsymbol{\beta} \). +# Generate the data. +nsamples = 100 +x = np.random.randn(nsamples) +y = 3*x**2 + np.random.randn(nsamples) -

    -Thereafter we found the parameters \( \boldsymbol{\beta} \) by optimizing the means squared error via the so-called cost function -$$ -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]. -$$ +## Cross-validation on Ridge regression using KFold only -

    -We can rewrite this as -$$ -\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. -$$ +# Decide degree on polynomial to fit +poly = PolynomialFeatures(degree = 6) -

    -The three terms represent the square of the bias of the learning -method, which can be thought of as the error caused by the simplifying -assumptions built into the method. The second term represents the -variance of the chosen model and finally the last terms is variance of -the error \( \boldsymbol{\epsilon} \). +# Decide which values of lambda to use +nlambdas = 500 +lambdas = np.logspace(-3, 5, nlambdas) -

    -To derive this equation, we need to recall that the variance of \( \boldsymbol{y} \) and \( \boldsymbol{\epsilon} \) are both equal to \( \sigma^2 \). The mean value of \( \boldsymbol{\epsilon} \) is by definition equal to zero. Furthermore, the function \( f \) is not a stochastics variable, idem for \( \boldsymbol{\tilde{y}} \). -We use a more compact notation in terms of the expectation value -$$ -\mathbb{E}\left[(\boldsymbol{y}-\boldsymbol{\tilde{y}})^2\right]=\mathbb{E}\left[(\boldsymbol{f}+\boldsymbol{\epsilon}-\boldsymbol{\tilde{y}})^2\right], -$$ +# Initialize a KFold instance +k = 5 +kfold = KFold(n_splits = k) -and adding and subtracting \( \mathbb{E}\left[\boldsymbol{\tilde{y}}\right] \) we get -$$ -\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], -$$ +# Perform the cross-validation to estimate MSE +scores_KFold = np.zeros((nlambdas, k)) -which, using the abovementioned expectation values can be rewritten as -$$ -\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, -$$ +i = 0 +for lmb in lambdas: + ridge = Ridge(alpha = lmb) + j = 0 + for train_inds, test_inds in kfold.split(x): + xtrain = x[train_inds] + ytrain = y[train_inds] -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} \). + xtest = x[test_inds] + ytest = y[test_inds] + Xtrain = poly.fit_transform(xtrain[:, np.newaxis]) + ridge.fit(Xtrain, ytrain[:, np.newaxis]) + + Xtest = poly.fit_transform(xtest[:, np.newaxis]) + ypred = ridge.predict(Xtest) + + scores_KFold[i,j] = np.sum((ypred - ytest[:, np.newaxis])**2)/np.size(ypred) + + j += 1 + i += 1 + + +estimated_mse_KFold = np.mean(scores_KFold, axis = 1) + +## Cross-validation using cross_val_score from sklearn along with KFold + +# kfold is an instance initialized above as: +# kfold = KFold(n_splits = k) + +estimated_mse_sklearn = np.zeros(nlambdas) +i = 0 +for lmb in lambdas: + ridge = Ridge(alpha = lmb) + + X = poly.fit_transform(x[:, np.newaxis]) + estimated_mse_folds = cross_val_score(ridge, X, y[:, np.newaxis], scoring='neg_mean_squared_error', cv=kfold) + + # cross_val_score return an array containing the estimated negative mse for every fold. + # we have to the the mean of every array in order to get an estimate of the mse of the model + estimated_mse_sklearn[i] = np.mean(-estimated_mse_folds) + + i += 1 + +## Plot and compare the slightly different ways to perform cross-validation + +plt.figure() + +plt.plot(np.log10(lambdas), estimated_mse_sklearn, label = 'cross_val_score') +plt.plot(np.log10(lambdas), estimated_mse_KFold, 'r--', label = 'KFold') + +plt.xlabel('log10(lambda)') +plt.ylabel('mse') + +plt.legend() + +plt.show() +

    @@ -495,7 +531,7 @@ that is the rewriting in terms of the so-called bias, the variance of the model

  • 103
  • 104
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs095.html b/doc/pub/Regression/html/._Regression-bs095.html index 4caa22b32..b81d507e3 100644 --- a/doc/pub/Regression/html/._Regression-bs095.html +++ b/doc/pub/Regression/html/._Regression-bs095.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,65 +408,69 @@ MathJax.Hub.Config({ -

    Example code for Bias-Variance tradeoff

    +

    The bias-variance tradeoff

    +

    +We will discuss the bias-variance tradeoff in the context of +continuous predictions such as regression. However, many of the +intuitions and ideas discussed here also carry over to classification +tasks. Consider a dataset \( \mathcal{L} \) consisting of the data +\( \mathbf{X}_\mathcal{L}=\{(y_j, \boldsymbol{x}_j), j=0\ldots n-1\} \). - -

    import matplotlib.pyplot as plt
    -import numpy as np
    -from sklearn.linear_model import LinearRegression, Ridge, Lasso
    -from sklearn.preprocessing import PolynomialFeatures
    -from sklearn.model_selection import train_test_split
    -from sklearn.pipeline import make_pipeline
    -from sklearn.utils import resample
    +

    +Let us assume that the true data is generated from a noisy model -np.random.seed(2018) +$$ +\boldsymbol{y}=f(\boldsymbol{x}) + \boldsymbol{\epsilon} +$$ -n = 500 -n_boostraps = 100 -degree = 18 # A quite high value, just to show. -noise = 0.1 +

    +where \( \epsilon \) is normally distributed with mean zero and standard deviation \( \sigma^2 \). -# Make data set. -x = np.linspace(-1, 3, n).reshape(-1, 1) -y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2) + np.random.normal(0, 0.1, x.shape) +

    +In our derivation of the ordinary least squares method we defined then +an approximation to the function \( f \) in terms of the parameters +\( \boldsymbol{\beta} \) and the design matrix \( \boldsymbol{X} \) which embody our model, +that is \( \boldsymbol{\tilde{y}}=\boldsymbol{X}\boldsymbol{\beta} \). -# Hold out some test data that is never used in training. -x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2) +

    +Thereafter we found the parameters \( \boldsymbol{\beta} \) by optimizing the means squared error via the so-called cost function +$$ +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]. +$$ -# Combine x transformation and model into one operation. -# Not neccesary, but convenient. -model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) +

    +We can rewrite this as +$$ +\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. +$$ -# The following (m x n_bootstraps) matrix holds the column vectors y_pred -# for each bootstrap iteration. -y_pred = np.empty((y_test.shape[0], n_boostraps)) -for i in range(n_boostraps): - x_, y_ = resample(x_train, y_train) +

    +The three terms represent the square of the bias of the learning +method, which can be thought of as the error caused by the simplifying +assumptions built into the method. The second term represents the +variance of the chosen model and finally the last terms is variance of +the error \( \boldsymbol{\epsilon} \). - # Evaluate the new model on the same test data each time. - y_pred[:, i] = model.fit(x_, y_).predict(x_test).ravel() +

    +To derive this equation, we need to recall that the variance of \( \boldsymbol{y} \) and \( \boldsymbol{\epsilon} \) are both equal to \( \sigma^2 \). The mean value of \( \boldsymbol{\epsilon} \) is by definition equal to zero. Furthermore, the function \( f \) is not a stochastics variable, idem for \( \boldsymbol{\tilde{y}} \). +We use a more compact notation in terms of the expectation value +$$ +\mathbb{E}\left[(\boldsymbol{y}-\boldsymbol{\tilde{y}})^2\right]=\mathbb{E}\left[(\boldsymbol{f}+\boldsymbol{\epsilon}-\boldsymbol{\tilde{y}})^2\right], +$$ -# Note: Expectations and variances taken w.r.t. different training -# data sets, hence the axis=1. Subsequent means are taken across the test data -# set in order to obtain a total value, but before this we have error/bias/variance -# calculated per data point in the test set. -# Note 2: The use of keepdims=True is important in the calculation of bias as this -# maintains the column vector form. Dropping this yields very unexpected results. -error = np.mean( np.mean((y_test - y_pred)**2, axis=1, keepdims=True) ) -bias = np.mean( (y_test - np.mean(y_pred, axis=1, keepdims=True))**2 ) -variance = np.mean( np.var(y_pred, axis=1, keepdims=True) ) -print('Error:', error) -print('Bias^2:', bias) -print('Var:', variance) -print('{} >= {} + {} = {}'.format(error, bias, variance, bias+variance)) +and adding and subtracting \( \mathbb{E}\left[\boldsymbol{\tilde{y}}\right] \) we get +$$ +\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], +$$ + +which, using the abovementioned expectation values can be rewritten as +$$ +\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, +$$ + +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} \). -plt.plot(x[::5, :], y[::5, :], label='f(x)') -plt.scatter(x_test, y_test, label='Data points') -plt.scatter(x_test, np.mean(y_pred, axis=1), label='Pred') -plt.legend() -plt.show() -

    @@ -491,7 +497,7 @@ plt.show()

  • 104
  • 105
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs096.html b/doc/pub/Regression/html/._Regression-bs096.html index 28f71446a..ff2685372 100644 --- a/doc/pub/Regression/html/._Regression-bs096.html +++ b/doc/pub/Regression/html/._Regression-bs096.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,7 +408,7 @@ MathJax.Hub.Config({ -

    Understanding what happens

    +

    Example code for Bias-Variance tradeoff

    @@ -420,40 +422,48 @@ MathJax.Hub.Config({ np.random.seed(2018) -n = 40 +n = 500 n_boostraps = 100 -maxdegree = 14 - +degree = 18 # A quite high value, just to show. +noise = 0.1 # Make data set. -x = np.linspace(-3, 3, n).reshape(-1, 1) -y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape) -error = np.zeros(maxdegree) -bias = np.zeros(maxdegree) -variance = np.zeros(maxdegree) -polydegree = np.zeros(maxdegree) +x = np.linspace(-1, 3, n).reshape(-1, 1) +y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2) + np.random.normal(0, 0.1, x.shape) + +# Hold out some test data that is never used in training. x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2) -for degree in range(maxdegree): - model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) - y_pred = np.empty((y_test.shape[0], n_boostraps)) - for i in range(n_boostraps): - x_, y_ = resample(x_train, y_train) - y_pred[:, i] = model.fit(x_, y_).predict(x_test).ravel() +# Combine x transformation and model into one operation. +# Not neccesary, but convenient. +model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) - polydegree[degree] = degree - error[degree] = np.mean( np.mean((y_test - y_pred)**2, axis=1, keepdims=True) ) - bias[degree] = np.mean( (y_test - np.mean(y_pred, axis=1, keepdims=True))**2 ) - variance[degree] = np.mean( np.var(y_pred, axis=1, keepdims=True) ) - print('Polynomial degree:', degree) - print('Error:', error[degree]) - print('Bias^2:', bias[degree]) - print('Var:', variance[degree]) - print('{} >= {} + {} = {}'.format(error[degree], bias[degree], variance[degree], bias[degree]+variance[degree])) +# The following (m x n_bootstraps) matrix holds the column vectors y_pred +# for each bootstrap iteration. +y_pred = np.empty((y_test.shape[0], n_boostraps)) +for i in range(n_boostraps): + x_, y_ = resample(x_train, y_train) -plt.plot(polydegree, error, label='Error') -plt.plot(polydegree, bias, label='bias') -plt.plot(polydegree, variance, label='Variance') + # Evaluate the new model on the same test data each time. + y_pred[:, i] = model.fit(x_, y_).predict(x_test).ravel() + +# Note: Expectations and variances taken w.r.t. different training +# data sets, hence the axis=1. Subsequent means are taken across the test data +# set in order to obtain a total value, but before this we have error/bias/variance +# calculated per data point in the test set. +# Note 2: The use of keepdims=True is important in the calculation of bias as this +# maintains the column vector form. Dropping this yields very unexpected results. +error = np.mean( np.mean((y_test - y_pred)**2, axis=1, keepdims=True) ) +bias = np.mean( (y_test - np.mean(y_pred, axis=1, keepdims=True))**2 ) +variance = np.mean( np.var(y_pred, axis=1, keepdims=True) ) +print('Error:', error) +print('Bias^2:', bias) +print('Var:', variance) +print('{} >= {} + {} = {}'.format(error, bias, variance, bias+variance)) + +plt.plot(x[::5, :], y[::5, :], label='f(x)') +plt.scatter(x_test, y_test, label='Data points') +plt.scatter(x_test, np.mean(y_pred, axis=1), label='Pred') plt.legend() plt.show()

    @@ -483,7 +493,7 @@ plt.show()
  • 105
  • 106
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs097.html b/doc/pub/Regression/html/._Regression-bs097.html index 0aa28c1f5..ede082a00 100644 --- a/doc/pub/Regression/html/._Regression-bs097.html +++ b/doc/pub/Regression/html/._Regression-bs097.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,42 +406,59 @@ MathJax.Hub.Config({

     

     

     

    - - -

    Summing up

    + +

    Understanding what happens

    -The bias-variance tradeoff summarizes the fundamental tension in -machine learning, particularly supervised learning, between the -complexity of a model and the amount of training data needed to train -it. Since data is often limited, in practice it is often useful to -use a less-complex model with higher bias, that is a model whose asymptotic -performance is worse than another model because it is easier to -train and less sensitive to sampling noise arising from having a -finite-sized training dataset (smaller variance). -

    -The above equations tell us that in -order to minimize the expected test error, we need to select a -statistical learning method that simultaneously achieves low variance -and low bias. Note that variance is inherently a nonnegative quantity, -and squared bias is also nonnegative. Hence, we see that the expected -test MSE can never lie below \( Var(\epsilon) \), the irreducible error. + +

    import matplotlib.pyplot as plt
    +import numpy as np
    +from sklearn.linear_model import LinearRegression, Ridge, Lasso
    +from sklearn.preprocessing import PolynomialFeatures
    +from sklearn.model_selection import train_test_split
    +from sklearn.pipeline import make_pipeline
    +from sklearn.utils import resample
     
    -

    -What do we mean by the variance and bias of a statistical learning -method? The variance refers to the amount by which our model would change if we -estimated it using a different training data set. Since the training -data are used to fit the statistical learning method, different -training data sets will result in a different estimate. But ideally the -estimate for our model should not vary too much between training -sets. However, if a method has high variance then small changes in -the training data can result in large changes in the model. In general, more -flexible statistical methods have higher variance. +np.random.seed(2018) -

    -You may also find this recent article of interest. +n = 40 +n_boostraps = 100 +maxdegree = 14 + +# Make data set. +x = np.linspace(-3, 3, n).reshape(-1, 1) +y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape) +error = np.zeros(maxdegree) +bias = np.zeros(maxdegree) +variance = np.zeros(maxdegree) +polydegree = np.zeros(maxdegree) +x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2) + +for degree in range(maxdegree): + model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) + y_pred = np.empty((y_test.shape[0], n_boostraps)) + for i in range(n_boostraps): + x_, y_ = resample(x_train, y_train) + y_pred[:, i] = model.fit(x_, y_).predict(x_test).ravel() + + polydegree[degree] = degree + error[degree] = np.mean( np.mean((y_test - y_pred)**2, axis=1, keepdims=True) ) + bias[degree] = np.mean( (y_test - np.mean(y_pred, axis=1, keepdims=True))**2 ) + variance[degree] = np.mean( np.var(y_pred, axis=1, keepdims=True) ) + print('Polynomial degree:', degree) + print('Error:', error[degree]) + print('Bias^2:', bias[degree]) + print('Var:', variance[degree]) + print('{} >= {} + {} = {}'.format(error[degree], bias[degree], variance[degree], bias[degree]+variance[degree])) + +plt.plot(polydegree, error, label='Error') +plt.plot(polydegree, bias, label='bias') +plt.plot(polydegree, variance, label='Variance') +plt.legend() +plt.show() +

    @@ -466,7 +485,7 @@ You may also find this recent 106

  • 107
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs098.html b/doc/pub/Regression/html/._Regression-bs098.html index b0b972733..38ef94d86 100644 --- a/doc/pub/Regression/html/._Regression-bs098.html +++ b/doc/pub/Regression/html/._Regression-bs098.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,84 +406,42 @@ MathJax.Hub.Config({

     

     

     

    - + + +

    Summing up

    -

    Another Example from Scikit-Learn's Repository

    +The bias-variance tradeoff summarizes the fundamental tension in +machine learning, particularly supervised learning, between the +complexity of a model and the amount of training data needed to train +it. Since data is often limited, in practice it is often useful to +use a less-complex model with higher bias, that is a model whose asymptotic +performance is worse than another model because it is easier to +train and less sensitive to sampling noise arising from having a +finite-sized training dataset (smaller variance). - -

    """
    -============================
    -Underfitting vs. Overfitting
    -============================
    +

    +The above equations tell us that in +order to minimize the expected test error, we need to select a +statistical learning method that simultaneously achieves low variance +and low bias. Note that variance is inherently a nonnegative quantity, +and squared bias is also nonnegative. Hence, we see that the expected +test MSE can never lie below \( Var(\epsilon) \), the irreducible error. -This example demonstrates the problems of underfitting and overfitting and -how we can use linear regression with polynomial features to approximate -nonlinear functions. The plot shows the function that we want to approximate, -which is a part of the cosine function. In addition, the samples from the -real function and the approximations of different models are displayed. The -models have polynomial features of different degrees. We can see that a -linear function (polynomial with degree 1) is not sufficient to fit the -training samples. This is called **underfitting**. A polynomial of degree 4 -approximates the true function almost perfectly. However, for higher degrees -the model will **overfit** the training data, i.e. it learns the noise of the -training data. -We evaluate quantitatively **overfitting** / **underfitting** by using -cross-validation. We calculate the mean squared error (MSE) on the validation -set, the higher, the less likely the model generalizes correctly from the -training data. -""" +

    +What do we mean by the variance and bias of a statistical learning +method? The variance refers to the amount by which our model would change if we +estimated it using a different training data set. Since the training +data are used to fit the statistical learning method, different +training data sets will result in a different estimate. But ideally the +estimate for our model should not vary too much between training +sets. However, if a method has high variance then small changes in +the training data can result in large changes in the model. In general, more +flexible statistical methods have higher variance. -print(__doc__) +

    +You may also find this recent article of interest. -import numpy as np -import matplotlib.pyplot as plt -from sklearn.pipeline import Pipeline -from sklearn.preprocessing import PolynomialFeatures -from sklearn.linear_model import LinearRegression -from sklearn.model_selection import cross_val_score - - -def true_fun(X): - return np.cos(1.5 * np.pi * X) - -np.random.seed(0) - -n_samples = 30 -degrees = [1, 4, 15] - -X = np.sort(np.random.rand(n_samples)) -y = true_fun(X) + np.random.randn(n_samples) * 0.1 - -plt.figure(figsize=(14, 5)) -for i in range(len(degrees)): - ax = plt.subplot(1, len(degrees), i + 1) - plt.setp(ax, xticks=(), yticks=()) - - polynomial_features = PolynomialFeatures(degree=degrees[i], - include_bias=False) - linear_regression = LinearRegression() - pipeline = Pipeline([("polynomial_features", polynomial_features), - ("linear_regression", linear_regression)]) - pipeline.fit(X[:, np.newaxis], y) - - # Evaluate the models using crossvalidation - scores = cross_val_score(pipeline, X[:, np.newaxis], y, - scoring="neg_mean_squared_error", cv=10) - - X_test = np.linspace(0, 1, 100) - plt.plot(X_test, pipeline.predict(X_test[:, np.newaxis]), label="Model") - plt.plot(X_test, true_fun(X_test), label="True function") - plt.scatter(X, y, edgecolor='b', s=20, label="Samples") - plt.xlabel("x") - plt.ylabel("y") - plt.xlim((0, 1)) - plt.ylim((-2, 2)) - plt.legend(loc="best") - plt.title("Degree {}\nMSE = {:.2e}(+/- {:.2e})".format( - degrees[i], -scores.mean(), scores.std())) -plt.show() -

    @@ -508,7 +468,7 @@ plt.show()

  • 107
  • 108
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs099.html b/doc/pub/Regression/html/._Regression-bs099.html index 64aebc988..9e1eee39e 100644 --- a/doc/pub/Regression/html/._Regression-bs099.html +++ b/doc/pub/Regression/html/._Regression-bs099.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,88 +408,80 @@ MathJax.Hub.Config({ -

    More examples on bootstrap and cross-validation and errors

    - +

    Another Example from Scikit-Learn's Repository

    -

    # Common imports
    -import os
    +
    """
    +============================
    +Underfitting vs. Overfitting
    +============================
    +
    +This example demonstrates the problems of underfitting and overfitting and
    +how we can use linear regression with polynomial features to approximate
    +nonlinear functions. The plot shows the function that we want to approximate,
    +which is a part of the cosine function. In addition, the samples from the
    +real function and the approximations of different models are displayed. The
    +models have polynomial features of different degrees. We can see that a
    +linear function (polynomial with degree 1) is not sufficient to fit the
    +training samples. This is called **underfitting**. A polynomial of degree 4
    +approximates the true function almost perfectly. However, for higher degrees
    +the model will **overfit** the training data, i.e. it learns the noise of the
    +training data.
    +We evaluate quantitatively **overfitting** / **underfitting** by using
    +cross-validation. We calculate the mean squared error (MSE) on the validation
    +set, the higher, the less likely the model generalizes correctly from the
    +training data.
    +"""
    +
    +print(__doc__)
    +
     import numpy as np
    -import pandas as pd
     import matplotlib.pyplot as plt
    -from sklearn.linear_model import LinearRegression, Ridge, Lasso
    -from sklearn.model_selection import train_test_split
    -from sklearn.utils import resample
    -from sklearn.metrics import mean_squared_error
    -# Where to save the figures and data files
    -PROJECT_ROOT_DIR = "Results"
    -FIGURE_ID = "Results/FigureFiles"
    -DATA_ID = "DataFiles/"
    +from sklearn.pipeline import Pipeline
    +from sklearn.preprocessing import PolynomialFeatures
    +from sklearn.linear_model import LinearRegression
    +from sklearn.model_selection import cross_val_score
     
    -if not os.path.exists(PROJECT_ROOT_DIR):
    -    os.mkdir(PROJECT_ROOT_DIR)
     
    -if not os.path.exists(FIGURE_ID):
    -    os.makedirs(FIGURE_ID)
    +def true_fun(X):
    +    return np.cos(1.5 * np.pi * X)
     
    -if not os.path.exists(DATA_ID):
    -    os.makedirs(DATA_ID)
    +np.random.seed(0)
     
    -def image_path(fig_id):
    -    return os.path.join(FIGURE_ID, fig_id)
    +n_samples = 30
    +degrees = [1, 4, 15]
     
    -def data_path(dat_id):
    -    return os.path.join(DATA_ID, dat_id)
    +X = np.sort(np.random.rand(n_samples))
    +y = true_fun(X) + np.random.randn(n_samples) * 0.1
     
    -def save_fig(fig_id):
    -    plt.savefig(image_path(fig_id) + ".png", format='png')
    +plt.figure(figsize=(14, 5))
    +for i in range(len(degrees)):
    +    ax = plt.subplot(1, len(degrees), i + 1)
    +    plt.setp(ax, xticks=(), yticks=())
     
    -infile = open(data_path("EoS.csv"),'r')
    +    polynomial_features = PolynomialFeatures(degree=degrees[i],
    +                                             include_bias=False)
    +    linear_regression = LinearRegression()
    +    pipeline = Pipeline([("polynomial_features", polynomial_features),
    +                         ("linear_regression", linear_regression)])
    +    pipeline.fit(X[:, np.newaxis], y)
     
    -# Read the EoS data as  csv file and organize the data into two arrays with density and energies
    -EoS = pd.read_csv(infile, names=('Density', 'Energy'))
    -EoS['Energy'] = pd.to_numeric(EoS['Energy'], errors='coerce')
    -EoS = EoS.dropna()
    -Energies = EoS['Energy']
    -Density = EoS['Density']
    -#  The design matrix now as function of various polytrops
    +    # Evaluate the models using crossvalidation
    +    scores = cross_val_score(pipeline, X[:, np.newaxis], y,
    +                             scoring="neg_mean_squared_error", cv=10)
     
    -Maxpolydegree = 30
    -X = np.zeros((len(Density),Maxpolydegree))
    -X[:,0] = 1.0
    -testerror = np.zeros(Maxpolydegree)
    -trainingerror = np.zeros(Maxpolydegree)
    -polynomial = np.zeros(Maxpolydegree)
    -
    -trials = 100
    -for polydegree in range(1, Maxpolydegree):
    -    polynomial[polydegree] = polydegree
    -    for degree in range(polydegree):
    -        X[:,degree] = Density**(degree/3.0)
    -
    -# loop over trials in order to estimate the expectation value of the MSE
    -    testerror[polydegree] = 0.0
    -    trainingerror[polydegree] = 0.0
    -    for samples in range(trials):
    -        x_train, x_test, y_train, y_test = train_test_split(X, Energies, test_size=0.2)
    -        model = LinearRegression(fit_intercept=True).fit(x_train, y_train)
    -        ypred = model.predict(x_train)
    -        ytilde = model.predict(x_test)
    -        testerror[polydegree] += mean_squared_error(y_test, ytilde)
    -        trainingerror[polydegree] += mean_squared_error(y_train, ypred) 
    -
    -    testerror[polydegree] /= trials
    -    trainingerror[polydegree] /= trials
    -    print("Degree of polynomial: %3d"% polynomial[polydegree])
    -    print("Mean squared error on training data: %.8f" % trainingerror[polydegree])
    -    print("Mean squared error on test data: %.8f" % testerror[polydegree])
    -
    -plt.plot(polynomial, np.log10(trainingerror), label='Training Error')
    -plt.plot(polynomial, np.log10(testerror), label='Test Error')
    -plt.xlabel('Polynomial degree')
    -plt.ylabel('log10[MSE]')
    -plt.legend()
    +    X_test = np.linspace(0, 1, 100)
    +    plt.plot(X_test, pipeline.predict(X_test[:, np.newaxis]), label="Model")
    +    plt.plot(X_test, true_fun(X_test), label="True function")
    +    plt.scatter(X, y, edgecolor='b', s=20, label="Samples")
    +    plt.xlabel("x")
    +    plt.ylabel("y")
    +    plt.xlim((0, 1))
    +    plt.ylim((-2, 2))
    +    plt.legend(loc="best")
    +    plt.title("Degree {}\nMSE = {:.2e}(+/- {:.2e})".format(
    +        degrees[i], -scores.mean(), scores.std()))
     plt.show()
     

    @@ -516,7 +510,7 @@ plt.show()

  • 108
  • 109
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs100.html b/doc/pub/Regression/html/._Regression-bs100.html index 8910ba75d..df0747465 100644 --- a/doc/pub/Regression/html/._Regression-bs100.html +++ b/doc/pub/Regression/html/._Regression-bs100.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,9 +406,9 @@ MathJax.Hub.Config({

     

     

     

    - + -

    The same example but now with cross-validation

    +

    More examples on bootstrap and cross-validation and errors

    @@ -417,11 +419,9 @@ MathJax.Hub.Config({ import pandas as pd import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression, Ridge, Lasso +from sklearn.model_selection import train_test_split +from sklearn.utils import resample from sklearn.metrics import mean_squared_error -from sklearn.model_selection import KFold -from sklearn.model_selection import cross_val_score - - # Where to save the figures and data files PROJECT_ROOT_DIR = "Results" FIGURE_ID = "Results/FigureFiles" @@ -443,7 +443,7 @@ DATA_ID = " return os.path.join(DATA_ID, dat_id) def save_fig(fig_id): - plt.savefig(image_path(fig_id) + ".png", format='png') + plt.savefig(image_path(fig_id) + ".png", format='png') infile = open(data_path("EoS.csv"),'r') @@ -458,22 +458,35 @@ Density = EoS[& Maxpolydegree = 30 X = np.zeros((len(Density),Maxpolydegree)) X[:,0] = 1.0 -estimated_mse_sklearn = np.zeros(Maxpolydegree) +testerror = np.zeros(Maxpolydegree) +trainingerror = np.zeros(Maxpolydegree) polynomial = np.zeros(Maxpolydegree) -k =5 -kfold = KFold(n_splits = k) +trials = 100 for polydegree in range(1, Maxpolydegree): polynomial[polydegree] = polydegree for degree in range(polydegree): X[:,degree] = Density**(degree/3.0) - OLS = LinearRegression() -# loop over trials in order to estimate the expectation value of the MSE - estimated_mse_folds = cross_val_score(OLS, X, Energies, scoring='neg_mean_squared_error', cv=kfold) -#[:, np.newaxis] - estimated_mse_sklearn[polydegree] = np.mean(-estimated_mse_folds) -plt.plot(polynomial, np.log10(estimated_mse_sklearn), label='Test Error') +# loop over trials in order to estimate the expectation value of the MSE + testerror[polydegree] = 0.0 + trainingerror[polydegree] = 0.0 + for samples in range(trials): + x_train, x_test, y_train, y_test = train_test_split(X, Energies, test_size=0.2) + model = LinearRegression(fit_intercept=True).fit(x_train, y_train) + ypred = model.predict(x_train) + ytilde = model.predict(x_test) + testerror[polydegree] += mean_squared_error(y_test, ytilde) + trainingerror[polydegree] += mean_squared_error(y_train, ypred) + + testerror[polydegree] /= trials + trainingerror[polydegree] /= trials + print("Degree of polynomial: %3d"% polynomial[polydegree]) + print("Mean squared error on training data: %.8f" % trainingerror[polydegree]) + print("Mean squared error on test data: %.8f" % testerror[polydegree]) + +plt.plot(polynomial, np.log10(trainingerror), label='Training Error') +plt.plot(polynomial, np.log10(testerror), label='Test Error') plt.xlabel('Polynomial degree') plt.ylabel('log10[MSE]') plt.legend() @@ -505,7 +518,7 @@ plt.show()

  • 109
  • 110
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs101.html b/doc/pub/Regression/html/._Regression-bs101.html index 22ff6e8e9..692e7e65a 100644 --- a/doc/pub/Regression/html/._Regression-bs101.html +++ b/doc/pub/Regression/html/._Regression-bs101.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -404,45 +406,78 @@ MathJax.Hub.Config({

     

     

     

    - + + +

    The same example but now with cross-validation

    -

    Cross-validation with Ridge

    -

    import numpy as np
    +
    # Common imports
    +import os
    +import numpy as np
    +import pandas as pd
     import matplotlib.pyplot as plt
    +from sklearn.linear_model import LinearRegression, Ridge, Lasso
    +from sklearn.metrics import mean_squared_error
     from sklearn.model_selection import KFold
    -from sklearn.linear_model import Ridge
     from sklearn.model_selection import cross_val_score
    -from sklearn.preprocessing import PolynomialFeatures
     
    -# A seed just to ensure that the random numbers are the same for every run.
    -np.random.seed(3155)
    -# Generate the data.
    -n = 100
    -x = np.linspace(-3, 3, n).reshape(-1, 1)
    -y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape)
    -# Decide degree on polynomial to fit
    -poly = PolynomialFeatures(degree = 10)
     
    -# Decide which values of lambda to use
    -nlambdas = 500
    -lambdas = np.logspace(-3, 5, nlambdas)
    -# Initialize a KFold instance
    -k = 5
    +# Where to save the figures and data files
    +PROJECT_ROOT_DIR = "Results"
    +FIGURE_ID = "Results/FigureFiles"
    +DATA_ID = "DataFiles/"
    +
    +if not os.path.exists(PROJECT_ROOT_DIR):
    +    os.mkdir(PROJECT_ROOT_DIR)
    +
    +if not os.path.exists(FIGURE_ID):
    +    os.makedirs(FIGURE_ID)
    +
    +if not os.path.exists(DATA_ID):
    +    os.makedirs(DATA_ID)
    +
    +def image_path(fig_id):
    +    return os.path.join(FIGURE_ID, fig_id)
    +
    +def data_path(dat_id):
    +    return os.path.join(DATA_ID, dat_id)
    +
    +def save_fig(fig_id):
    +    plt.savefig(image_path(fig_id) + ".png", format='png')
    +
    +infile = open(data_path("EoS.csv"),'r')
    +
    +# Read the EoS data as  csv file and organize the data into two arrays with density and energies
    +EoS = pd.read_csv(infile, names=('Density', 'Energy'))
    +EoS['Energy'] = pd.to_numeric(EoS['Energy'], errors='coerce')
    +EoS = EoS.dropna()
    +Energies = EoS['Energy']
    +Density = EoS['Density']
    +#  The design matrix now as function of various polytrops
    +
    +Maxpolydegree = 30
    +X = np.zeros((len(Density),Maxpolydegree))
    +X[:,0] = 1.0
    +estimated_mse_sklearn = np.zeros(Maxpolydegree)
    +polynomial = np.zeros(Maxpolydegree)
    +k =5
     kfold = KFold(n_splits = k)
    -estimated_mse_sklearn = np.zeros(nlambdas)
    -i = 0
    -for lmb in lambdas:
    -    ridge = Ridge(alpha = lmb)
    -    estimated_mse_folds = cross_val_score(ridge, x, y, scoring='neg_mean_squared_error', cv=kfold)
    -    estimated_mse_sklearn[i] = np.mean(-estimated_mse_folds)
    -    i += 1
    -plt.figure()
    -plt.plot(np.log10(lambdas), estimated_mse_sklearn, label = 'cross_val_score')
    -plt.xlabel('log10(lambda)')
    -plt.ylabel('MSE')
    +
    +for polydegree in range(1, Maxpolydegree):
    +    polynomial[polydegree] = polydegree
    +    for degree in range(polydegree):
    +        X[:,degree] = Density**(degree/3.0)
    +        OLS = LinearRegression()
    +# loop over trials in order to estimate the expectation value of the MSE
    +    estimated_mse_folds = cross_val_score(OLS, X, Energies, scoring='neg_mean_squared_error', cv=kfold)
    +#[:, np.newaxis]
    +    estimated_mse_sklearn[polydegree] = np.mean(-estimated_mse_folds)
    +
    +plt.plot(polynomial, np.log10(estimated_mse_sklearn), label='Test Error')
    +plt.xlabel('Polynomial degree')
    +plt.ylabel('log10[MSE]')
     plt.legend()
     plt.show()
     
    @@ -471,6 +506,8 @@ plt.show()
  • 109
  • 110
  • 111
  • +
  • ...
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs102.html b/doc/pub/Regression/html/._Regression-bs102.html index 1a9a7bdd0..1cb5095f2 100644 --- a/doc/pub/Regression/html/._Regression-bs102.html +++ b/doc/pub/Regression/html/._Regression-bs102.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,60 +408,46 @@ MathJax.Hub.Config({ -

    The Ising model

    - -

    -The one-dimensional Ising model with nearest neighbor interaction, no -external field and a constant coupling constant \( J \) is given by - -$$ -\begin{align} - H = -J \sum_{k}^L s_k s_{k + 1}, -\tag{21} -\end{align} -$$ - -

    -where \( s_i \in \{-1, 1\} \) and \( s_{N + 1} = s_1 \). The number of spins -in the system is determined by \( L \). For the one-dimensional system -there is no phase transition. - -

    -We will look at a system of \( L = 40 \) spins with a coupling constant of -\( J = 1 \). To get enough training data we will generate 10000 states -with their respective energies. - +

    Cross-validation with Ridge

    import numpy as np
     import matplotlib.pyplot as plt
    -from mpl_toolkits.axes_grid1 import make_axes_locatable
    -import seaborn as sns
    -import scipy.linalg as scl
    -from sklearn.model_selection import train_test_split
    -import tqdm
    -sns.set(color_codes=True)
    -cmap_args=dict(vmin=-1., vmax=1., cmap='seismic')
    +from sklearn.model_selection import KFold
    +from sklearn.linear_model import Ridge
    +from sklearn.model_selection import cross_val_score
    +from sklearn.preprocessing import PolynomialFeatures
     
    -L = 40
    -n = int(1e4)
    +# A seed just to ensure that the random numbers are the same for every run.
    +np.random.seed(3155)
    +# Generate the data.
    +n = 100
    +x = np.linspace(-3, 3, n).reshape(-1, 1)
    +y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape)
    +# Decide degree on polynomial to fit
    +poly = PolynomialFeatures(degree = 10)
     
    -spins = np.random.choice([-1, 1], size=(n, L))
    -J = 1.0
    -
    -energies = np.zeros(n)
    -
    -for i in range(n):
    -    energies[i] = - J * np.dot(spins[i], np.roll(spins[i], 1))
    +# Decide which values of lambda to use
    +nlambdas = 500
    +lambdas = np.logspace(-3, 5, nlambdas)
    +# Initialize a KFold instance
    +k = 5
    +kfold = KFold(n_splits = k)
    +estimated_mse_sklearn = np.zeros(nlambdas)
    +i = 0
    +for lmb in lambdas:
    +    ridge = Ridge(alpha = lmb)
    +    estimated_mse_folds = cross_val_score(ridge, x, y, scoring='neg_mean_squared_error', cv=kfold)
    +    estimated_mse_sklearn[i] = np.mean(-estimated_mse_folds)
    +    i += 1
    +plt.figure()
    +plt.plot(np.log10(lambdas), estimated_mse_sklearn, label = 'cross_val_score')
    +plt.xlabel('log10(lambda)')
    +plt.ylabel('MSE')
    +plt.legend()
    +plt.show()
     
    -

    -Here we use ordinary least squares -regression to predict the energy for the nearest neighbor -one-dimensional Ising model on a ring, i.e., the endpoints wrap -around. We will use linear regression to fit a value for -the coupling constant to achieve this. -

    @@ -484,6 +472,7 @@ the coupling constant to achieve this.

  • 109
  • 110
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs103.html b/doc/pub/Regression/html/._Regression-bs103.html index b0ceea666..6e06f383c 100644 --- a/doc/pub/Regression/html/._Regression-bs103.html +++ b/doc/pub/Regression/html/._Regression-bs103.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,53 +408,60 @@ MathJax.Hub.Config({ -

    Reformulating the problem to suit regression

    +

    The Ising model

    -A more general form for the one-dimensional Ising model is +The one-dimensional Ising model with nearest neighbor interaction, no +external field and a constant coupling constant \( J \) is given by $$ \begin{align} - H = - \sum_j^L \sum_k^L s_j s_k J_{jk}. -\tag{22} + H = -J \sum_{k}^L s_k s_{k + 1}, +\tag{21} \end{align} $$

    -Here we allow for interactions beyond the nearest neighbors and a state dependent -coupling constant. This latter expression can be formulated as -a matrix-product -$$ -\begin{align} - \boldsymbol{H} = \boldsymbol{X} J, -\tag{23} -\end{align} -$$ +where \( s_i \in \{-1, 1\} \) and \( s_{N + 1} = s_1 \). The number of spins +in the system is determined by \( L \). For the one-dimensional system +there is no phase transition.

    -where \( X_{jk} = s_j s_k \) and \( J \) is a matrix which consists of the -elements \( -J_{jk} \). This form of writing the energy fits perfectly -with the form utilized in linear regression, that is - -$$ -\begin{align} - \boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta} + \boldsymbol{\epsilon}, -\tag{24} -\end{align} -$$ - -

    -We split the data in training and test data as discussed in the previous example +We will look at a system of \( L = 40 \) spins with a coupling constant of +\( J = 1 \). To get enough training data we will generate 10000 states +with their respective energies.

    -

    X = np.zeros((n, L ** 2))
    +
    import numpy as np
    +import matplotlib.pyplot as plt
    +from mpl_toolkits.axes_grid1 import make_axes_locatable
    +import seaborn as sns
    +import scipy.linalg as scl
    +from sklearn.model_selection import train_test_split
    +import tqdm
    +sns.set(color_codes=True)
    +cmap_args=dict(vmin=-1., vmax=1., cmap='seismic')
    +
    +L = 40
    +n = int(1e4)
    +
    +spins = np.random.choice([-1, 1], size=(n, L))
    +J = 1.0
    +
    +energies = np.zeros(n)
    +
     for i in range(n):
    -    X[i] = np.outer(spins[i], spins[i]).ravel()
    -y = energies
    -X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    +    energies[i] = - J * np.dot(spins[i], np.roll(spins[i], 1))
     
    +

    +Here we use ordinary least squares +regression to predict the energy for the nearest neighbor +one-dimensional Ising model on a ring, i.e., the endpoints wrap +around. We will use linear regression to fit a value for +the coupling constant to achieve this. +

    @@ -476,6 +485,7 @@ X_train, X_test, y_train, y_test = train_tes

  • 109
  • 110
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs104.html b/doc/pub/Regression/html/._Regression-bs104.html index b5ccabc96..70b9fdbfb 100644 --- a/doc/pub/Regression/html/._Regression-bs104.html +++ b/doc/pub/Regression/html/._Regression-bs104.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,50 +408,52 @@ MathJax.Hub.Config({ -

    Linear regression

    +

    Reformulating the problem to suit regression

    -In the ordinary least squares method we choose the cost function +A more general form for the one-dimensional Ising model is $$ \begin{align} - C(\boldsymbol{X}, \boldsymbol{\beta})= \frac{1}{n}\left\{(\boldsymbol{X}\boldsymbol{\beta} - \boldsymbol{y})^T(\boldsymbol{X}\boldsymbol{\beta} - \boldsymbol{y})\right\}. -\tag{25} + H = - \sum_j^L \sum_k^L s_j s_k J_{jk}. +\tag{22} \end{align} $$

    -We then find the extremal point of \( C \) by taking the derivative with respect to \( \boldsymbol{\beta} \) as discussed above. -This yields the expression for \( \boldsymbol{\beta} \) to be - +Here we allow for interactions beyond the nearest neighbors and a state dependent +coupling constant. This latter expression can be formulated as +a matrix-product $$ - \boldsymbol{\beta} = \frac{\boldsymbol{X}^T \boldsymbol{y}}{\boldsymbol{X}^T \boldsymbol{X}}, +\begin{align} + \boldsymbol{H} = \boldsymbol{X} J, +\tag{23} +\end{align} $$

    -which immediately imposes some requirements on \( \boldsymbol{X} \) as there must exist -an inverse of \( \boldsymbol{X}^T \boldsymbol{X} \). If the expression we are modeling contains an -intercept, i.e., a constant term, we must make sure that the -first column of \( \boldsymbol{X} \) consists of \( 1 \). We do this here +where \( X_{jk} = s_j s_k \) and \( J \) is a matrix which consists of the +elements \( -J_{jk} \). This form of writing the energy fits perfectly +with the form utilized in linear regression, that is + +$$ +\begin{align} + \boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta} + \boldsymbol{\epsilon}, +\tag{24} +\end{align} +$$ + +

    +We split the data in training and test data as discussed in the previous example

    -

    X_train_own = np.concatenate(
    -    (np.ones(len(X_train))[:, np.newaxis], X_train),
    -    axis=1
    -)
    -X_test_own = np.concatenate(
    -    (np.ones(len(X_test))[:, np.newaxis], X_test),
    -    axis=1
    -)
    -
    -

    - - -

    def ols_inv(x: np.ndarray, y: np.ndarray) -> np.ndarray:
    -    return scl.inv(x.T @ x) @ (x.T @ y)
    -beta = ols_inv(X_train_own, y_train)
    +
    X = np.zeros((n, L ** 2))
    +for i in range(n):
    +    X[i] = np.outer(spins[i], spins[i]).ravel()
    +y = energies
    +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
     

    @@ -473,6 +477,7 @@ beta = ols_inv(X_train_own, y_train)

  • 109
  • 110
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs105.html b/doc/pub/Regression/html/._Regression-bs105.html index bcc834276..7ed99f14e 100644 --- a/doc/pub/Regression/html/._Regression-bs105.html +++ b/doc/pub/Regression/html/._Regression-bs105.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,90 +408,51 @@ MathJax.Hub.Config({ -

    Singular Value decomposition

    +

    Linear regression

    -Doing the inversion directly turns out to be a bad idea since the matrix -\( \boldsymbol{X}^T\boldsymbol{X} \) is singular. An alternative approach is to use the singular -value decomposition. Using the definition of the Moore-Penrose -pseudoinverse we can write the equation for \( \boldsymbol{\beta} \) as +In the ordinary least squares method we choose the cost function -$$ - \boldsymbol{\beta} = \boldsymbol{X}^{+}\boldsymbol{y}, -$$ - -

    -where the pseudoinverse of \( \boldsymbol{X} \) is given by - -$$ - \boldsymbol{X}^{+} = \frac{\boldsymbol{X}^T}{\boldsymbol{X}^T\boldsymbol{X}}. -$$ - -

    -Using singular value decomposition we can decompose the matrix \( \boldsymbol{X} = \boldsymbol{U}\boldsymbol{\Sigma} \boldsymbol{V}^T \), -where \( \boldsymbol{U} \) and \( \boldsymbol{V} \) are orthogonal(unitary) matrices and \( \boldsymbol{\Sigma} \) contains the singular values (more details below). -where \( X^{+} = V\Sigma^{+} U^T \). This reduces the equation for -\( \omega \) to $$ \begin{align} - \boldsymbol{\beta} = \boldsymbol{V}\boldsymbol{\Sigma}^{+} \boldsymbol{U}^T \boldsymbol{y}. -\tag{26} + C(\boldsymbol{X}, \boldsymbol{\beta})= \frac{1}{n}\left\{(\boldsymbol{X}\boldsymbol{\beta} - \boldsymbol{y})^T(\boldsymbol{X}\boldsymbol{\beta} - \boldsymbol{y})\right\}. +\tag{25} \end{align} $$

    -Note that solving this equation by actually doing the pseudoinverse -(which is what we will do) is not a good idea as this operation scales -as \( \mathcal{O}(n^3) \), where \( n \) is the number of elements in a -general matrix. Instead, doing \( QR \)-factorization and solving the -linear system as an equation would reduce this down to -\( \mathcal{O}(n^2) \) operations. +We then find the extremal point of \( C \) by taking the derivative with respect to \( \boldsymbol{\beta} \) as discussed above. +This yields the expression for \( \boldsymbol{\beta} \) to be + +$$ + \boldsymbol{\beta} = \frac{\boldsymbol{X}^T \boldsymbol{y}}{\boldsymbol{X}^T \boldsymbol{X}}, +$$ + +

    +which immediately imposes some requirements on \( \boldsymbol{X} \) as there must exist +an inverse of \( \boldsymbol{X}^T \boldsymbol{X} \). If the expression we are modeling contains an +intercept, i.e., a constant term, we must make sure that the +first column of \( \boldsymbol{X} \) consists of \( 1 \). We do this here

    -

    def ols_svd(x: np.ndarray, y: np.ndarray) -> np.ndarray:
    -    u, s, v = scl.svd(x)
    -    return v.T @ scl.pinv(scl.diagsvd(s, u.shape[0], v.shape[0])) @ u.T @ y
    +
    X_train_own = np.concatenate(
    +    (np.ones(len(X_train))[:, np.newaxis], X_train),
    +    axis=1
    +)
    +X_test_own = np.concatenate(
    +    (np.ones(len(X_test))[:, np.newaxis], X_test),
    +    axis=1
    +)
     

    -

    beta = ols_svd(X_train_own,y_train)
    +
    def ols_inv(x: np.ndarray, y: np.ndarray) -> np.ndarray:
    +    return scl.inv(x.T @ x) @ (x.T @ y)
    +beta = ols_inv(X_train_own, y_train)
     
    -

    -When extracting the \( J \)-matrix we need to make sure that we remove the intercept, as is done here - -

    - - -

    J = beta[1:].reshape(L, L)
    -
    -

    -A way of looking at the coefficients in \( J \) is to plot the matrices as images. - -

    - - -

    fig = plt.figure(figsize=(20, 14))
    -im = plt.imshow(J, **cmap_args)
    -plt.title("OLS", fontsize=18)
    -plt.xticks(fontsize=18)
    -plt.yticks(fontsize=18)
    -cb = fig.colorbar(im)
    -cb.ax.set_yticklabels(cb.ax.get_yticklabels(), fontsize=18)
    -plt.show()
    -
    -

    -It is interesting to note that OLS -considers both \( J_{j, j + 1} = -0.5 \) and \( J_{j, j - 1} = -0.5 \) as -valid matrix elements for \( J \). -In our discussion below on hyperparameters and Ridge and Lasso regression we will see that -this problem can be removed, partly and only with Lasso regression. - -

    -In this case our matrix inversion was actually possible. The obvious question now is what is the mathematics behind the SVD? -

    @@ -511,6 +474,7 @@ In this case our matrix inversion was actually possible. The obvious question no

  • 109
  • 110
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs106.html b/doc/pub/Regression/html/._Regression-bs106.html index c393477b2..0b95950bf 100644 --- a/doc/pub/Regression/html/._Regression-bs106.html +++ b/doc/pub/Regression/html/._Regression-bs106.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,128 +408,74 @@ MathJax.Hub.Config({ -

    The one-dimensional Ising model

    +

    Singular Value decomposition

    -Let us bring back the Ising model again, but now with an additional -focus on Ridge and Lasso regression as well. We repeat some of the -basic parts of the Ising model and the setup of the training and test -data. The one-dimensional Ising model with nearest neighbor -interaction, no external field and a constant coupling constant \( J \) is -given by +Doing the inversion directly turns out to be a bad idea since the matrix +\( \boldsymbol{X}^T\boldsymbol{X} \) is singular. An alternative approach is to use the singular +value decomposition. Using the definition of the Moore-Penrose +pseudoinverse we can write the equation for \( \boldsymbol{\beta} \) as +$$ + \boldsymbol{\beta} = \boldsymbol{X}^{+}\boldsymbol{y}, +$$ + +

    +where the pseudoinverse of \( \boldsymbol{X} \) is given by + +$$ + \boldsymbol{X}^{+} = \frac{\boldsymbol{X}^T}{\boldsymbol{X}^T\boldsymbol{X}}. +$$ + +

    +Using singular value decomposition we can decompose the matrix \( \boldsymbol{X} = \boldsymbol{U}\boldsymbol{\Sigma} \boldsymbol{V}^T \), +where \( \boldsymbol{U} \) and \( \boldsymbol{V} \) are orthogonal(unitary) matrices and \( \boldsymbol{\Sigma} \) contains the singular values (more details below). +where \( X^{+} = V\Sigma^{+} U^T \). This reduces the equation for +\( \omega \) to $$ \begin{align} - H = -J \sum_{k}^L s_k s_{k + 1}, -\tag{27} -\end{align} -$$ - -where \( s_i \in \{-1, 1\} \) and \( s_{N + 1} = s_1 \). The number of spins in the system is determined by \( L \). For the one-dimensional system there is no phase transition. - -

    -We will look at a system of \( L = 40 \) spins with a coupling constant of \( J = 1 \). To get enough training data we will generate 10000 states with their respective energies. - -

    - - -

    import numpy as np
    -import matplotlib.pyplot as plt
    -from mpl_toolkits.axes_grid1 import make_axes_locatable
    -import seaborn as sns
    -import scipy.linalg as scl
    -from sklearn.model_selection import train_test_split
    -import sklearn.linear_model as skl
    -import tqdm
    -sns.set(color_codes=True)
    -cmap_args=dict(vmin=-1., vmax=1., cmap='seismic')
    -
    -L = 40
    -n = int(1e4)
    -
    -spins = np.random.choice([-1, 1], size=(n, L))
    -J = 1.0
    -
    -energies = np.zeros(n)
    -
    -for i in range(n):
    -    energies[i] = - J * np.dot(spins[i], np.roll(spins[i], 1))
    -
    -

    -A more general form for the one-dimensional Ising model is - -$$ -\begin{align} - H = - \sum_j^L \sum_k^L s_j s_k J_{jk}. -\tag{28} + \boldsymbol{\beta} = \boldsymbol{V}\boldsymbol{\Sigma}^{+} \boldsymbol{U}^T \boldsymbol{y}. +\tag{26} \end{align} $$

    -Here we allow for interactions beyond the nearest neighbors and a more -adaptive coupling matrix. This latter expression can be formulated as -a matrix-product on the form -$$ -\begin{align} - H = X J, -\tag{29} -\end{align} -$$ - -

    -where \( X_{jk} = s_j s_k \) and \( J \) is the matrix consisting of the -elements \( -J_{jk} \). This form of writing the energy fits perfectly -with the form utilized in linear regression, viz. -$$ -\begin{align} - \boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta} + \boldsymbol{\epsilon}. -\tag{30} -\end{align} -$$ - -We organize the data as we did above -

    - - -

    X = np.zeros((n, L ** 2))
    -for i in range(n):
    -    X[i] = np.outer(spins[i], spins[i]).ravel()
    -y = energies
    -X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.96)
    -
    -X_train_own = np.concatenate(
    -    (np.ones(len(X_train))[:, np.newaxis], X_train),
    -    axis=1
    -)
    -
    -X_test_own = np.concatenate(
    -    (np.ones(len(X_test))[:, np.newaxis], X_test),
    -    axis=1
    -)
    -
    -

    -We will do all fitting with Scikit-Learn, +Note that solving this equation by actually doing the pseudoinverse +(which is what we will do) is not a good idea as this operation scales +as \( \mathcal{O}(n^3) \), where \( n \) is the number of elements in a +general matrix. Instead, doing \( QR \)-factorization and solving the +linear system as an equation would reduce this down to +\( \mathcal{O}(n^2) \) operations.

    -

    clf = skl.LinearRegression().fit(X_train, y_train)
    +
    def ols_svd(x: np.ndarray, y: np.ndarray) -> np.ndarray:
    +    u, s, v = scl.svd(x)
    +    return v.T @ scl.pinv(scl.diagsvd(s, u.shape[0], v.shape[0])) @ u.T @ y
     

    -When extracting the \( J \)-matrix we make sure to remove the intercept -

    -

    J_sk = clf.coef_.reshape(L, L)
    +
    beta = ols_svd(X_train_own,y_train)
     

    -And then we plot the results +When extracting the \( J \)-matrix we need to make sure that we remove the intercept, as is done here + +

    + + +

    J = beta[1:].reshape(L, L)
    +
    +

    +A way of looking at the coefficients in \( J \) is to plot the matrices as images. +

    fig = plt.figure(figsize=(20, 14))
    -im = plt.imshow(J_sk, **cmap_args)
    -plt.title("LinearRegression from Scikit-learn", fontsize=18)
    +im = plt.imshow(J, **cmap_args)
    +plt.title("OLS", fontsize=18)
     plt.xticks(fontsize=18)
     plt.yticks(fontsize=18)
     cb = fig.colorbar(im)
    @@ -535,7 +483,14 @@ cb.ax.se
     plt.show()
     

    -The results perfectly with our previous discussion where we used our own code. +It is interesting to note that OLS +considers both \( J_{j, j + 1} = -0.5 \) and \( J_{j, j - 1} = -0.5 \) as +valid matrix elements for \( J \). +In our discussion below on hyperparameters and Ridge and Lasso regression we will see that +this problem can be removed, partly and only with Lasso regression. + +

    +In this case our matrix inversion was actually possible. The obvious question now is what is the mathematics behind the SVD?

    @@ -557,6 +512,7 @@ The results perfectly with our previous discussion where we used our own code.

  • 109
  • 110
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs107.html b/doc/pub/Regression/html/._Regression-bs107.html index e5c600143..8a4b1eefd 100644 --- a/doc/pub/Regression/html/._Regression-bs107.html +++ b/doc/pub/Regression/html/._Regression-bs107.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,38 +408,137 @@ MathJax.Hub.Config({ -

    Ridge regression

    +

    The one-dimensional Ising model

    -Having explored the ordinary least squares we move on to ridge -regression. In ridge regression we include a regularizer. This -involves a new cost function which leads to a new estimate for the -weights \( \boldsymbol{\beta} \). This results in a penalized regression problem. The -cost function is given by +Let us bring back the Ising model again, but now with an additional +focus on Ridge and Lasso regression as well. We repeat some of the +basic parts of the Ising model and the setup of the training and test +data. The one-dimensional Ising model with nearest neighbor +interaction, no external field and a constant coupling constant \( J \) is +given by $$ \begin{align} - C(\boldsymbol{X}, \boldsymbol{\beta}; \lambda) = (\boldsymbol{X}\boldsymbol{\beta} - \boldsymbol{y})^T(\boldsymbol{X}\boldsymbol{\beta} - \boldsymbol{y}) + \lambda \boldsymbol{\beta}^T\boldsymbol{\beta}. -\tag{31} + H = -J \sum_{k}^L s_k s_{k + 1}, +\tag{27} \end{align} $$ +where \( s_i \in \{-1, 1\} \) and \( s_{N + 1} = s_1 \). The number of spins in the system is determined by \( L \). For the one-dimensional system there is no phase transition. + +

    +We will look at a system of \( L = 40 \) spins with a coupling constant of \( J = 1 \). To get enough training data we will generate 10000 states with their respective energies. +

    -

    _lambda = 0.1
    -clf_ridge = skl.Ridge(alpha=_lambda).fit(X_train, y_train)
    -J_ridge_sk = clf_ridge.coef_.reshape(L, L)
    -fig = plt.figure(figsize=(20, 14))
    -im = plt.imshow(J_ridge_sk, **cmap_args)
    -plt.title("Ridge from Scikit-learn", fontsize=18)
    +
    import numpy as np
    +import matplotlib.pyplot as plt
    +from mpl_toolkits.axes_grid1 import make_axes_locatable
    +import seaborn as sns
    +import scipy.linalg as scl
    +from sklearn.model_selection import train_test_split
    +import sklearn.linear_model as skl
    +import tqdm
    +sns.set(color_codes=True)
    +cmap_args=dict(vmin=-1., vmax=1., cmap='seismic')
    +
    +L = 40
    +n = int(1e4)
    +
    +spins = np.random.choice([-1, 1], size=(n, L))
    +J = 1.0
    +
    +energies = np.zeros(n)
    +
    +for i in range(n):
    +    energies[i] = - J * np.dot(spins[i], np.roll(spins[i], 1))
    +
    +

    +A more general form for the one-dimensional Ising model is + +$$ +\begin{align} + H = - \sum_j^L \sum_k^L s_j s_k J_{jk}. +\tag{28} +\end{align} +$$ + +

    +Here we allow for interactions beyond the nearest neighbors and a more +adaptive coupling matrix. This latter expression can be formulated as +a matrix-product on the form +$$ +\begin{align} + H = X J, +\tag{29} +\end{align} +$$ + +

    +where \( X_{jk} = s_j s_k \) and \( J \) is the matrix consisting of the +elements \( -J_{jk} \). This form of writing the energy fits perfectly +with the form utilized in linear regression, viz. +$$ +\begin{align} + \boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta} + \boldsymbol{\epsilon}. +\tag{30} +\end{align} +$$ + +We organize the data as we did above +

    + + +

    X = np.zeros((n, L ** 2))
    +for i in range(n):
    +    X[i] = np.outer(spins[i], spins[i]).ravel()
    +y = energies
    +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.96)
    +
    +X_train_own = np.concatenate(
    +    (np.ones(len(X_train))[:, np.newaxis], X_train),
    +    axis=1
    +)
    +
    +X_test_own = np.concatenate(
    +    (np.ones(len(X_test))[:, np.newaxis], X_test),
    +    axis=1
    +)
    +
    +

    +We will do all fitting with Scikit-Learn, + +

    + + +

    clf = skl.LinearRegression().fit(X_train, y_train)
    +
    +

    +When extracting the \( J \)-matrix we make sure to remove the intercept +

    + + +

    J_sk = clf.coef_.reshape(L, L)
    +
    +

    +And then we plot the results +

    + + +

    fig = plt.figure(figsize=(20, 14))
    +im = plt.imshow(J_sk, **cmap_args)
    +plt.title("LinearRegression from Scikit-learn", fontsize=18)
     plt.xticks(fontsize=18)
     plt.yticks(fontsize=18)
     cb = fig.colorbar(im)
     cb.ax.set_yticklabels(cb.ax.get_yticklabels(), fontsize=18)
    -
     plt.show()
     
    +

    +The results perfectly with our previous discussion where we used our own code. +

    @@ -457,6 +558,7 @@ plt.show()

  • 109
  • 110
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs108.html b/doc/pub/Regression/html/._Regression-bs108.html index 35e95de1f..369f574a3 100644 --- a/doc/pub/Regression/html/._Regression-bs108.html +++ b/doc/pub/Regression/html/._Regression-bs108.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,29 +408,31 @@ MathJax.Hub.Config({ -

    LASSO regression

    +

    Ridge regression

    -In the Least Absolute Shrinkage and Selection Operator (LASSO)-method we get a third cost function. +Having explored the ordinary least squares we move on to ridge +regression. In ridge regression we include a regularizer. This +involves a new cost function which leads to a new estimate for the +weights \( \boldsymbol{\beta} \). This results in a penalized regression problem. The +cost function is given by $$ \begin{align} - C(\boldsymbol{X}, \boldsymbol{\beta}; \lambda) = (\boldsymbol{X}\boldsymbol{\beta} - \boldsymbol{y})^T(\boldsymbol{X}\boldsymbol{\beta} - \boldsymbol{y}) + \lambda \sqrt{\boldsymbol{\beta}^T\boldsymbol{\beta}}. -\tag{32} + C(\boldsymbol{X}, \boldsymbol{\beta}; \lambda) = (\boldsymbol{X}\boldsymbol{\beta} - \boldsymbol{y})^T(\boldsymbol{X}\boldsymbol{\beta} - \boldsymbol{y}) + \lambda \boldsymbol{\beta}^T\boldsymbol{\beta}. +\tag{31} \end{align} $$ -

    -Finding the extremal point of this cost function is not so straight-forward as in least squares and ridge. We will therefore rely solely on the function ``Lasso`` from Scikit-Learn. -

    -

    clf_lasso = skl.Lasso(alpha=_lambda).fit(X_train, y_train)
    -J_lasso_sk = clf_lasso.coef_.reshape(L, L)
    +
    _lambda = 0.1
    +clf_ridge = skl.Ridge(alpha=_lambda).fit(X_train, y_train)
    +J_ridge_sk = clf_ridge.coef_.reshape(L, L)
     fig = plt.figure(figsize=(20, 14))
    -im = plt.imshow(J_lasso_sk, **cmap_args)
    -plt.title("Lasso from Scikit-learn", fontsize=18)
    +im = plt.imshow(J_ridge_sk, **cmap_args)
    +plt.title("Ridge from Scikit-learn", fontsize=18)
     plt.xticks(fontsize=18)
     plt.yticks(fontsize=18)
     cb = fig.colorbar(im)
    @@ -436,11 +440,6 @@ cb.ax.se
     
     plt.show()
     
    -

    -It is quite striking how LASSO breaks the symmetry of the coupling -constant as opposed to ridge and OLS. We get a sparse solution with -\( J_{j, j + 1} = -1 \). -

    @@ -459,6 +458,7 @@ constant as opposed to ridge and OLS. We get a sparse solution with

  • 109
  • 110
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs109.html b/doc/pub/Regression/html/._Regression-bs109.html index 69ebe3de9..8857bdf8a 100644 --- a/doc/pub/Regression/html/._Regression-bs109.html +++ b/doc/pub/Regression/html/._Regression-bs109.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,56 +408,40 @@ MathJax.Hub.Config({ -

    Performance as function of the regularization parameter

    +

    LASSO regression

    -We see how the different models perform for a different set of values for \( \lambda \). +In the Least Absolute Shrinkage and Selection Operator (LASSO)-method we get a third cost function. + +$$ +\begin{align} + C(\boldsymbol{X}, \boldsymbol{\beta}; \lambda) = (\boldsymbol{X}\boldsymbol{\beta} - \boldsymbol{y})^T(\boldsymbol{X}\boldsymbol{\beta} - \boldsymbol{y}) + \lambda \sqrt{\boldsymbol{\beta}^T\boldsymbol{\beta}}. +\tag{32} +\end{align} +$$ + +

    +Finding the extremal point of this cost function is not so straight-forward as in least squares and ridge. We will therefore rely solely on the function ``Lasso`` from Scikit-Learn.

    -

    lambdas = np.logspace(-4, 5, 10)
    -
    -train_errors = {
    -    "ols_sk": np.zeros(lambdas.size),
    -    "ridge_sk": np.zeros(lambdas.size),
    -    "lasso_sk": np.zeros(lambdas.size)
    -}
    -
    -test_errors = {
    -    "ols_sk": np.zeros(lambdas.size),
    -    "ridge_sk": np.zeros(lambdas.size),
    -    "lasso_sk": np.zeros(lambdas.size)
    -}
    -
    -plot_counter = 1
    -
    -fig = plt.figure(figsize=(32, 54))
    -
    -for i, _lambda in enumerate(tqdm.tqdm(lambdas)):
    -    for key, method in zip(
    -        ["ols_sk", "ridge_sk", "lasso_sk"],
    -        [skl.LinearRegression(), skl.Ridge(alpha=_lambda), skl.Lasso(alpha=_lambda)]
    -    ):
    -        method = method.fit(X_train, y_train)
    -
    -        train_errors[key][i] = method.score(X_train, y_train)
    -        test_errors[key][i] = method.score(X_test, y_test)
    -
    -        omega = method.coef_.reshape(L, L)
    -
    -        plt.subplot(10, 5, plot_counter)
    -        plt.imshow(omega, **cmap_args)
    -        plt.title(r"%s, $\lambda = %.4f$" % (key, _lambda))
    -        plot_counter += 1
    +
    clf_lasso = skl.Lasso(alpha=_lambda).fit(X_train, y_train)
    +J_lasso_sk = clf_lasso.coef_.reshape(L, L)
    +fig = plt.figure(figsize=(20, 14))
    +im = plt.imshow(J_lasso_sk, **cmap_args)
    +plt.title("Lasso from Scikit-learn", fontsize=18)
    +plt.xticks(fontsize=18)
    +plt.yticks(fontsize=18)
    +cb = fig.colorbar(im)
    +cb.ax.set_yticklabels(cb.ax.get_yticklabels(), fontsize=18)
     
     plt.show()
     

    -We see that LASSO reaches a good solution for low -values of \( \lambda \), but will "wither" when we increase \( \lambda \) too -much. Ridge is more stable over a larger range of values for -\( \lambda \), but eventually also fades away. +It is quite striking how LASSO breaks the symmetry of the coupling +constant as opposed to ridge and OLS. We get a sparse solution with +\( J_{j, j + 1} = -1 \).

    @@ -474,6 +460,7 @@ much. Ridge is more stable over a larger range of values for

  • 109
  • 110
  • 111
  • +
  • 112
  • »
  • diff --git a/doc/pub/Regression/html/._Regression-bs110.html b/doc/pub/Regression/html/._Regression-bs110.html index edf67ae2c..b5a3bae10 100644 --- a/doc/pub/Regression/html/._Regression-bs110.html +++ b/doc/pub/Regression/html/._Regression-bs110.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -406,57 +408,58 @@ MathJax.Hub.Config({ -

    Finding the optimal value of \( \lambda \)

    +

    Performance as function of the regularization parameter

    -To determine which value of \( \lambda \) is best we plot the accuracy of -the models when predicting the training and the testing set. We expect -the accuracy of the training set to be quite good, but if the accuracy -of the testing set is much lower this tells us that we might be -subject to an overfit model. The ideal scenario is an accuracy on the -testing set that is close to the accuracy of the training set. +We see how the different models perform for a different set of values for \( \lambda \).

    -

    fig = plt.figure(figsize=(20, 14))
    +
    lambdas = np.logspace(-4, 5, 10)
     
    -colors = {
    -    "ols_sk": "r",
    -    "ridge_sk": "y",
    -    "lasso_sk": "c"
    +train_errors = {
    +    "ols_sk": np.zeros(lambdas.size),
    +    "ridge_sk": np.zeros(lambdas.size),
    +    "lasso_sk": np.zeros(lambdas.size)
     }
     
    -for key in train_errors:
    -    plt.semilogx(
    -        lambdas,
    -        train_errors[key],
    -        colors[key],
    -        label="Train {0}".format(key),
    -        linewidth=4.0
    -    )
    +test_errors = {
    +    "ols_sk": np.zeros(lambdas.size),
    +    "ridge_sk": np.zeros(lambdas.size),
    +    "lasso_sk": np.zeros(lambdas.size)
    +}
    +
    +plot_counter = 1
    +
    +fig = plt.figure(figsize=(32, 54))
    +
    +for i, _lambda in enumerate(tqdm.tqdm(lambdas)):
    +    for key, method in zip(
    +        ["ols_sk", "ridge_sk", "lasso_sk"],
    +        [skl.LinearRegression(), skl.Ridge(alpha=_lambda), skl.Lasso(alpha=_lambda)]
    +    ):
    +        method = method.fit(X_train, y_train)
    +
    +        train_errors[key][i] = method.score(X_train, y_train)
    +        test_errors[key][i] = method.score(X_test, y_test)
    +
    +        omega = method.coef_.reshape(L, L)
    +
    +        plt.subplot(10, 5, plot_counter)
    +        plt.imshow(omega, **cmap_args)
    +        plt.title(r"%s, $\lambda = %.4f$" % (key, _lambda))
    +        plot_counter += 1
     
    -for key in test_errors:
    -    plt.semilogx(
    -        lambdas,
    -        test_errors[key],
    -        colors[key] + "--",
    -        label="Test {0}".format(key),
    -        linewidth=4.0
    -    )
    -plt.legend(loc="best", fontsize=18)
    -plt.xlabel(r"$\lambda$", fontsize=18)
    -plt.ylabel(r"$R^2$", fontsize=18)
    -plt.tick_params(labelsize=18)
     plt.show()
     

    -From the above figure we can see that LASSO with \( \lambda = 10^{-2} \) -achieves a very good accuracy on the test set. This by far surpasses the -other models for all values of \( \lambda \). +We see that LASSO reaches a good solution for low +values of \( \lambda \), but will "wither" when we increase \( \lambda \) too +much. Ridge is more stable over a larger range of values for +\( \lambda \), but eventually also fades away.

    -

      @@ -472,6 +475,8 @@ other models for all values of \( \lambda \).
    • 109
    • 110
    • 111
    • +
    • 112
    • +
    • »
    diff --git a/doc/pub/Regression/html/._Regression-bs111.html b/doc/pub/Regression/html/._Regression-bs111.html index e9064994b..c218d38b8 100644 --- a/doc/pub/Regression/html/._Regression-bs111.html +++ b/doc/pub/Regression/html/._Regression-bs111.html @@ -6,6 +6,7 @@ Automatically generated HTML file from DocOnce source + Data Analysis and Machine Learning: Linear Regression and more Advanced Regression Analysis @@ -40,215 +41,210 @@ Automatically generated HTML file from DocOnce source @@ -286,119 +282,117 @@ MathJax.Hub.Config({ @@ -414,38 +408,57 @@ MathJax.Hub.Config({ -

    Performance of the different models

    +

    Finding the optimal value of \( \lambda \)

    -In order to judge which model performs best at varying values of \( \lambda \) (for ridge and LASSO) we compute \( R^2 \) which is given by - -$$ -\begin{align} - R^2 = 1 - \frac{(y - \hat{y})^2}{(y - \bar{y})^2}, -\tag{45} -\end{align} -$$ - -where \( y \) is a vector with the true values of the energy, \( \hat{y} \) is the predicted values of \( y \) from the models and \( \bar{y} \) is the mean of \( \hat{y} \). +To determine which value of \( \lambda \) is best we plot the accuracy of +the models when predicting the training and the testing set. We expect +the accuracy of the training set to be quite good, but if the accuracy +of the testing set is much lower this tells us that we might be +subject to an overfit model. The ideal scenario is an accuracy on the +testing set that is close to the accuracy of the training set.

    -

    def r_squared(y, y_hat):
    -    return 1 - np.sum((y - y_hat) ** 2) / np.sum((y - np.mean(y_hat)) ** 2)
    +
    fig = plt.figure(figsize=(20, 14))
    +
    +colors = {
    +    "ols_sk": "r",
    +    "ridge_sk": "y",
    +    "lasso_sk": "c"
    +}
    +
    +for key in train_errors:
    +    plt.semilogx(
    +        lambdas,
    +        train_errors[key],
    +        colors[key],
    +        label="Train {0}".format(key),
    +        linewidth=4.0
    +    )
    +
    +for key in test_errors:
    +    plt.semilogx(
    +        lambdas,
    +        test_errors[key],
    +        colors[key] + "--",
    +        label="Test {0}".format(key),
    +        linewidth=4.0
    +    )
    +plt.legend(loc="best", fontsize=18)
    +plt.xlabel(r"$\lambda$", fontsize=18)
    +plt.ylabel(r"$R^2$", fontsize=18)
    +plt.tick_params(labelsize=18)
    +plt.show()
     

    -This is the same metric used by Scikit-learn for their regression models when scoring. +From the above figure we can see that LASSO with \( \lambda = 10^{-2} \) +achieves a very good accuracy on the test set. This by far surpasses the +other models for all values of \( \lambda \). +

    - -

    y_hat = clf.predict(X_test)
    -r_test = r_squared(y_test, y_hat)
    -sk_r_test = clf.score(X_test, y_test)
    -
    -assert abs(r_test - sk_r_test) < 1e-2
    -
    -

    diff --git a/doc/pub/Regression/html/Regression-bs.html b/doc/pub/Regression/html/Regression-bs.html index 383bb6110..ee4ea89d0 100644 --- a/doc/pub/Regression/html/Regression-bs.html +++ b/doc/pub/Regression/html/Regression-bs.html @@ -41,24 +41,21 @@ Automatically generated HTML file from DocOnce source @@ -281,116 +282,117 @@ MathJax.Hub.Config({ @@ -425,7 +427,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Dec 24, 2019

    +

    Aug 19, 2020


    @@ -449,7 +451,7 @@ MathJax.Hub.Config({

  • 9
  • 10
  • ...
  • -
  • 111
  • +
  • 112
  • »
  • @@ -467,7 +469,7 @@ MathJax.Hub.Config({
    - © 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + © 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license
    diff --git a/doc/pub/Regression/html/Regression-reveal.html b/doc/pub/Regression/html/Regression-reveal.html index 2b88651f8..c284c49de 100644 --- a/doc/pub/Regression/html/Regression-reveal.html +++ b/doc/pub/Regression/html/Regression-reveal.html @@ -148,18 +148,36 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

     
    -

    Dec 24, 2019

    +

    Aug 19, 2020


    - © 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + © 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license
    -

    Why Linear Regression (aka Ordinary Least Squares and family)

    +

    To do list

    + +
      +

    • Clean up Boston Housing data with correlations, add perhaps another more science related example. Add more info about correlation matrix, how to set it up and what it means
    • +

    • show how the data is set up and show the design matrix for this data set
    • +

    • Bring up covid data, say eg recent UK data on race etc
    • +

    • Same for the Ising model
    • +

    • Clean up part on statistics and resampling methods
    • +

    • add material on ridge and lasso and link to SVD, show proofs, use doughnut example
    • +

    • clean up math formalism, hats to boldface
    • +

    • add material about kernel regression and splines
    • +

    • rewrite Cross validation part and add discussion of train, validate and test, think of placing in statistics part or merge statistics into the reg material. add more formal stat on bootstrapping
    • +

    • add discussion of training, validation and testing using ridge and lasso regression. demonstrate usage of gridsearch in validation case.
    • +
    +
    + + +
    +

    Why Linear Regression (aka Ordinary Least Squares and family)

    Fitting a continuous function with linear parameterization in terms of the parameters \( \boldsymbol{\beta} \). @@ -183,7 +201,7 @@ Similarly, Mehta et a

    -

    Regression analysis, overarching aims

    +

    Regression analysis, overarching aims

    @@ -206,7 +224,7 @@ A regression model aims at finding a likelihood function \( p(\boldsymbol{y}\ver

    -

    Regression analysis, overarching aims II

    +

    Regression analysis, overarching aims II

    @@ -236,7 +254,7 @@ Linear regression gives us a set of analytical equations for the parameters \( \

    -

    Examples

    +

    Examples

    @@ -266,7 +284,7 @@ so-called General linear models +

    General linear models

    @@ -288,7 +306,7 @@ where \( \epsilon_i \) is the error in our approximation.

    -

    Rewriting the fitting procedure as a linear algebra problem

    +

    Rewriting the fitting procedure as a linear algebra problem

    @@ -309,7 +327,7 @@ $$

    -

    Rewriting the fitting procedure as a linear algebra problem, more details

    +

    Rewriting the fitting procedure as a linear algebra problem, more details

    @@ -361,7 +379,7 @@ The above design matrix is called a Generalizing the fitting procedure as a linear algebra problem +

    Generalizing the fitting procedure as a linear algebra problem

    @@ -392,7 +410,7 @@ $$

    -

    Generalizing the fitting procedure as a linear algebra problem

    +

    Generalizing the fitting procedure as a linear algebra problem

    @@ -423,7 +441,7 @@ The left-hand side of this equation is kwown. Our error vector \( \boldsymbol{\e

    -

    Optimizing our parameters

    +

    Optimizing our parameters

    @@ -453,7 +471,7 @@ our matrix as \( \boldsymbol{X}\in {\mathbb{R}}^{n\times p} \), with the predict

    -

    Our model for the nuclear binding energies

    +

    Our model for the nuclear binding energies

    In our introductory notes we looked at the so-called liquid drop model. Let us remind ourselves about what we did by looking at the code. @@ -491,7 +509,7 @@ DATA_ID = "DataFiles/" return os.path.join(DATA_ID, dat_id) def save_fig(fig_id): - plt.savefig(image_path(fig_id) + ".png", format='png') + plt.savefig(image_path(fig_id) + ".png", format='png') infile = open(data_path("MassEval2016.dat"),'r') @@ -501,7 +519,7 @@ Masses = pd.read_fwf(infile, usecols=(2,'N', 'Z', 'A', 'Element', 'Ebinding'), widths=(1,3,5,5,5,1,3,4,1,13,11,11,9,1,2,11,9,1,3,1,12,11,1), header=39, - index_col=False) + index_col=False) # Extrapolated values are indicated by '#' in place of the decimal place, so # the Ebinding column won't be numeric. Coerce to float and drop these entries. @@ -546,7 +564,7 @@ throughout these lectures.

    -

    Optimizing our parameters, more details

    +

    Optimizing our parameters, more details

    @@ -589,7 +607,7 @@ since when taking the first derivative with respect to the unknown parameters \(

    -

    Interpretations and optimizing our parameters

    +

    Interpretations and optimizing our parameters

    @@ -654,7 +672,7 @@ $$

    -

    Interpretations and optimizing our parameters

    +

    Interpretations and optimizing our parameters

    @@ -702,7 +720,7 @@ allow for the usage of direct linear algebra methods such as LU decomposi

    -

    Some useful matrix and vector expressions

    +

    Some useful matrix and vector expressions

    The following matrix and vector relation will be useful here and for the rest of the course. Vectors are always written as boldfaced lower case letters and @@ -735,7 +753,7 @@ $$

    -

    Interpretations and optimizing our parameters

    +

    Interpretations and optimizing our parameters

    @@ -771,7 +789,7 @@ Let us now return to our nuclear binding energies and simply code the above equa

    -

    Own code for Ordinary Least Squares

    +

    Own code for Ordinary Least Squares

    It is rather straightforward to implement the matrix inversion and obtain the parameters \( \boldsymbol{\beta} \). After having defined the matrix \( \boldsymbol{X} \) we simply need to @@ -782,14 +800,14 @@ write

    # matrix inversion to find beta
     beta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Energies)
     # and then make the prediction
    -ytilde = X @ beta
    +ytilde = X @ beta
     

    Alternatively, you can use the least squares functionality in Numpy as

    -

    fit = np.linalg.lstsq(X, Energies, rcond =None)[0]
    +
    fit = np.linalg.lstsq(X, Energies, rcond =None)[0]
     ytildenp = np.dot(fit,X.T)
     

    @@ -814,7 +832,7 @@ plt.show()

    -

    Adding error analysis and training set up

    +

    Adding error analysis and training set up

    We can easily test our fit by computing the \( R2 \) score that we discussed in connection with the functionality of _Scikit_Learn_ in the introductory slides. @@ -830,7 +848,7 @@ and we would be using it as

    -

    print(R2(Energies,ytilde))
    +
    print(R2(Energies,ytilde))
     

    We can easily add our MSE score as @@ -841,7 +859,7 @@ We can easily add our MSE score as n = np.size(y_model) return np.sum((y_data-y_model)**2)/n -print(MSE(Energies,ytilde)) +print(MSE(Energies,ytilde))

    and finally the relative error as @@ -850,7 +868,7 @@ and finally the relative error as

    def RelativeError(y_data,y_model):
         return abs((y_data-y_model)/y_data)
    -print(RelativeError(Energies, ytilde))
    +print(RelativeError(Energies, ytilde))
     

    We could also add the so-called Huber norm, which we defined as @@ -865,7 +883,7 @@ with \( a=\boldsymbol{y} - \boldsymbol{\tilde{y}} \).

    -

    The \( \chi^2 \) function

    +

    The \( \chi^2 \) function

    @@ -896,7 +914,7 @@ where the matrix \( \boldsymbol{\Sigma} \) is a diagonal matrix with \( \sigma_i

    -

    The \( \chi^2 \) function

    +

    The \( \chi^2 \) function

    @@ -927,7 +945,7 @@ where we have defined the matrix \( \boldsymbol{A} =\boldsymbol{X}/\boldsymbol{\

    -

    The \( \chi^2 \) function

    +

    The \( \chi^2 \) function

    @@ -956,7 +974,7 @@ $$

    -

    The \( \chi^2 \) function

    +

    The \( \chi^2 \) function

    @@ -992,7 +1010,7 @@ $$

    -

    The \( \chi^2 \) function

    +

    The \( \chi^2 \) function

    @@ -1021,7 +1039,7 @@ $$

    -

    The \( \chi^2 \) function

    +

    The \( \chi^2 \) function

    @@ -1085,7 +1103,7 @@ Lasso and Ridge regression. See below.

    -

    Fitting an Equation of State for Dense Nuclear Matter

    +

    Fitting an Equation of State for Dense Nuclear Matter

    Before we continue, let us introduce yet another example. We are going to fit the @@ -1110,7 +1128,7 @@ hyperparameter \( \lambda \), also to be explained below.

    -

    The code

    +

    The code

    @@ -1145,7 +1163,7 @@ DATA_ID = "DataFiles/" return os.path.join(DATA_ID, dat_id) def save_fig(fig_id): - plt.savefig(image_path(fig_id) + ".png", format='png') + plt.savefig(image_path(fig_id) + ".png", format='png') infile = open(data_path("EoS.csv"),'r') @@ -1168,12 +1186,12 @@ clf = skl.LinearRegression().fit(X, Energies) ytilde = clf.predict(X) EoS['Eols'] = ytilde # The mean squared error -print("Mean squared error: %.2f" % mean_squared_error(Energies, ytilde)) +print("Mean squared error: %.2f" % mean_squared_error(Energies, ytilde)) # Explained variance score: 1 is perfect prediction -print('Variance score: %.2f' % r2_score(Energies, ytilde)) +print('Variance score: %.2f' % r2_score(Energies, ytilde)) # Mean absolute error -print('Mean absolute error: %.2f' % mean_absolute_error(Energies, ytilde)) -print(clf.coef_, clf.intercept_) +print('Mean absolute error: %.2f' % mean_absolute_error(Energies, ytilde)) +print(clf.coef_, clf.intercept_) # The Ridge regression with a hyperparameter lambda = 0.1 _lambda = 0.1 @@ -1181,12 +1199,12 @@ clf_ridge = skl.Ridge(alpha=_lambda).fit(X, Energies) yridge = clf_ridge.predict(X) EoS['Eridge'] = yridge # The mean squared error -print("Mean squared error: %.2f" % mean_squared_error(Energies, yridge)) +print("Mean squared error: %.2f" % mean_squared_error(Energies, yridge)) # Explained variance score: 1 is perfect prediction -print('Variance score: %.2f' % r2_score(Energies, yridge)) +print('Variance score: %.2f' % r2_score(Energies, yridge)) # Mean absolute error -print('Mean absolute error: %.2f' % mean_absolute_error(Energies, yridge)) -print(clf_ridge.coef_, clf_ridge.intercept_) +print('Mean absolute error: %.2f' % mean_absolute_error(Energies, yridge)) +print(clf_ridge.coef_, clf_ridge.intercept_) fig, ax = plt.subplots() ax.set_xlabel(r'$\rho[\mathrm{fm}^{-3}]$') @@ -1213,7 +1231,7 @@ below.

    -

    Splitting our Data in Training and Test data

    +

    Splitting our Data in Training and Test data

    It is normal in essentially all Machine Learning studies to split the @@ -1256,7 +1274,7 @@ DATA_ID = "DataFiles/" return os.path.join(DATA_ID, dat_id) def save_fig(fig_id): - plt.savefig(image_path(fig_id) + ".png", format='png') + plt.savefig(image_path(fig_id) + ".png", format='png') def R2(y_data, y_model): return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2) @@ -1284,22 +1302,22 @@ X_train, X_test, y_train, y_test = train_test_split(X, Energies, test_size=# matrix inversion to find beta beta = np.linalg.inv(X_train.T.dot(X_train)).dot(X_train.T).dot(y_train) # and then make the prediction -ytilde = X_train @ beta -print("Training R2") -print(R2(y_train,ytilde)) -print("Training MSE") -print(MSE(y_train,ytilde)) -ypredict = X_test @ beta -print("Test R2") -print(R2(y_test,ypredict)) -print("Test MSE") -print(MSE(y_test,ypredict)) +ytilde = X_train @ beta +print("Training R2") +print(R2(y_train,ytilde)) +print("Training MSE") +print(MSE(y_train,ytilde)) +ypredict = X_test @ beta +print("Test R2") +print(R2(y_test,ypredict)) +print("Test MSE") +print(MSE(y_test,ypredict))

    -

    The Boston housing data example

    +

    The Boston housing data example

    The Boston housing @@ -1331,7 +1349,7 @@ The features/predictors are

    -

    Housing data, the code

    +

    Housing data, the code

    We start by importing the libraries

    @@ -1394,7 +1412,7 @@ It is now useful to look at the correlation matrix correlation_matrix = boston.corr().round(2) # use the heatmap function from seaborn to plot the correlation matrix # annot = True to print the values inside the square -sns.heatmap(data=correlation_matrix, annot=True) +sns.heatmap(data=correlation_matrix, annot=True)

    From the above coorelation plot we can see that MEDV is strongly correlated to LSTAT and RM. We see also that RAD and TAX are stronly correlated, but we don't include this in our features together to avoid multi-colinearity @@ -1435,10 +1453,10 @@ We split the data into training and test sets # splits the training and test data set in 80% : 20% # assign random_state to any value.This ensures consistency. X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state=5) -print(X_train.shape) -print(X_test.shape) -print(Y_train.shape) -print(Y_test.shape) +print(X_train.shape) +print(X_test.shape) +print(Y_train.shape) +print(Y_test.shape)

    Then we use the linear regression functionality from Scikit-Learn @@ -1457,11 +1475,11 @@ y_train_predict = lin_model.predict(X_train) rmse = (np.sqrt(mean_squared_error(Y_train, y_train_predict))) r2 = r2_score(Y_train, y_train_predict) -print("The model performance for training set") -print("--------------------------------------") -print('RMSE is {}'.format(rmse)) -print('R2 score is {}'.format(r2)) -print("\n") +print("The model performance for training set") +print("--------------------------------------") +print('RMSE is {}'.format(rmse)) +print('R2 score is {}'.format(r2)) +print("\n") # model evaluation for testing set @@ -1472,10 +1490,10 @@ rmse = (np.sqrt(mean_squared_error(Y_test, y_test_predict))) # r-squared score of the model r2 = r2_score(Y_test, y_test_predict) -print("The model performance for testing set") -print("--------------------------------------") -print('RMSE is {}'.format(rmse)) -print('R2 score is {}'.format(r2)) +print("The model performance for testing set") +print("--------------------------------------") +print('RMSE is {}'.format(rmse)) +print('R2 score is {}'.format(r2))

    @@ -1489,7 +1507,7 @@ plt.show()

    -

    The singular value decomposition

    +

    The singular value decomposition

    @@ -1521,7 +1539,7 @@ inversion algorithm. Thereafter we dive into the math of the SVD.
    -

    Linear Regression Problems

    +

    Linear Regression Problems

    One of the typical problems we encounter with linear regression, in particular @@ -1576,7 +1594,7 @@ This is equivalent to saying that the matrix \( \boldsymbol{X} \) has at least a

    -

    Fixing the singularity

    +

    Fixing the singularity

    If our design matrix \( \boldsymbol{X} \) which enters the linear regression problem @@ -1608,7 +1626,7 @@ where \( \boldsymbol{I} \) is the identity matrix. When we discuss Ridge

    -

    Basic math of the SVD

    +

    Basic math of the SVD

    From standard linear algebra we know that a square matrix \( \boldsymbol{X} \) can be diagonalized if and only it is @@ -1655,7 +1673,7 @@ is not diagonalizable, it is a so-called The SVD, a Fantastic Algorithm +

    The SVD, a Fantastic Algorithm

    However, and this is the strength of the SVD algorithm, any general @@ -1690,7 +1708,7 @@ The SVD exits always!

    -

    Another Example

    +

    Another Example

    Consider the following matrix which can be SVD decomposed as @@ -1730,7 +1748,7 @@ The columns of \( \boldsymbol{U} \) are called the left singular vectors while t

    -

    Economy-size SVD

    +

    Economy-size SVD

    If we assume that \( n > p \), then our matrix \( \boldsymbol{U} \) has dimension \( n @@ -1755,7 +1773,7 @@ In general the economy-size SVD leads to less FLOPS and still conserving the des

    -

    Mathematical Properties

    +

    Mathematical Properties

    There are several interesting mathematical properties which will be @@ -1819,7 +1837,7 @@ We will come back to this expression when we discuss Ridge regression.

    -

    Ridge and LASSO Regression

    +

    Ridge and LASSO Regression

    Let us remind ourselves about the expression for the standard Mean Squared Error (MSE) which we used to define our cost function and the equations for the ordinary least squares (OLS) method, that is @@ -1891,7 +1909,7 @@ $$

    -

    More on Ridge Regression

    +

    More on Ridge Regression

    Using the matrix-vector expression for Ridge regression, @@ -1962,7 +1980,7 @@ with the vectors \( \boldsymbol{u}_j \) being the columns of \( \boldsymbol{U} \

    -

    Interpreting the Ridge results

    +

    Interpreting the Ridge results

    Since \( \lambda \geq 0 \), it means that compared to OLS, we have @@ -1988,7 +2006,7 @@ With a parameter \( \lambda \) we can thus shrink the role of specific parameter

    -

    More interpretations

    +

    More interpretations

    For the sake of simplicity, let us assume that the design matrix is orthonormal, that is @@ -2031,7 +2049,7 @@ Similarly, Mehta et a

    -

    Codes for the SVD

    +

    Codes for the SVD

    @@ -2048,9 +2066,9 @@ Similarly, Mehta et a # print( (np.transpose(U) @ U - U @np.transpose(U))) # print('test VT') # print( (np.transpose(VT) @ VT - VT @np.transpose(VT))) - print(U) - print(s) - print(VT) + print(U) + print(s) + print(VT) D = np.zeros((len(U),len(VT))) for i in range(0,len(VT)): @@ -2060,14 +2078,14 @@ Similarly, Mehta et a X = np.array([ [1.0, -1.0, 2.0], [1.0, 0.0, 1.0], [1.0, 2.0, -1.0], [1.0, 1.0, 0.0] ]) -print(X) -A = np.transpose(X) @ X -print(A) +print(X) +A = np.transpose(X) @ X +print(A) # Brute force inversion of super-collinear matrix #B = np.linalg.inv(A) #print(B) C = SVDinv(A) -print(C) +print(C)

    The matrix \( \boldsymbol{X} \) has columns that are linearly dependent. The first @@ -2082,7 +2100,7 @@ in the program terminating due to a singular matrix.

    -

    A better understanding of regularization

    +

    A better understanding of regularization

    The parameter \( \lambda \) that we have introduced in the Ridge (and @@ -2101,7 +2119,7 @@ affected by changing the parameter \( \lambda \).

    -

    Decomposing the OLS and Ridge expressions

    +

    Decomposing the OLS and Ridge expressions

    We have our design matrix @@ -2123,7 +2141,7 @@ The matrices \( \boldsymbol{U} \) and \( \boldsymbol{V} \) are unitary/orthonorm

    -

    Spectral Decomposition of the OLS

    +

    Spectral Decomposition of the OLS

    More material to be added here @@ -2131,7 +2149,7 @@ More material to be added here

    -

    Where are we going?

    +

    Where are we going?

    Before we proceed, we need to rethink what we have been doing. In our @@ -2149,7 +2167,7 @@ This will allow us to link the standard linear algebra methods we have discussed

    -

    Resampling methods

    +

    Resampling methods

    @@ -2182,7 +2200,7 @@ cross-validation and the bootstrap method.

    -

    Resampling approaches can be computationally expensive

    +

    Resampling approaches can be computationally expensive

    @@ -2208,7 +2226,7 @@ bootstrap is widely used.

    -

    Why resampling methods ?

    +

    Why resampling methods ?

    Statistical analysis.
      @@ -2221,7 +2239,7 @@ bootstrap is widely used.
      -

      Statistical analysis

      +

      Statistical analysis

        @@ -2241,7 +2259,7 @@ bootstrap is widely used.
        -

        Statistics

        +

        Statistics

        @@ -2275,7 +2293,7 @@ selection of a large set of these numbers reproduces this PDF.

        -

        Statistics, moments

        +

        Statistics, moments

        @@ -2301,7 +2319,7 @@ $$

        -

        Statistics, central moments

        +

        Statistics, central moments

        @@ -2342,7 +2360,7 @@ qualitatively as the spread of \( p \) around its mean.

        -

        Statistics, covariance

        +

        Statistics, covariance

        @@ -2376,7 +2394,7 @@ $$

        -

        Statistics, more covariance

        +

        Statistics, more covariance

        @@ -2409,15 +2427,15 @@ $$

        -

        Covariance example

        +

        Covariance example

        -Suppose we have defined three vectors \( \hat{x}, \hat{y}, \hat{z} \) with +Suppose we have defined three vectors \( \boldsymbol{x}, \boldsymbol{y}, \boldsymbol{z} \) with \( n \) elements each. The covariance matrix is defined as

         
        $$ -\hat{\Sigma} = \begin{bmatrix} \sigma_{xx} & \sigma_{xy} & \sigma_{xz} \\ +\boldsymbol{\Sigma} = \begin{bmatrix} \sigma_{xx} & \sigma_{xy} & \sigma_{xz} \\ \sigma_{yx} & \sigma_{yy} & \sigma_{yz} \\ \sigma_{zx} & \sigma_{zy} & \sigma_{zz} \end{bmatrix}, @@ -2439,11 +2457,11 @@ the exact mean valu\ es.

        The following simple function uses the np.vstack function which takes each vector of dimension \( 1\times n \) and produces a \( 3\times n \) -matrix \( \hat{W} \) +matrix \( \boldsymbol{W} \)

         
        $$ -\hat{W} = \begin{bmatrix} x_0 & y_0 & z_0 \\ +\boldsymbol{W} = \begin{bmatrix} x_0 & y_0 & z_0 \\ x_1 & y_1 & z_1 \\ x_2 & y_2 & z_2 \\ \dots & \dots & \dots \\ @@ -2455,8 +2473,8 @@ $$

        which in turn is converted into into the \( 3\times 3 \) covariance matrix -\( \hat{\Sigma} \) via the Numpy function np.cov(). We note that we can -also calculate the mean value of each set of samples \( \hat{x} \) etc +\( \boldsymbol{\Sigma} \) via the Numpy function np.cov(). We note that we can +also calculate the mean value of each set of samples \( \boldsymbol{x} \) etc using the Numpy function np.mean(x). We can also extract the eigenvalues of the covariance matrix through the np.linalg.eig() function. @@ -2464,7 +2482,7 @@ function.

        -

        Covariance in numpy

        +

        Covariance in numpy

        @@ -2474,16 +2492,16 @@ function. n = 100 x = np.random.normal(size=n) -print(np.mean(x)) +print(np.mean(x)) y = 4+3*x+np.random.normal(size=n) -print(np.mean(y)) +print(np.mean(y)) z = x**3+np.random.normal(size=n) -print(np.mean(z)) +print(np.mean(z)) W = np.vstack((x, y, z)) Sigma = np.cov(W) -print(Sigma) +print(Sigma) Eigvals, Eigvecs = np.linalg.eig(Sigma) -print(Eigvals) +print(Eigvals)

    @@ -2492,9 +2510,9 @@ Eigvals, Eigvecs = np.linalg.eig(Sigma) import matplotlib.pyplot as plt from scipy import sparse eye = np.eye(4) -print(eye) +print(eye) sparse_mtx = sparse.csr_matrix(eye) -print(sparse_mtx) +print(sparse_mtx) x = np.linspace(-10,10,100) y = np.sin(x) plt.plot(x,y,marker='x') @@ -2504,7 +2522,7 @@ plt.show()

    -

    Statistics, independent variables

    +

    Statistics, independent variables

    @@ -2533,7 +2551,7 @@ $$

    -

    Statistics, more variance

    +

    Statistics, more variance

    @@ -2570,7 +2588,7 @@ value of a set of measurements.

    -

    Statistics and stochastic processes

    +

    Statistics and stochastic processes

    @@ -2599,7 +2617,7 @@ interested in finding the few lowest moments, like the mean

    -

    Statistics and sample variables

    +

    Statistics and sample variables

    @@ -2630,7 +2648,7 @@ $$

    -

    Statistics, sample variance and covariance

    +

    Statistics, sample variance and covariance

    @@ -2650,7 +2668,7 @@ and covariance \( \mathrm{cov}(X,Y) \).

    -

    Statistics, law of large numbers

    +

    Statistics, law of large numbers

    @@ -2683,7 +2701,7 @@ true PDFs behind, which we usually do not have.

    -

    Statistics, more on sample error

    +

    Statistics, more on sample error

    @@ -2706,7 +2724,7 @@ means.

    -

    Statistics

    +

    Statistics

    @@ -2728,7 +2746,7 @@ And in particular we are interested in its variance \( \mathrm{var}(\overline X_

    -

    Statistics, central limit theorem

    +

    Statistics, central limit theorem

    @@ -2754,7 +2772,7 @@ $$

    -

    Statistics, more technicalities

    +

    Statistics, more technicalities

    @@ -2784,7 +2802,7 @@ estimate of the PDF of each of the \( X_i \), estimating all properties of

    -

    Statistics

    +

    Statistics

    @@ -2816,7 +2834,7 @@ $$

    -

    Statistics and sample variance

    +

    Statistics and sample variance

    @@ -2860,7 +2878,7 @@ measurements in the sample.

    -

    Statistics, uncorrelated results

    +

    Statistics, uncorrelated results

    @@ -2896,7 +2914,7 @@ cannot overlook the always present correlations.

    -

    Statistics, computations

    +

    Statistics, computations

    @@ -2928,7 +2946,7 @@ measurements. For uncorrelated measurements this second term is zero.

    -

    Statistics, more on computations of errors

    +

    Statistics, more on computations of errors

    @@ -2951,7 +2969,7 @@ have to be stored throughout the experiment.

    -

    Statistics, wrapping up 1

    +

    Statistics, wrapping up 1

    @@ -2989,7 +3007,7 @@ starting always at \( 1 \) for \( d=0 \).

    -

    Statistics, final expression

    +

    Statistics, final expression

    @@ -3025,7 +3043,7 @@ $$

    -

    Statistics, effective number of correlations

    +

    Statistics, effective number of correlations

    @@ -3051,7 +3069,7 @@ measurements is very large.

    -

    Linking the regression analysis with a statistical interpretation

    +

    Linking the regression analysis with a statistical interpretation

    Finally, we are going to discuss several statistical properties which can be obtained in terms of analytical expressions. @@ -3091,7 +3109,7 @@ row number \( i \) and perform a sum over all values \( p \).

    -

    Assumptions made

    +

    Assumptions made

    The assumption we have made here can be summarized as (and this is going to be useful when we discuss the bias-variance trade off) @@ -3115,7 +3133,7 @@ $$

    -

    Expectation value and variance

    +

    Expectation value and variance

    We can calculate the expectation value of \( \boldsymbol{y} \) for a given element \( i \) @@ -3154,7 +3172,7 @@ mean value \( \boldsymbol{X}\boldsymbol{\beta} \) and variance \( \sigma^2 \) (n

    -

    Expectation value and variance for \( \boldsymbol{\beta} \)

    +

    Expectation value and variance for \( \boldsymbol{\beta} \)

    With the OLS expressions for the parameters \( \boldsymbol{\beta} \) we can evaluate the expectation value @@ -3202,7 +3220,7 @@ where we have used that \( \mathbb{E} (\mathbf{Y} \mathbf{Y}^{T}) = \sigma^2 \, \mathbf{I}_{nn} \). From \( \mbox{Var}(\boldsymbol{\beta}) = \sigma^2 \, (\mathbf{X}^{T} \mathbf{X})^{-1} \), one obtains an estimate of the variance of the estimate of the \( j \)-th regression coefficient: -\( \hat{\sigma}^2 (\hat{\beta}_j ) = \hat{\sigma}^2 \sqrt{ +\( \boldsymbol{\sigma}^2 (\boldsymbol{\beta}_j ) = \boldsymbol{\sigma}^2 \sqrt{ [(\mathbf{X}^{T} \mathbf{X})^{-1}]_{jj} } \). This may be used to construct a confidence interval for the estimates. @@ -3249,7 +3267,7 @@ This means the variance we obtain with the standard OLS will always for \( \lamb

    -

    Resampling methods

    +

    Resampling methods

    With all these analytical equations for both the OLS and Ridge @@ -3279,7 +3297,7 @@ training error reaches a saturation.

    -

    Resampling methods: Jackknife and Bootstrap

    +

    Resampling methods: Jackknife and Bootstrap

    Two famous @@ -3302,7 +3320,7 @@ need for bootstrapping.

    -

    Resampling methods: Jackknife

    +

    Resampling methods: Jackknife

    The Jackknife works by making many replicas of the estimator \( \widehat{\theta} \). @@ -3323,7 +3341,7 @@ number \( i \) is left out. Using this notation, define

    -

    Jackknife code example

    +

    Jackknife code example

    @@ -3338,9 +3356,9 @@ number \( i \) is left out. Using this notation, define t[i] = stat(delete(data,i) ) # analysis - print("Runtime: %g sec" % (time()-t0)); print("Jackknife Statistics :") - print("original bias std. error") - print("%8g %14g %15g" % (stat(data),(n-1)*mean(t)/n, (n*var(t))**.5)) + print("Runtime: %g sec" % (time()-t0)); print("Jackknife Statistics :") + print("original bias std. error") + print("%8g %14g %15g" % (stat(data),(n-1)*mean(t)/n, (n*var(t))**.5)) return t @@ -3360,7 +3378,7 @@ t = jackknife(x, stat)

    -

    Resampling methods: Bootstrap

    +

    Resampling methods: Bootstrap

    @@ -3382,7 +3400,7 @@ advantages:

    -

    Resampling methods: Bootstrap background

    +

    Resampling methods: Bootstrap background

    Since \( \widehat{\theta} = \widehat{\theta}(\boldsymbol{X}) \) is a function of random variables, @@ -3398,7 +3416,7 @@ estimators.

    -

    Resampling methods: More Bootstrap background

    +

    Resampling methods: More Bootstrap background

    In the case that \( \widehat{\theta} \) has @@ -3421,7 +3439,7 @@ idea is to use the relative frequency of \( \widehat{\theta}^* \)

    -

    Resampling methods: Bootstrap approach

    +

    Resampling methods: Bootstrap approach

    But @@ -3442,7 +3460,7 @@ frequency of the observation \( X_i \), just draw the values

    -

    Resampling methods: Bootstrap steps

    +

    Resampling methods: Bootstrap steps

    The independent bootstrap works like this: @@ -3468,7 +3486,7 @@ example, if you are interested in estimating the variance of \( \widehat

    -

    Code example for the Bootstrap method

    +

    Code example for the Bootstrap method

    The following code starts with a Gaussian distribution with mean value @@ -3505,9 +3523,9 @@ theorem. t[i] = statistic(data[randint(0,n,n)]) # analysis - print("Runtime: %g sec" % (time()-t0)); print("Bootstrap Statistics :") - print("original bias std. error") - print("%8g %8g %14g %15g" % (statistic(data), std(data),mean(t),std(t))) + print("Runtime: %g sec" % (time()-t0)); print("Bootstrap Statistics :") + print("original bias std. error") + print("%8g %8g %14g %15g" % (statistic(data), std(data),mean(t),std(t))) return t @@ -3525,7 +3543,7 @@ lt = plt.plot(binsboot, y, 'r--', li plt.xlabel('Smarts') plt.ylabel('Probability') plt.axis([99.5, 100.6, 0, 3.0]) -plt.grid(True) +plt.grid(True) plt.show()

    @@ -3533,7 +3551,7 @@ plt.show()
    -

    Various steps in cross-validation

    +

    Various steps in cross-validation

    When the repetitive splitting of the data set is done randomly, @@ -3554,7 +3572,7 @@ cross-validation (LOOCV).

    -

    How to set up the cross-validation for Ridge and/or Lasso

    +

    How to set up the cross-validation for Ridge and/or Lasso

    From the above coorelation plot we can see that MEDV is strongly correlated to LSTAT and RM. We see also that RAD and TAX are stronly correlated, but we don't include this in our features together to avoid multi-colinearity @@ -1513,10 +1531,10 @@ We split the data into training and test sets # splits the training and test data set in 80% : 20% # assign random_state to any value.This ensures consistency. X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state=5) -print(X_train.shape) -print(X_test.shape) -print(Y_train.shape) -print(Y_test.shape) +print(X_train.shape) +print(X_test.shape) +print(Y_train.shape) +print(Y_test.shape)

    Then we use the linear regression functionality from Scikit-Learn @@ -1535,11 +1553,11 @@ y_train_predict = lin_model.predict(X_train) rmse = (np.sqrt(mean_squared_error(Y_train, y_train_predict))) r2 = r2_score(Y_train, y_train_predict) -print("The model performance for training set") -print("--------------------------------------") -print('RMSE is {}'.format(rmse)) -print('R2 score is {}'.format(r2)) -print("\n") +print("The model performance for training set") +print("--------------------------------------") +print('RMSE is {}'.format(rmse)) +print('R2 score is {}'.format(r2)) +print("\n") # model evaluation for testing set @@ -1550,10 +1568,10 @@ rmse = (np.sqrt(mean_squared_error(Y_test, y_test_predict))) # r-squared score of the model r2 = r2_score(Y_test, y_test_predict) -print("The model performance for testing set") -print("--------------------------------------") -print('RMSE is {}'.format(rmse)) -print('R2 score is {}'.format(r2)) +print("The model performance for testing set") +print("--------------------------------------") +print('RMSE is {}'.format(rmse)) +print('R2 score is {}'.format(r2))

    @@ -1566,7 +1584,7 @@ plt.show()











    -

    The singular value decomposition

    +

    The singular value decomposition

    @@ -1601,7 +1619,7 @@ inversion algorithm. Thereafter we dive into the math of the SVD.











    -

    Linear Regression Problems

    +

    Linear Regression Problems

    One of the typical problems we encounter with linear regression, in particular @@ -1652,7 +1670,7 @@ This is equivalent to saying that the matrix \( \boldsymbol{X} \) has at least a











    -

    Fixing the singularity

    +

    Fixing the singularity

    If our design matrix \( \boldsymbol{X} \) which enters the linear regression problem @@ -1680,7 +1698,7 @@ where \( \boldsymbol{I} \) is the identity matrix. When we discuss Ridge











    -

    Basic math of the SVD

    +

    Basic math of the SVD

    From standard linear algebra we know that a square matrix \( \boldsymbol{X} \) can be diagonalized if and only it is @@ -1719,7 +1737,7 @@ is not diagonalizable, it is a so-called The SVD, a Fantastic Algorithm +

    The SVD, a Fantastic Algorithm

    However, and this is the strength of the SVD algorithm, any general @@ -1750,7 +1768,7 @@ The SVD exits always!











    -

    Another Example

    +

    Another Example

    Consider the following matrix which can be SVD decomposed as @@ -1788,7 +1806,7 @@ The columns of \( \boldsymbol{U} \) are called the left singular vectors while t











    -

    Economy-size SVD

    +

    Economy-size SVD

    If we assume that \( n > p \), then our matrix \( \boldsymbol{U} \) has dimension \( n @@ -1813,7 +1831,7 @@ In general the economy-size SVD leads to less FLOPS and still conserving the des











    -

    Mathematical Properties

    +

    Mathematical Properties

    There are several interesting mathematical properties which will be @@ -1865,7 +1883,7 @@ We will come back to this expression when we discuss Ridge regression.











    -

    Ridge and LASSO Regression

    +

    Ridge and LASSO Regression

    Let us remind ourselves about the expression for the standard Mean Squared Error (MSE) which we used to define our cost function and the equations for the ordinary least squares (OLS) method, that is @@ -1923,7 +1941,7 @@ $$











    -

    More on Ridge Regression

    +

    More on Ridge Regression

    Using the matrix-vector expression for Ridge regression, @@ -1982,7 +2000,7 @@ with the vectors \( \boldsymbol{u}_j \) being the columns of \( \boldsymbol{U} \











    -

    Interpreting the Ridge results

    +

    Interpreting the Ridge results

    Since \( \lambda \geq 0 \), it means that compared to OLS, we have @@ -2006,7 +2024,7 @@ With a parameter \( \lambda \) we can thus shrink the role of specific parameter











    -

    More interpretations

    +

    More interpretations

    For the sake of simplicity, let us assume that the design matrix is orthonormal, that is @@ -2043,7 +2061,7 @@ Similarly, Mehta et a











    -

    Codes for the SVD

    +

    Codes for the SVD

    @@ -2060,9 +2078,9 @@ Similarly, Mehta et a # print( (np.transpose(U) @ U - U @np.transpose(U))) # print('test VT') # print( (np.transpose(VT) @ VT - VT @np.transpose(VT))) - print(U) - print(s) - print(VT) + print(U) + print(s) + print(VT) D = np.zeros((len(U),len(VT))) for i in range(0,len(VT)): @@ -2072,14 +2090,14 @@ Similarly, Mehta et a X = np.array([ [1.0, -1.0, 2.0], [1.0, 0.0, 1.0], [1.0, 2.0, -1.0], [1.0, 1.0, 0.0] ]) -print(X) -A = np.transpose(X) @ X -print(A) +print(X) +A = np.transpose(X) @ X +print(A) # Brute force inversion of super-collinear matrix #B = np.linalg.inv(A) #print(B) C = SVDinv(A) -print(C) +print(C)

    The matrix \( \boldsymbol{X} \) has columns that are linearly dependent. The first @@ -2094,7 +2112,7 @@ in the program terminating due to a singular matrix.

    -

    A better understanding of regularization

    +

    A better understanding of regularization

    The parameter \( \lambda \) that we have introduced in the Ridge (and @@ -2113,7 +2131,7 @@ affected by changing the parameter \( \lambda \).











    -

    Decomposing the OLS and Ridge expressions

    +

    Decomposing the OLS and Ridge expressions

    We have our design matrix @@ -2133,7 +2151,7 @@ The matrices \( \boldsymbol{U} \) and \( \boldsymbol{V} \) are unitary/orthonorm











    -

    Spectral Decomposition of the OLS

    +

    Spectral Decomposition of the OLS

    More material to be added here @@ -2141,7 +2159,7 @@ More material to be added here











    -

    Where are we going?

    +

    Where are we going?

    Before we proceed, we need to rethink what we have been doing. In our @@ -2158,7 +2176,7 @@ This will allow us to link the standard linear algebra methods we have discussed











    -

    Resampling methods

    +

    Resampling methods

    @@ -2191,7 +2209,7 @@ cross-validation and the bootstrap method.











    -

    Resampling approaches can be computationally expensive

    +

    Resampling approaches can be computationally expensive

    @@ -2220,7 +2238,7 @@ bootstrap is widely used.











    -

    Why resampling methods ?

    +

    Why resampling methods ?

    Statistical analysis.

    @@ -2236,7 +2254,7 @@ bootstrap is widely used.











    -

    Statistical analysis

    +

    Statistical analysis

    @@ -2258,7 +2276,7 @@ bootstrap is widely used.











    -

    Statistics

    +

    Statistics

    @@ -2289,7 +2307,7 @@ selection of a large set of these numbers reproduces this PDF.











    -

    Statistics, moments

    +

    Statistics, moments

    @@ -2312,7 +2330,7 @@ $$











    -

    Statistics, central moments

    +

    Statistics, central moments

    @@ -2350,7 +2368,7 @@ qualitatively as the spread of \( p \) around its mean.











    -

    Statistics, covariance

    +

    Statistics, covariance

    @@ -2381,7 +2399,7 @@ $$











    -

    Statistics, more covariance

    +

    Statistics, more covariance

    @@ -2413,14 +2431,14 @@ $$











    -

    Covariance example

    +

    Covariance example

    -Suppose we have defined three vectors \( \hat{x}, \hat{y}, \hat{z} \) with +Suppose we have defined three vectors \( \boldsymbol{x}, \boldsymbol{y}, \boldsymbol{z} \) with \( n \) elements each. The covariance matrix is defined as $$ -\hat{\Sigma} = \begin{bmatrix} \sigma_{xx} & \sigma_{xy} & \sigma_{xz} \\ +\boldsymbol{\Sigma} = \begin{bmatrix} \sigma_{xx} & \sigma_{xy} & \sigma_{xz} \\ \sigma_{yx} & \sigma_{yy} & \sigma_{yz} \\ \sigma_{zx} & \sigma_{zy} & \sigma_{zz} \end{bmatrix}, @@ -2439,10 +2457,10 @@ the exact mean valu\ es.

    The following simple function uses the np.vstack function which takes each vector of dimension \( 1\times n \) and produces a \( 3\times n \) -matrix \( \hat{W} \) +matrix \( \boldsymbol{W} \) $$ -\hat{W} = \begin{bmatrix} x_0 & y_0 & z_0 \\ +\boldsymbol{W} = \begin{bmatrix} x_0 & y_0 & z_0 \\ x_1 & y_1 & z_1 \\ x_2 & y_2 & z_2 \\ \dots & \dots & \dots \\ @@ -2453,8 +2471,8 @@ $$

    which in turn is converted into into the \( 3\times 3 \) covariance matrix -\( \hat{\Sigma} \) via the Numpy function np.cov(). We note that we can -also calculate the mean value of each set of samples \( \hat{x} \) etc +\( \boldsymbol{\Sigma} \) via the Numpy function np.cov(). We note that we can +also calculate the mean value of each set of samples \( \boldsymbol{x} \) etc using the Numpy function np.mean(x). We can also extract the eigenvalues of the covariance matrix through the np.linalg.eig() function. @@ -2462,7 +2480,7 @@ function.











    -

    Covariance in numpy

    +

    Covariance in numpy

    @@ -2472,16 +2490,16 @@ function. n = 100 x = np.random.normal(size=n) -print(np.mean(x)) +print(np.mean(x)) y = 4+3*x+np.random.normal(size=n) -print(np.mean(y)) +print(np.mean(y)) z = x**3+np.random.normal(size=n) -print(np.mean(z)) +print(np.mean(z)) W = np.vstack((x, y, z)) Sigma = np.cov(W) -print(Sigma) +print(Sigma) Eigvals, Eigvecs = np.linalg.eig(Sigma) -print(Eigvals) +print(Eigvals)

    @@ -2490,9 +2508,9 @@ Eigvals, Eigvecs = np.linalg.eig(Sigma) import matplotlib.pyplot as plt from scipy import sparse eye = np.eye(4) -print(eye) +print(eye) sparse_mtx = sparse.csr_matrix(eye) -print(sparse_mtx) +print(sparse_mtx) x = np.linspace(-10,10,100) y = np.sin(x) plt.plot(x,y,marker='x') @@ -2501,7 +2519,7 @@ plt.show()











    -

    Statistics, independent variables

    +

    Statistics, independent variables

    @@ -2527,7 +2545,7 @@ $$











    -

    Statistics, more variance

    +

    Statistics, more variance

    @@ -2559,7 +2577,7 @@ value of a set of measurements.











    -

    Statistics and stochastic processes

    +

    Statistics and stochastic processes

    @@ -2587,7 +2605,7 @@ interested in finding the few lowest moments, like the mean

    -

    Statistics and sample variables

    +

    Statistics and sample variables

    @@ -2613,7 +2631,7 @@ $$











    -

    Statistics, sample variance and covariance

    +

    Statistics, sample variance and covariance

    @@ -2634,7 +2652,7 @@ and covariance \( \mathrm{cov}(X,Y) \).











    -

    Statistics, law of large numbers

    +

    Statistics, law of large numbers

    @@ -2666,7 +2684,7 @@ true PDFs behind, which we usually do not have.











    -

    Statistics, more on sample error

    +

    Statistics, more on sample error

    @@ -2688,7 +2706,7 @@ means.











    -

    Statistics

    +

    Statistics

    @@ -2709,7 +2727,7 @@ And in particular we are interested in its variance \( \mathrm{var}(\overline X_











    -

    Statistics, central limit theorem

    +

    Statistics, central limit theorem

    @@ -2734,7 +2752,7 @@ $$











    -

    Statistics, more technicalities

    +

    Statistics, more technicalities

    @@ -2763,7 +2781,7 @@ estimate of the PDF of each of the \( X_i \), estimating all properties of











    -

    Statistics

    +

    Statistics

    @@ -2790,7 +2808,7 @@ $$











    -

    Statistics and sample variance

    +

    Statistics and sample variance

    @@ -2829,7 +2847,7 @@ measurements in the sample.











    -

    Statistics, uncorrelated results

    +

    Statistics, uncorrelated results

    @@ -2864,7 +2882,7 @@ cannot overlook the always present correlations.











    -

    Statistics, computations

    +

    Statistics, computations

    @@ -2893,7 +2911,7 @@ measurements. For uncorrelated measurements this second term is zero.











    -

    Statistics, more on computations of errors

    +

    Statistics, more on computations of errors

    @@ -2915,7 +2933,7 @@ have to be stored throughout the experiment.











    -

    Statistics, wrapping up 1

    +

    Statistics, wrapping up 1

    @@ -2948,7 +2966,7 @@ starting always at \( 1 \) for \( d=0 \).











    -

    Statistics, final expression

    +

    Statistics, final expression

    @@ -2981,7 +2999,7 @@ $$











    -

    Statistics, effective number of correlations

    +

    Statistics, effective number of correlations

    @@ -3006,7 +3024,7 @@ measurements is very large.

    -

    Linking the regression analysis with a statistical interpretation

    +

    Linking the regression analysis with a statistical interpretation

    Finally, we are going to discuss several statistical properties which can be obtained in terms of analytical expressions. @@ -3044,7 +3062,7 @@ row number \( i \) and perform a sum over all values \( p \).











    -

    Assumptions made

    +

    Assumptions made

    The assumption we have made here can be summarized as (and this is going to be useful when we discuss the bias-variance trade off) @@ -3064,7 +3082,7 @@ $$











    -

    Expectation value and variance

    +

    Expectation value and variance

    We can calculate the expectation value of \( \boldsymbol{y} \) for a given element \( i \) @@ -3099,7 +3117,7 @@ mean value \( \boldsymbol{X}\boldsymbol{\beta} \) and variance \( \sigma^2 \) (n











    -

    Expectation value and variance for \( \boldsymbol{\beta} \)

    +

    Expectation value and variance for \( \boldsymbol{\beta} \)

    With the OLS expressions for the parameters \( \boldsymbol{\beta} \) we can evaluate the expectation value @@ -3143,7 +3161,7 @@ where we have used that \( \mathbb{E} (\mathbf{Y} \mathbf{Y}^{T}) = \sigma^2 \, \mathbf{I}_{nn} \). From \( \mbox{Var}(\boldsymbol{\beta}) = \sigma^2 \, (\mathbf{X}^{T} \mathbf{X})^{-1} \), one obtains an estimate of the variance of the estimate of the \( j \)-th regression coefficient: -\( \hat{\sigma}^2 (\hat{\beta}_j ) = \hat{\sigma}^2 \sqrt{ +\( \boldsymbol{\sigma}^2 (\boldsymbol{\beta}_j ) = \boldsymbol{\sigma}^2 \sqrt{ [(\mathbf{X}^{T} \mathbf{X})^{-1}]_{jj} } \). This may be used to construct a confidence interval for the estimates. @@ -3184,7 +3202,7 @@ This means the variance we obtain with the standard OLS will always for \( \lamb











    -

    Resampling methods

    +

    Resampling methods

    With all these analytical equations for both the OLS and Ridge @@ -3213,7 +3231,7 @@ training error reaches a saturation.











    -

    Resampling methods: Jackknife and Bootstrap

    +

    Resampling methods: Jackknife and Bootstrap

    Two famous @@ -3236,7 +3254,7 @@ need for bootstrapping.











    -

    Resampling methods: Jackknife

    +

    Resampling methods: Jackknife

    The Jackknife works by making many replicas of the estimator \( \widehat{\theta} \). @@ -3255,7 +3273,7 @@ number \( i \) is left out. Using this notation, define











    -

    Jackknife code example

    +

    Jackknife code example

    @@ -3270,9 +3288,9 @@ number \( i \) is left out. Using this notation, define t[i] = stat(delete(data,i) ) # analysis - print("Runtime: %g sec" % (time()-t0)); print("Jackknife Statistics :") - print("original bias std. error") - print("%8g %14g %15g" % (stat(data),(n-1)*mean(t)/n, (n*var(t))**.5)) + print("Runtime: %g sec" % (time()-t0)); print("Jackknife Statistics :") + print("original bias std. error") + print("%8g %14g %15g" % (stat(data),(n-1)*mean(t)/n, (n*var(t))**.5)) return t @@ -3291,7 +3309,7 @@ t = jackknife(x, stat)











    -

    Resampling methods: Bootstrap

    +

    Resampling methods: Bootstrap

    @@ -3312,7 +3330,7 @@ advantages:











    -

    Resampling methods: Bootstrap background

    +

    Resampling methods: Bootstrap background

    Since \( \widehat{\theta} = \widehat{\theta}(\boldsymbol{X}) \) is a function of random variables, @@ -3328,7 +3346,7 @@ estimators.











    -

    Resampling methods: More Bootstrap background

    +

    Resampling methods: More Bootstrap background

    In the case that \( \widehat{\theta} \) has @@ -3350,7 +3368,7 @@ idea is to use the relative frequency of \( \widehat{\theta}^* \)











    -

    Resampling methods: Bootstrap approach

    +

    Resampling methods: Bootstrap approach

    But @@ -3371,7 +3389,7 @@ frequency of the observation \( X_i \), just draw the values











    -

    Resampling methods: Bootstrap steps

    +

    Resampling methods: Bootstrap steps

    The independent bootstrap works like this: @@ -3396,7 +3414,7 @@ example, if you are interested in estimating the variance of \( \widehat











    -

    Code example for the Bootstrap method

    +

    Code example for the Bootstrap method

    The following code starts with a Gaussian distribution with mean value @@ -3433,9 +3451,9 @@ theorem. t[i] = statistic(data[randint(0,n,n)]) # analysis - print("Runtime: %g sec" % (time()-t0)); print("Bootstrap Statistics :") - print("original bias std. error") - print("%8g %8g %14g %15g" % (statistic(data), std(data),mean(t),std(t))) + print("Runtime: %g sec" % (time()-t0)); print("Bootstrap Statistics :") + print("original bias std. error") + print("%8g %8g %14g %15g" % (statistic(data), std(data),mean(t),std(t))) return t @@ -3453,14 +3471,14 @@ lt = plt.plot(binsboot, y, 'r--', li plt.xlabel('Smarts') plt.ylabel('Probability') plt.axis([99.5, 100.6, 0, 3.0]) -plt.grid(True) +plt.grid(True) plt.show()

    -

    Various steps in cross-validation

    +

    Various steps in cross-validation

    When the repetitive splitting of the data set is done randomly, @@ -3481,7 +3499,7 @@ cross-validation (LOOCV).

    -

    How to set up the cross-validation for Ridge and/or Lasso

    +

    How to set up the cross-validation for Ridge and/or Lasso

    From the above coorelation plot we can see that MEDV is strongly correlated to LSTAT and RM. We see also that RAD and TAX are stronly correlated, but we don't include this in our features together to avoid multi-colinearity @@ -1518,10 +1536,10 @@ We split the data into training and test sets # splits the training and test data set in 80% : 20% # assign random_state to any value.This ensures consistency. X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state=5) -print(X_train.shape) -print(X_test.shape) -print(Y_train.shape) -print(Y_test.shape) +print(X_train.shape) +print(X_test.shape) +print(Y_train.shape) +print(Y_test.shape)

    Then we use the linear regression functionality from Scikit-Learn @@ -1540,11 +1558,11 @@ y_train_predict = lin_model= (np.sqrt(mean_squared_error(Y_train, y_train_predict))) r2 = r2_score(Y_train, y_train_predict) -print("The model performance for training set") -print("--------------------------------------") -print('RMSE is {}'.format(rmse)) -print('R2 score is {}'.format(r2)) -print("\n") +print("The model performance for training set") +print("--------------------------------------") +print('RMSE is {}'.format(rmse)) +print('R2 score is {}'.format(r2)) +print("\n") # model evaluation for testing set @@ -1555,10 +1573,10 @@ rmse = (np.# r-squared score of the model r2 = r2_score(Y_test, y_test_predict) -print("The model performance for testing set") -print("--------------------------------------") -print('RMSE is {}'.format(rmse)) -print('R2 score is {}'.format(r2)) +print("The model performance for testing set") +print("--------------------------------------") +print('RMSE is {}'.format(rmse)) +print('R2 score is {}'.format(r2))

    @@ -1571,7 +1589,7 @@ plt.show()











    -

    The singular value decomposition

    +

    The singular value decomposition

    @@ -1606,7 +1624,7 @@ inversion algorithm. Thereafter we dive into the math of the SVD.











    -

    Linear Regression Problems

    +

    Linear Regression Problems

    One of the typical problems we encounter with linear regression, in particular @@ -1657,7 +1675,7 @@ This is equivalent to saying that the matrix \( \boldsymbol{X} \) has at least a











    -

    Fixing the singularity

    +

    Fixing the singularity

    If our design matrix \( \boldsymbol{X} \) which enters the linear regression problem @@ -1685,7 +1703,7 @@ where \( \boldsymbol{I} \) is the identity matrix. When we discuss Ridge











    -

    Basic math of the SVD

    +

    Basic math of the SVD

    From standard linear algebra we know that a square matrix \( \boldsymbol{X} \) can be diagonalized if and only it is @@ -1724,7 +1742,7 @@ is not diagonalizable, it is a so-called The SVD, a Fantastic Algorithm +

    The SVD, a Fantastic Algorithm

    However, and this is the strength of the SVD algorithm, any general @@ -1755,7 +1773,7 @@ The SVD exits always!











    -

    Another Example

    +

    Another Example

    Consider the following matrix which can be SVD decomposed as @@ -1793,7 +1811,7 @@ The columns of \( \boldsymbol{U} \) are called the left singular vectors while t











    -

    Economy-size SVD

    +

    Economy-size SVD

    If we assume that \( n > p \), then our matrix \( \boldsymbol{U} \) has dimension \( n @@ -1818,7 +1836,7 @@ In general the economy-size SVD leads to less FLOPS and still conserving the des











    -

    Mathematical Properties

    +

    Mathematical Properties

    There are several interesting mathematical properties which will be @@ -1870,7 +1888,7 @@ We will come back to this expression when we discuss Ridge regression.











    -

    Ridge and LASSO Regression

    +

    Ridge and LASSO Regression

    Let us remind ourselves about the expression for the standard Mean Squared Error (MSE) which we used to define our cost function and the equations for the ordinary least squares (OLS) method, that is @@ -1928,7 +1946,7 @@ $$











    -

    More on Ridge Regression

    +

    More on Ridge Regression

    Using the matrix-vector expression for Ridge regression, @@ -1987,7 +2005,7 @@ with the vectors \( \boldsymbol{u}_j \) being the columns of \( \boldsymbol{U} \











    -

    Interpreting the Ridge results

    +

    Interpreting the Ridge results

    Since \( \lambda \geq 0 \), it means that compared to OLS, we have @@ -2011,7 +2029,7 @@ With a parameter \( \lambda \) we can thus shrink the role of specific parameter











    -

    More interpretations

    +

    More interpretations

    For the sake of simplicity, let us assume that the design matrix is orthonormal, that is @@ -2048,7 +2066,7 @@ Similarly, Mehta et a











    -

    Codes for the SVD

    +

    Codes for the SVD

    @@ -2065,9 +2083,9 @@ Similarly, Mehta et a # print( (np.transpose(U) @ U - U @np.transpose(U))) # print('test VT') # print( (np.transpose(VT) @ VT - VT @np.transpose(VT))) - print(U) - print(s) - print(VT) + print(U) + print(s) + print(VT) D = np.zeros((len(U),len(VT))) for i in range(0,len(VT)): @@ -2077,14 +2095,14 @@ Similarly, Mehta et a X = np.array([ [1.0, -1.0, 2.0], [1.0, 0.0, 1.0], [1.0, 2.0, -1.0], [1.0, 1.0, 0.0] ]) -print(X) -A = np.transpose(X) @ X -print(A) +print(X) +A = np.transpose(X) @ X +print(A) # Brute force inversion of super-collinear matrix #B = np.linalg.inv(A) #print(B) C = SVDinv(A) -print(C) +print(C)

    The matrix \( \boldsymbol{X} \) has columns that are linearly dependent. The first @@ -2099,7 +2117,7 @@ in the program terminating due to a singular matrix.

    -

    A better understanding of regularization

    +

    A better understanding of regularization

    The parameter \( \lambda \) that we have introduced in the Ridge (and @@ -2118,7 +2136,7 @@ affected by changing the parameter \( \lambda \).











    -

    Decomposing the OLS and Ridge expressions

    +

    Decomposing the OLS and Ridge expressions

    We have our design matrix @@ -2138,7 +2156,7 @@ The matrices \( \boldsymbol{U} \) and \( \boldsymbol{V} \) are unitary/orthonorm











    -

    Spectral Decomposition of the OLS

    +

    Spectral Decomposition of the OLS

    More material to be added here @@ -2146,7 +2164,7 @@ More material to be added here











    -

    Where are we going?

    +

    Where are we going?

    Before we proceed, we need to rethink what we have been doing. In our @@ -2163,7 +2181,7 @@ This will allow us to link the standard linear algebra methods we have discussed











    -

    Resampling methods

    +

    Resampling methods

    @@ -2196,7 +2214,7 @@ cross-validation and the bootstrap method.











    -

    Resampling approaches can be computationally expensive

    +

    Resampling approaches can be computationally expensive

    @@ -2225,7 +2243,7 @@ bootstrap is widely used.











    -

    Why resampling methods ?

    +

    Why resampling methods ?

    Statistical analysis.

    @@ -2241,7 +2259,7 @@ bootstrap is widely used.











    -

    Statistical analysis

    +

    Statistical analysis

    @@ -2263,7 +2281,7 @@ bootstrap is widely used.











    -

    Statistics

    +

    Statistics

    @@ -2294,7 +2312,7 @@ selection of a large set of these numbers reproduces this PDF.











    -

    Statistics, moments

    +

    Statistics, moments

    @@ -2317,7 +2335,7 @@ $$











    -

    Statistics, central moments

    +

    Statistics, central moments

    @@ -2355,7 +2373,7 @@ qualitatively as the spread of \( p \) around its mean.











    -

    Statistics, covariance

    +

    Statistics, covariance

    @@ -2386,7 +2404,7 @@ $$











    -

    Statistics, more covariance

    +

    Statistics, more covariance

    @@ -2418,14 +2436,14 @@ $$











    -

    Covariance example

    +

    Covariance example

    -Suppose we have defined three vectors \( \hat{x}, \hat{y}, \hat{z} \) with +Suppose we have defined three vectors \( \boldsymbol{x}, \boldsymbol{y}, \boldsymbol{z} \) with \( n \) elements each. The covariance matrix is defined as $$ -\hat{\Sigma} = \begin{bmatrix} \sigma_{xx} & \sigma_{xy} & \sigma_{xz} \\ +\boldsymbol{\Sigma} = \begin{bmatrix} \sigma_{xx} & \sigma_{xy} & \sigma_{xz} \\ \sigma_{yx} & \sigma_{yy} & \sigma_{yz} \\ \sigma_{zx} & \sigma_{zy} & \sigma_{zz} \end{bmatrix}, @@ -2444,10 +2462,10 @@ the exact mean valu\ es.

    The following simple function uses the np.vstack function which takes each vector of dimension \( 1\times n \) and produces a \( 3\times n \) -matrix \( \hat{W} \) +matrix \( \boldsymbol{W} \) $$ -\hat{W} = \begin{bmatrix} x_0 & y_0 & z_0 \\ +\boldsymbol{W} = \begin{bmatrix} x_0 & y_0 & z_0 \\ x_1 & y_1 & z_1 \\ x_2 & y_2 & z_2 \\ \dots & \dots & \dots \\ @@ -2458,8 +2476,8 @@ $$

    which in turn is converted into into the \( 3\times 3 \) covariance matrix -\( \hat{\Sigma} \) via the Numpy function np.cov(). We note that we can -also calculate the mean value of each set of samples \( \hat{x} \) etc +\( \boldsymbol{\Sigma} \) via the Numpy function np.cov(). We note that we can +also calculate the mean value of each set of samples \( \boldsymbol{x} \) etc using the Numpy function np.mean(x). We can also extract the eigenvalues of the covariance matrix through the np.linalg.eig() function. @@ -2467,7 +2485,7 @@ function.











    -

    Covariance in numpy

    +

    Covariance in numpy

    @@ -2477,16 +2495,16 @@ function. n = 100 x = np.random.normal(size=n) -print(np.mean(x)) +print(np.mean(x)) y = 4+3*x+np.random.normal(size=n) -print(np.mean(y)) +print(np.mean(y)) z = x**3+np.random.normal(size=n) -print(np.mean(z)) +print(np.mean(z)) W = np.vstack((x, y, z)) Sigma = np.cov(W) -print(Sigma) +print(Sigma) Eigvals, Eigvecs = np.linalg.eig(Sigma) -print(Eigvals) +print(Eigvals)

    @@ -2495,9 +2513,9 @@ Eigvals, Eigvecs = npimport matplotlib.pyplot as plt from scipy import sparse eye = np.eye(4) -print(eye) +print(eye) sparse_mtx = sparse.csr_matrix(eye) -print(sparse_mtx) +print(sparse_mtx) x = np.linspace(-10,10,100) y = np.sin(x) plt.plot(x,y,marker='x') @@ -2506,7 +2524,7 @@ plt.show()











    -

    Statistics, independent variables

    +

    Statistics, independent variables

    @@ -2532,7 +2550,7 @@ $$











    -

    Statistics, more variance

    +

    Statistics, more variance

    @@ -2564,7 +2582,7 @@ value of a set of measurements.











    -

    Statistics and stochastic processes

    +

    Statistics and stochastic processes

    @@ -2592,7 +2610,7 @@ interested in finding the few lowest moments, like the mean

    -

    Statistics and sample variables

    +

    Statistics and sample variables

    @@ -2618,7 +2636,7 @@ $$











    -

    Statistics, sample variance and covariance

    +

    Statistics, sample variance and covariance

    @@ -2639,7 +2657,7 @@ and covariance \( \mathrm{cov}(X,Y) \).











    -

    Statistics, law of large numbers

    +

    Statistics, law of large numbers

    @@ -2671,7 +2689,7 @@ true PDFs behind, which we usually do not have.











    -

    Statistics, more on sample error

    +

    Statistics, more on sample error

    @@ -2693,7 +2711,7 @@ means.











    -

    Statistics

    +

    Statistics

    @@ -2714,7 +2732,7 @@ And in particular we are interested in its variance \( \mathrm{var}(\overline X_











    -

    Statistics, central limit theorem

    +

    Statistics, central limit theorem

    @@ -2739,7 +2757,7 @@ $$











    -

    Statistics, more technicalities

    +

    Statistics, more technicalities

    @@ -2768,7 +2786,7 @@ estimate of the PDF of each of the \( X_i \), estimating all properties of











    -

    Statistics

    +

    Statistics

    @@ -2795,7 +2813,7 @@ $$











    -

    Statistics and sample variance

    +

    Statistics and sample variance

    @@ -2834,7 +2852,7 @@ measurements in the sample.











    -

    Statistics, uncorrelated results

    +

    Statistics, uncorrelated results

    @@ -2869,7 +2887,7 @@ cannot overlook the always present correlations.











    -

    Statistics, computations

    +

    Statistics, computations

    @@ -2898,7 +2916,7 @@ measurements. For uncorrelated measurements this second term is zero.











    -

    Statistics, more on computations of errors

    +

    Statistics, more on computations of errors

    @@ -2920,7 +2938,7 @@ have to be stored throughout the experiment.











    -

    Statistics, wrapping up 1

    +

    Statistics, wrapping up 1

    @@ -2953,7 +2971,7 @@ starting always at \( 1 \) for \( d=0 \).











    -

    Statistics, final expression

    +

    Statistics, final expression

    @@ -2986,7 +3004,7 @@ $$











    -

    Statistics, effective number of correlations

    +

    Statistics, effective number of correlations

    @@ -3011,7 +3029,7 @@ measurements is very large.

    -

    Linking the regression analysis with a statistical interpretation

    +

    Linking the regression analysis with a statistical interpretation

    Finally, we are going to discuss several statistical properties which can be obtained in terms of analytical expressions. @@ -3049,7 +3067,7 @@ row number \( i \) and perform a sum over all values \( p \).











    -

    Assumptions made

    +

    Assumptions made

    The assumption we have made here can be summarized as (and this is going to be useful when we discuss the bias-variance trade off) @@ -3069,7 +3087,7 @@ $$











    -

    Expectation value and variance

    +

    Expectation value and variance

    We can calculate the expectation value of \( \boldsymbol{y} \) for a given element \( i \) @@ -3104,7 +3122,7 @@ mean value \( \boldsymbol{X}\boldsymbol{\beta} \) and variance \( \sigma^2 \) (n











    -

    Expectation value and variance for \( \boldsymbol{\beta} \)

    +

    Expectation value and variance for \( \boldsymbol{\beta} \)

    With the OLS expressions for the parameters \( \boldsymbol{\beta} \) we can evaluate the expectation value @@ -3148,7 +3166,7 @@ where we have used that \( \mathbb{E} (\mathbf{Y} \mathbf{Y}^{T}) = \sigma^2 \, \mathbf{I}_{nn} \). From \( \mbox{Var}(\boldsymbol{\beta}) = \sigma^2 \, (\mathbf{X}^{T} \mathbf{X})^{-1} \), one obtains an estimate of the variance of the estimate of the \( j \)-th regression coefficient: -\( \hat{\sigma}^2 (\hat{\beta}_j ) = \hat{\sigma}^2 \sqrt{ +\( \boldsymbol{\sigma}^2 (\boldsymbol{\beta}_j ) = \boldsymbol{\sigma}^2 \sqrt{ [(\mathbf{X}^{T} \mathbf{X})^{-1}]_{jj} } \). This may be used to construct a confidence interval for the estimates. @@ -3189,7 +3207,7 @@ This means the variance we obtain with the standard OLS will always for \( \lamb











    -

    Resampling methods

    +

    Resampling methods

    With all these analytical equations for both the OLS and Ridge @@ -3218,7 +3236,7 @@ training error reaches a saturation.











    -

    Resampling methods: Jackknife and Bootstrap

    +

    Resampling methods: Jackknife and Bootstrap

    Two famous @@ -3241,7 +3259,7 @@ need for bootstrapping.











    -

    Resampling methods: Jackknife

    +

    Resampling methods: Jackknife

    The Jackknife works by making many replicas of the estimator \( \widehat{\theta} \). @@ -3260,7 +3278,7 @@ number \( i \) is left out. Using this notation, define











    -

    Jackknife code example

    +

    Jackknife code example

    @@ -3275,9 +3293,9 @@ number \( i \) is left out. Using this notation, define t[i] = stat(delete(data,i) ) # analysis - print("Runtime: %g sec" % (time()-t0)); print("Jackknife Statistics :") - print("original bias std. error") - print("%8g %14g %15g" % (stat(data),(n-1)*mean(t)/n, (n*var(t))**.5)) + print("Runtime: %g sec" % (time()-t0)); print("Jackknife Statistics :") + print("original bias std. error") + print("%8g %14g %15g" % (stat(data),(n-1)*mean(t)/n, (n*var(t))**.5)) return t @@ -3296,7 +3314,7 @@ t = jackknife(x, stat)











    -

    Resampling methods: Bootstrap

    +

    Resampling methods: Bootstrap

    @@ -3317,7 +3335,7 @@ advantages:











    -

    Resampling methods: Bootstrap background

    +

    Resampling methods: Bootstrap background

    Since \( \widehat{\theta} = \widehat{\theta}(\boldsymbol{X}) \) is a function of random variables, @@ -3333,7 +3351,7 @@ estimators.











    -

    Resampling methods: More Bootstrap background

    +

    Resampling methods: More Bootstrap background

    In the case that \( \widehat{\theta} \) has @@ -3355,7 +3373,7 @@ idea is to use the relative frequency of \( \widehat{\theta}^* \)











    -

    Resampling methods: Bootstrap approach

    +

    Resampling methods: Bootstrap approach

    But @@ -3376,7 +3394,7 @@ frequency of the observation \( X_i \), just draw the values











    -

    Resampling methods: Bootstrap steps

    +

    Resampling methods: Bootstrap steps

    The independent bootstrap works like this: @@ -3401,7 +3419,7 @@ example, if you are interested in estimating the variance of \( \widehat











    -

    Code example for the Bootstrap method

    +

    Code example for the Bootstrap method

    The following code starts with a Gaussian distribution with mean value @@ -3438,9 +3456,9 @@ theorem. t[i] = statistic(data[randint(0,n,n)]) # analysis - print("Runtime: %g sec" % (time()-t0)); print("Bootstrap Statistics :") - print("original bias std. error") - print("%8g %8g %14g %15g" % (statistic(data), std(data),mean(t),std(t))) + print("Runtime: %g sec" % (time()-t0)); print("Bootstrap Statistics :") + print("original bias std. error") + print("%8g %8g %14g %15g" % (statistic(data), std(data),mean(t),std(t))) return t @@ -3458,14 +3476,14 @@ lt = plt..xlabel('Smarts') plt.ylabel('Probability') plt.axis([99.5, 100.6, 0, 3.0]) -plt.grid(True) +plt.grid(True) plt.show()

    -

    Various steps in cross-validation

    +

    Various steps in cross-validation

    When the repetitive splitting of the data set is done randomly, @@ -3486,7 +3504,7 @@ cross-validation (LOOCV).

    -

    How to set up the cross-validation for Ridge and/or Lasso

    +

    How to set up the cross-validation for Ridge and/or Lasso

    • Define a range of interest for the penalty parameter.
    • @@ -3518,7 +3536,7 @@ $$











      -

      Cross-validation in brief

      +

      Cross-validation in brief

      For the various values of \( k \) @@ -3540,7 +3558,7 @@ For the various values of \( k \)









      -

      Code Example for Cross-validation and \( k \)-fold Cross-validation

      +

      Code Example for Cross-validation and \( k \)-fold Cross-validation

      The code here uses Ridge regression with cross-validation (CV) resampling and \( k \)-fold CV in order to fit a specific polynomial. @@ -3640,7 +3658,7 @@ plt.show()











      -

      The bias-variance tradeoff

      +

      The bias-variance tradeoff

      We will discuss the bias-variance tradeoff in the context of @@ -3706,7 +3724,7 @@ that is the rewriting in terms of the so-called bias, the variance of the model











      -

      Example code for Bias-Variance tradeoff

      +

      Example code for Bias-Variance tradeoff

      @@ -3734,7 +3752,7 @@ x_train, x_test, y_train, y_test = train_tes # Combine x transformation and model into one operation. # Not neccesary, but convenient. -model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) +model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) # The following (m x n_bootstraps) matrix holds the column vectors y_pred # for each bootstrap iteration. @@ -3751,13 +3769,13 @@ y_pred = np.# calculated per data point in the test set. # Note 2: The use of keepdims=True is important in the calculation of bias as this # maintains the column vector form. Dropping this yields very unexpected results. -error = np.mean( np.mean((y_test - y_pred)**2, axis=1, keepdims=True) ) -bias = np.mean( (y_test - np.mean(y_pred, axis=1, keepdims=True))**2 ) -variance = np.mean( np.var(y_pred, axis=1, keepdims=True) ) -print('Error:', error) -print('Bias^2:', bias) -print('Var:', variance) -print('{} >= {} + {} = {}'.format(error, bias, variance, bias+variance)) +error = np.mean( np.mean((y_test - y_pred)**2, axis=1, keepdims=True) ) +bias = np.mean( (y_test - np.mean(y_pred, axis=1, keepdims=True))**2 ) +variance = np.mean( np.var(y_pred, axis=1, keepdims=True) ) +print('Error:', error) +print('Bias^2:', bias) +print('Var:', variance) +print('{} >= {} + {} = {}'.format(error, bias, variance, bias+variance)) plt.plot(x[::5, :], y[::5, :], label='f(x)') plt.scatter(x_test, y_test, label='Data points') @@ -3768,7 +3786,7 @@ plt.show()











      -

      Understanding what happens

      +

      Understanding what happens

      @@ -3797,21 +3815,21 @@ polydegree = np x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2) for degree in range(maxdegree): - model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) + model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) y_pred = np.empty((y_test.shape[0], n_boostraps)) for i in range(n_boostraps): x_, y_ = resample(x_train, y_train) y_pred[:, i] = model.fit(x_, y_).predict(x_test).ravel() polydegree[degree] = degree - error[degree] = np.mean( np.mean((y_test - y_pred)**2, axis=1, keepdims=True) ) - bias[degree] = np.mean( (y_test - np.mean(y_pred, axis=1, keepdims=True))**2 ) - variance[degree] = np.mean( np.var(y_pred, axis=1, keepdims=True) ) - print('Polynomial degree:', degree) - print('Error:', error[degree]) - print('Bias^2:', bias[degree]) - print('Var:', variance[degree]) - print('{} >= {} + {} = {}'.format(error[degree], bias[degree], variance[degree], bias[degree]+variance[degree])) + error[degree] = np.mean( np.mean((y_test - y_pred)**2, axis=1, keepdims=True) ) + bias[degree] = np.mean( (y_test - np.mean(y_pred, axis=1, keepdims=True))**2 ) + variance[degree] = np.mean( np.var(y_pred, axis=1, keepdims=True) ) + print('Polynomial degree:', degree) + print('Error:', error[degree]) + print('Bias^2:', bias[degree]) + print('Var:', variance[degree]) + print('{} >= {} + {} = {}'.format(error[degree], bias[degree], variance[degree], bias[degree]+variance[degree])) plt.plot(polydegree, error, label='Error') plt.plot(polydegree, bias, label='bias') @@ -3822,7 +3840,7 @@ plt.show()

      -

      Summing up

      +

      Summing up

      The bias-variance tradeoff summarizes the fundamental tension in @@ -3859,7 +3877,7 @@ You may also find this recent Another Example from Scikit-Learn's Repository +

      Another Example from Scikit-Learn's Repository

      @@ -3885,7 +3903,7 @@ You may also find this recent training data. """ -print(__doc__) +print(__doc__) import numpy as np import matplotlib.pyplot as plt @@ -3912,7 +3930,7 @@ plt.figure(figsize.setp(ax, xticks=(), yticks=()) polynomial_features = PolynomialFeatures(degree=degrees[i], - include_bias=False) + include_bias=False) linear_regression = LinearRegression() pipeline = Pipeline([("polynomial_features", polynomial_features), ("linear_regression", linear_regression)]) @@ -3931,14 +3949,14 @@ plt.figure(figsize.xlim((0, 1)) plt.ylim((-2, 2)) plt.legend(loc="best") - plt.title("Degree {}\nMSE = {:.2e}(+/- {:.2e})".format( + plt.title("Degree {}\nMSE = {:.2e}(+/- {:.2e})".format( degrees[i], -scores.mean(), scores.std())) plt.show()











    -

    More examples on bootstrap and cross-validation and errors

    +

    More examples on bootstrap and cross-validation and errors

    @@ -3973,7 +3991,7 @@ DATA_ID = " return os.path.join(DATA_ID, dat_id) def save_fig(fig_id): - plt.savefig(image_path(fig_id) + ".png", format='png') + plt.savefig(image_path(fig_id) + ".png", format='png') infile = open(data_path("EoS.csv"),'r') @@ -4003,7 +4021,7 @@ trials = 100= 0.0 for samples in range(trials): x_train, x_test, y_train, y_test = train_test_split(X, Energies, test_size=0.2) - model = LinearRegression(fit_intercept=True).fit(x_train, y_train) + model = LinearRegression(fit_intercept=True).fit(x_train, y_train) ypred = model.predict(x_train) ytilde = model.predict(x_test) testerror[polydegree] += mean_squared_error(y_test, ytilde) @@ -4011,9 +4029,9 @@ trials = 100/= trials trainingerror[polydegree] /= trials - print("Degree of polynomial: %3d"% polynomial[polydegree]) - print("Mean squared error on training data: %.8f" % trainingerror[polydegree]) - print("Mean squared error on test data: %.8f" % testerror[polydegree]) + print("Degree of polynomial: %3d"% polynomial[polydegree]) + print("Mean squared error on training data: %.8f" % trainingerror[polydegree]) + print("Mean squared error on test data: %.8f" % testerror[polydegree]) plt.plot(polynomial, np.log10(trainingerror), label='Training Error') plt.plot(polynomial, np.log10(testerror), label='Test Error') @@ -4025,7 +4043,7 @@ plt.show()

    -

    The same example but now with cross-validation

    +

    The same example but now with cross-validation

    @@ -4062,7 +4080,7 @@ DATA_ID = " return os.path.join(DATA_ID, dat_id) def save_fig(fig_id): - plt.savefig(image_path(fig_id) + ".png", format='png') + plt.savefig(image_path(fig_id) + ".png", format='png') infile = open(data_path("EoS.csv"),'r') @@ -4101,7 +4119,7 @@ plt.show()











    -

    Cross-validation with Ridge

    +

    Cross-validation with Ridge

    @@ -4144,7 +4162,7 @@ plt.show()











    -

    The Ising model

    +

    The Ising model

    The one-dimensional Ising model with nearest neighbor interaction, no @@ -4177,7 +4195,7 @@ with their respective energies. import scipy.linalg as scl from sklearn.model_selection import train_test_split import tqdm -sns.set(color_codes=True) +sns.set(color_codes=True) cmap_args=dict(vmin=-1., vmax=1., cmap='seismic') L = 40 @@ -4201,7 +4219,7 @@ the coupling constant to achieve this.











    -

    Reformulating the problem to suit regression

    +

    Reformulating the problem to suit regression

    A more general form for the one-dimensional Ising model is @@ -4251,7 +4269,7 @@ X_train, X_test, y_train, y_test = train_tes











    -

    Linear regression

    +

    Linear regression

    In the ordinary least squares method we choose the cost function @@ -4293,13 +4311,13 @@ X_test_own = np

    def ols_inv(x: np.ndarray, y: np.ndarray) -> np.ndarray:
    -    return scl.inv(x.T @ x) @ (x.T @ y)
    +    return scl.inv(x.T @ x) @ (x.T @ y)
     beta = ols_inv(X_train_own, y_train)
     











    -

    Singular Value decomposition

    +

    Singular Value decomposition

    Doing the inversion directly turns out to be a bad idea since the matrix @@ -4343,7 +4361,7 @@ linear system as an equation would reduce this down to

    def ols_svd(x: np.ndarray, y: np.ndarray) -> np.ndarray:
         u, s, v = scl.svd(x)
    -    return v.T @ scl.pinv(scl.diagsvd(s, u.shape[0], v.shape[0])) @ u.T @ y
    +    return v.T @ scl.pinv(scl.diagsvd(s, u.shape[0], v.shape[0])) @ u.T @ y
     

    @@ -4386,7 +4404,7 @@ In this case our matrix inversion was actually possible. The obvious question no











    -

    The one-dimensional Ising model

    +

    The one-dimensional Ising model

    Let us bring back the Ising model again, but now with an additional @@ -4419,7 +4437,7 @@ We will look at a system of \( L = 40 \) spins with a coupling constant of \( J from sklearn.model_selection import train_test_split import sklearn.linear_model as skl import tqdm -sns.set(color_codes=True) +sns.set(color_codes=True) cmap_args=dict(vmin=-1., vmax=1., cmap='seismic') L = 40 @@ -4520,7 +4538,7 @@ The results perfectly with our previous discussion where we used our own code.











    -

    Ridge regression

    +

    Ridge regression

    Having explored the ordinary least squares we move on to ridge @@ -4555,7 +4573,7 @@ plt.show()











    -

    LASSO regression

    +

    LASSO regression

    In the Least Absolute Shrinkage and Selection Operator (LASSO)-method we get a third cost function. @@ -4593,7 +4611,7 @@ constant as opposed to ridge and OLS. We get a sparse solution with











    -

    Performance as function of the regularization parameter

    +

    Performance as function of the regularization parameter

    We see how the different models perform for a different set of values for \( \lambda \). @@ -4647,7 +4665,7 @@ much. Ridge is more stable over a larger range of values for











    -

    Finding the optimal value of \( \lambda \)

    +

    Finding the optimal value of \( \lambda \)

    To determine which value of \( \lambda \) is best we plot the accuracy of @@ -4673,7 +4691,7 @@ colors = { lambdas, train_errors[key], colors[key], - label="Train {0}".format(key), + label="Train {0}".format(key), linewidth=4.0 ) @@ -4682,7 +4700,7 @@ colors = { lambdas, test_errors[key], colors[key] + "--", - label="Test {0}".format(key), + label="Test {0}".format(key), linewidth=4.0 ) plt.legend(loc="best", fontsize=18) @@ -4702,7 +4720,7 @@ other models for all values of \( \lambda \).

    - © 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + © 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license
    diff --git a/doc/pub/Regression/ipynb/ipynb-Regression-src.tar.gz b/doc/pub/Regression/ipynb/ipynb-Regression-src.tar.gz index f1210c14ee9e418ce60bc8954148dde05d429ff9..247b8ad7fe2685186a4f53c14615c09bd10a6e08 100644 GIT binary patch literal 193 zcmV;y06za8iwFSX^*mny1MSaC3WG2Z24L5oVoo4Qe60(0(M6$1FA#Cm^pV&kLcM*X zLc40|MoJ-H7C#|BVWuoL+kFw)yA4)D2+5KJrp&W+PQsS^j4}!|&Z#>rPZ$sy$7vP- zS#PA5!C0={DBTIALHV}lYEARupJf$z=ASrr!ocn@+D=K3%3`I|8A@z58Y7g9L_f+3 vYK3Nc2938tXap`t;B_sm>+nn1Yt?FgHBtEMg*?ymysta}!ziaB00;m8k)~CP literal 193 zcmV;y06za8iwFRYAOcuHia9}<@#BJwnaF;_gB66yS&5K4eBj+j!UgaZ=BSQY^; zx6(`Jys*P6%}Ht}_1oT1tEvzG%%{LJ|HQFT4t9s$H%5atUKYljA(yq4&MBi4)%Lo8 v(nvRs!OB~wtOTKZ5M`>XP`^2L(Y81Ydao9%2p400;m8GXPh@ diff --git a/doc/pub/Regression/pdf/Regression-minted.pdf b/doc/pub/Regression/pdf/Regression-minted.pdf index 448081daa35f5c61746db5fbfa3f822b9282eac2..33c1e054ae5eb7b91d85929b57700afcd36b41fb 100644 GIT binary patch delta 310114 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 O0eKOqsU?-A5dIf6I>EpI delta 383285 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
  • ?AhQ22{|5_4WN0wQA|af# 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 z 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

    *+CUO7gh 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

    bS{ot{VrDh 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 diff --git a/doc/src/How2ReadData/How2ReadData.do.txt b/doc/src/How2ReadData/How2ReadData.do.txt index fd51fdfac..863b19c39 100644 --- a/doc/src/How2ReadData/How2ReadData.do.txt +++ b/doc/src/How2ReadData/How2ReadData.do.txt @@ -2,11 +2,6 @@ TITLE: Data Analysis and Machine Learning: Getting started, our first data and M AUTHOR: Morten Hjorth-Jensen {copyright, 1999-present|CC BY-NC} at Department of Physics, University of Oslo & Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University DATE: today -!split -===== To do ===== - -* rewrite totally, shuffle statistics material to stat part -* lin algebra part to be removed ===== Introduction ===== diff --git a/doc/src/How2ReadData/make.sh b/doc/src/How2ReadData/make.sh index f23265bd7..84116b143 100755 --- a/doc/src/How2ReadData/make.sh +++ b/doc/src/How2ReadData/make.sh @@ -47,7 +47,7 @@ system doconce format html $name --html_style=bootstrap --pygments_html_style=de #system doconce split_html $html.html --method=split --pagination --nav_button=bottom # IPython notebook -system doconce format ipynb $name $opt +#system doconce format ipynb $name $opt diff --git a/doc/src/How2ReadData/todo.list b/doc/src/How2ReadData/todo.list new file mode 100644 index 000000000..1aa67377f --- /dev/null +++ b/doc/src/How2ReadData/todo.list @@ -0,0 +1,7 @@ + +===== To do ===== + +* rewrite totally, shuffle statistics material to stat part +* lin algebra part to be removed + + diff --git a/doc/src/Introduction/make.sh b/doc/src/Introduction/make.sh index 2c66f0d8b..8e16be8ca 100755 --- a/doc/src/Introduction/make.sh +++ b/doc/src/Introduction/make.sh @@ -47,7 +47,7 @@ system doconce format html $name --html_style=bootstrap --pygments_html_style=de #system doconce split_html $html.html --method=split --pagination --nav_button=bottom # IPython notebook -system doconce format ipynb $name $opt +#system doconce format ipynb $name $opt # Ordinary plain LaTeX document diff --git a/doc/src/Regression/make.sh b/doc/src/Regression/make.sh index d908b90b9..9d16b4645 100755 --- a/doc/src/Regression/make.sh +++ b/doc/src/Regression/make.sh @@ -47,7 +47,7 @@ system doconce format html $name --html_style=bootstrap --pygments_html_style=de system doconce split_html $html.html --method=split --pagination --nav_button=bottom # IPython notebook -system doconce format ipynb $name $opt +#system doconce format ipynb $name $opt # Ordinary plain LaTeX document diff --git a/doc/src/Regression/todo.list b/doc/src/Regression/todo.list new file mode 100644 index 000000000..b12bdd460 --- /dev/null +++ b/doc/src/Regression/todo.list @@ -0,0 +1,12 @@ + +* Clean up Boston Housing data with correlations, add perhaps another more science related example. Add more info about correlation matrix, how to set it up and what it means +* show how the data is set up and show the design matrix for this data set +* Bring up covid data, say eg recent UK data on race etc +* Same for the Ising model +* Clean up part on statistics and resampling methods +* add material on ridge and lasso and link to SVD, show proofs, use doughnut example +* clean up math formalism, hats to boldface +* add material about kernel regression and splines +* rewrite Cross validation part and add discussion of train, validate and test, think of placing in statistics part or merge statistics into the reg material. add more formal stat on bootstrapping +* add discussion of training, validation and testing using ridge and lasso regression. demonstrate usage of gridsearch in validation case. +

  • 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
  • @RPMVSZJeL-fpn>6kXrxHw79cST*@ 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�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