diff --git a/doc/LectureNotes/_build/.doctrees/chapter1.doctree b/doc/LectureNotes/_build/.doctrees/chapter1.doctree index 30c0bee2e..90c4c8184 100644 Binary files a/doc/LectureNotes/_build/.doctrees/chapter1.doctree and b/doc/LectureNotes/_build/.doctrees/chapter1.doctree differ diff --git a/doc/LectureNotes/_build/.doctrees/chapter2.doctree b/doc/LectureNotes/_build/.doctrees/chapter2.doctree index 55068749b..5622196e5 100644 Binary files a/doc/LectureNotes/_build/.doctrees/chapter2.doctree and b/doc/LectureNotes/_build/.doctrees/chapter2.doctree differ diff --git a/doc/LectureNotes/_build/.doctrees/chapter3.doctree b/doc/LectureNotes/_build/.doctrees/chapter3.doctree index ceb0eabba..677298c6a 100644 Binary files a/doc/LectureNotes/_build/.doctrees/chapter3.doctree and b/doc/LectureNotes/_build/.doctrees/chapter3.doctree differ diff --git a/doc/LectureNotes/_build/.doctrees/chapter4.doctree b/doc/LectureNotes/_build/.doctrees/chapter4.doctree index fc69eb650..1bb3dd684 100644 Binary files a/doc/LectureNotes/_build/.doctrees/chapter4.doctree and b/doc/LectureNotes/_build/.doctrees/chapter4.doctree differ diff --git a/doc/LectureNotes/_build/.doctrees/environment.pickle b/doc/LectureNotes/_build/.doctrees/environment.pickle index 47d7ee608..a1fb76610 100644 Binary files a/doc/LectureNotes/_build/.doctrees/environment.pickle and b/doc/LectureNotes/_build/.doctrees/environment.pickle differ diff --git a/doc/LectureNotes/_build/html/_images/chapter1_11_0.png b/doc/LectureNotes/_build/html/_images/chapter1_11_0.png index d56e1d6d0..8585b7491 100644 Binary files a/doc/LectureNotes/_build/html/_images/chapter1_11_0.png and b/doc/LectureNotes/_build/html/_images/chapter1_11_0.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter1_13_1.png b/doc/LectureNotes/_build/html/_images/chapter1_13_1.png index 3fd1831e1..b145ce82a 100644 Binary files a/doc/LectureNotes/_build/html/_images/chapter1_13_1.png and b/doc/LectureNotes/_build/html/_images/chapter1_13_1.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter1_214_0.png b/doc/LectureNotes/_build/html/_images/chapter1_214_0.png new file mode 100644 index 000000000..cbac4fd70 Binary files /dev/null and b/doc/LectureNotes/_build/html/_images/chapter1_214_0.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter1_27_0.png b/doc/LectureNotes/_build/html/_images/chapter1_27_0.png index ab7dda310..bef273ce3 100644 Binary files a/doc/LectureNotes/_build/html/_images/chapter1_27_0.png and b/doc/LectureNotes/_build/html/_images/chapter1_27_0.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter1_3_0.png b/doc/LectureNotes/_build/html/_images/chapter1_3_0.png index 4ad4c8690..0be2e475d 100644 Binary files a/doc/LectureNotes/_build/html/_images/chapter1_3_0.png and b/doc/LectureNotes/_build/html/_images/chapter1_3_0.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter1_61_11.png b/doc/LectureNotes/_build/html/_images/chapter1_61_11.png new file mode 100644 index 000000000..916bfd378 Binary files /dev/null and b/doc/LectureNotes/_build/html/_images/chapter1_61_11.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter2_245_2.png b/doc/LectureNotes/_build/html/_images/chapter2_245_2.png new file mode 100644 index 000000000..dc3a3ce3e Binary files /dev/null and b/doc/LectureNotes/_build/html/_images/chapter2_245_2.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter2_247_1.png b/doc/LectureNotes/_build/html/_images/chapter2_247_1.png new file mode 100644 index 000000000..ac2df9e69 Binary files /dev/null and b/doc/LectureNotes/_build/html/_images/chapter2_247_1.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter2_249_1.png b/doc/LectureNotes/_build/html/_images/chapter2_249_1.png new file mode 100644 index 000000000..9666ad291 Binary files /dev/null and b/doc/LectureNotes/_build/html/_images/chapter2_249_1.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter2_313_2.png b/doc/LectureNotes/_build/html/_images/chapter2_313_2.png new file mode 100644 index 000000000..07584f6bb Binary files /dev/null and b/doc/LectureNotes/_build/html/_images/chapter2_313_2.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter3_25_2.png b/doc/LectureNotes/_build/html/_images/chapter3_25_2.png index 98e9e3a97..b77a1febb 100644 Binary files a/doc/LectureNotes/_build/html/_images/chapter3_25_2.png and b/doc/LectureNotes/_build/html/_images/chapter3_25_2.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter4_13_0.png b/doc/LectureNotes/_build/html/_images/chapter4_13_0.png new file mode 100644 index 000000000..cde80495d Binary files /dev/null and b/doc/LectureNotes/_build/html/_images/chapter4_13_0.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter4_13_1.png b/doc/LectureNotes/_build/html/_images/chapter4_13_1.png new file mode 100644 index 000000000..aee9096ee Binary files /dev/null and b/doc/LectureNotes/_build/html/_images/chapter4_13_1.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter4_13_2.png b/doc/LectureNotes/_build/html/_images/chapter4_13_2.png new file mode 100644 index 000000000..0a17d7002 Binary files /dev/null and b/doc/LectureNotes/_build/html/_images/chapter4_13_2.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter4_51_0.png b/doc/LectureNotes/_build/html/_images/chapter4_51_0.png new file mode 100644 index 000000000..903d98702 Binary files /dev/null and b/doc/LectureNotes/_build/html/_images/chapter4_51_0.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter4_51_1.png b/doc/LectureNotes/_build/html/_images/chapter4_51_1.png new file mode 100644 index 000000000..42ba3f001 Binary files /dev/null and b/doc/LectureNotes/_build/html/_images/chapter4_51_1.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter4_5_1.png b/doc/LectureNotes/_build/html/_images/chapter4_5_1.png new file mode 100644 index 000000000..89d6b14ac Binary files /dev/null and b/doc/LectureNotes/_build/html/_images/chapter4_5_1.png differ diff --git a/doc/LectureNotes/_build/html/_images/chapter4_7_0.png b/doc/LectureNotes/_build/html/_images/chapter4_7_0.png new file mode 100644 index 000000000..de0c567ed Binary files /dev/null and b/doc/LectureNotes/_build/html/_images/chapter4_7_0.png differ diff --git a/doc/LectureNotes/_build/html/_sources/chapter1.ipynb b/doc/LectureNotes/_build/html/_sources/chapter1.ipynb index 756ce7708..c930e0a6b 100644 --- a/doc/LectureNotes/_build/html/_sources/chapter1.ipynb +++ b/doc/LectureNotes/_build/html/_sources/chapter1.ipynb @@ -6,8 +6,6 @@ "source": [ "# Linear Regression\n", "\n", - "[Video of Lecture](https://www.uio.no/studier/emner/matnat/fys/FYS-STK3155/h20/forelesningsvideoer/LectureAug21.mp4?vrtx=view-as-webpage)\n", - "\n", "\n", "## Introduction\n", "\n", @@ -15,7 +13,7 @@ "\n", "\n", "\n", - "Our emphasis throughout this series of lectures (small change) \n", + "Our emphasis throughout this series of lectures \n", "is on understanding the mathematical aspects of\n", "different algorithms used in the fields of data analysis and machine learning. \n", "\n", @@ -235,7 +233,9 @@ "\n", "## Simple linear regression model using **scikit-learn**\n", "\n", - "We start with perhaps our simplest possible example, using **Scikit-Learn** to perform linear regression analysis on a data set produced by us. \n", + "We start with perhaps our simplest possible example, using\n", + "**Scikit-Learn** to perform linear regression analysis on a data set\n", + "produced by us.\n", "\n", "What follows is a simple Python code where we have defined a function\n", "$y$ in terms of the variable $x$. Both are defined as vectors with $100$ entries. \n", @@ -437,7 +437,8 @@ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.linear_model import LinearRegression\n", - "\n", + "# Number of data points\n", + "n = 100\n", "x = np.random.rand(100,1)\n", "y = 5*x+0.01*np.random.randn(100,1)\n", "linreg = LinearRegression()\n", @@ -459,7 +460,8 @@ "Depending on the parameter in front of the normal distribution, we may\n", "have a small or larger relative error. Try to play around with\n", "different training data sets and study (graphically) the value of the\n", - "relative error.\n", + "relative error. Note also that **Scikit-Learn** requires a matrix as input for the input values $x$ and $y$. In the above code we have\n", + "solved this by declaring $x$ and $y$ as arrays of dimension $n\\times 1$.\n", "\n", "As mentioned above, **Scikit-Learn** has an impressive functionality.\n", "We can for example extract the values of $\\alpha$ and $\\beta$ and\n", @@ -629,8 +631,7 @@ "metadata": {}, "source": [ "$$\n", - "H_{\\delta}(\\boldsymbol{a})=\\left\\{\\begin{array}{cc}\\frac{1}{2} \\boldsymbol{a}^{2}& \\text{for }|\\boldsymbol{a}|\\leq \\delta\\\\ \\delta (|\\b\\\n", - "m{a}|-\\frac{1}{2}\\delta ),&\\text{otherwise}.\\end{array}\\right.\n", + "H_{\\delta}(\\boldsymbol{a})=\\left\\{\\begin{array}{cc}\\frac{1}{2} \\boldsymbol{a}^{2}& \\text{for }|\\boldsymbol{a}|\\leq \\delta\\\\ \\delta (|\\boldsymbol{a}|-\\frac{1}{2}\\delta ),&\\text{otherwise}.\\end{array}\\right.\n", "$$" ] }, @@ -641,6 +642,8 @@ "Here $\\boldsymbol{a}=\\boldsymbol{y} - \\boldsymbol{\\tilde{y}}$.\n", "\n", "\n", + "\n", + "\n", "We will discuss in more\n", "detail these and other functions in the various lectures. We conclude this part with another example. Instead of \n", "a linear $x$-dependence we study now a cubic polynomial and use the polynomial regression analysis tools of scikit-learn." @@ -1061,6 +1064,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "Note well that we have made life simple here. We perform a fit in terms of the number of nucleons only. A more sophisticated fit can be done by including an explicit dependence on the number of protons and neutrons in the asymmetry and Coulomb terms.\n", + "\n", "With **scikitlearn** we are now ready to use linear regression and fit our data." ] }, @@ -1100,7 +1105,6 @@ "print('Variance score: %.2f' % r2_score(Energies, fity))\n", "# Mean absolute error \n", "print('Mean absolute error: %.2f' % mean_absolute_error(Energies, fity))\n", - "print(clf.coef_, clf.intercept_)\n", "\n", "Masses['Eapprox'] = fity\n", "# Generate a plot comparing the experimental with the fitted values values.\n", @@ -3046,6 +3050,119 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "## Splitting our Data in Training and Test data\n", + "\n", + "\n", + "It is normal in essentially all Machine Learning studies to split the\n", + "data in a training set and a test set (sometimes also an additional\n", + "validation set). **Scikit-Learn** has an own function for this. There\n", + "is no explicit recipe for how much data should be included as training\n", + "data and say test data. An accepted rule of thumb is to use\n", + "approximately $2/3$ to $4/5$ of the data as training data. We will\n", + "postpone a discussion of this splitting to the end of these notes and\n", + "our discussion of the so-called **bias-variance** tradeoff. Here we\n", + "limit ourselves to repeat the above equation of state fitting example\n", + "but now splitting the data into a training set and a test set.\n", + "\n", + "Let us study some examples. The first code here takes a simple\n", + "one-dimensional second-order polynomial and we fit it to a\n", + "second-order polynomial. Depending on the strength of the added noise,\n", + "the various measures like the $R2$ score or the mean-squared error,\n", + "the fit becomes better or worse." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], + "source": [ + "import os\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "\n", + "def R2(y_data, y_model):\n", + " return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2)\n", + "def MSE(y_data,y_model):\n", + " n = np.size(y_model)\n", + " return np.sum((y_data-y_model)**2)/n\n", + "\n", + "x = np.random.rand(100)\n", + "y = 2.0+5*x*x+0.1*np.random.randn(100)\n", + "\n", + "\n", + "# The design matrix now as function of a given polynomial\n", + "X = np.zeros((len(x),3))\n", + "X[:,0] = 1.0\n", + "X[:,1] = x\n", + "X[:,2] = x**2\n", + "# We split the data in test and training data\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n", + "# matrix inversion to find beta\n", + "beta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train\n", + "print(beta)\n", + "# and then make the prediction\n", + "ytilde = X_train @ beta\n", + "print(\"Training R2\")\n", + "print(R2(y_train,ytilde))\n", + "print(\"Training MSE\")\n", + "print(MSE(y_train,ytilde))\n", + "ypredict = X_test @ beta\n", + "print(\"Test R2\")\n", + "print(R2(y_test,ypredict))\n", + "print(\"Test MSE\")\n", + "print(MSE(y_test,ypredict))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively, you could write your own test-train splitting function as shown here." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], + "source": [ + "# equivalently in numpy\n", + "def train_test_split_numpy(inputs, labels, train_size, test_size):\n", + " n_inputs = len(inputs)\n", + " inputs_shuffled = inputs.copy()\n", + " labels_shuffled = labels.copy()\n", + "\n", + " np.random.shuffle(inputs_shuffled)\n", + " np.random.shuffle(labels_shuffled)\n", + "\n", + " train_end = int(n_inputs*train_size)\n", + " X_train, X_test = inputs_shuffled[:train_end], inputs_shuffled[train_end:]\n", + " Y_train, Y_test = labels_shuffled[:train_end], labels_shuffled[train_end:]\n", + "\n", + " return X_train, X_test, Y_train, Y_test" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But since **scikit-learn** has its own function for doing this and since\n", + "it interfaces easily with **tensorflow** and other libraries, we\n", + "normally recommend using the latter functionality.\n", + "\n", + "\n", + "\n", + "\n", "## Reducing the number of degrees of freedom, overarching view\n", "\n", "Many Machine Learning problems involve thousands or even millions of\n", @@ -3069,6 +3186,7 @@ "visualization.\n", "\n", "\n", + "\n", "Before we proceed however, we will discuss how to preprocess our\n", "data. Till now and in connection with our previous examples we have\n", "not met so many cases where we are too sensitive to the scaling of our\n", @@ -3076,6 +3194,15 @@ "to extreme values. Scaling the data renders our inputs much more\n", "suitable for the algorithms we want to employ.\n", "\n", + "For data sets gathered for real world applications, it is rather normal that\n", + "different features have very different units and\n", + "numerical scales. For example, a data set detailing health habits may include\n", + "features such as **age** in the range $0-80$, and **caloric intake** of order $2000$.\n", + "Many machine learning methods sensitive to the scales of the features and may perform poorly if they\n", + "are very different scales. Therefore, it is typical to scale\n", + "the features in a way to avoid such outlier values.\n", + "\n", + "\n", "**Scikit-Learn** has several functions which allow us to rescale the\n", "data, normally resulting in much better results in terms of various\n", "accuracy scores. The **StandardScaler** function in **Scikit-Learn**\n", @@ -3105,7 +3232,38 @@ "techniques.\n", "\n", "\n", - "### Simple preprocessing examples, Franke function and regression" + "Many features are often scaled using standardization to improve\n", + "performance. In **Scikit-Learn** this is given by the **StandardScaler**\n", + "function as discussed above. It is easy however to write your own.\n", + "Mathematically, this involves subtracting the mean and divide by the\n", + "standard deviation over the data set, for each feature:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "x_j^{(i)} \\rightarrow \\frac{x_j^{(i)} - \\overline{x}_j}{\\sigma(x_j)},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where $\\overline{x}_j$ and $\\sigma(x_j)$ are the mean and standard\n", + "deviation, respectively, of the feature $x_j$. This ensures that each\n", + "feature has zero mean and unit standard deviation. For data sets\n", + "where we do not have the standard deviation or don't wish to calculate\n", + "it, it is then common to simply set it to one.\n", + "\n", + "\n", + "\n", + "Let us consider the following vanilla example where we use both\n", + "**Scikit-Learn** and write our own function as well. We produce a\n", + "simple test design matrix with random numbers. Each column could then\n", + "represent a specific feature whose mean value is subracted." ] }, { @@ -3117,98 +3275,126 @@ }, "outputs": [], "source": [ - "# Common imports\n", - "import os\n", - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", "import sklearn.linear_model as skl\n", "from sklearn.metrics import mean_squared_error\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import MinMaxScaler, StandardScaler, Normalizer\n", - "\n", - "# Where to save the figures and data files\n", - "PROJECT_ROOT_DIR = \"Results\"\n", - "FIGURE_ID = \"Results/FigureFiles\"\n", - "DATA_ID = \"DataFiles/\"\n", - "\n", - "if not os.path.exists(PROJECT_ROOT_DIR):\n", - " os.mkdir(PROJECT_ROOT_DIR)\n", - "\n", - "if not os.path.exists(FIGURE_ID):\n", - " os.makedirs(FIGURE_ID)\n", - "\n", - "if not os.path.exists(DATA_ID):\n", - " os.makedirs(DATA_ID)\n", - "\n", - "def image_path(fig_id):\n", - " return os.path.join(FIGURE_ID, fig_id)\n", - "\n", - "def data_path(dat_id):\n", - " return os.path.join(DATA_ID, dat_id)\n", - "\n", - "def save_fig(fig_id):\n", - " plt.savefig(image_path(fig_id) + \".png\", format='png')\n", + "import numpy as np\n", + "import pandas as pd\n", + "from IPython.display import display\n", + "np.random.seed(100)\n", + "# setting up a 10 x 5 matrix\n", + "rows = 10\n", + "cols = 5\n", + "X = np.random.randn(rows,cols)\n", + "XPandas = pd.DataFrame(X)\n", + "display(XPandas)\n", + "print(XPandas.mean())\n", + "print(XPandas.std())\n", + "XPandas = (XPandas -XPandas.mean())\n", + "display(XPandas)\n", + "# This option does not include the standard deviation\n", + "scaler = StandardScaler(with_std=False)\n", + "scaler.fit(X)\n", + "Xscaled = scaler.transform(X)\n", + "display(XPandas-Xscaled)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Small exercise: perform the standard scaling by including the standard deviation and compare with what Scikit-Learn gives.\n", "\n", "\n", - "def FrankeFunction(x,y):\n", - "\tterm1 = 0.75*np.exp(-(0.25*(9*x-2)**2) - 0.25*((9*y-2)**2))\n", - "\tterm2 = 0.75*np.exp(-((9*x+1)**2)/49.0 - 0.1*(9*y+1))\n", - "\tterm3 = 0.5*np.exp(-(9*x-7)**2/4.0 - 0.25*((9*y-3)**2))\n", - "\tterm4 = -0.2*np.exp(-(9*x-4)**2 - (9*y-7)**2)\n", - "\treturn term1 + term2 + term3 + term4\n", + "\n", + "Another commonly used scaling method is min-max scaling. This is very\n", + "useful for when we want the features to lie in a certain interval. To\n", + "scale the feature $x_j$ to the interval $[a, b]$, we can apply the\n", + "transformation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "x_j^{(i)} \\rightarrow (b-a)\\frac{x_j^{(i)} - \\min(x_j)}{\\max(x_j) - \\min(x_j)} - a\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where $\\min(x_j)$ and $\\max(x_j)$ return the minimum and maximum value of $x_j$ over the data set, respectively.\n", "\n", "\n", - "def create_X(x, y, n ):\n", - "\tif len(x.shape) > 1:\n", - "\t\tx = np.ravel(x)\n", - "\t\ty = np.ravel(y)\n", - "\n", - "\tN = len(x)\n", - "\tl = int((n+1)*(n+2)/2)\t\t# Number of elements in beta\n", - "\tX = np.ones((N,l))\n", - "\n", - "\tfor i in range(1,n+1):\n", - "\t\tq = int((i)*(i+1)/2)\n", - "\t\tfor k in range(i+1):\n", - "\t\t\tX[:,q+k] = (x**(i-k))*(y**k)\n", - "\n", - "\treturn X\n", "\n", "\n", - "# Making meshgrid of datapoints and compute Franke's function\n", - "n = 5\n", - "N = 1000\n", - "x = np.sort(np.random.uniform(0, 1, N))\n", - "y = np.sort(np.random.uniform(0, 1, N))\n", - "z = FrankeFunction(x, y)\n", - "X = create_X(x, y, n=n) \n", - "# split in training and test data\n", - "X_train, X_test, y_train, y_test = train_test_split(X,z,test_size=0.2)\n", + "## Testing the Means Squared Error as function of Complexity\n", "\n", "\n", - "clf = skl.LinearRegression().fit(X_train, y_train)\n", + "Before we proceed with a more detailed analysis of the so-called\n", + "Bias-Variance tradeoff, we present here an example of the relation\n", + "between model complexity and the mean squared error for the triaining\n", + "data and the test data.\n", "\n", - "# The mean squared error and R2 score\n", - "print(\"MSE before scaling: {:.2f}\".format(mean_squared_error(clf.predict(X_test), y_test)))\n", - "print(\"R2 score before scaling {:.2f}\".format(clf.score(X_test,y_test)))\n", + "The results here tell us clearly that for the data not included in the\n", + "training, there is an optimal model as function of the complexity of\n", + "ourmodel (here in terms of the polynomial degree of the model).\n", "\n", + "The results here will vary as function of model complexity and the amount od data used for training. \n", + "\n", + "\n", + "Our data is defined by $x\\in [-3,3]$ with a total of for example $100$ data points." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from sklearn.linear_model import LinearRegression, Ridge, Lasso\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.pipeline import make_pipeline\n", + "\n", + "\n", + "np.random.seed(2018)\n", + "n = 100\n", + "maxdegree = 14\n", + "# Make data set.\n", + "x = np.linspace(-3, 3, n).reshape(-1, 1)\n", + "y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape)\n", + "TestError = np.zeros(maxdegree)\n", + "TrainError = np.zeros(maxdegree)\n", + "polydegree = np.zeros(maxdegree)\n", + "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)\n", "scaler = StandardScaler()\n", - "scaler.fit(X_train)\n", - "X_train_scaled = scaler.transform(X_train)\n", - "X_test_scaled = scaler.transform(X_test)\n", + "scaler.fit(x_train)\n", + "x_train_scaled = scaler.transform(x_train)\n", + "x_test_scaled = scaler.transform(x_test)\n", "\n", - "print(\"Feature min values before scaling:\\n {}\".format(X_train.min(axis=0)))\n", - "print(\"Feature max values before scaling:\\n {}\".format(X_train.max(axis=0)))\n", + "for degree in range(maxdegree):\n", + " model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False))\n", + " clf = model.fit(x_train_scaled,y_train)\n", + " y_fit = clf.predict(x_train_scaled)\n", + " y_pred = clf.predict(x_test_scaled) \n", + " polydegree[degree] = degree\n", + " TestError[degree] = np.mean( np.mean((y_test - y_pred)**2) )\n", + " TrainError[degree] = np.mean( np.mean((y_train - y_fit)**2) )\n", "\n", - "print(\"Feature min values after scaling:\\n {}\".format(X_train_scaled.min(axis=0)))\n", - "print(\"Feature max values after scaling:\\n {}\".format(X_train_scaled.max(axis=0)))\n", - "\n", - "clf = skl.LinearRegression().fit(X_train_scaled, y_train)\n", - "\n", - "\n", - "print(\"MSE after scaling: {:.2f}\".format(mean_squared_error(clf.predict(X_test_scaled), y_test)))\n", - "print(\"R2 score for scaled data: {:.2f}\".format(clf.score(X_test_scaled,y_test)))" + "plt.plot(polydegree, TestError, label='Test Error')\n", + "plt.plot(polydegree, TrainError, label='Train Error')\n", + "plt.legend()\n", + "plt.show()" ] }, { diff --git a/doc/LectureNotes/_build/html/_sources/chapter2.ipynb b/doc/LectureNotes/_build/html/_sources/chapter2.ipynb index 99ead382c..651eadf4a 100644 --- a/doc/LectureNotes/_build/html/_sources/chapter2.ipynb +++ b/doc/LectureNotes/_build/html/_sources/chapter2.ipynb @@ -543,6 +543,143 @@ "example\n", "\n", "\n", + "## Code for SVD and Inversion of Matrices\n", + "\n", + "How do we use the SVD to invert a matrix $\\boldsymbol{X}^\\boldsymbol{X}$ which is singular or near singular?\n", + "The simple answer is to use the linear algebra function for the pseudoinverse, that is" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], + "source": [ + "#Ainv = np.linlag.pinv(A)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us first look at a matrix which does not causes problems and write our own function where we just use the SVD." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "# SVD inversion\n", + "def SVDinv(A):\n", + " ''' Takes as input a numpy matrix A and returns inv(A) based on singular value decomposition (SVD).\n", + " SVD is numerically more stable than the inversion algorithms provided by\n", + " numpy and scipy.linalg at the cost of being slower.\n", + " '''\n", + " U, s, VT = np.linalg.svd(A)\n", + " print('test U')\n", + " print( (np.transpose(U) @ U - U @np.transpose(U)))\n", + " print('test VT')\n", + " print( (np.transpose(VT) @ VT - VT @np.transpose(VT)))\n", + "\n", + "\n", + " D = np.zeros((len(U),len(VT)))\n", + " D = np.diag(s)\n", + " UT = np.transpose(U); V = np.transpose(VT); invD = np.linalg.inv(D)\n", + " return np.matmul(V,np.matmul(invD,UT))\n", + "\n", + "\n", + "#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] ])\n", + "# Non-singular square matrix\n", + "X = np.array( [ [1,2,3],[2,4,5],[3,5,6]])\n", + "print(X)\n", + "A = np.transpose(X) @ X\n", + "# Brute force inversion\n", + "B = np.linalg.pinv(A) # here we could use np.linalg.inv(A), try it!\n", + "C = SVDinv(A)\n", + "print(np.abs(B-C))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Although our matrix to invert $\\boldsymbol{X}^T\\boldsymbol{X}$ is a square matrix, our matrix may be singular. \n", + "\n", + "The pseudoinverse is the generalization of the matrix inverse for square matrices to\n", + "rectangular matrices where the number of rows and columns are not equal.\n", + "\n", + "It is also called the the Moore-Penrose Inverse after two independent discoverers of the method or the Generalized Inverse.\n", + "It is used for the calculation of the inverse for singular or near singular matrices and for rectangular matrices.\n", + "\n", + "Using the SVD we can obtain the pseudoinverse of a matrix $\\boldsymbol{A}$ (labeled here as $\\boldsymbol{A}_{\\mathrm{PI}}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\boldsymbol{A}_{\\mathrm{PI}}= \\boldsymbol{V}\\boldsymbol{D}_{\\mathrm{PI}}\\boldsymbol{U}^T,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where $\\boldsymbol{D}_{\\mathrm{PI}}$ can be calculated by creating a diagonal matrix from $\\boldsymbol{Sigma}$ where we only keep the singular values (the non-zero values). The following code computes the pseudoinvers of the matrix based on the SVD." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "# SVD inversion\n", + "def SVDinv(A):\n", + " U, s, VT = np.linalg.svd(A)\n", + " # reciprocals of singular values of s\n", + " d = 1.0 / s\n", + " # create m x n D matrix\n", + " D = np.zeros(A.shape)\n", + " # populate D with n x n diagonal matrix\n", + " D[:A.shape[1], :A.shape[1]] = np.diag(d)\n", + " UT = np.transpose(U)\n", + " V = np.transpose(VT)\n", + " return np.matmul(V,np.matmul(D.T,UT))\n", + "\n", + "\n", + "A = np.array([ [0.3, 0.4], [0.5, 0.6], [0.7, 0.8],[0.9, 1.0]])\n", + "print(A)\n", + "# Brute force inversion of super-collinear matrix\n", + "B = np.linalg.pinv(A)\n", + "print(B)\n", + "# Compare our own algorithm with pinv\n", + "C = SVDinv(A)\n", + "print(np.abs(C-B))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see from these examples, our own decomposition based on the SVD agrees the pseudoinverse algorithm provided by **Numpy**.\n", + "\n", + "\n", "\n", "\n", "\n", @@ -1740,535 +1877,8 @@ "\n", "\n", "\n", - "## Ridge and LASSO Regression\n", "\n", - "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 \n", - "our optimization problem is" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "{\\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\\}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "or we can state it as" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in\n", - "{\\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,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "where we have used the definition of a norm-2 vector, that is" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\vert\\vert \\boldsymbol{x}\\vert\\vert_2 = \\sqrt{\\sum_i x_i^2}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By minimizing the above equation with respect to the parameters\n", - "$\\boldsymbol{\\beta}$ we could then obtain an analytical expression for the\n", - "parameters $\\boldsymbol{\\beta}$. We can add a regularization parameter $\\lambda$ by\n", - "defining a new cost function to be optimized, that is" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in\n", - "{\\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\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "which leads to the Ridge regression minimization problem where we\n", - "require that $\\vert\\vert \\boldsymbol{\\beta}\\vert\\vert_2^2\\le t$, where $t$ is\n", - "a finite number larger than zero. By defining" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "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,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "we have a new optimization equation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in\n", - "{\\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\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "which leads to Lasso regression. Lasso stands for least absolute shrinkage and selection operator. \n", - "\n", - "Here we have defined the norm-1 as" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\vert\\vert \\boldsymbol{x}\\vert\\vert_1 = \\sum_i \\vert x_i\\vert.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using the matrix-vector expression for Ridge regression and dropping the parameter $1/n$ in front of the standard means squared error equation, we have" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "C(\\boldsymbol{X},\\boldsymbol{\\beta})=\\left\\{(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})^T(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\right\\}+\\lambda\\boldsymbol{\\beta}^T\\boldsymbol{\\beta},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and \n", - "taking the derivatives with respect to $\\boldsymbol{\\beta}$ we obtain then\n", - "a slightly modified matrix inversion problem which for finite values\n", - "of $\\lambda$ does not suffer from singularity problems. We obtain\n", - "the optimal parameters" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{\\boldsymbol{\\beta}}_{\\mathrm{Ridge}} = \\left(\\boldsymbol{X}^T\\boldsymbol{X}+\\lambda\\boldsymbol{I}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "with $\\boldsymbol{I}$ being a $p\\times p$ identity matrix with the constraint that" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\sum_{i=0}^{p-1} \\beta_i^2 \\leq t,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "with $t$ a finite positive number. \n", - "\n", - "When we compare this with the ordinary least squares result we have" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{\\boldsymbol{\\beta}}_{\\mathrm{OLS}} = \\left(\\boldsymbol{X}^T\\boldsymbol{X}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "which can lead to singular matrices. However, with the SVD, we can always compute the inverse of the matrix $\\boldsymbol{X}^T\\boldsymbol{X}$.\n", - "\n", - "\n", - "We see that Ridge regression is nothing but the standard OLS with a\n", - "modified diagonal term added to $\\boldsymbol{X}^T\\boldsymbol{X}$. The consequences, in\n", - "particular for our discussion of the bias-variance tradeoff are rather\n", - "interesting. We will see that for specific values of $\\lambda$, we may\n", - "even reduce the variance of the optimal parameters $\\boldsymbol{\\beta}$. These topics and other related ones, will be discussed after the more linear algebra oriented analysis here.\n", - "\n", - "Using our insights about the SVD of the design matrix $\\boldsymbol{X}$ \n", - "We have already analyzed the OLS solutions in terms of the eigenvectors (the columns) of the right singular value matrix $\\boldsymbol{U}$ as" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\tilde{\\boldsymbol{y}}_{\\mathrm{OLS}}=\\boldsymbol{X}\\boldsymbol{\\beta} =\\boldsymbol{U}\\boldsymbol{U}^T\\boldsymbol{y}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For Ridge regression this becomes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\tilde{\\boldsymbol{y}}_{\\mathrm{Ridge}}=\\boldsymbol{X}\\boldsymbol{\\beta}_{\\mathrm{Ridge}} = \\boldsymbol{U\\Sigma V^T}\\left(\\boldsymbol{V}\\boldsymbol{\\Sigma}^2\\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},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "with the vectors $\\boldsymbol{u}_j$ being the columns of $\\boldsymbol{U}$ from the SVD of the matrix $\\boldsymbol{X}$. \n", - "\n", - "\n", - "Since $\\lambda \\geq 0$, it means that compared to OLS, we have" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\frac{\\sigma_j^2}{\\sigma_j^2+\\lambda} \\leq 1.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Ridge regression finds the coordinates of $\\boldsymbol{y}$ with respect to the\n", - "orthonormal basis $\\boldsymbol{U}$, it then shrinks the coordinates by\n", - "$\\frac{\\sigma_j^2}{\\sigma_j^2+\\lambda}$. Recall that the SVD has\n", - "eigenvalues ordered in a descending way, that is $\\sigma_i \\geq\n", - "\\sigma_{i+1}$.\n", - "\n", - "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. More about this when we have covered the material on a statistical interpretation of various linear regression methods.\n", - "\n", - "\n", - "\n", - "For the sake of simplicity, let us assume that the design matrix is orthonormal, that is" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\boldsymbol{X}^T\\boldsymbol{X}=(\\boldsymbol{X}^T\\boldsymbol{X})^{-1} =\\boldsymbol{I}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this case the standard OLS results in" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\boldsymbol{\\beta}^{\\mathrm{OLS}} = \\boldsymbol{X}^T\\boldsymbol{y}=\\sum_{i=0}^{p-1}\\boldsymbol{u}_j\\boldsymbol{u}_j^T\\boldsymbol{y},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\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}},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "that is the Ridge estimator scales the OLS estimator by the inverse of a factor $1+\\lambda$, and\n", - "the Ridge estimator converges to zero when the hyperparameter goes to\n", - "infinity.\n", - "\n", - "We will come back to more interpreations after we have gone through some of the statistical analysis part. \n", - "\n", - "For more discussions of Ridge and Lasso regression, [Wessel van Wieringen's](https://arxiv.org/abs/1509.09169) article is highly recommended.\n", - "Similarly, [Mehta et al's article](https://arxiv.org/abs/1803.08823) is also recommended.\n", - "\n", - "\n", - "Using the matrix-vector expression for Lasso regression and dropping the parameter $1/n$ in front of the standard means squared error equation, we have the following **cost** function" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "C(\\boldsymbol{X},\\boldsymbol{\\beta})=\\left\\{(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})^T(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\right\\}+\\lambda\\vert\\vert\\boldsymbol{\\beta}\\vert\\vert_1,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Taking the derivative with respect to $\\boldsymbol{\\beta}$ and recalling that the derivative of the absolute value is (we drop the boldfaced vector symbol for simplicty)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\frac{d \\vert \\beta\\vert}{d \\boldsymbol{\\beta}}=\\mathrm{sgn}(\\boldsymbol{\\beta})=\\left\\{\\begin{array}{cc} 1 & \\beta > 0 \\\\ 0 & \\beta =0\\\\-1 & \\beta < 0, \\end{array}\\right.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "we have that the derivative of the cost function is" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\frac{\\partial C(\\boldsymbol{X},\\boldsymbol{\\beta})}{\\partial \\boldsymbol{\\beta}}=-2\\boldsymbol{X}^T(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})+\\lambda sgn(\\boldsymbol{\\beta})=0,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and reordering we have" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\boldsymbol{X}^T\\boldsymbol{X}\\boldsymbol{\\beta})+\\lambda sgn(\\boldsymbol{\\beta})=2\\boldsymbol{X}^T(\\boldsymbol{y}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This equation does not lead to a nice analytical equation as in either Ridge regression or ordinary least squares. This equation can however be solved by using standard convex optimization algorithms using for example the Python package [CVXOPT](https://cvxopt.org/). We will discuss this later. \n", - "\n", - "## Code for SVD and Inversion of Matrices\n", - "\n", - "How do we use the SVD to invert a matrix $\\boldsymbol{X}^\\boldsymbol{X}$ which is singular or near singular?\n", - "The simple answer is to use the linear algebra function for the pseudoinverse, that is" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, - "outputs": [], - "source": [ - "#Ainv = np.linlag.pinv(A)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us first look at a matrix which does not causes problems and write our own function where we just use the SVD." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "# SVD inversion\n", - "def SVDinv(A):\n", - " ''' Takes as input a numpy matrix A and returns inv(A) based on singular value decomposition (SVD).\n", - " SVD is numerically more stable than the inversion algorithms provided by\n", - " numpy and scipy.linalg at the cost of being slower.\n", - " '''\n", - " U, s, VT = np.linalg.svd(A)\n", - " print('test U')\n", - " print( (np.transpose(U) @ U - U @np.transpose(U)))\n", - " print('test VT')\n", - " print( (np.transpose(VT) @ VT - VT @np.transpose(VT)))\n", - "\n", - "\n", - " D = np.zeros((len(U),len(VT)))\n", - " D = np.diag(s)\n", - " UT = np.transpose(U); V = np.transpose(VT); invD = np.linalg.inv(D)\n", - " return np.matmul(V,np.matmul(invD,UT))\n", - "\n", - "\n", - "#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] ])\n", - "# Non-singular square matrix\n", - "X = np.array( [ [1,2,3],[2,4,5],[3,5,6]])\n", - "print(X)\n", - "A = np.transpose(X) @ X\n", - "# Brute force inversion\n", - "B = np.linalg.inv(A) # here we could use np.linalg.pinv(A)\n", - "C = SVDinv(A)\n", - "print(np.abs(B-C))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Although our matrix to invert $\\boldsymbol{X}^T\\boldsymbol{X}$ is a square matrix, our matrix may be singular. \n", - "\n", - "The pseudoinverse is the generalization of the matrix inverse for square matrices to\n", - "rectangular matrices where the number of rows and columns are not equal.\n", - "\n", - "It is also called the the Moore-Penrose Inverse after two independent discoverers of the method or the Generalized Inverse.\n", - "It is used for the calculation of the inverse for singular or near singular matrices and for rectangular matrices.\n", - "\n", - "Using the SVD we can obtain the pseudoinverse of a matrix $\\boldsymbol{A}$ (labeled here as $\\boldsymbol{A}_{\\mathrm{PI}}$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\boldsymbol{A}_{\\mathrm{PI}}= \\boldsymbol{V}\\boldsymbol{D}_{\\mathrm{PI}}\\boldsymbol{U}^T,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "where $\\boldsymbol{D}_{\\mathrm{PI}}$ can be calculated by creating a diagonal matrix from $\\boldsymbol{Sigma}$ where we only keep the singular values (the non-zero values). The following code computes the pseudoinvers of the matrix based on the SVD." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "# SVD inversion\n", - "def SVDinv(A):\n", - " U, s, VT = np.linalg.svd(A)\n", - " # reciprocals of singular values of s\n", - " d = 1.0 / s\n", - " # create m x n D matrix\n", - " D = np.zeros(A.shape)\n", - " # populate D with n x n diagonal matrix\n", - " D[:A.shape[1], :A.shape[1]] = np.diag(d)\n", - " UT = np.transpose(U)\n", - " V = np.transpose(VT)\n", - " return np.matmul(V,np.matmul(D.T,UT))\n", - "\n", - "\n", - "A = np.array([ [0.3, 0.4], [0.5, 0.6], [0.7, 0.8],[0.9, 1.0]])\n", - "print(A)\n", - "# Brute force inversion of super-collinear matrix\n", - "B = np.linalg.pinv(A)\n", - "print(B)\n", - "# Compare our own algorithm with pinv\n", - "C = SVDinv(A)\n", - "print(np.abs(C-B))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As you can see from this example, our own decomposition based on the SVD agrees the pseudoinverse algorithm provided by **Numpy**.\n", - "\n", - "\n", - "\n", - "## Deriving the Ridge Regression Equations\n", + "## Ridge and Lasso Regression\n", "\n", "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 \n", "our optimization problem is" @@ -3089,7 +2699,8 @@ "\n", "Here we set up the OLS, Ridge and Lasso functionality in order to study the above example. Note that here we have opted for a set of values of $\\lambda$, meaning that we need to perform a search in order to find the optimal values.\n", "\n", - "First we study and compare the OLS and Ridge results. The next code compares all three methods." + "First we study and compare the OLS and Ridge results. The next code compares all three methods.\n", + "We select values of the hyperparameter $\\lambda\\in [10^{-4},10^4]$ and compute the predicted values for ordinary least squares and Ridge regression." ] }, { @@ -3158,7 +2769,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We see here that we reach a plateau. What is actually happening?" + "We see here that we reach a plateau for the Ridge results. Writing out the coefficients $\\boldsymbol{\\beta}$, we that they are getting smaller and smaller and our error stabilizes since the predicted values of $\\tilde{\\boldsymbol{y}}$ approach zero.\n", + "\n", + "This happens also for Lasso regression, as seen from the next code\n", + "output. The difference is that Lasso shrinks the values of $\\beta$ to\n", + "zero at a much earlier stage and the results flatten out. We see that\n", + "Lasso gives also an excellent fit for small values of $\\lambda$ and\n", + "shows rthe best performance of the three regression methods." ] }, { @@ -3232,7 +2849,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Another Example, now with a polynomial fit." + "We bring then back our exponential function example and study all\n", + "three regression methods. Depending on the level of noise, we note\n", + "that for small values of the hyperparameter $\\lambda$ all three\n", + "methods produce the same mean squared error. Again, Lasso shrinks the\n", + "parameter values to zero much earlier than Ridge regression and the\n", + "Lasso results flatten out much earlier since all $\\beta_j=0$ (check\n", + "this by printing the values). This case is an example of where OLS\n", + "performs best. Lasso and Ridge reproduce the OLS results for a limited\n", + "set of $\\lambda$ values." ] }, { @@ -3324,6 +2949,311 @@ "plt.show()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Both these example send a clear message. The addition of a\n", + "shrinkage/regularization term implies that we need to perform a search\n", + "for the optimal values of $\\lambda$. We will see this throughout these\n", + "series of lectures.\n", + "\n", + "\n", + "As a small addendum, we note that you can also solve this problem using the convex optimization package [CVXOPT](https://cvxopt.org/examples/mlbook/l1regls.html). This requires, in addition to having installed **CVXOPT**, you need to download the file *l1regl.py*.\n", + "The following code example solves the simpler problem we discussed above, where we have added the latter python file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], + "source": [ + "from cvxopt import matrix, spdiag, mul, div, sqrt, normal, setseed\n", + "from cvxopt import blas, lapack, solvers, sparse, spmatrix\n", + "import math\n", + "\n", + "try:\n", + " import mosek\n", + " import sys\n", + " __MOSEK = True\n", + "except: __MOSEK = False\n", + "\n", + "if __MOSEK:\n", + "\n", + " def l1regls_mosek(A, b):\n", + " \"\"\"\n", + "\n", + " Returns the solution of l1-norm regularized least-squares problem\n", + "\n", + " minimize || A*x - b ||_2^2 + e'*u\n", + "\n", + " subject to -u <= x <= u\n", + "\n", + " \"\"\"\n", + "\n", + " m, n = A.size\n", + "\n", + " env = mosek.Env()\n", + " task = env.Task(0,0)\n", + " task.set_Stream(mosek.streamtype.log, lambda x: sys.stdout.write(x))\n", + "\n", + " task.appendvars( 2*n) # number of variables\n", + " task.appendcons( 2*n) # number of constraints\n", + "\n", + " # input quadratic objective\n", + " Q = matrix(0.0, (n,n)) \n", + " blas.syrk(A, Q, alpha = 2.0, trans='T')\n", + "\n", + " I = []\n", + " for i in range(n):\n", + " I.extend(range(i,n))\n", + "\n", + " J = []\n", + " for i in range(n):\n", + " J.extend((n-i)*[i])\n", + "\n", + " task.putqobj(I, J, list(Q[matrix(I) + matrix(J)*n]))\n", + " task.putclist(range(2*n), list(-2*A.T*b) + n*[1.0]) # setup linear objective\n", + "\n", + " # input constraint matrix row by row\n", + " for i in range(n):\n", + " task.putarow( i, [i, n+i], [1.0, -1.0])\n", + " task.putarow( n+i, [i, n+i], [1.0, 1.0])\n", + "\n", + " # setup bounds on constraints\n", + " task.putboundslice(mosek.accmode.con,\n", + " 0, n, n*[mosek.boundkey.up], n*[0.0], n*[0.0])\n", + " task.putboundslice(mosek.accmode.con,\n", + " n, 2*n, n*[mosek.boundkey.lo], n*[0.0], n*[0.0])\n", + "\n", + " # setup variable bounds\n", + " task.putboundslice(mosek.accmode.var,\n", + " 0, 2*n, 2*n*[mosek.boundkey.fr], 2*n*[0.0], 2*n*[0.0])\n", + "\n", + " # optimize the task\n", + " task.putobjsense(mosek.objsense.minimize)\n", + " task.optimize()\n", + " task.solutionsummary(mosek.streamtype.log)\n", + " x = n*[0.0]\n", + " task.getsolutionslice(mosek.soltype.itr, mosek.solitem.xx, 0, n, x)\n", + "\n", + " return matrix(x)\n", + "\n", + " def l1regls_mosek2(A, b):\n", + " \"\"\"\n", + "\n", + " Returns the solution of l1-norm regularized least-squares problem\n", + "\n", + " minimize w'*w + e'*u\n", + "\n", + " subject to -u <= x <= u\n", + "\n", + " A*x - w = b\n", + "\n", + " \"\"\"\n", + "\n", + " m, n = A.size\n", + "\n", + " env = mosek.Env()\n", + " task = env.Task(0,0)\n", + " task.set_Stream(mosek.streamtype.log, lambda x: sys.stdout.write(x))\n", + "\n", + " task.appendvars(2*n + m) # number of variables\n", + " task.appendcons(2*n + m) # number of constraints\n", + "\n", + " # input quadratic objective\n", + " task.putqobj(range(2*n,2*n+m), range(2*n,2*n+m), m*[2.0])\n", + "\n", + " task.putclist(range(2*n+m), n*[0.0] + n*[1.0] + m*[0.0]) # setup linear objective\n", + "\n", + " # input constraint matrix row by row\n", + " for i in range(n):\n", + " task.putarow( i, [i, n+i], [1.0, -1.0])\n", + " task.putarow( n+i, [i, n+i], [1.0, 1.0])\n", + "\n", + " for i in range(m):\n", + " task.putarow( 2*n+i, range(n) + [2*n+i], list(A[i,:]) + [-1.0])\n", + "\n", + " # setup bounds on constraints\n", + " task.putboundslice(mosek.accmode.con,\n", + " 0, n, n*[mosek.boundkey.up], n*[0.0], n*[0.0])\n", + " task.putboundslice(mosek.accmode.con,\n", + " n, 2*n, n*[mosek.boundkey.lo], n*[0.0], n*[0.0])\n", + " task.putboundslice(mosek.accmode.con,\n", + " 2*n, 2*n+m, m*[mosek.boundkey.fx], list(b), list(b))\n", + "\n", + " # setup variable bounds\n", + " task.putboundslice(mosek.accmode.var, 0, 2*n+m, (2*n+m)*[mosek.boundkey.fr], \n", + " (2*n+m)*[0.0], (2*n+m)*[0.0])\n", + "\n", + " # optimize the task\n", + " task.putobjsense(mosek.objsense.minimize)\n", + " task.optimize()\n", + " task.solutionsummary(mosek.streamtype.log)\n", + " x = n*[0.0]\n", + " task.getsolutionslice(mosek.soltype.itr, mosek.solitem.xx, 0, n, x)\n", + "\n", + " return matrix(x)\n", + "\n", + "def l1regls(A, b):\n", + " \"\"\"\n", + " \n", + " Returns the solution of l1-norm regularized least-squares problem\n", + " \n", + " minimize || A*x - b ||_2^2 + || x ||_1.\n", + "\n", + " \"\"\"\n", + "\n", + " m, n = A.size\n", + " q = matrix(1.0, (2*n,1))\n", + " q[:n] = -2.0 * A.T * b\n", + "\n", + " def P(u, v, alpha = 1.0, beta = 0.0 ):\n", + " \"\"\"\n", + " v := alpha * 2.0 * [ A'*A, 0; 0, 0 ] * u + beta * v \n", + " \"\"\"\n", + " v *= beta\n", + " v[:n] += alpha * 2.0 * A.T * (A * u[:n])\n", + "\n", + "\n", + " def G(u, v, alpha=1.0, beta=0.0, trans='N'):\n", + " \"\"\"\n", + " v := alpha*[I, -I; -I, -I] * u + beta * v (trans = 'N' or 'T')\n", + " \"\"\"\n", + "\n", + " v *= beta\n", + " v[:n] += alpha*(u[:n] - u[n:])\n", + " v[n:] += alpha*(-u[:n] - u[n:])\n", + "\n", + " h = matrix(0.0, (2*n,1))\n", + "\n", + "\n", + " # Customized solver for the KKT system \n", + " #\n", + " # [ 2.0*A'*A 0 I -I ] [x[:n] ] [bx[:n] ]\n", + " # [ 0 0 -I -I ] [x[n:] ] = [bx[n:] ].\n", + " # [ I -I -D1^-1 0 ] [zl[:n]] [bzl[:n]]\n", + " # [ -I -I 0 -D2^-1 ] [zl[n:]] [bzl[n:]]\n", + " #\n", + " # where D1 = W['di'][:n]**2, D2 = W['di'][:n]**2.\n", + " # \n", + " # We first eliminate zl and x[n:]:\n", + " #\n", + " # ( 2*A'*A + 4*D1*D2*(D1+D2)^-1 ) * x[:n] = \n", + " # bx[:n] - (D2-D1)*(D1+D2)^-1 * bx[n:] + \n", + " # D1 * ( I + (D2-D1)*(D1+D2)^-1 ) * bzl[:n] - \n", + " # D2 * ( I - (D2-D1)*(D1+D2)^-1 ) * bzl[n:] \n", + " #\n", + " # x[n:] = (D1+D2)^-1 * ( bx[n:] - D1*bzl[:n] - D2*bzl[n:] ) \n", + " # - (D2-D1)*(D1+D2)^-1 * x[:n] \n", + " #\n", + " # zl[:n] = D1 * ( x[:n] - x[n:] - bzl[:n] )\n", + " # zl[n:] = D2 * (-x[:n] - x[n:] - bzl[n:] ).\n", + " #\n", + " # The first equation has the form\n", + " #\n", + " # (A'*A + D)*x[:n] = rhs\n", + " #\n", + " # and is equivalent to\n", + " #\n", + " # [ D A' ] [ x:n] ] = [ rhs ]\n", + " # [ A -I ] [ v ] [ 0 ].\n", + " #\n", + " # It can be solved as \n", + " #\n", + " # ( A*D^-1*A' + I ) * v = A * D^-1 * rhs\n", + " # x[:n] = D^-1 * ( rhs - A'*v ).\n", + "\n", + " S = matrix(0.0, (m,m))\n", + " Asc = matrix(0.0, (m,n))\n", + " v = matrix(0.0, (m,1))\n", + "\n", + " def Fkkt(W):\n", + "\n", + " # Factor \n", + " #\n", + " # S = A*D^-1*A' + I \n", + " #\n", + " # where D = 2*D1*D2*(D1+D2)^-1, D1 = d[:n]**-2, D2 = d[n:]**-2.\n", + "\n", + " d1, d2 = W['di'][:n]**2, W['di'][n:]**2\n", + "\n", + " # ds is square root of diagonal of D\n", + " ds = math.sqrt(2.0) * div( mul( W['di'][:n], W['di'][n:]), \n", + " sqrt(d1+d2) )\n", + " d3 = div(d2 - d1, d1 + d2)\n", + " \n", + " # Asc = A*diag(d)^-1/2\n", + " Asc = A * spdiag(ds**-1)\n", + "\n", + " # S = I + A * D^-1 * A'\n", + " blas.syrk(Asc, S)\n", + " S[::m+1] += 1.0 \n", + " lapack.potrf(S)\n", + "\n", + " def g(x, y, z):\n", + "\n", + " x[:n] = 0.5 * ( x[:n] - mul(d3, x[n:]) + \n", + " mul(d1, z[:n] + mul(d3, z[:n])) - mul(d2, z[n:] - \n", + " mul(d3, z[n:])) )\n", + " x[:n] = div( x[:n], ds) \n", + "\n", + " # Solve\n", + " #\n", + " # S * v = 0.5 * A * D^-1 * ( bx[:n] - \n", + " # (D2-D1)*(D1+D2)^-1 * bx[n:] + \n", + " # D1 * ( I + (D2-D1)*(D1+D2)^-1 ) * bzl[:n] - \n", + " # D2 * ( I - (D2-D1)*(D1+D2)^-1 ) * bzl[n:] )\n", + " \n", + " blas.gemv(Asc, x, v)\n", + " lapack.potrs(S, v)\n", + " \n", + " # x[:n] = D^-1 * ( rhs - A'*v ).\n", + " blas.gemv(Asc, v, x, alpha=-1.0, beta=1.0, trans='T')\n", + " x[:n] = div(x[:n], ds)\n", + "\n", + " # x[n:] = (D1+D2)^-1 * ( bx[n:] - D1*bzl[:n] - D2*bzl[n:] ) \n", + " # - (D2-D1)*(D1+D2)^-1 * x[:n] \n", + " x[n:] = div( x[n:] - mul(d1, z[:n]) - mul(d2, z[n:]), d1+d2 )\\\n", + " - mul( d3, x[:n] )\n", + " \n", + " # zl[:n] = D1^1/2 * ( x[:n] - x[n:] - bzl[:n] )\n", + " # zl[n:] = D2^1/2 * ( -x[:n] - x[n:] - bzl[n:] ).\n", + " z[:n] = mul( W['di'][:n], x[:n] - x[n:] - z[:n] ) \n", + " z[n:] = mul( W['di'][n:], -x[:n] - x[n:] - z[n:] ) \n", + "\n", + " return g\n", + "\n", + " return solvers.coneqp(P, q, G, h, kktsolver = Fkkt)['x'][:n]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we call the above functions and solve the problem, as done here" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], + "source": [ + "from cvxopt import matrix, normal\n", + "\n", + "X = matrix( [ [ 2, 0, 1], [0, 1, 3]])\n", + "y = matrix( [4, 2, 3])\n", + "x = l1regls(X,y)" + ] + }, { "cell_type": "markdown", "metadata": {}, diff --git a/doc/LectureNotes/_build/html/chapter1.html b/doc/LectureNotes/_build/html/chapter1.html index 244b648c0..3e61ffcbd 100644 --- a/doc/LectureNotes/_build/html/chapter1.html +++ b/doc/LectureNotes/_build/html/chapter1.html @@ -54,7 +54,7 @@ - + @@ -144,12 +144,12 @@
  • - 4. Resampling Methods + 4. Ridge and Lasso Regression
  • - 5. Ridge and Lasso Regression + 5. Resampling Methods
  • @@ -358,35 +358,38 @@
  • - - 3.8. Reducing the number of degrees of freedom, overarching view + + 3.8. Splitting our Data in Training and Test data + +
  • +
  • + + 3.9. Reducing the number of degrees of freedom, overarching view + +
  • +
  • + + 3.10. Testing the Means Squared Error as function of Complexity -
  • - 3.9. Exercises + 3.11. Exercises @@ -404,10 +407,9 @@

    3. Linear Regression¶

    -

    Video of Lecture

    3.1. Introduction¶

    -

    Our emphasis throughout this series of lectures (small change)
    +

    Our emphasis throughout this series of lectures
    is on understanding the mathematical aspects of different algorithms used in the fields of data analysis and machine learning.

    However, where possible we will emphasize the @@ -585,7 +587,9 @@ may first try the simplest class of models, namely linear models, followed obvio

    3.3. Simple linear regression model using scikit-learn¶

    -

    We start with perhaps our simplest possible example, using Scikit-Learn to perform linear regression analysis on a data set produced by us.

    +

    We start with perhaps our simplest possible example, using +Scikit-Learn to perform linear regression analysis on a data set +produced by us.

    What follows is a simple Python code where we have defined a function \(y\) in terms of the variable \(x\). Both are defined as vectors with \(100\) entries. The numbers in the vector \(\boldsymbol{x}\) are given @@ -717,7 +721,8 @@ to be dominated by outliers.

    import numpy as np
     import matplotlib.pyplot as plt
     from sklearn.linear_model import LinearRegression
    -
    +# Number of data points
    +n = 100
     x = np.random.rand(100,1)
     y = 5*x+0.01*np.random.randn(100,1)
     linreg = LinearRegression()
    @@ -740,7 +745,8 @@ to be dominated by outliers.

    Depending on the parameter in front of the normal distribution, we may have a small or larger relative error. Try to play around with different training data sets and study (graphically) the value of the -relative error.

    +relative error. Note also that Scikit-Learn requires a matrix as input for the input values \(x\) and \(y\). In the above code we have +solved this by declaring \(x\) and \(y\) as arrays of dimension \(n\times 1\).

    As mentioned above, Scikit-Learn has an impressive functionality. We can for example extract the values of \(\alpha\) and \(\beta\) and their error estimates, or the variance and standard deviation and many @@ -781,13 +787,13 @@ example of the functionality of Scikit-Learn.

    The intercept alpha: 
    - [1.99723611]
    + [1.84860939]
     Coefficient beta : 
    - [[5.1007125]]
    -Mean squared error: 0.22
    + [[5.2571699]]
    +Mean squared error: 0.25
     Variance score: 0.90
     Mean squared log error: 0.01
    -Mean absolute error: 0.36
    +Mean absolute error: 0.40
     
    _images/chapter1_13_1.png @@ -844,8 +850,7 @@ ways of dealing with outliers.

    The Huber cost function is defined as

    \[\begin{split} -H_{\delta}(\boldsymbol{a})=\left\{\begin{array}{cc}\frac{1}{2} \boldsymbol{a}^{2}& \text{for }|\boldsymbol{a}|\leq \delta\\ \delta (|\b\ -m{a}|-\frac{1}{2}\delta ),&\text{otherwise}.\end{array}\right. +H_{\delta}(\boldsymbol{a})=\left\{\begin{array}{cc}\frac{1}{2} \boldsymbol{a}^{2}& \text{for }|\boldsymbol{a}|\leq \delta\\ \delta (|\boldsymbol{a}|-\frac{1}{2}\delta ),&\text{otherwise}.\end{array}\right. \end{split}\]

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

    We will discuss in more @@ -888,7 +893,7 @@ a linear \(x\)-dependence we s

    _images/chapter1_27_0.png -
    0.005000000000000007
    +
    0.0050000000000000044
     
    @@ -1126,6 +1131,7 @@ It has dimensionality \(p\times n\)
    +

    Note well that we have made life simple here. We perform a fit in terms of the number of nucleons only. A more sophisticated fit can be done by including an explicit dependence on the number of protons and neutrons in the asymmetry and Coulomb terms.

    With scikitlearn we are now ready to use linear regression and fit our data.

    @@ -1145,7 +1151,6 @@ Now we can print measures of how our fit is doing, the coefficients from the fit 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_) Masses['Eapprox'] = fity # Generate a plot comparing the experimental with the fitted values values. @@ -1166,8 +1171,6 @@ Now we can print measures of how our fit is doing, the coefficients from the fit
    Mean squared error: 0.04
     Variance score: 0.95
     Mean absolute error: 0.05
    -[ 0.00000000e+00  7.06492086e-03 -1.73091052e-01 -1.66020213e+01
    -  1.17385778e+00] 15.212327334149492
     
    _images/chapter1_57_1.png @@ -1225,7 +1228,7 @@ A 270 3344 160 110 270 Ds 7.253775 7.253775 [267 rows x 6 columns] -0.009883615646716182 +0.009883615646716186
    @@ -1273,8 +1276,6 @@ functionality.

    warnings.warn( /Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet. warnings.warn( -/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet. - warnings.warn(
    /Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.
    @@ -1339,7 +1340,9 @@ functionality.

    /Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.
       warnings.warn(
    -/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.
    +
    +
    +
    /Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.
       warnings.warn(
     /Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.
       warnings.warn(
    @@ -1357,7 +1360,7 @@ functionality.

    warnings.warn(
    -_images/chapter1_61_10.png +_images/chapter1_61_11.png
    @@ -2332,13 +2335,13 @@ but now splitting the data into a training set and a test set.

    Training R2
    -0.9999878260589065
    +0.9999869956119286
     Training MSE
    -5.415634483874318
    +5.745136489050356
     Test R2
    -0.999974281880048
    +0.9999787681537219
     Test MSE
    -11.653095390463358
    +9.712199063818309
     
    @@ -2600,8 +2603,107 @@ R2 score is 0.6628996975186952 +
    +

    3.8. 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.

    +

    Let us study some examples. The first code here takes a simple +one-dimensional second-order polynomial and we fit it to a +second-order polynomial. Depending on the strength of the added noise, +the various measures like the \(R2\) score or the mean-squared error, +the fit becomes better or worse.

    +
    +
    +
    import os
    +import numpy as np
    +import pandas as pd
    +import matplotlib.pyplot as plt
    +from sklearn.model_selection import train_test_split
    +
    +
    +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
    +
    +x = np.random.rand(100)
    +y = 2.0+5*x*x+0.1*np.random.randn(100)
    +
    +
    +#  The design matrix now as function of a given polynomial
    +X = np.zeros((len(x),3))
    +X[:,0] = 1.0
    +X[:,1] = x
    +X[:,2] = x**2
    +# We split the data in test and training data
    +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    +# matrix inversion to find beta
    +beta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train
    +print(beta)
    +# 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))
    +
    +
    +
    +
    +
    [ 2.05802766 -0.30626706  5.27262964]
    +Training R2
    +0.9967292151090247
    +Training MSE
    +0.007931713723267314
    +Test R2
    +0.9966744029509663
    +Test MSE
    +0.006968283076248407
    +
    +
    +
    +
    +

    Alternatively, you could write your own test-train splitting function as shown here.

    +
    +
    +
    # equivalently in numpy
    +def train_test_split_numpy(inputs, labels, train_size, test_size):
    +    n_inputs = len(inputs)
    +    inputs_shuffled = inputs.copy()
    +    labels_shuffled = labels.copy()
    +
    +    np.random.shuffle(inputs_shuffled)
    +    np.random.shuffle(labels_shuffled)
    +
    +    train_end = int(n_inputs*train_size)
    +    X_train, X_test = inputs_shuffled[:train_end], inputs_shuffled[train_end:]
    +    Y_train, Y_test = labels_shuffled[:train_end], labels_shuffled[train_end:]
    +
    +    return X_train, X_test, Y_train, Y_test
    +
    +
    +
    +
    +

    But since scikit-learn has its own function for doing this and since +it interfaces easily with tensorflow and other libraries, we +normally recommend using the latter functionality.

    +
    -

    3.8. Reducing the number of degrees of freedom, overarching view¶

    +

    3.9. Reducing the number of degrees of freedom, overarching view¶

    Many Machine Learning problems involve thousands or even millions of features for each training instance. Not only does this make training extremely slow, it can also make it much harder to find a good @@ -2624,6 +2726,13 @@ not met so many cases where we are too sensitive to the scaling of our data. Normally the data may need a rescaling and/or may be sensitive to extreme values. Scaling the data renders our inputs much more suitable for the algorithms we want to employ.

    +

    For data sets gathered for real world applications, it is rather normal that +different features have very different units and +numerical scales. For example, a data set detailing health habits may include +features such as age in the range \(0-80\), and caloric intake of order \(2000\). +Many machine learning methods sensitive to the scales of the features and may perform poorly if they +are very different scales. Therefore, it is typical to scale +the features in a way to avoid such outlier values.

    Scikit-Learn has several functions which allow us to rescale the data, normally resulting in much better results in terms of various accuracy scores. The StandardScaler function in Scikit-Learn @@ -2648,142 +2757,465 @@ RobustScaler ignore data points that are very different from the rest (like measurement errors). These odd data points are also called outliers, and might often lead to trouble for other scaling techniques.

    -
    -

    3.8.1. Simple preprocessing examples, Franke function and regression¶

    +

    Many features are often scaled using standardization to improve +performance. In Scikit-Learn this is given by the StandardScaler +function as discussed above. It is easy however to write your own. +Mathematically, this involves subtracting the mean and divide by the +standard deviation over the data set, for each feature:

    +
    +\[ +x_j^{(i)} \rightarrow \frac{x_j^{(i)} - \overline{x}_j}{\sigma(x_j)}, +\]
    +

    where \(\overline{x}_j\) and \(\sigma(x_j)\) are the mean and standard +deviation, respectively, of the feature \(x_j\). This ensures that each +feature has zero mean and unit standard deviation. For data sets +where we do not have the standard deviation or don’t wish to calculate +it, it is then common to simply set it to one.

    +

    Let us consider the following vanilla example where we use both +Scikit-Learn and write our own function as well. We produce a +simple test design matrix with random numbers. Each column could then +represent a specific feature whose mean value is subracted.

    -
    # Common imports
    -import os
    -import numpy as np
    -import pandas as pd
    -import matplotlib.pyplot as plt
    -import sklearn.linear_model as skl
    +
    import sklearn.linear_model as skl
     from sklearn.metrics import mean_squared_error
     from sklearn.model_selection import  train_test_split
     from sklearn.preprocessing import MinMaxScaler, StandardScaler, Normalizer
    -
    -# 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 FrankeFunction(x,y):
    -	term1 = 0.75*np.exp(-(0.25*(9*x-2)**2) - 0.25*((9*y-2)**2))
    -	term2 = 0.75*np.exp(-((9*x+1)**2)/49.0 - 0.1*(9*y+1))
    -	term3 = 0.5*np.exp(-(9*x-7)**2/4.0 - 0.25*((9*y-3)**2))
    -	term4 = -0.2*np.exp(-(9*x-4)**2 - (9*y-7)**2)
    -	return term1 + term2 + term3 + term4
    -
    -
    -def create_X(x, y, n ):
    -	if len(x.shape) > 1:
    -		x = np.ravel(x)
    -		y = np.ravel(y)
    -
    -	N = len(x)
    -	l = int((n+1)*(n+2)/2)		# Number of elements in beta
    -	X = np.ones((N,l))
    -
    -	for i in range(1,n+1):
    -		q = int((i)*(i+1)/2)
    -		for k in range(i+1):
    -			X[:,q+k] = (x**(i-k))*(y**k)
    -
    -	return X
    -
    -
    -# Making meshgrid of datapoints and compute Franke's function
    -n = 5
    -N = 1000
    -x = np.sort(np.random.uniform(0, 1, N))
    -y = np.sort(np.random.uniform(0, 1, N))
    -z = FrankeFunction(x, y)
    -X = create_X(x, y, n=n)    
    -# split in training and test data
    -X_train, X_test, y_train, y_test = train_test_split(X,z,test_size=0.2)
    -
    -
    -clf = skl.LinearRegression().fit(X_train, y_train)
    -
    -# The mean squared error and R2 score
    -print("MSE before scaling: {:.2f}".format(mean_squared_error(clf.predict(X_test), y_test)))
    -print("R2 score before scaling {:.2f}".format(clf.score(X_test,y_test)))
    -
    -scaler = StandardScaler()
    -scaler.fit(X_train)
    -X_train_scaled = scaler.transform(X_train)
    -X_test_scaled = scaler.transform(X_test)
    -
    -print("Feature min values before scaling:\n {}".format(X_train.min(axis=0)))
    -print("Feature max values before scaling:\n {}".format(X_train.max(axis=0)))
    -
    -print("Feature min values after scaling:\n {}".format(X_train_scaled.min(axis=0)))
    -print("Feature max values after scaling:\n {}".format(X_train_scaled.max(axis=0)))
    -
    -clf = skl.LinearRegression().fit(X_train_scaled, y_train)
    -
    -
    -print("MSE after  scaling: {:.2f}".format(mean_squared_error(clf.predict(X_test_scaled), y_test)))
    -print("R2 score for  scaled data: {:.2f}".format(clf.score(X_test_scaled,y_test)))
    +import numpy as np
    +import pandas as pd
    +from IPython.display import display
    +np.random.seed(100)
    +# setting up a 10 x 5 matrix
    +rows = 10
    +cols = 5
    +X = np.random.randn(rows,cols)
    +XPandas = pd.DataFrame(X)
    +display(XPandas)
    +print(XPandas.mean())
    +print(XPandas.std())
    +XPandas = (XPandas -XPandas.mean())
    +display(XPandas)
    +#  This option does not include the standard deviation
    +scaler = StandardScaler(with_std=False)
    +scaler.fit(X)
    +Xscaled = scaler.transform(X)
    +display(XPandas-Xscaled)
     
    -
    MSE before scaling: 0.00
    -R2 score before scaling 0.99
    -Feature min values before scaling:
    - [1.00000000e+00 2.31109204e-04 5.13266452e-03 5.34114641e-08
    - 1.18620601e-06 2.63442451e-05 1.23438810e-11 2.74143127e-10
    - 6.08839750e-09 1.35216172e-07 2.85278450e-15 6.33569998e-14
    - 1.40708470e-12 3.12497018e-11 6.94019247e-10 6.59304755e-19
    - 1.46423858e-17 3.25190225e-16 7.22209371e-15 1.60394236e-13
    - 3.56216797e-12]
    -Feature max values before scaling:
    - [1.         0.99997737 0.9950799  0.99995475 0.99505739 0.99018401
    - 0.99993212 0.99503487 0.99016161 0.98531221 0.9999095  0.99501236
    - 0.99013921 0.98528992 0.98046438 0.99988687 0.99498985 0.9901168
    - 0.98526763 0.9804422  0.9756404 ]
    -Feature min values after scaling:
    - [ 0.         -1.7621419  -1.74382593 -1.13803928 -1.14662074 -1.15475232
    - -0.89942598 -0.90825063 -0.9171356  -0.92605247 -0.76570177 -0.77317984
    - -0.78080633 -0.78857629 -0.79648291 -0.67708423 -0.68316185 -0.68937695
    - -0.69573183 -0.7022283  -0.70886748]
    -Feature max values after scaling:
    - [0.         1.71669651 1.63315151 2.21623344 2.15324631 2.088871
    - 2.62856593 2.5755035  2.52158335 2.46675058 2.987902   2.94034531
    - 2.8923     2.84372853 2.79459035 3.30968181 3.2653678  3.22076362
    - 3.1758506  3.13060772 3.08501147]
    -MSE after  scaling: 0.00
    -R2 score for  scaled data: 0.99
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    01234
    0-1.7497650.3426801.153036-0.2524360.981321
    10.5142190.221180-1.070043-0.1894960.255001
    2-0.4580270.435163-0.5835950.8168470.672721
    3-0.104411-0.5312801.029733-0.438136-1.118318
    41.6189821.541605-0.251879-0.8424360.184519
    50.9370820.7310001.361556-0.3262380.055676
    60.222400-1.443217-0.7563520.8164540.750445
    7-0.4559471.189622-1.690617-1.356399-1.232435
    8-0.544439-0.6681720.007315-0.6129391.299748
    9-1.733096-0.9833100.357508-1.6135791.470714
    +
    0   -0.175300
    +1    0.083527
    +2   -0.044334
    +3   -0.399836
    +4    0.331939
    +dtype: float64
    +0    1.069584
    +1    0.965548
    +2    1.018232
    +3    0.793167
    +4    0.918992
    +dtype: float64
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    01234
    0-1.5744650.2591531.1973700.1474000.649382
    10.6895190.137652-1.0257090.210340-0.076938
    2-0.2827270.351636-0.5392611.2166830.340782
    30.070889-0.6148081.074067-0.038300-1.450257
    41.7942821.458078-0.207545-0.442600-0.147420
    51.1123830.6474731.4058900.073598-0.276263
    60.397700-1.526744-0.7120181.2162900.418506
    7-0.2806471.106095-1.646283-0.956563-1.564374
    8-0.369139-0.7516990.051649-0.2131030.967809
    9-1.557795-1.0668370.401842-1.2137431.138775
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    01234
    00.00.00.00.00.0
    10.00.00.00.00.0
    20.00.00.00.00.0
    30.00.00.00.00.0
    40.00.00.00.00.0
    50.00.00.00.00.0
    60.00.00.00.00.0
    70.00.00.00.00.0
    80.00.00.00.00.0
    90.00.00.00.00.0
    +
    +
    +

    Small exercise: perform the standard scaling by including the standard deviation and compare with what Scikit-Learn gives.

    +

    Another commonly used scaling method is min-max scaling. This is very +useful for when we want the features to lie in a certain interval. To +scale the feature \(x_j\) to the interval \([a, b]\), we can apply the +transformation

    +
    +\[ +x_j^{(i)} \rightarrow (b-a)\frac{x_j^{(i)} - \min(x_j)}{\max(x_j) - \min(x_j)} - a +\]
    +

    where \(\min(x_j)\) and \(\max(x_j)\) return the minimum and maximum value of \(x_j\) over the data set, respectively.

    +
    +
    +

    3.10. Testing the Means Squared Error as function of Complexity¶

    +

    Before we proceed with a more detailed analysis of the so-called +Bias-Variance tradeoff, we present here an example of the relation +between model complexity and the mean squared error for the triaining +data and the test data.

    +

    The results here tell us clearly that for the data not included in the +training, there is an optimal model as function of the complexity of +ourmodel (here in terms of the polynomial degree of the model).

    +

    The results here will vary as function of model complexity and the amount od data used for training.

    +

    Our data is defined by \(x\in [-3,3]\) with a total of for example \(100\) data points.

    +
    +
    +
    import matplotlib.pyplot as plt
    +import numpy as np
    +from sklearn.linear_model import LinearRegression, Ridge, Lasso
    +from sklearn.preprocessing import PolynomialFeatures
    +from sklearn.model_selection import train_test_split
    +from sklearn.pipeline import make_pipeline
    +
    +
    +np.random.seed(2018)
    +n = 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)
    +TestError = np.zeros(maxdegree)
    +TrainError = np.zeros(maxdegree)
    +polydegree = np.zeros(maxdegree)
    +x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
    +scaler = StandardScaler()
    +scaler.fit(x_train)
    +x_train_scaled = scaler.transform(x_train)
    +x_test_scaled = scaler.transform(x_test)
    +
    +for degree in range(maxdegree):
    +    model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False))
    +    clf = model.fit(x_train_scaled,y_train)
    +    y_fit = clf.predict(x_train_scaled)
    +    y_pred = clf.predict(x_test_scaled) 
    +    polydegree[degree] = degree
    +    TestError[degree] = np.mean( np.mean((y_test - y_pred)**2) )
    +    TrainError[degree] = np.mean( np.mean((y_train - y_fit)**2) )
    +
    +plt.plot(polydegree, TestError, label='Test Error')
    +plt.plot(polydegree, TrainError, label='Train Error')
    +plt.legend()
    +plt.show()
     
    +
    +_images/chapter1_214_0.png
    -

    3.9. Exercises¶

    +

    3.11. Exercises¶

    -

    3.9.1. Exercise: Setting up various Python environments¶

    +

    3.11.1. Exercise: Setting up various Python environments¶

    The first exercise here is of a mere technical art. We want you to have

    • git as a version control software and to establish a user account on a provider like GitHub. Other providers like GitLab etc are equally fine. You can also use the University of Oslo GitHub facilities.

    • @@ -2839,7 +3271,7 @@ license.

      We recommend using Anaconda if you are not too familiar with setting paths in a terminal environment.

    -

    3.9.2. Exercise: making your own data and exploring scikit-learn¶

    +

    3.11.2. Exercise: making your own data and exploring scikit-learn¶

    We will generate our own dataset for a function \(y(x)\) where \(x \in [0,1]\) and defined by random numbers computed with the uniform distribution. The function \(y\) is a quadratic polynomial in \(x\) with added stochastic noise according to the normal distribution \(\cal {N}(0,1)\). The following simple Python instructions define our \(x\) and \(y\) values (with 100 data points).

    @@ -2875,7 +3307,7 @@ R^2(\boldsymbol{y}, \tilde{\boldsymbol{y}}) = 1 - \frac{\sum_{i=0}^{n - 1} (y_i Discuss the meaning of these results. Try also to vary the coefficient in front of the added stochastic noise term and discuss the quality of the fits.

    -

    3.9.3. Exercise: Normalizing our data¶

    +

    3.11.3. Exercise: Normalizing our data¶

    A much used approach before starting to train the data is to preprocess our data. Normally the data may need a rescaling and/or may be sensitive to extreme values. Scaling the data renders our inputs much more @@ -2987,7 +3419,7 @@ your results. For which polynomial degree do you find an optimal MSE

    diff --git a/doc/LectureNotes/_build/html/chapter2.html b/doc/LectureNotes/_build/html/chapter2.html index 4958e3ed8..e41ee49d1 100644 --- a/doc/LectureNotes/_build/html/chapter2.html +++ b/doc/LectureNotes/_build/html/chapter2.html @@ -304,54 +304,49 @@ 4.4. Codes for the SVD
  • +
  • + + 4.5. Code for SVD and Inversion of Matrices + +
  • - 4.5. Mathematics of the SVD and implications + 4.6. Mathematics of the SVD and implications
  • - 4.6. Further properties (important for our analyses later) + 4.7. Further properties (important for our analyses later)
  • - 4.7. Meet the Covariance Matrix + 4.8. Meet the Covariance Matrix
  • - 4.8. Linking with the SVD + 4.9. Linking with the SVD
  • - 4.9. Ridge and LASSO Regression - -
  • -
  • - - 4.10. Code for SVD and Inversion of Matrices - -
  • -
  • - - 4.11. Deriving the Ridge Regression Equations + 4.10. Ridge and Lasso Regression
  • - 4.12. Linking the regression analysis with a statistical interpretation + 4.11. Linking the regression analysis with a statistical interpretation
  • - 4.13. Deriving OLS from a probability distribution + 4.12. Deriving OLS from a probability distribution
  • - 4.14. Bayes’ Theorem and Ridge and Lasso Regression + 4.13. Bayes’ Theorem and Ridge and Lasso Regression
  • @@ -662,8 +657,127 @@ matrix.

    resize the matrices and set up a diagonal matrix as done in the above example

    +
    +

    4.5. Code for SVD and Inversion of Matrices¶

    +

    How do we use the SVD to invert a matrix \(\boldsymbol{X}^\boldsymbol{X}\) which is singular or near singular? +The simple answer is to use the linear algebra function for the pseudoinverse, that is

    +
    +
    +
    #Ainv = np.linlag.pinv(A)
    +
    +
    +
    +
    +

    Let us first look at a matrix which does not causes problems and write our own function where we just use the SVD.

    +
    +
    +
    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)))
    +
    +
    +    D = np.zeros((len(U),len(VT)))
    +    D = np.diag(s)
    +    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] ])
    +# Non-singular square matrix
    +X = np.array( [ [1,2,3],[2,4,5],[3,5,6]])
    +print(X)
    +A = np.transpose(X) @ X
    +# Brute force inversion
    +B = np.linalg.pinv(A)  # here we could use np.linalg.inv(A), try it!
    +C = SVDinv(A)
    +print(np.abs(B-C))
    +
    +
    +
    +
    +
    [[1 2 3]
    + [2 4 5]
    + [3 5 6]]
    +test U
    +[[ 2.22044605e-16 -7.77156117e-16 -5.55111512e-16]
    + [-7.77156117e-16  0.00000000e+00 -1.11022302e-16]
    + [-5.55111512e-16 -1.11022302e-16  0.00000000e+00]]
    +test VT
    +[[ 1.11022302e-16 -2.22044605e-16  1.38777878e-16]
    + [-2.22044605e-16 -1.11022302e-16 -1.11022302e-16]
    + [ 1.38777878e-16 -1.11022302e-16  0.00000000e+00]]
    +[[0. 0. 0.]
    + [0. 0. 0.]
    + [0. 0. 0.]]
    +
    +
    +
    +
    +

    Although our matrix to invert \(\boldsymbol{X}^T\boldsymbol{X}\) is a square matrix, our matrix may be singular.

    +

    The pseudoinverse is the generalization of the matrix inverse for square matrices to +rectangular matrices where the number of rows and columns are not equal.

    +

    It is also called the the Moore-Penrose Inverse after two independent discoverers of the method or the Generalized Inverse. +It is used for the calculation of the inverse for singular or near singular matrices and for rectangular matrices.

    +

    Using the SVD we can obtain the pseudoinverse of a matrix \(\boldsymbol{A}\) (labeled here as \(\boldsymbol{A}_{\mathrm{PI}}\)

    +
    +\[ +\boldsymbol{A}_{\mathrm{PI}}= \boldsymbol{V}\boldsymbol{D}_{\mathrm{PI}}\boldsymbol{U}^T, +\]
    +

    where \(\boldsymbol{D}_{\mathrm{PI}}\) can be calculated by creating a diagonal matrix from \(\boldsymbol{Sigma}\) where we only keep the singular values (the non-zero values). The following code computes the pseudoinvers of the matrix based on the SVD.

    +
    +
    +
    import numpy as np
    +# SVD inversion
    +def SVDinv(A):
    +    U, s, VT = np.linalg.svd(A)
    +    # reciprocals of singular values of s
    +    d = 1.0 / s
    +    # create m x n D matrix
    +    D = np.zeros(A.shape)
    +    # populate D with n x n diagonal matrix
    +    D[:A.shape[1], :A.shape[1]] = np.diag(d)
    +    UT = np.transpose(U)
    +    V = np.transpose(VT)
    +    return np.matmul(V,np.matmul(D.T,UT))
    +
    +
    +A = np.array([ [0.3, 0.4], [0.5, 0.6], [0.7, 0.8],[0.9, 1.0]])
    +print(A)
    +# Brute force inversion of super-collinear matrix
    +B = np.linalg.pinv(A)
    +print(B)
    +# Compare our own algorithm with pinv
    +C = SVDinv(A)
    +print(np.abs(C-B))
    +
    +
    +
    +
    +
    [[0.3 0.4]
    + [0.5 0.6]
    + [0.7 0.8]
    + [0.9 1. ]]
    +[[-13.   -6.    1.    8. ]
    + [ 11.5   5.5  -0.5  -6.5]]
    +[[0. 0. 0. 0.]
    + [0. 0. 0. 0.]]
    +
    +
    +
    +
    +

    As you can see from these examples, our own decomposition based on the SVD agrees the pseudoinverse algorithm provided by Numpy.

    +
    -

    4.5. Mathematics of the SVD and implications¶

    +

    4.6. Mathematics of the SVD and implications¶

    Let us take a closer look at the mathematics of the SVD and the various implications for machine learning studies.

    Our starting point is our design matrix \(\boldsymbol{X}\) of dimension \(n\times p\)

    @@ -780,7 +894,7 @@ decomposition of the design matrix.

    It means that the ordinary least square model (with the optimal parameters) \(\boldsymbol{\tilde{y}}\), corresponds to an orthogonal transformation of the output (or target) vector \(\boldsymbol{y}\) by the vectors of the matrix \(\boldsymbol{U}\).

    -

    4.6. Further properties (important for our analyses later)¶

    +

    4.7. Further properties (important for our analyses later)¶

    Let us study again \(\boldsymbol{X}^T\boldsymbol{X}\) in terms of our SVD,

    \[ @@ -823,7 +937,7 @@ other texts you may find the opposite notation. This has consequences for the definition of for example the covariance matrix and its relation to the SVD.

    -

    4.7. Meet the Covariance Matrix¶

    +

    4.8. Meet the Covariance Matrix¶

    Before we move on to a discussion of Ridge and Lasso regression, we want to show an important example of the above.

    We have already noted that the matrix \(\boldsymbol{X}^T\boldsymbol{X}\) in ordinary least squares is proportional to the second derivative of the cost @@ -982,10 +1096,10 @@ covariance matrix through the np.linalg.eig() function.

    -
    -0.033037772005753835
    -3.7371165871823337
    -[[ 1.22443803  3.75195757]
    - [ 3.75195757 12.47441766]]
    +
    0.059680303635344434
    +4.260227742627244
    +[[0.89704131 2.55795935]
    + [2.55795935 8.24340751]]
     
    @@ -1022,10 +1136,10 @@ a more brute force way. Here we scale the mean values for each column of the des
    -
    0.08665060086846632
    -1.6796265324852733
    -[[1.        0.6183694]
    - [0.6183694 1.       ]]
    +
    0.08362077210702115
    +1.8429949116841184
    +[[1.        0.6996584]
    + [0.6996584 1.       ]]
     
    @@ -1055,30 +1169,30 @@ this matrix we easily see that it is a positive definite matrix.

    -
    [[ 0.68002363  0.95517094]
    - [-0.53545715  0.03652792]
    - [ 1.33886902  4.84251485]
    - [ 0.20375701 -0.16861772]
    - [-2.04455272 -5.89742056]
    - [ 1.17449733  2.3728892 ]
    - [ 0.03019554  0.07581375]
    - [ 0.60949193  1.95628168]
    - [ 0.0530533   1.07839924]
    - [-1.5098779  -5.2515593 ]]
    +
    [[-1.25981533 -3.84976606]
    + [-0.52570079 -0.62262506]
    + [ 0.51707172  3.46973015]
    + [-0.47265243 -1.87030083]
    + [ 0.73734906  2.46183815]
    + [ 0.4918372   2.05531364]
    + [ 0.3893239   0.47862383]
    + [-0.41237437 -0.85058354]
    + [ 0.77622336  0.54697204]
    + [-0.24126232 -1.81920231]]
               0         1
    -0  0.680024  0.955171
    -1 -0.535457  0.036528
    -2  1.338869  4.842515
    -3  0.203757 -0.168618
    -4 -2.044553 -5.897421
    -5  1.174497  2.372889
    -6  0.030196  0.075814
    -7  0.609492  1.956282
    -8  0.053053  1.078399
    -9 -1.509878 -5.251559
    +0 -1.259815 -3.849766
    +1 -0.525701 -0.622625
    +2  0.517072  3.469730
    +3 -0.472652 -1.870301
    +4  0.737349  2.461838
    +5  0.491837  2.055314
    +6  0.389324  0.478624
    +7 -0.412374 -0.850584
    +8  0.776223  0.546972
    +9 -0.241262 -1.819202
               0         1
    -0  1.000000  0.959247
    -1  0.959247  1.000000
    +0  1.000000  0.881323
    +1  0.881323  1.000000
     
    @@ -1135,37 +1249,37 @@ this matrix we easily see that it is a positive definite matrix.

         0         1         2         3         4         5         6         7   \
     0   0.0  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000   
    -1   0.0  0.073902  0.077303  0.072279  0.077386  0.082866  0.063526  0.068073   
    -2   0.0  0.077303  0.081480  0.074665  0.080336  0.086465  0.064929  0.069872   
    -3   0.0  0.072279  0.074665  0.075754  0.080381  0.085289  0.069635  0.074099   
    -4   0.0  0.077386  0.080336  0.080381  0.085597  0.091159  0.073333  0.078279   
    -5   0.0  0.082866  0.086465  0.085289  0.091159  0.097452  0.077212  0.082687   
    -6   0.0  0.063526  0.064929  0.069635  0.073333  0.077212  0.066047  0.069859   
    -7   0.0  0.068073  0.069872  0.074099  0.078279  0.082687  0.069859  0.074096   
    -8   0.0  0.073035  0.075289  0.078937  0.083657  0.088660  0.073966  0.078674   
    -9   0.0  0.078451  0.081227  0.084181  0.089504  0.095173  0.078388  0.083618   
    -10  0.0  0.055085  0.055774  0.062327  0.065204  0.068185  0.060520  0.063670   
    -11  0.0  0.058892  0.059865  0.066249  0.069510  0.072910  0.064000  0.067504   
    -12  0.0  0.063055  0.064354  0.070517  0.074207  0.078076  0.067769  0.071667   
    -13  0.0  0.067610  0.069282  0.075163  0.079333  0.083728  0.071855  0.076189   
    -14  0.0  0.072598  0.074696  0.080223  0.084931  0.089916  0.076283  0.081103   
    +1   0.0  0.082272  0.078892  0.081102  0.080738  0.080182  0.072012  0.072246   
    +2   0.0  0.078892  0.076822  0.075975  0.076166  0.076251  0.066705  0.067202   
    +3   0.0  0.081102  0.075975  0.085259  0.084103  0.082616  0.078750  0.078649   
    +4   0.0  0.080738  0.076166  0.084103  0.083246  0.082091  0.077338  0.077407   
    +5   0.0  0.080182  0.076251  0.082616  0.082091  0.081309  0.075567  0.075818   
    +6   0.0  0.072012  0.066705  0.078750  0.077338  0.075567  0.074693  0.074434   
    +7   0.0  0.072246  0.067202  0.078649  0.077407  0.075818  0.074434  0.074285   
    +8   0.0  0.072468  0.067718  0.078474  0.077416  0.076026  0.074077  0.074044   
    +9   0.0  0.072661  0.068244  0.078197  0.077339  0.076169  0.073591  0.073681   
    +10  0.0  0.063190  0.058247  0.070949  0.069542  0.067794  0.068593  0.068293   
    +11  0.0  0.063523  0.058719  0.071156  0.069853  0.068213  0.068717  0.068491   
    +12  0.0  0.063880  0.059225  0.071359  0.070166  0.068640  0.068821  0.068673   
    +13  0.0  0.064257  0.059765  0.071549  0.070473  0.069071  0.068896  0.068828   
    +14  0.0  0.064647  0.060335  0.071714  0.070764  0.069496  0.068928  0.068945   
     
               8         9         10        11        12        13        14  
     0   0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  
    -1   0.073035  0.078451  0.055085  0.058892  0.063055  0.067610  0.072598  
    -2   0.075289  0.081227  0.055774  0.059865  0.064354  0.069282  0.074696  
    -3   0.078937  0.084181  0.062327  0.066249  0.070517  0.075163  0.080223  
    -4   0.083657  0.089504  0.065204  0.069510  0.074207  0.079333  0.084931  
    -5   0.088660  0.095173  0.068185  0.072910  0.078076  0.083728  0.089916  
    -6   0.073966  0.078388  0.060520  0.064000  0.067769  0.071855  0.076283  
    -7   0.078674  0.083618  0.063670  0.067504  0.071667  0.076189  0.081103  
    -8   0.083775  0.089300  0.067043  0.071268  0.075865  0.080871  0.086325  
    -9   0.089300  0.095472  0.070653  0.075309  0.080387  0.085928  0.091979  
    -10  0.067043  0.070653  0.056484  0.059455  0.062659  0.066116  0.069848  
    -11  0.071268  0.075309  0.059455  0.062731  0.066272  0.070103  0.074248  
    -12  0.075865  0.080387  0.062659  0.066272  0.070188  0.074432  0.079037  
    -13  0.080871  0.085928  0.066116  0.070103  0.074432  0.079137  0.084251  
    -14  0.086325  0.091979  0.069848  0.074248  0.079037  0.084251  0.089931  
    +1   0.072468  0.072661  0.063190  0.063523  0.063880  0.064257  0.064647  
    +2   0.067718  0.068244  0.058247  0.058719  0.059225  0.059765  0.060335  
    +3   0.078474  0.078197  0.070949  0.071156  0.071359  0.071549  0.071714  
    +4   0.077416  0.077339  0.069542  0.069853  0.070166  0.070473  0.070764  
    +5   0.076026  0.076169  0.067794  0.068213  0.068640  0.069071  0.069496  
    +6   0.074077  0.073591  0.068593  0.068717  0.068821  0.068896  0.068928  
    +7   0.074044  0.073681  0.068293  0.068491  0.068673  0.068828  0.068945  
    +8   0.073926  0.073695  0.067889  0.068165  0.068427  0.068667  0.068873  
    +9   0.073695  0.073607  0.067355  0.067711  0.068056  0.068385  0.068686  
    +10  0.067889  0.067355  0.063925  0.064013  0.064075  0.064101  0.064078  
    +11  0.068165  0.067711  0.064013  0.064156  0.064273  0.064357  0.064393  
    +12  0.068427  0.068056  0.064075  0.064273  0.064449  0.064591  0.064689  
    +13  0.068667  0.068385  0.064101  0.064357  0.064591  0.064795  0.064958  
    +14  0.068873  0.068686  0.064078  0.064393  0.064689  0.064958  0.065188  
     
    @@ -1211,7 +1325,7 @@ x_{01}x_{00}+x_{11}x_{10} & x_{01}^2+x_{11}^2\\

    It is easy to generalize this to a matrix \(\boldsymbol{X}\in {\mathbb{R}}^{n\times p}\).

    -

    4.8. Linking with the SVD¶

    +

    4.9. Linking with the SVD¶

    We saw earlier that

    \[ @@ -1299,270 +1413,7 @@ of our data (the columns of \(\boldsy values and the column vectors of \(\boldsymbol{V}\).

    -

    4.9. 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 -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\}. -\]
    -

    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 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

    -
    -\[ -{\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 -\]
    -

    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

    -
    -\[ -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, -\]
    -

    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.

    -

    Here we have defined the norm-1 as

    -
    -\[ -\vert\vert \boldsymbol{x}\vert\vert_1 = \sum_i \vert x_i\vert. -\]
    -

    Using the matrix-vector expression for Ridge regression and dropping the parameter \(1/n\) in front of the standard means squared error equation, we have

    -
    -\[ -C(\boldsymbol{X},\boldsymbol{\beta})=\left\{(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})^T(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})\right\}+\lambda\boldsymbol{\beta}^T\boldsymbol{\beta}, -\]
    -

    and -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 -the optimal parameters

    -
    -\[ -\hat{\boldsymbol{\beta}}_{\mathrm{Ridge}} = \left(\boldsymbol{X}^T\boldsymbol{X}+\lambda\boldsymbol{I}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}, -\]
    -

    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.

    -

    When we compare this with the ordinary least squares result we have

    -
    -\[ -\hat{\boldsymbol{\beta}}_{\mathrm{OLS}} = \left(\boldsymbol{X}^T\boldsymbol{X}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}, -\]
    -

    which can lead to singular matrices. However, with the SVD, we can always compute the inverse of the matrix \(\boldsymbol{X}^T\boldsymbol{X}\).

    -

    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. We will see that for specific values of \(\lambda\), we may -even reduce the variance of the optimal parameters \(\boldsymbol{\beta}\). These topics and other related ones, will be discussed after the more linear algebra oriented analysis here.

    -

    Using our insights about the SVD of the design matrix \(\boldsymbol{X}\) -We have already analyzed the OLS solutions in terms of the eigenvectors (the columns) of the right singular value matrix \(\boldsymbol{U}\) as

    -
    -\[ -\tilde{\boldsymbol{y}}_{\mathrm{OLS}}=\boldsymbol{X}\boldsymbol{\beta} =\boldsymbol{U}\boldsymbol{U}^T\boldsymbol{y}. -\]
    -

    For Ridge regression this becomes

    -
    -\[ -\tilde{\boldsymbol{y}}_{\mathrm{Ridge}}=\boldsymbol{X}\boldsymbol{\beta}_{\mathrm{Ridge}} = \boldsymbol{U\Sigma V^T}\left(\boldsymbol{V}\boldsymbol{\Sigma}^2\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}\) from the SVD of the matrix \(\boldsymbol{X}\).

    -

    Since \(\lambda \geq 0\), it means that compared to OLS, we have

    -
    -\[ -\frac{\sigma_j^2}{\sigma_j^2+\lambda} \leq 1. -\]
    -

    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}\).

    -

    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. More about this when we have covered the material on a statistical interpretation of various linear regression methods.

    -

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

    -
    -\[ -\boldsymbol{X}^T\boldsymbol{X}=(\boldsymbol{X}^T\boldsymbol{X})^{-1} =\boldsymbol{I}. -\]
    -

    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.

    -

    Using the matrix-vector expression for Lasso regression and dropping the parameter \(1/n\) in front of the standard means squared error equation, we have the following cost function

    -
    -\[ -C(\boldsymbol{X},\boldsymbol{\beta})=\left\{(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})^T(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})\right\}+\lambda\vert\vert\boldsymbol{\beta}\vert\vert_1, -\]
    -

    Taking the derivative with respect to \(\boldsymbol{\beta}\) and recalling that the derivative of the absolute value is (we drop the boldfaced vector symbol for simplicty)

    -
    -\[\begin{split} -\frac{d \vert \beta\vert}{d \boldsymbol{\beta}}=\mathrm{sgn}(\boldsymbol{\beta})=\left\{\begin{array}{cc} 1 & \beta > 0 \\ 0 & \beta =0\\-1 & \beta < 0, \end{array}\right. -\end{split}\]
    -

    we have that the derivative of the cost function is

    -
    -\[ -\frac{\partial C(\boldsymbol{X},\boldsymbol{\beta})}{\partial \boldsymbol{\beta}}=-2\boldsymbol{X}^T(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})+\lambda sgn(\boldsymbol{\beta})=0, -\]
    -

    and reordering we have

    -
    -\[ -\boldsymbol{X}^T\boldsymbol{X}\boldsymbol{\beta})+\lambda sgn(\boldsymbol{\beta})=2\boldsymbol{X}^T(\boldsymbol{y}. -\]
    -

    This equation does not lead to a nice analytical equation as in either Ridge regression or ordinary least squares. This equation can however be solved by using standard convex optimization algorithms using for example the Python package CVXOPT. We will discuss this later.

    -
    -
    -

    4.10. Code for SVD and Inversion of Matrices¶

    -

    How do we use the SVD to invert a matrix \(\boldsymbol{X}^\boldsymbol{X}\) which is singular or near singular? -The simple answer is to use the linear algebra function for the pseudoinverse, that is

    -
    -
    -
    #Ainv = np.linlag.pinv(A)
    -
    -
    -
    -
    -

    Let us first look at a matrix which does not causes problems and write our own function where we just use the SVD.

    -
    -
    -
    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)))
    -
    -
    -    D = np.zeros((len(U),len(VT)))
    -    D = np.diag(s)
    -    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] ])
    -# Non-singular square matrix
    -X = np.array( [ [1,2,3],[2,4,5],[3,5,6]])
    -print(X)
    -A = np.transpose(X) @ X
    -# Brute force inversion
    -B = np.linalg.inv(A)  # here we could use np.linalg.pinv(A)
    -C = SVDinv(A)
    -print(np.abs(B-C))
    -
    -
    -
    -
    -
    [[1 2 3]
    - [2 4 5]
    - [3 5 6]]
    -test U
    -[[ 2.22044605e-16 -7.77156117e-16 -5.55111512e-16]
    - [-7.77156117e-16  0.00000000e+00 -1.11022302e-16]
    - [-5.55111512e-16 -1.11022302e-16  0.00000000e+00]]
    -test VT
    -[[ 1.11022302e-16 -2.22044605e-16  1.38777878e-16]
    - [-2.22044605e-16 -1.11022302e-16 -1.11022302e-16]
    - [ 1.38777878e-16 -1.11022302e-16  0.00000000e+00]]
    -[[2.35367281e-12 1.70885528e-12 3.20632410e-13]
    - [2.17248441e-12 1.46016532e-12 2.00728323e-13]
    - [6.95443703e-13 4.13891144e-13 2.13162821e-14]]
    -
    -
    -
    -
    -

    Although our matrix to invert \(\boldsymbol{X}^T\boldsymbol{X}\) is a square matrix, our matrix may be singular.

    -

    The pseudoinverse is the generalization of the matrix inverse for square matrices to -rectangular matrices where the number of rows and columns are not equal.

    -

    It is also called the the Moore-Penrose Inverse after two independent discoverers of the method or the Generalized Inverse. -It is used for the calculation of the inverse for singular or near singular matrices and for rectangular matrices.

    -

    Using the SVD we can obtain the pseudoinverse of a matrix \(\boldsymbol{A}\) (labeled here as \(\boldsymbol{A}_{\mathrm{PI}}\)

    -
    -\[ -\boldsymbol{A}_{\mathrm{PI}}= \boldsymbol{V}\boldsymbol{D}_{\mathrm{PI}}\boldsymbol{U}^T, -\]
    -

    where \(\boldsymbol{D}_{\mathrm{PI}}\) can be calculated by creating a diagonal matrix from \(\boldsymbol{Sigma}\) where we only keep the singular values (the non-zero values). The following code computes the pseudoinvers of the matrix based on the SVD.

    -
    -
    -
    import numpy as np
    -# SVD inversion
    -def SVDinv(A):
    -    U, s, VT = np.linalg.svd(A)
    -    # reciprocals of singular values of s
    -    d = 1.0 / s
    -    # create m x n D matrix
    -    D = np.zeros(A.shape)
    -    # populate D with n x n diagonal matrix
    -    D[:A.shape[1], :A.shape[1]] = np.diag(d)
    -    UT = np.transpose(U)
    -    V = np.transpose(VT)
    -    return np.matmul(V,np.matmul(D.T,UT))
    -
    -
    -A = np.array([ [0.3, 0.4], [0.5, 0.6], [0.7, 0.8],[0.9, 1.0]])
    -print(A)
    -# Brute force inversion of super-collinear matrix
    -B = np.linalg.pinv(A)
    -print(B)
    -# Compare our own algorithm with pinv
    -C = SVDinv(A)
    -print(np.abs(C-B))
    -
    -
    -
    -
    -
    [[0.3 0.4]
    - [0.5 0.6]
    - [0.7 0.8]
    - [0.9 1. ]]
    -[[-13.   -6.    1.    8. ]
    - [ 11.5   5.5  -0.5  -6.5]]
    -[[0. 0. 0. 0.]
    - [0. 0. 0. 0.]]
    -
    -
    -
    -
    -

    As you can see from this example, our own decomposition based on the SVD agrees the pseudoinverse algorithm provided by Numpy.

    -
    -
    -

    4.11. Deriving the Ridge Regression Equations¶

    +

    4.10. 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 our optimization problem is

    @@ -1847,7 +1698,8 @@ C(\boldsymbol{\beta})=(4-2\beta_0)^2+(2-\beta_1)^2+\lambda(\vert\beta_0\vert+\ve \]

    Using the constraint on \(\beta_0\) and \(\beta_1\) we can then find the optimal value of \(\lambda\) for the different cases. We leave this as an exercise to you.

    Here we set up the OLS, Ridge and Lasso functionality in order to study the above example. Note that here we have opted for a set of values of \(\lambda\), meaning that we need to perform a search in order to find the optimal values.

    -

    First we study and compare the OLS and Ridge results. The next code compares all three methods.

    +

    First we study and compare the OLS and Ridge results. The next code compares all three methods. +We select values of the hyperparameter \(\lambda\in [10^{-4},10^4]\) and compute the predicted values for ordinary least squares and Ridge regression.

    %matplotlib inline
    @@ -1906,14 +1758,21 @@ C(\boldsymbol{\beta})=(4-2\beta_0)^2+(2-\beta_1)^2+\lambda(\vert\beta_0\vert+\ve
     
    [2. 2.]
    -Training MSE for OLS
    +
    +
    +
    Training MSE for OLS
     3.0
     
    -_images/chapter2_287_1.png +_images/chapter2_245_2.png
    -

    We see here that we reach a plateau. What is actually happening?

    +

    We see here that we reach a plateau for the Ridge results. Writing out the coefficients \(\boldsymbol{\beta}\), we that they are getting smaller and smaller and our error stabilizes since the predicted values of \(\tilde{\boldsymbol{y}}\) approach zero.

    +

    This happens also for Lasso regression, as seen from the next code +output. The difference is that Lasso shrinks the values of \(\beta\) to +zero at a much earlier stage and the results flatten out. We see that +Lasso gives also an excellent fit for small values of \(\lambda\) and +shows rthe best performance of the three regression methods.

    import os
    @@ -2181,10 +2040,18 @@ Training MSE for OLS
     [ 0. -0.]
     
    -_images/chapter2_289_1.png +_images/chapter2_247_1.png
    -

    Another Example, now with a polynomial fit.

    +

    We bring then back our exponential function example and study all +three regression methods. Depending on the level of noise, we note +that for small values of the hyperparameter \(\lambda\) all three +methods produce the same mean squared error. Again, Lasso shrinks the +parameter values to zero much earlier than Ridge regression and the +Lasso results flatten out much earlier since all \(\beta_j=0\) (check +this by printing the values). This case is an example of where OLS +performs best. Lasso and Ridge reproduce the OLS results for a limited +set of \(\lambda\) values.

    import os
    @@ -2276,12 +2143,304 @@ Test MSE OLS
     0.008675369724976777
     
    -_images/chapter2_291_1.png +_images/chapter2_249_1.png +
    +
    +

    Both these example send a clear message. The addition of a +shrinkage/regularization term implies that we need to perform a search +for the optimal values of \(\lambda\). We will see this throughout these +series of lectures.

    +

    As a small addendum, we note that you can also solve this problem using the convex optimization package CVXOPT. This requires, in addition to having installed CVXOPT, you need to download the file l1regl.py. +The following code example solves the simpler problem we discussed above, where we have added the latter python file.

    +
    +
    +
    from cvxopt import matrix, spdiag, mul, div, sqrt, normal, setseed
    +from cvxopt import blas, lapack, solvers, sparse, spmatrix
    +import math
    +
    +try:
    +    import mosek
    +    import sys
    +    __MOSEK = True
    +except: __MOSEK = False
    +
    +if __MOSEK:
    +
    +    def l1regls_mosek(A, b):
    +        """
    +
    +        Returns the solution of l1-norm regularized least-squares problem
    +
    +            minimize    || A*x - b ||_2^2  + e'*u
    +
    +            subject to  -u <= x <= u
    +
    +        """
    +
    +        m, n = A.size
    +
    +        env  = mosek.Env()
    +        task = env.Task(0,0)
    +        task.set_Stream(mosek.streamtype.log, lambda x: sys.stdout.write(x))
    +
    +        task.appendvars( 2*n)            # number of variables
    +        task.appendcons( 2*n)            # number of constraints
    +
    +        # input quadratic objective
    +        Q = matrix(0.0, (n,n)) 
    +        blas.syrk(A, Q, alpha = 2.0, trans='T')
    +
    +        I = []
    +        for i in range(n):
    +            I.extend(range(i,n))
    +
    +        J = []
    +        for i in range(n):
    +            J.extend((n-i)*[i])
    +
    +        task.putqobj(I, J, list(Q[matrix(I) + matrix(J)*n]))
    +        task.putclist(range(2*n), list(-2*A.T*b) + n*[1.0])  # setup linear objective
    +
    +        # input constraint matrix row by row
    +        for i in range(n):
    +            task.putarow(   i, [i, n+i], [1.0, -1.0])
    +            task.putarow( n+i, [i, n+i], [1.0,  1.0])
    +
    +        # setup bounds on constraints
    +        task.putboundslice(mosek.accmode.con,
    +                           0, n, n*[mosek.boundkey.up], n*[0.0], n*[0.0])
    +        task.putboundslice(mosek.accmode.con,
    +                           n, 2*n, n*[mosek.boundkey.lo], n*[0.0], n*[0.0])
    +
    +        # setup variable bounds
    +        task.putboundslice(mosek.accmode.var,
    +                           0, 2*n, 2*n*[mosek.boundkey.fr], 2*n*[0.0], 2*n*[0.0])
    +
    +        # optimize the task
    +        task.putobjsense(mosek.objsense.minimize)
    +        task.optimize()
    +        task.solutionsummary(mosek.streamtype.log)
    +        x = n*[0.0]
    +        task.getsolutionslice(mosek.soltype.itr, mosek.solitem.xx, 0, n, x)
    +
    +        return matrix(x)
    +
    +    def l1regls_mosek2(A, b):
    +        """
    +
    +        Returns the solution of l1-norm regularized least-squares problem
    +
    +            minimize     w'*w + e'*u
    +
    +            subject to  -u <= x <= u
    +
    +                         A*x - w = b
    +
    +        """
    +
    +        m, n = A.size
    +
    +        env  = mosek.Env()
    +        task = env.Task(0,0)
    +        task.set_Stream(mosek.streamtype.log, lambda x: sys.stdout.write(x))
    +
    +        task.appendvars(2*n + m)     # number of variables
    +        task.appendcons(2*n + m)     # number of constraints
    +
    +        # input quadratic objective
    +        task.putqobj(range(2*n,2*n+m), range(2*n,2*n+m), m*[2.0])
    +
    +        task.putclist(range(2*n+m), n*[0.0] + n*[1.0] + m*[0.0])  # setup linear objective
    +
    +        # input constraint matrix row by row
    +        for i in range(n):
    +            task.putarow(   i, [i, n+i], [1.0, -1.0])
    +            task.putarow( n+i, [i, n+i], [1.0,  1.0])
    +
    +        for i in range(m):
    +            task.putarow( 2*n+i, range(n) + [2*n+i], list(A[i,:]) + [-1.0])
    +
    +        # setup bounds on constraints
    +        task.putboundslice(mosek.accmode.con,
    +                           0, n, n*[mosek.boundkey.up], n*[0.0], n*[0.0])
    +        task.putboundslice(mosek.accmode.con,
    +                           n, 2*n, n*[mosek.boundkey.lo], n*[0.0], n*[0.0])
    +        task.putboundslice(mosek.accmode.con,
    +                           2*n, 2*n+m, m*[mosek.boundkey.fx], list(b), list(b))
    +
    +        # setup variable bounds
    +        task.putboundslice(mosek.accmode.var, 0, 2*n+m, (2*n+m)*[mosek.boundkey.fr], 
    +                           (2*n+m)*[0.0], (2*n+m)*[0.0])
    +
    +        # optimize the task
    +        task.putobjsense(mosek.objsense.minimize)
    +        task.optimize()
    +        task.solutionsummary(mosek.streamtype.log)
    +        x = n*[0.0]
    +        task.getsolutionslice(mosek.soltype.itr, mosek.solitem.xx, 0, n, x)
    +
    +        return matrix(x)
    +
    +def l1regls(A, b):
    +    """
    +    
    +    Returns the solution of l1-norm regularized least-squares problem
    +  
    +        minimize || A*x - b ||_2^2  + || x ||_1.
    +
    +    """
    +
    +    m, n = A.size
    +    q = matrix(1.0, (2*n,1))
    +    q[:n] = -2.0 * A.T * b
    +
    +    def P(u, v, alpha = 1.0, beta = 0.0 ):
    +        """
    +            v := alpha * 2.0 * [ A'*A, 0; 0, 0 ] * u + beta * v 
    +        """
    +        v *= beta
    +        v[:n] += alpha * 2.0 * A.T * (A * u[:n])
    +
    +
    +    def G(u, v, alpha=1.0, beta=0.0, trans='N'):
    +        """
    +            v := alpha*[I, -I; -I, -I] * u + beta * v  (trans = 'N' or 'T')
    +        """
    +
    +        v *= beta
    +        v[:n] += alpha*(u[:n] - u[n:])
    +        v[n:] += alpha*(-u[:n] - u[n:])
    +
    +    h = matrix(0.0, (2*n,1))
    +
    +
    +    # Customized solver for the KKT system 
    +    #
    +    #     [  2.0*A'*A  0    I      -I     ] [x[:n] ]     [bx[:n] ]
    +    #     [  0         0   -I      -I     ] [x[n:] ]  =  [bx[n:] ].
    +    #     [  I        -I   -D1^-1   0     ] [zl[:n]]     [bzl[:n]]
    +    #     [ -I        -I    0      -D2^-1 ] [zl[n:]]     [bzl[n:]]
    +    #
    +    # where D1 = W['di'][:n]**2, D2 = W['di'][:n]**2.
    +    #    
    +    # We first eliminate zl and x[n:]:
    +    #
    +    #     ( 2*A'*A + 4*D1*D2*(D1+D2)^-1 ) * x[:n] = 
    +    #         bx[:n] - (D2-D1)*(D1+D2)^-1 * bx[n:] + 
    +    #         D1 * ( I + (D2-D1)*(D1+D2)^-1 ) * bzl[:n] - 
    +    #         D2 * ( I - (D2-D1)*(D1+D2)^-1 ) * bzl[n:]           
    +    #
    +    #     x[n:] = (D1+D2)^-1 * ( bx[n:] - D1*bzl[:n]  - D2*bzl[n:] ) 
    +    #         - (D2-D1)*(D1+D2)^-1 * x[:n]         
    +    #
    +    #     zl[:n] = D1 * ( x[:n] - x[n:] - bzl[:n] )
    +    #     zl[n:] = D2 * (-x[:n] - x[n:] - bzl[n:] ).
    +    #
    +    # The first equation has the form
    +    #
    +    #     (A'*A + D)*x[:n]  =  rhs
    +    #
    +    # and is equivalent to
    +    #
    +    #     [ D    A' ] [ x:n] ]  = [ rhs ]
    +    #     [ A   -I  ] [ v    ]    [ 0   ].
    +    #
    +    # It can be solved as 
    +    #
    +    #     ( A*D^-1*A' + I ) * v = A * D^-1 * rhs
    +    #     x[:n] = D^-1 * ( rhs - A'*v ).
    +
    +    S = matrix(0.0, (m,m))
    +    Asc = matrix(0.0, (m,n))
    +    v = matrix(0.0, (m,1))
    +
    +    def Fkkt(W):
    +
    +        # Factor 
    +        #
    +        #     S = A*D^-1*A' + I 
    +        #
    +        # where D = 2*D1*D2*(D1+D2)^-1, D1 = d[:n]**-2, D2 = d[n:]**-2.
    +
    +        d1, d2 = W['di'][:n]**2, W['di'][n:]**2
    +
    +        # ds is square root of diagonal of D
    +        ds = math.sqrt(2.0) * div( mul( W['di'][:n], W['di'][n:]), 
    +            sqrt(d1+d2) )
    +        d3 =  div(d2 - d1, d1 + d2)
    +     
    +        # Asc = A*diag(d)^-1/2
    +        Asc = A * spdiag(ds**-1)
    +
    +        # S = I + A * D^-1 * A'
    +        blas.syrk(Asc, S)
    +        S[::m+1] += 1.0 
    +        lapack.potrf(S)
    +
    +        def g(x, y, z):
    +
    +            x[:n] = 0.5 * ( x[:n] - mul(d3, x[n:]) + 
    +                mul(d1, z[:n] + mul(d3, z[:n])) - mul(d2, z[n:] - 
    +                mul(d3, z[n:])) )
    +            x[:n] = div( x[:n], ds) 
    +
    +            # Solve
    +            #
    +            #     S * v = 0.5 * A * D^-1 * ( bx[:n] - 
    +            #         (D2-D1)*(D1+D2)^-1 * bx[n:] + 
    +            #         D1 * ( I + (D2-D1)*(D1+D2)^-1 ) * bzl[:n] - 
    +            #         D2 * ( I - (D2-D1)*(D1+D2)^-1 ) * bzl[n:] )
    +                
    +            blas.gemv(Asc, x, v)
    +            lapack.potrs(S, v)
    +            
    +            # x[:n] = D^-1 * ( rhs - A'*v ).
    +            blas.gemv(Asc, v, x, alpha=-1.0, beta=1.0, trans='T')
    +            x[:n] = div(x[:n], ds)
    +
    +            # x[n:] = (D1+D2)^-1 * ( bx[n:] - D1*bzl[:n]  - D2*bzl[n:] ) 
    +            #         - (D2-D1)*(D1+D2)^-1 * x[:n]         
    +            x[n:] = div( x[n:] - mul(d1, z[:n]) - mul(d2, z[n:]), d1+d2 )\
    +                - mul( d3, x[:n] )
    +                
    +            # zl[:n] = D1^1/2 * (  x[:n] - x[n:] - bzl[:n] )
    +            # zl[n:] = D2^1/2 * ( -x[:n] - x[n:] - bzl[n:] ).
    +            z[:n] = mul( W['di'][:n],  x[:n] - x[n:] - z[:n] ) 
    +            z[n:] = mul( W['di'][n:], -x[:n] - x[n:] - z[n:] ) 
    +
    +        return g
    +
    +    return solvers.coneqp(P, q, G, h, kktsolver = Fkkt)['x'][:n]
    +
    +
    +
    +
    +

    Then we call the above functions and solve the problem, as done here

    +
    +
    +
    from cvxopt import matrix, normal
    +
    +X = matrix( [ [ 2, 0, 1], [0, 1, 3]])
    +y = matrix( [4, 2, 3])
    +x = l1regls(X,y)
    +
    +
    +
    +
    +
         pcost       dcost       gap    pres   dres
    + 0: -2.7070e+01 -1.6544e+01  2e+01  6e+00  2e-01
    + 1: -2.2433e+01 -2.4632e+01  2e+00  9e-16  1e-16
    + 2: -2.4140e+01 -2.4332e+01  2e-01  1e-15  3e-16
    + 3: -2.4200e+01 -2.4203e+01  2e-03  5e-16  2e-15
    + 4: -2.4201e+01 -2.4201e+01  2e-05  9e-16  6e-16
    +Optimal solution found.
    +
    +
    -

    4.12. Linking the regression analysis with a statistical interpretation¶

    +

    4.11. Linking the regression analysis with a statistical interpretation¶

    We will now couple the discussions of ordinary least squares, Ridge and Lasso regression with a statistical interpretation, that is we move from a linear algebra analysis to a statistical analysis. In @@ -2420,7 +2579,7 @@ 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.

    -

    4.13. Deriving OLS from a probability distribution¶

    +

    4.12. Deriving OLS from a probability distribution¶

    Our basic assumption when we derived the OLS equations was to assume that our output is determined by a given continuous function \(f(\boldsymbol{x})\) and a random noise \(\boldsymbol{\epsilon}\) given by the normal @@ -2576,7 +2735,7 @@ p(Y=1\vert X=1)=\frac{p(X=1\vert Y=1)p(Y=1)}{p(X=1\vert Y=1)p(Y=1)+p(X=1\vert Y=

    That is, in case of a positive test, there is only a \(3\%\) chance of having breast cancer!

    -

    4.14. Bayes’ Theorem and Ridge and Lasso Regression¶

    +

    4.13. Bayes’ Theorem and Ridge and Lasso Regression¶

    Hitherto we have discussed Ridge and Lasso regression in terms of a linear analysis. This may to many of you feel rather technical and perhaps not that intuitive. The question is whether we can develop a @@ -2662,7 +2821,9 @@ Test MSE OLS 0.958228616652075 0.001 [ 1.0170259 0.27852549 -1.40702 1.03193199 0. ] 0.001 [ 1.034342 -0.18063928 -0. 0. 0. ] -0.021544346900318832 [ 1.01825571 0.26412372 -1.37186301 1.00890601 0. ] +

    +
    +
    0.021544346900318832 [ 1.01825571  0.26412372 -1.37186301  1.00890601  0.        ]
     0.021544346900318832 [ 0.92280994 -0.         -0.         -0.          0.        ]
     0.46415888336127775 [ 1.0344707   0.07160764 -0.89928965  0.69843037  0.        ]
     0.46415888336127775 [0.48019541 0.         0.         0.         0.        ]
    @@ -2670,7 +2831,7 @@ Test MSE OLS
     10.0 [0. 0. 0. 0. 0.]
     
    -_images/chapter2_351_1.png +_images/chapter2_313_2.png

    How can we understand this?

    diff --git a/doc/LectureNotes/_build/html/chapter3.html b/doc/LectureNotes/_build/html/chapter3.html index 989438d69..4735f8747 100644 --- a/doc/LectureNotes/_build/html/chapter3.html +++ b/doc/LectureNotes/_build/html/chapter3.html @@ -587,10 +587,10 @@ number \(i\) is left out. Usin
    -
    Runtime: 0.139462 sec
    +
    Runtime: 0.136687 sec
     Jackknife Statistics :
     original           bias      std. error
    - 100.065        100.055        0.149894
    + 99.9196        99.9096        0.149076
     
    @@ -718,10 +718,10 @@ theorem.

    -
    Runtime: 2.40859 sec
    +
    Runtime: 1.78082 sec
     Bootstrap Statistics :
     original           bias      std. error
    - 100.148  14.7733        100.151        0.147722
    + 99.9769  14.9969        99.9765        0.149832
     
    ---------------------------------------------------------------------------
    diff --git a/doc/LectureNotes/_build/html/chapter4.html b/doc/LectureNotes/_build/html/chapter4.html
    index 078306fe7..ee803c07c 100644
    --- a/doc/LectureNotes/_build/html/chapter4.html
    +++ b/doc/LectureNotes/_build/html/chapter4.html
    @@ -55,7 +55,7 @@
         
         
         
    -    
    +    
         
         
         
    @@ -144,12 +144,12 @@
      
      
  • - 4. Resampling Methods + 4. Ridge and Lasso Regression
  • - 5. Ridge and Lasso Regression + 5. Resampling Methods
  • @@ -725,18 +725,112 @@ the probability of a given category. This leads us to the logistic function.

  • -
    ---------------------------------------------------------------------------
    -FileNotFoundError                         Traceback (most recent call last)
    -<ipython-input-1-a77d5ac269b2> in <module>
    -     38     plt.savefig(image_path(fig_id) + ".png", format='png')
    -     39 
    ----> 40 infile = open(data_path("chddata.csv"),'r')
    -     41 
    -     42 # Read the chd data as  csv file and organize the data into arrays with age group, age, and chd
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDAgeAgegroupCHD
    012110
    122310
    232511
    342910
    452110
    ...............
    95966181
    96976981
    97986581
    98996481
    991006380
    +

    100 rows × 4 columns

    +
    _images/chapter4_5_1.png

    What we could attempt however is to plot the mean value for each group.

    @@ -753,6 +847,9 @@ the probability of a given category. This leads us to the logistic function.

    +
    +_images/chapter4_7_0.png +

    We are now trying to find a function \(f(y\vert x)\), that is a function which gives us an expected value for the output \(y\) with a given input \(x\). In standard linear regression with a linear dependence on \(x\), we would write this in terms of our model

    @@ -852,6 +949,11 @@ p(t) = \frac{1}{1+\mathrm \exp{-t}}=\frac{\exp{t}}{1+\mathrm \exp{t}}. +
    +_images/chapter4_13_0.png +_images/chapter4_13_1.png +_images/chapter4_13_2.png +

    We assume now that we have two classes with \(y_i\) either \(0\) or \(1\). Furthermore we assume also that we have only two parameters \(\beta\) in our fitting of the Sigmoid function, that is we define probabilities

    @@ -1016,6 +1118,24 @@ classification.

    +
    +
    (426, 30)
    +(143, 30)
    +Test set accuracy with Logistic Regression: 0.94
    +Test set accuracy Logistic Regression with scaled data: 0.96
    +
    +
    +
    /Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/linear_model/_logistic.py:762: ConvergenceWarning: lbfgs failed to converge (status=1):
    +STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.
    +
    +Increase the number of iterations (max_iter) or scale the data as shown in:
    +    https://scikit-learn.org/stable/modules/preprocessing.html
    +Please also refer to the documentation for alternative solver options:
    +    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
    +  n_iter_i = _check_optimize_result(
    +
    +
    +

    In addition to the above scores, we could also study the covariance (and the correlation matrix). We use Pandas to compute the correlation matrix.

    @@ -1058,6 +1178,10 @@ We use Pandas to compute the correlation matrix.

    +
    +_images/chapter4_51_0.png +_images/chapter4_51_1.png +

    In the above example we note two things. In the first plot we display the overlap of benign and malignant tumors as functions of the various @@ -1138,6 +1262,39 @@ applications. This will be discussed later this semester ( +

    (426, 30)
    +(143, 30)
    +Test set accuracy with Logistic Regression: 0.94
    +Test set accuracy Logistic Regression with scaled data: 0.96
    +[1.         1.         1.         1.         1.         1.
    + 1.         1.         0.92857143 0.92857143]
    +Test set accuracy with Logistic Regression  and scaled data: 0.96
    +
    +
    +
    /Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/linear_model/_logistic.py:762: ConvergenceWarning: lbfgs failed to converge (status=1):
    +STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.
    +
    +Increase the number of iterations (max_iter) or scale the data as shown in:
    +    https://scikit-learn.org/stable/modules/preprocessing.html
    +Please also refer to the documentation for alternative solver options:
    +    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
    +  n_iter_i = _check_optimize_result(
    +
    +
    +
    ---------------------------------------------------------------------------
    +ModuleNotFoundError                       Traceback (most recent call last)
    +<ipython-input-8-12adb44b1c20> in <module>
    +     34 
    +     35 
    +---> 36 import scikitplot as skplt
    +     37 y_pred = logreg.predict(X_test_scaled)
    +     38 skplt.metrics.plot_confusion_matrix(y_test, y_pred, normalize=True)
    +
    +ModuleNotFoundError: No module named 'scikitplot'
    +
    +
    +
    @@ -2256,7 +2413,7 @@ function.

    - 5. Ridge and Lasso Regression + 5. Resampling Methods 7. Support Vector Machines, overarching aims
    diff --git a/doc/LectureNotes/_build/html/reports/chapter4.log b/doc/LectureNotes/_build/html/reports/chapter4.log index f2d559b52..64735e6fa 100644 --- a/doc/LectureNotes/_build/html/reports/chapter4.log +++ b/doc/LectureNotes/_build/html/reports/chapter4.log @@ -17,73 +17,61 @@ Traceback (most recent call last): raise CellExecutionError.from_cell_and_msg(cell, exec_reply['content']) nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell: ------------------ -%matplotlib inline - -# 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.model_selection import train_test_split -from sklearn.utils import resample -from sklearn.metrics import mean_squared_error -from IPython.display import display -from pylab import plt, mpl -plt.style.use('seaborn') -mpl.rcParams['font.family'] = 'serif' +import numpy as np +from sklearn.model_selection import train_test_split +from sklearn.datasets import load_breast_cancer +from sklearn.linear_model import LogisticRegression -# Where to save the figures and data files -PROJECT_ROOT_DIR = "Results" -FIGURE_ID = "Results/FigureFiles" -DATA_ID = "DataFiles/" +# Load the data +cancer = load_breast_cancer() -if not os.path.exists(PROJECT_ROOT_DIR): - os.mkdir(PROJECT_ROOT_DIR) +X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,random_state=0) +print(X_train.shape) +print(X_test.shape) +# Logistic Regression +logreg = LogisticRegression(solver='lbfgs') +logreg.fit(X_train, y_train) +print("Test set accuracy with Logistic Regression: {:.2f}".format(logreg.score(X_test,y_test))) +#now scale the data +from sklearn.preprocessing import StandardScaler +scaler = StandardScaler() +scaler.fit(X_train) +X_train_scaled = scaler.transform(X_train) +X_test_scaled = scaler.transform(X_test) +# Logistic Regression +logreg.fit(X_train_scaled, y_train) +print("Test set accuracy Logistic Regression with scaled data: {:.2f}".format(logreg.score(X_test_scaled,y_test))) -if not os.path.exists(FIGURE_ID): - os.makedirs(FIGURE_ID) -if not os.path.exists(DATA_ID): - os.makedirs(DATA_ID) +from sklearn.preprocessing import LabelEncoder +from sklearn.model_selection import cross_validate +#Cross validation +accuracy = cross_validate(logreg,X_test_scaled,y_test,cv=10)['test_score'] +print(accuracy) +print("Test set accuracy with Logistic Regression and scaled data: {:.2f}".format(logreg.score(X_test_scaled,y_test))) -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("chddata.csv"),'r') - -# Read the chd data as csv file and organize the data into arrays with age group, age, and chd -chd = pd.read_csv(infile, names=('ID', 'Age', 'Agegroup', 'CHD')) -chd.columns = ['ID', 'Age', 'Agegroup', 'CHD'] -output = chd['CHD'] -age = chd['Age'] -agegroup = chd['Agegroup'] -numberID = chd['ID'] -display(chd) - -plt.scatter(age, output, marker='o') -plt.axis([18,70.0,-0.1, 1.2]) -plt.xlabel(r'Age') -plt.ylabel(r'CHD') -plt.title(r'Age distribution and Coronary heart disease') +import scikitplot as skplt +y_pred = logreg.predict(X_test_scaled) +skplt.metrics.plot_confusion_matrix(y_test, y_pred, normalize=True) +plt.show() +y_probas = logreg.predict_proba(X_test_scaled) +skplt.metrics.plot_roc(y_test, y_probas) +plt.show() +skplt.metrics.plot_cumulative_gain(y_test, y_probas) plt.show() ------------------ --------------------------------------------------------------------------- -FileNotFoundError Traceback (most recent call last) - in  - 38 plt.savefig(image_path(fig_id) + ".png", format='png') - 39  ----> 40 infile = open(data_path("chddata.csv"),'r') - 41  - 42 # Read the chd data as csv file and organize the data into arrays with age group, age, and chd +ModuleNotFoundError Traceback (most recent call last) + in  + 34  + 35  +---> 36 import scikitplot as skplt + 37 y_pred = logreg.predict(X_test_scaled) + 38 skplt.metrics.plot_confusion_matrix(y_test, y_pred, normalize=True) -FileNotFoundError: [Errno 2] No such file or directory: 'DataFiles/chddata.csv' -FileNotFoundError: [Errno 2] No such file or directory: 'DataFiles/chddata.csv' +ModuleNotFoundError: No module named 'scikitplot' +ModuleNotFoundError: No module named 'scikitplot' diff --git a/doc/LectureNotes/_build/html/searchindex.js b/doc/LectureNotes/_build/html/searchindex.js index 5185a8cf4..08e6b3d20 100644 --- a/doc/LectureNotes/_build/html/searchindex.js +++ b/doc/LectureNotes/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["Clustering","chapter1","chapter10","chapter2","chapter3","chapter4","chapter5","chapter6","chapter7","chapter8","chapter9","content","intro","linalg","schedule","statistics","teachers","textbooks"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["Clustering.ipynb","chapter1.ipynb","chapter10.ipynb","chapter2.ipynb","chapter3.ipynb","chapter4.ipynb","chapter5.ipynb","chapter6.ipynb","chapter7.ipynb","chapter8.ipynb","chapter9.ipynb","content.md","intro.md","linalg.ipynb","schedule.md","statistics.ipynb","teachers.md","textbooks.md"],objects:{},objnames:{},objtypes:{},terms:{"000":2,"000000":[1,3,9],"00000000e":[1,3],"0001":2,"00015921913736794912":7,"00019998":3,"00024087":3,"00029012":3,"00034944":3,"00042089":3,"00050694":3,"00061058":3,"00073541":3,"00079968":3,"00088573":3,"00096314":3,"001":[2,3,5,6],"00106677":3,"00109273":[],"00115999":3,"00128479":3,"00139705":3,"00154733":3,"00168251":3,"00186347":3,"00200":6,"00202624":3,"00224413":3,"0024401":3,"00270244":3,"00293838":3,"0032542":3,"0032873138755776365":15,"00353823":3,"003704":1,"003717":1,"003759":1,"003774":1,"003788":1,"00391839":3,"004":3,"00426027":3,"00433417":9,"004456043243408203":0,"00445655":9,"00471782":3,"0049999999999999845":[],"004999999999999996":[],"004999999999999997":[],"0050000000000000044":[],"005000000000000007":1,"00512927":3,"0056799":3,"00617499":3,"00683748":3,"00727646693":1,"00728323e":3,"0074331":3,"007789":[],"007824":1,"00823002":3,"0086649156":1,"008675369724976777":3,"008885578722629236":[],"00890601":3,"00894639":3,"009154":1,"009163470508352228":3,"009735":9,"00973536":9,"009790":1,"009883615646716182":1,"009883615646716184":[],"009883615646716186":[],"00990475":3,"009911":1,"01057384067458835":[],"010679893512872646":[],"01076611":3,"0110":15,"011347":1,"01191824":3,"01210814993019007":[],"01295356":3,"0140617":[],"01433809":3,"01503674":[],"015037":[],"01514394":[],"015144":[],"01558197":3,"0169643":3,"0170259":3,"01724499":3,"01825571":3,"01867234e":15,"01873344":9,"01873869":3,"02073509":3,"021544346900318832":3,"02161783e":15,"021901":9,"02190139":9,"02252765":3,"02492265":3,"02493044e":[],"02568378":[],"025709":9,"02625193":6,"02707227":3,"02730126581656065":15,"02881304":[],"029688":[],"02968834":[],"02994311":3,"03019554":3,"030196":3,"030670":[],"03067028":[],"03099776":3,"031":3,"03193199":3,"03251863":3,"03256632e":2,"03303359":[],"033037772005753835":3,"03308408":3,"034342":3,"0344707":3,"0359565":3,"03607832":[],"03652792":3,"036528":3,"03697069":[],"03707133":9,"03750367":13,"03787596148305236":1,"03791824e":15,"038300":9,"03871832":[],"039039":3,"04205220e":15,"04260073e":[],"04315108":3,"04330858":[],"04346721":3,"04421672e":[],"044402":1,"04455272":3,"044553":3,"04529095":3,"0458":7,"04648335":3,"04683565":3,"04757618e":[],"04829457939163212":15,"051115":[],"051649":9,"0517473":3,"052645":[],"053053":3,"0530533":3,"05318162":[],"053182":[],"05364854":6,"05396545e":[],"054187":[],"054276":[],"054674":[],"055":4,"055085":3,"055744":[],"055774":3,"055831":[],"055887":[],"055916":[],"05614483":3,"056326":[],"056329":9,"056484":3,"057035":[],"057088709963637":1,"057320":[],"057332":[],"05755374":[],"057571":[],"057654":[],"057919":[],"058178":[],"058282":[],"058805":[],"058892":3,"059245":[],"059344":9,"059406":[],"059455":3,"059531":[],"059571":[],"059806":[],"059865":3,"059908":[],"059994":[],"060064":9,"060070":9,"060308":[],"06041458e":[],"060520":3,"060919":[],"061164":[],"061176":[],"061255":[],"06126507e":15,"061330":[],"061601":9,"061652":[],"061774":[],"061842":[],"061855":[],"061896":[],"06200174":3,"06209126":[],"062188":[],"062327":3,"062376":[],"062639":[],"062659":3,"062660":9,"062731":3,"062822":[],"062829":[],"062879":[],"062885":[],"062923":9,"062979":[],"063055":3,"063097":[],"063122":[],"063178":9,"063324":9,"063395":[],"063415":[],"063526":3,"063615":[],"063670":3,"063727":[],"063759":[],"063763":[],"063882":[],"063982":[],"064000":3,"06412177e":15,"064304":[],"064354":3,"064410":[],"064472":[],"064648":9,"064686":[],"064783":9,"06492086e":1,"064929":3,"064964":[],"064982":[],"065":4,"065003":[],"065086":[],"065110":9,"065144":[],"065151":[],"065200":[],"065202":[],"065204":3,"065355":[],"065591":[],"065618":[],"065660":[],"065680":[],"065762":[],"065860":9,"065994":[],"066002":9,"06600226":9,"066030":9,"066047":3,"066074":9,"066092":[],"066116":3,"06619182206626131":[],"066249":3,"066272":3,"066294":[],"066312":9,"066389":[],"066403":9,"066487":[],"066629":[],"066683":9,"066761":[],"066788":[],"066835":[],"066837":9,"066951":9,"066963":[],"067043":3,"067061":[],"067123":[],"067132":9,"067175":9,"06724062":3,"067440":9,"067504":3,"067531":[],"067577":[],"067601":[],"067610":3,"067667":9,"067685":9,"067769":3,"067777":[],"067844":[],"067865":[],"067892":[],"067985":[],"067990":[],"068073":3,"068185":3,"068276":[],"068351":9,"068460":[],"068514":[],"068654":[],"068697":9,"068818":9,"068838":9,"068840":[],"068920":[],"069005":[],"069028":[],"069081":[],"069098":[],"069195":9,"069243":9,"069282":3,"069369":[],"069413":9,"069503":[],"069510":3,"069516":[],"069528":[],"069635":3,"069641":9,"069775":9,"069814":[],"069848":3,"069859":3,"069872":3,"069890":[],"069902":[],"069988":9,"070103":3,"070129":[],"070131":[],"070138":[],"070182":[],"070188":3,"070254":[],"070337":9,"070456":[],"070517":3,"070548":9,"070653":3,"070762":9,"070791":9,"070812":[],"070815":[],"070867":9,"070889":9,"070967":[],"071016":[],"071049":9,"07106781e":[],"071096":[],"07110274":13,"071248":[],"071268":3,"0713":1,"071313":[],"071325":[],"071435":9,"07145103":9,"071481":[],"071502":[],"071547":9,"07155335":[],"071576":[],"071579":[],"07159175":[],"07160764":3,"071660":9,"071667":3,"071681":[],"071684":[],"071761":[],"071855":3,"071887":[],"071917":[],"072094":[],"072198":[],"072279":3,"072424":[],"072471":[],"072555":9,"072589":[],"072598":3,"072620":[],"072654":9,"072710":9,"072826":[],"072879":9,"072910":3,"073":[],"073020":[],"073035":3,"073096":9,"073310":9,"073333":3,"073352":[],"073371":9,"073372":[],"073483":[],"073567":[],"073598":9,"073602":[],"073656":9,"073765":9,"073851":[],"073902":3,"073915":1,"073966":3,"074":[],"074027":[],"074067":9,"074096":3,"074099":3,"074134":[],"074170":[],"074191":[],"074201":9,"074207":3,"07421084":3,"074230":[],"07423848370736122":[],"074248":3,"074286":[],"074331":9,"074432":3,"074453":[],"074488":[],"07456491":3,"074568":[],"074618":9,"074665":3,"074696":3,"074848":[],"074979":9,"075084":[],"075119":[],"075163":3,"075194":9,"075212":[],"07521771":[],"075218":[],"075261":[],"075266":[],"075289":3,"075296":9,"075309":3,"075526":9,"075545":9,"0755452":9,"075562":[],"075615":9,"075754":3,"075772":[],"07581375":3,"075814":3,"075821":[],"075865":3,"075993":9,"076062":[],"076189":3,"076283":3,"076320":[],"076367":9,"076398":[],"076408":[],"076410":9,"076466":9,"076469":[],"076730":[],"076938":9,"077010":9,"077046":9,"077143":9,"077160":[],"077212":3,"07729012413236423":9,"077303":3,"077305":9,"077386":3,"07744472306026946":7,"077469":[],"077533":[],"077623":[],"077771":9,"07777777777777778":2,"077891":[],"077927":9,"078049":[],"078076":3,"078099":9,"078103":9,"078244":9,"078279":3,"078311":[],"078388":3,"078399":3,"07839924":3,"078451":3,"078674":3,"078693":9,"078710":9,"078746":9,"078927":[],"078930":[],"078937":3,"078966":[],"079001":[],"079037":3,"079137":3,"079139":[],"079333":3,"079365":[],"07944154":13,"079624":[],"079785":9,"079848":9,"079956":[],"080024":9,"080084":1,"080115":[],"080223":3,"080264":9,"080325":9,"080336":3,"080381":3,"080387":3,"080398":[],"08043851":3,"080570":9,"080626":9,"080675":9,"080845":[],"080871":3,"081077":9,"081103":3,"081129":9,"081210":9,"081227":3,"081260":[],"081402":[],"081480":3,"081489":9,"081514":[],"08170444":[],"081816":[],"081886":[],"082211":9,"082225":9,"082247":9,"08248290e":[],"08251898":15,"082687":3,"08271336":[],"082866":3,"082990":[],"083128":[],"08318298e":2,"0832":[],"083295":9,"083376":[],"083577":[],"083618":3,"083657":3,"083658":9,"083728":3,"083775":3,"084092":[],"08415761":[],"084167":[],"084181":3,"084249":9,"084251":3,"084604":9,"084813":9,"084873":[],"084931":3,"08501147":1,"085121":9,"085285":[],"085289":3,"085597":3,"085646":9,"085676":[],"085928":3,"085951":[],"08611111111111111":2,"086116":[],"086325":3,"086465":3,"086592":[],"08665060086846632":3,"086652":9,"086974":9,"087202":9,"087482":[],"087563":9,"0881981":3,"08839750e":1,"088660":3,"08871404":3,"088871":1,"08888888888888889":2,"089300":3,"089425":9,"089504":3,"089916":3,"089931":3,"090274":9,"09103481e":15,"091159":3,"09166666666666666":2,"0917":7,"091979":3,"093755":9,"09487315108590391":9,"095173":3,"095472":3,"09609807":3,"096726":[],"09672604":[],"09678277e":15,"09741585e":[],"097452":3,"09903804":6,"099763":[],"09976319":[],"100":[0,1,2,3,4,5,6,7,8,9,13,15,16],"1000":[0,1,2,5,6,9,12,15],"10000":[0,3,4,8,9,15],"100000":6,"10001":8,"1001":15,"1002":15,"1003":15,"1005":15,"1007125":1,"1009":15,"10094646e":[],"1011":15,"1013":15,"10131725":[],"1013904243":15,"1015":15,"102":1,"1022964509394572":2,"1023":15,"1026":15,"1027":15,"103":2,"1030":15,"10307631":[],"10327559":13,"1037":15,"10378326e":2,"1038":15,"1040":15,"10405456":9,"1047":15,"105137868830763":15,"10555555555555556":2,"10589577":3,"106095":9,"108":1,"10806972":[],"108070":[],"10896672e":15,"10898112e":[],"10th":7,"10x":1,"110":1,"1100":15,"1101":15,"11022302e":3,"111":[2,5,10],"1111111111111111":2,"112283":1,"112383":9,"11304709e":15,"11388888888888889":2,"11456076e":[],"11462415":3,"11507992e":2,"11666666666666667":2,"117":6,"11944444444444445":2,"12002944":[],"1203284":6,"121":[6,7,8],"122":[6,7,8],"12222222222222222":2,"12283463":[],"123190":1,"123459876":15,"12366979e":15,"124":1,"12497018e":1,"12618549":3,"127773":15,"12777777777777777":2,"1298":7,"13055555555555556":2,"13060772":1,"13162821e":3,"13209041":[],"13266452e":1,"133":5,"13328820e":[],"13457922":[],"13519106":1,"13579199e":[],"1361111111111111":2,"13646574":3,"137268":[],"137400784702912":1,"137652":9,"13803928":1,"13865173":3,"138775":9,"13891144e":3,"139462":4,"139475":[],"1404":1,"1437":2,"1440501043841336":2,"1445":4,"14459063":[],"1446":4,"1447":4,"1448":4,"1449":4,"14662074":1,"14722222222222223":2,"147400":9,"147420":9,"147722":4,"148":4,"149366":[],"149667":[],"149894":4,"149903":[],"14g":4,"150":6,"15005476":3,"15024669":[],"151":4,"152636":[],"1527777777777778":2,"153106":1,"15324631":1,"15332528e":[],"154720":1,"15475232":1,"154911":1,"155491":1,"155687":1,"155883":1,"156":1,"157":1,"15751596":3,"158":1,"159":1,"15979239e":15,"15g":4,"160":1,"16111111111111112":2,"16211139":3,"16342407":3,"16496581e":[],"16553696":[],"16637855e":15,"16666666666666666":2,"16807":15,"16831012":3,"16861772":3,"168618":3,"16b8e3cda33a":2,"17117385":[],"17174962e":2,"17234827e":[],"17248441e":3,"17385778e":1,"174497":3,"17449733":3,"1758506":1,"17654307":[],"17707436":[],"17777777777777778":2,"17801022":3,"17917768":3,"17949575":3,"17953942":9,"1797":2,"180092462880674":[],"18029127":3,"18063928":3,"18220995":1,"18224665":3,"18333333333333332":2,"18404906e":[],"1856411":[],"18611111111111112":2,"18620601e":1,"18673098":9,"18954529":[],"18968431e":15,"1914224774238273":[],"19207979":3,"1940":1,"1943":10,"197":1,"1970":13,"1973":7,"197370":9,"19742904e":[],"1979":4,"1989":15,"19937":15,"19955871":[],"199559":[],"19972087e":15,"1_1":10,"1_2":10,"1_3":10,"1cm":[1,6,8,15],"1e10":0,"200":[1,6,7,8,15],"200000":1,"2004":5,"2006":17,"2010":2,"2011":2,"2015":2,"2016":1,"2018":4,"201841":[],"20184113":[],"2021":0,"20277777777777778":2,"203757":3,"20375701":3,"205466494327873":[],"20632410e":3,"207545":9,"20772452":[],"20819609e":[],"20833333333333334":2,"20843563e":[],"20906175e":15,"210340":9,"21058097":3,"212":[],"21208310e":[],"212327334149492":1,"2125":[],"2126":[],"2127":[],"2128":[],"2129":[],"213":[],"213103":9,"21347282":[],"213743":9,"214":[],"2147483647":15,"215":[],"216":[],"21623344":1,"216290":9,"216683":9,"22044605e":3,"22076362":1,"221":6,"22209371e":1,"22443803":3,"22527008e":15,"22690428":3,"22717936e":15,"22847924":3,"22999784":[],"229998":[],"23117916e":15,"23167717":3,"23333333333333334":2,"2335879":[],"23382086e":[],"23438810e":1,"24444444444444444":2,"24829908":3,"250":[5,7],"25000":1,"250000":1,"250154":1,"251559":3,"2515593":3,"25190225e":1,"25226753e":15,"25240108":[],"253":[],"25303483":[],"253775":1,"254":[],"254509":[],"25450941":[],"25457052":[],"255":[],"2551":1,"256":[],"256962":1,"257":[],"25726439e":[],"2572e3a4b38d":2,"25803281":[],"259107":[],"25910749":[],"259153":9,"2627588":13,"26301436":3,"26381865":[],"263819":[],"264":1,"26412372":3,"265":1,"2653678":1,"266":1,"267":1,"26710969":3,"26780278":3,"2683":4,"2684":4,"2685":4,"2686":4,"2687":4,"26890510e":[],"269":1,"26974938e":[],"270":1,"27296891e":[],"276263":9,"27753165e":15,"27852549":3,"27924636":3,"27n_":15,"280647":9,"28166741":[],"282":1,"282727":9,"28310983":[],"283110":[],"2836":15,"28475098":6,"2861":15,"2873":7,"2882":15,"2886":15,"2890":1,"2892":15,"28971976":9,"289720":9,"290":[],"291":[],"2915":15,"291614":[],"29167186":3,"292":[],"293":[],"2931":[],"294":[],"295656121491569":[],"296247":1,"2968":[],"297219777724628":9,"297260":1,"2980":[],"298273":1,"2983233":13,"298375":1,"2990":[],"299444":9,"29944428":9,"2_1":10,"2_2":10,"2_3":10,"2_i":10,"2_m":15,"2_x":15,"2cm":6,"2ff97f4bf03b":15,"2nd":7,"2x_ix_jy_iy_j":6,"2x_j":6,"2y_i":8,"2y_j":6,"30000":1,"300162456113691":[],"30119421":6,"306854":[],"30685416":[],"30879705":1,"30968181":1,"31109204e":1,"31318084":3,"31457796":3,"3155":[3,4],"3156929654100207":7,"31608475e":[],"31718909":9,"31730641":[],"317367":9,"31853484":[],"31896852":6,"3200":2,"32047562":1,"323291478597321":15,"3250":2,"32521615e":15,"327631":1,"32938847":13,"32945844e":15,"3304":1,"33066907e":3,"3310":1,"3317":1,"333":5,"333333":1,"3338":1,"3344":1,"33443859e":[],"33544681":[],"33569998e":1,"33861512":[],"338869":3,"33886902":3,"339535706819584":15,"33953571":15,"340782":9,"34114547":3,"34114641e":1,"34172919":[],"3436":1,"3437":1,"344172":1,"34569596":3,"346433":9,"34643337":9,"34902789e":15,"350387":[],"35038714":[],"351636":9,"35176067":[],"35182854":3,"35216172e":1,"35367281e":3,"358869339268145":15,"35886934":15,"359":3,"359640894899012":[],"360":2,"360688":1,"3621311":3,"36436520e":[],"36468301":[],"3655222":3,"369139":9,"36941772":[],"369418":[],"37186301":3,"372889":3,"3728892":3,"37416969":9,"374170":9,"37738324":[],"38207279e":[],"38216436":[],"38629436":13,"38777878e":3,"38937995e":15,"38986237":[],"39579407":3,"396740":9,"39674043":9,"39706038":3,"397700":9,"39792608e":[],"3cd19a0768e1":[],"4000":17,"401842":9,"40212127":[],"404":1,"40425078e":15,"405890":9,"40702":3,"40708470e":1,"40859":4,"4087793":3,"40902095":[],"41433969":3,"41511965e":2,"415634483874318":1,"416694683938511":9,"4171578884124756":0,"41754964":[],"41770932":[],"418506":9,"41876428e":[],"42441033":3,"42847770e":15,"42937310e":15,"43054282":3,"435490":[],"43549028":[],"43766686":9,"44089210e":3,"442600":9,"44395541":[],"44625466e":15,"44970586e":2,"45013332e":[],"45019484":[],"450257":9,"4557763":9,"458078":9,"45937170e":[],"45960079":3,"46016532e":3,"461":15,"462":5,"46323168e":15,"46415888336127775":3,"46423858e":1,"465564":[],"46556436":[],"466":15,"46675058":1,"46914544e":[],"46929603e":[],"47042744":3,"47079457e":15,"47125748":3,"47132891":3,"47441766":3,"47566390e":15,"47654764e":[],"47815203":9,"48019541":3,"48154187202453613":0,"48257387":16,"48471852e":[],"48476997":9,"48608063e":[],"48994188":3,"4940954":1,"497221":[],"49722108":[],"49865673":[],"4990":15,"4992":15,"4997":15,"4c4c7f":[7,8],"4y_i":8,"500":[2,4,5,7,8,15],"500000":1,"50000455":3,"50000553":3,"50000718":3,"50000855":3,"50000969":3,"50001063":3,"50001142":3,"50001207":3,"50001261":3,"50001306":3,"50001343":3,"50001374":3,"500014":3,"50001414":3,"50001422":3,"50001439":3,"50001454":3,"50001466":3,"50001476":3,"50001485":3,"50001492":3,"50001498":3,"50001502":3,"50001506":3,"5000151":3,"50001512":3,"50001515":3,"50001517":3,"50001518":3,"50001519":3,"50001521":3,"50001522":3,"50001523":3,"50001524":3,"50001525":3,"5018":15,"50321091":3,"50394742":[],"506":1,"507d50":[7,8],"5098779":3,"509878":3,"50j":5,"50x10":2,"510":2,"5120":0,"512132":1,"51257863e":[],"51345668e":[],"51363731e":[],"51523276e":[],"515768":[],"51576807":[],"51893804e":[],"51943726":9,"519842":1,"52158335":1,"5222222222222223":2,"526744":9,"52687171":[],"526872":[],"52722156":[],"52874252":3,"52d2c51caad1":[],"5303329":9,"5305555555555556":2,"535457":3,"53545715":3,"5378811":9,"539261":9,"54039921":3,"54096582":[],"540966":[],"54121682":[],"541217":[],"54152940e":[],"54237024":15,"54702088e":[],"55111512e":3,"55138385":9,"551384":9,"55280484":[],"5555555555555556":2,"55707065":[],"557071":[],"557795":9,"55854694":9,"56033697":3,"56198284":3,"56216797e":1,"564374":9,"56536":1,"569":2,"56939714":3,"57051369":[],"571":3,"574465":9,"5755035":1,"57781668":[],"57871326":[],"581766":9,"58176612":9,"582":[1,2],"58228342e":15,"58239999":[],"582400":[],"584804":1,"58521266":9,"585213":9,"58596975":[],"585970":[],"587401":1,"58836420e":15,"5888888888888889":2,"59007674e":15,"59304755e":1,"5944444444444444":2,"59480085":[],"5cm":15,"60122668e":15,"60293962":3,"60394236e":1,"60420593":3,"60673226":9,"60949193":3,"609492":3,"60999846":[],"61069091e":15,"6111111111111112":2,"61124978":[],"61234223":[],"614808":9,"61505887e":[],"61745046e":[],"618":1,"6183694":3,"61869821":[],"622539":9,"62253933":9,"6226921":[],"62316154e":15,"62359224e":15,"62373464":9,"625":5,"62783293":[],"62856593":1,"62894215":3,"629961":1,"6300745149331701":1,"63315151":1,"63339159":[],"63374631":[],"63437572":[],"63442451e":1,"63498144":3,"636323":9,"63632311":9,"63680118":[],"637129335071195":1,"63993205e":[],"64012627":3,"64166831e":[],"64447921":[],"64580686":[],"646283":9,"64669382":[],"646694":[],"647473":9,"64857826e":[],"649382":9,"64x50":2,"650024":[],"65002433":[],"6510573774179256":15,"65105738":15,"65238878":13,"65245958":[],"653095390463358":1,"653702":13,"65482578":[],"65572035":[],"65599927":[],"65766387":[],"65885453":3,"65933852":[],"65939208e":[],"66020213e":1,"6614":[],"66183486":9,"661835":9,"6628996975186952":1,"66302359":[],"66383151":[],"66677842":[],"66800261":[],"66880047":[],"67006792":[],"67060602":[],"671089":1,"6714":[],"67171347e":15,"67279536":[],"67303655":9,"673037":9,"67407338e":15,"67450955":[],"67708423":1,"677149":[],"67714918":[],"6796265324852733":3,"68002363":3,"680024":3,"68034946e":[],"6813":4,"6814":4,"6815":4,"6816":4,"6817":4,"6818813252071303":15,"68188133":15,"68192193":3,"68316185":1,"68342382":[],"68542204":3,"68616263":13,"68729414":[],"68937695":1,"689519":9,"69069n_":15,"693361":1,"69347005":[],"693850":9,"69385025":9,"69519693":[],"695197":[],"69573183":1,"69695259":3,"69843037":3,"69981195e":15,"6999536":9,"6ea927cc6e88":2,"6n_":15,"7022283":1,"70234019":[],"70415861":[],"70523024e":[],"70589906":[],"70710678":3,"70790937":[],"70832814":3,"70885528e":3,"70886748":1,"70946493e":[],"712018":9,"71281409":[],"71351486":[],"71442781":13,"71606852":[],"7162":[],"71669651":1,"7172":[],"72108703":[],"72174172":9,"72218808":[],"72312577":[],"7236674":3,"7240496":[],"725394195434945":[],"72780613e":15,"72859758":3,"72879865e":[],"72981762":6,"73091052e":1,"73453972":[],"7371165871823337":3,"73921714":[],"74081822":6,"74107697":9,"74143127e":1,"7432283":[],"74382593":1,"74495014":[],"74840212":3,"74845978":[],"74921867":[],"751699":9,"75170092":3,"75195757":3,"7522047280566193":[],"75382481":[],"75524378":[],"75629493":[],"75841112":[],"75932862":[],"76172241e":[],"762":9,"7621419":1,"76290332":[],"763880":[],"76388013":[],"76497666":[],"765":5,"76504618":[],"76570177":1,"76648901e":[],"76936315":3,"7693978131030923":9,"77152076":3,"77156117e":3,"7718":7,"772b904ae9cb":4,"77317984":1,"7733":4,"77350269e":[],"774300":1,"77661393e":15,"77714169":6,"78080633":1,"78195":[],"78857629":1,"78941903":3,"78944806":[],"7899453":[],"79111643":3,"79295029e":15,"79326583e":15,"79328828":[],"793701":1,"794282":9,"79459035":1,"79648291":1,"79902342":1,"7c394b1e8b71":7,"7d7d58":[7,8],"800":5,"80004454e":[],"800266":[],"80026635":[],"80121":[],"80469739":3,"8055555555555556":2,"81160425":3,"81620806":[],"81633628":9,"81781888":9,"82198978":3,"8265786":3,"827265":1,"82889306e":15,"8305555555555556":2,"83425361":9,"834254":9,"83512277":3,"83614019":[],"8388888888888889":2,"83935285":[],"84087101":[],"842":1,"84251485":3,"842515":3,"84355903e":2,"84372853":1,"84443254e":2,"84658093e":15,"8479552268981934":0,"84994524":3,"8520127":[],"85278450e":1,"85396354":[],"85450859":9,"85463934e":[],"85497163e":[],"85546305e":[],"85601992":3,"861":1,"86117291":3,"86134827":3,"86145244":9,"8638888888888889":2,"86436607":[],"86574276":[],"8666666666666667":2,"86692943":[],"8718475896381779":15,"87184759":15,"8722222222222222":2,"87381451":3,"875":2,"87761937":[],"8777777777777778":2,"87972591":[],"8802":[],"88046261":3,"88046462":[],"8805555555555555":2,"88297395":[],"88336879":3,"88559559":[],"8867467323038865":[],"88693966e":15,"88712946":[],"8888888888888888":2,"8901":[],"8914984":[],"8921171964770647":9,"8923":1,"89288636":9,"89383322":[],"89410423":3,"8944444444444445":2,"89742056":3,"897421":3,"898500":9,"89850037":9,"89928965":3,"89942598":1,"89975818":[],"8x8":2,"90075537":3,"90220243":3,"90233874":[],"90266948":3,"90316476":[],"9040":7,"9055555555555556":2,"90618734e":15,"907307":9,"90730735":9,"90825063":1,"91012519e":[],"9111111111111111":2,"91128596":3,"91145266e":15,"91417278":[],"91549644":1,"9166666666666666":2,"916978":[],"91697817":[],"9171356":1,"91760278":3,"91812702":3,"9222222222222223":2,"922312":[],"92231203":[],"92280994":3,"924018":1,"925":2,"92507116e":2,"92578916":3,"92605247":1,"92645039":9,"92646965":9,"926470":9,"92732185e":[],"9277777777777778":2,"9279671770201344":15,"92919670e":15,"9305555555555556":2,"931":1,"93100040e":15,"93155188":3,"93158979":3,"932734":[],"93273404":[],"933":3,"9354":[],"9361111111111111":2,"937":15,"93799826":3,"938":15,"9388888888888889":2,"939":[1,15],"94019247e":1,"94034531":1,"94284104":3,"94320205":3,"9444444444444444":2,"94536341":15,"94591015":13,"94639099":9,"946893955211749":1,"947543":9,"9482527":3,"948729":[],"95014575":[],"95231424":3,"9527777777777777":2,"95284275":3,"95351665":3,"954":15,"95443703e":3,"9547578478889096":1,"95517094":3,"955171":3,"9555555555555556":2,"95628168":3,"956282":3,"956563":9,"95684892":3,"958228616652075":3,"9583333333333334":2,"959247":3,"960":15,"96024953":3,"96084663":3,"961":15,"96104648":[],"9611111111111111":2,"962":15,"963499":9,"96349948":9,"9640435":3,"965885569080809":[],"96688672":3,"9674916":3,"967809":9,"96793117e":[],"97005689":3,"97101567e":15,"9722222222222222":2,"97243128":3,"97300836":3,"975":2,"97507735":3,"9756404":1,"976":6,"97622676":[],"976227":[],"97705827":3,"97723801":[],"97758848":3,"9777777777777777":2,"9780387310732":17,"9780387848570":17,"9781492032632":17,"97926491":3,"9804422":1,"98046438":1,"9805555555555555":2,"98091621":3,"98139097":3,"98275501":3,"98314755":[],"983148":[],"98413059":3,"98452685":[],"98454786":3,"985":15,"98526763":1,"98528992":1,"98531221":1,"98566191":3,"986":15,"9860803":[],"98609175":15,"986091753050161":15,"9861111111111112":2,"98661465":[],"98680716":3,"98716878":3,"9877742":[],"987902":1,"98808176":3,"988663":[],"9888888888888889":2,"98892195e":15,"98893512":[],"989":15,"9890348":3,"98927731":[],"9893447":3,"9898ff":[7,8],"99009525":3,"99009739":[],"9901168":1,"99013921":1,"99016161":1,"99018401":1,"99043999":[],"99088801":3,"9909252":[],"991":15,"991072":9,"99107239":9,"99115119":3,"99126104":[],"99133007":[],"99160404":[],"99176998":3,"99190487":[],"99194716":[],"992":15,"99218987":[],"99219378":[],"99242605":[],"99242921":3,"99248001":[],"99265097":3,"99273355":[],"99276945":[],"993":15,"99305549":[],"99305802":[],"99311297":[],"99316252":3,"99346398":[],"99363129":[],"99363383":[],"99371056":3,"99389612":3,"99393624":[],"994":4,"99400444":[],"99418903":9,"99420743":[],"99420997":[],"99428016":[],"9943201":3,"9945452":[],"99462421":[],"99473581":[],"9947756":3,"99478645":[],"99478898":[],"99492986":3,"99498985":1,"995":4,"99501236":1,"99503487":1,"99505739":1,"9950799":1,"99527696":[],"99528218":3,"9953048353087299":[],"99536326":[],"9953658":[],"99539415":3,"99544872":[],"9954538761021741":[],"99566069":3,"99578809":3,"99579317":[],"99581841":[],"99594294":[],"996":[3,4],"99600927":[],"99608161":3,"99636015":[],"9963961":3,"99650061":3,"99652042":[],"99652296":[],"99655111":[],"9967458":3,"99696351":[],"997":4,"99700706":3,"99709215":3,"99709325":[],"99710078":[],"99723611":1,"99728435":[],"99729756":3,"99730848":[],"99751458":3,"99758326":3,"99763569":[],"99767893":[],"99775587":3,"99782689":[],"99793613":3,"99799099":3,"998":4,"99813653":3,"99817842":[],"99825997":[],"99828624":3,"9983295":3,"99836973":[],"99845267":3,"9984806":[],"998577":3,"99861053":3,"99871521":3,"99881845":3,"99883879":[],"99884384":3,"99891285":[],"99893323":3,"999":[7,15],"99901896":3,"99903755":3,"99911427":3,"99918546":3,"99919837":3,"99926459":3,"9993237":3,"99933188":3,"99938942":3,"9994385":3,"99944272":3,"99945628":[],"99949306":3,"99953381":3,"99953475":3,"99957911":3,"99961294":3,"99965056":3,"99967865":3,"99970988":3,"9997332":3,"99975913":3,"99977849":3,"99980002":3,"9998161":3,"99984732":3,"99987324":3,"99988687":1,"99989476":3,"9999095":1,"99991263":3,"99992746":3,"99993212":1,"99993978":3,"99995":3,"99995475":1,"99995818594196":[],"999974281880048":1,"99997737":1,"9999794306626945":[],"9999822527140678":[],"9999864543345858":[],"9999868619217517":[],"9999878260589065":1,"9999910208315801":[],"9b9cf4fa1a95":[],"\u00f8yvind":16,"abstract":2,"break":[0,1,9],"byte":13,"case":[1,2,3,4,9,10,12,13,14],"catch":1,"char":15,"class":[1,2,4,5,6,7,9,10,15],"const":15,"default":[1,2,5,13],"ekstr\u00f8m":16,"export":7,"f\u00f8470":16,"final":[0,1,2,3,4,6,7,8,9,14,15,16],"float":[0,1,3,7,9,13,15],"function":[0,3,4,7,12,13],"import":[0,1,2,4,5,6,7,8,9,10],"int":[0,1,2,3,5,9,13,15],"long":[1,2,5,10,15],"new":[0,1,2,3,4,5,6,7,8,9,13,15],"null":15,"public":[1,12],"return":[0,1,2,3,4,5,6,7,9,13,15],"s\u00f8rli":16,"sch\u00f8yen":16,"short":[0,3,11],"steinsv\u00e5g":16,"super":3,"switch":[0,1],"throw":15,"true":[0,1,2,3,4,5,6,7,8,10,15],"try":[0,1,2,3,5,6,7,8,9,12,13,15],"var":[3,4,8,9,15],"while":[0,1,2,3,4,5,6,7,9,10,15],AGE:1,Adding:2,Age:5,And:[0,1,4,7,12,15],Are:9,Being:5,But:[0,2,3,4,7,8,15],CAS:[],DIS:1,Doing:[3,5,8],EoS:[1,4],FYS:14,For:[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,17],Going:2,Ising:[3,10],Its:[2,9],MDS:9,NNs:10,N_s:6,Not:[1,2,3,4],OLS:[1,4],One:[1,2,3,4,5,6,9,10,15],PCs:[9,12],RMS:15,Such:[4,10,15],That:[0,1,3,5,8,9,10,15],The:[8,13,14,16,17],Then:[0,1,2,4,5,6,7,8,9,10,13,15],There:[0,1,3,6,7,9,10,11,13,14,15,16],These:[0,1,3,6,7,8,9,10,13,15],Use:[1,7],Useful:[3,4,13],Using:[1,3,4,6,8,10,13],With:[1,3,4,6,7,8,9,10,13,15],__class__:8,__doc__:4,__future__:[6,7],__getattr__:[],__init__:[2,4],__name__:[4,8],_auto10:10,_auto1:[3,5,10,13,15],_auto2:[10,13,15],_auto3:[10,13],_auto4:[10,13],_auto5:[10,13],_auto6:[10,13],_auto7:[10,13],_auto8:10,_auto9:10,_ax:4,_base:6,_build:[12,17],_check_optimize_result:9,_compon:9,_datafram:[],_depth:7,_fraction:7,_lambda:1,_leaf:7,_logist:9,_make_index:[],_multilayer_perceptron:[1,2],_node:7,_num_sampl:[],_ratio:9,_sampl:7,_split:7,_varianc:9,_weight:7,a0faa0:[7,8],a77d5ac269b2:5,a_0:1,a_1a:1,a_2a:1,a_3:1,a_3a:1,a_4:1,a_4a:1,a_h:2,a_i:[1,2,10],a_j:[2,10],a_k:[2,10],aaron:17,ab_channel:12,abandon:2,abbrevi:14,abid:15,abil:[1,8],abl:[2,3,5,8,10,15],abort:15,about:[0,1,2,3,4,5,6,7,8,9,10,12,13,17],abov:[0,1,2,3,4,5,6,7,8,9,10,13,15],abovement:4,abs:[0,1,3],abscissa:5,absolut:[1,3,4],acccess:[],accept:[1,7],access:[1,9,15],accid:4,accompani:1,accomplish:[6,7],accord:[0,1,2,3,4,5,7,10,15],accordingli:9,account:[1,3,15],accumul:[10,15],accur:[4,8,15],accuraci:[1,2,3,5,7,8,9,10],accuracy_scor:[1,2,8],accuracy_score_numpi:2,achiev:[1,2,3,4,6,10,13],aco:15,acquaint:12,acquir:[2,12],acr:1,across:[2,4,7,12],act:[2,13],action:15,activ:[0,1,7,14],actual:[1,2,3,4,6,9,13],ada_clf:8,adaboostclassifi:8,adam:2,adapt:[1,4,5,17],add:[1,2,3,4,6,8,9,10,15],add_subplot:[0,2,5,10],added:[1,2,3,5,6,13],adding:[0,2,4,13],addit:[0,1,3,4,5,6,7,8,10,12,13,15,16,17],addition:[5,10],address:[2,5,7,9,17],adjac:10,adjoint:3,adjust:[5,10],admir:1,advanc:[4,10,17],advantag:[2,3,4,5,8,13],afecionado:[],affect:[],affin:[1,6,9],aficionado:[],aforement:0,african:1,after:[0,1,2,3,4,5,7,9,10,12,13,15],afterward:1,again:[0,1,2,3,4,5,6,8,9,10,15],against:[2,5,8],age:[1,5],agegroup:5,agegroupmean:5,aggreg:[7,8],agorithm:8,agre:[3,15],ahead:7,aid:9,aim:[0,1,2,4,5,9,12,13],ainv:3,aka:3,alarm:3,albeit:0,algebra:[1,3,5,12,14],algo:15,algorithm:[1,2,3,4,5,6,12,13,14,15,17],align:[1,3,4,5,6,15],all:[0,1,2,3,4,5,7,8,9,10,12,13,14,15,16,17],allevi:[2,5],alloc:13,allow:[1,2,3,4,5,6,8,12,13],almost:[1,2,4,5,6,9,15],alon:7,along:[0,3,4,7,8,9,12,13],alpha:[0,1,2,4,5,6,7,8,15],alpha_:8,alpha_i:5,alpha_k:5,alpha_m:8,alpha_opt:5,alreadi:[3,8,10,12,13,15],also:[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,17],alter:[2,15],altern:[1,2,3,6,7,9,13],although:[2,3,4,6,8],alwai:[0,1,3,4,5,10,15],ame2016:1,american:1,among:[1,3,7,8,10],amongst:3,amount:[0,2,4,6,8,12],an_:15,anaconda3:[1,2,4,6,9],anaconda:[1,2,12],analys:[4,15],analysi:[2,4,5,13,14,17],analyt:[1,3,4,5,10,12],analyz:[1,2,3,15],andrew:2,angl:[1,7,15],ani:[0,1,2,3,4,6,7,8,10,15],anim:10,ann:10,annot:[1,2,5,6],anoth:[1,2,3,4,5,6,8,9,10,13,15],ans:15,ansatz:1,answer:[1,2,3,4,13],anymor:[2,6],anyon:6,anyth:[2,15],anytim:16,apach:2,apart:[5,9],api:[2,12],appear:[1,2,13,15],append:[2,4,5,6,7,15],appli:[1,2,4,5,6,7,8,9,10,15,17],applic:[1,2,3,4,5,7,10,15,17],approach:[2,3,4,7,8,9,10,12,15,17],appropri:[4,7,10,12,15],approx:[1,5,8,9,15],approxim:[1,2,3,4,5,8,9,15],apt:[1,12],aptli:0,aragorn:[],arang:[2,4,5,7,8,10],arbitrari:[2,5,6,10,15],arbitrarili:[1,2,9],architectur:[10,17],area:[1,17],arg:4,argc:15,argmax:[2,9],argmin:[0,8],argsort:9,argu:2,arguabl:0,argument:[1,3,9,10,15],argv:15,aris:[1,4,5,10,15],arithmet:[1,13],arma:15,armadillo:[13,15],around:[1,2,3,4,9,15],arrai:[0,1,2,3,4,5,6,7,9,10,12,15],arriv:[1,7,9,13,15],arrow:10,arrowprop:6,art:[1,2,12],articl:[0,1,3,4,8,15],artifici:[1,5,10,17],artificialneuron:10,artist:4,asarrai:[1,7],ascii:15,ask:[3,4,9,10],aspect:[1,12],assembl:1,assess:[1,4],assign:[0,1,5,6,7,10,14,17],assign_points_to_clust:0,associ:[0,1,4,7,10,15],assum:[0,1,2,3,4,5,6,7,8,9,10,13,15],assumpt:[1,3,4,7,9,15],ast:[1,3,4],astyp:[7,8],asymmetri:1,asymptot:4,atoi:15,atom:1,attempt:[1,5,6,8],attend:14,attent:[1,13],attr:[],attract:[1,8],attribut:[1,7],attributeerror:4,audi:1,aurelien:[1,14,17],author:[1,2,8,15],authour:1,auto:[7,8,15],autocor:15,autocorrelation_tim:15,autocorrelform:15,autocovari:15,autoencod:12,autoencond:12,autograd:12,autom:[1,12],automac:13,automag:[],automat:[1,2,9,12,13],autonom:17,avail:[1,2,4,8,9,12,13,14,17],averag:[0,1,2,4,7,8,15,16],avg:15,avoid:[0,1,3,4,7,9,13],awai:15,awar:8,award:16,axes3d:5,axes:[1,4,5,6,7,8,9],axessubplot:1,axhlin:6,axi:[0,1,2,4,5,6,7,8,9,10,15],axiom:3,axlabel:1,axvlin:6,b_1:[5,10],b_5:5,b_group:7,b_i:[1,2,10],b_ia_:1,b_index:7,b_j:[2,10],b_k:[2,5,10],b_m:10,b_score:7,b_valu:7,bachelor:14,back:[1,3,6,7,8,13,15],backbon:13,backend:2,background:17,backpropag:2,backtrack:7,backup:13,backward:[2,10,13],bad:15,badli:15,bag:[7,12,14],bag_clf:8,baggin:[],baggingboot:8,baggingclassifi:8,baggingtre:8,balanc:4,band:13,bandwidth:13,bar:[1,9],barber:17,bare:8,barebon:0,base:[0,1,2,3,5,6,7,8,12,15,16,17],basi:[3,5,6,8,9,10,13],basic:[6,10,12,14,15],batch:[5,9,10],batch_siz:2,bay:5,bayesian:[3,12,17],becaus:[0,1,2,3,4,5,6,7,10],becom:[0,1,2,3,4,5,7,10,15],been:[1,2,4,9,10,12,13],befor:[0,1,2,3,4,5,6,10,13,15],beforehand:[0,1,15],begin:[0,1,2,3,4,5,6,7,9,10,13,15],behav:[2,4,5],behavior:[1,2,5],behaviour:10,behind:[1,2,5,6],being:[0,1,2,3,5,6,8,9,10,15],believ:[7,13],belong:[0,3,5,6,7],below:[1,2,3,4,5,6,7,8,9,10,13,15],benchmark:8,bendik:16,benefici:2,benefit:[1,2,5,9,12],bengio:[2,14,17],benign:[2,5],besid:3,bessel:3,best:[0,1,2,3,4,5,6,7,8,10,15,16],beta:[1,2,3,4,5,8,9],beta_0:[1,2,3,5],beta_0x_:1,beta_1:[1,2,3,5,8],beta_1x_0:1,beta_1x_1:[1,5],beta_1x_2:1,beta_1x_:1,beta_1x_i:5,beta_2:1,beta_2x_0:1,beta_2x_1:1,beta_2x_2:[1,5],beta_2x_:1,beta_:[1,5],beta_i:[1,3],beta_j:[1,3,5],beta_k:5,beta_linreg:5,beta_m:8,beta_mg_m:8,beta_p:5,beta_px_p:5,better:[0,1,2,3,7,8,9,10],between:[0,1,2,3,4,5,6,7,9,10,15],beyond:[1,2,3,5,6],bia:[1,2,3,6,7,8,10,14,15],bias:[2,3,4,7,10],big:[0,1,2,3,4],bigger:2,bigr:10,bike:7,bilbo:[],bilek:16,billion:[10,12],bin:[1,4,5,15],binari:[1,3,5,7,8,10,14,15],bind:[1,4],binomi:12,binsboot:4,bioinformat:1,biolog:[2,10,17],bios1100:12,bird:1,birth:[],bishop:[14,17],bit:[0,2,13,15],bitwis:15,bla:13,black:[0,6,7],block:[0,4,8,12,13],blockingavg:15,blockingstd:15,blockingvar:15,blocksiz:15,blocksizemax:15,blocksizemin:15,blue:1,bmatrix:[1,2,3,5,6,9,13],bmi:2,bodi:[1,2,10],bold:2,boldfac:[1,3],boldsymbol:[0,1,2,3,4,5,6,8,9],boltzmann:[10,12],book:17,bool:0,boost:[2,7,12,14],boostrap:8,bootavg:15,bootstd:15,bootstrap:[2,12,14],bootvar:15,bootvec:15,borrow:[],boston_dataset:1,bot:6,both:[0,1,2,4,5,6,7,8,12,13,15,16],bottl:5,bottom:4,bound:[1,4,6,10],boundari:[6,9,10],box:7,boyd:[5,6],bracket:15,brain:[2,5,10],branch:7,breast:[3,5,9],brew:[1,12],brg:6,briefli:1,bring:[1,8],broad:1,broadcast:0,browser:[],brute:[3,9],bsol:[],bsubex:[],build:[1,3,4,8,13,15],built:[1,2,4],bunch:9,busi:1,c46dd114b2af:6,c_0:15,c_1:10,c_2:10,c_3:10,c_4:10,c_i:[5,10],c_k:15,cach:8,cal:[1,5,6,8,10],calcul:[0,1,2,3,4,5,6,7,8,9,10,13],call:[0,1,2,3,4,5,6,7,8,9,10,12,13,15,17],callabl:4,cambridg:[5,17],came:0,can:[0,1,2,3,4,5,6,7,8,9,10,12,13,15,17],cancel:1,cancer:[3,8],cancerpd:5,candid:[6,7,8],cannot:[1,2,3,5,6,7,14,15],canopi:[1,12],cap:3,capabl:[1,2,6,12],capita:1,captur:[9,10],card:[1,5],cardin:2,care:[0,9],carefulli:5,carlo:[1,4,12,15,17],carri:[4,5],cart:8,casella:17,cast:2,categor:[1,2,7,9],categori:[0,1,2,5,8,10,14],categorical_crossentropi:2,caus:[1,3,4,15],causal:1,causat:1,cax:2,cbar:2,ccc:[3,10],cdf:15,cdot:[0,1,4,5,10,13,15],celebr:5,center:[0,1,2,4,5,6,7,9,15],centr:17,central:[1,3,4,6,13],centroid:[0,15],centroid_differ:0,centroid_list:0,certain:[0,1,4,5,7,15],cha:1,chain:[2,12,15],challeng:[0,5],chanc:[2,3,5,15],chang:[0,1,2,3,4,5,6,7,9,10,13,15],chapter:[0,4,8,9,13,14,17],charact:[1,3,6,15],character:[6,7,8,10,15],characterist:[1,2,8],charg:1,charl:1,chd:5,chddata:5,cheap:3,cheaper:[2,5],chebychev:0,check:[1,2,5,9,13],check_consistent_length:[],chemic:15,chen:8,choic:[0,1,2,4,5,7,10,13,15],choleski:[3,13],choos:[0,4,5,7,8,9,15],chosen:[1,2,4,5,6,7,8,15],chosen_datapoint:2,christian:17,christoph:[14,17],cin:15,circ:[2,10],circl:[1,6,10],circumfer:7,circumv:[2,3],clariti:[0,15],class_nam:7,class_val:7,class_valu:7,classic:[5,7],classif:[1,3,4,5,6,9,10,12,14,17],classifi:[1,2,5,7,8,9],classificaton:2,classifii:8,clean:2,clear:[2,8,10],clearer:0,clearli:[3,4,5,6,15],clever:[0,2,8],clf3:1,clf:[1,6,7,8],clf_ridg:1,clip:15,close:[0,1,2,4,5,6,7,9,10,15,17],closer:3,closest:[0,5,6,9],closur:12,cloud:12,clust:0,cluster:[1,2,4,9,12,14],cluster_label:0,cmap:[1,2,6,7,8],cmath:15,cmb:14,cmd:7,cn_:15,cnn:10,cntk:12,code:[4,6,12,13,14,17],coef0:6,coef:1,coef_:[1,3,5,6,7],coeffici:[1,3,4,5,6,7,13],coerc:[1,4],coin:[8,15],coin_toss:8,col:[1,9],colab:12,cold:7,colinear:1,collaps:6,collect:[1,4,8,9,12,15,17],collinear:3,color:[1,4,6,7,8,15],colorbar:2,colsample_bytre:8,colsaobject:8,column:[1,2,3,4,5,6,7,9,10,13],columntransform:7,com:[12,16,17],combin:[2,3,4,5,8,15],come:[0,1,2,3,5,10],comma:[],command:[1,2,15],comment:1,commerci:[1,12],commod:1,common:[0,1,2,3,4,5,7,9,15],commonli:[0,2,4,5,7],commun:[1,10],compact:[0,1,2,3,4,5,7,9,10],compar:[0,1,3,4,5,9,13],compat:5,compet:1,competit:8,compil:[1,2,12,13,15],complet:[1,7,10],completenn:10,complex:[1,2,3,4,6,7,9,10],complic:[0,1,2,4,5,7],compon:[0,1,2,3,4,5,7,12,14],components_:9,compos:[0,7,10],compphys:[12,14,17],compress:1,compris:4,compromis:3,compulsori:12,comput:[0,1,2,3,4,6,8,9,10,12,13,14,17],computation:[1,4,5,7,15],concaten:0,concav:[2,5],concentr:[1,8],concept:[0,1,12],conceptu:[5,10],concern:[0,1,2,5],concic:[],conclud:[1,3],conclus:2,conda:[1,2,12],condit:[1,3,4,6,7,9,15],conduct:12,confid:[1,3,4,5,6],confirm:[3,10],confus:[3,4,8,13],confusion_matrix:7,congruenti:15,conjug:6,conjugaci:5,connect:[1,2,5,7,9,10,13],consequ:[3,4,5,6,8,10],conserv:[0,3],consid:[0,1,2,3,4,5,6,7,8,10,13,15],consider:[1,2,3,5],consist:[1,2,4,5,10,15],constant:[1,3,5,6,10,15],constitu:1,constitut:4,constrain:[2,3,5,9],constraint:[3,5,6],construct:[1,2,3,4,5,6,7,8,9,13,15,17],contact:1,contain:[0,1,3,4,5,6,7,9,10,13,15,17],contemporari:17,content:[2,12,13],context:[4,5,8],continu:[1,2,3,4,5,6,7,8,10,13],contour:[5,7,8],contourf:[6,7,8],contrast:[2,7,8,10],contribut:[1,3,15],contributor:1,control:[1,2,7,12],conveni:[1,3,4,5,10,13],convent:10,converg:[0,1,2,3,5,6,9],convergencewarn:[1,2,6,9],convert:[1,2,3,7,9,13],convex:3,convinc:5,convolut:[2,12,14],cool:7,coordin:[0,3,10],coorel:1,copi:[0,2],core:8,corel:1,coronari:5,corr:[1,3,5,9],correalt:[9,12],correct:[0,1,2,3,13,15],correctli:[2,4,8],correl:[1,2,3,5,8,10,12],correlation_matrix:[1,3,5,9],correspond:[0,1,3,4,6,7,9,10,12,13,15],cortex:10,cos:[1,4,7],cosin:[0,4],cost:[1,3,4,6,7,10,15],could:[1,2,3,4,5,6,7,8,9,10,13,15],coulomb:1,count:[1,7,14,15,16],countor:5,coupl:3,cours:[1,2,3,9,14,15],courvil:[14,17],cout:15,cov:[3,4,9,13,15],cov_xi:[3,9],cov_xx:[3,9],cov_yi:[3,9],covari:[5,12,13],covariance_matrix:[0,3,9],cover:[1,3,11,12,17],covert:1,covxi:15,covxx:15,covxz:15,covyi:15,covyz:15,covzz:15,cpu:2,creat:[2,3,7,8,9,10,12],create_biases_and_weight:2,create_neural_network_kera:2,create_x:[1,3,9],credit:[1,5],crim:1,crime:1,criteria:[0,1,7,8,15],criterion:[5,7,8],cross:[1,2,5,7,8,12,14,15],cross_val_scor:4,cross_valid:[5,8],crossvalid:4,crucial:[2,15],csr_matrix:13,cstdlib:15,csv:[1,4,5,7],ctnk:2,cubic:1,cumbersom:3,cumsum:[8,9],cumul:[4,8],cumulative_heads_ratio:8,cup:3,current:[0,2,5],curs:1,curv:[5,8,10],curvatur:5,custom:0,custom_cmap2:[7,8],custom_cmap:[7,8],cutpoint:7,cvxbook:5,cvxopt:[3,6],cyber:17,cycl:[0,2,10,15],d_f:5,dagger:[3,13],dai:[2,7,12],dalen:16,darget:7,darkr:15,dat:1,dat_id:[1,4,5,7],data1:0,data2:0,data3:0,data4:0,data:[0,3,4,6,8,10,13,17],data_id:[1,4,5,7],data_indic:2,data_panda:[],data_path:[1,4,5,7],databas:2,datafil:[1,4,5,7],datafram:[1,3,5,7,9],datapoint:[1,2,3,4,5,9],dataset:[0,1,4,5,6,7,8,9],date:1,daughter:8,david:17,dbh:2,dbo:2,dcomposit:13,dead:2,deal:[0,1,2,3,5,6,9,13,15],debt:5,debug:[3,4],decad:1,decai:[1,5,15],decent:8,decid:[3,4,7],decim:1,decis:[1,2,6,9,12,14,17],decision_funct:6,decision_tre:7,decisiontreeclassifi:[7,8],decisiontreeregressor:[1,7,8],declar:[1,13],decompos:[3,13],decomposit:[1,10],decompost:3,decorrel:8,decreas:[2,3,4,5,8,9],deduc:1,deep:[5,10,12,14,17],deep_tree_clf1:7,deep_tree_clf2:7,deep_tree_clf:[7,8],deepen:12,deeper:0,deeplearningbook:17,def:[0,1,2,3,4,5,6,7,8,9,15],def_covari:15,defect:3,defici:3,defin:[0,1,3,4,5,6,7,8,9,10,13,15],definit:[0,2,3,4,5,6,8,9,10,13],defint:15,degre:[3,4,6,7,8,9,15],del:2,delet:[4,15],deliv:14,delta:[0,1,6,10,15],delta_:[2,13],delta_h:[1,2],delta_j:10,delta_k:10,delta_l:2,delta_n:1,delug:12,delv:1,demand:5,demonstr:[1,3,4,5,9,10,12],denomin:[2,3],denot:[2,4,5,15],dens:[0,2],densiti:[0,1,4,15],depart:16,depend:[0,1,2,3,4,5,6,9,10,12,15],depict:15,deploy:[1,12],deprec:1,depth:[7,8,13],deriv:[1,2,4,6,8,9,12],descend:[3,7,9],descent:[1,2,6,10],descr:1,describ:[0,1,3,4,6,8,9,10,13],descript:[0,1,6,7],design:[1,2,3,4,5,8,9,10],designmatrix:1,desir:[0,1,3,5],despit:[2,10],destroi:13,det:[3,13],detail:[0,1,5,9,13],detect:[6,10],determin:[1,3,5,6,7,8,9,10,13,15],determinist:[5,15],dev:[2,15],develop:[0,1,3,6,8,9,10,12,13],deviat:[1,2,3,4],devis:10,df1:[],diag:[3,6],diagnost:[2,8],diagon:[1,3,5,13,15],diagonaliz:3,diagram:8,dict:6,dict_kei:1,dictionari:1,did:[0,1,2,3,5,8,9],die:2,diffeent:6,differ:[0,1,2,3,4,7,8,9,10,12,13,15,17],differenti:[5,12,13],difficult:[0,1,2,4,8,15],difficulti:[1,2,5],digit:[1,2,14,16],dilut:2,dim:[0,9],dimens:[0,1,2,3,6,9,13],dimension:[0,1,3,4,5,7,9,12,13],dimensionless:1,diment:13,dimes:0,direct:[0,1,2,5,9,10],directli:[0,2,3,15],directori:5,disadvantag:1,discard:[4,9],disciplin:[1,10],disclaim:15,discourag:5,discov:1,discover:3,discret:[2,3,5],discrimin:[5,8,9],discuss:[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,17],diseas:5,disk:[],disord:[2,5],displai:[0,1,2,4,5,6,7,8,9,10,15],displaystyl:[1,3],displot:1,disregard:1,dissimilar:[0,9],dist:0,distanc:[0,1,6,7,9,15],distance_list:7,distinct:[0,5,6,7,8],distinctli:6,distinguish:[1,5,6,15],distplot:1,distribut:[0,1,2,4,5,8,9,12,13],distrubut:[1,12],dive:[1,6],diverg:[2,5],divid:[1,2,3,4,6,7,9,10,15],divis:[4,6,7,13,15],dna:5,dnn:[1,2,10],dnn_kera:2,dnn_model:2,dnn_numpi:2,dnn_scikit:[1,2],doamin:3,doc:[12,14,17],doconc:[],document:9,doe:[0,1,2,3,4,5,6,8,9,10,13,15],doesn:[7,10],dog:2,doi:0,doing:[1,3,4,9],domain:[3,5,6],domin:1,don:[0,1,2,6,9,12,15],done:[0,1,3,4,7,8,9,13,15],dot:[1,3,5,6,7,8,9,10,13,15],doubl:[13,15],doubli:2,down:[1,5,7,9,10],download:[1,2,13,17],dozen:2,dramat:9,draw:[4,5,8],drawback:[1,2,5],drawn:[2,4,5,9,15],drop:[1,2,3,4,9,15],dropna:[1,4],dtype:[0,1,2,13],dub:1,due:[0,2,3,4,5,6,8,10],dummi:1,dure:[1,2,6,7,9,12],dwell:1,dwh:2,dwo:2,dx_1:15,dx_n:15,dying:2,each:[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16],eapprox:1,earli:2,earlier:[1,3,5,6,7,9,10],eas:[0,7],easi:[1,3,4,5,6,7,8,9,10,12,13],easier:[3,4,6,7,15],easiest:5,easili:[1,2,3,5,6,7,8,9,10,13],eastern:16,ebind:1,eblock:7,econometr:[],economi:3,ecosystem:12,ect:14,edgecolor:4,edit:[],edu:5,educ:1,eface79dac2c:8,eff:15,effect:[2,8,15],effic:2,effici:[1,5,8,12,13,15],efron:[4,15],eig:[3,5,9,13,15],eigen:15,eigenpair:[3,9],eigenvalu:[3,5,6,9,13],eigenvector:[3,5,9],eight:13,eigval:[13,15],eigvalu:[5,9],eigvec:[13,15],eigvector:[5,9],eispack:13,either:[1,2,3,4,5,6,7,8,9,15],ekstrom:16,elabor:15,electr:[1,10],electur:17,eleg:9,element:[2,3,4,5,6,9,10,12,13,14,17],elementari:[8,13],elessar:[],elif:0,elim:13,elimin:6,els:[2,5,7,10,15],elu:2,elus:1,email:[14,16],embed:[1,9],embodi:4,emit:15,emner:17,emphas:[1,8,12],emphasi:[1,12,17],empir:[2,9,15],emploi:[1,2,3,4,5,9,15],employ:1,empti:[4,8],emul:10,enabl:9,encapsul:0,encod:[0,1,3,7,9],encompass:[1,15],encount:[1,2,3,5,15],end:[0,1,2,3,4,5,6,7,8,9,10,13,15],endl:15,endpoint:15,energi:[1,4],enforc:10,eng:17,engin:[1,2,12,15],english:17,enough:[1,4,5],ensembl:[2,7,14,15],ensur:[1,2,3,4,5,9,15],enter:[3,15],enthought:[1,12],entir:[2,5,7,12,15],entiti:[7,10,13],entri:[1,3,6,9,10,13],entropi:[2,5,8],enumer:[1,2,6],env:15,environ:[12,17],eol:1,eosfit:1,epoch:[1,2,5,10],epsilon:[1,3,4,5],epsilon_0:1,epsilon_1:1,epsilon_2:1,epsilon_:1,epsilon_i:1,eqnarrai:[3,4],equal:[0,1,2,3,4,5,6,7,9,10,13,15],equat:[0,2,4,6,7,8,9,13,15],equilibrium:10,equiv:[5,13,15],equival:[2,3,6,9,12,13],erf:15,eriador:[],eridg:1,err:[1,8],err_:4,errat:5,errno:5,error:[1,2,3,4,5,7,9,10,12,15],error_estimate_corr_tim:15,error_hidden:2,error_output:2,escap:5,esl:0,esol:[],especi:[2,7,10],essenti:[0,1,3,7,8,10,15],establish:[1,8,9],estim:[1,2,3,4,5,8,9,12,15],estimated_mse_fold:4,estimated_mse_kfold:4,estimated_mse_sklearn:4,esubex:[],eta0:[5,6],eta:[1,2,5,6,10],eta_v:[1,2],etc:[0,1,2,3,5,6,7,9,10,12,13,15],ethic:12,etsim:4,euclidean:[0,1],evalu:[1,3,4,5,7,15],even:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],event:[3,5,8],eventu:[3,4,5,9,10,16],everi:[0,1,2,3,4,5,7,8,9,10,12,15],everyth:10,everywher:5,evolv:1,exact:[1,3,5,9,10,13,15],exactli:[1,10,12],examin:4,exampl:[3,4,9,10,12,13,14,17],exce:[2,10],excel:[0,1,2,8,17],except:[4,6,7,15],excess:1,excit:1,exclud:[2,4,10],exclus:[1,2,4,15],execut:3,exemplifi:5,exercis:[3,12,14],exhaust:4,exhibit:[1,6],exist:[0,1,2,3,4,5,6,7,13,17],exit:[3,13,15],exp:[1,2,3,4,5,6,8,9,10,15],exp_term:2,expand:[3,5,9],expans:[1,3,5,6,8,10],expect:[1,2,3,4,5,9,10,12],expectation_value_of_h_wrt_p:15,expens:[4,5,8,15],experi:[1,2,4,5,6,12],experiment:[1,4,7,15],expert:[2,7],explain:[0,1,5,7,8,9,15],explained_variance_ratio_:9,explanatori:1,explicit:[1,13],explicitli:[0,1],explod:2,exploit:[1,10],explor:[2,5,6,12],expon:2,exponenti:[1,2,3,5,8],export_graphviz:7,export_text:7,exporttext:7,expos:12,express:[1,3,4,8,10,13,15],exptmean:15,exptvari:15,extend:[9,12],extens:[1,10,12],extent:[1,2,4,17],extern:7,extra:[2,3],extract:[1,3,5,6,9,13],extrapol:1,extrem:[0,1,2,3,5,6,7,13],extremum:5,extrins:9,eye:[0,1,3,5,13],f11:1,f12:1,f13:1,f1d:5,f6d7a289d493:13,f_0:8,f_1:[5,8],f_2:[5,10],f_3:10,f_d:15,f_i:[4,10],f_m:8,face:5,facecolor:[4,6,15],facil:[1,12],facilit:10,fact:[1,2,3,5,7,9,10],factor:[1,2,3,7,8,9,13,15],fafab0:[7,8],fail:[4,5,6,9,16],failur:5,fairli:[0,2,15],fall:[6,7,14],fals:[0,1,2,3,4,5,7,8],famili:[1,5,6,15],familiar:[1,3,6,12,13,15],famou:[4,10,13],far:[0,1,3,5,6,9,10,15],fashion:[1,7,8],fast:[2,4,5,8,10,12,15],faster:[2,9],fastest:5,favor:5,favorit:15,featur:[1,2,3,4,5,6,8,9,10,12,15],feature_nam:[1,2,5,7],feautur:7,fed:2,feed:[1,9,12,14],feed_forward:2,feed_forward_out:2,feed_forward_train:2,feedforward:[2,10],feel:[0,1,3,9,12,16],feet:1,few:[0,2,7,11,15],fewer:[1,7,9],ffnn:[2,10],field:[1,10,12],fifth:1,fig:[0,1,2,5,10],fig_id:[1,4,5,7],figaxi:15,figsiz:[1,2,4,5,6,7,8],figur:[0,1,2,3,4,5,6,7,8,10,12],figure_id:[1,4,5,7],figurefil:[1,4,5,7],file:[1,2,4,5,6,7,13,15],filenam:[1,15],filenotfounderror:5,fileout:15,fill:[3,7],financ:1,find:[0,1,2,3,4,5,6,7,8,9,10,12,15],fine:[0,1],finit:[3,4,10,15],first:[0,1,2,3,4,6,7,8,9,13,15,17],firsteigvector:9,fit:[2,3,4,5,6,7,9,10,15],fit_intercept:[3,4],fit_mod:7,fit_transform:[1,4,6,7,9],fiti:1,five:[1,7],fix:[1,4,5,8,9,10],flag:0,flat:[5,10],flatten:2,flexibl:[1,2,4,6,8,10],float32:7,float64:[1,13],flop:[3,13],flow:[2,10],fluctuat:3,fly:9,flyvbjerg:15,fmesh:5,focu:[1,3,4,12,17],focus:[2,5,13],fold:[4,7],folder:1,follow:[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17],font:[1,5,15],fontdict:15,fontsiz:[2,6,7,8,15],fontweight:2,foral:6,forc:[1,3,8,9],forecast:10,forest:[1,2,7,12,14],forget:9,form:[1,3,4,5,6,7,9,10,12,13,15],formal:[0,15],format:[1,2,4,5,6,7,8,9,12,15,17],formatstrformatt:5,formul:[0,9],formula:[5,15],forth:10,fortran2003:12,fortran90:15,fortran:[1,12,13],fortun:[1,9],forward:[1,4,12,13,14],found:[2,3,4,5,10],foundat:12,four:[3,6,10,13,14],fourier:1,fourth:10,frac:[0,1,2,3,4,5,6,7,8,9,10,13,15],fraction:7,frame:5,framework:[2,6,8,15],frank:[3,9],frankefunct:[1,3,9],free:[1,9,12,13,15,16,17],freecodecamp:12,freedom:3,freeli:1,frequenc:[4,5,15],frequent:[1,5,6,7],frequentist:12,fresh:8,fret:0,fridai:14,friedman:[14,17],frodo:[],from:[0,1,2,4,5,6,7,9,12,13,14,15,16,17],from_cod:7,front:[1,3],fruit:0,fstream:15,fulfil:[3,10],full:[1,2,3,5,7,8,15],full_matric:3,fulli:[4,10,14,15],fun:12,func:4,functionali:9,fundament:[1,4,12],further:7,furthermor:[1,3,4,5,9,10,12],futur:[1,6,7],futurewarn:1,fys:16,g_1:8,g_2:8,g_m:8,gain:[0,2,3,7,8],galleri:1,gamge:[],gamma1:6,gamma2:6,gamma:[1,5,6,7,8,9],gamma_0:8,gamma_1:8,gamma_1x:8,gamma_:1,gamma_i:[1,6,15],gamma_j:5,gamma_k:5,gamma_m:8,gamma_x:1,gap:6,gate:10,gather:[2,10],gaug:10,gaussbacksub:13,gaussian:[0,3,4,6],gaussian_point:0,gaussian_rbf:6,gave:5,gbc:14,gca:[4,5,6],gd_clf:8,gdclassiffiercgain:8,gdclassiffierconfus:8,gdclassiffierroc:8,gdregress:8,gen:15,gender:1,gener:[0,1,2,3,4,5,6,8,9,10,13,17],generallay:10,generate_simple_clustering_dataset:0,genom:12,geodes:9,geometr:1,geometri:3,georg:17,geq:[3,5,6,7],geron:[1,14,17],get:[0,1,2,3,4,5,7,8,9,12,13,15],get_distances_to_clust:0,get_dummi:7,get_split:7,get_yaxi:6,getattr:4,gibb:12,gini:8,gini_index:7,git:[1,12],github:[1,12,14,17],gitlab:[1,12],give:[0,1,2,3,5,6,7,8,10,12,15,17],given:[0,1,2,3,4,5,6,7,8,9,10,13,15],glare:0,global:[5,15],glorot:2,gmail:16,goal:[1,5,7],goe:[0,1,2,3,4,5,13],going:[1,2,3,4,5,6,7,9,10],golden:5,gone:3,gong:2,good:[0,2,3,5,7,8,9,12,15,17],goodfellow:[14,17],googl:[0,2,12],got:2,gpu:2,grade:14,gradient:[1,6,7,10,12,14],gradientboostingclassifi:8,gradientboostingregressor:8,gradual:[0,2],graph:[2,5,7,9,10],graph_from_dot_data:7,graphic:[1,2,7],grasp:1,gray_r:2,great:5,greater:[2,5,15],greedi:7,green:[1,7,15],grid:[2,4,5,6,10,15],grossli:5,ground:1,group:[0,1,4,5,7,12,14],groupbi:1,grow:[2,7,8],growth:1,guarante:[1,5,15],guess:[0,2,5,8],guestrin:8,guid:2,h_1:5,h_2:5,h_m:8,had:[1,2,4,5],hadamard:[2,10],half:[2,6,7],halv:8,hand:[1,2,3,5,9,10,12,13,14,15,17],handl:[1,2,3,7,9,12],handle_unknown:7,handsid:10,handwrit:10,handwritten:[2,3,5],happen:[0,2,3,5,8,15],hard:[2,5,6,8],hardcopi:12,harder:[1,2],has:[0,1,2,3,4,5,6,7,8,9,10,13,15],hasn:[1,2],hassl:[1,12],hast:12,hasti:[0,1,14,17],hat:[2,3,5,7,8,9,10,13,15],have:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],haven:2,hdf5:[],head:[1,8,15],header:1,heads_proba:8,hear:1,heart:[1,5],heatmap:[1,2,5],heavili:1,heavisid:2,height:2,help:[0,1,2,10],helper:0,henc:[1,3,4,5,6,7,8,10],her:5,here:[0,1,2,3,4,5,6,7,8,9,10,12,13,15,17],hereaft:[1,6,10],hermitian:13,hessenberg:13,hessian:3,heterogen:[7,8],hidden:[2,10],hidden_bia:2,hidden_bias_gradi:2,hidden_layer_s:[1,2],hidden_weight:2,hidden_weights_gradi:2,hierarch:[0,3],high:[0,1,2,3,4,5,7,8,9,12,13],higher:[1,2,3,4,5,6],highest:2,highli:[1,3,8,12,13,15,17],highwai:1,hing:6,hint:5,hip:12,hire:1,his:5,hist:[4,5,15],histogram:[1,4,5,15],histor:[5,9],histori:10,histplot:1,histtyp:4,hitherto:3,hjorth:16,hobbi:15,hoc:3,hoff:17,hold:[0,2,4,5,15],holder:1,home:1,homogen:[2,7,8],hopefulli:[1,9,15],horizont:9,hors:5,hot:[2,7],hour:[2,12,14,15,16],how:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,17],howev:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],hspace:[1,6,8,15],hstack:2,htf:14,html:[9,12,14,17],http:[5,9,12,13,14,17],huang:1,huber:1,huge:[2,12],human:[1,2,7,10],humid:7,hundr:2,hungri:2,hybrid:14,hydrogen:1,hyperbol:[2,10],hyperparam:6,hyperparamet:[0,1,3,7],hyperplan:9,i_1:[3,4],i_2:[3,4],ian:17,idea:[1,2,4,5,7,8,10,13,15],ideal:[0,1,4,6,15],idem:4,ident:[3,4,10,13],identical:3,identifi:[0,1,2,5,6,7,9,10],idum:15,ieor:15,ifi:17,ifs:12,ignor:[1,2,7],iii:13,ijca2016907841:0,illustr:[0,3,5,8,10,12],imag:[2,7,9,10,17],image_path:[1,4,5,7],imagin:2,immedi:[1,12],implement:[0,1,3,5,6,7,8,9,10],impli:[3,4,5,13],implicitli:[9,15],impos:[1,9,10],imposs:[1,3],impress:[1,10],improv:[0,3,7,8,9],impur:7,imshow:2,in3050:17,in4080:17,in4300:17,in5400:17,inaccur:5,inact:10,inadequ:1,includ:[1,2,3,5,9,10,12,15,16,17],include_bia:[4,7],incom:10,inconsist:[],incorrect:2,incoveni:6,increas:[1,2,3,4,6,7,9,10,15],increasingli:15,ind:4,inde:[1,3],indent:15,indentationerror:15,independ:[1,3,4,5,6,10,15],index:[0,1,2,8,12,15,17],index_col:1,indic:[1,2,3,7,8,9],indispens:4,individu:[2,5,8,10,15],indu:1,indx:13,ineffici:0,inequ:6,inequaltii:5,inf1000:12,inf1100:12,inf1100l:12,inf1110:12,inf3000:17,inf4490:17,inf5860:17,inf:1,infeas:7,infer:[1,2,4,17],inferenc:2,infil:[1,4,5,7],infin:[3,4,5,9],infinitesim:15,influenc:[4,8],influenti:2,info:[],inform:[0,1,2,4,5,7,9,10,13,17],infti:[5,15],ingeni:5,ingredi:[1,7],inher:4,inherit:13,initi:[0,1,2,4,5,8,13,15],initialis:15,inject:0,inlin:[0,1,2,3,4,5,6,7,8,9,10,13,15],inner:[4,5],innov:17,input:[0,1,2,3,4,5,6,7,8,10,13,15],input_dim:2,inputs:2,inputs_shuffl:2,insert:[3,6,8,15],insid:[1,5],insight:[1,2,3,12,17],insist:5,inspir:[1,2,10,17],instal:[1,2,7,14],instanc:[1,2,4,5,7,9],instanti:8,instead:[0,1,2,3,4,5,6,7,9,13,15],institut:2,instruct:[1,2],int32:8,int64:1,int_0:15,int_:15,int_a:15,integ:[0,2,13,15],integer_vector:2,integr:15,intellig:[0,1,17],intend:8,intens:2,intention:0,interact:[1,7,10,12],intercept:[1,5,6,9],intercept_:[1,5,6,7],interchang:[3,10,13],interconnect:2,interest:[1,2,3,4,5,6,7,10,12,15],interfac:[2,13],interior:[1,7],intermedi:13,intern:[2,8,10],interpol:[2,10],interpr:3,interpret:[1,2,7,8,10,13,14,15],interv:[1,3,4,5,15],intial:5,intimid:[],intract:1,intrins:[9,13,15],intro:[12,17],introduc:[1,2,3,5,6,8,10,13,15],introduct:[2,5,14,17],introductori:[1,13,17],intuit:[1,3,4,6,10],inv:[1,3,5],invalid:[2,6,13],invalu:[1,5,12],invari:2,invd:3,inver:6,invers:[1,5],invers_period:15,inverse_transform:6,invert:[1,3,5,8],invok:[1,6],involv:[1,4,5,9,10],iomanip:15,ios:15,iostream:15,ipca:9,ipynb:12,ipython:[0,1,2,4,5,6,7,8,9,12,13,15],irani:0,iri:[6,7],irreduc:4,irrelev:3,irrespect:1,isn:3,isnul:1,isomap:9,issu:[2,7,13],it_arrai:5,item:1,items:13,iter:[0,1,2,4,6,9,15],its:[0,1,2,3,4,5,6,7,8,9,10,12,13,17],itself:[3,4,10,15],jackknavg:15,jackknif:[4,12],jackknstd:15,jackknvar:15,jackknvec:15,jacobian:5,jargon:15,jensen:16,jerom:17,job:[6,8],join:[1,4,5,7],joint:3,journal:15,judg:5,julia:[12,13],jump:[0,15],jupyt:[0,1,12,17],just:[0,1,2,3,4,5,6,7,8,9,10,15],justif:1,justifi:8,k_mean:0,kappa_d:15,karim:16,karlsen:16,karush:6,keep:[0,1,2,3,5,9,13],keepdim:[2,4,8],kei:[1,2,10,17],kept:0,kera:[1,12,14],kernel:[1,2,12],kernel_regular:2,kernelpca:9,kev:1,kevin:17,keyword:13,kfold:4,kick:[2,5],kind:[0,1,6,10],kjm:12,kkt:6,kmeanspoint:0,kn_k:0,know:[0,1,2,3,5,6,12,15],knowledg:[1,12],known:[2,3,4,5,6,7,10,13,15,17],kondev:1,kpca:9,kroneck:0,kuhn:6,kwarg:4,kwown:1,l1_l2:2,l_1:5,l_2:5,l_j:10,la_i:10,la_k:10,lab:[12,14],label:[0,1,2,3,4,5,6,7,8,10,12,13,15],labelencod:[5,8],labels:[6,7],labels_shuffl:2,labor:0,laboratori:14,lack:[0,1],lagrang:[6,9],lambda:[1,2,3,4,5,6,8,10,15],lambda_0:9,lambda_1:[3,6,9],lambda_2:[6,9],lambda_:9,lambda_i:[6,9],lambda_iy_i:6,lambda_jy_iy_j:6,lambda_k:6,lambda_n:[3,6],lamda:2,land:[1,6],landmark:6,landscap:5,langl:[1,9,15],languag:[1,2,6,12,13,17],lapack:13,laplac:3,laptop:12,larg:[1,2,3,4,5,6,7,8,9,12,13,15,17],larger:[1,3,4,5,6,8,9,15],largest:[6,9],lasso:[1,4,5,12,14],last:[0,1,2,3,4,5,6,7,8,10,13,15],later:[0,1,2,5,6,10,12,15],latex:[],latter:[1,5,6,9,13,15],lattic:10,law:1,layer:1,lbfg:[5,7,8,9],lbl:4,lcc:[3,4],lda:9,ldot:[1,4,9,15],lead:[1,2,3,4,5,6,7,8,9,10,13,15],leaf:7,leaki:2,lear:5,learn:[3,4,6,7,8,10,13,14,17],learner:8,learning_r:[6,8],learning_rate_init:[1,2],learning_schedul:5,least:[0,1,4,5,6,8,9,12,13,15],leav:[1,2,3,4,7,9],lectur:[1,2,3,5,8,9,10,12,13,14,17],lecturenot:[12,17],left:[1,2,3,4,5,6,7,8,9,10,13,15],leftarrow:[6,10],legend:[1,3,4,5,6,7,8],len:[0,1,2,3,4,6,7,8,9,10,13,15],length:[1,2,5,6,7,12,15],leq:[0,1,3,5,6,15],less:[1,2,3,4,6,7,15],lessen:2,let:[0,1,2,3,4,5,6,7,8,9,10,13,15],letter:[1,13,15],level:[1,2,4,7,12,13,14],lib:[1,2,4,6,9],liblinear:[6,8],librari:[1,2,3,7,8,9,13,15,17],licens:[1,2,12],lie:[4,9,15],lies:[6,9],life:[1,2,6,10],lift:0,light:[],like:[0,1,2,3,4,5,7,8,9,10,12,13,15],likelihood:[1,2,3,7],lim_:15,limit:[1,4,6,9,10,13],lin_clf:6,lin_model:1,lin_reg:7,linalg:[1,3,5,6,9,13,15],line1:6,line2:6,line3:6,line:[1,2,4,5,6,9,13,15],linear:[2,3,4,5,7,8,9,10,12,14,15],linear_model:[1,3,4,5,6,7,8,9],linear_regress:4,linearli:3,linearloc:5,linearregress:[1,4,5,7],linearsvc:6,liner:2,linerar:8,linewidth:[1,4,6,7,8],link:[1,5,7,10,12],linlag:3,linpack:13,linreg:1,linspac:[1,4,6,7,8,13,15],linu:16,linuek:16,linux:[1,2,12],liquid:1,list:[0,1,2,7,12],listedcolormap:[7,8],literatur:[0,2,5,17],littl:[2,7,10],live:6,lle:1,lloyd:0,lmb:[3,4],lmbd:[1,2],lmbd_val:[1,2],lmbda:5,load:[1,2,5,7,8],load_boston:1,load_breast_canc:[2,5,7,8,9],load_digit:2,load_iri:[6,7],loc:[1,4,5,6,7,8],local:[1,2,5,10],locat:6,log10:[3,4],log:[1,2,3,4,5,7,8,9,13],log_:1,log_clf:8,logarithm:[1,3,5,13],logic:[1,2,7],logist:[1,2,6,7,8,9,10,12,14],logisticregress:[5,7,8,9],logit:5,logreg:[5,7,8,9],logspac:[1,2,3,4],longer:[0,6,8,13,15],longest:0,loocv:4,look:[0,1,2,3,4,5,6,7,8,9,13,15],loop:[0,2,4,8,10,12,13,15],lose:2,loss:[1,2,3,4,6,8,9,13],lot:[0,1,2,4],low:[1,4,7,8,9,15],lower:[1,2,7,8,13],lowercas:13,lowest:[5,7,15],lstat:1,lstsq:1,lubksb:13,ludcmp:13,lux:13,lvert:2,m_1:0,m_h:1,m_k:0,m_l:10,m_n:1,m_p:1,machin:[2,3,4,7,8,9,10,13,14,17],machinelearn:[12,14,17],mackai:17,made:[1,2,3,4,5,7,9,10],mae:1,magic:0,magnitud:[2,5],mai:[1,2,3,4,5,6,7,9,10,12,13,15],mail:14,main:[1,2,3,5,7,13,17],mainli:[1,3,4,5,7],maintain:4,major:[2,4,5,7,8,13],make:[0,2,3,4,5,6,9,10,12,13,15,17],make_moon:[6,7,8],make_pipelin:[1,4,8],makedir:[1,4,5,7],makeplot:1,malcondit:13,malign:[2,5,7],mammographi:3,manag:[1,12],manhattan:0,mani:[0,1,2,3,4,5,6,7,9,11,12,13,15,17],manifold:9,manual:0,map:[0,1,2,4,5,6,9,10,15],margin:[1,3,6],marit:1,mark:[],marker:[1,5,13],markov:12,marsaglia:15,mask:15,mass:[1,2,3],massag:1,masses2016:1,masses2016ol:1,masses2016tre:1,masseval2016:1,master:14,mat1100:12,mat1110:12,mat1120:12,mat3155:14,mat4155:14,mat:12,match:[0,2,3,5],materi:[3,5,13],math:[0,5,10,13,15,17],mathbb:[0,1,3,4,5,6,9,10,13,15],mathbf:[1,3,4,5,6,13,15],mathcal:[2,3,4,5],mathemat:[0,1,5,9,10,12,13,15,17],mathemati:[],mathemt:[],mathrm:[0,1,2,3,4,5,6,7,8,9,10,15],matmul:[2,3],matnat:[16,17],matplotlib:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],matric:[1,2,5,6,9,12,13],matrix:[1,4,6,8],matshow:2,matter:5,max:[1,2,5,7,8,10],max_depth:[1,7,8],max_it:[1,2,5,6,9],max_iter:0,max_leaf_nod:8,max_sampl:8,maxdegre:[1,4,8],maxdepth:8,maxim:[2,3,5,6,9],maximum:[0,1,2,3,5,6,7,8],maxpolydegre:[3,4],mbox:[3,4],mcculloch:10,mcint:15,mcintsqr2:15,mean:[1,2,3,4,5,7,8,9,10,12,13,14],mean_absolute_error:1,mean_divisor:0,mean_i:15,mean_matrix:0,mean_squared_error:[1,4,5,8],mean_squared_log_error:1,mean_vector:0,mean_x:15,meaning:[1,5],meansquarederror:1,meant:[5,8],meantempvec:15,meanvec:15,measur:[0,1,2,3,4,7,9,10,15],mechan:[1,15],median:1,medicin:10,medium:6,medv:1,meet:[1,16],mehta:[1,3],memori:[9,10,13],mention:[0,1,5,10,15],mere:1,mersienn:15,meshgrid:[1,3,6,7,8,9],met:[1,6],meteorolog:7,method:[0,1,2,3,6,9,10,12,13,14,17],metric:[0,1,2,4,5,7,8],metropoli:12,mev:[1,15],mglearn:12,mgrid:5,mhjensen:[1,2,6,9],microsoft:17,mid:2,midpoint:7,might:[1,2,5,7],mild:7,miller:15,million:1,mimic:10,min:[1,3,6,7],min_:[0,1,3],min_samples_leaf:7,mind:[0,1,5],mine:12,mini:[2,5,9,10],minibatch:[2,5,9],minibathc:5,minim:[0,1,2,3,4,5,6,7,8,9,10,15],minima:[1,2,5],minimum:[1,2,4,5,6,7,9],minkowski:0,minmaxscal:1,minor:15,minst:2,minu:5,mirror:7,misclassif:[6,7,8],misclassifi:[6,8],mismatch:2,miss:[1,8],mit:17,mix:2,mkdir:[1,4,5,7],mlab:[4,15],mle:[3,5],mlp:2,mlpclassifi:2,mlpregressor:1,mnist:[2,9],mod:15,mode:[14,15],model:[0,3,4,5,6,7,8,9,12,15,17],model_select:[1,2,3,4,5,7,8,9],moder:8,modern:[1,4,5,12],modif:10,modifi:[1,2,3,5,6,8,10],modul:[1,4,5,7,8,9,13],modular:15,modulenotfounderror:7,modulo:15,moe:[3,9],moment:[3,4],monoton:[3,10,15],mont:[1,4,12,15,17],montecarlocycl:15,moor:3,more:[1,2,3,4,6,7,8,9,10,12,14,15],moreov:1,morten:16,most:[0,1,2,3,4,5,6,7,8,9,10,12,15],mostli:[2,9],motion:1,motiv:2,move:[0,1,3,5,7,10,15],mpl:[1,5],mpl_toolkit:5,mplot3d:5,mplregressor:2,mse:[1,3,4,7,8],mse_simpletre:8,mselassopredict:3,mselassotrain:3,msepredict:3,mseridgepredict:3,msetrain:3,msg:1,msle:1,mt19937_64:15,mu0:15,mu1:15,mu2:15,mu_:15,mu_n:9,mu_x:15,much:[1,2,3,4,5,6,7,8,9,10,13,15],multi:[1,2,5,12],multiclass:[2,5],multidimension:[9,10],multilay:2,multinomi:5,multipl:[3,4,5,10,15],multipli:[3,5,9,13,15],multiplum:6,multitud:[],multivari:[1,8,9,12,15],multivariate_norm:[0,9],murphi:[9,17],must:[0,2,3,4,5,6,8,10,15],mutat:5,mutual:[2,4,5],mx_:15,myriad:[1,12],mz1:15,mz2:15,n_0:[10,15],n_b:15,n_boostrap:[4,8],n_bootstrap:4,n_categori:2,n_cluster:0,n_compon:9,n_epoch:5,n_estim:8,n_featur:2,n_hidden_neuron:[1,2],n_i:15,n_input:2,n_instanc:7,n_iter_i:9,n_job:8,n_k:0,n_l:[10,15],n_layer:2,n_m:7,n_neuron:2,n_neurons_layer1:2,n_neurons_layer2:2,n_point:0,n_sampl:[0,4,6,7,8],n_split:4,nabla:[2,5],nabla_:5,naimi:1,naiv:[0,5],nall:1,name:[0,1,2,3,4,5,6,7,8,10,12,13,16],nameerror:8,namespac:15,nation:[2,3],nativ:12,natur:[1,2,5,6,7,10,15,17],navier:10,nb_:13,nbconvert:[],nboot:15,nearest:[2,9],nearli:5,neat:[],neccesari:4,necessari:[0,1,2,6],necessarili:[1,9,15],necesserali:3,neck:5,need:[0,1,2,3,4,5,6,7,8,9,10,13,15],neg:[1,2,3,4,5,8,15],neg_mean_squared_error:4,neglect:15,neglig:15,neighbor:9,neq:[0,5,15],nervou:10,nest:[7,10],net:10,netlib:13,network:[1,7,12,14,17],neural:[1,5,12,14,17],neural_network:[1,2],neuralnetwork:2,neuron:[2,10],neutral:1,neutron:1,never:[2,4,7,15],new_hobbit:[],new_sig:4,newaxi:[1,4,7],newli:1,newton:[2,6,15],next:[0,1,2,3,5,6,7,15],next_guess:5,nian:16,nice:[0,1,2,3,9],nichola:16,nicholaskarlsen1102:16,niter:5,nitric:1,nlambda:[3,4],nm_n:1,nmse:4,nn_model:2,node:[2,7,8,10],nois:[1,3,4,5,6,7,8],noisi:[2,4],non:[0,1,2,3,4,5,7,8,9,10,13,15],none:[0,1,2,3,4,5,7,8,15],nonetheless:0,nonlinear:[4,6,7,9,10],nonneg:[4,5,7],nonparametr:4,nonsens:15,nonsingular:13,nonumb:[5,6,13],nor:2,norm:[1,2,3,4,5,6,9],normal:[3,4,5,6,7,8,9,10,12,13],normali:13,normpdf:4,notat:[0,1,3,4,15],note:[0,1,2,3,4,5,6,9,10,12,13,14,15,17],notebook:[0,1,2,7,12],noth:[0,2,3,6,10,15],notic:[3,10,13,15],novel:[4,8],novemb:2,now:[0,1,3,4,5,6,8,9,10,13,15],nowadai:[1,2,7,12],nox:1,np_assign_points_to_clust:0,np_get_distances_to_clust:0,np_k_mean:0,nsampl:4,nspin:15,nthi:1,nuclear:3,nuclei:[1,15],nucleon:1,nucleu:1,num_tre:8,number:[0,2,3,4,5,6,7,8,9,10,13,14,16],numberid:5,numer:[1,3,4,5,7,8,9,10,12,13,17],numpi:[0,1,2,3,4,5,6,7,8,9,10,12,15],nunmpi:3,obei:[5,9],object:[1,2,4,6,8,13],obliqu:3,observ:[0,2,3,4,5,6,7,8,9,10],obtain:[0,1,2,3,4,5,6,7,8,10,13,15],obviou:[3,9,15],obviouli:1,obvious:[1,3,13],occupi:1,occur:[1,6,7,15],odd:[1,5],off:[2,3,4,7,15],offend:[],offer:[4,9,12,13,14],offic:16,offici:14,ofil:15,ofstream:15,often:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],ofter:13,old:[2,3,5,8],olsbeta:3,omit:[1,3],onc:[0,2,4,7,9,15],one:[0,1,2,3,4,6,7,8,9,12,13,15],onehot:2,onehot_vector:2,onehotencod:7,ones:[1,3,5,6,7,8,9,13],onli:[0,1,2,3,4,5,6,7,8,9,10,13,15],onlin:[9,14],onto:[3,9],open:[1,2,4,5,7,12,14,15],oper:[1,2,3,4,8,9,10,12,13,15],operation:15,opinion:0,oplu:15,opmiz:5,opportun:1,opposit:[2,3,6],opt:[1,2,3,4,6,9],optim:[0,1,3,4,7,8,9,14],optimis:2,option:[2,3,6,9],optmiz:[2,6],orang:1,order:[1,2,3,4,5,6,7,8,9,10,13,15],ordinari:[1,4,5,9,12,14],oreilli:17,org:[9,12,13,17],organ:[0,4,5,8,13],orient:[2,3,4,15],origin:[1,3,4,6,9,10,13,15],orthogn:3,orthogon:[1,3,5,6,9,13],orthonorm:3,oscar:2,oslo:[1,14,16],osx:[1,12],other:[0,1,2,3,4,5,6,8,12,13,14,17],otherwis:[1,2,5],ouput:[3,5,10],our:[2,4,6,7,8,10,12,13],ourselv:[0,1,3,5,6,9],out:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],out_fil:7,outcom:[1,5,7,8,10,15],outdoor:7,outer:10,outfilenam:15,outlier:[1,6],outlin:[4,8,9],outlook:7,outperform:8,output:[1,2,3,5,6,7,8,10,13],output_bia:2,output_bias_gradi:2,output_weight:2,output_weights_gradi:2,outputlayer1:10,outputlayer2:10,over:[0,1,2,3,4,5,7,8,10,15],overal:[2,8],overcast:7,overcom:10,overdetermin:1,overfit:[2,4,7,8],overflow:[2,3],overhead:10,overlap:[5,6,7],overlin:[0,3,4,7,8,9,13],overst:1,overview:[0,17],own:[3,5,6,10,12,13],owner:1,oxid:1,oyvinssc:16,p_i:[3,15],p_j:15,p_n:15,p_x:15,pack:1,packag:[1,2,3,4,5,6,9,12,15],page:[1,12],pai:[2,7],painless:[],pair:[1,7,12,15],panda:[1,3,4,5,7,9,12],panel:[],paper:2,paradigm:1,parallel:[8,13],paramet:[1,2,3,4,5,6,7,8,10,15],parameter:[1,8],parametr:[1,4],paramt:3,park:15,part:[0,1,2,3,4,8,13,14,15,17],partial:[1,2,3,5,6,8,9,10,15],particip:[12,14],particl:[1,15],particular:[1,2,3,4,5,7,8,9,10,15,17],particularli:[3,4,5,6,9,15],partit:[2,7],pass:[0,10,15],past:[8,15],patch:[4,15],path:[1,4,5,7,12],patient:5,pattern:[1,10,14,17],pauli:1,pca:[1,5,12,14],pdf:[1,3,4,7,17],pedagog:1,penalti:[4,5],penros:3,pentagon:5,peopl:[1,2,7,12],per:[1,2,4,14],percentag:[1,8,9],perceptron:[1,2,5],peregrin:[],perfect:[1,2],perfectli:4,perform:[0,1,3,4,5,6,8,9,10,12,13,15],perhap:[1,3,5],perimet:2,period:2,permut:9,person:[3,5,14,16],perspect:17,pertin:10,petal:[6,7],peter:17,petersen:15,phantom:15,phase:10,phatak:0,phenomena:15,phi:6,phi_k:6,philip:16,philosophi:5,phone:16,phrase:1,physic:[1,2,5,10,15,16,17],pick:[0,2,5,7,8,9,15],pickl:2,pictur:1,pie:12,piec:[0,9],pillow:[1,12],pinv:3,pip3:[1,2],pip:[1,2,12],pipelin:[1,4,6,8],pippin:[],pise:0,pitt:10,pixel:2,pixel_height:2,pixel_width:2,place:[1,4,5,6,13],plai:[1,3,4,6,9,12],plain:[5,6,8,10],plan:[4,7,16,17],plane:[6,7],plateau:[3,15],platform:12,plausibl:10,pleas:[1,9],plenti:2,plethora:10,plot:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],plot_confusion_matrix:[5,8],plot_cumulative_gain:[5,8],plot_data:2,plot_dataset:6,plot_decision_boundari:[7,8],plot_import:8,plot_predict:6,plot_regression_predict:7,plot_roc:[5,8],plot_surfac:5,plot_train:7,plot_tre:[7,8],plt:[0,1,2,3,4,5,6,7,8,9,10,13,15],plu:[1,3,5],png:[1,4,5,7],point:[0,1,2,3,4,5,6,7,8,9,13,15,16],points_in_clust:0,poisson:12,poli:[4,6],poly100_kernel_svm_clf:6,poly3:1,poly3_plot:1,poly_featur:[6,7],poly_features10:7,poly_fit10:7,poly_fit:7,poly_kernel_svm_clf:6,polydegre:[3,4,8],polygon:5,polym:10,polynomi:[1,3,4,5,6,7,8,9],polynomial_featur:4,polynomial_svm_clf:6,polynomialfeatur:[1,4,6,7],polytrop:[1,4],poor:[2,5],popul:[1,3],popular:[1,2,4,5,6,7,9,10,12,13,15],popularli:1,portabl:8,portion:9,pose:[1,9,15],posit:[0,1,2,3,5,6,8,9,13,15],possibl:[1,2,3,4,5,6,7,8,9,10,12,13,15,16],posterior:3,postpon:1,postul:3,potenti:[1,3,10],pott:10,power:[1,2,3,4,6,7,10],practic:[1,3,4,5,6,15],practition:[1,2],preced:[2,9,10,15],preceq:6,precis:[1,3,9,13,15],pred:4,predict:[1,2,3,4,5,6,7,8,12,17],predict_prob:2,predict_proba:[5,8],predictor:[1,3,5,7,8,9],prefer:[1,2,6,7,9,12],prepar:1,preprocess:[4,5,6,7,8,9],prerequisit:1,present:[1,3,7,10,15],preserv:9,press:[5,17],pretrain:2,pretti:[1,6,7,12],prev_centroid:0,prevent:15,previou:[1,2,3,5,6,8,9,10,13,15],previous:[0,7,8,15],price:[1,7],primal:6,primari:[1,5],primarili:0,prime:15,princip:[1,3,5,12,14],principl:[0,1,4,5,6],print:[0,1,2,3,4,5,6,7,8,9,13,15],print_funct:[6,7],printout:1,prior:[1,3,4],privat:1,prob:[2,15],probabilist:[1,17],probabl:[1,2,4,5,8,12],problem:[1,3,4,6,7,8,9,10,12,13,14,15],proce:[1,3,5,6,7,8,9,13],procedur:[3,4,5,6,8,9],proceed:13,process:[0,1,4,5,7,8,10,12,13,15,17],prod:17,prod_:[2,3,5],produc:[0,1,3,7,8,9,10,12,13,15],product:[1,2,3,4,5,6,10,12,13],profess:1,profil:0,program:[0,1,2,3,6,10,12,13,14,15],programm:13,progress:[0,2],progression_plot:0,prohibit:4,project:[1,2,3,5,9,12,14,15,16],project_root_dir:[1,4,5,7],promin:10,promis:6,prone:7,pronounc:12,proof:[1,5,9,10],prop:4,proper:[1,4],properli:[0,2,6,8],properti:[1,2,4,5,10,13],proport:[1,2,3,7,9,15],propos:[2,8],propto:[3,5],proton:1,prove:5,provid:[1,2,3,4,5,6,7,8,10,12,13,15,17],proxi:2,prun:0,prune:7,pseudoinv:3,pseudoinvers:3,pseudorandom:15,psycholog:1,ptratio:1,punish:[1,2],pure:[7,15],purest:7,puriti:7,purpos:[0,1,8,10],put:2,pycod:[],pydata:12,pydot:7,pyhton2:[],pylab:[1,5],pypi:12,pyplot:[0,1,2,3,4,5,6,7,8,9,10,13,15],pythagora:[0,3],python2:1,python3:[1,2,4,6,9,12],python:[2,3,6,9,10,14],pytorch:[1,12],qquad:[9,13],quad:[2,5,13],quadrat:[1,5,6,7],qualit:[7,15],qualiti:[1,7,12],quantifi:2,quantil:8,quantit:[1,4,7],quantiti:[0,1,3,4,5,7,8,9,10,13,15],quantum:10,quartil:1,queri:7,question:[1,3,4,5,7,9,10],quick:15,quickli:[2,5,7,9],quirk:0,quit:[2,3,4,7,8,10],quot:15,r2_score:1,r2score:1,r_1:7,r_2:7,r_j:7,r_m:7,rad:1,radial:[1,6,10],radioact:15,radiu:[1,2],rain:7,rais:4,ramp:2,ran1:15,ran2:15,ran3:15,rand:[1,3,4,5,7,8,13,15],rand_max:15,randint:[4,5,7],randn:[1,2,3,4,5,7,9],random:[0,1,2,3,4,5,6,7,12,13,14],random_devic:15,random_forest_model:8,random_index:5,random_indic:2,random_st:[1,5,6,7,8,9],randomforestclassifi:8,randomli:[0,2,4,5,7,15],randomnumbergener:15,rang:[0,1,2,3,4,5,7,8,9,10,13,15],rangl:[1,9,15],rangle_x:15,rank:3,raphson:[2,6],rapidli:1,rare:2,rate:[1,2,5,6,7,8,10],rather:[1,2,3,4,5,6,7,8,9,10,13,15],ratio:[5,7,8,9],rational:1,ravel:[1,3,4,5,6,7,8,9],raw:15,rbf:[6,9,10],rbf_kernel_svm_clf:6,rbf_pca:9,rcond:1,rcparam:[1,2,5,6,7,8,15],reach:[0,1,2,3,4,5,7,8,9,10,15],read:[0,1,3,4,5,6,9,10,13,14,15,17],read_csv:[1,4,5,7],read_fwf:1,readabl:0,reader:[1,13,15],readi:[0,1,2,3,6,8,9,10,13],readili:2,real:[1,2,4,5,8,9,10,13],realist:6,realiti:15,realiz:[2,10],realli:2,reason:[0,1,2,5,8,17],reassign:2,recal:[3,4,5,7,8,9,10,13,15],recalcul:15,receiv:[2,8,10,15],recent:[1,4,5,7,8],recept:10,recip:[1,5,13],reciproc:3,recogn:[1,3,8],recognit:[1,2,10,14,17],recommend:[1,3,6,12,13,14,15,17],reconsid:7,reconstruct:9,record:[8,14],recreat:15,rectangl:[4,5,7],rectangular:3,rectifi:[2,10],recur:[1,12],recurr:[2,12,14],recurs:[7,12,13],recycl:15,red:[1,4,6,7],redefin:[1,8],reduc:[2,3,5,7,8,9],reduct:[1,8,9,12,15],refer:[0,1,2,3,4,5,9,10,13,17],refin:10,refit:4,reflect:[1,2,15],refresh:[12,14],reg:[8,9],regard:[2,5,7],regardless:10,region:[7,10],regist:15,reglasso:3,regr_1:[1,7],regr_2:[1,7],regr_3:[1,7],regress:[2,4,6,9,10,12,14],regressor:[1,5,8],regridg:3,regular:[1,3,5,7],reilli:[1,17],reinforc:[1,6,12],reiter:2,rel:[1,4,5,7,10,15],relat:[0,1,2,3,5,9,13,15],relationship:[1,7],relativeerror:1,releas:[2,12],relev:[1,2,3,5,9,12,15],reli:[1,6],reliabl:[5,15],remain:[2,4,10,13,15],remaind:15,remark:2,rememb:[1,6,13],remind:[1,3,9,13,15],remov:[1,3],render:1,reorder:[3,5],reorgan:1,repeat:[0,1,2,3,4,5,7,8,9,13,15],repeated:1,repeatedli:[4,8,15],repetit:[4,14],rephras:5,replac:[0,1,2,3,4,5,8,10],replica:4,repositori:1,repres:[1,2,3,4,5,6,7,8,10,15],represent:[1,2,4,15],reproduc:[1,7,10,12,15],repuls:1,request:1,requir:[1,2,3,4,5,6,7,9,10,13],resampl:[1,5,8,12,14,15],rescal:[1,9,10],rescu:3,research:[1,12,17],resembl:[4,15],reserv:[2,3,4,15],reset:15,reshap:[0,1,2,4,6,7,8],residenti:1,residu:[1,3,5],resiz:3,respect:[0,1,2,3,4,5,6,8,9,10,15],respond:10,respons:[1,5,7,10],rest:[1,3],restat:[1,10],restrict:[1,7,10],result:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],ret:4,retail:1,retain:[3,4],return_data:0,return_x_i:7,reus:2,reveal:[1,10],revers:2,review:[12,13],revisit:0,reward:1,rewrit:[1,3,4,5,6,8,9,10,13,15],rewritten:[4,6,8,15],rewrot:5,rgoj5yh7evk:12,rho:[1,8],rho_1:8,rho_2:8,rho_m:8,rich:1,rid:0,ride:7,rideclass:7,ridedata:7,ridg:[1,4,9,12,14],ridgebeta:3,right:[1,2,3,4,5,6,7,8,10,13,15],rightarrow:[1,2,3,5,6,9,10,15],rigor:1,rise:1,risk:[1,5],river:1,rmse:1,rmsprop:2,rnd_clf:8,rnn:10,rntrick1:15,rntrick2:15,rntrick3:15,rntrick4:15,robert:17,robust:1,robustscal:1,roc:8,role:[1,3,4,6,12],room:[1,16],root:[1,3,5,7,15],rot:[],rotat:[2,6,7,8],rotation_matrix:7,roughli:2,round:[1,5,7],routin:[5,13],row:[1,2,3,4,7,9,13],rrr:3,rug:5,rule:[1,2,3],run:[0,1,2,3,4,5,6,7,9,12],runtim:[0,2,4],runtimewarn:2,rust:[1,12,13],rvert:2,rvert_2:2,rwidth:4,s_i:5,saddl:5,safe:15,sai:[0,1,2,3,4,5,6,7,8,9,10,13,15],said:[4,5,7],sake:[1,3,5,9],sale:1,sam:[],same:[0,1,2,3,4,5,6,7,9,10,13,15],samm:8,sampl:[0,1,2,3,4,5,6,7,8,12,13],sample_vari:0,sampleexptvari:15,samwis:[],sanitize_sequ:4,sastri:9,satisfactori:1,satisfi:[2,4,5,6,13,15],satur:[2,4],save:[1,4,5,7],save_fig:[1,4,5,7,8],savefig:[1,4,5,7,15],saw:3,scalabl:8,scalar:[3,4,8],scale:[1,2,3,5,6,7,8,9,10,12,16],scaler:[1,5,6,7,8,9],scan:[3,5],scari:3,scatter:[0,1,2,4,5,6,7],scenario:5,scheme:[2,5],schrage:15,scienc:[1,2,5,8,10,12,14,15,17],scientif:[1,12],scientist:[0,1],scikit:[3,6,7,8,12,13,14,17],scikitlearn:1,scikitplot:[5,8],scipi:[1,3,5,12,13],score:[1,2,4,5,7,8,9,16],scores_kfold:4,scratch:2,sdg:5,seaborn:[1,2,5],seamless:[1,12],search:[1,2,3,5,7],sec:4,second:[0,1,3,4,5,6,7,9,10,12,13,15],secondeigvector:9,secondli:10,section:[0,9,11,13,14,15],sector:1,see:[0,1,2,3,4,5,6,8,9,10,12,13,14,15],seed:[0,1,2,3,4,5,6,7,9,15],seek:[2,6],seem:2,seemingli:1,seen:[1,2,8,10,15],segment:5,seldomli:1,select:[2,3,4,6,7,8,9,14,17],self:[2,3,4,15,17],semest:[5,14],semi:[5,6],send:[10,16],senior:14,sens:[1,4,6],sensit:[1,3,4,7],sentenc:10,separ:[0,1,2,4,6,7,10,12,15],sequenc:[0,5,7,8,10,12,13,15],sequenti:[2,8,10,15],seri:[1,2,3,5,8,9,10,13,14],serif:[1,5,15],serv:[1,2,3,5,17],session:[2,14],set:[0,2,3,4,5,6,8,9,12,13,15],set_:4,set_label:4,set_tick:[2,6],set_ticklabel:2,set_titl:[0,1,2,5,10],set_xlabel:[1,2,5,10],set_xlim:[5,10],set_xticklabel:2,set_ylabel:[1,2,5],set_ylim:[5,10],set_ytick:5,set_yticklabel:2,setiosflag:15,setminu:4,setosa:[6,7],setosa_or_versicolor:6,setp:4,setprecis:15,setup:[2,6,12],setw:15,sever:[1,3,4,5,6,7,9,10,12,13,14,15],sgd:2,sgd_clf:6,sgdclassifi:6,sgdreg:5,sgdregressor:5,sgn:3,shape:[0,1,2,3,4,5,6,7,8,9,13],share:2,she:5,shift:[2,10,15],shire:[],shortcom:5,shorter:15,shorthand:[],shortli:13,should:[0,1,3,4,6,7,9,10,13],show:[0,1,2,3,4,5,6,7,8,9,10,13,15],shown:[3,5,6,9,10,15],showpoint:15,shrink:[3,6,9],shrinkag:3,shrunk:9,shuffl:[2,4],side:[1,3,5,6,10,13],sigh:12,sigma0:15,sigma1:15,sigma2:15,sigma:[1,2,3,4,5,8,9,10,13,15],sigma_0:3,sigma_1:3,sigma_2:3,sigma_:[3,13,15],sigma_fn:[5,10],sigma_i:[1,3],sigma_j:3,sigma_m:15,sigma_n:[9,15],sigma_x:15,sigmoid:[2,5,6,8,10],sigmundson:16,sign:[2,5,6,8,15],signal:[2,8,10],signific:2,significantli:[2,5,15],sim:[3,4,15],similar:[0,1,2,3,4,5,6,7,8,9,12,13],similarli:[1,2,3,6,8,15],simpl:[0,2,3,4,6,8,9,10,12,13],simplepredict:8,simpler:[0,1,2,3,12],simplest:[0,1,2,7,8,10],simpletre:8,simpli:[1,2,3,4,6,7,8,9,10,12,13,15],simplic:[0,3,5,6,7,8,9,10],simplicti:3,simplifi:[1,4,7,12],simplist:15,simul:[4,15],simultan:4,sin:[1,2,7,10,13],sinc:[1,2,3,4,5,6,7,8,9,13,15,17],sine:10,singl:[2,3,5,6,7,10,13,15],singular:[1,4,5,13],site:[1,2,4,6,9,14],situat:[1,3,5],six:15,size:[1,2,3,4,5,6,7,8,9,13,15],sketch:8,ski:7,skill:1,skip:9,skl:1,sklearn:[1,2,3,4,5,6,7,8,9],skplt:[5,8],slack:6,slice:13,slide:[1,15],slight:4,slightli:[2,3,4,8,15],slope:[6,9,10],slow:[1,5,6],slower:[3,13],slowli:10,slp:2,small:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],smaller:[1,2,4,5,6,7,9,15],smallest:[0,1],smallest_row_index:0,smart:4,smooth:[1,5],sne:9,sneak:1,sns:[1,2,5],soar:4,social:1,soft:[2,5,8,10],soften:6,softmax:5,softwar:[1,6,12,13,14],sol:6,sole:1,solid:[1,5],solut:[1,2,3,4,5,6,8,9,13,15],solv:[1,2,3,6,8,9,10,13],solver:[5,6,7,8,9,13],some:[0,1,2,3,4,6,7,8,9,10,13,15],someth:[1,2,5,7,9,15],sometim:[0,1,2,9,10],soon:13,sophist:1,sopt:5,sort:[1,3,4,7,9,15],sound:3,sourc:[0,1,2,4,12,13,15],space:[0,1,2,3,5,6,7,9,10,15],span:[1,3,7,9,13],spare:2,spars:13,sparse_mtx:13,sparsiti:8,spatial:[2,10],speak:15,special:[4,5,8,10,13,15],specif:[1,2,3,4,5,6,7,9,10,12,13,15],specifi:[0,1,3,4,5,7,9,15],specifici:[1,8],spectral:2,speech:[1,2,10],speed:2,spend:15,sphere:1,spite:1,spline:6,split:[0,2,3,4,6,7,8,9,15],splitter:[2,8],spontan:15,spread:[1,9,15],springer:17,sqquar:3,sqrt:[1,3,4,5,6,8,9,15],squar:[0,1,2,4,5,6,7,9,12,13,15],squarederror:8,squaredeuclidean:0,squash:10,srand:15,stabl:[1,3,7,9,12],stack:4,stage:5,stai:[1,3,9],stand:[1,3,7,10],standard:[1,2,3,4,6,8,10,13],standardscal:[1,5,6,7,8,9],stanford:5,start:[0,1,2,3,4,5,6,7,8,9,10,13,15],start_tim:0,startpoint:15,stat:4,state:[0,2,3,5,6,8,9,10,12,15],statement:[1,5,13],statis:[],statist:[0,1,2,5,7,8,9,10,13,14,17],statu:[1,5,9],std:[4,15],stdev:15,steep:5,step:[0,1,2,7,8,9,10,13,15],step_fn:[5,10],step_length:5,steps_list:7,stian:16,still:[3,4,5,9,15],stimuli:10,stk2100:17,stk4021:17,stk4051:17,stk5000:17,stk:17,stochast:[1,2,3,4,6,9,10],stoke:10,stone:[1,5],stop:[0,2,7,9,15],storag:3,store:[1,2,5,9,15],str:2,straight:[1,4,5,6],straightforward:[1,3,4,5,6,7,8,13],strategi:[1,2,7],stratifi:4,strength:[0,3],stretch:9,strict:[5,6],strictli:[5,6],string:[2,15],stroke:5,strong:[7,8,10,15],strongli:[1,6,12,13],stronli:1,structur:[0,1,2,4,7,8,10,12],stuck:[2,5],student:[1,14,16,17],studi:[0,1,3,5,6,9,10,12,17],studier:17,style:[1,5,7],sub:[7,10],subdivid:[1,13],subfield:1,subject:[6,15],subplot:[0,1,2,4,5,6,7,8],subplots_adjust:[6,15],subprogram:13,subroutin:1,subscript:2,subsequ:[2,3,4,10,13,15],subset:[2,4,5,7,10,12],subspac:[1,6,9],substanti:[7,8],substep:9,substitut:[4,10,13],subsubset:7,subtl:2,subtract:[3,4,9,13,15],subtre:7,succeed:1,success:[5,7,15],successfulli:7,sucess:15,sudo:[1,12],suffer:[1,2,3,8],suffici:[2,4,5,6,9],suggest:[2,5,17],suit:[6,10],suitabl:[1,15],sum:[0,1,2,3,4,5,6,7,8,9,10,15],sum_:[0,1,2,3,4,5,6,7,8,9,10,13,15],sum_i:[3,4,5,6],sum_k:[6,10,13],summar:[0,3,4,7],summari:[0,2,8,14],summat:[],sunni:7,superscript:[2,10],supervis:[1,3,4,5,7,10,12],supplement:5,support:[1,2,7,8,9,12],suppos:[1,3,4,5,6,8,9,10,13],suppress:3,sure:2,surfac:1,surpris:1,surround:12,survei:[1,3],svc:[6,7,8],svd:[1,4,9],svdinv:3,svm:[6,7,8,9],svm_clf:[6,8],swath:3,symbol:[2,3,9,12,15],symmeteri:2,symmetr:[1,3,5,6,9,10,13],sympi:[1,12],synonim:15,syntax:[2,13],syntaxerror:[2,6,13],sys:5,system:[1,2,5,7,8,10,12,13,17],systemat:[4,15],t_0:[5,7],t_1:5,t_b:8,t_i:[2,10],t_j:[3,10],t_k:7,tabl:[7,15,16],tabul:1,tabular:[],tackl:0,tag:[0,3,5,10,13,15],taht:1,tail:15,tailor:[6,9],taiwan:1,take:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],taken:[1,2,4,8,13],tangent:[2,5,10],tanh:[2,5,6,10],target:[1,2,3,5,6,7,8,9,10],target_nam:7,task:[0,1,2,4,7,9,10],tau:[3,15],tax:1,taylor:5,taylornr:5,team:2,teaser:1,technic:[0,1,3],techniqu:[1,2,6,8,12,15,17],technolog:[1,2],tek5040:17,tell:[4,5,8,9,15],temp1:2,temp2:2,temp:2,temperatur:[1,7],temporarili:2,ten:[],tend:[0,3,4,6,7,8,10],tendenc:1,tension:4,tensorflow:[0,1,6,12,13,14,17],term1:[1,3,9],term2:[1,3,9],term3:[1,3,9],term4:[1,3,9],term:[0,1,2,3,4,5,6,7,8,9,10,15],termin:[1,3,7,8],test:[3,4,5,6,7,8,15],test_accuraci:2,test_data:0,test_ind:4,test_pr:2,test_predict:2,test_scor:[5,8],test_siz:[1,2,3,4,8],test_split:7,tester:[],testerror:4,text:[1,2,3,5,6,7,9,13,15,17],textual:7,textur:2,than:[1,2,3,4,7,8,9,10,12,15],thats:0,theano:[2,12],thei:[0,1,2,3,4,5,6,7,9,10,13,15],them:[1,2,5,6,7,8,9,10,13],theme:1,themselv:[1,15],thenc:4,theorem:[4,5],theoret:[1,8],theori:[1,2,5,6,7,10,12,17],thereaft:[1,4,9,10,13],therebi:[1,3,5,9,15],therefor:[1,2,4,5,6,9,15],therein:9,thereof:[1,4,5],theta:[2,4,5,15],theta_:2,theta_i:2,theta_k:15,theta_linreg:5,thi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17],thing:[0,1,2,3,5,7,15],think:[0,1,2,4,5,7,10,15],third:[1,5],thirti:5,thorough:0,those:[0,3,6,7,8,9,13,14],though:[2,13,15],thought:[0,4,15],thousand:[1,2],three:[1,2,3,4,6,7,10,13,14,16],threshold:[2,5,7,8,9,10],through:[0,1,2,3,5,6,9,10,12,13,15],throughout:[0,1,12,13,15],thu:[1,2,3,4,5,6,8,9,10,15,16],thumb:1,thursdai:14,tibshirani:[14,17],ticker:[5,15],tight_layout:[2,5],tightli:9,tild:[1,3,4,9,15],till:[1,5,6,7,8,10,13],time:[0,1,2,3,4,5,6,7,8,9,10,13,14,15],timefunct:15,tini:2,tip:11,titl:[1,2,4,5,6,7,8,15],to_categor:2,to_categorical_numpi:2,to_numer:[1,4],to_str:15,togeth:[1,6,9],toi:0,toler:0,tomographi:10,too:[1,3,4,5,7,9,15,17],took:6,tool:[0,1,2,4,12,15],toolbox:6,top:[1,3,4,7,8,12],topic:[0,1,3,5,6,12,17],topolog:[2,10],toss:8,total:[0,1,2,4,5,6,8,9,10,15,16],totalclustervari:0,totalscatt:0,totalvari:15,toward:[2,5,10],town:1,tpng:7,traceback:[4,5,7,8],track:[0,5,13],tract:1,tractabl:1,trade:[3,4,7],tradeoff:[1,3,14],tradit:[1,2,4],train:[3,4,5,6,7,8,9,10],train_accuraci:[1,2],train_end:2,train_ind:4,train_pr:2,train_siz:2,train_test_split:[1,2,3,4,5,7,8,9],train_test_split_numpi:2,trainingerror:4,trait:1,transfer:7,transform:[1,3,4,5,6,7,8,9,10,12,13],transit:10,translat:[2,8],transpos:[2,3,9],treat:[1,2,4,5,10,15],tree:[1,2,12,14],tree_clf:[7,8],tree_clf_:7,tree_clf_sr:7,tree_reg1:7,tree_reg2:7,tree_reg:7,trend:15,trevor:17,tri:7,trial:[1,4,5,15],triangl:5,triangular:13,trick:[6,9,15],trickier:15,tridiagon:13,trillion:12,trivial:[1,2,3,9,15],troubl:[1,6,10],true_divid:2,true_fun:4,tucker:6,tumor:[5,7],tumour:5,tunabl:2,tune:[7,13],turn:[1,2,3,4,5,6,7,8,9,10,13,15],tutori:2,tweak:[2,8,15],twice:5,twist:9,twister:15,two:[0,1,2,3,4,5,7,8,9,10,13,14,15,17],tx_1:5,type:[1,2,4,5,6,8,13,15],typeerror:[],typic:[1,2,3,5,7,8,10,15],u_i:10,u_m:8,ubuntu:[1,12],uci:1,uio:[16,17],unari:13,unbalanc:[4,7],unbias:[1,3,4,15],uncertainti:[1,3],uncertitud:15,unchang:2,uncorrel:8,undefin:3,under:[1,2,3,4,5,8,12],underdetermin:1,underfit:[2,4],underflowproblem:3,undergo:3,undergradu:14,underli:[1,2,5,7,15],underset:0,understand:[0,1,2,3,5,8,12],understood:[0,6],undesir:6,undetermin:[3,6],unexpect:[4,15],unexpected:15,unfortun:[2,6,7,8],unicode_liter:[6,7],uniform:[1,2,3,5,9],uniform_real_distribut:15,uniformli:[5,15],unifrompdf:15,unimport:5,union:[3,4],uniqu:[0,1,4,5,13],unique_cluster_label:0,unit:[1,2,3,8,10,15],unitari:[3,13],unitarili:13,uniti:15,univari:15,univers:[1,2,5,14,16],unix:2,unknow:[1,13],unknown:[1,2,3,4,6,8,13],unknowwn:10,unlabel:2,unless:[1,4,5,9],unlik:[2,5,6,15],unnecessarili:7,unravel:2,unrol:9,unseen:[5,7],unstabl:2,unsupervis:[1,2,10,12,14],unsymmetr:13,until:[0,2,5,7,10,15],unusu:10,updat:[0,2,4,8,10],upload:[12,17],upon:[2,9,13],upper:[1,6,7,13],uppercas:[13,15],ups:[],usag:[1,6,12,15],usd10000:1,usd:1,use:[0,1,3,4,5,6,7,8,9,10,12,13,14],usecol:1,used:[0,1,2,3,4,6,7,8,9,10,12,13,15,17],useful:[1,2,3,4,5,7,9,10,12,13,15,17],useless:2,user:[1,2,5,6,9,12,13],uses:[1,2,3,4,7,9,10,13,15],usetex:15,using:[0,2,3,4,6,7,8,9,10,13],usr:15,usual:[0,1,5,10],util:[0,2,4,5,8],v_0:9,valid:[1,2,5,7,8,12,14,15],valu:[0,1,2,4,5,6,7,8,10,12,13],valuat:7,valueerror:[],van:[1,3],vandenbergh:[5,6],vandermond:1,vanilla:9,vanish:[2,5,15],var_x:15,varabl:6,varepsilon:[3,4],varepsilon_:[3,4],varepsilon_i:[3,4],vari:[1,2,4,8],variabl:[0,1,2,3,4,6,8,9,10,13],varianc:[0,1,2,3,5,7,8,9,12,13,14],variance_i:[3,9],variance_x:[3,9],variant:[1,2,4,5,6,10],variat:9,varieti:[1,10,12],variou:[2,3,5,6,7,9,10,12,13,15],vartempvec:15,varvec:15,vaue:2,vdot:5,vec:[4,15],vector:[0,1,2,3,4,5,7,8,9,12],vector_mean:0,ventur:[1,6,12],verbos:2,veri:[0,1,2,3,4,5,6,7,8,9,10,15,17],verifi:[9,13],versatil:6,versicolor:[6,7],version:[0,1,8,12,13,15],versu:2,vert:[1,2,3,5,6,7,9],vert_1:3,vert_2:[3,9],vertic:4,via:[1,3,4,5,6,7,8,9,10,12,13,14,15],vidal:9,video:[1,2,5,10,12,14],view:[2,3,10,15,17],violat:6,virginica:7,viridi:[1,2],virtual:2,vision:1,visual:[1,9,10,12],visualis:2,viz:[6,15],vmax:2,vmc:15,vmin:2,volum:1,vote:8,voting_clf:8,votingclassifi:8,votingsimpl:8,vstack:[3,9,13,15],w_1:[6,13],w_1x_1:6,w_1x_:6,w_2:[6,13],w_2x_2:6,w_2x_:6,w_3:13,w_4:13,w_i:[2,8],w_ix_i:10,w_j:13,w_m:13,w_px_:6,w_px_p:6,wai:[0,1,2,3,4,5,6,8,9,10,11,13,15],walk:7,walker:15,wang:1,want:[0,1,2,3,4,5,6,7,8,9,10,12,15],warn:[1,2,6],warrant:4,watch:12,wavelet:6,weak:[0,7,8],weather:[2,10],web:[12,14],websit:[13,14],wedg:[6,15],wednesdai:14,wee:9,week:[3,5],weekli:[12,17],weight:[1,2,4,5,7,8,10,15],welcom:[6,12],well:[1,2,3,4,5,6,7,8,10,12,13,15,17],went:6,were:[0,1,2,3,4,5,6,8,9,10,15],wessel:[1,3],what:[0,2,3,4,5,6,7,8,9,10,12,13,14],when:[0,1,2,3,4,6,7,8,9,10,13,15],whenev:15,where:[0,1,2,3,4,5,6,7,8,9,10,12,13,15,16],wherea:[4,15],wherein:[2,10],whether:[1,3,5,7,15],which:[0,1,3,4,5,6,7,8,9,10,12,13,14,16],whichev:2,white:7,who:[1,14],whole:[0,2,3,7,9],whose:[4,8,15],whow:[3,9],why:[1,2,5],wide:[1,2,4,5,10,12,13],widehat:4,width:[1,6,7],wieringen:[1,3],win:8,wind:7,wing:16,wiscons:5,wisconsin:8,wise:[1,2,3,10],wish:[0,1,3,5,6,9,13],within:[0,1,5,7,10,15,17],withinclust:0,without:[1,2,3,5,6,7,9,10],won:1,wonder:6,word:[0,1,2,3,15],work:[0,1,2,4,5,6,7,12,14,15],world:[1,6],worldwid:1,wors:[1,2,4],worth:7,would:[1,2,3,4,5,6,7,8,9,10,13,15],wrap:13,write:[1,2,3,5,6,10,11,13,14,15],written:[1,3,5,9,10,12,13,15],wrong:[2,6],wrongli:[8,15],wrote:[3,9],wrt:8,wth:8,www:[12,13,17],wx_1:6,x0s:6,x1_exampl:6,x1d:6,x1s:[6,7,8],x2d:[6,9],x2d_train:9,x2dsl:9,x2s:[6,7,8],x3s:6,x_0:[1,3,9,13],x_1:[1,3,4,5,6,7,8,9,13,15],x_2:[1,3,4,5,6,7,8,9,13,15],x_3:[6,13,15],x_4:13,x_center:9,x_data:2,x_data_ful:2,x_i:[0,1,2,3,4,5,6,7,8,9,10,13,15],x_ix_:1,x_iy_i:6,x_j:[6,7,10,15],x_jy_j:6,x_k:[0,10,13,15],x_l:15,x_m:[10,13,15],x_n:[1,4,5,6,9,10,13,15],x_new:[7,8],x_p:[5,7],x_poli:7,x_poly10:7,x_reduc:9,x_scale:6,x_test:[1,2,3,4,5,7,8,9],x_test_scal:[1,5,7,8,9],x_train:[1,2,3,4,5,7,8,9],x_train_scal:[1,5,7,8,9],x_val:2,xarrai:12,xavier:2,xbnew:5,xcode:[1,12],xdclassiffierconfus:8,xdclassiffierroc:8,xg_clf:8,xgb:8,xgbclassifi:8,xgboost:7,xgboot:8,xgbregressor:8,xgparam:8,xgtree:8,xi_1:6,xi_:6,xi_i:6,xlabel:[1,2,3,4,5,6,7,8,15],xlim:[4,8],xmesh:5,xnew:[1,5],xpd:[3,9],xplot:1,xsr:7,xt_x:5,xtest:4,xtick:[4,6,7],xtrain:4,xytext:6,y_0:[1,3,9,13],y_1:[1,3,5,6,7,9,13],y_1y_1:6,y_1y_1k:6,y_1y_2:6,y_1y_2k:6,y_1y_n:6,y_1y_nk:6,y_2:[1,3,6,7,9,13],y_2y_1:6,y_2y_1k:6,y_2y_2:6,y_2y_2k:6,y_3:[1,7,13],y_4:13,y_data:[1,2,3],y_data_ful:2,y_decis:6,y_i:[1,2,3,4,5,6,7,8,9,10,13],y_if_:8,y_ix_:1,y_ix_i:[5,6],y_iy_jk:6,y_j:[4,6,10],y_k:10,y_m:13,y_model:[1,3],y_n:[5,6],y_ny_1:6,y_ny_1k:6,y_ny_2:6,y_ny_2k:6,y_ny_n:6,y_ny_nk:6,y_plot:7,y_pred1:7,y_pred2:7,y_pred:[1,2,4,5,6,7,8],y_pred_rf:8,y_pred_tre:8,y_proba:[5,8],y_test:[1,2,3,4,5,7,8,9],y_test_onehot:2,y_test_predict:1,y_train:[1,2,3,4,5,7,8,9],y_train_onehot:2,y_train_predict:1,y_val:2,year:[1,12],yes:[4,5],yet:[1,2,4,6,9],yield:[0,1,3,4,5,6,8,10,13,15],ylabel:[1,2,3,4,5,6,7,8,15],ylim:4,ymesh:5,yoshua:[2,17],you:[0,1,2,3,4,5,6,7,8,9,12,13,15,17],young:1,your:[0,2,4,5,6,9,12,13,15],yourself:[5,9],youtub:12,ypred:4,ypredict2:5,ypredict:[1,5],ypredictlasso:3,ypredictol:3,ypredictridg:3,yridg:1,ytest:4,ytick:[4,6,7],ytild:[1,4],ytildelasso:3,ytildenp:1,ytildeol:3,ytilderidg:3,ytrain:4,z_0:13,z_1:13,z_2:13,z_c:2,z_h:2,z_i:[2,10],z_j:[2,10],z_k:10,z_m:2,z_mod:7,z_o:2,zaman:15,zero:[0,1,2,3,4,5,6,7,8,9,10,13,15],zm_h:1,zone:1},titles:["11. Clustering Analysis","3. Linear Regression","13. Building a Feed Forward Neural Network","4. Ridge and Lasso Regression","5. Resampling Methods","6. Logistic Regression","7. Support Vector Machines, overarching aims","8. Decision trees, overarching aims","9. Ensemble Methods: From a Single Tree to Many Trees and Extreme Boosting, Meet the Jungle of Methods","10. Basic ideas of the Principal Component Analysis (PCA)","12. Neural networks","Content in Jupyter Book","Applied Data Analysis and Machine Learning, FYS-STK3155/4155 at the University of Oslo, Norway","2. Linear Algebra, Handling of Arrays and more Python Features","Teaching schedule with links to material","1. Elements of Probability Theory and Statistical Data Analysis","Teachers and Grading","Textbooks"],titleterms:{"2021":16,"4155":12,"case":[5,6,8,15],"final":[5,10],"function":[1,2,5,6,8,9,10,15],"import":[3,13,15],And:5,Eye:8,FYS:12,OLS:3,The:[0,1,2,3,4,5,6,7,9,10,12,15],Useful:12,Using:5,activ:[2,10],actual:15,adaboost:8,adapt:8,adjust:2,again:7,aim:[6,7],algebra:13,algorithm:[0,7,8,9,10],algortithm:5,all:6,analys:3,analysi:[0,1,3,9,12,15],ani:5,anoth:7,appli:12,approach:[1,5,6],approxim:10,architectur:2,arrai:13,assist:16,august:14,autocorrel:15,back:[2,9,10],background:12,bag:8,basic:[0,1,3,5,7,8,9,13],batch:2,bay:3,befor:9,better:[6,15],bia:4,binari:2,binomi:15,bird:8,block:15,book:11,boost:8,bootstrap:[4,8,15],boston:1,breast:2,brief:5,bring:10,build:[2,7],calcul:15,cancer:[2,5,7,9],cart:7,central:[5,12,15],chain:10,chang:8,chi:1,choos:2,classic:9,classif:[2,7,8],classifi:6,clip:2,cluster:0,code:[0,1,2,3,5,7,9,10,15],collect:2,compar:8,compon:9,comput:[5,7,15],con:7,concept:15,condit:5,conjug:5,content:11,continu:15,convex:[5,6],convolut:10,correl:[9,15],correspond:5,cost:[2,5,8],cours:[12,17],covari:[3,9,15],cross:4,cumul:15,cython:[],data:[1,2,5,7,9,12,15],dataset:2,decemb:14,decis:[7,8],decomposit:[3,9,13],deep:2,defin:2,definit:15,degre:1,demonstr:15,dens:1,deriv:[3,5,10],descent:[5,8],develop:2,deviat:15,diagon:9,dice:15,differ:[5,6],dimension:6,disadvantag:7,discret:15,disguis:15,distribut:[3,15],doing:2,domain:15,down:2,dropout:2,economi:[],element:[1,15],elimin:13,ensembl:8,entropi:7,environ:1,equat:[1,3,5,10],error:8,etc:[],evalu:2,event:15,exampl:[1,2,5,6,7,8,15],exercis:1,expect:15,experi:15,explor:1,exponenti:15,express:5,extend:5,extrem:8,fall:16,famili:2,famou:15,fantast:[],featur:[7,13],feed:[2,10],fine:2,first:[5,10],fit:[1,8],forest:8,forward:[2,10],frank:1,freedom:1,frequentist:1,fridai:5,from:[3,8,10],further:3,gaussian:[13,15],gener:[7,15],geometr:[5,9],gini:7,good:1,grade:16,gradient:[2,5,8],handl:13,has:12,hessian:5,homework:5,hous:1,how:15,hyperparamet:2,hyperplan:6,id3:7,idea:[0,9],ideal:5,implement:[2,15],implic:3,improv:2,increment:9,index:7,inform:16,instal:12,instructor:16,interpret:[3,5,9],introduc:9,introduct:[1,4,12,13],invers:[3,13],iter:[5,8],its:15,jackknif:15,julia:[],jungl:8,jupyt:11,kera:2,kernel:[6,9],lagrangian:6,lasso:3,later:3,layer:[2,10],learn:[1,2,5,9,12],least:3,level:8,librari:12,likelihood:5,limit:[2,5,15],linear:[1,6,13],link:[3,9,14,17],logist:5,loss:5,machin:[1,5,6,12],main:15,make:[1,7,8],mani:[8,10],materi:14,math:3,mathemat:[3,6],matric:3,matrix:[2,3,5,9,10,13,15],matter:1,mean:[0,15],meet:[3,8,15],mercer:6,mersenn:15,method:[4,5,7,8,15],mlp:10,model:[1,2,10],moment:15,moon:[6,7],more:[0,5,13],multilay:10,multipl:2,multipli:6,name:15,need:[],network:[2,5,10],neural:[2,10],newton:5,non:6,normal:[1,2,15],norwai:12,notat:10,novemb:14,now:[2,7],nuclear:1,nueral:5,numba:[],number:[1,15],numer:15,numpi:13,numpython:0,observ:15,obtain:9,octob:14,one:[5,10],optim:[2,5,6,12],ordinari:3,organ:1,oslo:[12,17],other:[7,9,10,15],our:[0,1,3,5,9,15],outcom:12,output:15,overarch:[1,6,7],overview:8,own:[0,1,8,9],packag:13,panda:[],part:[5,12],pass:2,pca:9,pdf:15,perceptron:10,perform:[2,7],period:15,perspect:2,poisson:15,pre:2,preprocess:1,prerequisit:12,princip:9,pro:7,probabl:[3,15],problem:[2,5],procedur:7,process:2,program:5,propag:[2,10],properti:[3,15],pseudo:15,python:[0,1,7,12,13,15],quick:6,ran0:15,random:[8,9,15],raphson:5,read:7,recip:15,recurr:10,reduc:1,regress:[1,3,5,7,8],regular:2,relev:17,relu:2,remind:[4,5,6],requir:12,resampl:4,revisit:5,ridg:[3,5],rng:15,rule:10,sampl:[9,15],schedul:14,schemat:7,scikit:[1,2,5,9],select:15,semest:16,sensit:5,septemb:[5,14],set:[1,7,10],sgd:5,should:[2,15],simpl:[1,5,7,15],singl:8,singular:[3,9],situat:15,size:[],slightli:5,soft:6,softmax:2,softwar:[],solv:5,some:5,split:1,squar:[3,8],standard:[5,15],state:1,statist:[3,4,12,15],steepest:[5,8],step:[4,5],stk3155:12,stochast:[5,15],stop:5,supervis:2,support:6,svd:3,teach:[14,16],teacher:16,techniqu:9,technolog:12,tensorflow:2,test:[1,2],textbook:17,than:5,theorem:[3,6,9,10,15],theori:15,three:15,togeth:10,top:2,toss:15,toward:[0,9],tradeoff:4,train:[1,2],tree:[7,8],tune:2,two:[6,12],type:10,uncorrel:15,understand:[],uniform:15,univers:[10,12,17],use:[2,15],used:5,using:[1,5,15],valid:4,valu:[3,9,15],variabl:[5,15],varianc:[4,15],variou:[1,4],vector:[6,10,13],view:[1,8],visual:[2,7],wai:7,week:14,weekli:14,what:[1,15],when:5,which:[2,15],why:15,wisconsin:5,write:[0,9],xgboost:8,your:[1,8]}}) \ No newline at end of file +Search.setIndex({docnames:["Clustering","chapter1","chapter10","chapter2","chapter3","chapter4","chapter5","chapter6","chapter7","chapter8","chapter9","content","intro","linalg","schedule","statistics","teachers","textbooks"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["Clustering.ipynb","chapter1.ipynb","chapter10.ipynb","chapter2.ipynb","chapter3.ipynb","chapter4.ipynb","chapter5.ipynb","chapter6.ipynb","chapter7.ipynb","chapter8.ipynb","chapter9.ipynb","content.md","intro.md","linalg.ipynb","schedule.md","statistics.ipynb","teachers.md","textbooks.md"],objects:{},objnames:{},objtypes:{},terms:{"000":2,"000000":[1,3,9],"00000000e":3,"0001":2,"00015921913736794912":7,"00019998":3,"00024087":3,"00029012":3,"00034944":3,"00042089":3,"00050694":3,"00061058":3,"00073541":3,"00079968":3,"00088573":3,"00096314":3,"001":[2,3,5,6],"00106677":3,"00109273":[],"00115999":3,"00128479":3,"00139705":3,"00154733":3,"00168251":3,"00186347":3,"00200":6,"00202624":3,"00224413":3,"0024401":3,"00270244":3,"00293838":3,"0032542":3,"0032873138755776365":15,"00353823":3,"003704":1,"003717":1,"003759":1,"003774":1,"003788":1,"00391839":3,"004":3,"00426027":3,"00433417":9,"004456043243408203":0,"00445655":9,"00471782":3,"0049999999999999845":[],"004999999999999996":[],"004999999999999997":[],"0050000000000000044":1,"005000000000000007":[],"00512927":3,"0056799":3,"00617499":3,"00683748":3,"006968283076248407":1,"00727646693":1,"00728323e":[],"007315":1,"0074331":3,"007789":[],"007824":1,"007931713723267314":1,"00823002":3,"0086649156":1,"008675369724976777":3,"008885578722629236":[],"00890601":3,"00894639":3,"009154":1,"009163470508352228":3,"009735":9,"00973536":9,"009790":1,"009883615646716182":[],"009883615646716184":[],"009883615646716186":1,"00990475":3,"009911":1,"01057384067458835":[],"010679893512872646":[],"01076611":3,"0110":15,"011347":1,"01191824":3,"01210814993019007":[],"01295356":3,"0140617":[],"01433809":3,"01503674":[],"015037":[],"01514394":[],"015144":[],"01558197":3,"0169643":3,"0170259":3,"01724499":3,"018232":1,"01825571":3,"01867234e":15,"01873344":9,"01873869":3,"02073509":3,"021544346900318832":3,"02161783e":15,"021901":9,"02190139":9,"02252765":3,"02492265":3,"02493044e":[],"02568378":[],"025709":[1,9],"02625193":6,"02707227":3,"02730126581656065":15,"02881304":[],"029688":[],"02968834":[],"029733":1,"02994311":3,"03019554":[],"030196":[],"030670":[],"03067028":[],"03099776":3,"031":3,"03193199":3,"03251863":3,"03256632e":2,"03303359":[],"033037772005753835":[],"03308408":3,"034342":3,"0344707":3,"0359565":3,"03607832":[],"03652792":[],"036528":[],"03697069":[],"03707133":9,"03750367":13,"03787596148305236":1,"03791824e":15,"038300":[1,9],"03871832":[],"039039":3,"04205220e":15,"04260073e":[],"04315108":3,"04330858":[],"04346721":3,"04421672e":[],"044334":1,"044402":1,"04455272":[],"044553":[],"04529095":3,"0458":7,"04648335":3,"04683565":3,"04757618e":[],"04829457939163212":15,"051115":[],"051649":[1,9],"0517473":3,"052645":[],"053053":[],"0530533":[],"05318162":[],"053182":[],"05364854":6,"05396545e":[],"054187":[],"054276":[],"054674":[],"055":[],"055085":[],"05531364":3,"055314":3,"055676":1,"055744":[],"055774":[],"055831":[],"055887":[],"055916":[],"05614483":3,"056326":[],"056329":9,"056484":[],"057035":[],"057088709963637":1,"057320":[],"057332":[],"05755374":[],"057571":[],"057654":[],"057919":[],"05802766":1,"058178":[],"058247":3,"058282":[],"058719":3,"058805":[],"058892":[],"059225":3,"059245":[],"059344":9,"059406":[],"059455":[],"059531":[],"059571":[],"059680303635344434":3,"059765":3,"059806":[],"059865":[],"059908":[],"059994":[],"060064":9,"060070":9,"060308":[],"060335":3,"06041458e":[],"060520":[],"060919":[],"061164":[],"061176":[],"061255":[],"06126507e":15,"061330":[],"061601":9,"061652":[],"061774":[],"061842":[],"061855":[],"061896":[],"06200174":3,"06209126":[],"062188":[],"062327":[],"062376":[],"062639":[],"062659":[],"062660":9,"062731":[],"062822":[],"062829":[],"062879":[],"062885":[],"062923":9,"062979":[],"063055":[],"063097":[],"063122":[],"063178":9,"063190":3,"063324":9,"063395":[],"063415":[],"063523":3,"063526":[],"063615":[],"063670":[],"063727":[],"063759":[],"063763":[],"063880":3,"063882":[],"063925":3,"063982":[],"064000":[],"064013":3,"064075":3,"064078":3,"064101":3,"06412177e":15,"064156":3,"064257":3,"064273":3,"064304":[],"064354":[],"064357":3,"064393":3,"064410":[],"064449":3,"064472":[],"064591":3,"064647":3,"064648":9,"064686":[],"064689":3,"064783":9,"064795":3,"06492086e":[],"064929":[],"064958":3,"064964":[],"064982":[],"065":[],"065003":[],"065086":[],"065110":9,"065144":[],"065151":[],"065188":3,"065200":[],"065202":[],"065204":[],"065355":[],"065591":[],"065618":[],"065660":[],"065680":[],"065762":[],"065860":9,"065994":[],"066002":9,"06600226":9,"066030":9,"066047":[],"066074":9,"066092":[],"066116":[],"06619182206626131":[],"066249":[],"066272":[],"066294":[],"066312":9,"066389":[],"066403":9,"066487":[],"066629":[],"066683":9,"066705":3,"066761":[],"066788":[],"066835":[],"066837":[1,9],"066951":9,"066963":[],"067043":[],"067061":[],"067123":[],"067132":9,"067175":9,"067202":3,"06724062":3,"067355":3,"067440":9,"067504":[],"067531":[],"067577":[],"067601":[],"067610":[],"067667":9,"067685":9,"067711":3,"067718":3,"067769":[],"067777":[],"067794":3,"067844":[],"067865":[],"067889":3,"067892":[],"067985":[],"067990":[],"068056":3,"068073":[],"068165":3,"068185":[],"068213":3,"068244":3,"068276":[],"068293":3,"068351":9,"068385":3,"068427":3,"068460":[],"068491":3,"068514":[],"068593":3,"068640":3,"068654":[],"068667":3,"068673":3,"068686":3,"068697":9,"068717":3,"068818":9,"068821":3,"068828":3,"068838":9,"068840":[],"068873":3,"068896":3,"068920":[],"068928":3,"068945":3,"069005":[],"069028":[],"069071":3,"069081":[],"069098":[],"069195":9,"069243":9,"069282":[],"069369":[],"069413":9,"069496":3,"069503":[],"069510":[],"069516":[],"069528":[],"069542":3,"069584":1,"069635":[],"069641":9,"069775":9,"069814":[],"069848":[],"069853":3,"069859":[],"069872":[],"069890":[],"069902":[],"069988":9,"070043":1,"070103":[],"070129":[],"070131":[],"070138":[],"070166":3,"070182":[],"070188":[],"070254":[],"070337":9,"070456":[],"070473":3,"070517":[],"070548":9,"070653":[],"070762":9,"070764":3,"070791":9,"070812":[],"070815":[],"070867":9,"070889":[1,9],"070949":3,"070967":[],"071016":[],"071049":9,"07106781e":[],"071096":[],"07110274":13,"071156":3,"071248":[],"071268":[],"0713":1,"071313":[],"071325":[],"071359":3,"071435":9,"07145103":9,"071481":[],"071502":[],"071547":9,"071549":3,"07155335":[],"071576":[],"071579":[],"07159175":[],"07160764":3,"071660":9,"071667":[],"071681":[],"071684":[],"071714":3,"071761":[],"071855":[],"071887":[],"071917":[],"072012":3,"072094":[],"072198":[],"072246":3,"072279":[],"072424":[],"072468":3,"072471":[],"072555":9,"072589":[],"072598":[],"072620":[],"072654":9,"072661":3,"072710":9,"072826":[],"072879":9,"072910":[],"073":[],"073020":[],"073035":[],"073096":9,"073310":9,"073333":[],"073352":[],"073371":9,"073372":[],"073483":[],"073567":[],"073591":3,"073598":[1,9],"073602":[],"073607":3,"073656":9,"073681":3,"073695":3,"073765":9,"073851":[],"073902":[],"073915":1,"073926":3,"073966":[],"074":[],"074027":[],"074044":3,"074067":[1,9],"074077":3,"074096":[],"074099":[],"074134":[],"074170":[],"074191":[],"074201":9,"074207":[],"07421084":3,"074230":[],"07423848370736122":[],"074248":[],"074285":3,"074286":[],"074331":9,"074432":[],"074434":3,"074453":[],"074488":[],"07456491":3,"074568":[],"074618":9,"074665":[],"074693":3,"074696":[],"074848":[],"074979":9,"075084":[],"075119":[],"075163":[],"075194":9,"075212":[],"07521771":[],"075218":[],"075261":[],"075266":[],"075289":[],"075296":9,"075309":[],"075526":9,"075545":9,"0755452":9,"075562":[],"075567":3,"075615":9,"075754":[],"075772":[],"07581375":[],"075814":[],"075818":3,"075821":[],"075865":[],"075975":3,"075993":9,"076026":3,"076062":[],"076166":3,"076169":3,"076189":[],"076251":3,"076283":[],"076320":[],"076367":9,"076398":[],"076408":[],"076410":9,"076466":9,"076469":[],"076730":[],"076822":3,"076938":[1,9],"077010":9,"077046":9,"077143":9,"077160":[],"077212":[],"07729012413236423":9,"077303":[],"077305":9,"077338":3,"077339":3,"077386":[],"077407":3,"077416":3,"07744472306026946":7,"077469":[],"077533":[],"077623":[],"077771":9,"07777777777777778":2,"077891":[],"077927":9,"078049":[],"078076":[],"078099":9,"078103":9,"078197":3,"078244":9,"078279":[],"078311":[],"078388":[],"078399":[],"07839924":[],"078451":[],"078474":3,"078649":3,"078674":[],"078693":9,"078710":9,"078746":9,"078750":3,"078892":3,"078927":[],"078930":[],"078937":[],"078966":[],"079001":[],"079037":[],"079137":[],"079139":[],"079333":[],"079365":[],"07944154":13,"079624":[],"079785":9,"079848":9,"079956":[],"080024":9,"080084":1,"080115":[],"080182":3,"080223":[],"080264":9,"080325":9,"080336":[],"080381":[],"080387":[],"080398":[],"08043851":3,"080570":9,"080626":9,"080675":9,"080738":3,"080845":[],"080871":[],"081077":9,"081102":3,"081103":[],"081129":9,"081210":9,"081227":[],"081260":[],"081309":3,"081402":[],"081480":[],"081489":9,"081514":[],"08170444":[],"081816":[],"081886":[],"082091":3,"082211":9,"082225":9,"082247":9,"082272":3,"08248290e":[],"08251898":15,"082616":3,"082687":[],"08271336":[],"082866":[],"082990":[],"083128":[],"08318298e":2,"0832":[],"083246":3,"083295":9,"083376":[],"083527":1,"083577":[],"083618":[],"08362077210702115":3,"083657":[],"083658":9,"083728":[],"083775":[],"084092":[],"084103":3,"08415761":[],"084167":[],"084181":[],"084249":9,"084251":[],"084604":9,"084813":9,"084873":[],"084931":[],"08501147":[],"085121":9,"085259":3,"085285":[],"085289":[],"085597":[],"085646":9,"085676":[],"085928":[],"085951":[],"08611111111111111":2,"086116":[],"086325":[],"086465":[],"086592":[],"08665060086846632":[],"086652":9,"086974":9,"087202":9,"087482":[],"087563":9,"0881981":3,"08839750e":[],"088660":[],"08871404":3,"088871":[],"08888888888888889":2,"089300":[],"089425":9,"089504":[],"089916":[],"089931":[],"090274":9,"09103481e":15,"091159":[],"09166666666666666":2,"0917":7,"091979":[],"093755":9,"09487315108590391":9,"095173":[],"095472":[],"09609807":3,"096726":[],"09672604":[],"09678277e":15,"09741585e":[],"097452":[],"09903804":6,"099763":[],"09976319":[],"100":[0,1,2,3,4,5,6,7,8,9,13,15,16],"1000":[0,1,2,5,6,9,12,15],"10000":[0,3,4,8,9,15],"100000":6,"10001":8,"1001":15,"1002":15,"1003":15,"1005":15,"1007125":[],"1009":15,"10094646e":[],"1011":15,"1013":15,"10131725":[],"1013904243":15,"1015":15,"102":1,"1022964509394572":2,"1023":15,"1026":15,"1027":15,"103":2,"1030":15,"10307631":[],"10327559":13,"1037":15,"10378326e":2,"1038":15,"1040":15,"10405456":9,"104411":1,"1047":15,"105137868830763":15,"10555555555555556":2,"10589577":3,"106095":[1,9],"108":1,"10806972":[],"108070":[],"10896672e":15,"10898112e":[],"10th":7,"10x":1,"110":1,"1100":15,"1101":15,"11022302e":3,"111":[2,5,10],"1111111111111111":2,"112283":1,"112383":[1,9],"11304709e":15,"11388888888888889":2,"11456076e":[],"11462415":3,"11507992e":2,"11666666666666667":2,"117":6,"118318":1,"11944444444444445":2,"12002944":[],"1203284":6,"121":[6,7,8],"122":[6,7,8],"12222222222222222":2,"12283463":[],"123190":1,"123459876":15,"12366979e":15,"124":1,"12497018e":[],"12618549":3,"127773":15,"12777777777777777":2,"1298":7,"12adb44b1c20":5,"13055555555555556":2,"13060772":[],"13162821e":[],"13209041":[],"13266452e":[],"133":5,"13328820e":[],"13457922":[],"13519106":1,"13579199e":[],"1361111111111111":2,"13646574":3,"136687":4,"137268":[],"137400784702912":1,"137652":[1,9],"13803928":[],"13865173":3,"138775":[1,9],"13891144e":[],"139462":[],"139475":[],"1404":1,"143":5,"1437":2,"1440501043841336":2,"1445":4,"14459063":[],"1446":4,"1447":4,"1448":4,"1449":4,"14662074":[],"14722222222222223":2,"147400":[1,9],"147420":[1,9],"147722":[],"148":[],"149076":4,"149366":[],"149667":[],"149832":4,"149894":[],"149903":[],"14g":4,"150":6,"15005476":3,"15024669":[],"151":[],"152636":[],"1527777777777778":2,"153036":1,"153106":1,"15324631":[],"15332528e":[],"154720":1,"15475232":[],"154911":1,"155491":1,"155687":1,"155883":1,"156":1,"157":1,"15751596":3,"158":1,"159":1,"15979239e":15,"15g":4,"160":1,"16111111111111112":2,"16211139":3,"16342407":3,"16496581e":[],"16553696":[],"16637855e":15,"16666666666666666":2,"16807":15,"16831012":3,"16861772":[],"168618":[],"16b8e3cda33a":2,"17117385":[],"17174962e":2,"17234827e":[],"17248441e":[],"17385778e":[],"174497":[],"17449733":[],"175300":1,"1758506":[],"17654307":[],"17707436":[],"17777777777777778":2,"17801022":3,"17917768":3,"17949575":3,"17953942":9,"1797":2,"180092462880674":[],"18029127":3,"18063928":3,"18220995":1,"18224665":3,"18333333333333332":2,"18404906e":[],"184519":1,"1856411":[],"18611111111111112":2,"18620601e":[],"18673098":9,"189496":1,"18954529":[],"189622":1,"18968431e":15,"1914224774238273":[],"19207979":3,"1940":1,"1943":10,"197":1,"1970":13,"1973":7,"197370":[1,9],"19742904e":[],"1979":4,"1989":15,"19937":15,"19955871":[],"199559":[],"19972087e":15,"1_1":10,"1_2":10,"1_3":10,"1cm":[1,6,8,15],"1e10":0,"200":[1,6,7,8,15],"2000":1,"200000":1,"2004":5,"2006":17,"2010":2,"2011":2,"2015":2,"2016":1,"2018":[1,4],"201841":[],"20184113":[],"2021":0,"20277777777777778":2,"203757":[],"20375701":[],"205466494327873":[],"20632410e":[],"207545":[1,9],"20772452":[],"20819609e":[],"20833333333333334":2,"20843563e":[],"20906175e":15,"210340":[1,9],"21058097":3,"212":[],"21208310e":[],"212327334149492":[],"2125":[],"2126":[],"2127":[],"2128":[],"2129":[],"213":[],"213103":[1,9],"21347282":[],"213743":[1,9],"214":[],"2147483647":15,"215":[],"216":[],"21623344":[],"216290":[1,9],"216683":[1,9],"22044605e":3,"22076362":[],"221":6,"221180":1,"22209371e":[],"222400":1,"22443803":[],"22527008e":15,"22690428":3,"22717936e":15,"22847924":3,"22999784":[],"229998":[],"23117916e":15,"23167717":3,"232435":1,"23333333333333334":2,"2335879":[],"23382086e":[],"23438810e":[],"241262":3,"24126232":3,"2433e":3,"24340751":3,"24444444444444444":2,"24829908":3,"250":[5,7],"25000":1,"250000":1,"250154":1,"251559":[],"2515593":[],"251879":1,"25190225e":[],"25226753e":15,"25240108":[],"252436":1,"253":[],"25303483":[],"253775":1,"254":[],"254509":[],"25450941":[],"25457052":[],"255":[],"255001":1,"2551":1,"256":[],"256962":1,"257":[],"2571699":1,"25726439e":[],"2572e3a4b38d":2,"25803281":[],"259107":[],"25910749":[],"259153":[1,9],"259815":3,"25981533":3,"260227742627244":3,"2627588":13,"26301436":3,"26381865":[],"263819":[],"264":1,"26412372":3,"265":1,"2653678":[],"266":1,"267":1,"26710969":3,"26780278":3,"2683":4,"2684":4,"2685":4,"2686":4,"2687":4,"26890510e":[],"269":1,"26974938e":[],"270":1,"27262964":1,"27296891e":[],"276263":[1,9],"27753165e":15,"27852549":3,"27924636":3,"27n_":15,"280647":[1,9],"28166741":[],"282":1,"282727":[1,9],"28310983":[],"283110":[],"2836":15,"28475098":6,"2861":15,"2873":7,"2882":15,"2886":15,"2890":1,"2892":15,"28971976":9,"289720":9,"290":[],"291":[],"2915":15,"291614":[],"29167186":3,"292":[],"293":[],"2931":[],"294":[],"295656121491569":[],"296247":1,"2968":[],"297219777724628":9,"297260":1,"2980":[],"298273":1,"2983233":13,"298375":1,"2990":[],"299444":9,"29944428":9,"299748":1,"2_1":10,"2_2":10,"2_3":10,"2_i":10,"2_m":15,"2_x":15,"2cm":6,"2ff97f4bf03b":15,"2nd":7,"2x_ix_jy_iy_j":6,"2x_j":6,"2y_i":8,"2y_j":6,"30000":1,"300162456113691":[],"30119421":6,"30626706":1,"306854":[],"30685416":[],"30879705":1,"30968181":[],"31109204e":[],"31318084":3,"31457796":3,"3155":[3,4],"3156929654100207":7,"31608475e":[],"31718909":9,"31730641":[],"317367":9,"31853484":[],"31896852":6,"3200":2,"32047562":1,"323291478597321":15,"3250":2,"32521615e":15,"326238":1,"327631":1,"32938847":13,"32945844e":15,"3304":1,"33066907e":3,"3310":1,"3317":1,"331939":1,"333":5,"333333":1,"3338":1,"3344":1,"33443859e":[],"33544681":[],"33569998e":[],"33861512":[],"338869":[],"33886902":[],"339535706819584":15,"33953571":15,"340782":[1,9],"34114547":3,"34114641e":[],"34172919":[],"342680":1,"3436":1,"3437":1,"344172":1,"34569596":3,"346433":9,"34643337":9,"34902789e":15,"350387":[],"35038714":[],"351636":[1,9],"35176067":[],"35182854":3,"35216172e":[],"35367281e":[],"356399":1,"357508":1,"358869339268145":15,"35886934":15,"359":3,"359640894899012":[],"360":2,"360688":1,"361556":1,"3621311":3,"36436520e":[],"36468301":[],"3655222":3,"369139":[1,9],"36941772":[],"369418":[],"37186301":3,"372889":[],"3728892":[],"37416969":9,"374170":9,"37738324":[],"38207279e":[],"38216436":[],"38629436":13,"38777878e":3,"3893239":3,"389324":3,"38937995e":15,"38986237":[],"39579407":3,"396740":9,"39674043":9,"39706038":3,"397700":[1,9],"39792608e":[],"399836":1,"3cd19a0768e1":[],"4000":17,"401842":[1,9],"40212127":[],"404":1,"40425078e":15,"405890":[1,9],"40702":3,"40708470e":[],"40859":[],"4087793":3,"40902095":[],"412374":3,"41237437":3,"4140e":3,"41433969":3,"41511965e":2,"415634483874318":[],"416694683938511":9,"4171578884124756":0,"41754964":[],"41770932":[],"418506":[1,9],"41876428e":[],"4200e":3,"4201e":3,"4203e":3,"42441033":3,"426":5,"42847770e":15,"42937310e":15,"43054282":3,"4332e":3,"435163":1,"435490":[],"43549028":[],"43766686":9,"438136":1,"44089210e":3,"442600":[1,9],"443217":1,"44395541":[],"44625466e":15,"44970586e":2,"45013332e":[],"45019484":[],"450257":[1,9],"4557763":9,"455947":1,"458027":1,"458078":[1,9],"45937170e":[],"45960079":3,"46016532e":[],"461":15,"461838":3,"46183815":3,"462":5,"46323168e":15,"4632e":3,"46415888336127775":3,"46423858e":[],"465564":[],"46556436":[],"466":15,"46675058":[],"46914544e":[],"46929603e":[],"469730":3,"46973015":3,"47042744":3,"470714":1,"47079457e":15,"47125748":3,"47132891":3,"472652":3,"47265243":3,"47441766":[],"47566390e":15,"47654764e":[],"47815203":9,"47862383":3,"478624":3,"48019541":3,"48154187202453613":0,"48257387":16,"48471852e":[],"48476997":9,"48608063e":[],"48994188":3,"491837":3,"4918372":3,"4940954":1,"497221":[],"49722108":[],"49865673":[],"4990":15,"4992":15,"4997":15,"4c4c7f":[7,8],"4y_i":8,"500":[2,4,5,7,8,15],"500000":1,"50000455":3,"50000553":3,"50000718":3,"50000855":3,"50000969":3,"50001063":3,"50001142":3,"50001207":3,"50001261":3,"50001306":3,"50001343":3,"50001374":3,"500014":3,"50001414":3,"50001422":3,"50001439":3,"50001454":3,"50001466":3,"50001476":3,"50001485":3,"50001492":3,"50001498":3,"50001502":3,"50001506":3,"5000151":3,"50001512":3,"50001515":3,"50001517":3,"50001518":3,"50001519":3,"50001521":3,"50001522":3,"50001523":3,"50001524":3,"50001525":3,"5018":15,"50321091":3,"50394742":[],"506":1,"507d50":[7,8],"5098779":[],"509878":[],"50j":5,"50x10":2,"510":2,"5120":0,"512132":1,"51257863e":[],"51345668e":[],"51363731e":[],"514219":1,"51523276e":[],"515768":[],"51576807":[],"51707172":3,"517072":3,"51893804e":[],"51943726":9,"519842":1,"52158335":[],"5222222222222223":2,"52570079":3,"525701":3,"526744":[1,9],"52687171":[],"526872":[],"52722156":[],"52874252":3,"52d2c51caad1":[],"5303329":9,"5305555555555556":2,"531280":1,"535457":[],"53545715":[],"5378811":9,"539261":[1,9],"54039921":3,"54096582":[],"540966":[],"54121682":[],"541217":[],"54152940e":[],"541605":1,"54237024":15,"544439":1,"546972":3,"54697204":3,"54702088e":[],"55111512e":3,"55138385":9,"551384":9,"55280484":[],"5555555555555556":2,"55707065":[],"557071":[],"557795":[1,9],"55795935":3,"55854694":9,"56033697":3,"56198284":3,"56216797e":[],"564374":[1,9],"56536":1,"569":2,"56939714":3,"57051369":[],"571":3,"574465":[1,9],"5755035":[],"57781668":[],"57871326":[],"581766":9,"58176612":9,"582":[1,2],"58228342e":15,"58239999":[],"582400":[],"583595":1,"584804":1,"58521266":9,"585213":9,"58596975":[],"585970":[],"587401":1,"58836420e":15,"5888888888888889":2,"59007674e":15,"59304755e":[],"5944444444444444":2,"59480085":[],"5cm":15,"60122668e":15,"60293962":3,"60394236e":[],"60420593":3,"60673226":9,"60949193":[],"609492":[],"60999846":[],"61069091e":15,"6111111111111112":2,"61124978":[],"61234223":[],"612939":1,"613579":1,"614808":[1,9],"61505887e":[],"61745046e":[],"618":1,"6183694":[],"61869821":[],"618982":1,"622539":9,"62253933":9,"622625":3,"62262506":3,"6226921":[],"62316154e":15,"62359224e":15,"62373464":9,"625":5,"62783293":[],"62856593":[],"62894215":3,"629961":1,"6300745149331701":1,"63315151":[],"63339159":[],"63374631":[],"63437572":[],"63442451e":[],"63498144":3,"636323":9,"63632311":9,"63680118":[],"637129335071195":1,"63993205e":[],"64012627":3,"64166831e":[],"64447921":[],"64580686":[],"646283":[1,9],"64669382":[],"646694":[],"647473":[1,9],"64857826e":[],"649382":[1,9],"64x50":2,"650024":[],"65002433":[],"6510573774179256":15,"65105738":15,"65238878":13,"65245958":[],"653095390463358":[],"653702":13,"6544e":3,"65482578":[],"65572035":[],"65599927":[],"65766387":[],"65885453":3,"65933852":[],"65939208e":[],"66020213e":[],"6614":[],"66183486":9,"661835":9,"6628996975186952":1,"66302359":[],"66383151":[],"66677842":[],"66800261":[],"668172":1,"66880047":[],"67006792":[],"67060602":[],"671089":1,"6714":[],"67171347e":15,"672721":1,"67279536":[],"67303655":9,"673037":9,"67407338e":15,"67450955":[],"67708423":[],"677149":[],"67714918":[],"6796265324852733":[],"68002363":[],"680024":[],"68034946e":[],"6813":4,"6814":4,"6815":4,"6816":4,"6817":4,"6818813252071303":15,"68188133":15,"68192193":3,"68316185":[],"68342382":[],"68542204":3,"68616263":13,"68729414":[],"68937695":[],"689519":[1,9],"690617":1,"69069n_":15,"693361":1,"69347005":[],"693850":9,"69385025":9,"69519693":[],"695197":[],"69573183":[],"69695259":3,"69843037":3,"6996584":3,"69981195e":15,"6999536":9,"6ea927cc6e88":2,"6n_":15,"7022283":[],"70234019":[],"70415861":[],"70523024e":[],"70589906":[],"7070e":3,"70710678":3,"70790937":[],"70832814":3,"70885528e":[],"70886748":[],"70946493e":[],"712018":[1,9],"712199063818309":1,"71281409":[],"71351486":[],"71442781":13,"71606852":[],"7162":[],"71669651":[],"7172":[],"72108703":[],"72174172":9,"72218808":[],"72312577":[],"7236674":3,"7240496":[],"725394195434945":[],"72780613e":15,"72859758":3,"72879865e":[],"72981762":6,"73091052e":[],"731000":1,"733096":1,"73453972":[],"7371165871823337":[],"737349":3,"73734906":3,"73921714":[],"74081822":6,"74107697":9,"74143127e":[],"7432283":[],"74382593":[],"74495014":[],"745136489050356":1,"74840212":3,"74845978":[],"74921867":[],"749765":1,"750445":1,"751699":[1,9],"75170092":3,"75195757":[],"7522047280566193":[],"75382481":[],"75524378":[],"75629493":[],"756352":1,"75841112":[],"75932862":[],"76172241e":[],"762":[5,9],"7621419":[],"76290332":[],"763880":[],"76388013":[],"76497666":[],"765":5,"76504618":[],"76570177":[],"76648901e":[],"76936315":3,"7693978131030923":9,"77152076":3,"77156117e":3,"7718":7,"772b904ae9cb":4,"77317984":[],"7733":[],"77350269e":[],"774300":1,"776223":3,"77622336":3,"77661393e":15,"77714169":6,"78080633":[],"78082":4,"78195":[],"78857629":[],"78941903":3,"78944806":[],"7899453":[],"79111643":3,"79295029e":15,"793167":1,"79326583e":15,"79328828":[],"793701":1,"794282":[1,9],"79459035":[],"79648291":[],"79902342":1,"7c394b1e8b71":7,"7d7d58":[7,8],"800":5,"80004454e":[],"800266":[],"80026635":[],"80121":[],"80469739":3,"8055555555555556":2,"81160425":3,"81620806":[],"81633628":9,"816454":1,"816847":1,"81781888":9,"819202":3,"81920231":3,"82198978":3,"8265786":3,"827265":1,"82889306e":15,"8305555555555556":2,"83425361":9,"834254":9,"83512277":3,"83614019":[],"8388888888888889":2,"83935285":[],"84087101":[],"842":1,"842436":1,"84251485":[],"842515":[],"8429949116841184":3,"84355903e":2,"84372853":[],"84443254e":2,"84658093e":15,"8479552268981934":0,"84860939":1,"849766":3,"84976606":3,"84994524":3,"85058354":3,"850584":3,"8520127":[],"85278450e":[],"85396354":[],"85450859":9,"85463934e":[],"85497163e":[],"85546305e":[],"85601992":3,"861":1,"86117291":3,"86134827":3,"86145244":9,"8638888888888889":2,"86436607":[],"86574276":[],"8666666666666667":2,"86692943":[],"87030083":3,"870301":3,"8718475896381779":15,"87184759":15,"8722222222222222":2,"87381451":3,"875":2,"87761937":[],"8777777777777778":2,"87972591":[],"8802":[],"88046261":3,"88046462":[],"8805555555555555":2,"881323":3,"88297395":[],"88336879":3,"88559559":[],"8867467323038865":[],"88693966e":15,"88712946":[],"8888888888888888":2,"8901":[],"8914984":[],"8921171964770647":9,"8923":[],"89288636":9,"89383322":[],"89410423":3,"8944444444444445":2,"89704131":3,"89742056":[],"897421":[],"898500":9,"89850037":9,"89928965":3,"89942598":[],"89975818":[],"8x8":2,"90075537":3,"90220243":3,"90233874":[],"90266948":3,"90316476":[],"9040":7,"9055555555555556":2,"90618734e":15,"907307":9,"90730735":9,"90825063":[],"9096":4,"91012519e":[],"9111111111111111":2,"91128596":3,"91145266e":15,"91417278":[],"91549644":1,"9166666666666666":2,"916978":[],"91697817":[],"9171356":[],"91760278":3,"91812702":3,"918992":1,"9196":4,"9222222222222223":2,"922312":[],"92231203":[],"92280994":3,"924018":1,"925":2,"92507116e":2,"92578916":3,"92605247":[],"92645039":9,"92646965":9,"926470":9,"92732185e":[],"9277777777777778":2,"9279671770201344":15,"92857143":5,"92919670e":15,"9305555555555556":2,"931":1,"93100040e":15,"93155188":3,"93158979":3,"932734":[],"93273404":[],"933":3,"9354":[],"9361111111111111":2,"937":15,"937082":1,"93799826":3,"938":15,"9388888888888889":2,"939":[1,15],"94019247e":[],"94034531":[],"94284104":3,"94320205":3,"9444444444444444":2,"94536341":15,"94591015":13,"94639099":9,"946893955211749":1,"947543":9,"9482527":3,"948729":[],"95014575":[],"95231424":3,"9527777777777777":2,"95284275":3,"95351665":3,"954":15,"95443703e":[],"9547578478889096":1,"95517094":[],"955171":[],"9555555555555556":2,"95628168":[],"956282":[],"956563":[1,9],"95684892":3,"958228616652075":3,"9583333333333334":2,"959247":[],"960":15,"96024953":3,"96084663":3,"961":15,"96104648":[],"9611111111111111":2,"962":15,"963499":9,"96349948":9,"9640435":3,"965548":1,"965885569080809":[],"96688672":3,"9674916":3,"967809":[1,9],"96793117e":[],"97005689":3,"97101567e":15,"9722222222222222":2,"97243128":3,"97300836":3,"975":2,"97507735":3,"9756404":[],"976":6,"97622676":[],"976227":[],"9765":4,"9769":4,"97705827":3,"97723801":[],"97758848":3,"9777777777777777":2,"9780387310732":17,"9780387848570":17,"9781492032632":17,"97926491":3,"9804422":[],"98046438":[],"9805555555555555":2,"98091621":3,"981321":1,"98139097":3,"98275501":3,"98314755":[],"983148":[],"983310":1,"98413059":3,"98452685":[],"98454786":3,"985":15,"98526763":[],"98528992":[],"98531221":[],"98566191":3,"986":15,"9860803":[],"98609175":15,"986091753050161":15,"9861111111111112":2,"98661465":[],"98680716":3,"98716878":3,"9877742":[],"987902":[],"98808176":3,"988663":[],"9888888888888889":2,"98892195e":15,"98893512":[],"989":15,"9890348":3,"98927731":[],"9893447":3,"9898ff":[7,8],"99009525":3,"99009739":[],"9901168":[],"99013921":[],"99016161":[],"99018401":[],"99043999":[],"99088801":3,"9909252":[],"991":15,"991072":9,"99107239":9,"99115119":3,"99126104":[],"99133007":[],"99160404":[],"99176998":3,"99190487":[],"99194716":[],"992":15,"99218987":[],"99219378":[],"99242605":[],"99242921":3,"99248001":[],"99265097":3,"99273355":[],"99276945":[],"993":15,"99305549":[],"99305802":[],"99311297":[],"99316252":3,"99346398":[],"99363129":[],"99363383":[],"99371056":3,"99389612":3,"99393624":[],"994":4,"99400444":[],"99418903":9,"99420743":[],"99420997":[],"99428016":[],"9943201":3,"9945452":[],"99462421":[],"99473581":[],"9947756":3,"99478645":[],"99478898":[],"99492986":3,"99498985":[],"995":4,"99501236":[],"99503487":[],"99505739":[],"9950799":[],"99527696":[],"99528218":3,"9953048353087299":[],"99536326":[],"9953658":[],"99539415":3,"99544872":[],"9954538761021741":[],"99566069":3,"99578809":3,"99579317":[],"99581841":[],"99594294":[],"996":[3,4],"99600927":[],"99608161":3,"99636015":[],"9963961":3,"99650061":3,"99652042":[],"99652296":[],"99655111":[],"9966744029509663":1,"9967292151090247":1,"9967458":3,"9969":4,"99696351":[],"997":4,"99700706":3,"99709215":3,"99709325":[],"99710078":[],"99723611":[],"99728435":[],"99729756":3,"99730848":[],"99751458":3,"99758326":3,"99763569":[],"99767893":[],"99775587":3,"99782689":[],"99793613":3,"99799099":3,"998":4,"99813653":3,"99817842":[],"99825997":[],"99828624":3,"9983295":3,"99836973":[],"99845267":3,"9984806":[],"998577":3,"99861053":3,"99871521":3,"99881845":3,"99883879":[],"99884384":3,"99891285":[],"99893323":3,"999":[7,15],"99901896":3,"99903755":3,"99911427":3,"99918546":3,"99919837":3,"99926459":3,"9993237":3,"99933188":3,"99938942":3,"9994385":3,"99944272":3,"99945628":[],"99949306":3,"99953381":3,"99953475":3,"99957911":3,"99961294":3,"99965056":3,"99967865":3,"99970988":3,"9997332":3,"99975913":3,"99977849":3,"99980002":3,"9998161":3,"99984732":3,"99987324":3,"99988687":[],"99989476":3,"9999095":[],"99991263":3,"99992746":3,"99993212":[],"99993978":3,"99995":3,"99995475":[],"99995818594196":[],"999974281880048":[],"99997737":[],"9999787681537219":1,"9999794306626945":[],"9999822527140678":[],"9999864543345858":[],"9999868619217517":[],"9999869956119286":1,"9999878260589065":[],"9999910208315801":[],"9b9cf4fa1a95":[],"\u00f8yvind":16,"abstract":2,"break":[0,1,9],"byte":13,"case":[1,2,3,4,9,10,12,13,14],"catch":1,"char":15,"class":[1,2,4,5,6,7,9,10,15],"const":15,"default":[1,2,5,13],"ekstr\u00f8m":16,"export":7,"f\u00f8470":16,"final":[0,1,2,3,4,6,7,8,9,14,15,16],"float":[0,1,3,7,9,13,15],"function":[0,3,4,7,12,13],"import":[0,1,2,4,5,6,7,8,9,10],"int":[0,1,2,3,5,9,13,15],"long":[1,2,5,10,15],"new":[0,1,2,3,4,5,6,7,8,9,13,15],"null":15,"public":[1,12],"return":[0,1,2,3,4,5,6,7,9,13,15],"s\u00f8rli":16,"sch\u00f8yen":16,"short":[0,3,11],"steinsv\u00e5g":16,"super":3,"switch":[0,1],"throw":15,"true":[0,1,2,3,4,5,6,7,8,10,15],"try":[0,1,2,3,5,6,7,8,9,12,13,15],"var":[3,4,8,9,15],"while":[0,1,2,3,4,5,6,7,9,10,15],AGE:1,Adding:2,Age:5,And:[0,1,4,7,12,15],Are:9,Being:5,But:[0,1,2,3,4,7,8,15],CAS:[],DIS:1,Doing:[3,5,8],EoS:[1,4],FYS:14,For:[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,17],Going:2,Ising:[3,10],Its:[2,9],MDS:9,NNs:10,N_s:6,Not:[1,2,3,4],OLS:[1,4],One:[1,2,3,4,5,6,9,10,15],PCs:[9,12],RMS:15,Such:[4,10,15],That:[0,1,3,5,8,9,10,15],The:[8,13,14,16,17],Then:[0,1,2,3,4,5,6,7,8,9,10,13,15],There:[0,1,3,6,7,9,10,11,13,14,15,16],These:[0,1,3,6,7,8,9,10,13,15],Use:[1,7],Useful:[3,4,13],Using:[1,3,4,6,8,10,13],With:[1,3,4,6,7,8,9,10,13,15],__class__:8,__doc__:4,__future__:[6,7],__getattr__:[],__init__:[2,4],__mosek:3,__name__:[4,8],_auto10:10,_auto1:[3,5,10,13,15],_auto2:[10,13,15],_auto3:[10,13],_auto4:[10,13],_auto5:[10,13],_auto6:[10,13],_auto7:[10,13],_auto8:10,_auto9:10,_ax:4,_base:6,_build:[12,17],_check_optimize_result:[5,9],_compon:9,_datafram:[],_depth:7,_fraction:7,_lambda:1,_leaf:7,_logist:[5,9],_make_index:[],_multilayer_perceptron:[1,2],_node:7,_num_sampl:[],_ratio:9,_sampl:7,_split:7,_varianc:9,_weight:7,a0faa0:[7,8],a77d5ac269b2:[],a_0:1,a_1a:1,a_2a:1,a_3:1,a_3a:1,a_4:1,a_4a:1,a_h:2,a_i:[1,2,10],a_j:[2,10],a_k:[2,10],aaron:17,ab_channel:12,abandon:2,abbrevi:14,abid:15,abil:[1,8],abl:[2,3,5,8,10,15],abort:15,about:[0,1,2,3,4,5,6,7,8,9,10,12,13,17],abov:[0,1,2,3,4,5,6,7,8,9,10,13,15],abovement:4,abs:[0,1,3],abscissa:5,absolut:[1,3,4],acccess:[],accept:[1,7],access:[1,9,15],accid:4,accmod:3,accompani:1,accomplish:[6,7],accord:[0,1,2,3,4,5,7,10,15],accordingli:9,account:[1,3,15],accumul:[10,15],accur:[4,8,15],accuraci:[1,2,3,5,7,8,9,10],accuracy_scor:[1,2,8],accuracy_score_numpi:2,achiev:[1,2,3,4,6,10,13],aco:15,acquaint:12,acquir:[2,12],acr:1,across:[2,4,7,12],act:[2,13],action:15,activ:[0,1,7,14],actual:[1,2,3,4,6,9,13],ada_clf:8,adaboostclassifi:8,adam:2,adapt:[1,4,5,17],add:[1,2,3,4,6,8,9,10,15],add_subplot:[0,2,5,10],added:[1,2,3,5,6,13],addendum:3,adding:[0,2,4,13],addit:[0,1,3,4,5,6,7,8,10,12,13,15,16,17],addition:[5,10],address:[2,5,7,9,17],adjac:10,adjoint:3,adjust:[5,10],admir:1,advanc:[4,10,17],advantag:[2,3,4,5,8,13],afecionado:[],affect:[],affin:[1,6,9],aficionado:[],aforement:0,african:1,after:[0,1,2,3,4,5,7,9,10,12,13,15],afterward:1,again:[0,1,2,3,4,5,6,8,9,10,15],against:[2,5,8],age:[1,5],agegroup:5,agegroupmean:5,aggreg:[7,8],agorithm:8,agre:[3,15],ahead:7,aid:9,aim:[0,1,2,4,5,9,12,13],ainv:3,aka:3,alarm:3,albeit:0,algebra:[1,3,5,12,14],algo:15,algorithm:[1,2,3,4,5,6,12,13,14,15,17],align:[1,3,4,5,6,15],all:[0,1,2,3,4,5,7,8,9,10,12,13,14,15,16,17],allevi:[2,5],alloc:13,allow:[1,2,3,4,5,6,8,12,13],almost:[1,2,4,5,6,9,15],alon:7,along:[0,3,4,7,8,9,12,13],alpha:[0,1,2,3,4,5,6,7,8,15],alpha_:8,alpha_i:5,alpha_k:5,alpha_m:8,alpha_opt:5,alreadi:[3,8,10,12,13,15],also:[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,17],alter:[2,15],altern:[1,2,3,5,6,7,9,13],although:[2,3,4,6,8],alwai:[0,1,3,4,5,10,15],ame2016:1,american:1,among:[1,3,7,8,10],amongst:3,amount:[0,1,2,4,6,8,12],an_:15,anaconda3:[1,2,4,5,6,9],anaconda:[1,2,12],analys:[4,15],analysi:[2,4,5,13,14,17],analyt:[1,3,4,5,10,12],analyz:[1,2,3,15],andrew:2,angl:[1,7,15],ani:[0,1,2,3,4,6,7,8,10,15],anim:10,ann:10,annot:[1,2,5,6],anoth:[1,2,3,4,5,6,8,9,10,13,15],ans:15,ansatz:1,answer:[1,2,3,4,13],anymor:[2,6],anyon:6,anyth:[2,15],anytim:16,apach:2,apart:[5,9],api:[2,12],appear:[1,2,13,15],append:[2,4,5,6,7,15],appendcon:3,appendvar:3,appli:[1,2,4,5,6,7,8,9,10,15,17],applic:[1,2,3,4,5,7,10,15,17],approach:[2,3,4,7,8,9,10,12,15,17],appropri:[4,7,10,12,15],approx:[1,5,8,9,15],approxim:[1,2,3,4,5,8,9,15],apt:[1,12],aptli:0,aragorn:[],arang:[2,4,5,7,8,10],arbitrari:[2,5,6,10,15],arbitrarili:[1,2,9],architectur:[10,17],area:[1,17],arg:4,argc:15,argmax:[2,9],argmin:[0,8],argsort:9,argu:2,arguabl:0,argument:[1,3,9,10,15],argv:15,aris:[1,4,5,10,15],arithmet:[1,13],arma:15,armadillo:[13,15],around:[1,2,3,4,9,15],arrai:[0,1,2,3,4,5,6,7,9,10,12,15],arriv:[1,7,9,13,15],arrow:10,arrowprop:6,art:[1,2,12],articl:[0,1,4,8,15],artifici:[1,5,10,17],artificialneuron:10,artist:4,asarrai:[1,7],asc:3,ascii:15,ask:[3,4,9,10],aspect:[1,12],assembl:1,assess:[1,4],assign:[0,1,5,6,7,10,14,17],assign_points_to_clust:0,associ:[0,1,4,7,10,15],assum:[0,1,2,3,4,5,6,7,8,9,10,13,15],assumpt:[1,3,4,7,9,15],ast:[1,3,4],astyp:[7,8],asymmetri:1,asymptot:4,atoi:15,atom:1,attempt:[1,5,6,8],attend:14,attent:[1,13],attr:[],attract:[1,8],attribut:[1,7],attributeerror:4,audi:1,aurelien:[1,14,17],author:[1,2,8,15],authour:1,auto:[7,8,15],autocor:15,autocorrelation_tim:15,autocorrelform:15,autocovari:15,autoencod:12,autoencond:12,autograd:12,autom:[1,12],automac:13,automag:[],automat:[1,2,9,12,13],autonom:17,avail:[1,2,4,8,9,12,13,14,17],averag:[0,1,2,4,7,8,15,16],avg:15,avoid:[0,1,3,4,7,9,13],awai:15,awar:8,award:16,axes3d:5,axes:[1,4,5,6,7,8,9],axessubplot:1,axhlin:6,axi:[0,1,2,4,5,6,7,8,9,10,15],axiom:3,axlabel:1,axvlin:6,b_1:[5,10],b_5:5,b_group:7,b_i:[1,2,10],b_ia_:1,b_index:7,b_j:[2,10],b_k:[2,5,10],b_m:10,b_score:7,b_valu:7,bachelor:14,back:[1,3,6,7,8,13,15],backbon:13,backend:2,background:17,backpropag:2,backtrack:7,backup:13,backward:[2,10,13],bad:15,badli:15,bag:[7,12,14],bag_clf:8,baggin:[],baggingboot:8,baggingclassifi:8,baggingtre:8,balanc:4,band:13,bandwidth:13,bar:[1,9],barber:17,bare:8,barebon:0,base:[0,1,2,3,5,6,7,8,12,15,16,17],basi:[3,5,6,8,9,10,13],basic:[6,10,12,14,15],batch:[5,9,10],batch_siz:2,bay:5,bayesian:[3,12,17],becaus:[0,1,2,3,4,5,6,7,10],becom:[0,1,2,3,4,5,7,10,15],been:[1,2,4,9,10,12,13],befor:[0,1,2,3,4,5,6,10,13,15],beforehand:[0,1,15],begin:[0,1,2,3,4,5,6,7,9,10,13,15],behav:[2,4,5],behavior:[1,2,5],behaviour:10,behind:[1,2,5,6],being:[0,1,2,3,5,6,8,9,10,15],believ:[7,13],belong:[0,3,5,6,7],below:[1,2,3,4,5,6,7,8,9,10,13,15],benchmark:8,bendik:16,benefici:2,benefit:[1,2,5,9,12],bengio:[2,14,17],benign:[2,5],besid:3,bessel:3,best:[0,1,2,3,4,5,6,7,8,10,15,16],beta:[1,2,3,4,5,8,9],beta_0:[1,2,3,5],beta_0x_:1,beta_1:[1,2,3,5,8],beta_1x_0:1,beta_1x_1:[1,5],beta_1x_2:1,beta_1x_:1,beta_1x_i:5,beta_2:1,beta_2x_0:1,beta_2x_1:1,beta_2x_2:[1,5],beta_2x_:1,beta_:[1,5],beta_i:[1,3],beta_j:[1,3,5],beta_k:5,beta_linreg:5,beta_m:8,beta_mg_m:8,beta_p:5,beta_px_p:5,better:[0,1,2,3,7,8,9,10],between:[0,1,2,3,4,5,6,7,9,10,15],beyond:[1,2,3,5,6],bia:[1,2,3,6,7,8,10,14,15],bias:[2,3,4,7,10],big:[0,1,2,3,4],bigger:2,bigr:10,bike:7,bilbo:[],bilek:16,billion:[10,12],bin:[1,4,5,15],binari:[1,3,5,7,8,10,14,15],bind:[1,4],binomi:12,binsboot:4,bioinformat:1,biolog:[2,10,17],bios1100:12,bird:1,birth:[],bishop:[14,17],bit:[0,2,13,15],bitwis:15,bla:[3,13],black:[0,6,7],block:[0,4,8,12,13],blockingavg:15,blockingstd:15,blockingvar:15,blocksiz:15,blocksizemax:15,blocksizemin:15,blue:1,bmatrix:[1,2,3,5,6,9,13],bmi:2,bodi:[1,2,10],bold:2,boldfac:[1,3],boldsymbol:[0,1,2,3,4,5,6,8,9],boltzmann:[10,12],book:17,bool:0,boost:[2,7,12,14],boostrap:8,bootavg:15,bootstd:15,bootstrap:[2,12,14],bootvar:15,bootvec:15,borrow:[],boston_dataset:1,bot:6,both:[0,1,2,3,4,5,6,7,8,12,13,15,16],bottl:5,bottom:4,bound:[1,3,4,6,10],boundari:[6,9,10],boundkei:3,box:7,boyd:[5,6],bracket:15,brain:[2,5,10],branch:7,breast:[3,5,9],brew:[1,12],brg:6,briefli:1,bring:[1,3,8],broad:1,broadcast:0,browser:[],brute:[3,9],bsol:[],bsubex:[],build:[1,3,4,8,13,15],built:[1,2,4],bunch:9,busi:1,bzl:3,c46dd114b2af:6,c_0:15,c_1:10,c_2:10,c_3:10,c_4:10,c_i:[5,10],c_k:15,cach:8,cal:[1,5,6,8,10],calcul:[0,1,2,3,4,5,6,7,8,9,10,13],call:[0,1,2,3,4,5,6,7,8,9,10,12,13,15,17],callabl:4,calor:1,cambridg:[5,17],came:0,can:[0,1,2,3,4,5,6,7,8,9,10,12,13,15,17],cancel:1,cancer:[3,8],cancerpd:5,candid:[6,7,8],cannot:[1,2,3,5,6,7,14,15],canopi:[1,12],cap:3,capabl:[1,2,6,12],capita:1,captur:[9,10],card:[1,5],cardin:2,care:[0,9],carefulli:5,carlo:[1,4,12,15,17],carri:[4,5],cart:8,casella:17,cast:2,categor:[1,2,7,9],categori:[0,1,2,5,8,10,14],categorical_crossentropi:2,caus:[1,3,4,15],causal:1,causat:1,cax:2,cbar:2,ccc:[3,10],cdf:15,cdot:[0,1,4,5,10,13,15],celebr:5,center:[0,1,2,4,5,6,7,9,15],centr:17,central:[1,3,4,6,13],centroid:[0,15],centroid_differ:0,centroid_list:0,certain:[0,1,4,5,7,15],cha:1,chain:[2,12,15],challeng:[0,5],chanc:[2,3,5,15],chang:[0,1,2,3,4,5,6,7,9,10,13,15],chapter:[0,4,8,9,13,14,17],charact:[1,3,6,15],character:[6,7,8,10,15],characterist:[1,2,8],charg:1,charl:1,chd:5,chddata:5,cheap:3,cheaper:[2,5],chebychev:0,check:[1,2,3,5,9,13],check_consistent_length:[],chemic:15,chen:8,choic:[0,1,2,4,5,7,10,13,15],choleski:[3,13],choos:[0,4,5,7,8,9,15],chosen:[1,2,4,5,6,7,8,15],chosen_datapoint:2,christian:17,christoph:[14,17],cin:15,circ:[2,10],circl:[1,6,10],circumfer:7,circumv:[2,3],clariti:[0,15],class_nam:7,class_val:7,class_valu:7,classic:[5,7],classif:[1,3,4,5,6,9,10,12,14,17],classifi:[1,2,5,7,8,9],classificaton:2,classifii:8,clean:2,clear:[2,3,8,10],clearer:0,clearli:[1,3,4,5,6,15],clever:[0,2,8],clf3:1,clf:[1,6,7,8],clf_ridg:1,clip:15,close:[0,1,2,4,5,6,7,9,10,15,17],closer:3,closest:[0,5,6,9],closur:12,cloud:12,clust:0,cluster:[1,2,4,9,12,14],cluster_label:0,cmap:[1,2,6,7,8],cmath:15,cmb:14,cmd:7,cn_:15,cnn:10,cntk:12,code:[4,6,12,13,14,17],coef0:6,coef:1,coef_:[1,3,5,6,7],coeffici:[1,3,4,5,6,7,13],coerc:[1,4],coin:[8,15],coin_toss:8,col:[1,9],colab:12,cold:7,colinear:1,collaps:6,collect:[1,4,8,9,12,15,17],collinear:3,color:[1,4,6,7,8,15],colorbar:2,colsample_bytre:8,colsaobject:8,column:[1,2,3,4,5,6,7,9,10,13],columntransform:7,com:[12,16,17],combin:[2,3,4,5,8,15],come:[0,1,2,3,5,10],comma:[],command:[1,2,15],comment:1,commerci:[1,12],commod:1,common:[0,1,2,3,4,5,7,9,15],commonli:[0,1,2,4,5,7],commun:[1,10],compact:[0,1,2,3,4,5,7,9,10],compar:[0,1,3,4,5,9,13],compat:5,compet:1,competit:8,compil:[1,2,12,13,15],complet:[1,7,10],completenn:10,complex:[2,3,4,6,7,9,10],complic:[0,1,2,4,5,7],compon:[0,1,2,3,4,5,7,12,14],components_:9,compos:[0,7,10],compphys:[12,14,17],compress:1,compris:4,compromis:3,compulsori:12,comput:[0,1,2,3,4,6,8,9,10,12,13,14,17],computation:[1,4,5,7,15],con:3,concaten:0,concav:[2,5],concentr:[1,8],concept:[0,1,12],conceptu:[5,10],concern:[0,1,2,5],concic:[],conclud:[1,3],conclus:2,conda:[1,2,12],condit:[1,3,4,6,7,9,15],conduct:12,coneqp:3,confid:[1,3,4,5,6],confirm:[3,10],confus:[3,4,8,13],confusion_matrix:7,congruenti:15,conjug:6,conjugaci:5,connect:[1,2,5,7,9,10,13],consequ:[3,4,5,6,8,10],conserv:[0,3],consid:[0,1,2,3,4,5,6,7,8,10,13,15],consider:[1,2,3,5],consist:[1,2,4,5,10,15],constant:[1,3,5,6,10,15],constitu:1,constitut:4,constrain:[2,3,5,9],constraint:[3,5,6],construct:[1,2,3,4,5,6,7,8,9,13,15,17],contact:1,contain:[0,1,3,4,5,6,7,9,10,13,15,17],contemporari:17,content:[2,12,13],context:[4,5,8],continu:[1,2,3,4,5,6,7,8,10,13],contour:[5,7,8],contourf:[6,7,8],contrast:[2,7,8,10],contribut:[1,3,15],contributor:1,control:[1,2,7,12],conveni:[1,3,4,5,10,13],convent:10,converg:[0,1,2,3,5,6,9],convergencewarn:[1,2,5,6,9],convert:[1,2,3,7,9,13],convex:3,convinc:5,convolut:[2,12,14],cool:7,coordin:[0,3,10],coorel:1,copi:[0,1,2],core:8,corel:1,coronari:5,corr:[1,3,5,9],correalt:[9,12],correct:[0,1,2,3,13,15],correctli:[2,4,8],correl:[1,2,3,5,8,10,12],correlation_matrix:[1,3,5,9],correspond:[0,1,3,4,6,7,9,10,12,13,15],cortex:10,cos:[1,4,7],cosin:[0,4],cost:[1,3,4,6,7,10,15],could:[1,2,3,4,5,6,7,8,9,10,13,15],coulomb:1,count:[1,7,14,15,16],countor:5,coupl:3,cours:[1,2,3,9,14,15],courvil:[14,17],cout:15,cov:[3,4,9,13,15],cov_xi:[3,9],cov_xx:[3,9],cov_yi:[3,9],covari:[5,12,13],covariance_matrix:[0,3,9],cover:[1,3,11,12,17],covert:1,covxi:15,covxx:15,covxz:15,covyi:15,covyz:15,covzz:15,cpu:2,creat:[2,3,7,8,9,10,12],create_biases_and_weight:2,create_neural_network_kera:2,create_x:[3,9],credit:[1,5],crim:1,crime:1,criteria:[0,1,7,8,15],criterion:[5,7,8],cross:[1,2,5,7,8,12,14,15],cross_val_scor:4,cross_valid:[5,8],crossvalid:4,crucial:[2,15],csr_matrix:13,cstdlib:15,csv:[1,4,5,7],ctnk:2,cubic:1,cumbersom:3,cumsum:[8,9],cumul:[4,8],cumulative_heads_ratio:8,cup:3,current:[0,2,5],curs:1,curv:[5,8,10],curvatur:5,custom:[0,3],custom_cmap2:[7,8],custom_cmap:[7,8],cutpoint:7,cvxbook:5,cvxopt:[3,6],cyber:17,cycl:[0,2,10,15],d_f:5,dagger:[3,13],dai:[2,7,12],dalen:16,darget:7,darkr:15,dat:1,dat_id:[1,4,5,7],data1:0,data2:0,data3:0,data4:0,data:[0,3,4,6,8,10,13,17],data_id:[1,4,5,7],data_indic:2,data_panda:[],data_path:[1,4,5,7],databas:2,datafil:[1,4,5,7],datafram:[1,3,5,7,9],datapoint:[2,3,4,5,9],dataset:[0,1,4,5,6,7,8,9],date:1,daughter:8,david:17,dbh:2,dbo:2,dcomposit:13,dcost:3,dead:2,deal:[0,1,2,3,5,6,9,13,15],debt:5,debug:[3,4],decad:1,decai:[1,5,15],decent:8,decid:[3,4,7],decim:1,decis:[1,2,6,9,12,14,17],decision_funct:6,decision_tre:7,decisiontreeclassifi:[7,8],decisiontreeregressor:[1,7,8],declar:[1,13],decompos:[3,13],decomposit:[1,10],decompost:3,decorrel:8,decreas:[2,3,4,5,8,9],deduc:1,deep:[5,10,12,14,17],deep_tree_clf1:7,deep_tree_clf2:7,deep_tree_clf:[7,8],deepen:12,deeper:0,deeplearningbook:17,def:[0,1,2,3,4,5,6,7,8,9,15],def_covari:15,defect:3,defici:3,defin:[0,1,3,4,5,6,7,8,9,10,13,15],definit:[0,2,3,4,5,6,8,9,10,13],defint:15,degre:[3,4,6,7,8,9,15],del:2,delet:[4,15],deliv:14,delta:[0,1,6,10,15],delta_:[2,13],delta_h:[1,2],delta_j:10,delta_k:10,delta_l:2,delta_n:1,delug:12,delv:1,demand:5,demonstr:[1,3,4,5,9,10,12],denomin:[2,3],denot:[2,4,5,15],dens:[0,2],densiti:[0,1,4,15],depart:16,depend:[0,1,2,3,4,5,6,9,10,12,15],depict:15,deploy:[1,12],deprec:1,depth:[7,8,13],deriv:[1,2,4,6,8,9,12],descend:[3,7,9],descent:[1,2,6,10],descr:1,describ:[0,1,3,4,6,8,9,10,13],descript:[0,1,6,7],design:[1,2,3,4,5,8,9,10],designmatrix:1,desir:[0,1,3,5],despit:[2,10],destroi:13,det:[3,13],detail:[0,1,5,9,13],detect:[6,10],determin:[1,3,5,6,7,8,9,10,13,15],determinist:[5,15],dev:[2,15],develop:[0,1,3,6,8,9,10,12,13],deviat:[1,2,3,4],devis:10,df1:[],diag:[3,6],diagnost:[2,8],diagon:[1,3,5,13,15],diagonaliz:3,diagram:8,dict:6,dict_kei:1,dictionari:1,did:[0,1,2,3,5,8,9],die:2,diffeent:6,differ:[0,1,2,3,4,7,8,9,10,12,13,15,17],differenti:[5,12,13],difficult:[0,1,2,4,8,15],difficulti:[1,2,5],digit:[1,2,14,16],dilut:2,dim:[0,9],dimens:[0,1,2,3,6,9,13],dimension:[0,1,3,4,5,7,9,12,13],dimensionless:1,diment:13,dimes:0,direct:[0,1,2,5,9,10],directli:[0,2,3,15],directori:[],disadvantag:1,discard:[4,9],disciplin:[1,10],disclaim:15,discourag:5,discov:1,discover:3,discret:[2,3,5],discrimin:[5,8,9],discuss:[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,17],diseas:5,disk:[],disord:[2,5],displai:[0,1,2,4,5,6,7,8,9,10,15],displaystyl:[1,3],displot:1,disregard:1,dissimilar:[0,9],dist:0,distanc:[0,1,6,7,9,15],distance_list:7,distinct:[0,5,6,7,8],distinctli:6,distinguish:[1,5,6,15],distplot:1,distribut:[0,1,2,4,5,8,9,12,13],distrubut:[1,12],div:3,dive:[1,6],diverg:[2,5],divid:[1,2,3,4,6,7,9,10,15],divis:[4,6,7,13,15],dna:5,dnn:[1,2,10],dnn_kera:2,dnn_model:2,dnn_numpi:2,dnn_scikit:[1,2],doamin:3,doc:[12,14,17],doconc:[],document:[5,9],doe:[0,1,2,3,4,5,6,8,9,10,13,15],doesn:[7,10],dog:2,doi:0,doing:[1,3,4,9],domain:[3,5,6],domin:1,don:[0,1,2,6,9,12,15],done:[0,1,3,4,7,8,9,13,15],dot:[1,3,5,6,7,8,9,10,13,15],doubl:[13,15],doubli:2,down:[1,5,7,9,10],download:[1,2,3,13,17],dozen:2,dramat:9,draw:[4,5,8],drawback:[1,2,5],drawn:[2,4,5,9,15],dre:3,drop:[1,2,3,4,9,15],dropna:[1,4],dtype:[0,1,2,13],dub:1,due:[0,2,3,4,5,6,8,10],dummi:1,dure:[1,2,6,7,9,12],dwell:1,dwh:2,dwo:2,dx_1:15,dx_n:15,dying:2,each:[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16],eapprox:1,earli:2,earlier:[1,3,5,6,7,9,10],eas:[0,7],easi:[1,3,4,5,6,7,8,9,10,12,13],easier:[3,4,6,7,15],easiest:5,easili:[1,2,3,5,6,7,8,9,10,13],eastern:16,ebind:1,eblock:7,econometr:[],economi:3,ecosystem:12,ect:14,edgecolor:4,edit:[],edu:5,educ:1,eface79dac2c:8,eff:15,effect:[2,8,15],effic:2,effici:[1,5,8,12,13,15],efron:[4,15],eig:[3,5,9,13,15],eigen:15,eigenpair:[3,9],eigenvalu:[3,5,6,9,13],eigenvector:[3,5,9],eight:13,eigval:[13,15],eigvalu:[5,9],eigvec:[13,15],eigvector:[5,9],eispack:13,either:[1,2,3,4,5,6,7,8,9,15],ekstrom:16,elabor:15,electr:[1,10],electur:17,eleg:9,element:[2,3,4,5,6,9,10,12,13,14,17],elementari:[8,13],elessar:[],elif:0,elim:13,elimin:[3,6],els:[2,5,7,10,15],elu:2,elus:1,email:[14,16],embed:[1,9],embodi:4,emit:15,emner:17,emphas:[1,8,12],emphasi:[1,12,17],empir:[2,9,15],emploi:[1,2,3,4,5,9,15],employ:1,empti:[4,8],emul:10,enabl:9,encapsul:0,encod:[0,1,3,7,9],encompass:[1,15],encount:[1,2,3,5,15],end:[0,1,2,3,4,5,6,7,8,9,10,13,15],endl:15,endpoint:15,energi:[1,4],enforc:10,eng:17,engin:[1,2,12,15],english:17,enough:[1,4,5],ensembl:[2,7,14,15],ensur:[1,2,3,4,5,9,15],enter:[3,15],enthought:[1,12],entir:[2,5,7,12,15],entiti:[7,10,13],entri:[1,3,6,9,10,13],entropi:[2,5,8],enumer:[1,2,6],env:[3,15],environ:[12,17],eol:1,eosfit:1,epoch:[1,2,5,10],epsilon:[1,3,4,5],epsilon_0:1,epsilon_1:1,epsilon_2:1,epsilon_:1,epsilon_i:1,eqnarrai:[3,4],equal:[0,1,2,3,4,5,6,7,9,10,13,15],equat:[0,2,3,4,6,7,8,9,13,15],equilibrium:10,equiv:[5,13,15],equival:[1,2,3,6,9,12,13],erf:15,eriador:[],eridg:1,err:[1,8],err_:4,errat:5,errno:[],error:[2,3,4,5,7,9,10,12,15],error_estimate_corr_tim:15,error_hidden:2,error_output:2,escap:5,esl:0,esol:[],especi:[2,7,10],essenti:[0,1,3,7,8,10,15],establish:[1,8,9],estim:[1,2,3,4,5,8,9,12,15],estimated_mse_fold:4,estimated_mse_kfold:4,estimated_mse_sklearn:4,esubex:[],eta0:[5,6],eta:[1,2,5,6,10],eta_v:[1,2],etc:[0,1,2,3,5,6,7,9,10,12,13,15],ethic:12,etsim:4,euclidean:[0,1],evalu:[1,3,4,5,7,15],even:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],event:[3,5,8],eventu:[3,4,5,9,10,16],everi:[0,1,2,3,4,5,7,8,9,10,12,15],everyth:10,everywher:5,evolv:1,exact:[1,3,5,9,10,13,15],exactli:[1,10,12],examin:4,exampl:[3,4,9,10,12,13,14,17],exce:[2,10],excel:[0,1,2,3,8,17],except:[3,4,6,7,15],excess:1,excit:1,exclud:[2,4,10],exclus:[1,2,4,15],execut:3,exemplifi:5,exercis:[3,12,14],exhaust:4,exhibit:[1,6],exist:[0,1,2,3,4,5,6,7,13,17],exit:[3,13,15],exp:[1,2,3,4,5,6,8,9,10,15],exp_term:2,expand:[3,5,9],expans:[1,3,5,6,8,10],expect:[1,2,3,4,5,9,10,12],expectation_value_of_h_wrt_p:15,expens:[4,5,8,15],experi:[1,2,4,5,6,12],experiment:[1,4,7,15],expert:[2,7],explain:[0,1,5,7,8,9,15],explained_variance_ratio_:9,explanatori:1,explicit:[1,13],explicitli:[0,1],explod:2,exploit:[1,10],explor:[2,5,6,12],expon:2,exponenti:[1,2,3,5,8],export_graphviz:7,export_text:7,exporttext:7,expos:12,express:[1,3,4,8,10,13,15],exptmean:15,exptvari:15,extend:[3,9,12],extens:[1,10,12],extent:[1,2,4,17],extern:7,extra:[2,3],extract:[1,3,5,6,9,13],extrapol:1,extrem:[0,1,2,3,5,6,7,13],extremum:5,extrins:9,eye:[0,1,3,5,13],f11:1,f12:1,f13:1,f1d:5,f6d7a289d493:13,f_0:8,f_1:[5,8],f_2:[5,10],f_3:10,f_d:15,f_i:[4,10],f_m:8,face:5,facecolor:[4,6,15],facil:[1,12],facilit:10,fact:[1,2,3,5,7,9,10],factor:[1,2,3,7,8,9,13,15],fafab0:[7,8],fail:[4,5,6,9,16],failur:5,fairli:[0,2,15],fall:[6,7,14],fals:[0,1,2,3,4,5,7,8],famili:[1,5,6,15],familiar:[1,3,6,12,13,15],famou:[4,10,13],far:[0,1,3,5,6,9,10,15],fashion:[1,7,8],fast:[2,4,5,8,10,12,15],faster:[2,9],fastest:5,favor:5,favorit:15,featur:[1,2,3,4,5,6,8,9,10,12,15],feature_nam:[1,2,5,7],feautur:7,fed:2,feed:[1,9,12,14],feed_forward:2,feed_forward_out:2,feed_forward_train:2,feedforward:[2,10],feel:[0,1,3,9,12,16],feet:1,few:[0,2,7,11,15],fewer:[1,7,9],ffnn:[2,10],field:[1,10,12],fifth:1,fig:[0,1,2,5,10],fig_id:[1,4,5,7],figaxi:15,figsiz:[1,2,4,5,6,7,8],figur:[0,1,2,3,4,5,6,7,8,10,12],figure_id:[1,4,5,7],figurefil:[1,4,5,7],file:[1,2,3,4,5,6,7,13,15],filenam:[1,15],filenotfounderror:[],fileout:15,fill:[3,7],financ:1,find:[0,1,2,3,4,5,6,7,8,9,10,12,15],fine:[0,1],finit:[3,4,10,15],first:[0,1,2,3,4,6,7,8,9,13,15,17],firsteigvector:9,fit:[2,3,4,5,6,7,9,10,15],fit_intercept:[1,3,4],fit_mod:7,fit_transform:[1,4,6,7,9],fiti:1,five:[1,7],fix:[1,4,5,8,9,10],fkkt:3,flag:0,flat:[5,10],flatten:[2,3],flexibl:[1,2,4,6,8,10],float32:7,float64:[1,13],flop:[3,13],flow:[2,10],fluctuat:3,fly:9,flyvbjerg:15,fmesh:5,focu:[1,3,4,12,17],focus:[2,5,13],fold:[4,7],folder:1,follow:[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17],font:[1,5,15],fontdict:15,fontsiz:[2,6,7,8,15],fontweight:2,foral:6,forc:[1,3,8,9],forecast:10,forest:[1,2,7,12,14],forget:9,form:[1,3,4,5,6,7,9,10,12,13,15],formal:[0,15],format:[1,2,4,5,6,7,8,9,12,15,17],formatstrformatt:5,formul:[0,9],formula:[5,15],forth:10,fortran2003:12,fortran90:15,fortran:[1,12,13],fortun:[1,9],forward:[1,4,12,13,14],found:[2,3,4,5,10],foundat:12,four:[3,6,10,13,14],fourier:1,fourth:10,frac:[0,1,2,3,4,5,6,7,8,9,10,13,15],fraction:7,frame:5,framework:[2,6,8,15],frank:[3,9],frankefunct:[3,9],free:[1,9,12,13,15,16,17],freecodecamp:12,freedom:3,freeli:1,frequenc:[4,5,15],frequent:[1,5,6,7],frequentist:12,fresh:8,fret:0,fridai:14,friedman:[14,17],frodo:[],from:[0,1,2,4,5,6,7,9,12,13,14,15,16,17],from_cod:7,front:[1,3],fruit:0,fstream:15,fulfil:[3,10],full:[1,2,3,5,7,8,15],full_matric:3,fulli:[4,10,14,15],fun:12,func:4,functionali:9,fundament:[1,4,12],further:7,furthermor:[1,3,4,5,9,10,12],futur:[1,6,7],futurewarn:1,fys:16,g_1:8,g_2:8,g_m:8,gain:[0,2,3,7,8],galleri:1,gamge:[],gamma1:6,gamma2:6,gamma:[1,5,6,7,8,9],gamma_0:8,gamma_1:8,gamma_1x:8,gamma_:1,gamma_i:[1,6,15],gamma_j:5,gamma_k:5,gamma_m:8,gamma_x:1,gap:[3,6],gate:10,gather:[1,2,10],gaug:10,gaussbacksub:13,gaussian:[0,3,4,6],gaussian_point:0,gaussian_rbf:6,gave:5,gbc:14,gca:[4,5,6],gd_clf:8,gdclassiffiercgain:8,gdclassiffierconfus:8,gdclassiffierroc:8,gdregress:8,gemv:3,gen:15,gender:1,gener:[0,1,2,3,4,5,6,8,9,10,13,17],generallay:10,generate_simple_clustering_dataset:0,genom:12,geodes:9,geometr:1,geometri:3,georg:17,geq:[3,5,6,7],geron:[1,14,17],get:[0,1,2,3,4,5,7,8,9,12,13,15],get_distances_to_clust:0,get_dummi:7,get_split:7,get_yaxi:6,getattr:4,getsolutionslic:3,gibb:12,gini:8,gini_index:7,git:[1,12],github:[1,12,14,17],gitlab:[1,12],give:[0,1,2,3,5,6,7,8,10,12,15,17],given:[0,1,2,3,4,5,6,7,8,9,10,13,15],glare:0,global:[5,15],glorot:2,gmail:16,goal:[1,5,7],goe:[0,1,2,3,4,5,13],going:[1,2,3,4,5,6,7,9,10],golden:5,gone:3,gong:2,good:[0,2,3,5,7,8,9,12,15,17],goodfellow:[14,17],googl:[0,2,12],got:2,gpu:2,grade:14,gradient:[1,6,7,10,12,14],gradientboostingclassifi:8,gradientboostingregressor:8,gradual:[0,2],graph:[2,5,7,9,10],graph_from_dot_data:7,graphic:[1,2,7],grasp:1,gray_r:2,great:5,greater:[2,5,15],greedi:7,green:[1,7,15],grid:[2,4,5,6,10,15],grossli:5,ground:1,group:[0,1,4,5,7,12,14],groupbi:1,grow:[2,7,8],growth:1,guarante:[1,5,15],guess:[0,2,5,8],guestrin:8,guid:2,h_1:5,h_2:5,h_m:8,habit:1,had:[1,2,4,5],hadamard:[2,10],half:[2,6,7],halv:8,hand:[1,2,3,5,9,10,12,13,14,15,17],handl:[1,2,3,7,9,12],handle_unknown:7,handsid:10,handwrit:10,handwritten:[2,3,5],happen:[0,2,3,5,8,15],hard:[2,5,6,8],hardcopi:12,harder:[1,2],has:[0,1,2,3,4,5,6,7,8,9,10,13,15],hasn:[1,2],hassl:[1,12],hast:12,hasti:[0,1,14,17],hat:[2,3,5,7,8,9,10,13,15],have:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],haven:2,hdf5:[],head:[1,8,15],header:1,heads_proba:8,health:1,hear:1,heart:[1,5],heatmap:[1,2,5],heavili:1,heavisid:2,height:2,help:[0,1,2,10],helper:0,henc:[1,3,4,5,6,7,8,10],her:5,here:[0,1,2,3,4,5,6,7,8,9,10,12,13,15,17],hereaft:[1,6,10],hermitian:13,hessenberg:13,hessian:3,heterogen:[7,8],hidden:[2,10],hidden_bia:2,hidden_bias_gradi:2,hidden_layer_s:[1,2],hidden_weight:2,hidden_weights_gradi:2,hierarch:[0,3],high:[0,1,2,3,4,5,7,8,9,12,13],higher:[1,2,3,4,5,6],highest:2,highli:[1,8,12,13,15,17],highwai:1,hing:6,hint:5,hip:12,hire:1,his:5,hist:[4,5,15],histogram:[1,4,5,15],histor:[5,9],histori:10,histplot:1,histtyp:4,hitherto:3,hjorth:16,hobbi:15,hoc:3,hoff:17,hold:[0,2,4,5,15],holder:1,home:1,homogen:[2,7,8],hopefulli:[1,9,15],horizont:9,hors:5,hot:[2,7],hour:[2,12,14,15,16],how:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,17],howev:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],hspace:[1,6,8,15],hstack:2,htf:14,html:[5,9,12,14,17],http:[5,9,12,13,14,17],huang:1,huber:1,huge:[2,12],human:[1,2,7,10],humid:7,hundr:2,hungri:2,hybrid:14,hydrogen:1,hyperbol:[2,10],hyperparam:6,hyperparamet:[0,1,3,7],hyperplan:9,i_1:[3,4],i_2:[3,4],ian:17,idea:[1,2,4,5,7,8,10,13,15],ideal:[0,1,4,6,15],idem:4,ident:[3,4,10,13],identical:3,identifi:[0,1,2,5,6,7,9,10],idum:15,ieor:15,ifi:17,ifs:12,ignor:[1,2,7],iii:13,ijca2016907841:0,illustr:[0,3,5,8,10,12],imag:[2,7,9,10,17],image_path:[1,4,5,7],imagin:2,immedi:[1,12],implement:[0,1,3,5,6,7,8,9,10],impli:[3,4,5,13],implicitli:[9,15],impos:[1,9,10],imposs:[1,3],impress:[1,10],improv:[0,1,3,7,8,9],impur:7,imshow:2,in3050:17,in4080:17,in4300:17,in5400:17,inaccur:5,inact:10,inadequ:1,includ:[1,2,3,5,9,10,12,15,16,17],include_bia:[4,7],incom:10,inconsist:[],incorrect:2,incoveni:6,increas:[1,2,3,4,5,6,7,9,10,15],increasingli:15,ind:4,inde:[1,3],indent:15,indentationerror:15,independ:[1,3,4,5,6,10,15],index:[0,1,2,8,12,15,17],index_col:1,indic:[1,2,3,7,8,9],indispens:4,individu:[2,5,8,10,15],indu:1,indx:13,ineffici:0,inequ:6,inequaltii:5,inf1000:12,inf1100:12,inf1100l:12,inf1110:12,inf3000:17,inf4490:17,inf5860:17,inf:1,infeas:7,infer:[1,2,4,17],inferenc:2,infil:[1,4,5,7],infin:[3,4,5,9],infinitesim:15,influenc:[4,8],influenti:2,info:[],inform:[0,1,2,4,5,7,9,10,13,17],infti:[5,15],ingeni:5,ingredi:[1,7],inher:4,inherit:13,initi:[0,1,2,4,5,8,13,15],initialis:15,inject:0,inlin:[0,1,2,3,4,5,6,7,8,9,10,13,15],inner:[4,5],innov:17,input:[0,1,2,3,4,5,6,7,8,10,13,15],input_dim:2,inputs:2,inputs_shuffl:[1,2],insert:[3,6,8,15],insid:[1,5],insight:[1,2,3,12,17],insist:5,inspir:[1,2,10,17],instal:[1,2,3,7,14],instanc:[1,2,4,5,7,9],instanti:8,instead:[0,1,2,3,4,5,6,7,9,13,15],institut:2,instruct:[1,2],int32:8,int64:1,int_0:15,int_:15,int_a:15,intak:1,integ:[0,2,13,15],integer_vector:2,integr:15,intellig:[0,1,17],intend:8,intens:2,intention:0,interact:[1,7,10,12],intercept:[1,5,6,9],intercept_:[1,5,6,7],interchang:[3,10,13],interconnect:2,interest:[1,2,3,4,5,6,7,10,12,15],interfac:[1,2,13],interior:[1,7],intermedi:13,intern:[2,8,10],interpol:[2,10],interpr:3,interpret:[1,2,7,8,10,13,14,15],interv:[1,3,4,5,15],intial:5,intimid:[],intract:1,intrins:[9,13,15],intro:[12,17],introduc:[1,2,3,5,6,8,10,13,15],introduct:[2,5,14,17],introductori:[1,13,17],intuit:[1,3,4,6,10],inv:[1,3,5],invalid:[2,6,13],invalu:[1,5,12],invari:2,invd:3,inver:6,invers:[1,5],invers_period:15,inverse_transform:6,invert:[1,3,5,8],invok:[1,6],involv:[1,4,5,9,10],iomanip:15,ios:15,iostream:15,ipca:9,ipynb:12,ipython:[0,1,2,4,5,6,7,8,9,12,13,15],irani:0,iri:[6,7],irreduc:4,irrelev:3,irrespect:1,isn:3,isnul:1,isomap:9,issu:[2,7,13],it_arrai:5,item:1,items:13,iter:[0,1,2,4,6,9,15],itr:3,its:[0,1,2,3,4,5,6,7,8,9,10,12,13,17],itself:[3,4,10,15],jackknavg:15,jackknif:[4,12],jackknstd:15,jackknvar:15,jackknvec:15,jacobian:5,jargon:15,jensen:16,jerom:17,job:[6,8],join:[1,4,5,7],joint:3,journal:15,judg:5,julia:[12,13],jump:[0,15],jupyt:[0,1,12,17],just:[0,1,2,3,4,5,6,7,8,9,10,15],justif:1,justifi:8,k_mean:0,kappa_d:15,karim:16,karlsen:16,karush:6,keep:[0,1,2,3,5,9,13],keepdim:[2,4,8],kei:[1,2,10,17],kept:0,kera:[1,12,14],kernel:[1,2,12],kernel_regular:2,kernelpca:9,kev:1,kevin:17,keyword:13,kfold:4,kick:[2,5],kind:[0,1,6,10],kjm:12,kkt:[3,6],kktsolver:3,kmeanspoint:0,kn_k:0,know:[0,1,2,3,5,6,12,15],knowledg:[1,12],known:[2,3,4,5,6,7,10,13,15,17],kondev:1,kpca:9,kroneck:0,kuhn:6,kwarg:4,kwown:1,l1_l2:2,l1regl:3,l1regls_mosek2:3,l1regls_mosek:3,l_1:5,l_2:5,l_j:10,la_i:10,la_k:10,lab:[12,14],label:[0,1,2,3,4,5,6,7,8,10,12,13,15],labelencod:[5,8],labels:[6,7],labels_shuffl:[1,2],labor:0,laboratori:14,lack:[0,1],lagrang:[6,9],lambda:[1,2,3,4,5,6,8,10,15],lambda_0:9,lambda_1:[3,6,9],lambda_2:[6,9],lambda_:9,lambda_i:[6,9],lambda_iy_i:6,lambda_jy_iy_j:6,lambda_k:6,lambda_n:[3,6],lamda:2,land:[1,6],landmark:6,landscap:5,langl:[1,9,15],languag:[1,2,6,12,13,17],lapack:[3,13],laplac:3,laptop:12,larg:[1,2,3,4,5,6,7,8,9,12,13,15,17],larger:[1,3,4,5,6,8,9,15],largest:[6,9],lasso:[1,4,5,12,14],last:[0,1,2,3,4,5,6,7,8,10,13,15],later:[0,1,2,5,6,10,12,15],latex:[],latter:[1,3,5,6,9,13,15],lattic:10,law:1,layer:1,lbfg:[5,7,8,9],lbl:4,lcc:[3,4],lda:9,ldot:[1,4,9,15],lead:[1,2,3,4,5,6,7,8,9,10,13,15],leaf:7,leaki:2,lear:5,learn:[3,4,6,7,8,10,13,14,17],learner:8,learning_r:[6,8],learning_rate_init:[1,2],learning_schedul:5,least:[0,1,4,5,6,8,9,12,13,15],leav:[1,2,3,4,7,9],lectur:[1,2,3,5,8,9,10,12,13,14,17],lecturenot:[12,17],left:[1,2,3,4,5,6,7,8,9,10,13,15],leftarrow:[6,10],legend:[1,3,4,5,6,7,8],len:[0,1,2,3,4,6,7,8,9,10,13,15],length:[1,2,5,6,7,12,15],leq:[0,1,3,5,6,15],less:[1,2,3,4,6,7,15],lessen:2,let:[0,1,2,3,4,5,6,7,8,9,10,13,15],letter:[1,13,15],level:[1,2,3,4,7,12,13,14],lib:[1,2,4,5,6,9],liblinear:[6,8],librari:[1,2,3,7,8,9,13,15,17],licens:[1,2,12],lie:[1,4,9,15],lies:[6,9],life:[1,2,6,10],lift:0,light:[],like:[0,1,2,3,4,5,7,8,9,10,12,13,15],likelihood:[1,2,3,7],lim_:15,limit:[1,3,4,6,9,10,13],lin_clf:6,lin_model:1,lin_reg:7,linalg:[1,3,5,6,9,13,15],line1:6,line2:6,line3:6,line:[1,2,4,5,6,9,13,15],linear:[2,3,4,5,7,8,9,10,12,14,15],linear_model:[1,3,4,5,6,7,8,9],linear_regress:4,linearli:3,linearloc:5,linearregress:[1,4,5,7],linearsvc:6,liner:2,linerar:8,linewidth:[1,4,6,7,8],link:[1,5,7,10,12],linlag:3,linpack:13,linreg:1,linspac:[1,4,6,7,8,13,15],linu:16,linuek:16,linux:[1,2,12],liquid:1,list:[0,1,2,3,7,12],listedcolormap:[7,8],literatur:[0,2,5,17],littl:[2,7,10],live:6,lle:1,lloyd:0,lmb:[3,4],lmbd:[1,2],lmbd_val:[1,2],lmbda:5,load:[1,2,5,7,8],load_boston:1,load_breast_canc:[2,5,7,8,9],load_digit:2,load_iri:[6,7],loc:[1,4,5,6,7,8],local:[1,2,5,10],locat:6,log10:[3,4],log:[1,2,3,4,5,7,8,9,13],log_:1,log_clf:8,logarithm:[1,3,5,13],logic:[1,2,7],logist:[1,2,6,7,8,9,10,12,14],logisticregress:[5,7,8,9],logit:5,logreg:[5,7,8,9],logspac:[1,2,3,4],longer:[0,6,8,13,15],longest:0,loocv:4,look:[0,1,2,3,4,5,6,7,8,9,13,15],loop:[0,2,4,8,10,12,13,15],lose:2,loss:[1,2,3,4,6,8,9,13],lot:[0,1,2,4],low:[1,4,7,8,9,15],lower:[1,2,7,8,13],lowercas:13,lowest:[5,7,15],lstat:1,lstsq:1,lubksb:13,ludcmp:13,lux:13,lvert:2,m_1:0,m_h:1,m_k:0,m_l:10,m_n:1,m_p:1,machin:[2,3,4,7,8,9,10,13,14,17],machinelearn:[12,14,17],mackai:17,made:[1,2,3,4,5,7,9,10],mae:1,magic:0,magnitud:[2,5],mai:[1,2,3,4,5,6,7,9,10,12,13,15],mail:14,main:[1,2,3,5,7,13,17],mainli:[1,3,4,5,7],maintain:4,major:[2,4,5,7,8,13],make:[0,2,3,4,5,6,9,10,12,13,15,17],make_moon:[6,7,8],make_pipelin:[1,4,8],makedir:[1,4,5,7],makeplot:1,malcondit:13,malign:[2,5,7],mammographi:3,manag:[1,12],manhattan:0,mani:[0,1,2,3,4,5,6,7,9,11,12,13,15,17],manifold:9,manual:0,map:[0,1,2,4,5,6,9,10,15],margin:[1,3,6],marit:1,mark:[],marker:[1,5,13],markov:12,marsaglia:15,mask:15,mass:[1,2,3],massag:1,masses2016:1,masses2016ol:1,masses2016tre:1,masseval2016:1,master:14,mat1100:12,mat1110:12,mat1120:12,mat3155:14,mat4155:14,mat:12,match:[0,2,3,5],materi:[3,5,13],math:[0,5,10,13,15,17],mathbb:[0,1,3,4,5,6,9,10,13,15],mathbf:[1,3,4,5,6,13,15],mathcal:[2,3,4,5],mathemat:[0,1,5,9,10,12,13,15,17],mathemati:[],mathemt:[],mathrm:[0,1,2,3,4,5,6,7,8,9,10,15],matmul:[2,3],matnat:[16,17],matplotlib:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],matric:[1,2,5,6,9,12,13],matrix:[1,4,6,8],matshow:2,matter:5,max:[1,2,5,7,8,10],max_depth:[1,7,8],max_it:[1,2,5,6,9],max_iter:0,max_leaf_nod:8,max_sampl:8,maxdegre:[1,4,8],maxdepth:8,maxim:[2,3,5,6,9],maximum:[0,1,2,3,5,6,7,8],maxpolydegre:[3,4],mbox:[3,4],mcculloch:10,mcint:15,mcintsqr2:15,mean:[2,3,4,5,7,8,9,10,12,13,14],mean_absolute_error:1,mean_divisor:0,mean_i:15,mean_matrix:0,mean_squared_error:[1,4,5,8],mean_squared_log_error:1,mean_vector:0,mean_x:15,meaning:[1,5],meansquarederror:1,meant:[5,8],meantempvec:15,meanvec:15,measur:[0,1,2,3,4,7,9,10,15],mechan:[1,15],median:1,medicin:10,medium:6,medv:1,meet:[1,16],mehta:1,memori:[9,10,13],mention:[0,1,5,10,15],mere:1,mersienn:15,meshgrid:[3,6,7,8,9],messag:3,met:[1,6],meteorolog:7,method:[0,1,2,3,6,9,10,12,13,14,17],metric:[0,1,2,4,5,7,8],metropoli:12,mev:[1,15],mglearn:12,mgrid:5,mhjensen:[1,2,5,6,9],microsoft:17,mid:2,midpoint:7,might:[1,2,5,7],mild:7,miller:15,million:1,mimic:10,min:[1,3,6,7],min_:[0,1,3],min_samples_leaf:7,mind:[0,1,5],mine:12,mini:[2,5,9,10],minibatch:[2,5,9],minibathc:5,minim:[0,1,2,3,4,5,6,7,8,9,10,15],minima:[1,2,5],minimum:[1,2,4,5,6,7,9],minkowski:0,minmaxscal:1,minor:15,minst:2,minu:5,mirror:7,misclassif:[6,7,8],misclassifi:[6,8],mismatch:2,miss:[1,8],mit:17,mix:2,mkdir:[1,4,5,7],mlab:[4,15],mle:[3,5],mlp:2,mlpclassifi:2,mlpregressor:1,mnist:[2,9],mod:15,mode:[14,15],model:[0,3,4,5,6,7,8,9,12,15,17],model_select:[1,2,3,4,5,7,8,9],moder:8,modern:[1,4,5,12],modif:10,modifi:[1,2,3,5,6,8,10],modul:[1,4,5,7,8,9,13],modular:15,modulenotfounderror:[5,7],modulo:15,moe:[3,9],moment:[3,4],monoton:[3,10,15],mont:[1,4,12,15,17],montecarlocycl:15,moor:3,more:[1,2,3,4,6,7,8,9,10,12,14,15],moreov:1,morten:16,mosek:3,most:[0,1,2,3,4,5,6,7,8,9,10,12,15],mostli:[2,9],motion:1,motiv:2,move:[0,1,3,5,7,10,15],mpl:[1,5],mpl_toolkit:5,mplot3d:5,mplregressor:2,mse:[1,3,4,7,8],mse_simpletre:8,mselassopredict:3,mselassotrain:3,msepredict:3,mseridgepredict:3,msetrain:3,msg:1,msle:1,mt19937_64:15,mu0:15,mu1:15,mu2:15,mu_:15,mu_n:9,mu_x:15,much:[1,2,3,4,5,6,7,8,9,10,13,15],mul:3,multi:[1,2,5,12],multiclass:[2,5],multidimension:[9,10],multilay:2,multinomi:5,multipl:[3,4,5,10,15],multipli:[3,5,9,13,15],multiplum:6,multitud:[],multivari:[1,8,9,12,15],multivariate_norm:[0,9],murphi:[9,17],must:[0,2,3,4,5,6,8,10,15],mutat:5,mutual:[2,4,5],mx_:15,myriad:[1,12],mz1:15,mz2:15,n_0:[10,15],n_b:15,n_boostrap:[4,8],n_bootstrap:4,n_categori:2,n_cluster:0,n_compon:9,n_epoch:5,n_estim:8,n_featur:2,n_hidden_neuron:[1,2],n_i:15,n_input:[1,2],n_instanc:7,n_iter_i:[5,9],n_job:8,n_k:0,n_l:[10,15],n_layer:2,n_m:7,n_neuron:2,n_neurons_layer1:2,n_neurons_layer2:2,n_point:0,n_sampl:[0,4,6,7,8],n_split:4,nabla:[2,5],nabla_:5,naimi:1,naiv:[0,5],nall:1,name:[0,1,2,3,4,5,6,7,8,10,12,13,16],nameerror:8,namespac:15,nation:[2,3],nativ:12,natur:[1,2,5,6,7,10,15,17],navier:10,nb_:13,nbconvert:[],nboot:15,nearest:[2,9],nearli:5,neat:[],neccesari:4,necessari:[0,1,2,6],necessarili:[1,9,15],necesserali:3,neck:5,need:[0,1,2,3,4,5,6,7,8,9,10,13,15],neg:[1,2,3,4,5,8,15],neg_mean_squared_error:4,neglect:15,neglig:15,neighbor:9,neq:[0,5,15],nervou:10,nest:[7,10],net:10,netlib:13,network:[1,7,12,14,17],neural:[1,5,12,14,17],neural_network:[1,2],neuralnetwork:2,neuron:[2,10],neutral:1,neutron:1,never:[2,4,7,15],new_hobbit:[],new_sig:4,newaxi:[1,4,7],newli:1,newton:[2,6,15],next:[0,1,2,3,5,6,7,15],next_guess:5,nian:16,nice:[0,1,2,3,9],nichola:16,nicholaskarlsen1102:16,niter:5,nitric:1,nlambda:[3,4],nm_n:1,nmse:4,nn_model:2,node:[2,7,8,10],nois:[1,3,4,5,6,7,8],noisi:[2,4],non:[0,1,2,3,4,5,7,8,9,10,13,15],none:[0,1,2,3,4,5,7,8,15],nonetheless:0,nonlinear:[4,6,7,9,10],nonneg:[4,5,7],nonparametr:4,nonsens:15,nonsingular:13,nonumb:[5,6,13],nor:2,norm:[1,2,3,4,5,6,9],normal:[3,4,5,6,7,8,9,10,12,13],normali:13,normpdf:4,notat:[0,1,3,4,15],note:[0,1,2,3,4,5,6,9,10,12,13,14,15,17],notebook:[0,1,2,7,12],noth:[0,2,3,6,10,15],notic:[3,10,13,15],novel:[4,8],novemb:2,now:[0,1,3,4,5,6,8,9,10,13,15],nowadai:[1,2,7,12],nox:1,np_assign_points_to_clust:0,np_get_distances_to_clust:0,np_k_mean:0,nsampl:4,nspin:15,nthi:1,nuclear:3,nuclei:[1,15],nucleon:1,nucleu:1,num_tre:8,number:[0,2,3,4,5,6,7,8,9,10,13,14,16],numberid:5,numer:[1,3,4,5,7,8,9,10,12,13,17],numpi:[0,1,2,3,4,5,6,7,8,9,10,12,15],nunmpi:3,obei:[5,9],object:[1,2,3,4,6,8,13],objsens:3,obliqu:3,observ:[0,2,3,4,5,6,7,8,9,10],obtain:[0,1,2,3,4,5,6,7,8,10,13,15],obviou:[3,9,15],obviouli:1,obvious:[1,3,13],occupi:1,occur:[1,6,7,15],odd:[1,5],off:[2,3,4,7,15],offend:[],offer:[4,9,12,13,14],offic:16,offici:14,ofil:15,ofstream:15,often:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],ofter:13,old:[2,3,5,8],olsbeta:3,omit:[1,3],onc:[0,2,4,7,9,15],one:[0,1,2,3,4,6,7,8,9,12,13,15],onehot:2,onehot_vector:2,onehotencod:7,ones:[1,3,5,6,7,8,9,13],onli:[0,1,2,3,4,5,6,7,8,9,10,13,15],onlin:[9,14],onto:[3,9],open:[1,2,4,5,7,12,14,15],oper:[1,2,3,4,8,9,10,12,13,15],operation:15,opinion:0,oplu:15,opmiz:5,opportun:1,opposit:[2,3,6],opt:[1,2,3,4,5,6,9],optim:[0,1,3,4,7,8,9,14],optimis:2,option:[1,2,3,5,6,9],optmiz:[2,6],orang:1,order:[1,2,3,4,5,6,7,8,9,10,13,15],ordinari:[1,4,5,9,12,14],oreilli:17,org:[5,9,12,13,17],organ:[0,4,5,8,13],orient:[2,3,4,15],origin:[1,3,4,6,9,10,13,15],orthogn:3,orthogon:[1,3,5,6,9,13],orthonorm:3,oscar:2,oslo:[1,14,16],osx:[1,12],other:[0,1,2,3,4,5,6,8,12,13,14,17],otherwis:[1,2,5],ouput:[3,5,10],our:[2,4,6,7,8,10,12,13],ourmodel:1,ourselv:[0,1,3,5,6,9],out:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],out_fil:7,outcom:[1,5,7,8,10,15],outdoor:7,outer:10,outfilenam:15,outlier:[1,6],outlin:[4,8,9],outlook:7,outperform:8,output:[1,2,3,5,6,7,8,10,13],output_bia:2,output_bias_gradi:2,output_weight:2,output_weights_gradi:2,outputlayer1:10,outputlayer2:10,over:[0,1,2,3,4,5,7,8,10,15],overal:[2,8],overcast:7,overcom:10,overdetermin:1,overfit:[2,4,7,8],overflow:[2,3],overhead:10,overlap:[5,6,7],overlin:[0,1,3,4,7,8,9,13],overst:1,overview:[0,17],own:[3,5,6,10,12,13],owner:1,oxid:1,oyvinssc:16,p_i:[3,15],p_j:15,p_n:15,p_x:15,pack:1,packag:[1,2,3,4,5,6,9,12,15],page:[1,12],pai:[2,7],painless:[],pair:[1,7,12,15],panda:[1,3,4,5,7,9,12],panel:[],paper:2,paradigm:1,parallel:[8,13],paramet:[1,2,3,4,5,6,7,8,10,15],parameter:[1,8],parametr:[1,4],paramt:3,park:15,part:[0,1,2,3,4,8,13,14,15,17],partial:[1,2,3,5,6,8,9,10,15],particip:[12,14],particl:[1,15],particular:[1,2,3,4,5,7,8,9,10,15,17],particularli:[3,4,5,6,9,15],partit:[2,7],pass:[0,10,15],past:[8,15],patch:[4,15],path:[1,4,5,7,12],patient:5,pattern:[1,10,14,17],pauli:1,pca:[1,5,12,14],pcost:3,pdf:[1,3,4,7,17],pedagog:1,penalti:[4,5],penros:3,pentagon:5,peopl:[1,2,7,12],per:[1,2,4,14],percentag:[1,8,9],perceptron:[1,2,5],peregrin:[],perfect:[1,2],perfectli:4,perform:[0,1,3,4,5,6,8,9,10,12,13,15],perhap:[1,3,5],perimet:2,period:2,permut:9,person:[3,5,14,16],perspect:17,pertin:10,petal:[6,7],peter:17,petersen:15,phantom:15,phase:10,phatak:0,phenomena:15,phi:6,phi_k:6,philip:16,philosophi:5,phone:16,phrase:1,physic:[1,2,5,10,15,16,17],pick:[0,2,5,7,8,9,15],pickl:2,pictur:1,pie:12,piec:[0,9],pillow:[1,12],pinv:3,pip3:[1,2],pip:[1,2,12],pipelin:[1,4,6,8],pippin:[],pise:0,pitt:10,pixel:2,pixel_height:2,pixel_width:2,place:[1,4,5,6,13],plai:[1,3,4,6,9,12],plain:[5,6,8,10],plan:[4,7,16,17],plane:[6,7],plateau:[3,15],platform:12,plausibl:10,pleas:[1,5,9],plenti:2,plethora:10,plot:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],plot_confusion_matrix:[5,8],plot_cumulative_gain:[5,8],plot_data:2,plot_dataset:6,plot_decision_boundari:[7,8],plot_import:8,plot_predict:6,plot_regression_predict:7,plot_roc:[5,8],plot_surfac:5,plot_train:7,plot_tre:[7,8],plt:[0,1,2,3,4,5,6,7,8,9,10,13,15],plu:[1,3,5],png:[1,4,5,7],point:[0,1,2,3,4,5,6,7,8,9,13,15,16],points_in_clust:0,poisson:12,poli:[4,6],poly100_kernel_svm_clf:6,poly3:1,poly3_plot:1,poly_featur:[6,7],poly_features10:7,poly_fit10:7,poly_fit:7,poly_kernel_svm_clf:6,polydegre:[1,3,4,8],polygon:5,polym:10,polynomi:[1,3,4,5,6,7,8,9],polynomial_featur:4,polynomial_svm_clf:6,polynomialfeatur:[1,4,6,7],polytrop:[1,4],poor:[2,5],poorli:1,popul:[1,3],popular:[1,2,4,5,6,7,9,10,12,13,15],popularli:1,portabl:8,portion:9,pose:[1,9,15],posit:[0,1,2,3,5,6,8,9,13,15],possibl:[1,2,3,4,5,6,7,8,9,10,12,13,15,16],posterior:3,postpon:1,postul:3,potenti:[1,3,10],potr:3,potrf:3,pott:10,power:[1,2,3,4,6,7,10],practic:[1,3,4,5,6,15],practition:[1,2],pre:3,preced:[2,9,10,15],preceq:6,precis:[1,3,9,13,15],pred:4,predict:[1,2,3,4,5,6,7,8,12,17],predict_prob:2,predict_proba:[5,8],predictor:[1,3,5,7,8,9],prefer:[1,2,6,7,9,12],prepar:1,preprocess:[1,4,5,6,7,8,9],prerequisit:1,present:[1,3,7,10,15],preserv:9,press:[5,17],pretrain:2,pretti:[1,6,7,12],prev_centroid:0,prevent:15,previou:[1,2,3,5,6,8,9,10,13,15],previous:[0,7,8,15],price:[1,7],primal:6,primari:[1,5],primarili:0,prime:15,princip:[1,3,5,12,14],principl:[0,1,4,5,6],print:[0,1,2,3,4,5,6,7,8,9,13,15],print_funct:[6,7],printout:1,prior:[1,3,4],privat:1,prob:[2,15],probabilist:[1,17],probabl:[1,2,4,5,8,12],problem:[1,3,4,6,7,8,9,10,12,13,14,15],proce:[1,3,5,6,7,8,9,13],procedur:[3,4,5,6,8,9],proceed:13,process:[0,1,4,5,7,8,10,12,13,15,17],prod:17,prod_:[2,3,5],produc:[0,1,3,7,8,9,10,12,13,15],product:[1,2,3,4,5,6,10,12,13],profess:1,profil:0,program:[0,1,2,3,6,10,12,13,14,15],programm:13,progress:[0,2],progression_plot:0,prohibit:4,project:[1,2,3,5,9,12,14,15,16],project_root_dir:[1,4,5,7],promin:10,promis:6,prone:7,pronounc:12,proof:[1,5,9,10],prop:4,proper:[1,4],properli:[0,2,6,8],properti:[1,2,4,5,10,13],proport:[1,2,3,7,9,15],propos:[2,8],propto:[3,5],proton:1,prove:5,provid:[1,2,3,4,5,6,7,8,10,12,13,15,17],proxi:2,prun:0,prune:7,pseudoinv:3,pseudoinvers:3,pseudorandom:15,psycholog:1,ptratio:1,punish:[1,2],pure:[7,15],purest:7,puriti:7,purpos:[0,1,8,10],put:2,putarow:3,putboundslic:3,putclist:3,putobjsens:3,putqobj:3,pycod:[],pydata:12,pydot:7,pyhton2:[],pylab:[1,5],pypi:12,pyplot:[0,1,2,3,4,5,6,7,8,9,10,13,15],pythagora:[0,3],python2:1,python3:[1,2,4,5,6,9,12],python:[2,3,6,9,10,14],pytorch:[1,12],qquad:[9,13],quad:[2,5,13],quadrat:[1,3,5,6,7],qualit:[7,15],qualiti:[1,7,12],quantifi:2,quantil:8,quantit:[1,4,7],quantiti:[0,1,3,4,5,7,8,9,10,13,15],quantum:10,quartil:1,queri:7,question:[1,3,4,5,7,9,10],quick:15,quickli:[2,5,7,9],quirk:0,quit:[2,3,4,7,8,10],quot:15,r2_score:1,r2score:1,r_1:7,r_2:7,r_j:7,r_m:7,rad:1,radial:[1,6,10],radioact:15,radiu:[1,2],rain:7,rais:4,ramp:2,ran1:15,ran2:15,ran3:15,rand:[1,3,4,5,7,8,13,15],rand_max:15,randint:[4,5,7],randn:[1,2,3,4,5,7,9],random:[0,1,2,3,4,5,6,7,12,13,14],random_devic:15,random_forest_model:8,random_index:5,random_indic:2,random_st:[1,5,6,7,8,9],randomforestclassifi:8,randomli:[0,2,4,5,7,15],randomnumbergener:15,rang:[0,1,2,3,4,5,7,8,9,10,13,15],rangl:[1,9,15],rangle_x:15,rank:3,raphson:[2,6],rapidli:1,rare:2,rate:[1,2,5,6,7,8,10],rather:[1,2,3,4,5,6,7,8,9,10,13,15],ratio:[5,7,8,9],rational:1,ravel:[3,4,5,6,7,8,9],raw:15,rbf:[6,9,10],rbf_kernel_svm_clf:6,rbf_pca:9,rcond:1,rcparam:[1,2,5,6,7,8,15],reach:[0,1,2,3,4,5,7,8,9,10,15],read:[0,1,3,4,5,6,9,10,13,14,15,17],read_csv:[1,4,5,7],read_fwf:1,readabl:0,reader:[1,13,15],readi:[0,1,2,3,6,8,9,10,13],readili:2,real:[1,2,4,5,8,9,10,13],realist:6,realiti:15,realiz:[2,10],realli:2,reason:[0,1,2,5,8,17],reassign:2,recal:[3,4,5,7,8,9,10,13,15],recalcul:15,receiv:[2,8,10,15],recent:[1,4,5,7,8],recept:10,recip:[1,5,13],reciproc:3,recogn:[1,3,8],recognit:[1,2,10,14,17],recommend:[1,6,12,13,14,15,17],reconsid:7,reconstruct:9,record:[8,14],recreat:15,rectangl:[4,5,7],rectangular:3,rectifi:[2,10],recur:[1,12],recurr:[2,12,14],recurs:[7,12,13],recycl:15,red:[1,4,6,7],redefin:[1,8],reduc:[2,3,5,7,8,9],reduct:[1,8,9,12,15],refer:[0,1,2,3,4,5,9,10,13,17],refin:10,refit:4,reflect:[1,2,15],refresh:[12,14],reg:[8,9],regard:[2,5,7],regardless:10,region:[7,10],regist:15,reglasso:3,regr_1:[1,7],regr_2:[1,7],regr_3:[1,7],regress:[2,4,6,9,10,12,14],regressor:[1,5,8],regridg:3,regular:[1,3,5,7],reilli:[1,17],reinforc:[1,6,12],reiter:2,rel:[1,4,5,7,10,15],relat:[0,1,2,3,5,9,13,15],relationship:[1,7],relativeerror:1,releas:[2,12],relev:[1,2,3,5,9,12,15],reli:[1,6],reliabl:[5,15],remain:[2,4,10,13,15],remaind:15,remark:2,rememb:[1,6,13],remind:[1,3,9,13,15],remov:[1,3],render:1,reorder:[3,5],reorgan:1,repeat:[0,1,2,3,4,5,7,8,9,13,15],repeated:1,repeatedli:[4,8,15],repetit:[4,14],rephras:5,replac:[0,1,2,3,4,5,8,10],replica:4,repositori:1,repres:[1,2,3,4,5,6,7,8,10,15],represent:[1,2,4,15],reproduc:[1,3,7,10,12,15],repuls:1,request:1,requir:[1,2,3,4,5,6,7,9,10,13],resampl:[1,5,8,12,14,15],rescal:[1,9,10],rescu:3,research:[1,12,17],resembl:[4,15],reserv:[2,3,4,15],reset:15,reshap:[0,1,2,4,6,7,8],residenti:1,residu:[1,3,5],resiz:3,respect:[0,1,2,3,4,5,6,8,9,10,15],respond:10,respons:[1,5,7,10],rest:[1,3],restat:[1,10],restrict:[1,7,10],result:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],ret:4,retail:1,retain:[3,4],return_data:0,return_x_i:7,reus:2,reveal:[1,10],revers:2,review:[12,13],revisit:0,reward:1,rewrit:[1,3,4,5,6,8,9,10,13,15],rewritten:[4,6,8,15],rewrot:5,rgoj5yh7evk:12,rho:[1,8],rho_1:8,rho_2:8,rho_m:8,rhs:3,rich:1,rid:0,ride:7,rideclass:7,ridedata:7,ridg:[1,4,9,12,14],ridgebeta:3,right:[1,2,3,4,5,6,7,8,10,13,15],rightarrow:[1,2,3,5,6,9,10,15],rigor:1,rise:1,risk:[1,5],river:1,rmse:1,rmsprop:2,rnd_clf:8,rnn:10,rntrick1:15,rntrick2:15,rntrick3:15,rntrick4:15,robert:17,robust:1,robustscal:1,roc:8,role:[1,3,4,6,12],room:[1,16],root:[1,3,5,7,15],rot:[],rotat:[2,6,7,8],rotation_matrix:7,roughli:2,round:[1,5,7],routin:[5,13],row:[1,2,3,4,5,7,9,13],rrr:3,rthe:3,rug:5,rule:[1,2,3],run:[0,1,2,3,4,5,6,7,9,12],runtim:[0,2,4],runtimewarn:2,rust:[1,12,13],rvert:2,rvert_2:2,rwidth:4,s_i:5,saddl:5,safe:15,sai:[0,1,2,3,4,5,6,7,8,9,10,13,15],said:[4,5,7],sake:[1,3,5,9],sale:1,sam:[],same:[0,1,2,3,4,5,6,7,9,10,13,15],samm:8,sampl:[0,1,2,3,4,5,6,7,8,12,13],sample_vari:0,sampleexptvari:15,samwis:[],sanitize_sequ:4,sastri:9,satisfactori:1,satisfi:[2,4,5,6,13,15],satur:[2,4],save:[1,4,5,7],save_fig:[1,4,5,7,8],savefig:[1,4,5,7,15],saw:3,scalabl:8,scalar:[3,4,8],scale:[1,2,3,5,6,7,8,9,10,12,16],scaler:[1,5,6,7,8,9],scan:[3,5],scari:3,scatter:[0,1,2,4,5,6,7],scenario:5,scheme:[2,5],schrage:15,scienc:[1,2,5,8,10,12,14,15,17],scientif:[1,12],scientist:[0,1],scikit:[3,6,7,8,12,13,14,17],scikitlearn:1,scikitplot:[5,8],scipi:[1,3,5,12,13],score:[1,2,4,5,7,8,9,16],scores_kfold:4,scratch:2,sdg:5,seaborn:[1,2,5],seamless:[1,12],search:[1,2,3,5,7],sec:4,second:[0,1,3,4,5,6,7,9,10,12,13,15],secondeigvector:9,secondli:10,section:[0,9,11,13,14,15],sector:1,see:[0,1,2,3,4,5,6,8,9,10,12,13,14,15],seed:[0,1,2,3,4,5,6,7,9,15],seek:[2,6],seem:2,seemingli:1,seen:[1,2,3,8,10,15],segment:5,seldomli:1,select:[2,3,4,6,7,8,9,14,17],self:[2,3,4,15,17],semest:[5,14],semi:[5,6],send:[3,10,16],senior:14,sens:[1,4,6],sensit:[1,3,4,7],sentenc:10,separ:[0,1,2,4,6,7,10,12,15],sequenc:[0,5,7,8,10,12,13,15],sequenti:[2,8,10,15],seri:[1,2,3,5,8,9,10,13,14],serif:[1,5,15],serv:[1,2,3,5,17],session:[2,14],set:[0,2,3,4,5,6,8,9,12,13,15],set_:4,set_label:4,set_stream:3,set_tick:[2,6],set_ticklabel:2,set_titl:[0,1,2,5,10],set_xlabel:[1,2,5,10],set_xlim:[5,10],set_xticklabel:2,set_ylabel:[1,2,5],set_ylim:[5,10],set_ytick:5,set_yticklabel:2,setiosflag:15,setminu:4,setosa:[6,7],setosa_or_versicolor:6,setp:4,setprecis:15,setse:3,setup:[2,3,6,12],setw:15,sever:[1,3,4,5,6,7,9,10,12,13,14,15],sgd:2,sgd_clf:6,sgdclassifi:6,sgdreg:5,sgdregressor:5,sgn:3,shape:[0,1,2,3,4,5,6,7,8,9,13],share:2,she:5,shift:[2,10,15],shire:[],shortcom:5,shorter:15,shorthand:[],shortli:13,should:[0,1,3,4,6,7,9,10,13],show:[0,1,2,3,4,5,6,7,8,9,10,13,15],shown:[1,3,5,6,9,10,15],showpoint:15,shrink:[3,6,9],shrinkag:3,shrunk:9,shuffl:[1,2,4],side:[1,3,5,6,10,13],sigh:12,sigma0:15,sigma1:15,sigma2:15,sigma:[1,2,3,4,5,8,9,10,13,15],sigma_0:3,sigma_1:3,sigma_2:3,sigma_:[3,13,15],sigma_fn:[5,10],sigma_i:[1,3],sigma_j:3,sigma_m:15,sigma_n:[9,15],sigma_x:15,sigmoid:[2,5,6,8,10],sigmundson:16,sign:[2,5,6,8,15],signal:[2,8,10],signific:2,significantli:[2,5,15],sim:[3,4,15],similar:[0,1,2,3,4,5,6,7,8,9,12,13],similarli:[1,2,3,6,8,15],simpl:[0,2,3,4,6,8,9,10,12,13],simplepredict:8,simpler:[0,1,2,3,12],simplest:[0,1,2,7,8,10],simpletre:8,simpli:[1,2,3,4,6,7,8,9,10,12,13,15],simplic:[0,3,5,6,7,8,9,10],simplicti:3,simplifi:[1,4,7,12],simplist:15,simul:[4,15],simultan:4,sin:[1,2,7,10,13],sinc:[1,2,3,4,5,6,7,8,9,13,15,17],sine:10,singl:[2,3,5,6,7,10,13,15],singular:[1,4,5,13],site:[1,2,4,5,6,9,14],situat:[1,3,5],six:15,size:[1,2,3,4,5,6,7,8,9,13,15],sketch:8,ski:7,skill:1,skip:9,skl:1,sklearn:[1,2,3,4,5,6,7,8,9],skplt:[5,8],slack:6,slice:13,slide:[1,15],slight:4,slightli:[2,3,4,8,15],slope:[6,9,10],slow:[1,5,6],slower:[3,13],slowli:10,slp:2,small:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],smaller:[1,2,3,4,5,6,7,9,15],smallest:[0,1],smallest_row_index:0,smart:4,smooth:[1,5],sne:9,sneak:1,sns:[1,2,5],soar:4,social:1,soft:[2,5,8,10],soften:6,softmax:5,softwar:[1,6,12,13,14],sol:6,sole:1,solid:[1,5],solitem:3,soltyp:3,solut:[1,2,3,4,5,6,8,9,13,15],solutionsummari:3,solv:[1,2,3,6,8,9,10,13],solver:[3,5,6,7,8,9,13],some:[0,1,2,3,4,6,7,8,9,10,13,15],someth:[1,2,5,7,9,15],sometim:[0,1,2,9,10],soon:13,sophist:1,sopt:5,sort:[3,4,7,9,15],sound:3,sourc:[0,1,2,4,12,13,15],space:[0,1,2,3,5,6,7,9,10,15],span:[1,3,7,9,13],spare:2,spars:[3,13],sparse_mtx:13,sparsiti:8,spatial:[2,10],spdiag:3,speak:15,special:[4,5,8,10,13,15],specif:[1,2,3,4,5,6,7,9,10,12,13,15],specifi:[0,1,3,4,5,7,9,15],specifici:[1,8],spectral:2,speech:[1,2,10],speed:2,spend:15,sphere:1,spite:1,spline:6,split:[0,2,3,4,6,7,8,9,15],splitter:[2,8],spmatrix:3,spontan:15,spread:[1,9,15],springer:17,sqquar:3,sqrt:[1,3,4,5,6,8,9,15],squar:[0,2,4,5,6,7,9,12,13,15],squarederror:8,squaredeuclidean:0,squash:10,srand:15,stabil:3,stabl:[1,3,5,7,9,12],stack:4,stage:[3,5],stai:[1,3,9],stand:[1,3,7,10],standard:[1,2,3,4,6,8,10,13],standardscal:[1,5,6,7,8,9],stanford:5,start:[0,1,2,3,4,5,6,7,8,9,10,13,15],start_tim:0,startpoint:15,stat:4,state:[0,2,3,5,6,8,9,10,12,15],statement:[1,5,13],statis:[],statist:[0,1,2,5,7,8,9,10,13,14,17],statu:[1,5,9],std:[1,4,15],stdev:15,stdout:3,steep:5,step:[0,1,2,7,8,9,10,13,15],step_fn:[5,10],step_length:5,steps_list:7,stian:16,still:[3,4,5,9,15],stimuli:10,stk2100:17,stk4021:17,stk4051:17,stk5000:17,stk:17,stochast:[1,2,3,4,6,9,10],stoke:10,stone:[1,5],stop:[0,2,7,9,15],storag:3,store:[1,2,5,9,15],str:2,straight:[1,4,5,6],straightforward:[1,3,4,5,6,7,8,13],strategi:[1,2,7],stratifi:4,streamtyp:3,strength:[0,1,3],stretch:9,strict:[5,6],strictli:[5,6],string:[2,15],stroke:5,strong:[7,8,10,15],strongli:[1,6,12,13],stronli:1,structur:[0,1,2,4,7,8,10,12],stuck:[2,5],student:[1,14,16,17],studi:[0,1,3,5,6,9,10,12,17],studier:17,style:[1,5,7],sub:[7,10],subdivid:[1,13],subfield:1,subject:[3,6,15],subplot:[0,1,2,4,5,6,7,8],subplots_adjust:[6,15],subprogram:13,subract:1,subroutin:1,subscript:2,subsequ:[2,3,4,10,13,15],subset:[2,4,5,7,10,12],subspac:[1,6,9],substanti:[7,8],substep:9,substitut:[4,10,13],subsubset:7,subtl:2,subtract:[1,3,4,9,13,15],subtre:7,succeed:1,success:[5,7,15],successfulli:7,sucess:15,sudo:[1,12],suffer:[1,2,3,8],suffici:[2,4,5,6,9],suggest:[2,5,17],suit:[6,10],suitabl:[1,15],sum:[0,1,2,3,4,5,6,7,8,9,10,15],sum_:[0,1,2,3,4,5,6,7,8,9,10,13,15],sum_i:[3,4,5,6],sum_k:[6,10,13],summar:[0,3,4,7],summari:[0,2,8,14],summat:[],sunni:7,superscript:[2,10],supervis:[1,3,4,5,7,10,12],supplement:5,support:[1,2,7,8,9,12],suppos:[1,3,4,5,6,8,9,10,13],suppress:3,sure:2,surfac:1,surpris:1,surround:12,survei:[1,3],svc:[6,7,8],svd:[1,4,9],svdinv:3,svm:[6,7,8,9],svm_clf:[6,8],swath:3,symbol:[2,3,9,12,15],symmeteri:2,symmetr:[1,3,5,6,9,10,13],sympi:[1,12],synonim:15,syntax:[2,13],syntaxerror:[2,6,13],syrk:3,sys:[3,5],system:[1,2,3,5,7,8,10,12,13,17],systemat:[4,15],t_0:[5,7],t_1:5,t_b:8,t_i:[2,10],t_j:[3,10],t_k:7,tabl:[7,15,16],tabul:1,tabular:[],tackl:0,tag:[0,3,5,10,13,15],taht:1,tail:15,tailor:[6,9],taiwan:1,take:[0,1,2,3,4,5,6,7,8,9,10,12,13,15],taken:[1,2,4,8,13],tangent:[2,5,10],tanh:[2,5,6,10],target:[1,2,3,5,6,7,8,9,10],target_nam:7,task:[0,1,2,3,4,7,9,10],tau:[3,15],tax:1,taylor:5,taylornr:5,team:2,teaser:1,technic:[0,1,3],techniqu:[1,2,6,8,12,15,17],technolog:[1,2],tek5040:17,tell:[1,4,5,8,9,15],temp1:2,temp2:2,temp:2,temperatur:[1,7],temporarili:2,ten:[],tend:[0,3,4,6,7,8,10],tendenc:1,tension:4,tensorflow:[0,1,6,12,13,14,17],term1:[3,9],term2:[3,9],term3:[3,9],term4:[3,9],term:[0,1,2,3,4,5,6,7,8,9,10,15],termin:[1,3,7,8],test:[3,4,5,6,7,8,15],test_accuraci:2,test_data:0,test_ind:4,test_pr:2,test_predict:2,test_scor:[5,8],test_siz:[1,2,3,4,8],test_split:7,tester:[],testerror:[1,4],text:[1,2,3,5,6,7,9,13,15,17],textual:7,textur:2,than:[1,2,3,4,7,8,9,10,12,15],thats:0,theano:[2,12],thei:[0,1,2,3,4,5,6,7,9,10,13,15],them:[1,2,5,6,7,8,9,10,13],theme:1,themselv:[1,15],thenc:4,theorem:[4,5],theoret:[1,8],theori:[1,2,5,6,7,10,12,17],thereaft:[1,4,9,10,13],therebi:[1,3,5,9,15],therefor:[1,2,4,5,6,9,15],therein:9,thereof:[1,4,5],theta:[2,4,5,15],theta_:2,theta_i:2,theta_k:15,theta_linreg:5,thi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17],thing:[0,1,2,3,5,7,15],think:[0,1,2,4,5,7,10,15],third:[1,5],thirti:5,thorough:0,those:[0,3,6,7,8,9,13,14],though:[2,13,15],thought:[0,4,15],thousand:[1,2],three:[1,2,3,4,6,7,10,13,14,16],threshold:[2,5,7,8,9,10],through:[0,1,2,3,5,6,9,10,12,13,15],throughout:[0,1,3,12,13,15],thu:[1,2,3,4,5,6,8,9,10,15,16],thumb:1,thursdai:14,tibshirani:[14,17],ticker:[5,15],tight_layout:[2,5],tightli:9,tild:[1,3,4,9,15],till:[1,5,6,7,8,10,13],time:[0,1,2,3,4,5,6,7,8,9,10,13,14,15],timefunct:15,tini:2,tip:11,titl:[1,2,4,5,6,7,8,15],to_categor:2,to_categorical_numpi:2,to_numer:[1,4],to_str:15,togeth:[1,6,9],toi:0,toler:0,tomographi:10,too:[1,3,4,5,7,9,15,17],took:6,tool:[0,1,2,4,12,15],toolbox:6,top:[1,3,4,7,8,12],topic:[0,1,3,5,6,12,17],topolog:[2,10],toss:8,total:[0,1,2,4,5,6,8,9,10,15,16],totalclustervari:0,totalscatt:0,totalvari:15,toward:[2,5,10],town:1,tpng:7,traceback:[4,5,7,8],track:[0,5,13],tract:1,tractabl:1,trade:[3,4,7],tradeoff:[1,3,14],tradit:[1,2,4],train:[3,4,5,6,7,8,9,10],train_accuraci:[1,2],train_end:[1,2],train_ind:4,train_pr:2,train_siz:[1,2],train_test_split:[1,2,3,4,5,7,8,9],train_test_split_numpi:[1,2],trainerror:1,trainingerror:4,trait:1,tran:3,transfer:7,transform:[1,3,4,5,6,7,8,9,10,12,13],transit:10,translat:[2,8],transpos:[2,3,9],treat:[1,2,4,5,10,15],tree:[1,2,12,14],tree_clf:[7,8],tree_clf_:7,tree_clf_sr:7,tree_reg1:7,tree_reg2:7,tree_reg:7,trend:15,trevor:17,tri:7,triain:1,trial:[1,4,5,15],triangl:5,triangular:13,trick:[6,9,15],trickier:15,tridiagon:13,trillion:12,trivial:[1,2,3,9,15],troubl:[1,6,10],true_divid:2,true_fun:4,tucker:6,tumor:[5,7],tumour:5,tunabl:2,tune:[7,13],turn:[1,2,3,4,5,6,7,8,9,10,13,15],tutori:2,tweak:[2,8,15],twice:5,twist:9,twister:15,two:[0,1,2,3,4,5,7,8,9,10,13,14,15,17],tx_1:5,type:[1,2,4,5,6,8,13,15],typeerror:[],typic:[1,2,3,5,7,8,10,15],u_i:10,u_m:8,ubuntu:[1,12],uci:1,uio:[16,17],unari:13,unbalanc:[4,7],unbias:[1,3,4,15],uncertainti:[1,3],uncertitud:15,unchang:2,uncorrel:8,undefin:3,under:[1,2,3,4,5,8,12],underdetermin:1,underfit:[2,4],underflowproblem:3,undergo:3,undergradu:14,underli:[1,2,5,7,15],underset:0,understand:[0,1,2,3,5,8,12],understood:[0,6],undesir:6,undetermin:[3,6],unexpect:[4,15],unexpected:15,unfortun:[2,6,7,8],unicode_liter:[6,7],uniform:[1,2,3,5,9],uniform_real_distribut:15,uniformli:[5,15],unifrompdf:15,unimport:5,union:[3,4],uniqu:[0,1,4,5,13],unique_cluster_label:0,unit:[1,2,3,8,10,15],unitari:[3,13],unitarili:13,uniti:15,univari:15,univers:[1,2,5,14,16],unix:2,unknow:[1,13],unknown:[1,2,3,4,6,8,13],unknowwn:10,unlabel:2,unless:[1,4,5,9],unlik:[2,5,6,15],unnecessarili:7,unravel:2,unrol:9,unseen:[5,7],unstabl:2,unsupervis:[1,2,10,12,14],unsymmetr:13,until:[0,2,5,7,10,15],unusu:10,updat:[0,2,4,8,10],upload:[12,17],upon:[2,9,13],upper:[1,6,7,13],uppercas:[13,15],ups:[],usag:[1,6,12,15],usd10000:1,usd:1,use:[0,1,3,4,5,6,7,8,9,10,12,13,14],usecol:1,used:[0,1,2,3,4,6,7,8,9,10,12,13,15,17],useful:[1,2,3,4,5,7,9,10,12,13,15,17],useless:2,user:[1,2,5,6,9,12,13],uses:[1,2,3,4,7,9,10,13,15],usetex:15,using:[0,2,3,4,6,7,8,9,10,13],usr:15,usual:[0,1,5,10],util:[0,2,4,5,8],v_0:9,valid:[1,2,5,7,8,12,14,15],valu:[0,1,2,4,5,6,7,8,10,12,13],valuat:7,valueerror:[],van:1,vandenbergh:[5,6],vandermond:1,vanilla:[1,9],vanish:[2,5,15],var_x:15,varabl:6,varepsilon:[3,4],varepsilon_:[3,4],varepsilon_i:[3,4],vari:[1,2,4,8],variabl:[0,1,2,3,4,6,8,9,10,13],varianc:[0,1,2,3,5,7,8,9,12,13,14],variance_i:[3,9],variance_x:[3,9],variant:[1,2,4,5,6,10],variat:9,varieti:[1,10,12],variou:[2,3,5,6,7,9,10,12,13,15],vartempvec:15,varvec:15,vaue:2,vdot:5,vec:[4,15],vector:[0,1,2,3,4,5,7,8,9,12],vector_mean:0,ventur:[1,6,12],verbos:2,veri:[0,1,2,3,4,5,6,7,8,9,10,15,17],verifi:[9,13],versatil:6,versicolor:[6,7],version:[0,1,8,12,13,15],versu:2,vert:[1,2,3,5,6,7,9],vert_1:3,vert_2:[3,9],vertic:4,via:[1,3,4,5,6,7,8,9,10,12,13,14,15],vidal:9,video:[1,2,5,10,12,14],view:[2,3,10,15,17],violat:6,virginica:7,viridi:[1,2],virtual:2,vision:1,visual:[1,9,10,12],visualis:2,viz:[6,15],vmax:2,vmc:15,vmin:2,volum:1,vote:8,voting_clf:8,votingclassifi:8,votingsimpl:8,vstack:[3,9,13,15],w_1:[6,13],w_1x_1:6,w_1x_:6,w_2:[6,13],w_2x_2:6,w_2x_:6,w_3:13,w_4:13,w_i:[2,8],w_ix_i:10,w_j:13,w_m:13,w_px_:6,w_px_p:6,wai:[0,1,2,3,4,5,6,8,9,10,11,13,15],walk:7,walker:15,wang:1,want:[0,1,2,3,4,5,6,7,8,9,10,12,15],warn:[1,2,6],warrant:4,watch:12,wavelet:6,weak:[0,7,8],weather:[2,10],web:[12,14],websit:[13,14],wedg:[6,15],wednesdai:14,wee:9,week:[3,5],weekli:[12,17],weight:[1,2,4,5,7,8,10,15],welcom:[6,12],well:[1,2,3,4,5,6,7,8,10,12,13,15,17],went:6,were:[0,1,2,3,4,5,6,8,9,10,15],wessel:1,what:[0,2,3,4,5,6,7,8,9,10,12,13,14],when:[0,1,2,3,4,6,7,8,9,10,13,15],whenev:15,where:[0,1,2,3,4,5,6,7,8,9,10,12,13,15,16],wherea:[4,15],wherein:[2,10],whether:[1,3,5,7,15],which:[0,1,3,4,5,6,7,8,9,10,12,13,14,16],whichev:2,white:7,who:[1,14],whole:[0,2,3,7,9],whose:[1,4,8,15],whow:[3,9],why:[1,2,5],wide:[1,2,4,5,10,12,13],widehat:4,width:[1,6,7],wieringen:1,win:8,wind:7,wing:16,wiscons:5,wisconsin:8,wise:[1,2,3,10],wish:[0,1,3,5,6,9,13],with_std:1,within:[0,1,5,7,10,15,17],withinclust:0,without:[1,2,3,5,6,7,9,10],won:1,wonder:6,word:[0,1,2,3,15],work:[0,1,2,4,5,6,7,12,14,15],world:[1,6],worldwid:1,wors:[1,2,4],worth:7,would:[1,2,3,4,5,6,7,8,9,10,13,15],wrap:13,write:[1,2,3,5,6,10,11,13,14,15],written:[1,3,5,9,10,12,13,15],wrong:[2,6],wrongli:[8,15],wrote:[3,9],wrt:8,wth:8,www:[12,13,17],wx_1:6,x0s:6,x1_exampl:6,x1d:6,x1s:[6,7,8],x2d:[6,9],x2d_train:9,x2dsl:9,x2s:[6,7,8],x3s:6,x_0:[1,3,9,13],x_1:[1,3,4,5,6,7,8,9,13,15],x_2:[1,3,4,5,6,7,8,9,13,15],x_3:[6,13,15],x_4:13,x_center:9,x_data:2,x_data_ful:2,x_i:[0,1,2,3,4,5,6,7,8,9,10,13,15],x_ix_:1,x_iy_i:6,x_j:[1,6,7,10,15],x_jy_j:6,x_k:[0,10,13,15],x_l:15,x_m:[10,13,15],x_n:[1,4,5,6,9,10,13,15],x_new:[7,8],x_p:[5,7],x_poli:7,x_poly10:7,x_reduc:9,x_scale:6,x_test:[1,2,3,4,5,7,8,9],x_test_scal:[1,5,7,8,9],x_train:[1,2,3,4,5,7,8,9],x_train_scal:[1,5,7,8,9],x_val:2,xarrai:12,xavier:2,xbnew:5,xcode:[1,12],xdclassiffierconfus:8,xdclassiffierroc:8,xg_clf:8,xgb:8,xgbclassifi:8,xgboost:7,xgboot:8,xgbregressor:8,xgparam:8,xgtree:8,xi_1:6,xi_:6,xi_i:6,xlabel:[1,2,3,4,5,6,7,8,15],xlim:[4,8],xmesh:5,xnew:[1,5],xpanda:1,xpd:[3,9],xplot:1,xscale:1,xsr:7,xt_x:5,xtest:4,xtick:[4,6,7],xtrain:4,xytext:6,y_0:[1,3,9,13],y_1:[1,3,5,6,7,9,13],y_1y_1:6,y_1y_1k:6,y_1y_2:6,y_1y_2k:6,y_1y_n:6,y_1y_nk:6,y_2:[1,3,6,7,9,13],y_2y_1:6,y_2y_1k:6,y_2y_2:6,y_2y_2k:6,y_3:[1,7,13],y_4:13,y_data:[1,2,3],y_data_ful:2,y_decis:6,y_fit:1,y_i:[1,2,3,4,5,6,7,8,9,10,13],y_if_:8,y_ix_:1,y_ix_i:[5,6],y_iy_jk:6,y_j:[4,6,10],y_k:10,y_m:13,y_model:[1,3],y_n:[5,6],y_ny_1:6,y_ny_1k:6,y_ny_2:6,y_ny_2k:6,y_ny_n:6,y_ny_nk:6,y_plot:7,y_pred1:7,y_pred2:7,y_pred:[1,2,4,5,6,7,8],y_pred_rf:8,y_pred_tre:8,y_proba:[5,8],y_test:[1,2,3,4,5,7,8,9],y_test_onehot:2,y_test_predict:1,y_train:[1,2,3,4,5,7,8,9],y_train_onehot:2,y_train_predict:1,y_val:2,year:[1,12],yes:[4,5],yet:[1,2,4,6,9],yield:[0,1,3,4,5,6,8,10,13,15],ylabel:[1,2,3,4,5,6,7,8,15],ylim:4,ymesh:5,yoshua:[2,17],you:[0,1,2,3,4,5,6,7,8,9,12,13,15,17],young:1,your:[0,2,4,5,6,9,12,13,15],yourself:[5,9],youtub:12,ypred:4,ypredict2:5,ypredict:[1,5],ypredictlasso:3,ypredictol:3,ypredictridg:3,yridg:1,ytest:4,ytick:[4,6,7],ytild:[1,4],ytildelasso:3,ytildenp:1,ytildeol:3,ytilderidg:3,ytrain:4,z_0:13,z_1:13,z_2:13,z_c:2,z_h:2,z_i:[2,10],z_j:[2,10],z_k:10,z_m:2,z_mod:7,z_o:2,zaman:15,zero:[0,1,2,3,4,5,6,7,8,9,10,13,15],zm_h:1,zone:1},titles:["11. Clustering Analysis","3. Linear Regression","13. Building a Feed Forward Neural Network","4. Ridge and Lasso Regression","5. Resampling Methods","6. Logistic Regression","7. Support Vector Machines, overarching aims","8. Decision trees, overarching aims","9. Ensemble Methods: From a Single Tree to Many Trees and Extreme Boosting, Meet the Jungle of Methods","10. Basic ideas of the Principal Component Analysis (PCA)","12. Neural networks","Content in Jupyter Book","Applied Data Analysis and Machine Learning, FYS-STK3155/4155 at the University of Oslo, Norway","2. Linear Algebra, Handling of Arrays and more Python Features","Teaching schedule with links to material","1. Elements of Probability Theory and Statistical Data Analysis","Teachers and Grading","Textbooks"],titleterms:{"2021":16,"4155":12,"case":[5,6,8,15],"final":[5,10],"function":[1,2,5,6,8,9,10,15],"import":[3,13,15],And:5,Eye:8,FYS:12,OLS:3,The:[0,1,2,3,4,5,6,7,9,10,12,15],Useful:12,Using:5,activ:[2,10],actual:15,adaboost:8,adapt:8,adjust:2,again:7,aim:[6,7],algebra:13,algorithm:[0,7,8,9,10],algortithm:5,all:6,analys:3,analysi:[0,1,3,9,12,15],ani:5,anoth:7,appli:12,approach:[1,5,6],approxim:10,architectur:2,arrai:13,assist:16,august:14,autocorrel:15,back:[2,9,10],background:12,bag:8,basic:[0,1,3,5,7,8,9,13],batch:2,bay:3,befor:9,better:[6,15],bia:4,binari:2,binomi:15,bird:8,block:15,book:11,boost:8,bootstrap:[4,8,15],boston:1,breast:2,brief:5,bring:10,build:[2,7],calcul:15,cancer:[2,5,7,9],cart:7,central:[5,12,15],chain:10,chang:8,chi:1,choos:2,classic:9,classif:[2,7,8],classifi:6,clip:2,cluster:0,code:[0,1,2,3,5,7,9,10,15],collect:2,compar:8,complex:1,compon:9,comput:[5,7,15],con:7,concept:15,condit:5,conjug:5,content:11,continu:15,convex:[5,6],convolut:10,correl:[9,15],correspond:5,cost:[2,5,8],cours:[12,17],covari:[3,9,15],cross:4,cumul:15,cython:[],data:[1,2,5,7,9,12,15],dataset:2,decemb:14,decis:[7,8],decomposit:[3,9,13],deep:2,defin:2,definit:15,degre:1,demonstr:15,dens:1,deriv:[3,5,10],descent:[5,8],develop:2,deviat:15,diagon:9,dice:15,differ:[5,6],dimension:6,disadvantag:7,discret:15,disguis:15,distribut:[3,15],doing:2,domain:15,down:2,dropout:2,economi:[],element:[1,15],elimin:13,ensembl:8,entropi:7,environ:1,equat:[1,5,10],error:[1,8],etc:[],evalu:2,event:15,exampl:[1,2,5,6,7,8,15],exercis:1,expect:15,experi:15,explor:1,exponenti:15,express:5,extend:5,extrem:8,fall:16,famili:2,famou:15,fantast:[],featur:[7,13],feed:[2,10],fine:2,first:[5,10],fit:[1,8],forest:8,forward:[2,10],frank:[],freedom:1,frequentist:1,fridai:5,from:[3,8,10],further:3,gaussian:[13,15],gener:[7,15],geometr:[5,9],gini:7,good:1,grade:16,gradient:[2,5,8],handl:13,has:12,hessian:5,homework:5,hous:1,how:15,hyperparamet:2,hyperplan:6,id3:7,idea:[0,9],ideal:5,implement:[2,15],implic:3,improv:2,increment:9,index:7,inform:16,instal:12,instructor:16,interpret:[3,5,9],introduc:9,introduct:[1,4,12,13],invers:[3,13],iter:[5,8],its:15,jackknif:15,julia:[],jungl:8,jupyt:11,kera:2,kernel:[6,9],lagrangian:6,lasso:3,later:3,layer:[2,10],learn:[1,2,5,9,12],least:3,level:8,librari:12,likelihood:5,limit:[2,5,15],linear:[1,6,13],link:[3,9,14,17],logist:5,loss:5,machin:[1,5,6,12],main:15,make:[1,7,8],mani:[8,10],materi:14,math:3,mathemat:[3,6],matric:3,matrix:[2,3,5,9,10,13,15],matter:1,mean:[0,1,15],meet:[3,8,15],mercer:6,mersenn:15,method:[4,5,7,8,15],mlp:10,model:[1,2,10],moment:15,moon:[6,7],more:[0,5,13],multilay:10,multipl:2,multipli:6,name:15,need:[],network:[2,5,10],neural:[2,10],newton:5,non:6,normal:[1,2,15],norwai:12,notat:10,novemb:14,now:[2,7],nuclear:1,nueral:5,numba:[],number:[1,15],numer:15,numpi:13,numpython:0,observ:15,obtain:9,octob:14,one:[5,10],optim:[2,5,6,12],ordinari:3,organ:1,oslo:[12,17],other:[7,9,10,15],our:[0,1,3,5,9,15],outcom:12,output:15,overarch:[1,6,7],overview:8,own:[0,1,8,9],packag:13,panda:[],part:[5,12],pass:2,pca:9,pdf:15,perceptron:10,perform:[2,7],period:15,perspect:2,poisson:15,pre:2,preprocess:[],prerequisit:12,princip:9,pro:7,probabl:[3,15],problem:[2,5],procedur:7,process:2,program:5,propag:[2,10],properti:[3,15],pseudo:15,python:[0,1,7,12,13,15],quick:6,ran0:15,random:[8,9,15],raphson:5,read:7,recip:15,recurr:10,reduc:1,regress:[1,3,5,7,8],regular:2,relev:17,relu:2,remind:[4,5,6],requir:12,resampl:4,revisit:5,ridg:[3,5],rng:15,rule:10,sampl:[9,15],schedul:14,schemat:7,scikit:[1,2,5,9],select:15,semest:16,sensit:5,septemb:[5,14],set:[1,7,10],sgd:5,should:[2,15],simpl:[1,5,7,15],singl:8,singular:[3,9],situat:15,size:[],slightli:5,soft:6,softmax:2,softwar:[],solv:5,some:5,split:1,squar:[1,3,8],standard:[5,15],state:1,statist:[3,4,12,15],steepest:[5,8],step:[4,5],stk3155:12,stochast:[5,15],stop:5,supervis:2,support:6,svd:3,teach:[14,16],teacher:16,techniqu:9,technolog:12,tensorflow:2,test:[1,2],textbook:17,than:5,theorem:[3,6,9,10,15],theori:15,three:15,togeth:10,top:2,toss:15,toward:[0,9],tradeoff:4,train:[1,2],tree:[7,8],tune:2,two:[6,12],type:10,uncorrel:15,understand:[],uniform:15,univers:[10,12,17],use:[2,15],used:5,using:[1,5,15],valid:4,valu:[3,9,15],variabl:[5,15],varianc:[4,15],variou:[1,4],vector:[6,10,13],view:[1,8],visual:[2,7],wai:7,week:14,weekli:14,what:[1,15],when:5,which:[2,15],why:15,wisconsin:5,write:[0,9],xgboost:8,your:[1,8]}}) \ No newline at end of file diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1.ipynb b/doc/LectureNotes/_build/jupyter_execute/chapter1.ipynb index 48cd1e448..0dbf33b5b 100644 --- a/doc/LectureNotes/_build/jupyter_execute/chapter1.ipynb +++ b/doc/LectureNotes/_build/jupyter_execute/chapter1.ipynb @@ -6,8 +6,6 @@ "source": [ "# Linear Regression\n", "\n", - "[Video of Lecture](https://www.uio.no/studier/emner/matnat/fys/FYS-STK3155/h20/forelesningsvideoer/LectureAug21.mp4?vrtx=view-as-webpage)\n", - "\n", "\n", "## Introduction\n", "\n", @@ -15,7 +13,7 @@ "\n", "\n", "\n", - "Our emphasis throughout this series of lectures (small change) \n", + "Our emphasis throughout this series of lectures \n", "is on understanding the mathematical aspects of\n", "different algorithms used in the fields of data analysis and machine learning. \n", "\n", @@ -235,7 +233,9 @@ "\n", "## Simple linear regression model using **scikit-learn**\n", "\n", - "We start with perhaps our simplest possible example, using **Scikit-Learn** to perform linear regression analysis on a data set produced by us. \n", + "We start with perhaps our simplest possible example, using\n", + "**Scikit-Learn** to perform linear regression analysis on a data set\n", + "produced by us.\n", "\n", "What follows is a simple Python code where we have defined a function\n", "$y$ in terms of the variable $x$. Both are defined as vectors with $100$ entries. \n", @@ -301,7 +301,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -451,7 +451,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -469,7 +469,8 @@ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.linear_model import LinearRegression\n", - "\n", + "# Number of data points\n", + "n = 100\n", "x = np.random.rand(100,1)\n", "y = 5*x+0.01*np.random.randn(100,1)\n", "linreg = LinearRegression()\n", @@ -491,7 +492,8 @@ "Depending on the parameter in front of the normal distribution, we may\n", "have a small or larger relative error. Try to play around with\n", "different training data sets and study (graphically) the value of the\n", - "relative error.\n", + "relative error. Note also that **Scikit-Learn** requires a matrix as input for the input values $x$ and $y$. In the above code we have\n", + "solved this by declaring $x$ and $y$ as arrays of dimension $n\\times 1$.\n", "\n", "As mentioned above, **Scikit-Learn** has an impressive functionality.\n", "We can for example extract the values of $\\alpha$ and $\\beta$ and\n", @@ -515,18 +517,18 @@ "output_type": "stream", "text": [ "The intercept alpha: \n", - " [1.99723611]\n", + " [1.84860939]\n", "Coefficient beta : \n", - " [[5.1007125]]\n", - "Mean squared error: 0.22\n", + " [[5.2571699]]\n", + "Mean squared error: 0.25\n", "Variance score: 0.90\n", "Mean squared log error: 0.01\n", - "Mean absolute error: 0.36\n" + "Mean absolute error: 0.40\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -691,8 +693,7 @@ "metadata": {}, "source": [ "$$\n", - "H_{\\delta}(\\boldsymbol{a})=\\left\\{\\begin{array}{cc}\\frac{1}{2} \\boldsymbol{a}^{2}& \\text{for }|\\boldsymbol{a}|\\leq \\delta\\\\ \\delta (|\\b\\\n", - "m{a}|-\\frac{1}{2}\\delta ),&\\text{otherwise}.\\end{array}\\right.\n", + "H_{\\delta}(\\boldsymbol{a})=\\left\\{\\begin{array}{cc}\\frac{1}{2} \\boldsymbol{a}^{2}& \\text{for }|\\boldsymbol{a}|\\leq \\delta\\\\ \\delta (|\\boldsymbol{a}|-\\frac{1}{2}\\delta ),&\\text{otherwise}.\\end{array}\\right.\n", "$$" ] }, @@ -703,6 +704,8 @@ "Here $\\boldsymbol{a}=\\boldsymbol{y} - \\boldsymbol{\\tilde{y}}$.\n", "\n", "\n", + "\n", + "\n", "We will discuss in more\n", "detail these and other functions in the various lectures. We conclude this part with another example. Instead of \n", "a linear $x$-dependence we study now a cubic polynomial and use the polynomial regression analysis tools of scikit-learn." @@ -718,7 +721,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -735,7 +738,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.005000000000000007\n" + "0.0050000000000000044\n" ] } ], @@ -1179,6 +1182,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "Note well that we have made life simple here. We perform a fit in terms of the number of nucleons only. A more sophisticated fit can be done by including an explicit dependence on the number of protons and neutrons in the asymmetry and Coulomb terms.\n", + "\n", "With **scikitlearn** we are now ready to use linear regression and fit our data." ] }, @@ -1217,9 +1222,7 @@ "text": [ "Mean squared error: 0.04\n", "Variance score: 0.95\n", - "Mean absolute error: 0.05\n", - "[ 0.00000000e+00 7.06492086e-03 -1.73091052e-01 -1.66020213e+01\n", - " 1.17385778e+00] 15.212327334149492\n" + "Mean absolute error: 0.05\n" ] }, { @@ -1244,7 +1247,6 @@ "print('Variance score: %.2f' % r2_score(Energies, fity))\n", "# Mean absolute error \n", "print('Mean absolute error: %.2f' % mean_absolute_error(Energies, fity))\n", - "print(clf.coef_, clf.intercept_)\n", "\n", "Masses['Eapprox'] = fity\n", "# Generate a plot comparing the experimental with the fitted values values.\n", @@ -1308,7 +1310,7 @@ "270 3344 160 110 270 Ds 7.253775 7.253775\n", "\n", "[267 rows x 6 columns]\n", - "0.009883615646716182\n" + "0.009883615646716186\n" ] } ], @@ -1370,8 +1372,6 @@ "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", " warnings.warn(\n", "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", - " warnings.warn(\n", - "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", " warnings.warn(\n" ] }, @@ -1464,7 +1464,13 @@ "output_type": "stream", "text": [ "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", - " warnings.warn(\n", + " warnings.warn(\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", " warnings.warn(\n", "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", @@ -1493,14 +1499,14 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAJjCAYAAADQ22+yAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABi+ElEQVR4nO3deZyN5f/H8ddZZsY6xjJjrRDRIhUtUg0ixj6VSElUWmwRkULK2FL2SiGyU5mhLKEQqVBftCqR3Qyqsc1ylt8fd2bMz7jNMfecM8v76TGPh3OfM+e+Pue+z32u876u+x6b1+v1IiIiIiKWsQe6ASIiIiL5jTpYIiIiIhZTB0tERETEYupgiYiIiFhMHSwRERERi6mDJSIiImIxZ6AbIFKQDR8+nC1btgCwe/duKlasSKFChQBYuHBh2v8v5amnnmLAgAFUq1btoo+ZMGECV111FW3bts12u8/p2bMn3333HevWraNw4cKWPa+ISF5n03WwRHKHRo0aMWHCBGrVqhXopmTJ0aNHadOmDbVr16ZBgwY8/PDDgW6SiEiuoSFCkVxq0qRJPPHEE7Rq1Yp+/fpx7NgxnnvuOdq3b0+jRo3o1KkTx48fB4zO2c6dO/n222/p0KED/fv3p23btjRv3pxvvvkGgIEDBzJ9+nQAatWqxaRJk+jQoQONGjVi5syZALjdbkaOHEmTJk24//77efXVV+nUqVOm7Vu0aBH16tUjOjqaDz/8kPO/q23fvp127drRsmVLoqOj2bx5s+nyGjVqcOLEibTfP3f722+/pXXr1nTo0IHWrVuTkpLC8OHDadeuHc2bNycqKopt27YBcPr0aV566SWaNm1K8+bNeeuttzhz5gy33nore/bsSXvuLl26sGbNGis2kYjIRamDJZKLHTx4kCVLljB27Fg+++wzbrrpJhYuXMjatWspVKgQcXFxF/zOjh076Nq1K7GxsTz44INMnjz5gsekpKRQsmRJFixYwMSJE3nzzTdJTk5m8eLF/PTTT3z66acsWLCA/fv3Z9oul8vFokWLaN26NY0aNeL48eNs2LABgNTUVLp370737t359NNPef311xkxYgQpKSmZLvd4PKavwe+//86bb77J0qVL+emnn4iPj2fhwoUsX76c6Oho3n//fQAmTpxIcnIyy5cvJzY2lu+//56dO3fStm1bFi9eDMC+ffvYs2cPDRs29Gk7iIj4SnOwRHKxm266CafTeJt27tyZrVu38sEHH7B3715+//13ateufcHvVKhQgWuvvRaA6667jiVLlmT63Pfeey8A119/PSkpKZw5c4b169fTpk0bQkJCAGjfvj2zZ8++4HfXrl2Lx+Ph7rvvxul00rx5c2bNmkVkZCS7du3CbrfToEEDAG644QaWLVvGTz/9lOnySylfvjwVK1YE4Oabb6ZEiRJpnb9vv/2WokWLAvD111/z0ksv4XA4cDgczJkzB4CIiAgeffRR+vTpw8KFC3nwwQdxOByXXK+ISHaogyWSixUpUiTt/2+88QY7duzggQce4Pbbb8flcpHZFMrzJ8bbbLZMHwOkdaJsNhsAXq83rTN3jt2eecg9f/58kpKSuO+++wAjEUtISOD333/H4XCkPec5u3btuujyqlWrZliWkpKS4fb5r8G6deuIiYmhS5cu3HvvvVStWpWlS5cC4HQ6Mzz/4cOHKVSoEFWqVKFGjRqsXbuWZcuWpaVZIiI5SUOEInnExo0b6dy5M23btqV06dJ8/fXXuN1uS9cRGRnJ0qVLSUlJweVyZZp+7dmzh++++44lS5bwxRdf8MUXX7Bx40bq1q3LrFmzqFq1KjabjU2bNgHw008/0blz54su93g8lCpVip07dwKwevXqi7Zv06ZNNGzYkI4dO1KrVi3WrFmT9hrUq1ePJUuW4PF4SElJoVevXmlnaHbs2JExY8ZQu3ZtypYta+lrJiKSGSVYInlE9+7dGTNmDG+//TYOh4NbbrmFffv2WbqO+++/nz179tC2bVuKFClCpUqVLrj8wvz582ncuDFXXnllhuU9evTg6aefpm/fvkyaNIkRI0YwZswYgoKCmDRpEsHBwRdd/sorr/Daa68RGhrKnXfeSXh4eKbt69ChA/369aNVq1Y4HA7q1q3L559/jsfjoUePHsTExNCmTRvcbjfNmzdPS9gaNmzIK6+8QocOHSx9vURELkaXaRCRNBs3buT48eO0adMGMK7TFRISQv/+/QPcsuz5/vvvGTx4MJ9++ukFw5QiIjlBHSwRSXP06FEGDhzI8ePHcbvd1KxZk1dffZXixYsHummXbcCAAXz33XeMHj2a2267LdDNEZECQh0sERERyfOWLVvGO++8Q2pqKo8//jiPPPJIQNujOVgiIiKSpx09epRx48bxySefEBwcTIcOHbj99ttN/3xYTlMHS0RERHKNxMREEhMTL1geGhpKaGhopr/z9ddfc8cddxAWFgZA06ZNWblyJT169MjJpprK8x2shEMVA92EgLFTsCfrOgp4/QV9+3vQ7IaCKhXzq/8XBOEVDvp1fZ4j1/htXbMW98z0L1D06NGDnj17Zvo78fHxGc4+joiIYMeOHTnWxqzI8x0sERERyT86d+5MdHT0Bcsvll4BmV5QOdBnDKuDJSIiIrmG2VDgxZQtW5atW7em3Y6PjyciIsLqpvlEV3IXERERUx4//rscd955J5s3b+bEiROcPXuWzz//nHvuucfiV8E3SrBEREQkTytbtix9+vThscceIzU1lQcffJAbb7wxoG3K89fB0iT3gkuT3At2/ZrkXnBpkrv/J7knH6566QdZJKT8n35bV07SEKGIiIiIxTREKCIiIqaUGPtOCZaIiIiIxZRgiYiIiKnLPbuvIFOCJSIiImIxJVgiIiJiyp23LzgQEEqwRERERCymBEtERERM6SxC3ynBEhEREbGYOlgiIiIiFtMQoYiIiJhya4jQZ0qwRERERCymBEtERERMaZK775RgiYiIiFhMCZaIiIiY0oVGfacES0RERMRiSrBERETElP7Us++UYImIiIhYTAmWiIiImNJ1sHynBEtERETEYkqwRERExJRbAZbPlGCJiIiIWEwJloiIiJjSWYS+U4IlIiIiYjElWCIiImLKjS3QTchzlGCJiIiIWEwdLBERERGLaYhQRERETHl0mQafKcESERERsZgSLB999EkQH8cGERLs5aqrPLzQO5nQUOO+T2KdfLo8iORkGzWucTOwfzLBwYFtr9XWf+Vg2sxg7DYvxYvDwH7JVKqY/tXmaLyNp7oX4sNpZwkrEcCGWmz5KgfzFgel3T51GuITbCxbdJbSpaBp28KEl0l/HR5tn0qzJu5ANDXH/PGnjTcmBnHqtA2HHV7qm8K1NYyaO3ULITkFnP8dUaIau+nUwRXA1lrvjz9tvDkxmFOnbdjtXgb+V39KCrw5KYitPzgoUhjuqufmqcdTseejr68Fff+/2HHf7YZJbwfz3RYnbjc83D6Ftq3z135/jia5+04dLB98/4ODufODmPr2WSLCvaz83MmYNwsxfFgS6zc4+HhJMO9MOkOxYjD41UIs/CiITh1TA91syyQnw7ARIXw47SyV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/u5gSe7h7w5WbuTvDtaWfZX9tq5br9zrt3XlpHw6HU9EREQkcPL4VEQRERHJaTqL0HdKsEREREQspgRLRERETOksQt8pwRIRERGxmDpYIiIiIhbTEKGIiIiYcnuVx/hKr5iIiIiIxZRgiYiIiCmP8hif6RUTERERsZgSLBERETGlyzT4TgmWiIiIiMWUYImIiIgpnUXoO71iIiIiIhZTgiUiIiKmPJqD5TMlWCIiIiIWU4IlIiIiptzKY3ymV0xERETEYkqwRERExJTOIvSdXjERERERiynBEhEREVP6W4S+0ysmIiIiYjF1sEREREQspiFCERERMeX26kKjvlKCJSIiImIxJVgiIiJiShca9Z1eMRERERGLKcESERERUx5daNRnesVERERELKYES0RERExpDpbv9IqJiIiIWEwJloiIiJjSdbB8pwRLRERExGJ5PsEqZgsOdBMkQDx4At0ECSAHBfsbtdvrDXQTAqaILc9/dOU5+mPPvtMrJiIiImIxfQ0QERERU25dB8tnesVERERELKYES0REREx5Cvicx8uhBEtERETEYupgiYiIiFhMQ4QiIiJiSpPcfadXTERERMRiSrBERETElP7Ys+/0iomIiIhYTAmWiIiImPLojz37TAmWiIiIiMWUYImIiIgpzcHynV4xEREREYspwRIRERFTnjx6HazY2FjGjh1L6dKlAWjQoAF9+vTh0KFD9O/fn+PHj1OlShXGjh1L0aJFSUxMpF+/fuzfv59SpUoxfvx4wsPDL2vdefMVExEREbmEnTt3MnDgQOLi4oiLi6NPnz4ADBs2jI4dO7Jy5UpuuOEG3n77bQDGjx9P3bp1WbFiBe3atSMmJuay160OloiIiJhyY/PbT2JiIgcOHLjgJzEx0ed279y5k9jYWFq3bk2/fv34999/SU1NZcuWLTRt2hSA+++/n5UrVwKwbt06WrVqBUDLli3ZsGEDqampl/WaqYMlIiIiucasWbO49957L/iZNWuWz88VHh5Oz549iYuLo3z58rz22mv8/fffFCtWDKfTmfaYo0ePAhAfH582JOh0OilWrBgnTpy4rDo0B0tERERM+XMOVufOnYmOjr5geWho6EV/Z8WKFYwcOTLDsqpVqzJz5sy0208++SSNGzfmxRdfvOD3bbaLX+fLbr+82tXBEhERkVwjNDTUtDOVmaioKKKi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rlwZ6Gb5zaJFixg6dCgRERGBborfhYeHM3DgQIKDgwkKCuLqq6/m0KFDgW6W39x22218+OGHOJ1Ojh8/jtvtpkiRIoFult/8888/jBs3jmeeeSbQTfG7P//8E5vNxlNPPUXr1q2ZM2dOoJvkV6tXr6Z58+aUK1eOoKAgxo0bR+3atQPdLMmlCt5XEIvEx8cTHh6edjsiIoIdO3YEsEX+FRMTE+gmBEz16tXT/r93716WL1/OggULAtgi/wsKCmLixInMmDGDZs2aUbZs2UA3yW+GDBlCnz59OHz4cKCb4neJiYnUq1ePV199laSkJB577DGqVKlC/fr1A900v/jrr78ICgriiSeeICEhgYYNG/L8888HulmSSynBukxer/eCZTabLQAtkUD5/fff6dq1KwMGDKBy5cqBbo7f9erVi82bN3P48GEWLVoU6Ob4xeLFiylfvjz16tULdFMC4uabb2bMmDEUKVKEUqVK8eCDD7J+/fpAN8tv3G43mzdv5o033mDRokXs3LmTJUuWBLpZkkupg3WZypYty7Fjx9Jux8fHF8jhsoJq27ZtPP7447zwwgtER0cHujl+tXv3bn755RcAChcuzH333cdvv/0W4Fb5x/Lly9m0aRNt2rRh4sSJfPHFF4wYMSLQzfKbrVu3snnz5rTbXq+3QM3FKlOmDPXq1aNUqVIUKlSIe++9t0CNXIhv1MG6THfeeSebN2/mxIkTnD17ls8//5x77rkn0M0SPzh8+DDdu3dn7NixtGjRItDN8bsDBw7wyiuvkJKSQkpKCmvXrqVOnTqBbpZffPDBB3z66afExcXRq1cvGjVqxKBBgwLdLL85efIkY8aMITk5mVOnTrFkyZICc3IHQMOGDdm4cSOJiYm43W6++uorrr/++kA3S3KpgvPVw2Jly5alT58+PPbYY6SmpvLggw9y4403BrpZ4gfTp08nOTmZUaNGpS3r0KEDDz/8cABb5T+RkZFs376dtm3b4nA4uO+++wpkR7MgatiwYdq293g8dOzYkZtvvjnQzfKb2rVr8+STT9KxY0dSU1OpX78+DzzwQKCbJbmUzZvZZCIRERERuWwaIhQRERGxmDpYIiIiIhZTB0tERETEYupgiYiIiFhMHSwRERERi6mDJSIiImIxdbBERERELKYOloj4LCoqinvuuYfff/890E0REcmV1MESEZ99+umnVK5cmVWrVgW6KSIiuZI6WCLiM4fDQZ06dQrMH3kWEfGV/hahiPgsKSmJzz77DP2lLRGRzCnBEhGfjRs3jrJly7J//35Onz4d6OaIiOQ66mCJiE9++OEHVq5cyaRJkyhevDi7du0KdJNERHIddbBEJMuSk5N56aWXGDZsGGFhYdSsWVPzsEREMqEOlohk2YQJE7j55ptp0KABADVr1uTXX38NbKNERHIhdbBEJEt27NjBypUrGTRoUNqya6+9VgmWiEgmbF6dBiQiIiJiKSVYIiIiIhZTB0tERETEYupgiYiIiFhMHSwRERERi6mDJSIiImIxdbBERERELKYOloiIiIjF/g+IQKgMNEb4VAAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAJjCAYAAADQ22+yAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABfx0lEQVR4nO3dd3hUZd6H8XsmCU1AFAlFbKyKrmJZUVddRbARQIqKIhYQFRuIDYkoYAEFZAUEdO1gF1YBcUFUFGxYUF+xrGVRVKQkiBipKTPvH2dpC4wZcjIh4f5wzXUxZ87kPL85U575Ps85E4nH43EkSZIUmmhZN0CSJKmisYMlSZIUMjtYkiRJIbODJUmSFDI7WJIkSSGzgyVJkhSy9LJugLQjGzhwIB9++CEA8+bNY/fdd6dKlSoAPPfcc+v//0cuvfRS+vTpw7777rvVdUaOHMlee+1F+/btS9zudXr27MkHH3zAzJkzqVq1amh/V5LKu4jnwZK2Dy1atGDkyJE0adKkrJtSLEuWLKFdu3YceuihnHjiiZx77rll3SRJ2m44RChtp0aNGsXFF1/M6aefzg033MDSpUu58sorOeecc2jRogUXXHABv/zyCxB0zj777DPef/99OnXqRO/evWnfvj2tWrXivffeAyA7O5tHHnkEgCZNmjBq1Cg6depEixYtGDt2LABFRUXcddddnHLKKZxxxhnceuutXHDBBVts3/jx4znmmGPo0KEDjz/+OBt/V/v000/p2LEjbdq0oUOHDsyePTvh8saNG7Ns2bL19193/f3336dt27Z06tSJtm3bkp+fz8CBA+nYsSOtWrUiKyuLjz76CICVK1dy0003cdppp9GqVSvuueceVq1axZFHHsn333+//m9fdNFFvPbaa2HsIknaKjtY0nbs559/ZuLEiQwbNox//etfHHbYYTz33HPMmDGDKlWqMHny5M3uM3fuXLp168akSZM466yzGD169Gbr5Ofns8suu/Dss89y77338ve//521a9cyYcIEvvjiC1566SWeffZZfvrppy22q7CwkPHjx9O2bVtatGjBL7/8wptvvglAQUEBV111FVdddRUvvfQSd9xxB3feeSf5+flbXB6LxRI+Bt9++y1///vfefHFF/niiy/IycnhueeeY+rUqXTo0IGHHnoIgHvvvZe1a9cydepUJk2axMcff8xnn31G+/btmTBhAgA//vgj33//Pc2bN09qP0hSspyDJW3HDjvsMNLTg5dply5dmDNnDo899hjz58/n22+/5dBDD93sPg0aNODAAw8E4M9//jMTJ07c4t8+6aSTADjooIPIz89n1apVzJo1i3bt2lG5cmUAzjnnHJ544onN7jtjxgxisRjHH3886enptGrVinHjxtGsWTO++eYbotEoJ554IgAHH3wwU6ZM4Ysvvtji8j9Sv359dt99dwAOP/xwdt555/Wdv/fff5+ddtoJgHfffZebbrqJtLQ00tLSePLJJwHIzMzk/PPP59prr+W5557jrLPOIi0t7Q+3K0klYQdL2o5Vq1Zt/f/vvvtu5s6dy5lnnsnRRx9NYWEhW5pCufHE+EgkssV1gPWdqEgkAkA8Hl/fmVsnGt1yyP3MM8+wZs0aTj31VCBIxHJzc/n2229JS0tb/zfX+eabb7a6vFGjRpssy8/P3+T6xo/BzJkzGTRoEBdddBEnnXQSjRo14sUXXwQgPT19k7+/aNEiqlSpwj777EPjxo2ZMWMGU6ZMWZ9mSVJpcohQKifefvttunTpQvv27alduzbvvvsuRUVFoW6jWbNmvPjii+Tn51NYWLjF9Ov777/ngw8+YOLEibz++uu8/vrrvP322zRt2pRx48bRqFEjIpEI77zzDgBffPEFXbp02eryWCzGrrvuymeffQbAq6++utX2vfPOOzRv3pzOnTvTpEkTXnvttfWPwTHHHMPEiROJxWLk5+dz9dVXrz9Cs3PnzgwdOpRDDz2UunXrhvqYSdKWmGBJ5cRVV13F0KFDue+++0hLS+Mvf/kLP/74Y6jbOOOMM/j+++9p37491apVo2HDhpudfuGZZ57h5JNPZs8999xkeY8ePbjsssu47rrrGDVqFHfeeSdDhw4lIyODUaNGUalSpa0uv+WWW7j99tupWbMmxx57LHXq1Nli+zp16sQNN9zA6aefTlpaGk2bNuWVV14hFovRo0cPBg0aRLt27SgqKqJVq1brE7bmzZtzyy230KlTp1AfL0naGk/TIGm9t99+m19++YV27doBwXm6KleuTO/evcu4ZSXz8ccf069fP1566aXNhiklqTTYwZK03pIlS8jOzuaXX36hqKiIAw44gFtvvZUaNWqUddO2WZ8+ffjggw8YMmQIRx11VFk3R9IOwg6WJEkq96ZM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J554Ylk3JaXi8TjfffcdM2fOJD19x/v4+OmnnxgwYAATJkygdu3adOnShVmzZtGsWbOybpq2QyZY2+jdd9/lr3/9K7Vq1aJatWqcdtppvPzyy2XdrJQZP348AwYMIDMzs6ybknJ16tQhOzubSpUqkZGRwZ/+9CcWLlxY1s1KmaOOOorHH3+c9PR0fvnlF4qKiqhWrVpZNytlli9fzvDhw7n88svLuikp99133xGJRLj00ktp27YtTz75ZFk3KaVeffVVWrVqRb169cjIyGD48OEceuihZd0sbad2vK8gIcnJyaFOnTrrr2dmZjJ37twybFFqDRo0qKybUGb222+/9f+fP38+U6dO5dlnny3DFqVeRkYG9957L48++igtW7akbt26Zd2klOnfvz/XXnstixYtKuumpFxeXh7HHHMMt956K2vWrOHCCy9kn3324bjjjivrpqXEDz/8QEZGBhdffDG5ubk0b96ca665pqybpe2UCdY2isfjmy2LRCJl0BKVlW+//ZZu3brRp08f9t5777JuTspdffXVzJ49m0WLFjF+/Piybk5KTJgwgfr163PMMceUdVPKxOGHH87QoUOpVq0au+66K2eddRazZs0q62alTFFREbNnz+buu+9m/PjxfPbZZ0ycOLGsm6XtlB2sbVS3bl2WLl26/npOTs4OOVy2o/roo4/o2rUr119/PR06dCjr5qTUvHnz+Pe//w1A1apVOfXUU/n666/LuFWpMXXqVN555x3atWvHvffey+uvv86dd95Z1s1KmTlz5jB79uz11+Px+A41F2u33XbjmGOOYdddd6VKlSqcdNJJO9TIhZJjB2sbHXvsscyePZtly5axevVqXnnlFU444YSybpZSYNGiRVx11VUMGzaM1q1bl3VzUm7BggXccsst5Ofnk5+fz4wZMzjiiCPKulkp8dhjj/HSSy8xefJkrr76alq0aEHfvn3Lulkp8/vvvzN06FDWrl3LihUrmDhx4g5zcAdA8+bNefvtt8nLy6OoqIi33nqLgw46qKybpe3UjvPVI2R169bl2muv5cILL6SgoICzzjqLQw45pKybpRR45JFHWLt2LYMHD16/rFOnTpx77rll2KrUadasGZ9++int27cnLS2NU089dYfsaO6Imjdvvn7fx2IxOnfuzOGHH17WzUqZQw89lEsuuYTOnTtTUFDAcccdx5lnnlnWzdJ2KhLf0mQiSZIkbTOHCCVJkkJmB0uSJClkdrAkSZJCZgdLkiQpZHawJEmSQmYHS5IkKWR2sCRJkkJmB0tS0rKysjjhhBP49ttvy7opkrRdsoMlKWkvvfQSe++9N9OnTy/rpkjSdskOlqSkpaWlccQRR+wwP/IsScnytwglJW3NmjX861//wl/akqQtM8GSlLThw4dTt25dfvrpJ1auXFnWzZGk7Y4dLElJ+eSTT3j55ZcZNWoUNWrU4JtvvinrJknSdscOlqRiW7t2LTfddBO33XYbtWrV4oADDnAeliRtgR0sScU2cuRIDj/8cE488UQADjjgAL766quybZQkbYfsYEkqlrlz5/Lyyy/Tt2/f9csOPPBAEyxJ2oJI3MOAJEmSQmWCJUmSFDI7WJIkSSGzgyVJkhQyO1iSJEkhs4MlSZIUMjtYkiRJIbODJUmSFLL/B9J07RddsyZ8AAAAAElFTkSuQmCC\n", "text/plain": [ "
    " ] }, "metadata": { "filenames": { - "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter1_61_10.png" + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter1_61_11.png" } }, "output_type": "display_data" @@ -3223,13 +3229,13 @@ "output_type": "stream", "text": [ "Training R2\n", - "0.9999878260589065\n", + "0.9999869956119286\n", "Training MSE\n", - "5.415634483874318\n", + "5.745136489050356\n", "Test R2\n", - "0.999974281880048\n", + "0.9999787681537219\n", "Test MSE\n", - "11.653095390463358\n" + "9.712199063818309\n" ] } ], @@ -3761,6 +3767,135 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "## Splitting our Data in Training and Test data\n", + "\n", + "\n", + "It is normal in essentially all Machine Learning studies to split the\n", + "data in a training set and a test set (sometimes also an additional\n", + "validation set). **Scikit-Learn** has an own function for this. There\n", + "is no explicit recipe for how much data should be included as training\n", + "data and say test data. An accepted rule of thumb is to use\n", + "approximately $2/3$ to $4/5$ of the data as training data. We will\n", + "postpone a discussion of this splitting to the end of these notes and\n", + "our discussion of the so-called **bias-variance** tradeoff. Here we\n", + "limit ourselves to repeat the above equation of state fitting example\n", + "but now splitting the data into a training set and a test set.\n", + "\n", + "Let us study some examples. The first code here takes a simple\n", + "one-dimensional second-order polynomial and we fit it to a\n", + "second-order polynomial. Depending on the strength of the added noise,\n", + "the various measures like the $R2$ score or the mean-squared error,\n", + "the fit becomes better or worse." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 2.05802766 -0.30626706 5.27262964]\n", + "Training R2\n", + "0.9967292151090247\n", + "Training MSE\n", + "0.007931713723267314\n", + "Test R2\n", + "0.9966744029509663\n", + "Test MSE\n", + "0.006968283076248407\n" + ] + } + ], + "source": [ + "import os\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "\n", + "def R2(y_data, y_model):\n", + " return 1 - np.sum((y_data - y_model) ** 2) / np.sum((y_data - np.mean(y_data)) ** 2)\n", + "def MSE(y_data,y_model):\n", + " n = np.size(y_model)\n", + " return np.sum((y_data-y_model)**2)/n\n", + "\n", + "x = np.random.rand(100)\n", + "y = 2.0+5*x*x+0.1*np.random.randn(100)\n", + "\n", + "\n", + "# The design matrix now as function of a given polynomial\n", + "X = np.zeros((len(x),3))\n", + "X[:,0] = 1.0\n", + "X[:,1] = x\n", + "X[:,2] = x**2\n", + "# We split the data in test and training data\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n", + "# matrix inversion to find beta\n", + "beta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train\n", + "print(beta)\n", + "# and then make the prediction\n", + "ytilde = X_train @ beta\n", + "print(\"Training R2\")\n", + "print(R2(y_train,ytilde))\n", + "print(\"Training MSE\")\n", + "print(MSE(y_train,ytilde))\n", + "ypredict = X_test @ beta\n", + "print(\"Test R2\")\n", + "print(R2(y_test,ypredict))\n", + "print(\"Test MSE\")\n", + "print(MSE(y_test,ypredict))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively, you could write your own test-train splitting function as shown here." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], + "source": [ + "# equivalently in numpy\n", + "def train_test_split_numpy(inputs, labels, train_size, test_size):\n", + " n_inputs = len(inputs)\n", + " inputs_shuffled = inputs.copy()\n", + " labels_shuffled = labels.copy()\n", + "\n", + " np.random.shuffle(inputs_shuffled)\n", + " np.random.shuffle(labels_shuffled)\n", + "\n", + " train_end = int(n_inputs*train_size)\n", + " X_train, X_test = inputs_shuffled[:train_end], inputs_shuffled[train_end:]\n", + " Y_train, Y_test = labels_shuffled[:train_end], labels_shuffled[train_end:]\n", + "\n", + " return X_train, X_test, Y_train, Y_test" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But since **scikit-learn** has its own function for doing this and since\n", + "it interfaces easily with **tensorflow** and other libraries, we\n", + "normally recommend using the latter functionality.\n", + "\n", + "\n", + "\n", + "\n", "## Reducing the number of degrees of freedom, overarching view\n", "\n", "Many Machine Learning problems involve thousands or even millions of\n", @@ -3784,6 +3919,7 @@ "visualization.\n", "\n", "\n", + "\n", "Before we proceed however, we will discuss how to preprocess our\n", "data. Till now and in connection with our previous examples we have\n", "not met so many cases where we are too sensitive to the scaling of our\n", @@ -3791,6 +3927,15 @@ "to extreme values. Scaling the data renders our inputs much more\n", "suitable for the algorithms we want to employ.\n", "\n", + "For data sets gathered for real world applications, it is rather normal that\n", + "different features have very different units and\n", + "numerical scales. For example, a data set detailing health habits may include\n", + "features such as **age** in the range $0-80$, and **caloric intake** of order $2000$.\n", + "Many machine learning methods sensitive to the scales of the features and may perform poorly if they\n", + "are very different scales. Therefore, it is typical to scale\n", + "the features in a way to avoid such outlier values.\n", + "\n", + "\n", "**Scikit-Learn** has several functions which allow us to rescale the\n", "data, normally resulting in much better results in terms of various\n", "accuracy scores. The **StandardScaler** function in **Scikit-Learn**\n", @@ -3820,143 +3965,593 @@ "techniques.\n", "\n", "\n", - "### Simple preprocessing examples, Franke function and regression" + "Many features are often scaled using standardization to improve\n", + "performance. In **Scikit-Learn** this is given by the **StandardScaler**\n", + "function as discussed above. It is easy however to write your own.\n", + "Mathematically, this involves subtracting the mean and divide by the\n", + "standard deviation over the data set, for each feature:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "x_j^{(i)} \\rightarrow \\frac{x_j^{(i)} - \\overline{x}_j}{\\sigma(x_j)},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where $\\overline{x}_j$ and $\\sigma(x_j)$ are the mean and standard\n", + "deviation, respectively, of the feature $x_j$. This ensures that each\n", + "feature has zero mean and unit standard deviation. For data sets\n", + "where we do not have the standard deviation or don't wish to calculate\n", + "it, it is then common to simply set it to one.\n", + "\n", + "\n", + "\n", + "Let us consider the following vanilla example where we use both\n", + "**Scikit-Learn** and write our own function as well. We produce a\n", + "simple test design matrix with random numbers. Each column could then\n", + "represent a specific feature whose mean value is subracted." ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 38, "metadata": { "collapsed": false, "editable": true }, "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    01234
    0-1.7497650.3426801.153036-0.2524360.981321
    10.5142190.221180-1.070043-0.1894960.255001
    2-0.4580270.435163-0.5835950.8168470.672721
    3-0.104411-0.5312801.029733-0.438136-1.118318
    41.6189821.541605-0.251879-0.8424360.184519
    50.9370820.7310001.361556-0.3262380.055676
    60.222400-1.443217-0.7563520.8164540.750445
    7-0.4559471.189622-1.690617-1.356399-1.232435
    8-0.544439-0.6681720.007315-0.6129391.299748
    9-1.733096-0.9833100.357508-1.6135791.470714
    \n", + "
    " + ], + "text/plain": [ + " 0 1 2 3 4\n", + "0 -1.749765 0.342680 1.153036 -0.252436 0.981321\n", + "1 0.514219 0.221180 -1.070043 -0.189496 0.255001\n", + "2 -0.458027 0.435163 -0.583595 0.816847 0.672721\n", + "3 -0.104411 -0.531280 1.029733 -0.438136 -1.118318\n", + "4 1.618982 1.541605 -0.251879 -0.842436 0.184519\n", + "5 0.937082 0.731000 1.361556 -0.326238 0.055676\n", + "6 0.222400 -1.443217 -0.756352 0.816454 0.750445\n", + "7 -0.455947 1.189622 -1.690617 -1.356399 -1.232435\n", + "8 -0.544439 -0.668172 0.007315 -0.612939 1.299748\n", + "9 -1.733096 -0.983310 0.357508 -1.613579 1.470714" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", "text": [ - "MSE before scaling: 0.00\n", - "R2 score before scaling 0.99\n", - "Feature min values before scaling:\n", - " [1.00000000e+00 2.31109204e-04 5.13266452e-03 5.34114641e-08\n", - " 1.18620601e-06 2.63442451e-05 1.23438810e-11 2.74143127e-10\n", - " 6.08839750e-09 1.35216172e-07 2.85278450e-15 6.33569998e-14\n", - " 1.40708470e-12 3.12497018e-11 6.94019247e-10 6.59304755e-19\n", - " 1.46423858e-17 3.25190225e-16 7.22209371e-15 1.60394236e-13\n", - " 3.56216797e-12]\n", - "Feature max values before scaling:\n", - " [1. 0.99997737 0.9950799 0.99995475 0.99505739 0.99018401\n", - " 0.99993212 0.99503487 0.99016161 0.98531221 0.9999095 0.99501236\n", - " 0.99013921 0.98528992 0.98046438 0.99988687 0.99498985 0.9901168\n", - " 0.98526763 0.9804422 0.9756404 ]\n", - "Feature min values after scaling:\n", - " [ 0. -1.7621419 -1.74382593 -1.13803928 -1.14662074 -1.15475232\n", - " -0.89942598 -0.90825063 -0.9171356 -0.92605247 -0.76570177 -0.77317984\n", - " -0.78080633 -0.78857629 -0.79648291 -0.67708423 -0.68316185 -0.68937695\n", - " -0.69573183 -0.7022283 -0.70886748]\n", - "Feature max values after scaling:\n", - " [0. 1.71669651 1.63315151 2.21623344 2.15324631 2.088871\n", - " 2.62856593 2.5755035 2.52158335 2.46675058 2.987902 2.94034531\n", - " 2.8923 2.84372853 2.79459035 3.30968181 3.2653678 3.22076362\n", - " 3.1758506 3.13060772 3.08501147]\n", - "MSE after scaling: 0.00\n", - "R2 score for scaled data: 0.99\n" + "0 -0.175300\n", + "1 0.083527\n", + "2 -0.044334\n", + "3 -0.399836\n", + "4 0.331939\n", + "dtype: float64\n", + "0 1.069584\n", + "1 0.965548\n", + "2 1.018232\n", + "3 0.793167\n", + "4 0.918992\n", + "dtype: float64\n" ] + }, + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    01234
    0-1.5744650.2591531.1973700.1474000.649382
    10.6895190.137652-1.0257090.210340-0.076938
    2-0.2827270.351636-0.5392611.2166830.340782
    30.070889-0.6148081.074067-0.038300-1.450257
    41.7942821.458078-0.207545-0.442600-0.147420
    51.1123830.6474731.4058900.073598-0.276263
    60.397700-1.526744-0.7120181.2162900.418506
    7-0.2806471.106095-1.646283-0.956563-1.564374
    8-0.369139-0.7516990.051649-0.2131030.967809
    9-1.557795-1.0668370.401842-1.2137431.138775
    \n", + "
    " + ], + "text/plain": [ + " 0 1 2 3 4\n", + "0 -1.574465 0.259153 1.197370 0.147400 0.649382\n", + "1 0.689519 0.137652 -1.025709 0.210340 -0.076938\n", + "2 -0.282727 0.351636 -0.539261 1.216683 0.340782\n", + "3 0.070889 -0.614808 1.074067 -0.038300 -1.450257\n", + "4 1.794282 1.458078 -0.207545 -0.442600 -0.147420\n", + "5 1.112383 0.647473 1.405890 0.073598 -0.276263\n", + "6 0.397700 -1.526744 -0.712018 1.216290 0.418506\n", + "7 -0.280647 1.106095 -1.646283 -0.956563 -1.564374\n", + "8 -0.369139 -0.751699 0.051649 -0.213103 0.967809\n", + "9 -1.557795 -1.066837 0.401842 -1.213743 1.138775" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    01234
    00.00.00.00.00.0
    10.00.00.00.00.0
    20.00.00.00.00.0
    30.00.00.00.00.0
    40.00.00.00.00.0
    50.00.00.00.00.0
    60.00.00.00.00.0
    70.00.00.00.00.0
    80.00.00.00.00.0
    90.00.00.00.00.0
    \n", + "
    " + ], + "text/plain": [ + " 0 1 2 3 4\n", + "0 0.0 0.0 0.0 0.0 0.0\n", + "1 0.0 0.0 0.0 0.0 0.0\n", + "2 0.0 0.0 0.0 0.0 0.0\n", + "3 0.0 0.0 0.0 0.0 0.0\n", + "4 0.0 0.0 0.0 0.0 0.0\n", + "5 0.0 0.0 0.0 0.0 0.0\n", + "6 0.0 0.0 0.0 0.0 0.0\n", + "7 0.0 0.0 0.0 0.0 0.0\n", + "8 0.0 0.0 0.0 0.0 0.0\n", + "9 0.0 0.0 0.0 0.0 0.0" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "# Common imports\n", - "import os\n", - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", "import sklearn.linear_model as skl\n", "from sklearn.metrics import mean_squared_error\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import MinMaxScaler, StandardScaler, Normalizer\n", - "\n", - "# Where to save the figures and data files\n", - "PROJECT_ROOT_DIR = \"Results\"\n", - "FIGURE_ID = \"Results/FigureFiles\"\n", - "DATA_ID = \"DataFiles/\"\n", - "\n", - "if not os.path.exists(PROJECT_ROOT_DIR):\n", - " os.mkdir(PROJECT_ROOT_DIR)\n", - "\n", - "if not os.path.exists(FIGURE_ID):\n", - " os.makedirs(FIGURE_ID)\n", - "\n", - "if not os.path.exists(DATA_ID):\n", - " os.makedirs(DATA_ID)\n", - "\n", - "def image_path(fig_id):\n", - " return os.path.join(FIGURE_ID, fig_id)\n", - "\n", - "def data_path(dat_id):\n", - " return os.path.join(DATA_ID, dat_id)\n", - "\n", - "def save_fig(fig_id):\n", - " plt.savefig(image_path(fig_id) + \".png\", format='png')\n", + "import numpy as np\n", + "import pandas as pd\n", + "from IPython.display import display\n", + "np.random.seed(100)\n", + "# setting up a 10 x 5 matrix\n", + "rows = 10\n", + "cols = 5\n", + "X = np.random.randn(rows,cols)\n", + "XPandas = pd.DataFrame(X)\n", + "display(XPandas)\n", + "print(XPandas.mean())\n", + "print(XPandas.std())\n", + "XPandas = (XPandas -XPandas.mean())\n", + "display(XPandas)\n", + "# This option does not include the standard deviation\n", + "scaler = StandardScaler(with_std=False)\n", + "scaler.fit(X)\n", + "Xscaled = scaler.transform(X)\n", + "display(XPandas-Xscaled)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Small exercise: perform the standard scaling by including the standard deviation and compare with what Scikit-Learn gives.\n", "\n", "\n", - "def FrankeFunction(x,y):\n", - "\tterm1 = 0.75*np.exp(-(0.25*(9*x-2)**2) - 0.25*((9*y-2)**2))\n", - "\tterm2 = 0.75*np.exp(-((9*x+1)**2)/49.0 - 0.1*(9*y+1))\n", - "\tterm3 = 0.5*np.exp(-(9*x-7)**2/4.0 - 0.25*((9*y-3)**2))\n", - "\tterm4 = -0.2*np.exp(-(9*x-4)**2 - (9*y-7)**2)\n", - "\treturn term1 + term2 + term3 + term4\n", + "\n", + "Another commonly used scaling method is min-max scaling. This is very\n", + "useful for when we want the features to lie in a certain interval. To\n", + "scale the feature $x_j$ to the interval $[a, b]$, we can apply the\n", + "transformation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "x_j^{(i)} \\rightarrow (b-a)\\frac{x_j^{(i)} - \\min(x_j)}{\\max(x_j) - \\min(x_j)} - a\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where $\\min(x_j)$ and $\\max(x_j)$ return the minimum and maximum value of $x_j$ over the data set, respectively.\n", "\n", "\n", - "def create_X(x, y, n ):\n", - "\tif len(x.shape) > 1:\n", - "\t\tx = np.ravel(x)\n", - "\t\ty = np.ravel(y)\n", - "\n", - "\tN = len(x)\n", - "\tl = int((n+1)*(n+2)/2)\t\t# Number of elements in beta\n", - "\tX = np.ones((N,l))\n", - "\n", - "\tfor i in range(1,n+1):\n", - "\t\tq = int((i)*(i+1)/2)\n", - "\t\tfor k in range(i+1):\n", - "\t\t\tX[:,q+k] = (x**(i-k))*(y**k)\n", - "\n", - "\treturn X\n", "\n", "\n", - "# Making meshgrid of datapoints and compute Franke's function\n", - "n = 5\n", - "N = 1000\n", - "x = np.sort(np.random.uniform(0, 1, N))\n", - "y = np.sort(np.random.uniform(0, 1, N))\n", - "z = FrankeFunction(x, y)\n", - "X = create_X(x, y, n=n) \n", - "# split in training and test data\n", - "X_train, X_test, y_train, y_test = train_test_split(X,z,test_size=0.2)\n", + "## Testing the Means Squared Error as function of Complexity\n", "\n", "\n", - "clf = skl.LinearRegression().fit(X_train, y_train)\n", + "Before we proceed with a more detailed analysis of the so-called\n", + "Bias-Variance tradeoff, we present here an example of the relation\n", + "between model complexity and the mean squared error for the triaining\n", + "data and the test data.\n", "\n", - "# The mean squared error and R2 score\n", - "print(\"MSE before scaling: {:.2f}\".format(mean_squared_error(clf.predict(X_test), y_test)))\n", - "print(\"R2 score before scaling {:.2f}\".format(clf.score(X_test,y_test)))\n", + "The results here tell us clearly that for the data not included in the\n", + "training, there is an optimal model as function of the complexity of\n", + "ourmodel (here in terms of the polynomial degree of the model).\n", "\n", + "The results here will vary as function of model complexity and the amount od data used for training. \n", + "\n", + "\n", + "Our data is defined by $x\\in [-3,3]$ with a total of for example $100$ data points." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr0AAAHmCAYAAAB+hTZxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABXwElEQVR4nO3deZxU1Z3///e9t6q6u3qhq7qrih2kW0UFXEIiosEVEQRRNBmXSJyJS6KTRL7R6CRxRI2jSVScLGZiTOJvIk40iUIwBDFjYkIgxmWEFldQdujqBXpfqqvu74/qLrrprXqrjdfz8ch037VOneGBb4/nfI5h27YtAAAAIIOZyW4AAAAAMNIIvQAAAMh4hF4AAABkPEIvAAAAMh6hFwAAABmP0AsAAICM50h2Awbi4MEGRSKJq7BWVJSnqqr6hH3e0Y7+Thz6OnHo68SivxOHvk4c+jp+pmnI48nt8Vpahd5IxE5o6O34TCQO/Z049HXi0NeJRX8nDn2dOPT10DG9AQAAABmP0AsAAICMR+gFAABAxiP0AgAAIOMRegEAAJDxCL0AAADIeIReAAAAZDxCLwAAADJeXJtTrFmzRj/+8Y8VCoV03XXX6Zprruly/aWXXtL3v/99RSIRTZ8+Xffee69cLpdWrVqlhx56SEVFRZKkc845R8uWLRv+bwEAAICYhx/+jsrKNqutLaQ9e3Zr8uQpkqTPfOZKXXzxJXG9o76+Xvfff7ceeODhbtfOOmumSkuP63LujDPO1E033TL0xo+QfkNveXm5VqxYoeeee04ul0tXXnmlTj/9dJWWlkqSGhsbde+99+r5559XcXGxli1bpueff17/9E//pLKyMt15551auHDhiH8RAAAARH3ta3dIkvbv36cvf/kmPfnk0wN+R11drT788INerw/mncnUb+jduHGjZs2apcLCQknSvHnztG7dOv3rv/6rJMntduvll1+W0+lUY2OjqqqqVFBQIEkqKyvTzp079fjjj+u4447TXXfdpVGjRo3ctwEAAEgBfyvbrw1b9g/Lu5wuS6HWcOz4rBljdOb0MYN61549u/XQQw+otrZGWVnZWrbsdh133FStX79OTz/93zJNU2PHjtVdd92nRx/9niorK/Rv/3abHnjgobg/44orFunEE6fpww/f11133atvf/tujRpVKJcrSytW/FDf//7Dev3112QY0rx5C/S5z12nN998XT/+8fcVDkc0ZUqJvvWtewb1/frSb+gNBoPy+XyxY7/fry1btnS5x+l06pVXXtHXv/51+f1+nXXWWZIkn8+nG2+8UTNmzNAjjzyie++9Vw8/3H2IPF5FRXmDfnawfL78hH/m0Yz+Thz6OnHo68SivxOHvu5dQcFBOV3WsL2v87sKCrLj7vuWllxZlhm7/8tfvlf//u//rhNPPFHbtm3TLbfcohdffFE///l/6dlnn1VRUZFWrFihuroK3Xvvci1dulRPPPGTHt99/fWf63J822236dOf/rQsy9Tcuefpxz/+ofbs2aNdu3bqf//35xo/frxWrlypQ4eqtHbtC2ptbdW1116rU0+drsJCt/bs2a0//elPys8fmT9X/YZe27a7nTMMo9u5s88+W6+++qoeeeQRLV++XA8//LB+9KMfxa5ff/31uuCCC4bU2KqqekUi3dszUny+fFVU1CXs84529Hfi0NeJQ18nFv2dOPR136ZP8mj6JM+wvKunvo6376urGxQOR1RRUafGxkaVlZXp9tvviF2vr2/Qtm27NWvWWfrsZ/9Jn/70OTr77PNUXDxe+/fviz3bkyeeeKrbuYqKOoXDEU2YUKqKijpVVzfI4/EqK2uUKirq9Je/bNC8eQtUXd0oSTr33Av18suv6Mwz52j8+Ilqbpaamwf/58o0jV4HSfut3hAIBFRZWRk7DgaD8vv9seNDhw5pw4YNseNFixbp/fffV11dnZ588snYedu25XDEtW4OAAAAwywSicjlytKTTz4d+9/jjz+pgoJRuvXW2/Ttb39XBQUFuu++u/Tii2uH9FlZWVk9/t598NJWOBzudt9I6Df0zp49W5s2bVJ1dbWampq0fv16zZkzJ3bdtm3dfvvt2rdvnyTpD3/4g0477TS53W498cQT2rx5syTpqaee0ty5c0foawAAAKAveXl5Gj9+QizQvvba33XLLTcqHA7ryisvU2Fhoa699p910UUX64MP3pdlWbFAOlw+8YmZ+sMffq9wOKzm5matX79Op546c1g/ozf9Dr0GAgEtW7ZMS5cuVSgU0hVXXKEZM2bohhtu0Fe+8hVNnz5d9913n2666SYZhqHS0lLdc889sixLjz76qJYvX67m5mZNnjxZ3/3udxPxnQAAANCDu+/+tr73vf/Q00//txwOp+699z/k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r2nevHldzgMAAACJ1m/1hmAwKJ/PFzv2+/3asmVLr9d9Pp/Ky8t18OBB5eXlyeFwdDk/FEVFeUN6fjB8vvyEf+bRjP5OHPo6cejrxKK/E4e+Thz6euj6Db12D3XZOu900tv1/p4bjKqq+mgh7AQ52moQJhv9nTj0deLQ14lFfycOfZ049HX8TNPodZC03+kNgUBAlZWVseNgMCi/39/r9YqKCvn9fnm9XtXX1yscDnc5DwAAACRav6F39uzZ2rRpk6qrq9XU1KT169drzpw5sevjxo1TVlaW3njjDUnSqlWrNGfOHDmdTs2cOVNr167tch4AAABItLhGepctW6alS5fq0ksv1cKFCzVjxgzdcMMNKisrkyQ99NBDeuCBBzR//nw1NTVp6dKlkqS7775bzz77rBYsWKDXX39dt95664h+GQAAAKAnht3T5NsUxZzezEZ/Jw59nTj0dWLR34lDXycOfR2/Ic3pBQAAANIdoRcAAAAZj9ALAACAjEfoBQAAQMYj9AIAACDjEXoBAACQ8frdhjiVmObQtjFOl888mtHfiUNfJw59nVj0d+LQ14lDX8enr35Kqzq9AAAAwGAwvQEAAAAZj9ALAACAjEfoBQAAQMYj9AIAACDjEXoBAACQ8Qi9AAAAyHiEXgAAAGQ8Qi8AAAAyHqEXAAAAGY/QCwAAgIxH6AUAAEDGI/QCAAAg4xF6AQAAkPEIvb1Ys2aNFixYoLlz52rlypXJbk5G++EPf6iLL75YF198sb773e8muzlHhe985zu68847k92MjPfyyy9ryZIluuiii/Ttb3872c3JaKtXr479PfKd73wn2c3JSPX19Vq4cKH27NkjSdq4caMWLVqkCy+8UCtWrEhy6zLLkX39zDPPaOHChVq0aJH+7d/+Ta2trUluYXoi9PagvLxcK1as0NNPP63Vq1frmWee0bZt25LdrIy0ceNGbdiwQc8//7xWrVqlrVu36qWXXkp2szLapk2b9Pzzzye7GRlv9+7duvvuu/XYY49pzZo1euedd/TKK68ku1kZqampSffff79++ctfavXq1Xr99de1cePGZDcro2zevFlXXXWVduzYIUlqbm7WN77xDT322GNau3at3n77bf58D5Mj+/rjjz/Wz372M/3qV7/S7373O0UiET399NPJbWSaIvT2YOPGjZo1a5YKCwvldrs1b948rVu3LtnNykg+n0933nmnXC6XnE6nSkpKtG/fvmQ3K2MdOnRIK1as0Be/+MVkNyXjvfTSS1qwYIFGjx4tp9OpFStW6OSTT052szJSOBxWJBJRU1OT2tra1NbWpqysrGQ3K6M8++yzuvvuu+X3+yVJW7Zs0aRJkzRhwgQ5HA4tWrSIf04OkyP72uVyafny5crLy5NhGDruuOP45+QgOZLdgFQUDAbl8/lix36/X1u2bEliizLXscceG/t9x44dWrt2rX71q18lsUWZ7d///d+1bNky7d+/P9lNyXg7d+6U0+nUF77wBVVUVOjcc8/VrbfemuxmZaS8vDx99atf1fz585Wdna1PfepTOu2005LdrIxy//33dznu6Z+T5eXliW5WRjqyr8eNG6dx48ZJkqqrq7Vy5Uo98MADyWha2mOktwe2bXc7ZxhGElpy9Pjwww/1L//yL7rjjjs0efLkZDcnI/3617/WmDFjdMYZZyS7KUeFcDisTZs26Xvf+56effZZlZWVMa1khLz33nv67W9/qz/96U/asGGDTNPUz372s2Q3K6Pxz8nEKy8v1+c//3ldfvnlOv3005PdnLRE6O1BIBBQZWVl7DgYDMb+MwOG3xtvvKHrrrtOX/va13TZZZcluzkZa+3atfrb3/6mxYsX6/vf/75efvll/cd//Eeym5WxiouLdcYZZ8jr9So7O1vnn38+/8VohGzYsEFnnHGGioqK5HK5tGTJEv3jH/9IdrMyGv+cTKzt27frqquu0mWXXaZbbrkl2c1JW4TeHsyePVubNm1SdXW1mpqatH79es2ZMyfZzcpI+/fv1y233KKHHnpIF198cbKbk9F+8Ytf6IUXXtDq1av1la98Reedd56+8Y1vJLtZGevcc8/Vhg0bVFtbq3A4rL/+9a866aSTkt2sjDR16lRt3LhRjY2Nsm1bL7/8sqZPn57sZmW0k08+WR9//LF27typcDisF154gX9OjpD6+np94Qtf0Fe/+lX9y7/8S7Kbk9aY09uDQCCgZcuWaenSpQqFQrriiis0Y8aMZDcrI/3sZz9TS0uLHnzwwdi5K6+8UldddVUSWwUM3cknn6zrr79eV199tUKhkM4880xdfvnlyW5WRjrrrLP0zjvvaMmSJXI6nZo+fbpuvPHGZDcro2VlZenBBx/Ul7/8ZbW0tOjss8/WRRddlOxmZaTf/OY3qqys1M9//nP9/Oc/lySdd955+upXv5rklqUfw+5pYg4AAACQQZjeAAAAgIxH6AUAAEDGI/QCAAAg4xF6AQAAkPEIvQAAAMh4hF4AAABkPEIvAAAAMt7/D7vNunJDLlVlAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter1_214_0.png" + } + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from sklearn.linear_model import LinearRegression, Ridge, Lasso\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.pipeline import make_pipeline\n", + "\n", + "\n", + "np.random.seed(2018)\n", + "n = 100\n", + "maxdegree = 14\n", + "# Make data set.\n", + "x = np.linspace(-3, 3, n).reshape(-1, 1)\n", + "y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2)+ np.random.normal(0, 0.1, x.shape)\n", + "TestError = np.zeros(maxdegree)\n", + "TrainError = np.zeros(maxdegree)\n", + "polydegree = np.zeros(maxdegree)\n", + "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)\n", "scaler = StandardScaler()\n", - "scaler.fit(X_train)\n", - "X_train_scaled = scaler.transform(X_train)\n", - "X_test_scaled = scaler.transform(X_test)\n", + "scaler.fit(x_train)\n", + "x_train_scaled = scaler.transform(x_train)\n", + "x_test_scaled = scaler.transform(x_test)\n", "\n", - "print(\"Feature min values before scaling:\\n {}\".format(X_train.min(axis=0)))\n", - "print(\"Feature max values before scaling:\\n {}\".format(X_train.max(axis=0)))\n", + "for degree in range(maxdegree):\n", + " model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False))\n", + " clf = model.fit(x_train_scaled,y_train)\n", + " y_fit = clf.predict(x_train_scaled)\n", + " y_pred = clf.predict(x_test_scaled) \n", + " polydegree[degree] = degree\n", + " TestError[degree] = np.mean( np.mean((y_test - y_pred)**2) )\n", + " TrainError[degree] = np.mean( np.mean((y_train - y_fit)**2) )\n", "\n", - "print(\"Feature min values after scaling:\\n {}\".format(X_train_scaled.min(axis=0)))\n", - "print(\"Feature max values after scaling:\\n {}\".format(X_train_scaled.max(axis=0)))\n", - "\n", - "clf = skl.LinearRegression().fit(X_train_scaled, y_train)\n", - "\n", - "\n", - "print(\"MSE after scaling: {:.2f}\".format(mean_squared_error(clf.predict(X_test_scaled), y_test)))\n", - "print(\"R2 score for scaled data: {:.2f}\".format(clf.score(X_test_scaled,y_test)))" + "plt.plot(polydegree, TestError, label='Test Error')\n", + "plt.plot(polydegree, TrainError, label='Train Error')\n", + "plt.legend()\n", + "plt.show()" ] }, { @@ -4037,7 +4632,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 40, "metadata": { "collapsed": false, "editable": true @@ -4154,7 +4749,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 41, "metadata": { "collapsed": false, "editable": true @@ -4174,7 +4769,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 42, "metadata": { "collapsed": false, "editable": true @@ -4205,7 +4800,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 43, "metadata": { "collapsed": false, "editable": true diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1.py b/doc/LectureNotes/_build/jupyter_execute/chapter1.py index b828ec607..f7147cccd 100644 --- a/doc/LectureNotes/_build/jupyter_execute/chapter1.py +++ b/doc/LectureNotes/_build/jupyter_execute/chapter1.py @@ -1,7 +1,5 @@ # Linear Regression -[Video of Lecture](https://www.uio.no/studier/emner/matnat/fys/FYS-STK3155/h20/forelesningsvideoer/LectureAug21.mp4?vrtx=view-as-webpage) - ## Introduction @@ -9,7 +7,7 @@ -Our emphasis throughout this series of lectures (small change) +Our emphasis throughout this series of lectures is on understanding the mathematical aspects of different algorithms used in the fields of data analysis and machine learning. @@ -229,7 +227,9 @@ How to evaluate which model fits best the data is something we will come back to ## Simple linear regression model using **scikit-learn** -We start with perhaps our simplest possible example, using **Scikit-Learn** to perform linear regression analysis on a data set produced by us. +We start with perhaps our simplest possible example, using +**Scikit-Learn** to perform linear regression analysis on a data set +produced by us. What follows is a simple Python code where we have defined a function $y$ in terms of the variable $x$. Both are defined as vectors with $100$ entries. @@ -366,7 +366,8 @@ We can modify easily the above Python code and plot the relative error instead import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression - +# Number of data points +n = 100 x = np.random.rand(100,1) y = 5*x+0.01*np.random.randn(100,1) linreg = LinearRegression() @@ -383,7 +384,8 @@ plt.show() Depending on the parameter in front of the normal distribution, we may have a small or larger relative error. Try to play around with different training data sets and study (graphically) the value of the -relative error. +relative error. Note also that **Scikit-Learn** requires a matrix as input for the input values $x$ and $y$. In the above code we have +solved this by declaring $x$ and $y$ as arrays of dimension $n\times 1$. As mentioned above, **Scikit-Learn** has an impressive functionality. We can for example extract the values of $\alpha$ and $\beta$ and @@ -483,13 +485,14 @@ ways of dealing with outliers. The Huber cost function is defined as $$ -H_{\delta}(\boldsymbol{a})=\left\{\begin{array}{cc}\frac{1}{2} \boldsymbol{a}^{2}& \text{for }|\boldsymbol{a}|\leq \delta\\ \delta (|\b\ -m{a}|-\frac{1}{2}\delta ),&\text{otherwise}.\end{array}\right. +H_{\delta}(\boldsymbol{a})=\left\{\begin{array}{cc}\frac{1}{2} \boldsymbol{a}^{2}& \text{for }|\boldsymbol{a}|\leq \delta\\ \delta (|\boldsymbol{a}|-\frac{1}{2}\delta ),&\text{otherwise}.\end{array}\right. $$ Here $\boldsymbol{a}=\boldsymbol{y} - \boldsymbol{\tilde{y}}$. + + We will discuss in more detail these and other functions in the various lectures. We conclude this part with another example. Instead of a linear $x$-dependence we study now a cubic polynomial and use the polynomial regression analysis tools of scikit-learn. @@ -735,6 +738,8 @@ X[:,2] = A**(2.0/3.0) X[:,3] = A**(-1.0/3.0) X[:,4] = A**(-1.0) +Note well that we have made life simple here. We perform a fit in terms of the number of nucleons only. A more sophisticated fit can be done by including an explicit dependence on the number of protons and neutrons in the asymmetry and Coulomb terms. + With **scikitlearn** we are now ready to use linear regression and fit our data. clf = skl.LinearRegression().fit(X, Energies) @@ -749,7 +754,6 @@ print("Mean squared error: %.2f" % mean_squared_error(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_) Masses['Eapprox'] = fity # Generate a plot comparing the experimental with the fitted values values. @@ -1850,6 +1854,89 @@ print('R2 score is {}'.format(r2)) plt.scatter(Y_test, y_test_predict) plt.show() +## 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. + +Let us study some examples. The first code here takes a simple +one-dimensional second-order polynomial and we fit it to a +second-order polynomial. Depending on the strength of the added noise, +the various measures like the $R2$ score or the mean-squared error, +the fit becomes better or worse. + +import os +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split + + +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 + +x = np.random.rand(100) +y = 2.0+5*x*x+0.1*np.random.randn(100) + + +# The design matrix now as function of a given polynomial +X = np.zeros((len(x),3)) +X[:,0] = 1.0 +X[:,1] = x +X[:,2] = x**2 +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) +# matrix inversion to find beta +beta = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train +print(beta) +# 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)) + +Alternatively, you could write your own test-train splitting function as shown here. + +# equivalently in numpy +def train_test_split_numpy(inputs, labels, train_size, test_size): + n_inputs = len(inputs) + inputs_shuffled = inputs.copy() + labels_shuffled = labels.copy() + + np.random.shuffle(inputs_shuffled) + np.random.shuffle(labels_shuffled) + + train_end = int(n_inputs*train_size) + X_train, X_test = inputs_shuffled[:train_end], inputs_shuffled[train_end:] + Y_train, Y_test = labels_shuffled[:train_end], labels_shuffled[train_end:] + + return X_train, X_test, Y_train, Y_test + +But since **scikit-learn** has its own function for doing this and since +it interfaces easily with **tensorflow** and other libraries, we +normally recommend using the latter functionality. + + + + ## Reducing the number of degrees of freedom, overarching view Many Machine Learning problems involve thousands or even millions of @@ -1873,6 +1960,7 @@ is one of the most used tools in data modeling, compression and visualization. + Before we proceed however, we will discuss how to preprocess our data. Till now and in connection with our previous examples we have not met so many cases where we are too sensitive to the scaling of our @@ -1880,6 +1968,15 @@ data. Normally the data may need a rescaling and/or may be sensitive to extreme values. Scaling the data renders our inputs much more suitable for the algorithms we want to employ. +For data sets gathered for real world applications, it is rather normal that +different features have very different units and +numerical scales. For example, a data set detailing health habits may include +features such as **age** in the range $0-80$, and **caloric intake** of order $2000$. +Many machine learning methods sensitive to the scales of the features and may perform poorly if they +are very different scales. Therefore, it is typical to scale +the features in a way to avoid such outlier values. + + **Scikit-Learn** has several functions which allow us to rescale the data, normally resulting in much better results in terms of various accuracy scores. The **StandardScaler** function in **Scikit-Learn** @@ -1909,100 +2006,124 @@ outliers, and might often lead to trouble for other scaling techniques. -### Simple preprocessing examples, Franke function and regression +Many features are often scaled using standardization to improve +performance. In **Scikit-Learn** this is given by the **StandardScaler** +function as discussed above. It is easy however to write your own. +Mathematically, this involves subtracting the mean and divide by the +standard deviation over the data set, for each feature: + +$$ +x_j^{(i)} \rightarrow \frac{x_j^{(i)} - \overline{x}_j}{\sigma(x_j)}, +$$ + +where $\overline{x}_j$ and $\sigma(x_j)$ are the mean and standard +deviation, respectively, of the feature $x_j$. This ensures that each +feature has zero mean and unit standard deviation. For data sets +where we do not have the standard deviation or don't wish to calculate +it, it is then common to simply set it to one. + + + +Let us consider the following vanilla example where we use both +**Scikit-Learn** and write our own function as well. We produce a +simple test design matrix with random numbers. Each column could then +represent a specific feature whose mean value is subracted. -# Common imports -import os -import numpy as np -import pandas as pd -import matplotlib.pyplot as plt import sklearn.linear_model as skl from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler, StandardScaler, Normalizer +import numpy as np +import pandas as pd +from IPython.display import display +np.random.seed(100) +# setting up a 10 x 5 matrix +rows = 10 +cols = 5 +X = np.random.randn(rows,cols) +XPandas = pd.DataFrame(X) +display(XPandas) +print(XPandas.mean()) +print(XPandas.std()) +XPandas = (XPandas -XPandas.mean()) +display(XPandas) +# This option does not include the standard deviation +scaler = StandardScaler(with_std=False) +scaler.fit(X) +Xscaled = scaler.transform(X) +display(XPandas-Xscaled) -# 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') +Small exercise: perform the standard scaling by including the standard deviation and compare with what Scikit-Learn gives. -def FrankeFunction(x,y): - term1 = 0.75*np.exp(-(0.25*(9*x-2)**2) - 0.25*((9*y-2)**2)) - term2 = 0.75*np.exp(-((9*x+1)**2)/49.0 - 0.1*(9*y+1)) - term3 = 0.5*np.exp(-(9*x-7)**2/4.0 - 0.25*((9*y-3)**2)) - term4 = -0.2*np.exp(-(9*x-4)**2 - (9*y-7)**2) - return term1 + term2 + term3 + term4 + +Another commonly used scaling method is min-max scaling. This is very +useful for when we want the features to lie in a certain interval. To +scale the feature $x_j$ to the interval $[a, b]$, we can apply the +transformation + +$$ +x_j^{(i)} \rightarrow (b-a)\frac{x_j^{(i)} - \min(x_j)}{\max(x_j) - \min(x_j)} - a +$$ + +where $\min(x_j)$ and $\max(x_j)$ return the minimum and maximum value of $x_j$ over the data set, respectively. -def create_X(x, y, n ): - if len(x.shape) > 1: - x = np.ravel(x) - y = np.ravel(y) - - N = len(x) - l = int((n+1)*(n+2)/2) # Number of elements in beta - X = np.ones((N,l)) - - for i in range(1,n+1): - q = int((i)*(i+1)/2) - for k in range(i+1): - X[:,q+k] = (x**(i-k))*(y**k) - - return X -# Making meshgrid of datapoints and compute Franke's function -n = 5 -N = 1000 -x = np.sort(np.random.uniform(0, 1, N)) -y = np.sort(np.random.uniform(0, 1, N)) -z = FrankeFunction(x, y) -X = create_X(x, y, n=n) -# split in training and test data -X_train, X_test, y_train, y_test = train_test_split(X,z,test_size=0.2) +## Testing the Means Squared Error as function of Complexity -clf = skl.LinearRegression().fit(X_train, y_train) +Before we proceed with a more detailed analysis of the so-called +Bias-Variance tradeoff, we present here an example of the relation +between model complexity and the mean squared error for the triaining +data and the test data. -# The mean squared error and R2 score -print("MSE before scaling: {:.2f}".format(mean_squared_error(clf.predict(X_test), y_test))) -print("R2 score before scaling {:.2f}".format(clf.score(X_test,y_test))) +The results here tell us clearly that for the data not included in the +training, there is an optimal model as function of the complexity of +ourmodel (here in terms of the polynomial degree of the model). +The results here will vary as function of model complexity and the amount od data used for training. + + +Our data is defined by $x\in [-3,3]$ with a total of for example $100$ data points. + +import matplotlib.pyplot as plt +import numpy as np +from sklearn.linear_model import LinearRegression, Ridge, Lasso +from sklearn.preprocessing import PolynomialFeatures +from sklearn.model_selection import train_test_split +from sklearn.pipeline import make_pipeline + + +np.random.seed(2018) +n = 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) +TestError = np.zeros(maxdegree) +TrainError = np.zeros(maxdegree) +polydegree = np.zeros(maxdegree) +x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2) scaler = StandardScaler() -scaler.fit(X_train) -X_train_scaled = scaler.transform(X_train) -X_test_scaled = scaler.transform(X_test) +scaler.fit(x_train) +x_train_scaled = scaler.transform(x_train) +x_test_scaled = scaler.transform(x_test) -print("Feature min values before scaling:\n {}".format(X_train.min(axis=0))) -print("Feature max values before scaling:\n {}".format(X_train.max(axis=0))) +for degree in range(maxdegree): + model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) + clf = model.fit(x_train_scaled,y_train) + y_fit = clf.predict(x_train_scaled) + y_pred = clf.predict(x_test_scaled) + polydegree[degree] = degree + TestError[degree] = np.mean( np.mean((y_test - y_pred)**2) ) + TrainError[degree] = np.mean( np.mean((y_train - y_fit)**2) ) -print("Feature min values after scaling:\n {}".format(X_train_scaled.min(axis=0))) -print("Feature max values after scaling:\n {}".format(X_train_scaled.max(axis=0))) - -clf = skl.LinearRegression().fit(X_train_scaled, y_train) - - -print("MSE after scaling: {:.2f}".format(mean_squared_error(clf.predict(X_test_scaled), y_test))) -print("R2 score for scaled data: {:.2f}".format(clf.score(X_test_scaled,y_test))) +plt.plot(polydegree, TestError, label='Test Error') +plt.plot(polydegree, TrainError, label='Train Error') +plt.legend() +plt.show() ## Exercises diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1_11_0.png b/doc/LectureNotes/_build/jupyter_execute/chapter1_11_0.png index d56e1d6d0..8585b7491 100644 Binary files a/doc/LectureNotes/_build/jupyter_execute/chapter1_11_0.png and b/doc/LectureNotes/_build/jupyter_execute/chapter1_11_0.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1_13_1.png b/doc/LectureNotes/_build/jupyter_execute/chapter1_13_1.png index 3fd1831e1..b145ce82a 100644 Binary files a/doc/LectureNotes/_build/jupyter_execute/chapter1_13_1.png and b/doc/LectureNotes/_build/jupyter_execute/chapter1_13_1.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1_214_0.png b/doc/LectureNotes/_build/jupyter_execute/chapter1_214_0.png new file mode 100644 index 000000000..cbac4fd70 Binary files /dev/null and b/doc/LectureNotes/_build/jupyter_execute/chapter1_214_0.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1_27_0.png b/doc/LectureNotes/_build/jupyter_execute/chapter1_27_0.png index ab7dda310..bef273ce3 100644 Binary files a/doc/LectureNotes/_build/jupyter_execute/chapter1_27_0.png and b/doc/LectureNotes/_build/jupyter_execute/chapter1_27_0.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1_3_0.png b/doc/LectureNotes/_build/jupyter_execute/chapter1_3_0.png index 4ad4c8690..0be2e475d 100644 Binary files a/doc/LectureNotes/_build/jupyter_execute/chapter1_3_0.png and b/doc/LectureNotes/_build/jupyter_execute/chapter1_3_0.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1_61_11.png b/doc/LectureNotes/_build/jupyter_execute/chapter1_61_11.png new file mode 100644 index 000000000..916bfd378 Binary files /dev/null and b/doc/LectureNotes/_build/jupyter_execute/chapter1_61_11.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter2.ipynb b/doc/LectureNotes/_build/jupyter_execute/chapter2.ipynb index 9e68b7c50..1ced6d808 100644 --- a/doc/LectureNotes/_build/jupyter_execute/chapter2.ipynb +++ b/doc/LectureNotes/_build/jupyter_execute/chapter2.ipynb @@ -565,6 +565,179 @@ "example\n", "\n", "\n", + "## Code for SVD and Inversion of Matrices\n", + "\n", + "How do we use the SVD to invert a matrix $\\boldsymbol{X}^\\boldsymbol{X}$ which is singular or near singular?\n", + "The simple answer is to use the linear algebra function for the pseudoinverse, that is" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], + "source": [ + "#Ainv = np.linlag.pinv(A)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us first look at a matrix which does not causes problems and write our own function where we just use the SVD." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1 2 3]\n", + " [2 4 5]\n", + " [3 5 6]]\n", + "test U\n", + "[[ 2.22044605e-16 -7.77156117e-16 -5.55111512e-16]\n", + " [-7.77156117e-16 0.00000000e+00 -1.11022302e-16]\n", + " [-5.55111512e-16 -1.11022302e-16 0.00000000e+00]]\n", + "test VT\n", + "[[ 1.11022302e-16 -2.22044605e-16 1.38777878e-16]\n", + " [-2.22044605e-16 -1.11022302e-16 -1.11022302e-16]\n", + " [ 1.38777878e-16 -1.11022302e-16 0.00000000e+00]]\n", + "[[0. 0. 0.]\n", + " [0. 0. 0.]\n", + " [0. 0. 0.]]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "# SVD inversion\n", + "def SVDinv(A):\n", + " ''' Takes as input a numpy matrix A and returns inv(A) based on singular value decomposition (SVD).\n", + " SVD is numerically more stable than the inversion algorithms provided by\n", + " numpy and scipy.linalg at the cost of being slower.\n", + " '''\n", + " U, s, VT = np.linalg.svd(A)\n", + " print('test U')\n", + " print( (np.transpose(U) @ U - U @np.transpose(U)))\n", + " print('test VT')\n", + " print( (np.transpose(VT) @ VT - VT @np.transpose(VT)))\n", + "\n", + "\n", + " D = np.zeros((len(U),len(VT)))\n", + " D = np.diag(s)\n", + " UT = np.transpose(U); V = np.transpose(VT); invD = np.linalg.inv(D)\n", + " return np.matmul(V,np.matmul(invD,UT))\n", + "\n", + "\n", + "#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] ])\n", + "# Non-singular square matrix\n", + "X = np.array( [ [1,2,3],[2,4,5],[3,5,6]])\n", + "print(X)\n", + "A = np.transpose(X) @ X\n", + "# Brute force inversion\n", + "B = np.linalg.pinv(A) # here we could use np.linalg.inv(A), try it!\n", + "C = SVDinv(A)\n", + "print(np.abs(B-C))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Although our matrix to invert $\\boldsymbol{X}^T\\boldsymbol{X}$ is a square matrix, our matrix may be singular. \n", + "\n", + "The pseudoinverse is the generalization of the matrix inverse for square matrices to\n", + "rectangular matrices where the number of rows and columns are not equal.\n", + "\n", + "It is also called the the Moore-Penrose Inverse after two independent discoverers of the method or the Generalized Inverse.\n", + "It is used for the calculation of the inverse for singular or near singular matrices and for rectangular matrices.\n", + "\n", + "Using the SVD we can obtain the pseudoinverse of a matrix $\\boldsymbol{A}$ (labeled here as $\\boldsymbol{A}_{\\mathrm{PI}}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\boldsymbol{A}_{\\mathrm{PI}}= \\boldsymbol{V}\\boldsymbol{D}_{\\mathrm{PI}}\\boldsymbol{U}^T,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where $\\boldsymbol{D}_{\\mathrm{PI}}$ can be calculated by creating a diagonal matrix from $\\boldsymbol{Sigma}$ where we only keep the singular values (the non-zero values). The following code computes the pseudoinvers of the matrix based on the SVD." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.3 0.4]\n", + " [0.5 0.6]\n", + " [0.7 0.8]\n", + " [0.9 1. ]]\n", + "[[-13. -6. 1. 8. ]\n", + " [ 11.5 5.5 -0.5 -6.5]]\n", + "[[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "# SVD inversion\n", + "def SVDinv(A):\n", + " U, s, VT = np.linalg.svd(A)\n", + " # reciprocals of singular values of s\n", + " d = 1.0 / s\n", + " # create m x n D matrix\n", + " D = np.zeros(A.shape)\n", + " # populate D with n x n diagonal matrix\n", + " D[:A.shape[1], :A.shape[1]] = np.diag(d)\n", + " UT = np.transpose(U)\n", + " V = np.transpose(VT)\n", + " return np.matmul(V,np.matmul(D.T,UT))\n", + "\n", + "\n", + "A = np.array([ [0.3, 0.4], [0.5, 0.6], [0.7, 0.8],[0.9, 1.0]])\n", + "print(A)\n", + "# Brute force inversion of super-collinear matrix\n", + "B = np.linalg.pinv(A)\n", + "print(B)\n", + "# Compare our own algorithm with pinv\n", + "C = SVDinv(A)\n", + "print(np.abs(C-B))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see from these examples, our own decomposition based on the SVD agrees the pseudoinverse algorithm provided by **Numpy**.\n", + "\n", + "\n", "\n", "\n", "\n", @@ -1287,7 +1460,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "metadata": { "collapsed": false, "editable": true @@ -1297,10 +1470,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "-0.033037772005753835\n", - "3.7371165871823337\n", - "[[ 1.22443803 3.75195757]\n", - " [ 3.75195757 12.47441766]]\n" + "0.059680303635344434\n", + "4.260227742627244\n", + "[[0.89704131 2.55795935]\n", + " [2.55795935 8.24340751]]\n" ] } ], @@ -1330,7 +1503,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "metadata": { "collapsed": false, "editable": true @@ -1340,10 +1513,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.08665060086846632\n", - "1.6796265324852733\n", - "[[1. 0.6183694]\n", - " [0.6183694 1. ]]\n" + "0.08362077210702115\n", + "1.8429949116841184\n", + "[[1. 0.6996584]\n", + " [0.6996584 1. ]]\n" ] } ], @@ -1388,7 +1561,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "metadata": { "collapsed": false, "editable": true @@ -1398,30 +1571,30 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[ 0.68002363 0.95517094]\n", - " [-0.53545715 0.03652792]\n", - " [ 1.33886902 4.84251485]\n", - " [ 0.20375701 -0.16861772]\n", - " [-2.04455272 -5.89742056]\n", - " [ 1.17449733 2.3728892 ]\n", - " [ 0.03019554 0.07581375]\n", - " [ 0.60949193 1.95628168]\n", - " [ 0.0530533 1.07839924]\n", - " [-1.5098779 -5.2515593 ]]\n", + "[[-1.25981533 -3.84976606]\n", + " [-0.52570079 -0.62262506]\n", + " [ 0.51707172 3.46973015]\n", + " [-0.47265243 -1.87030083]\n", + " [ 0.73734906 2.46183815]\n", + " [ 0.4918372 2.05531364]\n", + " [ 0.3893239 0.47862383]\n", + " [-0.41237437 -0.85058354]\n", + " [ 0.77622336 0.54697204]\n", + " [-0.24126232 -1.81920231]]\n", " 0 1\n", - "0 0.680024 0.955171\n", - "1 -0.535457 0.036528\n", - "2 1.338869 4.842515\n", - "3 0.203757 -0.168618\n", - "4 -2.044553 -5.897421\n", - "5 1.174497 2.372889\n", - "6 0.030196 0.075814\n", - "7 0.609492 1.956282\n", - "8 0.053053 1.078399\n", - "9 -1.509878 -5.251559\n", + "0 -1.259815 -3.849766\n", + "1 -0.525701 -0.622625\n", + "2 0.517072 3.469730\n", + "3 -0.472652 -1.870301\n", + "4 0.737349 2.461838\n", + "5 0.491837 2.055314\n", + "6 0.389324 0.478624\n", + "7 -0.412374 -0.850584\n", + "8 0.776223 0.546972\n", + "9 -0.241262 -1.819202\n", " 0 1\n", - "0 1.000000 0.959247\n", - "1 0.959247 1.000000\n" + "0 1.000000 0.881323\n", + "1 0.881323 1.000000\n" ] } ], @@ -1451,7 +1624,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "metadata": { "collapsed": false, "editable": true @@ -1463,37 +1636,37 @@ "text": [ " 0 1 2 3 4 5 6 7 \\\n", "0 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "1 0.0 0.073902 0.077303 0.072279 0.077386 0.082866 0.063526 0.068073 \n", - "2 0.0 0.077303 0.081480 0.074665 0.080336 0.086465 0.064929 0.069872 \n", - "3 0.0 0.072279 0.074665 0.075754 0.080381 0.085289 0.069635 0.074099 \n", - "4 0.0 0.077386 0.080336 0.080381 0.085597 0.091159 0.073333 0.078279 \n", - "5 0.0 0.082866 0.086465 0.085289 0.091159 0.097452 0.077212 0.082687 \n", - "6 0.0 0.063526 0.064929 0.069635 0.073333 0.077212 0.066047 0.069859 \n", - "7 0.0 0.068073 0.069872 0.074099 0.078279 0.082687 0.069859 0.074096 \n", - "8 0.0 0.073035 0.075289 0.078937 0.083657 0.088660 0.073966 0.078674 \n", - "9 0.0 0.078451 0.081227 0.084181 0.089504 0.095173 0.078388 0.083618 \n", - "10 0.0 0.055085 0.055774 0.062327 0.065204 0.068185 0.060520 0.063670 \n", - "11 0.0 0.058892 0.059865 0.066249 0.069510 0.072910 0.064000 0.067504 \n", - "12 0.0 0.063055 0.064354 0.070517 0.074207 0.078076 0.067769 0.071667 \n", - "13 0.0 0.067610 0.069282 0.075163 0.079333 0.083728 0.071855 0.076189 \n", - "14 0.0 0.072598 0.074696 0.080223 0.084931 0.089916 0.076283 0.081103 \n", + "1 0.0 0.082272 0.078892 0.081102 0.080738 0.080182 0.072012 0.072246 \n", + "2 0.0 0.078892 0.076822 0.075975 0.076166 0.076251 0.066705 0.067202 \n", + "3 0.0 0.081102 0.075975 0.085259 0.084103 0.082616 0.078750 0.078649 \n", + "4 0.0 0.080738 0.076166 0.084103 0.083246 0.082091 0.077338 0.077407 \n", + "5 0.0 0.080182 0.076251 0.082616 0.082091 0.081309 0.075567 0.075818 \n", + "6 0.0 0.072012 0.066705 0.078750 0.077338 0.075567 0.074693 0.074434 \n", + "7 0.0 0.072246 0.067202 0.078649 0.077407 0.075818 0.074434 0.074285 \n", + "8 0.0 0.072468 0.067718 0.078474 0.077416 0.076026 0.074077 0.074044 \n", + "9 0.0 0.072661 0.068244 0.078197 0.077339 0.076169 0.073591 0.073681 \n", + "10 0.0 0.063190 0.058247 0.070949 0.069542 0.067794 0.068593 0.068293 \n", + "11 0.0 0.063523 0.058719 0.071156 0.069853 0.068213 0.068717 0.068491 \n", + "12 0.0 0.063880 0.059225 0.071359 0.070166 0.068640 0.068821 0.068673 \n", + "13 0.0 0.064257 0.059765 0.071549 0.070473 0.069071 0.068896 0.068828 \n", + "14 0.0 0.064647 0.060335 0.071714 0.070764 0.069496 0.068928 0.068945 \n", "\n", " 8 9 10 11 12 13 14 \n", "0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "1 0.073035 0.078451 0.055085 0.058892 0.063055 0.067610 0.072598 \n", - "2 0.075289 0.081227 0.055774 0.059865 0.064354 0.069282 0.074696 \n", - "3 0.078937 0.084181 0.062327 0.066249 0.070517 0.075163 0.080223 \n", - "4 0.083657 0.089504 0.065204 0.069510 0.074207 0.079333 0.084931 \n", - "5 0.088660 0.095173 0.068185 0.072910 0.078076 0.083728 0.089916 \n", - "6 0.073966 0.078388 0.060520 0.064000 0.067769 0.071855 0.076283 \n", - "7 0.078674 0.083618 0.063670 0.067504 0.071667 0.076189 0.081103 \n", - "8 0.083775 0.089300 0.067043 0.071268 0.075865 0.080871 0.086325 \n", - "9 0.089300 0.095472 0.070653 0.075309 0.080387 0.085928 0.091979 \n", - "10 0.067043 0.070653 0.056484 0.059455 0.062659 0.066116 0.069848 \n", - "11 0.071268 0.075309 0.059455 0.062731 0.066272 0.070103 0.074248 \n", - "12 0.075865 0.080387 0.062659 0.066272 0.070188 0.074432 0.079037 \n", - "13 0.080871 0.085928 0.066116 0.070103 0.074432 0.079137 0.084251 \n", - "14 0.086325 0.091979 0.069848 0.074248 0.079037 0.084251 0.089931 \n" + "1 0.072468 0.072661 0.063190 0.063523 0.063880 0.064257 0.064647 \n", + "2 0.067718 0.068244 0.058247 0.058719 0.059225 0.059765 0.060335 \n", + "3 0.078474 0.078197 0.070949 0.071156 0.071359 0.071549 0.071714 \n", + "4 0.077416 0.077339 0.069542 0.069853 0.070166 0.070473 0.070764 \n", + "5 0.076026 0.076169 0.067794 0.068213 0.068640 0.069071 0.069496 \n", + "6 0.074077 0.073591 0.068593 0.068717 0.068821 0.068896 0.068928 \n", + "7 0.074044 0.073681 0.068293 0.068491 0.068673 0.068828 0.068945 \n", + "8 0.073926 0.073695 0.067889 0.068165 0.068427 0.068667 0.068873 \n", + "9 0.073695 0.073607 0.067355 0.067711 0.068056 0.068385 0.068686 \n", + "10 0.067889 0.067355 0.063925 0.064013 0.064075 0.064101 0.064078 \n", + "11 0.068165 0.067711 0.064013 0.064156 0.064273 0.064357 0.064393 \n", + "12 0.068427 0.068056 0.064075 0.064273 0.064449 0.064591 0.064689 \n", + "13 0.068667 0.068385 0.064101 0.064357 0.064591 0.064795 0.064958 \n", + "14 0.068873 0.068686 0.064078 0.064393 0.064689 0.064958 0.065188 \n" ] } ], @@ -1855,571 +2028,8 @@ "\n", "\n", "\n", - "## Ridge and LASSO Regression\n", "\n", - "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 \n", - "our optimization problem is" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "{\\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\\}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "or we can state it as" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in\n", - "{\\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,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "where we have used the definition of a norm-2 vector, that is" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\vert\\vert \\boldsymbol{x}\\vert\\vert_2 = \\sqrt{\\sum_i x_i^2}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By minimizing the above equation with respect to the parameters\n", - "$\\boldsymbol{\\beta}$ we could then obtain an analytical expression for the\n", - "parameters $\\boldsymbol{\\beta}$. We can add a regularization parameter $\\lambda$ by\n", - "defining a new cost function to be optimized, that is" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in\n", - "{\\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\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "which leads to the Ridge regression minimization problem where we\n", - "require that $\\vert\\vert \\boldsymbol{\\beta}\\vert\\vert_2^2\\le t$, where $t$ is\n", - "a finite number larger than zero. By defining" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "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,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "we have a new optimization equation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in\n", - "{\\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\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "which leads to Lasso regression. Lasso stands for least absolute shrinkage and selection operator. \n", - "\n", - "Here we have defined the norm-1 as" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\vert\\vert \\boldsymbol{x}\\vert\\vert_1 = \\sum_i \\vert x_i\\vert.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using the matrix-vector expression for Ridge regression and dropping the parameter $1/n$ in front of the standard means squared error equation, we have" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "C(\\boldsymbol{X},\\boldsymbol{\\beta})=\\left\\{(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})^T(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\right\\}+\\lambda\\boldsymbol{\\beta}^T\\boldsymbol{\\beta},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and \n", - "taking the derivatives with respect to $\\boldsymbol{\\beta}$ we obtain then\n", - "a slightly modified matrix inversion problem which for finite values\n", - "of $\\lambda$ does not suffer from singularity problems. We obtain\n", - "the optimal parameters" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{\\boldsymbol{\\beta}}_{\\mathrm{Ridge}} = \\left(\\boldsymbol{X}^T\\boldsymbol{X}+\\lambda\\boldsymbol{I}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "with $\\boldsymbol{I}$ being a $p\\times p$ identity matrix with the constraint that" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\sum_{i=0}^{p-1} \\beta_i^2 \\leq t,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "with $t$ a finite positive number. \n", - "\n", - "When we compare this with the ordinary least squares result we have" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\hat{\\boldsymbol{\\beta}}_{\\mathrm{OLS}} = \\left(\\boldsymbol{X}^T\\boldsymbol{X}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "which can lead to singular matrices. However, with the SVD, we can always compute the inverse of the matrix $\\boldsymbol{X}^T\\boldsymbol{X}$.\n", - "\n", - "\n", - "We see that Ridge regression is nothing but the standard OLS with a\n", - "modified diagonal term added to $\\boldsymbol{X}^T\\boldsymbol{X}$. The consequences, in\n", - "particular for our discussion of the bias-variance tradeoff are rather\n", - "interesting. We will see that for specific values of $\\lambda$, we may\n", - "even reduce the variance of the optimal parameters $\\boldsymbol{\\beta}$. These topics and other related ones, will be discussed after the more linear algebra oriented analysis here.\n", - "\n", - "Using our insights about the SVD of the design matrix $\\boldsymbol{X}$ \n", - "We have already analyzed the OLS solutions in terms of the eigenvectors (the columns) of the right singular value matrix $\\boldsymbol{U}$ as" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\tilde{\\boldsymbol{y}}_{\\mathrm{OLS}}=\\boldsymbol{X}\\boldsymbol{\\beta} =\\boldsymbol{U}\\boldsymbol{U}^T\\boldsymbol{y}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For Ridge regression this becomes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\tilde{\\boldsymbol{y}}_{\\mathrm{Ridge}}=\\boldsymbol{X}\\boldsymbol{\\beta}_{\\mathrm{Ridge}} = \\boldsymbol{U\\Sigma V^T}\\left(\\boldsymbol{V}\\boldsymbol{\\Sigma}^2\\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},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "with the vectors $\\boldsymbol{u}_j$ being the columns of $\\boldsymbol{U}$ from the SVD of the matrix $\\boldsymbol{X}$. \n", - "\n", - "\n", - "Since $\\lambda \\geq 0$, it means that compared to OLS, we have" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\frac{\\sigma_j^2}{\\sigma_j^2+\\lambda} \\leq 1.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Ridge regression finds the coordinates of $\\boldsymbol{y}$ with respect to the\n", - "orthonormal basis $\\boldsymbol{U}$, it then shrinks the coordinates by\n", - "$\\frac{\\sigma_j^2}{\\sigma_j^2+\\lambda}$. Recall that the SVD has\n", - "eigenvalues ordered in a descending way, that is $\\sigma_i \\geq\n", - "\\sigma_{i+1}$.\n", - "\n", - "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. More about this when we have covered the material on a statistical interpretation of various linear regression methods.\n", - "\n", - "\n", - "\n", - "For the sake of simplicity, let us assume that the design matrix is orthonormal, that is" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\boldsymbol{X}^T\\boldsymbol{X}=(\\boldsymbol{X}^T\\boldsymbol{X})^{-1} =\\boldsymbol{I}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this case the standard OLS results in" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\boldsymbol{\\beta}^{\\mathrm{OLS}} = \\boldsymbol{X}^T\\boldsymbol{y}=\\sum_{i=0}^{p-1}\\boldsymbol{u}_j\\boldsymbol{u}_j^T\\boldsymbol{y},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\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}},\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "that is the Ridge estimator scales the OLS estimator by the inverse of a factor $1+\\lambda$, and\n", - "the Ridge estimator converges to zero when the hyperparameter goes to\n", - "infinity.\n", - "\n", - "We will come back to more interpreations after we have gone through some of the statistical analysis part. \n", - "\n", - "For more discussions of Ridge and Lasso regression, [Wessel van Wieringen's](https://arxiv.org/abs/1509.09169) article is highly recommended.\n", - "Similarly, [Mehta et al's article](https://arxiv.org/abs/1803.08823) is also recommended.\n", - "\n", - "\n", - "Using the matrix-vector expression for Lasso regression and dropping the parameter $1/n$ in front of the standard means squared error equation, we have the following **cost** function" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "C(\\boldsymbol{X},\\boldsymbol{\\beta})=\\left\\{(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})^T(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})\\right\\}+\\lambda\\vert\\vert\\boldsymbol{\\beta}\\vert\\vert_1,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Taking the derivative with respect to $\\boldsymbol{\\beta}$ and recalling that the derivative of the absolute value is (we drop the boldfaced vector symbol for simplicty)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\frac{d \\vert \\beta\\vert}{d \\boldsymbol{\\beta}}=\\mathrm{sgn}(\\boldsymbol{\\beta})=\\left\\{\\begin{array}{cc} 1 & \\beta > 0 \\\\ 0 & \\beta =0\\\\-1 & \\beta < 0, \\end{array}\\right.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "we have that the derivative of the cost function is" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\frac{\\partial C(\\boldsymbol{X},\\boldsymbol{\\beta})}{\\partial \\boldsymbol{\\beta}}=-2\\boldsymbol{X}^T(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta})+\\lambda sgn(\\boldsymbol{\\beta})=0,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and reordering we have" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\boldsymbol{X}^T\\boldsymbol{X}\\boldsymbol{\\beta})+\\lambda sgn(\\boldsymbol{\\beta})=2\\boldsymbol{X}^T(\\boldsymbol{y}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This equation does not lead to a nice analytical equation as in either Ridge regression or ordinary least squares. This equation can however be solved by using standard convex optimization algorithms using for example the Python package [CVXOPT](https://cvxopt.org/). We will discuss this later. \n", - "\n", - "## Code for SVD and Inversion of Matrices\n", - "\n", - "How do we use the SVD to invert a matrix $\\boldsymbol{X}^\\boldsymbol{X}$ which is singular or near singular?\n", - "The simple answer is to use the linear algebra function for the pseudoinverse, that is" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false, - "editable": true - }, - "outputs": [], - "source": [ - "#Ainv = np.linlag.pinv(A)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us first look at a matrix which does not causes problems and write our own function where we just use the SVD." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false, - "editable": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[1 2 3]\n", - " [2 4 5]\n", - " [3 5 6]]\n", - "test U\n", - "[[ 2.22044605e-16 -7.77156117e-16 -5.55111512e-16]\n", - " [-7.77156117e-16 0.00000000e+00 -1.11022302e-16]\n", - " [-5.55111512e-16 -1.11022302e-16 0.00000000e+00]]\n", - "test VT\n", - "[[ 1.11022302e-16 -2.22044605e-16 1.38777878e-16]\n", - " [-2.22044605e-16 -1.11022302e-16 -1.11022302e-16]\n", - " [ 1.38777878e-16 -1.11022302e-16 0.00000000e+00]]\n", - "[[2.35367281e-12 1.70885528e-12 3.20632410e-13]\n", - " [2.17248441e-12 1.46016532e-12 2.00728323e-13]\n", - " [6.95443703e-13 4.13891144e-13 2.13162821e-14]]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "# SVD inversion\n", - "def SVDinv(A):\n", - " ''' Takes as input a numpy matrix A and returns inv(A) based on singular value decomposition (SVD).\n", - " SVD is numerically more stable than the inversion algorithms provided by\n", - " numpy and scipy.linalg at the cost of being slower.\n", - " '''\n", - " U, s, VT = np.linalg.svd(A)\n", - " print('test U')\n", - " print( (np.transpose(U) @ U - U @np.transpose(U)))\n", - " print('test VT')\n", - " print( (np.transpose(VT) @ VT - VT @np.transpose(VT)))\n", - "\n", - "\n", - " D = np.zeros((len(U),len(VT)))\n", - " D = np.diag(s)\n", - " UT = np.transpose(U); V = np.transpose(VT); invD = np.linalg.inv(D)\n", - " return np.matmul(V,np.matmul(invD,UT))\n", - "\n", - "\n", - "#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] ])\n", - "# Non-singular square matrix\n", - "X = np.array( [ [1,2,3],[2,4,5],[3,5,6]])\n", - "print(X)\n", - "A = np.transpose(X) @ X\n", - "# Brute force inversion\n", - "B = np.linalg.inv(A) # here we could use np.linalg.pinv(A)\n", - "C = SVDinv(A)\n", - "print(np.abs(B-C))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Although our matrix to invert $\\boldsymbol{X}^T\\boldsymbol{X}$ is a square matrix, our matrix may be singular. \n", - "\n", - "The pseudoinverse is the generalization of the matrix inverse for square matrices to\n", - "rectangular matrices where the number of rows and columns are not equal.\n", - "\n", - "It is also called the the Moore-Penrose Inverse after two independent discoverers of the method or the Generalized Inverse.\n", - "It is used for the calculation of the inverse for singular or near singular matrices and for rectangular matrices.\n", - "\n", - "Using the SVD we can obtain the pseudoinverse of a matrix $\\boldsymbol{A}$ (labeled here as $\\boldsymbol{A}_{\\mathrm{PI}}$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$\n", - "\\boldsymbol{A}_{\\mathrm{PI}}= \\boldsymbol{V}\\boldsymbol{D}_{\\mathrm{PI}}\\boldsymbol{U}^T,\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "where $\\boldsymbol{D}_{\\mathrm{PI}}$ can be calculated by creating a diagonal matrix from $\\boldsymbol{Sigma}$ where we only keep the singular values (the non-zero values). The following code computes the pseudoinvers of the matrix based on the SVD." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false, - "editable": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[0.3 0.4]\n", - " [0.5 0.6]\n", - " [0.7 0.8]\n", - " [0.9 1. ]]\n", - "[[-13. -6. 1. 8. ]\n", - " [ 11.5 5.5 -0.5 -6.5]]\n", - "[[0. 0. 0. 0.]\n", - " [0. 0. 0. 0.]]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "# SVD inversion\n", - "def SVDinv(A):\n", - " U, s, VT = np.linalg.svd(A)\n", - " # reciprocals of singular values of s\n", - " d = 1.0 / s\n", - " # create m x n D matrix\n", - " D = np.zeros(A.shape)\n", - " # populate D with n x n diagonal matrix\n", - " D[:A.shape[1], :A.shape[1]] = np.diag(d)\n", - " UT = np.transpose(U)\n", - " V = np.transpose(VT)\n", - " return np.matmul(V,np.matmul(D.T,UT))\n", - "\n", - "\n", - "A = np.array([ [0.3, 0.4], [0.5, 0.6], [0.7, 0.8],[0.9, 1.0]])\n", - "print(A)\n", - "# Brute force inversion of super-collinear matrix\n", - "B = np.linalg.pinv(A)\n", - "print(B)\n", - "# Compare our own algorithm with pinv\n", - "C = SVDinv(A)\n", - "print(np.abs(C-B))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As you can see from this example, our own decomposition based on the SVD agrees the pseudoinverse algorithm provided by **Numpy**.\n", - "\n", - "\n", - "\n", - "## Deriving the Ridge Regression Equations\n", + "## Ridge and Lasso Regression\n", "\n", "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 \n", "our optimization problem is" @@ -3240,7 +2850,8 @@ "\n", "Here we set up the OLS, Ridge and Lasso functionality in order to study the above example. Note that here we have opted for a set of values of $\\lambda$, meaning that we need to perform a search in order to find the optimal values.\n", "\n", - "First we study and compare the OLS and Ridge results. The next code compares all three methods." + "First we study and compare the OLS and Ridge results. The next code compares all three methods.\n", + "We select values of the hyperparameter $\\lambda\\in [10^{-4},10^4]$ and compute the predicted values for ordinary least squares and Ridge regression." ] }, { @@ -3255,7 +2866,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "[2. 2.]\n", + "[2. 2.]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", "Training MSE for OLS\n", "3.0\n" ] @@ -3269,7 +2887,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter2_287_1.png" + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter2_245_2.png" }, "needs_background": "light" }, @@ -3334,7 +2952,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We see here that we reach a plateau. What is actually happening?" + "We see here that we reach a plateau for the Ridge results. Writing out the coefficients $\\boldsymbol{\\beta}$, we that they are getting smaller and smaller and our error stabilizes since the predicted values of $\\tilde{\\boldsymbol{y}}$ approach zero.\n", + "\n", + "This happens also for Lasso regression, as seen from the next code\n", + "output. The difference is that Lasso shrinks the values of $\\beta$ to\n", + "zero at a much earlier stage and the results flatten out. We see that\n", + "Lasso gives also an excellent fit for small values of $\\lambda$ and\n", + "shows rthe best performance of the three regression methods." ] }, { @@ -3563,7 +3187,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter2_289_1.png" + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter2_247_1.png" }, "needs_background": "light" }, @@ -3633,7 +3257,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Another Example, now with a polynomial fit." + "We bring then back our exponential function example and study all\n", + "three regression methods. Depending on the level of noise, we note\n", + "that for small values of the hyperparameter $\\lambda$ all three\n", + "methods produce the same mean squared error. Again, Lasso shrinks the\n", + "parameter values to zero much earlier than Ridge regression and the\n", + "Lasso results flatten out much earlier since all $\\beta_j=0$ (check\n", + "this by printing the values). This case is an example of where OLS\n", + "performs best. Lasso and Ridge reproduce the OLS results for a limited\n", + "set of $\\lambda$ values." ] }, { @@ -3664,7 +3296,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter2_291_1.png" + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter2_249_1.png" }, "needs_background": "light" }, @@ -3752,6 +3384,325 @@ "plt.show()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Both these example send a clear message. The addition of a\n", + "shrinkage/regularization term implies that we need to perform a search\n", + "for the optimal values of $\\lambda$. We will see this throughout these\n", + "series of lectures.\n", + "\n", + "\n", + "As a small addendum, we note that you can also solve this problem using the convex optimization package [CVXOPT](https://cvxopt.org/examples/mlbook/l1regls.html). This requires, in addition to having installed **CVXOPT**, you need to download the file *l1regl.py*.\n", + "The following code example solves the simpler problem we discussed above, where we have added the latter python file." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [], + "source": [ + "from cvxopt import matrix, spdiag, mul, div, sqrt, normal, setseed\n", + "from cvxopt import blas, lapack, solvers, sparse, spmatrix\n", + "import math\n", + "\n", + "try:\n", + " import mosek\n", + " import sys\n", + " __MOSEK = True\n", + "except: __MOSEK = False\n", + "\n", + "if __MOSEK:\n", + "\n", + " def l1regls_mosek(A, b):\n", + " \"\"\"\n", + "\n", + " Returns the solution of l1-norm regularized least-squares problem\n", + "\n", + " minimize || A*x - b ||_2^2 + e'*u\n", + "\n", + " subject to -u <= x <= u\n", + "\n", + " \"\"\"\n", + "\n", + " m, n = A.size\n", + "\n", + " env = mosek.Env()\n", + " task = env.Task(0,0)\n", + " task.set_Stream(mosek.streamtype.log, lambda x: sys.stdout.write(x))\n", + "\n", + " task.appendvars( 2*n) # number of variables\n", + " task.appendcons( 2*n) # number of constraints\n", + "\n", + " # input quadratic objective\n", + " Q = matrix(0.0, (n,n)) \n", + " blas.syrk(A, Q, alpha = 2.0, trans='T')\n", + "\n", + " I = []\n", + " for i in range(n):\n", + " I.extend(range(i,n))\n", + "\n", + " J = []\n", + " for i in range(n):\n", + " J.extend((n-i)*[i])\n", + "\n", + " task.putqobj(I, J, list(Q[matrix(I) + matrix(J)*n]))\n", + " task.putclist(range(2*n), list(-2*A.T*b) + n*[1.0]) # setup linear objective\n", + "\n", + " # input constraint matrix row by row\n", + " for i in range(n):\n", + " task.putarow( i, [i, n+i], [1.0, -1.0])\n", + " task.putarow( n+i, [i, n+i], [1.0, 1.0])\n", + "\n", + " # setup bounds on constraints\n", + " task.putboundslice(mosek.accmode.con,\n", + " 0, n, n*[mosek.boundkey.up], n*[0.0], n*[0.0])\n", + " task.putboundslice(mosek.accmode.con,\n", + " n, 2*n, n*[mosek.boundkey.lo], n*[0.0], n*[0.0])\n", + "\n", + " # setup variable bounds\n", + " task.putboundslice(mosek.accmode.var,\n", + " 0, 2*n, 2*n*[mosek.boundkey.fr], 2*n*[0.0], 2*n*[0.0])\n", + "\n", + " # optimize the task\n", + " task.putobjsense(mosek.objsense.minimize)\n", + " task.optimize()\n", + " task.solutionsummary(mosek.streamtype.log)\n", + " x = n*[0.0]\n", + " task.getsolutionslice(mosek.soltype.itr, mosek.solitem.xx, 0, n, x)\n", + "\n", + " return matrix(x)\n", + "\n", + " def l1regls_mosek2(A, b):\n", + " \"\"\"\n", + "\n", + " Returns the solution of l1-norm regularized least-squares problem\n", + "\n", + " minimize w'*w + e'*u\n", + "\n", + " subject to -u <= x <= u\n", + "\n", + " A*x - w = b\n", + "\n", + " \"\"\"\n", + "\n", + " m, n = A.size\n", + "\n", + " env = mosek.Env()\n", + " task = env.Task(0,0)\n", + " task.set_Stream(mosek.streamtype.log, lambda x: sys.stdout.write(x))\n", + "\n", + " task.appendvars(2*n + m) # number of variables\n", + " task.appendcons(2*n + m) # number of constraints\n", + "\n", + " # input quadratic objective\n", + " task.putqobj(range(2*n,2*n+m), range(2*n,2*n+m), m*[2.0])\n", + "\n", + " task.putclist(range(2*n+m), n*[0.0] + n*[1.0] + m*[0.0]) # setup linear objective\n", + "\n", + " # input constraint matrix row by row\n", + " for i in range(n):\n", + " task.putarow( i, [i, n+i], [1.0, -1.0])\n", + " task.putarow( n+i, [i, n+i], [1.0, 1.0])\n", + "\n", + " for i in range(m):\n", + " task.putarow( 2*n+i, range(n) + [2*n+i], list(A[i,:]) + [-1.0])\n", + "\n", + " # setup bounds on constraints\n", + " task.putboundslice(mosek.accmode.con,\n", + " 0, n, n*[mosek.boundkey.up], n*[0.0], n*[0.0])\n", + " task.putboundslice(mosek.accmode.con,\n", + " n, 2*n, n*[mosek.boundkey.lo], n*[0.0], n*[0.0])\n", + " task.putboundslice(mosek.accmode.con,\n", + " 2*n, 2*n+m, m*[mosek.boundkey.fx], list(b), list(b))\n", + "\n", + " # setup variable bounds\n", + " task.putboundslice(mosek.accmode.var, 0, 2*n+m, (2*n+m)*[mosek.boundkey.fr], \n", + " (2*n+m)*[0.0], (2*n+m)*[0.0])\n", + "\n", + " # optimize the task\n", + " task.putobjsense(mosek.objsense.minimize)\n", + " task.optimize()\n", + " task.solutionsummary(mosek.streamtype.log)\n", + " x = n*[0.0]\n", + " task.getsolutionslice(mosek.soltype.itr, mosek.solitem.xx, 0, n, x)\n", + "\n", + " return matrix(x)\n", + "\n", + "def l1regls(A, b):\n", + " \"\"\"\n", + " \n", + " Returns the solution of l1-norm regularized least-squares problem\n", + " \n", + " minimize || A*x - b ||_2^2 + || x ||_1.\n", + "\n", + " \"\"\"\n", + "\n", + " m, n = A.size\n", + " q = matrix(1.0, (2*n,1))\n", + " q[:n] = -2.0 * A.T * b\n", + "\n", + " def P(u, v, alpha = 1.0, beta = 0.0 ):\n", + " \"\"\"\n", + " v := alpha * 2.0 * [ A'*A, 0; 0, 0 ] * u + beta * v \n", + " \"\"\"\n", + " v *= beta\n", + " v[:n] += alpha * 2.0 * A.T * (A * u[:n])\n", + "\n", + "\n", + " def G(u, v, alpha=1.0, beta=0.0, trans='N'):\n", + " \"\"\"\n", + " v := alpha*[I, -I; -I, -I] * u + beta * v (trans = 'N' or 'T')\n", + " \"\"\"\n", + "\n", + " v *= beta\n", + " v[:n] += alpha*(u[:n] - u[n:])\n", + " v[n:] += alpha*(-u[:n] - u[n:])\n", + "\n", + " h = matrix(0.0, (2*n,1))\n", + "\n", + "\n", + " # Customized solver for the KKT system \n", + " #\n", + " # [ 2.0*A'*A 0 I -I ] [x[:n] ] [bx[:n] ]\n", + " # [ 0 0 -I -I ] [x[n:] ] = [bx[n:] ].\n", + " # [ I -I -D1^-1 0 ] [zl[:n]] [bzl[:n]]\n", + " # [ -I -I 0 -D2^-1 ] [zl[n:]] [bzl[n:]]\n", + " #\n", + " # where D1 = W['di'][:n]**2, D2 = W['di'][:n]**2.\n", + " # \n", + " # We first eliminate zl and x[n:]:\n", + " #\n", + " # ( 2*A'*A + 4*D1*D2*(D1+D2)^-1 ) * x[:n] = \n", + " # bx[:n] - (D2-D1)*(D1+D2)^-1 * bx[n:] + \n", + " # D1 * ( I + (D2-D1)*(D1+D2)^-1 ) * bzl[:n] - \n", + " # D2 * ( I - (D2-D1)*(D1+D2)^-1 ) * bzl[n:] \n", + " #\n", + " # x[n:] = (D1+D2)^-1 * ( bx[n:] - D1*bzl[:n] - D2*bzl[n:] ) \n", + " # - (D2-D1)*(D1+D2)^-1 * x[:n] \n", + " #\n", + " # zl[:n] = D1 * ( x[:n] - x[n:] - bzl[:n] )\n", + " # zl[n:] = D2 * (-x[:n] - x[n:] - bzl[n:] ).\n", + " #\n", + " # The first equation has the form\n", + " #\n", + " # (A'*A + D)*x[:n] = rhs\n", + " #\n", + " # and is equivalent to\n", + " #\n", + " # [ D A' ] [ x:n] ] = [ rhs ]\n", + " # [ A -I ] [ v ] [ 0 ].\n", + " #\n", + " # It can be solved as \n", + " #\n", + " # ( A*D^-1*A' + I ) * v = A * D^-1 * rhs\n", + " # x[:n] = D^-1 * ( rhs - A'*v ).\n", + "\n", + " S = matrix(0.0, (m,m))\n", + " Asc = matrix(0.0, (m,n))\n", + " v = matrix(0.0, (m,1))\n", + "\n", + " def Fkkt(W):\n", + "\n", + " # Factor \n", + " #\n", + " # S = A*D^-1*A' + I \n", + " #\n", + " # where D = 2*D1*D2*(D1+D2)^-1, D1 = d[:n]**-2, D2 = d[n:]**-2.\n", + "\n", + " d1, d2 = W['di'][:n]**2, W['di'][n:]**2\n", + "\n", + " # ds is square root of diagonal of D\n", + " ds = math.sqrt(2.0) * div( mul( W['di'][:n], W['di'][n:]), \n", + " sqrt(d1+d2) )\n", + " d3 = div(d2 - d1, d1 + d2)\n", + " \n", + " # Asc = A*diag(d)^-1/2\n", + " Asc = A * spdiag(ds**-1)\n", + "\n", + " # S = I + A * D^-1 * A'\n", + " blas.syrk(Asc, S)\n", + " S[::m+1] += 1.0 \n", + " lapack.potrf(S)\n", + "\n", + " def g(x, y, z):\n", + "\n", + " x[:n] = 0.5 * ( x[:n] - mul(d3, x[n:]) + \n", + " mul(d1, z[:n] + mul(d3, z[:n])) - mul(d2, z[n:] - \n", + " mul(d3, z[n:])) )\n", + " x[:n] = div( x[:n], ds) \n", + "\n", + " # Solve\n", + " #\n", + " # S * v = 0.5 * A * D^-1 * ( bx[:n] - \n", + " # (D2-D1)*(D1+D2)^-1 * bx[n:] + \n", + " # D1 * ( I + (D2-D1)*(D1+D2)^-1 ) * bzl[:n] - \n", + " # D2 * ( I - (D2-D1)*(D1+D2)^-1 ) * bzl[n:] )\n", + " \n", + " blas.gemv(Asc, x, v)\n", + " lapack.potrs(S, v)\n", + " \n", + " # x[:n] = D^-1 * ( rhs - A'*v ).\n", + " blas.gemv(Asc, v, x, alpha=-1.0, beta=1.0, trans='T')\n", + " x[:n] = div(x[:n], ds)\n", + "\n", + " # x[n:] = (D1+D2)^-1 * ( bx[n:] - D1*bzl[:n] - D2*bzl[n:] ) \n", + " # - (D2-D1)*(D1+D2)^-1 * x[:n] \n", + " x[n:] = div( x[n:] - mul(d1, z[:n]) - mul(d2, z[n:]), d1+d2 )\\\n", + " - mul( d3, x[:n] )\n", + " \n", + " # zl[:n] = D1^1/2 * ( x[:n] - x[n:] - bzl[:n] )\n", + " # zl[n:] = D2^1/2 * ( -x[:n] - x[n:] - bzl[n:] ).\n", + " z[:n] = mul( W['di'][:n], x[:n] - x[n:] - z[:n] ) \n", + " z[n:] = mul( W['di'][n:], -x[:n] - x[n:] - z[n:] ) \n", + "\n", + " return g\n", + "\n", + " return solvers.coneqp(P, q, G, h, kktsolver = Fkkt)['x'][:n]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we call the above functions and solve the problem, as done here" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false, + "editable": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " pcost dcost gap pres dres\n", + " 0: -2.7070e+01 -1.6544e+01 2e+01 6e+00 2e-01\n", + " 1: -2.2433e+01 -2.4632e+01 2e+00 9e-16 1e-16\n", + " 2: -2.4140e+01 -2.4332e+01 2e-01 1e-15 3e-16\n", + " 3: -2.4200e+01 -2.4203e+01 2e-03 5e-16 2e-15\n", + " 4: -2.4201e+01 -2.4201e+01 2e-05 9e-16 6e-16\n", + "Optimal solution found.\n" + ] + } + ], + "source": [ + "from cvxopt import matrix, normal\n", + "\n", + "X = matrix( [ [ 2, 0, 1], [0, 1, 3]])\n", + "y = matrix( [4, 2, 3])\n", + "x = l1regls(X,y)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -4446,7 +4397,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": { "collapsed": false, "editable": true @@ -4460,7 +4411,13 @@ "Test MSE OLS\n", "0.958228616652075\n", "0.001 [ 1.0170259 0.27852549 -1.40702 1.03193199 0. ]\n", - "0.001 [ 1.034342 -0.18063928 -0. 0. 0. ]\n", + "0.001 [ 1.034342 -0.18063928 -0. 0. 0. ]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "0.021544346900318832 [ 1.01825571 0.26412372 -1.37186301 1.00890601 0. ]\n", "0.021544346900318832 [ 0.92280994 -0. -0. -0. 0. ]\n", "0.46415888336127775 [ 1.0344707 0.07160764 -0.89928965 0.69843037 0. ]\n", @@ -4478,7 +4435,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter2_351_1.png" + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter2_313_2.png" }, "needs_background": "light" }, diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter2.py b/doc/LectureNotes/_build/jupyter_execute/chapter2.py index 9dfb2e212..99539ec90 100644 --- a/doc/LectureNotes/_build/jupyter_execute/chapter2.py +++ b/doc/LectureNotes/_build/jupyter_execute/chapter2.py @@ -342,6 +342,88 @@ resize the matrices and set up a diagonal matrix as done in the above example +## Code for SVD and Inversion of Matrices + +How do we use the SVD to invert a matrix $\boldsymbol{X}^\boldsymbol{X}$ which is singular or near singular? +The simple answer is to use the linear algebra function for the pseudoinverse, that is + +#Ainv = np.linlag.pinv(A) + +Let us first look at a matrix which does not causes problems and write our own function where we just use the SVD. + +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))) + + + D = np.zeros((len(U),len(VT))) + D = np.diag(s) + 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] ]) +# Non-singular square matrix +X = np.array( [ [1,2,3],[2,4,5],[3,5,6]]) +print(X) +A = np.transpose(X) @ X +# Brute force inversion +B = np.linalg.pinv(A) # here we could use np.linalg.inv(A), try it! +C = SVDinv(A) +print(np.abs(B-C)) + +Although our matrix to invert $\boldsymbol{X}^T\boldsymbol{X}$ is a square matrix, our matrix may be singular. + +The pseudoinverse is the generalization of the matrix inverse for square matrices to +rectangular matrices where the number of rows and columns are not equal. + +It is also called the the Moore-Penrose Inverse after two independent discoverers of the method or the Generalized Inverse. +It is used for the calculation of the inverse for singular or near singular matrices and for rectangular matrices. + +Using the SVD we can obtain the pseudoinverse of a matrix $\boldsymbol{A}$ (labeled here as $\boldsymbol{A}_{\mathrm{PI}}$ + +$$ +\boldsymbol{A}_{\mathrm{PI}}= \boldsymbol{V}\boldsymbol{D}_{\mathrm{PI}}\boldsymbol{U}^T, +$$ + +where $\boldsymbol{D}_{\mathrm{PI}}$ can be calculated by creating a diagonal matrix from $\boldsymbol{Sigma}$ where we only keep the singular values (the non-zero values). The following code computes the pseudoinvers of the matrix based on the SVD. + +import numpy as np +# SVD inversion +def SVDinv(A): + U, s, VT = np.linalg.svd(A) + # reciprocals of singular values of s + d = 1.0 / s + # create m x n D matrix + D = np.zeros(A.shape) + # populate D with n x n diagonal matrix + D[:A.shape[1], :A.shape[1]] = np.diag(d) + UT = np.transpose(U) + V = np.transpose(VT) + return np.matmul(V,np.matmul(D.T,UT)) + + +A = np.array([ [0.3, 0.4], [0.5, 0.6], [0.7, 0.8],[0.9, 1.0]]) +print(A) +# Brute force inversion of super-collinear matrix +B = np.linalg.pinv(A) +print(B) +# Compare our own algorithm with pinv +C = SVDinv(A) +print(np.abs(C-B)) + +As you can see from these examples, our own decomposition based on the SVD agrees the pseudoinverse algorithm provided by **Numpy**. + + @@ -979,270 +1061,8 @@ values and the column vectors of $\boldsymbol{V}$. -## 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 -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\}. -$$ - -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 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 - -$$ -{\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 -$$ - -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 - -$$ -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, -$$ - -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. - -Here we have defined the norm-1 as - -$$ -\vert\vert \boldsymbol{x}\vert\vert_1 = \sum_i \vert x_i\vert. -$$ - -Using the matrix-vector expression for Ridge regression and dropping the parameter $1/n$ in front of the standard means squared error equation, we have - -$$ -C(\boldsymbol{X},\boldsymbol{\beta})=\left\{(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})^T(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})\right\}+\lambda\boldsymbol{\beta}^T\boldsymbol{\beta}, -$$ - -and -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 -the optimal parameters - -$$ -\hat{\boldsymbol{\beta}}_{\mathrm{Ridge}} = \left(\boldsymbol{X}^T\boldsymbol{X}+\lambda\boldsymbol{I}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}, -$$ - -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. - -When we compare this with the ordinary least squares result we have - -$$ -\hat{\boldsymbol{\beta}}_{\mathrm{OLS}} = \left(\boldsymbol{X}^T\boldsymbol{X}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}, -$$ - -which can lead to singular matrices. However, with the SVD, we can always compute the inverse of the matrix $\boldsymbol{X}^T\boldsymbol{X}$. - - -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. We will see that for specific values of $\lambda$, we may -even reduce the variance of the optimal parameters $\boldsymbol{\beta}$. These topics and other related ones, will be discussed after the more linear algebra oriented analysis here. - -Using our insights about the SVD of the design matrix $\boldsymbol{X}$ -We have already analyzed the OLS solutions in terms of the eigenvectors (the columns) of the right singular value matrix $\boldsymbol{U}$ as - -$$ -\tilde{\boldsymbol{y}}_{\mathrm{OLS}}=\boldsymbol{X}\boldsymbol{\beta} =\boldsymbol{U}\boldsymbol{U}^T\boldsymbol{y}. -$$ - -For Ridge regression this becomes - -$$ -\tilde{\boldsymbol{y}}_{\mathrm{Ridge}}=\boldsymbol{X}\boldsymbol{\beta}_{\mathrm{Ridge}} = \boldsymbol{U\Sigma V^T}\left(\boldsymbol{V}\boldsymbol{\Sigma}^2\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}$ from the SVD of the matrix $\boldsymbol{X}$. - - -Since $\lambda \geq 0$, it means that compared to OLS, we have - -$$ -\frac{\sigma_j^2}{\sigma_j^2+\lambda} \leq 1. -$$ - -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}$. - -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. More about this when we have covered the material on a statistical interpretation of various linear regression methods. - - - -For the sake of simplicity, let us assume that the design matrix is orthonormal, that is - -$$ -\boldsymbol{X}^T\boldsymbol{X}=(\boldsymbol{X}^T\boldsymbol{X})^{-1} =\boldsymbol{I}. -$$ - -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](https://arxiv.org/abs/1509.09169) article is highly recommended. -Similarly, [Mehta et al's article](https://arxiv.org/abs/1803.08823) is also recommended. - - -Using the matrix-vector expression for Lasso regression and dropping the parameter $1/n$ in front of the standard means squared error equation, we have the following **cost** function - -$$ -C(\boldsymbol{X},\boldsymbol{\beta})=\left\{(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})^T(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})\right\}+\lambda\vert\vert\boldsymbol{\beta}\vert\vert_1, -$$ - -Taking the derivative with respect to $\boldsymbol{\beta}$ and recalling that the derivative of the absolute value is (we drop the boldfaced vector symbol for simplicty) - -$$ -\frac{d \vert \beta\vert}{d \boldsymbol{\beta}}=\mathrm{sgn}(\boldsymbol{\beta})=\left\{\begin{array}{cc} 1 & \beta > 0 \\ 0 & \beta =0\\-1 & \beta < 0, \end{array}\right. -$$ - -we have that the derivative of the cost function is - -$$ -\frac{\partial C(\boldsymbol{X},\boldsymbol{\beta})}{\partial \boldsymbol{\beta}}=-2\boldsymbol{X}^T(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta})+\lambda sgn(\boldsymbol{\beta})=0, -$$ - -and reordering we have - -$$ -\boldsymbol{X}^T\boldsymbol{X}\boldsymbol{\beta})+\lambda sgn(\boldsymbol{\beta})=2\boldsymbol{X}^T(\boldsymbol{y}. -$$ - -This equation does not lead to a nice analytical equation as in either Ridge regression or ordinary least squares. This equation can however be solved by using standard convex optimization algorithms using for example the Python package [CVXOPT](https://cvxopt.org/). We will discuss this later. - -## Code for SVD and Inversion of Matrices - -How do we use the SVD to invert a matrix $\boldsymbol{X}^\boldsymbol{X}$ which is singular or near singular? -The simple answer is to use the linear algebra function for the pseudoinverse, that is - -#Ainv = np.linlag.pinv(A) - -Let us first look at a matrix which does not causes problems and write our own function where we just use the SVD. - -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))) - - - D = np.zeros((len(U),len(VT))) - D = np.diag(s) - 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] ]) -# Non-singular square matrix -X = np.array( [ [1,2,3],[2,4,5],[3,5,6]]) -print(X) -A = np.transpose(X) @ X -# Brute force inversion -B = np.linalg.inv(A) # here we could use np.linalg.pinv(A) -C = SVDinv(A) -print(np.abs(B-C)) - -Although our matrix to invert $\boldsymbol{X}^T\boldsymbol{X}$ is a square matrix, our matrix may be singular. - -The pseudoinverse is the generalization of the matrix inverse for square matrices to -rectangular matrices where the number of rows and columns are not equal. - -It is also called the the Moore-Penrose Inverse after two independent discoverers of the method or the Generalized Inverse. -It is used for the calculation of the inverse for singular or near singular matrices and for rectangular matrices. - -Using the SVD we can obtain the pseudoinverse of a matrix $\boldsymbol{A}$ (labeled here as $\boldsymbol{A}_{\mathrm{PI}}$ - -$$ -\boldsymbol{A}_{\mathrm{PI}}= \boldsymbol{V}\boldsymbol{D}_{\mathrm{PI}}\boldsymbol{U}^T, -$$ - -where $\boldsymbol{D}_{\mathrm{PI}}$ can be calculated by creating a diagonal matrix from $\boldsymbol{Sigma}$ where we only keep the singular values (the non-zero values). The following code computes the pseudoinvers of the matrix based on the SVD. - -import numpy as np -# SVD inversion -def SVDinv(A): - U, s, VT = np.linalg.svd(A) - # reciprocals of singular values of s - d = 1.0 / s - # create m x n D matrix - D = np.zeros(A.shape) - # populate D with n x n diagonal matrix - D[:A.shape[1], :A.shape[1]] = np.diag(d) - UT = np.transpose(U) - V = np.transpose(VT) - return np.matmul(V,np.matmul(D.T,UT)) - - -A = np.array([ [0.3, 0.4], [0.5, 0.6], [0.7, 0.8],[0.9, 1.0]]) -print(A) -# Brute force inversion of super-collinear matrix -B = np.linalg.pinv(A) -print(B) -# Compare our own algorithm with pinv -C = SVDinv(A) -print(np.abs(C-B)) - -As you can see from this example, our own decomposition based on the SVD agrees the pseudoinverse algorithm provided by **Numpy**. - - - -## Deriving the Ridge Regression Equations +## 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 our optimization problem is @@ -1614,6 +1434,7 @@ Using the constraint on $\beta_0$ and $\beta_1$ we can then find the optimal val Here we set up the OLS, Ridge and Lasso functionality in order to study the above example. Note that here we have opted for a set of values of $\lambda$, meaning that we need to perform a search in order to find the optimal values. First we study and compare the OLS and Ridge results. The next code compares all three methods. +We select values of the hyperparameter $\lambda\in [10^{-4},10^4]$ and compute the predicted values for ordinary least squares and Ridge regression. %matplotlib inline @@ -1667,7 +1488,13 @@ plt.ylabel('MSE') plt.legend() plt.show() -We see here that we reach a plateau. What is actually happening? +We see here that we reach a plateau for the Ridge results. Writing out the coefficients $\boldsymbol{\beta}$, we that they are getting smaller and smaller and our error stabilizes since the predicted values of $\tilde{\boldsymbol{y}}$ approach zero. + +This happens also for Lasso regression, as seen from the next code +output. The difference is that Lasso shrinks the values of $\beta$ to +zero at a much earlier stage and the results flatten out. We see that +Lasso gives also an excellent fit for small values of $\lambda$ and +shows rthe best performance of the three regression methods. import os import numpy as np @@ -1726,7 +1553,15 @@ plt.ylabel('MSE') plt.legend() plt.show() -Another Example, now with a polynomial fit. +We bring then back our exponential function example and study all +three regression methods. Depending on the level of noise, we note +that for small values of the hyperparameter $\lambda$ all three +methods produce the same mean squared error. Again, Lasso shrinks the +parameter values to zero much earlier than Ridge regression and the +Lasso results flatten out much earlier since all $\beta_j=0$ (check +this by printing the values). This case is an example of where OLS +performs best. Lasso and Ridge reproduce the OLS results for a limited +set of $\lambda$ values. import os import numpy as np @@ -1807,6 +1642,281 @@ plt.ylabel('MSE') plt.legend() plt.show() +Both these example send a clear message. The addition of a +shrinkage/regularization term implies that we need to perform a search +for the optimal values of $\lambda$. We will see this throughout these +series of lectures. + + +As a small addendum, we note that you can also solve this problem using the convex optimization package [CVXOPT](https://cvxopt.org/examples/mlbook/l1regls.html). This requires, in addition to having installed **CVXOPT**, you need to download the file *l1regl.py*. +The following code example solves the simpler problem we discussed above, where we have added the latter python file. + +from cvxopt import matrix, spdiag, mul, div, sqrt, normal, setseed +from cvxopt import blas, lapack, solvers, sparse, spmatrix +import math + +try: + import mosek + import sys + __MOSEK = True +except: __MOSEK = False + +if __MOSEK: + + def l1regls_mosek(A, b): + """ + + Returns the solution of l1-norm regularized least-squares problem + + minimize || A*x - b ||_2^2 + e'*u + + subject to -u <= x <= u + + """ + + m, n = A.size + + env = mosek.Env() + task = env.Task(0,0) + task.set_Stream(mosek.streamtype.log, lambda x: sys.stdout.write(x)) + + task.appendvars( 2*n) # number of variables + task.appendcons( 2*n) # number of constraints + + # input quadratic objective + Q = matrix(0.0, (n,n)) + blas.syrk(A, Q, alpha = 2.0, trans='T') + + I = [] + for i in range(n): + I.extend(range(i,n)) + + J = [] + for i in range(n): + J.extend((n-i)*[i]) + + task.putqobj(I, J, list(Q[matrix(I) + matrix(J)*n])) + task.putclist(range(2*n), list(-2*A.T*b) + n*[1.0]) # setup linear objective + + # input constraint matrix row by row + for i in range(n): + task.putarow( i, [i, n+i], [1.0, -1.0]) + task.putarow( n+i, [i, n+i], [1.0, 1.0]) + + # setup bounds on constraints + task.putboundslice(mosek.accmode.con, + 0, n, n*[mosek.boundkey.up], n*[0.0], n*[0.0]) + task.putboundslice(mosek.accmode.con, + n, 2*n, n*[mosek.boundkey.lo], n*[0.0], n*[0.0]) + + # setup variable bounds + task.putboundslice(mosek.accmode.var, + 0, 2*n, 2*n*[mosek.boundkey.fr], 2*n*[0.0], 2*n*[0.0]) + + # optimize the task + task.putobjsense(mosek.objsense.minimize) + task.optimize() + task.solutionsummary(mosek.streamtype.log) + x = n*[0.0] + task.getsolutionslice(mosek.soltype.itr, mosek.solitem.xx, 0, n, x) + + return matrix(x) + + def l1regls_mosek2(A, b): + """ + + Returns the solution of l1-norm regularized least-squares problem + + minimize w'*w + e'*u + + subject to -u <= x <= u + + A*x - w = b + + """ + + m, n = A.size + + env = mosek.Env() + task = env.Task(0,0) + task.set_Stream(mosek.streamtype.log, lambda x: sys.stdout.write(x)) + + task.appendvars(2*n + m) # number of variables + task.appendcons(2*n + m) # number of constraints + + # input quadratic objective + task.putqobj(range(2*n,2*n+m), range(2*n,2*n+m), m*[2.0]) + + task.putclist(range(2*n+m), n*[0.0] + n*[1.0] + m*[0.0]) # setup linear objective + + # input constraint matrix row by row + for i in range(n): + task.putarow( i, [i, n+i], [1.0, -1.0]) + task.putarow( n+i, [i, n+i], [1.0, 1.0]) + + for i in range(m): + task.putarow( 2*n+i, range(n) + [2*n+i], list(A[i,:]) + [-1.0]) + + # setup bounds on constraints + task.putboundslice(mosek.accmode.con, + 0, n, n*[mosek.boundkey.up], n*[0.0], n*[0.0]) + task.putboundslice(mosek.accmode.con, + n, 2*n, n*[mosek.boundkey.lo], n*[0.0], n*[0.0]) + task.putboundslice(mosek.accmode.con, + 2*n, 2*n+m, m*[mosek.boundkey.fx], list(b), list(b)) + + # setup variable bounds + task.putboundslice(mosek.accmode.var, 0, 2*n+m, (2*n+m)*[mosek.boundkey.fr], + (2*n+m)*[0.0], (2*n+m)*[0.0]) + + # optimize the task + task.putobjsense(mosek.objsense.minimize) + task.optimize() + task.solutionsummary(mosek.streamtype.log) + x = n*[0.0] + task.getsolutionslice(mosek.soltype.itr, mosek.solitem.xx, 0, n, x) + + return matrix(x) + +def l1regls(A, b): + """ + + Returns the solution of l1-norm regularized least-squares problem + + minimize || A*x - b ||_2^2 + || x ||_1. + + """ + + m, n = A.size + q = matrix(1.0, (2*n,1)) + q[:n] = -2.0 * A.T * b + + def P(u, v, alpha = 1.0, beta = 0.0 ): + """ + v := alpha * 2.0 * [ A'*A, 0; 0, 0 ] * u + beta * v + """ + v *= beta + v[:n] += alpha * 2.0 * A.T * (A * u[:n]) + + + def G(u, v, alpha=1.0, beta=0.0, trans='N'): + """ + v := alpha*[I, -I; -I, -I] * u + beta * v (trans = 'N' or 'T') + """ + + v *= beta + v[:n] += alpha*(u[:n] - u[n:]) + v[n:] += alpha*(-u[:n] - u[n:]) + + h = matrix(0.0, (2*n,1)) + + + # Customized solver for the KKT system + # + # [ 2.0*A'*A 0 I -I ] [x[:n] ] [bx[:n] ] + # [ 0 0 -I -I ] [x[n:] ] = [bx[n:] ]. + # [ I -I -D1^-1 0 ] [zl[:n]] [bzl[:n]] + # [ -I -I 0 -D2^-1 ] [zl[n:]] [bzl[n:]] + # + # where D1 = W['di'][:n]**2, D2 = W['di'][:n]**2. + # + # We first eliminate zl and x[n:]: + # + # ( 2*A'*A + 4*D1*D2*(D1+D2)^-1 ) * x[:n] = + # bx[:n] - (D2-D1)*(D1+D2)^-1 * bx[n:] + + # D1 * ( I + (D2-D1)*(D1+D2)^-1 ) * bzl[:n] - + # D2 * ( I - (D2-D1)*(D1+D2)^-1 ) * bzl[n:] + # + # x[n:] = (D1+D2)^-1 * ( bx[n:] - D1*bzl[:n] - D2*bzl[n:] ) + # - (D2-D1)*(D1+D2)^-1 * x[:n] + # + # zl[:n] = D1 * ( x[:n] - x[n:] - bzl[:n] ) + # zl[n:] = D2 * (-x[:n] - x[n:] - bzl[n:] ). + # + # The first equation has the form + # + # (A'*A + D)*x[:n] = rhs + # + # and is equivalent to + # + # [ D A' ] [ x:n] ] = [ rhs ] + # [ A -I ] [ v ] [ 0 ]. + # + # It can be solved as + # + # ( A*D^-1*A' + I ) * v = A * D^-1 * rhs + # x[:n] = D^-1 * ( rhs - A'*v ). + + S = matrix(0.0, (m,m)) + Asc = matrix(0.0, (m,n)) + v = matrix(0.0, (m,1)) + + def Fkkt(W): + + # Factor + # + # S = A*D^-1*A' + I + # + # where D = 2*D1*D2*(D1+D2)^-1, D1 = d[:n]**-2, D2 = d[n:]**-2. + + d1, d2 = W['di'][:n]**2, W['di'][n:]**2 + + # ds is square root of diagonal of D + ds = math.sqrt(2.0) * div( mul( W['di'][:n], W['di'][n:]), + sqrt(d1+d2) ) + d3 = div(d2 - d1, d1 + d2) + + # Asc = A*diag(d)^-1/2 + Asc = A * spdiag(ds**-1) + + # S = I + A * D^-1 * A' + blas.syrk(Asc, S) + S[::m+1] += 1.0 + lapack.potrf(S) + + def g(x, y, z): + + x[:n] = 0.5 * ( x[:n] - mul(d3, x[n:]) + + mul(d1, z[:n] + mul(d3, z[:n])) - mul(d2, z[n:] - + mul(d3, z[n:])) ) + x[:n] = div( x[:n], ds) + + # Solve + # + # S * v = 0.5 * A * D^-1 * ( bx[:n] - + # (D2-D1)*(D1+D2)^-1 * bx[n:] + + # D1 * ( I + (D2-D1)*(D1+D2)^-1 ) * bzl[:n] - + # D2 * ( I - (D2-D1)*(D1+D2)^-1 ) * bzl[n:] ) + + blas.gemv(Asc, x, v) + lapack.potrs(S, v) + + # x[:n] = D^-1 * ( rhs - A'*v ). + blas.gemv(Asc, v, x, alpha=-1.0, beta=1.0, trans='T') + x[:n] = div(x[:n], ds) + + # x[n:] = (D1+D2)^-1 * ( bx[n:] - D1*bzl[:n] - D2*bzl[n:] ) + # - (D2-D1)*(D1+D2)^-1 * x[:n] + x[n:] = div( x[n:] - mul(d1, z[:n]) - mul(d2, z[n:]), d1+d2 )\ + - mul( d3, x[:n] ) + + # zl[:n] = D1^1/2 * ( x[:n] - x[n:] - bzl[:n] ) + # zl[n:] = D2^1/2 * ( -x[:n] - x[n:] - bzl[n:] ). + z[:n] = mul( W['di'][:n], x[:n] - x[n:] - z[:n] ) + z[n:] = mul( W['di'][n:], -x[:n] - x[n:] - z[n:] ) + + return g + + return solvers.coneqp(P, q, G, h, kktsolver = Fkkt)['x'][:n] + +Then we call the above functions and solve the problem, as done here + +from cvxopt import matrix, normal + +X = matrix( [ [ 2, 0, 1], [0, 1, 3]]) +y = matrix( [4, 2, 3]) +x = l1regls(X,y) + ## Linking the regression analysis with a statistical interpretation We will now couple the discussions of ordinary least squares, Ridge diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter2_245_2.png b/doc/LectureNotes/_build/jupyter_execute/chapter2_245_2.png new file mode 100644 index 000000000..dc3a3ce3e Binary files /dev/null and b/doc/LectureNotes/_build/jupyter_execute/chapter2_245_2.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter2_247_1.png b/doc/LectureNotes/_build/jupyter_execute/chapter2_247_1.png new file mode 100644 index 000000000..ac2df9e69 Binary files /dev/null and b/doc/LectureNotes/_build/jupyter_execute/chapter2_247_1.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter2_249_1.png b/doc/LectureNotes/_build/jupyter_execute/chapter2_249_1.png new file mode 100644 index 000000000..9666ad291 Binary files /dev/null and b/doc/LectureNotes/_build/jupyter_execute/chapter2_249_1.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter2_313_2.png b/doc/LectureNotes/_build/jupyter_execute/chapter2_313_2.png new file mode 100644 index 000000000..07584f6bb Binary files /dev/null and b/doc/LectureNotes/_build/jupyter_execute/chapter2_313_2.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter3.ipynb b/doc/LectureNotes/_build/jupyter_execute/chapter3.ipynb index 11daf9011..c7de9b6cd 100644 --- a/doc/LectureNotes/_build/jupyter_execute/chapter3.ipynb +++ b/doc/LectureNotes/_build/jupyter_execute/chapter3.ipynb @@ -397,10 +397,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "Runtime: 0.139462 sec\n", + "Runtime: 0.136687 sec\n", "Jackknife Statistics :\n", "original bias std. error\n", - " 100.065 100.055 0.149894\n" + " 99.9196 99.9096 0.149076\n" ] } ], @@ -544,10 +544,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "Runtime: 2.40859 sec\n", + "Runtime: 1.78082 sec\n", "Bootstrap Statistics :\n", "original bias std. error\n", - " 100.148 14.7733 100.151 0.147722\n" + " 99.9769 14.9969 99.9765 0.149832\n" ] }, { @@ -567,7 +567,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter3_25_2.png b/doc/LectureNotes/_build/jupyter_execute/chapter3_25_2.png index 98e9e3a97..b77a1febb 100644 Binary files a/doc/LectureNotes/_build/jupyter_execute/chapter3_25_2.png and b/doc/LectureNotes/_build/jupyter_execute/chapter3_25_2.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter4.ipynb b/doc/LectureNotes/_build/jupyter_execute/chapter4.ipynb index 06422f723..20eae65ba 100644 --- a/doc/LectureNotes/_build/jupyter_execute/chapter4.ipynb +++ b/doc/LectureNotes/_build/jupyter_execute/chapter4.ipynb @@ -149,15 +149,148 @@ }, "outputs": [ { - "ename": "FileNotFoundError", - "evalue": "[Errno 2] No such file or directory: 'DataFiles/chddata.csv'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msavefig\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage_path\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfig_id\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m\".png\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mformat\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'png'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 40\u001b[0;31m \u001b[0minfile\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata_path\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"chddata.csv\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'r'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 41\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[0;31m# Read the chd data as csv file and organize the data into arrays with age group, age, and chd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'DataFiles/chddata.csv'" - ] + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    IDAgeAgegroupCHD
    012110
    122310
    232511
    342910
    452110
    ...............
    95966181
    96976981
    97986581
    98996481
    991006380
    \n", + "

    100 rows × 4 columns

    \n", + "
    " + ], + "text/plain": [ + " ID Age Agegroup CHD\n", + "0 1 21 1 0\n", + "1 2 23 1 0\n", + "2 3 25 1 1\n", + "3 4 29 1 0\n", + "4 5 21 1 0\n", + ".. ... ... ... ...\n", + "95 96 61 8 1\n", + "96 97 69 8 1\n", + "97 98 65 8 1\n", + "98 99 64 8 1\n", + "99 100 63 8 0\n", + "\n", + "[100 rows x 4 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfgAAAFnCAYAAABKGFvpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA0yElEQVR4nO3deWAU9f3/8dfm2BCygYTNcsQTubTliMiXrxEroHwVLa3iWRB/X0FBUdCKEFBOEVRAsKJSQHphsdVvkcsoINaoFRAFwqEcEuQMYA5ybK5NNvP7g7IlkGSXZCcJw/PxF7sz+5n3vGd2XzufTILNMAxDAADAUkLquwAAABB8BDwAABZEwAMAYEEEPAAAFkTAAwBgQQQ8AAAWRMCjWitXrlS3bt3k8XhM31ZKSor69u2rhx56yPfcpEmTtHz58qBt49tvv9WQIUMkSZ9++uk52wvm+A3Viy++qG7duumDDz6och2v16sFCxboN7/5jR566CHdf//9Gj9+vLZv316HldaN7du3684779TNN99c36VU6sSJE7r//vvVoUMH33OrVq3S+PHj67EqXBAMoBpPPfWU0aVLF+PTTz+tk+0tXbrUGDRokO+x2+02SktL/b5u0KBBxtKlS/2uV15ebuTl5VW5vfPVvn174/Dhw1WO31D569fo0aONZ5991igpKTEMwzBKSkqMcePGGb/+9a/rqsQ6tXHjRqN37951tr1Az9fTDh8+bLRv3973uKyszHC73WaUBgvhCh5Vys/PV2hoqHr37q2PP/64XmqIiopSWFhY0Maz2WyKjo4O2nh1PX5d+Prrr7V27VpNnjxZdrtdkmS32zV+/HjfY9Sv0NBQRUVF1XcZaOCC98kJy/n000916623KiwsTElJSfJ4PL4P+Pnz52vVqlVq0aKFrr/+es2ePVvdu3fXH/7wB9lsNs2ZM0dbt26VzWZTjx499OSTT8pms52zjcLCQk2cOFFpaWlq2bJlhWnI5cuXa+7cuerevbteeeUVFRUVady4ccrKypLX61WnTp30/PPPa/bs2dq1a5cyMjK0bNkyPfLII0pJSdGHH36oQYMGad++fdq5c6d69+6t7777Ttu2bdOePXt82zEMQ9OmTdN3332nkpISvfjii/r5z3+umTNn6v3339fzzz+vu+++W5MmTdKyZcu0aNEi/fd//7ceffRRSdKo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8fHxuvbaa6sctyavOe2KK67Q7t275fF4VFZWpg0bNgS073369FF6err+8Y9/6MYbbwzoNWfr0qWLWrVqpbVr10o6FeJPPvmkDhw4UOPj4u98Pfs99uGHH1Y51vbt2zV37lxJp77MtW7dWl6v13f+nfnjsd///ve+vytx+eWXa9u2bZKk3bt3V5i1euqpp1RUVKSwsDB17drV917u37+/Pv/8c+Xm5kqS9u/fr+HDhwe0z6h7NoMfnuAM+fn5GjRokNxutyZOnOi7uzclJUXTpk3TiRMndM8996hly5ZauXKlWrVqpZ49e2r69Om+kCwtLdXrr7+uTZs2KSIiQi1bttTUqVMVGRl5zvZO30W/b98+uVwutWnTRkuXLlW/fv2UkJCguXPnqqSkRIMGDVJiYqJee+01GYYht9utHj166Nlnn5UkffLJJ3r11VcVHR2t0aNH64svvtD777+vuLg4PfDAAxo8eLCys7P1+OOPa9u2berevbv+93//V6+++qpiY2PVpk0b7du3Tx6PR1OnTlXHjh0lnQr/3/72t2ratKl69+6tJUuWKDo6WtOnT1fHjh316quv6vPPP5fD4dCcOXP09NNP+8b/85//rOLiYr300kvav3+/vF6v+vTpo6FDh8pms2nIkCH66quv1KVLF/3hD3/QI488om3btqlHjx764x//eE6v/va3v+ntt99Wu3btdMUVV+gvf/mLevTooeeff17PPvus9u/fr/79++vee+9VUlKSMjMzdf/99yspKUnbt2/XlClTZLfb1a5dO+3bt08nT57UmDFjzplSlk7Nurz99ttat26dGjVqpNLS0gp3YEunZnnefPPNc+6IX7VqlV577TWVlJSoR48emjlz5nm95sknn1RoaKjmzp2riIgIPfPMM7rllls0ZswY7d+/X+3atZPX61VqaqrvNxkWLVqkiIgI9e3bV0lJSRX2Zfz48YqMjNSECRMqPef37dvnt3+HDh3SCy+8oJKSEpWXl+vuu+/WvffeG/BxSUhI0BtvvOGbgTj7fK1sFmr+/PlauXKl7zdV5syZo+7du2v8+PEaO3as9u/fr969e2vixImaNm2asrKyfFPmL730kpo0aaKCggK99NJLSktLU1hYmK655hqNGzdOoaGh2rx5syZMmKC4uDh16NBBq1evltPp1OzZs/XZZ5/p008/VXh4uIqL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pNDQUHXr1k1ff/0152otRUVF6aqrrlJ0dLQk6brrrtPevXtVXFws499/AZ1ztXZWr17tC/ianK8XxdmckpKib7/9VuPHj9dPP/2k9PR09ezZU1u3blWrVq20ZcsW9ezZs77LvKDs27dPR44cUa9evSRJl156qY4cOUJfa2H48OG+f5eUlKiwsFAPP/ywPB6Ptm7dqm7dumnPnj26+uqruXo/D2lpadqyZYvuu+8+SdLBgwfVp08fztVa6tKli3JycuT1ehUaGqr09HS1a9dOOTk52rFjhzp37kxfa+Hrr79WQkKCwsPDJalG56vl/7OZnTt36qGHHlLHjh0lSYWFhXrwwQd1880369VXX1V8fLwOHz6sZ599ljtoz8OhQ4c0c+ZM/exnP1NZWZnS0tI0YcIEhYeH09daWrNmjZYsWaLS0lI9+OCD6tOnj2bMmCGXy6VDhw7pscce4y7683DixAm9+OKLuuaaa+R2u1VWVqbnnntOeXl5nKu19Mknn2jjxo2KjY3VsWPHNHHiRGVmZuqtt97SZZddpmPHjmncuHHcRV8Do0aN0oQJE9SsWTNJUk5Oznmfr5YPeAAALkYXzc/gAQC4mBDwAABYEAEPAIAFEfAAAFgQAQ8AgAUR8AAqGD58uCZNmlTfZQCoJQIegE9GRobS09OVnJysoqKi+i4HQC3we/AAfBYuXKiuXbtqzJgxevrpp3XXXXdJkt555x2tXbtW7dq1U0lJib744gs98cQTGjBggD766COtX79eMTExOnHihJKSkuRyuep3RwBwBQ/gP07/Sdy77rpLS5culSTt3r1b8+fP19tvv61JkyYpLi5OV155pQYMGKC0tDS99dZbmjp1qkaPHq3u3btr1qxZ9bwXAKSL5G/RA/Dv22+/VUJCgiSpf//+mj9/vg4ePKhNmzapY8eOatSokSSpW7du2rJliyRpw4YNKikp0ZQpUyRJBQUFKi0trY/yAZyFgAcg6dT/RV9eXq7p06dLklwul5YuXer3711feeWVmjp1qu/xmf/zHYD6Q8ADkNvtVnFxsV599VXfc126dNGMGTP09ttva8GCBSouLlajRo20efNm3zqJiYl688035Xa75XA49P333+vdd9/VtGnT6mM3AJyBgAcucsXFxRo9erQKCgp04sQJtWjRQpL0ww8/6KefftLChQs1bNgwPfroo7ryyisVFRXl+y8s27Rpo4kTJyopKUmXX3658vLyNGbMmPrcHQD/xl30APxav369brjhBknSkiVLdPToUSUlJdVzVQCqQ8AD8Oupp55S8+bNZbPZlJubqwkTJqhJkyb1XRaAahDwAABYEL8HDwCABRHwAABYEAEPAIAFEfAAAFgQAQ8AgAUR8AAAWND/B+FnOmO6n4HAAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter4_5_1.png" + } + }, + "output_type": "display_data" } ], "source": [ @@ -228,12 +361,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "collapsed": false, "editable": true }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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fdyuXbug1WoxcuRIJCcno3v37ti5c6d0owkiIiIqOLMdQ2/VqtUTd/B6VGRkpLRFrtFooFarpct2iIiIqHBkOykuKSkp192gnJ2dn7gJRF54Uj4REdGTZDsprkyZMrmebKTVavO8Q9PjVCoVEhLSzBmtWHh6ulj8OJQwBoDjKEmUMAZAGeNQwhgAZY3DlGLdQr9//760Fe7n54fo6GgAOdeK6nQ61KxZszjjEBERKYbZCv3YsWPYunUrEhISsHjxYmRmZmLz5s2YP38+AKB169ZwcnLCokWLMHv2bMyaNYsnxBERET0js+1yb9SokXR7xYf8/f2lr62srBAaGmqujyciIipVeKc4IiIiBWChExERKQALnYiISAFY6ERERArAQiciIlIAFjoREZECsNCJiIgUgIVORESkACx0IiIiBWChExERKQALnYiISAFY6ERERArAQiciIlIAFjoREZECsNCJiIgUgIVORESkACx0IiIiBWChExERKQALnYiISAFY6ERERArAQiciIlIAFjoREZECsNCJiIgUgIVORESkACx0IiIiBWChExERKQALnYiISAFY6ERERArAQiciIlIAFjoREZECsNCJiIgUgIVORESkACx0IiIiBWChExERKQALnYiISAFY6ERERArAQiciIlIAFjoREZECsNCJiIgUgIVORESkACx0IiIiBWChExERKQALnYiISAFY6ERERArAQiciIlIAFjoREZECsNCJiIgUgIVORESkACx0IiIiBWChExERKQALnYiISAFszLnwQ4cOYffu3fDw8IBKpUJISEiu92/cuIHZs2ejXr16OHfuHNq1a4eWLVuaMxIREZEima3QMzIyMHnyZERERECtVmPYsGE4fPgwfH19pXmWL1+OV155BX369MFff/2Fjz/+mIVORET0DMy2yz06OhqVKlWCWq0GAPj4+CAyMjLXPGXLlkVSUhIAICkpCXXq1DFXHCIiKk0MBlifPwckJMidpNiYbQs9MTERTk5O0rSzszMSExNzzdO3b18MHToUM2bMwJkzZzBkyBBzxSEiIqUSAla3bsLmVBRsT0bl/H/0KajupwNNmwKbdsqdsFiYrdA9PDyQnp4uTWu1Wnh4eOSaZ8yYMejatSvatWuHpKQkvPPOO9i7dy80Gs1Tl+3p6WKOyMVOCeNQwhgAjqMkUcIYAGWMo8SO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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter4_7_0.png" + } + }, + "output_type": "display_data" + } + ], "source": [ "agegroupmean = np.array([0.1, 0.133, 0.250, 0.333, 0.462, 0.625, 0.765, 0.800])\n", "group = np.array([1, 2, 3, 4, 5, 6, 7, 8])\n", @@ -316,12 +464,55 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "collapsed": false, "editable": true }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter4_13_0.png" + } + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfIAAAFnCAYAAABdOssgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAlPUlEQVR4nO3dfXRU9Z3H8c+QMDEPQJIhgIFELNoUwQhZiqYqhIcjrkdrU6rLKlZFShdNdAtbedA1yCJrolCWokUoPahV61EeshzoAZ8CatIIBGrREHyAgEYkz2SSQBJy9w+WayNCLp3MzL2T9+ucnpM7987MN99GPvP73d/c6zIMwxAAAHCkHsEuAAAA/OMIcgAAHIwgBwDAwQhyAAAcjCAHAMDBCHIAAByMIAcgSdq5c6cyMzP1s5/9THPnzg3oez/22GPauHFjQN8TCBUEOeAQc+fO1W9/+1u/vf5vfvMbTZs2Ta+//rpSU1P99j7r16/XXXfd1eGxOXPm6Oabb/bbewKhLDzYBQCwh6NHj6pfv36SpDvuuCOg7x0dHR3Q9wNCiYsruwH20d7erscff1wHDhxQjx49NHjwYD3yyCN67bXXtGrVKkVERGjgwIH68Y9/rNtuu0379u3Tf//3f8vlciksLEyPPfaYhgwZohUrVuiVV15RRkaGamtr9fXXX8vj8ejJJ59UfHz8We+blZWl7du363vf+54SEhJ07bXX6ve//72mTJmi7OxsLV++XC+88ILmz5+vn/70p+brT5o0SQ0NDSotLdWwYcOUm5trvub//u//6o9//KMuuugiSdLMmTPNGquqqjR06FB9//vf15VXXqnly5dr9OjRevLJJyVJH374ofLy8mQYhlwulx5++GGlpqbqrbfe0lNPPaW+ffvqqquu0s6dO9WjRw8988wz8ng8gfk/CbAbA4BtFBQUGPfdd5+5ff/99xtHjhwxDMMw5syZYyxfvtzcd/z4cePqq682CgsLDcMwjHfeece44YYbjFOnTpnHT5w40WhoaDAMwzAeffRRY9asWed873Hjxhl/+ctfzO1vv9/UqVONdevWddh/6623GidPnjROnDhhjB492igpKTEMwzB2795t/OhHPzKqq6sNwzCMP//5z8acOXMMwzCMdevWGVOnTu3w3suXLzf3Hz9+3Bg9erRZy86dO43Ro0cb9fX15vOvuuoq4/Dhw4ZhGMb06dONlStXnq+tQEjjHDlgI71799aBAwf0/vvvq729XUuXLlViYuJ3HvvOO+8oKipK6enpkqSMjAxVVVXpr3/9q3nM2LFjFRMTI0m69dZbtXXrVp06darL6r366qvldrsVERGhSy65RF988YWk0+fBx4wZY47+J06cqH/913+19JrvvPOOYmJidPXVV0uSRo0apT59+ujtt982j7n00kuVlJQkSUpJSTHfF+iOCHLARkaOHKn/+q//0urVqzVu3DitWbNGxjnOfh09elT19fW66667zP/Fx8errq7OPKZPnz7mz7GxsWptbVVtbW2X1XvmQ4IkRUREqLW11azt76fww8PDddVVV1l6zW8/V5Li4+N19OjRTt8X6I5Y7AbYSENDg0aPHq2xY8fq8OHDmj59uvr376/JkyefdezFF1+sAQMG6MUXXzQf83q9crvd5nZ9fb35c21trXr27Km4uDhLtfTs2VMtLS3m9vHjxy3/HhdffLFqamrM7ba2Nn366af6wQ9+cMHPlaSamhoNGDDA8vsD3QkjcsBG3njjDb366quSpOTkZPXv31/t7e2STq/sbm5uVlNTk2bPnq1x48aptrZWH374oSSpqalJP//5z+X1es3Xe++998ztjRs3atKkSQoLC7NUy6BBg/TJJ59IksrLy1VeXm7598jMzNSOHTvMQN6yZYvWr1/f4feQpOzsbLW1tXV47rhx49TY2KidO3dKknbv3q36+nqNHz/e8vsD3Qmr1gEb+fzzz/Xkk0/qxIkTampqUkpKinJycuR2u7Vnzx7NmzdPMTExuvvuu3XLLbdo3759ys3NlWEYMgxD06dP17hx4ySd/t55ZGSkqqur9eWXXyo+Pl65ubmdrlq/5ZZbNH36dFVVVemBBx6QYRgaNWqUPvzwQ1VVVWnu3Lk6ePCgfv/73ysiIkLz5s1TWVmZ1q5dq759+yonJ0fp6enKz8/Xyy+/LLfbrbi4OC1evFgxMTGqr6/XPffco4iICA0fPlzDhw/X8uXLdfLkSU2dOlUzZ840f6/29vYOq9aLior0+OOPq6qqSj//+c81bNgwPfHEEzp58qSmT5+ue++9N9D/lwFBR5ADIWru3LkaOHCgsrOzg10KAD9iah0AAAdjsRsQglasWKF3331XERERGjBggG677bZglwTAT7pkar2yslLLli3T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RpADAOBgBDkAAA5GkAMA4GDhvjy5rq5OS5YsUVJSkg4dOqRZs2apb9++Zx03fvx4DRw4UJLUr18/LVmyRJL0xRdf6Nlnn9Ull1yiL7/8UnPmzFF0dLQvJQEA0K34NCJfunSp0tPTNWPGDE2cOFG5ubnfeVxmZqZefPFFvfjii2aIS1JOTo6mTJmiX/7yl7r88su1evVqX8oBAKDb8SnIt2/frpEjR0qS0tLStH379u88bteuXVq9erWWLVumkpISSVJra6uKi4t15ZVXdvp8AADw3TqdWr/vvvtUVVV11uMPPvigqqurzanwmJgY1dfXq62tTeHhHV929uzZSk1NVXNzszIzM/Xcc88pMjJSF110kVwul/n86upqS0UnJPSydJydOLFmJ6LP/keP/Y8eB0ao9LnTIF+zZs0593k8HjU2Nqp3797yer3q06fPWSEuSampqZKkyMhIDR06VCUlJbr55pt14sQJGYYhl8slr9crj8fjw68CAED349PU+tixY7Vnzx5JUklJicaOHStJam9vV0VFhSSpqKhIO3bsMJ9TXl6upKQk9ezZU1dffbX+9re/nfV8AABgjcswDOMffXJdXZ2efvppJSYm6siRI5o9e7b69u2r0tJSPfzww9q0aZPKysq0YsUKDRs2TMeOHVO/fv30b//2b5JOr1p/5plnlJSUpK+++kpz585l1ToAABfApyAHAADBxQVhAABwMIIcAAAH8+nKbrhwv/vd77R27VoVFxcHu5SQs3jxYkVGRioqKkr79+/X/PnzlZCQEOyyQkJhYaG2bdsmj8cjl8ulrKysYJcUcg4fPqxly5bpiiuu0NGjRxUbG0uf/eTEiRO67bbbdN1112nOnDnBLsdnBHkAFRcXq76+PthlhKzIyEj96le/kiStWrVKK1eu1H/+538GuSrna25uVk5OjjZv3iy3263s7GwVFRUpPT092KWFlLq6Ot10002aOHGiJOmmm25SRkaGhg8fHuTKQs+ZD0yhgqn1AKmqqtKWLVs0derUYJcSss6EuCQZhqGoqKggVhM69u7dq8TERLndbkmnr8JYUFAQ3KJCUGpqqhni0umv8UZGRgaxotC0ceNGpaWladCgQcEupcswIu9C57sK3ltvvaU5c+aooaEhCJWFjvP1eMKECZKk48eP67333tNvf/vbQJcXkv7+Co7ShV2FEf+YN954Q9ddd52GDBkS7FJCyqeffqrPP/9cs2bNUllZWbDL6TIEeRc611Xw/va3vyk8PFyvvvqq6uvrdfLkSa1atUo33HCDBg8eHNgiHe58VxqUpIaGBj3++ONavHixYmNjA1NUiDtzBcczuAqjf/3lL39RcXGx5s+fH+xSQs4bb7wht9utVatWaffu3WptbdXatWt1zz33BLs0nxDkAXDllVeaN4f54osv9Prrr2vGjBlBrir01NTUaPHixXr44YfVv39/bd26VZMmTQp2WY43YsQIVVRUqKWlRW63WyUlJbrjjjuCXVZIKigo0K5du/TII4/o2LFjqqioMG9MBd/NnDnT/PnkyZNqampyfIhLXBAmoMrLy/WnP/1Jr7zyimbMmKF77rmH87hdKDMzU21tbeZIPDo6WitXrgxuUSHi/fff19atWxUXF6eePXuymtoP9u3bp7vuustc3NbU1KQ777xTP/3pT4NcWejZunWrXnrpJbW2turOO+/UzTffHOySfEKQAwDgYKxaBwDAwQhyAAAcjCAHAMDBCHIAAByMIAcAwMEIcgAAHIwgBwDAwbiyG4BOrV+/Xm+99Zb69++v+vp6bdmyRfn5+fr+978f7NKAbo8LwgDo1J49exQbG6tLL71U2dnZSk5O1q9//etglwVABDmAC/Daa6/p5Zdf1quvvmre1hRAcDG1DsCSgwcPasmSJXrppZcIccBGWOwGoFOtra2aPXu2srOzNWTIEH322WfatWtXsMsCIEbkACxYu3atPvvsM3322WdauHChvv76a02YMEGjRo0KdmlAt8c5cgAAHIypdQAAHIwgBwDAwQhyAAAcjCAHAMDBCHIAAByMIAcAwMEIcgAAHIwgBwDAwf4PI7ucjeDSrdsAAAAASUVORK5CYII=\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter4_13_1.png" + } + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfIAAAFnCAYAAABdOssgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA3KklEQVR4nO3deXxU9b3/8ddkJpOd7CwJCTthkQiISu7FgnultYpcW+vS+pOf9NqCbdEKLi3Uh+WW9eFtaV2otV6vW1sLFrEVlx+gEkEMiGwBgYSQEMg2SSbbJJnz+yMwNcKQgUlyZnk//yEz5zszn/kwk3fO92wWwzAMREREJChFmF2AiIiIXDgFuYiISBBTkIuIiAQxBbmIiEgQU5CLiIgEMQW5iIhIEFOQi4SoOXPmMG7cOLZu3erzY5YvX84tt9zCjTfeyHvvvdeD1XXW0tLC1KlTaWpq6rXXFAkVCnKRAHLXXXfxt7/9rVuea9WqVaSnp/s8/ujRo7z00ku8+uqr/Pa3vyUmJqZb6jibr77PqKgo1q1b16OvKRKqbGYXICKBoby8nOTkZOx2O4MHD2bw4MG9+vp9+vTp1dcTCRUKcpEAsWLFCvbt20dFRQVr1qxh1qxZXHrppSxatIjKykpaWloYMWIEP//5z7HZbKxatYpXXnmF66+/nvr6evbt28fYsWNZsmRJp+f97LPPeOGFFzh48CB33303d9xxxxmvvWvXLn71q19RUVHBXXfdxTXXXMOmTZv46KOPeO+990hLS+N73/sen332GYWFhbhcLmbNmsW2bdv4xS9+wcaNGzly5Ajz58/n2muvBaChoYH/+q//4tChQwAMGTKEBx98kOeff/6M97lu3To2bNjAH/7wBy6//HIMw+C5555jw4YNWK1WBg8ezKOPPkp8fDyLFi3izTff5M477+Tw4cMUFhZy/fXXM2/evJ7/TxIJRIaIBIw777zTeP311z23a2pqjLVr13puz58/3/jzn//c6fZNN91ktLS0GM3NzcZll11mFBQUeJZfeeWVxsKFCw3DMIzPPvvMGD9+vNHa2nrW1/7444+NK6+8stN9I0eONEpKSgzDMIySkhJj5MiRZyx/9tlnDcMwjPXr1xvXXXedZ9ljjz1mLFiwwDAMw2hvbzd+8IMfGB9//PFZ3+fpWk8vX7NmjTF9+nSjsbHRMAzDeOSRR4yHH364U5/uvfdew+12GydOnDDGjBljlJeXn/V9iYQ6bSMXCWCJiYmUlZXx3e9+l7vuuott27axZ8+eTmMuv/xy7HY7UVFRDBo0iGPHjnVafsUVVwAwatQoGhsbqaqq6tYaTz9/Tk4OpaWlALjdbtauXcstt9wCQEREBAsWLGD48OE+Pecbb7zBDTfc4Nlmfsstt/D3v/+d9vZ2z5gpU6ZgsVjo27cvSUlJntcWCTeaWhcJYGvWrOG1115j7dq1JCUl8dvf/vaMwIqPj/f8HBUVRWtr61mX2+12gDOW++v083/5taurq3G5XKSkpHjGnc829/Ly8k6PTUlJobW1lcrKSvr169fpdb/62iLhRmvkIgFs165d5ObmkpSUBEBbW1uvvn5kZCQulwuA+vp6nx+XkpKC3W6nurrac9+JEyeoqKjw6fEDBgzo9Njq6moiIyNJS0vzuQaRcKEgFwkgcXFxNDU1UVRUxJIlSxg0aBD79+/H5XLR1tZGfn5+r9aTmZnJwYMHAdi0aZPPj4uIiODmm2/2HGLmdrt59NFHqaysBM58n181Y8YM/vnPf9Lc3AzA2rVr+da3voXVavX3LYmEHAW5SACZOXMm//M//8ODDz7I1KlT+c53vsOIESO46aabmDdvHunp6XzwwQc8//zzPP/883zwwQesWbOGd955h1WrVrFv3z6effZZ8vPzeeihh6ioqGDx4sWUlJQwZ84cAObNm4fD4ej0urt27WLx4sWevdYLCws9Y5ctW8a9995LQkIC0HEMeHt7O/fcc49nTH19vWev8dP3L1iwgIiICL773e9y++23c+WVVzJ69Oizvs8HHnjAU+vu3bu58cYbmTFjBt///vf57ne/S1tbG4888ggAS5cu9bzPHTt2sGjRIs9jv/jii579DxIJQBbDMAyzixAREZELozVyERGRIKYgFxERCWLdcvhZRUUFTz75JPv37+f1118/Y7nb7WblypXExcVRWlrKf/zHfzB+/HgAtmzZwoYNG0hNTcVisXi244mIiEjXuiXIP/30U66++mr27dt31uX/+Mc/cDqdPPjggzgcDr7zne/w1ltv4XK5WLhwIevXr8dutzN37lzy8/PJy8vrjrJERERCXrdMrX/9618nLi7O6/KNGzd61sCTkpKw2+0cPHiQnTt3kpGR4TlRxcSJE9m4cWN3lCQiIhIWeuXM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bNYIn59PRCTY+BXkY8aM6XLMzp07ycjIwG7v2Nt34sSJbNy4kby8PDZt2sR9993nuX/BggU+ve6Pf/PhhRctAcUaYcEeacUeGUFMlI3k+CiiTv0cE20jJspGbJSNuOhI4mI6/u0TaychNpKEWDsxUVbtiCYiYa3LIJ81axaVlZVn3H///fdz9dVXd/kCVVVVxMXFeW7Hx8dTVVV1xrL4+Hhqa2tpa2vDZjt3WetW3NTl64r4Iz09wewSApZ645164516452/vekyyJ977jm/XiA1NZWGhn/tHex0OklNTe20rE+fPjidThITE7sMcREREfmXHtt4WFJSAsD48eMpKyvD5erYVl1QUMC0adMAmDp1Kjt27PDcP3Xq1J4qR0REJCRZDONcu1mdW21tLS+99BLPP/88N910E9/85jcZP3481dXV3HTTTbz77rtERUXx0Ucf8fbbb5OcnExkZGSnvdaXL19ORkYGJSUlPPDAA9prXURE5Dz4FeQiIiJiLh2XIyIiEsQU5CIiIkEs5HcRd7lcPP/888TGxnLw4EGSk5P56U9/anZZAeWpp57iT3/6E1u3bjW7lICxePFiYmJiiI2NZf/+/TzyyCOkp6ebXZapvJ2hMdwdPXqUJ598kjFjxlBeXk5SUpJ68yXNzc3ceuutTJkyhfnz55tdTkA5fPgw69evJyoqik8++YS5c+eSm5t73s8T8kG+evVqLrvsMi699FKg42x08i9bt26ltrbW7DICTkxMjOcPvmeffZann36an//85yZXZZ5znaEx3DkcDqZPn84111wDwPTp05k2bRoXXXSRyZUFhtN/5Ehn7e3t/PrXv+bpp58mIiKCm2+++YIPvw75IH/zzTfJyMhgz549OBwO7rrrLrNLChiVlZW89dZb3HvvvaxZs8bscgLKl2dtDMMgNjbWxGrMd64zNIa7r65Bud3uc562OpysXbuWiRMnUlhYSGNjo9nlBJTPP/8cwzB48cUXaW5uJikpiW9/+9sX9FwhEeTnOvtcaWkpFouFu+++my1btvCTn/yEF1980YQqzXGu3rz33nvMnz+f+vrwvNKXL2ctrKur48MPP+S3v/1tb5cXUM51hkb5l3feeYcpU6YwbNgws0sx3RdffMHhw4eZN28ehYWFZpcTcMrKyti5cycrV64kISGBBx98kMjISG655Zbzfq6QCPJznX0uPj7e8xfzJZdcwvbt22lvb8dqtfZWeaby1pvPP/8cm83Ga6+9Rm1tLS0tLTz77LNcd911DB48uHeLNElXZy2sr6/nl7/8JYsXLyYpKal3igpQ5zpDo3T4+OOP2bp1K4888ojZpQSEd955B7vdzrPPPsunn35Ka2srf/rTn7j77rvNLi0gxMXFMXToUBISOk7Peskll7Bt27bwDfJzycvLo6SkhKFDh1JaWkp2dnbYhPi5jBs3jnHjxgFw7Ngx/vrXvzJ79myTqwoc1dXVLF68mIceeoh+/frx9ttvc/3115tdlmm+fIZGu91OQUEBt99+u9llBYyNGzeyfft2Hn30UU6ePElZWRkTJkwwuyxTnb4gFkBLSwuNjY0K8S+5+OKLcTgcnhXLsrKyC16JCvkTwpw4cYLf/OY3ZGdnc+jQIe68884L2iswVBUXF/Pqq6/yyiuvMHv2bO6+++6w3x4MMGPGDNra2jxr4nFxcTz99NPmFmUyb2doDHe7d+/mrrvu8uzc1tjYyB133HFBa1ah6O233+all16itbWVO+64g29+85tmlxQw3nnnHT7++GOSk5M5fvw4P//5z4mOjj7v5wn5IBcREQllOiGMiIhIEFOQi4iIBDEFuYiISBBTkIuIiAQxBbmIiEgQU5CLiIgEMQW5iIhIEAv5M7uJiP/+9re/8d5779GvXz9qa2t56623eOONNxg5cqTZpYmEPZ0QRkS6tGPHDpKSkhgyZAhz584lOzubn/3sZ2aXJSIoyEXkPPzlL3/h5Zdf5rXXXvNc0lREzKWpdRHxyZEjR1ixYgUvvfSSQlwkgGhnNxHpUmtrKw888ABz585l2LBhHDp0iO3bt5tdloigNXIR8cGf/vQnDh06xKFDh3j88cc5ceIEV199NZMmTTK7NJGwp23kIiIiQUxT6yIiIkFMQS4iIhLEFOQiIiJBTEEuIiISxBTkIiIiQUxBLiIiEsQU5CIiIkFMQS4iIhLE/j+D9tG7MzafHQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter4_13_2.png" + } + }, + "output_type": "display_data" + } + ], "source": [ "\"\"\"The sigmoid function (or the logistic curve) is a\n", "function that takes any real number, z, and outputs a number (0,1).\n", @@ -717,12 +908,37 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "collapsed": false, "editable": true }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(426, 30)\n", + "(143, 30)\n", + "Test set accuracy with Logistic Regression: 0.94\n", + "Test set accuracy Logistic Regression with scaled data: 0.96\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/linear_model/_logistic.py:762: ConvergenceWarning: lbfgs failed to converge (status=1):\n", + "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", + "\n", + "Increase the number of iterations (max_iter) or scale the data as shown in:\n", + " https://scikit-learn.org/stable/modules/preprocessing.html\n", + "Please also refer to the documentation for alternative solver options:\n", + " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", + " n_iter_i = _check_optimize_result(\n" + ] + } + ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", @@ -761,12 +977,41 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "collapsed": false, "editable": true }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAscAAAWYCAYAAABaiWuCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOzdd1gU1/oH8C8sVUApYq+oYEU09t6SaIyNm9gxlgQbGmPXqFgSFWMLtkBijInk3hQFa6LGG8tVwSQKimIFBAuIFJG+wPn9wTI/URYX2Arfz/P4PO7u7Mx7zg7vvHvmzKyREEKAiIiIiIhgrOsAiIiIiIj0BYtjIiIiIiIFFsdERERERAosjomIiIiIFFgcExEREREpsDgmIiIiIlJgcUz0Grt27UL37t2xbds26bkhQ4bg/v37OoyKiIiINIHFMdFrTJ8+HT179izyXEBAABo2bKijiIiI9M+2bduwePFitayrX79+CAkJUcu6iEqLxTFRGVStWlXXIRAREZEGmOg6AKo4fvrpJ/j5+aFt27awsbHB5cuX0bx5c3h5eWHz5s2IiIjAxIkTMW7cOACAXC7H5s2bceXKFRgZGaF79+6YOXMmjIyMcOfOHXzxxReQy+XIyMiAu7s7Ro0aBQDw8vLCmTNnMGvWLISGhuLOnTtF1vuiq1evYvny5Xj+/DnGjh2LM2fO4K+//sLNmzexfft2XLp0CQBgaWmJ1atXo2bNmgCAmJgYLF68GHl5eXByckJWVpa0zvXr1+PXX3/F0qVL0a9fP3h6eiIsLAy3bt1CbGwsvLy88Pz5c/z3v/8FAPzxxx/4+uuvYWFhAWNjY8yePRvt2rXT6GdBRBWXPubaY8eOITAwENnZ2fDw8EC3bt0wffp0xMTEYOXKlcjJyUF+fj7mz5+P9u3bY/369fjxxx9Ru3ZtHDhwALNnz8adO3cwd+5chISEICEhAWvXrkXVqlWxaNEirF69WmmeffToEebMmYOwsDCsW7cOR44cwaVLl/D777/D0tIS3t7eSE5ORl5eHj788EMMGDBAq58XGSBBpEa+vr6iV69eIjU1VWRnZ4uuXbuKZcuWifz8fBEeHi7c3NyEXC4XQgixc+dO4eHhIXJzc0VOTo4YNWqUCAoKEkIIERoaKkJDQ4UQQuTk5IiBAweKqKgoaTt9+/YV3t7eQgghwsLCiqz3ZcHBwaJVq1bi/PnzQggh1q9fL4QQ4vvvvxf5+flCCCH2798v5s+fL73nvffeE1999ZUQQoi4uDjRsWNH4evrK70+fvx4sX//fiGEELGxscLZ2bnI9vr27Ss97tKli0hISBBCCHHy5Mki6yEiKgt9zLW+vr5i0aJF0mO5XC4GDhwofvnlFyGEEBEREaJTp07i+fPnQggh/Pz8hLu7u8jNzRXr1q0TERERRbYbHBwsPX5dni18PTAwUAghxLfffivi4+PFxIkTxdatW4UQQsTHx4tOnTqJ2NhY1TuaKiVOqyC1c3V1hY2NDczMzNCwYUM4OzvDyMgILi4uyMjIQGJiIgAgMDAQI0aMgEwmg6mpKQYOHIhDhw4BABo2bIhff/0Vo0ePxuTJk5GQkIAbN24U2U7hPOCX11scS0tLdOvWDQCwaNEiAEDt2rUxYcIEjBs3Dnv37sX169cBAA8fPsTVq1cxdOhQAEDNmjXRvn37MvdHtWrV8PPPPyM1NVUaaSYiKi99zLUvCgsLQ2xsLIYNGwYAaN68OWrWrInTp08DAKZMmQIAmDdvHqytrdG8efNy90n//v0BAJMmTYIQAhcuXMB7770HAKhRowbat2+Po0ePlns7VLFxWgWpnZWVlfR/ExMT6bGJScHuJpfLAQBxcXHYs2cPDhw4AABIT0+X5vKuX78eqampCAgIgEwmg4eHR5GpDQBgbW0NADA3Ny+y3uLY2NgUeRwdHY05c+bgxx9/hKurK0JCQrBkyRIAQEJCAgDAzs5OWt7W1rYUPVDUnj178NVXX2HQoEF44403sGDBAtSvX7/M6yMiAvQz174oPj4eADB58mTpuZycHDx//hwAIJPJsGTJEowbN04q1svrxVwfFxcHoGBAxMjICACQnJwMZ2dntWyLKi4Wx6QztWvXxvTp0zFo0CAAQH5+PlJTUwEUzBUeO3YsZDIZANWTsapu3LgBKysruLq6AgByc3Ol1xwdHQEASUlJqFOnDgAgJSUFdevWLXZdpqamAAqSvpmZmZT4C8lkMqxatQpLliyBj48PlixZgn379qm1PUREyugq19aqVQumpqb44YcfpOcyMjJgbPz/J60PHz6M999/H97e3vjxxx+LvPai1+VZZdsHAF9fX9jb2wMAsrOzi+R7ouKoNK3i5s2bmo6DKqERI0bgyJEjyMvLA1Bw6u+rr74CADRo0ABhYWEAgCdPnuDWrVtq3XbDhg2RmpqKqKgoAMC5c+ek1+rWrQtXV1ccPHgQQMHoR+GFe8VxcHCApaUlbt++DQA4e/ZskdenTZuGvLw8WFhYwNXVVWovEZE2aCvXWllZITMzE0IIzJw5E23btkXt2rVx4sQJAAWDEDNnzkR0dDQA4MyZM2jcuDG8vb2RmZmJ77//vsi6srKyEBwcjL179742zxanZs2a6N69u5TLAcDb25u3iKPXMhJCiNctNGTIEMybNw99+vTRQkhkqA4fPowtW7YgOzsbM2fORFJSEr777jtUr14d69atw+7du3Hy5Em0bdsW/v7+sLKywpdffolLly7B3NwctWrVwurVq2FpaYl79+5hwYIFMDU1hZOTE8LDwyGXy+Ht7Y3AwED89ttvcHJywvbt2+Hj41NkvS9Ogbh79y7mzZuHyMhIuLm5Ydu2bdLrW7duxaFDh+Di4gJHR0cEBgZi0KBB2LBhA2JiYrBo0SLk5eWhXr16yMnJwY0bNzB16lRERUXh119/RfXq1bF48WL06dMH+/btw969e9G0aVO0b98evr6+6Nu3L3x9fbFu3TqEhYXB1NQUeXl5WLFihVrm1hFR5aSPuRYA7t+/jxkzZsDa2hpvvvkmPvzwQ8TExGDVqlXIzs5Gfn4+3N3d8d577+Gbb77B119/jSFDhmDq1KkYN24c4uPjMXLkSHz66afYt28ffvzxR1hbW+Pzzz9Hs2bNlObZ1atXS3cN6tSpE7y9vdG0aVMAQGJiIlatWoWnT58CAHr16oVp06Zp+yMjA6NScbxjxw40bNgQp0+fhouLC957770i8zGJiIiIiCoClYrjF124cAGLFi1C165dMW7cOLRt21ZTsRERERERaZVKxXFAQADatGmDgIAAnD59Gm+99Rbc3d1x9epVxMbGYtmyZdqIlYiIiIhIo1Qqjt3c3FC7dm2MHj0a7u7u0q1ShBDw8vLCjh07NB4oEREREZGmqXQrt/fee6/Y0eFHjx6hY8eOag+KiIiIiEgXVBo5/uuvv3D79m3p99R/+eUXDBkyBBYWFsUun5Dw+vsPGjo7uypITs7QdRh6iX1TPPZL8SpTvzg62rx+oTJSV96tKJ9HRWkHUHHawnbol8rSjrLkXZXuc+zn54d69epJj2vUqIHPP/+81BurSExMZLoOQW+xb4rHfike+0W/VJTPo6K0A6g4bWE79AvbUcI6VVnIxcUFvXv3lh737t0bwcHBag+msjkaeaLY5wc7vaXlSIiIKg/mXiIqiUrFcVxcHHJzc4v8Xnvhb6aT+ilL3MowoRMRERGph0rFcf/+/dG/f3+0aNECQMHPSS9cuFCjgREREelaaUeZOSpNZPhUKo7feecduLi44OLFizAyMsLChQvh5OSk6diIiIiIiLRKpeIYAJo0aYImTZpIj3/44Qd4eHhoJCgiIiIiIl1QqTj+888/4efnh8TEROTn50MIgdTUVBbHeoKn8YiI9BvzNJHhUKk49vHxwfLly9GgQQMYGxtDCAF/f39Nx0ZEWhR0LlKt6xvek1OviIjI8Kh0n+NmzZqhe/fuqF+/PurWrYt69eph2rRpmo6NiCqw0NDL8PLyRN++fSGXy4u8tnOnL4YNG4jDh4OKfW9YWCgmTx6Hy5f/BgB8881X+N//zmg65CJ+/vlHrW6PlDsaeeKVfz+HH9F1WERkoFQaOa5duzaWLFmCdu3awczMDABw6NAhfPvttxoNjsqHp/FIn7m5tUe7dm/g77+DcfhwENzd3wcAJCcnISLiOqpXd8SQIcOLfW/btm5o0qSZ9HjKlKkwMjLSRtiSn3/+N0aOHKvVbRIRkeapVBz/9ttv6NGjB65cuSI9x/scE5E6zJw5EytWeOPdd4fBzMwMBw78ghEj3kdAwF4AgI/PZ6he3RGZmZlwcKiOMWPGF3l/XFwcvvzyCzRt6owpU6bi0aOH2Lp1I5o1c0aVKlXwww978PHH85Gfnw8/vx0YNswdcXGP8ejRQ2zYsAVWVtYIDPwVUVH3YG/vgLi4x5g/fwkyMjKwcuWnECIfDRs2xt27t/HWW4MwdOgInDp1Emlpz7F7tx8aNmyEAQPe1kXXERGRBqhUHM+YMQNjxowp8tzp06c1EQ9pAUeUSZ80a9YMrVu74tChA+jX700YGxvD1tZWer1btx7o2bMPAGDixLEYNmwEqlSxkl6vVasWevbsg8ePHwEomJLx9tuD0L//W3jwIBaBgb9i0KB3AQC//XYErVu7YsqUqdi0yQd//RWCPn36w9GxBoYNc4exsTG2bv0Cly4Fo1u3Hhg//gP4+e3AnDnzkZycjI8/noahQ0egf/83sWuXL6ZMmaq1fiIiIu1QqTgeM2YM7t+/j4cPH6Jz58548uQJ+vTpo+HQiKiymDTpI8ybNwvx8fEYN+4DREbelV5LTHwKP78dqFLFCunp6Xj27FmR4vhl0dGRqFdvEgCgTp26r7xev34DAICtrS0yMjIAABYWFti50xfVqtkiKioKzs7NX1nezs5OWp6otL9kSkSGQ6Xi+MCBA9i5cyfq1q2LDh06YN26dejfvz+GDRum6fiIqBJo3NgJbdu2g4mJSZFR4zt3biMg4Af88stBAMD582dfu65GjRojNvY+XFya49Gjh6+8Xtzc5GXLFuG77/6NWrVqISMj/bXLA5Du3HP37h00a+b82riIdEHZXWh4Nxki5VQqjv/++2+cOHECq1atgpmZGXx9fbFq1SoWx0QViLYPljdv3kBY2BUYGeVhwgRPeHt/BgBITk7G8ePHkJj4FFFR99CoUSOsX78GDRo0QkLCExw9eggdO3bBvXt3cPz4MdSpUxfnz5/F8+fPERUVienTZ2PLlg24d+8uatasKRW3f/0VjPj4OBw9egiDBr2LsLAriIy8i65de2D48H9h82YfuLq2RXj4VcTERKNLl244fvwY7t27g5s3byAy8h7S0tJw+vQp9OnTH9269cD27VsBgMVxGXGKl3IvFrVWVuZIT88GwKKWSBtUKo4dHR1hbFz0rm8vPyYiKo3mzVvC1/crODraICHhufS8nZ0dlixZIT1+661B0v/Hjv3/Hx769tsA6f+ff/6F9P/Y2Bh4e38OGxsbxMXF4c8//wsA6NixC3755ZC0nK/vV9L/p03zkv4/fvxE6f8vxtG8eUu8884Q6fGcOQtUbywRERkMlYrjpKQkHD58GM+fP8fVq1dx/vx5pKSkaDi0ioNz04i0Jy7uMb777hs0adIUDx7EYtasT3QdEukIcy8RlYVKxfH8+fPx+eef48KFC7hw4QJ69eqFZcuWaTo2IqJS69ixMzp27KzrMEgDNF3sspgmIkDF4rhatWrYsGFDkedycnI0EhARERERka6oVBw/evTolee2bduGdevWqT0gIiKiykL5aHVTrcZBRP9PpeJ4yJAhsLW1hRACubm5SExMRM2aNTUdG+k5ZUl9ouO/tBwJERERkXqoVBwvWLAAo0ePlh4/efIEBw8e1FhQ+qQyFYC8rVLlpu75ltxviLRH2f2MS7s8bxVHpGJx/GJhDAA1atRAdHS0JuIhokrixo1w7NzpCyMjATe3DkhKSsSzZ8/g7f0ZTE1NS7Wu9PQ0LFo0F9u3+2soWiLtupf3l/R/00wTyPNyAQBB53QVEVHloVJxvGTJEun/QggkJCTwPsdEVC4tW7ZGu3ZvwMgoD5MnTwUAzJo1FSEhF9CjR+9SrcvKyhrbtvlpIkzSgYp414ibMckaXf+LxfSLmsg6lmo9HFEmUrE4jouLw9ChQwEU/JRq9erV0bkzb5VUWVTEAxXpn/z8fKSmPoOtrR3Cwq7g6NFDaNSoMWJi7mPatFl4/jwVa9eugoODA+ztHXD79i1MmDAZ3br1wG+/HcGXX27E77+fBgD88MN3iI6+hwYNGuHatTCYmpri44/nY8OGtRAiHw0bNsbdu7fx1luDMHToCN02nIiI9IpKxfGMGTPQsWPx3z7j4uJQq1YttQZlyFhIKscRCSrO1atX8cMP3+HOnVto2rQZnJ2bY+TIYfj6671wdKyBY8cO4/vvd2P27HkYMmQ4QkIuYu7cRYiIuI49e75Bt249MGjQu9i9u2DkODLyLo4fP4p9+34BAKxevRwdOnRCrVq1MX78B/Dz24E5c+YjOTkZH388jcUxEREVoVJx/P3338PIyAhCiFde27NnD3bu3Kn2wPTdz+FHkKH4rXsiVfELwqtcXV3h4TERAPDDD3uwbdsWpKam4vffjwEAnj9/BmNjmbR8gwYNAQC2tnbIyEh/ZX1RUVGoW7ee9LhOnbpFXq9fvwGAgp+pzsjIUGtbiDRN2fSJ0i5f2ukWRJWJSsVxbGwspk6dimbNmgEA7ty5g2bNmsHU1BT379/XaIBkeH48fhPp/OJAZeDgUB23bt2Era0thg1zR9WqVfHsWQrCw6+pvI5GjRrjwYNY6fGjRw+LFMhGRkZqjZmoMivNXTKsrMzxZvu6r1+QSMdUKo7d3Nywd+9eVKtWDQCQmpqK7du3Y+nSpfjPf/6j0QCp4lPXaGpx61G2jtJus7S3STLEkWBt33rt5s0bCAu7AiAfe/fuRl5eHiIj72LKlGlIS3uOXbu2oU6duoiPj8N7741CUlIizp8/i+fPn+PBg1gcP34M8fFx+PvvS0hKSkRaWhqCgn7F8OHv4a23BsHbeymaNnVGTk4OjIyMkJOTg+PHj+HevTu4efMGIiPvIS0tDadPn0KfPv212nYyHMoupGvewK5Uy+sbQxhR5pk20hWViuOsrCypMAaAqlWrIjExEcCrt3kzVJwrrFxpDw5EqmjevCV8fb+Co6MNEhKev/J6mzZtX3nu88+/kP4/ZcpUTJkyVXr81luDpP936tQFH3wwBQCwdu0q1KlTD2ZmZliyZEWR7b/zzhC1tIWIiCoOlYrjhIQEfPfdd9JFeZcuXUJKSoom4yIDoKxodq2q5UDUqLQjxJreLkdIyuaXX/6DBg0aIj8/H46ONdC2rZuuQ6IKxlBGiNVFXbmRuY4MgUrF8dq1a/H5559j165dAIAuXbpg7dq1Gg1MUzhCzJFgqvhWrFij6xDoBcy7FVdpp2cov6CQxTHpD5WK45o1a8LX11fTsZCOGcpISGlGMPRpJNjKylwHkRARVW7KvpzxJ+5JGZV+5i4xMRGLFi3CnDlzkJmZiRUrVuDZs2eajo2IiIiISKtUGjnesGEDOnTogEuXLsHS0hKjR4/GF198gc8++0zT8ZUZT+MZzkiwMroa9TUEnLdH9HqGngOJSDdUnlbx/vvvIzw8HADQsmVL2NjYaDQwMlwRmcGQ5+W+8rw+3SLIUOjTtBCAxXdlU9pBBp6mpkLFzS02zVSp5HitTad/KtXypb2ehtMwSKU9tfDOFIU3z8/IyEBsbGwJ71C/yrSzcrSDiAyRps/Y8WJizTOE+x+XlrL9ZrCS7/qlXZ4qHpWK4y5duuDdd99FTk4OPD09ER4ejmXLlmk6NpUYwvQJJvQCpf3ZU2UMOUkTERGRfjMSQghVFoyMjMTFixcBAF27doWTk/KvUMXd0F9VhlDsAkAVK3NkqPgTyZVtJNjU1ARy+avTKjStuKJZn0ZBrKzM9e5ntdX1i4Dl2Wbhj4Bo+lcI1dWm8kwtcXTU3HQ0deXdF3Obun4dTl0DAaVZfxUrc1yOiFPLdnVNVzlV3UpqR2lysroGWkqrcD97+fivbL9U1iZ1/XKrsukl8/qMKvb5lyn7ASZdKsuUvte1oyx5V6XiuEuXLpg9ezbGjh1b6g0QERERERkKlW7l5uzs/EphnJSUpJGAiIiIiIh0RaXi+J133sGZM2cgl8ul53bu3KmxoIiIiIiIdEGlaRXNmzf//zcYGUEIASMjI0RERGg0OCIiIiIibSrxbhWPHj2CiYkJ+vfvjx07dhR57csvv9RoYERERERE2lbiyPG//vUvvPfee+jduzcAwMLCAvb29loLjoiIiIhIm0qcc9y6dWuMGTMGBw4cwNSpU3Hu3DltxUVEREREpHUlFseFv4jn5eWFZs2aYdiwYdJrOTk5mo2MiIiIiEjLVP6h88JCudCGDRv05lfyNC0hIQFbt27FzZs3sX//fgBAdnY2fHx8ULNmTURHR8PT0xONGzfWcaTaV1zfHDhwAP/5z39gbm4OoGB6zvDhw3UYpXbFxMRg69ataNmyJeLi4mBrawsvLy+kpKRg06ZNqF+/PqKjozF37lxUr15d1+FqjbJ+2bZtGy5duiQtN23aNHTv3l2HkVYeFSW3VZQ8VFFyR0X5W8/Pz8e0adPg6uoKuVyO2NhYrF27FllZWQb1eShrx9dff21Qn0ehrKwsvP/+++jRowcWLVqkkZxVYnF88uRJ3Lx5EwAQHR2N0aNHS689ePCg0hTH//zzD/r371/k7hx79+5F7dq18dFHH+HWrVv49NNP8eOPP+owSt0orm8AYPPmzahXr56OotKtlJQUvPPOOxgwYACAglsh9unTBz///DO6du2Kd955B//973/h4+ODL774QsfRao+yfgGAH374QYeRVV4VJbdVlDxUUXJHRfpbd3Nzw4wZMwAA06dPx4kTJ/D3338b1OcBFN8OwPA+DwDSF69CmshZJRbHTZo0wYgRI4p97dChQ+XasCEZOHAgQkJCijx3+vRpzJ07FwDg4uKCmzdvIi0tDdbW1roIUWeK6xsACAgIQPXq1ZGZmYnx48fD1tZW+8HpiKura5HH+fn5sLS0xJkzZzB9+nQAQPv27bF48WJdhKczyvoFAHbt2gUzMzPk5eXBw8NDep40q6LktoqShypK7qgof+vGxsZSQZmbm4v4+Hg0btwYmzZtMqjPQ1k77t+/b1CfBwAEBQWhffv2uHXrFjIyMgBoJmeVWBzPmTMH7du3L/Y1fT/NpmmJiYmwsrKSHltbWyMxMVGvDyDa0rFjR/Tp0wf29vY4c+YMPv74Y+zdu1fXYenEyZMn0aNHDzRp0qTIPmNtbY1nz54hNzcXJiYqz26qMF7sl4EDB6Ju3bqoUqUKAgICsGbNGqxdu1bXIVZaFSW3GXoeqii5oyL8rZ87dw7fffcd+vTpgzZt2hjs5/FyOywsLAzq87h79y4iIyMxd+5c3Lp1S3peEzmrxAvylBXGQMEQfWXm4OCA9PR06XFaWhocHBx0GJH+qF+/vnTLvy5duuCvv/5CXl6ejqPSvuDgYISEhGDp0qUAiu4zaWlpqFatmt4nU014uV+aNWuGKlWqACjYX4KDg3UZXqVXUXKbIeehipI7Ksrfes+ePbF79248ePAAAQEBBvt5vNwOQ/s8Tp48CTMzM/j7++Off/7B1atX8d1332kkZ6n089H0qj59+uDKlSsAgFu3bqF58+YGN7KiKZs2bUJubi6AgrnqdevWhUwm03FU2nX69Gn873//w6effoqEhARcuXIFvXv3lvaZy5cvS/cPr0yK6xcfHx/p9fv376NBgwY6jJAqSm4z1DxUUXJHRfhbv3v3Lk6fPi09rlevHh48eGBwn4eydhja5zF9+nR4eXnB09MTb7zxBlxdXTFx4kSN5CyVfj66srt06RKCgoJw7tw5jBkzBpMnTwYA+Pj4wNHRETExMZg6dWqlnGpSXN/89NNPuHPnDurVq4fbt29jwoQJlepMQ3h4ODw8PNC6dWsAQEZGBsaNG4d+/fph48aNqFOnDmJjYzFv3jy9vsJZ3ZT1S1RUFDIzM+Hg4IDbt29j9uzZlfJvSRcqSm6rKHmoouSOivK3HhMTgw0bNqBly5bIzc3FvXv3sGzZMpiamhrU56GsHd9//71BfR6Fjh8/joCAAMjlcowbNw4DBgxQe85icUxEREREpMBpFURERERECiyOiYiIiIgUWBwTERERESmwOCYiIiIiUmBxTERERESkwOKYJP/88w88PDzQrVs3rFixQvrn7u6OBw8elGmdHh4exf6sa0XzySef4OzZswCAkJAQeHh4lHodcXFxmDZtWpneS0REROqh/z/pQlrzxhtvYMSIEfjPf/6D1atXS88HBATA1NRUh5Hpv8WLF8POzq5c66hVqxYmTZqE7du3qykqIiIiKi0Wx1Sibdu2YcSIEahZsyaOHTuGCxcuwNbWFvHx8Vi4cCEcHR1x9OhR/PHHH6hbty4ePXqEGTNmoGnTpjh48CCio6Px/fff4/jx4xg2bBi2bNmCWrVqYf369fj3v/+NL774AocOHYK9vT2mTJmC+Ph4uLu749y5c8jOzkZQUBC+//57REdHw9zcHM+fP8eSJUuK/I46APj6+uKHH37AhAkTcOPGDURHR2PlypX47bffcPXqVbi4uGDdunUAoDReAPj999+xd+9euLi4wNTUFPv374enpyecnJzg4+ODzp07IzMzExEREfjggw8w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k0/g6OiIWrVqoUGDBkX60traGs+ePUNubq5OT6Uo+3yTkpKKPG9lZaXTPgWAnJwcBAYGwtvbGwD0KsYtW7ZgxowZUhFcSFn/6sKjR4+QlpYGLy8vREVF4cMPP8SxY8eQlJQEJyenIjEWFqjaNmnSJMycORPr1q3D1atXMWPGDAD69VlT8T766CO4uroiLy8P48aNkz6j4nKePu1z6lTafJqcnKxXx67y6NixI/r06QN7e3ucOXMGH3/8Mfbu3Vth237y5En06NEDTZo0KfV+rk/HhbJ4se0DBw5E3bp1UaVKFQQEBGDNmjVYu3at1tuusSrq5MmTMDMzg7+/P/755x/I5XJ89913cHBwQHp6urRcWloaHBwcNBXGa1lZWcHJyQk2NjYAgDfeeAN///03srKyIISAkZGRzmOMiIjA7t27ERgYCBMTE6xfvx47duyQ+rJq1apIS0tDtWrVdD7HSNnna29vj/v370vPp6eno0GDBroIEUBBYbxy5Up88sknUhz6EuPjx4+RmpqK3377TXpuz5496N27t179/VhbW6Nt27YAgMaNGyMtLQ2PHz+Gvb39KzHa29vrJMbFixfj/fffx7vvvoukpCS89dZb+OOPP/TmsyblXF1dAQAymQwdOnRASEiI0pynT/ucOpU2n9rZ2enVsas86tevL/2/S5cumD59OvLy8ipk24ODgxESEoKlS5cCQKn3c306LpTWy21v1qyZ9FqXLl2we/duANB62zU2rWL69Onw8vKCp6cn3njjDbi6umLixIno06cPrly5AgC4desWmjdvrrNRYwBo27YtUlJSkJeXB6BgNKxZs2bo3Lkzrl27BgC4fPkyevfurbMY4+PjYWtrKxW+jo6OyMnJQe/evaW+1HWMhZR9vj179sT169chhAAAXLlyBb169dJJjJmZmfD29sakSZPQunVrHD9+HAD0JsbatWtj/fr18PT0hKenJ4CCEdA2bdrAzc0Njx49Qk5ODoCCz71Pnz5ajxEAunbtitjYWAAFCSkvLw+Ojo7o06cPQkNDAQByuRyRkZHo2LGjTmJ8/PixdLqtatWqMDY2Rn5+vt581lS8e/fu4ZdffpEe379/H/Xr11ea8/Rpn1On0uZTU1NTvTp2lcemTZuQm5sLAIiOjkbdunUhk8kqXNtPnz6N//3vf/j000+RkJCAK1eulHo/r1+/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+5fwND23uG3Tunrdrin78dDVEvfFPI+uvuXkt6hkjkymODamh7wTEVHl4+eA7qwL26N2+ly3dys5EiLjYzLFsbHR9BVZ8dMtyoJ/WRMRkTraDsNwwWt6iuQxXT1yjj3NZApYHOuYNgltXZj6eTV9dai882KJ18WPl2NSISJTxJ5g06HvR86pG6pjKj9fTuaHxbER0vyBUTI5Fd8kqKm3WlMyK2vxXUxT8a3uazm53AotG9RUOz8TnenQNKa0Kh1D7gPdjS1mEax/Vx5FlrhpvLx01UOs6dyJK9QwnhzPfi49GcuTvzWgbYeQplg0febJG91QO11X1766ffz0byk8qSp1gBlL3rUQQohK3SIRERERkZGyNHQARERERETGgsUxEREREZEKi2MiIiIiIhUWx0REREREKiyOiYiIiIhUWBwTEREREalU6nOOT506hcOHD8PBwQEWFhbw8vIq8X5eXh78/Pzg7OyMmzdvwtPTE82bNwcAhISE4MqVK7C0tETTpk3x3nvvGTymfv36oVGjRgCAevXqYd26dZUSEwD89ttvWL9+PRYtWoS+fftqtawh4nrnnXdgY2MDALC0tMTOnTsrJabAwECkpqbCyckJsbGxmD17Nlq2bAlAf+dUReMy1Hn122+/4dixY2jbti0uX76MkSNHol+/fgAMu69Ki8uQ1yAA/Prrr/j0009x4cIF2NraarVsZTHGvKtLFWnfrVu34OfnBysrK2zatMkQ4T9XedsXExODnTt3on379khISICLiwveeecdA7VCs/K2T6FQwMfHB926dYNCoYBSqcSSJUtgaWl8fX4VOUcBQKFQYOTIkZg2bRrc3d0rO/znMsY6qsJEJcnJyREDBgwQeXl5QgghvLy8xKlTp0rMs3XrVhEYGCiEEOLq1ati7NixQggh/v33XzF8+HBRVFQkhBBi9OjRIiEhwaAxCSHEpk2bKhxDeWJKTEwUp0+fFu7u7uL48eNaLWuIuIQw3L7asGGDdN4cPHhQTJs2TQihv3OqonEJYbh9tW/fPnHnzh0hhBB///23+M9//iOEMPy+0hSXEIbbV0IIcePGDbF+/XrRunVrkZWVpdWylcUY864uVTSHh4SEiN27d4tZs2ZVXtBaqEj7jh49KqKjo4UQQuTn54uXXnpJKBSKSoz++SrSvuTkZLFnzx5pvmHDholz585VUuRlV9FztLCwUCxevFhMnz5dfP/995UXeBkZYx2lC5X2J9alS5fQsGFDWFtbAwC6du2KsLCwEvOEhYWhS5cuAIA2bdrg6tWryMrKQkREBDp06AALCwsAQJcuXfDnn38aNCYAOHfuHLZt24aNGzfiwoULFY6nrDE1adIEr7zySrmWNURcAHD9+nUEBgbC39+/UmP6+OOPpfOmqKgINWrUAAC9nVMVjQsw3Hk1evRoNGzYEMDjHrXinmxD7ytNcQGG21ePHj3C119/jQ8//FDrZSuTMeZdXapoDh8+fDjkcnmlxqyNirSvf//+cHFxkeaTyWRG19aKtM/Z2VnqCc/KykJOTo7UA2lMKnqObtu2DW+99RZq165dqXGXlTHWUbpQacMqFAqF9LUjANjZ2UGhUJRpnrS0tBLTbW1tn1m2smOys7PD3Llz4eLigkePHmHUqFHYunUrXnjhBb3HpI9l9b3uqVOnwsXFBYWFhRg3bhxsbW3x8ssvV1pM+fn5CAoKwrJlywBAb+dUReMCYNDzKjc3F/7+/oiKisLatWsBGMe+UhcXYLh9tWHDBsycOVP6QNC2PZXFGPOuLlU0hxs7XbVv165dmD59OmrWrKn/oLWgi/YdPHgQP/30E6ZMmYL69etXTuBaqEgbL1++jGrVqqFz58746aefKi1mbRhjHaULldZz7ODggOzsbOl1VlYWHBwcyjSPvb19ienZ2dnPLFvZMQGQ/iqvXr062rVrp5O/esoSkz6W1fe6i/eVTCbDSy+9hDNnzlRaTPn5+Vi+fDk++eQTNG3aFAD0dk5VNC7AsOdVtWrV8Omnn2Lt2rUYP348lEqlUewrdXEBhtlX//77LzIzM/H7778jMDAQALBjxw5cvnxZr9dgeRhj3tWliuZwY6eL9h04cAA5OTn44IMP9B6vtnTRviFDhuC7777DwYMHER4erv+gtVSRNh4/fhx5eXkIDAzE9evXcfLkSezbt6/SYi8LY6yjdKHSimNXV1fcvXsX+fn5AIALFy7Azc0NGRkZUve6m5sbLl68CAC4du0a2rZtCzs7O/Tu3Rt///03hBAAgIsXL+L11183aEynT58u8RXjrVu30KRJk0qJSdtldaEiccXFxeHnn3+WXlfmvnr06BGWLVuGiRMnomPHjjh06BAA6O2cqmhchjyvtm/fLu2P+vXrIz09HXl5eQbfV5riMtS+atCgAVavXg1PT094enoCACZOnIhOnTrp9RosD2PMu7pUkfaZgoq27+eff4ZCocDMmTNx7do1JCQkGKYhGlSkfVFRUYiJiQHw+Cbvhg0bIikpyTANKUVF2rho0SIpz7Ru3Rq9evXCmDFjDNYWdYyxjtIFC1Gc+SrByZMncejQIdStWxdyuRxeXl5Ys2YN6tSpA09PT+Tm5sLPzw9OTk5ITEzEtGnTStw1HRsbC5lMhmbNmunsrunyxnTt2jUEBASgQ4cOuHfvHurVq4fp06dXSkxCCGzZsgW//PILunXrhuHDh6N3794al9WV8saVkpKCFStWoF27dsjKykJBQQF8fHx0clfx82Ly8vLCP//8g3r16gEAcnJypL+89XVOVSQuQ55XW7ZsQUpKCho2bIi4uDh07doV7777LgDD7itNcRlyXwGPh5vs3r0b//3vfzFz5ky89957cHZ21us1qI+2GCLv6lJF2nf06FGEhIQgISEBI0aMwNSpUw3cmmeVt31Hjx6Ft7c32rdvDwDIyMjA4sWL0aNHDwO3qKTyti86Ohrbt29H+/btkZ2djZSUFCxfvrzE/RvGoiLnKAD88ssv2LVrF5ydnTF27Fj06dPHgK15ljHWURVVqcUxEREREZExM74HAhIRERERGQiLYyIiIiIiFRbHREREREQqLI6JiIiIiFRYHBMRERERqbA4JiIiIiJSYXFMRERERKTC4piIiIiISIXFMRERERGRCotjIiIiIiIVFsdERERERCosjomIiIiIVFgcExERERGpsDgmIiIiIlJhcUxEREREpMLimIiIiIhIhcUxEREREZEKi2MiIiIiIhUWx0REREREKiyOiYiIiIhUWBwTEREREamwOCYiIiIiUmFxTERERESkwuKYiIiIiEiFxTERERERkQqLYyIiIiIiFRbHRERE5ZSTkwNPT0+89957GDFiBO7cuWOwWAICAtCrVy/4+/s/d97CwkJ4eHigTZs2uH37NgDg3LlzmDRpkr7DLLPbt29j8ODBhg6DqiAWx2R2nkz2RET6dPDgQRQUFGD37t34+OOPYWmp24/VBQsWlKnYBQAvLy/07t27TPPKZDJ8//33JaZ169YN//3vf7WOUV8aN26M3bt3GzoMqoKsDB0AERGRqUpJSUG9evUAAH379jVwNBVjYWGBmjVrGjqMEmrVqmXoEKgK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DpautpOlpSWSkpKwf/9++Pv7S8tqYzslJibCx8cHHTt2BFD+HY0fPx4DBw5UuJ99++23yM3NxYMHD9CvXz+134VBUaZdu3ahtLRUGjG2trbGli1bcOLECezZswft27fHrVu30K1btwrztjWZ6caNGwr3fU1vJ1UdO3YMkZGRsLe3h5mZmVbuVlGdflwT201dfebt27exefNmNGvWDHfv3kVAQEC1r6BXV/+krkzq7AuSkpKwa9cuNG7cGA8ePKjWnQ/Uuc+pIw9QfgeNlStXokOHDigtLcW1a9fw6aefwszMTCfbSFGenTt36mwbAUBkZCR2796NkpISjB8/HoMHD9bpvqYJOiuOiYiIiIj0DX8EhIiIiIhIjsUxEREREZEci2MiIiIiIjkWx0REREREciyOiYiIiIjkWBwTEREREcmxOCYiIiIikmNxTEREREQkx+KYiIiIiEiOxTERERERkRyLYyIiIiIiORbHRERERERyLI6JiIiIiORYHBMRERERybE4JiIiIiKSY3FMRERERCTH4piIiIiISI7FMRERERGRHItjIiIiIiI5FsdERERERHIsjomIiIiI5FgcExERERHJsTgmIiIiIpJjcUxEREREJMfimIiIiIhIjsUxEREREZEci2MiFX322Wfo3r079u3bp+soREREpGYsjkmn9u3bBx8fH13HeC4fH58KhfBnn32G9u3b6zAREZHyDKGfrYmn+2iimmJxTEREREQkZySEELoOQboXEBCA0NBQdO/eHTt37kRKSgq8vb0RExOD+/fvY8qUKSguLsYPP/wAc3NzLFu2DDdu3IBMJsOgQYMwZcoUlJSUYPLkyYiLi8OiRYsQHR2NU6dOYcuWLbh58yZCQkJgZWUFS0tLzJs3D5mZmVi0aBEyMjLQvn17tGnTBgsXLqyQSyaTYcmSJbh8+TKMjY3RokULLFiwACdOnMCqVatQv359uLq6IjY2Fvb29vj888+xbt06JCQkYOjQoZgzZw4AQAiBbdu24ffff4eJiYm0HhsbGwDAn3/+ia+++gomJiawtLTEwoUL0aJFC6xZswY//vgj6tevDycnJ0yePBkeHh7w8fFBt27dcP36dVy6dAlDhw7F3LlzUVxcXGEbREVF4caNG/D398eQIUMAAI8ePcIXX3yBmzdvQgiBkSNHwsvLCwDwxx9/4JtvvoGlpSWM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ybE4JiIiIiKSY3FMRERERCTH4piIiIiISI7FMRERERGRHItjIiIiIiI5FsdERERERHIsjomIiIiI5FgcExERERHJsTgmIiIiIpJjcUxEREREJMfimIiIiIhIjsUxEREREZEci2MiIiIiIjkWx0REREREciyOiYiIiIjkWBwTEREREcmxOCYiIiIikmNxTEREREQkx+KYiIiIiEiOxTGRFkRERGDBggW6jkFERE9g30yVMRJCCF2HIKrMvn37EBoail27duk6So2VlZWhsLAQ1tbWAICAgAA0adIEM2fO1HEyIqotalOfqS1P981VGThwIIKCgvDKK69oOBnpEkeOibTAxMRE6c6XiIi0g30zVYYjx1SlgIAAhIaGonv37ti5cydSUlLg7e2NmJgY3L9/H1OmTEFxcTF++OEHmJubY9myZbhx4wZkMhkGDRqEKVOmoKSkBJMnT0ZcXBwWLVqE6OhonDp1Clu2bMHNmzcREhICKysrWFpaYt68ecjMzMSiRYuQkZGB9u3bo02bNli4cOEz2ZKTk7F06VIUFhaipKQEvXv3xqxZswAAf/75J7766iuYmJjA0tISCxcuRIsWLbBnzx5s3boVnTt3hq2tLRISElC/fn1s2rQJFhYWAIBjx45h48aNMDMzg0wmg7e3N9544w1cuXIFq1atQklJCfLz8zFmzBi88847OHz4MD799FNYWVnh448/xptvvgkfHx9cv34d06ZNw969e/Hw4UMcOXIEO3bsQHBwMCwsLNCkSROMGDEC33zzDbKzs/Gf//wHc+bMwfLlyxEaGoopU6bg/fff1+r3TUQ1wz6zZn1mUFAQ3N3dsXbtWpw9exZGRkbo3bs3PvjgAxgZGVVoz/nz57Fw4UI8fPgQw4cPx99//40HDx5g3rx56Nu3LwAgIyMDS5YsQVZWFkpKSuDl5YXRo0fj0qVLmDdvntQ3Hz58GKtWrUL9+vXRuXNnnDp1CsbGxti8eTMcHR0RGBiIAwcOoFWrVqhbty78/f1hZWWFJUuWAABKS0vx73//G2PGjNHknxdpgyBSQr9+/cSZM2eEEEJs375dtG/fXiQkJAghhAgODpb+HRgYKPz9/YUQQhQUFAhPT08RGhoqradNmzZi48aNQgghIiIiRFxcnOjZs6coKioSQgjx3XffiZCQECGEECEhIcLb21thptLSUvHGG2+I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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter4_51_0.png" + } + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter4_51_1.png" + } + }, + "output_type": "display_data" + } + ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", @@ -825,7 +1070,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "collapsed": false, "editable": true @@ -844,7 +1089,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { "collapsed": false, "editable": true @@ -866,12 +1111,51 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": { "collapsed": false, "editable": true }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(426, 30)\n", + "(143, 30)\n", + "Test set accuracy with Logistic Regression: 0.94\n", + "Test set accuracy Logistic Regression with scaled data: 0.96\n", + "[1. 1. 1. 1. 1. 1.\n", + " 1. 1. 0.92857143 0.92857143]\n", + "Test set accuracy with Logistic Regression and scaled data: 0.96\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/linear_model/_logistic.py:762: ConvergenceWarning: lbfgs failed to converge (status=1):\n", + "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", + "\n", + "Increase the number of iterations (max_iter) or scale the data as shown in:\n", + " https://scikit-learn.org/stable/modules/preprocessing.html\n", + "Please also refer to the documentation for alternative solver options:\n", + " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", + " n_iter_i = _check_optimize_result(\n" + ] + }, + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'scikitplot'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 36\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mscikitplot\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mskplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 37\u001b[0m \u001b[0my_pred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlogreg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_test_scaled\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0mskplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmetrics\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_confusion_matrix\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_pred\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnormalize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'scikitplot'" + ] + } + ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter4_13_0.png b/doc/LectureNotes/_build/jupyter_execute/chapter4_13_0.png new file mode 100644 index 000000000..cde80495d Binary files /dev/null and b/doc/LectureNotes/_build/jupyter_execute/chapter4_13_0.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter4_13_1.png b/doc/LectureNotes/_build/jupyter_execute/chapter4_13_1.png new file mode 100644 index 000000000..aee9096ee Binary files /dev/null and b/doc/LectureNotes/_build/jupyter_execute/chapter4_13_1.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter4_13_2.png b/doc/LectureNotes/_build/jupyter_execute/chapter4_13_2.png new file mode 100644 index 000000000..0a17d7002 Binary files /dev/null and b/doc/LectureNotes/_build/jupyter_execute/chapter4_13_2.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter4_51_0.png b/doc/LectureNotes/_build/jupyter_execute/chapter4_51_0.png new file mode 100644 index 000000000..903d98702 Binary files /dev/null and b/doc/LectureNotes/_build/jupyter_execute/chapter4_51_0.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter4_51_1.png b/doc/LectureNotes/_build/jupyter_execute/chapter4_51_1.png new file mode 100644 index 000000000..42ba3f001 Binary files /dev/null and b/doc/LectureNotes/_build/jupyter_execute/chapter4_51_1.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter4_5_1.png b/doc/LectureNotes/_build/jupyter_execute/chapter4_5_1.png new file mode 100644 index 000000000..89d6b14ac Binary files /dev/null and b/doc/LectureNotes/_build/jupyter_execute/chapter4_5_1.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter4_7_0.png b/doc/LectureNotes/_build/jupyter_execute/chapter4_7_0.png new file mode 100644 index 000000000..de0c567ed Binary files /dev/null and b/doc/LectureNotes/_build/jupyter_execute/chapter4_7_0.png differ