{ "cells": [ { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "# Chapter 6 - Linear Model Selection and Regularization" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "### [Lab 1: Subset Selection Methods](#lab1)\n", "- [Lab 6.5.1 Best Subset Selection](#lab-6.5.1)\n", "- [Lab 6.5.2 Forward and Backward Stepwise Selection](#lab-6.5.2)\n", "- [Lab 6.5.3 Choosing Among Models Using the Validation Set Approach and Cross-Validation](#lab-6.5.3)\n", "\n", "### [Lab 2: Ridge Regression and the Lasso](#lab2)\n", "- [Lab 6.6.1 Ridge Regression](#lab-6.6.1)\n", "- [Lab 6.6.2 The Lasso](#lab-6.6.2)\n", "\n", "### [Lab 3: PCR and PLS Regression](#lab3)\n", "- [Lab 6.7.1 Principal Components Regression](#lab-6.7.1)\n", "- [Lab 6.7.2 Partial Least Squares](#lab-6.7.2)" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "### Imports and Configurations" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "# Standard libraries\n", "from itertools import combinations\n", "\n", "# Use rpy2 for loading R datasets\n", "from rpy2.robjects.packages import importr\n", "from rpy2.robjects.packages import data as rdata\n", "from rpy2.robjects import pandas2ri\n", "\n", "# Math and data processing\n", "import numpy as np\n", "import scipy as sp\n", "import pandas as pd\n", "\n", "# StatsModels\n", "import statsmodels.api as sm\n", "import statsmodels.formula.api as smf\n", "\n", "# scikit-learn\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.linear_model import Ridge, RidgeCV, Lasso, LassoCV\n", "from sklearn.decomposition import PCA\n", "from sklearn.cross_decomposition import PLSRegression\n", "from sklearn.model_selection import train_test_split, LeaveOneOut, KFold, cross_val_score\n", "from sklearn.preprocessing import scale\n", "from sklearn.metrics import mean_squared_error\n", "\n", "# Visulization\n", "from IPython.display import display\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "%matplotlib inline\n", "mpl.style.use('ggplot')" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "## Lab 1: Subset Selection Methods" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "### 6.5.1 Best Subset Selection" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AtBatHitsHmRunRunsRBIWalksYearsCAtBatCHitsCHmRunCRunsCRBICWalksLeagueDivisionPutOutsAssistsErrorsSalaryNewLeague
-Andy Allanson2936613029141293661302914AE4463320NaNA
-Alan Ashby31581724383914344983569321414375NW6324310475.0N
-Alvin Davis479130186672763162445763224266263AW8808214480.0A
-Andre Dawson496141206578371156281575225828838354NE200113500.0N
-Andres Galarraga3218710394230239610112484633NE80540491.5N
\n", "
" ], "text/plain": [ " AtBat Hits HmRun Runs RBI Walks Years CAtBat CHits \\\n", "-Andy Allanson 293 66 1 30 29 14 1 293 66 \n", "-Alan Ashby 315 81 7 24 38 39 14 3449 835 \n", "-Alvin Davis 479 130 18 66 72 76 3 1624 457 \n", "-Andre Dawson 496 141 20 65 78 37 11 5628 1575 \n", "-Andres Galarraga 321 87 10 39 42 30 2 396 101 \n", "\n", " CHmRun CRuns CRBI CWalks League Division PutOuts \\\n", "-Andy Allanson 1 30 29 14 A E 446 \n", "-Alan Ashby 69 321 414 375 N W 632 \n", "-Alvin Davis 63 224 266 263 A W 880 \n", "-Andre Dawson 225 828 838 354 N E 200 \n", "-Andres Galarraga 12 48 46 33 N E 805 \n", "\n", " Assists Errors Salary NewLeague \n", "-Andy Allanson 33 20 NaN A \n", "-Alan Ashby 43 10 475.0 N \n", "-Alvin Davis 82 14 480.0 A \n", "-Andre Dawson 11 3 500.0 N \n", "-Andres Galarraga 40 4 91.5 N " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Hitters dataset is in R ISLR package\n", "islr = importr('ISLR')\n", "hitters_rdf = rdata(islr).fetch('Hitters')['Hitters']\n", "hitters = pandas2ri.ri2py(hitters_rdf)\n", "display(hitters.head(5))" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Index: 322 entries, -Andy Allanson to -Willie Wilson\n", "Data columns (total 20 columns):\n", "AtBat 322 non-null int32\n", "Hits 322 non-null int32\n", "HmRun 322 non-null int32\n", "Runs 322 non-null int32\n", "RBI 322 non-null int32\n", "Walks 322 non-null int32\n", "Years 322 non-null int32\n", "CAtBat 322 non-null int32\n", "CHits 322 non-null int32\n", "CHmRun 322 non-null int32\n", "CRuns 322 non-null int32\n", "CRBI 322 non-null int32\n", "CWalks 322 non-null int32\n", "League 322 non-null object\n", "Division 322 non-null object\n", "PutOuts 322 non-null int32\n", "Assists 322 non-null int32\n", "Errors 322 non-null int32\n", "Salary 263 non-null float64\n", "NewLeague 322 non-null object\n", "dtypes: float64(1), int32(16), object(3)\n", "memory usage: 32.7+ KB\n", "None\n" ] } ], "source": [ "print(hitters.info())" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "59\n" ] } ], "source": [ "print(hitters.Salary.isnull().sum())" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "hitters.dropna(axis=0, inplace=True)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(263, 20)\n", "0\n" ] } ], "source": [ "print(hitters.shape)\n", "print(hitters.Salary.isnull().sum())" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "# Score function to produce linear regression fitting and RSS for a feature set\n", "def score_rss(data, feature_set, endog_name):\n", " \"\"\"\n", " Regress score function based on RSS, residual sum of squares.\n", " \"\"\"\n", " # Have to use sm formula interface to avoid manually generate dummies\n", " reg = smf.ols(endog_name + ' ~ ' + '+'.join(feature_set), data).fit()\n", " rss = reg.mse_resid * reg.df_resid\n", " return reg, (-1) * rss\n", "\n", "# For a given number of features, select the best combination by score function\n", "def select_k_best(data, k, endog_name, score_function):\n", " \"\"\"\n", " Select the best k features out of all the possible combinations.\n", " Different than sklearn.feature_selection.SelectKBest.\n", "\n", " data: data frame.\n", " k: int.\n", " endog_name: response name.\n", " score_function: a callable with parameters X, y, feature_set\n", " returns: an iterable of (model, score).\n", " \"\"\"\n", " features = data.columns.drop(endog_name)\n", "\n", " # Iterate over all feature combinations and compute scores\n", " models = []\n", " scores = []\n", " for feature_subset in combinations(features, k):\n", " model, score = score_function(data, feature_subset, endog_name)\n", " models.append(model)\n", " scores.append(score)\n", "\n", " # Return the best model with the highest score\n", " return models[scores.index(max(scores))]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "scrolled": true, "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Search the best k features for k = 1 to 8, based on RSS.\n", "Taking long time...\n", "\n", "Best 1 features: ['CRBI']\n", "Best 2 features: ['Hits', 'CRBI']\n", "Best 3 features: ['Hits', 'CRBI', 'PutOuts']\n", "Best 4 features: ['Division[T.W]', 'Hits', 'CRBI', 'PutOuts']\n", "Best 5 features: ['Division[T.W]', 'AtBat', 'Hits', 'CRBI', 'PutOuts']\n", "Best 6 features: ['Division[T.W]', 'AtBat', 'Hits', 'Walks', 'CRBI', 'PutOuts']\n", "Best 7 features: ['Division[T.W]', 'Hits', 'Walks', 'CAtBat', 'CHits', 'CHmRun', 'PutOuts']\n", "Best 8 features: ['Division[T.W]', 'AtBat', 'Hits', 'Walks', 'CHmRun', 'CRuns', 'CWalks', 'PutOuts']\n" ] } ], "source": [ "# Define features and response\n", "response = 'Salary'\n", "features = hitters.columns.drop([response])\n", "\n", "# Find the best models with 1 to p features\n", "print(\"\\nSearch the best k features for k = 1 to 8, based on RSS.\\nTaking long time...\\n\")\n", "best_models = []\n", "for k in range(1, 8+1):\n", " best_model = select_k_best(hitters, k, response, score_rss)\n", " best_models.append(best_model)\n", " best_features = best_model.model.exog_names\n", " best_features.remove('Intercept')\n", " print(\"Best {} features: {}\".format(k, best_features))" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "### Lab 6.5.2 Forward and Backward Stepwise Selection" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "# Forward stepwise selection\n", "def forward_select(data, endog_name, score_function):\n", " \"\"\"\n", " Select features by forward stepwise selection algorithm.\n", "\n", " data: data frame.\n", " endog_name: response name.\n", " score_function: a callable with parameters X, y, feature_set\n", " returns: an iterable of (model, score).\n", " \"\"\"\n", " features = data.columns.drop(endog_name)\n", " p = len(features)\n", "\n", " # Loop number of features from 1 to p\n", " selected_features = [] # start from null model\n", " for j in range(1, p+1):\n", " feature_candidates = [xj for xj in features if xj not in selected_features]\n", " models = []\n", " scores = []\n", " # Loop over remaining features at the j-th step\n", " for xj in feature_candidates:\n", " feature_subset = selected_features + [xj]\n", " model, score = score_function(data, feature_subset, endog_name)\n", " models.append(model)\n", " scores.append(score)\n", "\n", " # Select the best feature at the j-th step\n", " best_feature = feature_candidates[scores.index(max(scores))]\n", " selected_features += [best_feature]\n", " print(\" Best {} features: {}\".format(j, selected_features))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Forward stepwise select features based on RSS:\n", "\n", " Best 1 features: ['CRBI']\n", " Best 2 features: ['CRBI', 'Hits']\n", " Best 3 features: ['CRBI', 'Hits', 'PutOuts']\n", " Best 4 features: ['CRBI', 'Hits', 'PutOuts', 'Division']\n", " Best 5 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat']\n", " Best 6 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks']\n", " Best 7 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks']\n", " Best 8 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks', 'CRuns']\n", " Best 9 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks', 'CRuns', 'CAtBat']\n", " Best 10 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks', 'CRuns', 'CAtBat', 'Assists']\n", " Best 11 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks', 'CRuns', 'CAtBat', 'Assists', 'League']\n", " Best 12 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks', 'CRuns', 'CAtBat', 'Assists', 'League', 'Runs']\n", " Best 13 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks', 'CRuns', 'CAtBat', 'Assists', 'League', 'Runs', 'Errors']\n", " Best 14 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks', 'CRuns', 'CAtBat', 'Assists', 'League', 'Runs', 'Errors', 'HmRun']\n", " Best 15 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks', 'CRuns', 'CAtBat', 'Assists', 'League', 'Runs', 'Errors', 'HmRun', 'CHits']\n", " Best 16 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks', 'CRuns', 'CAtBat', 'Assists', 'League', 'Runs', 'Errors', 'HmRun', 'CHits', 'RBI']\n", " Best 17 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks', 'CRuns', 'CAtBat', 'Assists', 'League', 'Runs', 'Errors', 'HmRun', 'CHits', 'RBI', 'NewLeague']\n", " Best 18 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks', 'CRuns', 'CAtBat', 'Assists', 'League', 'Runs', 'Errors', 'HmRun', 'CHits', 'RBI', 'NewLeague', 'Years']\n", " Best 19 features: ['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks', 'CRuns', 'CAtBat', 'Assists', 'League', 'Runs', 'Errors', 'HmRun', 'CHits', 'RBI', 'NewLeague', 'Years', 'CHmRun']\n" ] } ], "source": [ "# Define features and response\n", "response = 'Salary'\n", "features = hitters.columns.drop([response])\n", "\n", "# Run forward stepwise selection on Hitters\n", "print(\"\\nForward stepwise select features based on RSS:\\n\")\n", "forward_select(hitters, response, score_rss)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "# Backward stepwise selection\n", "def backward_select(data, endog_name, score_function):\n", " \"\"\"\n", " Select features by backward stepwise selection algorithm.\n", "\n", " data: data frame.\n", " endog_name: response name.\n", " score_function: a callable with parameters X, y, feature_set\n", " returns: an iterable of (model, score).\n", " \"\"\"\n", " features = list(data.columns.drop(endog_name))\n", " p = len(features)\n", "\n", " # Loop number of features from 1 to p\n", " selected_features = features.copy() # start from all the features\n", " for j in range(p, 0, -1):\n", " print(\"Best {} features: {}\".format(j, selected_features))\n", " if j==1: break\n", " feature_candidates = list(combinations(selected_features, j-1))\n", " models = []\n", " scores = []\n", "\n", " # Loop over feature candidates at the j-th step\n", " for feature_subset in feature_candidates:\n", " model, score = score_function(data, feature_subset, endog_name)\n", " models.append(model)\n", " scores.append(score)\n", "\n", " # Select the best feature at the j-th step\n", " selected_features = list(feature_candidates[scores.index(max(scores))])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Backward stepwise select features based on RSS:\n", "\n", "Best 19 features: ['AtBat', 'Hits', 'HmRun', 'Runs', 'RBI', 'Walks', 'Years', 'CAtBat', 'CHits', 'CHmRun', 'CRuns', 'CRBI', 'CWalks', 'League', 'Division', 'PutOuts', 'Assists', 'Errors', 'NewLeague']\n", "Best 18 features: ['AtBat', 'Hits', 'HmRun', 'Runs', 'RBI', 'Walks', 'Years', 'CAtBat', 'CHits', 'CRuns', 'CRBI', 'CWalks', 'League', 'Division', 'PutOuts', 'Assists', 'Errors', 'NewLeague']\n", "Best 17 features: ['AtBat', 'Hits', 'HmRun', 'Runs', 'RBI', 'Walks', 'CAtBat', 'CHits', 'CRuns', 'CRBI', 'CWalks', 'League', 'Division', 'PutOuts', 'Assists', 'Errors', 'NewLeague']\n", "Best 16 features: ['AtBat', 'Hits', 'HmRun', 'Runs', 'RBI', 'Walks', 'CAtBat', 'CHits', 'CRuns', 'CRBI', 'CWalks', 'League', 'Division', 'PutOuts', 'Assists', 'Errors']\n", "Best 15 features: ['AtBat', 'Hits', 'HmRun', 'Runs', 'Walks', 'CAtBat', 'CHits', 'CRuns', 'CRBI', 'CWalks', 'League', 'Division', 'PutOuts', 'Assists', 'Errors']\n", "Best 14 features: ['AtBat', 'Hits', 'HmRun', 'Runs', 'Walks', 'CAtBat', 'CRuns', 'CRBI', 'CWalks', 'League', 'Division', 'PutOuts', 'Assists', 'Errors']\n", "Best 13 features: ['AtBat', 'Hits', 'Runs', 'Walks', 'CAtBat', 'CRuns', 'CRBI', 'CWalks', 'League', 'Division', 'PutOuts', 'Assists', 'Errors']\n", "Best 12 features: ['AtBat', 'Hits', 'Runs', 'Walks', 'CAtBat', 'CRuns', 'CRBI', 'CWalks', 'League', 'Division', 'PutOuts', 'Assists']\n", "Best 11 features: ['AtBat', 'Hits', 'Walks', 'CAtBat', 'CRuns', 'CRBI', 'CWalks', 'League', 'Division', 'PutOuts', 'Assists']\n", "Best 10 features: ['AtBat', 'Hits', 'Walks', 'CAtBat', 'CRuns', 'CRBI', 'CWalks', 'Division', 'PutOuts', 'Assists']\n", "Best 9 features: ['AtBat', 'Hits', 'Walks', 'CAtBat', 'CRuns', 'CRBI', 'CWalks', 'Division', 'PutOuts']\n", "Best 8 features: ['AtBat', 'Hits', 'Walks', 'CRuns', 'CRBI', 'CWalks', 'Division', 'PutOuts']\n", "Best 7 features: ['AtBat', 'Hits', 'Walks', 'CRuns', 'CWalks', 'Division', 'PutOuts']\n", "Best 6 features: ['AtBat', 'Hits', 'Walks', 'CRuns', 'Division', 'PutOuts']\n", "Best 5 features: ['AtBat', 'Hits', 'Walks', 'CRuns', 'PutOuts']\n", "Best 4 features: ['AtBat', 'Hits', 'CRuns', 'PutOuts']\n", "Best 3 features: ['Hits', 'CRuns', 'PutOuts']\n", "Best 2 features: ['Hits', 'CRuns']\n", "Best 1 features: ['CRuns']\n" ] } ], "source": [ "# Define features and response\n", "response = 'Salary'\n", "features = hitters.columns.drop([response])\n", "\n", "# Run backward stepwise selection on Hitters\n", "print(\"\\nBackward stepwise select features based on RSS:\\n\")\n", "backward_select(hitters, response, score_rss)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "### Lab 6.5.3 Choosing Among Models Using the Validation Set Approach and Cross-Validation" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "#### Forward Stepwise Selection using the Validation Set Approach" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "# Score function and forward select function\n", "def score_rss_valset(data_train, data_test, feature_set, endog_name):\n", " \"\"\"\n", " Regress score function based on RSS, residual sum of squares.\n", " \"\"\"\n", " # Have to use sm formula interface to avoid manually generate dummies\n", " reg = smf.ols(endog_name + ' ~ ' + '+'.join(feature_set), data_train).fit()\n", " y_pred = reg.predict(data_test[feature_set])\n", " y_test = data_test[endog_name].values\n", " rss = ((y_pred - y_test) ** 2).sum()\n", " return reg, (-1) * rss\n", "\n", "def forward_select_valset(data_train, data_test, endog_name, score_function):\n", " \"\"\"\n", " Select features by forward stepwise selection algorithm.\n", "\n", " data: data frame.\n", " endog_name: response name.\n", " score_function: a callable with parameters X, y, feature_set\n", " returns: an iterable of (model, score).\n", " \"\"\"\n", " features = data_train.columns.drop(endog_name)\n", " p = len(features)\n", " high_scores = []\n", " best_features = []\n", "\n", " # Loop number of features from 1 to p\n", " selected_features = [] # start from null model\n", " for j in range(1, p+1):\n", " feature_candidates = [xj for xj in features if xj not in selected_features]\n", " models = []\n", " scores = []\n", " # Loop over remaining features at the j-th step\n", " for xj in feature_candidates:\n", " feature_subset = selected_features + [xj]\n", " model, score = score_function(data_train, data_test, feature_subset, endog_name)\n", " models.append(model)\n", " scores.append(score)\n", "\n", " # Select the best feature at the j-th step\n", " highest_score = max(scores)\n", " high_scores.append(highest_score)\n", " best_feature = feature_candidates[scores.index(highest_score)]\n", " selected_features += [best_feature]\n", " best_features.append(selected_features)\n", "\n", " scores_df = pd.DataFrame(high_scores, index=range(1,p+1), columns=[''])\n", " scores_df.index.name = '# of x_j'\n", "\n", " best_score = max(high_scores)\n", " best_j = high_scores.index(best_score) + 1\n", " return scores_df, best_j, best_score, best_features" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train set size = 142\n", "Test set size = 121\n" ] } ], "source": [ "# Train-test split. Test set size is random with prob=0.5, as in the book.\n", "np.random.seed(seed=51)\n", "train_mask = np.random.choice([True, False], size = hitters.shape[0], replace = True)\n", "test_mask = np.invert(train_mask)\n", "print(\"Train set size = \", train_mask.sum())\n", "print(\"Test set size = \", test_mask.sum())" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "Now run forward stepwise selection instead of BSS as in the book to speed up." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Forward stepwise select features on training set, based on RSS. \n", "\n", "Mean RSS over numbers of features:\n" ] }, { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
# of x_j
12.076650e+07
21.714363e+07
31.617621e+07
41.588872e+07
51.562742e+07
61.508433e+07
71.478177e+07
81.467281e+07
91.452479e+07
101.449917e+07
111.465030e+07
121.493468e+07
131.508188e+07
141.557057e+07
151.620118e+07
161.624116e+07
171.698257e+07
181.730889e+07
191.763893e+07
\n", "
" ], "text/plain": [ " \n", "# of x_j \n", "1 2.076650e+07\n", "2 1.714363e+07\n", "3 1.617621e+07\n", "4 1.588872e+07\n", "5 1.562742e+07\n", "6 1.508433e+07\n", "7 1.478177e+07\n", "8 1.467281e+07\n", "9 1.452479e+07\n", "10 1.449917e+07\n", "11 1.465030e+07\n", "12 1.493468e+07\n", "13 1.508188e+07\n", "14 1.557057e+07\n", "15 1.620118e+07\n", "16 1.624116e+07\n", "17 1.698257e+07\n", "18 1.730889e+07\n", "19 1.763893e+07" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "The best model is the one having 10 features:\n", "['CRBI', 'Hits', 'Division', 'Years', 'AtBat', 'Walks', 'PutOuts', 'CWalks', 'CRuns', 'RBI', 'Errors', 'Assists', 'HmRun', 'Runs', 'NewLeague', 'League', 'CHmRun', 'CAtBat', 'CHits']\n" ] } ], "source": [ "# Define features and response\n", "response = 'Salary'\n", "features = hitters.columns.drop([response])\n", "\n", "# Run forward stepwise selection on Hitters\n", "print(\"\\nForward stepwise select features on training set, based on RSS. \\n\")\n", "scores_valset, best_j_valset, best_score, best_features_valset = forward_select_valset(hitters[train_mask], hitters[test_mask], response, score_rss_valset)\n", "print(\"Mean RSS over numbers of features:\")\n", "mean_rss_valset = scores_valset * (-1)\n", "display(mean_rss_valset)\n", "print(\"\\nThe best model is the one having {} features:\\n{}\".format(best_j_valset, best_features_valset[best_j_valset-1]))" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "**Finally perform best subset selection on the full data set, and select the best 10-variable model.**" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Forward stepwise select features on full data set, based on RSS. \n", "\n", "The best 10 features are:\n", "['CRBI', 'Hits', 'PutOuts', 'Division', 'AtBat', 'Walks', 'CWalks', 'CRuns', 'CAtBat', 'Assists', 'League', 'Runs', 'Errors', 'HmRun', 'CHits', 'RBI', 'NewLeague', 'Years', 'CHmRun']\n" ] } ], "source": [ "# Run forward stepwise selection on Hitters full date set\n", "print(\"\\nForward stepwise select features on full data set, based on RSS. \\n\")\n", "_, _, _, best_features_full = forward_select_valset(hitters, hitters, response, score_rss_valset)\n", "print(\"The best {} features are:\\n{}\".format(best_j_valset, best_features_full[best_j_valset-1]))" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "#### Model Selection using Cross-Validation" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "# 10-fold CV splits\n", "kf = KFold(10, random_state=55)\n", "# Forward stepwise selection on each split\n", "scores_cv_list = []\n", "for train_index, test_index in kf.split(hitters):\n", " scores_df, _, _, _ = forward_select_valset(hitters.iloc[train_index], hitters.iloc[test_mask], response, score_rss_valset)\n", " scores_cv_list.append(scores_df)\n", "# Combine the scores of 10 folds\n", "scores_cv = pd.concat(scores_cv_list, axis=1)\n", "scores_cv.columns = range(1, 11)\n", "scores_cv.columns.name = 'K-Fold'" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# of x_j\n", "1 1.988162e+07\n", "2 1.469190e+07\n", "3 1.247908e+07\n", "4 1.182492e+07\n", "5 1.148818e+07\n", "6 1.094343e+07\n", "7 1.082744e+07\n", "8 1.081981e+07\n", "9 1.079096e+07\n", "10 1.076345e+07\n", "11 1.058229e+07\n", "12 1.048883e+07\n", "13 1.043509e+07\n", "14 1.035223e+07\n", "15 1.029475e+07\n", "16 1.021250e+07\n", "17 1.019581e+07\n", "18 1.021123e+07\n", "19 1.029496e+07\n", "dtype: float64\n" ] } ], "source": [ "# Compute mean RSS of 10 folds for each j = 1..p\n", "mean_rss_cv = scores_cv.mean(axis=1) * (-1)\n", "print(mean_rss_cv)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\nYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plots to compare validation set and cross-validation\n", "fig, ax = plt.subplots(1, 2, figsize=(10, 6))\n", "ax1 = plt.subplot(121)\n", "plt.plot(range(1, len(features)+1), mean_rss_valset)\n", "plt.title('Validation Set Approach')\n", "plt.xlabel('Number of Predictors')\n", "plt.ylabel('Lowest RSS')\n", "ax2 = plt.subplot(122)\n", "plt.plot(range(1, len(features)+1), mean_rss_cv)\n", "plt.title('Cross-Validation Approach')\n", "plt.xlabel('Number of Predictors')\n", "plt.ylabel('Mean of Lowest RSS')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "## Lab 2: Ridge Regression and the Lasso" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "### Lab 6.6.1 Ridge Regression" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Index: 263 entries, -Alan Ashby to -Willie Wilson\n", "Data columns (total 6 columns):\n", "League_A 263 non-null uint8\n", "League_N 263 non-null uint8\n", "Division_E 263 non-null uint8\n", "Division_W 263 non-null uint8\n", "NewLeague_A 263 non-null uint8\n", "NewLeague_N 263 non-null uint8\n", "dtypes: uint8(6)\n", "memory usage: 3.6+ KB\n" ] } ], "source": [ "# Generate dummy variables for qualitative variables\n", "qual_vars = ['League', 'Division', 'NewLeague']\n", "hitters_dummies = pd.get_dummies(hitters[qual_vars])\n", "hitters_dummies.info()" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Index: 263 entries, -Alan Ashby to -Willie Wilson\n", "Data columns (total 19 columns):\n", "AtBat 263 non-null int32\n", "Hits 263 non-null int32\n", "HmRun 263 non-null int32\n", "Runs 263 non-null int32\n", "RBI 263 non-null int32\n", "Walks 263 non-null int32\n", "Years 263 non-null int32\n", "CAtBat 263 non-null int32\n", "CHits 263 non-null int32\n", "CHmRun 263 non-null int32\n", "CRuns 263 non-null int32\n", "CRBI 263 non-null int32\n", "CWalks 263 non-null int32\n", "PutOuts 263 non-null int32\n", "Assists 263 non-null int32\n", "Errors 263 non-null int32\n", "League_N 263 non-null uint8\n", "Division_W 263 non-null uint8\n", "NewLeague_N 263 non-null uint8\n", "dtypes: int32(16), uint8(3)\n", "memory usage: 19.3+ KB\n" ] } ], "source": [ "# Define X, y features and reponse data for scikit-learn\n", "dummy_vars = ['League_N', 'Division_W', 'NewLeague_N']\n", "response = 'Salary'\n", "y = hitters[response]\n", "# Drop response and qualitative variables, and combine with dummy data frame\n", "X = pd.concat([hitters.drop(qual_vars + [response], axis=1), hitters_dummies[dummy_vars]], axis=1)\n", "features = hitters.columns.drop([response])\n", "X.info()" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgQAAAGICAYAAAA+mPioAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VFX6wPHv1EwmmYQQAiGhIwkQCAm9KUXFhqCoK+CC\nIrqLa1t1FdyfBdeGoutKU6yo2FYRG0UWARHpNUhPJSGE9DKTTD+/PwIjY6IGDRkS3s/zzDMz99zy\nzply3znn3Hs1SimFEEIIIc5r2kAHIIQQQojAk4RACCGEEJIQCCGEEEISAiGEEEIgCYEQQgghkIRA\nCCGEEEhC0GBGjhxJfHy83y05OZkJEyawa9cu33wzZszgnnvu+cX13HPPPcyYMaMhQm50fqvuzmWL\nFy9mwIABJCcnc/DgQVauXMmFF15Ir169WLduHfHx8axdu/Y311OfdaCU4r///S8Oh6Ne1tdYbdmy\nhfj4eGw2W0CWP11OTg6rV6/2PR85ciSLFy/+w+ttqoqLi/nqq68CHUajoZHzEDSMkSNHcuONNzJu\n3Dig+sc2Ly+Pf//73xw4cIBvv/2W0NBQKioqUEoRFhZW63ruuecezGYzs2bNasjwG4Xfqrtzldfr\npVevXtx+++1cd911tGrViiuvvJK+ffty5513EhkZSUVFBeHh4RiNxl9dV33WwdatW5k0aRI7d+4k\nJCTkD6+vsdqyZQuTJ0/+3fXgdDopKyujRYsWaDSaPxTLpEmT6NGjB9OnTweqd3jBwcEEBwf/ofU2\nVQ8//DA2m405c+YEOpRGQR/oAM4nISEhREVF+Z63bNmSWbNmMWzYMLZs2cLFF1+MxWIJYISNW2Ot\nO7vdjtPppH///sTGxgJQXl5Onz59fM9NJlOd1lWfdSD/FeqH0Wj0+97Xp+bNm5+V9TYV8hk+M9Jl\nEGCn/vHpdDqgZpPv559/zqWXXkqvXr14+OGHcTqdfssvX76cyy67jMTERP7617/y1FNP+XUpfPfd\nd4wdO5bExESuuuoqlixZ8ouxzJ07l9tuu42pU6fSp08fli5dCsCbb77JiBEjfF0cu3fv9i2jlOLl\nl19m8ODB9OnTh2eeeYZJkybx2WefAdX/aGbOnMkVV1zBoEGDSEtLw2q18uijj9K/f38GDBjAPffc\nw4kTJ3zrXL16NaNHj6Znz56MHDmSN954w1e2fft2rr/+ehITExk6dCjPP/88Ho+n1rrbtGkTf/rT\nn0hKSmLEiBG88cYbvh+Izz77jHHjxvH6668zZMgQkpKSeOCBB6isrPzF+lm5ciVjxowhMTGR0aNH\ns2bNGl/Zvn37uPnmm+nduzdDhw5l9uzZuFwuX/mePXsYP348PXv2ZNSoUbz++ut4vV5ycnJITk4G\n4Oabb2bSpEnEx8dTUlLCP//5T0aOHAng12XgcDh45plnGDJkCL179+Zvf/ubr/5+Xge/9v7/Wh3k\n5OQwefJkAHr37s1nn32G1WrlgQceYMCAASQlJTF16lQyMzNr1JNSihEjRvDuu+/6TZ82bRqPP/44\nAB9//DGXXnopPXr04PLLL+fzzz//xXr/ufj4eP7zn/8wePBgxowZg8fjISMjg6lTp9KrVy9GjBjB\n888/7/ddOXjwIBMmTCAxMZGxY8fy9ttv++q2tib9uXPn+lrzfi4lJYWbb76Z5ORkevbsyQ033OD7\nTuTk5BAfH8+CBQvo378/t99+u9/6586dW6PrMD4+nocffhiAzMxMpk2bRt++fenRowejR4/2ve8z\nZsxg69atvPXWW77YT+8yUEqxePFiLrvsMnr27MnYsWP57rvvfHHPmDGDmTNnMmPGDJKTkxk0aBDz\n58//xXqeMWMGjz32GA888AC9evXi0ksv5YsvvvCVu91uXnrpJUaOHElCQgKDBw/m6aef9vs+/uMf\n/+CGG26gf//+bNy4kcLCQh544AEGDhxIjx49uOSSS/j0009965w0aRKvvfYa06ZNIzExkSuuuIK9\ne/fy+uuvM2jQIAYMGOD3b9/lcvHCCy8wZMgQ+vTpw9SpU0lPT/e9h0uXLuWbb74hPj7+N+c/VZ/P\nP/88w4cPZ/jw4ZSVlf1i/TRJSjSIESNGqPfee89vWlFRkbr//vvVkCFDVEVFhVJKqenTp6u7775b\nKaXUpk2bVPfu3dX777+v0tLS1NNPP63i4uLU9OnTlVJK7dixQ3Xv3l0tWrRIpaWlqRdffFHFx8f7\nyg8fPqwSExPVRx99pLKystSyZctUv3791Ndff11rjHPmzFFxcXHq1VdfVampqaqoqEh9+OGHavjw\n4WrdunUqIyNDvfLKKyoxMVFlZ2crpZRauHChGjBggPr222/VoUOH1G233abi4+PVkiVLlFJK/fnP\nf1YJCQlqw4YNas+ePUoppe677z715z//WaWkpKhDhw6pe+65R40ePVq5XC5VWFioEhIS1Lvvvqty\ncnLUihUrVEJCgtq4caNyu92qf//+avbs2So7O1tt3LhR9e3bV/33v/+tUXfbtm1T3bt3V/Pnz1fp\n6enqiy++UMnJyWrx4sVKKaWWLFmiEhIS1LRp09SRI0fUunXrVGJionr77bdrrZtNmzaprl27qjff\nfFNlZmaqt956SyUkJKjU1FSVkZGhkpKS1BNPPKFSU1PVmjVr1JAhQ9SsWbOUUkoVFhaqPn36qFde\neUVlZmaqdevWqeHDh6uFCxcqt9utjh49quLi4tQ333yjSkpKVH5+vurfv79atGiRKioqUkopFRcX\np9asWaOUUuqhhx5SI0eOVD/88INKTU1VN998s5o4cWKNOvit9//X6sDtdqtvvvlGxcXFqaNHj6qq\nqir11FNPqWuuuUYdOHBApaenq9tvv11NmDCh1vqaPXu2Gj9+vO95WVmZSkhIUNu2bVP79u1TXbt2\nVStWrFA5OTnq/fffV/Hx8SojI6PWdf1cXFycuuSSS9SRI0fU/v37ld1uVyNGjFD/+te/VFpamtq6\ndasaPXq0evTRR5VSSpWXl6tBgwapGTNmqNTUVLV06VKVlJSkRowYoZRSavPmzSouLk5ZrVbfNubM\nmaOuvfbaGuUVFRWqf//+6tlnn1VZWVlq//79avLkyerqq69WSimVnZ2t4uLi1I033qgyMjLU4cOH\n/Za3Wq0qPz/fd3v77bdVYmKi2r9/v/J6veqyyy5T999/v0pLS1OpqanqvvvuUwMGDFAOh0OVl5er\nG2+8UT3++OO+z8Xpvyuvvvqq6tu3r/r6669Venq6mjNnjurWrZs6cOCA77ORkJCgXn75ZZWVlaUW\nLlyo4uLi1L59+2qt51PzP/bYYyo1NVW9/fbbqmvXrmrTpk1KKaVeeeUVNWzYMLVlyxaVnZ2tli5d\nqrp166ZWrVrlWz4+Pl4tXbpU7d+/X1VWVqopU6aoW265RR04cEBlZmaqp59+WiUkJKiCggKlVPXv\nRa9evdTSpUtVRkaGmjBhgurXr5+69957fTHExcX5XtMLL7ygrr76arV161aVmpqqnnzySTV48GBV\nXl6urFaruvfee9Vf//pXlZ+f/5vzn6rPfv36qZSUFJWSklKnz2NTIglBAxkxYoRKSEhQSUlJKikp\nSSUmJqqEhAR18803q8OHD/vmO/0H/d577/U9Vkopr9erLr/8ct8O//7771d33nmn33ZuuOEGX/lD\nDz2kHnnkEb/yV155RY0bN67WGOfMmaN69eqlvF6vb9rw4cPVl19+6TfflClTfDu7oUOHqnfeecdX\nVlxcrHr16uWXEEydOtVXfmrnl5eX55vmcDhUUlKSWrt2rdq3b5+Ki4tTK1eu9JVv27ZNFRQUqJKS\nEhUfH6/efvttX4x79uxROTk5Neru7rvvVn/5y1/84l64cKEaOnSoUqp6ZxgXF+f7IVJKqTvvvFPd\nf//9tdbN3XffXaOu582bp1JSUtSsWbPU6NGj/ept2bJlKiEhQdlsNvXyyy+rKVOm+C375ZdfqgED\nBiillLJarSouLk5t3rzZV96/f39fHSr1U0JQXl6uunfvrlavXu0ry8rKUrNnz1YOh8OvDn7r/f+t\nOvj5jnLatGlqwoQJvh/PvLw8tWPHjlrr68CBAyo+Pt73Pn/66adq+PDhyuv1qlWrVqlu3bqp3bt3\n++bfsGGDKisrq3VdPxcXF6cWLlzoe/7pp5+qUaNG+c2zY8cO1bVrV1VRUaE++ugjNXjwYOVwOHzl\ns2fP/l0JQUFBgXrttdeUy+Xyzbty5UrVtWtXpdRPCcGyZct85bWtXyml9u/fr3r16qU+//xzpZRS\nNptNvf7666qkpMQ3z969e1VcXJzKzc1VSlV/n05995T6KSHwer1qwIAB6o033vDbxtSpU33v5/Tp\n09UVV1zhV96/f3/10Ucf1VLL1fOPGjVKeTwe37Q77rhD3XvvvUoppf73v/+pjRs3+i0zevRoNW/e\nPN/yl19+uV/5O++8o44ePep7XlxcrOLi4tS2bdt8r++vf/2rr/z9999XcXFxfp+NpKQk9dVXX6mq\nqirVo0ePGp/BUaNG+RL/078PdZl/xIgR6rHHHqu1Ps4HMoagAf31r39lzJgxOJ1OPvjgA/73v/9x\n11130aVLl1rnP3LkCGPGjPE912g09OzZ0/f80KFDXH311X7LJCUlUV5e7lv+8OHDfP31175yt9uN\nXv/Lb3tsbKxv4JPNZiM3N5dHHnmExx57zDeP0+nEaDRSXFxMfn6+X0wRERF06NDBb51t27b1PU5N\nTQXg8ssv95unqqqK9PR0hg0bxqhRo7jnnnuIjY1l2LBhjBkzhhYtWgAwefJknn32WV5//XUuuugi\nrrzyShITE2u8jtTU1Bp106dPH1588UVf/YSEhPjWCxAaGvqLXQZpaWl+7wXAnXfeCcCcOXPo1auX\n34CxPn364HK5yMrKIjU1lS1btvi6BqB6IKHdbqekpOQ3BwqeLiMjA7fb7Vfn7dq14x//+EeNeevy\n/p9JHdx6663ccccdDBo0iH79+jFy5EiuvfbaWuft2rUrXbp0YcWKFdxyyy0sX76cK6+8Eo1Gw4UX\nXkhiYiJ/+tOf6NSpE8OHD+faa689o4GQP/9MZWdn+9WvUgqv10tmZiaHDh2ia9eufvWclJTE8uXL\n67y9U1q0aMGf/vQnPvjgAw4ePEhmZib79+/H6/X6zdemTZtfXU9xcTF33nkn119/PWPHjgXAbDZz\n00038fXXX7N3717fugFfM/yvra+kpISkpCS/6X369GHlypW+5+3atfMrDwkJwe12/+J6k5OT0Wp/\n6llOTEz0jdq/5JJL2Lp1K7NnzyYjI4PDhw+TnZ3NqFGjfPOf/j4BTJw4kZUrV7Jo0aJffH2nL2My\nmQgPD/f7bBiNRpxOJ0ePHsXpdHLrrbf6ffccDodfN8ApdZ3/5zGfTyQhaEARERG0b98egMcff5zi\n4mLuuOMOvvzyS1q3bl1jfo1GU2NQjMFg8H159Hp9jR+i03k8HiZNmsT48ePrHGNQUJDf8gCzZs2i\ne/fufvOZTCYMBgPAr8Zwat7T12kwGGrtMw4PD0ej0TB37lwOHjzI2rVrWbduHR999BFPP/0048aN\n45///CcTJ070lf3lL3/hzjvv5K677vrF13HKqbo89bpOxV8XBoPhFwco1batU3Xi8Xhwu92MGjWK\nv//97zXms1gsZ3RY36md2i/Fcrq6vP9nUgf9+vVj3bp1rF+/nvXr1zN37lw++ugjlixZUuugx9Gj\nR7Ny5UrGjh3L5s2befDBB4Hqz8OHH37Irl27+O6771izZg2LFy/m1VdfZciQIXWK5fTtud1ukpKS\nePbZZ2vM16pVq9/8ntQ28v+XdpInTpzghhtuoGPHjr6EtKSkpEZC9muDQN1uN3//+9+JiYnxG+9j\ns9kYP348RqORSy+9lBEjRmA2m31jOX5NbZ9BqP4cnv7aa0s+f+2zdGps0ykej8eXIMybN4933nmH\n6667jlGjRvHAAw/wwAMP+M1/ej14vV5uu+028vLyuOqqq7jxxhu54IILuOKKK/yW+fkfll86MuPU\n9/itt94iMjLSryw0NPR3z1/XAbxNkQwqDKDHH38cnU7HzJkzay2Pi4tjz549ftNOZdQAXbp0Yd++\nfX7le/fu9T3u3LkzWVlZtG/f3nfbtGlTnY9bDgsLIyoqihMnTvit45133uH777/HYrEQHR3tF0NF\nRQVZWVm/uM5OnTrhcrmorKz0ra9FixY8++yzZGZmkpaWxlNPPUXXrl254447+Pjjj7nyyitZvnw5\nhYWFPPHEE7Ro0YIpU6bwzjvv8Je//IVly5bVup3Tz+8AsHPnTiIjI2nWrFmdXv/pOnTo4Ff3AFOn\nTuWdd96hc+fO7Nmzx++HddeuXRgMBtq1a0fnzp3JyMjwq8MjR44wd+5cv39fddGmTRt0Op1fLNnZ\n2QwcONBvYCb88ff/5z/EixYtYseOHVx55ZXMmjWL//73v6SmpnLo0KFalx89ejQpKSl8+umndOjQ\nga5duwLVdTN37lx69+7Nfffdx1dffUVCQgKrVq06k6qo8Tqjo6N9r7OkpITnn38el8tFly5dOHz4\nsN8gw9O/J6eSotMHFebk5NS6rWXLlqHX61m0aBFTp05l6NCh5OXlAXUf0T5r1iwyMzP5z3/+47fz\n27BhAxkZGXzwwQdMmzaNESNGUFRUVKd1h4aG0rJlyxqf+V27dtGpU6c6xVWbn3/mU1JSfO/jm2++\nyfTp05kxYwbXXHMNbdq0ITc39xdj3b9/P5s2beL111/n7rvvZtSoUVitVuD3HQ3Qrl079Ho9xcXF\nvve9bdu2vPzyy77fzdM/w3WZ/3wnCUEANW/enAceeIB169b5nWzklMmTJ7N+/XrefvttMjIyeOml\nlzh48KBf+dq1a3n33XfJzMxk3rx57Ny50/cluPXWW1m3bh2vvvoqWVlZrFixgueee45WrVrVOcbb\nbruNBQsWsHz5co4ePcq8efP4+OOPfT8yt9xyC6+++irr1q0jNTWVhx9+mMrKyl/M6jt16sTIkSN5\n6KGH2L59O2lpaTz44IP8+OOPdO7cmfDwcJYsWcKLL75IdnY2O3fuZPfu3SQmJhIeHs7q1at5+umn\nycjIYP/+/WzYsKHWLoPbbruNDRs2sGDBAjIyMvj6669ZuHAhkyZN+l3Hgt98882sXr2axYsXc/To\nURYtWsS2bdsYOnQoEydOJCcnh6eeeoq0tDS+++47Zs2axTXXXENYWBg33XQTmZmZPPXUU6Snp7Nh\nwwYef/xxLBbLGScEoaGhXH/99cyaNYtt27Zx5MgRZs6cSZcuXWq8r3/0/TebzUD1ERQ2m40TJ07w\n5JNPsm3bNrKzs/nss88IDQ2lY8eOtS4fGxtLr169WLBgAaNHj/ZNDw4OZuHChbz77rvk5OSwYcMG\n0tLSfO9jRUUFxcXFda6TMWPGoNVqmT59OocPH2bnzp08/PDDuFwuLBaLb9szZ84kLS2N5cuX8957\n7/mW79KlCyaTiYULF5Kdnc2nn37KunXrat1Wq1atKCwsZN26deTk5PDZZ5/xyiuvANQ4Aqg2S5cu\n5eOPP/adR6SgoICCggKKi4tp1aoVLpeL5cuXc+zYMf73v//xzDPP+K07JCSErKysGskfwF/+8hcW\nLlzI8uXLfb8HP/zwA5MmTapzXf7c/v37eemll8jIyODNN9/k+++/962vVatWfPfdd2RlZbFv3z7u\nvfdeysrKfrEeoqKi0Ol0LFu2jGPHjvHDDz/4zqdQl7r7uZCQECZMmMDTTz/ti2PmzJmsXbvW1w1r\nNps5duwYOTk5dZq/NqWlpZSWlp5xfI2RdBkE2PXXX8+SJUt8h5GdLikpiZdffpkXX3yRl156iYsu\nuoirrrrKV96zZ0+eeeYZXn75ZWbPns2FF17IxRdf7PvH06NHD+bMmcOcOXOYN28eUVFRTJs2jalT\np9Y5vsmTJ2O325k9ezaFhYV07NiROXPm0Lt3b6B6R1lQUMD06dNxu92MHz+e2NjYX22Kfu6553j2\n2We58847cTqdJCcns2jRIiwWCxaLhQULFvDCCy/w7rvvEhISwlVXXcW0adMwGAy89tprPPPMM4wb\nNw69Xs/IkSN55JFHamyjW7duzJ07l5dffpkFCxYQHR3NXXfdxS233FLn13665ORknnvuOebPn89z\nzz1H586dmT9/Pp07dwbgjTfeYPbs2YwdO5aIiAjGjRvnG2MQHR3NG2+8wQsvvMDYsWMJDw9nzJgx\n3Hfffb8rlhkzZjBr1izuuusuPB4PQ4YM4dFHH60x3x99/+Pi4hgxYgS33norDzzwAH//+9+x2+3c\nd999lJWV0bVrVxYuXPirff9XX301O3fu9EsIunbtyuzZs1mwYAGzZ8+mefPmTJkyheuuuw6Ap59+\nmq1bt/od1vlrzGYzb731Fs8++yw33HADwcHBjBgxwnco36kEZObMmYwdO5YuXbpwww03+Hb6oaGh\nPPPMM/z73//mk08+YfDgwdx11121nuHuiiuuYNeuXcyYMcPX+vDUU09x//338+OPP/5msvXZZ5/h\ndDqZMmWK3/TY2FjWrFnDfffdx4svvojVaqVDhw5Mnz6dJ598kn379tG5c2cmTJjA9OnTGTNmDJs2\nbfJbx5///GcqKyt5/vnnKSoqIi4ujldffZW+ffvWqR5rM3ToULKyshg7dizt2rVj/vz5vsRt1qxZ\nPPHEE1x99dU0b96cSy65hOuvv75Gq+UprVq14l//+hcLFixgwYIFxMbGMnHiRD755BP27dvHRRdd\ndMbxPfTQQ+j1ev75z39itVrp1q0bb7zxhm8cwLXXXsvq1au56qqrWL169W/OX5u7774bwC+JbKrk\nTIWNWEpKCiEhIb6dElT/S0hMTKzRp362fPfddyQkJPgGprndbgYMGMCrr75Kv379GiQGIX5NdnY2\neXl5fp/HN954g/Xr19c4V4L4yYwZM6isrJSz/J1HpMugEdu9ezdTp05l27ZtHDt2jI8//pjNmzf7\njfI92z755BMefPBBDh8+7GsWDw8Pp1evXg0WgxC/xmazccstt/Dll19y7NgxNmzYwKJFi7jyyisD\nHZoQ5xTpMmjEJk6cSG5uLvfddx/l5eV07tyZOXPmEBcX12AxPPbYYzz55JPcdNNNuN1uevfuzZtv\nvnlGh9IJcTZ17dqVf/3rX8yfP5/c3FyioqK45ZZbuPHGGwMdmhDnFOkyEEIIIYR0GQghhBBCEgIh\nhBBCIAmBEEIIIWiCgwpzc3MDHcI5LyYmRuqpjqSu6kbqqe6krupG6qluYmJi6m1d0kIghBBCCEkI\nhBBCCCEJgRBCCCGQhEAIIYQQSEIghBBCCCQhEEIIIQSSEAghhBACSQiEEEIIgSQEQgghhEASAiGE\nEEIgCYEQQgghaILXMhBCCCGaGo/Hg8vlwuVy4Xa7fbf6vJaBJARCCCFEA1FKUVVVhdVqpaqqisrK\nSt+93W7H4XDgcDiw2+04nU6cTiculwuPx1Pr+vr06VNvsUlCIIQQQtQjl8tFaWmp3628vByr1YrV\nav3FnfvpDAYDQUFBBAcHEx4ejtFoxGAwYDAY0Ov1GAwGdDpdvcYtCYEQQgjxO1VWVpKfn09BQYHv\nvry8vNZ5zWYzkZGRWCwWQkJCCAkJITg4mODgYMxmMyaTiaCgIIKCgup9Z18XkhAIIYQQdWS1Wjl2\n7BjHjh0jJyeH0tJSv3KTyUSbNm2IiIigWbNmvnuLxRKQnfyZkIRACCGE+AVKKQoLC0lLSyMtLY2i\noiJfmcFgoH379kRHRxMVFUVUVBShoaFoNJoARvz7SUIghBBC/ExxcTH79+8nNTXV1wWg0+lo3749\nbdu2JTY2lqioKLTapnP0viQEQgghBOB2u0lLS2Pv3r3k5uYCYDQaiYuLo3PnzrRv3x6j0RjgKM8e\nSQiEEEKc1xwOB7t27SIlJQW73Q5A27Zt6dGjBx07dkSvPz92lefHqxRCCCF+xuFwsHv3bnbt2oXT\n6cRkMtGnTx8SEhJo1qxZoMNrcJIQCCGEOK+43W527drFzp07cTgcmEwmhgwZQmJiIgaDIdDhBYwk\nBEIIIc4bOTk5rF27lpKSEkwmE4MHDyYxMbFJjw2oK0kIhBBCNHl2u50ffviBffv2AdCrVy8GDhxI\nUFBQgCM7d0hCIIQQoklLS0tjzZo1VFVV0aJFC0aOHEl0dHSgwzrnSEIghBCiSfJ6vWzatIkdO3ag\n0+kYMmQISUlJ5/wZAwNFEgIhhBBNTmVlJStXriQnJ4fw8HCuuuoqWrRoEeiwzmmSEAghhGhSjh8/\nzvLly7HZbHTq1IlLL71UxgrUgSQEQgghmowjR47wzTffoJRi8ODB9OnTp9FeW6ChSUIghBCiSdi/\nfz/ffvster2eq666inbt2gU6pEZFEgIhhBCN3u7du1m/fj0mk4mxY8fSqlWrQIfU6EhCIIQQotFS\nSrFt2zY2b96M2Wzm2muvJTIyMtBhNUqSEAghhGi0tmzZwtatW7FYLFx77bXn5TUI6oskBEIIIRql\nlJQUtm7dSnh4OOPGjcNisQQ6pEZNG+gAhBBCiDOVlpbGd999R3BwMGPHjpVkoB5IQiCEEKJROX78\nOCtXrkSn0zFmzBjpJqgnkhAIIYRoNEpKSvjqq6/wer1ceeWVcjRBPQrIGIKysjJmzJjBI488gk6n\nY/78+Wg0Gtq2bcvUqVPRarWsXr2a1atXo9PpGDduHH369AlEqEIIIc4RVVVVfPHFF9jtdi6++GI6\ndOgQ6JCalAZPCNxuN6+99prv2tPvvPMO48ePJyEhgddee43t27cTFxfHihUrmDVrFi6Xi0cffZTE\nxEQMBkNDhyuEEOIcoJRi1apVlJeX079/fxISEgIdUpPT4F0G7733HpdeeikREREApKen0717dwCS\nk5NJSUkhNTWV+Ph4DAYDZrOZ6OhosrKyGjpUIYQQ54jt27eTlZVFu3btGDBgQKDDaZIatIVg3bp1\nhIWFkZSUxOeff+6bfuo808HBwVRWVlJZWYnZbPaVn5peFzExMfUbdBMl9VR3Uld1I/VUd1JXdXOq\nntLT09ldIdfmAAAgAElEQVS8eTNhYWHcfPPNhISEBDiypqlBE4K1a9cCsHfvXjIzM5k3bx5lZWW+\n8qqqKkJCQjCbzdjt9hrT6yI3N7d+g26CYmJipJ7qSOqqbqSe6k7qqm5O1VNlZSUffvghGo2Gyy67\njLKyMr/9xvmuPpPLBk0InnjiCd/jmTNncvvtt/Pee++xb98+EhIS2LVrFz169OCCCy7gww8/xOl0\n4na7OXbsGG3btm3IUIUQQgSY1+vlm2++wWazMXToUFq3bh3okJq0gJ+pcPLkySxcuBC3201sbCwD\nBw5Eq9VyxRVX8Pjjj+P1ehk/frxvEKIQQojzw/bt28nOzqZjx44kJycHOpwmT6OUUoEOoj5JU9xv\nkybLupO6qhupp7qTuqq7efPmYTabmThxIiaTKdDhnJMabZeBEEII8Vs8Hg9Lly7F6/Vy8cUXSzLQ\nQORMhUIIIc4pO3fuJDc3l+7du9O+fftAh3PekIRACCHEOaOoqIgtW7ZgsVgYOnRooMM5r0hCIIQQ\n4pzg9XpZvXo1Xq+Xa6+9VroKGpgkBEIIIc4Ju3fv5sSJE8THx/vOYCsajiQEQgghAq6srIxNmzYR\nHBzMRRddFOhwzkuSEAghhAi477//Ho/Hw7BhwwgODg50OOclSQiEEEIEVFZWFunp6cTGxtKlS5dA\nh3PekoRACCFEwHg8HtavX49Go2HYsGG+i92JhicJgRBCiIDZs2cPJSUl9OzZkxYtWgQ6nPOaJARC\nCCECwmazsWXLFkwmEwMHDgx0OOc9SQiEEEIExMaNG3G5XAwaNEjOOXAOkIRACCFEg8vLy+PAgQO0\naNGChISEQIcjkIRACCFEA1NKsX79egCGDRuGViu7onOBvAtCCCEaVHp6Onl5eXTu3JnY2NhAhyNO\nkssfCyGEaDBer5eNGzei0WgYNGhQoMOpM49XYXN5qXR6sLu9VLm92N0Ku8uL3e3F6VE4PF6c7up7\nl0fh8qqT917cHnArhdur8Hh/uvcofPdepfB6waMU3lPPT96rU88BFHipbmlZe29Mvb1GSQiEEEI0\nmAMHDlBSUkL37t1p3rx5wOJwexUlVW5KqtwUn7yVVLmpcHgoc3god3iosHuwOj3YXB7sbnVW4tBq\nQKfRVN9rNeg0oD35XHvadA3VzzWaU4+h+lH9kYRACCFEg3C73WzZsgWdTseAAQPO+vacHi+55U6O\nljnJLXdywuYk3+rihNVFUZUb72/s40OMWixGHbHBRkIMOsxGLWaDjmCDlmC9FpNeg0mvJUivJUin\nwXjqXqfFoNNg0Gr87vVaDTpt9XOtRoNOW72TP1dIQiCEEKJBpKSkYLVa6d27NxaLpV7XXe7wkFZs\n50hRFalFdrLLHORZXTV2+hqguVlP1xbBtDAbaG7W0zxYT0SwnohgHeFBesKCdFiCdOi0587OuiFI\nQiCEEOKsczgcbNu2jaCgIPr27fuH11dU6WJPXiUpeTYOFFSRZ3X5lVuCdHSLCqZNWBBtw43EhhmJ\nDjUSFaLHoJPx9LWRhEAIIcRZt2PHDhwOB4MHD/5dJyHyeBX78ivZnF3B7rxKjpU7fWUWo5bk1iF0\niTRxQaSJC5qbiDQb6jP884IkBEIIIc4qm83G7t27CQkJoVevXnVezuNV7D1RycajFWzOrqDM4QHA\npNfSNyaExOgQekWbadcs6Jzqi2+sJCEQQghxVu3YsQO3282FF16IwfDb/9xLq9ys2JTBJzuzKap0\nAxBu0nF5l2YMaWehe0sz+vOsf78hSEIghBDirLHZbOzduxeLxUL37t1/dd6DBVUsO1TCxuxy3N7q\nloDLLmjGhR0sdI8yn3eD/BqaJARCCCHOmh07duDxeOjXrx86na7WeY4UVbF4dwG78yoBaBtuZHzf\nDvSOVJgNtS8j6p8kBEIIIc6K01sHunXrVqM8u8zB+3sK2JRtBaBXtJnrEyLp2cpMbGwsubm5DR3y\neU0SAiGEEGfF9u3ba20dqHR5eHdXAd+kluJVEBdpYlJSFInRIQGMVkhCIIQQot5ZrVZ+/PHHGq0D\nO3OtzN+SR2GlmzZhRiYnRdG/TSgaOUog4CQhEEIIUe9+PnbA6vDw5s581qSXodPAjT0juSEhUk4S\ndA6RhEAIIUS9OtU6EBYWRrdu3TiQX8nzG3IprnLTKSKIuwe2plPzMz85kTi7JCEQQghRr061DvTt\n25dvMypYuC0Pr4KbElswLiFSziFwjpKEQAghRL2x2Wy+sQPfW5uzck8eFqOWhy6MlUGD5zhJCIQQ\nQtSbXbt24fF4yAnpyPa0cjo0C+Kfw2JpFWoMdGjiN0hCIIQQol5UVVWRkpKCSxfETmcUg9tbuGdg\na4INMnCwMZCEQAghRL3YuG0nbrebDHNnrkmIYnJSlBxO2IhIQiCEEOIPyy6uIGXPHjwaA4P6JDJR\nkoFGR9pxhBBC/CHHK5ws+OoHdMpN847duSm5tSQDjZAkBEIIIX63fKuLR1elE1megUZv5KZLBwY6\nJPE7SUIghBDid7E5PTy5LhtTSSZG5aJf7ySCgoICHZb4nSQhEEIIccbcXsVz3x8jp7SKONdRDAYD\nSUlJgQ5L/AGSEAghhDgjSile2ZrHnrxKBgUXgstOYmIiJpOcjrgxk6MMhBBCnJEl+4pZnVZG5wgj\nLU6kU6XTkZycHOiwmhalQLnQKBca78l75QLlRnPyhvIAMfW2SUkIhBBC1NmGrHLe21NAlFnPhNhK\nNqVW0KtXL8xmc6BDOzd5XWg9FWg91pM328lbJRpvFRqPHa23Co3XfvLmRON1VCcAqN9ef5eL6y1U\nSQiEEELUSXaZgzmbjhOs1/LIsFjWf/0JWq2W3r17Bzq0wFFudK5idK6ik7didK5itO5ydO5ytF5b\n3VajMeDVBqG0QXh1oShtEEprRGkMoDGgtAaURn/yuf7kYx0R9fhSJCEQQgjxm+xuL89/fwyHR/HQ\nha1xFmZTWlpK9+7dsVgsgQ6vQWjd5egdOegdJ9A7j6N3nEDnKkSDt8a8Xo0Rrz4cd1A0Hn0YXp0F\npQvB67uZUdpgvNpglM4Emt+3O5aEQAghRIN6bdsJjpY5uSquGYPbWvjww6/RaDT07ds30KGdHUqh\nc+ZhtGdiqDqKwZ6Fzl3iN4tXG4TL1BaPMQqPPhKPMRKPvjkeQ3OU1gSN7ORMkhAIIYT4VWvSy/g2\nvYwLmpuY0rslGRkZFBYWEhcXR7NmzQIdXr3ReOwYq45gtB3GWHkYnafcV+bVBuMwd8Vlaoc7KBq3\nMRqvvlmj2+n/GkkIhBBC/KKjpQ5e2ZpHiEHLg0Nj0Gs1bNu2DYB+/foFOLo/TuN1YLTtx1SxC2Nl\nmq/536sNwR6ahNPcGZepPR5Diya186+NJARCCCFqZXd7ee77Yzg9ivuHxBBtMZKdnc2JEyfo1KkT\nkZGRgQ7x91FejJVHMFXsIsi2v/pwPsAVFIsjpCtOczzuoFjQnF+n6pGEQAghRK3e3ZVPTrmT0fER\nDGpbPXBw69atQCNtHfA6Ca7YQXDpRvSuQgDchuY4QpOxW5LwGFsEOMDAkoRACCFEDXvybCw7XErb\ncCM3J0cBcOzYMY4dO0a7du1o1apVgCOsO627nODSjQSXb0XrrUKho8rSh6rw/riD2jb5roC6koRA\nCCGEn0qXh7mbjqPVwL2DWmPUVTedn2odGDBgQCDDqzONpwpzyXeYyzaiUS68uhBsERdTFT4Ar/78\nOFTyTEhCIIQQws+bO/IpqHRzY89IukQGA3D8+HGys7Np27YtrVu3DnCEv8HrxFy2CXPJd2i9VXh0\nYdiaX4Xd0hu0hkBHd86ShEAIIYTP9mNWVqeV0TEiiBsSfupTP9U60L9//0CFVidG6z4sBV+i85Tj\n1QZjjbyCyvBBkgjUgSQEQgghAKhweJi3JQ+9Fv4+qDUGXXXfel5eHllZWcTGxhIbGxvgKGundZdh\nKfiSINt+FDpszYZRGTEMpQsOdGiNhiQEQgghAHh9+wlKqtxMSoqiQ8RPlzI+p8cOKC/BZZsJKVqF\nVjlwmjpS0fJaPMaoQEfW6EhCIIQQgh3HrHyXWU6XSBPXdmvum56fn09mZiYxMTHnXOuA1lVK2ImP\nMdoz8WqDKY8ah93S57w7f0B9kYRACCHOc1UuL69uy0OngbsGRKPT/nQY3uljBzTn0OF5Rtt+wk58\nitZbhT0kgYqosSg5cuAPkYRACCHOcx+kFJBvc3N9QqRfV0F+fj7p6elER0fTtm3bAEZ4Gq+L0KIV\nmMs2oTR6yqOuwR7WX84lUA8kIRBCiPPYkaIqvj5UQmuLgT/18D8V8ebNm4HqsQPnQuuA1lVC+PH3\nMDiP4za2pKzVBDxB0YEOq8lo0ITA7XbzyiuvUFBQgMvl4rrrrqNNmzbMnz8fjUZD27ZtmTp1Klqt\nltWrV7N69Wp0Oh3jxo2jT58+DRmqEEI0eW6vYv6WPLwK/tY/miD9T33vx48f940daNeuXQCjrGao\nSif8+AdovTaqwvpR0WI0aI2BDqtJadCE4Pvvv8disXD33XdjtVp58MEH6dChA+PHjychIYHXXnuN\n7du3ExcXx4oVK5g1axYul4tHH32UxMREDAY5jlQIIerLlweKyShxcHGncBKjQ/zKNm3aBMDgwYMD\n3jpgKtuKpeALgOougvBz8GiHJqBBE4JBgwYxcOBAAJRS6HQ60tPT6d69OwDJycns2bMHrVZLfHw8\nBoMBg8FAdHQ0WVlZXHDBBQ0ZrhBCNFl5FU4+3FtIuEnHlN4t/cqys7PJycmhffv2xMTEBChCQHkI\nLVyGuWwTXq2ZsuibcJk7BS6eJq5BEwKTqXqwSlVVFf/+978ZP3487733ni/7DA4OprKyksrKSsxm\ns2+5U9PrIqAf3kZE6qnupK7qRuqp7gJdV0opnv1hD06P4rEr4onvGO1XtnTpUgCuvvrqgMWqPHZa\nFX+MKtsL5lgMCX8nKrjlby8ofrcGH1RYWFjICy+8wKhRoxg6dCiLFy/2lVVVVRESEoLZbMZut9eY\nXhe5ubn1HnNTExMTI/VUR1JXdSP1VHfnQl1tyCpnc2YxSa1D6BHm8YsnPT2d7OxsOnfujFarDUis\nGo+VqMIPoCIDhzmO8ugJqBI3lMhn7OfqM2Fr0LM3lJaW8vTTT3PTTTcxcuRIADp06MC+ffsA2LVr\nF926deOCCy7gwIEDOJ1OKisrOXbs2LlzyIsQQjRiNqeHN7afwKDVMK1fK7/xAUop35EFp7p3G5rW\nVUxEzqtQkUGVpQ9lrSejtKbfXlD8YQ3aQrB06VKsVitLlixhyZIlANxyyy28/fbbuN1uYmNjGThw\nIFqtliuuuILHH38cr9fL+PHjMRplNKkQQvxRi/cUUGL3cFNiC1pb/H9Xjxw5QmFhIfHx8URGRv7C\nGs4evSOX8Ny30XmsaNqOpsI4WM4v0IA0SikV6CDqU6Cb4hqDc6HJsrGQuqobqae6C2RdHSmq4sGV\nWcSGGfnPlR0w6H5qJPZ4PCxevJjy8nImTZpEs2bNGjQ2Q1UG4bnvoFFOrC1GE9H9evlM1UF9dhnI\niYmEEOI84PEqFmzJQwHT+rfySwYAUlJSKCsrIzExscGTAaPtEOF5i0EpyluNx2FJJKJBIxAgCYEQ\nQpwXlh0uIb3EwchOYfRs5T9I2263s3XrVoKCghr8ioZB1h8Jy/sINBrKWv8ZZ0jXBt2++IlcEkoI\nIZq4ApuL9/cUYjFquSW55qF7W7duxeFw0K9fP4KDgxssLlP5DsLyPkBpdJS2niLJQIBJC4EQQjRh\nSile234Cu9vL7QOjCTf5/+yXlJSQkpJCeHg4iYmJDRZXcNkmLAVf4tUGUxozBbdJjiQLNEkIhBCi\nCducbWVrjpUercxc3Cm8RvmGDRvwer0MGTIEvb5hdgnmkvWEFq3AqwulJOZWPEGtG2S74tdJQiCE\nEE2Uzenhte0n0Gs13NG/VY1rEmRnZ5ORkUFMTAydO3c++wEpRUjxakJK1uDRh1MaMxWPMersb1fU\niSQEQgjRRL2/p4DiKjcTElvQJizIr8zr9fL9998DcNFFF539CxgpRWjRCsyl3+PRN6ck9ja8BjmW\n4FwiCYEQQjRBhwqrWH64lDZhRq7r3rxG+b59+ygsLKRr1660bHmWrxGgvIQWfIm5fAtuQxSlsVPx\n6mt2X4jAkoRACCGaGPdp5xz424DoGuccsNls/PDDDxiNRoYMGXJ2g1Fuwk58ism6B5exNaUxt6L0\noWd3m+J3kYRACCGamKX7i8gsdXBJ53ASWpprlK9fvx6n08mIESPqfOG438XrJDzvfYIqD+M0taes\n9c0oXcMd1ijOjCQEQgjRhGSVOvhobyHNg/VMqeWcA5mZmRw5coTo6Gh69Ohx1uLQeCppdvwdDPaj\nOMxxlEXfBFq5Js25TBICIYRoIjxexZxNx3F74W/9owkN0vmVu1wu1q5di1ar5eKLLz5rAwm17nKa\n5b6F3nkCe2gS5a2uB43utxcUASUJgRBCNBFLDxSTWmxneMcw+rWp2U+/ZcsWKioq6Nu371m7mqHe\ncZzw4++gc5dRGT4Ya4urQCMnxW0MJCEQQogm4GiZgw9TCokw6bitT6sa5QUFBezatYuwsDD69et3\nVmIw2g4QlvcRWuXEGnkZlc2GyeWLGxFJCIQQopH7qatAcUf/aCw/6yrweDx8++23KKUYMWIEBoOh\nfgNQiuCyHwgtXA4aPWXRN+EIPXvjE8TZIQmBEEI0cl8cLOZIkZ2L2ocxoK2lRvnmzZvJz8+nW7du\ntG/fvn43rtyEFnyNuXwLHp2FstaT5LoEjZQkBEII0YilFdt5f08B4SYdt/eteVRBTk4OO3bsIDw8\nnGHDhtXrtrWuEsLzPsDgyMFlbE1Z68l4Dc3qdRu/h8frxqMcuL3VN4/XgVs58XpdeJQLj9eJR7nw\nKhde5caj3HhP3pTy4FWek8+9KDwo5cWrPL7HSnlRnHaPOvm4+h7UyXJ18rHyPQZQeKvvlToZcfU8\nvse+6Zy2TM1pAFNj3qu3epOEQAghGqkql5cXNuTi9sK9A1sT9rMrGdrtdlatWoVGo+Gyyy7DaKy/\nw/6M1n2E5X+K1mvHbkmiIuoalDbotxc8A26vE7u7FLu7HIe7HIenHLu7HKfHitNjw+mpxOWx4fRW\n4vJU4fZW4fLa8SpXvcbxx2nQoKm+15y8PzkdQHNy0OWpqfDTuItT85++prNFEgIhhGik3thxgtwK\nJ2O6RtAn1v+oAqUUa9aswWq1MnDgQKKjo+tno8pNaOEKzGUbURoD5S2vozQ4GZvdi8PtxO72Ynd7\n8SoI0msI0mmr7/VaLEYdOu1POzSXpwqrMx+rKx+r8wQ2ZwGVriIqXcU4Dpdid1XUKSS91oRBG4xR\nZyHEGIVBG4xeG4ROG4Rec/Jea0CnMaLTGtFqDOg0erRaY/W9302HVqNDo9GjRYvm1HN0aDVaNBot\nGnRoNBo0nHqupXpnr63e9Z8s+ykBaBzOOCHIz8+nsLCQ7t27n414hBBC1MGGrHJWp5XRKSKIyUk1\nrxh48OBBUlNTiYmJoW/fvn94e0opyksyiSpeipkCTrgi+M/xS9ixy0KF40id1qHVKCxBTkKMVkz6\nYoIN+YSb8mlmyifMVIxWU92UrteaCAtuSbixHcH6CEz6MIL0YQTpwzHpLBh1oSdvZgw6M1o5x0G9\nqFNCsGrVKg4cOMCUKVP4v//7P8xmMwMGDGDixIlnOz4hhBA/c8LqZMGWPEx6Df8YGlvjWgUlJSWs\nW7cOo9HIqFGj0GrP/DwASilyyp1sO2YlvbCMQYaNjGmxH51G8Xl+F17O6ocbIy1DdHRubiLUqMWk\nr75pNXYc7mLKHWVYnVZsripcHgNVrlAqXWEcL49AEQl08W1Pr1XEWHTERZpJaGXhom7t0VWWNKp/\n2I1dnRKCNWvWMGPGDDZv3ky/fv2YOnUq//d//ycJgRBCNDCPV/HvH45jc3m5e2A0sWH+4wIcDgdf\nffUVLpeLyy67jLCwsDqv26sUhwvtbMmpYHO2ldwKJwPDc3io42ZaB9kocIezhcsJ6xzH/CQDzYP1\naDUaHO4KTtj2c8K2j3zbfqzOE4QCkaGgQUczU1uaB3eimSmMcFMzQg0xWJ1BHK9wklXqILPUQdbJ\n29EyK6vTrby86TjhQTq6tQwmsVUIvVqbibUYJUE4i+qUEGg0Gpo1a0ZKSgqDBw9Gp9Ph9XrPdmxC\nCCF+5u1d+RwsrOLC9hYu7uR/CWGv18uKFSsoLS2ld+/exMfH12mdRZUuvk0r439ppeTb3AB0Cy3h\nqV676WY6ikKLLWI4KmIk/bXV5zCocORxuGgHxyp2Ulh5hFMj3w3aYGIsybQ0dyPS3Jlmpg7oa7mG\nQbABokIMJEb/dHElj1eRWergQEElWVbYebSYzdlWNmdbAYgM1tOrtZmk6BCSW4fUGEQp/pg61aZe\nr+eLL77gwIEDTJs2jVWrVhEUVL+jSYUQQvy61WmlfHWwhLbhRv42ILrGv+UffviBo0eP0qFDBwYP\nHvyr6/Iqxc5cG9+klrL9mBWvApNew7gLNIyP2kEb749oUDiDO2FtMRp3UGsqHCfIKvuB7PKtlDuO\nAdWj3qPMcUSHJtIqpDsRwR1/d5++Tquhc3MTnZubiImJITc3l7wKJyknKtmTZyMlr5I16eWsSS9H\nA1wQaaJPTAi9Y0K5oLnJb8CiOHN1SgjuuOMOvvzyS+68805CQ0M5ePAgd9xxx9mOTQghxEkHC6p4\nZesJQo1a/m9YG8wG/53u/v372bVrFxEREVx22WW/OG7A7VWszyzns/1FZJc5Aejc3MS1F2i5NGw3\nFus2NF43LmM0tsjLqTDGkF2xhcxjr1FUlQqATmMgxtKbWEsfYixJmPR175Y4U9EWI9EWI6MuaIZX\nKTJLHOw8bmNnrpUDBVUcKbLz0d4iLEE6kqND6B0TQnJMCM2k9eCM1anGfvzxR6ZNm+Z7fs899/D5\n559zzTXXnLXAhBBCVCusdPHs+hy8SvHg0Da0tvg3wR8/fpw1a9YQFBTE1VdfXWsLrsPtZXVaGZ8f\nKCLf5kargREdw7jhAg9d1WZMFbvRVHjx6JthbX4px3ShpJasIbt8C17lBjS0CkmgfbOhtLH0xaAz\nNdCr/4lWo6FTcxOdmpu4PiESm9NDSl4lO3Kt7My1sT6rnPVZ1a0HnZqbSG4dQlJrM11bBNcYeClq\n+tWEYNWqVTidTpYtW4bT6fRNd7vdrFixQhICIYQ4yxxuL898d4xSu4fb+rQkqXWIX3lhYSFfffUV\nSimuvPJKmjXzP1Og26v4Nq2Mj/YWUlzlxqjTcFVcODd1qiDG+S1B5fur5zO0pKLZYA55bBwp+IxS\nexYAFmNrOkUMo134IMyG5g3zousoxKhjUDsLg9pZUEqRVXqq9cDGgYJK0ortfLqviCCdhh6tzPRo\nZaZnKzOdIqR7oTa/mhDo9XpSU1NxOBwcPXrUN12r1XLrrbee9eCEEOJ85vEqXt50nLRiO5d0Dmd0\nfIRfeXFxMUuXLsVut3PJJZfQtu1P1xBQSrHxaAWL9xSSW+HEqNPwp+4WJrTLpoVtJfqSPABcQW0p\nDe/P3qpMjhxfhNNjRYOWNpa+XND8ElqGdG8UI/s1Gg0dIkx0iDAxrnskdreXH09Usvu4jV3HbezI\nrb4BmA1aukcF0y3KTHyUiS6RwZj00oLwqwnByJEjGTlyJFu3bqV///4NFZMQQpz3lFK8sjWPH45W\n0D0qmGn9WvntmEtLS1m6dClVVVUMHz7c72Rx+/IreXtnPkeK7Gg1MD5ew5/bpBJRuQNtSRUKLfbQ\nRIpCupJSvpuMnAV4lAujLpTuLcbQufnF51xrwJky6bX0jQ2l78kzOBZVutiXX8WPJyrZe6KS7bk2\ntp9MELQa6NAsiPgWwXRqbqJjRBDtmwVhPM+6Geo0hiAuLo5PPvkEq9Xqd9EFaSUQQoj6p5TirZ35\n/C+tjM7Ng3hkeBu/PvDy8nKWLl2KzWbjwgsvJDExEag+YdE7uwr44WgFGhRTu5RwQ/QhwpxH0FgV\nXm0ItogR5Js6sLfkW44efQmFwmxoQXzkFXSKuAi9tuHHBjSESLOBizoYuKhD9QDIokoXhwqrOFRo\n51BhFalFdtJLHL75tRpoGxZEu2ZG2oQF0SbcSJswIzFhxiabKNQpIXjppZcICQmhQ4cOjaLpSAgh\nGrMP9xby5cnDC2eOaEuI8acjCioqKli6dCkVFRUMGjSI5ORkqlxeluwr4vMDxQRpHNzdKZNrWx0i\n2FsMzupugarwgeQbmrOvcBlH8xYDivCgtnSLupq2Yf3Pu9P/RpoNDG5nYHC76gTB5VEcLXOQXmwn\nvcRORomDjBI7WWUOwP+aCpHBelqFGmgZaqBVqIEoc/VJmiLNepoH67EE6RrlvrJOCUF5eTlPPPHE\n2Y5FCCHOe0v3F/Hx3iKiQw08MbKt38l38vPz+eqrr7DZbPTr14++ffuyPrOcRTvzsVDIjE6HuDQy\nDQMulNJTZelDVfhAijUafsxfSnb5VkDRzNSehKhriLX09l1p73xn0P10DoRTvEpRaHOTU+4gp9xJ\nTpmTYxVO8q1ODhZWsb+gqtZ16bUQFqQn3KQjLEhHeJAeS5CWEKOOUKOOEGP142C9lmCD1ndv0ldf\nCMqgDcxFkeqUELRo0QK73Y7J1DSbkoQQItCUUny2v5h3dxcQGaznXxe3JdJs8JVnZmayYsUKXC4X\nF154IREduvHI6izCnKk83n4//cKPA1QfNhg+kKqwvpS7rewrWMrRso0oFBGmjiS0vIaY0ORG+Q+2\noWk1GlqebAnoHeNf5vYqCm0u8qwuiqvcFFWeundTUuWm/P/Ze/PwOo/60P8z825n1Tk6R7ssOXbs\n2DgJgZAEktCkCYQApeWGrfS2tJRuge6XEtrSQujTllKWAu19gAuF8gu3QKFlLVtym5A0JCEJJCGb\nEzdDim0AACAASURBVMeWZMnapaOzn3eZ+f3xHh1Jli3LjuzIzvvJM5l599FInvnOzHdpBEyUPA4s\n24ZYL4IwUqRtSCwjFBBsQ2AZAlNKLAmmFJhS8PFf7jvm+9bLugSC9vZ2brjhBvbs2bMinnakQxAR\nERHx9AmU5p/vn+Q/nyiQT5j81dUDdKeW+tqHH36YW2+9FSklV13zcu4tx7Du/y5/2fMYg/EiAG58\nO9XMZbjJ3VS8eR6Z+AJDhTvQKDLOAOd3vZa+9IWRILBBmFK0nCathRsoFuoBFTeg7CrKbliueIra\nYvLDvO4rGoHG9RWNQNHwNZ7SuIGm4ga4gcZXmkCv+ckT/5nWc1NnZyednavDa0ZEREREPD3cQPEP\nPxznhyMltmYc3n31FjqaKwNKKe666y7uv/9+YrEYW59/EdNz9/G2/F7a2l0UBrX0C6hmLydweql5\n8zw68Xn2z9+K0gFtTh/ndb6GLW0XR1sDzxC2IelMSjqT1rFvXidKawIVCgsbyboEgte//vW4rsvE\nxARbtmzB9/0VKwUREREREcdPuRHwt7eP8shUjfO64vzZlVtINRUIS6US3/3udxkfH2drt81ztsML\nM/+OJRVVnaCY/Rka2ReizTR1v8jjE19g39zNBNojZXdxbudrGMxcilxLENAatEYohVDNXDfLzfPo\nZllrUDq8rjVowhzduieMb6QRzRwNgsXzS+cgXBZHH21A0zA1Q7ZWXfZsxBHZOnDse9bJugSCJ598\nkg9+8INIKfnrv/5r3vGOd/DOd75z3ZG0IiIiIiJWMjRf5/13HOJQyeXywTR/dFlvy5ztqaee4pZb\nbmZLusSvXeazMxvqB0z57ajcFcjcC0Ba1P0i+8b/jfH5e7ADg53muWxPX0q3swOjphHlCWQQIAKF\nVAEiCJBKhQN/0MyfyUZYi/kFEs90HZ5lrEsguOmmm/jLv/xLPvaxj5HP5/m93/s9/uVf/oX3ve99\nJ7t+EREREWcUWmu+92SBT903iac01z0nx68+vxMpBJ7ncdedd8DMj/jNi6v0piWoFIcqz8VI7iGT\n6sQo+4jZAyi3hBUItvMc4DnhywOgATB5xG8rKdHNpBxzxbGWAi3CMotlIZrnBTSPWTyG5nnRypfO\nAQh0M1+UOvSyMstFkdb1pYOenm4mJiZX3Rqxkp4NfNe6BIJGo8GWLVtaxxdeeCFf/OIXN7AaERER\nEWc+VS/gL771CN9/fIq0Lbnh0j4u6Uti1hssjOxHzjzBde0Wdu5SUClEJdyaHQQoA+VZAAICqjSo\niDrSSROLd6EtG2WYKNNAGUYr17KZG7I1aJ8WxGIoe+P23SOOzboEAtM0KZfLLe3UQ4cOndRKRURE\nRJxpPDJV5dP3HKLNd/nDQZNX9jmky+OYDzUQQBdA8mzQ4CtFSRo4qRQqZlORdYZqP+FA9UcssIA2\nbXZ3voqz238WQ9ocv2FbRMRq1iUQXHfdddx4440UCgU+8pGP8NBDD/Hbv/3bJ7tuEREREac10vUI\nCkVGRubY6tX5wpbQJS4EUGqg8NFyDi0XqARlblvIMpZ6Lj+7Zwtpx2C4+jhPzH6dscL9gCbt9HBu\nxxvZmrkcQ0az54iNZV0CwUUXXcSWLVt46KGHUErxute9bsUWQkREREQECD/AKZdxSmWcUgnT9QDo\nN8E1oOjYpNN16sWf4FiHQJQYLtj8+8Qu6r0v5bUXd3GBEzBcuIMfjt7MQuMgAO2xbTyn41X0t120\nttXAGmit0aplWNBU8NcYhkAap9FWQsRJY02BYGxsjP7+fvbv3w/Ajh07AHBdl/3797N9+/aTX8OI\niIiIzYrWmPU6sYUSsWIRq1pr6b9VFNxZFjxcF+zZEvD8zGPEqj9FNwKkCfcdSvCNyQswBy/j9S/p\nRYoxDhT+leGFH+IGFQSSgbYXck7+ZeTjO4/oUEhrTb2mqVYUtaqiUVPU65pGTdGoa1xX43sazwvz\no1n5SQmGKbAsgWULEilJMimJJyXJlKQta+DEIj8GZzprCgQ33XQTf/qnf8qHPvShVdeEEPzTP/3T\nSatYRERExKZEa+xyhdhCkdhCEdMLVwE0ULBj3Dqv+eakz7jX4Ld3jPKm/sdJ6DmowVzN4O6RDN+Z\n283Z517CGy6OU6j/iPvGP0mhPgJAzMywp+PVnJ27moSVaw365ZJPpagolwLKJUW1HAoBSh29qoYJ\nliVwYoJUWmKYgkWDgEX5IgjA9zS+HwoNpQXFwnyw6l2JlKQ9Z9CeN8l1GrRlT88APhuF1ppwyYWl\nnNBXw6JvhpbfhcUyLN2nlx+vKCzzz3CYBHckga5v41wXC62P6hliBbVajXg8juu61Go1MpnMhlVi\nI4kUHo9NX19f1E7rJGqr9XHGt1NTCIgXFogtFDF8HwjN+OptafZqh88O1XlwcoEr2w/yur4hdsfG\nkELjBfDoZIy7RzM84O/iip+5hN7UQ0xV7mGq8hgahcCgL/08BtNXkvD3UF6AYiGguBBQWgjwvdVV\nsh1BIilJNGfy8YQkFhfEYhInLnFiAuMEtgKWrzpUy4pKOaAwFybPXRouYnFBd59FT79Fvss8oW+t\nRV9fH2Ojo1CvQb0a5rUqNGpQr6PdOjQa4C4mF7wGeF4z99G+B4Efngv8MPnNPAhABaBUs6yWjpen\nxX2W5eX1DZunhIH/vG/D3rUuHYIf/vCHfPGLX+RjH/sYMzMzvPvd7+b666/noosu2rCKRERERGwq\ntMaq1ojPF4gXFlpCQGCaVPI5FlJpvjPl81+PTDEoH+FVuSH+7sJRbBlO2Q/OWzx4KM4dU73o7rM5\n9wUuV9r3MFP9IjNVBYFNVl1ORl2CUT+L8rDkwZIClkXQE5BKS9LdBqk2SSod5sm0gWWdnNm5EIJ4\nQhBPSPLLPNZrramUFfMzATOTHpPjPsNPuQw/5WKY0LvFYnCbQ67z6CsHulGHhXkozsNCAV0sQLkI\npQUoF9HlIlRKUK0wWquiq+WNHXyFBMMA0wRphGXDWCpbVliWcimJxVyEOaEvBhZ1OZYvubSWXpYt\nwYjDymEh9K2w/HhZFhYPf4YjH28g6xIIvvrVr/Ke97wHCKW2v/u7v+MDH/hAJBBERESccRj1Bon5\nAvH5AqbrAhAYBpV8jmqmjUcaBvcNj6GfvJ/L2ob4nzsnsGQ4aE2VDR4aS3HvZIYxcwv5ARjceTdK\n3Uqp1Ee1tpU2/3pEZStuJY6LYLr5XdNS5LtMMtlwOb4tK0m1GRs+8z5RhBChQJI2GNhmo5RmbiZg\ncsxjfMxjbH+d2ccOkWOW3uQ8eTmHWZpFz8/C/EyY6kcOF7wCJwbxJGZHF549AIkUIhaHeAKcOMTi\nEIuBHQMnhnAcsB2wnHBAtxywTDDt8DjcNwHDRMhID2It1iUQKKXI5/Ot446ODtRaG1cRERERpxHC\n94nPL5CYn8euhoOWkoJqe4Zae5YhJTgw+hhy7FaemxjhxdkSZMNnxxZMHpuM8dBUin2qm1h3ja49\nT7FHucjqWRhP/SKyPgAq7G49wjEq12nQnjPJ5Ayy7QaJlNz0e/JaBTA7DROjMHmI3NQh2ifH2T11\nCD03HcY+WH7/YiGRgnwXZHOItnbItkNbO7RlEekMpNog3QbJNoQVmlP2nOnbUJuQdQkEbW1t3Hzz\nzVx99dUIIbjtttvIZrMnu24RERERJw+liBVLxOcLxIolhNZooJ5OUc0kGW1MUpy/l/b5A+xJzHFB\nTEMMXF+wd8rhyWmH+2bzTBtpMhlFV5/D8/weZHUrYvi6pe8IaGuTZPMm7XmDc3b3UqvPIuTmHfy1\n1jA7BaND6NEhGD+IHj8IE2PguasfyLQjtp2DyHejcl3Mk2e0nGU+aKcey5HtSbB9V4zuPnPTCz3P\nZtYlEPzWb/0WH/3oR/nnf/5nhBBs376d3//93z/ZdYuIiIjYWLTGqlZJzIV6ATIItek9x6TsVJmq\nP4FTHaJPFdkjgFioND5etHhqxuaR2Tb21zqJxdO0O3n6M70M+NkwfkDTXWAsIWjPmWTzBtmcSbbd\nwFy235/riHHo0OYZFLXvwaGD6JGnYOQp9MEDMDYcKvAtx7ahdwuidwB6tkB3H6K7D7p6EbGlMEQS\n6AQ6tGZ60mf/3gbTEz6z0xVSacmO58To32ohN7FAtBytNUEAga+buoc61D0MNIEK81D/MDTrVMFS\nedEQQWndKi/5gdArDRFahgpL5qGH561gkRp0c/2l7zo2jHUJBH19fbz//e+nXC5jGAbxeHzjahAR\nERFxkjmSXoAvPIqMYdp7iVmzpBWkbfCCUCHwwJzDvoUc47UuTKOTrDmIbWTZnWq+1Ac7psl2mmRz\nBpn2MI/FN+8+tVYBjI+ih56EA0+gh/bB2FCoeb+IlNDdjzjvBdC/FbHlLOgbhHzXce3BCyHo6rHo\n6rEoLQQ8tbfB6JDLAz+qsvcRyY7dDgPb7JOuI6GVptHQuA2N21C4brPsanw39NGw6KehZX7ph6aY\nga/XNOs801hTIPj617/Oq1/9aj7zmc8c8fpb3vKWk1KpiIiIiKeLbNRIzIzizJdw/HBfWuOjzFG0\neQCMCVJCM1MxeHw6zkgxw0Slk1JjgLjRi222I4RBXzx8MpGCTLsVKv21G2Sym3vwB0It/v2Po/fv\nRe9/AoaehEZ96QbThC3bEINnowe3w8DZqN5BtLSWWd1plAZd1Gjth+das99lM+HlpvWHz341dHSZ\npDOSyUMec9MBP72/xmMP1ujsMcl1muGKweIMGJibmmOh0Fhpeq/1imOtwXN1M6nQ4tBdNsD7msBn\n/YjlBgYC2wm9OC4aFYTGBqJldCCax0cyNBDNqI+LOySLKyKHGxqsMDhonlg8v6xaHM3oYCNZUyBI\nJMJloHQ6ffJqEBEREfF08ct4hf24M0Ok6wE52rEJFaE1BsoYQ5lDTNcnOTRnMFnOMFt9PoXaIIgu\nLDODEBJDaLpzAem0STJt4MQCLMdFGnU8v4HrupQbLnMjLu4+F8/zViTf91spCAKCIEAptSIJIVju\n/kVKiWEYmKbZSo7jEIvFiMfjxGIxkskkmUyGtrY22traMM2lrlvrcNCr13zc0XHcg6O4E9O4swX8\neoBnJvDNLL59Jf7z/wdBvI3ASRKYcXzMpvm9JpgEJiA0e1yHNcBG/Np8GB/1GR890qh9auqwgsUl\n/6B5wPJ8c3L1tRv3rjUFgltvvZVrrrmGRqPBr/zKr2zcVyMiIiJOBK0JqpNUZvZSLwwRD6botjVp\n2YP0tyDUtvA2FDU1xUR9micXGkxUOik2XoyUHRgyhtR1HDVPl5rHrj+KXZvCrE1iVqfAq6GCAI3A\nE9BAoIXAF5JAGnhS4gsDzzCpGyZ1w6JhWNRNi6ppY1j2isFdSrki2baN6y4p5imlWgKE53lUq9Vl\n1wWmTGAaSQwjiSkTGEaCmN2GYyYxsVHaRonFrrwN2AMxoP/ozWgAJqHjItsGacimOb5ozY6XzPCX\nz4iXZsvLZ8KrTfDFilnv4Wb4i4qFga+YnvSZnvAJgtAFQHveIJEwENjMzVWpVdURZ/mmCU5cEouF\nnhhtR2I7zdwWGObpoaOwFuv0G7hhrCkQLCws8B//8R/ceeedR7QqeNWrXnXSKhYREfEsRwc0CsMU\np/eiygdpY4buRIWYASLoRJi9CC5D+G3h7Voz3ajw5ILk8UInvtdFqjZJqjpBf3WSnbWfkqxOkqhO\nYnslTspwIQSiLY3IZiCbQeY7EL3diO5+RG8vxBJ0dvUyNTOPFiYag7prUakaVCtQKSuqlYBqM6/X\nNBylpkL5mG4R253EaSwgVA0cAzvfRtvWAeLdHViOxLIEphXGKTBNgTTYFJr+WmtqFYXlSJyYZHLc\no17VzE4FzBIAoVCUTEnSmdAhU7ptyUGTeZIcMz2bWVMg+J3f+R3uvPNOGo0GIyMjp6pOERERzzK0\n8qjO7KMw9QRGfZScMUd3ooZl6HA8TLWB34tf70PoLozmjNhTmoNll4mFaeZnn4L6JE5QYDdFbKuB\n4UismMTuMrANiW0ZxI00lplFWDJMpgBDhGaAksX4xM3Nb8J9awUECu1ptKfQnkK5Cl0PULUAVQ9Q\nVZ+g7KNKNYKDRRg+iAI0grqTo5roopbr45F8H9V0DxW7k1KQwz+i1pomIcvkKRCvzuDMTxArThJr\nzBGvz+GoElZPnlL3VqayeQ4Im+GZOdyGC4dATtxHX18fO3bsYOfOnZtCEVzrME7C7LTP3LTP7LRP\no740AxYC0hmJaQrKJYXnaoSA9g6D7ec4ZNrXpQMf8TRYs4UfffRR3vrWt9LV1cVrX/vaU1WniIiI\nM5jALVOY3Et5dh+xxjgd9gJdyTqGBOVoSrai6qc4VN1GTPeSE93ERQwIO6w5McuQPMCQOMCoOUKQ\nDyAPrAq+urx7C5opDArgiBgJs62ZMmTtbrJ2D1m7B9tIhKPTsuVasSgd6OYQrxUQ+rYXKAJfUa1J\nKhVJuWpSqRiUS5JyxaTiJlAYq9rBqNVJ1CdIiQKpWJmUsUC8eIjY+DD22EGkWgowJFMmdn8Ce1cC\nqz+O1d2DMCSaKXaaDV5kteMbHcw3Yhyc8dg7UmTfwYOMjo5y++23s3XrVnbv3s22bdtW6B+cTLTW\nlEuKmUmfmclQAFgeC8GJCXq3WLTnDbJ5k0y7gdlc5ldKUy0mufeuCUaHPEaHPPKdBtvOcejpsza1\nD4fTmTX/Mu68805e9rKXcffdd3Pttas1F1Kp1BGeioiIiAhN3Crzo8xNPoEqDtPGLJ2JMul4A6ED\njLjPguPzhHJ4qtZJm+6mQ3TRrXvI4zRVr6FMicfFfkbFCOMcxNM1HNfE8QzOctNYrsZ0BWYDZKBD\n07ogQPsBWvl4eHjSx7fBtwSNuKCWDiima8xbU6vqnTBztMe3053cQ3dqD2m7DzTU682APxVFbTHw\nT3N5P1zaX41lCdpyMgwnnJLEnYCe+gTBfbdgH3gIMTu12tGPYcDWsxE79iC2nY08axDZFoegjB+U\nUUEZzy9h+AUMbx7pF7Br+7GBBNCfgRedD+p8g1KQ5uCs4MD0wzx8117uuC3JOc85n+c+97m0tbVt\n+O+8UVdMT/hMT3hMT65cAYgnBD19NrlOg3ynuaZnRikF5+zJksxUmJrwOfDEoi+DKomkZOvZNgPb\n7Cgk8wazZrTDT33qU9xyyy1HffhLX/rSSanU0yFydXlszvjIdBtI1FbHJvDqiKDIgb0/hvIYSTFL\nPLaAGa9RkR4LOqCofapKIlQbGfJ06i46dCeduos4K5ezS5SoUsElNDmLESNFmjjxpYAvx4nWGl8p\nVOCjGhX84jze3AS1mYMUqqPMOXXmujpYyOSppDrxZR7ptiO8HNLrRHgZ0Ktn+RAOdImUEUYebA78\nCScgUZvGmh6BQ8PoQyMwNgJT481VhiaGAV19oX/+chGmJ8Lzlo249CrES34e0Td47B9QeRj+HKY7\njeFOY3pTGO4UZmMSwdJKg9IwWTIZLdjUrT5ygxfRMXAeQh75ZzvmZ5VmfiZgasJjatynWFj6lu0I\nOrpNOrpMOrpNkqnj+8bh//ZKCwEHnmxwcMhFBeEiTnefxeB2m64e81m7atB3qsMfv+c97+G9733v\nhn30ZBJ13scmGuTWT9RW4Uy/WppmdmqE6vRB8KeQxjymU8JwavimS5mAkgrwtIXUKdrIktEZ2sjQ\nrnPkdI4kq1cUPTw0GqP5X6ChHkjqgYEbSBpK4AYSV0k8JfC1IGjmSosVBmECkEJjSo0lNKZU2FJj\nS4UQGq3D5+qBQdk3qHiLuUk1OPpgpY0FlD2HtueQdpFsJktvbpCeeAeJ2gzG/CR6ZgpmJtCT4zA5\nBnPTq6P0JVLQP0hq9/lUcl2Iwe3QO9jy3Q+gC3Poe+9A/9e3YGYyPLnnechrX4PY87wT+OUFGO40\nVuMQZuMQRn0Usz6KIZYG7rpvUDX7sHJ78ONn4Tn9IK2jvrJeU0yNhwLA9KTXCs0sJeQ6TDp7wtSW\nPXrUw/VwtH97rqsYG/YY2d+gWAiFq1hc0Dtg0z9gkc0/ve+ebpxygQBg3759HDhwgKuuuor9+/dz\nzjnnbFgljoZSik9/+tMMDw9jWRbXX389PT09az7zbO+810M0yK2fM7WttPIpFWcpzkxRWZimXp3C\nD2bQsoQ0ahh2A2E20KYLUqKa5m1oB5sECZ0gToKUTpEi3cxTmKweSDQapTWBCgfjamBQdC0WAhNX\n2vimhbIMtGUiLBPbkVh2qBlvmjRzscwkLpwdqgDqDUWjrmnUw7xeC/BqLn6jgfJclNcA5WNIH0P4\nmNJHigApQiFBigBbKhxDkTACHBHgaA9L1THcOqI0h5oco7ZwiCouXqCwigGxYoDpHaVxs7nQ0193\nH/RsQfQPQt/W0N+/EOv6m9IqgAfvRd3yDXji4fDkBZcg3/AWRNfTHAB0gNEYpzb1CPWZR8kZs+SS\nSwKCFiaeM4AX34Yb34ZrDzA/bzA5vnoVIJGUdPWadPVa5LvMlg7ARnCsdtJaszAfMLLf5dBBr6Wf\nEE8I+gZtevot2nPGGb9ycMoFgttuu41vfOMbeJ7HX//1X/P2t7+dN77xjbz0pS/dsIociXvuuYf7\n7ruP3/3d3+WJJ57ga1/7GjfccMOaz5yJnfdGc6YOcieDU9FWWin8wMNtNPDdBo16mUajRqNWptEo\n47oVAq9G4Hn4qo7QPkIHCOk3BzWFEArD0BgSpFBhmHcpkFIjRej8RgqJFAKBgRAGQltITCQmlraw\ncXBwsLWNjUMMB4cYkrX3abXWBAR4CtzAoB6Y1IVFzYhRt2M0nBhmTGCbCscKsIwAgYf2fZTvge+h\nfB/tN9DKRwceOvBAe6B80B5Cewh8BB5SeBjCx5IupuFhSRfLcDFlWD4Vk0PlK3w3oOEHNBRgZbFT\n26BtAB3vJDAzKDOLMpKh0f4yjvdvSg/vQ335s7D3p2CaiGtejXjlG8KQwBvA3Nwcjz7wQ9zZR9na\n3mB7R0BXstFqR6UlM5UexkuDTFYG8OJbyfUk6e61SKZPXoTG42knFYRxEw6NuEyMeS1PzJYt6OoJ\nBZbOHvOM1Dk45QLBO9/5Tt7znvdw44038vd///fMzMzwt3/7t3z4wx/esIocic997nPs2LGDyy+/\nHAjNID/5yU+u+cyBb1x/UusUEbE+TrSTFGs/fcTOd+1zKzvs5bvwTdeqR7hXNL8V6vXp5rVmjm5W\nQyPQSKERQjfPhwKKFBpBmIfHwUkZqH1fEngS5YFyVRiIoOEhGi64Xmgm6Cu0r6GZa6Uh0GhhhHGI\nDQtsB5xmsm20ZROYNlqaSAmOBYm4RtoghE+Ah69rSKOKucYYo4VJYGYJrByB2U5g5ch072S6JAis\n/JpL8yveozX8+Ieof/tMuB2RySF/7fcQ51+0Qe2oGRma4yc/+TGHxvfimD7b8xbndKc4K7dALj6B\nbP7+NRLf6cONb8OLb8OLnYU2Nt6s8USF8SDQTE/4TB7ymBr3Vih8ptok+c7QVXK+0ySeOP0FhI0U\nCNZlfyKlbLkxBujo6MAwTkwJ5Xio1WorviulJAiCNb/dm34G3F1GRGxy1pL6W9e0WHVvyzd9U2jQ\nWrTKEO7jg0RpiUKgtURrC6UNFBKlBUpLfG0QaNlKnjLwtNHMJQ1l0FDh6kJNG9SVQSUwKAcmJWVQ\nauaVwKSqLGqBSV2ZWAJShiZlaNImtFmCjC3JpiTZmEE2bpJPOnSkYnRmEmRTcax4HBFPII7T/K5R\ncSnsH0dOTZGuF0iIcP96ou7yE/0wC8n7SFoNMqQZiO2hO96GzTxmYwaz+kTrPWr2O02nyoCdQ8S7\nIdGDiPdAvDvMY50IeVj9+l+PuubnKf375yh++XOoj/0V6Tf8Oplf+R2EcXw/i+cppiZqTIxVGRup\nMDleRSkDm4sZ7NpDQz/KY1OP8+jkAj09PVz70l9kV5+BXtgLC49jlQ5gNUahcAcgIDmAyOxqpp0I\ne7UjuxPhRAe7gYEw11ozN9Ng5EC59XMOP+Uy/FRo2ZFImnR0xejoitHZHSffGSOVfvaGaF7XX1Eq\nlWJoaKjVSHfccccpMTmMx+PUaksDvNb6mILI3K73nexqnfZEWwbr53jaavli2/GUw0AwK88vP7f8\neHlSSq0qL88PT4t+9Rd97C9Py33wL6ZF//yu67Zy13XX7U41Fo8TjyeIJ5MkkmkSqRTxZJp4MkU8\n1YZhO02BQSMCjaE0jtLIQGMrTSxQpHxNLlC4gabuK+q+ouaFedULU9kNKLiKsWpA0Kpa008AHst9\n4ksB7TGTjqRJR8KiM2nRkTDpSll0Jy26UzZxa41ZY96CfD911UusVMaenqNLl3iFuJC6fy63NO7j\nx7F7uL96G3J6G/bk68ja28i1+3S1F2lPLtCX92ksDGN4MxjeLMbCY7Dw2EpBDIEys/hWB4GdJ7Dy\nzVWGHOrKlyHP3oP6xPsp/dtnKT14H/K3/wTR1n7EKmulKZcVxUJAYTZgbsZnYT5YofOYaTfo7A6t\nAdo7MphmP4XCxfzoRz9i7969fO7zX6K7u5vLLruMgYHLocPFqo9g1w5g1Q5gVQ9CZQR96GYAfCuP\nFzsLL7YVLz5IYHWu2jo5FhvZT3Vvge4tFkq1sTAfhI6RZnwW5gJGDpQZOVBu3WuYkEoveURMpiTx\npCSRlDgxsemEhVO+ZTA2NsaHP/xhJiYmSKVSWJbFDTfcwODgOsxhngZ33303999/f0uH4Ctf+Qp/\n/ud/vuYz0UB3bCKBYP1EbbUSrTWe59FoNGg0GtTrder1Oo7jMDExQa1Wo1KpUKlUqFarVCoVPO/I\n2neO45DNZslms+RyOfL5PB0dHaTT6RPqdLXW1HxFsR6w0AgoNQIKdZ9CLWCu7jNfC9Ns1WO26i8T\nHlbS5hh0pyx60zZ96TAPyzZpZ/WERPo+sbkCybFRLGFQoMCt+v8xZD8FWmLNXIs5eS1imXMiksyy\nFAAAIABJREFUJyZabnjT6YBMrEDaniMh53D0bCgoeDMYQXnV9wCUkSSQbQSj0wQHJwlcC//iV1DN\n76JUS1KsJSmWTEoLoSAQLOkBIiRk2w1yHSbtHaFPANs5+mA9NzfH3Xffzb59+wDYsmULl156Kb29\nvcsq5GE1xrBqQ1j1A1j1YaRqLF2WMbzYIF5sAN8ZwIttQRvJo34TTt2/vUZdsTAfsDAfUCwElIsB\n5ZI6YthjKSGekDhxQSwuicXCsrMYR8EOIyRadugq+lQoND4jVgZKKQ4dOoRSir6+vlPi7WrRymBk\nZAStNW9729vo718jYgeRQLAeokFu/URttT7WaqdGo0GxWKRUKlEqlSgWixQKBQqFAgsLC6jDel7b\ntsnn83R3d7dSJpPZ0JlZoDSFus9M1Wem4jFZ9phczMseUxUX/wgDQptj0Je26Wuz6V+WelM2lgRr\neorkTx8k3t7FiHGQ7xvfoSxKZK1tbDN/C2+hA8+1mJmqUKseueuVBthNK4u47ZKJF0jZBRLGPAmj\nQMIoEDcKxI2FFeaDh+MFFg0/jqfjKBkHM4mMJbBicTBjaGmjZQwtLLS0wlxYIMxQv0IYrRwE0zNz\n3HvffYyMjAIwMDjIxRdfTGdnZ/hBvfi/0KNjaO54ELN+EKsxhunPr/wdGBl8p5vA6iSw8/hWB1rG\nWPQE2ZHPMTMzTXO9pLl/pZrvX31OLMZbZjEOs1727LK6Lbu+ZLi6LHZzs+x5CreuWqGUw/DKYVkF\nS/eu+Kts6dk0D6UOlXuNlYGiWuGUD8sXQybL5cGiWBkkSqwImyzouOR3jvo3cLysSyBQSvHNb36T\nBx54AN/3ueCCC7juuutOiR7B8RJ13scmGuTWT9RW6+NE20kpRbFYZG5ujtnZWWZmZpiZmaFQKKzY\nmnAch97eXvr6+ujv76erq+uk9j+B0sxUPcZLHuMll0Mll/GSy1jRZaLsoQ7rNaWA7pRFf7opJBRG\nOXvsSbZt38JP2+5gr/EoJhYXdv4Sl13wq4yPj+P7mnIxaHk+rFUVtaqmVg0HHs8NB5+j99CadKxG\nW6JEj/sIW0e/jZkQuM+5ACuXwBYVTFFFBlWkdo/2kojTHPOKz23Yu9YlEHz+859neHiYa665Bq01\nt9xyC/39/bz5zW/esIpsFFHnfWyiQW79RG21Pja6nTzPY3p6msnJSSYnJ5mYmKBYLLaum6ZJb28v\nAwMDbN26lY6OjlO2t+srzUQ5FA4OT8XG6hl7XHt0xVxE7CDJ2Aw7k21c3H8V3fks+YSJXKPeWmuC\nINScX2ErIsA0Vy5J6ycfRX3sveA2EL/xv5CXXLHsRT4yqCKCGkI3kKqOUC5C1REqNOtEe82yDwQI\nHYSxGnTA4TNzrTW1Wo3C/Bz1RgMBJJJJstl2HMdZmjcLScsHNaCFBJqOJLQA7SJVrVm3CjKoHFF4\nUdJBySTKSKHMJEom0UYSZSTR0mYpxnKo5Lr0rZXxl/WiCW3r3iUFWZRCKt3MCX9WpRCKMHaFDlch\nhKLZLs0FgeZ5tAbdtMrRtM4JLVhcSQgCCPRS7iuJUhA0HW4pzbIkmmkxxpYINWO0aH4qvHbhL29c\n1OF1CQTveMc7eN/73tfaJvA8j3e84x185CMf2bCKbBRR531sokFu/URttT5ORTtVKhXGxsZaaW5u\nrnUtkUgwODjI1q1bOeuss3Ac56TW5WiUGkFTOGiE+UKd8ZFxxonjGvaq+00JXUmLjqRFZ8Kis6ns\nmIubtMdNcgmTNsdYU2hYjn7qcdRH3wv1GuLX/xB56VUb/SOu/J7WDA8Pc/fddzM1FcaF2LZtGxdf\nfPExncgdDRHUMN1J8vE65em9mO5UqFPhLxzxfl/E8MwcvtFGYLThyzY8mUbJFFrF0MqGwEL4GuH7\nCD8AP0AGPtpXiCBAKLUY2HL5xkL4M7Z+1pXn4QjHetkzQqBagsjSWr9mMV8qt4x7Ret/yxpkeV3E\nqsvPf+UVbBTrUgRQSq3QGbAsa1NuF0RERJy5JJNJzjnnnJaX1Gq1ysjISCs9/vjjPP7440gp6evr\nY/v27Wzbto1MJnPK6ph2DHZ3xtnduWSXr9UWgm9+kdmbv8NYto8HXvEC9tVK1BsdyMZZzNThodLR\n3B6CIaAtFgoGaccIc9sgaUsSliRhGcQtScwU2LEt2G95L+aXP439b1/C9CzMCy4O97EFRxQstAal\ndXNWqsMZrNL4ShNoTaDCVZEjJS/Q+KoN+/xriM3NMzI6xr7JCt/71gMk023k8p3Ekkn85jta7229\nPzyvln1nsQ4IB9c/F6X2NM9pVPN6axZ9TH8fbjOthdFMzwSHix3Hz72v3JiawDpXCP7xH/+RdDrN\ny1/+cgC++93vUiwW+YM/+IONq8kGEc3mjk00610/UVutj2e6nbTWzMzMMDQ0xP79+5mcnGxd6+jo\nYMeOHezYsYNcLveM1VH96Hb0Zz4ClsWTv/tyHgpuRSK5xn8524JzOWgnGEpmGVcGc7Ulq4i5WsBC\n3afkBlTcI2g6nsZIAYYQGDL0rBmWBYYA2zJBBUghkICJxtAKQy/Lm5sAQoRD+nJlPClDD56CACF8\nBD5SeEhcBB4C1Zy0NzcShG454mptJgh92MbCopOuxfJy514SLURYXrYlIZbP+ldsVYRP6WXXl7a9\nVjoTW1VedupP3vDGE/8FHMa6BIJqtcpnP/tZHnjgAZRSPO95z+PXf/3XN2X446jzPjbPdOd9OhG1\n1frYbO1UqVQ4cOAA+/fvZ2RkpGXJkMvl2LFjBzt37iSfzx/jLRuPfuBu1CfeD5bN5B/+Gnd7X8dT\nVS43Xs4l9ecC0EgmKHd30kinV3mmDJSm5AYUGwE1b9EXQ1iueaG/Brfpt8GdmsR/8D4CJ4Z63qVo\n215lSqdZHERFa3CWAky5NDAbUmBJgSkFptHMlyVLhgO6Zcil+6SgWJjjiccf4+DwAbQKSDgOe3bv\n4rxzn0N7pq25arF6hi8ChVWr0WGY1CYmsKs1jMNMV7UQ+I6DF3PwYw6+4xA4Nr5tow3jKB49l79A\nNfUnGghVRzZzoRoI7Tb1K7ywrD1o6lYI3dSxaLoPRwfN4yCMKqmXdC9AhboHLOph6Ob55dYNT59T\nplTo+z6f+MQnuOSSS7jkkksAeN/73kdbWxvXX3/9ptw22Eyd0mZls3Xem5mordbHZm6nRqPBgQMH\n2LdvH8PDwwRNo/xcLsfOnTvZuXPnKV05yO5/lNn3/zk4cUp/9Af8wPtX6n6B8zM/x+WNFxIvhb4H\nvJhDuauTWjYT2qydAOr7X0N/+TOwdQfyhvch7FOvW1EqlXjooYd4+OGHaTRC3wRbt27lvPPO46yz\nzsLSGrtcwa5UsMsVrFp9xZw4ME28RBwvHsOLh3lg28ce9Dczh5lQnrB5JNCz9dwNq5Zx44033ni0\ni1/4wheYn5/n2muvJRaLAXDuuedyzz33MDY2xnnnnbdhFdkoSqXSM12FTU86nY7aaZ1EbbU+NnM7\nmaZJR0cH55xzDs973vPo6OhAa83k5CQHDx7koYceYt++fS1X6fH4xvvlX07u3AsoxVNw7+04P36A\nLVe8lUN6P6PVB1hoM8n0X45UGqdcIb5QJDFXADS+4xy/YLB9F8xOw8P3w/QEXHjZKfe05zgOg4OD\nXHDBBbS3t6MaDVLVGvlyla65ebrnF4gXFrCrNWQQ4CYT1LMZ7F07mchlKfd0U8u146ZT+LEY2jRP\nb2EAmnsOspmavh6ECdIM41tIC6TdTA66lWJoYzHF0UacdDq9YdVaUyD43Oc+x7ve9S6SySWPUvF4\nnOc///ncdNNNXHvttRtWkY1is3ZKm4nN3HlvNqK2Wh+nSzsZhkE+n28JB/l8/qjCQSwWIx6Pb/gA\nmk6nKWfykOuCe2/HeuBBBq/5Eyb8fYyXH6CkC+QGrqSeD1ct7EqVeLFEanoWs9EgsCyUtb5BUQgB\n570A/fhD8PCPwTAR52zcjHI9iEDhlMuk5wts93wuSWe4oKubgbY2LCl5aqHA/ZPj/HBmigOJGKq/\nD9ndRVtfH8Vq9fQf/E8yGykQrGllYJomtr3aVCaRSGBZ64vSFREREbEZsW2bXbt2sWvXrhXbCkND\nQ9xzzz3cc889ZDIZduzYwfbt2+np6dlQ4UBe/hJUvYr+4qdwPvG/uertf8EdEx9jaOG/UdrnhVve\nSrG/j1J3N4m5eZKzsyTmCyTmC7jxGLVcO7VsBnWMvlhYFvJtf4b6m7ejv/5/0bvOQ+zYs2E/xyqU\nwq7WsMtlnFIFu1ptehEM9/7dVJJGKkkjnaLuOEwfPMjYE3WeemoM/9Ah7v7Rj0in05x33nl0dXXR\n399/SjzjRhxDIJBSUqvVVi2h1Wo1/MWA0xERERGnOY7jsHv3bnbv3k2j0WB4eLilc3D//fdz//33\nE4/HOeuss9i2bRsDAwMb4utAXP0qGBtG3/F97M9/hivf8k5uH/kgI8W7kYcsLun7TTANKl0dVDrz\nOOUyiZk5YgtF7LFx2sbGcVNJatkM9WwGdZSBU7S1I3/zT1Af+DPUZz6CfPdHEbEN2hpZFAAqFZxS\nBatSQS4KAIAXj9NIp3DTSdxkEr1s28Mg9Fuwbds2PM/jwIEDHDhwgKGhIe666y4gnJj29fWxZcsW\nBgYG6OzsRJ6gTkXE2qypVPitb32LJ598kre+9a0tHYJ6vc7HP/5x+vv7ecMb3nDKKrpeNqti02Zi\nMyuAbTaitlofZ2o7+b7PyMgI+/fvZ2hoiGq1CoSTpd7eXgYHB9myZQvd3d3rHqQObyvte6gP/QXs\newxx3Zvwr/05fjD8fuZq+zm7/Wpe0PvmVSsT0vOIFYrECwWcSrV13ovFaKRTNFJJ3FQy1LhfhvrK\nZ9Hf+yriZ1+B/OW3Hn+DaI3RcLFqNexKFbtaDZUAlw0jXsyhkUq1VgL0CczugyDAdV3uvfdehoeH\nmZ9fioNg2zY9PT309PS0Yl0kEonj/1nOEE5ZcCOlFJ/61Ke48847GRgYQCnF2NgYL37xi/nN3/zN\nTSmlnYmd0kZzpnbeJ4OordbHs6GdtNZMTU21ZrCLnvkgHKT6+/vp6+ujt7eXrq6uoy5zH6mtdHEe\n9Tdvh/lZ5O++C++8c7l16H0U6sPszF3L83t++ajbFdJ1iRcWiBVL2JVly/OA7zTN8mKx0ERPgvuh\nd6HHDyL/8EbEeRce/kMilMLwPKTnY3gehudh1huY9TpWvbFi8NeAl4jjJhK4TSHkaKsUx8vydlr0\nUnnw4EHGxsYoFAor7k2n03R0dLQiZubzebLZ7Ka0hNtoTnm0w8V/BEKIZ9y5x7E40zuljeDZ0Hlv\nFFFbrY9nYzvVajVGR0cZHR1lZGSEhYUl17pSSjo7O+np6aGjo4POzk5yuVxr+ftIbaWHn0L9/TtB\nGMg//wCNriy3Dv0txcYYuztexQXdv3jsSimFXanilMstEz55mPMBd/oQk1/5OEY8Rdcv/xEylljy\n07/GcKCFaNr9x0ITwEQCNxE/YZPIY7HW31StVmvFuJicnGRqaoparbbiHiEE6XSaTCZDNpslk8mQ\nTqdJpVKk02mSyeQpt7g4GTwj4Y9PF55tndKJ8GzsvE+UqK3WR9ROoYXT+Pg4ExMTjI+PMz09vSK0\ns5SS9vZ2+vr6iMVitLe3097eTiaTwXEchBCoe+9A/58PwJazkH/+IepUuHXobym541zQ/UZ2d/zc\n8VVKa6TvY9YbWPU6husi/YDa7d+mevt/EnvOhWRf+cuhtzwh0EKgpWxaMlgElkVgmfgx55Tb/h/v\n31S1Wm1FzJydnW2F2F7c5jkcKSWJRGJVisViK5LjONi23UqbTYiIBII1eLZ3Sush6rzXT9RW6yNq\np9X4vt8K5zw9Pc309DSzs7N43uq4BZZlkU6nwxns+DDxg/tJ7nwOicuvRtoeP5n5Z1wxzyWDb+bs\n/M887UFJBwHq/e+EA08g3/pniAsvfVrvg3CLOQiCVjr8ePm5I+WHl1OpFIVCoXWstV5V1lq3yot1\nWDy3mIIgwPM8PM/D9318319Vr+NFCLEqLZ5ffn35/UcqH+va0e5bzrve9a7jrv/RiGw5IiIiIk4C\npmm2lN8W0VqTSqV4/PHHmZ+fZ35+nmKxSKlUolQqLUVw7N4OxQZ85zvNJ7cCW/k2DyDlgzhODMuy\nsCwL0zRbSUqJYRgYhoGU8ogDVmuwPP8KtGehv/c99GQBLURrQF0+MB8+eB9tsD+d55bHK2AttuGZ\nRiQQRERERJwihBBkMhkGBgYYGBhYdb3RaFAul6nsf5Lqlz9LNdlG/cqfo64UxeoMkwtPoDwDSyRQ\ngaJSqeB53gnNcgFo7w3zJ59c87ZFAWO5sGHbdut4eVp+31rnpZStc8vzxdTZ2cn8/PyKc0KIVfnh\n5WOlxd/D4bP4p4NSasXqw/JViMVrRxKwlq90LApVy1c9Dl/tWC6InAyhJBIIIiIiIjYJjuPgOA75\nfB41NYL+2ufhsTzy+ncihGCs9GPuHPkoljHCS7b9BW1OP8BRl+IPHzy01isHQreO/vC7kbUqxjv+\nBiPf1RpgD19lONWcTttQiwLSkRz5nU5sPrvBiIiIiAjEK14LO/fAj3+IvvMWAPrTF3JR32/gBmV+\nMPxBal5ofielxLIsHMchkUiQSqVa2vXZbJb29nZyuRz5fJ5cLtdSaGzv7iX76l8iXSuR/M8vtWI5\nOI7T2oLYbEp0ESePSCCIiIiI2IQIaSB/439BPIn+4qfRc9MAbG+/gvO6XkvVm+GOkQ/hBfWn950X\n/Sxs34W+/84w5kHEs5ZIIIiIiIjYpIh8F+INb4FGDfWvn2xtAezpeDXbsz/LfH2Iu0b/EaVPUIcA\nEFIi3/jbAKgvfgp9ovoIEac9kUAQERERsYkRl78Udp0PD/4Ifhz69xdC8IK+N9Obei7j5Ye4/9C/\nPC0FM7FtZ/idsWH07d/dqKpHnGZEAkFERETEJkYIgfyVt4Fpob7wf9DVMgBSGFy65fdpj53F/sJt\nPDrz9af3nde8CeIJ9Nf+b+sbEc8uIoEgIiIiYpMjevoRr/pFWJhD/8f/1zpvGTF+ZvDtJK0OHp76\ndw4U/vvEv9HWjnjF66BaRt/8jY2odsRpRiQQRERERJwGiGuvg75B9A++i37y0db5uJXliq1/gm0k\nuXfs00yUHz7xb1z9Kkhn0Ld8HV0ubkS1I04jIoEgIiIi4jRAmBbyV38PhEDd9L/Ry1wgtzn9vHjg\njxFCcOfBj1Koj5zYN5wY4pWvg3oN/b2vblTVI04TIoEgIiIi4jRBnL0bceUrYPwg+vsrB+zO5C5e\n2P87+KrO7cMfpOrNndg3rnwFZPPo//omemF+I6odcZoQCQQRERERpxHiujdBWxb97S+3fBMsMph5\nERd0v5GaP8/twx/ADY4c6W/N91s24ufeAK6L/s5XNqraEacBkUAQERERcRohEknEa34N3Ab6K/+y\n6vqu/CvZkXspC41R7hz5CIFaHV3xmN948Ush34X+wXdWCR0RZy6RQBARERFxmiEuvQq2nYO+9w70\n3pVKhEIInt/zJvrTFzFVfYx7xj6B0ur43m9aiJ//JfB99H9+eSOrHrGJiQSCiIiIiNMMISXyl5re\nBb/wyVXeBaWQXLrlrXQmdnGw+CN+MnHTcTsuEi/6WejuR995M3p6YqOqHrGJiQSCiIiIiNMQse0c\nxOUvOap3QUPavHjwj8k4A+ybu4XHZo7Pt4AwDMTPvxGCAP3taJXg2UAkEEREREScpojX/OqSd8HS\nar8BtpHkyq3vIGF18NOpr7B//rbje//FL4auPvRdt6LnZzeo1hGblUggiIiIiDhNEW3t4V5/tYz+\n2uePeE/caufKrTdgGynuO/QZDi7cs/73SwPx8tdA4KNveXqukSM2P5FAEBEREXEaI676OegdQN/x\nffTogSPe0+b0csXWd2BIh7tGP86h0gPrf/+LroJsDv2D76ErpY2qdsQmJBIIIiIiIk5jhGkiX/8W\n0Ar1b585qvJgPr6dKwb/BCkM7jz4MSbLj6zv/ZaFuObV0Kihb/32RlY9YpMRCQQRERERpzni/BfA\nuc+Hxx6Eh+476n2dyV28ePCPAM1/H/wHZqpPrO/9V1wLiST6/30T3WhsUK0jNhuRQBARERFxBiBf\n/xsgJOorn0H7/lHv60mdz2Vbfo9Aedw+/CHmakfeZliOiCXCrYlyEX3nzRtZ7YhNRCQQRERERJwB\niP5BxBUvg4kx9A9WmyEup7/tBbxwy/V4qsZtQ3/HTHXfsd//kp8H20Z/76trChwRpy+RQBARERFx\nhiB+4X+GZojf/AK6Ul7z3q2ZS3lR//X4qs4Pht/PdGXv2u9OZxAvfhnMTaPvvWMjqx2xSYgEgoiI\niIgzBNGWRbzy9VApob/1pWPevzV7GZcOhNsHPxj++2MqGoqX/Q8wDPR3/x2tjs8dcsTmJxIIIiIi\nIs4gxEt+ATq60bf+J3ry0DHvH2i7mMsH/wCN4vaRDzFeevDo7853IS6+Ag6NwKM/2chqR2wCIoEg\nIiIi4gxCWBbydW+GwEcdIRrikehPX8iLB/8YAfz3wX9gqPDfR3//Nb8AgLo5clR0phEJBBERERFn\nGhdeBjv2wAN3o/f+dF2P9KaeyxVbb8AQDveMfZJHp79+RJ8GYvBs2HU+PPoAemx4o2se8QwSCQQR\nERERZxhCCOQbfgMA9W//jFbBMZ4I6Uru5iXb3k3CyvPTqa9w3/hnUHr1s/KaVwOgo1WCM4pIIIiI\niIg4AxHbdoYhjEf2o++6bd3PZWL9vHTbjWRjW9k/fxv/PfJhvKC+8qbzLwqDHt1zG7o4v6H1jnjm\niASCiIiIiDMUcd2bQt8BX70J3agf+4EmcSvL1We9i57UcxkvP8QtB26k2Bhfeq+UiJf+Avg++rbv\nnIyqRzwDRAJBRERExBmKyHUiXnYdLMyhv/sfx/WsZcT5mcE/ZmfuZRQbY9y8/92MFu9devdlV0Mi\nhb7tO2jP3eiqRzwDRAJBRERExBmMuPY1kMmhv/8f6LmZ43pWCpMLe9/Ei7a8Da0Vdx78GA9OfAGl\nA4QTQ1x5LZQW0HffdnIqH3FKiQSCiIiIiDMYEYsjrvsVcF30V286oXdszVzKS7ffSNru4fHZb3Pb\n0N9RcWcQV70qdFR085EtEiJOLyKBICIiIuIMR1x6FQxuR999K3r/2i6Kj0Y2NsA12/+KLemLmK4+\nznef+jMO8AhcdDmMH4RHIkdFpzuRQBARERFxhiP+//buPD6q+t7/+Ot7Zkky2SSEBBKQfUcWsaAW\nEGPdqChW0etVL9yi/qQoapGqoFW0or0uWOkFBQUq2Gqx2OKCooD7FVEEBIQgixEIRhICCZN1zvf3\nx0AkFTSBIZOE9/PxmMeZ+c453/M5n8dk5pPv2RwPzpXXA+D+bcZRX3bY54njzFZj6ZdxPQbDip0z\n+XBACSUBg7tkYSRDlihQQSAicgIwnbpj+g2CbZuw/7f06PsxhrZNBnF++8mkx3cnN5TNWyOT2eZ+\ngbszJ4IRS11TQSAicoIwl40Efwz2H3/BBvcfU1/x/lTOav07Tm0xgpDPw6fnBViy/SHya3ArZamf\nVBCIiJwgTEpq+G6IRXuxr7xw7P0Zh44pv+DCDn+k1VaHgvhi3t46ieU7nqakojACEUtdUkEgInIC\nMecNg2bNsctexUZoiD8+No3TfZdw1t+LSS5PZlvhB7y2aRyrd/2N0sq9EVmHHH8qCERETiDG58e5\n8joIhXBfmBmx0wXNgPNottvLL/5eQt/0Efg98WzIf51Xs3/L57v+qhGDBkAFgYjIiabnz6DHqfDl\navj8/yLSpYlPwJyZhdn9He2/DvDLjo9yaosR+D0JZOcv4rVNv2XFzlnsKdUdEusrFQQiIicYY0x4\nlMDrDZ+GWBKMTL9ZQwFwlyzE4/jpmPILftnxUfq2+G9ivcls2bOMxZvvZsnWB/i68CNCbkVE1iuR\noYJAROQEZJq3xFw4HAoLsAuei0yfLVpC9z6waT02ZzMAHsdHh5QshnR8jIEn/5bmCT3ZHczm4x3T\nWZg9lk93ziZv/5dYe3TXRpDI8dblyoLBIE8++SQlJSVUVlYyYsQIOnXqRHZ2NnPmzMHj8dCzZ0+G\nDx8OwPz581m5ciUej4eRI0fSoUOHugxXRKRRMxdejv30A+y7i7D9z8J06HrMfTq/uBh33efYt1/B\n/PrW79uNQ0ZiHzIS+1Bc/i1fFSzl670fsnnPUjbvWUqctwmtkvuTmdiX1IC+66OhTkcIXn31VU45\n5RQmTZrEmDFjePbZZwGYOXMmY8eO5f777+err75i69atbNmyhfXr1zN58mRuvfXWqnlFRCQyjM+H\nc+0YsBZ37v9iKyMwhN+tDzTPxK54D7t3z2FnSfCn07v5VQzt9CSDW99Ju5MGE7LlZOe/wbJtD/LP\nDb/hldX3sWXPOwQrCo49JqmROh0h+OUvf4nP5wMgFArh8/kIBoNUVlbSvHlzAHr16sUXX3yB1+ul\nV69eGGNITU0lFAqxb98+kpKS6jJkEZFGzXTshjnrAuy7b2Df+Afmov84tv4cB3POUOzzT2HfeR1z\nydVHnNcxDukJ3UlP6M6p7gi+3b+W3OLV5Bat4au894H3AYj3pZIa6EyzQCdSA51JimmBMdrjHWnH\nrSBYunQpr732WrW20aNH06FDBwoLC5k6dSojR46kpKSEuLi4qnliY2PJy8vD5/ORmJhY1R4XF0cw\nGPzJgiAjIyOyG9JIKU81p1zVjPJUc/UtV+6YO8n94lPc1+bTbMiv8LVsc2z9/epqchf+Dd57k+a/\nvhknJrZGy7XiZGAI1loKg9vZuvsTvin4nJ171/L13g/5eu+HAPg9AVIT25GW2JG0xA40S2xPk/hW\n+Dw1W48c3nErCLKyssjKyvpBe05ODk888QTXXnst3bp1IxgMUlJSUvV+aWkpgUAAr9fp/ulmAAAb\nvUlEQVRbrb2kpIRAIPCT6925c2dkNqARy8jIUJ5qSLmqGeWp5uptrq68DqY/zK5Hf49z+2SMc2z/\ngdsB52IXvcTOf76AM/C8Wi+fkdGKkr0emqefgU1z2VeWy+7gRr4LZrOndBu5hevYWbi22jIBXypJ\nMRkk+VuQ4E8n3t+MeF8q8f5UvE7jLBYiWVzW6S6D7du38/jjj3PrrbfSpk0bgKof/127dpGens7q\n1au5/PLL8Xg8zJs3j6FDh1JQUIC1VrsLRESOlz5nQJ/T4fOPsYtfxlxw2TF1Z87+JXbxy9i3/oUd\ncC7GmKPvyzgkx2aSHJtJ+5TwP5qVbhl7S79hT+k2Cku/oag8l31luewqXsMu1vygjxhPInG+JsR5\nTyLW24SArwkxniRivEnEeBOJ9YSnPicej1OnP431Rp1u9V//+lcqKiqYM2cOEC4Gfve733H99dcz\ndepUXNelZ8+edOzYEYAuXbpw9913Y61l1KhRdRmqiMgJxRiDc+0Y3C0bsf+ch+3aC9P66I/2N02a\nYn42EPvxO7Du8/CFkCLI68TQNNCBpv92RkJ5KEhRWS77K/IoLv+O/RW72V/+HcGK3RSX51FY+tOX\na/YYP35PPD5PAJ8Th8+Jw+uJxevE4nNi8TgxeE0MHseP1/HjMX4cx4fHhB+O8eI4B6bGg8d4MYSf\nO8aDMQ6O8WJwMMbB4DkwNcdUOB0rYyN13cp6ol4OxdUz9XbIsh5SrmpGeaq5+p4ru/5z3Cn3Qnom\nzj1TMDXc/3/Yvr7ejPuH26B7Hzy3TqrVsscrTxWhEkoq91BSsYey0D5KK4soCxVRVrmPslARFaEg\n5aEg5aH9VLj7qQiVYglFPI4jCRcFTlWxEG5xDhQKBsOBqQm333j2SxFb94k5LiIiIodluvXBnHtJ\neKj/xWcw/3XT0ffVuj106gHrPsfuyMFknhzBSI+OzxOHzxNHUkzN9r1ba3FtBRVuKZVuKRVuCSG3\ngpBbRqUtI+SWEbKVhNwKXFsRfs+W49oQrq0Mt9lKrA3h2hAWF/fAa2tdXFysdbGEDkztgalb9Ros\n1los7oHnAAffixwVBCIiUo259L+wG9Zg31+M7X4qpu+ZR92Xc+7FuNlrsUsWHlNxES3GGDzGj8fx\nA437ODadyCkiItUYnw/n+tvB78d97s/Ygt1H31nPn4Vvt/x/y7BFuhVyfaaCQEREfsC0aIW54joI\nFuNOfwhbXnZ0/TgezC8uhsoK7LLXIxylRJIKAhEROSwz6HzMGVmwbRN29p+w7tHdgMiceQ4EErDL\nXsWWlUY4SokUFQQiInJYxhjMtWOgY7fwTZBeeeHo+omNw2RdBMVF2A/einCUEikqCERE5IiMz4cz\negKkpmNffQF3+btH10/WReD3hy9WVFkZ4SglElQQiIjIjzKJSTg33wNxAeycJ7GbNxxVH2bg+VCw\nG/vJe8chSjlWKghEROQnmYyTcW4YD6EQ7v8+iN3x01f8+0Ef514CHg/2jX8c9fEIcvyoIBARkRox\nPfpirrkRivbiPjoB+83W2i3fNA3TbxDkfgNrVhynKOVoqSAQEZEacwZdED7QcH8R7qMTsV9/Vavl\nzfnhmya5i16ikV05v8FTQSAiIrXiDDofM2IslOzHfewe7JaNNV7WZJ4MvfrBlo2wad1xjFJqSwWB\niIjUmvPzczCjfgulJbhTfo/9cnXNl73wcgDcRf84XuHJUVBBICIiR8XpfxbODbdDRTnulHvDuwFq\ncLCgad8FOnWHtZ9ht26qg0ilJlQQiIjIUTOnDcC5fTIkn4Rd8BzutMnY/cU/uZwz9CoA3IXPH+8Q\npYZUEIiIyDExHbri3PMEdO0Fqz/B/cNt2K83//gyXXpCl56wdiV20/o6ilR+jAoCERE5ZibpJJxb\n78MMuQJ2f4v70O2482djS4JHXMa55GoA3H/O0xkH9YAKAhERiQjjeHAuvQZn7L1wUlPs4pdx7xmN\n+9HSwx5bYDp0hVNOg+y1sGFNFCKWQ6kgEBGRiDKn9MW5/38xF/8nBPdjZz+B+8c7sF+u/sFIgHPJ\nfwIaJagPVBCIiEjEGX8MztD/wHlgGvQ9E7ZsxH38HtxJY3HfX4wtLwvP17oDnHpG+LoEaz+LctQn\nNhUEIiJy3JimaXhuvBPnrkcwPxsIud9gn/sz7h2/xn1pDnbrJszQq8AYjRJEmTfaAYiISONn2nXG\n3DAeW/Df2Hdex773JvbNBdg3F0CTVEhrATlbsCveD9/vQOqcCgIREakzJiUV86v/wl50ZfiUw88/\nxq75BPbsBsDOfJTQ2wsp7N0Pm94S2naEJqkYY6IceeOngkBEROqc8cfAqWdgTj0DW1kJm9bhvjQb\ncrbAtk0Ubc3+fubYOGjeEtO8JbRoCU3TMCnNIKUZnJSC8XiityGNiAoCERGJKuP1QtdeOOMexL37\nRigrJWXcJPZsWIfN2Qy7dsD2rdht31/muOpIA+NA0kmQmASJyZiEJEhIgvgEiAtAXDwmEA+xAYiJ\nPfCIAX8s+P3giwGvVyMQqCAQEZF6wgTiMZeNwM55ktIPl+Jce1PVezYUgvxvIXcHtiAPCnZDwW7s\nnu+gsADy82D7Ng53SOJPHqZoDPh84PWD1wteX3jq8YanjufAa0+4zXHCbY4DHg/GOOHnB6eOE+7z\n36f823NzYN1Vrw+0YX44D3z/+uBzgBvHHVWuD0cFgYiI1BvmjCzsu28QfG8xTv/BmE49wu0eD6Rl\nQFoGR/pf3lZUQPE+KNoLJfuhZD82GISSYPh1eSmUlUFZKZSVYivK4eCjvBwqK6CyMjwtK4PKYghV\nghuC0IHH4dZ7nHJRIyoIRESkMTKOg3PVDbiTb8f92wycu6fU+BgB4/NBk6bhx8G2CMZmrQ0XBdYN\nT90QhFywIXAtuG74PdcFa6tPseH3LAem9sCD8HsHr+Ro7YF5D3kO389XNc8h0whRQSAiIvWKaduJ\n+HOHsv+tV7DvvYk5e0i0QwIIH2fgPfCz6YtuLMeDLkwkIiL1TvKImyAugP3nPOzePdEO54SggkBE\nROodT5OmmGHXQLAY9y9TdQXDOqCCQERE6iUzeAh07QVffIp9f3G0w2n0VBCIiEi9ZBwHZ+QtEIjH\n/v1ZbF5utENq1FQQiIhIvWVSUjH/Gb5YkTtrCtY9/Kl/cuxUEIiISL1m+g3CnDYANm/AvrEg2uE0\nWioIRESkXjPGYK4ZDckp2IV/xX69OdohNUoqCEREpN4z8Yk4I2+GUAh3+kPYfYXRDqnRUUEgIiIN\ngunRFzP0KsjPCxcFFRXRDqlRUUEgIiINhhn6H5ifDYSvvsQ+92ddnyCCVBCIiEiDYYzBjBwLbTth\nP16GXfRStENqNFQQiIhIg2L8MThjJkJKKvbludiVH0U7pEZBBYGIiDQ4JrkJzk33QEws7rOPY9ev\ninZIDZ4KAhERaZBMq7Y4/+8OcF3cqQ9gV6+IdkgNmgoCERFpsMwpfXFuvgccgzt9MvbTD6IdUoOl\ngkBERBo0060Pzi2TwOfHnfEo7kdLox1Sg6SCQEREGjzTqTvOb/8AcQHs7CdwF7+sUxJrSQWBiIg0\nCqZtR5zxD0JyE+z82eGLFwWLox1Wg6GCQEREGg3Tsi3OPU9A51Pg849xH7gNu21TtMNqEFQQiIhI\no2KSm+D89n7MRVeGL3P8xztwl7yKdd1oh1avqSAQEZFGxzgenEuuxrnlPogNYF+YgfvQeOyWjdEO\nrd5SQSAiIo2W6d4H594/YfoNgm2bcB8ajzv7T9h9e6IdWr2jgkBERBo1c1JTnOtvxxk/GVq2xX60\nBPfu0bgL/4Yt2hvt8OoNFQQiInJCMJ164NzzOObq0eDxYF/5G+4do3DnTsPu2h7t8KLOG+0ARERE\n6opxPJjBF2JPH4z9cAn27X9h33sD+/6bcMppmNMHY3r+DBMTG+1Q65wKAhEROeGY2DjMORdhz74w\nfHrimy/DmhXYNSuw/hhMr36YfgOhWx+MPyba4dYJFQQiInLCMo4H+v4cT9+fY3d8jV3xfrUHXi+0\n74rp0hPTpSe06YjxNs6fzsa5VSIiIrVkMltjMltjL7kacrZgP/0Au/5zyF6L3fgF9l/Pgz8GWrXF\ntO4AJ7fHtG4HzVtivL5oh3/MVBCIiIgcwhgDrdtjWreHy0Zgi/fBxrXYDauxm9bD1mzs5g0AWADj\nQGoapGdimmdCWgtMk1RISYUmzSAhMdxnPaeCQERE5EeYhCToeyam75kA2PIy2L4Nm7M5PJKQux2+\n3QFrP8Ou/Sw8z6Ed+PyQdFL4kZCESUqGhGSIT4C4eAjEYwLxEBuA2DiIif1+6vPXWTGhgkBERKQW\njD8G2nXGtOtcrd3uL4a8ndi8XNizG/bkYwt2h5/vK4RvtkBlJYe7B+MR78toDPh84IsJ767wesHr\nO9DmhyfnRWy7olIQ7NixgwkTJjBz5kz8fj/Z2dnMmTMHj8dDz549GT58OADz589n5cqVeDweRo4c\nSYcOHaIRroiIyE8y8QnQthOmbafDvm+thdISKCqEon0Q3B++G2NwPwSLw++VlUBpKfbAlIoyKC+H\n8jKoKA8/D+6HyorwI4LqvCAIBoM899xz+HzfH4Axc+ZMxo0bR3p6Og8//DBbt27FWsv69euZPHky\n+fn5PPbYYzz00EN1Ha6IiEhEGGMgLhB+pGWE26Ic06Hq9EqF1lpmzJjBVVddRUxM+LzOYDBIZWUl\nzZs3xxhDr169+OKLL9iwYQO9evXCGENqaiqhUIh9+/bVZbgiIiInjOM2QrB06VJee+21am2pqan8\n/Oc/p02bNlVtJSUlxMXFVb2OjY0lLy8Pn89HYmJiVXtcXBzBYJCkpKTjFbKIiMgJ67gVBFlZWWRl\nZVVru/nmm1m6dClLly6lsLCQBx98kDvuuIOSkpKqeUpLSwkEAni93mrtJSUlBAKBn1xvRkZG5Dai\nEVOeak65qhnlqeaUq5pRnupWnR5DMHXq1KrnY8aMYeLEifj9frxeL7t27SI9PZ3Vq1dz+eWX4/F4\nmDdvHkOHDqWgoABrbY1GB3bu3Hk8N6FRyMjIUJ5qSLmqGeWp5pSrmlGeaiaSRVO9OO3w+uuvZ+rU\nqbiuS8+ePenYsSMAXbp04e6778Zay6hRo6IcpYiISONlrLVHPP2xIVJF+dNUedecclUzylPNKVc1\nozzVTCRHCOr0LAMRERGpn1QQiIiIiAoCERERUUEgIiIiqCAQERERVBCIiIgIKghERESERngdAhER\nEak9jRCIiIiICgIRERFRQSAiIiKoIBARERFUEIiIiAgqCERERAQVBCIiIoIKAhEREQG80Q4g0r79\n9lsWLFhAMBhk3LhxAJSWlvLMM8/g9Xrp3r07AwcOjHKU9cvu3buZNWsWCQkJZGRkMGzYsGiHVC+5\nrsuLL75ISUkJ7dq1Y/DgwdEOqV4rLS3lvvvuY/jw4fTt2zfa4dRLn3zyCStXrqSkpISsrCx69eoV\n7ZDqLX2P115tP18NoiCYNm0aK1euJDk5mccee6yqfdWqVcyePRvXdTnnnHMYNmwY6enpjB49utp8\nn3zyCaeffjqnnXYaU6ZMOSE+SLXJWU5ODqeffjqDBg1iypQpUYy67tUmT59++in5+fkkJibStGnT\nKEYdHbXJFcC//vUvzjjjjGiFGzW1yVO/fv3o168fxcXFzJ0794QrCGqTqxPte7y2f2+HU9vPV4PY\nZTB48GAmTJhQrc11XZ599lkmTJjAlClT+PDDD9m+ffthl8/Pzyc1NRUAx2kQm3zMapOzjh07smzZ\nMiZNmkTv3r2jFHF01CZPO3fupHPnzowYMYLFixdHKeLoqU2u1qxZQ8uWLUlOTo5StNFzNN9XCxYs\n4Pzzz6/rUKOuNrk60b7Ha5ObnJwcHn744WqPvXv3Vi1X089Xgxgh6NatG3l5edXavvrqK5o3b056\nejoAZ555JitWrKBly5Y/WL5p06bk5+fTpk0bTpRbN9QmZx6Ph+HDh9OtWzcee+wxzj777GiEHBW1\nyVPTpk3xesN/MsaYOo812mqTq9LSUsrKyti+fTt+v58+ffqcEF/iULs8ZWZm8vzzz9O7d2/atWsX\njXCjqrZ/fyfS93htcnPppZdy5513/qAPa22tPl8N9i+0oKCg2rBt06ZNKSgooKioiBkzZrBt2zZe\nfvllIDxssnz5cmbOnHlC78s8Us569+7NokWLmDFjBs2aNYtihPXDkfLUv39/Vq9ezaxZs+jWrVsU\nI6w/jpSrq666ipEjRzJgwADOOeecE6YYOJIj5WnRokV88cUXfPzxxyfkqNPhHClX+h4/cm6OpLaf\nrwYxQlAbiYmJ3HDDDdXaYmNj+c1vfhOliOq/k08+ueoATDmymJgYRo8eHe0wGhQdePnjhgwZwpAh\nQ6IdRoOg7/Haq+3nq8GW7SkpKeTn51e9zs/PJyUlJYoR1X/KWc0oTzWnXNWM8lRzytWRHe/cNNiC\noH379uTm5pKXl0dlZSUfffQRp512WrTDqteUs5pRnmpOuaoZ5anmlKsjO965MbYBHJ3xxBNPsH79\neoqKikhOTuaKK64gKyuLlStX8pe//AXXdTn77LP51a9+Fe1Q6w3lrGaUp5pTrmpGeao55erIopGb\nBlEQiIiIyPHVYHcZiIiISOSoIBAREREVBCIiIqKCQERERFBBICIiIqggEBERERrhpYtF6soVV1xB\nq1atcBwHYwxlZWUEAgGuu+462rdvH/H1vfPOO3z88ceHvYnJkRQUFPD444/zhz/84ajWuWTJEior\nKzn//PNZvHgxwWDwR2+3WlN5eXncfPPNnHzyydXaL7zwQrKyso65/0gJBoM88sgj3HvvvdEOReS4\nU0EgcgzuvfdekpKSql4vXLiQWbNm8eCDD0Yxqu+lpKQcdTEAsGHDBlq1agXAeeedF6mwAPD7/Tzy\nyCNVrwsKChg3bhzt27endevWEV3X0SouLuarr76KdhgidUIFgUiEhEIhdu/eTUJCQlXbggULWL58\nOa7r0qxZM6677jpSUlLYtWsX06dPp7i4mJNOOgmAgQMH0q1bN8aNG8fcuXOB8H/Sh74+KDs7m+ef\nf56Kigr27NlDz549GT16NHl5edx7771kZmby3XffMWbMGB544AHmzp3LtGnT2Lp1KwCVlZXs2LGD\ne+65h1atWjFjxgz27t1LYWEhzZo147bbbmPjxo18+umnrFmzBr/fz759+ygqKmLUqFF88803zJo1\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Ridge regression on full dataset, over 100 alphas from 10 to -2\n", "alphas = 10**np.linspace(10,-2,100)\n", "ridge = Ridge()\n", "coefs = []\n", "for alpha in alphas:\n", " ridge.set_params(alpha=alpha*0.5) # alpha/2 to align with R\n", " ridge.fit(scale(X), y)\n", " coefs.append(ridge.coef_)\n", "# Plot\n", "fig, ax = plt.subplots(figsize=(8,6))\n", "plt.plot(alphas, coefs)\n", "ax.set_xscale('log')\n", "plt.xlim(1e10, 1e-2) # reverse axis\n", "plt.xlabel('Regularization Parameter')\n", "plt.ylabel('Coefficients')\n", "plt.title('Ridge regression coefficients vs. regularization parameter.')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "# Split Hitters data into train and test sets\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=1)" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "**Fit on training set with alpha = 4**" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Ridge regression coefficients:\n", " AtBat 0.098658\n", "Hits 0.446094\n", "HmRun 1.412107\n", "Runs 0.660773\n", "RBI 0.843403\n", "Walks 1.008473\n", "Years 2.779882\n", "CAtBat 0.008244\n", "CHits 0.034149\n", "CHmRun 0.268634\n", "CRuns 0.070407\n", "CRBI 0.070060\n", "CWalks 0.082795\n", "League 0.104747\n", "Division -0.003739\n", "PutOuts 0.268363\n", "Assists 4.241051\n", "Errors -30.768885\n", "NewLeague 4.123474\n", "dtype: float64\n", "\n", "MSE = 106216.52238\n" ] } ], "source": [ "ridge_a4 = Ridge(alpha=4, normalize=True)\n", "ridge_a4.fit(X_train, y_train)\n", "y_pred_a4 = ridge_a4.predict(X_test)\n", "print('\\nRidge regression coefficients:\\n', pd.Series(ridge_a4.coef_, index=features))\n", "print('\\nMSE = ', mean_squared_error(y_test, y_pred_a4)) " ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "**Fit on training set with alpha = 1010**" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Ridge regression coefficients:\n", " AtBat 1.317464e-10\n", "Hits 4.647486e-10\n", "HmRun 2.079865e-09\n", "Runs 7.726175e-10\n", "RBI 9.390640e-10\n", "Walks 9.769219e-10\n", "Years 3.961442e-09\n", "CAtBat 1.060533e-11\n", "CHits 3.993605e-11\n", "CHmRun 2.959428e-10\n", "CRuns 8.245247e-11\n", "CRBI 7.795451e-11\n", "CWalks 9.894387e-11\n", "League 7.268991e-11\n", "Division -2.615885e-12\n", "PutOuts 2.084514e-10\n", "Assists -2.501281e-09\n", "Errors -1.549951e-08\n", "NewLeague -2.023196e-09\n", "dtype: float64\n", "\n", "MSE = 172862.235804\n" ] } ], "source": [ "ridge_a1e10 = Ridge(alpha=10**10, normalize=True)\n", "ridge_a1e10.fit(X_train, y_train)\n", "y_pred_a1e10 = ridge_a1e10.predict(X_test)\n", "print('\\nRidge regression coefficients:\\n', pd.Series(ridge_a1e10.coef_, index=features))\n", "print('\\nMSE = ', mean_squared_error(y_test, y_pred_a1e10)) " ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "**Ridge regularization with cross-validation**" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The best ridge regularization Alpha = 0.574878497699\n", "MSE = 99825.6489629\n" ] } ], "source": [ "# Ridge regularization with cross-validation\n", "ridgecv = RidgeCV(alphas=alphas*0.5, scoring='neg_mean_squared_error', normalize=True)\n", "ridgecv.fit(X_train, y_train)\n", "print(\"The best ridge regularization Alpha = \", ridgecv.alpha_)\n", "ridge_cv = Ridge(alpha=ridgecv.alpha_, normalize=True)\n", "ridge_cv.fit(X_train, y_train)\n", "mse = mean_squared_error(y_test, ridge_cv.predict(X_test))\n", "print(\"MSE = \", mse)" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "**Ridge regression on full data set with CV-optimized alpha**" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AtBat 0.055838\n", "Hits 0.934879\n", "HmRun 0.369048\n", "Runs 1.092480\n", "RBI 0.878259\n", "Walks 1.717770\n", "Years 0.783515\n", "CAtBat 0.011318\n", "CHits 0.061101\n", "CHmRun 0.428333\n", "CRuns 0.121418\n", "CRBI 0.129351\n", "CWalks 0.041990\n", "League 0.179957\n", "Division 0.035737\n", "PutOuts -1.597699\n", "Assists 24.774519\n", "Errors -85.948661\n", "NewLeague 8.336918\n", "dtype: float64\n" ] } ], "source": [ "ridge_cv.fit(X, y)\n", "print(pd.Series(ridge_cv.coef_, index=features))" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "**As expected, none of the coefficients are exactly zero - ridge regression does not perform variable selection!**" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "### Lab 6.6.2 The Lasso" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "**Lasso regression on training set, over 100 alphas from 10 to -2.**" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAf4AAAGICAYAAACgFIL5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlclWX+//HX2TiccwAFF9x3ARdQNHGrXDIzSytt0cas\n0emXTvuqTZqmlprNdyqtbCYrraZVa2zR0klNW8x9RREQBBQQ2Tn7ua/fH8jJkxLYIJh8no9OyL1+\n7osD73u57vvolFIKIYQQQtQL+rouQAghhBC1R4JfCCGEqEck+IUQQoh6RIJfCCGEqEck+IUQQoh6\nRIJfCCGEqEck+OtQdHQ0GzZsqOsyLmmZmZlER0eTlJRU16Wct5MnTzJu3DhiY2N57LHHsNvt3HPP\nPcTGxnL77bezePFixowZU+VyaroNMjMzWb9+fY0s64/sjjvuYOHChXU2fwWlFB999BEulwuAVatW\n0bdv3/95uZeydevWceLEibouo84Y67oAIS6k5s2bs2XLFsLDw+u6lPP2ySefkJmZyWeffUbDhg1Z\nv349P/zwA++//z5NmzbFZrMxYcKEKpdT023w5JNP0r17d4YNG1Yjy6uvFi9ejNH4v/8J3rZtGzNn\nzuS6667DbDYzcuRIBg0aVAMVXpqysrK47777+Pzzz2nevHldl1MnJPjFJc1gMNCkSZO6LuN3KS4u\npl27dnTs2BGAkpISGjduTPfu3f3T2Gy2KpfzR26DS1nDhg1rZDm/fgZbcHAwwcHBNbLsS5E8s05O\n9V/UNm/ezK233kpcXBw9evRg4sSJHD161D/+lVdeYdCgQcTGxnLjjTeyadMm/7gPP/yQq6++mu7d\nuzNixAg+++wz/7jS0lLmzZvHlVdeSY8ePZg8eTKpqamV1hEdHc2LL77IgAEDGD16ND6fj6NHjzJ5\n8mR69OjBkCFDeP7553G73f55Dh06xPjx44mLi+OGG27grbfeYujQoQBs3bqVvn37snDhQnr37s3T\nTz8NwKZNm7jhhhuIi4vjuuuuY+XKlQE1P/roo/Tt25eePXsyefJk0tLSAPB6vcydO5eBAwcSFxfH\n+PHj2bt3L3D2ae6qtn3o0KEsX76cO+64g9jYWIYPH863335badsUFhYyffp0EhISSEhIYNq0aZSW\nlgLgdrtZsmQJQ4cOJTY2lvHjx7Nnzx7/vB6PhxdeeIGBAwfSu3fvgFqmT5/Om2++ybZt24iOjuaO\nO+5gzpw5HD9+nOjoaFatWnXWqf6tW7dy22230aNHD4YNG8Ynn3xSaRvMnDmThIQE+vbtywMPPEBO\nTk612mD69On8/PPPvPnmm/6f5/r167n++uuJjY1l6NChvPHGG+dsq48//pj+/fvj8/n8w/bv30+X\nLl3Izc0lJyeHKVOm0Lt3by677DIeeOABTp06VWnbn2nx4sX85S9/YfLkyfTu3ZtPP/0UgGXLljFk\nyBDi4+MZP348u3fv9s+jlOKll15iwIAB9O7dm+eee4477riDVatWAec+FV/Z5Tmv18s//vEPhg4d\nSrdu3RgwYADPPvusf1unT5/OY489xi233EJCQgI//PBDwPKjo6PP+crKygLg7bff5pprrqF79+4k\nJCTwxBNPYLfbyczMZOLEiQD06tWLVatWnXWqPz09nb/+9a/06dOHvn37MmPGDP97tOK9sXbtWkaM\nGOF/n1b296Bi+i+++IKrrrqK+Ph47r//fvLz8/3T7N27lzvvvJP4+HhiY2O55ZZb/O1eMf+rr75K\nQkICd999NwCrV69m1KhRdO/enV69ejF16lTy8vKA8vf1wIED+fLLL7nyyiuJj49nzpw5pKenM2HC\nBOLi4rj55psDat6zZ4//Mtnw4cP517/+haZpAFx11VUAjBo1isWLF1c5/apVq7jpppt47LHH6NWr\nF6+99to52+YPRYk6ExUVpb799ttzjsvIyFDdunVTy5YtU8eOHVO7du1So0ePVlOmTFFKKbVu3ToV\nHx+vvv/+e5WRkaH+7//+T/Xs2VOVlJSoAwcOqJiYGLVmzRqVmZmp3nvvPRUdHa2OHj2qlFJq0qRJ\n6vrrr1fbtm1Thw4dUlOnTlWDBw9Wdru90jqHDRumjhw5og4ePKicTqcaMmSImjNnjkpJSVE///yz\nuv7669XMmTOVUkoVFxer/v37q+nTp6vk5GT16aefqp49e6ohQ4YopZT66aefVFRUlPrrX/+q0tPT\n1dGjR1VSUpKKi4tTH3zwgUpPT1dffvml6tOnj/riiy+UUkrNmzdP3XjjjSoxMVGlpqaqu+++W40f\nP14ppdRbb72lBg0apHbt2qWOHTumpk+frgYNGqQ0TVMZGRkqKipKHT58uFrbPmTIEHXZZZepL7/8\nUqWnp6v7779f9e3bV7lcrnO2zYQJE9RNN92kdu7cqQ4cOKBGjx6tHn/8caWUUjNnzlRXXnml2rhx\no0pOTlYzZ85U8fHxKicnRyml1AsvvKBGjRqlfv75Z5WcnKzmzp2rBgwYoIqLi1VxcbGaNWuWuu22\n21Rubq4qKSlRS5cuVVdeeaXKzc1VDodDvfzyy+qmm25SSimVkpKiunXrphYuXKhSU1PVf/7zH9Wt\nWzf1ww8/nNUGDz/8sJowYYLau3evOnz4sHrggQfU9ddfrzweT5VtUFxcrG677TY1a9YsderUKZWX\nl6e6deumVqxYoTIzM9WaNWv86/21oqIi1b17d/X999/7hy1cuFBNnDhRKaXU1KlT1aRJk1RycrJK\nTExUY8aMUY899tg52/3XXn75ZRUVFaWWLl2qkpOT1alTp9T777+vBg8erDZu3KiOHj2qXnvtNRUX\nF6cyMjKUUkq9/vrrqm/fvuq///2vOnz4sPrLX/6ioqOj1cqVK/0/2wULFgSs58zf2TPHv/baa2rQ\noEFq69atKiMjQ3366aeqS5cu6ptvvlFKKTVt2jQVHR2tPv30U3Xw4EFlt9sD5s/NzfW/jh07poYP\nH64eeeQRpZRSq1evVr169VLffvutyszMVOvXr1fx8fHqrbfeUl6vV3399dcqKipKHTt2TDkcDrVy\n5UqVkJCglFKqsLBQDRgwQN1///3q8OHDauvWrWrEiBHq/vvvV0op/3vjzN+Ja665xv935tcqph8y\nZIj67rvv1L59+9RNN92kJkyYoJRSqqSkRCUkJKj58+er9PR0dfDgQTVx4kQ1atSogPlvu+02/+/9\njh07VLdu3dSnn36qMjMz1Q8//KAGDRqk5s6dq5Qq/3vRtWtXdeedd6qkpCS1evVqfw3r1q1TiYmJ\natSoUeree+9VSimVl5enevfurV577TWVlpamNm7cqAYPHqxef/11pZRSe/bsUVFRUWrr1q2qtLS0\nyulXrlypoqKi1DPPPKPS0tJUVlZWtd6TFzMJ/jr0W8F/9OhRtWLFioBhy5YtU1dddZVSqjzsEhIS\n/GHucrnU5s2blcPhUN98843q0qWL2r17t3/eLVu2qKKiInX48GEVFRWl9u7d6x9XVlamEhIS1Icf\nflhpnRW/BEop9cknn6jhw4cHTLNjxw4VExOjSkpK1AcffKAGDBgQEJaLFi06K/jPrO+JJ55QM2bM\nCFjma6+9psaMGaOUUmrKlClq/Pjxqri4WCmlVHZ2ttqxY4dSSqm5c+eq4cOH+wO1qKhI/fjjj8rr\n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\n8cRWf+/bb7/N+PHjGTZsGPX19UyaNInVq1eTlpbG1q1bmTx5MkOHDqW8vLxxn511WWv5/e9/z7Bh\nwxgxYgRvv/02gwYNYty4cVhreeihh/j0008577zzmDdvHsXFxZx99tm8+uqrQOwXnF//+tdcdtll\njB49msrKSm677TZ69OgBwMqVK5kwYQJ9+vThjTfeYObMma0K/hUrVlBWVsaAAQNYsGABfr+/sefk\nySef5J133uE//uM/AEhNTeW3v/0tEJuytbm2KC8v5+ijj+baa6/lqaee4plnnmHatGl4PB5+9rOf\nsXLlSoqKinjssce4/fbbycvLo7Kykttvv53evXtz3XXXMWXKFKZNm0Y0GuU3v/kN119/Pf369SMQ\nCHD77bfTs2dPANavX88f//hHcnNzW/33KNKRFPwiHWBnV/+aNWuYOnUqgwcPJjMzE4CvvvqKVatW\nNV6TdxyHUCjU2H18zz33ANCzZ89WBePurr/+eubPn8+sWbMoKSkhFApRX19PWloabrebQYMGNbvv\nc889R319PZMnTwbg+9//PsuWLePNN9+ktLSU9evXM2DAgGb3Ly0tJRQKNS7/m52dzejRo1mwYAHD\nhg0jNzeXPn36ANC3b18++eSTvf6cnWfSO9smPT2dyZMnk5OTQ05ODnl5efz973+nrKyMpUuXNjmm\noUOHtrotjjrqKADy8/MZPHgwfr8fgKysLGpra1mxYgXV1dVNLjsArFu3rvEyx87j3rx5M48//niT\nY1i7di1FRUXk5OQo9OWgouAX6UB9+/bliiuu4IknnmDgwIHk5eXhOA4XXHBB47XxcDhMXV0dLtee\nN9ns3GaMabI9Eons9fvuvPNOevfuzahRozj++ONZuXIlO5fj8Hg8uN3uve73xhtvsHTp0saeCoAX\nXniBVatWceqppzJs2DCi0Sj7WtrDcZw9tllrG2v1+XyN2//1eHb3r9f4d/fee+/xwQcfcPbZZzNm\nzJjGs/edkpOTG1+31Ba717C3dnEch6KiIqZOndq4rbKykoyMDCorK5t8zu/3N6m5uroav9/PypUr\nm9QkcjDQ7XwiHWzMmDEMGjSIGTNmADBq1Cg+/PBDAoEAAK+88gqPPPIIfr+fIUOG8PHHHwOx6/jf\nfPMNEOvCjkQibNy4EYC5c+fu8T21tbWsWrWKSy+9tLGrvaysbK+BvLt//vOfvPvuu9xyyy1NQmrh\nwoV8//vf56STTiIzM5NFixY1/iy32000Gm3ycwoLC/F4PMyZMweIheScOXMYOXJkW5usWQsWLOCU\nU05h7NixFBYW8tVXX+31+Pa3LXY3aNAgSktLWbp0KQBr167lhhtuoKqqCrfbjeM4WGspLCzE5/Px\n6aefAlBRUcGUKVNYvXp1+xy0SDvTGb9IJ5gwYQI33XQTCxYsYOzYsY3Xi40x5OTkMGnSJAAmTZrE\nE088wXvvvUd2djZ5eXkkJSXh9/u59NJLmTp1KpmZmRx77LF7fEdaWhoXXnghv/zlL0lPTyc9PZ0h\nQ4ZQVlZGfn5+s7U99thjZGdn89BDDzUG4xlnnMEPf/hDnn/+ef7617/idrsbfxbEfnl5+umnm/wc\nj8fDzTffzDPPPMPMmTOJRqNcfPHFDB8+nCVLlrRLO55//vn86U9/4uOPP8blctGvXz/Wr1/fbm2x\nu4yMDKZMmcILL7xAOBzGcRyuv/56cnNzcRyHfv36ceONN3Lfffdx8803M2PGDF5//XWi0Sg/+tGP\nGDJkSLsdt0h70rK8IgeRWbNmMXr0aIqKiggEAtx0003cdtttjQPFREQOlM74RQ4iPXr04He/+x3G\nGKLRKOPGjVPoi0i70hm/iIhIAtHgPhERkQSi4BcREUkgCn4REZEEouAXERFJIAp+ERGRBKLgFxER\nSSD/H6UGkBaZrhsDAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lasso = Lasso(max_iter=10000, normalize=True)\n", "coefs = []\n", "for alpha in alphas:\n", " lasso.set_params(alpha=alpha)\n", " lasso.fit(scale(X_train), y_train)\n", " coefs.append(lasso.coef_)\n", "\n", "# Plot\n", "fig, ax = plt.subplots(figsize=(8, 6))\n", "plt.plot(alphas, coefs)\n", "ax.set_xscale('log')\n", "ax.set_xlim(ax.get_xlim()[::-1])\n", "plt.xlabel('Regularization Parameter')\n", "plt.ylabel('Regression Coefficients')\n", "plt.title('Lasso regression coefficients vs. regularization parameter.')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "**Lasso regularization with cross-validation**" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The best Lasso regularization Alpha = 0.574878497699\n", "MSE = 104960.658539\n" ] } ], "source": [ "lassocv = LassoCV(alphas=None, cv=10, max_iter=100000, normalize=True)\n", "lassocv.fit(X_train, y_train)\n", "print(\"The best Lasso regularization Alpha = \", ridgecv.alpha_)\n", "lasso_cv = Lasso(max_iter=10000, normalize=True, alpha=lassocv.alpha_)\n", "lasso_cv.fit(X_train, y_train)\n", "mse = mean_squared_error(y_test, lasso_cv.predict(X_test))\n", "print(\"MSE = \", mse)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "AtBat 0.000000\n", "Hits 1.082446\n", "HmRun 0.000000\n", "Runs 0.000000\n", "RBI 0.000000\n", "Walks 2.906388\n", "Years 0.000000\n", "CAtBat 0.000000\n", "CHits 0.000000\n", "CHmRun 0.219367\n", "CRuns 0.000000\n", "CRBI 0.513975\n", "CWalks 0.000000\n", "League 0.368401\n", "Division -0.000000\n", "PutOuts -0.000000\n", "Assists 0.000000\n", "Errors -89.064338\n", "NewLeague 0.000000\n", "dtype: float64" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.Series(lasso_cv.coef_, index=features)" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "**Some coefficients are set to exact 0 by Lasso.**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "## Lab 3: PCR and PLS Regression" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "### Lab 6.7.1 Principal Components Regression" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The sahpe of loading matrix: (19, 19)\n", "\n", "Head of loading matrix:\n" ] }, { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012345
00.198290-0.3837840.0886260.0319670.028117-0.070646
10.195861-0.3772710.0740320.017982-0.004652-0.082240
20.204369-0.237136-0.216186-0.2358310.077660-0.149646
30.198337-0.377721-0.017166-0.049942-0.038536-0.136660
40.235174-0.314531-0.073085-0.1389850.024299-0.111675
\n", "
" ], "text/plain": [ " 0 1 2 3 4 5\n", "0 0.198290 -0.383784 0.088626 0.031967 0.028117 -0.070646\n", "1 0.195861 -0.377271 0.074032 0.017982 -0.004652 -0.082240\n", "2 0.204369 -0.237136 -0.216186 -0.235831 0.077660 -0.149646\n", "3 0.198337 -0.377721 -0.017166 -0.049942 -0.038536 -0.136660\n", "4 0.235174 -0.314531 -0.073085 -0.138985 0.024299 -0.111675" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pca = PCA()\n", "X_reduced = pca.fit_transform(scale(X))\n", "print(\"The sahpe of loading matrix:\", pca.components_.shape)\n", "print(\"\\nHead of loading matrix:\")\n", "display(pd.DataFrame(pca.components_.T).loc[:4,:5])" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\n+vWDUqlEp06dMGXKFABAx44dMWnSJCxbtgzXr19H7dq1ERoailatWgEAFixYgC+//BILFixAtWrV\nMGjQoBL7Z/v37w+tVov58+fj9u3b0Gg0WL16tcH4lSfVrl07REVFSZfyvfzyyxBCoEOHDo99zvvv\nv4+5c+ciOjq61EvZntbAgQNx584dTJw4EXq9Hl26dCnXqeTSPMnvS926dbFu3TqEh4dj48aNCAgI\nQEhIiMHZoke99NJL2Lx5M1atWoVhw4bh/v378PDwwOTJk0s9WCmVSqxfvx7h4eF466234OjoiG7d\numHChAkAKm7feVSvXr2wfPly9O7du9hkaqGhoZg6daoUwNq0aYOPPvqozNkJbW1tsW7dOoSGhqJf\nv36oXbs2Bg0ahMWLFwMAevTogZMnT2LixInIz89H48aNMWvWLIwbNw5nzpyRLneeP38+oqOji01I\nNXHiRMjlckycOBFarRZ+fn749ttvi12eailkwlwdFGQyXl5eWL16NTp16mTuplSYbdu2Yd68eSUO\nlqxMdDod/v77b7Rr107qfz916hTeffddnDx58oknZSGiyondBERWzN7eHp9//jmWLFmCq1ev4vTp\n05g3bx66du3KIEBE5cYwQGTF5HI5Vq1ahejoaPTs2RMfffQRPD09MXPmTHM3jYisCLsJiIiIKjme\nGSAiIqrkGAaIiIgqOYYBIiKiSq5SDze+du1ahdVyd3ev0HrGrGstNY1V11pqGquutdQ0Vt3K3lZu\nf+Xdfnd398c+xjMDRERElRzDABERUSXHMEBERFTJMQwQ0XPv1ClbnDr1+Nv6ElV2DANE9NzbtMkR\nmzY5lr0iUSXFMEBEz7WsLBm2b1fil1+UuH//6W6XTfS8Yxggoufazz8rcf++HFlZcvz8s9LczSGy\nSAwDRPRc27zZscSvn9bJkyfx5ptvYvTo0Rg1ahQ++eQTxMXFPXGdX3/9Ffn5+c/cntKEhIQgNzfX\nKLXXrFmDwYMH4+TJk0/0vO+++w7nzp17ouesWLECN2/efKLn7NmzB1999dUTPceSZWRkYN++fUar\nX6knHSKi58uPPyrx+ecu0OlK/jvn1Ck7yGQAUDj5ilKpR3j4PQQH657odQIDA/HFF18AAI4dO4av\nv/4aHTp0eKIamzdvRrdu3Z7oOZbk4MGDWLduHRwdnyxgvfvuu0/8WiNGjHji5zxvLl26hL///htd\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# PCR with number of PCs from 0 to 19, with 10-fold CV\n", "# For 0 PC case, regression on intercept only.\n", "kf = KFold(n_splits=10, shuffle=True, random_state=1)\n", "regr = LinearRegression()\n", "mse = []\n", "for n_pc in range(0, pca.n_components_ + 1):\n", " if n_pc == 0:\n", " X_regr = np.ones((len(y),1))\n", " else:\n", " X_regr = X_reduced[:, :n_pc]\n", " scores = cross_val_score(regr, X_regr, y, cv=kf, scoring='neg_mean_squared_error')\n", " mse.append(scores.mean() * (-1))\n", "\n", "# Find the n_pc with lowest MSE, or highest CV score\n", "min_mse = min(mse)\n", "min_mse_idx = mse.index(min_mse) \n", " \n", "# Plot MSE vs. number of PCs\n", "fig, ax = plt.subplots(figsize=(8, 6))\n", "plt.plot(mse)\n", "plt.xticks(range(20), range(20))\n", "min_mse_marker, = plt.plot(min_mse_idx, min_mse, 'b*', markersize=15)\n", "plt.xlabel('Number of Principal Components')\n", "plt.ylabel('MSE')\n", "plt.title('Principal Component Regression with 10-Fold Cross-Validation')\n", "plt.legend([min_mse_marker], ['Best number of principal components'])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "From the plot we also see that the cross-validation error is roughly the same when only one component is included in the model. This suggests that a model that uses just a small number of components might suffice." ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Explained Variance Ratio:\n" ] }, { "data": { "text/plain": [ "0 38.31 %\n", "1 60.15 %\n", "2 70.84 %\n", "3 79.03 %\n", "4 84.29 %\n", "5 88.63 %\n", "6 92.26 %\n", "7 94.96 %\n", "8 96.28 %\n", "9 97.25 %\n", "10 97.97 %\n", "11 98.64 %\n", "12 99.14 %\n", "13 99.46 %\n", "14 99.73 %\n", "15 99.88 %\n", "16 99.95 %\n", "17 99.98 %\n", "18 99.99 %\n", "dtype: object" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "evr = np.cumsum(np.round(pca.explained_variance_ratio_, decimals=4)*100)\n", "print(\"Explained Variance Ratio:\")\n", "display(pd.Series([str(p) + ' %' for p in evr]))\n" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "PCR on training data and evaluate its test set performance." ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\nthUx+/bte90Pp1uJjIxk27Zt/PXXX4Dtt/5z585RuXLlbPWWEzVq1OCnn37CNE3S09P55JNPbroE\nA/DTTz8BtmXijx8/TrVq1fjjjz9o1KgRjRs3JjQ0lM2bN//tqr0tW7Zk9erVbNu2zb7tjz/+4Lvv\nvqNcuXIOe242btxIcnIypmmyatUqateuTWhoKFarld9++w2wrbT822+//e3KpVFRUaxYsYKMjAxM\n02TChAnMmTPnb3swDIPMzEwSExN56aWX8PPz4/HHH+fJJ5/k8OHD/+p4hHAmOQMixD/QpUuX60JG\ns2bNGDNmDL169SIoKIhq1aplq256ejpvvvkmGRkZdOnSxT7Q8oUXXrCPTzAMg379+v3tyrWlS5fm\n+eef56OPPsI0Tdzd3XnzzTftlxbyUps2bZg+fTp9+/bFNE3q169P3bp12bRp03X77d27l9WrV2Oa\nJq+99hq+vr60bNmSiRMn8uOPP2IYBhUrVuTIkSN3fLyQkBDefPNN5s2bx8yZMzFNk4CAAN58803K\nli0L4JDnpkiRIowYMYLExESqVq1Kq1atsFqt9O3bl2nTprFw4UIyMzNp3bo1kZGR7Ny5847P0YwZ\nM+jXr599EOo/GWtUp04dBg4cSN++fWnVqhVDhw7F3d0di8XisFVYhcgLshquEMIp2rVrx5QpU7I1\nn4gzLFiwgIsXL9K1a1dntyJEgSCXYIQQQgiR5+QMiBBCCCHynJwBEUIIIUSekwAihBBCiDwnAUQI\nIYQQeU4CiBBCCCHynAQQIYQQQuQ5CSBCCCGEyHP/DwaDPOh4KhPVAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=1)\n", "X_train_reduced = pca.fit_transform(scale(X_train))\n", "\n", "# PCR on training set with number of PCs from 0 to 19, with 10-fold CV\n", "# For 0 PC case, regression on intercept only.\n", "kf = KFold(n_splits=10, shuffle=True, random_state=1)\n", "regr = LinearRegression()\n", "mse = []\n", "for n_pc in range(0, pca.n_components_ + 1):\n", " if n_pc == 0:\n", " X_regr = np.ones((len(y_train),1))\n", " else:\n", " X_regr = X_train_reduced[:, :n_pc]\n", " scores = cross_val_score(regr, X_regr, y_train, cv=kf, scoring='neg_mean_squared_error')\n", " mse.append(scores.mean() * (-1))\n", "\n", "# Find the n_pc with lowest MSE, or highest CV score\n", "min_mse = min(mse)\n", "min_mse_idx = mse.index(min_mse) \n", " \n", "# Plot MSE vs. number of PCs\n", "fig, ax = plt.subplots(figsize=(8, 6))\n", "plt.plot(mse)\n", "plt.xticks(range(20), range(20))\n", "min_mse_marker, = plt.plot(min_mse_idx, min_mse, 'b*', markersize=15)\n", "plt.xlabel('Number of Principal Components')\n", "plt.ylabel('MSE')\n", "plt.title('Principal Component Regression on Training Set with 10-Fold Cross-Validation')\n", "plt.legend([min_mse_marker], ['Best number of principal components'])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "The lowest cross-validation error occurs when 6 components are used. Next perform PCR on the test data and compute the test MSE." ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Test set MSE = 111994.422736\n" ] } ], "source": [ "X_test_reduced = pca.transform(scale(X_test))[:,:7]\n", "\n", "# Train regression model on training data \n", "regr = LinearRegression()\n", "regr.fit(X_train_reduced[:,:7], y_train)\n", "\n", "# Prediction with test data\n", "y_pred = regr.predict(X_test_reduced)\n", "print(\"Test set MSE = \", mean_squared_error(y_test, y_pred))" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "### Lab 6.7.2 Partial Least Squares" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\noYfYtm2bOfb48eOZMWMGEyZMIDw8nE6dOrFw4cISHw8hxYC4puCNd/ny5fTo0aNc9+nVqxc1atRg\nwIABDB48mAULFrBnzx48PDyK/ZYHpv7vYcOGkZSUxKJFi/j00085e/YsY8aMKfRNYP78+URFRbF+\n/Xo8PDyYOnXqHZ3fgQMH8PLyYu3atfTv35/Fixezfv16Zs+ezffff8+ECRNYsWJFoT7KG126dIkv\nvviCBQsW8Omnn7J//34+/PDDEo9XUv55eXk89dRT6HQ6Vq1axcSJE3nnnXdKzf3JJ59kzZo1dOnS\nhYkTJ7J27VrS0tJo2LChuVVk+/btzJw5k6ioKL755hseffRRnn/+efbu3Ut4eDiTJ0+mZs2a7Nix\ng/Dw8ELxO3bsSG5uLvv27QMwFws3vnnv2LHD3DJR4JVXXiE8PJxBgwbx5ZdfmrevWrWKf/zjH3z7\n7bd06tSJCRMmcPny5WLPzc/Pj2XLltGsWbMit128eJGsrCy8vb0Lba9bt265+52Lc/LkSR5//HGa\nNm3K6tWrmTFjBuvXr+ett94qsu+FCxcYOXIkISEhrF27locffphPP/20xNjx8fEopQgNDS329rvv\nvrtQi9OXX37JggULWLBgAe7u7qX+bRw4cIBp06Yxbtw4vv/+e4YOHcrEiRM5efIk6enpvPDCCzz6\n6KNs2rSJCRMmMG/ePP73v/+VmGv//v05evQoR44cMW/bsmULTk5OdOvWDYDffvuNKVOmMHLkSL7/\n/nveffdd4uLi+Oijj8p8nJ977jkuXLjA559/zrRp0woVJ0ajkaeffhovLy9WrVrFunXraNKkCZMn\nTyYvL4+pU6cSGhrK448/zhdffFEk9vvvv8+7775LVFQUX3/9NV27duWZZ54pdC5ffPEFDRs2ZP36\n9QwZMoS33nqLQ4cOlZl3dSXFQDU2e/ZswsPDCQ8Pp3Xr1gwePJjWrVszfvz4ct2/du3afPXVVwwZ\nMoTk5GTeffdd/vnPf/Lggw8SGxtb7H22b9/OyZMnmTt3Lq1ataJ169bMmzePAwcO8Msvv5j3Gzx4\nMF26dKFJkyaMGDGCQ4cO3fHgq9GjR9OwYUN8fX0JDAxk1qxZdOjQAX9/fx566CGaNm1qHhh3s/z8\nfCZOnEjLli0JDw+nX79+7N+/v8RjlZT/r7/+ysmTJ3njjTcICgqie/fuPPfcc6XmPWrUKObPn0+z\nZs3YsGEDEydOJCIighkzZphbMhYuXMiIESPo3bs3AQEBPPbYY/Tv358lS5bg7OxsLhrq1atXpOXH\n3d2ddu3a8euvvwKmYqBLly7ExMRgNBo5efIkZ8+epXPnzoXu5+npiZOTE3q9vlAT7j/+8Q/69u1L\nQEAAo0eP5urVqxw/frzUcyxOdnY2AC4uLoW2Ozs7l/laWLZsmfm1XfDv66+/BkwfEv7+/kRHR9O0\naVO6devG5MmTWbZsGZmZmYXifPfddzg5OZn3HThwIAMGDCjxuBkZGQDmx7ssvXr1onXr1rRu3brM\nv42kpCQ0TaN+/fr4+fkxePBgPv74Y2rXrs3Zs2fJzc3F29sbPz8/HnzwQZYuXVpskVUgJCSEoKCg\nQq0DGzZsoFevXubXiKurK6+99hr9+vXDz8+PTp060a1bt0IfusU5dOgQv//+O6+99hohISHce++9\njB071nx7VlYWkZGRREdH06RJEwIDA3nyySdJS0vj/PnzeHp64ujoWOS1BaZC4tNPP2X06NH07t2b\nxo0b88ILL9ChQ4dCBUfjxo0ZM2YMAQEBPPPMM3h4eBAXF1eu56U6kjED1dhTTz1Fv379AHBycqJu\n3brl7iIoUK9ePSZPnszkyZM5evQoW7duZenSpTz11FP8+OOPRfrdjx49iq+vLwaDwbzNx8cHPz8/\njhw5Yh6Z3KhRI/PtHh4egOlb9a3mV8DNzY26deuaf+/Rowe7d+9mzpw5nDhxgsOHD3Pq1Cl69uxZ\nYowbWzs8PDxKbFYuLf9Dhw7h5+dX6A3u5m/qxXnggQd44IEHuHLlCrt372bdunUsX74cg8HAqFGj\nOHLkCLGxsYWaQnNzc2ncuHGZscHUBLt161ZGjx7Nrl27mDJlCr/++qv5TT08PBwPDw8uXLhQZqwG\nDRqYfy74UCz4YL8VBUXAzR/8OTk5uLq6smfPHkaOHGne3rdvX1599VXA9K335jErderUAUyvwbCw\nMDRNM9/Wrl07cnNzi8zQOHLkCMHBwTg5OZm3hYaGsmPHjmJzrlWrFmAqCsrTx33jY1XW38Zjjz1G\naGgokZGRNGnShK5duzJgwAC8vLxo3rw5PXv25Pnnn8fPz48uXbrQr18/6tatW+bjtGbNGp5//nky\nMjLYvn07n332mXnf1q1b4+7uzrvvvsvx48c5duwYR44coUOHDqWe15EjR9Dr9TRp0qTQ41bA3d2d\nf/7zn3zzzTfs37+fEydOcODAAcD0YV+ac+fOcfHixSJ/N+3atSvUsndz66S7u3uhrjZRmBQD1Vit\nWrVKbM4vj48++ojg4GBz83FgYCCBgYF07dqV3r17s3///iJTtG7+llfAaDQWehO48c23wJ0Mgru5\niHj33Xf59NNPeeSRR+jZsyfjxo1j3Lhxpca4OafS8ikpf0dHx1s6j/j4eFavXk10dDRgekPr1q0b\n3bp148UXX2T79u2MGjWK/Px8xo0bZ27eLeDoWL4/8YiICN555x1OnTpFUlIS7du3JywsjD179rBz\n5066du1a7pxv7iuH23vuatasiaurK+fOnSu0/dy5cxgMBlq1alWoz7yg6ALw8vIq8bVd3Guw4LVX\n0NJSQNO0IrkX99wWaNmyJTqdjn379hX7mI0bN878QQ2mb96l5VWQm9FoxNXVlc8//5y9e/eydetW\ntmzZwvLly/nwww+59957WbBgAfHx8fz000/8/PPPrFy5kpkzZ9K7d+8SH6e+ffsyd+5cDh06xL59\n+/D19TWPaQBTS97o0aPp06cPd911F0888QRr167l5MmTJT4G5XncLl++zKOPPoqbmxs9evSge/fu\nuLi4MGzYsFLjludxKu54BSpqIG1VJN0E4rbt3bu32EFKBW82xX0zatq0KcnJyZw9e9a8LSUlhTNn\nztC0aVPLJXuTjz/+mJdffpmJEyfy0EMP4e/vT3JyssXfLIKCgkhOTi40AKu0pkuj0cjy5cvZvXt3\nkds8PDzM30SbNm1KUlISDRs2NP/bsGED3377LUChb8HFadasGbVr12bRokWEhobi4uJChw4d+OWX\nX8zdBtam0+kIDQ0tNHYhKSmJM2fO0LZtW1xdXQudb8E3/7I0bdqU2NjYQs/13r17cXJyIiAgoNC+\nQUFBxMfHF2qdKPgGW5xatWrRpUsXPv744yLfcH///Xc2bNhAjRo1SsyrtL+NvXv3smDBAtq2bcuL\nL77IN998Q8uWLfnhhx84duyYuUn+mWee4YsvvqB379589913pT5OBoOBu+++m82bN7Np0yZzkVLg\n008/pU+fPsyaNYtBgwYRFhZGYmJimX8nQUFBZGdnF+qjv/Fx27ZtG6dOnWLFihU89dRTdO3a1Twg\ntyB2Sa/ZmjVrUqdOnSKDivfu3WvV95CqRooBUaq8vDy2bdtW5B/AM888Q2xsLC+88AIxMTGcOnWK\n7du3ExUVRdeuXYvtr+zUqRPBwcGMGzeO/fv3ExcXx9ixY2nUqBEdO3a02nkZDAa2bt1KQkICf/75\nJ1FRUVy8eNHii8Lcc889NGnShEmTJnH48GG2b99e6gDCFi1a0LNnT6Kioli9ejWJiYkcPHiQjz/+\nmG+++Ybhw4cD8K9//YuVK1fy+eefk5iYyOeff857772Hv78/YOomyczM5OjRo1y9erXYY0VERLBm\nzRrz6P0OHTrw008/UatWLQIDA4u9j7u7OwkJCYU+wCrSkCFDWL58OV9//TXx8fFMmDCBzp0739Gb\n/uDBgzl9+jSvvfYax44dY+vWrcyePZuHHnoILy+vQvv+/e9/R6fTMWXKFI4dO8Y333zD6tWrS40/\nceJEjh49yjPPPMOePXtITExk7dq1PPvsszz44INEREQUe7+y/jb0ej0LFy7ks88+4/Tp0+zYsYNj\nx44RGhpKjRo1+Oqrr5g7dy6nTp0iJiaGP/74o8SBjDfq378/GzduZPfu3fTv37/QbQaDgdjYWA4c\nOMCJEyd488032blzZ5l/J82aNaNz585MnjyZuLg4fvvtN+bOnWu+3dvbm6tXr7Jx40aSkpL4/vvv\nmT17NnC9W8jNza3E19aoUaN4//33+e677zhx4gTz589n165d/POf/yzzfEXxpBgQpbp8+TIjR44s\n8g9MfYArVqzg6tWrjB49ml69ejF16lQ6dOjAvHnzio2naRrvv/8+tWvXZsiQIQwfPhwfHx+WLl16\n2+MBbsfs2bM5ffo0ffv2ZcyYMfj7+/OPf/yDP//806LH1TSN9957j+zsbB555BFee+01Bg4cWGrT\n89y5cxkyZAhLly6lb9++DB48mO3bt7N48WJzv+n9999PdHQ0S5cupXfv3ixdupRXX33VPD+/Y8eO\ntGjRgoceesg85fBmERER5ObmmvuDw8LCcHJyKrVVYNCgQcTExNCvX78y+3pvR0EXzpw5cxg0aBC1\natVizpw5dxTTYDCwePFi/vzzT/r378+UKVMYMGAA//73v4vs6+npydKlS0lOTmbAgAF88sknZTZl\nN2rUiJUrV1KzZk3Gjh1Lnz59+Oijjxg+fDhz5swp8RtvWX8bISEhzJkzh1WrVtGrVy9eeeUVhg8f\nziOPPELdunV5//33+eWXX+jTpw/PPvss3bt35+mnny7z8ejZsyenT58mNDS00BgGgKioKHx9ffnn\n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\nY/78+axZs4amTZvmOfe/I90ENggMDLTljfhid955J0899RQAWut8fVu4XMOGDenSpQtgVck+Pj62\nxf7www9p1qwZt9xyi20xAQ4cOMD58+cZNmwYgwcPZvfu3bbF3rp1KyEhIYwePZpRo0bRoEED22ID\n/Prrrxw6dIiHHnrItpjlypXDNE1M0yQtLQ2Hw566/tChQ9SrVw+A4OBgDh06lO+Yl78+kpKSqFmz\nJgD16tUjPj7elrgZGRm0adOGe+65J38JXyX266+/TmhoKAA5OTm4u7vbErdXr17UrFmT7Oxszpw5\nk6/X4uWxU1JSmDdvHh06dMhzzKvFTUpKYtOmTQwcOJApU6aQnp5uW+xdu3Zx6tQphg4dypo1a3Kf\nJ/mNe8GCBQt45JFH8vX+dHnsSpUqkZqaitaa9PT0fL0WL4998uRJwsLCAAgLCyMxMTHPsa9HigEb\nNG7c2NYPawAvLy+8vb1JT09n7NixPP3007bGd3NzY9KkScTFxdny5glWs7ifnx9169a1Jd7FPD09\nefzxx+nXrx+dO3dm4sSJ5OTk2BI7OTmZpKQkevToQefOnZkwYQJ2Lsy5ZMkSnnzySdvigfX8OH78\nOG+88QZTp07lkUcesSVuaGgoGzduRGvN7t27OXXqFKZp5ivm1V4fSikAvL29SUtLsyVuQEAA1apV\ny3uifxP7wofHrl27WLFiBVFRUbbENQyD48eP06NHD1JSUrjttttsydk0TaZMmUL79u3z3WJ5ec5V\nq1blueeeY/DgwQQGBrJw4ULbYh8/fhxfX18GDBiAv78/S5cutSUuWN2X27Zty22ty6vLYwcFBREX\nF8cbb7zB2bNn81zAXC12YGAgO3bsAGDjxo2cP38+74lfhxQDRdiJEycYPHgw99xzD3fffbft8V95\n5RXGjx/P1KlTycjIyHe87777jvj4+Nx+tEmTJuX20+VXuXLlaNq0KUopgoODKVGiBKdPn7YldsmS\nJYmMjMThcBAcHIyHhwfJycm2xD537hxHjhwhIiLClngXLFu2jMjISMaPH897771HTEwMmZmZ+Y57\n//334+3tzTvvvMP69eupXLmy7X2UFwoBgPT0dNu6TgraTz/9RGxsLG+99RZ+fn62xS1btiwTJkyg\nWbNmzJo1y5aYSUlJHD16lOnTpzN+/HgOHTrEzJkzbYndsGFDKleunPv//fv32xIXoESJErlN7A0a\n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\nAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "kf = KFold(n_splits=10, shuffle=True, random_state=1)\n", "mse = []\n", "for i in range(1, 20):\n", " pls = PLSRegression(n_components=i)\n", " scores = cross_val_score(pls, scale(X_train), y_train, cv=kf, scoring='neg_mean_squared_error')\n", " mse.append(scores.mean() * (-1))\n", "\n", "# Find the number of PLS directions with lowest MSE, or highest CV score\n", "min_mse = min(mse)\n", "min_mse_idx = mse.index(min_mse) + 1\n", "\n", "# Plot MSE vs. number of PLS directions\n", "fig, ax = plt.subplots(figsize=(8, 6))\n", "plt.plot(range(1, 20), mse)\n", "plt.xticks(range(20), range(20))\n", "min_mse_marker, = plt.plot(min_mse_idx, min_mse, 'b*', markersize=15)\n", "plt.xlabel('Number of PLS directions')\n", "plt.ylabel('MSE')\n", "plt.title('PLS on Training Set with 10-Fold Cross-Validation')\n", "plt.legend([min_mse_marker], ['Best number of PLS directions'])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "source": [ "The lowest MSE occurs with 2 PLS directions, which is now used for evaluating on test set." ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "autoscroll": "json-false", "collapsed": false, "ein.tags": [ "worksheet-0" ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "104711.20627773694" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pls = PLSRegression(n_components=2)\n", "pls.fit(scale(X_train), y_train)\n", "\n", "mean_squared_error(y_test, pls.predict(scale(X_test)))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.0" }, "name": "Chapter 6 Linear Model Selection and Regularization.ipynb" }, "nbformat": 4, "nbformat_minor": 2 }