{ "cells": [ { "cell_type": "markdown", "id": "fa341661", "metadata": {}, "source": [ "# Classification with the Perceptron, Logistic Regression and Softmax Regression models" ] }, { "cell_type": "markdown", "id": "3c04bc10", "metadata": {}, "source": [ "Author: Omar Al-Ghattas" ] }, { "cell_type": "markdown", "id": "22f9d5d6", "metadata": {}, "source": [ "## Introduction" ] }, { "cell_type": "markdown", "id": "22b9686f", "metadata": {}, "source": [ "In this lab we will take a closer look at some common classification models used in machine learning. Our focus will be primarily on binary classification (two class problem), but we will also see an example of a k-class problem using softmax regression. \n", "\n", "We begin with a recap of the perceptron classifier and we will work through an example of applying it to simulated data. We will then turn our attention to the logistic regression and softmax regression models and apply them to the famous MNIST dataset. Throughout, we will pay close attention to the `sklearn` implementation of the `LogisticRegression` class." ] }, { "cell_type": "markdown", "id": "38368d2b", "metadata": {}, "source": [ "## Recap: Perceptrons" ] }, { "cell_type": "markdown", "id": "8ed02f47", "metadata": {}, "source": [ "We begin by taking a look at a very simple model of computation, called the perceptron. Assume that we have $n$ inputs, which we denote by $x_1,x_2,\\dots,x_n$, and assume that each $x_i$ is a vector in $p$ dimensions, so that $x_i = [x_{i1}, \\dots,x_{ip}]^T$, in other words, we have $p$ features - another way of writing this is: $x_i \\in \\mathbb{R}^p$ We will always assume that the first feature is a dummy feature, that is $x_{i1} = 1$, to account for the bias term.\n", "\n", "Next, we let $w \\in \\mathbb{R}^p$ be the weight vector for our perceptron model. Note that the dimension of weight vector and the input vector need to be the same. This allows us to compute the dot product:\n", "\n", "$$\n", "h_w(x_i) =\\langle w, x_i\\rangle = \\sum_{j=1}^p w_j x_{ij}.\n", "$$\n", "\n", "This is known as the activation. Note that the bias (intercept term) here is hidden in $w$. We could have equivalently defined our weight vector by $\\tilde{w} \\in \\mathbb{R}^{p-1}$ and our bias term, $b\\in \\mathbb{R}$, and written \n", "$$\n", "h_{\\tilde{w},b}(x_i) = b +\\sum_{j=2}^p w_j x_{ij},\n", "$$\n", "in other words, $w = (b,\\tilde{w})^T$. It doesn't matter which setting you use, they are equivalent, and we will stick with the first one for the remainder.\n", "\n", "As discussed in the lecture, the perceptron computes the dot product, and then outputs the sign of this value. The sign (denoted sgn(x) usually) function is defined by \n", "$$\n", "\\text{sgn}(x) = \\begin{cases}\n", "+1 \\quad &\\text{if} \\quad x>0\\\\\n", "0 \\quad &\\text{if} \\quad x=0\\\\\n", "-1 \\quad &\\text{if} \\quad x<0.\n", "\\end{cases}\n", "$$\n", "We can visualise this function:" ] }, { "cell_type": "code", "execution_count": 1, "id": "74329bef", "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "xx_neg = np.linspace(-5,-0.15,1000)\n", "xx_pos = np.linspace(0.15,5,1000)\n", "plt.plot(xx_neg, np.sign(xx_neg), color='black')\n", "plt.plot(xx_pos, np.sign(xx_pos), color='black')\n", "plt.scatter(0,0, s=80, color='black')\n", "plt.scatter(0,1, s=80, facecolors='none', edgecolors='black')\n", "plt.scatter(0,-1, s=80, facecolors='none', edgecolors='black')\n", "plt.title(\"y=sgn(x)\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "61b470dc", "metadata": {}, "source": [ "In a binary classification problem, we only have two classes, and so we will usually treat $\\text{sgn}(0)=-1$, as in, anything with positive value is classied as $+1$, and anything with non-positive value is classified as $-1$. In other words, we will think of the sgn function as looking like:" ] }, { "cell_type": "code", "execution_count": 2, "id": "64fe6581", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(xx_neg, np.sign(xx_neg), color='black')\n", "plt.plot(xx_pos, np.sign(xx_pos), color='black')\n", "plt.scatter(0,-1, s=80, color='black')\n", "plt.scatter(0,1, s=80, facecolors='none', edgecolors='black')\n", "plt.title(\"y=sgn(x) with only 2 possible outomes\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "e2b8ce0c", "metadata": {}, "source": [ "Now, denote the output of the perceptron on input $x_i$ to be $o(x_i) = \\text{sign}(h_w(x_i))$. The idea is to tweak the weight vector $w$ so that $h_w(x_i)$ is positive when $x_i$ has corresponding label $y_i=+1$, and $h_w(x_i)\\le 0$ whenever $y_i = -1$. In the next section, we show a simple example for the binary OR function.\n", "\n", "Recall that the binary OR function takes in two binary inputs, and returns TRUE if at least one of the two inputs is equal to $1$, and otherwise returns FALSE. For example, if $x = (1,0)$, then \n", "\n", "$$\n", "\\text{OR}(x) = \\text{TRUE} = +1 = y\n", "$$\n", "\n", "and if $x=(0,0)$, then \n", "\n", "$$\n", "\\text{OR}(x) = \\text{FALSE} = -1 = y.\n", "$$\n", "\n", "Note that here we are choosing to encode $\\{TRUE, FALSE\\} = \\{+1,-1\\}$. Sometimes we will choose to use the encoding $\\{TRUE, FALSE\\} = \\{+1,0\\}$, it doesn't matter, as long as we remember to be consistent." ] }, { "cell_type": "markdown", "id": "dbecc8e7", "metadata": {}, "source": [ "## Representing simple Boolean functions as a linear classifier" ] }, { "cell_type": "markdown", "id": "895b7ab5", "metadata": {}, "source": [ "We will first look at modelling a simple two-input Boolean function as linear classifier. We can think of this as a Perceptron WITHOUT any learning! To get started we will use the OR function, for which the truth table will be familiar to you all. Note that you will need to pick some weights for the function to output the correct values given the input. There are many possible values that could do the job. Also, remember to take care with the dimension of the weight vector." ] }, { "cell_type": "code", "execution_count": 3, "id": "78eb939d", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "OR Function: \n", "For Input [1 0 0] with Class -1 Predict -1\n", "For Input [1 0 1] with Class 1 Predict 1\n", "For Input [1 1 0] with Class 1 Predict 1\n", "For Input [1 1 1] with Class 1 Predict 1\n" ] } ], "source": [ "def sgn(x):\n", " return 1 if x>0 else -1\n", "\n", "# set up\n", "X = np.array([[1,0,0], # all possible inputs, note that first\n", " [1,0,1], # element is always equal to 1 (bias term)\n", " [1,1,0], \n", " [1,1,1]]) \n", "y = np.array([-1,1,1,1]) # labels for the OR function OR(x1,x2)\n", "n = X.shape[0] # number of data points\n", "m = X[0].shape[0] # input dimension\n", " \n", "w = np.array([-0.03, 0.04, 0.04]) # example weight vector\n", "\n", "# what predictions will our current model (w) make?\n", "print(\"OR Function: \")\n", "for i in range(n):\n", " h = np.dot(w, X[i]) # activation\n", " o = sgn(h) # output\n", " print('For Input', X[i], 'with Class', y[i], 'Predict ', o)" ] }, { "cell_type": "markdown", "id": "4c3954de", "metadata": {}, "source": [ "\n", " \n", "#### Exercise: \n", "Repeat the above analysis but for the AND function, choose an appropriate weight vector by trial and error" ] }, { "cell_type": "code", "execution_count": 4, "id": "c2c19a48", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AND Function: \n", "For Input [1 0 0] with Class -1 Predict -1\n", "For Input [1 0 1] with Class -1 Predict -1\n", "For Input [1 1 0] with Class -1 Predict -1\n", "For Input [1 1 1] with Class 1 Predict 1\n" ] } ], "source": [ "### Solution\n", "y = np.array([-1,-1,-1,1]) # labels for the AND function AND(x1,x2)\n", "w = np.array([-0.03, 0.02, 0.01]) # example weight vector\n", "\n", "print(\"AND Function: \")\n", "for i in range(n):\n", " h = np.dot(w, X[i]) # activation\n", " o = sgn(h) # output\n", " print('For Input', X[i], 'with Class', y[i], 'Predict ', o)" ] }, { "cell_type": "markdown", "id": "cc55acad", "metadata": {}, "source": [ "## Perceptron Learning" ] }, { "cell_type": "markdown", "id": "1c0f4983", "metadata": {}, "source": [ "So far, we haven't done any actual learning, we just picked a weight vector, $w$, that works. We now look at an approach to learning $w$ from data. We first recall the (Batch) Perceptron Algorithm from lectures:\n", "\n", "\\begin{align*}\n", "&\\text{input: } (x_1,y_1),\\dots, (x_n, y_n)\\\\\n", "&\\text{initialise: } w^{(0)} = (0,0,\\dots, 0) \\in \\mathbb{R}^p\\\\\n", "&\\text{for } t=1,\\dots, \\texttt{max\\_iter}\\\\\n", "&\\qquad \\text{if there is an index $i$ such that } y_i \\langle w^{(t)}, x_i \\rangle \\le 0:\\\\\n", "&\\qquad \\qquad w^{(t+1)} = w^{(t)} + y_i x_i\\\\\n", "&\\qquad \\text{else:}\\\\\n", "&\\qquad \\qquad \\text{ output } w^{(t)}, t\\\\\n", "\\end{align*}" ] }, { "cell_type": "markdown", "id": "c44daab7", "metadata": {}, "source": [ "The perceptron is known as a mistake driven algorithm, since it updates $w$ only when a mistake is made (i.e. when $y_i \\langle w, x_i \\rangle \\le 0$). It is also important to note that the perceptron only converges when it makes no mistakes on the data, so in other words, this algorithm can only terminate if the data set is linearly separable. We can implement the above in code and try to visualise the learning process." ] }, { "cell_type": "markdown", "id": "986df7de", "metadata": {}, "source": [ "First, some helper functions to generate toy data and plot the perceptron at each iteration." ] }, { "cell_type": "code", "execution_count": 5, "id": "5e72de45", "metadata": {}, "outputs": [], "source": [ "def generate_data(n=20, means=[[3,3],[-1,1]], seed=1):\n", " '''\n", " generate data from two gaussians\n", " '''\n", " np.random.seed(seed)\n", " m1 = np.array(means[0])\n", " m2 = np.array(means[1])\n", " S1 = np.random.rand(2,2)\n", " S2 = np.random.rand(2,2)\n", " dist_01 = np.random.multivariate_normal(m1, S1.T @ S1, n)\n", " dist_02 = np.random.multivariate_normal(m2, S2.T @ S2, n)\n", " X = np.concatenate((np.ones(2*n).reshape(-1,1), \n", " np.concatenate((dist_01, dist_02))), axis=1)\n", " y = np.concatenate((np.ones(n), -1*np.ones(n))).reshape(-1,1)\n", " shuffle_idx = np.random.choice(2*n, size=2*n, replace=False)\n", " X = X[shuffle_idx]\n", " y = y[shuffle_idx]\n", " return X, y\n", "\n", "def plot_perceptron(ax, X, y, w):\n", " pos_points = X[np.where(y==1)[0]]\n", " neg_points = X[np.where(y==-1)[0]]\n", " ax.scatter(pos_points[:, 1], pos_points[:, 2], color='blue')\n", " ax.scatter(neg_points[:, 1], neg_points[:, 2], color='red')\n", " xx = np.linspace(-6,6)\n", " yy = -w[0]/w[2] - w[1]/w[2] * xx\n", " ax.plot(xx, yy, color='orange')\n", " \n", " ratio = (w[2]/w[1] + w[1]/w[2])\n", " xpt = (-1*w[0] / w[2]) * 1/ratio\n", " ypt = (-1*w[0] / w[1]) * 1/ratio\n", " \n", " ax.arrow(xpt, ypt, w[1], w[2], head_width=0.2, color='orange')\n", " ax.axis('equal')" ] }, { "cell_type": "markdown", "id": "6a1d2f87", "metadata": {}, "source": [ "Next, we implement the perceptron learning algorithm. Note here that we will randomly initiliase the weight vector rather than taking the weight vector to be $(0,0,\\dots,0)$, this is done to make it easier to visualise the algorithm. Note we also restrict attention to the two dimensional case, so $w \\in \\mathbb{R}^3$ to account for the two dimensions and the bias (intercept) term." ] }, { "cell_type": "code", "execution_count": 6, "id": "b27bad2b", "metadata": {}, "outputs": [], "source": [ "def train_perceptron_for_vis(X, y, max_iter=100):\n", " np.random.seed(20) # for consistency in weight init\n", " w = np.random.random(3) # init weights randomly\n", " ctr = 0 # keep track of number of iterations\n", " for _ in range(max_iter):\n", " \n", " yXw = (y * X) @ w.T # compute all predictions made by model\n", " mistake_idxs = np.where(yXw <= 0)[0] # find indexes where mistake is made\n", " if mistake_idxs.size > 0:\n", " ctr += 1\n", " i = np.random.choice(mistake_idxs) # pick idx randomly\n", " w = w + y[i] * X[i] # update w\n", " \n", " # visualisation\n", " fig, ax = plt.subplots()\n", " plot_perceptron(ax, X, y, w)\n", " plt.show()\n", " print(f\"Iteration {ctr}: w = {w}\")\n", " \n", " # plot final weight vector\n", " fig, ax = plt.subplots()\n", " plot_perceptron(ax, X, y, w)\n", " plt.show()\n", " print(f\"Iteration {ctr}: w = {w}\")\n", "\n", " return " ] }, { "cell_type": "code", "execution_count": 7, "id": "48e99cf4", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 1: w = [-0.4118692 0.45148601 -0.79584122]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 2: w = [ 0.5881308 -2.59682971 -2.12119882]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAD4CAYAAADxeG0DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAjkklEQVR4nO3deXxU1d3H8c8vCVtAQCCIsiQuuCA7AdkVkC3iUttaNfaxWku1rcXW1qq01j4Va6u12mrrQxVtS9Rq3aoNqyCIrGF1QSkqYREV3BCDQJLz/HESDSGTdWbu3Mz3/XrxGuZmmPtDw3dOzv3dc8w5h4iIhFdK0AWIiEjDKMhFREJOQS4iEnIKchGRkFOQi4iEXFoQJ+3QoYPLysoK4tQiIqG1evXq3c65jMrHAwnyrKwsCgoKgji1iEhomVlhVcc1tSIiEnIKchGRkFOQi4iEnIJcRCTkFOQiIiGnIBeRhsnLg6wsSEnxj3l5QVeUdAJpPxSRRiIvDyZPhqIi/7yw0D8HyM0Nrq4koxG5iNTf1Klfhni5oiJ/XOJGQS4i9bd1a92OS0woyEWk/rp1q9txiQkFuYjU37RpkJ5+6LH0dH9c4kZBLiL1l5sL06dDZiaY+cfp03WhM87UtSIiDZObq+AOmEbkIiIhpyAXEQk5BbmISMgpyEVEQk5BLiIScgpyEZGQU5CLiIScgryyg3uh9GDQVYiI1JqCvLIVV8C8kbD37aArERGpFQV5ZV3Phz0bYVZf2PJI0NWIiNQoakFuZqlmttbMnovWewYi8wKYuA7a9ISlF8Pyy/x0i4hIgormiHwKsDGK7xecVllw5iLoeRO8/XeY3R8+XB10VSIiVYpKkJtZF+As4P5ovF9CSEmD3r+CMQuhZB/MHQIb7wBXGnRlIiKHiNaI/C7gOiBiypnZZDMrMLOCXbt2Rem0cdBxJExcD53PhrU/hYUTYN/OoKsSEflCg4PczCYB7zvnqp17cM5Nd85lO+eyMzIyGnra+GrWDob/CwbeB7uWQH4f2JEfdFUiIkB0RuTDgHPMbAvwKDDazGZG4X0Tixl0/y5MKIAWnWDRWbD6Gij5POjKRCTJNTjInXM3OOe6OOeygAuBBc65SxpcWaJq0wPGr4QTr4Y37oY5g+GTxnGNV0TCSX3k9ZHaHLL/CKc/C/t2wOwBsPmv4FzQlYlIEopqkDvnXnDOTYrmeya0zpP8hdCMYbByMiy5AA58FHRVIpJkNCJvqPRjYNQc6Ptb2P60vxD6/otBVyUiSURBHg2WAj2ug3FLIaUpPH8GbLgZSosDLkxEkoGCPJraD4SJayHrEnjlVz7QPysMuioRaeQU5NHW5AgY8jcYmgcfbfBTLVsfD7oqEWnEFOSxknUx5KyD1if5i6ArroDiz4KuSpJNXh5kZUFKin/Mywu6IokBBXkstToOxi6BHjfAmzN8m+KHa4OuSpJFXh5MngyFhb41trDQP1eYNzoK8lhLaQJ9b4XR8+HgpzB3MLx+l3rOJbqqGnlPnQpFRYe+rqjIH5dGxVwAgZKdne0KCgrift7Afb4bVnwbdvwbjp4IQx6C5h2DrkrCrnzkXTG009MPD/FyZlCqVTzDyMxWO+eyKx/XiDyemneAkU9D9r3w3gLI7w075wZdlYRdpJF3amrVr+/WLfY1SVwpyOPNDE78HkxYBc06wMLxsOYnUHIg6MokTCpOpRRGaHEtKan6eE5OzMqSYCjIg9K2F4xfBd2vgtd/7zeu2LMp6KokDPLy4LLLvryIGUmkEXm+lmBubBTkQUprAQP/DCOegs+2+C3l3nxQF0KlelOmwMGD1b8mPT3yiHzr1ujXJIFSkCeCrudBznpoNxBWXO43fT7wSdBVSaL64IPIXzODzEyYPt0/VkVz5I1OWtAFSJn0Lr5FceNvYcNNsHs5DH0YMoYEXZmESeVulKq6WaZNi29NEnMakSeSlFQ49UZ/ExEG80fAK7dAaYQfkSW5lF/gjKR9+0Of5+Z+OTKvOFLPzY1pmRJ/6iNPVAc+gVVXQeEj0PF0GDrTj9olOVXVK15R06YwY4ZCupFTH3nYNG3jF94a/BB8WOB7zrc9FXRVEpSqesXLZWYqxJOcgjyRmcFxl8KEtX7dlhfPh5VXQXGEf9DSeEXqNDGDLVsU4klOQR4GrbvD2KVwyk9h830wZyB8/HLQVUk8Reo0UQeKoCAPj9Sm0O93MGou7P8QZg+EN+5Rz3mymDbNd5xUpA4UKaMgD5ujx/qe805jYPXVsPhcvxiXNG7qQJFqqGslrJyDN/4I666DZu1hyD98uItIo6WulcbGDE6eAuNXQJM2sGAsrLsBSmu4dVvCSTv9SDUU5GF3ZF+YUADHXwGv3QbzhsOnbwZdlUSTdvqRGijIG4O0lnDadBj+uF9BcVY/eHtm0FVJXUUadWunH6mB1lppTLp9DdoPgqW5sOybsHMODLwXmrQOujKpSeU7N8tH3RC5h1yrGEoZjcgbm5bdYMxC6HUzFD7sR+e7VwZdldSkulG3esilBgryxiglDXr9EsYsgtJimDcMXr0NnPZpTFjVjbrVQy41UJA3Zh2HQ8466PoVWH8DLBgHRe8EXZVUpbpRt3rIpQYK8sau6ZEw7J9w2v2wexnM6g3bnw26KqmsplF3bq5fU6W0VGuryGEU5MnADI7/NkxYDeldYfE5UHA1lHwedGVSTqNuaQDd2ZlsSvb7G4fe+IPfAHrYo9CmR9BViUgt6M5O8VKbwYA74Yx82PcuzB4A/71Pi2+JhFiDg9zMuprZQjN7zcxeNbMp0ShMYuyYiZCzATJG+p2IXvyqX1VRoku31kscRGNEXgxc65zrAQwGvm9m+lk9DFp0glGzoN8d8M5zMKsPvLco6KrCJ1JY69Z6iZMGB7lzbqdzbk3Z7z8FNgKdG/q+EieWAqdcC+OWQWoLeH4UrP+FFt+qrerCWrfWS5xE9WKnmWUBi4Gezrk9lb42GZgM0K1btwGFhYVRO69EycG9sPqH8NaD0H4wDHsYWh0bdFWJLSvLh3dlmZn+Zp6q/n2Z+TZCkTqK+cVOM2sFPAFcUznEAZxz051z2c657IyMjGidVqKpSSsYPAOGPgJ7XoNZfWHLI0FXldiquyNTt9ZLnEQlyM2sCT7E85xzT0bjPSVAWRfCxHXQ5lRYejEsv8yP1uVw1YW1bq2XOIlG14oBDwAbnXN3NrwkSQitjoUzF8OpP4e3/gaz+8OHq4OuKnGUX+AsLPRTJRWVh7Vu8pE4afAcuZkNB14EXgbKJ/5udM7lR/ozuiEoZN5bBMsugc/fgz63wsk/9hdJk1FeHkyZAh98cOhxMz8fnpn5ZYiLRFmkOfIGr0funFsCWI0vlPA66nSYuB5WXAFrfwo758GQv/n2xcaqvOukfK67fDqk4prhFZWH+JYtcS1TBHSLvtSFc7B5Oqz5EaS1gsEPQeecoKuKvsqbPICfLmnR4vCReEXqRpEY0y360nBm0P27fo/QFp1g0Vmw+kd+/ZbGJFL/d3UhDupGkcAoyKXu2vSA8SvhxKvhjbtg7mD45PWgq4qe+myhpm4UCZCCXOontTlk/xFG/huKtvnFt958oHEsvhVpZN2+/eHthOXH1Y0iAVKQS8N0ORsmboAOQ/zF0Je+AQc+CrqqhonU/3333Ye3E86cCbt3K8QlUApyabj0Y2D0XOh7G2x7CvL7wvtLgq6q/tT/LSGjrhWJrt0rYelF8NkW6HkTnDrVbwbdGETqZlHIS5yoa0Xio8MgmLgWMi+Gl2/2qyl+Vo+Lh4lIqxlKglKQS/Q1aQ1D/wFD/gEfrYP8PrD1X0FX1XDVLZAlEiAFucTOsZf4xbdanwhLvg4rvgPFnwVdVf1pNUNJUApyia0jjoexS6DH9b49cXa2H6WHkVYzlASlIJfYS2kCfX8Do+fBwU9gzmnw+l3h6zlXN4skKHWtSHx9vhtWXA47noVjcmDwg9C8Y9BViYSCulYkMTTvACOfgex74N3nIb837JwbdFUioaYgl/gzgxO/DxNWQbMOsHC8Xx635EBsz5uXBx06+POb+d9rR3tpBBTkEpy2vWD8Kuh+FWy8A+YNhT3/jc258vLgsssOXcHwgw/g8ssV5hJ6CnIJVloLGPhnGPEU7H0bZveDtx6K/oXQqVPh4MHDjx84oBt6JPQU5JIYup4HOeuhXbbf7HnpxXDgk+i9f3U37eiGHgk5BbkkjvQuMPp56H0LbH0cZvWFXcui897V3bSjG3ok5BTkklhSUqHnVDjzRf98/gh4ZRqUljTsfadNgyZNDj/etKlu6JHQU5BLYsoY4m/v73YBbPg5LDgTirbX/s/n5UFWFqSk+EeABx/0m0CUa98eZszQDT0SegpySVxN28DQPL/J84er/OJb256u+c+VLzdbWOgvmhYW+ufgN4Fwzv+qxYYQlT8P1OAiiUhBLonNDI67FCasgVbHwotfgZVXQfG+yH8mSsvNRvo8UJhLolGQSzi0PhHGLoVTfgKb74M5A+Hjlw99TfnwubCw6veoY3eKlh+XsFCQS3ikNoV+t8OoObB/N8weCJvu9cPlisPnSLp1q9NciZYfl7BoJHtwSVI5ehzkbPD95gU/8Gu1TFtz+PC5ovR0yMk5dKu2inPnVcyVd+tW9eeCuhUl0WhELuHUvCOc/hz0vwt2zobvbYceEV5bvtxsfn6d5kq0/LiEhYJcwssMTp4C41dASRrcAHwDSK3wmsxM2LLFj7jrOFei5cclLBTkEn5H9oUO98GSVDgHuAnoyOHD53ps1Zab6z8HSku//DwQSTQKcmkccr8NI/4GD3eAo4HfGEy/9NDkbeBciXrKJVEpyKXxyM2F53bBxYXQdRjYX2Dp/8DBT7/8ej3nStRTLolMW71J41RaDK9Og1f+F1oeC8MegfYD6/12kdrTy6fgReJBW71JcklJg16/hDGLoPQgzB0Kr/0WXGm93k495ZLIFOTSuHUcDjnroMt5sO56WDAOit6p89vU4zqpSNxEJcjNbIKZvWFmm83s+mi8p0jUND0Shj8Gg/4Ku5fBrD6w4zmg9hcw1VMuiazBQW5mqcC9wET8LRkXmVmkWzNEgmEGJ1wBE1b7DSwWnc3reT/k6u99XqsLmOopl0QWjRH5IGCzc+4t59wB4FHg3Ci8r0j0tTkZxi2Hk67hZPsTC68/jVM6v/bFl6tbFEs95ZKoohHknYFtFZ5vLzt2CDObbGYFZlawa9euKJxWpJ5Sm8GAP3DW7f/h6LY7Kfh1NpNH/x/gO7h0AVPCJm4XO51z051z2c657IyMjHidViSiVz/KofcNG1iyaTj/9+0ryb9uIke2/FAXMCV0ohHkO4CuFZ53KTsmktCmTYNPD3birfezABhz6gI23NaHv05bFGxhInUUjSBfBXQ3s2PNrClwIfDvKLyvSEzl5sLj09dw5Zi/MvWxaZx/3zJaH9mCsSmjYcNN/qYikRBo8HrkzrliM/sBMAe/7twM59yrDa5MJNZKi8mxAQBMe/pGf+zgGlh9Nbzya3h3Pgx9GFplBVejSC1EZY7cOZfvnDvROXe8c06dtRIOTx3tH7/x+ZfHmrSCwQ+yxD3Cnu2v8vEjffnB2f/UmiqS0HRnpySn//7Fbxd35iLfxVJBXh6Mn3whfa5fx8Z3TuGeiy6k5KXL+Wfe3oCKFameglyST9E7sOp70PXr0HHkYV8u33R5y65jGfnrxdzy9FQuGfoQ2bsHwIdrAihYpHoKckk+T5fd5jDisSq/XLGPvLikCb94/BZG37qAZqmfwdzBsPHOei++JRILCnJJLi9M8o/nvxfxJVX1kS/aeAaT7l0Px5wFa6+FF3JgX+T3EIknBbkkj53z4J3/wGkz/ObNEURaIOunP28PI56EgX+B9xfBrN7wzuwYFy1SMwW5JIfiIlg4DtK7wfGXVfvSahfIMoPuV8L4Amh+FLwwEVb/GEr2x+fvIVIF7RAkyeFh848XFkNKanTes3gfrLsONt0DR/bzuxC1Pik67y1SBe0QJEmnfK3xWy74BQD/cRuiF+IAaS0g+08w8hko2gqz+sObD/g1cUXiSEEuCSHaO9SXb5bc7MAb/Py8W/h9/o+4YHKver9vtfV1OQcmrocOg2HFFfDShXDg44b9BUTqQFMrErjy0C0q+vJYenrDNm7wmyU7XJ4fq1iu/z6vz2bJta6vtAQ23g4bfgEtjoFhD0PGsPr9BUSqoKkVSVjlN+BUVHmDh7qO2LduhQ239Qag1eWfHnI8FvUBftrm1Oth7Et+8+f5I+HlX2nxLYk5BbnUW7SmQ2raob58RFybLdnKfX/So/Tq+gqT7niWz/a3+uJ4fdYar6m+w3QYBBPXQubF8PLN8Pwo+Ey7VUjsKMilXuoTrpHUtEN9rUfE5fZ/yJ8uvIglm0byn7WTvjhc382Sa6qvSk1aw9B/wJB/wEfrIL8PbH2i7icXqQUFudRLncO1Gjk51R+v84j4ifYAFHZ/ISqbJUe6QahWHwrHXuJH50d0hyVfgxWTfU+7SBQpyKVe6hyu1cjPr/54nUbEy8pu9jm3kNxci8pmydXeIFQbR5wAY5dAj5/Bm/fD7Gz4aH39ihGpgoJc6qVe0w0R1PShUOsR8e4V8PZD0O8OaBndjTdzc2nYh0JqU+h7G4yeBwc/hjmD4I0/qudcokJBLvXSoOmGSmr6UKjViLj0oF+ZMKUZnHJt3YuIl05jfM95p3GwegosOhs+3xV0VRJyCnKplwZPN1RQmw+FGkfE/2rnH7++p+4FxFvzDDj93zDgT347ufzefkEvkXpSkEu9NXi6ocL71PZDocqWx9fvhuK9MHapn8IIAzM46QcwfiU0a+cX9Fp7HZQcCLoyCSEFuQDRv0W+rmrzoVBVy+OvfrYN1lwDWd+EjCHxLToajuwN41fBCd/1d4XOGwZ7/ht0VRIyCnKJak94rOTlwaWXVm55dGz6XdlE+tC/B1FWdKSlw6D7YMQTsPdNmN0P3vqbLoRKrSnIJao94bFQ/kFTUnLo8fk3nAlAhyt3B1BVDHQ9318IbTcAln8LlubCgU+CrkpCQEEuUe0Jj4WqPmgm9JnFmJ4LyL13Jq3atQ+msFho2RVGL4Dev4atj8GsfrB7edBVSYJTkEtUe8Jrqy5z8pU/UFo228us63J4/Z2TeHpdbq1aHoO+BlAnKanQ8+dw5mKgFOYNh1dv9asrilTFORf3XwMGDHCSOGbOdC493Tk/Ket/paf74/E+38yZzmVmOmfmH8ufV3yty8O5PFxaWkmtaoz33y+q9n/k3Ivf8H/neWc499m2oCuSAAEFropMVZCLc67qAI2VysFc/qt9+6oD96qrvjz+24t+4lwert9xr9W6xkjny8yM3d8xqkpLnds8w7l/tnTu8XbObXs66IokIJGCXBtLSNylpNStISMz098c9ODdrzH/mlO594XraXv6b2rdtx7pfGa+3TE09myCly6Cj9ZA96ug3+/9dnOSNCJtLKEgl7jzu/fU/vVmUFpSCo+U7bd5cd2+ZyOdrz67BQWuZD+snwqv/x7anArDHoW2PYOuSuJEOwRJwoh0S377CM0n3boBz5btTn/BZ1E7X33WhQlcajPofwecMRv27/YrKW66Vz3nSU5BLnEX6Zb8u++uOnAfnvZ32LsZRs3xN89E6Xz1XVIgIRwzHnI2wFGjoeAHsPg8+LyR9NNLnWlqRRJKXp7vG9+61Y/E75i2m69ZBnQaD6NnB11e4nGlfjncdT+DZh1g6Ew4alTQVUmMaGpFQqHymitfswz/hVGzgiwrcVkKnHwNjFsOTY6A58fAuhv9sr6SNBTkkriWXOQfz9vu50Qksnb9YMJqOP5yeO03MG8E7H0r6KokThoU5GZ2u5m9bmYbzOwpM2sbpbok2e16CbY+6tfsTu8cdDXhkNYSTrsfhj8Ge16H/L7wdiLfwirR0tAR+Tygp3OuN7AJuKHhJUnSKzngb0tv0sav2S110+3rkLPeL5G77BJYdikc/DToqiSGGhTkzrm5zrnisqfLgS4NL0mS3mMt/eNX1YVRby0zYcwL0POXsGWmX3zrg1VBVyUxEs058suBiFekzGyymRWYWcGuXdqjUCJ47Xfgijn73lWkpKUl/gJXiSwlDXrf7AO99ADMHVr23zdMt7NKbdQY5GY238xeqeLXuRVeMxUoBiL+k3POTXfOZTvnsjMyMqJTvTQue7fAup8xY/EVPLc0O2E3uQidjiP8VEuX83yb4sLxsG9n0FVJFDW4j9zMvgV8FxjjnCuq4eWA+silCs7BI35cYbmHf0+G8nb6ROMcvPkArP6hvzA6+EHoPCnoqqQOYtJHbmYTgOuAc2ob4iJVmjcCgHaTP6zyy4myyUWomcEJV/g2xRadYdHZUPBDKPk86MqkgRo6R34PcAQwz8zWmdl9UahJks32Z2D3SzD8MVp3OLLKl8Ryk4uk0+YUGL8cTpoCm/4Ec06DTzYGXZU0QEO7Vk5wznV1zvUt+3VltAqTJHFwj18npG0f6Pb1xrXAVSJLbQ4D7oLT/+Pny2cPgM3TtfhWSOnOTgnW423848S1QCNd4CqRdc7xF0IzhsPK78KSr8H+qqe3JHEpyOULcd/XsmCKf5y06ZBb8Cuvt6IQj7EWR8Oo2dDvdtjxLMzqA+8vDroqqQMFuQA+tCdP9u1+cWn7+2g9bPoj9LoZWneP0Umk1iwFTvkJjF0KKc3h+VGw4SYoLa75z0rgtIytAHHeRae0BB5N87+v424/EgcHP4WCq+Htv0GHoTDsYX+nqAROy9hKtSK198Wk7e+ZslC4QB2rCanJETDkIRiaBx+/DPl9oPCxoKuSaijIBYjc3hf1tr/N98O+HTBmgTYOTnRZF0POOmh9Mrz0DVj+bSiu+1Z7EnsKcgHitK/lvvdg5Xeg87naxSYsWh0HY1+EU2+Etx6EWf3hwzVBVyWVKMiTRE0dKXFp+3uqk388/ekovqnEXEoT6DMNxjwPxXth7mDYeKcW30ogutiZBMo7UooqTEmnp8e5P3vx+bD9KfjKTmjRKU4nlajb/wGs+La/G/foCTD4IWhxVNBVJQ1d7ExiU6ceGuLgn0+dGqcC3nvBh/jA+xTiYdesPYx4Cgb+Gd5/AWb1hne0KXbQFORJIK4dKeVK9vsfvUs+9z3JzTtB9+/G8IQSN2bQ/SoYvwqaZcALE2HNtf7/uQRCQZ4E4taRUq70IDzZCeaPgn+Wdaactz1GJ5PAtO3pw7z79+H1O2HuENjzRtBVJSUFeRKI+0JU7y8GVwK7l/nnfX8HKakxOpkEKq0FDLwHRj4DRVt9V8ubM7T4VpwpyJNA3BeiKnzUdze4g/75+htg+7MxOpkkhC7nwMT10OE0fzH0pQvhwMdBV5U0FORJIm4LUTkH254EykZkqelwxIl+R3dp3NI7w6h50OdW2PYEzOoLu5YGXVVSUJBLdH242m/0C5DaArpfCRPXaa2OZJGSCqfeAGNfAlJg/kh4+dd+fR2JGQW5RNfWx6G4CJq2gzP+A/1/D6lNg65K4q3Daf72/swL4eWbYMFo+Gxb0FU1Wgpyia49G6HTmXD2Jt2Gn+yatIahM2HI3/1t/bP6lE27SbQpyCW6RjzlNylo1j7oSiRRHPtNvwNUqxPgxa/6nYiKtfJlNCnIJbpSUg/Z7UcEgCNOgLFL4JTr/N6gs7P95iISFQpyEYmP1KbQ77cweh4c+AjmDII3/qSe8yhQkItIfHU6E3I2QKexsPqHsOgc+HxX0FWFmoJcROKveQac/iwM+CO8O89fCH13ftBVhZaCXESCYQYnXQ3jV0KTtrBgHKz9GZQcCLqy0FGQi0iwjuwNEwrghMmw8Xcwbxh8ujnoqkJFQS4iwUtLh0H3wYgnYO+bMKsfvP2PoKsKDQW5iCSOruf7xbfa9Ydl/wNLL4GDe4KuKuEpyEUksbTsCqMXQK//9Stp5veF3SuCriqhKchFJPGkpEKvX8CZi4FSmDccXv2NFt+KQEHeyOTlQVYWpKT4x7y8oCsSaYCMoX71zK5fhfU3wsKxULQj6KoSjoK8EcnLg8mTobDQ3yxXWOifK8wl1Jq2hWGPwGkP+CmWWX1g+7+DriqhKMgbkalToajSWkRFRf64SKiZwfGXw8Q1kN4NFp8Lq74PxfuCriwhKMgbka1b63ZcJHRanwTjlsHJP4b//tmv1/Lxq0FXFbioBLmZXWtmzsw6ROP9pH66davbcZFQSm3mNyw5Yxbsfx/mZMN//5LUi281OMjNrCswDtC4L2DTpkF6+qHH0tP9cZFG55gJMHEDdDwDVn0PXvwK7P8g6KoCEY0R+R+A6/hit10JSm4uTJ8OmZl+SjEz0z+P2UbLIkFrcVTZloJ3wjv5kN8b3lsYdFVx16AgN7NzgR3OOa0QnyByc2HLFigt9Y8KcWn0LAVO/hGMWw5preD5MbB+KpQeDLqyuEmr6QVmNh/oVMWXpgI34qdVamRmk4HJAN00aSsi0dauP0xYDaunwKu3wrvPw7CHodVxQVcWc+bqeYHAzHoBzwPlDW9dgHeAQc65d6v7s9nZ2a6goKBe5xURqVHhY7ByMrhSvxhX1sVBVxQVZrbaOZdd+Xi9p1accy875zo657Kcc1nAdqB/TSEuIhJzmRf4O0Lb9oKlubDsUjj4adBVxYz6yEWkcWqVBWcugp43wZaZMKs/fNA4ZwKiFuRlI/Pd0Xo/EZEGS0mD3r+CMS9A6X6YOwReu91PuTQiGpGLSOPXcQTkrIcu58K662DhBNi3M+iqokZBLiLJoemRMPxxGDQddi2B/D6wIz/oqqJCQS4iycMMTviO3yO0xdGw6CxYfQ2U7A+6sgZRkItI8mnTA8avgBN/CG/cDXNOg082Bl1VvSnIRSQ5pTaH7Lvh9Gdh3w6YPQC2/ivoqupFQS4iya3zJMjZAEeNhiO6B11NvdR4i76ISKPX4mg447mgq6g3jchFREJOQS4iEnIKchGRkFOQi4iEnIJcRCTkFOQiIiGnIBcRCTkFuYhIyNV7q7cGndRsF1AY9xPXXgcgDGurh6VOCE+tYakTwlNrWOqExK810zmXUflgIEGe6MysoKp98RJNWOqE8NQaljohPLWGpU4IV60VaWpFRCTkFOQiIiGnIK/a9KALqKWw1AnhqTUsdUJ4ag1LnRCuWr+gOXIRkZDTiFxEJOQU5CIiIacgr4aZXW1mr5vZq2b2u6DrqY6ZXWtmzsw6BF1LJGZ2e9l/zw1m9pSZtQ26porMbIKZvWFmm83s+qDrqYqZdTWzhWb2Wtn35ZSga6qJmaWa2VozS9idG8ysrZn9q+z7c6OZDQm6prpQkEdgZqOAc4E+zrlTgTsCLikiM+sKjAO2Bl1LDeYBPZ1zvYFNwA0B1/MFM0sF7gUmAj2Ai8ysR7BVVakYuNY51wMYDHw/QeusaAqQ6Dsb3w3Mds6dDPQh8es9hII8squA25xz+wGcc+8HXE91/gBcByT0lWvn3FznXHHZ0+VAlyDrqWQQsNk595Zz7gDwKP6DPKE453Y659aU/f5TfOB0DraqyMysC3AWcH/QtURiZm2AkcADAM65A865jwMtqo4U5JGdCIwwsxVmtsjMBgZdUFXM7Fxgh3NufdC11NHlwKygi6igM7CtwvPtJHBAAphZFtAPWBFwKdW5Cz/IKA24juocC+wCHiybArrfzFoGXVRdJPXmy2Y2H+hUxZem4v/btMP/+DoQeMzMjnMB9GvWUOeN+GmVhFBdrc65Z8peMxU/RZAXz9oaEzNrBTwBXOOc2xN0PVUxs0nA+8651WZ2RsDlVCcN6A9c7ZxbYWZ3A9cDvwi2rNpL6iB3zp0Z6WtmdhXwZFlwrzSzUvyCOrviVV+5SHWaWS/8aGK9mYGfqlhjZoOcc+/GscQvVPffFMDMvgVMAsYE8aFYjR1A1wrPu5QdSzhm1gQf4nnOuSeDrqcaw4BzzCwHaA60NrOZzrlLAq6rsu3Adudc+U82/8IHeWhoaiWyp4FRAGZ2ItCUBFsVzTn3snOuo3MuyzmXhf+G7B9UiNfEzCbgf8w+xzlXFHQ9lawCupvZsWbWFLgQ+HfANR3G/Cf2A8BG59ydQddTHefcDc65LmXfmxcCCxIwxCn797LNzE4qOzQGeC3AkuosqUfkNZgBzDCzV4ADwKUJNoIMo3uAZsC8sp8gljvnrgy2JM85V2xmPwDmAKnADOfcqwGXVZVhwDeBl81sXdmxG51z+cGV1ChcDeSVfYi/BVwWcD11olv0RURCTlMrIiIhpyAXEQk5BbmISMgpyEVEQk5BLiIScgpyEZGQU5CLiITc/wNtOAld7yQoPwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 3: w = [-0.4118692 -2.00249179 -2.76919429]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 4: w = [ 0.5881308 -1.74183941 -2.18951439]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 5: w = [-0.4118692 -1.42242212 -2.63810207]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 6: w = [ 0.5881308 -1.02625027 -2.41014956]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 7: w = [ 1.5881308 -0.76559789 -1.83046966]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 8: w = [ 0.5881308 -0.04577813 -2.32033579]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAD4CAYAAADxeG0DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAXEElEQVR4nO3de4xcZ3nH8d+zu3bsteMYxzZJbO+MEZc2hFDIkhZScNIQCCSFP+gfQRsUSqUtBFAqRaKEVVUVyRIqFSUSl2oVoFE9FaUQLqLhEi6JSlVS1iEQElMaRV4nIZcNEMXJOrZ39+kfZ2bnsmduO2fmnHfO9yNZs3N2Lu9a9m/efc/zvMfcXQCAcI2kPQAAQG8IcgAIHEEOAIEjyAEgcAQ5AARuLI033blzpxeLxTTeGgCCdfjw4afcfVfj8VSCvFgsam5uLo23BoBgmdl83HGWVgAgcAQ5AASOIAeAwBHkABA4ghwAAkeQA+ifUkkqFqWRkei2VEp7REMplfJDADlQKknT09LiYnR/fj66L0lTU+mNawgxIwfQHzMz1RCvWFyMjiNRBDmA/jh2rLvjWDeCHEB/TEx0dxzrRpAD6I+DB6Xx8fpj4+PRcSSKIAfQH1NT0uysVChIZtHt7CwnOvuAqhUA/TM1RXAPADNyAAgcQQ4AgSPIASBwBDkABI4gB4DAEeQAEDiCHAACR5ADQOAIcgAIHEEOAIEjyAEgcIkFuZmNmtlPzeybSb0mAKC9JGfkN0g6kuDrAQA6kEiQm9leSVdJuiWJ1wMAdC6pGfknJX1I0kqzB5jZtJnNmdncwsJCQm8LAOg5yM3saklPuvvhVo9z91l3n3T3yV27dvX6tgCAsiRm5JdIepuZHZX0RUl/YmaHEnhdAEAHeg5yd7/J3fe6e1HSNZJ+4O7X9jwyAEBHqCMHgMAles1Od79T0p1JviYAoDVm5AAQOIIcAAJHkANA4AhyAAgcQQ4AgSPIASBwBDmQN6WSVCxKIyPRbamU9ojQo0TryAFkXKkkTU9Li4vR/fn56L4kTU2lNy70hBk5MIyazbpnZqohXrG4GB1HsJiRA8Om1az72LH45zQ7jiAwIweGTatZ944d8c+ZmOj/uNA3BDkwDGqXUubn4x8zPy8dP772+IYN0sGDfR0e+oulFSB0jUspzYyOSqdOrT2+bRsnOgPHjBwI3Q03tA/x8XFpeTn+e7/9bfJjwkAR5EDISiXpN79p/n0zqVCQZmej2zisjwePpRUgZK3KBgsF6ejR+mONSzDj46yPDwFm5ECIKic3m53YlNYG9NRUdWZeO1NnfTx45u4Df9PJyUmfm5sb+PsCQ6GTk5tnny099dTgxoSBMLPD7j7ZeJwZORCauDrxWuPj0s03D248SB1BDoSmVRcmyyW5xMlOIDQTE/Fr43EnN5ELzMiB0Bw8GC2f1KL6JNcIciA0VJ+gAUsrQIimpghurGJGDgCBI8iBEHG5NtRgaQUIDZdrQwNm5EAWtZpxc7k2NGBGDmRNuxk3l2tDA2bkQNa0m3E323aW7WhziyAHsqbdjJuGIDQgyIGsaTfjpiEIDQhyIGs6mXFPTUX7qqysRLeEeK4R5EDWMONGl6haAbKIFnx0gRk5AASOIAeAwPUc5Ga2z8x+aGYPmNn9ZnZDEgMDhgp7o6CPklgjX5J0o7vfY2ZnSjpsZne4+wMJvDYQPvZGQZ/1PCN398fc/Z7y18clHZG0p9fXBYLTbNbN3ijos0SrVsysKOlVku6O+d60pGlJmqCVGMOm1aybvVHQZ+buybyQ2VZJd0k66O63tXrs5OSkz83NJfK+QCYUi80viCxxsWQkwswOu/tk4/FEqlbMbIOkr0gqtQtxYCi1mnWzNwr6LImqFZP0OUlH3P0TvQ8JCETtmvhIk/9KExN0aqLvklgjv0TSuyTdZ2b3lo99xN1vT+C1gWxqXBNfXl77mNpZN52a6KOeg9zdfyTJEhgLEIZSSbruuvjwHh2NNrKamIhCnPDGANDZCcRpVkpYmYnHhbgUhTg7EmLA2DQLaNSqlDCuJrwWpbXDaWVZOvFr6bmj5T/z0vkflkayEaHZGAWQJa0aeFrVflOJEq6VJWnxkWpI1wb2s0elxYclX6p/zoveLY3vHfhQ4xDkQKNWpYQTE/E14aOjVKJk2fKpKIzXBHT59sQjkq/UPMGkzedKWwrSztdKW66RthalLcXo2PiENLY5hR8kHkEONGoW1pUTmLXLLlI0EyfE07V0Qlo8VjObLgd05esTv5ZU0/xoI9LmvVEo7z4Q3W4pSFv3l4N6nzR6Rjo/yzoQ5ECjZmFdW4VSWWahOmUwlp4rh3SToH7+8frH21i07LGlKJ17RXUmvTqj3iuNbBj0T9E3BDnQiLAevNPPVIO6NqArtycX6h8/skEaL8+i91wVfb269FGUNp8njYwO+qdITWJ7rXSDvVYQrMaKFomllU6cejoK5WeP1gd0Zc361O/qHz+6KVqHrix1rM6oC9KW/dLmc6LlkZxpttcKQQ50o9XmWHndAMtdOvmb6onDxqqP545GM+5aY1saArpY//Wm3dF2BqjTLMhZWgG6kcctad2l55+Mn0lXvl56rv45Y2dWlzpqTyZWAvuMswnqBBHkQDdaVbSEylekE4/FBHTl/jFp+UT9cza+IArmM18snXNFNaS3FqOvN2wnqAeIIAe60aqiJatWlqUTj8bXTz93NKqvXjlV/5wzdkbBfNYF0nlXxwT1tgH/EGiFIAe6kcWKlpXT9V2JjVUfi4+s7Urc9MIokHdcJO17RxTQlcqP8Qlpw9ZB/xToAUEOdGvQW9Iun6x2JcZVfZx4tElXYlHa+bpyo0uxPqgz1JWI3hHkQNqWTqxtdqkL6se0titxT/lE4qXVoF5tdgmrKxG9I8iBfjv9bENQH60P6+efqH+8jUVhvKUgnfumhmaX4etKRO8IcuTH9ddHjTvLy9EmV9PT0mc+0/vrnn6mef30c/PSyafqHz+ysVqOt+dPG5pdirnrSkTvCHLkw/XXS5/9bPX+8nL1fqswd5dOPx3fNl5Zsz79dP1zRjdV66V3TNY3u2wtRicac9iViP6hsxP5MDbW5NJsI9Kzj8cHdKVEb+l4w2ttWduJWFued8YuaqjRF3R2Ip/cozXo4rK0S9LO8p/Vr1ek23bXP2fDtmpQ776s5mRiIVqvpisRGUOQI2zNuhIrM+rn5qXl56WP1jznuKSnJD0m6RcmXelRaL/ha1FYb9w+6J8C6AlBjmxbWaq5VmKnXYm7okA+6xXVk4m3/of0L9+SFiQ9X/PY971XGr01eq0XvHIwPxOQMIIc6VpXV+I51ROJ+97RsNXphPRvX5NunJGOHa52Xh68XfpduWpFDVUrd85Lv759sD83kCCCHP21rq7E86I16V2XxOxFXYiqQppp3C98fj66L0WhHVehsvsAQY6gEeToTdOuxPLXcV2JlWaX3ZfWX9VltStx4/rHMzNTv6GVFN2fmWneVr/7QNOXK5Wyta0KEIcgR2truhIbgjquK3HLRLkr8c1ry/PG9/S3K3E9+4XveHV0e+rpuhOdrSb3hDmyhCDPu5ZdiUejK7/UatqVWCw3u5ybTldiZercrC+i1X7hlQ+WhR9Je65ePbyeyT2QBoJ8mK2rK3FzNZhXuxJrgzqDXYlx19GsVdkvvN06yZN31QV5Hi8GhDAR5CFzj/bxWFdXYqG8xWmxusXplkKY10qMmzpXFArViz60Wyd54q66pw7jxYAwnAjyLKt0JTZrdnn2qLTcEGCrXYn713YlbilKG3eEF9TtNJsim1UviFwstl4nsTHptz+p+3aIFwNCPhHkaVrtSjxaP6tebXY5FnUl1tq4o3ytxJdJ57w5Jqi3D/iHyIBOps7t1kl2H5Ce+H7dt7J4MSAgDkHeT+vuSixK2y+MTibWNbsUpA1nDvqnyL5Ops7twj4myKXBXwwIWA+CvBe9diVO/FnDDnoT0Ro2utPJ1Lld2L/wgHRf67ehphxZRZC30ktX4s7X1V/VpRLUrboSsX7tps7twv7si6Pb08/GXniYmnJkWb73I186Ea1DrynPO9q+K7GubXx/Ml2JSNe/mnTZd6Vzr1jzrWIxfmWmUKieTwX6Ld/7kT/zK+nx73V2rcS6rsRifWj3uysR6Xvyztggp6YcWZaPIF/4L2nu/dntSkR2PHlX7GFqypFliQS5mV0p6WZJo5JucfePJfG6iZl4RzTD3nxO9roSkaraE5grhxR96MegphxZ1nOqmdmopE9Leouk8yW908zO7/V1E7VhmzR+HiGOOpUTmPPzUe/Vf/7yj1ePN5qairYyLxSiPqNCIbrPiU5kQRLJdrGkB939IXc/JemLkt6ewOsCfdXY2X/nkUtXj8eZmopObK6sRLeEOLIiiSDfI+nhmvuPlI/VMbNpM5szs7mFhYUE3hboTeOJyruOHIg9DmTdwNYa3H3W3SfdfXLXrl2DelugqcYTlf/94GslSS950fMxjwayK4kgf1TSvpr7e8vHgEw7eDA6YVmxeDLqqv3U392d0oiA9UkiyH8i6SVmtt/MNkq6RtI3EnhdoK/iTmBK0hUX3pnquIBu9Rzk7r4k6QOSviPpiKQvufv9vb4uMAiNJzAlNa0lB7IqkTpyd79dEpchx3AgyBEYCquBWmdf3LARGpB9BDlQa3dUglgqRRtljYxEt3FNQkBWEORArXKQ13Z8VrasJcyRVQQ5UGtX1KZ/+mT9lZsql/cEsoggB2ptPEuSdNH+w2u+RccnsoogB2Ic+P21lStsWYusIsiBGJdfcGfdfbasRZYR5ECMy15+F1vWIhj5uEIQ0I0X/IHGfncv1+JEMJiRYyj1VAdeLkEEQkGQI1X9aLxpvPJP13XgTYKcJiFkFUGO1PQcuE00XvlH6rIOfNfro9uVpb6PFUgCQY7UdBK465kFN6v37rgOfNPO6Pbpn0mnj0vuvX84AH1EkKNjSS8ttAvc9c6Cm9V7d1QH/sDHpe+/Mfr625PSv2+THvrn3j8cgD4iyNGRfiwttAvc9c6CG6/8I3VRB/5/n5ae+H71/oZt0hk7evtwAPqMIEdH+rG08Na3RnXatWoDd72z4Lgr/3RcB/6Kj0pjW6v3l09JOyZ7+3AA+owgR0eSXloolaRbb41m9xVm0nXXVQO3l1lw45V/Om7mKb5TGt1cvT+6Udp8Xm8fDkCfEeToSNJLC3EzfHfp9prrTKUyCx7ZIF3wt9JodCFmbb9w9deGdX84AH1GkKMjSYdqJzP81GbBL/4LaWRMkkm7L+3zmwG9I8jRkaRDtdMZfiqz4NFN0vl/LcmjS78BGUeQo2NJhmrmTx6+9APSeVdJO/8w7ZEAbRHkSMV6ZvgDbZHfcKZ06TelTbv7+CZAMgjynMnSfiHdzPBpkQeaI8hzJMQwrHzwXHstLfJAMwR5joS2X0jtB08ztMgDBHmuhLZfSNwHTyNa5AGCPFdC2y+k3QdMp1UuWTovAPQDQZ4jaZf8dRuorT5gOq1jD/G8ANA1dx/4n4suusiRjkOH3AsFd7Po9tChwb3v+Lh7FKfRn/Hx6vvHjavdczpRKNQ/v/KnUEj+ZwT6TdKcx2Sqee2uRQMyOTnpc3NzA39fpKdYjD9pWShEvxFMT9evh4+PRzNuKVorP3YsmqEfPNhdI9LISP3GXBVmUdkjEBIzO+zuk2uOE+QYhFaBOjHRPOR7vZJ9qw+QXl8bGLRmQc4aOQai1YnWflbTpH1eABgEghwD0SpQ+1lNwz7iyIOxtAeAfKgEZ7P17rg18qRmzVNTBDeGG0GOgWkWqO1CHkBrBDkygVkzsH6skQNA4HoKcjP7uJn90sx+bmZfNbPtCY0LANChXmfkd0i6wN0vlPQrSTf1PiQAQDd6CnJ3/667L5Xv/ljS3t6HBADoRpJr5O+R9K1m3zSzaTObM7O5hYWFBN8Ww4AdCoH1a1u1Ymbfk3ROzLdm3P3r5cfMSFqS1PS/n7vPSpqVohb9dY0WQ6myQ2GljryyQ6FEJQvQiZ73WjGzd0v6S0mXu3ubywBE2GsFtdgPBehMs71WeqojN7MrJX1I0oFOQxxoFNqVi4Cs6XWN/FOSzpR0h5nda2b/lMCYkDOhXbkIyJqeZuTu/uKkBoL8arYfOTsUAp2hsxOpY4dCoDfstYJMYK8VYP2YkecQNdvAcGFGnjPUbAPDhxl5zszM1J9UlKL7MzPpjAdA7wjynKFmGxg+BHnOULMNDB+CPGe4qjwwfAjyIdOuIoWabWD4ULUyRDqtSKFmGxguzMiHCBUpQD4R5EOEihQgnwjyIUJFCpBPBPkQoSIFyCeCfIhQkQLkE1UrQ4aKFCB/mJEDQOAIcgAIHEEOAIEjyAEgcAQ5AASOIAeAwBHkABA4ghwAAkeQA0DgCHIACBxBDgCBI8gBIHAEOQAEjiAHgMAR5AAQOIIcAAJHkAeqVJKKRWlkJLotldIeEYC0cIWgAJVK0vS0tLgY3Z+fj+5LXB0IyCNm5AGamamGeMXiYnQcQP4Q5AE6dqy74wCGG0EeoImJ7o4DGG6JBLmZ3WhmbmY7k3g9tHbwoDQ+Xn9sfDw6DiB/eg5yM9sn6U2S+MV+QKampNlZqVCQzKLb2VlOdAJ5lUTVyj9K+pCkryfwWujQ1BTBDSDS04zczN4u6VF3/1kHj502szkzm1tYWOjlbQEANdrOyM3se5LOifnWjKSPKFpWacvdZyXNStLk5KR3MUYAQAttg9zd3xh33MxeIWm/pJ+ZmSTtlXSPmV3s7o8nOkoAQFPrXiN39/sk7a7cN7Ojkibd/akExgUA6BB15AAQOHMf/HK1mS1Imh/w2+6UFOJvC4x7sBj3YDHu7hTcfVfjwVSCPA1mNufuk2mPo1uMe7AY92Ax7mSwtAIAgSPIASBweQry2bQHsE6Me7AY92Ax7gTkZo0cAIZVnmbkADCUCHIACFzugtzMPmhmvzSz+83s79MeTzdC2/fdzD5e/rv+uZl91cy2pz2mVszsSjP7XzN70Mw+nPZ4OmFm+8zsh2b2QPnf9A1pj6kbZjZqZj81s2+mPZZOmdl2M/ty+d/2ETN7bdpjylWQm9llkt4u6ZXu/nJJ/5DykDoW6L7vd0i6wN0vlPQrSTelPJ6mzGxU0qclvUXS+ZLeaWbnpzuqjixJutHdz5f0R5LeH8i4K26QdCTtQXTpZknfdvffk/RKZWD8uQpySe+T9DF3PylJ7v5kyuPpRmXf92DOTrv7d919qXz3x4o2VsuqiyU96O4PufspSV9U9KGfae7+mLvfU/76uKJQ2ZPuqDpjZnslXSXplrTH0ikzO0vSGyR9TpLc/ZS7P53qoJS/IH+ppNeb2d1mdpeZvSbtAXWim33fM+w9kr6V9iBa2CPp4Zr7jyiQQKwws6KkV0m6O+WhdOqTiiYnKymPoxv7JS1I+kJ5SegWM9uS9qCSuEJQprTZP31M0g5Fv4K+RtKXzOxFnoEazKT2fR+0VuN296+XHzOjaAmgNMix5YmZbZX0FUl/5e7PpD2edszsaklPuvthM7s05eF0Y0zSqyV90N3vNrObJX1Y0t+kPaih0mz/dEkys/dJuq0c3P9jZiuKNr9J/ZJFoe773urvW5LM7N2SrpZ0eRY+MFt4VNK+mvt7y8cyz8w2KArxkrvflvZ4OnSJpLeZ2VslbZK0zcwOufu1KY+rnUckPeLuld96vqwoyFOVt6WVr0m6TJLM7KWSNirjO6+5+33uvtvdi+5eVPQP6dVZCPF2zOxKRb86v83dF9MeTxs/kfQSM9tvZhslXSPpGymPqS2LPt0/J+mIu38i7fF0yt1vcve95X/T10j6QQAhrvL/u4fN7GXlQ5dLeiDFIUkawhl5G5+X9Hkz+4WkU5Kuy/gsMXSfknSGpDvKv0382N3fm+6Q4rn7kpl9QNJ3JI1K+ry735/ysDpxiaR3SbrPzO4tH/uIu9+e3pCG3gcllcof+A9J+vOUx0OLPgCELm9LKwAwdAhyAAgcQQ4AgSPIASBwBDkABI4gB4DAEeQAELj/BwYdH2Ddz3BbAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 9: w = [ 1.5881308 0.21487424 -1.74065589]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 10: w = [ 0.5881308 0.53429153 -2.18924357]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 11: w = [ 1.5881308 0.79494391 -1.60956368]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 12: w = [ 0.5881308 1.38928183 -2.25755914]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 13: w = [ 1.5881308 1.6499342 -1.67787925]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 14: w = [ 2.5881308 -0.75825596 -2.61905618]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 15: w = [ 1.5881308 -0.43883867 -3.06764386]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 16: w = [ 0.5881308 0.28098109 -3.55750999]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 17: w = [ 1.5881308 0.54163347 -2.97783009]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 18: w = [ 0.5881308 0.86105076 -3.42641778]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 19: w = [ 1.5881308 1.12170313 -2.84673788]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iteration 19: w = [ 1.5881308 1.12170313 -2.84673788]\n" ] } ], "source": [ "X, y = generate_data(n=20, means=[[-1,-1], [1,2]], seed=204)\n", "train_perceptron_for_vis(X, y)" ] }, { "cell_type": "markdown", "id": "b047f58f", "metadata": {}, "source": [ "Note that in the implementation we relied on matrix algebra to make life easier. Namely, instead of computing $y_i \\langle w, x_i \\rangle$ for each data point, we can compute this in one go by noting that the design matrix is\n", "$$\n", "X = \\begin{bmatrix}\n", " x_1^T\\\\ x_2^T\\\\\\vdots\\\\x_n^T\n", "\\end{bmatrix} \\in \\mathbb{R}^{n \\times 3},\n", "$$\n", "$y \\in \\mathbb{R}^n$ and $w \\in \\mathbb{R}^3$, so \n", "$$\n", "y \\odot Xw = \n", "y \\odot \\begin{bmatrix}\n", " \\langle x_1, w \\rangle\\\\ \\langle x_2, w \\rangle\\\\\\vdots\\\\ \\langle x_n, w \\rangle\n", "\\end{bmatrix}=\n", "\\begin{bmatrix}\n", " y_1 \\langle x_1, w \\rangle\\\\ y_2 \\langle x_2, w \\rangle\\\\\\vdots\\\\y_n \\langle x_n, w \\rangle\n", "\\end{bmatrix}\n", "$$\n", "\n", "where $\\odot$ is called the Hadamard, or pointwise product, and denotes the elementwise multiplication of two vectors. From here, we can simply check which indices we are making mistakes on by checking which elements of this vector are negative." ] }, { "cell_type": "markdown", "id": "94028b80", "metadata": {}, "source": [ "## Binary Classification with Logistic Regression\n", "The perceptron classifier is perhaps the most simple type of binary classifier. One of the most popular approaches to doing classification in practice however is the Logistic Regression model. In the tutorial this week, we will take a deep look at the theory behind logistic regression. Here, we will be more interested in how logistic regression can be applied to real data problems. We will specifically look at:\n", "\n", "1. The `sklearn` logistic regression implementation\n", "2. Applying logistic regression to MNIST data\n", "3. Common performance metrics used when performing classification\n", "\n", "Further, we will look at:\n", "\n", "4. Softmax Regression: An extension of logistic regression (used only for binary classification) to multi-label classification\n", "\n", "The discussion of logistic regression here is important for two reasons, first we are going to be continuing our exploration of the `sklearn` library, and second we will be working with logistic and softmax regressions, which can be thought of as the simplest type of neural network, and so having a deep understanding of the content here will be very helpful to you in later weeks." ] }, { "cell_type": "markdown", "id": "3eaae9f6", "metadata": {}, "source": [ "#### MNIST Dataset\n", "First we introduce one of the most famous datasets used in machine learning: MNIST. MNIST is often referred to as the `Hello, World!` of Machine Learning. The MNIST dataset is comprised of images of handwritten numbers (0-9), so it has a total of $10$ classes. When doing logistic regression we will only use two labels (any subset of 2 of the 10 available labels in MNIST). The MNIST digits are represented by a a $28 \\times 28$ array (images), and so we have $28 \\times 28 = 784$ features in total.\n", "\n", "We can load MNIST in a number of ways, but see we already have some experience with the `PyTorch` module from the previous lab, we will use it to load in the data. `PyTorch` gives us an easy way to apply transformations to the data and create a `DataLoader` object that makes training models more straight forward. We will discuss the `DataLoader` object in more detail a little later on in the course when we start working with neural nets." ] }, { "cell_type": "markdown", "id": "99718861", "metadata": {}, "source": [ "The following code loads in the MNIST data, here we have both a train data set and a test data set." ] }, { "cell_type": "code", "execution_count": 9, "id": "a1fb116e", "metadata": { "scrolled": true }, "outputs": [], "source": [ "import torchvision #! pip3 install torchvision\n", "import torchvision.transforms as transforms\n", "from torchvision.datasets import MNIST\n", "\n", "transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (1.0,))])\n", "trainset = MNIST(root = './', train=True, download=True, transform=transform)\n", "testset = MNIST(root = './', train=False, download=True, transform=transform)" ] }, { "cell_type": "markdown", "id": "bfd40f6e", "metadata": {}, "source": [ "Let's take a minute to understand these objects:" ] }, { "cell_type": "code", "execution_count": 10, "id": "c28a6b78", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of observations in train set: 60000\n", " Number of observations in test set: 10000\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# size of datasets\n", "print(f\"Number of observations in train set: {trainset.data.shape[0]}\")\n", "print(f\" Number of observations in test set: {testset.data.shape[0]}\")\n", "\n", "# plotting an image in the dataset using imshow()\n", "idx = 2489\n", "plt.imshow(trainset.data[idx], cmap='gray')\n", "plt.title(trainset.targets[idx])\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "ce2ab6e8", "metadata": {}, "source": [ "### Logistic Regression with Sklearn\n", "\n", "In the tutorial this week, we define the logistic regression problem as the problem of minimizing the cross entropy loss:\n", "\n", "\\begin{align*}\n", "\\hat{\\beta}, \\hat{\\beta}_0 &= \\arg \\min_{\\beta, \\beta_0} \\mathcal{L}(\\beta, \\beta_0)\\\\\n", "&= \\arg \\min_{\\beta, \\beta_0 \\in \\mathbb{R}^p} \n", "-\\left [ \n", " \\sum_{i=1}^n y_i \\ln \\left (\\frac{1}{1+e^{-\\beta^T x_i - \\beta_0}} \\right) + (1-y_i) \\ln \\left (1-\\frac{1}{1+e^{-\\beta^T x_i - \\beta_0}} \\right)\n", "\\right]\n", "\\end{align*}\n", "\n", "where $y_i \\in \\{0,1\\}$ is binary valued and represents the label associated with the input $x_i$. In pratice however, we usually work with the following regularized version:\n", "\n", "\\begin{align*}\n", "\\hat{\\beta}, \\hat{\\beta}_0 &= \\arg \\min_{\\beta, \\beta_0} C\\mathcal{L}(\\beta, \\beta_0) + \\text{Penalty}(\\beta),\n", "\\end{align*}\n", "\n", "where Penalty $(\\beta)$ is a penalty/regularization term applied to the weight vector $w$. For example, $\\text{Penalty}(\\beta) = \\|\\beta\\|_1$ when we want to apply $\\ell_1$ regularization to $w$ (this would be the logistic version of the LASSO). Note that we not usually penalize the intercept/bias term $w_0$. Note also the introduction of the hyper-parameter $C$, which does a similar job to $\\lambda$ in the lasso/ridge regression model formulations.." ] }, { "cell_type": "markdown", "id": "bde6e2a6", "metadata": {}, "source": [ "\n", " \n", "#### Exercise\n", "\n", "Consider the `sklearn` logistic regression implementation (Section 1.1.11) which claims to minimize the following objective:\n", " \n", "\\begin{align*}\n", " \\hat{w}, \\hat{c} = \\arg \\min_{w, c} \\left[\\|w\\|_1 + C \\sum_{i=1}^n \\log (1+ \\exp (-\\tilde{y}_i(w^T x_i + c))) \\right ].\n", "\\end{align*}\n", "\n", "It turns out that this objective is identical to our objective above, but only after re-coding the variables to be in $\\{-1,1\\}$ instead of binary values $\\{ 0,1\\}$. That is, $\\tilde{y}_i \\in \\{-1,1\\}$, whereas $y_i \\in \\{0,1 \\}$. Argue rigorously that the two objectives are identical, in that they give us the same solutions ($\\hat{\\beta}_0 = \\hat{c}$ and $\\hat{\\beta} = \\hat{w}$). Further, describe the role of $C$ in the objectives, how does it compare to the standard LASSO parameter $\\lambda$?" ] }, { "cell_type": "markdown", "id": "b396693d", "metadata": {}, "source": [ "\n", " \n", "We can focus on a single $i$ for simplicity, note that the $i$-th summand in the first objective is equivalent to \n", "\\begin{align*}\n", " &y_i \\ln (1+\\exp(-\\beta^T x_i - \\beta_0))+ (1-y_i) \n", " \\ln \\left ( 1+\\exp(\\beta^T x_i + \\beta_0) \\right)\\\\\n", " &= \\begin{cases}\n", " \\ln \\left ( 1+\\exp(-1 \\times (\\beta^T x_i + \\beta_0)) \\right) \\qquad &\\text{if} \\quad y=1\\\\\n", " \\ln \\left ( 1+\\exp(1 \\times (\\beta^T x_i + \\beta_0)) \\right) \\qquad &\\text{if} \\quad y=0\n", " \\end{cases}\\\\\n", " &= \\begin{cases}\n", " \\ln \\left ( 1+\\exp(-\\tilde{y}_i \\times (\\beta^T x_i + \\beta_0)) \\right) \\qquad &\\text{if} \\quad \\tilde{y}_i=1\\\\\n", " \\ln \\left ( 1+\\exp(-\\tilde{y} \\times (\\beta^T x_i + \\beta_0)) \\right) \\qquad &\\text{if} \\quad \\tilde{y}=-1\n", " \\end{cases}\\\\\n", " &= \\ln \\left ( 1+\\exp(-\\tilde{y}(\\beta^T x_i + \\beta_0)) \\right).\n", "\\end{align*}\n", " $C$ attaches higher importance to the `fit'term, so as $C$ increases, we care more about fitting than the penalty, and so $C$ plays an inverse role to that of $\\lambda$ in standard LASSO, i.e. $C \\propto 1/\\lambda$. This is a standard trick used to rewrite loss functions, see for example the SVM objective from lectures." ] }, { "cell_type": "markdown", "id": "c9920eb3", "metadata": {}, "source": [ "We next create train, validation and test sets to run logistic regression on - these will be comprised of only the class1 and class2 images in MNIST (to be determined in the code). Logistic regression expects a vector input and so treats the $28 \\times 28$ image as a flattened 784 dimensional vector. Obviously in practice we would want to account for the spatial properties of the input images, but for here we will ignore those. \n", "\n", "We will take our train set to be 60\\% of the available images, whereas the validation and test sets will be 20\\% each. We will also convert the tensor datasets to numpy arrays.\n", "\n", "To make the problem more challenging for the model, we will work with a smaller sample of size `nSample` and we will also randomly choose a subset of $s$ features and omit the rest." ] }, { "cell_type": "code", "execution_count": 11, "id": "f08c1ff1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Xtrain shape = (1200, 40)\n", "Xvalid shape = (400, 40)\n", "Xtest shape = (400, 40)\n" ] } ], "source": [ "from sklearn.model_selection import train_test_split\n", "\n", "# sample size and features to work with\n", "s = 40 # reduced features to work with \n", "sFeatures = np.random.choice(np.arange(784), size=s, replace=False) # choose s features randomly from the 784\n", "sFeatures.sort()\n", "nSample = 1000\n", "\n", "\n", "# choose two class labels\n", "class1Label = 0\n", "class2Label = 1\n", "\n", "class1Images = trainset.data[trainset.targets==class1Label].reshape(-1,784).numpy() # images with class1\n", "class2Images = trainset.data[trainset.targets==class2Label].reshape(-1,784).numpy() # images with class2\n", "\n", "# work with a smaller sample size\n", "class1Images = class1Images[:nSample, sFeatures]\n", "class2Images = class2Images[:nSample, sFeatures]\n", "X = np.concatenate((class1Images, class2Images), axis=0)\n", "y = np.concatenate((np.zeros(class1Images.shape[0]), np.ones(class2Images.shape[0])))\n", "\n", "# create Xtrain, Xvalid, Xtest\n", "Xtrain, X_, ytrain, y_ = train_test_split(X, y, test_size=0.4, shuffle=True)\n", "Xvalid, Xtest, yvalid, ytest = train_test_split(X_, y_, test_size=0.5, shuffle=True)\n", "\n", "print(f'Xtrain shape = {Xtrain.shape}')\n", "print(f'Xvalid shape = {Xvalid.shape}')\n", "print(f'Xtest shape = {Xtest.shape}')" ] }, { "cell_type": "markdown", "id": "dbd8fb05", "metadata": {}, "source": [ "\n", " \n", "#### Exercise\n", "\n", "In order to choose the correct value of the hyper-parameter $C$, we will use K-fold cross validation. As always, we use the validation set to do any form of hyper-parameter tuning.\n", " \n", "Create a grid fo 100 $C$ values ranging from $C=0.0001$ to $C=1$ in equally sized increments. Use the `sklearn.model_selection.GridSearchCV` to do the grid search cross validation using your parameter grid. For the `estimator` argument, use the `sklearn.linear_model.LogisticRegression` model with `l1` penalty and `liblinear` solver and find the optimal value of $C$ when performing 10-fold cross validation using `neg_log_loss` scoring. Fit your logistic model with the chosen $C$ value. Report train and test accuracy.\n", " \n", "Further, explain why it is a bad idea to tune hyper-parameters using the test set." ] }, { "cell_type": "markdown", "id": "4da28c82", "metadata": {}, "source": [ "\n", "\n", "The test set is an independent clean dataset that we test our final model on. If we were to use it to tune the hyperparameters of our model then we would be using the test set to both tune our model and test our model, and is likely to result in overfitting." ] }, { "cell_type": "code", "execution_count": 12, "id": "74a728d9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Best C according to gridsearch: 0.002119191919191919\n", "Train Accuracy: 0.505\n", "Test Accuracy: 0.475\n" ] } ], "source": [ "#### Solution\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.model_selection import GridSearchCV\n", "from sklearn.metrics import accuracy_score\n", "\n", "C_grid = np.linspace(0.0001, 0.2, 100)\n", "grid_lr = GridSearchCV(estimator=LogisticRegression(penalty='l1', solver='liblinear'),\n", " cv=10, \n", " param_grid={'C': C_grid}, \n", " scoring='neg_log_loss')\n", "grid_lr.fit(Xvalid, yvalid)\n", "Cbest = grid_lr.best_params_['C']\n", "print(f'Best C according to gridsearch: {Cbest}')\n", "\n", "logistic_mod = LogisticRegression(penalty='l1', solver='liblinear', C=Cbest).fit(Xtrain, ytrain)\n", "print(f'Train Accuracy: {accuracy_score(logistic_mod.predict(Xtrain), ytrain)}')\n", "print(f'Test Accuracy: {accuracy_score(logistic_mod.predict(Xtest), ytest)}')" ] }, { "cell_type": "markdown", "id": "44df30fc", "metadata": {}, "source": [ "#### An important distinction: predict_proba vs. predict\n", "Many classification models in `sklearn` (not just logistic regression) have two methods that can be somewhat confusing to students, so let's make sure we understand what each of these methods does and when to use each one. In what follows, let's assume we called our logistic model `logistic_mod`. Then, recall that a logistic regression is a type of regression, meaning it outputs a probability that an input belongs to a particular class (the class coded as $y=1$). In order to turn this into a classifier, we use a threshold value $t$ (known as the discrimination threshold) and classify any probabilty that is $t$ or greater as belonging to class $y=1$, and $y=0$ otherwise. The choice of $t$ is up to the modeller, and the default value is $t=0.5$. \n", "\n", "With this in mind, the `predict_proba()` method returns the predicted probability that the model returns for a particular input, whereas `predict()` returns the predicted class. If we are solely interested in model accuracy, then two different models that have the same predicted labels will be of equal value to us. However, the accuracy can be a crude way of comparing models. \n", "\n", "For example, consider two models: m1 and m2. Let's say we have inputs `[x1,x2,x3,x4]` with labels $[1, 0, 0, 0]$ and the following holds:\n", "\n", "```\n", "m1.predict([x1,x2,x3,x4]) = [1,0,0,0]\n", "m2.predict([x1,x2,x3,x4]) = [1,0,0,0]\n", "```\n", "\n", "So both models have 100\\% accuracy. However, let's say we also get:\n", "\n", "```\n", "m1.predict_proba([x1,x2,x3,x4]) = [[0.1, 0.9],\n", " [0.99, 0.01]\n", " [0.9, 0.1],\n", " [0.92, 0.08]]\n", "m2.predict_proba([x1,x2,x3,x4]) = [[0.49, 0.51] ,\n", " [0.51, 0.49],\n", " [0.52, 0.48],\n", " [0.51, 0.49]]\n", "```\n", "The `predict_proba` method returns the predicted probability for each class, which is why there are two numbers for each `xi`.\n", "\n", "Now, clearly m1 is able to discriminate the positive and negative classes much more effectively than m2, but the two models would be equivalent in terms of accuracy score. If we are more interested in the ability of a model to discriminate between two classes, we would consider different metrics, such as the cross entropy loss (see tutorial this week), which is also called the log-loss, and is implemented in `sklearn.metrics.log_loss`. From tutorials, we know that the cross entropy measures the distance between a predicted probability and the truth, and is defined by\n", "\n", "$$\n", "\\mathcal{L}(w) = -\\sum_{i=1}^n (y_i \\ln \\hat{p}_i + (1-y_i) \\ln(1-\\hat{p}_i)).\n", "$$\n", "\n", "In our toy example,\n", "\n", "```\n", "ll_m1 = log_loss([1,0,0,0], m1.predict_proba([x1,x2,x3,x4])) = 0.0760\n", "ll_m2 = log_loss([1,0,0,0], m2.predict_proba([x1,x2,x3,x4])) = 0.6685\n", "```\n", "\n", "So the log-loss of m1 is much lower than that of m2, and we would prefer m1 if our criteria is log-loss and not accuracy." ] }, { "cell_type": "markdown", "id": "3227045b", "metadata": {}, "source": [ "#### The Trade-Off between TPR (Sensitivity) and TNR (Specificity)\n", "A binary classifier can have one of four possible outcomes:\n", "1. True Positive (TP): classifier predicts $\\hat{y}=1$ when true label is $y=1$\n", "2. False Positive (FN): classifier predicts $\\hat{y}=1$ when true label is $y=0$\n", "3. True Negative (TN): classifier predicts $\\hat{y}=0$ when true label is $y=0$\n", "4. False Negative (FN): classifier predicts $\\hat{y}=0$ when true label is $y=1$\n", "\n", "True positives and True negatives are clearly good, whereas false positives and false negatives are obviously not so good. Two good examples to keep in mind are:\n", "\n", "Example 1 (CANCER DETECTION): You build a classifier that looks at the output of some costly medical test and attempts to predict whether patient has a rare form of cancer and needs further testing ($y=1$) or no cancer ($y=0$). The goal here is to save as many lives as possible.\n", "\n", "Example 2 (MARKETING CAMPAIGN): You work for a bank and wish to identify new customers to send ads to about a new credit card. The classifier identifies a potential customer and sends them a targeted ad via email ($y=1$) or labels them as not a potential customer ($y=0$). The goal here is to increase the revenue stream of the bank." ] }, { "cell_type": "markdown", "id": "25157d0a", "metadata": {}, "source": [ "\n", " \n", "#### Exercise\n", "Discuss Examples 1 and 2, are false positives and false negatives equally as bad in both cases?" ] }, { "cell_type": "markdown", "id": "53368dae", "metadata": {}, "source": [ "\n", " \n", "In cancer detection, a false positive means that we perform further tests on someone who does not have cancer. A false negative means that we send a patient suffering from cancer home. Clearly a false negative is much more costly (in terms of saving lives) than is a false positive.\n", "\n", "In marketing, a false positive means we send someone who is not interested an email ad. Most likely they delete the email without much thought. A false negative means we miss the chance to gain a new customer that will grow our business. A false negative is arguably much worse in this scenario. " ] }, { "cell_type": "markdown", "id": "a543337b", "metadata": {}, "source": [ "We define the following terms, each of which (somewhat annoyingly) has many names in the literature:\n", "\n", "- True Positive Rate (TPR), Sensitivity, Recall: $\\text{TPR} = \\frac{\\text{TP}}{\\text{P}} = \\frac{\\text{TP}}{\\text{TP} + \\text{FN}}$ where $P$ is the actual number of positive values in the data.\n", "- True Negative Rate (TNR), Specificity, Selectivity: $\\text{TNR} = \\frac{\\text{TN}}{\\text{N}} = \\frac{\\text{TN}}{\\text{TN} + \\text{FP}}$ where $N$ is the actual number of negative values in the data.\n", "\n", "Any good classifier should ideally have a large TPR and a large TNR, but unfortunately, there is a trade-off between the two. To see this, consider the following exercise." ] }, { "cell_type": "markdown", "id": "f406db0c", "metadata": {}, "source": [ "\n", " \n", "#### Exercise\n", "Consider fitting logistic regression models to the cancer detection problem discussed earlier. Once you fit your model, you need to choose the discrimination parameter $t$. Explain what happens at the extremes $t=0$ and $t=1$. Explain the trade-off between TPR and TNR and $t$ increases." ] }, { "cell_type": "markdown", "id": "6bbc7289", "metadata": {}, "source": [ "\n", "\n", "At $t=0$ we classify everything as $\\hat{y}=1$, i.e. we classify everyone as having the cancer. While this is going to have a TPR of 100 % it will also lead to fa TNR of 0%. As you increase $t$, you will start to classify less and less instances as positive, and eventually will start to make mistakes, leading to a reduction in TPR. Your TNR must increase though, since classifying more and more negatives is bound to be the correct decision in some cases." ] }, { "cell_type": "markdown", "id": "2338cb1d", "metadata": {}, "source": [ "The Receiver Operator Characteristic (ROC) curve is a graphical depiction of what happens to the TPR and FPR = 1-TNR as we vary the threshold $t$. It is a good way of comparing different classification models. Let's consider a couple of logistic regression models fit to the MNIST problem but with different $C$ values, and compare them by looking at their ROC curves. The Area Under the Curve (AUC) gives us a nice summary of how good a particular model is, it is the area under each of the ROC curves." ] }, { "cell_type": "code", "execution_count": 13, "id": "46995bfe", "metadata": {}, "outputs": [ { "data": { "image/png": "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RcUdl4gUHM0MLSJyfmqGcwxVeWA3MDB9PJqIlBK6HCkiIiJSDHQ5UkRERKQYlLjLkVWrVrUNGjQo7jBEREREcrV69epj1tpqWe0rcUlYgwYNWLVqVXGHISIiIpIrY0y2S4HpcqSIiIhIMVASJiIiIlIMlISJiIiIFIMSNyYsKykpKYSHh5OYmFjcoYhcMLy9valTpw6enp7FHYqISIlUKpKw8PBwfHx8aNCgAcaY4g5HpNSz1hIZGUl4eDgBAQHFHY6ISIlUKi5HJiYm4ufnpwRMpIgYY/Dz81Pvs4jIOSgVSRigBEykiOlnTkTk3JSaJExERESkJFESdh5q0KABx44dO6syzz77LHXr1qVChQr5OuZDDz2Ev78/DofDtW3MmDG8+eab2R730KFDDBo0iEaNGtGuXTuuuOIKtm/fnqfj7dmzh44dO9K4cWNuvPFGkpOTzygTFhZG2bJlad26Na1bt+auu+5y7UtOTuaOO+6gadOmNG/enK+//hqAhx9+2FW+adOmVKpUCYC9e/fStm1bWrduTWBgIB9++KGrrR49etCsWTNXvSNHjgAwefJkqlWr5tr+6aefuuo88cQTBAYG0qJFCx544AFOrcE6Y8YMgoKCCA4O5rLLLnO9VuvXr6dz584EBQVx1VVXER0dDcC0adNc7bdu3Ro3NzfWrVtHfHw8/fr1o3nz5gQGBvLUU0+d8fp8/fXXGGNckxevWLHC1U5ISAjffvutq+zIkSOpXr06rVq1ytTG8ePH6d27N02aNKF3796cOHECgKioKK666ipCQkIIDAzk888/z8vbKiIi+WGtLVGPdu3a2dNt3rz5jG0lWf369e3Ro0fPqsxff/1lDxw4YMuXL5/n46Wlpdl69erZjh072iVLlri2jx492o4dOzbL4zocDtupUyc7ceJE175169bZ3377LU/HvP766+2MGTOstdbeeeed9oMPPjijzJ49e2xgYGCW9UeNGmWfffZZV/xZvRYTJkywI0aMsNZam5SUZBMTE6211sbExNj69evbiIgIa621F198sV25cuUZ9T///HN77733nrH9jz/+sF26dLGpqak2NTXVdurUyS5dutSmpKTYatWquWJ5/PHH7ejRo6211rZv394uW7bMWmvtZ599Zp977rkz2t2wYYNt2LChtdbauLg413uRlJRku3btahcuXOgqGx0d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nsj57vr519v7frmvQNv85Lddtv6T39vohOS8V4o+aO1oX2tXflagsZRGwCqbTU5T7ElVfh9KwnIucyrpcDgc9tprr7UzZszI9XgnTpywderUsc2bN7e7du1ybc8pCUtISLCNGze28+fPd+1bunSp/ffff3M9nrXWdujQwf7111/W4XDYyy67zC5cuPCMMkuXLrX9+vXLsZ3U1FRbo0YNGxYWZq21tn379nbZsmXWWms/++wz+9xzz1lrrd20aZMNDg62iYmJdvfu3bZhw4Y2NTXVHjhwwK5evdpa60xWmjRpYjdt2mSttfbHH3+0KSkp1lprn3jiCVcitGfPHhsYGJhlPBdffLFduXLlGdu3b99uW7dubY8fP26tta7kLCkpySYmJlprrY2JibH169e3ERER9tixY7Zu3br2yJEj1lprhw4dan/55RdrrbXvv/++K/GbMWOGveGGG6y11r733nt2+PDhrvbbtm1r09LSzoilbdu29tdffz1j+4QJE+yIESMybXvggQfs4MGDlYSJnCeUhJU8OSVhhbaA94UkLCyM5s2bM3z4cJo2bcqQIUP45ZdfuOiii2jSpAkrVqwA4Pjx4wwYMIDg4GA6derEhg0bAIiMjKRPnz4EBgZy2223udZGBOf8XqGhobRu3Zo777yTtLS0HGM5NSt+amoqycnJeVqo9JtvvuGqq65i0KBBzJw5M0/nPH36dDp37sxVV13l2tajRw/XEj45OXjwINHR0XTq1AljDEOHDmXu3Ll5Ou7pFi9eTKNGjVyrCGzfvp3u3bsD0Lt3b77++mvAuYTRoEGD8PLyIiAggMaNG7NixQpq1arlWl3Ax8eHFi1aEBERAUCfPn3w8HBese/UqRPh4eFnFSPAJ598wr333utanL169eoAlClTxrU+ZlJSEg6HczLE3bt306RJE9fkupdeemmmcxk2bBgAAwcOZPHixVhr2bx5M7169XK1X6lSJU6f2Hj79u0cOXIky7U9Z8yY4Vq+CmD16tUcPnyYPn36nPV5i0j+WGtJdaRm+7Cc3QTraQ5Lapojy0eao2RN2l6alLoxYW+seIOtx7cWaJvNqzTnydAncyyzc+dOZs+ezaRJk+jQoQPTp0/n999/Z/78+bz66qvMnTuX0aNH06ZNG+bOncuSJUsYOnQo69at44UXXqBr166MGjWKBQsW8NlnnwHO2chnzZrFH3/8gaenJ/fccw/Tpk1j6NChOcbSt29fVqxYweWXX87AgQNzPb8ZM2YwatQoatSowXXXXcczzzyTa52NGzfSrl27LPdt27aNG2+8Mct9y5YtIyIigjp16ri21alTx5X4nO6vv/4iJCSE2rVr8+abbxIYGJhp/8yZMzMlDoGBgcybN48BAwYwe/Zs1yLYERERdOrUKcdjhoWFsXbtWjp27HhGHJMmTcp0Tnv27KFNmzb4+vry8ssvZ0pqRowYgbu7O9dddx3PPfccxhi2b98OwEUXXURaWhpjxozhsssuA2D//v3069ePnTt3MnbsWGrXrk3ZsmXZtm0bYWFh1KlTh7lz55KcnOw6l7p16wLg4eFBxYoViYyMJCQkhPnz5zN48GD279/P6tWr2b9/P6GhoZlerxtvvPGM5Hzv3r3s2bPHlcQ5HA4effRRvvzyS3755Zcs3xsRKVgO6+CexffwR8QfOZarXb52vtr9atV+nvnmX1JzSbbc8vBPuxSsUpeEFZeAgACCgoIAZyJwySWXYIwhKCiIsLAwAH7//XdXb0avXr2IjIwkOjqa3377jW+++QaAfv36uXpLFi9ezOrVq13rGiYkJLh6UHLy448/kpiYyJAhQ1iyZAm9e/fOtuzhw4fZsWOHa31IT09PNm7cSKtWrbLsRctLz1qzZs1yXcA7L9q2bcvevXupUKECCxcuZMCAAezYscO1Pzk5mfnz52dalHzSpEk88MADvPTSS1x99dWUKVMmT8eKjY3luuuu45133jljjc1XXnkFDw8PhgwZAkCtWrXYt28ffn5+rF69mgEDBrBp0yZ8fX2ZNm0a/v7+xMTEcN111/HFF18wdOhQUlNT2bFjB8uWLSM8PJzu3bvz77//UqlSJerWrcuGDRs4cOAAAwYMYODAgdSoUYOJEydy44034ubmRpcuXdi1a1eO5zBy5Ei2bNlC+/btqV+/Pl26dMHd3T1TmZkzZ/LFF1+cUXfmzJkMHDjQVf6DDz7giiuuyJQsi0jhWrB7AX9E/MF1Ta6jVvla2ZbrXqd7nts8EZfMy99vJrC2L5e2qJFtOf/K+ZyCQgpEqXvFc+uxKiynLikBuLm5uZ67ubmRmpp6Vm3a9IWUMyYZeeXt7U3//v2ZN29ejknYV199xYkTJwgIcN5pEx0dzYwZM3jllVfw8/PjxIkTrrLHjx+natWqgDPR/PXXX7NsM7eeMH9//0yX9sLDw/H39z+jbMZk6IorruCee+7h2LFjrhh++OEH2rZtS40a//1iad68OT/99BPgvPS2YMECAPz9/V29YqcfMyUlheuuu44hQ4Zw7bXXZoph8uTJfP/99yxevNiVgHp5ebne33bt2tGoUSO2b99O+/btXW36+Phw0003sWLFCoYOHUqdOnXo2LEjnp6eBAQE0LRpU3bs2OFKsAFq165Nq1atWL58OQMHDuSqq65yXe79+OOPXQnSqXOpU6cOqampREVF4efnhzGGcePGudrr0qULTZs2dT1fv349qampWfZgzpw5k/fff9/1/K+//mL58uV88MEHxMbGkpycTIUKFXj99dfPqCsi5y4+JZ531rxDoF8gozqPws1kM1po3XRY8kae242IiObVtDgurlgNn+M5/Mk/DuT8f15mKYn5KCzZ0ZiwItStWzemTZsGOJORqlWr4uvrS/fu3Zk+fTrgTCxOJT6XXHIJc+bM4ciRI4AzCdq7d2+27cfGxnLw4EHAOSZswYIFNG/eHID33nuP995774w6M2bMYNGiRYSFhREWFsbq1atd48J69OjBrFmzXJfBJk+eTM+ePQG46aab+PPPP11JDsBvv/3Gxo0bXT1hWT0qVapErVq18PX15e+//8Zay9SpU+nfv/8ZsR06dMg1Pm7FihU4HA78/PwyxZ7xUiTgeq0cDgcvv/wyd911FwBXX301M2fOJCkpiT179rBjxw5CQ0Ox1nLrrbfSokULHnnkkUxtLVq0iP/973/Mnz+fcuXKubYfPXrUNTZv9+7d7Nixg4YNG5KamsqxY8cAZ2L3/fffu8bIDRgwgGXLlgFw7Ngxtm/fTsOGDQkPDychwbmsx4kTJ/j9999p1qxZpnM5ceIEH3zwAbfddpvrXKZMmQLAnDlz6NWrF8YY4uPjiYuLA+Dnn3/Gw8ODli1b5vh6AWzdupUTJ07QuXNn17Zp06axb98+wsLCePPNNxk6dKgSMJFCNGXTFI7EH+GJDk9kn4AB/D0Rtv8Ehzfl+kiO+BfvE1sILXcQn6hteaqT58fxXVCjFdRuU3QvUilU6nrCzmdjxoxh5MiRBAcHU65cOdcf0tGjRzN48GACAwPp0qUL9erVA6Bly5a8/PLL9OnTB4fDgaenJ++//75rEPrp4uLiuPrqq10DvHv27OlKQrZu3cpFF12UqXxYWBh79+7NNFYqICCAihUr8s8//3DllVeyevVq2rVrh7u7O40aNeLDDz8EoGzZsnz//fc89NBDPPTQQ3h6ehIcHMz48ePz9Fp88MEHDB8+nISEBC6//HIuv/xyAFf7d911F3PmzGHixIl4eHhQtmxZZs6c6eqNiouL4+eff+ajjz7K1O6MGTNcPTrXXnstI0aMAJw9dzfccAMtW7bEw8OD999/H3d3d37//Xe++OILgoKCaN26NQCvvvoqV1xxBffddx9JSUmunsROnTrx4Ycf8ttvvzFq1Cg8PT1xc3Pjww8/pEqVKsTFxdG3b19SUlJIS0vj0ksv5fbbbwec4/R++uknWrZsibu7O2PHjsXPz4+ff/6ZRx99FGMM1loee+wx12XtBx98kPXr1wMwatQoV6/Wrbfeyi233ELjxo2pUqWKK2k+cuQIffv2xc3NDX9//zMuO3711VcsXLjwjPdi5syZDBo0KE+XmkWk4B2KO8SkjZPoU78PbWu0PbNAcjyELQdHKiRGQUB3uCn3m6ju/HwFq06eYNn9PaCCV67lpeiZjHfilQTt27e3p9/xtWXLFlq0aFFMEZUMV155Jd98802ex0iJ5IV+9kTO3TPLn+HHsB+ZN2AedXyyGIf590RY9NR/z4MHwbUfnVkug9+2H2XopBU8c0Vz7ujeqIAjlvwwxqy21rbPap96wi4Q33//fXGHICIip9l4bCPf7f6OW1vdmnUCBpAS7/x622Jw94SqTbMuly41zcHLCzZT368cw7o0KNiApUApCRMRESkG1lr+t/J/VPGuwm1Bt2VfMNk51pOawc5lgHIxY+V+th+O5cOb2+Hl4Z5reSk+pWZgfkm7rCpS0ulnTuTc/LT3J9YeWcv9be6nQpkKWRdKOAGrJkHAxXlKwKISUhj383Y6BlShb2D2U1LI+aFUJGHe3t5ERkbqj4JIEbHWEhkZibe3d3GHIlIiJaUlMW71OJpWbso1ja/JvuCvYyHhJPR9JU/tvr90Jyfik3n+ypa62aYEKBWXI+vUqUN4eDhHjx4t7lBELhje3t6azFXkLH2x+QsiYiP4tM+nuLtlc8nw2E5Y8RG0vQVqBuXaZtixOD7/Yw8D29ahlX/FAo5YCkOpSMJOTYApIiJyvjuWcIxP//2UHnV70LHWmcukufz8PHiUhV7P56nd137Ygqe7G4/3bVZAkUphKxWXI0VEREqK99a+R1JaEo+1fyz7Qrt/hW0LodsjUCH35er+2hXJj5sOc0+PRlT31TCBkkJJmIiISBHZdnwb3+78lsHNB1PfN+uJt3GkwY/PQKV60OmeXNtMc1heXrAZ/0plua1bwwKOWApTqbgcKSIicr7bErmFZ/94Ft8yvtwZfGf2Bdd+CYc3wsDPwTPnXq2ohBTeWLSVTQeiGT+oNd6empKiJFESJiIiUohOJJ7g3bXvMmf7HCp7V+aVrq9Q0SubgfOJ0bDkZajbCQKzv2vS4bDMXr2f/y3axvH4ZIZ3acDVIbUL6QyksCgJExERKQSpjlRmb5/Ne2vfIy4ljiEthnB367vxLeObfaXf34a4I861IbOZYmLtvhOMmb+J9eFRtKtfmSlXh+puyBJKSZiIiEgBW3loJa+veJ3tJ7bTsVZHng59mkaVclnD8cRe+OsD59qQ/u3O2H00Jok3Fm1lzupwqvt4Me7GEAa09td8YCWYkjAREZECcijuEG+vepsfwn6gVvlavN3jbS6td2neEqVfRoNxg0tGZdqckuZgyp9hjP9lB4mpadx5cUPu79WECl76E17S6R0UEREpAOuOrOP+JfeTkJrA3SF3M6LVCMp6lM1b5X1/w6ZvocfTUNHftTk6MYW7v1zNHzsj6dGsGqOubEnDatkscSQljpIwERGRc/TL3l94avlT1Cxfky+v+DL76Sey4nDAoqfBpzZ0ud+1+WBUAiM+X8nOI7GMHRjMwHZ1dOmxlFESJiIicg6mbZnGGyveILhaMO/2epfK3pXzXjk5Hpa+AgfWwDUfQZnyAGw9FM3wSSuJTUrl8xEd6NakWiFFL8VJSZiIiMhZcFgHb616i6mbp3JJvUt4vdvreHvkcbZ6a2HzXPjxOYgOh9Y3Q9ANAPy58xh3frGacl7ufHVnZ1rWzuFuSinRlISJiIjkk7WWJ397kkVhi7ip+U080eGJ7BfiPt3hTfDDkxC2HGoEwXWfQP0uAMxdG8Hjc9YTULU8k0eEUrtSHseUSYmkJExERCSf9kTtYVHYIka0GsHDbR/O21ithBOw9DVY+Sl4+0K/t6HdcHBzx1rLB8t2MfbHbXRqWIWPbmlPxbKehX4eUryUhImIiORTmk0DoJVfq9wTMEcarJkKi1+ExJPQfiT0fJYTtgKxJ5OwFj5evosv/97H1SG1GXt9MF4eWn7oQqAkTEREpLAkx8GckbB9EdTrApe/AbWCORqTROfXfiHVYV1F77q4EU/0bYabm+6AvFAoCRMRESkMsUdg+g1wcD1c8SZ0uM21FFF0YgqpDsuQjvVoU68ytSt606Vx1WIOWIqakjAREZEcrDy0kglrJuDA4dqWmJqYZdl3F+9gybYj1E4N5/mTo6jkOMFbFZ9n1aqWsOrP/+qnONsKDahC/9b+WbYlpZ+SMBERkRz8ffBv1h1dR5faXVzbKnhWwL+CP8HVgjOVnb/+AHXjNvC6/R8Ww2vVx7Lbqzmnz3FfwQsubVGDdvXzMaeYlDpKwkRERHLhZtz4qPdHWe47FpvEDxsP4XBYAmP/4n/2LcpUrgs3z+GFKg2LOFIpSZSEiYiInIMZ/+zjrZ+3A7CgzHSiytWi2q0/Q3m/Yo5MznduxR2AiIjI+SghNYGopCiSUpNyLJeSfofjmud706yaN1UbtlYCJnminjAREZHTHIk/wuVfX06yIxmAMm5lsiyXmJLG2n0nKOPuRpXyZUDTS0g+KAkTERE5zYnEEyQ7krmm8TU0q9KMej71zigTFZ/C7V+sYsWe4zx/ZctiiFJKOiVhIiIip/z5LuxeBtZ5CfLi3X9zyZ5N6TvfcRVzWMv2vSe4LzmNZvV9qRHmBWHAyf1QrVkRBy0llZIwERGRU1Z9DgnHwa8eeAJJcWBTzyiWlJKGZ3IMAZXLUtUjHhLinTuqN4dmVxRtzFJiKQkTEZELWlRSFMsjlmOtBU8HVAvhYGA/WPsu9H4R6l9yRp19h2IY8M5vfHBpW64IqlUMUUtpoCRMREQuaNO3TOeD9R84n5QDknc7EzCgsrcmU5XCoyRMREQuSNZaLJaktCQ8jAfzB8yHqVdD9ZZw2et4eXhRvVz14g5TSjElYSIicsFZtGcRo/8cTXyqcyyXl7sXdX3rgsOAmzf41i3mCOVCoCRMREQuGNZapm6eypur3iSkWggX+V8EQMOKWl5Iip6SMBERuWBMXD+Riesn0se/O6/GG7y2r0jfswJWzoTYw2fU2XQgio9+3Y3DWte26MQz75gUyS8lYSIicsH4btd3dPRrxdh/f8Ut7hhUrJO5gE8taHhxpk2LNh5i/voDNKxWPtP2lrV8aVbTp7BDllJMSZiIiFw4UhOpdmQNbmkWRi6C2q3zVM3NwJJHexRqaHLhURImIiIXjvhIcC8Dt34PlesXdzRygXMr7gBERESKjLVQvqoSMDkvKAkTERERKQZKwkRERESKgcaEiYhIqfHdru9Yc2RNtvtP5LHrISXNwVs/bScqIYUN4ScLJjiR0ygJExGRUuP9de9zLOEYPmWynjqirIUQ99ynldh5JJYPf92Fr7cHXp7udGlUtaBDFVESJiIipYgjlb5V2/BK8+FZ758zEhrWzLb6kehE9hyLY2+kczmj/w0M4bJW2ZcXORdKwkREpPSIPQKHd8HfX2VfpkyFbHeNnLKSjRHRrucVvPRnUgqPPl0iIlJ6WAs+NeGKydmXqd0m211xSWl0bujH/b0a413GndZ1KhV4iCKnKAkTEZGSbdNc+PFZsA6oCHiXy7T00KKNB3nxu804XEs/rsy2qaOxSQTXqUiXxhoDJoVPSZiIiJRsEasg5iC0vgmi/wG/Rpl2r9sfxaHoRK5vVzdPzV3Xrk7uhUQKgJIwEREp+Ty8oP978PVlUL7ambvd3XhjYHAxBCaSPU3WKiIiIlIM1BMmIiIl04kwSIqBuGPFHYnIWVESJiIiJc+xnfBeu/+el61SfLGInCUlYSIiUvIkRjm/dnsMareGygHFGo7I2VASJiIi57Wlf73JhK1fYK3NsNWCf02I/BViVru2Ho47XPQBipwlJWEiInJeWxW+nD0mjV4elTPv8HIHv+bgXsa1qWGlhlzV6KoijlDk7CgJExGR88YfK99j88EVmbb9GxeOl4W3b1me53bSHJZp/+wlJjGVNXtPFHSYIgVCSZiIiJw3Xvj3Qw66m8wbDbSw+ftzteVgNKPmbXI9b1bDpyDCEylQSsJEROS8kQb096zB6OvmZdru7uGVr3Yc6ePHPry5Hb2aV8fDzeRSQ6ToKQkTEZHzirsxeHqVL5C2PN0NZTw0L7mcn/TJFBERESkGSsJEREREioGSMBEREZFioDFhIiJS4jgclnnrI4hJTM1yf8SJhCKOSCT/lISJiEiJs/lgNA/PWp9jGTcD1Xzyd1elSFFSEiYiIsUjJQFSk/JVJTXNQVxyGlEJKQCMH9Saro2rZlm2jIcbPt6e5xymSGFREiYiIkXv+G54LxQcKZm3160NJvvhyjd98g8rwo67nlcpXwa/CurtkpJJSZiIiBS92CPOBKz9SPBr8t/23VOhRqtsq0WcTCCkTkWubu1PuTLuhAZUKYJgRQqHkjARESlyManxvFjNj1hHBMQlurafdKSAVwVik1J56usNxCZlHnh/NDaJzo38uLVrQFGHLFLglISJiEiR2xl7gEUVytMgMZIKbu6u7c2qNKOrf1e2H47h+w0HCahaHl/v//5UtajpQ6/m1YsjZJECpyRMRESKzJbILew8uZOwyI0AXO3dm6r+N2cqE3scNh47CsDoq1rSo5mSLimdCjUJM8ZcBowH3IFPrbWvn7a/HjAFqJRe5ilr7cLCjElERIrPw8seJiI2wvX8h7XHWfNn9lNNVClfpijCEikWhZaEGWPcgfeB3kA4sNIYM99auzlDseeAr6y1E40xLYGFQIPCiklERIqOdTjO2JaUlkTf+n3p596GVsvuY3NoO+p36JFl/bJl3Knh613IUYoUn8LsCQsFdlprdwMYY2YC/YGMSZgFfNO/rwgcKMR4RESkiOzf/xcDf7mdeDdzxr6K/86hZ+QnAFSuUJYGVcsXdXgi54XCTML8gf0ZnocDHU8rMwb4yRhzP1AeuDSrhowxdwB3ANSrV6/AAxURkYJ15Ph24t0MV3tWo065mhn2GC6rXZ+IOE8+X3mUHtXaFluMIsWtuAfmDwYmW2vfMsZ0Br4wxrSy1mbqw7bWfgx8DNC+fXtbDHGKiEhGidHw03OQHMu6tFimpxzOtPt4WjwAVzW7kU7t7nRtn/zHHt7ed5LjcUn8kRbJxe6aaFUuXIWZhEUAdTM8r5O+LaNbgcsArLV/GWO8garAkUKMS0REztXB9bBmCvj6s8DHkx89HdQ7bQhYC+NOA//MF0A+WLaLhOQ0qvl40crfl0bVKhRh0CLnl8JMwlYCTYwxATiTr0HATaeV2QdcAkw2xrQAvIGjhRiTiIici2M7IHIXHNnkfH7NR3D4N3zDFvHdoOVZVolOTGFV2HGshaRUB1eG1OK1a4OLMGiR81OhJWHW2lRjzH3Ajzinn5hkrd1kjHkRWGWtnQ88CnxijHkY5yD94dZaXW4UETlffXENRGUY7uvtm33ZdB8s3cWHv+5yPffVotoiQCGPCUuf82vhadtGZfh+M3BRYcYgIiIFKCUeWvaHix4CLx+o2gT2fp9jlcSUNCp4eTD99o4YDM1q+hRNrCLnueIemC8iIuej43tg0mWQHJd5e3IMVKhBRMUaDF04lLjUOJJSk/D1yrlHzN3NEFynUuHFK1ICKQkTEZEzndwHsYeg5QDw9f9vuzHQeggHYg9wJOEIvev3pmb5mrT0a1lsoYqUVErCREQke6F3sMmnEt/u+BbXkN3dX3Mk3nkT++Dmg+lQs8MZ1Y7GJPHJ8t3EJaWyKuxEUUYsUmIoCRMRkRx9u+Nbvtr2FZW9K2faXtenLnUq1Dmj/O6jsQz7fAUHTyZSqZxzEH7HgCpFEqtISaIkTEREcmStpbJ3ZX698ddM2zYfjGb/0TT2Hz3u2n4sNolnv/0XN2OYc3cXWtetVAwRi5QMSsJERCTfNkZEc9V7v2e5L6BqeSaP6EB9P60JKZITJWEiIpJvsUmpADx7RQta1v7vzkgDBNetRAUv/XkRyY1+SkRE5D+zh8P+FZCa6HxuTKbd989Yy6qw4ySlOtcoCqpTkU4N/Yo4SJHSQUmYiIj8Z9dSqFADGvWEMj5QKwQOLHbt/mPnMSqX86Rbk6qU9/IgyL9iMQYrUrIpCRMREZfkNMsG9xAWed7BlrjvSZ33GgeT15OQlsbrP2wlLimVfkG1eGlAq+IOVaTEUxImIiIuCSmpbIyI4ovjyylTZybWuoM12ISGTNq+BwNadkikgCgJExG5QO2LjCcuOTXTttoWWtTyYeq1Hbjtp4+YfNmntK/ZvpgiFCndlISJiFyANoSf5Or3/si0rYfbOj71TMDhURa3YopL5EKiJExE5AIUlZACwGN9mtK4egX898whcM1bxFRsTuC1T7MlNbyYIxQp/ZSEiYhcwDo19KN91E+w+jlofCnj6jdn/Z/3kZCaUNyhiZR66nEWEbnQ7fsLylaGwTP5OXwZiamJtKjSgqsbXU3zKs2LOzqRUks9YSIiAu5lwN252Hb3Ot15uuPTxRyQSOmnnjARERGRYqCeMBGR0iruGKRkPbbLK+44tTlGmdgISIot4sBEBJSEiYiUTgfWwccXZ7s7FPjTG5iTvqFivSIISkQyUhImIlIaxR9zfu36CFRpeMbu7Udi+GT5Hu7p0YgAv/JQvWURBygiSsJEREqi6IMw7x5Ijs96f+JJ59dml0Pd0Ey7EpLTmLtkB7PTdnFjk84ENKhSuLGKSJaUhImIlESH/oVdS6B2G/DyPXN/hRrg1xiqNfuvSlQiU/4KY8aKfZyMTyGkTkUaVatQhEGLSEZKwkRESrIr3oI67VxP/9oVyc4jMf/tX3sCywlW7z3Bgg0HcVhLn5Y1Gdk1gA4NKmOMKYagRQSUhImIlCp3T1vNyfiUM7ZX8PJgaOcGjLioAXWrlCuGyETkdErCRERKsNjkVByJ/yVdyakOhnSsx8O9m2YqV8HLA29P90zbElMTSXFkTtistYUXrIhkoiRMRKQksRZ2LyNu6duUBwZ9soKN9limIj7enlSt4JVDE5apm6fyzup3SLWpZ+z3cNOfBpGioJ80EZGSICUR/v0K/p4IRzbj6eXHmynXE9q5OwMq+7iKuRnD5UE1s20mzZHG2FVjmbZlGj3q9qBDjQ6Z9htjuLTepYV2GiLyHyVhIiLno9gjsPAx54z31sKBtRB/jCPlGjPf7zEW0pU1UfHMbVOf1nUrnVH9eOJxXvn7FRJSM8+YH5kYyebIzdzS8hYea/8Ybkar14kUFyVhIiLno4g1sHkeVG0GZcpB/c7Q4XYu/jye8sme1K7kyUWN/ZwTrWZhS+QWftr7EwEVAyjn8d9AfDfceLbjswxqPqiozkREsqEkTESkuMUcgj3LM287uM759ZoPOeLbkr92RUI0pDk2cG1bf565okWemn6xy4u0rt66QMMVkYKhJExEpLgtfQXWTM1ih4GylRn38w5mrNjn2lq5XJmii01ECo2SMBGR4paaBL7+MHR+5u1ePuBTg6TUddT09Wb67R1xM4Z6mudLpFRQEiYicj5w94SqjbPd7eFuaKglhkRKFd0WIyIiIlIM1BMmIlIc4iJh8RjnFBT7/4FspoqITkzhwMmELPeJSMmmJExEpDjs/8c5GN/XHzy8oHHmCVL3Rsbx+R9hzF61n7jkNK5rW6eYAhWRwqIkTESkOA2aDrVbu56u2XeCD5ft4ucth3E3hqtCajPyogCC6lQsvhhFpFAoCRMROU9M/SuMMfM34VvWk3t6NGJo5wbU8PUu7rBEpJAoCRMRKWYOh+WNH7fy0a+7ubRFdcYPakN5L/16Fint9FMuIlLM3v55Ox/9upubO9VjzFWBeLjrxnWRC4GSMBGRYpSc5uDLf/bSN7AGL/VvhTGmuEMSkSKiJExEpCit+ASObIGTewH4Z/dxTsancFPH+krARC4wSsJERIrSj8+AcYcy5aFKI2btsNSq6E3XxlWLOzIRKWJKwkREipK10PluuHQ0h6MTWfjaYu7u0Qh3t7PvBUtITWBL5JZM23ae3HmukYpIIVMSJiJSTL5ZE4HDcs4TsY5fM55pW6Zlua+cpxb7FjlfKQkTESkG1lpmr95P+/qVz3lh7riUOKp4V+H1bq9n2l7BswJNKjU5p7ZFpPAoCRMRKQb/RkSx+2gcd17XMNeyc7bP4eMNH2e7/2TSSSp6VaRz7c4FGaKIFDIlYSIixeBwdBIAgbVzX45o7ZG1nEw6SZ/6fbIt06Z6mwKLTUSKhpIwEZEi5LCWf3ZH8s2h8BzLxafEM3XzVBJTE9kcuZkq3lV4uevLRRSliBQFJWEiIkUo1WFZu+8Ei+0RqlYok+3akKsOr+L9de/jYTwwxtDNv1sRRyoihU1JmIhIIUtOdbDnWBwAAUCbepXZfsflWZY9mXiSowlHiYiNAODLK74ksGpgUYUqIkVISZiISCF7ZcFmpvzlnCF/uxc5rg157fxrOZpw1PXcy92r0OMTkeKhJExEpJCdTEihagUvXuwfiMc3bgTXyX4wflRSFD3r9uTKhlfiU8aHRpUaFWGkIlKUlISJiBSBCl7uXBFUC74Frxx6wgACKgbQp0H2d0KKSOmQ828CERERESkUSsJEREREioGSMBEREZFioCRMREREpBgoCRMREREpBkrCRERERIqBkjARERGRYqAkTERERKQYaLJWEZEsJKak8d36AySlOs65rfjDu7k6ZQWs3A027Yz9m45tYlPkJgDSstgvIqWTkjARkSz8uv0oj8/ZUCBtjfWYzPUev8GC9A0+tUh1pLJk3xK+2PwF646uy1S+ernqBXJcETm/KQkTEclCSpqzB2zmHZ1oWK38ObXlu2AO9mA9zG2/EJMazzcHfmP6N/04EHeAOhXq8GSHJ7m0/qV4uHlgMPiV9SuIUxCR85ySMBGRHPiVL0N1H+9za8TTHdw9wKcG1399GRGxEbSv0Z4nQp+gR50euLu5F0ywIlKiKAkTESlCh+MPc3OLm3ky9MniDkVEipmSMBGRQnA0/iivr3idpLQkSNgG5dJg8X2kOlLx9jjHnjURKRWUhImIFIINRzfw096fCKgYgLdNBjcL8UcI9AsktGZocYcnIucBJWEiIhms2XeC/cfjWbvvZIG0N7b7WJotHQsRq2HkVwXSpoiUDkrCRETSWWsZ9PHfJKfPDeZmwLesZzFHJSKllZIwEZEMklMdDOtcn6FdGuDj7XHud0aKiGRDSZiIyGkqly9Do2oV/tuw9DX49fX8NVKuLNSoBh9eBMkp4NekYIMUkRJPSZiISG6OboWyVSD09rzXid8Px36HdiOgTGWoo8H4IpKZkjARkbwoXw16PpP38nsXw7LfocNtUKVZ4cUlIiWWW3EHICIiInIhUk+YiFyY0lJh7x+QmpRho6WH21oaHD8C28P+2xx7uKijE5ELgJIwEbkw7fwZZgzKtMkAk8sAm9MfGdXpUESBiciFQkmYiFyYkuOcXwd+DpXqA2CxDHj/DwaF1mNwh3qZy1cJKOIARaS0UxImIhcOa+HTSyFyB6SlOLfVDIKqTVz719vD9PRpAnWaFl+cInJBUBImIhcORxpErHJeWvRv55x2okqj4o5KRC5QSsJEpPQL+wM2fQPWuRwRTfrCxY9nWdSz8h/8eXIZsX9XPKdDhseGn1N9ESn9lISJSOn39wewbSGUrQzlqzsvQWbBWot3ze/YHl+GQ2Hlz/mw9X3rU6NcjXNuR0RKJyVhIlLyJUbDkS3Z7o6LP8aOmk3hmo/+23hk3RnlHOk9ZcEVrmHqtc8VdJQiIpnkKQkzxrQHugG1gQRgI/CztfZEIcYmIpI3Cx6Ff7/KdverVasw36cC/HBLnprzNFq0W0QKX45JmDFmBHA/sAdYDWwDvIGuwJPGmI3A89bafYUdqIhItpJioHIA9Hsry92xWz7DP/Eoo7q8kGMzFsvQz1bRovMlhRGliEgmufWElQMustYmZLXTGNMaaAIoCRORonVwA8wZAanJEHcEqjaFxtkkT/vmU94m0cW/S5a7P/9jD58u3wNAWnxjPEyZwopaRMQlxyTMWvt+dvuMMeWttesKPCIRkbw4shkid0LzK8HLN/sELA/+2X2c6MQU+rSsibsb9AuqVYCBiohkLdcxYcYYf6AWsMFam2yMqQ48BAzHOUZMRKT49HkJqjTMd7WohBSm/BlGUmoa2w/HULtiWd66IaQQAhQRyZpbTjuNMQ8B64B3gb+NMbcBW4CyQLvcGjfGXGaM2WaM2WmMeSqbMjcYYzYbYzYZY6bn9wRERM7G8h1Hefvn7Xz46272HY+neS2f4g5JRC4wufWE3QE0s9YeN8bUA7bjHCO2OreGjTHuwPtAbyAcWGmMmW+t3ZyhTBPg6fQ2T6T3somI5EtyWjL7orMfmhqXEnfGNod1fv3xoe40rl6hsEITEclWbklYorX2OIC1dp8xZlteErB0ocBOa+1uAGPMTKA/sDlDmduB909NdWGtPZKv6EVEgBf+eoH5u+bnWCa4anARRSMikje5JWF1jDETMjyvlfG5tfaBHOr6A/szPA8HOp5WpimAMeYPwB0YY61ddHpDxpg7cPbKUa9evVxCFpELTXRSNP4V/Hm43cPZlmlepXkRRiQikrvckrDTF1fLay9Yfo7fBOgB1AF+M8YEWWtPZixkrf0Y+Bigffv2toBjEJFSwLeML30b9C3uMERE8iy3KSqmGGOqAfVxXlo8mY+2I4C6GZ7XSd+WUTjwj7U2BdhjjNmOMylbmY/jiIiIiJQ4ud0deRuwCefdkVuNMVfno+2VQBNjTIAxpgwwCDh90MZcnL1gGGOq4rw8uTsfxxCRC1RsWhJf+vowaec37IvRfNEiUvLkdjnyISDQWnvUGNMQmMaZiVSWrLWpxpj7gB9xjveaZK3dZIx5EVhlrZ2fvq+PMWYzkAY8bq2NPMtzEZELyG/RO3nDrzJsmQJA7/q9izkiEZH8yS0JS7bWHgWw1u42xnjlp3Fr7UJg4WnbRmX43gKPpD9ERPIszToA+ObiCdSp0wkv93z9ehIRKXb5vTuyTj7ujhQRKXTe7mUo61G2uMMQEcm34r47UkREROSClFsS1sxa+0yRRCIikhtrYd59cGIPJB10LqAmIlJC5Xh3JHBZkUQhIpIXqYmw7kuICgfvis5tFWoWb0wiImcpt54wd2NMZcBktfPUkkYiIkWq/Qio1Rh+fwbcyxR3NCIiZyW3JKw5znFgWSVhFmhY4BGJiGRn49fOr+X8ijcOEZECkFsSttla26ZIIhERycn+lfD9w6QEdCel5QCS9v1U3BGJiJyT3JIwEZHiF30QZt3Mnoo1GeEVTeSsi1y73N3cizEwEZGzl1sSNr5IohARyU5qEnx1CzHJMTzQIAhHagKPtHsEg6Gyd2Vqla9V3BGKiJyV3JKwrsaY1dbaf0/fYYwpD9wIJFlrpxVKdCJyYbMWFjyCI3wlT7fuTXj0Lj7u8zEdanYo7shERM5ZbknYe8DzxpggYCNwFPAGmgC+wCSc60mKiBS8FZ/A2i95L7gvv0Zt4ZmOzygBE5FSI8ckzFq7DrjBGFMBaA/UAhKALdbabYUfnohcsPYsh0VP8VPjLnwSs4Vrm1zLoGaDzrnZNftOEH4igTV7TxRAkCIiZy9PA/OttbHAssINRUQk3cl9MHsY26o24DmOEVIthGc7PosxWU5ZmGffrAnnka/Wu567GfAtq/uTRKR46LePiJxfkuNh5k2cdKTyYLUq+GAZ12McZc5xUtZftx/liTkb6NLIjxf7BwIG37IeVPfxLpi4RUTySUmYiJw/rIV595J6aCOPhfTkSOxeJl82mWrlqp1Ts/+GR3H3l6tpUsOHj25ph4+3ZwEFLCJy9nJbOzITY0y5wgpERIQ/3oFN3/BWSF/+id7JqM6jCK4WfE5N7o2MY8TkFVQuV4bJIzooAROR80aekjBjTBdjzGZga/rzEGPMB4UamYhcWLb/BL+8wLxm3fkyejM3t7iZAY0HnFOTx2KTGDZpBakOy5SRodTw1aVHETl/5LUnbBzQF4gEsNauB7oXVlAicoE5thO+vo1/azXnxdQDdKzZkUfbP3pOTcYnp3Lr5JUcjErks2HtaVy9QgEFKyJSMPI8Jsxau/+0O5PSCj4cEbngJEbDzMEc9fTkoUpeVPOoxNiLx+LhdvZDVlPSHNw7bQ3/RkTx0S3taVe/SgEGLCJSMPLaE7bfGNMFsMYYT2PMY8CWQoxLRC4EDgd8cwfJkbt4uFEgMakJjO85nsrelc+6SWstz377L0u3HeXlAUH0blmjAAMWESk4eU3C7gLuBfyBCKA1cE8hxSQiF4plr2K3/8CrIb1ZH72Hly56iWZVmp1Tk2//vJ2vVoXzwCVNuKljvQIKVESk4OW1v7+ZtXZIxg3GmIuAPwo+JBG5IGyeB7+NZVaLXnwdtZnbg26nb4O+59Tkl3/v5d0lOxnUoS4PX9qkgAIVESkcee0JezeP20REcnd4E3x7N6vqBPNG0h661+nOfW3uO6cmf9x0iFHzNnJJ8+q8PKDVOc+uLyJS2HLsCTPGdAa6ANWMMY9k2OULuBdmYCJSSsUfhxmDOVjWh0fLW+p41+X1bq/jZvI1bWEmq8KO88CMtQTXqcS7N7XBw/3s2xIRKSq5/aYqA1TAmaz5ZHhEAwMLNzQRKXXSUmH2cBJiD/Jg/cYk2zQm9JqATxmfs25yx+EYbp2yCv9KZZk0vAPlymghEBEpGXL8bWWt/RX41Rgz2Vq7t4hiEpHS6udR2D2/Mrp1X7ZGbeW9S94joGLAWTd3KCqRYZNWUMbDjSkjQ6lS/tzWlxQRKUp5/Zcx3hgzFggEXFNOW2t7FUpUIlL6rJsBf7/P561680PUFh5s+yDd65z9nM9RCSkM/3wFUQkpzLqzM3WraFU1ESlZ8jpwYhrOJYsCgBeAMGBlIcUkIqVN+Gr47kF+b9Ced+K207dBX25tdetZN5eUmsadX6xi55FYPrylHa38KxZgsCIiRSOvSZiftfYzIMVa+6u1diSgXjARyV3MYZh1M3t9a/BEmTiaVm7Ki11ePOu7Fx0OyyNfrefv3cd58/oQujWpVsABi4gUjbwmYSnpXw8aY/oZY9oAWgdERHKWmgRf3UJs4kke8K+Nu5sn43uNp5zn2V06tNby8oItLNhwkKcvb86ANv4FHLCISNHJ65iwl40xFYFHcc4P5gs8VFhBiUgpYC0sfBzH/n94unVv9kbv5OPeH+Nf4ewTp0+W72bSH3sYcVED7ujesACDFREpenlKwqy136d/GwX0BNeM+SIiWVv1GayZwsTgviyL2sJToU8RWiv0rJubuzaCVxdupV9wLZ7v11KTsYpIiZfbZK3uwA0414xcZK3daIy5EngGKAu0KfwQRaTECfsDfniSXxp14sOYLfRv1J+bmt901s39vuMYj89ZT6eGVXj7hhDc3JSAiUjJl1tP2GdAXWAFMMEYcwBoDzxlrZ1byLGJSEl0cj98NZQdfvV4xu0EQVWCeL7z82fdc7UxIoo7v1hFo2oV+Hhoe7w8tFiHiJQOuSVh7YFga63DGOMNHAIaWWsjCz80ESlxkuNh1hCiHCk8UN2P8jaNd3q+g5e711k1t/94PMM/X0mlcmWYPCIUX2/PAg5YRKT45HZ3ZLK11gFgrU0EdisBE5EsWQvfPUDqwQ081rw9hxOPM67HOKqXq35WzR2PS2bopBWkpDmYMrIDNSt6515JRKQEya0nrLkxZkP69wZolP7cANZaG1yo0YlIyfHnBPh3NuNCLuPvqM282OVFWldvfVZNxSenMnLySg6cTGDabR1pXP3s15YUETlf5ZaEtSiSKESkZNv5C/wyhu+admNq9GYGNx/MNU2uOaumUtMc3D99LRvCTzLx5na0b6ApCUWkdMptAW8t2i0iOYvcBXNGsqlGU8akHaRDzQ483uHxs2rKWstzczeyeOsRXhrQir6BNQs4WBGR80deJ2sVETlTUgzMvIlj7u48WLkcVd3L8ObFb+LpdnYD6N/5ZQczV+7nvp6NuaVT/QIOVkTk/JLXZYtERDJzOOCbO0k5toNHGgcTlRLL+F7jqeJ9dpcPp/+zj/GLd3B9uzo82qdpAQcrInL+yXMSZowpa4xpVpjBiEgJ8usbsG0Br4X0Zm30bl666CWaV2l+Vk39vPkwz839lx7NqvHqtUGaDV9ELgh5SsKMMVcB64BF6c9bG2PmF2JcInI+2/Id/Po6X7XoyeyozYxsNZLLAi47q6ZW7z3B/TPWEORfkQ+GtMXTXR30InJhyOtvuzFAKHASwFq7DggolIhE5Px2ZAt8exdr/IN4LSmMrv5deaDNA2fV1M4jsdw6ZSU1fb2ZNLwD5cpomKqIXDjy+hsvxVobddolAlsI8YjI+Sz+OMwYzCHv8jzsY/D3qsMb3d/A3S3/Swkdjk5k2KQVeLgZpo7siF+Fs5tVX0SkpMprT9gmY8xNgLsxpokx5l3gz0KMS0TON2mpMGckidHhPFC/CUmOFCb0nIBvGd98NxWdmMLwz1dyMj6Zz4eHUs+vXCEELCJyfstrEnY/EAgkAdOBKOChQopJRM5Hv4zG7l7KmKBebI3dz+vdXqdhpYb5biYpNY27vljNjsMxTLy5HUF1KhZCsCIi57+8Xo5sbq19Fni2MIMRkfPUhq/gr/eYGngpC6K2cF/r++hRt0e+m3E4LI/N3sCfuyJ5+4YQujetVvCxioiUEHntCXvLGLPFGPOSMaZVoUYkIueXA2th/v38Wb8dbyfspHf93twRfMdZNfXqwi18t/4AT17WnGvb1ingQEVESpY8JWHW2p5AT+Ao8JEx5l9jzHOFGpmIFL/YIzBzCPsrVOVxr0QaVWrEyxe9fFbzeH26fDef/r6HYZ3rc9fF+b+MKSJS2uR5Qh5r7SFr7QTgLpxzho0qrKBE5DyQmgxfDSUu4QQP1KmLcXNjfM/xlPPM/yD6+esP8PKCLVwRVJNRVwVqMlYREfI+WWsLY8wYY8y/wKk7I3UtQaQ0W/Qkjn1/8WxgV3bHH2Rs97HU9amb72b+3HmMR79aR2hAFd6+oTXubkrAREQg7wPzJwGzgL7W2gOFGI+InA9WfQ6rJvFRUB8WR23l8faP07l253w3s/lANHd8sZqAquX55Jb2eHvmfz4xEZHSKk9JmLU2/799RaRk2vc3LHycJQ078kHsVq5qeBW3tLwl383sPx7P8M9X4OPtwZSRoVQs51kIwYqIlFw5JmHGmK+stTekX4bMOEO+Aay1NrhQoxORohUVAbNuYWeVOjztfpLAioGM6jwq32O4TsQlM+zzFSSmpDHn7i7Uqli2kAIWESm5cusJezD965WFHYiIFLOUBJg1hKjUBB6s0YCyjhTe6fkO3h7e+WomITmNW6esJPxEAl/e2pGmNXwKKWARkZItx4H51tqD6d/eY63dm/EB3FP44YlIkbAWvnuQtANreaJFKAcSjzGu5zhqlq+Zr2ZS0xzcP2Mta/efZMKg1oQGVCmkgEVESr68TlHRO4ttlxdkICJSjP56HzbMYnzIZfwZtYNnOz5Lm+pt8tWEtZbn523ily2HeeHqQC5rVauQghURKR1yGxN2N84er4bGmA0ZdvkAfxRmYCJSRHYtgZ+fZ0GTi/g8ejM3NruRgU0H5ruZCYt3MmPFPu7p0YihnRsUfJwiIqVMbmPCpgM/AK8BT2XYHmOtPV5oUYlI0Ti+G2aPYHP1xoy2h2lbvS1Pdngy383MXLGPcb9s59q2/jzet1khBCoiUvrkloRZa22YMebe03cYY6ooERMpwZJiYeYQIt0MD1apQGV3D97u8Tae7vmbSmLxlsM8O3cj3ZtW443rgjUbvohIHuWlJ+xKYDXOKSoy/na1gBaAEymJHA6YexcpR7fyaPDFnIgLZ8qlU/Ar65evZtbuO8G909fQspYvE4e0xdM9zyuhiYhc8HJMwqy1V6Z/DSiacESkSCx/E7Z8xxutL2N11GZe7/Y6gX6B+Wpi99FYRk5eSQ1fbyYN70B5r7wuwCEiIpD3tSMvMsaUT//+ZmPM28aYeoUbmogUiq0LYekrfN28B7OiNjM8cDj9GvbLVxNHYhIZOmkFbsYwZUQo1Xy8CilYEZHSK6/XDiYC8caYEOBRYBfwRaFFJSKF4+g2+OYO1tUO5OWUfXSp3YWH2j6UryZiElMY8flKImOTmTS8Aw2qli+cWEVESrm8JmGp1loL9Afes9a+j3OaChEpKRJOwozBHPLy5iFfD2qVr8X/uv8Pd7e8L6qdnOrg7i/XsPVQDB/c3JaQupUKLVwRkdIur0lYjDHmaeAWYIExxg3QarwiJYUjDb6+laST+3g4oAUJaUlM6DmBil4V896Ew/LEnPX8vvMYr18bRM9m1QsxYBGR0i+vSdiNQBIw0lp7CKgDjC20qESkYC1+AbvzF14M7sXGmDBe6/YajSs3zlcTbyzaytx1B3i8bzOub1+3kAIVEblw5CkJS0+8pgEVjTFXAonW2qmFGpmIFIx/58Af4/ky8BLmR23hnpB76FWvV76amPT7Hj76bTe3dKrPPT0aFVKgIiIXlrzeHXkDsAK4HrgB+McYk/91TUSkaB1cD/Pu4+96bXgrYTe96vbizpA789XE9xsO8NKCzVwWWJMxVwdqMlYRkQKS14l9ngU6WGuPABhjqgG/AHMKKzAROUexR2HmEPZXqMJjZZMJKBfAq91exc3kfULVP3cd45FZ62lfvzLvDGqNu5sSMBGRgpLX38ZupxKwdJH5qCsiRS0tBWYPIz7+GA/WrY8DGN9zPOU98z6dxNZD0dw5dTX1/MrxydD2eHvm/S5KERHJXV57whYZY34EZqQ/vxFYWDghicg5W/Q0du8fPNe6L7uitzHxkonU8837/MoRJxMYNmkF5b08mDIylErlyhRisCIiF6Y8JWHW2seNMdcCXdM3fWyt/bbwwhKRs7ZmKqz8hE+C+vBz1BYebfcoXfy75Ln6yfhkhk1aQXxyGrPv6ox/pbKFGKyIyIUrxyTMGNMEeBNoBPwLPGatjSiKwETkLOxfAd8/wrKAUN6L3Ua/hv0YFjgsz9UTU9K4bcoq9kXGM2VkKM1r+hZisCIiF7bcxnVNAr4HrgNWA+8WekQicnaiD8Csm9lduTZPeUTTvEpzxnQek+e7GdMclgdmrGX1vhOMu7E1nRv5FXLAIiIXttwuR/pYaz9J/36bMWZNYQckImchJRFm3Ux0chwP1G+AlyOJ8T3H4+3hnafq1lpGz9/IT5sPM/qqlvQLrlXIAYuISG5JmLcxpg1w6l/pshmfW2uVlIkUN2vh+4dJi1jNk60vJSJ6N5/2/ZRaFfKeSL2/dCdf/r2POy9uyIiLAgoxWBEROSW3JOwg8HaG54cyPLdA/qbdFpGC98+HsH4674b05feoLTzf6Xna1WiX5+pfrdrPmz9t55o2/jzZt3khBioiIhnlmIRZa3sWVSAichZ2L4Mfn2VR44v4LHoLA5sO5IZmN+S5+tKtR3j6m3/p1qQqb1wXjJsmYxURKTKacFWkpDoRBrOHs7VaQ57nCG2qt+GZ0GfyXH3d/pPcM20NLWr5MPHmdpTx0K8DEZGilNfJWkXkfJIcBzOHcNxYHqzqi68xvN3jbTzdPfNUfc+xOEZOXklVnzJMGt6BCl76VSAiUtT0r69ISWMtzL2HlCObeaxJW44lRTGh5wSqlq2ap+pHY5IYNmkFAFNGhFLdJ293UIqISMHKUxJmnG42xoxKf17PGBNauKGJSJaWvwWb5/JmSB9WRu9kTJcxBFYNzFPVuKRURk5eydGYJD4b1p6G1SoUcrAiIpKdvPaEfQB0BganP48B3i+UiEQke9t/hCUv822zi5ketZlbWt7CVY2uylPVlDQHd09bw+aD0bw/pA1t6lUu5GBFRCQneR0I0tFa29YYsxbAWnvCGKMVfUWK0tHt8PVtrK/VgpdSw+lUqxOPtHskT1WttTz59QZ+236U/10XTK/mNQo5WBERyU1ek7AUY4w7zrnBMMZUAxyFFpWIZJZwEmYO5oinFw9XLEMNz0qM7T4WD7e8/Qj/78dtfLMmgkd6N+WGDnULN1YREcmTvF6OnAB8C1Q3xrwC/A68WmhRich/HGnwze0knQjj4YYtiU1LYEKvCVTyrpSn6lP+DGPisl3c1LEe9/dqXLixiohInuXp32hr7TRjzGrgEpxLFg2w1m4p1MhExGnJy9gdP/Fy68vYELWZcT3G0aRykzxVXfjvQcZ8t4neLWvwUv9WeV7MW0RECl9e746sB8QD3wHzgbj0bbnVu8wYs80Ys9MY81QO5a4zxlhjTPu8Bi5yQdj4Dfz+NtNb9mJu1GbuDL6TS+tfmqeq/+yO5KFZ62hbrzLvDm6Du2bDFxE5r+R1TNgCnOPBDOANBADbgGzvi08fQ/Y+0BsIB1YaY+ZbazefVs4HeBD4J9/Ri5Rmh/6Fefeyom4IYxP30KNuD+5pfU+eqm47FMNtU1dRt3JZPhvWHm9P90IOVkRE8itPPWHW2iBrbXD61yZAKPBXLtVCgZ3W2t3W2mRgJtA/i3IvAW8AifmIW6R0i4uEGTcRUa4ij5ZLo75vfV7r+hpuJvcf2QMnExg2aQXlyrgzZWQolcrpRmYRkfPRWc2Yb61dA3TMpZg/sD/D8/D0bS7GmLZAXWvtgpwaMsbcYYxZZYxZdfTo0bMJWaTkSEuB2cOIjzvMg/UakmYt43uOp0KZ3CdWjYpPYdikFcQlpTJ5RCh1KpcrgoBFRORs5OlypDEm42REbkBb4MC5HNgY4wa8DQzPray19mPgY4D27dvbczmuyHnvp+ewYcsZ3aYv209u5YNLP6BBxQa5VktMSeP2qasIi4xjyohQWtTyLfxYRUTkrOV1TJhPhu9TcY4R+zqXOhFAxgmJ6qRvy9hmK2BZ+h1bNYH5xpirrbWr8hiXSOmy9kv450M+a9WbRSe38FDbh+jq3zXXamkOy8Oz1rEi7DgTBrehS+O8rSMpIiLFJ9ckLH2AvY+19rF8tr0SaGKMCcCZfA0Cbjq101obBbj+UhhjlgGPKQGTC1b4Kvj+YX4LaM+EuO1c3uByRrYamWs1ay0vfreJHzYe4rl+Lbg6pHYRBCsiIucqxzFhxhgPa20acFF+G7bWpgL3AT8CW4CvrLWbjDEvGmOuPqtoRUqr6IMwcwh7KtbkSY84mlVpxgsXvZCneb0m/rqLKX/t5fZuAdzWrWERBCsiIgUht56wFTjHf60zxswHZgNxp3Zaa7/JqbK1diGw8LRto7Ip2yMP8YqUPqlJ8NUtxCTH8ECDIDxTExjfczxlPcrmWvXr1eH8b9E2+reuzdOXtyiCYEVEpKDkdUyYNxAJ9OK/+cIskGMSJiK5sBYWPIIjfCVPt+5NePQuPu7zMbUr5H5Jcdm2Izz59QYuauzH2IEhuGkyVhGREiW3JKx6+p2RG/kv+TpFdymKnKsVn8DaL3kvuC+/Rm3hmY7P0KFmh1yrbQg/yT3T1tC0hg8f3tyOMh5nNduMiIgUo9ySMHegApmTr1OUhImciz3LYdFT/NS4C5/EbOHaJtcyqNmgXKvtjYxj5OSVVClfhskjOuDj7VkEwYqISEHLLQk7aK19sUgiEbmQnNwHs4exrWoDnuMYIdVCeLbjs7kOxD8Wm8TQSStIc1imjAyluq93EQUsIiIFLbckTINMRApacjzMvImTjlQerFYFHyzjeoyjjHvOywvFJaUycvJKDkcnMv32TjSqlvsM+iIicv7KbSDJJUUShciFwlqYdy+phzbyWLN2HEk6zrie46hWrlqO1VLSHNwzbQ0bI6J4b3Bb2tarXEQBi4hIYckxCbPWHi+qQEQuCH+8A5u+4a2QvvwTvZNRnUcRXC04xyrWWp7+5l9+3X6UV64J4tKWNYomVhERKVS6pUqkqOz4GX55gXnNuvNl9GaGtBjCgMYDcq321k/bmbM6nAcvacLg0HqFH6eIiBQJJWEiReHYTphzK//Was6LqQcIrRnKo+0fzbXaF3/v5b2lOxkcWpeHLm1SBIGKiEhRyetkrSJythKjYeZgjnp68lAlL6p5VOLNi9/E0y3nqSUWbTzEqHkbubRFdV7q3ypPSxiJiEjJoZ4wkcLkcMA3d5AcuYuHGwUSk74kUWXvnAfWrww7zgMz19K6biXeHdwWD3f9qIqIlDb6zS5SmJa9it3+A6+G9GZ99B5euuglmlVplmOVHYdjuHXySupUKstnwzpQtox7EQUrIiJFSUmYSGHZPA9+G8usFr34OmoztwfdTt8GfXOscjAqgWGTVuDl6c6UkaFUKZ/z3GEiIlJyKQkTKQyHN8G3d7OqTjBvJO2he53u3NfmvhyrRCWkMHzSSqITU5k8ogN1q5QromBFRKQ4aGC+SEGLPw4zBnOwrA+PlrfU8a7L691ex81k/z9PYkoad0xdxe5jsUweEUpg7YpFGLCIiBQH9YSJFKS0VJg9nITYgzxYvzHJNo0JvSbgU8Yn2yoOh+XRr9bzz57jvHl9CBc1rlqEAYuISHFREiZSkH4ehd3zK6Nb9WRr7H7e6P4GARUDsi1ureXF7zez4N+DPHtFC/q39i/CYEVEpDgpCRMpKOtmwN/vM7lVb36I2sL9be6ne53uOVb5+LfdTP4zjJEXBXBbt+yTNRERKX2UhIkUhIjV8N2D/N6gPePittOnfh9uC7otxyrfrg3ntR+2cmVwLZ7r10KTsYqIXGA0MF/kXMUchpk3s9e3Bk+UiaNJhSa8dNFLOSZVy3cc5fHZG+jc0I+3bgjBzU0JmIjIhUY9YSLnIjUJvrqF2MSTPOBfG3c3Tyb0mkA5z+ynl9gYEcVdX6ymcfUKfDS0HV4emoxVRORCpCRM5GxZCwsfx7H/H54OvIi98Yd56+K38K+Q/eD6fZHxDP98JZXKlWHKyFB8vXNeP1JEREovJWEiZ2vVZ7BmChOD+7IsahuPd3ic0Fqh2RaPjE1i2OcrSElzMGVkB2r4ehdhsCIicr5REiZyNsL+gB+e5JdGnfgwZgv9G/XnpuY3ZVs8PjmVkVNWceBkApOGt6dx9eznDRMRkQuDBuaL5NfJ/fDVUHb41eMZtxMEVQni+c7PZzsQPzXNwX3T1/Jv+Ek+vLkd7epXKeKARUTkfKQkTCQ/kuNh1hCi0pJ5oLof5W0a7/R8By93ryyLW2t55tt/WbL1CK9c04o+gTWLOGARETlf6XKkSF5ZC989QOrBDTzeogOHE48zrsc4qpernm2VcT9v56tV4TzQqzFDOtYvwmBFROR8pyRMJK/+fBf+nc07IX35K2oHz3V6jtbVW2dbfNo/e5mwZCc3tK/Dw72bFl2cIiJSIigJE8mLnb/AL6P5rmk3pkRvZlCzQVzb5Npsi/+06RDPz91Iz2bVeOWaIM2GLyIiZ1ASJpKbyF0wZySbajRlTNpB2tdozxOhT2RbfPXe49w/Yy1BdSrx/pC2eLrrx0xERM6kgfkiOUmKgZk3cczdnQcrl6Oqexne6vEWnm5ZT7K680gst05ZRe1KZZk0rD3lyuhHTEREsqZ/0UWy43DAN3eScmwHjzQOJiollvG9xlPFO+spJg5HJzJs0go83NyYMiIUvwpZ3zEpIiICSsJEsvfrG7BtAa+F9GZt9G5euuglmldpnmXR6MQUhk1awcn4ZCaP6EA9v+zXjhQREQFdjhTJ2pbv4NfX+apFT2ZHbWZkq5FcFnBZlkWTUtO4c+pqdh6J5fMRHWjlX7GIgxURkZJISZjI6Y5sgW/vYo1/EK8lhdHVvysPtHkgy6IOh+XRr9bz1+5Ixt0YQrcm1Yo4WBERKamUhIlkFH8cZgzmkFc5HvYx+HvV4Y3ub+Du5p5l8VcWbuH7DQd56vLmXNOmThEHKyIiJZnGhImckpYKX99KYnQ4DwY0I8mRwoSeE/At45tl8U9+281nv+9heJcG3Nm9YREHKyIiJZ2SMJFTFo/B7lrCC0G92Byzl9e6vkbDSlknV/PWRfDKwi30C6rFqCtbajJWERHJNyVhIgAbvoI/32Vq4KV8H7WFe1vfS896PbMs+sfOYzw2ez0dA6rw1g0huLkpARMRkfxTEiZyYC3Mv58/67fj7YSd9K7fmzuC78iy6KYDUdz5xWoaVq3Ax0Pb4+2Z9VgxERGR3GhgvlzYYo/AzCHsr1CVx70SaVShES9f9DJu5sz/T/Yfj2f45yvx8fZg8sgOVCyb9az5IiIieaGeMLlwpSbDV0OJSzjBA3XqYtzcGN9zPOU8z5xo9URcMsM+X0FSShpTRoZSq2LZYghYRERKEyVhcuFa9CSOfX/xbGBXdscfZGz3sdT1qXtGsYTkNEZOWUn4iQQ+G96BpjV8iiFYEREpbZSEyYVp1eewahIfBfVhcdRWHm33KJ1rdz6jWGqag/tnrGHd/pNMGNSaDg2yXjdSREQkv5SEyYVn39+w8HGWNOzIB7FbuarhVdzS8pYzillreX7eRn7ZcoQXrw7ksla1iiFYEREprTQwXy4sUREw6xZ2VanD0+4nCawYyKjOo7Kc52v84h3MWLGfe3s24pbODYo+VhERKdXUEyYXjpQEmDWEqNQEHqhRjbIe5Xin5zt4e3ifUXTGin2888sOBrarw2N9mhVDsCIiUtopCZMLg7Xw3UOkHVjLky06ciDxGON6jqNm+ZpnFP1l82Ge/fZfejSrxmvXBmk2fBERKRRKwuTC8PcHsGEm40Mu44+o7TzT8RnaVG9zRrE1+05w34w1tPKvyPs3tcXTXT8iIiJSOPQXRkq/XUvhp+dY0OQiPo/ezI3NbuT6ptefWexoLLdOXkkNX28mDe9AeS8NmRQRkcKjJExKt+O7YfZwNldvzGh7mLbV2/JkhyfPKHYkOpFhk1bgZgxTR4ZStYJXMQQrIiIXEv2rL6VXUizMHEKkm+HBKhWo7O7B2z3extM983JDMYkpDP98Jcfjkpl5Ryfq+5UvpoBFRORCop4wKZ0cDph7FylHt/Jok9acSInhnZ7v4FfWL1Ox5FQHd325mu2HY/hgSFuC61QqnnhFROSCo54wKZ2WvwlbvuON1pexOmozr3d7nUC/wExFHA7L43PW88fOSN68PoQezaoXU7AiInIhUk+YlD5bF8LSV/i6eQ9mRW1meOBw+jXsd0ax1xdtZd66AzzetxkD29UphkBFRORCpiRMSpej2+CbO1hXO5CXU/bRpXYXHmr70BnFPvt9Dx//tpuhnetzT49GRR+niIhc8HQ5UkqPhJMwYzCHvbx52NeDWmVq8b/u/8PdzT1Tse/WH+Cl7zdzeauajL4qUJOxiohIsVBPmJQOjjT4+laSTu7loYAWxKclMaHnBCp6VcxU7M9dx3j0q/WENqjCuBtb4+6mBExERIqHkjApHRa/iN35Cy8GX8LGmDBe7fYqjSs3zlRk84Fo7py6mgZVy/HJ0PZ4e7pn05iIiEjhUxImJd+/c+CPd/gy8BLmR23hnpB7uKTeJZmKhJ+IZ/jnKyjv5cHkEaFULOeZTWMiIiJFQ2PCpGQ7uB7m3cff9drwVsJuetXtxZ0hd2YqciIumWGTVpCQksacu7pQu1LZYgpWRETkP0rCpOSKPQozh7C/QhUeK5tMQLkAXu32Km7mvw7exJQ0bpu6iv3HE5h6ayjNavoUY8AiIiL/0eVIKZnSUmD2MOLjj/Fg3fo4gPE9x1Pe878lh9IclgdmrGXNvhO8M6g1nRr6Zd+eiIhIEVMSJiXToqexe//gucDu7Io7wJvd36Sebz3Xbmsto+Zt5KfNhxl9ZUuuCKpVjMGKiIicSUmYlDxrpsLKT/gkqA8/R23h4bYP08W/S6Yi7y3ZybR/9nHXxY0YflFAMQUqIiKSPSVhUrLsXwHfP8KvAaG8F7uNfg37MSxwWKYiX63cz1s/b+faNv48eVmzYgpUREQkZxqYLyVH9AGYdTO7K9fmSY9omvs2Z0znMZlmvF+y9TBPf/sv3ZpU5Y2BwZoNX0REzlvqCZOSISURZt1MdHIcD9asiZeHN+N7jsfbw9tVZN3+k9w7bS0ta/ky8eZ2eLrr4y0iIucv/ZWS85+1sOAR0iJW82TLToQnHOXtHm9Tq8J/g+13H41l5OSVVPPxYtLwDlTwUieviIic35SEyfnvn49g3TTeDenL71Hbebrj07Sr0c61+0hMIsM+XwHAlJGhVPPxKq5IRURE8kxJmJzfdv8KPz7DosYX8Vn0FgY2HcgNzW5w7Y5NSmXk5JUci0lm0vAOBFQtn0NjIiIi5w9ds5Hz14kwmD2MrdUa8jxHaFO9Dc+EPuPanZzq4O4vV7PlYAyfDm1P67qVii1UERGR/FISJuen5DiYOYTjxvJgVV98jeHtHm/j6e5ceNtay5Nfb2D5jmP8b2AwPZtXL+aARURE8keXI+X8Yy3MvYeUI5t5rElbjiVFMaHnBKqWreoq8saibXy7NoJHezflhvZ1izFYERGRs6MkTM4/y9+CzXN5M6QPK6N3MqbLGAKrBrp2T/5jDx/+uoshHetxX6/GxRioiIjI2VMSJueX7T/Ckpf5ttnFTI/azC0tb+GqRle5di/YcJAXvt9Mn5Y1eLF/K03GKiIiJZaSMDl/HN0OX9/G+loteCk1nE61OvFIu0dcu//eHcnDs9bRrl5lJgxug7ubEjARESm5NDBfzg+JUTDzJo54luHhimWo7lmRsd3H4uHm/IhuPRTN7VNXUc+vHJ8Oa4+3p3sxBywiInJu1BMmxc+RBl/fTtKJPTzcsCWxaQlM6DWBSt6V4P/t3Xl4VOX5xvHvk4SwhX3fg7LIviNVEXBBrS2o5aeCIAiF1opQt7rRumtlUcF9o6ClBqRqkarUDbGiAoqyyioo+x6WkIQkz++PGdqYBgiamZNk7s91eXXmzJkzd/IWcvOeN+cAW/YdZsjkhZRLjGfq0K5ULpcYbF4REZFCoBImwfvwAXzNHO5vex5LDmzggbMeoFmVZgDsS8tk8OQFHMrIYurQrtSrXDbgsCIiIoVDpyMlWMteg48n8LeW5/BG6gp+0/Y3nN/ofADSj2Qz/KVFbNydxtShXTmtdsWAw4qIiBQelTAJzral8I/rWNCgHePSv6Vng578rv3vAMjOcUanLGbRxr083r8DPzu1WsBhRURECpdKmATj0G54ZQCby1XipnLZNCrbiIfOeog4i8PduXvWcuYs386fftGSX7StG3RaERGRQqc1YRJ92Ufg1cGkHdrO6IankO3OxF4TSUpMAuCpuet4+bONjDj7FIae1TjgsCIiIpGhEibR968x+IaPuatNT1Yf3MTYHmNJrpQMwMwvNjFuziouaV+X2y48LdicIiIiEaQSJtG1+K/w+TO82Pp83tm3ktEdR3NWvbMAmLtqB7f+fQlnNanO2H7tiNPFWEVEpARTCZPo2bQIZt/AvMadmXRoNRclX8TQ1kMB+Pr7ffxu2pc0r1WBpwd2JDFB/9cUEZGSTQvzJToObIPpA/m2Um1uK3WI5hWac8+Z92BmbNh1iKFTFlK1fCJThnahQplSQacVERGJOE03SORlZcD0gRzI2M+ounVJiEtkYq+JlE0oy66DGQz+ywJy3HlpaFdqVigTdFoREZGoUAmTyHKHf95EzqaF3N7yZ2xK28GEnhOom1SXQxlZDJ2ykO3705k8pAun1EgKOq2IiEjURLSEmdmFZrbKzNaa2W35vH6jma0wsyVm9r6ZNYpkHgnAwhdg8cs80fYCPkpdzR+6/oEutbtwJDuHa6d9yfIt+3lyQEc6NKwSdFIREZGoilgJM7N44EngIqAl0N/MWubZbTHQ2d3bAjOBsZHKIwH49mN4+1b+1eQMnj+wksuaXsaVza/E3bn170uYt3onD1zSmnNb1Ao6qYiISNRFciasK7DW3de7eyaQAvTNvYO7f+juaeGnnwH1I5hHomnfd/DqYFZVT2YMu2hXox13nn4nZsa4Oat47cvN3HBeM67s2jDopCIiIoGIZAmrB3yf6/mm8LZjGQa8nd8LZjbCzBaZ2aKdO3cWYkSJiMw0SBnAvpwsRteoSoXEijza81ES4xN56dMNPDV3Hf27NmTUuU2CTioiIhKYIrEw38wGAp2Bcfm97u7PuXtnd+9co0aN6IaTk+MO/7iOrG3LuLl5J3Zk7OHRXo9So1wN3lm2lbtmLee8FrW4r28rzHQxVhERiV2RvE7YZqBBruf1w9t+wMzOA+4Eerh7RgTzSDR88hgsf40J7S7k8/0ruO/M+2hboy0Lvt3DqJSv6NCgMo/370BCfJHo/yIiIoGJ5E/ChUBTM2tsZonAlcCs3DuYWQfgWaCPu++IYBaJhjXvwnv3MKv52fx1/wquanEVlzS5hNXbD/DrqQupX6UsLw7uQtnE+KCTioiIBC5iJczds4CRwBxgJTDD3Zeb2b1m1ie82zggCXjVzL4ys1nHOJwUdbvWwsxhLK1zGvdkbaFr7a7c1PkmtqYeZvDkBZQuFc/Ua7pSpXxi0ElFRESKhIjetsjd3wLeyrPtT7kenxfJz5coSd8PKQPYmZDA7yuXpkZCZcb3GE9aBgyZvJAD6VlM/003GlQtF3RSERGRIkMLc+SnycmB10aQuXstNzRpzYGsw6FbEsVXZPhLi1i/6yDPDepEq7qVgk4qIiJSpOgG3vLTzH0IX/02D7a/kK9TVzC+x3iaVG7G9a98yYJv9zCpfwfOaFI96JQiIiJFjmbC5Mdb8Q+YN5bpLc7h76krGN5mOL0b9ea+2St4a+k2xlzcgj7t6gadUkREpEhSCZMfZ/tyeP1aFtVvy8MZ33J2/bMZ2WEkz3y0ninzN/Drsxrz6+6nBJ1SRESkyNLpSDl5aXvglf5sLVuBm8o79cs04M/d/8wbi7fw8Dvf0KddXe74eYugU4qIiBRpmgmTk5OdBa8O4fDBrYxu1IRMz2bSOZNYvCGdP8xcwhmnVmPc/7UlLk5XwxcRETkelTA5Oe/+Cf/2I+5q3YtvDn7Pw2c/zKGDVbn2r1/QtFYFnh3UidIJuhiriIjIiaiEScF99Qp89iRTWp/P26krub7D9SSX7cyQvyygcrlEplzThQplSgWdUkREpFjQmjApmM1fwJuj+XdyZx5LW0PvRr25tPEg+j3zKVk5TsrQrtSqWCbolCIiIsWGSpic2IHtkDKQjRVr8YfEQzRJasIdXe9m6ORFbE1N52/DT6dJzaSgU4qIiBQrOh0px5eVCTOu5mD6PkbVq0t8XCkm9HiUm6evZOnmVJ4Y0JFOjaoGnVJERKTYUQmT43v7FnK+/4zbW53JxrTtjO8xnqfe3cuHq3Zy/yVtOL9lraATioiIFEsqYXJsC1+EL6bwdNsLmJu6ilu63MK/l1ZmxqJNjDq3KQNObxh0QhERkWJLJUzyt+ETePsPvHdqN545sJK+p/YlZ9+ZPP7BWq7s0oAbzmsadEIREZFiTQvz5X/t+x5mXM2aag25I24vbaq2oVulEYz621LOPa0m91/SGjNdjFVEROSnUAmTH8pMg+lXkZqdyaia1Sjv2VzT5G5GvryctvUr8/iADiTEawJVRETkp9JPU/kvd3hzFFlbl3BLiy5sT9/DTe0e4OaUDdSrXJbJQ7pQLlG9XUREpDCohMl/zX8clr7KY+0u4NPUNYxqdysPvZ5Oqfg4pg7tStXyiUEnFBERKTFUwiRk7Xvw3l282ewspu5fwWVNLiflgzrsS8tkyjVdaFC1XNAJRUREShSVMIHd62DmUJbXasbd2dvoWLMT3yzvydodB3lmUCda16sUdEIREZESRwt8Yl3GAUgZwK74eEZXKUe1+FIk7hnCR+v389gV7enetEbQCUVEREokzYTFspwceP23HNm1hhubtCX1yEFax/+ed5ce4vaLTuOSDvWCTigiIlJiqYTFsnlj4ZvZPNTufBbvX0+PqiN57XPnmjOTGXH2KUGnExERKdFUwmLVyjdh7kPMaNGLV1NX0L3G5cycV52L29bhjxe31MVYRUREIkwlLBbtWAmv/5Yv67XhoYwNtKp8Ou9+0oFup1TlkcvbERenAiYiIhJpWpgfa9L2wCv92Va6HDdUMKrH12Hp4os5tUZFnru6M6UT4oNOKCIiEhM0ExZLsrPg78NI37+J0Y2bczg7k93rBlK5TCWmXNOVimVKBZ1QREQkZqiExZL378bXfcA9bc5hxYGNlNo9kOyMGkwd2oXalcoEnU5ERCSmqITFiiUzYP7jvNTqPGanrqRq5i/ZtaMJLw7uTJOaFYJOJyIiEnO0JiwWbFkMs65nfsOOPHJ4LVW8E9+v/xlPXdWBzslVg04nIiISkzQTVtId3AkpA/k+qTq3lMmgvNXlu1V9uKdvWy5sXTvodCIiIjFLJawky8qEGVdz6PBuRtVvQEaWs3V1f0b2bMWgbo2CTiciIhLTVMJKsnduI+e7+dzZqjvrDm1l74Yr6Ne2HTf1bhZ0MhERkZinElZSLfoLLHqRZ9v05v3Ub0jffhHdG5zBg5e10dXwRUREigCVsJLou8/grVv44JTTeergN+Ts78hp5S7mqas6UipeQy4iIlIU6CdySZO6GaYPYl3V+twatw8yGlA9fQB/GdKVcon6ZVgREZGiQiWsJDlyGKZfRWrWYa6rUZ2MzAQSd1/Dy0O7Uy2pdNDpREREJBeVsJLCHd78PdlbFnNL865sPryL7G2DmDKoNw2rlQs6nYiIiOShElZSfPYULEnhsbYX8OmBNWRu78vT/frRpn6loJOJiIhIPlTCSoJ1H8K/xjC7yZlMObCSzL2n89D5wzm7WY2gk4mIiMgxqIQVd3u+hZnXsKJmE8ZkbyMrLZmR7W7iso71g04mIiIix6FflyvOMg5CygB2GwxPKsuRjBz61L6VkT1PCzqZiIiInIBmwoqrnBx441qO7PyG4Q1akZp1gI5lbuDBvmfqYqwiIiLFgEpYcfXxeFg5izHNe7Em8zvqZQ3m+SsuIT5OBUxERKQ4UAkrjr55Cz58gJdP6c5bGWsof/hcZlx1HWVKxQedTERERApIa8KKm52r4LURLKzdkrE5m4jPaM7MK++nUrlSQScTERGRk6CZsOLk8D54pT9bE8swIhHIqszkiydSv3JS0MlERETkJKmEFRc52fD3YaTv28jlVRpxxDK5t9sEOtavF3QyERER+RFUwoqL9+/F177HNXW6sS9hB0Oa3s6lrTsFnUpERER+JJWw4mDpTPjkMR6o3Y1lid9xRtX+3HxWv6BTiYiIyE+gElbUbf0a/jGSf1ZtSUqZbTQo3YWnf3Fb0KlERETkJ1IJK8oO7YKUq1hTuiK3lc8iKa4OMy6bRJxp2ERERIo7/TQvqrKPwIzBHDi0kysr1SE+Po5pfZ4hKVG/CSkiIlISqIQVVe/cjm/8N5dWaUdm4l4e6TmeUysnB51KREREColKWFH05Uuw8Hmuq9SF7Ulb+U2bUZyT3D3oVCIiIlKIdMX8oub7BfjsG3mhfAs+rrKDnnUv4LqOw4JOJSIiIoVMJawo2b+FnJSrWJhQjUnVj5BcsSnjet2PmW7KLSIiUtLodGRRcSSdnJSB7E4/wG9r1CQpsRzP9X6CMgllgk4mIiIiEaASVhS447NvwLd8wWVVW5OTeIAnznuMOkl1gk4mIiIiEaISVhR8/iz29d8YXKkr+5K2c8fpt9Oplm5JJCIiUpJpTVjQ1n9Ezpw7GF+2FV9X3cavmv6Ky5tfHnQqERERiTCVsCDt3UBmytXMja/NtNrptK/RgTtPv1ML8UVERGKASlhQMg9x6KUr2HkkizsaVqV62dI82usRSsWXCjqZiIiIRIHWhAXBnf0pI4jfu4ohdVviCYeZdM4kqpetHnQyERERiRLNhAUg9d2HqbR+Nv2r/4zdiZt58IwHaVW9VdCxREREJIo0ExZlB5fOpsL8P3NPUjuWVdjMoJaD+OWpvww6loiIiESZZsKiKGPrSuy14cxKbMgbNQ/QrXY3bux0Y9CxREREJAAqYVGSnbaPvZP/j1RLYFzDStQqW55xZ48jIU5DICIiEot0OjIKPDuLNc/0p0LmFm48pRVHLINJ50yicpnKQUcTERGRgGgaJgq+mHIznfbPZ1jjs/kuewOP9HyEZlWaBR1LREREAqSZsAibP+sFOn//Fx6seToLbQMj2o7g/EbnBx1LREREAqYSFkELPvuI9l/cwWtJzXg1aQc96/fkuvbXBR1LREREigCdjoyQZWvWU/ftYaxPTOKRuok0KleXh7o/RJyp94qIiIhmwiJiw/Z9HJ42iKS4VP7YrDk5OBN7TSQpMSnoaCIiIlJEqIQVsp0HMlj0/HV0Zhl/bHU269I2M7bHWJIrJQcdTURERIoQlbBCdCgji2nPPEi/rNlMatqLuYdWM7rjaM6qd1bQ0URERKSIUQkrJEeycxg3eRrXHnyCt+q058Ws9VyUfBFDWw8NOpqIiIgUQVqYXwjcnftTPuTabXexrkIt7q+QQfMKzbnnzHsws6DjiYiISBGkmbBCMHbOKi74ZgylE9K5LbkBCXGJTOw1kbIJZYOOJiIiIkWUSthPNHX+Bp6eu46OCesY06QV36VtZ0LPCdRNqht0NBERESnCdDryePashzXv/mBTZk42s/ev4nDOEbbtT2fxd/u4LLk092dXYF7mDm7vejtdancJKLCIiIgUFyphxzNvPHw17QebFpQtw121a/53w38eluOKyq3pf1r/qMUTERGR4ksl7Hiyj0DlhjDio/9sytryCXxyB+W3DqJmqYY8MaAjFcuUwuLiqVSpYYBhRUREpDhRCTsRi4dyVf/zdE9WaQCy4mrw1NA+1K9SLqhkIiIiUoxpYf5JSE07wmPvrQbg7j6tVMBERETkR9NM2HHMzdpLSvlsePe3ZLuzdFMqB0rtJQ5oXKN80PFERESkGFMJO453snazIAFOy9zPhl2H2J95hORqFWlYuTGNKjQKOp6IiIgUYyphJ1A7B5pm3cH8lRsZc3ELft39lKAjiYiISAmgNWEnkOPO1E83Mrx7YxUwERERKTQqYcdxKCOLHIe+7ety+0Utgo4jIiIiJUhES5iZXWhmq8xsrZndls/rpc1sevj1z80sOZJ5TsbcVTvYm5aJAeP6tSMuTjfiFhERkcITsRJmZvHAk8BFQEugv5m1zLPbMGCvuzcBHgUejlSek7Fk0z5+N+1LEuLjiI8zEhM0YSgiIiKFK5IL87sCa919PYCZpQB9gRW59ukL3B1+PBN4wszM3T2CuY5r7oJpvLBoIp1qw5bSaSSgGTAREREpfJGc4qkHfJ/r+abwtnz3cfcsIBWolvdAZjbCzBaZ2aKdO3dGKG7Itr3b2F0qjX1lDlOGOHpUaBzRzxMREZHYVCwuUeHuzwHPAXTu3Dmis2RXXnATl2XdoFOQIiIiElGRbBqbgQa5ntcPb8t3HzNLACoBuyOYqUBUwERERCTSItk2FgJNzayxmSUCVwKz8uwzCxgcftwP+CDI9WAiIiIi0RKx05HunmVmI4E5QDww2d2Xm9m9wCJ3nwW8CLxsZmuBPYSKmoiIiEiJF9E1Ye7+FvBWnm1/yvU4Hfi/SGYQERERKYq0+ElEREQkACphIiIiIgFQCRMREREJgEqYiIiISABUwkREREQCoBImIiIiEgCVMBEREZEAqISJiIiIBEAlTERERCQAKmEiIiIiAVAJExEREQmASpiIiIhIAFTCRERERAKgEiYiIiISAJUwERERkQCohImIiIgEQCVMREREJAAqYSIiIiIBUAkTERERCYC5e9AZToqZ7QQ2RvhjqgO7IvwZcvI0LkWPxqRo0rgUPRqToika49LI3Wvk90KxK2HRYGaL3L1z0DnkhzQuRY/GpGjSuBQ9GpOiKehx0elIERERkQCohImIiIgEQCUsf88FHUDypXEpejQmRZPGpejRmBRNgY6L1oSJiIiIBEAzYSIiIiIBUAkTERERCUBMlzAzu9DMVpnZWjO7LZ/XS5vZ9PDrn5tZcgAxY04BxuVGM1thZkvM7H0zaxREzlhyojHJtd+vzMzNTL+KH2EFGRMzuzz8Z2W5mf0t2hljUQH+/mpoZh+a2eLw32E/DyJnLDGzyWa2w8yWHeN1M7NJ4TFbYmYdo5UtZkuYmcUDTwIXAS2B/mbWMs9uw4C97t4EeBR4OLopY08Bx2Ux0Nnd2wIzgbHRTRlbCjgmmFkFYDTweXQTxp6CjImZNQVuB85091bA76OdM9YU8M/KGGCGu3cArgSeim7KmDQFuPA4r18ENA3/NwJ4OgqZgBguYUBXYK27r3f3TCAF6Jtnn77A1PDjmcC5ZmZRzBiLTjgu7v6hu6eFn34G1I9yxlhTkD8rAPcR+odKejTDxaiCjMlw4El33wvg7juinDEWFWRcHKgYflwJ2BLFfDHJ3ecBe46zS1/gJQ/5DKhsZnWikS2WS1g94PtczzeFt+W7j7tnAalAtaiki10FGZfchgFvRzSRnHBMwtP3Ddz9n9EMFsMK8uekGdDMzD4xs8/M7HgzAVI4CjIudwMDzWwT8BZwfXSiyXGc7M+dQpMQjQ8RiQQzGwh0BnoEnSWWmVkc8AgwJOAo8kMJhE6v9CQ0WzzPzNq4+74gQwn9gSnuPsHMfga8bGat3T0n6GASfbE8E7YZaJDref3wtnz3MbMEQlPHu6OSLnYVZFwws/OAO4E+7p4RpWyx6kRjUgFoDcw1sw1AN2CWFudHVEH+nGwCZrn7EXf/FlhNqJRJ5BRkXIYBMwDc/VOgDKGbSEtwCvRzJxJiuYQtBJqaWWMzSyS0QHJWnn1mAYPDj/sBH7iubhtpJxwXM+sAPEuogGmdS+Qdd0zcPdXdq7t7srsnE1qn18fdFwUTNyYU5O+vNwjNgmFm1QmdnlwfxYyxqCDj8h1wLoCZtSBUwnZGNaXkNQu4Ovxbkt2AVHffGo0PjtnTke6eZWYjgTlAPDDZ3Zeb2b3AInefBbxIaKp4LaFFfVcGlzg2FHBcxgFJwKvh35P4zt37BBa6hCvgmEgUFXBM5gC9zWwFkA3c4u6ayY+gAo7LTcDzZnYDoUX6Q/SP+8gys1cI/YOkengt3l1AKQB3f4bQ2ryfA2uBNOCaqGXT2IuIiIhEXyyfjhQREREJjEqYiIiISABUwkREREQCoBImIiIiEgCVMBEREZEAqISJSL7MLNvMvsr1X/Jx9j1YCJ83xcy+DX/Wl+GriZ/sMV44esNkM7sjz2vzf2rG8HGOfl+WmdmbZlb5BPu3N7Of/4jPqWNms8OPe5pZaq6xeC+8/W4z25wrT598tq8ws/65jjvezM452TwiUvh0iQoRyZeZHXT3pMLe9zjHmALMdveZZtYbGO/ubX/C8X5yphMd18ymAqvd/YHj7D8E6OzuI0/yc8YB/3b3f5hZT+Bmd/9Fnn3uBg66+/jwhT8/BmoCf8q1vSnwBVDN3Y+YWSPgeXfvfTJ5RKTwaSZMRArEzJLM7P3wLNVSM+ubzz51zGxerpmZ7uHtvc3s0/B7XzWzE5WjeUCT8HtvDB9rmZn9PrytvJn908y+Dm+/Irx9rpl1NrM/A2XDOaaFXzsY/t8UM7s4V+YpZtbPzOLNbJyZLTSzJWb2mwJ8Wz4lfKNfM+sa/hoXm9l8M2sevmr6vcAV4SxXhLNPNrMF4X3/5/sY9ivgnQJkAMDdVwJZ5LkFjruvIXQByirh5xuBamZWu6DHFpHIUAkTkWM5WmK+MrPXgXTgUnfvCPQCJlj4lgW5DADmuHt7oB3wlYVumTMGOC/83kXAjSf47F8CS82sE6GrV59O6J6Uwy1026oLgS3u3s7dW5OnrLj7bcBhd2/v7lflOfZ04HKAcEk6F/gnoXv6pbp7F6BL+LMaHyugmcWH33v0jgHfAN3dvQOhmagH3T0z/Hh6OMt0Qvc8/cDduxL6Po4zs/J5jt0Y2Jvnvqjdc43HnfnkOR3IIc8tcMysI7Amzy2+vgTOPNbXJiLREbO3LRKREzocLlMAmFkp4EEzO5vQD/t6QC1gW673LAQmh/d9w92/MrMeQEvgk3BnSyQ0g5SfcWY2hlCRGEao5Lzu7ofCGV4DuhMqXRPM7GFCpzA/Pomv621gopmVJlTm5rn74fAp0LZm1i+8XyVCN7z+Ns/7y5rZV+GvfyXwbq79p4ZP/znh26LkozfQx8xuDj8vAzQMH+uoOvzv/QQ/zns6MuwGMxsIHACucHcPf59vMLNrCN0z8pd53rMDqHuMfCISJSphIlJQVwE1gE7htUUbCBWI/3D3eeGSdjEwxcweAfYC77p7/7wHzMct7j7z6BMzOze/ndx9dXiG5+fA/Wb2vrvfW5Avwt3TzWwucAFwBZBy9OOA6919zgkOcdjd25tZOUL3CLwOmATcB3zo7pda6JcY5h7j/Qb8yt1XHe8zyPO9PY5H3X38sbaHF+u/aGanunt6+LUy4c8QkQDpdKSIFFQlYEe4gPUCGuXdIbzoe7u7Pw+8AHQEPgPONLOja7zKm1mzAn7mx8AlZlYufMruUuBjM6sLpLn7Xwnd0L1jPu89Ep6Ry890Qqc5j86qQahQXXv0PWbWLO9pwtzcPQ0YBdxkZgmEvj+bwy8PybXrAaBCrudzgOuPnsoNn17NazWQfKzPPhnhm0YvAgbn2twMWFYYxxeRH08lTEQKahrQ2cyWAlcTWgOVV0/gazNbTGiWaaK77yRUSl4xsyWETkWeVpAPdPcvgSnAAuBz4AV3Xwy0ARaETwveBdyfz9ufA5YcXZifx7+AHsB74XVbECqNK4AvzWwZ8CwnOFsQzrIE6A+MBR4Kf+253/ch0PLownxCM2alwtmWh5/nPe4hYN3R4loI7gVuNLO4cMlsQqiYiUiAdIkKEZEiyMwuJXTqd0wEjtvR3f9YmMcVkZOnNWEiIkWQu79uZtUicOgEYEIEjisiJ0kzYSIiIiIB0JowERERkQCohImIiIgEQCVMREREJAAqYSIiIiIBUAkTERERCcD/A3Dr4QLZNc4AAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import roc_curve, roc_auc_score\n", "\n", "# choosing C via cross validation then computing FPR and TPR at all thresholds\n", "logistic_mod_1 = LogisticRegression(penalty='l1', solver='liblinear', C=Cbest).fit(Xtrain, ytrain)\n", "mod_1_preds = logistic_mod_1.predict_proba(Xtest)[:,1] # note, predictions need to be just for one of the classes\n", "fpr_1, tpr_1, _ = roc_curve(ytest, mod_1_preds)\n", "auc_1 = roc_auc_score(ytest, mod_1_preds)\n", "\n", "# choosing C small\n", "logistic_mod_2 = LogisticRegression(penalty='l1', solver='liblinear', C=0.02).fit(Xtrain, ytrain)\n", "mod_2_preds = logistic_mod_2.predict_proba(Xtest)[:,1]\n", "fpr_2, tpr_2, _ = roc_curve(ytest, mod_2_preds)\n", "auc_2 = roc_auc_score(ytest, mod_2_preds)\n", "\n", "# choosing C to be very large (no regularization)\n", "logistic_mod_3 = LogisticRegression(solver='liblinear', C=1000).fit(Xtrain, ytrain)\n", "mod_3_preds = logistic_mod_3.predict_proba(Xtest)[:,1]\n", "fpr_3, tpr_3, _ = roc_curve(ytest, mod_3_preds)\n", "auc_3 = roc_auc_score(ytest, mod_3_preds)\n", "\n", "\n", "fig = plt.figure(figsize=(10,10))\n", "plt.plot(fpr_1, tpr_1, label=\"model 1, AUC=\"+str(auc_1))\n", "plt.plot(fpr_2, tpr_2, label=\"model 2, AUC=\"+str(auc_2))\n", "plt.plot(fpr_3, tpr_3, label=\"model 3, AUC=\"+str(auc_3))\n", "plt.ylabel(\"True Positive Rate (TPR)\")\n", "plt.xlabel(\"False Positive Rate (FPR)\")\n", "plt.title(\"ROC Curves for Three Logistic Models\")\n", "plt.legend()\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "f6628ac5", "metadata": {}, "source": [ "Some things to note:\n", "\n", "1. The ultimate model would have a TPR and a TNR set to 1, or equivalently the TPR set to 1 and the FPR set to 0, so the closer that the models are to the top-left corner of the plot, the better.\n", "2. All three models seem to be quite poor at this task. \n", "3. At a given threshold, there is no guarantee that one model is better than the other.\n", "4. The AUC provides a nice summary score that we can use to compare the models. You can think of the AUC as the average FPR/TPR trade-off over all possible discrimination thresholds.\n", "\n", "Extra resource: Check out the ROC visually here: https://kennis-research.shinyapps.io/ROC-Curves/. " ] }, { "cell_type": "markdown", "id": "b4d6ee5e", "metadata": {}, "source": [ "## Multi-class classification - Softmax Regression" ] }, { "cell_type": "markdown", "id": "c2f07d6b", "metadata": {}, "source": [ "In Softmax Regression, we allow the label to take on one of $K$ possible values, so given an input $x$, we would like to estimate $P(Y=k|x)$ for $k=1,\\dots, K$. The model must therefore output a $K$ dimensional vector of probabilities whose elements sum to $1$, i.e. \n", "\n", "\\begin{align*}\n", "h(x) = \n", "\\begin{bmatrix}\n", "P(y=1|x) \\\\ P(y=2|x)\\\\ \\vdots \\\\ P(y=K|x)\n", "\\end{bmatrix}\n", "\\end{align*}\n", "\n", "We will not go into the mathematical details of how softmax regression is derived (for those that are interested, it is similar to the logistic regression case, but using the multinomial distribution instead of the bernoulli). We will however give a short motivation for how the probabilities are estimated." ] }, { "cell_type": "markdown", "id": "6c0e9941", "metadata": {}, "source": [ "#### Short motivation for softmax regression \n", "Recall (from lectures and tutorial this week) that in the logistic regression problem (binary $y$), we wish to estimate a probability: $P(y=1|x)$. One approach is to use a linear model:\n", "\n", "$$\n", "P(y=1|x) = w^T x,\n", "$$\n", "\n", "where $w$ is a parameter vector that we estimate. The problem with this however is that a probability must be in the range $[0,1]$, whereas $w^T x \\in (-\\infty, \\infty)$. A solution is to then wrap the linear model in a logistic sigmoid:\n", "\n", "$$\n", "P(y=1|x) = \\sigma(w^T x) = \\frac{1}{1+e^{-w^T x}},\n", "$$\n", "\n", "which guarantees that our estimated probability is actually a probability, regardless of the choice of $w$. Let's extend this idea to the multi-class case: assume that for each class we have a $p$-dimensional vector $\\theta_1 \\in \\mathbb{R}^p, \\theta_2 \\in \\mathbb{R}^p, \\dots, \\theta_K \\in \\mathbb{R}^p$, so we have a total of $Kp$ unkown parameters to be estimated, and we will stack these unkown vectors into a single matrix for brevity:\n", "\n", "$$\n", "\\Theta = [\\theta_1,\\dots, \\theta_K] \\in \\mathbb{R}^{p \\times K}.\n", "$$\n", "\n", "Now, we want to estimate $K$ probabilities, so we could just do the linear model approach:\n", "\n", "\\begin{align*}\n", "P(y=1|x) &= \\theta_1^T x\\\\\n", "P(y=2|x) &= \\theta_2^T x\\\\\n", "& \\vdots\\\\\n", "P(y=K|x) &= \\theta_K^T x\n", "\\end{align*}\n", "\n", "in which case we run into the same issue that each term is not guaranteed to be a probability. We can use the same trick of using the logistic sigmoid:\n", "\n", "\\begin{align*}\n", "P(y=1|x) &= \\sigma(\\theta_1^T x)\\\\\n", "P(y=2|x) &= \\sigma(\\theta_2^T x)\\\\\n", "& \\vdots\\\\\n", "P(y=K|x) &= \\sigma(\\theta_K^T x).\n", "\\end{align*}\n", "\n", "Which seemingly fixes the problem - but we are faced with another problem now, there is no guarantee that the sum of the probabilities add up to one. An easy fix is to normalize the probabilities by their sum:\n", "\n", "\\begin{align*}\n", "P(y=1|x) &= \\frac{\\sigma(\\theta_1^T x)}{\\sum_{j=1}^k \\sigma(\\theta_j^T x)}\\\\\n", "P(y=2|x) &= \\frac{\\sigma(\\theta_2^T x)}{\\sum_{j=1}^k \\sigma(\\theta_j^T x)}\\\\\n", "& \\vdots\\\\\n", "P(y=K|x) &= \\frac{\\sigma(\\theta_K^T x)}{\\sum_{j=1}^k \\sigma(\\theta_j^T x)}.\n", "\\end{align*}\n", "\n", "This ensures two things:\n", "1. each element is a valid probability (it has to be between $0$ and $1$.\n", "2. the sum of the estimated probabilities is 1.\n", "\n", "Our softmax regression model therefore takes the form:\n", "\n", "\\begin{align*}\n", "h_\\Theta (x) = \n", "\\begin{bmatrix}\n", "P(y=1|x) \\\\ P(y=2|x)\\\\ \\vdots \\\\ P(y=K|x)\n", "\\end{bmatrix}\n", "=\n", "\\frac{1}{ \\sum_{j=1}^k \\sigma(\\theta_j^T x)}\n", "\\begin{bmatrix}\n", "\\sigma(\\theta_1^T x)\\\\\n", "\\sigma(\\theta_2^T x)\\\\\n", "\\vdots \\\\\n", "\\sigma(\\theta_K^T x)\n", "\\end{bmatrix}\n", "\\end{align*}\n", "\n", "and we now have a parameter matrix $\\Theta$ to estimate. What remains is to define the loss function we will use for the problem. Recall in the logistic case the loss function is:\n", "\n", "\\begin{align*}\n", "\\mathcal{L} (w)\n", "&= -\\sum_{i=1}^n (y_i \\ln \\hat{p}_i + (1-y_i) \\ln(1-\\hat{p}_i))\\\\\n", "&= -\\sum_{i=1}^n (y_i \\ln P(y_i = 1|x_i) + (1-y_i) \\ln P(y_i = 0|x_i),\n", "\\end{align*}\n", "\n", "and noting that $y_i = 0$ or $y_i = 1$, we can rewrite this as \n", "\\begin{align*}\n", "\\mathcal{L} (w)&= -\\sum_{i=1}^n \\sum_{j=0}^1 \\mathbf{1}\\{y_i = j \\} \\ln P(y_i = j|x_i),\n", "\\end{align*}\n", "\n", "where $ \\mathbf{1}\\{y_i = j \\}$ is an indicator variable, which simply takes the value $1$ if the term inside the brackets is true, and zero otherwise. For example $\\mathbf{1}\\{ 1+2=3\\} = 1$. Now, the reason we wrote the loss this way is that it allows us to generalize to the softmax regression problem in the following way:\n", "\n", "\\begin{align*}\n", "\\mathcal{L}(\\Theta) \n", "&= -\\sum_{i=1}^n \\sum_{j=0}^K \\mathbf{1}\\{y_i = j \\} \\ln P(y_i = j|x_i)\\\\\n", "&= -\\sum_{i=1}^n \\sum_{j=0}^K \\mathbf{1}\\{y_i = j \\} \\ln \\frac{\\sigma(\\theta^T_j x_i)}{\\sum_{k=1}^K \\sigma(\\theta^T_k x_i)}.\n", "\\end{align*}" ] }, { "cell_type": "markdown", "id": "b76f7b57", "metadata": {}, "source": [ "#### Softmax Regression in sklearn\n", "Luckily for us, the `sklearn` logistic regression implementation handles softmax regression automatically. In this section we will demonstrate its performance on the full MNIST dataset. We first create our dataset in the usual way:" ] }, { "cell_type": "code", "execution_count": 14, "id": "981a8c93", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Xtrain shape = (2000, 784)\n", "Xtest shape = (400, 784)\n" ] } ], "source": [ "# subsample the data to make it more manageable\n", "nSample = 2000\n", "idxsTrain = np.random.choice(np.arange(trainset.data.shape[0]), size=nSample, replace=False)\n", "idxsTest = np.random.choice(np.arange(testset.data.shape[0]), size=nSample//5, replace=False)\n", "\n", "Xtrain = trainset.data.reshape(-1, 784).numpy()[idxsTrain, :]\n", "Xtest = testset.data.reshape(-1, 784).numpy()[idxsTest, :] \n", "ytrain = trainset.targets.numpy()[idxsTrain]\n", "ytest = testset.targets.numpy()[idxsTest]\n", "\n", "print(f'Xtrain shape = {Xtrain.shape}')\n", "print(f'Xtest shape = {Xtest.shape}')" ] }, { "cell_type": "markdown", "id": "0923b443", "metadata": {}, "source": [ "\n", " \n", "#### Exercise\n", "As mentioned earlier, `sklearn` handles softmax regression easily using the same `LogisticRegression` object as used for the binary regression problem, with an added argument `multi_class` which controls whether we fit a binary logistic or a softmax regression (also referred to as multinomial logistic regression). If we set `multi_class=ovr`, it fits a single logistic to every single label (i.e. $K$ standard logistic fits), whereas if we set `multi_class=multinomial`, we will get a softmax regression fit. Note that the `multi_class=multinomial` is not compatible with the `solver=liblinear` setting.\n", " \n", "Fit a multinomial regression to the entire MNIST dataset using the `sag` solver and `l2` regularization with `C=50` (you may need to increase the `max_iter` to 1000 here), additionally you can increase the `tol` argument to `0.001` for faster convergence. Use the `sklearn.metrics.confusion_matrix`, produce a confusion matrix (on the test set) to display your results." ] }, { "cell_type": "code", "execution_count": 15, "id": "36914bf7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Confusion_matrix: \n", "[[37 0 0 0 0 0 0 0 0 0]\n", " [ 0 34 1 1 0 1 0 0 2 0]\n", " [ 0 1 27 0 1 0 0 1 3 0]\n", " [ 0 0 0 34 0 1 1 1 0 0]\n", " [ 0 0 1 0 36 0 0 0 0 2]\n", " [ 0 0 0 2 2 35 0 0 5 1]\n", " [ 0 0 2 0 2 1 42 1 0 0]\n", " [ 0 0 1 1 0 1 0 40 0 2]\n", " [ 0 2 1 1 0 2 0 0 28 2]\n", " [ 1 0 1 0 3 0 0 1 1 34]]\n" ] } ], "source": [ "#### Solution\n", "from sklearn.metrics import confusion_matrix\n", "\n", "sm_mod = LogisticRegression(multi_class='multinomial',\n", " penalty='l2',\n", " C=50,\n", " solver='sag',\n", " tol=.001,\n", " max_iter=1000\n", " ).fit(Xtrain, ytrain)\n", "\n", "ypred = sm_mod.predict(Xtest)\n", "print(\"Confusion_matrix: \\n\"+str(confusion_matrix(ytest, ypred)))" ] }, { "cell_type": "markdown", "id": "bfb15935", "metadata": {}, "source": [ "\n", " \n", "#### Exercise\n", "Recall that the softmax regression requires estimation of $Kp$ parameters, one $p$-dimensional vector for each of the $K$ classes. For the MNIST problem, that means we have $10 \\times 784$ parameters in total. Create a $2 \\times 5$ grid of plots (one for each of the 10 MNIST classes), and use `plt.imshow()` to plot the estimated coefficient vector $\\theta_k$. Note that you will have to reshape each coefficient vector into the $28 \\times 28$ original format of MNIST to see anything interesting. What do you observe?" ] }, { "cell_type": "code", "execution_count": 16, "id": "f317f838", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#### Solution\n", "fig, axes = plt.subplots(2, 5, figsize=(14,8))\n", "for i, ax in enumerate(axes.flat):\n", " ax.imshow(sm_mod.coef_[i].reshape(28,28), cmap=plt.cm.RdBu_r, interpolation='nearest')\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "3db32996", "metadata": {}, "source": [ "\n", " \n", "#### Exercise\n", "In some cases, we would like a single metric to summarize the performance of a model as opposed to having a confusion matrix. The most commonly used (and readily available in `sklearn.metrics`) metrics are the precision, recall and F1 scores. Read the following to gain an understanding of these metrics:\n", "\n", "https://towardsdatascience.com/accuracy-precision-recall-or-f1-331fb37c5cb9\n", " \n", "Further, read the following post to understand the difference between micro and macro versions of these metrics:\n", " \n", "https://datascience.stackexchange.com/questions/15989/micro-average-vs-macro-average-performance-in-a-multiclass-classification-settin" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.9" } }, "nbformat": 4, "nbformat_minor": 5 }