{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Notebook 10: XGBoost, Gradient Boosted Trees, and SUSY" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Learning Goal\n", "The goal of this notebook is to familiarize the reader with the powerful package XGBoost for constructing gradient boosted trees. We will discuss how to visualize feature importances as well as techniques for optimizing XGBoost.\n", "\n", "## Overview\n", "\n", "In this notebook, we will focus on using Gradient Boosted Trees (in particular XGBoost) to classify the supersymmetry (SUSY) dataset, first introduced by [Baldi et al. Nature Communication 2015 and Arxiv:1402.4735](https://arxiv.org/pdf/1402.4735.pdf). The supersymmetry data set consists of 5,000,000 Monte-Carlo samples of supersymmetric and non-supersymmetric collisions with 18 features. The signal process is the production of electrically-charged\n", "supersymmetric particles which decay to W bosons and an electrically-neutral supersymmetric\n", "particle that is invisible to the detector. \n", "\n", "The first 8 features are \"raw\" (low-level) kinematic features that can be directly measured from collisions. The final 10 features are \"hand constructed\" (high-level) features that have been chosen using physical knowledge, and are known to be important in distinguishing supersymmetric and non-supersymmetric collision events. More specifically, they are given by the column names below.\n", "\n", "We will drawn upon the useful [blog posts](https://jessesw.com/XG-Boost/)\n", "that compactly introduces many of the basics of hyperparameter tuning. As we will see, there are many practical trade-offs we have to worry about. Unlike Random Forests, for more complicated algorithms such as XGBoost, overfitting can be a major worry. It is also extremely computationally expensive to do hyperparameter searches. However, this notebook should get you started on these interesting methods.\n", "\n", "## Downloading the SUSY dataset\n", "The supersymmetry dataset can be downloaded from the UCI Machine Learning repository on [https://archive.ics.uci.edu/ml/machine-learning-databases/00279/SUSY.csv.gz](https://archive.ics.uci.edu/ml/machine-learning-databases/00279/SUSY.csv.gz). The dataset is quite large. Download the dataset and unzip it in a directory. We will be using this dataset with gradient boosted trees. We will focus on the XGBoost aglorithm.\n", "\n", "## Installing XGBoost\n", "\n", "If you have not already done so, you will also have to install the XGBoost python package, see e.g. [https://github.com/dmlc/xgboost/tree/master/python-package](https://github.com/dmlc/xgboost/tree/master/python-package). The easiest way to do this is to clone the Github repository, navigate to this directory, and\n", "use the pip command: pip install xgboost. Alternatively, one can use Anacodna: conda install -c conda-forge xgboost. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load in dataset and construct training and test set" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Size of dataset : 100000\n" ] } ], "source": [ "#Load the dataset using pandas and numpy\n", "\n", "import pandas as pd\n", "import numpy as np\n", "from sklearn.model_selection import train_test_split\n", "\n", "#Filename [CHANGE THIS TO YOUR FILENAME FOR SUSY]\n", "filename='/Users/chinghao/Downloads/SUSY.csv'\n", "\n", "#Read in SUSY File. We will only work with subset of data for demonstration purposes.\n", "\n", "features=['SUSY','lepton 1 pT', 'lepton 1 eta', 'lepton 1 phi', 'lepton 2 pT', 'lepton 2 eta', 'lepton 2 phi', \n", " 'missing energy magnitude', 'missing energy phi', 'MET_rel', 'axial MET', 'M_R', 'M_TR_2', 'R', 'MT2', \n", " 'S_R', 'M_Delta_R', 'dPhi_r_b', 'cos(theta_r1)']\n", "\n", "low_features=['lepton 1 pT', 'lepton 1 eta', 'lepton 1 phi', 'lepton 2 pT', 'lepton 2 eta', 'lepton 2 phi', \n", " 'missing energy magnitude', 'missing energy phi']\n", "\n", "high_features=['MET_rel', 'axial MET', 'M_R', 'M_TR_2', 'R', 'MT2','S_R', 'M_Delta_R', 'dPhi_r_b', 'cos(theta_r1)']\n", "\n", "#Number of datapoints to work with\n", "N = 100000\n", "print(\"Size of dataset : %i\"%N)\n", "df = pd.read_csv(filename, header=None,nrows=N,engine='python')\n", "df.columns=features\n", "y = df['SUSY'].values\n", "X = df[[col for col in df.columns if col!=\"SUSY\"]]\n", "\n", "#Make datasets using only the 8 low-level features and 10 high-level features\n", "X_low=X[low_features]\n", "X_high=X[high_features]\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.1, random_state=0)\n", "X_low_train, X_low_test, y_low_train, y_low_test = train_test_split(X_low, y, test_size=.1, random_state=0)\n", "X_high_train, X_high_test, y_high_train, y_high_test = train_test_split(X_high, y, test_size=.1, random_state=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Train and test models" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training on 90000 examples with 18 features\n", "Predicting on 10000 examples with 18 features\n", "Model Accuracy with all features: 79.50%\n", "The AUC score with all features is 0.79\n", "Run time with all features: 139.58 sec\n", "Training on 90000 examples with 8 features\n", "Predicting on 10000 examples with 8 features\n", "Model Accuracy with just low-level kinematic features: 78.18%\n", "The low-level AUC score is 0.78\n", "Run time with low-level features: 6.84 sec\n", "Training on 90000 examples with 10 features\n", "Training on 10000 examples with 10 features\n", "Model Accuracy with just high-level features: 78.18%\n", "The high-level AUC score is 0.78\n", "Run time with high-level features: 8.15 sec\n" ] } ], "source": [ "# For next cell\n", "from sklearn.metrics import roc_auc_score\n", "import time\n", "import xgboost as xgb\n", "import warnings\n", "\n", "warnings.filterwarnings(action='ignore', category=DeprecationWarning)\n", "\n", "print(\"Training on %i examples with %i features\"%X_train.shape)\n", "\n", "#Use default parameters and train on full dataset\n", "XGBclassifier = xgb.sklearn.XGBClassifier(nthread=-1, seed=1, n_estimators=1000)\n", "#Train and time classifier\n", "start_time = time.time()\n", "XGBclassifier.fit(X_train, y_train)\n", "run_time = time.time() - start_time\n", "\n", "#Make Predictions\n", "print(\"Predicting on %i examples with %i features\\n\"%X_test.shape)\n", "y_pred= XGBclassifier.predict(X_test)\n", "\n", "#Print Results\n", "print(\"Model Accuracy with all features: {:.2f}%\".format(100*XGBclassifier.score(X_test, y_test)))\n", "print(\"The AUC score with all features is {:.2f}\".format(roc_auc_score(y_test,y_pred)))\n", "print(\"Run time with all features: {:.2f} sec\\n\\n\".format(run_time))\n", "\n", "\n", "#Rerun with just low-level kinematic features with default parameters\n", "\n", "print(\"Training on %i examples with %i features\"%X_low_train.shape)\n", "XGBclassifier_low = xgb.sklearn.XGBClassifier(nthread=-1, seed=1)\n", "#Train and time classifier\n", "start_time = time.time()\n", "XGBclassifier_low.fit(X_low_train, y_low_train)\n", "run_time = time.time() - start_time\n", "\n", "#Make Predictions\n", "print(\"Predicting on %i examples with %i features\\n\"%X_low_test.shape)\n", "y_low_pred = XGBclassifier_low.predict(X_low_test)\n", "\n", "#Print Results\n", "print(\"Model Accuracy with just low-level kinematic features: {:.2f}%\".format(100*XGBclassifier_low.score(X_low_test, y_low_test)))\n", "print(\"The low-level AUC score is {:.2f}\".format(roc_auc_score(y_test,y_low_pred)))\n", "print(\"Run time with low-level features: {:.2f} sec\\n\\n\".format(run_time))\n", "\n", "\n", "#Rerun with just high-level kinematic features with default parameters\n", "\n", "print(\"Training on %i examples with %i features\\n\"%X_high_train.shape)\n", "XGBclassifier_high = xgb.sklearn.XGBClassifier(nthread=-1, seed=1)\n", "#Train and time classifier\n", "start_time = time.time()\n", "XGBclassifier_high.fit(X_high_train, y_high_train)\n", "run_time = time.time() - start_time\n", "\n", "print(\"Training on %i examples with %i features\"%X_high_test.shape)\n", "#Make Predictions\n", "y_high_pred = XGBclassifier_high.predict(X_high_test)\n", "\n", "#Print Results\n", "print(\"Model Accuracy with just high-level features: {:.2f}%\".format(100*XGBclassifier_low.score(X_low_test, y_low_test)))\n", "print(\"The high-level AUC score is {:.2f}\".format(roc_auc_score(y_test,y_high_pred)))\n", "print(\"Run time with high-level features: {:.2f} sec\\n\\n\".format(run_time))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualizing Feature Importance\n", "\n", "One nice aspect of XGBoost (and ensemble methods in general) is that it is easy to visualize feature importances. In XGBoost, there are some handy plots for viewing these (similar functions also exist for the scikit implementation of random forests). One thing we can calculate is the feature importance score (Fscore), which measures how many times each feature was split on. The higher this number, the more fine-tuned the partitions in this direction, and presumably the more informative it is for our classification task.\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#import ml_style as style\n", "import matplotlib as mpl\n", "#mpl.rcParams.update(style.style)\n", "import matplotlib.pyplot as plt\n", "\n", "\n", "%matplotlib inline \n", "\n", "fig=plt.figure()\n", "xgb.plot_importance(XGBclassifier, ax=plt.gca())\n", "fig.subplots_adjust(left=0.4) #\n", "#fig.savefig('SUSYXGBoost1.pdf')\n", "\n", "fig=plt.figure()\n", "xgb.plot_importance(XGBclassifier_low, ax=plt.gca())\n", "fig.subplots_adjust(left=0.4)\n", "#fig.savefig('SUSYXGBoost2.pdf')\n", "fig=plt.figure()\n", "xgb.plot_importance(XGBclassifier_high, ax=plt.gca())\n", "fig.subplots_adjust(left=0.4)\n", "#fig.savefig('SUSYXGBoost3.pdf')\n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Plot ROC curves\n", "\n", "This simple example shows that with the default parameters one can already achieve an accuracy of about 80 percent using all the features (kinematic and hand crafted), and a slightly smaller accuracy of about 78.75% using just the kinematic features. Both achieve a very respectable AUC (area under the ROC curve, see [https://en.wikipedia.org/wiki/Receiver_operating_characteristic](https://en.wikipedia.org/wiki/Receiver_operating_characteristic)) score of around 0.78 or 0.79. This is significantly better than that achieved using Boosted Decision Trees (though not deep neural networks) in the original [paper](https://www.nature.com/articles/ncomms5308), even without tuning hyperparameters. Furthermore, we are using only a small subset of all the data (100,000 out of a total of 5,000,000 datapoints) so this performance is a lower bound on what can be accomplished with XGBoost. Note that there are only three points on the curve so the ROC does not contain much information beyond the accuracy.\n", "\n", "We can summarize this by plotting the ROC curves for these three models. Recall that ROC curves plot the true positive rate. Here, we will use the modified version used in high-energy physics plotting the true negative rate (Background rejection) against the true positive rate (signal efficiency).\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xd8VvX5//HXdY/sTQLZEKYgIEgQtzirVrGOWrWKVltrLW5p7fi2Vvuzwz2LWBVXpdaJo1VkCCqKCIhsAmEECAlZEDLIuH5/nDsxQAg3kPu+M67n43Ee3Oc+n/s+7xPEK59zzudzRFUxxhhjAFyhDmCMMabjsKJgjDGmmRUFY4wxzawoGGOMaWZFwRhjTDMrCsYYY5pZUTDGGNPMioIxxphmVhSMMcY084Q6wMFKTk7WPn36hDqGMcZ0Kl9//fV2VU05ULtOVxT69OnDggULQh3DGGM6FRHZ4E87O31kjDGmmRUFY4wxzawoGGOMadbprikYY8yhqKuro6CggJqamlBHCaiIiAgyMzPxer2H9HkrCsaYbqGgoIDY2Fj69OmDiIQ6TkCoKiUlJRQUFJCTk3NI3xGw00ci8pyIFInI0v1sFxF5TETyRGSJiBwdqCzGGFNTU0OPHj26bEEAEBF69OhxWL2hQF5TmAKc3cb2c4ABvuV64B8BzGKMMV26IDQ53GMM2OkjVZ0jIn3aaHIB8KI6zwP9QkQSRCRNVbcGIs/bs57mq/UfkhyTTXqPI+ibdTRHZg8jKjwyELszxphOKZTXFDKATS3WC3zv7VMUROR6nN4E2dnZh7SzbzbNYpprDVStgaoZzp4/h4R6SGwMI17iiPemkByTTVryEPqlD2NYel96RiV1i98ujDGB53a7GTZsWPP622+/TVszNDQN1k1OTiYmJobKysqAZwxlUWjt/7TaWkNVnQxMBsjNzW21zYH8cfxUbt25nZVr57N+6zcUluZRUrWZ8oZSyqmi1F3IisYiaitXQOWHsN75XFgjxDeGE0cccd6eJMX0Jj15MAOScxia2ps+8Rl43Yd2ld8Y071ERkayePHiUMdoUyiLQgGQ1WI9E9gSyB3GxyYzZsS5jBlx7r4bGxvYXbqR9RsWkr/5GwrL8iip2UJ5fRkVsoMizw42SCGLdi6DnR9AvvMxUYhqDCOGOOK8vZyikZBD/6QshvTMpn9iFvHh8dbbMMa0asqUKSxYsIAnnngCgPPOO48777yTsWPHhiRPKIvCNGCCiEwFxgAVgbqe4BeXm7DkHAYm5zBw1MV7blOFXdtpKFnH9s3L2LB1GYXlaymt2Up5Qxklrkq2enZQ2LiVRfVL+XKHwMbvPu5pdBNNPNHeXiRFZZIRk05OYiaDU3ozICmT1OhU620YE0R/encZy7fsaNfvHJIexx/PP7LNNtXV1YwYMQKAnJwc3nrrrXbN0B4CVhRE5FVgLJAsIgXAHwEvgKpOAj4AzgXygCrgJ4HKcthEICYFd0wKvXqPodfe22sroWw9WrqWyq1rKCxaybaKdZTUFFLWuJNtHheFnp1srdvKltqlLN3p3vPKiUI4sUS7e5IYkUp6TDq949MZ1COLgT2yyYhNJy4sznobxnRy3fr0kapefoDtCvwyUPsPqvAYSB2KpA4ldgjE4txnC0BDHZRvhLJ8tDSf2qK17CxeQ1HFesp2b6PY1chWj4etnkq2eIopqFnDvF0u5hYBa77bhUvDiXInk+jtSc/oVLLjMuiXlMkRydlkxqbTM6onXpf1Nozxx4F+ow8mj8dDY2Nj83qoR1zbiOZAc3uhRz/o0Q8BInxLCjinpSq3Qek6KM2Hsnzqtq9j9/Y8duzYSEnjLrZ63GzxeCj0uNng2ckm9xZW7hK+Lm1svhgOgArhkkCctycpkb3IjE2jb2IWg3pkkRWXQWp0qvU2jOmA+vTpw1NPPUVjYyObN29m/vz5Ic1jRSGURCA21Vl6Hw8459e8QDSQVlPBUF+xaCoaDSX5NJaso27XVrZ5XGx1OwVjkzeCtW5lk3sXm3fls7K8jsbNe96o5SaCGHcyPSJSSYtJo098OgN7ZJMdl05aTJr1NowJgRNOOIGcnByGDRvG0KFDOfro0E7uYEWhI4uIh/QRzuLj9i3e+lpyyjeSU5rv9DR8hUNL82H7BrShllK3UzQ2e7zkhSWQ51Y2usrZvqucjRVL+Gzb7r12KES5kkgI60mvqFSy49Lp3yOLnHjnYnhaTBqx3ljrbRhziFobZyAivPLKK622X79+fZufDQQrCp2VJxySBzhLCwLQ2Ijs3EJyaT7JZfkMa9Hb0LJ8pKYCgGoRCj1u8sKSWO1NIM8VyQYRit1FfLtjM4u2z4H1DXvulkjivSm+U1QZ9E3MICchk7SYNNKind6Gx2X/WRnTWdm/3q7I5YL4TGfJOWmPTQJQVQql+USW5ZNTmk9OWT5nNhWOnd/dFtUIbPXGsiqyFyvc8ayRCPLVRbG7gdXeDawoXYZsrtpr50KMuwc9InqRHpNG7/gM+iZkkB6T3lw4YsNiA/0TMMYcIisK3VFUkrNkjtp32+4qKN8Apfm4yvLJKM0noyyf00rznbuoGuuamza6vGyLSGdFWAor3PGsVC/rGoUiVwP5nl3kly3k88JZiOzZ2wiTKBLCe5LqO0XVNzGLdF/BSItOIyUqxXobxoSI/cszewqLgp6DnWVvjQ1QUeA7FbUOV2k+aWX5pJWu57SyL2H3d+c8FaE2shclERms9qSwTGJY3uAlr0HZqnVs9u5iq3cD3xQtQTx79jYEF3HeHqREppIZm05OQgYZLXoaadFpxITFBPonYUy3ZEXB+M/lhsTeztJ37J7bfKO+m65dSFk+Eb5eRkbpQk7dVbRH84bwBHZFZ1OqfVjXmMK3jdEsq3Ozqr6BwoYqtnsqKPGWs3r7V4h3OiKNe3w+3BXtnKKKTqV3QgZZsRlOwfAVjuTIZOttGHMI7F+NaR++Ud/EpEDWMftu9436bupluEvziSvLJ650BX0qpnOafneKST2R1MVlszMsi+3eYWykJ982RPNNrYtVNbspqy9lt6eMSm85m7z5fFW4CHFX7xkHFwlhyaRGp5Edl0FWXDpp0WnOXVTRaaTHpBPtjQ7wD8WYzseKggkO36hvUofuu63FqG+nl7GesNJ8epTl06PwMwbVV3NmU1txofGZ1Mb2piIikyLPkWykF8tq41hcC+uryiitLaLRXUaRt5zisnKWeTfi8lbAXr2NSHeM7y6q9OaikR7zXfFIiUzB7XIH/Edjuo9gTX99OKwomNBrMep7H62M+pbSfCLK8oko+JBe1aUMA77f1D46BU3KoSY2m7LwPmx1pbFBe7K8JolllbVs3rWV4upCGqSM3d5ydnrLyd+eh9u7APbqbbhwkxSRQnqM09to2dNoOlVlvQ3T1VhRMB1bK6O+91BT0VwsWhaNyC1fEllRQDrKKOAigLAYSOyD9uxDTUw2JeHD2SKprGvoxarqWPIrdrCpYgtFVYXUUIp4y9nqLaewpJxvwtYjnn17G9GeWFKjnQviLa9pNC3JkcnW2zBt2rBhA9deey3FxcWkpKTw/PPPk5GRwYABA1i7di0VFRUkJSUxe/ZsTj75ZE466SSef/55+vfvH5A8VhRM59bKqO9m9bXOaam9Rn3L9tVErplOZkMtmcAxAC4PJGRDYg70y6E6Jpti7zAK6EVefTIbd8Cm0l1s3FHI1l1bqGwoweUtY7ennApvOWvCVuP2zkdde/Y23OImObInGTHp3912u1fhiPJGBeMnZVr6711Q+G37fmfqMDjnrwf9sQkTJjB+/HiuvvpqnnvuOW6++WbefvttBg4cyPLly8nPz2fUqFHMnTuXMWPGUFBQELCCAFYUTFe2n1HfADQ2ws4t+/QyKM2HzQuIrKkgG8gGjgeISYWkHMjIgaQcamL7UuRJY4Omsr4qnILyajaXVbOpvJSCnVsp312Ey1uOeMsp8JazxVuKJywfdZfv09uI9caRFpO2x1iNplNV6THpJEcm4xJXEH5gJhTmzZvHm2++CcBVV13Fr371KwBOOukk5syZQ35+Pr/5zW945plnOOWUUxg9enRA81hRMN1TG6O+AWfUd1ORaFkw1s2Cb/5FBDQXjZPC4yGpj9PLGJgDiTnsjhtFoSeNDXUJbC6vpaCsms3l1RSUVbKpopDttdvAU47LW85uTzllZeWsCV+FeL6kUfbsbXjEQ8+oXs1Fo6lYtCwe1ts4SIfwG32wNM0tdtJJJzFp0iS2bNnCPffcw/333998CimQrCgY05qmUd8ZbY/63qOXUfgtrHwfGusIw1c03GGQ0NvpZSTmQO8cSOpLXfxQCqUXBTsbfcWiis2+wrGpvJRtVYU0uMqaexsbvOVsDS/BFbaOBlc5ziQk34kLiycjJn2PC+GpMb7bb6PT6RHZw3obHdTxxx/P1KlTueqqq3jllVc48cQTARgzZgzjx4+nb9++REREMGLECJ5++mnee++9gOaxomDMwTqIUd/fFY71sOHz5lHfXiALISsuw1cw+kBqDgx2Tk81JBxHcV2kUyzKqykoq27ubWzavpMtO7dRL2WI1+ltbPeWs6O8gjXhq1D3PBrY80EtHvE0z3Tb3NuITm8uHqlR1tsIhqqqKjIzM5vXb7/9dh577DGuvfZa7r///uYLzQDh4eFkZWVx7LHHAk7P4dVXX2XYsGEBzSjOA9A6j9zcXF2wYEGoYxhz8PYa9b3Pn3uN+iYy0eldNPUykvo2v9aYXpRU1TmFoqy6uXhsbioeFaVUaYlTNDzliLcMb3gF4RE7EE85u6UM2PPffkJ4wj6np5p6Hr3jehMfHh+8n1UArFixgsGDWynkXVBrxyoiX6tq7oE+az0FY4LlIEd9NxeMggWw7G1oMepbPJEkJ/YhOSmHEU2FI933Z0I26vKwo7qeTS16Gs7pqSqn11FeyY7dpbi83/U2SsIqqIrcQX7YauplHvUtehvh7nCmfO8FhqZ0nMdYmsCwomBMR3EQo74pW/9d0Vg7C+pbXJwWFxKfSXxiDvFJOQxt6mH0z4HEI5z9AJW19XsUis1l1RQ0n6qqYmdVhe+aRhmNaW9w6eu/JWnnzWQmRJGREEVmYiQZiZFkJkSSmRhFanwEYR67btHZWVEwpjM4yFHfzX8unwbVpXu2j06BxBxiknIYlJjDoKZbbYflONt8d7/U1DU0n5Kati6GD7c9Re+4fGp3DOHztdsp3FFDy7PPInDZ6Gz+clFgz3mbwLKiYExndwijvinNdy58L3mNPa4t+EZ9k5RDRGIO/ZJy6JeYw/Gjz2LN3P9S3vgWb192NV63l931jRRW1FDg62l8srqYV+dv5NLcTEZmJwbr6E07s6JgTFd3CKO+KV4Fqz+ChlrA+R/FnVHR3NirB/9+5Syu7HE0YYk5ZA+9iOx+6QB8f1ga89aW8ND01bx03ZggHqBpT1YUjOnODmLU94kl6ziu8CP+0VDC+UtfJ766HBa9DL/4DFxuosM93HBKX+77YCXz80s5Jicp+MdjDptdFTLGtK5p1HfOSXD0eOTMu7nzvClUuoRJp94IFz8LxSvgm1ebP3LVsX1IiQ3nwY9W0dludw+GmJg9nxg4ZcoUJkyYAMCkSZN48cUX2/x8y/aBYkXBGOO3gYkDubD/hUxdNZUN2bnOiO+Z/88Z5Q1Ehrm5cWw/vswv5fO1JSFO27nccMMNjB8/PtQxrCgYYw7OhJETCHOF8fDCR+DMe5xTTF9Oat5++THZpMVHWG/hIN1999088MADAHz11VcMHz6c4447jokTJzJ06He3KW/ZsoWzzz6bAQMGNE+e157smoIx5qAkRyZz3bDreHzR43w1+MeMHng2fPowHH01RPcgwuvml6f25/dvL2X26mJOHdQz1JH38bf5f2Nl6cp2/c4jko7g18f8us021dXVjBjx3QX/0tJSxo0bt0+7n/zkJ0yePJnjjz+eu+66a49tixcvZtGiRYSHhzNo0CBuuukmsrKy2ucgsJ6CMeYQjB8yntToVB5Y8ACNp//BmdNp7gPN2y/NzSIzMZKHp6+23kILkZGRLF68uHm555579mlTXl7Ozp07Of545/biK664Yo/tp59+OvHx8URERDBkyBA2bNjQrhmtp2CMOWgRnghuHnkzv/30t7xfuY7zR/wY5j8DY34OiX0I87i4+fQB/Or1JUxfvo2zjkwNdeQ9HOg3+lA6UBENDw9vfu12u6mvr2/X/Qe0pyAiZ4vIKhHJE5G7WtmeLSKzRGSRiCwRkXMDmccY036+3/f7HNnjSB5Z+AjVJ93uPL1u5p+bt180MoOc5Ggemr6axkbrLfgrMTGR2NhYvvjiCwCmTp0a1P0HrCiIiBt4EjgHGAJcLiJD9mr2e+A1VR0JXAY8Fag8xpj25RIXE0dPpKiqiBc3TYfjboRv/wNbFgHgcbu45fQBrCzcyX+XFoY4befy7LPPcv3113PcccehqsTHB2+G2oBNnS0ixwF3q+r3fOu/AVDVv7Ro8zSwTlX/5mv/oKq2Mk7/OzZ1tjEdy22zbuOzLZ/x/rmvkjL5DOdZxePfAREaGpWzH5mDAh/eejJul4QsZ2eaOruysrJ5TMNf//pXtm7dyqOPPur35w9n6uxAnj7KADa1WC/wvdfS3cCVIlIAfADcFMA8xpgAuG3UbdQ11vHEihfhlF9B/iewdgYAbpdw6xkDySuqZNo3m0OctPN4//33GTFiBEOHDmXu3Ln8/ve/D9q+A1kUWvuVYO9uyeXAFFXNBM4FXhLZ95mBInK9iCwQkQXFxcUBiGqMOVTZcdlcccQVvLXmLVb1O8mZUG/6H52n0AHnDE3liNRYHv14DfUNjW1/mQHgRz/6EYsXL2bp0qW8//77pKSkBG3fgSwKBUDLm2czgS17tbkOeA1AVecBEUDy3l+kqpNVNVdVc4P5wzHG+Of64dcTFx7H/YseQU/9PWxb6puBFVwu4fYzB7K+pIo3F4a2t9Adbo893GMMZFH4ChggIjkiEoZzIXnaXm02AqcDiMhgnKJgXQFjOpn48Hh+cdQv+HLrl8xNSIG0Ec6dSHXO09vOHNKL4ZnxPDpjDbvrQ9NbiIiIoKSkpEsXBlWlpKSEiIiIQ/6OgD6j2XeL6SOAG3hOVf+fiNwDLFDVab67kZ4BYnBOLf1KVT9q6zvtQrMxHVNdYx0XvXMRIsIbw27D+9IPnGkwTrgFgNmrirjm+a/48w+GcuWxvYOfr66OgoICampqDty4E4uIiCAzMxOv17vH+/5eaA5oUQgEKwrGdFwzN87kllm38Lsxv+OyBa9DwXy4eTFEJaGqXDJpHpvLqpk9cSwRXneo43YrHeHuI2NMN3Nq1qmMTh3NU4ufYucpv4KaHTD3QQBEhDvOHEjhjhpenb8xxEnN/hywKIjIQBF5RkQ+EpGZTUswwhljOhcR4c7cOymvLeeZok9hxBUwf7LzdDfg+P7JHNs3iSdnraV6d0OI05rW+NNT+A+wEGf08cQWizHG7GNIjyGM6zeOl5e/TMEx14K4nGcu+Nxx1iC2V9by4rz1Icto9s+folCvqv9Q1fmq+nXTEvBkxphO66aRN+FxeXhkzVRnkrwl/4atSwAY3SeJkwYkM+mTtVTWtu9kbubw+VMU3hWRG0UkTUSSmpaAJzPGdFq9ontxzZHX8OH6D1l8xFkQmQAf/7F5+x1nDaKsqo4pn+WHMKVpjT9F4Wqc00WfA1/7Frv9xxjTpmuOvIaUyBTuX/IP9MQ7YO1MZwFGZCVw+hE9mTxnHRXVdSFOalo6YFFQ1ZxWlr7BCGeM6byivFHcNPImlmxfwv969Yb4bN/0F87gtdvOHMiOmnqe/dR6Cx2JP3cfeUXkZhF53bdMEBHvgT5njDHj+o3jiKQjeGTxk9Se+hsoXAJLXwdgaEY85wxN5blP8ynbtTvESU0Tf04f/QMYhfOsg6d8r/8RyFDGmK7B7XJzZ+6dbNm1hZddVZA6HGbcC/W1gNNb2LW7nslz14U4qWniT1EYrapXq+pM3/ITYHSggxljuoYxaWMYmzmWZ5b+k5JTJkLFRufRncDAXrGcPzydKZ+tp3hnbYiTGvCvKDSISL+mFRHpC9ioE2OM327PvZ3a+lqeKv8G+p0Gcx+A6nIAbjljALX1DUz6ZG2IUxrwryhMBGaJyGwR+QSYCdwR2FjGmK4kJz6HSwddyutrXifv2J85BeHThwHolxLDhSMzefmLDWzb0bUnq+sM/Ln7aAYwALjZtwxS1VmBDmaM6VpuOOoGoj3RPLjhXRj+I/jiH1BRAMAtpw+goVF5clZeiFOa/RYFETnN9+dFwPeB/kA/4Pu+94wxxm+JEYn8/Kif8+nmT/l86DmAwqz7AMjuEcUPczOZOn8Tm8urQxu0m2urp3CK78/zW1nOC3AuY0wXdPkRl5MZk8n9K16gYfTPYPG/YNsyACacNgCAJ2auCWXEbm+/RUFVm8ak36OqP2m5APcGJ54xpisJc4dx26jbyCvP463MQRAR5wxoAzISIrn8mCz+s6CAjSVVIU7afflzofmNVt57vb2DGGO6hzN7n8nIniN5fNlz7DrhJsibDus+AeCXp/bH7RIenWG9hVBp65rCESJyMRAvIhe1WK7BeZayMcYcNBFhYu5ESmtKeTbSA3GZMP0P0NhIz7gIrjq2N28tKiCvqDLUUbultnoKg3CuHSSw5/WEo4GfBT6aMaarGpYyjHNzzuXFla+w9cSbYOtiWPYmADeM7UeE1229hRBp65rCO77rB+ftdU3hZlX9PIgZjTFd0K1H3wrAozX50GsozLgH6mtJjgnn6uP78N6SLawq3BnilN2PP9cUbhCRhKYVEUkUkecCmMkY0w2kxaQxfsh43s//gKVjroPyDbDA+V/L9Sf1JTrMw8PTV4c4ZffjT1EYrqrlTSuqWgaMDFwkY0x3cd2w60iKSOL+bbPRnJPhk79DTQWJ0WFce2IO/1tWyNLNFaGO2a34UxRcIpLYtOJ76poncJGMMd1FtDeaCSMnsLBoER8PPx+qS+GzRwG47sQc4iO91lsIMn+KwoPA5yJyr4jcg/MEtr8HNpYxpru4sP+F9E/oz8P5b7P7yItg3lOwYwvxkV6uP7kvM1YWsWhjWahjdhv+zH30InAxsA0oBi5S1ZcCHcwY0z14XB7uzL2TTTs38WrOUdBY3zz9xTXH9yEpOoyHrLcQNP70FACSgF2q+jhQLCI5AcxkjOlmTsg4gRMyTuDpNa9Rnns1LH4FilYQHe7hhlP6MnfNdubnl4Y6Zrfgz+M4/wj8GviN7y0v8HIgQxljup87R93JrrpdTIqPhbAY+PhuAK46tg8pseE8+NEqVDW0IbsBf3oKFwLjgF0AqroFiA1kKGNM99M/sT8XD7iYf699h/xjroXV/4P1nxEZ5ubGsf34Mr+Uz9eWhDpml+dPUditTnlWABGJDmwkY0x3deOIGwn3hPOQbofYdJj+f6DK5cdkkxYfYb2FIPCnKLwmIk8DCSLyM+Bj4JnAxjLGdEfJkcn8dNhPmb15DvNH/xg2fw3L3ybC62bCaf1ZuLGc2auLQx2zS/Pn7qMHcGZFfQNnPqQ/+C44G2NMu7tqyFWkRadxf/liGlKOcKa/aKjjh6OyyEyM5OHpq623EEB+3X2kqtNVdaKq3qmq0/39chE5W0RWiUieiNy1nzaXishyEVkmIv/y97uNMV1TuDucW4++lZVlq3j3qPOhdB18PYUwj4ubTx/AkoIKpi/fFuqYXVZbU2d/6vtzp4jsaGXJF5Eb2/i8G3gSOAcYAlwuIkP2ajMA566mE1T1SODWdjgmY0wnd07OOQxPHs7jW2ZR1ecEmP1XqNnBRSMzyEmO5qHpq2lstN5CILQ1S+qJvj9jVTVu7wXIBW5p47uPAfJUdZ2q7gamAhfs1eZnwJO++ZRQ1aLDORhjTNcgIkwcPZGi6iJe6DcKqrbD54/jcbu45fQBrCzcyQdLt4Y6Zpfk1+kjETlRRH7ie50sIjmqWgKMbeNjGcCmFusFvvdaGggMFJHPROQLETl7P/u/XkQWiMiC4mK7yGRMdzCi5wjO6n0Wz2/8kKLB34d5T8DOQs4/Kp0BPWN45OM1NFhvod0dyuC1MHyD11S1rVItrby399+gBxiAU1wuB/7Zcpru5g+pTlbVXFXNTUlJOVBkY0wXceuoW6lvrOfxlJ7QUAez/4LbJdx6xkDyiiqZ9s3mUEfscgI5eK0AyGqxnglsaaXNO6pap6r5wCqcImGMMWTFZvHjwT/mnU0zWXHUxbDwJShexTlDUzkiNZZHP15DfUNjqGN2KYEcvPYVMEBEckQkDLgMmLZXm7eBU33fm4xzOmmdn99vjOkGfjb8Z8SHx/OAtxr1RsHHf8LlEu44axDrS6p4c6H1FtrToQ5e++eBPqSq9cAE4ENgBfCaqi4TkXtEZJyv2YdAiYgsB2YBE33XKowxBoC4sDhuHHEj84sX8cnRF8Gq92HjF5wxuCdHZcbz6Iw17K633kJ7EX8GgYjImcBZONcJPjyYsQrtLTc3VxcsWBCq3RtjQqCusY6Lp12MNjbw5ro8vAnZcN1HzF5dzDXPf8WffzCUK4/tHeqYHZqIfK2quQdqd9CD14CZIvLjw05ojDF+8rq83DHqDtbv3Mhrw78HBfNhxbucMjCFUb0TeWJmHjV1DaGO2SW0NXgtTkR+IyJPiMhZ4piAc87/0uBFNMYYODnzZMakjWFS6SIqkgfCjD8hjfXcceZACnfU8K8vN4Y6YpfQVk/hJZy5jr4Ffgp8BPwQuEBV9x6EZowxASUiTMydSEVtBc8MGA0lebDwRY7vn8yxfZN4avZaqndbb+FwtVUU+qrqNar6NM4YglzgPFVdHJxoxhizp0FJg/hB/x/wStE8NmWPdqa/qK3kjrMGsb2ylhfnrQ91xE6vraJQ1/RCVRuAfFXdGfhIxhizfxNGTsDr8vJwaibsKoJ5TzC6TxInDUhm0idrqaytD3XETq2tonBUi8nvdgLDm16LyI5gBTTGmJZ6RvXk2qHXMr34axYOOg0+ewwqi7jjrEGUVdUx5bP8UEfs1NqaEM/dYgK8WFX1tHg8hqpnAAAbY0lEQVQdF8yQxhjT0tVHXk3PqJ7cHwmN9TUw+6+MyErgjME9mTxnHRXVdQf+EtMqv25JNcaYjiTSE8ktR9/C0oo8Phh6Nnw9BbbncduZA9lRU8+zn1pv4VBZUTDGdErn9T2PwUmDebRhGzXeSJjxJ45Mj+ecoak892k+Zbt2hzpip2RFwRjTKbnExcTREymsLuKlI0+FFdNg03xuO3Mgu3bX8/Qcm0btUFhRMMZ0WqNTR3Na1mn8s3IN22N7wvQ/MLBnDOcPT+eFz9dTvLM21BE7nbZGNO/vMZw77O4jY0xHcXvu7exu2M2T/XNh4zxY9QG3nDGA2voGJn2yNtTxOp227j5qusvoEeAunKemZeI8cOfPwYlnjDFt6x3Xm8uOuIw3K5azOqUffHw3/ZIiuHBkJi9/sYFtO2pCHbFT8ef00fdU9SlV3amqO1T1H8DFgQ5mjDH+uuGoG4jxxvBgeh/YvhoWv8wtpw+goVF5clZeqON1Kv4UhQYR+bGIuEXE5Zsh1SYYMcZ0GPHh8dxw1A18vmMNn2YfBbPuIztW+WFuFlPnb2JzeXWoI3Ya/hSFK3BmRd3mW37oe88YYzqMywZdRnZsNg/ERlBfuQ3mPcVNp/UH4ImZa0KcrvM4YFFQ1fWqeoGqJqtqiqr+QFXXByGbMcb4zev2cvuo21lbtZU3BxwHnz1KuqeSy4/J4rUFBWwo2RXqiJ3CAYuCiKSIyG9FZLKIPNe0BCOcMcYcjNOyT2NUr1E86dpJZX01zPk7vzy1Px6X8OgM6y34w5/TR+8A8TjPZn6/xWKMMR1K0zMXSnfv4J+DjoMFz9GzbjNXHdubtxdtJq+oMtQROzx/ikKUqv5aVV9T1TealoAnM8aYQ3Bk8pGc3/d8Xtq9hc1hETDzXm4Y248Ir9t6C37wpyi8JyLnBjyJMca0k5uPvhmXuHm03whY9hbJ5Uu5+vg+vLdkC6sK7bEwbfGnKNyCUxiq7XkKxpjOIDU6lfFHjue/VRv5Jt6Z/uLnJ+UQE+bh4emrQx2vQ/Pn7qNYVXWpaqQ9T8EY01lcN/Q6kiOTuT+jD7rhUxI2z+baE3P437JClm6uCHW8Dsufu49Obm0JRjhjjDlUUd4obhp5E99UF/JRzz4w/Y9cd0I28ZFe6y20wZ/TRxNbLP8HvAvcHcBMxhjTLi7odwEDEwfycGI8tdtXELfyP1x/cl9mrCxi4cayUMfrkPw5fXR+i+VMYCjOyGZjjOnQ3C43d+beyebdZfwrczDMuo9rRvckKTrMegv7cSjPUyjAKQzGGNPhHZd+HCdnnszk8AZKdxUSvegZbjilL3PXbGd+fmmo43U4/lxTeFxEHvMtTwBzgW8CH80YY9rHHaPuoLqxjn/kDIdPH+Gq4bGkxIbz4EerUNVQx+tQ/OkpLAC+9i3zgF+r6pUBTWWMMe2ob0JfLhl4Cf/RctZpDZHzHuLGsf34Mr+Uz9eWhDpeh+LPNYUXgFdxisI3wPxAhzLGmPZ244gbifRE8VDvIfDVP7liQCNp8RHWW9iLP6ePxgJrgCeBp4DV/t6SKiJni8gqEckTkbvaaHeJiKiI5PqZ2xhjDkpSRBI/G/4zPqkvZV5kJOFz7mPCaf1ZuLGc2auLQx2vw/Dn9NGDwFmqeoqqngx8D3j4QB8SETdOITkHGAJcLiJDWmkXC9wMfHkwwY0x5mD9ePCPyYjJ4IGM3jQsfZ1L07aTmRjJQx+ttt6Cjz9Fwauqq5pWVHU14PXjc8cAeaq6TlV3A1OBC1ppdy/wd8AepGqMCahwdzi3jrqV1XUVTEvqiXfW3dx8Wn++3VzBR8vtTnvw80KziDwrImN9yzM41xcOJAPY1GK9wPdeMxEZCWSp6nt+JzbGmMPwvd7f46iUo3gsKYmq9XO5OG4lOcnRPDx9NY2N1lvwpyj8AliGc4rnFmA5cIMfn5NW3mv+iYuIC+c01B0H/CKR60VkgYgsKC62c3/GmEMnIkwcPZHtDVU8l5qFe8bd3HJaX1YW7uSDpVtDHS/k2iwKvusCz6rqQ6p6kapeqKoPq2qtH99dAGS1WM8EtrRYj8UZBDdbRNYDxwLTWrvYrKqTVTVXVXNTUlL82LUxxuzfUSlHcU6fc3gh0kNhyUrGyVwG9IzhkY/X0NDNewttFgVVbQBSRCTsEL77K2CAiOT4Pn8ZMK3Fd1f4nvvcR1X7AF8A41R1wSHsyxhjDsoto26hUVw8ntEX16z7uP3UbPKKKpn2zeZQRwspf04frQc+E5H/E5Hbm5YDfUhV64EJwIfACuA1VV0mIveIyLjDSm2MMYcpIyaDK4dcyTR3Lctqivhe5TsMTovj0Y/XUN/QGOp4IeNPUdgCvOdrG9tiOSBV/UBVB6pqP1X9f773/qCq01ppO9Z6CcaYYPrpsJ+SFJHE/Rk5yGcP8auTe7K+pIo3F3bf3oLnQA1U9U/BCGKMMcEWGxbLL0f8knu/uJeZrjpOK3qRozLP4dEZa/jByAzCPIcyZ2jn5s+I5ndFZNpey0sicouIRAQjpDHGBMpFAy6iX3w/HkrLpH7+ZH5zXBSby6v594JNB/5wF+RPGVwHVALP+JYdOM9TGOhbN8aYTsvj8nBH7h1sbKxhamw0Yzb8g1G9E3lyZh41dQ2hjhd0/hSFkap6haq+61uuBI5R1V8CRwc4nzHGBNyJGSdyfPrxTEpKYsfSN/jDqDoKd9Twry83hjpa0PlTFFJEJLtpxfe6abDA7oCkMsaYIBIR7si9g0oamJScwlErH+bYvkk8NXst1bu7V2/Bn6JwB/CpiMwSkdk4D9m5U0SigRcCGc4YY4JlYOJALux/IVOjI9iwcS5/OnIb2ytreXHe+lBHCyp/nqfwATAAuNW3DAI+VtVdqvpIgPMZY0zQTBg5gTBPBA/3SmfQtw9wyoAeTPpkLZW19aGOFjT+3H30nKrWquo3qroYcAMfBD6aMcYEV3JkMtcNu44ZYfBV+Wru6bucsqo6pnyWH+poQePP6aPNIvIPABFJBKYDLwc0lTHGhMj4IeNJjUrl/l7pZC1+mLMHJTB5zjoqqutCHS0o/Dl99H/ADhGZBHwEPKiqzwc8mTHGhECEJ4JbRt3CClcD7zds5+60z9lRU8+zc9eFOlpQ7LcoiMhFTQvOc5mPBRYB6nvPGGO6pHNzzuXIHkfySEov4hc/wcWDo3nus/WU7er6N1y21VM4v8VyHk5B8LZYN8aYLsklLiaOnkgRDbwQofwu/n/s2l3P03O6fm9hv3MfqepPghnEGGM6klG9RnFm7zN5jhlcvGwK4weP5YXP13PdiTmkxIaHOl7A+HP30QsiktBiPVFEngtsLGOMCb3bjr6NOnHxREI0d4S9Tm19A5M+WRvqWAHlz91Hw1W1vGlFVcuAkYGLZIwxHUNWXBZXDL6Ct2Ki2LruHX45pJaXv9jAth01oY4WMP4UBZfvVlQARCQJP6bcNsaYruD64dcTFxbH/cnJ/KL+BRoalSdn5YU6VsD4UxQeBD4XkXtF5F7gc+DvgY1ljDEdQ3x4PL8YcSNfhntYUPQFvz6iiFfnb6SgrCrU0QLCn3EKLwKX4EyXXQRcpKovBTqYMcZ0FJcOupQ+sdk8kJLCFZX/xIXyxMyu2Vvw67FCqroMeA14B6hsOWuqMcZ0dV6Xl9tz7yTfLbxbnc+f+6/mP18XsKFkV6ijtTt/7j4aJyJrgHzgE2A98N8A5zLGmA5lbNZYRvfK5akePTij4jkiXfU8OmNNqGO1O396CvfijGZerao5wOnAZwFNZYwxHYyIcOfoiZQLPC87eDDna95etJm8ospQR2tX/hSFOlUtwbkLyaWqs4ARAc5ljDEdzpAeQxjXbxwvJ8QxuOwlkr21Xa634E9RKBeRGGAO8IqIPAp0n8nFjTGmhZtG3oTHFcZjkfBo5mzeW7KFVYU7Qx2r3fhTFC4AqoDbgP8Ba3HmPzLGmG6nV3Qvrhl2HR/GRBNR/gb9wip4ePrqUMdqN/7ckrpLVRtVtR54H3jcdzrJGGO6pWuOvIaU8CQeSIjh4V4f8L9lhSzdXBHqWO2iramzjxWR2SLypoiMFJGlwFJgm4icHbyIxhjTsUR5o7hp1K0sCQ9jU9VMRkVs5aEu0ltoq6fwBHAf8CowE/ipqqYCJwN/CUI2Y4zpsMb1G8cRCf15NDGRvyS9ycyVRSzcWBbqWIetraLgUdWPVPU/QKGqfgGgqiuDE80YYzout8vNncfcxRaPi7kNSzgjak2XuLbQVlFobPG6eq9tGoAsxhjTqYxJG8PYjJN4JiGBiTFTmbummPn5paGOdVjaKgpHicgOEdkJDPe9blofFqR8xhjTod0+eiK1LjeveQu5PPprHvxoFaqd9/fm/RYFVXWrapyqxqqqx/e6ad0bzJDGGNNR5cTncOmgH/F6bCw/ivoPC/OL+Hxt571B068J8Q6ViJwtIqtEJE9E7mpl++0islxElojIDBHpHcg8xhgTCDeM+AXRngiejqrhhpg5nbq3ELCiICJu4EngHGAIcLmIDNmr2SIgV1WHA69jz2kwxnRCiRGJ/HzEL/k0KpKjI95m9cYtzF5dHOpYhySQPYVjgDxVXaequ4GpOKOjm6nqLFVtelLFF0BmAPMYY0zAXD74CjIjU3gs3sPtMf/joY9Wd8reQiCLQgawqcV6ge+9/bmO/UzJLSLXi8gCEVlQXNw5q68xpmsLc4dx2zF3kRcWRkzUDLZtXs9Hy7eFOtZBC2RRkFbea7VsisiVQC5wf2vbVXWyquaqam5KSko7RjTGmPZzZu8zGZk4mCcTovh17Js8PH01jY2dq7cQyKJQAGS1WM8EtuzdSETOAH4HjFPV2gDmMcaYgBIRJh73f5S63RTEfE3dtpV8sHRrqGMdlEAWha+AASKSIyJhwGXAtJYNRGQk8DROQSgKYBZjjAmKYSnDODfrdF6Kj+XWuH/zyMdraOhEvYWAFQXfrKoTgA+BFcBrqrpMRO4RkXG+ZvcDMcB/RGSxiEzbz9cZY0yncesxvwaXh8/i8kkoXsC0bzaHOpLfPIH8clX9APhgr/f+0OL1GYHcvzHGhEJaTBrjB1/FM8uncF/Cqzw4fSTnD0/H4w7o0LB20fETGmNMJ3TdiBtIckfxekIFg8pn8+bCztFbsKJgjDEBEO2NZkLu7SyMiOC0pNd54uMV7K5vPPAHQ8yKgjHGBMiFAy+mf2QqUxIaOWHXe/x7waYDfyjErCgYY0yAeFweJp5wNwVeL717/JfnZ3xLTV1DqGO1yYqCMcYE0PEZJ3BC0lBejA/jrNqp/OvLjaGO1CYrCsYYE2B3nngvu9wu6lPm8e9ZC6je3XF7C1YUjDEmwPon9ueS3mfzRmwk5za+wIvz1oc60n5ZUTDGmCC4ccxdhLs85KWs5L+z51BZWx/qSK2yomCMMUHQI7IHPz3yJ8yOjuR07/NM+Sw/1JFaZUXBGGOC5KoRN5DujmZO8ja+mPM+FdV1oY60DysKxhgTJOHucG455lesDA9jVPQLPDtnbagj7cOKgjHGBNE5Ay5keGQq7ybVkDdvKmW7doc60h6sKBhjTBCJCBNP/gvFHg8Z8a8x+ZPVoY60BysKxhgTZCNSczkraSjvJAjbv5pE8c6O83wxKwrGGBMCt57yd+rFhfaYzrMzl4Y6TjMrCsYYEwJZcVlcmf09PorxsmvJA2zbURPqSIAVBWOMCZmfnvgH4sTDppSFPP/h/FDHAawoGGNMyMSFxfHLIT/h68gwqvLuo6CsKtSRrCgYY0woXTLqRnpLFAuT1/PKBx+HOo4VBWOMCSWvy8vEY3/LhjAvFVv/xoaSXSHNY0XBGGNC7OQB48gN68mcpDKmvjs1pFmsKBhjTIiJCHedej87XC62VTxB3radIctiRcEYYzqAQalH8/24wcyKr+ONaY+HLIcVBWOM6SBuO/NRvAp5u//Fqi1lIclgRcEYYzqInrHpXJV2Kl/ECG+888eQZLCiYIwxHchPT/8byQ3CQtfHfLt+S9D3b0XBGGM6kEhvFDcOuopVEW5e/+D2oO/fioIxxnQwFx9/B/0awvgsfAlfrVge1H1bUTDGmA7GJS7uPObXbPO4eW3WbcHdd1D3Zowxxi8nDr2U0Q0JzIks4JOvZwdtvwEtCiJytoisEpE8Ebmrle3hIvJv3/YvRaRPIPMYY0xn8uvTH6BWhKnzf4uqBmWfASsKIuIGngTOAYYAl4vIkL2aXQeUqWp/4GHgb4HKY4wxnc2g3mM4Q3rzeeQO3p/zSlD2GciewjFAnqquU9XdwFTggr3aXAC84Hv9OnC6iEgAMxljTKcy8fyniG5U/rXyQRobGgK+v0AWhQxgU4v1At97rbZR1XqgAugRwEzGGNOp9ErqzXnho/g2op6X/xf4kymBLAqt/ca/90kxf9ogIteLyAIRWVBcXNwu4YwxprO45cInOaomnDBvZMD35QngdxcAWS3WM4G9h+c1tSkQEQ8QD5Tu/UWqOhmYDJCbmxucqy3GGNNBREfF8vLPFwRlX4HsKXwFDBCRHBEJAy4Dpu3VZhpwte/1JcBMDdYldmOMMfsIWE9BVetFZALwIeAGnlPVZSJyD7BAVacBzwIviUgeTg/hskDlMcYYc2CBPH2Eqn4AfLDXe39o8boG+GEgMxhjjPGfjWg2xhjTzIqCMcaYZlYUjDHGNLOiYIwxppkVBWOMMc2ksw0LEJFiYMMhfjwZ2N6OcToDO+buwY65ezicY+6tqikHatTpisLhEJEFqpob6hzBZMfcPdgxdw/BOGY7fWSMMaaZFQVjjDHNultRmBzqACFgx9w92DF3DwE/5m51TcEYY0zbultPwRhjTBu6ZFEQkbNFZJWI5InIXa1sDxeRf/u2fykifYKfsn35ccy3i8hyEVkiIjNEpHcocranAx1zi3aXiIiKSKe/U8WfYxaRS31/18tE5F/Bztje/PhvO1tEZonIIt9/3+eGImd7EZHnRKRIRJbuZ7uIyGO+n8cSETm6XQOoapdacKbpXgv0BcKAb4Ahe7W5EZjke30Z8O9Q5w7CMZ8KRPle/6I7HLOvXSwwB/gCyA117iD8PQ8AFgGJvvWeoc4dhGOeDPzC93oIsD7UuQ/zmE8GjgaW7mf7ucB/cZ5ceSzwZXvuvyv2FI4B8lR1naruBqYCF+zV5gLgBd/r14HTRaS1R4N2Fgc8ZlWdpapVvtUvcJ6E15n58/cMcC/wd6AmmOECxJ9j/hnwpKqWAahqUZAztjd/jlmBON/rePZ9wmOnoqpzaOUJlC1cALyoji+ABBFJa6/9d8WikAFsarFe4Huv1TaqWg9UAD2Cki4w/Dnmlq7D+U2jMzvgMYvISCBLVd8LZrAA8ufveSAwUEQ+E5EvROTsoKULDH+O+W7gShEpwHl+y03BiRYyB/vv/aAE9CE7IdLab/x732LlT5vOxO/jEZErgVzglIAmCrw2j1lEXMDDwDXBChQE/vw9e3BOIY3F6Q3OFZGhqloe4GyB4s8xXw5MUdUHReQ4nKc5DlXVxsDHC4mA/v+rK/YUCoCsFuuZ7NudbG4jIh6cLmdb3bWOzp9jRkTOAH4HjFPV2iBlC5QDHXMsMBSYLSLrcc69TuvkF5v9/W/7HVWtU9V8YBVOkeis/Dnm64DXAFR1HhCBM0dQV+XXv/dD1RWLwlfAABHJEZEwnAvJ0/ZqMw242vf6EmCm+q7gdFIHPGbfqZSncQpCZz/PDAc4ZlWtUNVkVe2jqn1wrqOMU9UFoYnbLvz5b/ttnJsKEJFknNNJ64Kasn35c8wbgdMBRGQwTlEoDmrK4JoGjPfdhXQsUKGqW9vry7vc6SNVrReRCcCHOHcuPKeqy0TkHmCBqk4DnsXpYubh9BAuC13iw+fnMd8PxAD/8V1T36iq40IW+jD5ecxdip/H/CFwlogsBxqAiapaErrUh8fPY74DeEZEbsM5jXJNZ/4lT0RexTn9l+y7TvJHwAugqpNwrpucC+QBVcBP2nX/nfhnZ4wxpp11xdNHxhhjDpEVBWOMMc2sKBhjjGlmRcEYY0wzKwrGGGOaWVEwnYaI/M438+cSEVksImN87/9TRIYEYH+VB9n+hyKyQkRm+dZf9WW9TUTu8Q0e3N9nc0XkscPNbMzhsltSTafgm77gIWCsqtb6BmaFqWrAJj8TkUpVjTmI9v8D/qaqs0QkFWf2yk4/RbnpXqynYDqLNGB70/Qcqrq9qSCIyOym6StE5DoRWe177xkRecL3/hTfHPSfi8g6EbnE936MOM+XWCgi34pIazOt7kFErhSR+b7eytMi4haRPwAnApNE5H7gI6Cnr81Jvv037XO0L8c3vu+JFZGxIvKeb3u0b079r8R5RsAFvvevEZE3ReR/IrJGRP7eItPZvmP4xnc8Ll+bFN92lzjz73fl6R9Mewj13OG22OLPgjMaezGwGngKOKXFttk4k/ylA+uBJJwRoHOBJ3xtpgD/wflFaAjOdMzgjOqP871Oxhkl2tSDrmwlx2DgXcDrW38KGN8yh+91H1rMh+/b/yU4zwRYB4z2vR/nyzAWeM/33n3Alb7XCb5jjsaZ3G8dzlxdEcAGnDlwUnBmzczxfSbJ9+cfgVt9r88C3gj136MtHX+xnoLpFFS1EhgFXI8zr82/ReSavZodA3yiqqWqWodTBFp6W1UbVXU50Mv3ngD3icgS4GOcKYh7sX+n+3J8JSKLfet9D+JQBgFbVfUr33HtUGf69pbOAu7yff9snAKQ7ds2Q515nWqA5UBvnMn+5qgzAR6q2jS543PAeN/ra4HnDyKn6aa63NxHputS1Qac/0nOFpFvcSY1nNKiyYEelNRyZtimtj/G+U17lKrW+WZUjWjjOwR4QVV/43/yfT5/oAt5Alysqqv2eNO5sN7yGBpw/g23+p2quklEtonIacAYnGM1pk3WUzCdgogMEpGWU0CPwDl90tJ84BQRSRRnSvSL/fjqeKDIVxBOxfnNuy0zgEtEpKcvV5Ic3POuVwLpIjLa9/lYX9aWPgRuEt/MheLMcNuWeTjHndOUqcW2fwIvA6/5iqoxbbKeguksYoDHRSQBqMc59399ywaqullE7gO+xJlffjnOU/Xa8grwrogswLlmsbKtxqq6XER+D3wkzoN86oBfsm+B2t/nd4vIj3zHEglUA3vfqnov8AiwxFcY1gPntfGdxSJyPfCmL1MRcKZv8zSc00Z26sj4xW5JNV2KiMSoaqXvt++3cKZafivUuULFd1fWw6p6UqizmM7BTh+ZruZu3wXapUA+zkNnuiURuQt4AzjU6x+mG7KegjHGmGbWUzDGGNPMioIxxphmVhSMMcY0s6JgjDGmmRUFY4wxzawoGGOMafb/AdTa9nWqDOAbAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import roc_curve\n", "\n", "\n", "%matplotlib inline \n", "\n", "fpr, tpr, _ = roc_curve(y_test, y_pred)\n", "fpr_low, tpr_low, _ = roc_curve(y_test, y_low_pred)\n", "fpr_high, tpr_high, _ = roc_curve(y_test, y_high_pred)\n", "plt.figure(1)\n", "plt.plot(tpr, 1-fpr, label='Full')\n", "plt.plot(tpr_low, 1-fpr_low, label='Low')\n", "plt.plot(tpr_high, 1-fpr_high, label='High')\n", "plt.legend(loc=1)\n", "plt.xlabel('Signal efficiency')\n", "plt.ylabel('Background Rejection')\n", "plt.savefig(\"SUSY_roc_XGBoost.pdf\")\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimizing XGBoost\n", "\n", "We will now optimize the parameters of the XGBoost algorithm by performing a grid search. We will use the very useful new function from scikit-learn `GridSearchCV()`. This function allows you to specify lists of parameters to search over.\n", "\n", "Let us briefly discuss what parameters we can tune to improve performance with descriptions:\n", "\n", "* `max_depth` [default=6]: maximum depth of a tree, increasing this value will make the model more complex / likely to overfit.\n", "\n", "* `eta` or 'learning_rate'[default =0.3]: step size shrinkage used in update to prevent overfitting. After each boosting step, we can directly get the weights of new features. `eta` actually shrinks the feature weights to make the boosting process more conservative.\n", "\n", "* `gamma` or min-split-loss [default=0]: This is the penalty that regularizes the number of leaves. The larger, the more conservative the algorithm will be. \n", "\n", "* `min_child_weight` [default=1]: In linear regression mode, this simply corresponds to the minimum number of instances needed to be in each node (min $B_j$ in notation of manuscript). The larger, the more conservative the algorithm will be. More generally, it is the minimum sum of instance weight (Hessian) needed in a child. If the tree partition step results in a leaf node with the sum of instance weight less than min_child_weight, then the building process will give up further partitioning. \n", "\n", "\n", "As you can see this cross-validation procedure is quite computationally expensive. With the parameters below, it takes somewhere between 2 and 5 minutes on a powerful laptop. In the cell below, we perform the search and examine the results in the subsequent results." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": false }, "outputs": [], "source": [ "from sklearn.model_selection import GridSearchCV \n", "\n", "#Create values to search over\n", "cv_params = {'max_depth': [3,4,6], 'min_child_weight': [1,3,5], 'learning_rate':[0.1,0.3]}\n", "ind_params = {'n_estimators': 100, 'seed':1, 'colsample_bytree': 1, \n", " 'objective': 'binary:logistic'}\n", "opt_XGBclassifier = GridSearchCV(xgb.XGBClassifier(**ind_params), \n", " cv_params, \n", " scoring = 'accuracy', cv = 5, n_jobs = -1, verbose=3)\n", "\n", "opt_XGBclassifier.fit(X_train, y_train)\n", "opt_XGBclassifier.grid_scores_" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The optimal score on training set is 0.797\n", "The optimal parameters for the classifier are:\n", "{'learning_rate': 0.1, 'max_depth': 6, 'min_child_weight': 3}\n", "Model Accuray with optimal parameters: 79.78%\n", "The AUC score is 0.79\n" ] } ], "source": [ "#Print scores\n", "print('The optimal score on training set is {:0.3f}'.format(opt_XGBclassifier.best_score_))\n", "\n", "#Find optimal parameters\n", "\n", "print('The optimal parameters for the classifier are:')\n", "print(opt_XGBclassifier.best_params_)\n", "\n", "#Fit performance on the test set\n", "XGBclassifier_final=opt_XGBclassifier.best_estimator_\n", "y_pred_final=XGBclassifier_final.predict(X_test)\n", "print(\"Model Accuray with optimal parameters: {:.2f}%\".format(100*XGBclassifier_final.score(X_test, y_test)))\n", "print(\"The AUC score is {:.2f}\".format(roc_auc_score(y_test,y_pred_final)))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Further Optimization: early stopping and computational efficiency\n", "\n", "We see that we have slightly improved our performance. The default parameters work pretty well. Here, we have used relatively small ensembles (100) to make things faster. In practice, it is worth using much bigger ensembles, in which case overfitting and optimization are likely to have larger effects.\n", "\n", "Following this very nice blog post, [https://jessesw.com/XG-Boost/](https://jessesw.com/XG-Boost/), we can do some further optimization of the XGBoost algorithm. Part of this is computational and has to do with how we interface with XGBoost, and part will be due to another regularization technique that we discussed in the gradient descent chapter: *early stopping*. Early stopping is now considered one of the most important regularization techniques. The basic idea behind it is to just stop the gradient descent once some measure of error stops going down significantly. \n", "\n", "You are invited to play with the code and experiment with this yourself.\n" ] } ], "metadata": { "anaconda-cloud": {}, "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.7.1" } }, "nbformat": 4, "nbformat_minor": 1 }