{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Feature Selection for Uplift Modeling\n", " \n", " \n", "This notebook includes two sections: \n", "- **Feature selection**: demonstrate how to use Filter methods to select the most important numeric features\n", "- **Performance evaluation**: evaluate the AUUC performance with top features dataset\n", " \n", "*(Paper reference: [Zhao, Zhenyu, et al. \"Feature Selection Methods for Uplift Modeling.\" arXiv preprint arXiv:2005.03447 (2020).](https://arxiv.org/abs/2005.03447))*" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "The sklearn.utils.testing module is deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.utils. Anything that cannot be imported from sklearn.utils is now part of the private API.\n" ] } ], "source": [ "from causalml.dataset import make_uplift_classification" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Import FilterSelect class for Filter methods" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from causalml.feature_selection.filters import FilterSelect" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from causalml.inference.tree import UpliftRandomForestClassifier\n", "from causalml.inference.meta import BaseXRegressor, BaseRRegressor, BaseSRegressor, BaseTRegressor\n", "from causalml.metrics import plot_gain, auuc_score" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "from sklearn.ensemble import RandomForestRegressor" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "import logging\n", "\n", "logger = logging.getLogger('causalml')\n", "logging.basicConfig(level=logging.INFO)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Generate dataset\n", "\n", "Generate synthetic data using the built-in function." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# define parameters for simulation\n", "\n", "y_name = 'conversion'\n", "treatment_group_keys = ['control', 'treatment1']\n", "n = 100000\n", "n_classification_features = 50\n", "n_classification_informative = 10\n", "n_classification_repeated = 0\n", "n_uplift_increase_dict = {'treatment1': 8}\n", "n_uplift_decrease_dict = {'treatment1': 4}\n", "delta_uplift_increase_dict = {'treatment1': 0.1}\n", "delta_uplift_decrease_dict = {'treatment1': -0.1}\n", "\n", "random_seed = 20200808" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "df, X_names = make_uplift_classification(\n", " treatment_name=treatment_group_keys,\n", " y_name=y_name,\n", " n_samples=n,\n", " n_classification_features=n_classification_features,\n", " n_classification_informative=n_classification_informative,\n", " n_classification_repeated=n_classification_repeated,\n", " n_uplift_increase_dict=n_uplift_increase_dict,\n", " n_uplift_decrease_dict=n_uplift_decrease_dict,\n", " delta_uplift_increase_dict = delta_uplift_increase_dict, \n", " delta_uplift_decrease_dict = delta_uplift_decrease_dict,\n", " random_seed=random_seed\n", ")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
treatment_group_keyx1_informativex2_informativex3_informativex4_informativex5_informativex6_informativex7_informativex8_informativex9_informative...x56_uplift_increasex57_uplift_increasex58_uplift_increasex59_increase_mixx60_uplift_decreasex61_uplift_decreasex62_uplift_decreasex63_uplift_decreaseconversiontreatment_effect
0control0.653960-0.2176031.856916-0.0756620.080971-0.338374-1.0114700.5280000.115418...1.533832-2.1830011.8396080.7553021.835047-0.458431-1.9275252.76533100
1control3.4396580.477855-0.377658-1.3171210.861815-0.3931800.5037272.3238461.229948...-1.192333-1.5818152.4237002.3969040.296043-1.961940-1.4447251.46921310
2treatment10.130907-0.3335360.474847-0.352067-0.0245021.4371050.566178-0.2325080.866236...-0.301982-0.9338160.4752741.5409940.6980660.545091-0.084405-2.33734710
3treatment1-2.1566831.1201980.174293-1.7414260.4889930.638340-0.7219281.8021341.097178...-2.129098-1.1835810.0003181.105735-0.629281-0.737041-1.5250811.41604200
4control-2.708572-0.799698-2.1995950.5740770.083142-0.3891401.4921011.7252021.194315...1.582041-1.1760771.6863220.4800351.7807100.8620940.128872-2.85134400
\n", "

5 rows × 66 columns

\n", "
" ], "text/plain": [ " treatment_group_key x1_informative x2_informative x3_informative \\\n", "0 control 0.653960 -0.217603 1.856916 \n", "1 control 3.439658 0.477855 -0.377658 \n", "2 treatment1 0.130907 -0.333536 0.474847 \n", "3 treatment1 -2.156683 1.120198 0.174293 \n", "4 control -2.708572 -0.799698 -2.199595 \n", "\n", " x4_informative x5_informative x6_informative x7_informative \\\n", "0 -0.075662 0.080971 -0.338374 -1.011470 \n", "1 -1.317121 0.861815 -0.393180 0.503727 \n", "2 -0.352067 -0.024502 1.437105 0.566178 \n", "3 -1.741426 0.488993 0.638340 -0.721928 \n", "4 0.574077 0.083142 -0.389140 1.492101 \n", "\n", " x8_informative x9_informative ... x56_uplift_increase \\\n", "0 0.528000 0.115418 ... 1.533832 \n", "1 2.323846 1.229948 ... -1.192333 \n", "2 -0.232508 0.866236 ... -0.301982 \n", "3 1.802134 1.097178 ... -2.129098 \n", "4 1.725202 1.194315 ... 1.582041 \n", "\n", " x57_uplift_increase x58_uplift_increase x59_increase_mix \\\n", "0 -2.183001 1.839608 0.755302 \n", "1 -1.581815 2.423700 2.396904 \n", "2 -0.933816 0.475274 1.540994 \n", "3 -1.183581 0.000318 1.105735 \n", "4 -1.176077 1.686322 0.480035 \n", "\n", " x60_uplift_decrease x61_uplift_decrease x62_uplift_decrease \\\n", "0 1.835047 -0.458431 -1.927525 \n", "1 0.296043 -1.961940 -1.444725 \n", "2 0.698066 0.545091 -0.084405 \n", "3 -0.629281 -0.737041 -1.525081 \n", "4 1.780710 0.862094 0.128872 \n", "\n", " x63_uplift_decrease conversion treatment_effect \n", "0 2.765331 0 0 \n", "1 1.469213 1 0 \n", "2 -2.337347 1 0 \n", "3 1.416042 0 0 \n", "4 -2.851344 0 0 \n", "\n", "[5 rows x 66 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "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", "
meansize
conversionconversion
treatment_group_key
control0.499050100000
treatment10.599680100000
All0.549365200000
\n", "
" ], "text/plain": [ " mean size\n", " conversion conversion\n", "treatment_group_key \n", "control 0.499050 100000\n", "treatment1 0.599680 100000\n", "All 0.549365 200000" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Look at the conversion rate and sample size in each group\n", "df.pivot_table(values='conversion',\n", " index='treatment_group_key',\n", " aggfunc=[np.mean, np.size],\n", " margins=True)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "['x1_informative', 'x2_informative', 'x3_informative', 'x4_informative', 'x5_informative', 'x6_informative', 'x7_informative', 'x8_informative', 'x9_informative', 'x10_informative', 'x11_irrelevant', 'x12_irrelevant', 'x13_irrelevant', 'x14_irrelevant', 'x15_irrelevant', 'x16_irrelevant', 'x17_irrelevant', 'x18_irrelevant', 'x19_irrelevant', 'x20_irrelevant', 'x21_irrelevant', 'x22_irrelevant', 'x23_irrelevant', 'x24_irrelevant', 'x25_irrelevant', 'x26_irrelevant', 'x27_irrelevant', 'x28_irrelevant', 'x29_irrelevant', 'x30_irrelevant', 'x31_irrelevant', 'x32_irrelevant', 'x33_irrelevant', 'x34_irrelevant', 'x35_irrelevant', 'x36_irrelevant', 'x37_irrelevant', 'x38_irrelevant', 'x39_irrelevant', 'x40_irrelevant', 'x41_irrelevant', 'x42_irrelevant', 'x43_irrelevant', 'x44_irrelevant', 'x45_irrelevant', 'x46_irrelevant', 'x47_irrelevant', 'x48_irrelevant', 'x49_irrelevant', 'x50_irrelevant', 'x51_uplift_increase', 'x52_uplift_increase', 'x53_uplift_increase', 'x54_uplift_increase', 'x55_uplift_increase', 'x56_uplift_increase', 'x57_uplift_increase', 'x58_uplift_increase', 'x59_increase_mix', 'x60_uplift_decrease', 'x61_uplift_decrease', 'x62_uplift_decrease', 'x63_uplift_decrease']" ], "text/plain": [ "['x1_informative',\n", " 'x2_informative',\n", " 'x3_informative',\n", " 'x4_informative',\n", " 'x5_informative',\n", " 'x6_informative',\n", " 'x7_informative',\n", " 'x8_informative',\n", " 'x9_informative',\n", " 'x10_informative',\n", " 'x11_irrelevant',\n", " 'x12_irrelevant',\n", " 'x13_irrelevant',\n", " 'x14_irrelevant',\n", " 'x15_irrelevant',\n", " 'x16_irrelevant',\n", " 'x17_irrelevant',\n", " 'x18_irrelevant',\n", " 'x19_irrelevant',\n", " 'x20_irrelevant',\n", " 'x21_irrelevant',\n", " 'x22_irrelevant',\n", " 'x23_irrelevant',\n", " 'x24_irrelevant',\n", " 'x25_irrelevant',\n", " 'x26_irrelevant',\n", " 'x27_irrelevant',\n", " 'x28_irrelevant',\n", " 'x29_irrelevant',\n", " 'x30_irrelevant',\n", " 'x31_irrelevant',\n", " 'x32_irrelevant',\n", " 'x33_irrelevant',\n", " 'x34_irrelevant',\n", " 'x35_irrelevant',\n", " 'x36_irrelevant',\n", " 'x37_irrelevant',\n", " 'x38_irrelevant',\n", " 'x39_irrelevant',\n", " 'x40_irrelevant',\n", " 'x41_irrelevant',\n", " 'x42_irrelevant',\n", " 'x43_irrelevant',\n", " 'x44_irrelevant',\n", " 'x45_irrelevant',\n", " 'x46_irrelevant',\n", " 'x47_irrelevant',\n", " 'x48_irrelevant',\n", " 'x49_irrelevant',\n", " 'x50_irrelevant',\n", " 'x51_uplift_increase',\n", " 'x52_uplift_increase',\n", " 'x53_uplift_increase',\n", " 'x54_uplift_increase',\n", " 'x55_uplift_increase',\n", " 'x56_uplift_increase',\n", " 'x57_uplift_increase',\n", " 'x58_uplift_increase',\n", " 'x59_increase_mix',\n", " 'x60_uplift_decrease',\n", " 'x61_uplift_decrease',\n", " 'x62_uplift_decrease',\n", " 'x63_uplift_decrease']" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_names" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Feature selection with Filter methods" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### method = F (F statistics)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "filter_f = FilterSelect() " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " method feature rank score p_value \\\n", "0 F filter x57_uplift_increase 1.0 1973.380496 0.000000e+00 \n", "0 F filter x51_uplift_increase 2.0 1885.342364 0.000000e+00 \n", "0 F filter x54_uplift_increase 3.0 1496.254091 0.000000e+00 \n", "0 F filter x58_uplift_increase 4.0 1269.167710 4.224019e-277 \n", "0 F filter x9_informative 5.0 677.066204 5.151887e-149 \n", "0 F filter x63_uplift_decrease 6.0 9.108409 2.544691e-03 \n", "0 F filter x61_uplift_decrease 7.0 5.978189 1.448472e-02 \n", "0 F filter x19_irrelevant 8.0 5.295584 2.138059e-02 \n", "0 F filter x46_irrelevant 9.0 5.237353 2.210792e-02 \n", "0 F filter x27_irrelevant 10.0 4.573196 3.247713e-02 \n", "0 F filter x11_irrelevant 11.0 4.297030 3.818027e-02 \n", "0 F filter x39_irrelevant 12.0 4.009421 4.524803e-02 \n", "0 F filter x42_irrelevant 13.0 3.788770 5.159896e-02 \n", "0 F filter x60_uplift_decrease 14.0 3.089516 7.879975e-02 \n", "0 F filter x53_uplift_increase 15.0 2.884902 8.941499e-02 \n", "0 F filter x18_irrelevant 16.0 2.863763 9.059688e-02 \n", "0 F filter x22_irrelevant 17.0 2.402012 1.211809e-01 \n", "0 F filter x62_uplift_decrease 18.0 2.310073 1.285396e-01 \n", "0 F filter x40_irrelevant 19.0 2.262581 1.325346e-01 \n", "0 F filter x14_irrelevant 20.0 2.152103 1.423763e-01 \n", "0 F filter x8_informative 21.0 1.947212 1.628892e-01 \n", "0 F filter x33_irrelevant 22.0 1.691045 1.934648e-01 \n", "0 F filter x47_irrelevant 23.0 1.622995 2.026761e-01 \n", "0 F filter x28_irrelevant 24.0 1.525337 2.168150e-01 \n", "0 F filter x7_informative 25.0 1.206987 2.719311e-01 \n", "0 F filter x59_increase_mix 26.0 1.199216 2.734798e-01 \n", "0 F filter x20_irrelevant 27.0 1.176234 2.781252e-01 \n", "0 F filter x41_irrelevant 28.0 1.119234 2.900848e-01 \n", "0 F filter x3_informative 29.0 1.011457 3.145553e-01 \n", "0 F filter x16_irrelevant 30.0 0.999273 3.174877e-01 \n", ".. ... ... ... ... ... \n", "0 F filter x2_informative 34.0 0.775075 3.786527e-01 \n", "0 F filter x45_irrelevant 35.0 0.746410 3.876164e-01 \n", "0 F filter x31_irrelevant 36.0 0.670080 4.130248e-01 \n", "0 F filter x55_uplift_increase 37.0 0.609454 4.349944e-01 \n", "0 F filter x34_irrelevant 38.0 0.606343 4.361689e-01 \n", "0 F filter x44_irrelevant 39.0 0.563659 4.527906e-01 \n", "0 F filter x12_irrelevant 40.0 0.531649 4.659151e-01 \n", "0 F filter x4_informative 41.0 0.412528 5.206899e-01 \n", "0 F filter x26_irrelevant 42.0 0.348929 5.547207e-01 \n", "0 F filter x48_irrelevant 43.0 0.348312 5.550711e-01 \n", "0 F filter x25_irrelevant 44.0 0.333696 5.634916e-01 \n", "0 F filter x24_irrelevant 45.0 0.330729 5.652307e-01 \n", "0 F filter x23_irrelevant 46.0 0.327771 5.669751e-01 \n", "0 F filter x52_uplift_increase 47.0 0.316966 5.734374e-01 \n", "0 F filter x37_irrelevant 48.0 0.246766 6.193618e-01 \n", "0 F filter x15_irrelevant 49.0 0.225643 6.347740e-01 \n", "0 F filter x29_irrelevant 50.0 0.196632 6.574534e-01 \n", "0 F filter x38_irrelevant 51.0 0.109701 7.404853e-01 \n", "0 F filter x35_irrelevant 52.0 0.101365 7.501982e-01 \n", "0 F filter x10_informative 53.0 0.094686 7.583024e-01 \n", "0 F filter x21_irrelevant 54.0 0.056172 8.126528e-01 \n", "0 F filter x43_irrelevant 55.0 0.043168 8.354093e-01 \n", "0 F filter x13_irrelevant 56.0 0.013480 9.075699e-01 \n", "0 F filter x49_irrelevant 57.0 0.008037 9.285639e-01 \n", "0 F filter x17_irrelevant 58.0 0.005137 9.428651e-01 \n", "0 F filter x30_irrelevant 59.0 0.004151 9.486301e-01 \n", "0 F filter x50_irrelevant 60.0 0.001379 9.703808e-01 \n", "0 F filter x36_irrelevant 61.0 0.001062 9.740069e-01 \n", "0 F filter x6_informative 62.0 0.000428 9.834997e-01 \n", "0 F filter x5_informative 63.0 0.000076 9.930457e-01 \n", "\n", " misc \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", ".. ... \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "0 df_num: 1.0, df_denom: 199996.0 \n", "\n", "[63 rows x 6 columns]\n" ] } ], "source": [ "method = 'F'\n", "f_imp = filter_f.get_importance(df, X_names, y_name, method, \n", " treatment_group = 'treatment1')\n", "print(f_imp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### method = LR (likelihood ratio test)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.683141\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683138\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683140\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683138\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683140\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683141\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683141\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683138\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683140\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683135\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.570527\n", " Iterations 6\n", "Optimization terminated successfully.\n", " Current function value: 0.568449\n", " Iterations 6\n", "Optimization terminated successfully.\n", " Current function value: 0.683141\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683141\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683138\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683127\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683141\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683140\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683134\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683140\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683136\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683136\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683136\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683129\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683137\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683135\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683138\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683138\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683137\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683131\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683141\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683140\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683136\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683125\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683138\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683136\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683136\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683141\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683139\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683137\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683135\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683139\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683137\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683135\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683138\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683138\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683141\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683140\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683136\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683126\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683140\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683135\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.683140\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683133\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683141\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683141\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683140\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683141\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683139\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683126\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683113\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683138\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683134\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.678404\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.673481\n", " Iterations 5\n", "Optimization terminated successfully.\n", " Current function value: 0.683139\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683139\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683136\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.678797\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.674807\n", " Iterations 5\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683141\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683139\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.678449\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.673272\n", " Iterations 5\n", "Optimization terminated successfully.\n", " Current function value: 0.679964\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.676614\n", " Iterations 5\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683140\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683142\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683134\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683128\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683137\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683143\n", " Iterations 4\n", "Optimization terminated successfully.\n", " Current function value: 0.683120\n", " Iterations 4\n", " method feature rank score p_value misc\n", "0 LR filter x57_uplift_increase 1.0 2070.582853 0.000000 df: 1\n", "0 LR filter x51_uplift_increase 2.0 1969.081668 0.000000 df: 1\n", "0 LR filter x54_uplift_increase 3.0 1596.059562 0.000000 df: 1\n", "0 LR filter x58_uplift_increase 4.0 1339.970602 0.000000 df: 1\n", "0 LR filter x9_informative 5.0 830.925812 0.000000 df: 1\n", "0 LR filter x63_uplift_decrease 6.0 9.149363 0.002488 df: 1\n", "0 LR filter x61_uplift_decrease 7.0 6.013194 0.014199 df: 1\n", "0 LR filter x46_irrelevant 8.0 5.484790 0.019183 df: 1\n", "0 LR filter x19_irrelevant 9.0 5.345715 0.020773 df: 1\n", "0 LR filter x27_irrelevant 10.0 4.433104 0.035248 df: 1\n", "0 LR filter x11_irrelevant 11.0 4.422047 0.035477 df: 1\n", "0 LR filter x39_irrelevant 12.0 3.874147 0.049035 df: 1\n", "0 LR filter x42_irrelevant 13.0 3.735743 0.053260 df: 1\n", "0 LR filter x60_uplift_decrease 14.0 3.138529 0.076463 df: 1\n", "0 LR filter x53_uplift_increase 15.0 2.865203 0.090514 df: 1\n", "0 LR filter x18_irrelevant 16.0 2.840988 0.091888 df: 1\n", "0 LR filter x22_irrelevant 17.0 2.504072 0.113552 df: 1\n", "0 LR filter x62_uplift_decrease 18.0 2.317535 0.127923 df: 1\n", "0 LR filter x14_irrelevant 19.0 2.226707 0.135643 df: 1\n", "0 LR filter x40_irrelevant 20.0 2.197060 0.138274 df: 1\n", "0 LR filter x8_informative 21.0 1.884233 0.169854 df: 1\n", "0 LR filter x47_irrelevant 22.0 1.698939 0.192427 df: 1\n", "0 LR filter x33_irrelevant 23.0 1.676522 0.195387 df: 1\n", "0 LR filter x28_irrelevant 24.0 1.493135 0.221731 df: 1\n", "0 LR filter x7_informative 25.0 1.249156 0.263714 df: 1\n", "0 LR filter x59_increase_mix 26.0 1.197540 0.273814 df: 1\n", "0 LR filter x41_irrelevant 27.0 1.139287 0.285803 df: 1\n", "0 LR filter x20_irrelevant 28.0 1.109899 0.292104 df: 1\n", "0 LR filter x1_informative 29.0 1.014855 0.313743 df: 1\n", "0 LR filter x3_informative 30.0 0.992359 0.319166 df: 1\n", ".. ... ... ... ... ... ...\n", "0 LR filter x32_irrelevant 34.0 0.764228 0.382009 df: 1\n", "0 LR filter x2_informative 35.0 0.732987 0.391917 df: 1\n", "0 LR filter x31_irrelevant 36.0 0.705755 0.400857 df: 1\n", "0 LR filter x55_uplift_increase 37.0 0.598018 0.439335 df: 1\n", "0 LR filter x44_irrelevant 38.0 0.590518 0.442219 df: 1\n", "0 LR filter x34_irrelevant 39.0 0.556178 0.455804 df: 1\n", "0 LR filter x12_irrelevant 40.0 0.549555 0.458499 df: 1\n", "0 LR filter x4_informative 41.0 0.392499 0.530989 df: 1\n", "0 LR filter x48_irrelevant 42.0 0.357407 0.549950 df: 1\n", "0 LR filter x26_irrelevant 43.0 0.346474 0.556116 df: 1\n", "0 LR filter x24_irrelevant 44.0 0.321736 0.570566 df: 1\n", "0 LR filter x23_irrelevant 45.0 0.316385 0.573789 df: 1\n", "0 LR filter x25_irrelevant 46.0 0.310967 0.577087 df: 1\n", "0 LR filter x52_uplift_increase 47.0 0.289571 0.590495 df: 1\n", "0 LR filter x37_irrelevant 48.0 0.267554 0.604977 df: 1\n", "0 LR filter x15_irrelevant 49.0 0.215249 0.642684 df: 1\n", "0 LR filter x29_irrelevant 50.0 0.192926 0.660492 df: 1\n", "0 LR filter x35_irrelevant 51.0 0.120501 0.728492 df: 1\n", "0 LR filter x38_irrelevant 52.0 0.116905 0.732416 df: 1\n", "0 LR filter x10_informative 53.0 0.107143 0.743421 df: 1\n", "0 LR filter x21_irrelevant 54.0 0.042848 0.836011 df: 1\n", "0 LR filter x43_irrelevant 55.0 0.036466 0.848557 df: 1\n", "0 LR filter x13_irrelevant 56.0 0.012543 0.910826 df: 1\n", "0 LR filter x17_irrelevant 57.0 0.011252 0.915523 df: 1\n", "0 LR filter x49_irrelevant 58.0 0.005559 0.940565 df: 1\n", "0 LR filter x36_irrelevant 59.0 0.002396 0.960964 df: 1\n", "0 LR filter x50_irrelevant 60.0 0.001808 0.966086 df: 1\n", "0 LR filter x30_irrelevant 61.0 0.000956 0.975339 df: 1\n", "0 LR filter x6_informative 62.0 0.000732 0.978420 df: 1\n", "0 LR filter x5_informative 63.0 0.000029 0.995726 df: 1\n", "\n", "[63 rows x 6 columns]\n" ] } ], "source": [ "method = 'LR'\n", "lr_imp = filter_f.get_importance(df, X_names, y_name, method, \n", " treatment_group = 'treatment1')\n", "print(lr_imp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### method = KL (KL divergence)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " method feature rank score p_value misc\n", "0 KL filter x51_uplift_increase 1.0 0.026008 None number_of_bins: 10\n", "0 KL filter x57_uplift_increase 2.0 0.023749 None number_of_bins: 10\n", "0 KL filter x9_informative 3.0 0.020550 None number_of_bins: 10\n", "0 KL filter x54_uplift_increase 4.0 0.018411 None number_of_bins: 10\n", "0 KL filter x58_uplift_increase 5.0 0.014443 None number_of_bins: 10\n", "0 KL filter x52_uplift_increase 6.0 0.002416 None number_of_bins: 10\n", "0 KL filter x55_uplift_increase 7.0 0.000283 None number_of_bins: 10\n", "0 KL filter x23_irrelevant 8.0 0.000221 None number_of_bins: 10\n", "0 KL filter x59_increase_mix 9.0 0.000218 None number_of_bins: 10\n", "0 KL filter x21_irrelevant 10.0 0.000206 None number_of_bins: 10\n", "0 KL filter x15_irrelevant 11.0 0.000157 None number_of_bins: 10\n", "0 KL filter x11_irrelevant 12.0 0.000155 None number_of_bins: 10\n", "0 KL filter x46_irrelevant 13.0 0.000150 None number_of_bins: 10\n", "0 KL filter x39_irrelevant 14.0 0.000146 None number_of_bins: 10\n", "0 KL filter x53_uplift_increase 15.0 0.000142 None number_of_bins: 10\n", "0 KL filter x10_informative 16.0 0.000137 None number_of_bins: 10\n", "0 KL filter x2_informative 17.0 0.000135 None number_of_bins: 10\n", "0 KL filter x31_irrelevant 18.0 0.000132 None number_of_bins: 10\n", "0 KL filter x19_irrelevant 19.0 0.000130 None number_of_bins: 10\n", "0 KL filter x40_irrelevant 20.0 0.000125 None number_of_bins: 10\n", "0 KL filter x44_irrelevant 21.0 0.000124 None number_of_bins: 10\n", "0 KL filter x61_uplift_decrease 22.0 0.000118 None number_of_bins: 10\n", "0 KL filter x60_uplift_decrease 23.0 0.000118 None number_of_bins: 10\n", "0 KL filter x63_uplift_decrease 24.0 0.000112 None number_of_bins: 10\n", "0 KL filter x32_irrelevant 25.0 0.000109 None number_of_bins: 10\n", "0 KL filter x35_irrelevant 26.0 0.000104 None number_of_bins: 10\n", "0 KL filter x14_irrelevant 27.0 0.000102 None number_of_bins: 10\n", "0 KL filter x38_irrelevant 28.0 0.000094 None number_of_bins: 10\n", "0 KL filter x27_irrelevant 29.0 0.000091 None number_of_bins: 10\n", "0 KL filter x33_irrelevant 30.0 0.000090 None number_of_bins: 10\n", ".. ... ... ... ... ... ...\n", "0 KL filter x16_irrelevant 34.0 0.000083 None number_of_bins: 10\n", "0 KL filter x34_irrelevant 35.0 0.000082 None number_of_bins: 10\n", "0 KL filter x18_irrelevant 36.0 0.000076 None number_of_bins: 10\n", "0 KL filter x36_irrelevant 37.0 0.000075 None number_of_bins: 10\n", "0 KL filter x20_irrelevant 38.0 0.000074 None number_of_bins: 10\n", "0 KL filter x4_informative 39.0 0.000073 None number_of_bins: 10\n", "0 KL filter x26_irrelevant 40.0 0.000072 None number_of_bins: 10\n", "0 KL filter x42_irrelevant 41.0 0.000071 None number_of_bins: 10\n", "0 KL filter x8_informative 42.0 0.000071 None number_of_bins: 10\n", "0 KL filter x6_informative 43.0 0.000071 None number_of_bins: 10\n", "0 KL filter x62_uplift_decrease 44.0 0.000065 None number_of_bins: 10\n", "0 KL filter x12_irrelevant 45.0 0.000063 None number_of_bins: 10\n", "0 KL filter x5_informative 46.0 0.000062 None number_of_bins: 10\n", "0 KL filter x1_informative 47.0 0.000060 None number_of_bins: 10\n", "0 KL filter x49_irrelevant 48.0 0.000059 None number_of_bins: 10\n", "0 KL filter x47_irrelevant 49.0 0.000058 None number_of_bins: 10\n", "0 KL filter x48_irrelevant 50.0 0.000057 None number_of_bins: 10\n", "0 KL filter x25_irrelevant 51.0 0.000057 None number_of_bins: 10\n", "0 KL filter x22_irrelevant 52.0 0.000056 None number_of_bins: 10\n", "0 KL filter x41_irrelevant 53.0 0.000049 None number_of_bins: 10\n", "0 KL filter x37_irrelevant 54.0 0.000049 None number_of_bins: 10\n", "0 KL filter x56_uplift_increase 55.0 0.000043 None number_of_bins: 10\n", "0 KL filter x13_irrelevant 56.0 0.000039 None number_of_bins: 10\n", "0 KL filter x50_irrelevant 57.0 0.000038 None number_of_bins: 10\n", "0 KL filter x24_irrelevant 58.0 0.000036 None number_of_bins: 10\n", "0 KL filter x29_irrelevant 59.0 0.000021 None number_of_bins: 10\n", "0 KL filter x30_irrelevant 60.0 0.000020 None number_of_bins: 10\n", "0 KL filter x17_irrelevant 61.0 0.000017 None number_of_bins: 10\n", "0 KL filter x45_irrelevant 62.0 0.000013 None number_of_bins: 10\n", "0 KL filter x7_informative 63.0 0.000011 None number_of_bins: 10\n", "\n", "[63 rows x 6 columns]\n" ] } ], "source": [ "\n", "method = 'KL'\n", "kl_imp = filter_f.get_importance(df, X_names, y_name, method, \n", " treatment_group = 'treatment1',\n", " n_bins=10)\n", "print(kl_imp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We found all these 3 filter methods were able to rank most of the **informative** and **uplift increase** features on the top." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Performance evaluation \n", "\n", "Evaluate the AUUC (Area Under the Uplift Curve) score with several uplift models when using top features dataset " ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "# train test split\n", "df_train, df_test = train_test_split(df, test_size=0.2, random_state=111)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1 0 0 0 0 1 0 1 1 0]\n", "79114 treatment1\n", "76043 control\n", "47617 control\n", "53169 control\n", "175702 control\n", "111635 treatment1\n", "129212 control\n", "19247 treatment1\n", "49272 treatment1\n", "199314 control\n", "Name: treatment_group_key, dtype: object\n" ] } ], "source": [ "# convert treatment column to 1 (treatment1) and 0 (control)\n", "treatments = np.where((df_test['treatment_group_key']=='treatment1'), 1, 0)\n", "print(treatments[:10])\n", "print(df_test['treatment_group_key'][:10])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Uplift RandomForest Classfier" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "uplift_model = UpliftRandomForestClassifier(control_name='control', max_depth=8)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "# using all features\n", "features = X_names \n", "uplift_model.fit(X = df_train[features].values, \n", " treatment = df_train['treatment_group_key'].values,\n", " y = df_train[y_name].values)\n", "y_preds = uplift_model.predict(df_test[features].values)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Select top N features based on KL filter" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 x51_uplift_increase\n", "0 x57_uplift_increase\n", "0 x9_informative\n", "0 x54_uplift_increase\n", "0 x58_uplift_increase\n", "0 x52_uplift_increase\n", "0 x55_uplift_increase\n", "0 x23_irrelevant\n", "0 x59_increase_mix\n", "0 x21_irrelevant\n", "Name: feature, dtype: object\n" ] } ], "source": [ "top_n = 10\n", "top_10_features = kl_imp['feature'][:top_n]\n", "print(top_10_features)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 x51_uplift_increase\n", "0 x57_uplift_increase\n", "0 x9_informative\n", "0 x54_uplift_increase\n", "0 x58_uplift_increase\n", "0 x52_uplift_increase\n", "0 x55_uplift_increase\n", "0 x23_irrelevant\n", "0 x59_increase_mix\n", "0 x21_irrelevant\n", "0 x15_irrelevant\n", "0 x11_irrelevant\n", "0 x46_irrelevant\n", "0 x39_irrelevant\n", "0 x53_uplift_increase\n", "Name: feature, dtype: object\n" ] } ], "source": [ "top_n = 15\n", "top_15_features = kl_imp['feature'][:top_n]\n", "print(top_15_features)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 x51_uplift_increase\n", "0 x57_uplift_increase\n", "0 x9_informative\n", "0 x54_uplift_increase\n", "0 x58_uplift_increase\n", "0 x52_uplift_increase\n", "0 x55_uplift_increase\n", "0 x23_irrelevant\n", "0 x59_increase_mix\n", "0 x21_irrelevant\n", "0 x15_irrelevant\n", "0 x11_irrelevant\n", "0 x46_irrelevant\n", "0 x39_irrelevant\n", "0 x53_uplift_increase\n", "0 x10_informative\n", "0 x2_informative\n", "0 x31_irrelevant\n", "0 x19_irrelevant\n", "0 x40_irrelevant\n", "Name: feature, dtype: object\n" ] } ], "source": [ "top_n = 20\n", "top_20_features = kl_imp['feature'][:top_n]\n", "print(top_20_features)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Train the Uplift model again with top N features" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "# using top 10 features\n", "features = top_10_features \n", "\n", "uplift_model.fit(X = df_train[features].values, \n", " treatment = df_train['treatment_group_key'].values,\n", " y = df_train[y_name].values)\n", "y_preds_t10 = uplift_model.predict(df_test[features].values)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "# using top 15 features\n", "features = top_15_features \n", "\n", "uplift_model.fit(X = df_train[features].values, \n", " treatment = df_train['treatment_group_key'].values,\n", " y = df_train[y_name].values)\n", "y_preds_t15 = uplift_model.predict(df_test[features].values)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "# using top 20 features\n", "features = top_20_features\n", "\n", "uplift_model.fit(X = df_train[features].values, \n", " treatment = df_train['treatment_group_key'].values,\n", " y = df_train[y_name].values)\n", "y_preds_t20 = uplift_model.predict(df_test[features].values)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Print results for Uplift model" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df_preds = pd.DataFrame([y_preds.ravel(), \n", " y_preds_t10.ravel(),\n", " y_preds_t15.ravel(),\n", " y_preds_t20.ravel(),\n", " treatments,\n", " df_test[y_name].ravel()],\n", " index=['All', 'Top 10', 'Top 15', 'Top 20', 'is_treated', y_name]).T\n", "\n", "plot_gain(df_preds, outcome_col=y_name, treatment_col='is_treated')\n" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "All 0.874182\n", "Top 10 0.874931\n", "Top 15 0.889868\n", "Top 20 0.894400\n", "Random 0.493027\n", "dtype: float64" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "auuc_score(df_preds, outcome_col=y_name, treatment_col='is_treated')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### R Learner as base and feed in Random Forest Regressor" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "r_rf_learner = BaseRRegressor(\n", " RandomForestRegressor(\n", " n_estimators = 100,\n", " max_depth = 8,\n", " min_samples_leaf = 100\n", " ), \n", "control_name='control') " ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:causalml:Generating propensity score\n", "INFO:causalml:Calibrating propensity scores.\n", "INFO:causalml:generating out-of-fold CV outcome estimates\n", "INFO:causalml:training the treatment effect model for treatment1 with R-loss\n" ] } ], "source": [ "# using all features\n", "features = X_names \n", "r_rf_learner.fit(X = df_train[features].values, \n", " treatment = df_train['treatment_group_key'].values,\n", " y = df_train[y_name].values)\n", "y_preds = r_rf_learner.predict(df_test[features].values)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:causalml:Generating propensity score\n", "INFO:causalml:Calibrating propensity scores.\n", "INFO:causalml:generating out-of-fold CV outcome estimates\n", "INFO:causalml:training the treatment effect model for treatment1 with R-loss\n" ] } ], "source": [ "# using top 10 features\n", "features = top_10_features \n", "r_rf_learner.fit(X = df_train[features].values, \n", " treatment = df_train['treatment_group_key'].values,\n", " y = df_train[y_name].values)\n", "y_preds_t10 = r_rf_learner.predict(df_test[features].values)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:causalml:Generating propensity score\n", "INFO:causalml:Calibrating propensity scores.\n", "INFO:causalml:generating out-of-fold CV outcome estimates\n", "INFO:causalml:training the treatment effect model for treatment1 with R-loss\n" ] } ], "source": [ "# using top 15 features\n", "features = top_15_features \n", "r_rf_learner.fit(X = df_train[features].values, \n", " treatment = df_train['treatment_group_key'].values,\n", " y = df_train[y_name].values)\n", "y_preds_t15 = r_rf_learner.predict(df_test[features].values)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:causalml:Generating propensity score\n", "INFO:causalml:Calibrating propensity scores.\n", "INFO:causalml:generating out-of-fold CV outcome estimates\n", "INFO:causalml:training the treatment effect model for treatment1 with R-loss\n" ] } ], "source": [ "# using top 20 features\n", "features = top_20_features \n", "r_rf_learner.fit(X = df_train[features].values, \n", " treatment = df_train['treatment_group_key'].values,\n", " y = df_train[y_name].values)\n", "y_preds_t20 = r_rf_learner.predict(df_test[features].values)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Print results for R Learner" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHfCAYAAAC4Qmc9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi40LCBodHRwOi8vbWF0cGxvdGxpYi5vcmcv7US4rQAAIABJREFUeJzsvXl4HNWZ7/85VdWr1GrtshZbki3JtrxgvGEbmxg7EMBghgCBkIQQhgQGsk1+uZcbMskzk+VmEpJfwjAJM5NAEhI2QwhgcMJmvGIbjPFuWZsla99bUqvXqjr3j5Zly5JsWZYt26rP8/TT3VV1Tp1T3VX1rfe873uElBILCwsLCwsLi/GEMtYNsLCwsLCwsLA431gCyMLCwsLCwmLcYQkgCwsLCwsLi3GHJYAsLCwsLCwsxh3aWDdgtOns7LS8ui0sLCwsLC4xvF6vGM36LAuQhYWFhYWFxbjDEkAWFhYWFhYW4w5LAF1ClJWVjXUTxgyr7+OP8dpvsPo+Hhmv/T6XWALIwsLCwsLCYtxhCSALCwsLCwuLccclFwU2FFJK/H4/pmmOdVPOGU6nk87OzlGpS1EU4uPjEWJUne4tLCwsLCwuCMaNAPL7/TgcDux2+1g35ZzhcDhwOp2jUlckEsHv9+PxeEalPgsLCwsLiwuJcTMEZprmJS1+Rhu73X5JW8ssLCwsLMY340YAWVhYWFhYWFgcwxJAFhYWFhYWFuMOSwCdZ15//XUSExMpLS0FoLq6msWLFwOwefNm7rjjjrFsnoWFhYWFxbjAEkDnmb/85S8sXryYl156aaybYmFhYWFhMW4ZN1FgJ5P4+7pRrc/3pezTbuP3+9m+fTtr167lzjvv5JFHHhnVNlhYWFhYWFgMD8sCdB5Zt24dK1eupKCggOTkZHbv3j3WTbKwsLCwsBiXWALoPPKXv/yFW2+9FYBPf/rT1jCYhYWFhYXFGDFuh8DONx0dHWzatIkDBw4ghMA0TYQQ3HfffWPdNAsLCwsLi3HHuBVAw/HZGU1effVV7rjjDn71q1/1LbvhhhuoqxtdXyQLCwsLCwuL02MNgZ0nXnrpJW688cZ+y1avXs0vf/nLMWqRhYWFhYXF+GXcWoDON6+//vqAZQ888AAPPPBA3/dly5axbNmy89ksCwsLCwsAfydq+UFEezOKrx3ha0P4WhH+TszUCegLlmNctgjsjoFlQwGUo+Wg2TEnTQHNdsr9IBSIs+ZZHGssAWRhYWFhMf6IhFFL96Ee+Aj1wEcoR8sQUg66qVpxCNuO95CuOPR5y9AXrQQhUA99jFqyG+VICcIwAJB2B0bBDIyi2ZjTLgNAOXIYtfIQSmUJSlsTUtWIXnc7kU//I2jWbXissI68hYWFhcWlTSSMUncEpaoMtboUpaoMpaYCoUfPqBoR7MG25e/Ytvx96G0iYbSDu9AO7hp6G0PH/sZzqIf3EXro+8jk9DNqh8XoYAkgCwsLC4tLh3AQ5WgFalUpSnUZSnUpSl1Vn4XmQkIt34/7e/cRuv+7GLOvGFEdoqkWpb0FMz0bmZwGQoxyKy9dLAFkYWFhYXFxo0fRPtqCtmEt6qHdCGmOqBpjUgFmbiEyMQXpTcZMTAGnC3XPDrQP1qN0dgxZ1szIhnAYxdd6RvsU/i5cv3iYyI2fI7ryH5BJqacVMaK9BW37u2jb3kE9Wt63XMYlYOQWYE4qwMwrQp97JThcZ9Se8YQlgCwsLCwsxo5IGNHaiNLSgNLSgGhpQETCGJOnoc9ZDJ7EIYuKlgZsG15H27QOpWtocTIUZmoGxoz5GDPmoU+fCwmD78uYtZDIZ/8J9dDumOg4vAc0DaNoNsa0ORjT5sSsL1IiWhpQD+9BPbwXpeIQCDDzpmJOnoYxeToyMQXHU4+i7fug3z7srz+D/fVnkPEJMSE2cQoyPQtMA3SdjKZG7Pu8KIf3oB7eM6i/kujpig299Q6/mYmphO9/BKN47hkfm/GAkEM4fV2sdHZ2Dtqhzs5OvF7v+W7OeSUUCuF0OketvovpmJWVlVFYWDjWzRgTxmvfx2u/4RLoe8CP7f230Ta+0c+CcTJSKJiFM9EvX4Ix/XJERysdez4kLeyP+fTUVA7puHwyZmoGZm4RRm4hZl5Rn6VnTDBNbG88h/0vT47YWjVcpBBEV91F5JYvXfQO116vd1TH9y7uo3ER0d7ezurVqwFobm5GVVVSUmIn3/r167Hb7SOq9+WXX+anP/0ppaWlvP3228yfP79v3aOPPsqzzz6Lpmk8+uijLF++/Kz7YWFhYTFSlCOHsb33Gtq2dxGR0Gm3F9JELd2LWrq3b9lwBnTMjGyMvCLM3CLMvEKM3EKIv4Ae5hSF6E2fwyicgfOJH6L42kZclRQKZnYeSnP9oMdUSIn99WdQD+0i9MD3YlYlC8ASQOeN5ORktmzZAsBPfvIT4uPj+drXvnbW9RYXF/PMM8/w1a9+td/y/fv3s3btWnbs2EFdXR233norO3fuRFGs3JcWFhZnRigSYFfZJvZXfUAwEiDNm8WEpIlMSJ7IhORJJManooihry2ivhrnkz9DLT9wztooXXFEl1yDfvVqzImTz9l+RhNz2hyCP/wdtr+/iHp4TywyLXx6YQhg5E9FX/xJ9CtWxCxZpoForketLkc9tAttw+v9rGNqxSHc37uPyA13YsyYh5k39aK3CJ0t47b38V9cPqr1+f+4YcRlH3vsMZ5//nkA7rnnHu6//34qKyu56667KC4uZv/+/RQXF/PEE0/gcvV//pk2bdqgda5bt47bbrsNu91Ofn4+OTk57N69m7lzrbFgCwuL4dHa2cj2Q2/zcfkWInrohOUNHDr6Ud93lz2OmXkLmVt0Fdkp+YgTnHiV0r24fvVdRE/3oPuQQiCT0zHTMpFpmZhpmYhoBHX3NtSaitO20cifSvTq1eiLVlyUDr8yIYnIZ74S+2KaiOZ6lKPlqEfLEf5OpGYDVaO9q5vktHRkXDz67CuQmZMIR0McOvoRLRX1mMeG0lSQM7LRMj9N6gdbSWn3kRLUSQrr2EIBHC8/BS8/hXS6MApnYUy/HP2Kq5GpE8buIIwR41YAXSjs3LmTNWvWsH79enRdZ+XKlSxduhSXy0VJSQmPP/44CxYs4P777+f3v/89Dz744LDqbWhoYOnSpX3fs7KyqK+vtwSQhYXFaalvq+Ldj1+mtHbPsLYPRnr4sPQ9Pix9j/TEHOYVLuOyKUtI2L8b53/9EBEdmG/HTEoluvwm9KtuiDkQn8xt9yFaGtA+fh/1460oLY3I5DTa45NIKL4MMzsPIzt/SMflixJFQU7IwZiQg7Fweb9VDWVlxBcWIqWkuukwu7b8lgNVHxLRw0PXN9EBEzP6vnpDOoUdIeY291DUEUTb9wHavg+wv/wU0WtvJbL6C0Q0DV9PK3bNSZzTg00bmXvGxYAlgMaYbdu2sXr16j7LzqpVq9i2bRsrVqwgNzeXBQsWAHDHHXfwhz/8YdgCyMLCwuJM6Ql18c6ul/iodBOSkQXINPtq+duHz/HWh8+zosrHddEoJ3qu6sVziV7z6di0Euqpb0EyLZPotbcSvfbWvmW1F7sD+AgwTIOWrlpqPt7Pnsr3ae9uHlE9nU6NnZnx7MyMxx01mN0SoLgtiM+hUVP5NjV/2EKTS+33y9s1B26nh3hnAnkTprEwfwkpbT7UqlJESz0yJQNj5gLM7LxBw/dFVweisRaZlIpMyxzZAThHWALoAkac9Gc6+fupyMzM7DfTfH19PVlZlvObhYXFQAzT4MPD63n345cJRQKDbhPv8rJw2kqmZEyjpaGMpqYyGn111IfaCTMwyaCB5O08LzUeO58/2EqcbhK+5UtEb77bStZ3GqSUtHY1UtlwkIr6/RxpKCEUHfx3GSkBm8r2LA/bs049J1lEDxPxh/H5W6ltrWTrvjeY2RrkEzVdTO4M94lbMzkNY+YCjOJ5CH8nSsVB1PKDKC31fXUZBTOIfmIV+sLl4HSPan9GwrgVQGfjszOaLFmyhG9+85t8/etfxzAM1q1bx1NPPQVAdXU1u3btYu7cubz44ossWrRo2PVef/31PPTQQzzwwAPU1dVRU1PDnDlzzlU3LCwsLlKONJbw+vanafbVDbp+YlRjWZfK7LZObDueRXS2U3zCFBKGgIMpLnZkxnMo2YWp9Bc3JSkufjk/k88X3kjqJz877HYZpk5NczmldXspq9tHp7+NJE8a8bZkuric7NR80r3Zl0RgRyQapq61kqMt5RxtLqO2pYJA2D+ssgnuJGblX4Hb0StkhEAQEy4+fys+fysd/ha6ejpGbNU7ESkE+9Lc7Etzk90dYWp7EJdu4jSCOA5vxHXgPfI7w8TpA8P71fIDqOUHkM88jr7wavR5S5FJaUhvMtLjPa1FcLQZtwLoQmHevHncdtttrFixAoB7772XGTNmUFlZydSpU/n1r3/Nvn37KC4u5p577hlQ/pVXXuGRRx6htbWVO++8k7lz57JmzRpmzZrFqlWrWLhwIZqm8Ytf/OKSuFBYWFiMDj2hLt788AU+rtgy6Pr0nij/UN7OtPYQp7LXqBJmtQaZ1Rqk066yc0IcG3MS6Haofdu0uTSeaHyPW6oKmJm3YNB6guEemjpqaOyo4UhjCRX1BwhHg/23aesBqihtjCX6s2sOpmTN5LIpS5iacxmaOnAW9s6edlp8dUxInkS869yGwpvSpKO7hYb2aurbqmjqqMWm2snPnE5R9mySPMd9naJ6hNK6veyt3EZpzR50c/jzkqmKxvRJc5lbsIwpWTOHdW3XDZ3qpsPsr9rBgeqdBMM9Q26bFNQxFPDb1AGC9kTqPHbqPAN9hFRTckOlj+U1XQzWMhEKYtu0DtumdX3LpBBITyJmVi76FVfHrETnOHWBlQjxAqWyspK77767L3R+OFiJEMeXX8AxxrrvUkr0xncwWt4HoSBUN2huhOZGaHEIVxaKpxDhSD2jYdzTMdb9HkvOpu+mNPm4bDNvfvTCoDdBh27yqSofy2q70UZ4e+i0q/x+ZhrVXseAdXFOD26HB7cjHpcjHlMaNHXU0tkz8lw4cDwSrThvPp3+NqqbSqlqOkyHvwWIiYZ5RZ/gqlk34o1LHna9oUgQf7CTQLibnlA3gVA3PWE/oXAPoWiAUCRAKBIkFOmh2Vc/QLSdSGpCJoXZswiGOjhUs4ewHhl2Oxyam8KcWRRkzWD6pHm4nfHDLnsyhqlTUX+AfRWbaPPV4rFrZNoEWR3VZIabcNhAazNxHTbQu8FvV6n0OtiUk0D9IIJnKArbg3y2tAOvdwJKY82A9aYDoqkK0TSFAylOdmjxSAmpuk5qUMdrS2XmP/6ub3srEaKFhcWIkaYORghpxiJHhD0JcYr8LWa4DRnxocTlIpTBLxfRoy8SrXjq9Du3eVE9U1DiCxD2RFA0EBooGkKxoyRMQ3GNv1Dcc4Vob0YpP4jo6UKEw8hwkKOhVv4WqqBKDj68sqDBz6pKH97IqScOlfEJmGmZmKmx0HXp8YKhx6K99CguPcqXnS5eSQqzs3p7v7I9oZiQGG1OjEQbDMPU+aDkXT4q3cj8XiGUMIgQCkeDVDUejvnfNBygqaN21NrY2tVAa1fDsLa1K4IcbzL5KVlMSc/DDNrIyZuKsCciHHGnLCuj3ZihZoRQTzjPbBDtxug8gOHbT45vP9lGC5zoApQCoBAFomkKwWkaRztT+bCxkH0deZRGM6nXBUXqR+SLEsRphtTKkl38bImD61P8FLo8mIZE1XVUI1bOdAsChuCdDg8HAy7o1YNVOMAJTjOOmcM6WiPDEkAXKJMnTz4j64+FBYA0Qpg91Zg9NchALWagBjNQgwy3gREGqfcvoLpQ4vJQ4vNQ4vMR9iRMfxVmdxlmdxkyEptfSbizcc78F5T4/H7Fo/VvDU/8AEQ7Mdp3YbTvGnITLftG7FO+hNBOfYEfzxjRMF0Nh6mT7cQ7E4h3JqBpNohGYz4WJbtRS3ajNMecTyOKYFdGHFuy46nzDLTIAGT6I9xW2s7kzuMh1WZiCpHVX4gJHKcbnG6ky40ZF4dwJwyrrTcDWYen8caOP2GYZz4be5zTQ0H2LIqyZ5OTOpnWrkb2Ht5JUHZS11o5IiFlmDo7St5lZ+lGslPzEQiOjfHpepSG9qOY8vzPHJ+gGkxyRsi2R8l2REm16SiiESIHoVeDhY4ZyWyJqIkzUBNnonhnIhzJmJ0HMXz7MH37MP1VMAr+PgCTvK1M8rayVD9IuZ6JioGGSdhw4I+GiRPdRE1BRArCpqAy5CBkHn+oCpkKf21JYIY7SJE7TI7DJM5hIiWU9Dh4uyOBgHnSQ5gEr5mL15w4Kn0YCksAWVhc5AgziN64Hr15M0b7TjgDXwKMIGbXIcyuQ6fcTAbqCH70zzimfxstPZZfSm/dTuTwr86m6QPQ617HaN2OveghtLTFo1r3RYeho9RUohwpQWmsRTQe5aC/jlfTTDqcGlQe39QVNfBETOKiBi7dxJVi4vImYQrB7nQ3AZs66C5shsmnqjpZXtOF2nu/lJqN6KduJ3LT58EVi9SREV/M0lf9LkS7EK4JKO4chHsiSlwOQvMgIz5kpAMZ9SEjPlDs2CZ9mgVTryYjaSJ///A5alqGnvdLESqp3sxYdumkiUzOLCYzJbdfhunkhAxE0E1hbz6c2tZK9lRsZd+RHUM6DauKitPuHiCWDFPnaHPZcH6JM8IhTDLsOhPsUdLtOn5DoSLooC5swzzJmypOMZjmDjMjLkimXR9+cFzUh9GyFaNl66i3fygytE4ytM7TbtelK7ze5uVouP9Q2YGAiwOBWLqXJE0nTjWpDQ8ynCYFyUYB8TJj4LpRxvIBuoSwfIDGlz+I3rINveEt9NYPEeinLzBK2PI+i5o8j9DuR8A8wYdBsWEv+AoodtB7kEYAGfFh+isxuyvAPEXCtkFQ05dhL/wnFMfg/hqX3G+uR1HL9qOU7kMt3YdafgARioU+tzo1Xi5K5lDK6GU6Lm4NcGtZO8mh49YOfc5iwp99CDkhBwAz3E706EvodW+c8e8HgGKLieaMT8TqN6IEwv7YKxR7N02DNG8maYlZgzoxn8xgv7tu6JTV7WVP5fu0+OrxuBPJzZhKXnoROWlTEEJhd8UWNu5Zi6+n9Yy6IBAkxqfGfJYI4Iw04CKIS5E4FBOHInGI2HuCZuBVzUGFTMgUVIfs1IRtKEJjSnIK+RmFaPH5KPF5SD2A0f4RRttHyNDwhsnOGsWG4imiXcnkmaNuqiKJNOjJeJQAX/BsZInz8IiqNSV80O1mky9+gOg7FTZ7BknGNJwn/Ce//OUv930ebR8gSwBdQlgC6BK6GZ6GSPlTRI+uGUFJBVQnQnUgzQjoQ0eCACBsIAezKCmA2e+7Y+Yjfdahk5HSQAbqMLvLMXuqkceG40wdpI7ReQAZHOyiLxCONIQ7G6X3JWxeECoNjU1kZuWAUEGoCMUWE1+KDaHYEM4MhDp658M5Q9fRNv8N+yt/RPEdvzlLwG9T2Jrt4d1JXnT17K/9AphmT2NxQg757sRYCJdqYioGZpIXmRAf8xEzQshwK3rju/1F7gixTb4HW+4do+IEfzbnum7ofFy+mY17157S6To1IZPJWcVMziwmL30K9ratRKufR4bPTDz1ITQU73TUpMtRky+n21HArjaDnS0RdrZE2N0WRRVwdZaT2ye7WJrYBr7dyGA9MtqD1P0Eulqw2wwI1CHMoR2te3eIcGfFfH9MHWSUqK6jSzDck0lInYUtaSZKQiF72mH1m610RfrfOv/3HA//lNuKu2Vd7H9gDL3PHi0TR+JU3IlFKAlFCEcKTUGFtWXVVJQ+j904tYO7qmgsm3ET/lpobm7pt84SQGeAJYAsAXTJEA6iVhxCKduPWnEQohFkejbhLI0e29+GLCYc6SiegtjQhHsiintizLlYc4Ow9d2EpJTIcCum/0js1VMF0U6EOwclvgA1oQDhnoTe8CaR0t/AKfwi7FO/hi171Yi7Ko0w0apniB59CeTA/CEjQnVim3gLtrzPDenAPaaYJtqHG7H/5Um6fA1Ueh3Ueuy0umy0uTTanBphbXAHdUVKMkISvybwa7EQ4lPhsru5PGsic5xtJAQO0V+8nh+0zGuxT/1aTKieBaNxrhtmLPIsooeg9x547MaRFJ9KgghidB3G7C7FaNmGDLcMXdlJhKVGtZGJ6c5lYvoUEpMLKZVT+bBN4cNewVPaeWqLbbpL4ZY8FwvS7Rz26exvj7KnOUB9WEHF4KaUeu5Kr2KevRRnz0HQe2J+fImzURNnoibORNg8RAzJa9VB/uugn50txx9kPDbBFel25qfZ+Z9DPbSH+/8fvjc3gf/vsuPe0VIPYvorYmJKqKCofQ8eijMDYRs6maJu6JTW7qG66TBHm8uob6vu52OVkzqFFTNvZ9eOvXR1dfUr6/F4uPPOO/u+WwLoNFyoAqi9vZ3Vq1cD0NzcjKqqpKSkALB+/Xrs9pHNt/Lyyy/z05/+lNLSUt5++23mz58PxMLolyxZQkFBAQCLFi3i5z//+RnVPdbH7Ey4VASQaGnA9u4rMSfW6jKE2f/CJFVou9mO4el/Y1QiTmxMRkteBJOWQEb2qGbbNXz7Ce37EUR9A9bZ8r+APf9zo7Of7goiJb/C7B493wwlYTqOGQ+PXYRZNBL7LXu6EQE/EX8nLf5mGst3csTwccTrpN01fIGWl1bArOwVLJxzJQCmaRII+/GHOgmFewhGYqHZgaCPkO8Q3mgtBWYZNuXsRI+wJ2PL/QxaxtWY4WZkTy1mIPbCDCNsibEIJXsi0ggRPfLnAU73StIcnDMfQdiG50Q9GGd6rjcFDHY0R5idYiPPM/A4S1OPCZ323Ri+/ZjdpaCfOglh0LTzemA+9UYSbYYn9jI9NOhJHNEzMIj5XAnApQkC+rm7z85JsXFTrosMt4JbFbg0gVsTfNAc4cmSHhqDZ/a7/6/LPHx37sh/n9MRiYapba2kob2aBHcS9kgiW7duxTD6P2AlJydz/fXX43YfzxhtCaDTcKEKoBP5yU9+Qnx8PF/72tfOuq6SkhI0TeOrX/0qP/rRj/oJoDPNI3QyF9IxOx0XowDq6mlne8k7ICHXnU7hBx/i2fR3hDG0paV7vkZgxgkXcSlJXB/FXtt/pN30JGIWzsTofZl5RWA7tciO6hG6Ax1441NRlYFOs2aohfC+H/QTJ1r2jdiLHhrV/D7SNNDrXiNa9zoyUM9wolmkPI3eU904pn2jzxflvCAlyqZ11P7tScqdBo1xdhriYtad01lsBiPOmcB1C+7ksslLKC8vH/L/LqXEaNpApPy3yEj72fYCYU+JCZ+s6xHq8B/UjI49hPb9cKCYUOyoaVdiy7wGJWnOKdMwDMZwz/W6HoNf7e3mj6U9RMyYGPnMFBffuTyBSUoDeut2zI49GJ37wQidtj6AoGnjT/7l/KbzelrMi+PaeCZ8Y2Y8/zo/YVTP56EwDINt27Zx6NDAAIzMzEyuvfbaAYYBKw/QKNGz/rpRrS9uxd9HXPaxxx7j+eefB+Cee+7h/vvvp7Kykrvuuovi4mL2799PcXExTzzxRN+kqceYNm3aWbXbYmyob6vi6bd/QU8oZvLdDAgpyb48jYKOMPmdIbL9UZJDep+wiaYKAtP7CxNXiYGjduATntLtQ9m1BW1XTABLIcDuQNqd4HDG3j1e9DmLiSy7no8b9/DmzhcIhP04bC7yMqYyOXM62enT8SZk47WrKM40nHN/TrTqGYz23aipV2DLu3PQi2VAN3mtKsSu1ggJdoXZyTZmp9jIjVdPe3EVihobupp4C9KIIIP1mMF6zEAdMlCHNEOEolH2N7ZwJBilqjuIQ1VYkRnHjAQVogFkTwNSOcF3yQgQPvATjLYPUdOXorgyEc4JCHXwsPCzpb1iD3vX/YaPbH58004919KpsGtOkj3pFOXMZunMG3CdJv+L2VNN+PBvMH2nnsVd2FNiySpVF6guhOaMvSvOXh+x2LvizkJNWXRGwucYatJluOb9ktCe7/d36jUjGE3vYTS9h3Cko6ZfCWYUGW5HRtqQ4XZAoCZfjm3SbShxZxYKXevX+dU+P0/3Cp9jpKsdJDS/RcPW7aTZq8+ozrDU+FP3J/h11w00G/1nn1cFXJFuZ0W2k8O+KGurg4ROE0UvgOmJGvN7h6HmpdppDhq8WBlkbXWQ7ujgol8VsccBc4R2i/lpNo50GbSFB14zHiiOO2/ix+/3884779DSMnBocdq0aSxevBhNO/fyZNwKoAuFnTt3smbNGtavX4+u66xcuZKlS5ficrkoKSnh8ccfZ8GCBdx///38/ve/P6PZ4I8cOcKyZctISEjg+9//PldcccU57InFcDlS8QHPbPlvwicND0ghqPU4qPU42EDMBO00JBMUNxMSMkmyl5MW7SDNpmNTQAkI4ncNL/pLSAnhECIcghOigduPHuCF0leoSDwuBMLRIIdrd3O4djcAQenmqH0RS2et5u6pXhKn3AtTBt/PvvYoTx/u4YXKwACnSoAUzeAaewcLs9x8esFkEp0qhmnQ2H6U1s4G2rqaaOtuoq2rkY7uVjTVhjcuue/ldhZS3XSYivrSfnllIqbBq0e7aEqbyaf/vgU13E3nlTYiE2OCMWQKDvY4MbreZ+LRDWTYYiHHwp6CcOegJl+OlroQEZc/7BuAKU16Ap10BX34Az66gz66eto5cnATVbqvN8Hc8C6xqlDJTptMbnoRGUk5JHvSSfKk43bEI2Qk5nuBiYx0AhLF6MQM1CONEBhBpBHE7PiYaM0rQ/pqKfGTUdOvQktfhuLOHla7zhYlbiKu+b8ktO8HmJ0HB6yX4Wb0mr8OWlZveBO94U3U1MXYcm9H9RYjzSj2UDmRym0Y7R8jIx0ocRPRMlZQ7VjAfx6K8kxZoE/4ZKrtrHTt5Ub3TpY4S1DF8JRDt+lmdySPXeF8Pg5P5sNwAT6zf+blGyY5+cxkN8uzHCQ6jluxfGGTl48E+XNZD7taYyI8zakwP83e97o81UaCvb/lawY2rs528ovFibxVG+KNo0HaQyYFXo2ZyTa8/gaumTWF7qjJa9VBXj4S5P3GyGnw/m6ZAAAgAElEQVTto3Ga4LMFbr4yPY6iRBtSSko7dd5vjLC1KUxDwODGSS4eKI47L+LnyJEjbNq0iUikv3O9qqosXbqUoqKic96GY4zbIbCxtACdOAT2+OOPEwgEePjhhwH4t3/7N7Kzs1mxYgW33HILe/bEnuTWr1/PH/7wB55++ulB67zuuuv6DYGFQiGCwSBJSUl89NFH3H333ezYsYP4+OGnT7eGwEYJKVGOlqPu2c7Bw5t5JiWEcYr5dU6HQJKkGWSmTycnpZgJrZJpmoZSdwS17ghKVSkidOooEUPA+kkJvJWbOOzoogY5iQ3qXdyboXB3og9SMih1ZlDtN6n262xuCPNR6+A5iOxmlC81bOQ71a+QE+nAb1PYmZbIgaxkaj0moUFmEx8pk7rCfHF/C0lhg8ZiGxumeNnd4yIij99w3IpBvjNCvitCriNCfG/osnCkoaYuRIkvQIZbMAL1+LrqaOpqoz0Uxqdr+KIqnbpCp6FgnEGI7zEEkCRsZNg8ZE3IY2J2LpluDc3o7rWCdCAj7chw7H1E4ed9O7Nhm3gzWuanztiSMppII0K05q/o9euQoaYR1SHicpHBxiGPh9908LfAPN4OXkaxrYZPuvcw0z5w+oXBaNK9vB+exvuhqewIFVGpZyAHncUKirwaP1vkZXnW6QNOWkMGYQOy3MpZi4vBrnENAYPXq4OU+HQCuiSoS4K6SUCX2FXB1VkOPl8Y10+gjRW6rrNt2zZKSkoGrPN4PFxzzTV9frFDYQ2BjSNOPmHO5ARyOp19EWHz5s1j4sSJVFZWMnv27FFto8XgmJ11qIf3YNu3D23vByi+Nt7PiuelouQB/h+F0RCdDpVmc3jRMRJBu67RXl/GgfoyNMXG4uJrWXrlfbH5gQwdpfYISuk+GnbvwV6+n+zeFLK6gF0ZcayflEBT3JkNa2SKo9wb+glfWtdEoS92E0rX4nB58un2TCErYTI9rkxqHcn4tdhQrWbqfLFxE49Uv4IXHx9nuPlLWgbVCY7e43AGSRuHydEEB79YkMm09hB70twY/kGG6Ey1X2I2m5AkqAZeLYq3YROwiZaoRktEIywVwNb7OnM0IZnqCpHrjJBm00mx6Rx/+D8EdbFhjdE+EmryXOxFD6K4c0a55jNHqHbseXdgy70ds2Mv0Ya3Ykn8zkDcyZ5TD1vFK2Fuj3+f2+PfP21dphRsC0/ljZ55bA1No1zPhNOI2XhN8PAcD/cXx2Mf5kNDqnPwBJSjRaZb5cvTRz4n2Pmira2N9evX4/MNDKKYNGkSy5cvx+E4N8PRp2LcCqCz8dkZTZYsWcI3v/lNvv71r2MYBuvWreOpp2JTC1RXV7Nr1y7mzp3Liy++yKJFi4Zdb2trK0lJSaiqSmVlJVVVVeTm5p6rbljoeixj74HtBCNvEkmNjTOJHEnQI9gSSGUnA/03rk7s5oqEWLK7gCGoCds5GrLT1O/me5pdm1E273+DDw6/y+LiT3HljOtoTcnn2yKZv6deAakQJ7u4XL7PdGUnThEYtJ6i9iC3H24nogrKkpyUJzopT3ISOiEUO2gXPDEng1WVPlYc7SJZ7+Gajv1c07G/X10+1U2DK4UENUi1O8Ta6XFUJmaPyPl3KBxhjWyfwry2Ft7Nd9PuOi5QAjaVXRnDn04jKgVtukabPnqXxBxHhFlxQaa5wziU82dp7xIp7PF+CTNpCVkBjSk2E49t7C0AAEIoqMlzUJPnIPUe9JatyGADwpYQG450JBNQEjlYU0Ja68tkGJWnr/RMiJ/Cx8qVfKdyDvt6Tm/dTrQLJsVrLMqw88+zPWS6z62gudSQUnLw4EF27NgxIMpLURQWLFjArFmzzsvQ22CMWwF0oTBv3jxuu+02VqxYAcC9997LjBkzqKysZOrUqfz6179m3759FBcXc8899wwo/8orr/DII4/Q2trKnXfeydy5c1mzZg2bN2/mpz/9KZqmoaoqjz322EUznHXR0OVD27UF7eP3UUt2Y9iC+K62YaTGbjZBQ7CjJ56Pgm6iJz1dCiTXJ3cxO/549IlblUx1h5nqjj0VSwmdhkJzxEZzryBqimr4hrhJh6MhNux5lY37/kaXGUeqVLkTGyYqqaIBVRl8mElIO/NrBJ+tqO5rZVZPlE/UdtOjKfy5OJWSEzIQSyF4fUoSR7wOPl3aTnJ4kHrVMLtyAnycEYehnF6IxEUM8jvDpAWjpAb02HtQR1cEPoeKz6Hhc6p02VU8EZOZrQEye44f1TltXTw7PYUDqe4h9+GJmEzsClGR6Bwyv86Z4hAmHs0kXjWIV03iVROPGhteS7aN0rDesQSPCBAKIDAME1Nz0x51UB+20WU46JFOPgwV8Cf/coLSAcTmcVMEzEiysSjdzhUZdq5ItzMxfuwv/UKLw5Z5bb9l79aF+MrGDtrC04FHuNJZwoMJf2O560DfNo26ly2hYjaHiqnS07nOtYt/iNtBpjbQugAiloAwZSFa2hKUuEksBd65XLKrNUJnxCRiQNSURMzYe7JDIdejMSlexWu/MITjxUggEGDjxo3U1g6cTDYhIYEVK1aQlpY2Bi07zrj1AbrQGUkYu5UI8fj4+PamMI/v97OrNYJNESTaFRIdCol2QYpTYWG6g1WTnAMcEU9GGiEigRZKWxqpbGki0l5LRms7haU1TKk5jNKbtC+cqdD5CRuGXdCuqxwOOPmgyz2oBUcTkptTfBS6+zsB6lJhW2gqbwYvp8OIY56jgvmOCortNWgitp+nulbwg47bSKGRLKqZwxbixKlzlgyFQHDZlCVct+BO4pwJBKsrUba/R+LuTaj1x4cbTOCtPC9v5XkHWHBshsnVR7tYcbQLhymJKrBhYgLvTPISOY3IcNozCHR6yGqNMq+1Fac0kMSG+IQQTCBIoa9q2P0xgf+eOpWSzDDKCc6u3vh0PjHrBuZkX457499Q3lzDUQIcTnZxONlJk9t2SkHkMEyyAhEmhAXJrkQSk9JJzJiEN3sKtmQ3Zk85ZlcJRtdhiJ6QyE3z9E0yqzgnIPVuZLgtlnwy3Bbb1paAsCch7Mkojti7sCcjHMffUd19T8ghXfLXqiC/2d3Kvu6RWyMKvRrfmePhlnzXmD19n8xbNSE+v76tX+TWMYpsdRTbajgQnURZdOBw1YosG9/NP8IMfTMyWI9wpKCmXIGWMh9hTxxY4UXIBe3neBJVVVVs3ryZUGhgeoGioiKWLFmCzXbmQ8pWHqDTYAmg8SuACgoK2NgQ5ud7utnWGOSb3rUscx4igobPcOMz4+g04/CZcVTp6VTpmXxKi3Jf01YmNx4CaRBOVAilRIkmhpCeEMpQT/GmxNYiMRpMymxOqjKdNERtNEU0oqcYtkpQDVandpLjiBKVKlV6OgcjObwdnMP64Cw6zYHWErcIUWyvIWg6OBCdyIkXf40Is9jBPDbiGmJo62QcNidzC69i0bRPkpww+ISDoq4KbecmtJ2bUFobMTOyOTA1n+f1SoLGQL8NLzaWdKnscAZptw99jcpOzWd2/iJm5C3EG5dM2JA8Vx5ga2MYASxMt7Mg3c6MJBuaIhCNNdi2voW29S2UtqGdZyN2Fz+adDM/yV5FpqhmHhuRKJQwhyoxk5U5bj47xU12nMqG6i7cW//OZw69Sn6oBQkENIU2t532rEza0lMxvMmkJeWQkTGFhIx8SEwBm53WkMHmhjAb68NsaYzQHTW5PNXOP+S5uC7HQYLZhIz6YtNw2JNHTVwc6dJ56nAPz5QFBmTtPRsWpdv5vwu9zE0bWSLW0eLvNUHuXt8+qPgB0AQUJWpkuFTUSA8TUxLw2hVSnApXZzmZmXx22aUvBi4GARSNRtm2bRuHDw+cQ8xms7F06dK+5Lwj4aIWQEIIFdgJ1EkpbxRC5APPAynAR8AXpJQRIYQDeBqYB7QBd0gpq3rr+A7wj4ABfF1K+eaJ+7hUBNBIGM8C6I8fVPCnZk9fuvcfJ/+Zezzvnb6gKVG7JGpAEk1RkI7Tn1+6hIqggwM9TiqCjmFFAhk40JyZhLUcKvUsyqOZHNVT+zLGnkihV2NBmh2PLZbR9VhmV49NIc2lkOZUSXUqJDkU3qsP8cuPWjnUrXMZW5nD+0MKoSRPGounX8vlBctw2kc2qWZHdwtrNv6G2tbh+2akxKdxWeEyZudfQUrCCLMxmybq4T2oe3dANIr0JtEYipJeOA3pTcLMnERZ2MZ9GzvY0zY8d2LVNLiqs4QJER+H3Vnsj8vhxikJ/PsVXtJdsd8lbEi2NYV5uzbMhvoQBzqGTjtgU2BFloOb81xck+MkzTXwt5VSsqs1ypqKALtaI4QMMExJVIJuSgwZc7b12BUSbLH39rDJhvpTOwunOhU+V+BmilejrsegvsegIWBQ1W1Q3nX6VAl3TnHx/XlesuLOv4/LG9VB7tnQTvQk8fOFQjcL0+3MTrExLdGGo9fx+GIQAueCC73fXV1dvPnmm4M6Ok+YMIHly5fj8Yw8JxZc/ALoW8B8IKFXAK0BXpZSPi+E+C9gj5TyCSHEg8BsKeUDQog7gVuklHcIIYqB54CFQBbwDlAk5fHEF5YAGl8CqDNi8vB2H89XBFHQcRDkNvcmHvKsJWQq6BJSbTqpNmPQTMGdukJl0EFjRMNEoIpY8KvS+35iESEgYCiUBh2EzOH5BoSki4+4ir0sRmfwp+w4TbAs08E1OQ5WZjsHTdd/KsrKyvAn5fLfB/28XNmDTfpZmaXyv2Y5SXFIdCOK3eYg3ZuNopy9T4MpTT4u38LbH73Yl8hxMFyOOD55+W3ML1o+Kvs9mcFuCBFD8uNdXfznAT/GCC9tXrvgy9Pj2d8eZXNDmJ4RTmMwM9nG8kwHy7Mc5MSrvFoVZE1FgIqu0Qv5/0Smg3umulk1yTVkZFJ7yOCDlgg7miJsb47wYXOEwbqkCChI0JiRZGNmcuw1MV7FpoAmBGrvuy6PhVvLWOh174H22hW8dtH7rvQJlqEwpeTVqiBf3tgxoD2/XJzIl6YN7jt2oQuBc8WF3O+mpibeeuutAUNeQgjmz5/P7NmzR+UacNEKICFEDvBH4MfAt4CbgBZggpRSF0IsBv5VSvkpIcSbvZ+3CSE0oBFIA/4PgJTyJ7119m13bD+WABo/AmhLQ4j/s/EAccF9TOYQqaJxyG1dikmOI0KOI0qqTacmbKciaKclOvqm86iIo1vLIeIsIHHCMgqSPBR4NaYkaCSdlI9DytjEhOpZ5AU68cIY0E16onJQ68NoE4oE2bj3NbYdfLNfUkJFKCyYuoIVl9+C23HuQnRPdUNoCBi8WBHgufIAh3xDW0CmJ2oc7tRHnFl3LEi0C1alRfjWFTlM8Z65M3NZZ5R/+bCLN2uGN/3DSInXBJPiVXI9Grkeldx4DZsCBztik3se7IjiH0SJPbYkkS9OHdpx/kIWAueSC7XfFRUVbNy4cUCUl9fr5eqrrx5VR+eLOQ/Qr4D/TW9+VGLDXj4p+9Lh1gLH0pNmAzUAveKos3f7bGD7CXWeWMZinFDRWMYfPthMV9serha+06XvACBoKpQFnZQFR08gHiPJBtOS4plUcBM5WfPxxqWMmWOpW1Nwn6ez2ml38an5dzC/6BO8s+svVDYcYmL6FK6ZezsZSWObeybTrfL1WR6+NjOePW1RnisP8GZtiIghuSLdwSdzHHwy20mGW2V3a4RvvO8b1tCZAC5LsXFVpoOrMh0kOxRePxrklSNBKrtHz7IzGPNSbfzjtDhuyXdTe6R8ROIHoNBr44VPpvBeXYhHPug8pUA8G/y65KBP5+Aw6xfAf1yZyBeKhp++wGLskFKye/dudu7cOWDdlClTuOqqq87LdBZnw3mxAAkhbgRukFI+KIRYDnwbuAfYLqUs6N1mIvA3KeVMIcR+4DopZW3vugrgCuBfe8v8uXf5k71lXjq2rxMtQGVlxydtdDqdYx5yd7HR0tIyqBf/WFHf1cCG8g3owYqxbgoOzUVe6gwmp88iNT7rgomksRgZuoTn6zT+66iNsNn/t0yzmyxJMlmcZDDfa+AdxGgoJZT1CN5t09jWoVDiV5BDKHNNSJYmG1yXZpDjNFEFfS8BBA3oMQQ9Bvh1QUTC1DiTqfGjf63WJbzSqLGmXuNIcOxCvgWS7xdGuDHj3IpIi9HBMAxKS0tpahoYmJCbm0teXt6oXRNPtHpdrBagK4HVQogbACeQADwGJAohtF4rUA5Q17t9HTARqO0dAvMSc4Y+tvwYJ5YZwIkHrrOzc1SHh86U9vZ2Vq9eDUBzczOqqval/V6/fv2AWW+HyyOPPMJbb72F3W4nPz+f3/zmN33DVo8++ijPPvssmqbx6KOPsnz58jOqOyEhgYkTxy59/jF21NTy6gcvoXZ/fJotJS5F4lJMnIpJfI+J6JZUJzj6JfM7ESEEk9IKKcieRbwrAdM0MaWBaRp9wzoSYne4WAEyErOZkjUTTb0wnm4uVNP4uWa0+/1vRfClbp1f7OmmOWSyKN3OJ3OczEzShnUxLwJW9X5uDxlsboywsT7mPN0WNilOsnHHFDc357kGDIWeKaPZ9+lF8B2gO2pysD3K/o5o7xCVTmfERDdBlxLdjPntCARum8ClHnfSNyV0RU06wyadERkrNwy9lmgXXJ5q55uzPHwia3iZgK3/+9jS0dHBu+++S0dHR7/liqKwbNmy8zqX19lyXq7gUsrvEDvHOGYBklJ+TgjxInAbsUiwLwKv9hZ5rff7tt7166WUUgjxGvCsEOL/J+YEXQh8cD76cLYkJyf3hbSfOBfY2bJy5Up+8IMfoGkaDz/8MP/xH//B9773Pfbv38/atWvZsWMHdXV13HrrrezcufOcOKOeKzaUfMyBvb+jKeAfJFYqhoYk3xWmyBWmwBXGpcauuo6jBt4tUczsPMKL7qJuUg7V3XVUNR6ms6eN5IQMpuZcRkH2rHPqp2JxcZHn0Xh8adJZ15PsVLk5z8XNeSOLthsLPDaFKzIcXJFx9lMSSClpD5tUdRtUd+tU+w2qunVChmRqoq3P0Xo05siyOH+UlpaydetWdL3/sKbD4eCaa64hMzNzjFo2Msb6EfZh4HkhxI+Aj4Ene5c/CfxJCFEOtAN3AkgpD/RGjh0EdOChEyPAzoTv/eGLZ9v2fvzwnj+OuOxjjz3G888/D8A999zD/fffT2VlJXfddRfFxcXs37+f4uJinnjiCVyu/hfUlStX9n2eN28e69evB2DdunXcdtttfZahnJwcdu/ezdy5c0fczvPF5qpadn74H3T2NA4ZYj7REWG+J0C+M8zJuQxVn4nnIzuRz/8T0RWrQdXIBDIpZtH0a859BywsxjlCCFKcKilOlXljnGPI4uyJRqNs3bq1n1vJMbxeL9deey2JiRdfwsnzLoCklBuADb2fK4mFtJ+8TQi4fYjyPyYWSXZJsHPnTtasWcP69evRdZ2VK1eydOlSXC4XJSUlPP744yxYsID777+f3//+9zz44IOD1iOl5LnnnuPzn/88AA0NDSxdurRvfVZWFvX19Re0APqgvoO/b/sfpP8AuhQM5t2cbouyPNFPvjMyaFi7EpDEB64i+H+/Cp6L74S0sLCwuJBobm5mw4YNdHZ2DlhXUFDA0qVLR5TV+UJgrC1A455t27axevXqPsvOqlWr2LZtGytWrCA3N5cFCxYAcMcdd/CHP/xhSAH005/+lLi4OG699dbz1vbR5MkdW6gt+R26lAwmfJI0nau8fqa5wwOFj5QonQ4cWgHq7HvR82aelzZbWFhYXKoYhsGuXbvYs2cPJwdLqarKlVdeSVFR0UU9hGkJoAuYk/9YQ/3Rnn76ad577z1eeOGFvmWZmZnU1R33D6+vrycrK+vcNPQsefvgLhoP/0+v1ac/HsXgk61dzO3pQSYI9EQFI9mGtGuoWhZq2mKUglWU17VTWFjIRZTOxcLCwuKCpK2tjQ0bNtDe3j5gXWJiIitXriQ5OXkMWja6jFsBdDY+O6PJkiVL+OY3v8nXv/51DMNg3bp1PPXUUwBUV1eza9cu5s6dy4svvsiiRYsGlH/zzTd54okneOONN/pFuV1//fU89NBDPPDAA9TV1VFTU8OcOXPOW7+GS0n1x1Tu+QUhs/9f0aWYfKKni+UfdaJlFhBdcTNmbiEiJx+bfTAnzYEnqoWFhYXF8DFNkz179rBr1y5Mc+DEbNOmTWPRokUX7ZDXyYxbAXShMG/ePG677TZWrFgBwL333suMGTOorKxk6tSp/PrXv2bfvn0UFxdzzz33DCj/7W9/Gyklq1evRkrJ4sWL+fnPf86sWbNYtWoVCxcuRNM0fvGLX1xwEWDNNVs4uutX1Ib7Jz6bp/TwD7vaiesSRG/6IsGbPg/apXHCWVhYWFyINDc3s3nz5kGtPm63m6uuuuqCSIsymlgCaAz4zne+0+/7N77xDb7xjW8M2E7TNJ588skBy09k3759fZ9Pngrj4Ycf5uGHHz7L1p4bAgefxVf1LFs7+5tRc40wn93QCtmTCX7z/2DmXTw5JSwsLCwuNiKRCDt37uTAgQODri8oKGDx4sVjmkfvXGEJIIvzijQNott/TDCwjdfakjFPcHh2mQZ3f9iOcePnidx8N9is8FkLCwuLc8XRo0fZsmULPT09A9Y5nU6uvPJKJk+ePAYtOz9YAugCZfLkyX2JEy8VzHAb4b0/wgge4s12L51G/7/fZ0IZOP7t34lkjO08UhYWFhaXOnv37mXHjh2DrisoKGDRokUD8s5dalgCyOK8YHTsIXzg3zHDHezodnMo0N+cuiB9DgU3/LMVxWVhYWFxDpFSsnPnTnbv3j1gncfjYenSpeTkjI+HUEsAWZxTpDSJVq8hWvk0ujR5qz2BvT39nypSvBO5/tqHxqiFFhYWFuMD0zTZunUrJSUl/ZYLIZg1axbz5s274GdwH03GT08txoRI+W/Ra/6K31B4uSWJ+kh/vx5VtfO5FQ9h0yx/HwsLC4tzhWEYvPfeexw5cqTfcpvNxrXXXnvB5ok7l1gCyOKcYXQeQq/5K/VhjZdbE/Eb/ac0VYWNz634Omnei2sCPQsLC4uLiUgkwjvvvNMvOS7EJjG9/vrrSUtLG6OWjS0XVmKYS5zk5GSWLl3K4sWLueOOO/D5fKNSb3V1NYsXLx6VukYLKQ0ih/+T0oCDZ5qSB4ifhIjCgzf9K4XZs8aohRYWFhaXPm1tbfz1r38dIH7i4uK46aabxq34AUsAnVdcLhdbtmxh27ZtJCUl8bvf/W6sm3TO0OvW0dJRxdq2hAEzuhe1h7j/modJTx4fjnYWFhYWY0FpaSmvvvoqXV1d/ZZ7vV5Wr15NUlLSGLXswmDcDoH99re/HdX6vvzlL5/R9gsXLuxLPOX3+7nrrrvw+Xzous53v/tdVq1aRXV1NbfffjuLFi3igw8+IDMzk2effRaXy8Xu3bt56KGY4/CxLNIQS4b4rW99i927d6OqKj/+8Y+56qqreOaZZ3jjjTcIBAJUVFTwta99jUgkwgsvvIDD4eDFF18ctZNBRnz0lP+RV1q9RGV/jX310U4W534SV/60UdmXhYWFhUV/dF1n27ZtA5ydAVJTU7nuuusu+RD34WBZgMYAwzDYuHEj119/PRBLOPXnP/+ZTZs2sXbtWv7lX/6lb/bdiooK7rvvPrZv347X6+W1114D4MEHH+RnP/sZW7du7Vf3b3/7W4QQvP/++zz55JM8+OCDhEIhAA4dOsSf/vQn3nvvPX70ox/hdrvZvHkzCxYs4Lnnnhu1/kXKn2R9q6Al2n/6iltK27m2SeD6zJdGbV8WFhYWFsfp6elh7dq1g4qfadOmcdNNN1nip5dxawEaC4LBIEuXLqWhoYGioiKuvvpqIJaX4Yc//CFbt25FURQaGhpobm4GIDc3l9mzZwMwZ84cjh49is/no6uriyuvvBKAO+64g3feeQeA7du385WvfAWAoqIiJk6cSHl5OQDLli3D4/Hg8XhISEjguuuuA6C4uHjINOhniuE7wP7KTXzsT+y3/PKmHpbVdRO+72FwxQ1R2sLCwsJipPj9ft54440BQ16qqrJ06VKKiqyphU7EsgCdR475AB2bv+vYMNyaNWtobW1l48aNbNmyhbS0tD6rjcNxfOZzVVXRdX3E+z+xLiFE3/f/x969R0W55veC/z5VFHcBAVFuAgqKeANBBUS5Ke7dN3t30r3SyUnvdLqTSSYnmZycrJNM1jnpmeScWT1rzbmsnMnOysx0J53kJH26O33Zx1a3yGWjKKKooIIIiIoo90tRQF3fZ/6glHp9C0WFeuvy/ay116aepwp/Lwr15X1uBoMBLpfrrT/vc1JxYfTOX+DsZJyqPWnRga/0TsK1vQDOIyff+c8hIiK1ubk5nD59WhN+4uLicOrUKYYfL0L2DtCbztlZS9HR0fj2t7+NX/mVX8E3v/lNmM1mJCcnw2QyoaWlBUNDQ698fUJCAuLi4nDlyhWUlZXhhz/84Yu+548rKyvR39+PoaEh5OXlobOzc70vC7ahn+Gnj+dgk8tDX0Yp8bW7EzCFx8D62/8O8LMT6YmIAp3ZbMbPf/5zWCwWVXtmZiZqamoQHs591rzhu5FO9u/fj927d+NHP/oRvvKVr+DWrVsoLy/H97///VUl9Y8++gh/+Id/iIqKihfzhQDgm9/8JhRFQXl5Ob7+9a/jo48+Ut35WS+KdRz1N36AZ3b1vJ/P909j65wd9t/4I8hN3O+HiGgtzczM4PTp05rwk5OTg7q6OoafVxCeb57BYHZ21usFzc7OIj4+3tfl+JTVakVkZOTrn7hKb/I1G7jyJ/jb3ieAx5L33VML+EbnOBwnvwz7L6/vURd9fX3Iy8tb1z/DX4XqtYfqdQO89lC8dm/XPTExgXPnzmFxcVHVvn37dlRVVcEQZHfc4+PjxeuftXohOwRGa8c2ehE/f/AQwPLdn3iXE1+9OwnXtjuI7EMAACAASURBVHzYv/KbutVGRBSMent70draqpm/mZubi8rKyqALP+uBAYjeiXTO4+LVv9Ysef+lO5OICI+B7Xf+NyDM5P3FRET0RlwuFy5fvux1mfvOnTtRUVHB8LNKDED0Tkbu/BUuTam/2Q5MzSN/yorF3/9TyOQtOlVGRBRcLBYLLly4gPHxcU3fnj17UFpaCiHWdJQoqIVMADIYDLDb7ZwQtkp2u/21v0U4Z+7idE8HXFj+mkYrLnzQPQVb3S/CVVS+3mUSEQU9p9OJoaEhXLlyBTabTdVnNBpx9OjRkJwX9a5CJgDFxsbCYrFoJosFE7PZjLi4uNc/cRUMBgNiY2NX7JeKA9ev/ic8tqkD5RfvT8O4MR2OL+u3zQARUTBwOBzo6elBV1eX1/euuLg4HD9+HElJSTpUF/hCJgAJIbBhwwa9y1hXY2NjyMzM9MmfNd33D2gYtcNzJ4U8ixUHRhZh+3d/AoSv/9J7IqJg5HQ6cefOHXR1dWnu+Dy3detWVFVV+WSbk2AVMgGI1o5rbhBnOz+BVVn+xguTCr5yexIL738VYvsuHasjIgpcMzMzaGhowNTUlNf+sLAwFBUVYf/+/Zzv844YgOiNSMWJ1tb/A/cW1L91vPdoFob4TIgvfahTZUREgUtKid7eXly5csXrkUcGgwF79+7F3r17eZjpGmEAojcy0PkRGkZs8NzwMM1mR8WjeTi/9R8hTZxkTkT0Jmw2Gy5duoQHDx5o+kwmE/bs2YPo6GgUFBToUF3wYgCiVZse7cCPbl+D4jHvJ0Iq+PDmOCbf/1XEZXMVAhHRm5iYmEB9fb3mKAsA2LZtG44cOYLIyEj09fXpUF1wYwCiVXHY5/H95v+KeUW9NP6X703AtiEbG3/hX+hUGRFRYBofH8eZM2dgt9tV7WFhYSgvL8eOHTs4z2cdMQDRqvy88c/xdFF9zFrN5CxyxxVY/+xPASP/KRERrdZK4ScpKQk1NTVISEjQqbLQwXcteq3rnd9Hx8gzVVuuYsVnu2Zw84u/j50ZW3WqjIgo8IyNjeHs2bOa8FNQUIDS0lIYjUadKgstDED0SnOWMZy5dVbVlmBw4sO2cbRllWHfF0/pVBkRUeAZGxvDmTNn4HA4VO2FhYUoKSnhkJcPMQDRK7Vc+S9weIx8hQmJrw1MYFrZiJTf/SOA36xERKsyOjqKs2fPMvz4CR4ZSyuaGbuB60+fqNpqbbPIemjHpQ/+EFs2cYyaiGg17t+/j9OnT2vCT1FREcOPTngHiLySihMtbX8Jp1z+powVLlS3z+I7O7+EL58s1bE6IqLAoCgKrl69ijt37mj6ioqKUFxczPCjEwYg8mqq7+9xc9oBzw0Pa0bN6Irchh2//k2EGfgNS0T0KlarFQ0NDXj69Kmm78CBAzhw4ADDj444BEYayvwQLt45p7r7EyddqOgxo6X611G8JVrH6oiI/N/U1BR++tOfasKP0WhEdXU17/z4Ad4BIhUpFUzc/r9wa0591teJBzPo2piPX/1CmU6VEREFht7eXrS2tsLlcqnaY2JicOLECWzatEmnysgTAxCpOIdPo/XJU7iwfJcn3ulE6ZAFA7/5NUSbuD8FEZE3DocDra2tXo+t2Lx5M44fP47oaN5B9xcMQPSCYpvCRO/fotMSq2o/MTCLyS15SC/j3R8iIm+mp6dx4cIFzMzMaPry8/NRXl7ODQ79DAMQveB4+N9wZdoIl8fE5402Jw4/s8Dxu1+Di+PVREQa/f39uHjxIpxOp6rdaDSioqICO3bs0KkyehUGIAKwNPF57OEn6LQkqtrrBmehpG2Dq+iITpUREfmnVy1xT0hIQG1tLRITE728kvwBAxABAOwD30XzTAwUj7s/iYsOHByxwPHbfwAYuGCQiOi5hYUFNDQ0YGRkRNOXm5uLiooKmEwmHSqj1WIAIrhm7uDBk+u4v6j+TeX9wVmIzZlwHqzUqTIiIv8zNjaGCxcuYH5+XtVuNBpRXl6OnTt3col7AGAACnFSSizc/3/QML1B1b7VbMOB0XnYf+N3AQMn7hERORwO3L17Fx0dHVAURdUXGxuL48ePc4l7AGEACnGu8Yu4PfIYY454VfsHfVNA8hY4S4/rVBkRkX9wOBzo6elBZ2cnrFarpj81NRW1tbWIiorSoTp6WwxAIUwqDkzd+y5aZtTL3g+MziPbbMfi7/wWEMZ/IkQUmpxOJ7q7u1cMPgCwd+9eHDp0CAbOkww4fHcLYY7hn+P6hAXzSsyLtjBFwecGpuGo/Bxch6r0K46ISEfz8/M4e/YspqenvfabTCZUVFQgNzfXx5XRWmEAClHSOY/he/+IdrN6V9Lqx2bEbdqKxV/5lzpVRkSkr7m5Ofz85z/H3Nycps9kMmH37t3Yu3cvIiMjdaiO1goDUIiaffgxLk8L1aaHcXYnap7ZYP3TbwER/MYmotAzMzODM2fOaFZ4MfgEHwagECRdVgz3/wT3FtQT9j47MAP8yu9BpmfrUxgRkY6mpqZw5swZLC4uqtq3bt2KyspKBp8gwwAUgkYGPkaXWd2WMWfD/pxSOI6+r09RREQ6Gh8fx9mzZ2Gz2VTt27dvR1VVFSc5ByEGoBAjXTaYH/4zehbUv8nUTYXB8W/+NcDNu4goxAwMDKClpUVzltfOnTtRUVHB8BOkGIBCzMD90+idc0F6zP3ZvGDH9pPfhBIV/YpXEhEFF0VRcO3aNXR1dWn6du/ejbKyMu7oHMQYgEKI4rIBT36ETot67k/liB3KgQqdqiIi8j2r1YqGhgY8ffpU01dYWIiSkhKGnyDHABRCbt49i9l5G+wy/EVbrN2FfduPQIZH6FgZEZHvTExMoL6+HhaLRdVuMBhw5MgR5Ofn61QZ+RIDUIiwOx2IHfkRGubUw1xHn8xBfP0zkDrVRUTkS4ODg2hqaoLL5VK1x8TE4Pjx40hJSdGpMvI1BqAQcbHzLGJtFsy5ls/8MrkUlCoJULJ36lgZEdH6k1Li1q1buH79uqZvy5YtqK2tRXQ050GGEgagEDBnd2DLxI/Q+NKuz4efWRBx5Jfg4Dg3EQUxl8uFlpYW9Pf3a/p2796N0tJSrvQKQQxAIeDSnWZsdc1gzLHxRZuQEkeH5+H83RM6VkZEtL4WFxdRX1+P0dFRVbsQAhUVFZzvE8IYgIKclBLxE6dx9aW7P3vHF5C48yCs8Yk6VUZEtL4sFgtOnz6tOdMrIiICx48fR1pamk6VkT/gPb8gd23wPrYoAxi0qld5VQ+Z4ah4T6eqiIjW1/z8vNcDTePj43Hq1CmGH+IdoGA3/fAnuDcbo2rLnrUiS0ZhvrBUp6qIiNbP4uIizpw5A7NZfeZPWloajh8/jogIbvtBvAMU1J7OTCPT2oa+RfWxF7WPzHCUnQDCTDpVRkS0PqxWK86cOYOZmRlVe05ODt5//32GH3qBd4CCWFf3aYyY1eFnq9mG3ZOLWOShp0QUZGw2G86ePYupqSlVe1ZWFmpqarjSi1T4ryFI2ZxOxE2dw8BLc3/eH5yBkrUDytbtOlVGRLT2FhYWcO7cOUxMTKjaMzIyUFtby/BDGrwDFKSu9lxEn8UFz7/ibLMVO6essJ36gn6FERGtsadPn6KxsRGLi4uq9tTUVJw4cQJGo1GnysifMQAFqblHP8bDl+7+fGZgBnJTGpxc/UVEQUBRFNy6dQs3btyAlOoDfTZv3oyTJ08iLIxvc+Qd/2UEoXvD/Xg6NwFg+dDTbXNW5M3YYP2NrwH8gUBEAW5xcRFNTU0YHh7W9KWmpqKurg4mExd60Mr4ThiE7nb9Ax7bwlVtn+2bgbIlE86y4zpVRUS0NiYnJ3Hu3DksLCxo+oqKinDgwAHO+aHXYgAKMtOWWYxO98HzrzZvYRHbZm2wfvVDwMi/ciIKXNPT02htbYXD4VC1R0ZGorq6GhkZGTpVRoGG74ZB5tyVv8Ezu/qv9TM9M3ClZcN5uFqnqoiI3t3AwAC6uro08322bNmCmpoaxMTErPBKIi0GoCAyvODC/OR1AMsrHnbYF5FttmPxV38NMHAlBBEFpjt37uDKlSua9j179uDw4cMc8qI3xgAURK4/bsOcVf1D4Pj9Wbgyt8NVckynqoiI3p6UEu3t7ejq6tL0HT58GPv27dOhKgoGDEBB4tPhRaTZmtED8aJtk+JA7rgN1t/7NYC/HRFRgHE4HGhubsbDhw9V7UIIVFVVITc3V5/CKCgwAAUBpyLxk45Pkb7ohOfwV/kTC5SsHXAdqNCvOCKit2CxWHD+/HlMTk6q2o1GI+rq6jjZmd4ZA1AQ+N79eZS5PsYd13L4CZMShx5ZYP+9bwBCvOLVRET+ZXR0FPX19ZqdnaOiolBQUMDwQ2uC4yIBbsam4CddXbDa1b8l7Z+eR3jefrj2HdKpMiKiN3f//n2cPn1aE34SExNx6tQpbNiwQafKKNjwDlCA+/YtM74c/j8wMKM+9qJicA72P/ifePeHiAKClBLXr1/HrVu3NH1ZWVmorq6GyWTCyMiIDtVRMGIACmD9sw6cu/8QlTF96Mfy/hepVjvSdh2BPSdfx+qIiFbH5XLh008/xcDAgKavsLAQJSUlEPxljtaYT4bAhBCRQoh2IUSnEOKuEOJ/d7fnCCGuCiH6hRD/XQgR7m6PcD/ud/dne3yu/9Xd3iuEOOmL+v3Vf71jwddjz6NrPlLVXj60AMcv/oZOVRERrZ7VasWZM2c04cdoNKK6uhoHDx5k+KF14as5QDYANVLK/QAKAbwnhCgF8H8C+M9SylwA0wC+4X7+NwBMu9v/s/t5EEIUAPglALsBvAfgIyFESO7uN77owrnBMRwOuwqLx+TncEXBvvxqyJQ0HasjIno9s9mMjz/+WDOsFRkZic9+9rNc5k7ryicBSC6xuB+a3P9JADUAfuRu/x6AL7o/PuV+DHd/rVj6FeAUgO9LKW1SykEA/QBCcpbvd+7N4/ORV9Azrz7t+MCEDYZTv6ZPUUREqyClxODgIH72s59hdnZW1RcfH49Tp05h8+bNOlVHocJnc4Dcd2o6AOQC+EsAAwBmpJRO91OeAEh3f5wOYAgApJROIcQsgCR3e5vHp/V8jUZfX99aXoLfsCnAX9+Nwv8X14pmi/rU9x2bCtE3Og6MjutUnX6C9e97NUL12kP1uoHAvXar1Yq+vj7N/j7AUvjZs2cPRkdHMTo6uuLnCNRrf1eheN15eXnr9rl9FoCklC4AhUKIBAA/AbDuM3TX8wunp7+7P48oZQBO1xSA2BftGQtO5H3jD4CIyJVfHKT6+vqC9u/7dUL12kP1uoHAvHZFUXD37l1cv34dTqdT0799+3ZUVlbCaHz1rIZAvPa1EKrXvZ58vgpMSjkjhGgCUAYgQQgR5r4LlAFg2P20YQCZAJ4IIcIAxAOY9Gh/zvM1IUFKiY/uWvC5qGvoeWnyc37czpAMP0Tk38xmMxoaGjAxMaHpE0LgwIEDKCoq4mRn8ilfrQLb5L7zAyFEFIATAHoANAH4RffTPgTwM/fHH7sfw93fKKWU7vZfcq8SywGQB6DdF9fgLxqf2nBvxonPhF3CpHM5vxqkRMruOh0rIyLSmpqawscff+w1/KSkpOBLX/oSDhw4wPBDPuerO0CpAL7nngdkAPADKeVpIUQ3gO8LIf49gJsAvuN+/ncA/L0Qoh/AFJZWfkFKeVcI8QMA3QCcAH7HPbQWMv7yjgXpxgksSDM8h7/ylEiExSbpVxgR0UvGx8dx9uxZ2Gw2VXt4eDgOHTqE/Px8Bh/SjU8CkJSyC0CRl/YH8LKKS0ppBfDlFT7XfwDwH9a6xkDQPe1A41MbfjumHT0L6qGufVsP61QVEZHWs2fP8Mknn8DhcKjas7OzceTIEURHR+tUGdESngUWQD66u7STwHumS5jxGP4KkxI7yn9Br7KIiFQeP36Ms2fPasJPQUEBjh8/zvBDfoFHYQSIsUUXfjCwgAzjBMzKPOBx9MVOEYvImAQAobf0nYj8h5QS3d3daGtrg6Ioqj4eaUH+hgEoQPxN7zzsCvBBzGXN8Nfe3EqdqiIiWmKxWNDS0oLhYe3C3IMHD6KwsFCHqohWxgAUAJyKxN/1LgAAThhbUe9x9IVJSuQd/IJepRFRiJNSYmBgAK2trbDb7Zr+I0eOoKCgQIfKiF6NASgAnH9ixfCCC1vDxjEpbQCWx893hW1EeESUfsURUciyWq24dOkSBgcHNX0mkwlHjx7F9u3bdaiM6PUYgALAd+/NAwC+Et6CewsRqr69BSf1KImIQtzQ0BA+/fRTLC4uavpSU1NRWVmJDRs26FAZ0eowAPm5h3NONAwv7aFRGdaG84vLh59GSIncwhN6lUZEIcjpdOLq1avo7u7W9BmNRhw8eBB79uzhZGfyewxAfu57vfOQALLDRjGqOAAsB6DdkZsRZjSt+FoiorU0MTGBpqYmzMzMaPqSk5NRVVWFjRs36lAZ0ZtjAPJjNpfE3/ctTX7+F2FN6F1Ur/7as/9zepRFRCHG5XKhs7MTN2/e1CxvF0KgsLAQBw4cgMHAreUocDAA+bHTjxYxYV36YVNi7ECDbfluT7SU2JZ/RK/SiChEjI6O4uLFi5ientb0bdiwAdXV1di8ebMOlRG9GwYgP/bd3qXJz0kGM8aEE6rhrw2ZMBr410dE68PhcODatWu4e/eu1/6dO3eitLQU4eHhPq6MaG3wHdRP3ZtxoHVkaU+Nrxovon9Rvfpr9/7P61EWEYWAZ8+eobm5GRaLRdMXFRWFI0eOICcnR4fKiNYOA5Cf+hv30ncAqDJexqfO5bH1SEhkby/RoywiCnL379/HxYsXNXN9AGDHjh04fPgwIiMjvbySKLAwAPmhBaeCfxpYmvwcKeyYD5sHbMubH+6MSuHwFxGtKSklbty4gRs3bmj6NmzYgKNHjyI9PV2HyojWB99F/dCPBxdhtksAwCnRhj6revhrV8F7epRFREHK5XKhpaUF/f39mr69e/eipKQEYWF8u6Dgwn/Rfui/9y+8+PiLxmZcdi6f/WWERG5+hR5lEVEQslqtuHDhAp49e6ZqNxqNqKys5FEWFLQYgPzM03kXLrknPwsoQMQk4Ix50Z8bEYcIE8ffiejdPXr0CK2trZifn1e1R0REoK6uDlu2bNGpMqL1xwDkZ/55cAHS/XG1uIN+u3qJ6a68Wt8XRURBxWq14sqVK16HvOLi4vDee+8hPj5eh8qIfIcByM/86MHywYJfwyfocCzv/SMgkb+HAYiI3t6DBw9w+fJlr4eYbtmyBSdOnOAqLwoJDEB+5P6MA52TjhePYyKHAevy6q+tpijERMbpURoRBTir1YpLly5hcHBQ0yeEwL59+1BcXAyj0ejl1UTBhwHIj/xocPk3sr3yIQal+q+nILvc1yURURAYGhpCS0sLFhYWNH2JiYmorKxEcnKyDpUR6YcByE9IKfHDgeUfTr+F0+i1qU9637XvM74ui4gCmMPhwNWrV9HT06PpMxgMKCoqwv79+3nXh0ISA5CfuDHhwOCc68XjtIgB3HNEvXi8xRiGjRs26VEaEQWg8fFxNDY2wmw2a/qSk5NRWVmJxMREHSoj8g8MQH7ihw+W7/6kKxN4bBTA8nQg7Eov1KEqIgpEQ0NDqK+vh8vlUrULIVBYWIiioiLe9aGQxwDkB5yKxI895v/8S9dpDL68+/P+L/i6LCIKQAMDA2hqaoKUUtUeFxeHqqoqbN68WafKiPwLA5AfuPjMhrHF5YMHC2Ju46ljOQAlGAS2JG7VozQiCiD37t3DxYsXNe35+fkoLS2FyWTy8iqi0MQA5Ad+6LH3T5qYwJMwqR7+2rQDQggdKiOiQNHZ2Yn29nZNe3l5OXbv3q1DRUT+jQFIZ4tOif/xaDkA/SvDT9H/0vBXQeGXfF0WEQUIRVFw7do1dHV1qdqFEKisrEReXp5OlRH5NwYgnZ1/YsWc4/lYvcT2qLt4PL+8+mujEMjaslOf4ojIr83OzqKpqQnj4+OqdqPRiNraWmRlZelUGZH/YwDS2ccPl+/+FJoeYMCpXpmxf9NuDn8RkYqUEr29vbh8+TKcTqeqz2Qyoa6uDmlpaTpVRxQYGIB05FQkLgxbXzz+ZvjP0bugnqS47+CXfV0WEfkxq9WKu3fvYmJiQtMXFRWFkydPYtMm7hlG9DoMQDq6Nm7HrH1p+CtS2LHJOIBexLzoT5cGbNqUrVN1RORvhoeH0dzc7PVIi6ysLBw9ehRRUVFeXklEL2MA0tH5oeW7PyejbqLXGq7qL0rc4+uSiMgPuVwuXL9+XTPRGQDCwsJQVlaGnTt3cric6A0wAOno/JPlAPSl8AZcX1we/jJIiT2Hf0GPsojIj8zMzKCpqcnrkFdycjKqq6uRkJCgQ2VEgY0BSCfD8y7cnV6avJhmnIJBGQU8hr/y7AbEbMnWpzgi0t3zic5XrlzRTHQGgMLCQhQXF8NgMOhQHVHgYwDSSb3H3Z9fiG5Fz0Kkqr8okRuXEYUqp9OJ1tZW3L9/X9MXExODvLw8HDx4UIfKiIIHA5BOloe/JKrDW9FkWV7+Hq4o2FnyOX0KIyJdzc3N4cKFC16HvHJycnD06FE8fvxYh8qIggsDkA5sLolPn9oAAIci+jBhswFYXrmxZ05BWHa+TtURkV6Gh4fR0NAAm82mag8LC0N5eTl27OCxOERrhQFIB5dHbJh3Li1/PxV9Bb2z6qMvijbuAvhDjihkuFwudHV1oaOjQ3OKe3x8PE6cOIGNGzfqVB1RcGIA0oHn6q+t8j5G5PIkxg1OF7IP1+lRFhH5mJQSjx8/RltbG8xms6Y/KysLVVVVCA8P9/JqInoXDEA6eB6AkgxmzDkWASxPgC6asAG7inSqjIh8ZXJyEm1tbXj69KnX/pKSEhQWFnLIi2idMAD52MCsEwNmFwCgNKIXgy9tfrg3PhcIM3l7KREFAafTiatXr6Knp0cz3AUAERERqK6uRmZmpg7VEYUOBiAf8xz+Kg7rxLR1efgrUipI21sJRY/CiGjdLSwsoL6+HmNjY5o+IQTy8/NRXFzM4yyIfIAByMc89/9JxSCmPfpy562Q+w77vigiWndTU1P45JNPYLFYNH1paWkoKytDYmKiDpURhSYGIB+adyi4NLK0vDXBYMGcwwZgeQhshy0WMo4rPYiCzePHj9HY2AiHw6Fq37BhA8rKyrB161bO9SHyMQYgH/r0mQ129/jW4fAeDNvUc33y0gt1qIqI1ouUEnfu3MHVq1c1833S09NRW1uLiIiIFV5NROuJAciHLjxZ3tzsgPEmLFj+jS9RcSJ+31G49CiMiNbcq46zKCgoQFlZGc/xItIRA5APtY4sB6DN8iE8ZwLkzdvgytvj+6KIaM3Nz8+jvr4e4+PjqnYhBMrKyrB7N8/6I9IbA5CPTFpd6J1dOtF5g1jAjMMJzy//TrEFMHGzM6JANzo6ivr6eiwuLqraTSYTamtrubydyE8wAPnIlVH7i4/LwjsxaV/+0gtIbNtWrkdZRLRGpJTo7e1Fa2srFEW9mUV8fDzq6uqQkJCgU3VE9DIGIB9p8whAhYab8PzdMNNlh2lfGff/IQpQNpsNly5dwoMHDzR9mZmZqK6u5mRnIj/DAOQjV0aX5/8kKU/wxKMvb1GBkp7t85qI6N0NDw/j008/xfz8vKavsLAQxcXFnOxM5IcYgHxg3qGgc3Jp/49osYhJpwJg+QfizujtPP2dKMA4nU5cv34dt2/f1vSFhYWhsrIS27Zt06EyIloNBiAfuD5uh9O9BUiF6RoWHcvhJwIK0vJroD0RiIj81fj4OFpaWjA1NaXpS0pKQnV1NTZu5KamRP6MAcgHPCdAF4pbqvk/21w2yD0HfV8UEb0xp9OJjo4O3L592+tBpvv370dxcTGMRqMO1RHRm2AA8gHPALRBGVEFoDxnOBDHlSFE/u7Zs2doaWmB2WzW9MXGxqKqqgqpqak6VEZEb4MBaJ05FIlr40sBKFZYMOGUgMcO0Ds37tWpMiJaDbvdjvb2dvT09Hjtz83NxZEjRxAezn28iAIJA9A6uz3pwIJ7AlBFWBsU53L42WhwYuPeOh5/QeSnhoaGcPHiRa8rvGJiYlBRUYGtW7fqUBkRvatVByAhRCKAPwRQCCDWs09KeWyN6woalz2Wv++XN7Hg0bfdaYcrl1viE/kbq9WKK1euoL+/32t/QUEBDh48yLs+RAHsTe4A/SOACAA/AFTv4/QKnvN/THIKnsNfeYY4Hn9B5GcGBwfR2tqqOcoCAOLi4nDs2DHO9SEKAm8SgMoBbJJS2l77TAKwtDX+8x2gk8Q4ZpXl8CMgsX3zYb1KI6KXKIqCtrY23L17V9MnhMDevXtRXFyMsDDOHCAKBm/yndwFIAPAwDrVEnT6Zp2YtC0dcFFjbIXnZJ8tRgci99Vx/x8iP+B0OtHU1ISHDx9q+hITE3Hs2DFs2rTJ94UR0bp5kwDUCOCcEOJvAIx4dkgpv7umVQUJz+GvPbiNCY++bU4FMi3L90URkcri4iLOnz+PsbExVbvBYEBhYSEKCwu5rw9REHqTAHQUwBMAJ15qlwAYgLzwPP/LLufhefxFbngqj78g0tns7CzOnTun2dsnJiYGdXV1SE5O1qkyIlpvqw5AUsrq9SwkGD2/A5RrGIRZWQ4/Bkhk557UqywiwtIhpg0NDbDZ1NMaExMTcfLkScTGxq7wSiIKBq8MQEIIId37vQshVjzOWEqprHVhge7pvAuPLEuTfk4amlXzfzKEHWH7uHMAkR6cTieuXbuGO3fuaPrS0tJw4sQJLm8nCgGvuwM0CyDO/bET0MzZFe42DpC/xHP4KwMDeOrRtx1hQFSM74siCnHj4+Nobm7GzMyMpi8vLw9Hjx7lfB+iEPG6AOS5S1/OehYSbJ4vfxdwYVY64JkRt8fn61QVUWhSFAW3bt3CjRs3vB5ieuDAARw4cACCx8jTyQAAIABJREFU8/KIQsYrA5CUcsjj40frX07wuDK2FIBKjZ2YV5bDj0koyNj3gV5lEYUci8WCxsZGjI6Oavp4iClR6HqjHb2EEF8AUAkgGR5bGkspv7bGdQU0s11B97QDAFCHFkx59G2FE8acAn0KIwoxQ0NDaG5uhtVq1fTt3LkTpaWlnO9DFKJWnNj8MiHEtwD8tfs1XwYwCeAkAO1geoi7MWGH4r7LHitUWyZhm3EDl78TrTNFUXDt2jWcO3dOE34iIyNRV1eHY8eOMfwQhbA3uQP06wBOSCnvCCG+LqX8V0KIfwLwb9eptoB11T38FSUWMfbS+rjctEM6VEQUOubn59HQ0OB1yCs9PR3V1dWIiorSoTIi8idvEoASpJTP143ahRAmKWW7EKJyPQoLZFfdE6C/IJphlcs32SKFgs0lX9KrLKKgNzIyggsXLmgOMhVCoLi4GIWFhZzoTEQA3iwADQghdksp7wK4A+C3hRDTAKbXp7TA5FIkro8vBaBDogMPPRacZEOBMS5Rp8qIgpeUEj09Pbh8+bJmlVd0dDRqamo40ZmIVN4kAP1bAEnuj/8YwD8CiAXwP691UYHs3owTZsfSD2DFMAsophd926O26FUWUdByuVxobW1Fb2+vpo9DXkS0klUFIPdw1xn3xxVYmgj96+7uy+tUW0Bqd8//SRNjeOZSb6i2fQePvyBaS/Pz87hw4YLmIFMAKCwsRHFxMQyGVa/1IKIQ8toAJIT4bQDlAH7V3XQewASWlsFHA/g3AL6zXgUGmraxpR2gfxlnYfOY/xMrXEjeW6NXWURBZ2ZmBlevXtXM9wkLC0NVVRVycrh3KxGtbDV3gL4G4Lc8HtuklFsBQAhRCOCvwAD0wvM7QNuM99Hjcf5XjiEMwvhG2y4RkRdSSty9exe3bt3S9MXFxeHEiRNITORcOyJ6tdW8I+dIKTs9Hnd7fNwJYNvalhS4xhZdGJxbSj0WYQOwvMfI9o25OlVFFDycTidaWlowMDCg6cvMzER1dTUiIiJ0qIyIAs1qAlCsECJGSjkPAFLKIx59Me7/CMt3f3IwjGcuk6ovZ+8X9CiJKGiYzWbU19djampK01dUVIQDBw5wvg8RrdpqAtAdAHUAfuKl7ySAu2taUQB7vgHiB2iEQy7vNbJBuLBx6169yiIKaFJK9Pb2oq2tDQ6HQ9VnMplQXV2NrKwsnaojokC1ml+X/guAj4QQXxRCGABACGEQQnwA4P9297+SECJTCNEkhOgWQtwVQvwv7vZEIUS9EKLP/f+N7nYhhPgLIUS/EKJLCHHA43N96H5+nxDiw7e56PXy/A5QtqFf1Z5lDOPma0RvYWFhAefPn8fFixc14Sc6Ohpf/OIXGX6I6K289g6QlPL7Qoh0AP8AIFwIMYGlw1BtAP5MSvlPq/hznAD+tZTyhhBiA4AOIUQ9gF8D0CCl/LYQ4o+xtL/QHwF4H0Ce+7/DWJpofVgIkQjgWwBKAEj35/lYSqn7Zow2l8TNiaUAZDcuAM7lIbCc2HS9yiIKWIODg7h06ZLXg0xzcnKQnp6OhIQEHSojomCwqmVJUsr/KIT4fwGUYSn8TAK4IqWcXeXrnwF45v54TgjRAyAdwCkAVe6nfQ9AM5YC0CkAfyeXtnRtE0IkCCFS3c+tl1JOAYA7RL0HYDUhbF11TtphV4BYzGPkpf1/srbztBCi1XI6nbh8+bLXjQ3DwsJQWlqK/Px89Pf3e3k1EdHqrHpdtpTSDOCTd/0DhRDZAIoAXAWw2R2OAGAEwGb3x+kAhjxe9sTdtlK77p6f/3UKzar9f6KEgk0F1XqVRRRQLBYL6uvrMTExoelLSUlBVVUV4uPjdaiMiIKNTzemEULEAvhnAL8vpTR7zouRUkohhFzxxW+hr69vLT/dKzUMhgMIQ6HowmOP9gwoGHjw0Gd1+PKa/Q2vPbBNT0+ju7tbM9dHCIHs7GxkZmZibGxMtetzMFz32+K1h55QvO68vLx1+9w+C0BCCBOWws9/k1L+2N08KoRIlVI+cw9xPf/JNgwg0+PlGe62YSwPmT1vb17pz1zPL5wnKSW6O0YAKDAYZwCPIbCcqE0+q6Ovr89nf5a/4bUH7rVLKdHV1YWuri7NQaZxcXGora1FcnKy5nWBft3vgtceetceqte9nnyyaYZYutXzHQA9Usr/5NH1MYDnK7k+BPAzj/avuVeDlQKYdQ+VfQKgTgix0b1irA5rMCz3rh5ZXBhbVGCEE2Mv3cPKySjRpyiiAGC329HQ0ID29nZN+MnKysIHH3zgNfwQEb0rX90BOoKls8RuCyGe71//JwC+DeAHQohvAHgE4CvuvjMAPgOgH8ACgK8DgJRySgjx5wCuuZ/3Z88nROupzT3/p1J0YEFZvvtjEgq27OMGiETejI+Po6GhAXNzc5q+kpISFBYWcvsIIlo3PglAUspLWDo81ZtaL8+XAH5nhc/1XQDfXbvq3t3z/X+Oog2eaSxDKAiLjdOnKCI/JaVEd3c32traoCiKqi8iIgLV1dXIzMxc4dVERGuDp3OugfbxpQAUZxjFlMfP82xTrE4VEfknu92OlpYWDA4OavqSk5NRW1uLuDj+0kBE648B6B1ZHAq6p5dWrUzBBcBjAnRygU5VEfkfs9mMs2fPwmw2a/oKCgpQWloKo9Ho5ZVERGuPAegd3Zp0QJHALvTB7DH/xwCJjL2ndKyMyH+Mjo7i/Pnzml2dTSYTjh07hm3btulUGRGFKgagd9ThHv56X3wKz91L0gxOmLZk61ITkT8ZHBxEU1MTXC6Xqj0pKQm1tbXc2JCIdMEA9I6uuSdAbxGPMeSxijfbGK5TRUT+4/bt22hra9O05+bm4ujRowgL448gItIHf/q8ow73AajzwgZIj/k/cTl6lUSkO0VR0NbWhrt372r6ioqKUFxczCXuRKQrBqB3MDzvwrMFBUmYwJTiOXlTImvne7rVRaQni8WCxsZGjI6OqtqFEKioqEB+fr5OlRERLWMAegfX3fN/PieaVO2bjU5E5HIHaAo9Q0NDaG5u9jrZuba2lvv7EJHfYAB6B88nQO9AL0Y82rNgAAxczkuhQ1EUdHR04NatW5q+mJgYnDx5EklJSTpURkTkHQPQO7jmDkAugwVQlo9Vy47erFdJRD63sLCAxsZGPHv2TNOXkZGB6upqREZG6lAZEdHKGIDeklOR6Jx0IBxWTCrqyZzZWRU6VUXkW8PDw2hqasLi4qKqXQiB4uJinudFRH6LAegtdU87sOCUOCGuQvE45izO4EJsQZ2OlRGtP0VRcPPmTdy4cUPTFxUVhZqaGqSlpelQGRHR6jAAvaWO8aVtD8twA9Me7RnCBREdo09RRD7wqiGvtLQ0VFdXIzo6WofKiIhWjwHoLT2f/xNrGMe0xwGomWE8yJGC1+TkJM6ePasZ8gKAAwcOoKioCAaDwcsriYj8CwPQW3q+Asz80gGoW3kAKgWpkZERnDt3Dg6HQ9UeFRWF6upqpKen61QZEdGbYwB6C7N2BfdnndgmHmH2pQNQUws+q2NlROvj8ePHuHDhguY8r9TUVNTU1HDIi4gCDgPQW7g5YYcE8Dl8Co/jv7DZ4IQpbbteZRGti4GBATQ1NUFKqWrfs2cPDh8+zCEvIgpIDEBv4bp7AnSWeICHHu8JGcIEcMkvBZHu7m60trZq2ktKSrjEnYgCGgPQW3g+AdppWABcy1/CrbGcA0HBYXFxEZcvX8aDBw80fUeOHEFBAee6EVFgYwB6Q1JKdIzbESMWMKaob/1nZB3TqSqitSGlxIMHD3D58mXNeV5CCFRVVSE3N1en6oiI1g4D0Bt6ZHFhwqrgFwytsMvlABQpFCTtrtKvMKJ3tLCwgEuXLuHRo0eaPqPRiOPHj2Pr1q06VEZEtPYYgN7Q8+XvB3ELwx7tGZAQETzviALT0NAQmpqaYLPZNH3Jyck4duwYDzMloqDCAPSGns//iTFOAM7lJfAZ4fF6lUT01qSU6OzsxLVr1zR9BoMBxcXF2LdvH1d6EVHQYQB6Qx3jdhigYAYKVBsgpuzRryiit+BwONDS0uJ1onNKSgqOHTuGjRs36lAZEdH6YwB6A05F4vaUA/sNfRh3qr906bs/o1NVRG/ObDajvr4eU1NTqnYhBEpKSnjXh4iCHgPQG7g/64TVBXzGeBFmubz/SSJciN6SpWNlRKv35MkTNDY2aub7REREoKamBhkZGTpVRkTkOwxAb6BrcmkDxAzDI3R7HoBqNOlUEdHqSSnR1dWFa9euaXZ1TkxMxIkTJxAXx8N8iSg0MAC9gc7JpQnQNsMigPAX7ZmxmTpVRLQ6DocDFy9exMDAgKZv27ZtOHbsGEwmBnkiCh0MQG+gc9KBLYYpjLqMqvbMbdwAkfzXSvN9AODgwYPYv38/j7QgopDDALRKilyaAP0VcRkWjwAUBomUXRU6Vka0ssePH6O5uVkz3yc8PBw1NTXIzOTdSyIKTQxAqzRodmHOIVFk6kKvx/yfVEiEhXMDRPIvLpcL165dw+3btzV9GzduxIkTJxAfz72riCh0MQCtUtfU0vyfCMMUVPN/IrhPCvmX2dlZNDY2YmJiQtOXk5ODyspKzvchopDHALRKnZMOhMOBl2dRZG7ep0s9RN709/fj0qVLcDgcqvbn+/twvg8R0RIGoFXqnHRgr+EBRh3q35wzdtfqVBHRMqvVisuXL3td5RUbG4uamhps3rxZh8qIiPwTA9AqSCnROenAb+Iq5j02QIyBgviUbP0KIwIwPj6Oq1evYnFxUdOXnZ2NY8eOISIiQofKiIj8FwPQKjyZd2HKpmBr2AP0uJbbMwxGDieQbl5118doNKK0tBS7du3iv1EiIi8YgFbh+Q7QimEecC0PgWVGb9KrJApxQ0ND+PTTT73e9UlKSkJVVRUSExN1qIyIKDAwAK1C59TSBOgJqf5NOjO1WKeKKFRJKXHz5k10dHRo+gwGA4qKilBYWMiDTImIXoMBaBU6Jx0oMtzHpNNzB2iJtN01utVEocdms6G5uRmPHz/W9CUlJaGyshJJSUk6VEZEFHgYgFaha9KOD9GGeSzfAdokXIhMSNGxKgolk5OTuHDhAsxms6pdCIGsrCzU1tbyrg8R0RtgAHqN0QUXni0oSA17jH7VBOjwlV9EtEaklLh//z5aW1vhcrlUfZGRkaipqcHCwgLDDxHRG2IAeo2uqaUJ0A6xCM8vV2ZMqk4VUaiw2+24dOmS11VemzZtwvHjxxEbG4u+vj4dqiMiCmwMQK/RNelAOOwYV16aAJ1xUKeKKBSMj4+jsbFRM+QFALt27UJZWRmMRqOXVxIR0WowAL1G56Qdhwy3saAsv9mYoGDTrmodq6JgJaXE7du30d7eDimlqi8sLAxHjhzBjh07dKqOiCh4MAC9RuekA1/Fdcx7tKUKF4wbEnSriYKT1WpFc3MzhoaGNH2JiYmoqanBxo08fJeIaC0wAL3CjE3BI4sLycZhzHv8Mp5pjNSvKApKo6OjaGhowPz8vKavoKAAhw8fRlgYv12JiNYKf6K+Qqd7B2ibsAFYHgLLjM3QqSIKNlJK3LlzB1evXtUMeUVERODo0aPIycnRqToiouDFAPQKXVN2RGIR4y71EuPMrHKdKqJgYrPZ0NLSgocPH2r6UlJSUFtbi9jYWN8XRkQUAhiAXqFr0oFyww24PI7AiBUuxOUf1bEqCgbj4+NoaGjA3Nycpm/v3r04dOgQ9/YhIlpHDECv0DnpwJdwUzUBOkO4gKgY3WqiwPZ8yKu9vR2Koqj6wsPDUVlZiezsbH2KIyIKIQxAK7A6JfrNTsQbRlUToDOM0foVRQHNarXi008/9XqWV3JyMmpraxEXF6dDZUREoYcBaAV9ZicUCSzADs8J0Fs3ZOlXFAWskZERNDY2el3ltXv3bhw+fJgbGxIR+RAD0Ap6ZxzYADNmPDZAFJBIz6nUsSoKNE6nE9euXcOdO3c0feHh4Th27BhXeRER6YABaAX3pp0oN1wDPIa/ko1OhOfyCAxandHRUTQ3N3s9ziIlJQU1NTXYsGGDDpURERED0Ap6ZhwoxG0seLRlSAWI4hwgejWn04mOjg50dXV57d+7dy8OHjzIIS8iIh0xAK2gd8aJw5hQBaDMMO7JQq/25MkTtLa2er3rExsbi2PHjiE9PV2HyoiIyBMDkBdWp8SDOQfmhBPA8l4smfHb9CuK/Nr8/Dza2trw4MEDr/27du3CoUOHEB4e7uPKiIjIGwYgL/rMTsTLSVg9wo9JSKRwAjS9RFEUdHd34/r163A4HJr+mJgYHDt2DBkZPD6FiMifMAB50TvjwGFxU9WWYnTAsK1Ip4rIH83OzqKpqQnj4+Ne+wsKCnDw4EHe9SEi8kMMQF7cm3ZiH7qx6NGWqkggkhOgaWk3576+Ply+fNnrXZ/k5GRUVFRg06ZNOlRHRESrwQDkRc+MA6ViAoseS+DTwnj8BS0dYHrx4kUMDg5q+kwmE0pKSlBQUMBzvIiI/BwDkBe9M07sgwOeE6DT47hZXah79uwZmpqavO7mnJWVhSNHjiAmhkGZiCgQMAC9xOqUGJ2bgsUj/BggkZJ9TMeqSE9SSty9exdtbW2QUqr6jEYjysrKkJ+fDyGEThUSEdGbYgB6SZ/ZiYNQT4BONjoRlluiU0WkJ6fTiUuXLqGvr0/Tl5SUhJqaGiQkJOhQGRERvQsGoJf0zjhQjNuwerSlQuEE6BBksVhQX1+PiYkJTd++fftQUlLC3ZyJiAIUA9BL7k07sVGMYcRjpCPVyPATakZGRnDhwgUsLi6q2k0mE6qrq5GVlaVTZUREtBYYgF5yb8aBItjhOQE6YwPf7EKFlBLd3d24cuWKZr5PfHw86urqOORFRBQEGIBeMjA9hxzpOZlVYkvWEd3qId951XyfzMxM1NTUcFNDIqIgwQDkweqUSLZ0AFgOQBuNLoTnlulXFPmE2WzGhQsXMDk5qekrKipCcXExV3kREQURBiAP/WYnDspbcHi8z6XCBRHNvV2C2dDQEJqammCz2VTtJpMJlZWVyMnhHlBERMGGAcjDvRkHksUzPPNoSzNG6VYPra/Z2Vm0t7fj4cOHmr6EhAScOHGC832IiIIUA5CHe9NObDDYAGV5AnRaLE/xDjY2mw03btxAd3c3FEXR9GdnZ6OyspLzfYiIghgDkId70wvYrqjneaRllupUDa01RVHQ09ODjo4OzXAXAAghUFJSgv3793O+DxFRkGMA8mCYuAnFYwL0BoML0TsrdayI1srw8DCuXLmC6elpr/0pKSkoLS3F5s2bfVwZERHpgQHIzeqU2L7YDqfHL/5bhAsiOla/ouidzc3N4erVq15PbweAmJgYHDp0CNu3b+ddHyKiEMIA5NZvdmKzGMawR1uaIUK3eujdKIqCW7du4datW3C5XJp+k8mE/fv3Y+/evQgL47cBEVGo4U9+t3szDjgNC4CyfLZTWmyqjhXR27Lb7WhsbMTQ0JDX/ry8PBw6dAjR0TzihIgoVDEAufVM2iDlSxOg0w/qVA29rbm5OXzyySde5/okJyejvLyc83yIiIgB6LnZ0S5EyeXl75FCQVx+jY4V0ZsaHR3F+fPnYbVaVe2RkZE4dOgQduzYwXk+REQEgAHohZTpVsx5PN5icMIQy03wAsXo6ChaWlo0+/okJyejrq4OMTHczZuIiJYxAGFpBVi865EqAKUauAleIHC5XGhvb0dPT4+mLycnB1VVVZzkTEREGnxnANBndkIa5tUToGM4T8TfWSwWNDQ0YGxsTNPHA0yJiOhVDK9/yrsTQnxXCDEmhLjj0ZYohKgXQvS5/7/R3S6EEH8hhOgXQnQJIQ54vOZD9/P7hBAfrlV9PVN2TL88ATq1aK0+Pa2DoaEh/PjHP9aEH4PBgOrqapSUlDD8EBHRinwSgAD8LYD3Xmr7YwANUso8AA3uxwDwPoA893+/CeCvgKXABOBbAA4DOATgW89D07saGunDgscE6DAhkbSrbi0+Na0xRVFw7do1nDt3TnOcRWxsLD7/+c8jNzdXp+qIiChQ+CQASSlbAEy91HwKwPfcH38PwBc92v9OLmkDkCCESAVwEkC9lHJKSjkNoB7aUPVWwp9eUj1OFk4Y45LW4lPTGlpYWMCZM2dw69YtTV9iYiI++OADpKSk6FAZEREFGj3nAG2WUj5zfzwC4Pmkm3QAnjvYPXG3rdS+or6+vlUVErmgfl6yEKt+rb8J1LpfZ3p6Gt3d3XA4HJq+nJwcbN26dcWND0NBsP69v06oXjfAaw9FoXjdeXl56/a5/WIStJRSCiHkWn/e1XzhFpwKjK0zqrbUiIR1/aKvl76+voCs+1WklLh16xa6urogpfqfSFRUFGpra5GamhqU175aoXrtoXrdAK89FK89VK97PekZgEaFEKlSymfuIa7ns1mHAWR6PC/D3TYMoOql9uZ3LeL+jBOLBiegLH8ptiRue9dPS2vAarWiubnZ652dtLQ0VFdX8zgLIiJ6K76aBO3NxwCer+T6EMDPPNq/5l4NVgpg1j1U9gmAOiHERvfk5zp32zu5O7GISan+MmzOKX/XT0vvaGpqCj/96U+9hp+ioiK8//77DD9ERPTWfHIHSAjxT1i6e5MshHiCpdVc3wbwAyHENwA8AvAV99PPAPgMgH4ACwC+DgBSyikhxJ8DuOZ+3p9JKV+eWP3GZh+3w/HSERgbsngGmJ4GBwfR3NwMp9Opao+MjERVVRUyMzNXeCUREdHq+CQASSm/ukJXrZfnSgC/s8Ln+S6A765haQgfa1c9TjYoMHDnYF1IKXHz5k10dHRo+lJSUlBbW4vY2FgdKiMiomAT8u/0JscQ4LFf3iaDSb9iQpjdbkdLSwsGBwc1ffn5+SgvL4fRaPTySiIiojcX0gHIbFegGCyAXH5jTY3ZpGNFoenZs2dobm6GxWJRtQshUF5ejl27dnFXZyIiWlMhHYB6Z5wwCwl4rK7esnmXfgWFGJfLhevXr6Orq0vTFxkZiePHjyM1NVWHyoiIKNiFdADqG5nAlKIeVknZWaNTNaFlcnISzc3NmJrSzmNPTExEXV0dNmzYoENlREQUCkI6ANkfNEHxmAAUa3AhJjFbv4JCgJQSd+7cQXt7OxRF0fTv2bMHBw8eRBgnohMR0ToK6XeZsNnbqsfJnGayrqxWK1paWvDo0SNNX0xMDCorK5Ge/srTTYiIiNZESAcgoYyqV4CZuLHeehkdHUVjY6NmojMA5Obmory8HBERETpURkREoShkA9CMTYHdYAPk8rL31Pg0HSsKTlJK3L59G+3t7ZqzvMLDw3H06FFs28ajR4iIyLdCNgD1TNsxLYR6BVhmkX4FBSGLxYKWlhYMDw9r+jZt2oTa2lpOdCYiIl2EbAAaHujFtGoFmERKbpVe5QQVKSX6+vpw+fJlOBwOTf+ePXtw6NAhbmxIRES6CdkA5BpqgecEoASDgojIeP0KChILCwu4dOmS14nOERERqKysRFZWlg6VERERLQvZAGRYuA94HAKfbDSs/GRalcHBQVy8eBE2m03Tl5qaisrKSg55ERGRXwjZAOQSM/BMQMkRvPvzthwOBy5fvoz79+9r+oxGIw4dOoTdu3fzOAsiIvIbIRmAxhddmDc4ARn+oi09mSuR3sbY2BiamppgNps1fSkpKaisrERCQoIOlREREa0sJAPQ/dE5TAqjegXYtlL9CgpAiqKgs7MTHR0dmuXtBoMBxcXF2LdvHwwGDi0SEZH/CckANN3bhjmPFWAGSCSnH9CxosAyMjKCy5cvY3JyUtOXkJCA6upqJCcn61AZERHR6oRkAHKNtaseJxoVhBm5C/HrWCwWtLe3Y2BgwGv/rl27UFpaynO8iIjI74XkO5W0DwEeW9AkGsNXfjLB6XSiq6sLnZ2dcDqdmv7IyEgcO3aMy9uJiChghFwAklLCZrAAWA49KTEcrlmJ2WzGhQsXvA53AcD27dtRWlqK6Gieo0ZERIEj5ALQ6LwTs0YAynJbRlq+bvX4sydPnqCxsdHrvj5JSUkoKytDamqqDpURERG9m5ALQI8Gn2Bcqi97S84RnarxT1JKdHZ24vr165oVXhERETh48CB27tzJFV5ERBSwQi4AzQ5ehVUuv3GbhERCYq6OFfkXu92OlpYWDA4OavpycnJw9OhRRERwwjgREQW2kAtA9pk7qseJBgmjgYdyAsD4+DiampowOzurahdCoKSkBPv37+duzkREFBRCLgA5HCOqFWAbw7gCTFEUdHV1rTjkVVNTg4yMDJ2qIyIiWnshF4CsxgUAphePN4X4CjCLxYKmpiaMjIxo+hITE3HixAnExcXpUBkREdH6CakANG1TYDZI9QqwLTv1K0hnDx48wMWLF2G32zV9+fn5KCsr46aGREQUlELq3W3g8SgmNCvAynWqRj9SSty4cQM3btzQ9EVERODYsWPIzs72fWFEREQ+ElIBaHKg/aUVYArik/J0rMj3XC4XWlpa0N/fr+nLyMhAZWUlNzUkIqKgF1IByDpxS/U41FaAWa1WnD9/HqOjo6p2g8GAw4cPY/fu3VzlRUREISGkApDT/hTw2LsvlM4Am5mZwblz5zA3N6dqj4iIQF1dHbZs2aJTZURERL4XUgHIarDA85KToxP1K8ZHpJS4f/8+rly5AofDoeqLj4/He++9x1VeREQUckImAFkcCuaEBDy2uUlPCe75P4uLi7h48SIePXqk6UtNTcWJEye4qzMREYWkkAlA/aNmTEA93yd1W5lO1ay/x48fo6WlBYuLi5q+HTt2oKKiAkZj6Mx/IiIi8hQyAWjkfjtsHivAwoWChJQCHStaHy6XC21tbeju7tb0hYWFobS0FPn5+ZzsTEREIS1kApB1tEP1ONGgwGAIrsu32+04c+aM112dN23ahKqqKiQkJOhQGRERkX8JrgTwCg7bkOq/lASPAAASDUlEQVTxRqNphWcGpsnJSXR0dMBms6nahRAoKipCUVERDAbDCq8mIiIKLSETgGxyDhDLASApYqOO1aythw8foqmpCU6nU9W+YcMG1NTUICUlRafKiIiI/FNIBCCbS2LO4AI85gClb9qmY0VrQ1EU3Lp1Cx0dHZq+1NRUHD9+HJGRkTpURkRE5N9CIgD1Ty5i8qUVYGk5h3WqZm1YLBY0Nzfj2bNnmr6CggKUlZVxyIuIiGgFIRGAhu5f164ASzugY0XvZmBgAJcuXfJ6ivuRI0dQUBB8q9uIiIjWUkgEoPmn11SPkwwKDMbAu3S73Y7W1lavB5lGREQgPz+f4YeIiGgVAi8FvAXn4kPV440BeADq+Pg4Lly4AIvFoulLT09HZWUlnj59qkNlREREgSckApBNMQMe+/4lRcTrV8wbklKip6cHV65cgaIoqj6j0YiDBw9iz5493NiQiIjoDQR9AHIq8v9v796DqzjPO45/HyQBxQghgcNVxiBuJRRjLsYMAoN8jePUacbTupckddN0XMczSTudxp40rTNtkzSdtE6nnnoaj+ukbmLHTuN6QnyjZmqBsEkxYIPNHVLAgC9IAmNQhPT0j30x5+icIxAcac/Z/X1mNNp9390977PvSnq0++4u7w86DX421LG1k2Js0fnr7OxkzZo1eS951dbW0tTURF1d8l/oKiIiUmyJT4D2tnVwlOy7oSZOXhhTa85fW1sbq1atorW1Nadu1qxZLFq0iMrKxHefiIhIv0j8X9A9u17PvQPsstK9Bd7d2bFjB+vWraOzszOrrqqqiqVLl9LQ0BBT60RERJIh8QnQ8QMvZ82PquhiUGVpPhzw1KlTNDc3s2/fvpy62tparrvuOr3LS0REpAgSnwD98v09WfN1Vpp3gO3fv5+XXnqJDz74IKdu6tSpNDY2UlWVrPeXiYiIxCX5CVB39hiauqrhMbUkv9OnT7N+/Xq2bt2aU1dZWcnVV1/NzJkzdZeXiIhIESU6Aep254R1Zt0BNqamPsYWZWttbeXFF1/k6NGjOXWXXnopy5cv1yUvERGRfpDoBOjA+6dp9ew7wOovmx9Ta85yd7Zv305LSwtdXV1ZdWbG3LlzmTdvnt7lJSIi0k8SnQDt2reDDnrcAdawJMYWQUdHB83Nzezduzenrrq6mhUrVjBmzJgYWiYiIpIeiU6A2vaty5ofNaiLQYPjGwPU2trKs88+m/d1Fg0NDTQ2NjJ48OAYWiYiIpIuiU6AOo7tzJofGeNA4ra2NlauXMnJkyezyisrK1myZAnTpk3TQGcREZEBkugEqLPzvaz5kRXDYmlHe3t73uRn1KhRNDU1aaCziIjIAEt0AnTSToGffe5P7SUDP7bm2LFjrFy5Muf5PtOnT6exsZGKitJ8LpGIiEiSJToBOtZjfuK4WQP6+cePH2flypWcOHEiq3zGjBksXbpUl7xERERikuwEKOPsj+GMndo4YJ/d3t7OM888kzPgedq0aUp+REREYpboBChTTUUXlSP7/yGIZ15m2tLSwunTp7PqGhoaWLZsmZIfERGRmKUmAao17/fEo7dn/EyZMoXly5fr4YYiIiIlIDUJUI3174tEDx06xOrVq3PG+0B05kfJj4iISOlITwI0uK5fttvd3c2GDRvYtGlTTl1lZSWLFy9mxowZuuwlIiJSQlKTAH2k9vKib7O9vZ3Vq1fzzjvv5NSNHj2aFStW6Bk/IiIiJSg1CVD95IVF25a7s3PnTlpaWujs7MypnzNnDgsWLNAzfkREREpUKhKgIdZNzWULirKtjo4O1q5dy+7du3Pqhg0bxvLly5kwYUJRPktERET6RyoSoLpBXQyquviXjO7du5e1a9fmvNICYNKkSSxbtoyhQ4de9OeIiIhI/0pFAjTSLu7uq5MnT9LS0sKePXty6ioqKli8eDEzZ87UQGcREZEykYoEaETFJRe0nruze/duWlpa6OjoyKmvq6ujqamJ2trai22iiIiIDKBUJEA1w8b1eZ2uri7WrFnDjh07curMjCuvvJK5c+dqoLOIiEgZSkUCNH787D4tf+rUKV544QUOHz6cUzd69GiWLVvGqFGjitU8ERERGWCJT4AMp37GNee9fFtbG8899xzHjmW/S76iooJ58+YxZ84cPdFZRESkzCU+ARo5qIvBIy49r2XfeustVq1alTPeZ8SIEdxwww0a6yMiIpIQyU+AzvPGrG3btrFmzRrcPat87NixXH/99bq9XUREJEESnwCNsN6f/9PV1cW6det48803c+qmT59OY2OjBjqLiIgkTOIToOpeXoJ68uRJVq1alXew88KFC7niiiv0bB8REZEESnwCVFfXkLf83Xff5fnnn+fEiRNZ5ZWVlVxzzTVMmTJlIJonIiIiMUh8AjRp6uKseXdn27ZtrFu3jq6urqy64cOHc8MNN+gWdxERkYRLdAI01LoZXT/nw/m2tjaam5vzXvIaP3481157rQY7i4iIpECiE6DaQd0Mqqigq6uLzZs3s3HjRrq7u3OWmz17NosWLdLzfURERFIi0QlQDYM4cuQIzc3NtLa25tRXVlayZMkSpk+fHkPrREREJC6JToD89EyefvrpvHX19fUsWbKE6urqAW6ViIiIxK0sEyAzuwn4DlABPOTu38y33MnTH8kpGzp0KIsXL6ahoUG3uIuIiKRU2SVAZlYBPABcDxwAfm5mT7v7G+dad/r06SxatEgDnUVERFKu7BIg4Cpgl7vvATCzx4BbgYIJUHV1NUuXLmXChAkD1EQREREpZeWYAE0A9mfMHwAW5VvQzJg9ezbz58+nqqpqQBonIiIipc96vvyz1JnZbcBN7v6HYf7TwCJ3vxugvb39w4A2bNjAiBEj4mmoiIiIXJRp06Z9OF1TU1PUgbvleAboIFCfMT8xlOWYP3/+gDSoVOzcuTPrYEkTxZ6+2NMaNyj2NMae1rj7Uzk++e/nwDQzm2xmg4Hbgfz3uouIiIjkUXZngNz9tJndDTxHdBv8w+6+NeZmiYiISBkpuwQIwN1/Bvws7naIiIhIeSrHS2AiIiIiF0UJkIiIiKSOEiARERFJHSVAIiIikjpKgERERCR1lACJiIhI6igBEhERkdRRAiQiIiKpowRIREREUkcJkIiIiKSOEiARERFJHSVAIiIikjpKgERERCR1zN3jbkNRtbe3JysgERERoaamxoq5PZ0BEhERkdRRAiQiIiKpk7hLYCIiIiLnojNAIiIikjpKgERERCR1EpUAmdlNZrbdzHaZ2T1xt6dYzGyfmb1uZpvM7H9DWZ2ZvWBmO8P32lBuZvZPYR+8ZmbzMrbz2bD8TjP7bFzx9MbMHjazt81sS0ZZ0WI1s/lhX+4K6xb1roILVSDu+8zsYOj3TWZ2c0bdvSGG7WZ2Y0Z53p8BM5tsZq+E8sfNbPDARVeYmdWb2Woze8PMtprZF0N5Gvq8UOxp6PehZrbezDaH2L8WyvO218yGhPldof7yjG31aZ/EqZe4HzGzvRl9PjeUJ+Z4P8PMKsxso5n9NMzH1+funogvoALYDUwBBgObgVlxt6tIse0DRvco+xZwT5i+B/i7MH0z8AxgwNXAK6G8DtgTvteG6dq4Y8sT6zJgHrClP2IF1odlLaz7sbhj7iXu+4A/y7PsrHB8DwEmh+O+orefAeBHwO1h+kHgj+OOObRlHDAvTFcDO0J8aejzQrGnod8NGB6mq4BXQh/lbS9wF/BgmL4dePxC90mJxv0IcFue5RNzvGfE9KfAD4Cf9naMDkSfJ+kM0FXALnff4+6/BB4Dbo25Tf3pVuB7Yfp7wCczyr/vkZeBkWY2DrgReMHdj7p7K/ACcNNAN/pc3P0l4GiP4qLEGupGuPvLHv0kfT9jW7EqEHchtwKPuXuHu+8FdhEd/3l/BsJ/gE3Ak2H9zH0YK3c/5O6vhunjwJvABNLR54ViLyRJ/e7u/n6YrQpfTuH2Zh4PTwLXhvj6tE/6Oaxz6iXuQhJzvAOY2UTg48BDYb63Y7Tf+zxJCdAEYH/G/AF6/2VSThx43sw2mNkfhbIx7n4oTB8GxoTpQvuhnPdPsWKdEKZ7lpeyu8Op74ctXAai73GPAtrc/XSP8pISTnFfSfRfcar6vEfskIJ+D5dCNgFvE/0B303h9n4YY6hvJ4qv7H7f9Yzb3c/0+d+GPv9HMxsSypJ2vN8P/DnQHeZ7O0b7vc+TlAAlWaO7zwM+BnzBzJZlVoZMPxXPM0hTrMC/AA3AXOAQ8O14m9N/zGw48GPgS+5+LLMu6X2eJ/ZU9Lu7d7n7XGAi0X/vM2Nu0oDoGbeZzQbuJYp/IdFlrS/H2MR+YWa3AG+7+4a423JGkhKgg0B9xvzEUFb23P1g+P428BOiXxZHwulOwve3w+KF9kM5759ixXowTPcsL0nufiT8suwGvkvU79D3uN8jOnVe2aO8JJhZFVEC8B/u/p+hOBV9ni/2tPT7Ge7eBqwGFlO4vR/GGOpriOIr2993GXHfFC6Hurt3AP/Ghfd5KR/vS4BfN7N9RJenmoDvEGef9zZAqJy+gEqigWCTOTsA6qNxt6sIcV0CVGdMtxCN3fl7sgeJfitMf5zsQXPrQ3kdsJdowFxtmK6LO74CMV9O9mDgosVK7gDBm+OOt5e4x2VM/wnRdW+Aj5I9CHAP0QDAgj8DwBNkDzS8K+54Q1uMaJzC/T3KE9/nvcSehn6/FBgZpn8FaAZuKdRe4AtkD4j90YXukxKNe1zGMXE/8M2kHe899sNyzg6Cjq3PY98RRd6pNxPdSbEb+Erc7SlSTFNCR24Gtp6Ji+ha6H8DO4FVGQe/AQ+EffA6sCBjW39ANGBsF3BH3LEViPeHRKf9O4mu4X6umLECC4AtYZ1/JjwNPe6vAnH/e4jrNeBpsv8wfiXEsJ2MuzwK/QyE42h92B9PAEPijjm0q5Ho8tZrwKbwdXNK+rxQ7Gno9znAxhDjFuAve2svMDTM7wr1Uy50n5Ro3C+GPt8CPMrZO8USc7z32A/LOZsAxdbnehWGiIiIpE6SxgCJiIiInBclQCIiIpI6SoBEREQkdZQAiYiISOooARIREZHUUQIkImXFzJab2YFzL1lw/QfN7KvFbJOIlB8lQCJyUcxsn5mdNLP3zeyImT0SXu8QOzP7fTNbk1nm7ne6+1/H1SYRKQ1KgESkGD7h7sOBeUQPYvuLmNsjItIrJUAiUjQevbfuGWC2mY03s6fN7KiZ7TKzz59ZzszuM7MnzexxMztuZq+a2RUZ9W5mUzPmHzGzv8n3mWZ2j5ntDtt5w8x+I5T/KtGj9ReHs1Nt+bZlZp8P7Tsa2ju+RzvuNLOdZtZmZg+YmRVvj4lIXJQAiUjRmFk90ePoNxK98PAAMB64Dfi6mTVlLH4r0aPu64AfAE+Fl4P21W5gKdHLEr8GPGpm49z9TeBOYJ27D3f3kXna2wR8A/hNYBzwi9DuTLcQvaV7Tljuxgtoo4iUGCVAIlIMT4UzLGuA/wH+lejtz19291Puvgl4CPhMxjob3P1Jd+8E/oHo3T9X9/WD3f0Jd3/L3bvd/XGi94ddda71gt8FHnb3Vz16E/e9RGeMLs9Y5pvu3ubu/0f09u65fW2jiJQeJUAiUgyfdPeR7j7J3e8iOutz1N2PZyzzC2BCxvz+MxPu3s3Zs0V9YmafMbNN4RJVGzAbGH2eq48P7TrTjveB93q083DG9AdASQzwFpGLowRIRPrDW0CdmVVnlF0GHMyYrz8zYWaDgIlhPYgSjWEZy47N9yFmNgn4LnA3MCpc5tpC9BZtiN62fq52TsrY3iVEb6I/WHANEUkEJUAiUnTuvh9oAb5hZkPNbA7wOeDRjMXmm9mnzKwS+BLQAbwc6jYBv2NmFWZ2E3BNgY+6hCjJeQfAzO4gOgN0xhFgopkNLrD+D4E7zGyumQ0Bvg684u77+haxiJQbJUAi0l9+G7ic6CzLT4C/cvdVGfX/BfwW0Ap8GvhUGA8E8EXgE0Ab0Tidp/J9gLu/AXwbWEeU7PwasDZjkReBrcBhM3s3z/qrgK8CPwYOAQ3A7X0PVUTKjbmf6wyxiEhxmdl9wFR3/7242yIi6aQzQCIiIpI6SoBEREQkdXQJTERERFJHZ4BEREQkdZQAiYiISOooARIREZHUUQIkIiIiqaMESERERFLn/wEMZiERvcZOxwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df_preds = pd.DataFrame([y_preds.ravel(), \n", " y_preds_t10.ravel(),\n", " y_preds_t15.ravel(),\n", " y_preds_t20.ravel(),\n", " treatments,\n", " df_test[y_name].ravel()],\n", " index=['All', 'Top 10', 'Top 15', 'Top 20', 'is_treated', y_name]).T\n", "\n", "plot_gain(df_preds, outcome_col=y_name, treatment_col='is_treated')" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "All 0.890747\n", "Top 10 0.906526\n", "Top 15 0.899187\n", "Top 20 0.901242\n", "Random 0.493027\n", "dtype: float64" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# print out AUUC score\n", "auuc_score(df_preds, outcome_col=y_name, treatment_col='is_treated')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(a relatively smaller enhancement on the AUUC is observed in this R Learner case)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### S Learner as base and feed in Random Forest Regressor" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "slearner_rf = BaseSRegressor(\n", " RandomForestRegressor(\n", " n_estimators = 100,\n", " max_depth = 8,\n", " min_samples_leaf = 100\n", " ), \n", " control_name='control')" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "# using all features\n", "features = X_names \n", "slearner_rf.fit(X = df_train[features].values, \n", " treatment = df_train['treatment_group_key'].values,\n", " y = df_train[y_name].values)\n", "y_preds = slearner_rf.predict(df_test[features].values)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "# using top 10 features\n", "features = top_10_features \n", "slearner_rf.fit(X = df_train[features].values, \n", " treatment = df_train['treatment_group_key'].values,\n", " y = df_train[y_name].values)\n", "y_preds_t10 = slearner_rf.predict(df_test[features].values)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "# using top 15 features\n", "features = top_15_features \n", "slearner_rf.fit(X = df_train[features].values, \n", " treatment = df_train['treatment_group_key'].values,\n", " y = df_train[y_name].values)\n", "y_preds_t15 = slearner_rf.predict(df_test[features].values)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "# using top 20 features\n", "features = top_20_features \n", "slearner_rf.fit(X = df_train[features].values, \n", " treatment = df_train['treatment_group_key'].values,\n", " y = df_train[y_name].values)\n", "y_preds_t20 = slearner_rf.predict(df_test[features].values)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Print results for S Learner" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df_preds = pd.DataFrame([y_preds.ravel(), \n", " y_preds_t10.ravel(),\n", " y_preds_t15.ravel(),\n", " y_preds_t20.ravel(),\n", " treatments,\n", " df_test[y_name].ravel()],\n", " index=['All', 'Top 10', 'Top 15', 'Top 20', 'is_treated', y_name]).T\n", "\n", "plot_gain(df_preds, outcome_col=y_name, treatment_col='is_treated')" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "All 0.864579\n", "Top 10 0.885354\n", "Top 15 0.878970\n", "Top 20 0.877791\n", "Random 0.493027\n", "dtype: float64" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# print out AUUC score\n", "auuc_score(df_preds, outcome_col=y_name, treatment_col='is_treated')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this notebook, we demonstrated how our Filter method functions are able to select important features and enhance the AUUC performance (while the results might vary among different datasets, models and hyper-parameters)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (General DS)", "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.4" } }, "nbformat": 4, "nbformat_minor": 2 }