From 0bfa202efebb0ee01962d346f8871e0413136208 Mon Sep 17 00:00:00 2001 From: Clayton O'Dell Date: Fri, 6 Dec 2024 13:52:46 -0500 Subject: [PATCH] Updated 12 example notebooks to run on Colab. Fixes #385 Signed-off-by: Clayton O'Dell --- examples/demo_FACTS.ipynb | 1566 +++--- examples/demo_gerryfair.ipynb | 1746 +++--- examples/demo_json_explainers.ipynb | 554 +- examples/demo_lfr.ipynb | 919 ++-- examples/demo_mdss_classifier_metric.ipynb | 2533 ++++----- examples/demo_mdss_detector.ipynb | 3256 ++++++------ examples/demo_meta_classifier.ipynb | 937 ++-- examples/demo_ot_metric.ipynb | 2798 +++++----- .../demo_reject_option_classification.ipynb | 1582 +++--- examples/demo_reweighing_preproc.ipynb | 1915 +++---- examples/demo_short_gerryfair_test.ipynb | 369 +- examples/tutorial_medical_expenditure.ipynb | 4667 +++++++++-------- 12 files changed, 12046 insertions(+), 10796 deletions(-) diff --git a/examples/demo_FACTS.ipynb b/examples/demo_FACTS.ipynb index a99d26ef..7541cc86 100644 --- a/examples/demo_FACTS.ipynb +++ b/examples/demo_FACTS.ipynb @@ -1,775 +1,847 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Fairness auditing for subgroups using Fairness Aware Counterfactuals for Subgroups (FACTS).\n", - "\n", - "[FACTS](https://arxiv.org/abs/2306.14978) is an efficient, model-agnostic, highly parameterizable, and explainable framework for auditing subgroup fairness through counterfactual explanations. FACTS focuses on identifying a specific type of bias, i.e. the *difficulty in achieving recourse*. In short, it focuses on the population that has obtained the unfavorable outcome (*affected population*) by a ML model and tries to identify differences in the difficulty of changing the ML model's decision to obtain the favorable outcome, between affected subpopulations.\n", - "\n", - "In this notebook, we will see how to use this algorithm for discovering subgroups where the bias of a model (logistic regression for simplicity) between Males and Females is high.\n", - "\n", - "We will use the Adult dataset from UCI ([reference](https://archive.ics.uci.edu/ml/datasets/adult))." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Preliminaries" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Import dependencies\n", - "\n", - "As usual in python, the first step is to import all necessary packages." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ + "cells": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:root:No module named 'tempeh': fetch_lawschool_gpa will be unavailable. To install, run:\n", - "pip install 'aif360[LawSchoolGPA]'\n" - ] - } - ], - "source": [ - "from sklearn.model_selection import train_test_split\n", - "from sklearn.linear_model import LogisticRegression\n", - "from sklearn.compose import ColumnTransformer\n", - "from sklearn.pipeline import Pipeline\n", - "from sklearn.preprocessing import OneHotEncoder\n", - "\n", - "from aif360.sklearn.datasets.openml_datasets import fetch_adult\n", - "from aif360.sklearn.detectors.facts.clean import clean_dataset\n", - "from aif360.sklearn.detectors.facts import FACTS, FACTS_bias_scan\n", - "\n", - "from IPython.display import display\n", - "\n", - "import warnings\n", - "warnings.filterwarnings(\"ignore\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Below, you can change the `random_seed` variable to `None` if you would like for the pseudo-random parts to actually change between runs. We have set it to a specific value for reproducibility." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "random_seed = 131313 # for reproducibility" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Load Dataset" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Trusted-AI/AIF360/blob/main/examples/demo_FACTS.ipynb)\n" + ], + "metadata": { + "id": "3VmYWXk6gRbj" + } + }, { - "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", - "
ageworkclasseducation-nummarital-statusoccupationrelationshipracesexcapital-gaincapital-losshours-per-weeknative-countryincome
0(16.999, 26.0]Private7.0Never-marriedMachine-op-inspctOwn-childBlackMale0.00.0FullTimeUnited-States0
1(34.0, 41.0]Private9.0Married-civ-spouseFarming-fishingMarriedWhiteMale0.00.0OverTimeUnited-States0
2(26.0, 34.0]Local-gov12.0Married-civ-spouseProtective-servMarriedWhiteMale0.00.0FullTimeUnited-States1
3(41.0, 50.0]Private10.0Married-civ-spouseMachine-op-inspctMarriedBlackMale7688.00.0FullTimeUnited-States1
4(26.0, 34.0]Private6.0Never-marriedOther-serviceNot-in-familyWhiteMale0.00.0MidTimeUnited-States0
\n", - "
" + "cell_type": "markdown", + "metadata": { + "id": "qHiNaF-VgPB4" + }, + "source": [ + "# Fairness auditing for subgroups using Fairness Aware Counterfactuals for Subgroups (FACTS).\n", + "\n", + "[FACTS](https://arxiv.org/abs/2306.14978) is an efficient, model-agnostic, highly parameterizable, and explainable framework for auditing subgroup fairness through counterfactual explanations. FACTS focuses on identifying a specific type of bias, i.e. the *difficulty in achieving recourse*. In short, it focuses on the population that has obtained the unfavorable outcome (*affected population*) by a ML model and tries to identify differences in the difficulty of changing the ML model's decision to obtain the favorable outcome, between affected subpopulations.\n", + "\n", + "In this notebook, we will see how to use this algorithm for discovering subgroups where the bias of a model (logistic regression for simplicity) between Males and Females is high.\n", + "\n", + "We will use the Adult dataset from UCI ([reference](https://archive.ics.uci.edu/ml/datasets/adult))." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4cavLAfZgPB5" + }, + "source": [ + "# Preliminaries" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1FLtToZmgPB6" + }, + "source": [ + "## Import dependencies\n", + "\n", + "As usual in python, the first step is to import all necessary packages." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "qz_p2JzegPB6", + "outputId": "dc1206fb-14b9-4ac7-ce74-0f2d83ce6a61" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:root:No module named 'tempeh': fetch_lawschool_gpa will be unavailable. To install, run:\n", + "pip install 'aif360[LawSchoolGPA]'\n" + ] + } ], - "text/plain": [ - " age workclass education-num marital-status \\\n", - "0 (16.999, 26.0] Private 7.0 Never-married \n", - "1 (34.0, 41.0] Private 9.0 Married-civ-spouse \n", - "2 (26.0, 34.0] Local-gov 12.0 Married-civ-spouse \n", - "3 (41.0, 50.0] Private 10.0 Married-civ-spouse \n", - "4 (26.0, 34.0] Private 6.0 Never-married \n", - "\n", - " occupation relationship race sex capital-gain capital-loss \\\n", - "0 Machine-op-inspct Own-child Black Male 0.0 0.0 \n", - "1 Farming-fishing Married White Male 0.0 0.0 \n", - "2 Protective-serv Married White Male 0.0 0.0 \n", - "3 Machine-op-inspct Married Black Male 7688.0 0.0 \n", - "4 Other-service Not-in-family White Male 0.0 0.0 \n", - "\n", - " hours-per-week native-country income \n", - "0 FullTime United-States 0 \n", - "1 OverTime United-States 0 \n", - "2 FullTime United-States 1 \n", - "3 FullTime United-States 1 \n", - "4 MidTime United-States 0 " + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.compose import ColumnTransformer\n", + "from sklearn.pipeline import Pipeline\n", + "from sklearn.preprocessing import OneHotEncoder\n", + "\n", + "from aif360.sklearn.datasets.openml_datasets import fetch_adult\n", + "from aif360.sklearn.detectors.facts.clean import clean_dataset\n", + "from aif360.sklearn.detectors.facts import FACTS, FACTS_bias_scan\n", + "\n", + "from IPython.display import display\n", + "\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# load the adult dataset and perform some simple preprocessing steps\n", - "# See output for a glimpse of the final dataset's characteristics\n", - "X, y, sample_weight = fetch_adult()\n", - "data = clean_dataset(X.assign(income=y), \"adult\")\n", - "display(data.head())\n", - "\n", - "# split into train-test data\n", - "y = data['income']\n", - "X = data.drop('income', axis=1)\n", - "X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.7, random_state=random_seed, stratify=y)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Example Model to be used for Auditing\n", - "\n", - "We use the train set to train a simple logistic regression model. This will serve as the demonstrative model, which we will then treat as a black box and apply our algorithm.\n", - "\n", - "Of course, any model can be used in its place. Our purpose here is not to produce a good model, but to audit the fairness of an existing one." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "#### here, we incrementally build the example model. It consists of one preprocessing step,\n", - "#### which is to turn categorical features into the respective one-hot encodings, and\n", - "#### a simple scikit-learn logistic regressor.\n", - "categorical_features = X.select_dtypes(include=[\"object\", \"category\"]).columns.to_list()\n", - "categorical_features_onehot_transformer = ColumnTransformer(\n", - " transformers=[\n", - " (\"one-hot-encoder\", OneHotEncoder(), categorical_features)\n", - " ],\n", - " remainder=\"passthrough\"\n", - ")\n", - "model = Pipeline([\n", - " (\"one-hot-encoder\", categorical_features_onehot_transformer),\n", - " (\"clf\", LogisticRegression(max_iter=1500))\n", - "])\n", - "\n", - "#### train the model\n", - "model = model.fit(X_train, y_train)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy = 85.16%\n" - ] - } - ], - "source": [ - "# showcase model's accuracy\n", - "y_pred = model.predict(X_test)\n", - "print(f\"Accuracy = {(y_test.values == y_pred).sum() / y_test.shape[0]:.2%}\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# A Practical Example of FACTS\n", - "\n", - "The real essence of our work starts here. Specifically, we showcase the generation of candidate subpopulation groups and counterfactuals and the detection of those groups that exhibit the greatest unfairness, with respect to one of several metrics." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Load and Fit FACTS" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# load FACTS framework with:\n", - "# - the model to be audited\n", - "# - protected attribute \"sex\" and\n", - "# - assigning equal, unit weights to all features for cost computation.\n", - "# - no features forbidden from changing, i.e. user can specify any features that cannot change at all.\n", - "detector = FACTS(\n", - " clf=model,\n", - " prot_attr=\"sex\",\n", - " feature_weights={f: 1 for f in X.columns},\n", - " feats_not_allowed_to_change=[]\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "m1Ye20legPB8" + }, + "source": [ + "Below, you can change the `random_seed` variable to `None` if you would like for the pseudo-random parts to actually change between runs. We have set it to a specific value for reproducibility." + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Computing candidate subgroups.\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "t8KJD-ICgPB8" + }, + "outputs": [], + "source": [ + "random_seed = 131313 # for reproducibility" + ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████████████████████████████████████████████████████████████████████| 1046/1046 [00:00<00:00, 523287.45it/s]" - ] + "cell_type": "markdown", + "metadata": { + "id": "Tq79M4GxgPB8" + }, + "source": [ + "## Load Dataset" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of subgroups: 563\n", - "Computing candidate recourses for all subgroups.\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "HwnmXFJ_gPB8", + "outputId": "3cddbc05-73e7-44c5-8482-af3b942f5c6f" + }, + "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", + "
ageworkclasseducation-nummarital-statusoccupationrelationshipracesexcapital-gaincapital-losshours-per-weeknative-countryincome
0(16.999, 26.0]Private7.0Never-marriedMachine-op-inspctOwn-childBlackMale0.00.0FullTimeUnited-States0
1(34.0, 41.0]Private9.0Married-civ-spouseFarming-fishingMarriedWhiteMale0.00.0OverTimeUnited-States0
2(26.0, 34.0]Local-gov12.0Married-civ-spouseProtective-servMarriedWhiteMale0.00.0FullTimeUnited-States1
3(41.0, 50.0]Private10.0Married-civ-spouseMachine-op-inspctMarriedBlackMale7688.00.0FullTimeUnited-States1
4(26.0, 34.0]Private6.0Never-marriedOther-serviceNot-in-familyWhiteMale0.00.0MidTimeUnited-States0
\n", + "
" + ], + "text/plain": [ + " age workclass education-num marital-status \\\n", + "0 (16.999, 26.0] Private 7.0 Never-married \n", + "1 (34.0, 41.0] Private 9.0 Married-civ-spouse \n", + "2 (26.0, 34.0] Local-gov 12.0 Married-civ-spouse \n", + "3 (41.0, 50.0] Private 10.0 Married-civ-spouse \n", + "4 (26.0, 34.0] Private 6.0 Never-married \n", + "\n", + " occupation relationship race sex capital-gain capital-loss \\\n", + "0 Machine-op-inspct Own-child Black Male 0.0 0.0 \n", + "1 Farming-fishing Married White Male 0.0 0.0 \n", + "2 Protective-serv Married White Male 0.0 0.0 \n", + "3 Machine-op-inspct Married Black Male 7688.0 0.0 \n", + "4 Other-service Not-in-family White Male 0.0 0.0 \n", + "\n", + " hours-per-week native-country income \n", + "0 FullTime United-States 0 \n", + "1 OverTime United-States 0 \n", + "2 FullTime United-States 1 \n", + "3 FullTime United-States 1 \n", + "4 MidTime United-States 0 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# load the adult dataset and perform some simple preprocessing steps\n", + "# See output for a glimpse of the final dataset's characteristics\n", + "X, y, sample_weight = fetch_adult()\n", + "data = clean_dataset(X.assign(income=y), \"adult\")\n", + "display(data.head())\n", + "\n", + "# split into train-test data\n", + "y = data['income']\n", + "X = data.drop('income', axis=1)\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.7, random_state=random_seed, stratify=y)" + ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "100%|█████████████████████████████████████████████████████████████████████████████| 563/563 [00:00<00:00, 50669.32it/s]" - ] + "cell_type": "markdown", + "metadata": { + "id": "WdckzZdwgPB8" + }, + "source": [ + "## Example Model to be used for Auditing\n", + "\n", + "We use the train set to train a simple logistic regression model. This will serve as the demonstrative model, which we will then treat as a black box and apply our algorithm.\n", + "\n", + "Of course, any model can be used in its place. Our purpose here is not to produce a good model, but to audit the fairness of an existing one." + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Computing percentages of individuals flipped by each action independently.\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "9NuWT4LMgPB9" + }, + "outputs": [], + "source": [ + "#### here, we incrementally build the example model. It consists of one preprocessing step,\n", + "#### which is to turn categorical features into the respective one-hot encodings, and\n", + "#### a simple scikit-learn logistic regressor.\n", + "categorical_features = X.select_dtypes(include=[\"object\", \"category\"]).columns.to_list()\n", + "categorical_features_onehot_transformer = ColumnTransformer(\n", + " transformers=[\n", + " (\"one-hot-encoder\", OneHotEncoder(), categorical_features)\n", + " ],\n", + " remainder=\"passthrough\"\n", + ")\n", + "model = Pipeline([\n", + " (\"one-hot-encoder\", categorical_features_onehot_transformer),\n", + " (\"clf\", LogisticRegression(max_iter=1500))\n", + "])\n", + "\n", + "#### train the model\n", + "model = model.fit(X_train, y_train)" + ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "100%|████████████████████████████████████████████████████████████████████████████████| 590/590 [00:13<00:00, 43.37it/s]" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "iHQwJo_PgPB9", + "outputId": "88e849b7-f24a-4b87-fc48-256612ed3626" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy = 85.16%\n" + ] + } + ], + "source": [ + "# showcase model's accuracy\n", + "y_pred = model.predict(X_test)\n", + "print(f\"Accuracy = {(y_test.values == y_pred).sum() / y_test.shape[0]:.2%}\")" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Computing percentages of individuals flipped by any action with cost up to c, for every c\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "avuD6xf-gPB9" + }, + "source": [ + "# A Practical Example of FACTS\n", + "\n", + "The real essence of our work starts here. Specifically, we showcase the generation of candidate subpopulation groups and counterfactuals and the detection of those groups that exhibit the greatest unfairness, with respect to one of several metrics." + ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "100%|████████████████████████████████████████████████████████████████████████████████| 416/416 [00:12<00:00, 32.57it/s]\n" - ] - } - ], - "source": [ - "# generates candidate subpopulation groups for bias and candidate actions\n", - "detector = detector.fit(X_test)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Detect Groups with Unfairness in Protected Subgroups (using \"Equal Choice for Recourse\" metric)\n", - "\n", - "Here we demonstrate the `bias_scan` method of our detector, which ranks subpopulation groups from most to least unfair, with respect to the chosen metric and, of course, the protected attribute.\n", - "\n", - "For the purposes of the demo, we use the \"Equal Choice for Recourse\" definition / metric. This posits that the classifier acts fairly for the group in question if the protected subgroups can choose among the same number of sufficiently effective actions to achieve recourse. By sufficiently effective we mean those actions (out of all candidates) which work for at least $100\\phi \\%$ (for some $\\phi \\in [0,1]$) of the subgroup.\n", - "\n", - "Given this definition, the respective unfairness *metric* is defined to be the difference in the number of sufficiently effective actions between the two protected subgroups.\n", - "\n", - "**Suggestion**: this metric may find utility in scenarios where the aim is to guarantee that protected subgroups have a similar range of options available to them when it comes to making adjustments in order to attain a favorable outcome. For example, when evaluating job candidates, the employer may wish to ensure that applicants from different backgrounds (that currently fail to meet expectations) have an equal array of career / retraining opportunities that may land them the job, so as to ensure diversity in all sectors of the company, which employ individuals with a plethora of roles." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "# Detects the top `top_count` most biased groups based on the given metric\n", - "# available metrics are:\n", - "# - equal-effectiveness\n", - "# - equal-choice-for-recourse\n", - "# - equal-effectiveness-within-budget\n", - "# - equal-cost-of-effectiveness\n", - "# - equal-mean-recourse\n", - "# - fair-tradeoff\n", - "# a short description for each metric is given below\n", - "detector.bias_scan(\n", - " metric=\"equal-choice-for-recourse\",\n", - " phi=0.1,\n", - " top_count=3\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "35vYtSBFgPB9" + }, + "source": [ + "## Load and Fit FACTS" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "If \u001b[1mage = (26.0, 34.0], hours-per-week = FullTime\u001b[0m:\n", - "\tProtected Subgroup '\u001b[1mFemale\u001b[0m', \u001b[34m10.59%\u001b[39m covered\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m7.73%\u001b[39m.\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m3.98%\u001b[39m.\n", - "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m5.39%\u001b[39m.\n", - "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m0.00\u001b[39m\n", - "\tProtected Subgroup '\u001b[1mMale\u001b[0m', \u001b[34m13.78%\u001b[39m covered\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m19.66%\u001b[39m.\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m10.63%\u001b[39m.\n", - "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m13.39%\u001b[39m.\n", - "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m-3.00\u001b[39m\n", - "\t\u001b[35mBias against Female with respect to equal-choice-for-recourse. Unfairness score = 3.\u001b[39m\n", - "If \u001b[1mage = (26.0, 34.0], capital-loss = 0.0, hours-per-week = FullTime\u001b[0m:\n", - "\tProtected Subgroup '\u001b[1mFemale\u001b[0m', \u001b[34m10.34%\u001b[39m covered\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m7.67%\u001b[39m.\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m4.08%\u001b[39m.\n", - "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m5.28%\u001b[39m.\n", - "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m0.00\u001b[39m\n", - "\tProtected Subgroup '\u001b[1mMale\u001b[0m', \u001b[34m13.27%\u001b[39m covered\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m18.43%\u001b[39m.\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m9.27%\u001b[39m.\n", - "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m11.92%\u001b[39m.\n", - "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m-2.00\u001b[39m\n", - "\t\u001b[35mBias against Female with respect to equal-choice-for-recourse. Unfairness score = 2.\u001b[39m\n", - "If \u001b[1mhours-per-week = FullTime, native-country = United-States\u001b[0m:\n", - "\tProtected Subgroup '\u001b[1mFemale\u001b[0m', \u001b[34m41.66%\u001b[39m covered\n", - "\t\tMake \u001b[1m\u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m2.62%\u001b[39m.\n", - "\t\tMake \u001b[1m\u001b[31mhours-per-week = BrainDrain\u001b[39m\u001b[0m with effectiveness \u001b[32m1.79%\u001b[39m.\n", - "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m0.00\u001b[39m\n", - "\tProtected Subgroup '\u001b[1mMale\u001b[0m', \u001b[34m46.78%\u001b[39m covered\n", - "\t\tMake \u001b[1m\u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m10.08%\u001b[39m.\n", - "\t\tMake \u001b[1m\u001b[31mhours-per-week = BrainDrain\u001b[39m\u001b[0m with effectiveness \u001b[32m8.70%\u001b[39m.\n", - "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m-1.00\u001b[39m\n", - "\t\u001b[35mBias against Female with respect to equal-choice-for-recourse. Unfairness score = 1.\u001b[39m\n" - ] - } - ], - "source": [ - "# prints the result into a nicely formatted report\n", - "detector.print_recourse_report(\n", - " show_action_costs=False,\n", - " show_subgroup_costs=True,\n", - " show_unbiased_subgroups=False,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Example Output Breakdown" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us now disect the above example and the output we see, one step at a time.\n", - "\n", - "#### Prelude: $\\phi = 0.1$\n", - "\n", - "As we mentioned in the general description of this metric, this is the parameter that determines whether we consider an action sufficiently effective or not. So, here, we consider an action effective if it manages to flip the prediction for at least 10% of the individuals under study, and ineffective otherwise.\n", - "\n", - "#### **age = (26.0, 34.0], hours-per-week = FullTime**\n", - "\n", - "This is the first (hence, most biased) group. The group description is mostly self-explanatory: everything inside this block concerns all those (affected) individuals that are from 26 (not inclusive) to 34 years old and have a fulltime job. Now, since the output has the same structure for all groups, let us consider this group as an example and further disect the output we see in this block.\n", - "\n", - "#### *Protected subgroups 'Male' / 'Female'*\n", - "\n", - "We split the population of this group, according to the protected attribute. Hence, we distinguish between males that are 26-34 years old and have a fulltime job and females that are 26-34 years old and have a fulltime job.\n", - "\n", - "The \"covered\" percentage reported here in blue signifies that out of all affected females, 10.59% are 26-34 years old and have a fulltime job, while the respective percentage for males is 13.78%.\n", - "\n", - "#### *Make age = (41.0, 50.0], hours-per-week = OverTime*\n", - "\n", - "This is one of the 3 actions we have tried to apply on the individuals in the current subpopulation group. We report the action, along with its effectiveness and, optionally, the cost; here we omit the action cost because the \"Equal Choice for Recourse\" metric does not take it into account.\n", - "\n", - "At this point, let us give a more direct interpretation for the **effectiveness**. In this case, for example, the interpretation could be the following: if all females aged 26-34 with fulltime jobs change their age group to 41-50 years old and their working hours to overtime, then 7.73% of them will actually manage to receive the positive prediction from the model. The rest will still receive the negative prediction.\n", - "\n", - "#### *Protected Subgroups' Aggregate Cost*\n", - "\n", - "The \"aggregate cost of the above recourses\" message shows how we quantify the *cost of recourse* for all actions in each protected subgroup.\n", - "\n", - "This is derived directly from the definition of each metric. Here, for example, we use the \"Equal Choice for Recourse\" metric, which counts the number of effective actions available to each of the protected subgroups. In this group, females have no (sufficiently) effective actions, and as such we say that they gain 0 units. Males have 3 effective actions, so they gain 3 units.\n", - "\n", - "Finally, to keep the formalization of having costs everywhere, we rephrase this instead into males having a recourse cost of -3 and females having a recourse cost of 0.\n", - "\n", - "As we also mention in the next paragraph, the final bias score of the subgroup is nothing more than the absolute difference of these 2 costs.\n", - "\n", - "#### *Bias Deduction / Metric Application*\n", - "\n", - "Given the above, one can see that the (same) actions, if applied to females of the subpopulation group, cannot yield more than 10% effectiveness, while in males they achieve up to 19.66%! This is why we argue that, in the terms of bias of recourse, this group exhibits bias against females.\n", - "\n", - "This is, of course, with respect to the \"Equal Choice for Recourse\" metric, which posits that the 2 protected subgroups should have the same number of effective actions. Since none of the 3 actions are sufficiently effective for females, and all 3 of them are sufficiently effective for males, we score this group as having a bias measure of $|0 - 3| = 3$." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Example without Bias of Recourse\n", - "\n", - "For completeness, we also demonstrate how, for some choices of metrics and parameters, FACTS may fail to find any subpopulation groups that exhibit bias between the protected populations, and thus deduce that in this case there is no recourse related bias." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "detector.bias_scan(\n", - " metric=\"equal-choice-for-recourse\",\n", - " phi=0.7,\n", - " top_count=3\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "3FEEyse9gPB9" + }, + "outputs": [], + "source": [ + "# load FACTS framework with:\n", + "# - the model to be audited\n", + "# - protected attribute \"sex\" and\n", + "# - assigning equal, unit weights to all features for cost computation.\n", + "# - no features forbidden from changing, i.e. user can specify any features that cannot change at all.\n", + "detector = FACTS(\n", + " clf=model,\n", + " prot_attr=\"sex\",\n", + " feature_weights={f: 1 for f in X.columns},\n", + " feats_not_allowed_to_change=[]\n", + ")" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[1mWith the given parameters, no recourses showing unfairness have been found!\u001b[0m\n" - ] - } - ], - "source": [ - "# prints the result into a nicely formatted report\n", - "detector.print_recourse_report(\n", - " show_action_costs=False,\n", - " show_subgroup_costs=True,\n", - " show_unbiased_subgroups=False,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Aternative API\n", - "\n", - "We also provide a more succinct API in the form of a wrapper function. This is closer in style to the API of existing `aif360` detectors.\n", - "\n", - "The previous example could be run equivalently with the following." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "duEkwMgngPB-", + "outputId": "ddcb45a9-fa3e-466c-e492-bf6a8b26b2dc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computing candidate subgroups.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████████████████████████████████████████████████████████████████████| 1046/1046 [00:00<00:00, 523287.45it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of subgroups: 563\n", + "Computing candidate recourses for all subgroups.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "100%|█████████████████████████████████████████████████████████████████████████████| 563/563 [00:00<00:00, 50669.32it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computing percentages of individuals flipped by each action independently.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "100%|████████████████████████████████████████████████████████████████████████████████| 590/590 [00:13<00:00, 43.37it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computing percentages of individuals flipped by any action with cost up to c, for every c\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "100%|████████████████████████████████████████████████████████████████████████████████| 416/416 [00:12<00:00, 32.57it/s]\n" + ] + } + ], + "source": [ + "# generates candidate subpopulation groups for bias and candidate actions\n", + "detector = detector.fit(X_test)" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "If \u001b[1mage = (26.0, 34.0], hours-per-week = FullTime\u001b[0m:\n", - "\tProtected Subgroup '\u001b[1mFemale\u001b[0m', \u001b[34m10.59%\u001b[39m covered\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m7.73%\u001b[39m and counterfactual cost = 2.0.\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m3.98%\u001b[39m and counterfactual cost = 1.0.\n", - "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m5.39%\u001b[39m and counterfactual cost = 2.0.\n", - "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m0.00\u001b[39m\n", - "\tProtected Subgroup '\u001b[1mMale\u001b[0m', \u001b[34m13.78%\u001b[39m covered\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m19.66%\u001b[39m and counterfactual cost = 2.0.\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m10.63%\u001b[39m and counterfactual cost = 1.0.\n", - "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m13.39%\u001b[39m and counterfactual cost = 2.0.\n", - "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m-3.00\u001b[39m\n", - "\t\u001b[35mBias against Female with respect to equal-choice-for-recourse.. Unfairness score = 3.\u001b[39m\n", - "If \u001b[1mage = (26.0, 34.0], capital-loss = 0.0, hours-per-week = FullTime\u001b[0m:\n", - "\tProtected Subgroup '\u001b[1mFemale\u001b[0m', \u001b[34m10.34%\u001b[39m covered\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m7.67%\u001b[39m and counterfactual cost = 2.0.\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m4.08%\u001b[39m and counterfactual cost = 1.0.\n", - "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m5.28%\u001b[39m and counterfactual cost = 2.0.\n", - "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m0.00\u001b[39m\n", - "\tProtected Subgroup '\u001b[1mMale\u001b[0m', \u001b[34m13.27%\u001b[39m covered\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m18.43%\u001b[39m and counterfactual cost = 2.0.\n", - "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m9.27%\u001b[39m and counterfactual cost = 1.0.\n", - "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m11.92%\u001b[39m and counterfactual cost = 2.0.\n", - "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m-2.00\u001b[39m\n", - "\t\u001b[35mBias against Female with respect to equal-choice-for-recourse.. Unfairness score = 2.\u001b[39m\n", - "If \u001b[1mhours-per-week = FullTime, native-country = United-States\u001b[0m:\n", - "\tProtected Subgroup '\u001b[1mFemale\u001b[0m', \u001b[34m41.66%\u001b[39m covered\n", - "\t\tMake \u001b[1m\u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m2.62%\u001b[39m and counterfactual cost = 1.0.\n", - "\t\tMake \u001b[1m\u001b[31mhours-per-week = BrainDrain\u001b[39m\u001b[0m with effectiveness \u001b[32m1.79%\u001b[39m and counterfactual cost = 1.0.\n", - "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m0.00\u001b[39m\n", - "\tProtected Subgroup '\u001b[1mMale\u001b[0m', \u001b[34m46.78%\u001b[39m covered\n", - "\t\tMake \u001b[1m\u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m10.08%\u001b[39m and counterfactual cost = 1.0.\n", - "\t\tMake \u001b[1m\u001b[31mhours-per-week = BrainDrain\u001b[39m\u001b[0m with effectiveness \u001b[32m8.70%\u001b[39m and counterfactual cost = 1.0.\n", - "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m-1.00\u001b[39m\n", - "\t\u001b[35mBias against Female with respect to equal-choice-for-recourse.. Unfairness score = 1.\u001b[39m\n" - ] - } - ], - "source": [ - "most_biased_subgroups = FACTS_bias_scan(\n", - " X=X_test,\n", - " clf=model,\n", - " prot_attr=\"sex\",\n", - " feature_weights={f: 1 for f in X.columns},\n", - " feats_not_allowed_to_change=[],\n", - " metric=\"equal-choice-for-recourse\",\n", - " phi=0.1,\n", - " top_count=3,\n", - " verbose=False, # hides progress bars\n", - " print_recourse_report=True,\n", - " show_action_costs=True,\n", - " show_subgroup_costs=True,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "cFPOLhkEgPB-" + }, + "source": [ + "## Detect Groups with Unfairness in Protected Subgroups (using \"Equal Choice for Recourse\" metric)\n", + "\n", + "Here we demonstrate the `bias_scan` method of our detector, which ranks subpopulation groups from most to least unfair, with respect to the chosen metric and, of course, the protected attribute.\n", + "\n", + "For the purposes of the demo, we use the \"Equal Choice for Recourse\" definition / metric. This posits that the classifier acts fairly for the group in question if the protected subgroups can choose among the same number of sufficiently effective actions to achieve recourse. By sufficiently effective we mean those actions (out of all candidates) which work for at least $100\\phi \\%$ (for some $\\phi \\in [0,1]$) of the subgroup.\n", + "\n", + "Given this definition, the respective unfairness *metric* is defined to be the difference in the number of sufficiently effective actions between the two protected subgroups.\n", + "\n", + "**Suggestion**: this metric may find utility in scenarios where the aim is to guarantee that protected subgroups have a similar range of options available to them when it comes to making adjustments in order to attain a favorable outcome. For example, when evaluating job candidates, the employer may wish to ensure that applicants from different backgrounds (that currently fail to meet expectations) have an equal array of career / retraining opportunities that may land them the job, so as to ensure diversity in all sectors of the company, which employ individuals with a plethora of roles." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "lApb3FmVgPB-" + }, + "outputs": [], + "source": [ + "# Detects the top `top_count` most biased groups based on the given metric\n", + "# available metrics are:\n", + "# - equal-effectiveness\n", + "# - equal-choice-for-recourse\n", + "# - equal-effectiveness-within-budget\n", + "# - equal-cost-of-effectiveness\n", + "# - equal-mean-recourse\n", + "# - fair-tradeoff\n", + "# a short description for each metric is given below\n", + "detector.bias_scan(\n", + " metric=\"equal-choice-for-recourse\",\n", + " phi=0.1,\n", + " top_count=3\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "QbuX_rC1gPB-", + "outputId": "8292d5e3-b86e-4f3a-fcb5-4eac0093e3ba" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "If \u001b[1mage = (26.0, 34.0], hours-per-week = FullTime\u001b[0m:\n", + "\tProtected Subgroup '\u001b[1mFemale\u001b[0m', \u001b[34m10.59%\u001b[39m covered\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m7.73%\u001b[39m.\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m3.98%\u001b[39m.\n", + "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m5.39%\u001b[39m.\n", + "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m0.00\u001b[39m\n", + "\tProtected Subgroup '\u001b[1mMale\u001b[0m', \u001b[34m13.78%\u001b[39m covered\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m19.66%\u001b[39m.\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m10.63%\u001b[39m.\n", + "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m13.39%\u001b[39m.\n", + "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m-3.00\u001b[39m\n", + "\t\u001b[35mBias against Female with respect to equal-choice-for-recourse. Unfairness score = 3.\u001b[39m\n", + "If \u001b[1mage = (26.0, 34.0], capital-loss = 0.0, hours-per-week = FullTime\u001b[0m:\n", + "\tProtected Subgroup '\u001b[1mFemale\u001b[0m', \u001b[34m10.34%\u001b[39m covered\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m7.67%\u001b[39m.\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m4.08%\u001b[39m.\n", + "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m5.28%\u001b[39m.\n", + "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m0.00\u001b[39m\n", + "\tProtected Subgroup '\u001b[1mMale\u001b[0m', \u001b[34m13.27%\u001b[39m covered\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m18.43%\u001b[39m.\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m9.27%\u001b[39m.\n", + "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m11.92%\u001b[39m.\n", + "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m-2.00\u001b[39m\n", + "\t\u001b[35mBias against Female with respect to equal-choice-for-recourse. Unfairness score = 2.\u001b[39m\n", + "If \u001b[1mhours-per-week = FullTime, native-country = United-States\u001b[0m:\n", + "\tProtected Subgroup '\u001b[1mFemale\u001b[0m', \u001b[34m41.66%\u001b[39m covered\n", + "\t\tMake \u001b[1m\u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m2.62%\u001b[39m.\n", + "\t\tMake \u001b[1m\u001b[31mhours-per-week = BrainDrain\u001b[39m\u001b[0m with effectiveness \u001b[32m1.79%\u001b[39m.\n", + "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m0.00\u001b[39m\n", + "\tProtected Subgroup '\u001b[1mMale\u001b[0m', \u001b[34m46.78%\u001b[39m covered\n", + "\t\tMake \u001b[1m\u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m10.08%\u001b[39m.\n", + "\t\tMake \u001b[1m\u001b[31mhours-per-week = BrainDrain\u001b[39m\u001b[0m with effectiveness \u001b[32m8.70%\u001b[39m.\n", + "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m-1.00\u001b[39m\n", + "\t\u001b[35mBias against Female with respect to equal-choice-for-recourse. Unfairness score = 1.\u001b[39m\n" + ] + } + ], + "source": [ + "# prints the result into a nicely formatted report\n", + "detector.print_recourse_report(\n", + " show_action_costs=False,\n", + " show_subgroup_costs=True,\n", + " show_unbiased_subgroups=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HK5JNhNwgPB-" + }, + "source": [ + "### Example Output Breakdown" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xf-Qbq6agPB-" + }, + "source": [ + "Let us now disect the above example and the output we see, one step at a time.\n", + "\n", + "#### Prelude: $\\phi = 0.1$\n", + "\n", + "As we mentioned in the general description of this metric, this is the parameter that determines whether we consider an action sufficiently effective or not. So, here, we consider an action effective if it manages to flip the prediction for at least 10% of the individuals under study, and ineffective otherwise.\n", + "\n", + "#### **age = (26.0, 34.0], hours-per-week = FullTime**\n", + "\n", + "This is the first (hence, most biased) group. The group description is mostly self-explanatory: everything inside this block concerns all those (affected) individuals that are from 26 (not inclusive) to 34 years old and have a fulltime job. Now, since the output has the same structure for all groups, let us consider this group as an example and further disect the output we see in this block.\n", + "\n", + "#### *Protected subgroups 'Male' / 'Female'*\n", + "\n", + "We split the population of this group, according to the protected attribute. Hence, we distinguish between males that are 26-34 years old and have a fulltime job and females that are 26-34 years old and have a fulltime job.\n", + "\n", + "The \"covered\" percentage reported here in blue signifies that out of all affected females, 10.59% are 26-34 years old and have a fulltime job, while the respective percentage for males is 13.78%.\n", + "\n", + "#### *Make age = (41.0, 50.0], hours-per-week = OverTime*\n", + "\n", + "This is one of the 3 actions we have tried to apply on the individuals in the current subpopulation group. We report the action, along with its effectiveness and, optionally, the cost; here we omit the action cost because the \"Equal Choice for Recourse\" metric does not take it into account.\n", + "\n", + "At this point, let us give a more direct interpretation for the **effectiveness**. In this case, for example, the interpretation could be the following: if all females aged 26-34 with fulltime jobs change their age group to 41-50 years old and their working hours to overtime, then 7.73% of them will actually manage to receive the positive prediction from the model. The rest will still receive the negative prediction.\n", + "\n", + "#### *Protected Subgroups' Aggregate Cost*\n", + "\n", + "The \"aggregate cost of the above recourses\" message shows how we quantify the *cost of recourse* for all actions in each protected subgroup.\n", + "\n", + "This is derived directly from the definition of each metric. Here, for example, we use the \"Equal Choice for Recourse\" metric, which counts the number of effective actions available to each of the protected subgroups. In this group, females have no (sufficiently) effective actions, and as such we say that they gain 0 units. Males have 3 effective actions, so they gain 3 units.\n", + "\n", + "Finally, to keep the formalization of having costs everywhere, we rephrase this instead into males having a recourse cost of -3 and females having a recourse cost of 0.\n", + "\n", + "As we also mention in the next paragraph, the final bias score of the subgroup is nothing more than the absolute difference of these 2 costs.\n", + "\n", + "#### *Bias Deduction / Metric Application*\n", + "\n", + "Given the above, one can see that the (same) actions, if applied to females of the subpopulation group, cannot yield more than 10% effectiveness, while in males they achieve up to 19.66%! This is why we argue that, in the terms of bias of recourse, this group exhibits bias against females.\n", + "\n", + "This is, of course, with respect to the \"Equal Choice for Recourse\" metric, which posits that the 2 protected subgroups should have the same number of effective actions. Since none of the 3 actions are sufficiently effective for females, and all 3 of them are sufficiently effective for males, we score this group as having a bias measure of $|0 - 3| = 3$." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qba9HsyEgPB-" + }, + "source": [ + "### Example without Bias of Recourse\n", + "\n", + "For completeness, we also demonstrate how, for some choices of metrics and parameters, FACTS may fail to find any subpopulation groups that exhibit bias between the protected populations, and thus deduce that in this case there is no recourse related bias." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "9ZazYqQ5gPB_" + }, + "outputs": [], + "source": [ + "detector.bias_scan(\n", + " metric=\"equal-choice-for-recourse\",\n", + " phi=0.7,\n", + " top_count=3\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "LNuBKASZgPB_", + "outputId": "f2c75748-e4af-4719-b774-c8904bb5f6f6" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1mWith the given parameters, no recourses showing unfairness have been found!\u001b[0m\n" + ] + } + ], + "source": [ + "# prints the result into a nicely formatted report\n", + "detector.print_recourse_report(\n", + " show_action_costs=False,\n", + " show_subgroup_costs=True,\n", + " show_unbiased_subgroups=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HIp_hVhLgPB_" + }, + "source": [ + "## Aternative API\n", + "\n", + "We also provide a more succinct API in the form of a wrapper function. This is closer in style to the API of existing `aif360` detectors.\n", + "\n", + "The previous example could be run equivalently with the following." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "RyIvVWtKgPB_", + "outputId": "cfc9da11-5120-48f1-fbad-63c5018f4b95" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "If \u001b[1mage = (26.0, 34.0], hours-per-week = FullTime\u001b[0m:\n", + "\tProtected Subgroup '\u001b[1mFemale\u001b[0m', \u001b[34m10.59%\u001b[39m covered\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m7.73%\u001b[39m and counterfactual cost = 2.0.\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m3.98%\u001b[39m and counterfactual cost = 1.0.\n", + "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m5.39%\u001b[39m and counterfactual cost = 2.0.\n", + "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m0.00\u001b[39m\n", + "\tProtected Subgroup '\u001b[1mMale\u001b[0m', \u001b[34m13.78%\u001b[39m covered\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m19.66%\u001b[39m and counterfactual cost = 2.0.\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m10.63%\u001b[39m and counterfactual cost = 1.0.\n", + "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m13.39%\u001b[39m and counterfactual cost = 2.0.\n", + "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m-3.00\u001b[39m\n", + "\t\u001b[35mBias against Female with respect to equal-choice-for-recourse.. Unfairness score = 3.\u001b[39m\n", + "If \u001b[1mage = (26.0, 34.0], capital-loss = 0.0, hours-per-week = FullTime\u001b[0m:\n", + "\tProtected Subgroup '\u001b[1mFemale\u001b[0m', \u001b[34m10.34%\u001b[39m covered\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m7.67%\u001b[39m and counterfactual cost = 2.0.\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m4.08%\u001b[39m and counterfactual cost = 1.0.\n", + "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m5.28%\u001b[39m and counterfactual cost = 2.0.\n", + "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m0.00\u001b[39m\n", + "\tProtected Subgroup '\u001b[1mMale\u001b[0m', \u001b[34m13.27%\u001b[39m covered\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m18.43%\u001b[39m and counterfactual cost = 2.0.\n", + "\t\tMake \u001b[1m\u001b[31mage = (41.0, 50.0]\u001b[39m\u001b[0m with effectiveness \u001b[32m9.27%\u001b[39m and counterfactual cost = 1.0.\n", + "\t\tMake \u001b[1m\u001b[31mage = (34.0, 41.0]\u001b[39m, \u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m11.92%\u001b[39m and counterfactual cost = 2.0.\n", + "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m-2.00\u001b[39m\n", + "\t\u001b[35mBias against Female with respect to equal-choice-for-recourse.. Unfairness score = 2.\u001b[39m\n", + "If \u001b[1mhours-per-week = FullTime, native-country = United-States\u001b[0m:\n", + "\tProtected Subgroup '\u001b[1mFemale\u001b[0m', \u001b[34m41.66%\u001b[39m covered\n", + "\t\tMake \u001b[1m\u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m2.62%\u001b[39m and counterfactual cost = 1.0.\n", + "\t\tMake \u001b[1m\u001b[31mhours-per-week = BrainDrain\u001b[39m\u001b[0m with effectiveness \u001b[32m1.79%\u001b[39m and counterfactual cost = 1.0.\n", + "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m0.00\u001b[39m\n", + "\tProtected Subgroup '\u001b[1mMale\u001b[0m', \u001b[34m46.78%\u001b[39m covered\n", + "\t\tMake \u001b[1m\u001b[31mhours-per-week = OverTime\u001b[39m\u001b[0m with effectiveness \u001b[32m10.08%\u001b[39m and counterfactual cost = 1.0.\n", + "\t\tMake \u001b[1m\u001b[31mhours-per-week = BrainDrain\u001b[39m\u001b[0m with effectiveness \u001b[32m8.70%\u001b[39m and counterfactual cost = 1.0.\n", + "\t\t\u001b[1mAggregate cost\u001b[0m of the above recourses = \u001b[35m-1.00\u001b[39m\n", + "\t\u001b[35mBias against Female with respect to equal-choice-for-recourse.. Unfairness score = 1.\u001b[39m\n" + ] + } + ], + "source": [ + "most_biased_subgroups = FACTS_bias_scan(\n", + " X=X_test,\n", + " clf=model,\n", + " prot_attr=\"sex\",\n", + " feature_weights={f: 1 for f in X.columns},\n", + " feats_not_allowed_to_change=[],\n", + " metric=\"equal-choice-for-recourse\",\n", + " phi=0.1,\n", + " top_count=3,\n", + " verbose=False, # hides progress bars\n", + " print_recourse_report=True,\n", + " show_action_costs=True,\n", + " show_subgroup_costs=True,\n", + ")" + ] + }, { - "data": { - "text/plain": [ - "[({'hours-per-week': 'FullTime', 'native-country': 'United-States'}, 1),\n", - " ({'age': Interval(26.0, 34.0, closed='right'), 'hours-per-week': 'FullTime'},\n", - " 3),\n", - " ({'age': Interval(26.0, 34.0, closed='right'),\n", - " 'capital-loss': 0.0,\n", - " 'hours-per-week': 'FullTime'},\n", - " 2)]" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "IGbEBY7NgPB_", + "outputId": "5796d312-5ef6-4b0f-c2ec-8888e3376552" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[({'hours-per-week': 'FullTime', 'native-country': 'United-States'}, 1),\n", + " ({'age': Interval(26.0, 34.0, closed='right'), 'hours-per-week': 'FullTime'},\n", + " 3),\n", + " ({'age': Interval(26.0, 34.0, closed='right'),\n", + " 'capital-loss': 0.0,\n", + " 'hours-per-week': 'FullTime'},\n", + " 2)]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "most_biased_subgroups" ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3po1Pz8KgPB_" + }, + "source": [ + "# Short Description of all Definitions / Metrics of Subgroup Recourse Fairness\n", + "\n", + "Here we give a brief description of each of the metrics available in our framework apart from \"Equal Choice for Recourse\".\n", + "\n", + "## Equal Effectiveness\n", + "\n", + "The classifier is considered to act fairly for a population group if the same proportion of individuals in the protected subgroups can achieve recourse.\n", + "\n", + "**Suggestion**: this metric ignores costs altogether and compares only the percentage of males VS females that can cross the model's decision boundary by the same actions. We would use it in applications where the goal is equal impact, in the sense that a change (or a set thereof) affects the same proportion of individuals in the protected subgroups. For example, in a hiring scenario, a similar proportion of males and females are expected to benefit from the same change.\n", + "\n", + "## Equal Effectiveness within Budget\n", + "\n", + "The classifier is considered to act fairly for a population group if the same proportion of individuals in the protected subgroups can achieve recourse with a cost at most $c$, where $c$ is some user-provided cost budget.\n", + "\n", + "**Suggestion**: this metric is similar to the above, but puts a bound on how large the cost of an action can be. Could be used to limit changes with undesirably large cost, e.g., salary changes up to 10K.\n", + "\n", + "## Equal Cost of Effectiveness\n", + "\n", + "The classifier is considered to act fairly for a population group if the minimum cost required to be sufficiently effective in the protected subgroups is equal. Again, as in \"Equal Choice for Recourse\", by \"sufficiently effective\" we refer to those actions that successfully flip the model's decision for at least $100\\phi \\%$ (for $\\phi \\in [0,1]$) of the subgroup.\n", + "\n", + "**Suggestion**: this metric could be useful when an external factor imposes a specific threshold, e.g. in credit risk assessment, a guideline which states that the effort required to be 80% certain that you will have your loan accepted should be the same for males and females.\n", + "\n", + "## Equal (Conditional) Mean Recourse\n", + "\n", + "This definition extends the notion of *burden* from literature ([reference](https://dl.acm.org/doi/10.1145/3375627.3375812)) to the case where not all individuals may achieve recourse. Omitting some details, given any set of individuals, the **conditional mean recourse cost** is the mean recourse cost among the subset of individuals that can actually achieve recourse, i.e. by at least one of the available actions.\n", + "\n", + "Given the above, this definition considers the classifier to act fairly for a population group if the (conditional) mean recourse cost for the protected subgroups is the same.\n", + "\n", + "**Suggestion**: this metric compares the mean cost required to achieve recourse for the protected subgroups. It could be useful in a scenario like loan approval, where one needs to ensure that the cost of changes needed to receive the loan are the same for males and females on average.\n", + "\n", + "## Fair Effectiveness-Cost Trade-Off\n", + "\n", + "This is the strictest definition, which considers the classifier to act fairly for a population group only if the protected subgroups have the same effectiveness-cost distribution (checked in the implementation via a statistical test).\n", + "\n", + "Equivalently, Equal Effectiveness within Budget must hold for *every* value of the cost budget $c$.\n", + "\n", + "**Suggestion**: this metric considers all available actions and compares all their possible trade-offs between effectiveness and cost among the protected subgroups. This could be useful for cases where the protected attribute should have absolutely no impact on the available options to achieve recourse, such as in high-risk situations like estimating the risk of a convicted individual to act unlawfully in the future (as in the well known [COMPAS dataset](https://www.propublica.org/datastore/dataset/compas-recidivism-risk-score-data-and-analysis))." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "5sGwLyBNgPCA" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.18" + }, + "colab": { + "provenance": [] } - ], - "source": [ - "most_biased_subgroups" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Short Description of all Definitions / Metrics of Subgroup Recourse Fairness\n", - "\n", - "Here we give a brief description of each of the metrics available in our framework apart from \"Equal Choice for Recourse\".\n", - "\n", - "## Equal Effectiveness\n", - "\n", - "The classifier is considered to act fairly for a population group if the same proportion of individuals in the protected subgroups can achieve recourse.\n", - "\n", - "**Suggestion**: this metric ignores costs altogether and compares only the percentage of males VS females that can cross the model's decision boundary by the same actions. We would use it in applications where the goal is equal impact, in the sense that a change (or a set thereof) affects the same proportion of individuals in the protected subgroups. For example, in a hiring scenario, a similar proportion of males and females are expected to benefit from the same change.\n", - "\n", - "## Equal Effectiveness within Budget\n", - "\n", - "The classifier is considered to act fairly for a population group if the same proportion of individuals in the protected subgroups can achieve recourse with a cost at most $c$, where $c$ is some user-provided cost budget.\n", - "\n", - "**Suggestion**: this metric is similar to the above, but puts a bound on how large the cost of an action can be. Could be used to limit changes with undesirably large cost, e.g., salary changes up to 10K.\n", - "\n", - "## Equal Cost of Effectiveness\n", - "\n", - "The classifier is considered to act fairly for a population group if the minimum cost required to be sufficiently effective in the protected subgroups is equal. Again, as in \"Equal Choice for Recourse\", by \"sufficiently effective\" we refer to those actions that successfully flip the model's decision for at least $100\\phi \\%$ (for $\\phi \\in [0,1]$) of the subgroup.\n", - "\n", - "**Suggestion**: this metric could be useful when an external factor imposes a specific threshold, e.g. in credit risk assessment, a guideline which states that the effort required to be 80% certain that you will have your loan accepted should be the same for males and females.\n", - "\n", - "## Equal (Conditional) Mean Recourse\n", - "\n", - "This definition extends the notion of *burden* from literature ([reference](https://dl.acm.org/doi/10.1145/3375627.3375812)) to the case where not all individuals may achieve recourse. Omitting some details, given any set of individuals, the **conditional mean recourse cost** is the mean recourse cost among the subset of individuals that can actually achieve recourse, i.e. by at least one of the available actions.\n", - "\n", - "Given the above, this definition considers the classifier to act fairly for a population group if the (conditional) mean recourse cost for the protected subgroups is the same.\n", - "\n", - "**Suggestion**: this metric compares the mean cost required to achieve recourse for the protected subgroups. It could be useful in a scenario like loan approval, where one needs to ensure that the cost of changes needed to receive the loan are the same for males and females on average.\n", - "\n", - "## Fair Effectiveness-Cost Trade-Off\n", - "\n", - "This is the strictest definition, which considers the classifier to act fairly for a population group only if the protected subgroups have the same effectiveness-cost distribution (checked in the implementation via a statistical test).\n", - "\n", - "Equivalently, Equal Effectiveness within Budget must hold for *every* value of the cost budget $c$.\n", - "\n", - "**Suggestion**: this metric considers all available actions and compares all their possible trade-offs between effectiveness and cost among the protected subgroups. This could be useful for cases where the protected attribute should have absolutely no impact on the available options to achieve recourse, such as in high-risk situations like estimating the risk of a convicted individual to act unlawfully in the future (as in the well known [COMPAS dataset](https://www.propublica.org/datastore/dataset/compas-recidivism-risk-score-data-and-analysis))." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.18" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/examples/demo_gerryfair.ipynb b/examples/demo_gerryfair.ipynb index efdb5983..6b6352f5 100644 --- a/examples/demo_gerryfair.ipynb +++ b/examples/demo_gerryfair.ipynb @@ -1,884 +1,918 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "pycharm": { - "is_executing": false - } - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import warnings\n", - "warnings.filterwarnings(\"ignore\")\n", - "import sys\n", - "sys.path.append(\"../\")\n", - "from aif360.algorithms.inprocessing import GerryFairClassifier\n", - "from aif360.algorithms.inprocessing.gerryfair.clean import array_to_tuple\n", - "from aif360.algorithms.inprocessing.gerryfair.auditor import Auditor\n", - "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_adult\n", - "from sklearn import svm\n", - "from sklearn import tree\n", - "from sklearn.kernel_ridge import KernelRidge\n", - "from sklearn import linear_model\n", - "from aif360.metrics import BinaryLabelDatasetMetric\n", - "from IPython.display import Image\n", - "import pickle\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# load data set\n", - "data_set = load_preproc_data_adult(sub_samp=1000, balance=True)\n", - "max_iterations = 500" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**instantiate, fit, and predict** \n", - "\n", - "\n", - "We first demonstrate how to instantiate a `GerryFairClassifier`, `train` it with respect to rich subgroup fairness, and `predict` the label of a new example. We remark that when we set the `print_flag = True` at each iteration of the algorithm we print the error, fairness violation, and violated group size of most recent model. The error is the classification error of the classifier. At each round the Learner tries to find a classifier that minimizes the classification error plus a weighted sum of the fairness disparities on all the groups that the Auditor has found up until that point. By contrast the Auditor tries to find the group at each round with the greatest rich subgroup disparity with respect to the Learner's model. We define `violated group size` as the size (as a fraction of the dataset size) of this group, and the `fairness violation` as the `violated group size` times the difference in the statistical rate (FP or FN rate) on the group vs. the whole population. \n", - "\n", - "In the example below we set `max_iterations=500` which is an order of magnitude less than the time to convergence observed in [the rich subgroup fairness empirical paper](https://arxiv.org/abs/1808.08166), but advise that this can be highly dataset dependent. Our target $\\gamma$-disparity is $\\gamma = .005$, our statistical rate is false positive rate or `FP`, and our cost-sensitive classification oracle is linear regression (more on that below). \n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "pycharm": { - "is_executing": true - } - }, - "outputs": [ + "cells": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "iteration: 1, error: 0.263, fairness violation: 0.028780000000000007, violated group size: 0.217\n", - "iteration: 2, error: 0.3815, fairness violation: 0.014390000000000003, violated group size: 0.217\n", - "iteration: 3, error: 0.42099999999999993, fairness violation: 0.009593333333333339, violated group size: 0.283\n", - "iteration: 4, error: 0.44075, fairness violation: 0.007195000000000002, violated group size: 0.217\n", - "iteration: 5, error: 0.45260000000000006, fairness violation: 0.005756000000000001, violated group size: 0.217\n", - "iteration: 6, error: 0.4605000000000001, fairness violation: 0.004796666666666668, violated group size: 0.283\n", - "iteration: 7, error: 0.4661428571428572, fairness violation: 0.004111428571428572, violated group size: 0.217\n", - "iteration: 8, error: 0.470375, fairness violation: 0.0035975000000000017, violated group size: 0.217\n", - "iteration: 9, error: 0.4691111111111112, fairness violation: 0.0033906666666666677, violated group size: 0.283\n", - "iteration: 10, error: 0.4681, fairness violation: 0.003225200000000001, violated group size: 0.283\n", - "iteration: 11, error: 0.4672727272727271, fairness violation: 0.0030898181818181836, violated group size: 0.283\n", - "iteration: 12, error: 0.4665833333333333, fairness violation: 0.0029769999999999996, violated group size: 0.217\n", - "iteration: 13, error: 0.466, fairness violation: 0.0028815384615384627, violated group size: 0.283\n", - "iteration: 14, error: 0.4655000000000001, fairness violation: 0.0027997142857142865, violated group size: 0.217\n", - "iteration: 15, error: 0.46506666666666674, fairness violation: 0.002728800000000001, violated group size: 0.217\n", - "iteration: 16, error: 0.4646875, fairness violation: 0.0026667500000000007, violated group size: 0.217\n", - "iteration: 17, error: 0.4643529411764707, fairness violation: 0.002612000000000001, violated group size: 0.283\n", - "iteration: 18, error: 0.46405555555555567, fairness violation: 0.002563333333333334, violated group size: 0.217\n", - "iteration: 19, error: 0.4637894736842106, fairness violation: 0.0025197894736842096, violated group size: 0.217\n", - "iteration: 20, error: 0.46354999999999996, fairness violation: 0.0024806000000000008, violated group size: 0.283\n", - "iteration: 21, error: 0.4633333333333334, fairness violation: 0.0024451428571428584, violated group size: 0.217\n", - "iteration: 22, error: 0.4631363636363638, fairness violation: 0.0024129090909090914, violated group size: 0.283\n", - "iteration: 23, error: 0.46295652173913054, fairness violation: 0.002383478260869566, violated group size: 0.217\n", - "iteration: 24, error: 0.4627916666666667, fairness violation: 0.002356500000000001, violated group size: 0.283\n", - "iteration: 25, error: 0.4626400000000001, fairness violation: 0.0023316800000000018, violated group size: 0.283\n", - "iteration: 26, error: 0.4625000000000001, fairness violation: 0.0023087692307692314, violated group size: 0.217\n", - "iteration: 27, error: 0.4623703703703705, fairness violation: 0.0022875555555555557, violated group size: 0.217\n", - "iteration: 28, error: 0.46224999999999994, fairness violation: 0.0022678571428571426, violated group size: 0.217\n", - "iteration: 29, error: 0.46213793103448264, fairness violation: 0.0022495172413793106, violated group size: 0.217\n", - "iteration: 30, error: 0.46203333333333335, fairness violation: 0.0022324000000000003, violated group size: 0.217\n", - "iteration: 31, error: 0.46193548387096783, fairness violation: 0.0022163870967741935, violated group size: 0.217\n", - "iteration: 32, error: 0.46184375, fairness violation: 0.0022013749999999993, violated group size: 0.217\n", - "iteration: 33, error: 0.459969696969697, fairness violation: 0.0023319393939393944, violated group size: 0.283\n", - "iteration: 34, error: 0.4582058823529412, fairness violation: 0.002454823529411765, violated group size: 0.217\n", - "iteration: 35, error: 0.45654285714285714, fairness violation: 0.0025706857142857144, violated group size: 0.217\n", - "iteration: 36, error: 0.4549722222222221, fairness violation: 0.0026801111111111114, violated group size: 0.283\n", - "iteration: 37, error: 0.4534864864864866, fairness violation: 0.0027836216216216214, violated group size: 0.283\n", - "iteration: 38, error: 0.45207894736842097, fairness violation: 0.0028816842105263162, violated group size: 0.283\n", - "iteration: 39, error: 0.4507435897435898, fairness violation: 0.0029747179487179492, violated group size: 0.217\n", - "iteration: 40, error: 0.44947499999999996, fairness violation: 0.0030631000000000005, violated group size: 0.217\n", - "iteration: 41, error: 0.44826829268292684, fairness violation: 0.0031471707317073175, violated group size: 0.283\n", - "iteration: 42, error: 0.4471190476190476, fairness violation: 0.0032272380952380955, violated group size: 0.217\n", - "iteration: 43, error: 0.44602325581395347, fairness violation: 0.0033035813953488386, violated group size: 0.283\n", - "iteration: 44, error: 0.44497727272727267, fairness violation: 0.0033764545454545453, violated group size: 0.283\n", - "iteration: 45, error: 0.4439777777777778, fairness violation: 0.003446088888888888, violated group size: 0.217\n", - "iteration: 46, error: 0.44302173913043474, fairness violation: 0.0035126956521739122, violated group size: 0.217\n", - "iteration: 47, error: 0.44210638297872346, fairness violation: 0.0035764680851063826, violated group size: 0.217\n", - "iteration: 48, error: 0.4412291666666666, fairness violation: 0.003637583333333332, violated group size: 0.217\n", - "iteration: 49, error: 0.4403877551020407, fairness violation: 0.0036962040816326523, violated group size: 0.217\n", - "iteration: 50, error: 0.4395600000000001, fairness violation: 0.0037524800000000003, violated group size: 0.217\n", - "iteration: 51, error: 0.43876470588235295, fairness violation: 0.0038065490196078425, violated group size: 0.217\n", - "iteration: 52, error: 0.438, fairness violation: 0.003858538461538461, violated group size: 0.283\n", - "iteration: 53, error: 0.4372641509433963, fairness violation: 0.003908566037735848, violated group size: 0.217\n", - "iteration: 54, error: 0.4365555555555556, fairness violation: 0.003956740740740741, violated group size: 0.283\n", - "iteration: 55, error: 0.4358181818181819, fairness violation: 0.004003163636363636, violated group size: 0.217\n", - "iteration: 56, error: 0.4351071428571429, fairness violation: 0.004047928571428571, violated group size: 0.217\n", - "iteration: 57, error: 0.4344736842105262, fairness violation: 0.004091122807017543, violated group size: 0.217\n", - "iteration: 58, error: 0.43381034482758624, fairness violation: 0.004132827586206895, violated group size: 0.217\n", - "iteration: 59, error: 0.4331694915254237, fairness violation: 0.0041731186440677965, violated group size: 0.283\n", - "iteration: 60, error: 0.43254999999999993, fairness violation: 0.004212066666666666, violated group size: 0.217\n", - "iteration: 61, error: 0.4319508196721312, fairness violation: 0.004249737704918031, violated group size: 0.217\n", - "iteration: 62, error: 0.4313709677419356, fairness violation: 0.004286193548387096, violated group size: 0.217\n", - "iteration: 63, error: 0.43080952380952386, fairness violation: 0.004321492063492062, violated group size: 0.283\n", - "iteration: 64, error: 0.430265625, fairness violation: 0.004355687499999999, violated group size: 0.283\n", - "iteration: 65, error: 0.4297384615384615, fairness violation: 0.004388830769230769, violated group size: 0.283\n", - "iteration: 66, error: 0.42922727272727274, fairness violation: 0.004420969696969697, violated group size: 0.217\n", - "iteration: 67, error: 0.42873134328358203, fairness violation: 0.004452149253731343, violated group size: 0.217\n", - "iteration: 68, error: 0.42824999999999996, fairness violation: 0.0044824117647058815, violated group size: 0.283\n", - "iteration: 69, error: 0.42778260869565227, fairness violation: 0.004511797101449274, violated group size: 0.217\n", - "iteration: 70, error: 0.42732857142857145, fairness violation: 0.004540342857142856, violated group size: 0.283\n", - "iteration: 71, error: 0.42688732394366197, fairness violation: 0.004568084507042252, violated group size: 0.217\n", - "iteration: 72, error: 0.4264583333333332, fairness violation: 0.004595055555555555, violated group size: 0.283\n", - "iteration: 73, error: 0.42604109589041106, fairness violation: 0.004621287671232876, violated group size: 0.217\n", - "iteration: 74, error: 0.4256351351351351, fairness violation: 0.0046468108108108095, violated group size: 0.283\n", - "iteration: 75, error: 0.42524, fairness violation: 0.004671653333333331, violated group size: 0.217\n", - "iteration: 76, error: 0.4248552631578947, fairness violation: 0.004695842105263155, violated group size: 0.217\n", - "iteration: 77, error: 0.42448051948051946, fairness violation: 0.004719402597402596, violated group size: 0.217\n", - "iteration: 78, error: 0.4239871794871795, fairness violation: 0.00475905128205128, violated group size: 0.217\n", - "iteration: 79, error: 0.42363291139240505, fairness violation: 0.004781215189873418, violated group size: 0.283\n", - "iteration: 80, error: 0.42328750000000015, fairness violation: 0.004802824999999999, violated group size: 0.283\n" - ] + "cell_type": "markdown", + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Trusted-AI/AIF360/blob/main/examples/demo_gerryfair.ipynb)" + ], + "metadata": { + "id": "_Y3xm4CthJnm" + } }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "iteration: 81, error: 0.4229506172839506, fairness violation: 0.004823901234567901, violated group size: 0.283\n", - "iteration: 82, error: 0.4226219512195123, fairness violation: 0.004844463414634145, violated group size: 0.217\n", - "iteration: 83, error: 0.4221807228915662, fairness violation: 0.004880216867469879, violated group size: 0.217\n", - "iteration: 84, error: 0.42175, fairness violation: 0.004915119047619047, violated group size: 0.217\n", - "iteration: 85, error: 0.4214470588235294, fairness violation: 0.004933882352941174, violated group size: 0.217\n", - "iteration: 86, error: 0.4210348837209302, fairness violation: 0.004967348837209301, violated group size: 0.217\n", - "iteration: 87, error: 0.420632183908046, fairness violation: 0.005000045977011494, violated group size: 0.283\n", - "iteration: 88, error: 0.42035227272727277, fairness violation: 0.0050172045454545434, violated group size: 0.217\n", - "iteration: 89, error: 0.4200786516853933, fairness violation: 0.005033977528089887, violated group size: 0.217\n", - "iteration: 90, error: 0.4198111111111112, fairness violation: 0.005050377777777776, violated group size: 0.283\n", - "iteration: 91, error: 0.4195824175824176, fairness violation: 0.0050664175824175805, violated group size: 0.217\n", - "iteration: 92, error: 0.4193695652173913, fairness violation: 0.005082108695652173, violated group size: 0.217\n", - "iteration: 93, error: 0.41916129032258065, fairness violation: 0.005097462365591397, violated group size: 0.217\n", - "iteration: 94, error: 0.41895744680851066, fairness violation: 0.005112489361702126, violated group size: 0.217\n", - "iteration: 95, error: 0.41875789473684216, fairness violation: 0.005127199999999998, violated group size: 0.217\n", - "iteration: 96, error: 0.41856250000000006, fairness violation: 0.005141604166666665, violated group size: 0.283\n", - "iteration: 97, error: 0.418979381443299, fairness violation: 0.005106494845360823, violated group size: 0.217\n", - "iteration: 98, error: 0.41938775510204085, fairness violation: 0.005072102040816325, violated group size: 0.217\n", - "iteration: 99, error: 0.4197878787878788, fairness violation: 0.0050384040404040376, violated group size: 0.217\n", - "iteration: 100, error: 0.42018000000000005, fairness violation: 0.0050053799999999985, violated group size: 0.217\n", - "iteration: 101, error: 0.42056435643564366, fairness violation: 0.004973009900990098, violated group size: 0.217\n", - "iteration: 102, error: 0.42094117647058826, fairness violation: 0.00494127450980392, violated group size: 0.217\n", - "iteration: 103, error: 0.4213106796116506, fairness violation: 0.004910155339805824, violated group size: 0.217\n", - "iteration: 104, error: 0.4216730769230769, fairness violation: 0.004879634615384614, violated group size: 0.217\n", - "iteration: 105, error: 0.4220285714285715, fairness violation: 0.004849695238095237, violated group size: 0.217\n", - "iteration: 106, error: 0.4223773584905662, fairness violation: 0.004820320754716981, violated group size: 0.283\n", - "iteration: 107, error: 0.42271962616822434, fairness violation: 0.004791495327102803, violated group size: 0.217\n", - "iteration: 108, error: 0.4230555555555556, fairness violation: 0.0047632037037037035, violated group size: 0.217\n", - "iteration: 109, error: 0.4233853211009175, fairness violation: 0.00473543119266055, violated group size: 0.217\n", - "iteration: 110, error: 0.4237090909090908, fairness violation: 0.004708163636363636, violated group size: 0.217\n", - "iteration: 111, error: 0.424027027027027, fairness violation: 0.004681387387387387, violated group size: 0.283\n", - "iteration: 112, error: 0.42433928571428586, fairness violation: 0.004655089285714286, violated group size: 0.283\n", - "iteration: 113, error: 0.4241238938053097, fairness violation: 0.004671504424778761, violated group size: 0.217\n", - "iteration: 114, error: 0.42442982456140343, fairness violation: 0.004645754385964912, violated group size: 0.283\n", - "iteration: 115, error: 0.42473043478260875, fairness violation: 0.0046204521739130425, violated group size: 0.283\n", - "iteration: 116, error: 0.42502586206896553, fairness violation: 0.0045955862068965524, violated group size: 0.283\n", - "iteration: 117, error: 0.42481196581196584, fairness violation: 0.004611948717948717, violated group size: 0.217\n", - "iteration: 118, error: 0.4251016949152542, fairness violation: 0.004587576271186439, violated group size: 0.217\n", - "iteration: 119, error: 0.42489075630252104, fairness violation: 0.004603731092436974, violated group size: 0.217\n", - "iteration: 120, error: 0.4251750000000001, fairness violation: 0.0045798333333333325, violated group size: 0.217\n", - "iteration: 121, error: 0.4249669421487604, fairness violation: 0.004595785123966942, violated group size: 0.283\n", - "iteration: 122, error: 0.4247622950819671, fairness violation: 0.0046114754098360656, violated group size: 0.217\n", - "iteration: 123, error: 0.42456097560975614, fairness violation: 0.00462691056910569, violated group size: 0.217\n", - "iteration: 124, error: 0.42436290322580644, fairness violation: 0.004642096774193548, violated group size: 0.217\n", - "iteration: 125, error: 0.4241680000000001, fairness violation: 0.00465704, violated group size: 0.217\n", - "iteration: 126, error: 0.4239761904761905, fairness violation: 0.004671746031746031, violated group size: 0.217\n", - "iteration: 127, error: 0.42425196850393704, fairness violation: 0.004648629921259842, violated group size: 0.217\n", - "iteration: 128, error: 0.4240625, fairness violation: 0.004663171874999999, violated group size: 0.217\n", - "iteration: 129, error: 0.4238759689922481, fairness violation: 0.004677488372093024, violated group size: 0.283\n", - "iteration: 130, error: 0.42369230769230776, fairness violation: 0.004691584615384614, violated group size: 0.217\n", - "iteration: 131, error: 0.42351145038167937, fairness violation: 0.004705465648854962, violated group size: 0.217\n", - "iteration: 132, error: 0.4233333333333333, fairness violation: 0.004719136363636364, violated group size: 0.283\n", - "iteration: 133, error: 0.423157894736842, fairness violation: 0.0047326015037594, violated group size: 0.217\n", - "iteration: 134, error: 0.4229850746268656, fairness violation: 0.004745865671641791, violated group size: 0.217\n", - "iteration: 135, error: 0.42281481481481475, fairness violation: 0.004758933333333335, violated group size: 0.283\n", - "iteration: 136, error: 0.4226470588235294, fairness violation: 0.004771808823529411, violated group size: 0.217\n", - "iteration: 137, error: 0.42248175182481745, fairness violation: 0.004784496350364964, violated group size: 0.283\n", - "iteration: 138, error: 0.42231884057971014, fairness violation: 0.004797000000000002, violated group size: 0.283\n", - "iteration: 139, error: 0.42215827338129497, fairness violation: 0.004809323741007196, violated group size: 0.283\n", - "iteration: 140, error: 0.42200000000000004, fairness violation: 0.004821471428571429, violated group size: 0.217\n", - "iteration: 141, error: 0.4218439716312057, fairness violation: 0.0048334468085106394, violated group size: 0.217\n", - "iteration: 142, error: 0.42169014084507045, fairness violation: 0.004845253521126761, violated group size: 0.283\n", - "iteration: 143, error: 0.4215384615384616, fairness violation: 0.004856895104895106, violated group size: 0.283\n", - "iteration: 144, error: 0.4213888888888888, fairness violation: 0.004868375, violated group size: 0.217\n", - "iteration: 145, error: 0.42124137931034483, fairness violation: 0.004879696551724138, violated group size: 0.217\n", - "iteration: 146, error: 0.4210958904109589, fairness violation: 0.00489086301369863, violated group size: 0.217\n", - "iteration: 147, error: 0.4209523809523809, fairness violation: 0.004901877551020409, violated group size: 0.217\n", - "iteration: 148, error: 0.42081081081081084, fairness violation: 0.004912743243243244, violated group size: 0.217\n", - "iteration: 149, error: 0.42067114093959734, fairness violation: 0.004923463087248323, violated group size: 0.283\n", - "iteration: 150, error: 0.4205333333333334, fairness violation: 0.004934040000000001, violated group size: 0.217\n", - "iteration: 151, error: 0.4203973509933776, fairness violation: 0.004944476821192053, violated group size: 0.217\n", - "iteration: 152, error: 0.4202631578947368, fairness violation: 0.0049547763157894754, violated group size: 0.283\n", - "iteration: 153, error: 0.4201307189542483, fairness violation: 0.00496494117647059, violated group size: 0.283\n", - "iteration: 154, error: 0.42, fairness violation: 0.004974974025974027, violated group size: 0.283\n", - "iteration: 155, error: 0.4198709677419355, fairness violation: 0.0049848774193548395, violated group size: 0.217\n", - "iteration: 156, error: 0.4197435897435898, fairness violation: 0.004994653846153847, violated group size: 0.217\n", - "iteration: 157, error: 0.4196178343949045, fairness violation: 0.0050043057324840766, violated group size: 0.217\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": false + }, + "id": "0xQSRpo5hI5H" + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "import sys\n", + "sys.path.append(\"../\")\n", + "from aif360.algorithms.inprocessing import GerryFairClassifier\n", + "from aif360.algorithms.inprocessing.gerryfair.clean import array_to_tuple\n", + "from aif360.algorithms.inprocessing.gerryfair.auditor import Auditor\n", + "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_adult\n", + "from sklearn import svm\n", + "from sklearn import tree\n", + "from sklearn.kernel_ridge import KernelRidge\n", + "from sklearn import linear_model\n", + "from aif360.metrics import BinaryLabelDatasetMetric\n", + "from IPython.display import Image\n", + "import pickle\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# load data set\n", + "data_set = load_preproc_data_adult(sub_samp=1000, balance=True)\n", + "max_iterations = 500" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "iteration: 158, error: 0.4194936708860761, fairness violation: 0.005013835443037975, violated group size: 0.217\n", - "iteration: 159, error: 0.41937106918239, fairness violation: 0.005023245283018869, violated group size: 0.283\n", - "iteration: 160, error: 0.41925000000000007, fairness violation: 0.0050325375, violated group size: 0.217\n", - "iteration: 161, error: 0.4191304347826087, fairness violation: 0.005041714285714285, violated group size: 0.217\n", - "iteration: 162, error: 0.41901234567901235, fairness violation: 0.005050777777777778, violated group size: 0.283\n", - "iteration: 163, error: 0.41889570552147243, fairness violation: 0.005059730061349694, violated group size: 0.283\n", - "iteration: 164, error: 0.4191402439024391, fairness violation: 0.005039463414634148, violated group size: 0.283\n", - "iteration: 165, error: 0.41938181818181824, fairness violation: 0.005019442424242424, violated group size: 0.217\n", - "iteration: 166, error: 0.4192650602409639, fairness violation: 0.005028421686746988, violated group size: 0.217\n", - "iteration: 167, error: 0.41950299401197605, fairness violation: 0.005008706586826348, violated group size: 0.217\n", - "iteration: 168, error: 0.41973809523809513, fairness violation: 0.004989226190476189, violated group size: 0.217\n", - "iteration: 169, error: 0.41997041420118336, fairness violation: 0.0049699763313609474, violated group size: 0.283\n", - "iteration: 170, error: 0.4202, fairness violation: 0.00495095294117647, violated group size: 0.283\n", - "iteration: 171, error: 0.4204269005847953, fairness violation: 0.004932152046783625, violated group size: 0.217\n", - "iteration: 172, error: 0.42065116279069764, fairness violation: 0.00491356976744186, violated group size: 0.217\n", - "iteration: 173, error: 0.4208728323699421, fairness violation: 0.004895202312138728, violated group size: 0.217\n", - "iteration: 174, error: 0.42109195402298855, fairness violation: 0.004877045977011494, violated group size: 0.217\n", - "iteration: 175, error: 0.4213085714285715, fairness violation: 0.004859097142857142, violated group size: 0.217\n", - "iteration: 176, error: 0.42152272727272727, fairness violation: 0.0048413522727272715, violated group size: 0.217\n", - "iteration: 177, error: 0.42173446327683617, fairness violation: 0.00482380790960452, violated group size: 0.217\n", - "iteration: 178, error: 0.42161235955056187, fairness violation: 0.004833280898876404, violated group size: 0.217\n", - "iteration: 179, error: 0.42182122905027924, fairness violation: 0.004815977653631285, violated group size: 0.217\n", - "iteration: 180, error: 0.4220277777777778, fairness violation: 0.004798866666666665, violated group size: 0.217\n", - "iteration: 181, error: 0.42223204419889504, fairness violation: 0.004781944751381214, violated group size: 0.283\n", - "iteration: 182, error: 0.4224340659340659, fairness violation: 0.004765208791208789, violated group size: 0.217\n", - "iteration: 183, error: 0.4226338797814208, fairness violation: 0.004748655737704917, violated group size: 0.217\n", - "iteration: 184, error: 0.4228315217391304, fairness violation: 0.004732282608695651, violated group size: 0.217\n", - "iteration: 185, error: 0.4230270270270271, fairness violation: 0.004716086486486487, violated group size: 0.217\n", - "iteration: 186, error: 0.4229032258064515, fairness violation: 0.0047257311827957, violated group size: 0.283\n", - "iteration: 187, error: 0.4230962566844919, fairness violation: 0.0047097433155080205, violated group size: 0.217\n", - "iteration: 188, error: 0.4229734042553191, fairness violation: 0.00471931914893617, violated group size: 0.283\n", - "iteration: 189, error: 0.4231640211640213, fairness violation: 0.004703534391534391, violated group size: 0.217\n", - "iteration: 190, error: 0.42304210526315794, fairness violation: 0.004713042105263158, violated group size: 0.217\n", - "iteration: 191, error: 0.4232303664921467, fairness violation: 0.004697455497382198, violated group size: 0.217\n", - "iteration: 192, error: 0.42310937499999995, fairness violation: 0.004706895833333333, violated group size: 0.217\n", - "iteration: 193, error: 0.42329533678756476, fairness violation: 0.004691502590673575, violated group size: 0.283\n", - "iteration: 194, error: 0.4231752577319588, fairness violation: 0.004700876288659792, violated group size: 0.217\n", - "iteration: 195, error: 0.4230564102564103, fairness violation: 0.004710153846153845, violated group size: 0.217\n", - "iteration: 196, error: 0.4229387755102041, fairness violation: 0.004719336734693878, violated group size: 0.283\n", - "iteration: 197, error: 0.4228223350253807, fairness violation: 0.004728426395939086, violated group size: 0.283\n", - "iteration: 198, error: 0.4227070707070707, fairness violation: 0.004737424242424242, violated group size: 0.217\n", - "iteration: 199, error: 0.4228894472361809, fairness violation: 0.004722341708542713, violated group size: 0.217\n", - "iteration: 200, error: 0.42277499999999996, fairness violation: 0.004731279999999999, violated group size: 0.217\n", - "iteration: 201, error: 0.4226616915422886, fairness violation: 0.004740129353233829, violated group size: 0.217\n", - "iteration: 202, error: 0.4225495049504951, fairness violation: 0.00474889108910891, violated group size: 0.217\n", - "iteration: 203, error: 0.42243842364532025, fairness violation: 0.004757566502463053, violated group size: 0.283\n", - "iteration: 204, error: 0.42232843137254905, fairness violation: 0.004766156862745097, violated group size: 0.283\n", - "iteration: 205, error: 0.422219512195122, fairness violation: 0.004774663414634145, violated group size: 0.217\n", - "iteration: 206, error: 0.422111650485437, fairness violation: 0.004783087378640775, violated group size: 0.217\n", - "iteration: 207, error: 0.4220048309178744, fairness violation: 0.00479142995169082, violated group size: 0.217\n", - "iteration: 208, error: 0.4218990384615385, fairness violation: 0.004799692307692306, violated group size: 0.217\n", - "iteration: 209, error: 0.42179425837320567, fairness violation: 0.004807875598086124, violated group size: 0.217\n", - "iteration: 210, error: 0.4216904761904762, fairness violation: 0.004815980952380952, violated group size: 0.217\n", - "iteration: 211, error: 0.42158767772511846, fairness violation: 0.0048240094786729856, violated group size: 0.217\n", - "iteration: 212, error: 0.42148584905660386, fairness violation: 0.004831962264150944, violated group size: 0.217\n", - "iteration: 213, error: 0.4213849765258215, fairness violation: 0.004839840375586855, violated group size: 0.283\n", - "iteration: 214, error: 0.421285046728972, fairness violation: 0.0048476448598130835, violated group size: 0.217\n", - "iteration: 215, error: 0.42118604651162794, fairness violation: 0.004855376744186045, violated group size: 0.217\n", - "iteration: 216, error: 0.4210879629629629, fairness violation: 0.004863037037037037, violated group size: 0.283\n", - "iteration: 217, error: 0.42099078341013824, fairness violation: 0.004870626728110601, violated group size: 0.283\n", - "iteration: 218, error: 0.42089449541284396, fairness violation: 0.004878146788990825, violated group size: 0.217\n", - "iteration: 219, error: 0.42079908675799094, fairness violation: 0.004885598173515983, violated group size: 0.283\n", - "iteration: 220, error: 0.4207045454545455, fairness violation: 0.004892981818181818, violated group size: 0.283\n", - "iteration: 221, error: 0.4206108597285068, fairness violation: 0.004900298642533936, violated group size: 0.283\n", - "iteration: 222, error: 0.4205180180180179, fairness violation: 0.004907549549549549, violated group size: 0.217\n", - "iteration: 223, error: 0.4204260089686098, fairness violation: 0.004914735426008968, violated group size: 0.217\n", - "iteration: 224, error: 0.4203348214285714, fairness violation: 0.004921857142857143, violated group size: 0.283\n", - "iteration: 225, error: 0.4202444444444444, fairness violation: 0.004928915555555555, violated group size: 0.217\n", - "iteration: 226, error: 0.42015486725663725, fairness violation: 0.004935911504424777, violated group size: 0.217\n", - "iteration: 227, error: 0.4200660792951542, fairness violation: 0.004942845814977973, violated group size: 0.217\n", - "iteration: 228, error: 0.4199780701754386, fairness violation: 0.004949719298245614, violated group size: 0.217\n", - "iteration: 229, error: 0.4198908296943231, fairness violation: 0.004956532751091703, violated group size: 0.283\n", - "iteration: 230, error: 0.419804347826087, fairness violation: 0.004963286956521739, violated group size: 0.283\n", - "iteration: 231, error: 0.4197186147186147, fairness violation: 0.004969982683982686, violated group size: 0.283\n", - "iteration: 232, error: 0.4196336206896552, fairness violation: 0.004976620689655175, violated group size: 0.283\n", - "iteration: 233, error: 0.419549356223176, fairness violation: 0.004983201716738197, violated group size: 0.283\n", - "iteration: 234, error: 0.419465811965812, fairness violation: 0.0049897264957264945, violated group size: 0.217\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "iO2ueydohI5J" + }, + "source": [ + "**instantiate, fit, and predict**\n", + "\n", + "\n", + "We first demonstrate how to instantiate a `GerryFairClassifier`, `train` it with respect to rich subgroup fairness, and `predict` the label of a new example. We remark that when we set the `print_flag = True` at each iteration of the algorithm we print the error, fairness violation, and violated group size of most recent model. The error is the classification error of the classifier. At each round the Learner tries to find a classifier that minimizes the classification error plus a weighted sum of the fairness disparities on all the groups that the Auditor has found up until that point. By contrast the Auditor tries to find the group at each round with the greatest rich subgroup disparity with respect to the Learner's model. We define `violated group size` as the size (as a fraction of the dataset size) of this group, and the `fairness violation` as the `violated group size` times the difference in the statistical rate (FP or FN rate) on the group vs. the whole population.\n", + "\n", + "In the example below we set `max_iterations=500` which is an order of magnitude less than the time to convergence observed in [the rich subgroup fairness empirical paper](https://arxiv.org/abs/1808.08166), but advise that this can be highly dataset dependent. Our target $\\gamma$-disparity is $\\gamma = .005$, our statistical rate is false positive rate or `FP`, and our cost-sensitive classification oracle is linear regression (more on that below).\n" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "iteration: 235, error: 0.4193829787234044, fairness violation: 0.00499619574468085, violated group size: 0.217\n", - "iteration: 236, error: 0.41930084745762713, fairness violation: 0.005002610169491525, violated group size: 0.283\n", - "iteration: 237, error: 0.4192194092827004, fairness violation: 0.005008970464135021, violated group size: 0.283\n", - "iteration: 238, error: 0.41913865546218493, fairness violation: 0.00501527731092437, violated group size: 0.283\n", - "iteration: 239, error: 0.4190585774058578, fairness violation: 0.005021531380753138, violated group size: 0.283\n", - "iteration: 240, error: 0.4189791666666667, fairness violation: 0.005027733333333333, violated group size: 0.217\n", - "iteration: 241, error: 0.41890041493775937, fairness violation: 0.005033883817427385, violated group size: 0.217\n", - "iteration: 242, error: 0.4188223140495868, fairness violation: 0.0050399834710743805, violated group size: 0.217\n", - "iteration: 243, error: 0.4187448559670781, fairness violation: 0.005046032921810699, violated group size: 0.217\n", - "iteration: 244, error: 0.41890983606557386, fairness violation: 0.005032467213114753, violated group size: 0.217\n", - "iteration: 245, error: 0.419073469387755, fairness violation: 0.005019012244897959, violated group size: 0.217\n", - "iteration: 246, error: 0.41923577235772364, fairness violation: 0.005005666666666667, violated group size: 0.283\n", - "iteration: 247, error: 0.4191578947368422, fairness violation: 0.005011757085020243, violated group size: 0.217\n", - "iteration: 248, error: 0.41908064516129034, fairness violation: 0.005017798387096774, violated group size: 0.283\n", - "iteration: 249, error: 0.4192409638554217, fairness violation: 0.005004618473895581, violated group size: 0.217\n", - "iteration: 250, error: 0.4194000000000001, fairness violation: 0.004991544, violated group size: 0.217\n", - "iteration: 251, error: 0.4195577689243028, fairness violation: 0.004978573705179282, violated group size: 0.283\n", - "iteration: 252, error: 0.4197142857142857, fairness violation: 0.004965706349206349, violated group size: 0.217\n", - "iteration: 253, error: 0.4198695652173912, fairness violation: 0.00495294071146245, violated group size: 0.217\n", - "iteration: 254, error: 0.42002362204724414, fairness violation: 0.00494027559055118, violated group size: 0.217\n", - "iteration: 255, error: 0.4201764705882353, fairness violation: 0.004927709803921568, violated group size: 0.217\n", - "iteration: 256, error: 0.420328125, fairness violation: 0.004915242187499999, violated group size: 0.217\n", - "iteration: 257, error: 0.42047859922178993, fairness violation: 0.004902871595330739, violated group size: 0.217\n", - "iteration: 258, error: 0.42062790697674424, fairness violation: 0.004890596899224807, violated group size: 0.217\n", - "iteration: 259, error: 0.4207760617760617, fairness violation: 0.004878416988416988, violated group size: 0.283\n", - "iteration: 260, error: 0.42069615384615383, fairness violation: 0.004884692307692307, violated group size: 0.217\n", - "iteration: 261, error: 0.42061685823754785, fairness violation: 0.004890919540229886, violated group size: 0.283\n", - "iteration: 262, error: 0.42076335877862603, fairness violation: 0.004878877862595419, violated group size: 0.217\n", - "iteration: 263, error: 0.4209087452471483, fairness violation: 0.004866927756653992, violated group size: 0.217\n", - "iteration: 264, error: 0.4208295454545454, fairness violation: 0.004873151515151516, violated group size: 0.283\n", - "iteration: 265, error: 0.4209735849056603, fairness violation: 0.004861313207547171, violated group size: 0.283\n", - "iteration: 266, error: 0.4211165413533834, fairness violation: 0.004849563909774436, violated group size: 0.217\n", - "iteration: 267, error: 0.42125842696629223, fairness violation: 0.0048379026217228475, violated group size: 0.217\n", - "iteration: 268, error: 0.42139925373134324, fairness violation: 0.004826328358208956, violated group size: 0.283\n", - "iteration: 269, error: 0.42131970260223045, fairness violation: 0.0048325873605947955, violated group size: 0.217\n", - "iteration: 270, error: 0.42145925925925937, fairness violation: 0.00482111851851852, violated group size: 0.283\n", - "iteration: 271, error: 0.42159778597785963, fairness violation: 0.004809734317343174, violated group size: 0.217\n", - "iteration: 272, error: 0.42173529411764704, fairness violation: 0.004798433823529413, violated group size: 0.283\n", - "iteration: 273, error: 0.4216556776556777, fairness violation: 0.004804703296703296, violated group size: 0.217\n", - "iteration: 274, error: 0.42157664233576647, fairness violation: 0.00481092700729927, violated group size: 0.217\n", - "iteration: 275, error: 0.42171272727272724, fairness violation: 0.004799745454545455, violated group size: 0.217\n", - "iteration: 276, error: 0.42184782608695653, fairness violation: 0.004788644927536233, violated group size: 0.217\n", - "iteration: 277, error: 0.4219819494584837, fairness violation: 0.004777624548736462, violated group size: 0.217\n", - "iteration: 278, error: 0.42190287769784157, fairness violation: 0.004783856115107913, violated group size: 0.217\n", - "iteration: 279, error: 0.42182437275985674, fairness violation: 0.004790043010752689, violated group size: 0.217\n", - "iteration: 280, error: 0.42174642857142863, fairness violation: 0.004796185714285715, violated group size: 0.283\n", - "iteration: 281, error: 0.42166903914590753, fairness violation: 0.0048022846975088965, violated group size: 0.283\n", - "iteration: 282, error: 0.4218014184397163, fairness violation: 0.00479141134751773, violated group size: 0.217\n", - "iteration: 283, error: 0.42172438162544174, fairness violation: 0.0047974840989399295, violated group size: 0.217\n", - "iteration: 284, error: 0.4216478873239437, fairness violation: 0.004803514084507042, violated group size: 0.217\n", - "iteration: 285, error: 0.42157192982456126, fairness violation: 0.004809501754385964, violated group size: 0.217\n", - "iteration: 286, error: 0.4217027972027972, fairness violation: 0.004798755244755245, violated group size: 0.217\n", - "iteration: 287, error: 0.4218327526132404, fairness violation: 0.004788083623693379, violated group size: 0.283\n", - "iteration: 288, error: 0.4219618055555556, fairness violation: 0.004777486111111113, violated group size: 0.283\n", - "iteration: 289, error: 0.4218858131487888, fairness violation: 0.004783480968858131, violated group size: 0.217\n", - "iteration: 290, error: 0.4218103448275861, fairness violation: 0.004789434482758621, violated group size: 0.217\n", - "iteration: 291, error: 0.42193814432989696, fairness violation: 0.004778941580756014, violated group size: 0.283\n", - "iteration: 292, error: 0.42186301369863016, fairness violation: 0.0047848698630136985, violated group size: 0.217\n", - "iteration: 293, error: 0.4217883959044368, fairness violation: 0.004790757679180888, violated group size: 0.217\n", - "iteration: 294, error: 0.42171428571428576, fairness violation: 0.004796605442176871, violated group size: 0.217\n", - "iteration: 295, error: 0.4216406779661017, fairness violation: 0.004802413559322035, violated group size: 0.217\n", - "iteration: 296, error: 0.4215675675675675, fairness violation: 0.004808182432432432, violated group size: 0.217\n", - "iteration: 297, error: 0.4214949494949495, fairness violation: 0.00481391245791246, violated group size: 0.283\n", - "iteration: 298, error: 0.4214228187919464, fairness violation: 0.0048196040268456385, violated group size: 0.217\n", - "iteration: 299, error: 0.42135117056856186, fairness violation: 0.0048252575250836115, violated group size: 0.217\n", - "iteration: 300, error: 0.42128, fairness violation: 0.004830873333333335, violated group size: 0.283\n", - "iteration: 301, error: 0.42120930232558146, fairness violation: 0.004836451827242525, violated group size: 0.217\n", - "iteration: 302, error: 0.42113907284768215, fairness violation: 0.004841993377483444, violated group size: 0.217\n", - "iteration: 303, error: 0.42106930693069305, fairness violation: 0.004847498349834984, violated group size: 0.217\n", - "iteration: 304, error: 0.4211940789473684, fairness violation: 0.004837263157894738, violated group size: 0.283\n", - "iteration: 305, error: 0.4211245901639345, fairness violation: 0.004842747540983607, violated group size: 0.283\n", - "iteration: 306, error: 0.4210555555555555, fairness violation: 0.004848196078431373, violated group size: 0.217\n", - "iteration: 307, error: 0.42098697068403895, fairness violation: 0.004853609120521175, violated group size: 0.283\n", - "iteration: 308, error: 0.4209188311688312, fairness violation: 0.004858987012987015, violated group size: 0.283\n", - "iteration: 309, error: 0.42085113268608415, fairness violation: 0.00486433009708738, violated group size: 0.283\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": true + }, + "id": "sgydei4GhI5K", + "outputId": "5ec1d33f-dce5-4bee-8f91-3f2901f5a15a" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iteration: 1, error: 0.263, fairness violation: 0.028780000000000007, violated group size: 0.217\n", + "iteration: 2, error: 0.3815, fairness violation: 0.014390000000000003, violated group size: 0.217\n", + "iteration: 3, error: 0.42099999999999993, fairness violation: 0.009593333333333339, violated group size: 0.283\n", + "iteration: 4, error: 0.44075, fairness violation: 0.007195000000000002, violated group size: 0.217\n", + "iteration: 5, error: 0.45260000000000006, fairness violation: 0.005756000000000001, violated group size: 0.217\n", + "iteration: 6, error: 0.4605000000000001, fairness violation: 0.004796666666666668, violated group size: 0.283\n", + "iteration: 7, error: 0.4661428571428572, fairness violation: 0.004111428571428572, violated group size: 0.217\n", + "iteration: 8, error: 0.470375, fairness violation: 0.0035975000000000017, violated group size: 0.217\n", + "iteration: 9, error: 0.4691111111111112, fairness violation: 0.0033906666666666677, violated group size: 0.283\n", + "iteration: 10, error: 0.4681, fairness violation: 0.003225200000000001, violated group size: 0.283\n", + "iteration: 11, error: 0.4672727272727271, fairness violation: 0.0030898181818181836, violated group size: 0.283\n", + "iteration: 12, error: 0.4665833333333333, fairness violation: 0.0029769999999999996, violated group size: 0.217\n", + "iteration: 13, error: 0.466, fairness violation: 0.0028815384615384627, violated group size: 0.283\n", + "iteration: 14, error: 0.4655000000000001, fairness violation: 0.0027997142857142865, violated group size: 0.217\n", + "iteration: 15, error: 0.46506666666666674, fairness violation: 0.002728800000000001, violated group size: 0.217\n", + "iteration: 16, error: 0.4646875, fairness violation: 0.0026667500000000007, violated group size: 0.217\n", + "iteration: 17, error: 0.4643529411764707, fairness violation: 0.002612000000000001, violated group size: 0.283\n", + "iteration: 18, error: 0.46405555555555567, fairness violation: 0.002563333333333334, violated group size: 0.217\n", + "iteration: 19, error: 0.4637894736842106, fairness violation: 0.0025197894736842096, violated group size: 0.217\n", + "iteration: 20, error: 0.46354999999999996, fairness violation: 0.0024806000000000008, violated group size: 0.283\n", + "iteration: 21, error: 0.4633333333333334, fairness violation: 0.0024451428571428584, violated group size: 0.217\n", + "iteration: 22, error: 0.4631363636363638, fairness violation: 0.0024129090909090914, violated group size: 0.283\n", + "iteration: 23, error: 0.46295652173913054, fairness violation: 0.002383478260869566, violated group size: 0.217\n", + "iteration: 24, error: 0.4627916666666667, fairness violation: 0.002356500000000001, violated group size: 0.283\n", + "iteration: 25, error: 0.4626400000000001, fairness violation: 0.0023316800000000018, violated group size: 0.283\n", + "iteration: 26, error: 0.4625000000000001, fairness violation: 0.0023087692307692314, violated group size: 0.217\n", + "iteration: 27, error: 0.4623703703703705, fairness violation: 0.0022875555555555557, violated group size: 0.217\n", + "iteration: 28, error: 0.46224999999999994, fairness violation: 0.0022678571428571426, violated group size: 0.217\n", + "iteration: 29, error: 0.46213793103448264, fairness violation: 0.0022495172413793106, violated group size: 0.217\n", + "iteration: 30, error: 0.46203333333333335, fairness violation: 0.0022324000000000003, violated group size: 0.217\n", + "iteration: 31, error: 0.46193548387096783, fairness violation: 0.0022163870967741935, violated group size: 0.217\n", + "iteration: 32, error: 0.46184375, fairness violation: 0.0022013749999999993, violated group size: 0.217\n", + "iteration: 33, error: 0.459969696969697, fairness violation: 0.0023319393939393944, violated group size: 0.283\n", + "iteration: 34, error: 0.4582058823529412, fairness violation: 0.002454823529411765, violated group size: 0.217\n", + "iteration: 35, error: 0.45654285714285714, fairness violation: 0.0025706857142857144, violated group size: 0.217\n", + "iteration: 36, error: 0.4549722222222221, fairness violation: 0.0026801111111111114, violated group size: 0.283\n", + "iteration: 37, error: 0.4534864864864866, fairness violation: 0.0027836216216216214, violated group size: 0.283\n", + "iteration: 38, error: 0.45207894736842097, fairness violation: 0.0028816842105263162, violated group size: 0.283\n", + "iteration: 39, error: 0.4507435897435898, fairness violation: 0.0029747179487179492, violated group size: 0.217\n", + "iteration: 40, error: 0.44947499999999996, fairness violation: 0.0030631000000000005, violated group size: 0.217\n", + "iteration: 41, error: 0.44826829268292684, fairness violation: 0.0031471707317073175, violated group size: 0.283\n", + "iteration: 42, error: 0.4471190476190476, fairness violation: 0.0032272380952380955, violated group size: 0.217\n", + "iteration: 43, error: 0.44602325581395347, fairness violation: 0.0033035813953488386, violated group size: 0.283\n", + "iteration: 44, error: 0.44497727272727267, fairness violation: 0.0033764545454545453, violated group size: 0.283\n", + "iteration: 45, error: 0.4439777777777778, fairness violation: 0.003446088888888888, violated group size: 0.217\n", + "iteration: 46, error: 0.44302173913043474, fairness violation: 0.0035126956521739122, violated group size: 0.217\n", + "iteration: 47, error: 0.44210638297872346, fairness violation: 0.0035764680851063826, violated group size: 0.217\n", + "iteration: 48, error: 0.4412291666666666, fairness violation: 0.003637583333333332, violated group size: 0.217\n", + "iteration: 49, error: 0.4403877551020407, fairness violation: 0.0036962040816326523, violated group size: 0.217\n", + "iteration: 50, error: 0.4395600000000001, fairness violation: 0.0037524800000000003, violated group size: 0.217\n", + "iteration: 51, error: 0.43876470588235295, fairness violation: 0.0038065490196078425, violated group size: 0.217\n", + "iteration: 52, error: 0.438, fairness violation: 0.003858538461538461, violated group size: 0.283\n", + "iteration: 53, error: 0.4372641509433963, fairness violation: 0.003908566037735848, violated group size: 0.217\n", + "iteration: 54, error: 0.4365555555555556, fairness violation: 0.003956740740740741, violated group size: 0.283\n", + "iteration: 55, error: 0.4358181818181819, fairness violation: 0.004003163636363636, violated group size: 0.217\n", + "iteration: 56, error: 0.4351071428571429, fairness violation: 0.004047928571428571, violated group size: 0.217\n", + "iteration: 57, error: 0.4344736842105262, fairness violation: 0.004091122807017543, violated group size: 0.217\n", + "iteration: 58, error: 0.43381034482758624, fairness violation: 0.004132827586206895, violated group size: 0.217\n", + "iteration: 59, error: 0.4331694915254237, fairness violation: 0.0041731186440677965, violated group size: 0.283\n", + "iteration: 60, error: 0.43254999999999993, fairness violation: 0.004212066666666666, violated group size: 0.217\n", + "iteration: 61, error: 0.4319508196721312, fairness violation: 0.004249737704918031, violated group size: 0.217\n", + "iteration: 62, error: 0.4313709677419356, fairness violation: 0.004286193548387096, violated group size: 0.217\n", + "iteration: 63, error: 0.43080952380952386, fairness violation: 0.004321492063492062, violated group size: 0.283\n", + "iteration: 64, error: 0.430265625, fairness violation: 0.004355687499999999, violated group size: 0.283\n", + "iteration: 65, error: 0.4297384615384615, fairness violation: 0.004388830769230769, violated group size: 0.283\n", + "iteration: 66, error: 0.42922727272727274, fairness violation: 0.004420969696969697, violated group size: 0.217\n", + "iteration: 67, error: 0.42873134328358203, fairness violation: 0.004452149253731343, violated group size: 0.217\n", + "iteration: 68, error: 0.42824999999999996, fairness violation: 0.0044824117647058815, violated group size: 0.283\n", + "iteration: 69, error: 0.42778260869565227, fairness violation: 0.004511797101449274, violated group size: 0.217\n", + "iteration: 70, error: 0.42732857142857145, fairness violation: 0.004540342857142856, violated group size: 0.283\n", + "iteration: 71, error: 0.42688732394366197, fairness violation: 0.004568084507042252, violated group size: 0.217\n", + "iteration: 72, error: 0.4264583333333332, fairness violation: 0.004595055555555555, violated group size: 0.283\n", + "iteration: 73, error: 0.42604109589041106, fairness violation: 0.004621287671232876, violated group size: 0.217\n", + "iteration: 74, error: 0.4256351351351351, fairness violation: 0.0046468108108108095, violated group size: 0.283\n", + "iteration: 75, error: 0.42524, fairness violation: 0.004671653333333331, violated group size: 0.217\n", + "iteration: 76, error: 0.4248552631578947, fairness violation: 0.004695842105263155, violated group size: 0.217\n", + "iteration: 77, error: 0.42448051948051946, fairness violation: 0.004719402597402596, violated group size: 0.217\n", + "iteration: 78, error: 0.4239871794871795, fairness violation: 0.00475905128205128, violated group size: 0.217\n", + "iteration: 79, error: 0.42363291139240505, fairness violation: 0.004781215189873418, violated group size: 0.283\n", + "iteration: 80, error: 0.42328750000000015, fairness violation: 0.004802824999999999, violated group size: 0.283\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iteration: 81, error: 0.4229506172839506, fairness violation: 0.004823901234567901, violated group size: 0.283\n", + "iteration: 82, error: 0.4226219512195123, fairness violation: 0.004844463414634145, violated group size: 0.217\n", + "iteration: 83, error: 0.4221807228915662, fairness violation: 0.004880216867469879, violated group size: 0.217\n", + "iteration: 84, error: 0.42175, fairness violation: 0.004915119047619047, violated group size: 0.217\n", + "iteration: 85, error: 0.4214470588235294, fairness violation: 0.004933882352941174, violated group size: 0.217\n", + "iteration: 86, error: 0.4210348837209302, fairness violation: 0.004967348837209301, violated group size: 0.217\n", + "iteration: 87, error: 0.420632183908046, fairness violation: 0.005000045977011494, violated group size: 0.283\n", + "iteration: 88, error: 0.42035227272727277, fairness violation: 0.0050172045454545434, violated group size: 0.217\n", + "iteration: 89, error: 0.4200786516853933, fairness violation: 0.005033977528089887, violated group size: 0.217\n", + "iteration: 90, error: 0.4198111111111112, fairness violation: 0.005050377777777776, violated group size: 0.283\n", + "iteration: 91, error: 0.4195824175824176, fairness violation: 0.0050664175824175805, violated group size: 0.217\n", + "iteration: 92, error: 0.4193695652173913, fairness violation: 0.005082108695652173, violated group size: 0.217\n", + "iteration: 93, error: 0.41916129032258065, fairness violation: 0.005097462365591397, violated group size: 0.217\n", + "iteration: 94, error: 0.41895744680851066, fairness violation: 0.005112489361702126, violated group size: 0.217\n", + "iteration: 95, error: 0.41875789473684216, fairness violation: 0.005127199999999998, violated group size: 0.217\n", + "iteration: 96, error: 0.41856250000000006, fairness violation: 0.005141604166666665, violated group size: 0.283\n", + "iteration: 97, error: 0.418979381443299, fairness violation: 0.005106494845360823, violated group size: 0.217\n", + "iteration: 98, error: 0.41938775510204085, fairness violation: 0.005072102040816325, violated group size: 0.217\n", + "iteration: 99, error: 0.4197878787878788, fairness violation: 0.0050384040404040376, violated group size: 0.217\n", + "iteration: 100, error: 0.42018000000000005, fairness violation: 0.0050053799999999985, violated group size: 0.217\n", + "iteration: 101, error: 0.42056435643564366, fairness violation: 0.004973009900990098, violated group size: 0.217\n", + "iteration: 102, error: 0.42094117647058826, fairness violation: 0.00494127450980392, violated group size: 0.217\n", + "iteration: 103, error: 0.4213106796116506, fairness violation: 0.004910155339805824, violated group size: 0.217\n", + "iteration: 104, error: 0.4216730769230769, fairness violation: 0.004879634615384614, violated group size: 0.217\n", + "iteration: 105, error: 0.4220285714285715, fairness violation: 0.004849695238095237, violated group size: 0.217\n", + "iteration: 106, error: 0.4223773584905662, fairness violation: 0.004820320754716981, violated group size: 0.283\n", + "iteration: 107, error: 0.42271962616822434, fairness violation: 0.004791495327102803, violated group size: 0.217\n", + "iteration: 108, error: 0.4230555555555556, fairness violation: 0.0047632037037037035, violated group size: 0.217\n", + "iteration: 109, error: 0.4233853211009175, fairness violation: 0.00473543119266055, violated group size: 0.217\n", + "iteration: 110, error: 0.4237090909090908, fairness violation: 0.004708163636363636, violated group size: 0.217\n", + "iteration: 111, error: 0.424027027027027, fairness violation: 0.004681387387387387, violated group size: 0.283\n", + "iteration: 112, error: 0.42433928571428586, fairness violation: 0.004655089285714286, violated group size: 0.283\n", + "iteration: 113, error: 0.4241238938053097, fairness violation: 0.004671504424778761, violated group size: 0.217\n", + "iteration: 114, error: 0.42442982456140343, fairness violation: 0.004645754385964912, violated group size: 0.283\n", + "iteration: 115, error: 0.42473043478260875, fairness violation: 0.0046204521739130425, violated group size: 0.283\n", + "iteration: 116, error: 0.42502586206896553, fairness violation: 0.0045955862068965524, violated group size: 0.283\n", + "iteration: 117, error: 0.42481196581196584, fairness violation: 0.004611948717948717, violated group size: 0.217\n", + "iteration: 118, error: 0.4251016949152542, fairness violation: 0.004587576271186439, violated group size: 0.217\n", + "iteration: 119, error: 0.42489075630252104, fairness violation: 0.004603731092436974, violated group size: 0.217\n", + "iteration: 120, error: 0.4251750000000001, fairness violation: 0.0045798333333333325, violated group size: 0.217\n", + "iteration: 121, error: 0.4249669421487604, fairness violation: 0.004595785123966942, violated group size: 0.283\n", + "iteration: 122, error: 0.4247622950819671, fairness violation: 0.0046114754098360656, violated group size: 0.217\n", + "iteration: 123, error: 0.42456097560975614, fairness violation: 0.00462691056910569, violated group size: 0.217\n", + "iteration: 124, error: 0.42436290322580644, fairness violation: 0.004642096774193548, violated group size: 0.217\n", + "iteration: 125, error: 0.4241680000000001, fairness violation: 0.00465704, violated group size: 0.217\n", + "iteration: 126, error: 0.4239761904761905, fairness violation: 0.004671746031746031, violated group size: 0.217\n", + "iteration: 127, error: 0.42425196850393704, fairness violation: 0.004648629921259842, violated group size: 0.217\n", + "iteration: 128, error: 0.4240625, fairness violation: 0.004663171874999999, violated group size: 0.217\n", + "iteration: 129, error: 0.4238759689922481, fairness violation: 0.004677488372093024, violated group size: 0.283\n", + "iteration: 130, error: 0.42369230769230776, fairness violation: 0.004691584615384614, violated group size: 0.217\n", + "iteration: 131, error: 0.42351145038167937, fairness violation: 0.004705465648854962, violated group size: 0.217\n", + "iteration: 132, error: 0.4233333333333333, fairness violation: 0.004719136363636364, violated group size: 0.283\n", + "iteration: 133, error: 0.423157894736842, fairness violation: 0.0047326015037594, violated group size: 0.217\n", + "iteration: 134, error: 0.4229850746268656, fairness violation: 0.004745865671641791, violated group size: 0.217\n", + "iteration: 135, error: 0.42281481481481475, fairness violation: 0.004758933333333335, violated group size: 0.283\n", + "iteration: 136, error: 0.4226470588235294, fairness violation: 0.004771808823529411, violated group size: 0.217\n", + "iteration: 137, error: 0.42248175182481745, fairness violation: 0.004784496350364964, violated group size: 0.283\n", + "iteration: 138, error: 0.42231884057971014, fairness violation: 0.004797000000000002, violated group size: 0.283\n", + "iteration: 139, error: 0.42215827338129497, fairness violation: 0.004809323741007196, violated group size: 0.283\n", + "iteration: 140, error: 0.42200000000000004, fairness violation: 0.004821471428571429, violated group size: 0.217\n", + "iteration: 141, error: 0.4218439716312057, fairness violation: 0.0048334468085106394, violated group size: 0.217\n", + "iteration: 142, error: 0.42169014084507045, fairness violation: 0.004845253521126761, violated group size: 0.283\n", + "iteration: 143, error: 0.4215384615384616, fairness violation: 0.004856895104895106, violated group size: 0.283\n", + "iteration: 144, error: 0.4213888888888888, fairness violation: 0.004868375, violated group size: 0.217\n", + "iteration: 145, error: 0.42124137931034483, fairness violation: 0.004879696551724138, violated group size: 0.217\n", + "iteration: 146, error: 0.4210958904109589, fairness violation: 0.00489086301369863, violated group size: 0.217\n", + "iteration: 147, error: 0.4209523809523809, fairness violation: 0.004901877551020409, violated group size: 0.217\n", + "iteration: 148, error: 0.42081081081081084, fairness violation: 0.004912743243243244, violated group size: 0.217\n", + "iteration: 149, error: 0.42067114093959734, fairness violation: 0.004923463087248323, violated group size: 0.283\n", + "iteration: 150, error: 0.4205333333333334, fairness violation: 0.004934040000000001, violated group size: 0.217\n", + "iteration: 151, error: 0.4203973509933776, fairness violation: 0.004944476821192053, violated group size: 0.217\n", + "iteration: 152, error: 0.4202631578947368, fairness violation: 0.0049547763157894754, violated group size: 0.283\n", + "iteration: 153, error: 0.4201307189542483, fairness violation: 0.00496494117647059, violated group size: 0.283\n", + "iteration: 154, error: 0.42, fairness violation: 0.004974974025974027, violated group size: 0.283\n", + "iteration: 155, error: 0.4198709677419355, fairness violation: 0.0049848774193548395, violated group size: 0.217\n", + "iteration: 156, error: 0.4197435897435898, fairness violation: 0.004994653846153847, violated group size: 0.217\n", + "iteration: 157, error: 0.4196178343949045, fairness violation: 0.0050043057324840766, violated group size: 0.217\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iteration: 158, error: 0.4194936708860761, fairness violation: 0.005013835443037975, violated group size: 0.217\n", + "iteration: 159, error: 0.41937106918239, fairness violation: 0.005023245283018869, violated group size: 0.283\n", + "iteration: 160, error: 0.41925000000000007, fairness violation: 0.0050325375, violated group size: 0.217\n", + "iteration: 161, error: 0.4191304347826087, fairness violation: 0.005041714285714285, violated group size: 0.217\n", + "iteration: 162, error: 0.41901234567901235, fairness violation: 0.005050777777777778, violated group size: 0.283\n", + "iteration: 163, error: 0.41889570552147243, fairness violation: 0.005059730061349694, violated group size: 0.283\n", + "iteration: 164, error: 0.4191402439024391, fairness violation: 0.005039463414634148, violated group size: 0.283\n", + "iteration: 165, error: 0.41938181818181824, fairness violation: 0.005019442424242424, violated group size: 0.217\n", + "iteration: 166, error: 0.4192650602409639, fairness violation: 0.005028421686746988, violated group size: 0.217\n", + "iteration: 167, error: 0.41950299401197605, fairness violation: 0.005008706586826348, violated group size: 0.217\n", + "iteration: 168, error: 0.41973809523809513, fairness violation: 0.004989226190476189, violated group size: 0.217\n", + "iteration: 169, error: 0.41997041420118336, fairness violation: 0.0049699763313609474, violated group size: 0.283\n", + "iteration: 170, error: 0.4202, fairness violation: 0.00495095294117647, violated group size: 0.283\n", + "iteration: 171, error: 0.4204269005847953, fairness violation: 0.004932152046783625, violated group size: 0.217\n", + "iteration: 172, error: 0.42065116279069764, fairness violation: 0.00491356976744186, violated group size: 0.217\n", + "iteration: 173, error: 0.4208728323699421, fairness violation: 0.004895202312138728, violated group size: 0.217\n", + "iteration: 174, error: 0.42109195402298855, fairness violation: 0.004877045977011494, violated group size: 0.217\n", + "iteration: 175, error: 0.4213085714285715, fairness violation: 0.004859097142857142, violated group size: 0.217\n", + "iteration: 176, error: 0.42152272727272727, fairness violation: 0.0048413522727272715, violated group size: 0.217\n", + "iteration: 177, error: 0.42173446327683617, fairness violation: 0.00482380790960452, violated group size: 0.217\n", + "iteration: 178, error: 0.42161235955056187, fairness violation: 0.004833280898876404, violated group size: 0.217\n", + "iteration: 179, error: 0.42182122905027924, fairness violation: 0.004815977653631285, violated group size: 0.217\n", + "iteration: 180, error: 0.4220277777777778, fairness violation: 0.004798866666666665, violated group size: 0.217\n", + "iteration: 181, error: 0.42223204419889504, fairness violation: 0.004781944751381214, violated group size: 0.283\n", + "iteration: 182, error: 0.4224340659340659, fairness violation: 0.004765208791208789, violated group size: 0.217\n", + "iteration: 183, error: 0.4226338797814208, fairness violation: 0.004748655737704917, violated group size: 0.217\n", + "iteration: 184, error: 0.4228315217391304, fairness violation: 0.004732282608695651, violated group size: 0.217\n", + "iteration: 185, error: 0.4230270270270271, fairness violation: 0.004716086486486487, violated group size: 0.217\n", + "iteration: 186, error: 0.4229032258064515, fairness violation: 0.0047257311827957, violated group size: 0.283\n", + "iteration: 187, error: 0.4230962566844919, fairness violation: 0.0047097433155080205, violated group size: 0.217\n", + "iteration: 188, error: 0.4229734042553191, fairness violation: 0.00471931914893617, violated group size: 0.283\n", + "iteration: 189, error: 0.4231640211640213, fairness violation: 0.004703534391534391, violated group size: 0.217\n", + "iteration: 190, error: 0.42304210526315794, fairness violation: 0.004713042105263158, violated group size: 0.217\n", + "iteration: 191, error: 0.4232303664921467, fairness violation: 0.004697455497382198, violated group size: 0.217\n", + "iteration: 192, error: 0.42310937499999995, fairness violation: 0.004706895833333333, violated group size: 0.217\n", + "iteration: 193, error: 0.42329533678756476, fairness violation: 0.004691502590673575, violated group size: 0.283\n", + "iteration: 194, error: 0.4231752577319588, fairness violation: 0.004700876288659792, violated group size: 0.217\n", + "iteration: 195, error: 0.4230564102564103, fairness violation: 0.004710153846153845, violated group size: 0.217\n", + "iteration: 196, error: 0.4229387755102041, fairness violation: 0.004719336734693878, violated group size: 0.283\n", + "iteration: 197, error: 0.4228223350253807, fairness violation: 0.004728426395939086, violated group size: 0.283\n", + "iteration: 198, error: 0.4227070707070707, fairness violation: 0.004737424242424242, violated group size: 0.217\n", + "iteration: 199, error: 0.4228894472361809, fairness violation: 0.004722341708542713, violated group size: 0.217\n", + "iteration: 200, error: 0.42277499999999996, fairness violation: 0.004731279999999999, violated group size: 0.217\n", + "iteration: 201, error: 0.4226616915422886, fairness violation: 0.004740129353233829, violated group size: 0.217\n", + "iteration: 202, error: 0.4225495049504951, fairness violation: 0.00474889108910891, violated group size: 0.217\n", + "iteration: 203, error: 0.42243842364532025, fairness violation: 0.004757566502463053, violated group size: 0.283\n", + "iteration: 204, error: 0.42232843137254905, fairness violation: 0.004766156862745097, violated group size: 0.283\n", + "iteration: 205, error: 0.422219512195122, fairness violation: 0.004774663414634145, violated group size: 0.217\n", + "iteration: 206, error: 0.422111650485437, fairness violation: 0.004783087378640775, violated group size: 0.217\n", + "iteration: 207, error: 0.4220048309178744, fairness violation: 0.00479142995169082, violated group size: 0.217\n", + "iteration: 208, error: 0.4218990384615385, fairness violation: 0.004799692307692306, violated group size: 0.217\n", + "iteration: 209, error: 0.42179425837320567, fairness violation: 0.004807875598086124, violated group size: 0.217\n", + "iteration: 210, error: 0.4216904761904762, fairness violation: 0.004815980952380952, violated group size: 0.217\n", + "iteration: 211, error: 0.42158767772511846, fairness violation: 0.0048240094786729856, violated group size: 0.217\n", + "iteration: 212, error: 0.42148584905660386, fairness violation: 0.004831962264150944, violated group size: 0.217\n", + "iteration: 213, error: 0.4213849765258215, fairness violation: 0.004839840375586855, violated group size: 0.283\n", + "iteration: 214, error: 0.421285046728972, fairness violation: 0.0048476448598130835, violated group size: 0.217\n", + "iteration: 215, error: 0.42118604651162794, fairness violation: 0.004855376744186045, violated group size: 0.217\n", + "iteration: 216, error: 0.4210879629629629, fairness violation: 0.004863037037037037, violated group size: 0.283\n", + "iteration: 217, error: 0.42099078341013824, fairness violation: 0.004870626728110601, violated group size: 0.283\n", + "iteration: 218, error: 0.42089449541284396, fairness violation: 0.004878146788990825, violated group size: 0.217\n", + "iteration: 219, error: 0.42079908675799094, fairness violation: 0.004885598173515983, violated group size: 0.283\n", + "iteration: 220, error: 0.4207045454545455, fairness violation: 0.004892981818181818, violated group size: 0.283\n", + "iteration: 221, error: 0.4206108597285068, fairness violation: 0.004900298642533936, violated group size: 0.283\n", + "iteration: 222, error: 0.4205180180180179, fairness violation: 0.004907549549549549, violated group size: 0.217\n", + "iteration: 223, error: 0.4204260089686098, fairness violation: 0.004914735426008968, violated group size: 0.217\n", + "iteration: 224, error: 0.4203348214285714, fairness violation: 0.004921857142857143, violated group size: 0.283\n", + "iteration: 225, error: 0.4202444444444444, fairness violation: 0.004928915555555555, violated group size: 0.217\n", + "iteration: 226, error: 0.42015486725663725, fairness violation: 0.004935911504424777, violated group size: 0.217\n", + "iteration: 227, error: 0.4200660792951542, fairness violation: 0.004942845814977973, violated group size: 0.217\n", + "iteration: 228, error: 0.4199780701754386, fairness violation: 0.004949719298245614, violated group size: 0.217\n", + "iteration: 229, error: 0.4198908296943231, fairness violation: 0.004956532751091703, violated group size: 0.283\n", + "iteration: 230, error: 0.419804347826087, fairness violation: 0.004963286956521739, violated group size: 0.283\n", + "iteration: 231, error: 0.4197186147186147, fairness violation: 0.004969982683982686, violated group size: 0.283\n", + "iteration: 232, error: 0.4196336206896552, fairness violation: 0.004976620689655175, violated group size: 0.283\n", + "iteration: 233, error: 0.419549356223176, fairness violation: 0.004983201716738197, violated group size: 0.283\n", + "iteration: 234, error: 0.419465811965812, fairness violation: 0.0049897264957264945, violated group size: 0.217\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iteration: 235, error: 0.4193829787234044, fairness violation: 0.00499619574468085, violated group size: 0.217\n", + "iteration: 236, error: 0.41930084745762713, fairness violation: 0.005002610169491525, violated group size: 0.283\n", + "iteration: 237, error: 0.4192194092827004, fairness violation: 0.005008970464135021, violated group size: 0.283\n", + "iteration: 238, error: 0.41913865546218493, fairness violation: 0.00501527731092437, violated group size: 0.283\n", + "iteration: 239, error: 0.4190585774058578, fairness violation: 0.005021531380753138, violated group size: 0.283\n", + "iteration: 240, error: 0.4189791666666667, fairness violation: 0.005027733333333333, violated group size: 0.217\n", + "iteration: 241, error: 0.41890041493775937, fairness violation: 0.005033883817427385, violated group size: 0.217\n", + "iteration: 242, error: 0.4188223140495868, fairness violation: 0.0050399834710743805, violated group size: 0.217\n", + "iteration: 243, error: 0.4187448559670781, fairness violation: 0.005046032921810699, violated group size: 0.217\n", + "iteration: 244, error: 0.41890983606557386, fairness violation: 0.005032467213114753, violated group size: 0.217\n", + "iteration: 245, error: 0.419073469387755, fairness violation: 0.005019012244897959, violated group size: 0.217\n", + "iteration: 246, error: 0.41923577235772364, fairness violation: 0.005005666666666667, violated group size: 0.283\n", + "iteration: 247, error: 0.4191578947368422, fairness violation: 0.005011757085020243, violated group size: 0.217\n", + "iteration: 248, error: 0.41908064516129034, fairness violation: 0.005017798387096774, violated group size: 0.283\n", + "iteration: 249, error: 0.4192409638554217, fairness violation: 0.005004618473895581, violated group size: 0.217\n", + "iteration: 250, error: 0.4194000000000001, fairness violation: 0.004991544, violated group size: 0.217\n", + "iteration: 251, error: 0.4195577689243028, fairness violation: 0.004978573705179282, violated group size: 0.283\n", + "iteration: 252, error: 0.4197142857142857, fairness violation: 0.004965706349206349, violated group size: 0.217\n", + "iteration: 253, error: 0.4198695652173912, fairness violation: 0.00495294071146245, violated group size: 0.217\n", + "iteration: 254, error: 0.42002362204724414, fairness violation: 0.00494027559055118, violated group size: 0.217\n", + "iteration: 255, error: 0.4201764705882353, fairness violation: 0.004927709803921568, violated group size: 0.217\n", + "iteration: 256, error: 0.420328125, fairness violation: 0.004915242187499999, violated group size: 0.217\n", + "iteration: 257, error: 0.42047859922178993, fairness violation: 0.004902871595330739, violated group size: 0.217\n", + "iteration: 258, error: 0.42062790697674424, fairness violation: 0.004890596899224807, violated group size: 0.217\n", + "iteration: 259, error: 0.4207760617760617, fairness violation: 0.004878416988416988, violated group size: 0.283\n", + "iteration: 260, error: 0.42069615384615383, fairness violation: 0.004884692307692307, violated group size: 0.217\n", + "iteration: 261, error: 0.42061685823754785, fairness violation: 0.004890919540229886, violated group size: 0.283\n", + "iteration: 262, error: 0.42076335877862603, fairness violation: 0.004878877862595419, violated group size: 0.217\n", + "iteration: 263, error: 0.4209087452471483, fairness violation: 0.004866927756653992, violated group size: 0.217\n", + "iteration: 264, error: 0.4208295454545454, fairness violation: 0.004873151515151516, violated group size: 0.283\n", + "iteration: 265, error: 0.4209735849056603, fairness violation: 0.004861313207547171, violated group size: 0.283\n", + "iteration: 266, error: 0.4211165413533834, fairness violation: 0.004849563909774436, violated group size: 0.217\n", + "iteration: 267, error: 0.42125842696629223, fairness violation: 0.0048379026217228475, violated group size: 0.217\n", + "iteration: 268, error: 0.42139925373134324, fairness violation: 0.004826328358208956, violated group size: 0.283\n", + "iteration: 269, error: 0.42131970260223045, fairness violation: 0.0048325873605947955, violated group size: 0.217\n", + "iteration: 270, error: 0.42145925925925937, fairness violation: 0.00482111851851852, violated group size: 0.283\n", + "iteration: 271, error: 0.42159778597785963, fairness violation: 0.004809734317343174, violated group size: 0.217\n", + "iteration: 272, error: 0.42173529411764704, fairness violation: 0.004798433823529413, violated group size: 0.283\n", + "iteration: 273, error: 0.4216556776556777, fairness violation: 0.004804703296703296, violated group size: 0.217\n", + "iteration: 274, error: 0.42157664233576647, fairness violation: 0.00481092700729927, violated group size: 0.217\n", + "iteration: 275, error: 0.42171272727272724, fairness violation: 0.004799745454545455, violated group size: 0.217\n", + "iteration: 276, error: 0.42184782608695653, fairness violation: 0.004788644927536233, violated group size: 0.217\n", + "iteration: 277, error: 0.4219819494584837, fairness violation: 0.004777624548736462, violated group size: 0.217\n", + "iteration: 278, error: 0.42190287769784157, fairness violation: 0.004783856115107913, violated group size: 0.217\n", + "iteration: 279, error: 0.42182437275985674, fairness violation: 0.004790043010752689, violated group size: 0.217\n", + "iteration: 280, error: 0.42174642857142863, fairness violation: 0.004796185714285715, violated group size: 0.283\n", + "iteration: 281, error: 0.42166903914590753, fairness violation: 0.0048022846975088965, violated group size: 0.283\n", + "iteration: 282, error: 0.4218014184397163, fairness violation: 0.00479141134751773, violated group size: 0.217\n", + "iteration: 283, error: 0.42172438162544174, fairness violation: 0.0047974840989399295, violated group size: 0.217\n", + "iteration: 284, error: 0.4216478873239437, fairness violation: 0.004803514084507042, violated group size: 0.217\n", + "iteration: 285, error: 0.42157192982456126, fairness violation: 0.004809501754385964, violated group size: 0.217\n", + "iteration: 286, error: 0.4217027972027972, fairness violation: 0.004798755244755245, violated group size: 0.217\n", + "iteration: 287, error: 0.4218327526132404, fairness violation: 0.004788083623693379, violated group size: 0.283\n", + "iteration: 288, error: 0.4219618055555556, fairness violation: 0.004777486111111113, violated group size: 0.283\n", + "iteration: 289, error: 0.4218858131487888, fairness violation: 0.004783480968858131, violated group size: 0.217\n", + "iteration: 290, error: 0.4218103448275861, fairness violation: 0.004789434482758621, violated group size: 0.217\n", + "iteration: 291, error: 0.42193814432989696, fairness violation: 0.004778941580756014, violated group size: 0.283\n", + "iteration: 292, error: 0.42186301369863016, fairness violation: 0.0047848698630136985, violated group size: 0.217\n", + "iteration: 293, error: 0.4217883959044368, fairness violation: 0.004790757679180888, violated group size: 0.217\n", + "iteration: 294, error: 0.42171428571428576, fairness violation: 0.004796605442176871, violated group size: 0.217\n", + "iteration: 295, error: 0.4216406779661017, fairness violation: 0.004802413559322035, violated group size: 0.217\n", + "iteration: 296, error: 0.4215675675675675, fairness violation: 0.004808182432432432, violated group size: 0.217\n", + "iteration: 297, error: 0.4214949494949495, fairness violation: 0.00481391245791246, violated group size: 0.283\n", + "iteration: 298, error: 0.4214228187919464, fairness violation: 0.0048196040268456385, violated group size: 0.217\n", + "iteration: 299, error: 0.42135117056856186, fairness violation: 0.0048252575250836115, violated group size: 0.217\n", + "iteration: 300, error: 0.42128, fairness violation: 0.004830873333333335, violated group size: 0.283\n", + "iteration: 301, error: 0.42120930232558146, fairness violation: 0.004836451827242525, violated group size: 0.217\n", + "iteration: 302, error: 0.42113907284768215, fairness violation: 0.004841993377483444, violated group size: 0.217\n", + "iteration: 303, error: 0.42106930693069305, fairness violation: 0.004847498349834984, violated group size: 0.217\n", + "iteration: 304, error: 0.4211940789473684, fairness violation: 0.004837263157894738, violated group size: 0.283\n", + "iteration: 305, error: 0.4211245901639345, fairness violation: 0.004842747540983607, violated group size: 0.283\n", + "iteration: 306, error: 0.4210555555555555, fairness violation: 0.004848196078431373, violated group size: 0.217\n", + "iteration: 307, error: 0.42098697068403895, fairness violation: 0.004853609120521175, violated group size: 0.283\n", + "iteration: 308, error: 0.4209188311688312, fairness violation: 0.004858987012987015, violated group size: 0.283\n", + "iteration: 309, error: 0.42085113268608415, fairness violation: 0.00486433009708738, violated group size: 0.283\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iteration: 310, error: 0.4207838709677419, fairness violation: 0.00486963870967742, violated group size: 0.283\n", + "iteration: 311, error: 0.420717041800643, fairness violation: 0.004874913183279744, violated group size: 0.217\n", + "iteration: 312, error: 0.42065064102564104, fairness violation: 0.0048801538461538466, violated group size: 0.217\n", + "iteration: 313, error: 0.42058466453674115, fairness violation: 0.0048853610223642185, violated group size: 0.217\n", + "iteration: 314, error: 0.42051910828025474, fairness violation: 0.004890535031847135, violated group size: 0.217\n", + "iteration: 315, error: 0.4204539682539683, fairness violation: 0.004895676190476191, violated group size: 0.217\n", + "iteration: 316, error: 0.4203892405063292, fairness violation: 0.004900784810126583, violated group size: 0.217\n", + "iteration: 317, error: 0.4203249211356468, fairness violation: 0.004905861198738172, violated group size: 0.283\n", + "iteration: 318, error: 0.4202610062893082, fairness violation: 0.00491090566037736, violated group size: 0.217\n", + "iteration: 319, error: 0.4201974921630094, fairness violation: 0.004915918495297806, violated group size: 0.217\n", + "iteration: 320, error: 0.4201343749999999, fairness violation: 0.004920900000000002, violated group size: 0.217\n", + "iteration: 321, error: 0.4200716510903427, fairness violation: 0.004925850467289721, violated group size: 0.217\n", + "iteration: 322, error: 0.4200093167701862, fairness violation: 0.0049307701863354056, violated group size: 0.283\n", + "iteration: 323, error: 0.4199473684210526, fairness violation: 0.00493565944272446, violated group size: 0.283\n", + "iteration: 324, error: 0.41988580246913576, fairness violation: 0.004940518518518519, violated group size: 0.217\n", + "iteration: 325, error: 0.41982461538461535, fairness violation: 0.004945347692307694, violated group size: 0.217\n", + "iteration: 326, error: 0.4197638036809816, fairness violation: 0.004950147239263805, violated group size: 0.283\n", + "iteration: 327, error: 0.4197033639143731, fairness violation: 0.004954917431192661, violated group size: 0.283\n", + "iteration: 328, error: 0.4196432926829268, fairness violation: 0.004959658536585366, violated group size: 0.217\n", + "iteration: 329, error: 0.41958358662613987, fairness violation: 0.004964370820668694, violated group size: 0.283\n", + "iteration: 330, error: 0.41952424242424236, fairness violation: 0.004969054545454545, violated group size: 0.217\n", + "iteration: 331, error: 0.41946525679758306, fairness violation: 0.00497370996978852, violated group size: 0.217\n", + "iteration: 332, error: 0.41940662650602417, fairness violation: 0.004978337349397591, violated group size: 0.217\n", + "iteration: 333, error: 0.4193483483483482, fairness violation: 0.004982936936936937, violated group size: 0.217\n", + "iteration: 334, error: 0.4192904191616766, fairness violation: 0.004987508982035928, violated group size: 0.217\n", + "iteration: 335, error: 0.4192328358208956, fairness violation: 0.004992053731343284, violated group size: 0.283\n", + "iteration: 336, error: 0.4191755952380953, fairness violation: 0.00499657142857143, violated group size: 0.283\n", + "iteration: 337, error: 0.4191186943620178, fairness violation: 0.0050010623145400595, violated group size: 0.217\n", + "iteration: 338, error: 0.41906213017751476, fairness violation: 0.005005526627218935, violated group size: 0.217\n", + "iteration: 339, error: 0.4190058997050148, fairness violation: 0.005009964601769911, violated group size: 0.217\n", + "iteration: 340, error: 0.41894999999999993, fairness violation: 0.005014376470588236, violated group size: 0.283\n", + "iteration: 341, error: 0.41889442815249267, fairness violation: 0.005018762463343108, violated group size: 0.217\n", + "iteration: 342, error: 0.41883918128654973, fairness violation: 0.005023122807017544, violated group size: 0.217\n", + "iteration: 343, error: 0.41878425655976675, fairness violation: 0.0050274577259475225, violated group size: 0.283\n", + "iteration: 344, error: 0.4187296511627907, fairness violation: 0.005031767441860465, violated group size: 0.217\n", + "iteration: 345, error: 0.4186753623188406, fairness violation: 0.005036052173913045, violated group size: 0.283\n", + "iteration: 346, error: 0.4186213872832369, fairness violation: 0.005040312138728323, violated group size: 0.217\n", + "iteration: 347, error: 0.41856772334293946, fairness violation: 0.005044547550432276, violated group size: 0.283\n", + "iteration: 348, error: 0.41851436781609197, fairness violation: 0.005048758620689655, violated group size: 0.217\n", + "iteration: 349, error: 0.418461318051576, fairness violation: 0.005052945558739255, violated group size: 0.283\n", + "iteration: 350, error: 0.4185771428571428, fairness violation: 0.005043468571428572, violated group size: 0.283\n", + "iteration: 351, error: 0.4186923076923077, fairness violation: 0.005034045584045584, violated group size: 0.217\n", + "iteration: 352, error: 0.4188068181818182, fairness violation: 0.005024676136363637, violated group size: 0.283\n", + "iteration: 353, error: 0.4189206798866855, fairness violation: 0.005015359773371105, violated group size: 0.217\n", + "iteration: 354, error: 0.41903389830508475, fairness violation: 0.005006096045197741, violated group size: 0.283\n", + "iteration: 355, error: 0.41914647887323936, fairness violation: 0.004996884507042254, violated group size: 0.283\n", + "iteration: 356, error: 0.4192584269662922, fairness violation: 0.004987724719101122, violated group size: 0.217\n", + "iteration: 357, error: 0.41936974789915965, fairness violation: 0.0049786162464986, violated group size: 0.217\n", + "iteration: 358, error: 0.41948044692737424, fairness violation: 0.004969558659217878, violated group size: 0.217\n", + "iteration: 359, error: 0.41959052924791085, fairness violation: 0.004960551532033426, violated group size: 0.283\n", + "iteration: 360, error: 0.4195361111111111, fairness violation: 0.004964855555555557, violated group size: 0.283\n", + "iteration: 361, error: 0.4196454293628808, fairness violation: 0.004955911357340723, violated group size: 0.283\n", + "iteration: 362, error: 0.4197541436464089, fairness violation: 0.004947016574585636, violated group size: 0.217\n", + "iteration: 363, error: 0.4198622589531681, fairness violation: 0.004938170798898072, violated group size: 0.283\n", + "iteration: 364, error: 0.41996978021978026, fairness violation: 0.004929373626373626, violated group size: 0.217\n", + "iteration: 365, error: 0.42007671232876714, fairness violation: 0.004920624657534246, violated group size: 0.217\n", + "iteration: 366, error: 0.42018306010928963, fairness violation: 0.004911923497267759, violated group size: 0.217\n", + "iteration: 367, error: 0.4202888283378746, fairness violation: 0.004903269754768393, violated group size: 0.217\n", + "iteration: 368, error: 0.42039402173913043, fairness violation: 0.00489466304347826, violated group size: 0.217\n", + "iteration: 369, error: 0.4204986449864499, fairness violation: 0.00488610298102981, violated group size: 0.283\n", + "iteration: 370, error: 0.4206027027027027, fairness violation: 0.0048775891891891885, violated group size: 0.217\n", + "iteration: 371, error: 0.4207061994609164, fairness violation: 0.004869121293800538, violated group size: 0.217\n", + "iteration: 372, error: 0.4208091397849463, fairness violation: 0.004860698924731182, violated group size: 0.217\n", + "iteration: 373, error: 0.420911528150134, fairness violation: 0.004852321715817694, violated group size: 0.217\n", + "iteration: 374, error: 0.420855614973262, fairness violation: 0.004856754010695187, violated group size: 0.217\n", + "iteration: 375, error: 0.4209573333333334, fairness violation: 0.004848432, violated group size: 0.217\n", + "iteration: 376, error: 0.42105851063829786, fairness violation: 0.004840154255319148, violated group size: 0.217\n", + "iteration: 377, error: 0.4211591511936339, fairness violation: 0.004831920424403182, violated group size: 0.217\n", + "iteration: 378, error: 0.4211031746031746, fairness violation: 0.004836359788359788, violated group size: 0.217\n", + "iteration: 379, error: 0.42120316622691284, fairness violation: 0.004828179419525066, violated group size: 0.217\n", + "iteration: 380, error: 0.42130263157894726, fairness violation: 0.004820042105263157, violated group size: 0.217\n", + "iteration: 381, error: 0.42124671916010503, fairness violation: 0.004824477690288715, violated group size: 0.283\n", + "iteration: 382, error: 0.42134554973821986, fairness violation: 0.004816392670157068, violated group size: 0.283\n", + "iteration: 383, error: 0.42144386422976504, fairness violation: 0.004808349869451696, violated group size: 0.217\n", + "iteration: 384, error: 0.42154166666666676, fairness violation: 0.004800348958333333, violated group size: 0.283\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iteration: 385, error: 0.4214857142857143, fairness violation: 0.00480478961038961, violated group size: 0.217\n", + "iteration: 386, error: 0.4215829015544041, fairness violation: 0.0047968393782383415, violated group size: 0.217\n", + "iteration: 387, error: 0.42152713178294576, fairness violation: 0.004801266149870801, violated group size: 0.283\n", + "iteration: 388, error: 0.4216237113402061, fairness violation: 0.004793365979381444, violated group size: 0.283\n", + "iteration: 389, error: 0.42171979434447304, fairness violation: 0.004785506426735219, violated group size: 0.217\n", + "iteration: 390, error: 0.4218153846153847, fairness violation: 0.00477768717948718, violated group size: 0.217\n", + "iteration: 391, error: 0.4219104859335038, fairness violation: 0.004769907928388747, violated group size: 0.217\n", + "iteration: 392, error: 0.4218545918367348, fairness violation: 0.00477434693877551, violated group size: 0.217\n", + "iteration: 393, error: 0.42194910941475816, fairness violation: 0.004766615776081424, violated group size: 0.217\n", + "iteration: 394, error: 0.42204314720812186, fairness violation: 0.004758923857868021, violated group size: 0.283\n", + "iteration: 395, error: 0.4221367088607595, fairness violation: 0.00475127088607595, violated group size: 0.217\n", + "iteration: 396, error: 0.42208080808080806, fairness violation: 0.004755712121212122, violated group size: 0.283\n", + "iteration: 397, error: 0.42202518891687657, fairness violation: 0.004760130982367758, violated group size: 0.217\n", + "iteration: 398, error: 0.42196984924623115, fairness violation: 0.004764527638190955, violated group size: 0.283\n", + "iteration: 399, error: 0.42191478696741846, fairness violation: 0.004768902255639098, violated group size: 0.217\n", + "iteration: 400, error: 0.42186, fairness violation: 0.004773255, violated group size: 0.217\n", + "iteration: 401, error: 0.4218054862842893, fairness violation: 0.004777586034912718, violated group size: 0.283\n", + "iteration: 402, error: 0.4217512437810945, fairness violation: 0.00478189552238806, violated group size: 0.217\n", + "iteration: 403, error: 0.4218436724565757, fairness violation: 0.0047743374689826305, violated group size: 0.283\n", + "iteration: 404, error: 0.42178960396039605, fairness violation: 0.004778633663366336, violated group size: 0.217\n", + "iteration: 405, error: 0.4217358024691357, fairness violation: 0.004782908641975308, violated group size: 0.217\n", + "iteration: 406, error: 0.4216822660098523, fairness violation: 0.004787162561576355, violated group size: 0.217\n", + "iteration: 407, error: 0.4216289926289926, fairness violation: 0.004791395577395577, violated group size: 0.283\n", + "iteration: 408, error: 0.421575980392157, fairness violation: 0.004795607843137254, violated group size: 0.217\n", + "iteration: 409, error: 0.4215232273838631, fairness violation: 0.004799799511002444, violated group size: 0.217\n", + "iteration: 410, error: 0.42147073170731714, fairness violation: 0.004803970731707317, violated group size: 0.283\n", + "iteration: 411, error: 0.4214184914841849, fairness violation: 0.0048081216545012165, violated group size: 0.217\n", + "iteration: 412, error: 0.4213665048543689, fairness violation: 0.004812252427184466, violated group size: 0.283\n", + "iteration: 413, error: 0.42131476997578693, fairness violation: 0.004816363196125908, violated group size: 0.217\n", + "iteration: 414, error: 0.42126328502415455, fairness violation: 0.004820454106280194, violated group size: 0.217\n", + "iteration: 415, error: 0.4212120481927711, fairness violation: 0.004824525301204821, violated group size: 0.283\n", + "iteration: 416, error: 0.42116105769230766, fairness violation: 0.004828576923076923, violated group size: 0.217\n", + "iteration: 417, error: 0.4211103117505996, fairness violation: 0.004832609112709832, violated group size: 0.283\n", + "iteration: 418, error: 0.42105980861244025, fairness violation: 0.004836622009569378, violated group size: 0.283\n", + "iteration: 419, error: 0.42100954653937933, fairness violation: 0.004840615751789977, violated group size: 0.217\n", + "iteration: 420, error: 0.42110000000000003, fairness violation: 0.0048332238095238084, violated group size: 0.217\n", + "iteration: 421, error: 0.42104988123515436, fairness violation: 0.004837206650831354, violated group size: 0.217\n", + "iteration: 422, error: 0.42100000000000004, fairness violation: 0.004841170616113744, violated group size: 0.217\n", + "iteration: 423, error: 0.420950354609929, fairness violation: 0.004845115839243499, violated group size: 0.217\n", + "iteration: 424, error: 0.42104009433962253, fairness violation: 0.004837783018867924, violated group size: 0.217\n", + "iteration: 425, error: 0.4209905882352941, fairness violation: 0.004841717647058822, violated group size: 0.217\n", + "iteration: 426, error: 0.42094131455399053, fairness violation: 0.004845633802816901, violated group size: 0.217\n", + "iteration: 427, error: 0.42089227166276344, fairness violation: 0.004849531615925057, violated group size: 0.217\n", + "iteration: 428, error: 0.4208434579439252, fairness violation: 0.004853411214953271, violated group size: 0.217\n", + "iteration: 429, error: 0.4207948717948717, fairness violation: 0.0048572727272727274, violated group size: 0.283\n", + "iteration: 430, error: 0.42074651162790694, fairness violation: 0.004861116279069767, violated group size: 0.217\n", + "iteration: 431, error: 0.4206983758700697, fairness violation: 0.004864941995359629, violated group size: 0.283\n", + "iteration: 432, error: 0.420650462962963, fairness violation: 0.00486875, violated group size: 0.217\n", + "iteration: 433, error: 0.42060277136258656, fairness violation: 0.0048725404157043874, violated group size: 0.217\n", + "iteration: 434, error: 0.42055529953917054, fairness violation: 0.0048763133640553, violated group size: 0.283\n", + "iteration: 435, error: 0.42050804597701147, fairness violation: 0.004880068965517241, violated group size: 0.217\n", + "iteration: 436, error: 0.4204610091743119, fairness violation: 0.004883807339449542, violated group size: 0.217\n", + "iteration: 437, error: 0.4204141876430207, fairness violation: 0.004887528604118992, violated group size: 0.217\n", + "iteration: 438, error: 0.42036757990867574, fairness violation: 0.004891232876712329, violated group size: 0.217\n", + "iteration: 439, error: 0.4203211845102506, fairness violation: 0.0048949202733485206, violated group size: 0.283\n", + "iteration: 440, error: 0.42027499999999995, fairness violation: 0.00489859090909091, violated group size: 0.283\n", + "iteration: 441, error: 0.42022902494331066, fairness violation: 0.004902244897959184, violated group size: 0.283\n", + "iteration: 442, error: 0.42018325791855204, fairness violation: 0.004905882352941177, violated group size: 0.217\n", + "iteration: 443, error: 0.42013769751693003, fairness violation: 0.004909503386004516, violated group size: 0.283\n", + "iteration: 444, error: 0.42009234234234244, fairness violation: 0.004913108108108108, violated group size: 0.217\n", + "iteration: 445, error: 0.420047191011236, fairness violation: 0.004916696629213483, violated group size: 0.217\n", + "iteration: 446, error: 0.42000224215246645, fairness violation: 0.004920269058295964, violated group size: 0.217\n", + "iteration: 447, error: 0.4199574944071588, fairness violation: 0.004923825503355704, violated group size: 0.217\n", + "iteration: 448, error: 0.41991294642857147, fairness violation: 0.004927366071428571, violated group size: 0.217\n", + "iteration: 449, error: 0.41986859688195993, fairness violation: 0.004930890868596881, violated group size: 0.217\n", + "iteration: 450, error: 0.41982444444444433, fairness violation: 0.004934399999999999, violated group size: 0.217\n", + "iteration: 451, error: 0.41978048780487814, fairness violation: 0.004937893569844789, violated group size: 0.217\n", + "iteration: 452, error: 0.41973672566371684, fairness violation: 0.004941371681415928, violated group size: 0.217\n", + "iteration: 453, error: 0.41969315673289187, fairness violation: 0.0049448344370860925, violated group size: 0.217\n", + "iteration: 454, error: 0.41964977973568285, fairness violation: 0.004948281938325991, violated group size: 0.283\n", + "iteration: 455, error: 0.41960659340659345, fairness violation: 0.004951714285714286, violated group size: 0.283\n", + "iteration: 456, error: 0.41956359649122804, fairness violation: 0.004955131578947367, violated group size: 0.217\n", + "iteration: 457, error: 0.41952078774617063, fairness violation: 0.0049585339168490145, violated group size: 0.217\n", + "iteration: 458, error: 0.41947816593886456, fairness violation: 0.004961921397379911, violated group size: 0.217\n", + "iteration: 459, error: 0.4194357298474945, fairness violation: 0.00496529411764706, violated group size: 0.283\n", + "iteration: 460, error: 0.4193934782608696, fairness violation: 0.004968652173913044, violated group size: 0.283\n", + "iteration: 461, error: 0.41935140997830805, fairness violation: 0.004971995661605205, violated group size: 0.283\n", + "iteration: 462, error: 0.41930952380952374, fairness violation: 0.0049753246753246735, violated group size: 0.217\n", + "iteration: 463, error: 0.41926781857451406, fairness violation: 0.004978639308855291, violated group size: 0.217\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iteration: 464, error: 0.41922629310344817, fairness violation: 0.004981939655172413, violated group size: 0.217\n", + "iteration: 465, error: 0.41918494623655916, fairness violation: 0.004985225806451612, violated group size: 0.217\n", + "iteration: 466, error: 0.4191437768240344, fairness violation: 0.004988497854077254, violated group size: 0.283\n", + "iteration: 467, error: 0.41910278372591, fairness violation: 0.004991755888650964, violated group size: 0.283\n", + "iteration: 468, error: 0.4190619658119658, fairness violation: 0.004994999999999998, violated group size: 0.217\n", + "iteration: 469, error: 0.4190213219616205, fairness violation: 0.0049982302771855, violated group size: 0.217\n", + "iteration: 470, error: 0.41898085106382993, fairness violation: 0.005001446808510636, violated group size: 0.283\n", + "iteration: 471, error: 0.41894055201698516, fairness violation: 0.005004649681528661, violated group size: 0.217\n", + "iteration: 472, error: 0.41890042372881364, fairness violation: 0.005007838983050847, violated group size: 0.283\n", + "iteration: 473, error: 0.4188604651162791, fairness violation: 0.005011014799154333, violated group size: 0.217\n", + "iteration: 474, error: 0.41882067510548526, fairness violation: 0.005014177215189871, violated group size: 0.217\n", + "iteration: 475, error: 0.41878105263157905, fairness violation: 0.0050173263157894735, violated group size: 0.283\n", + "iteration: 476, error: 0.41874159663865557, fairness violation: 0.0050204621848739485, violated group size: 0.217\n", + "iteration: 477, error: 0.4188259958071279, fairness violation: 0.005013576519916141, violated group size: 0.217\n", + "iteration: 478, error: 0.41878661087866115, fairness violation: 0.005016707112970709, violated group size: 0.217\n", + "iteration: 479, error: 0.4188705636743216, fairness violation: 0.005009858037578285, violated group size: 0.217\n", + "iteration: 480, error: 0.41883125000000004, fairness violation: 0.005012983333333334, violated group size: 0.283\n", + "iteration: 481, error: 0.4187920997920998, fairness violation: 0.005016095634095634, violated group size: 0.283\n", + "iteration: 482, error: 0.4187531120331951, fairness violation: 0.0050191950207468874, violated group size: 0.283\n", + "iteration: 483, error: 0.4188364389233955, fairness violation: 0.00501239751552795, violated group size: 0.217\n", + "iteration: 484, error: 0.41891942148760325, fairness violation: 0.005005628099173555, violated group size: 0.283\n", + "iteration: 485, error: 0.4190020618556701, fairness violation: 0.004998886597938144, violated group size: 0.283\n", + "iteration: 486, error: 0.41896296296296304, fairness violation: 0.005001995884773661, violated group size: 0.217\n", + "iteration: 487, error: 0.4190451745379877, fairness violation: 0.004995289527720739, violated group size: 0.283\n", + "iteration: 488, error: 0.4191270491803279, fairness violation: 0.004988610655737704, violated group size: 0.283\n", + "iteration: 489, error: 0.4192085889570552, fairness violation: 0.004981959100204497, violated group size: 0.217\n", + "iteration: 490, error: 0.41916938775510204, fairness violation: 0.004985077551020407, violated group size: 0.283\n", + "iteration: 491, error: 0.4192505091649695, fairness violation: 0.004978460285132381, violated group size: 0.217\n", + "iteration: 492, error: 0.4192113821138212, fairness violation: 0.004981573170731706, violated group size: 0.217\n", + "iteration: 493, error: 0.41917241379310355, fairness violation: 0.004984673427991887, violated group size: 0.283\n", + "iteration: 494, error: 0.41913360323886634, fairness violation: 0.004987761133603237, violated group size: 0.217\n", + "iteration: 495, error: 0.4192141414141415, fairness violation: 0.004981191919191918, violated group size: 0.217\n", + "iteration: 496, error: 0.4192943548387097, fairness violation: 0.004974649193548386, violated group size: 0.217\n", + "iteration: 497, error: 0.419374245472837, fairness violation: 0.004968132796780683, violated group size: 0.217\n", + "iteration: 498, error: 0.4194538152610441, fairness violation: 0.004961642570281124, violated group size: 0.217\n", + "iteration: 499, error: 0.41953306613226454, fairness violation: 0.0049551783567134255, violated group size: 0.217\n" + ] + } + ], + "source": [ + "C = 100\n", + "print_flag = True\n", + "gamma = .005\n", + "\n", + "\n", + "fair_model = GerryFairClassifier(C=C, printflag=print_flag, gamma=gamma, fairness_def='FP',\n", + " max_iters=max_iterations, heatmapflag=False)\n", + "\n", + "# fit method\n", + "fair_model.fit(data_set, early_termination=True)\n", + "\n", + "# predict method. If threshold in (0, 1) produces binary predictions\n", + "\n", + "dataset_yhat = fair_model.predict(data_set, threshold=False)\n", + "\n", + "\n" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "iteration: 310, error: 0.4207838709677419, fairness violation: 0.00486963870967742, violated group size: 0.283\n", - "iteration: 311, error: 0.420717041800643, fairness violation: 0.004874913183279744, violated group size: 0.217\n", - "iteration: 312, error: 0.42065064102564104, fairness violation: 0.0048801538461538466, violated group size: 0.217\n", - "iteration: 313, error: 0.42058466453674115, fairness violation: 0.0048853610223642185, violated group size: 0.217\n", - "iteration: 314, error: 0.42051910828025474, fairness violation: 0.004890535031847135, violated group size: 0.217\n", - "iteration: 315, error: 0.4204539682539683, fairness violation: 0.004895676190476191, violated group size: 0.217\n", - "iteration: 316, error: 0.4203892405063292, fairness violation: 0.004900784810126583, violated group size: 0.217\n", - "iteration: 317, error: 0.4203249211356468, fairness violation: 0.004905861198738172, violated group size: 0.283\n", - "iteration: 318, error: 0.4202610062893082, fairness violation: 0.00491090566037736, violated group size: 0.217\n", - "iteration: 319, error: 0.4201974921630094, fairness violation: 0.004915918495297806, violated group size: 0.217\n", - "iteration: 320, error: 0.4201343749999999, fairness violation: 0.004920900000000002, violated group size: 0.217\n", - "iteration: 321, error: 0.4200716510903427, fairness violation: 0.004925850467289721, violated group size: 0.217\n", - "iteration: 322, error: 0.4200093167701862, fairness violation: 0.0049307701863354056, violated group size: 0.283\n", - "iteration: 323, error: 0.4199473684210526, fairness violation: 0.00493565944272446, violated group size: 0.283\n", - "iteration: 324, error: 0.41988580246913576, fairness violation: 0.004940518518518519, violated group size: 0.217\n", - "iteration: 325, error: 0.41982461538461535, fairness violation: 0.004945347692307694, violated group size: 0.217\n", - "iteration: 326, error: 0.4197638036809816, fairness violation: 0.004950147239263805, violated group size: 0.283\n", - "iteration: 327, error: 0.4197033639143731, fairness violation: 0.004954917431192661, violated group size: 0.283\n", - "iteration: 328, error: 0.4196432926829268, fairness violation: 0.004959658536585366, violated group size: 0.217\n", - "iteration: 329, error: 0.41958358662613987, fairness violation: 0.004964370820668694, violated group size: 0.283\n", - "iteration: 330, error: 0.41952424242424236, fairness violation: 0.004969054545454545, violated group size: 0.217\n", - "iteration: 331, error: 0.41946525679758306, fairness violation: 0.00497370996978852, violated group size: 0.217\n", - "iteration: 332, error: 0.41940662650602417, fairness violation: 0.004978337349397591, violated group size: 0.217\n", - "iteration: 333, error: 0.4193483483483482, fairness violation: 0.004982936936936937, violated group size: 0.217\n", - "iteration: 334, error: 0.4192904191616766, fairness violation: 0.004987508982035928, violated group size: 0.217\n", - "iteration: 335, error: 0.4192328358208956, fairness violation: 0.004992053731343284, violated group size: 0.283\n", - "iteration: 336, error: 0.4191755952380953, fairness violation: 0.00499657142857143, violated group size: 0.283\n", - "iteration: 337, error: 0.4191186943620178, fairness violation: 0.0050010623145400595, violated group size: 0.217\n", - "iteration: 338, error: 0.41906213017751476, fairness violation: 0.005005526627218935, violated group size: 0.217\n", - "iteration: 339, error: 0.4190058997050148, fairness violation: 0.005009964601769911, violated group size: 0.217\n", - "iteration: 340, error: 0.41894999999999993, fairness violation: 0.005014376470588236, violated group size: 0.283\n", - "iteration: 341, error: 0.41889442815249267, fairness violation: 0.005018762463343108, violated group size: 0.217\n", - "iteration: 342, error: 0.41883918128654973, fairness violation: 0.005023122807017544, violated group size: 0.217\n", - "iteration: 343, error: 0.41878425655976675, fairness violation: 0.0050274577259475225, violated group size: 0.283\n", - "iteration: 344, error: 0.4187296511627907, fairness violation: 0.005031767441860465, violated group size: 0.217\n", - "iteration: 345, error: 0.4186753623188406, fairness violation: 0.005036052173913045, violated group size: 0.283\n", - "iteration: 346, error: 0.4186213872832369, fairness violation: 0.005040312138728323, violated group size: 0.217\n", - "iteration: 347, error: 0.41856772334293946, fairness violation: 0.005044547550432276, violated group size: 0.283\n", - "iteration: 348, error: 0.41851436781609197, fairness violation: 0.005048758620689655, violated group size: 0.217\n", - "iteration: 349, error: 0.418461318051576, fairness violation: 0.005052945558739255, violated group size: 0.283\n", - "iteration: 350, error: 0.4185771428571428, fairness violation: 0.005043468571428572, violated group size: 0.283\n", - "iteration: 351, error: 0.4186923076923077, fairness violation: 0.005034045584045584, violated group size: 0.217\n", - "iteration: 352, error: 0.4188068181818182, fairness violation: 0.005024676136363637, violated group size: 0.283\n", - "iteration: 353, error: 0.4189206798866855, fairness violation: 0.005015359773371105, violated group size: 0.217\n", - "iteration: 354, error: 0.41903389830508475, fairness violation: 0.005006096045197741, violated group size: 0.283\n", - "iteration: 355, error: 0.41914647887323936, fairness violation: 0.004996884507042254, violated group size: 0.283\n", - "iteration: 356, error: 0.4192584269662922, fairness violation: 0.004987724719101122, violated group size: 0.217\n", - "iteration: 357, error: 0.41936974789915965, fairness violation: 0.0049786162464986, violated group size: 0.217\n", - "iteration: 358, error: 0.41948044692737424, fairness violation: 0.004969558659217878, violated group size: 0.217\n", - "iteration: 359, error: 0.41959052924791085, fairness violation: 0.004960551532033426, violated group size: 0.283\n", - "iteration: 360, error: 0.4195361111111111, fairness violation: 0.004964855555555557, violated group size: 0.283\n", - "iteration: 361, error: 0.4196454293628808, fairness violation: 0.004955911357340723, violated group size: 0.283\n", - "iteration: 362, error: 0.4197541436464089, fairness violation: 0.004947016574585636, violated group size: 0.217\n", - "iteration: 363, error: 0.4198622589531681, fairness violation: 0.004938170798898072, violated group size: 0.283\n", - "iteration: 364, error: 0.41996978021978026, fairness violation: 0.004929373626373626, violated group size: 0.217\n", - "iteration: 365, error: 0.42007671232876714, fairness violation: 0.004920624657534246, violated group size: 0.217\n", - "iteration: 366, error: 0.42018306010928963, fairness violation: 0.004911923497267759, violated group size: 0.217\n", - "iteration: 367, error: 0.4202888283378746, fairness violation: 0.004903269754768393, violated group size: 0.217\n", - "iteration: 368, error: 0.42039402173913043, fairness violation: 0.00489466304347826, violated group size: 0.217\n", - "iteration: 369, error: 0.4204986449864499, fairness violation: 0.00488610298102981, violated group size: 0.283\n", - "iteration: 370, error: 0.4206027027027027, fairness violation: 0.0048775891891891885, violated group size: 0.217\n", - "iteration: 371, error: 0.4207061994609164, fairness violation: 0.004869121293800538, violated group size: 0.217\n", - "iteration: 372, error: 0.4208091397849463, fairness violation: 0.004860698924731182, violated group size: 0.217\n", - "iteration: 373, error: 0.420911528150134, fairness violation: 0.004852321715817694, violated group size: 0.217\n", - "iteration: 374, error: 0.420855614973262, fairness violation: 0.004856754010695187, violated group size: 0.217\n", - "iteration: 375, error: 0.4209573333333334, fairness violation: 0.004848432, violated group size: 0.217\n", - "iteration: 376, error: 0.42105851063829786, fairness violation: 0.004840154255319148, violated group size: 0.217\n", - "iteration: 377, error: 0.4211591511936339, fairness violation: 0.004831920424403182, violated group size: 0.217\n", - "iteration: 378, error: 0.4211031746031746, fairness violation: 0.004836359788359788, violated group size: 0.217\n", - "iteration: 379, error: 0.42120316622691284, fairness violation: 0.004828179419525066, violated group size: 0.217\n", - "iteration: 380, error: 0.42130263157894726, fairness violation: 0.004820042105263157, violated group size: 0.217\n", - "iteration: 381, error: 0.42124671916010503, fairness violation: 0.004824477690288715, violated group size: 0.283\n", - "iteration: 382, error: 0.42134554973821986, fairness violation: 0.004816392670157068, violated group size: 0.283\n", - "iteration: 383, error: 0.42144386422976504, fairness violation: 0.004808349869451696, violated group size: 0.217\n", - "iteration: 384, error: 0.42154166666666676, fairness violation: 0.004800348958333333, violated group size: 0.283\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "ak4FlXHmhI5L" + }, + "source": [ + "**3-d heatmaps**\n", + "\n", + "We now show to generate a 3d-heatmap of unfairness using the `generate_heatmap` method. The $X-Y$ axes in the plot represent the coefficients of the linear threshold function that defines a protected subgroup with respect to the first two sensitive attributes. Which $2$ attributes are considered sensitive can be overwritten with the `col_index` argument. The $Z$-axes is the $\\gamma$-disparity (FP) of the corresponding subgroup defined by the linear threshold function. This is important because it allows us to (1) visualize convergence as the heatmap flattens and (2) brute force check the fairness in low-dimensions without relying on a heuristic auditor. See the [the rich subgroup fairness empirical paper](https://arxiv.org/abs/1808.08166) for a discussion of these plots. Note that in the below plot no group has a $\\gamma$-disparity of greater than $.005$, which we would expect since the set of linear threshold functions on two attributes is a subset of the set of linear threshold functions on all protected attributes, and the final model is $\\gamma$-fair." + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "iteration: 385, error: 0.4214857142857143, fairness violation: 0.00480478961038961, violated group size: 0.217\n", - "iteration: 386, error: 0.4215829015544041, fairness violation: 0.0047968393782383415, violated group size: 0.217\n", - "iteration: 387, error: 0.42152713178294576, fairness violation: 0.004801266149870801, violated group size: 0.283\n", - "iteration: 388, error: 0.4216237113402061, fairness violation: 0.004793365979381444, violated group size: 0.283\n", - "iteration: 389, error: 0.42171979434447304, fairness violation: 0.004785506426735219, violated group size: 0.217\n", - "iteration: 390, error: 0.4218153846153847, fairness violation: 0.00477768717948718, violated group size: 0.217\n", - "iteration: 391, error: 0.4219104859335038, fairness violation: 0.004769907928388747, violated group size: 0.217\n", - "iteration: 392, error: 0.4218545918367348, fairness violation: 0.00477434693877551, violated group size: 0.217\n", - "iteration: 393, error: 0.42194910941475816, fairness violation: 0.004766615776081424, violated group size: 0.217\n", - "iteration: 394, error: 0.42204314720812186, fairness violation: 0.004758923857868021, violated group size: 0.283\n", - "iteration: 395, error: 0.4221367088607595, fairness violation: 0.00475127088607595, violated group size: 0.217\n", - "iteration: 396, error: 0.42208080808080806, fairness violation: 0.004755712121212122, violated group size: 0.283\n", - "iteration: 397, error: 0.42202518891687657, fairness violation: 0.004760130982367758, violated group size: 0.217\n", - "iteration: 398, error: 0.42196984924623115, fairness violation: 0.004764527638190955, violated group size: 0.283\n", - "iteration: 399, error: 0.42191478696741846, fairness violation: 0.004768902255639098, violated group size: 0.217\n", - "iteration: 400, error: 0.42186, fairness violation: 0.004773255, violated group size: 0.217\n", - "iteration: 401, error: 0.4218054862842893, fairness violation: 0.004777586034912718, violated group size: 0.283\n", - "iteration: 402, error: 0.4217512437810945, fairness violation: 0.00478189552238806, violated group size: 0.217\n", - "iteration: 403, error: 0.4218436724565757, fairness violation: 0.0047743374689826305, violated group size: 0.283\n", - "iteration: 404, error: 0.42178960396039605, fairness violation: 0.004778633663366336, violated group size: 0.217\n", - "iteration: 405, error: 0.4217358024691357, fairness violation: 0.004782908641975308, violated group size: 0.217\n", - "iteration: 406, error: 0.4216822660098523, fairness violation: 0.004787162561576355, violated group size: 0.217\n", - "iteration: 407, error: 0.4216289926289926, fairness violation: 0.004791395577395577, violated group size: 0.283\n", - "iteration: 408, error: 0.421575980392157, fairness violation: 0.004795607843137254, violated group size: 0.217\n", - "iteration: 409, error: 0.4215232273838631, fairness violation: 0.004799799511002444, violated group size: 0.217\n", - "iteration: 410, error: 0.42147073170731714, fairness violation: 0.004803970731707317, violated group size: 0.283\n", - "iteration: 411, error: 0.4214184914841849, fairness violation: 0.0048081216545012165, violated group size: 0.217\n", - "iteration: 412, error: 0.4213665048543689, fairness violation: 0.004812252427184466, violated group size: 0.283\n", - "iteration: 413, error: 0.42131476997578693, fairness violation: 0.004816363196125908, violated group size: 0.217\n", - "iteration: 414, error: 0.42126328502415455, fairness violation: 0.004820454106280194, violated group size: 0.217\n", - "iteration: 415, error: 0.4212120481927711, fairness violation: 0.004824525301204821, violated group size: 0.283\n", - "iteration: 416, error: 0.42116105769230766, fairness violation: 0.004828576923076923, violated group size: 0.217\n", - "iteration: 417, error: 0.4211103117505996, fairness violation: 0.004832609112709832, violated group size: 0.283\n", - "iteration: 418, error: 0.42105980861244025, fairness violation: 0.004836622009569378, violated group size: 0.283\n", - "iteration: 419, error: 0.42100954653937933, fairness violation: 0.004840615751789977, violated group size: 0.217\n", - "iteration: 420, error: 0.42110000000000003, fairness violation: 0.0048332238095238084, violated group size: 0.217\n", - "iteration: 421, error: 0.42104988123515436, fairness violation: 0.004837206650831354, violated group size: 0.217\n", - "iteration: 422, error: 0.42100000000000004, fairness violation: 0.004841170616113744, violated group size: 0.217\n", - "iteration: 423, error: 0.420950354609929, fairness violation: 0.004845115839243499, violated group size: 0.217\n", - "iteration: 424, error: 0.42104009433962253, fairness violation: 0.004837783018867924, violated group size: 0.217\n", - "iteration: 425, error: 0.4209905882352941, fairness violation: 0.004841717647058822, violated group size: 0.217\n", - "iteration: 426, error: 0.42094131455399053, fairness violation: 0.004845633802816901, violated group size: 0.217\n", - "iteration: 427, error: 0.42089227166276344, fairness violation: 0.004849531615925057, violated group size: 0.217\n", - "iteration: 428, error: 0.4208434579439252, fairness violation: 0.004853411214953271, violated group size: 0.217\n", - "iteration: 429, error: 0.4207948717948717, fairness violation: 0.0048572727272727274, violated group size: 0.283\n", - "iteration: 430, error: 0.42074651162790694, fairness violation: 0.004861116279069767, violated group size: 0.217\n", - "iteration: 431, error: 0.4206983758700697, fairness violation: 0.004864941995359629, violated group size: 0.283\n", - "iteration: 432, error: 0.420650462962963, fairness violation: 0.00486875, violated group size: 0.217\n", - "iteration: 433, error: 0.42060277136258656, fairness violation: 0.0048725404157043874, violated group size: 0.217\n", - "iteration: 434, error: 0.42055529953917054, fairness violation: 0.0048763133640553, violated group size: 0.283\n", - "iteration: 435, error: 0.42050804597701147, fairness violation: 0.004880068965517241, violated group size: 0.217\n", - "iteration: 436, error: 0.4204610091743119, fairness violation: 0.004883807339449542, violated group size: 0.217\n", - "iteration: 437, error: 0.4204141876430207, fairness violation: 0.004887528604118992, violated group size: 0.217\n", - "iteration: 438, error: 0.42036757990867574, fairness violation: 0.004891232876712329, violated group size: 0.217\n", - "iteration: 439, error: 0.4203211845102506, fairness violation: 0.0048949202733485206, violated group size: 0.283\n", - "iteration: 440, error: 0.42027499999999995, fairness violation: 0.00489859090909091, violated group size: 0.283\n", - "iteration: 441, error: 0.42022902494331066, fairness violation: 0.004902244897959184, violated group size: 0.283\n", - "iteration: 442, error: 0.42018325791855204, fairness violation: 0.004905882352941177, violated group size: 0.217\n", - "iteration: 443, error: 0.42013769751693003, fairness violation: 0.004909503386004516, violated group size: 0.283\n", - "iteration: 444, error: 0.42009234234234244, fairness violation: 0.004913108108108108, violated group size: 0.217\n", - "iteration: 445, error: 0.420047191011236, fairness violation: 0.004916696629213483, violated group size: 0.217\n", - "iteration: 446, error: 0.42000224215246645, fairness violation: 0.004920269058295964, violated group size: 0.217\n", - "iteration: 447, error: 0.4199574944071588, fairness violation: 0.004923825503355704, violated group size: 0.217\n", - "iteration: 448, error: 0.41991294642857147, fairness violation: 0.004927366071428571, violated group size: 0.217\n", - "iteration: 449, error: 0.41986859688195993, fairness violation: 0.004930890868596881, violated group size: 0.217\n", - "iteration: 450, error: 0.41982444444444433, fairness violation: 0.004934399999999999, violated group size: 0.217\n", - "iteration: 451, error: 0.41978048780487814, fairness violation: 0.004937893569844789, violated group size: 0.217\n", - "iteration: 452, error: 0.41973672566371684, fairness violation: 0.004941371681415928, violated group size: 0.217\n", - "iteration: 453, error: 0.41969315673289187, fairness violation: 0.0049448344370860925, violated group size: 0.217\n", - "iteration: 454, error: 0.41964977973568285, fairness violation: 0.004948281938325991, violated group size: 0.283\n", - "iteration: 455, error: 0.41960659340659345, fairness violation: 0.004951714285714286, violated group size: 0.283\n", - "iteration: 456, error: 0.41956359649122804, fairness violation: 0.004955131578947367, violated group size: 0.217\n", - "iteration: 457, error: 0.41952078774617063, fairness violation: 0.0049585339168490145, violated group size: 0.217\n", - "iteration: 458, error: 0.41947816593886456, fairness violation: 0.004961921397379911, violated group size: 0.217\n", - "iteration: 459, error: 0.4194357298474945, fairness violation: 0.00496529411764706, violated group size: 0.283\n", - "iteration: 460, error: 0.4193934782608696, fairness violation: 0.004968652173913044, violated group size: 0.283\n", - "iteration: 461, error: 0.41935140997830805, fairness violation: 0.004971995661605205, violated group size: 0.283\n", - "iteration: 462, error: 0.41930952380952374, fairness violation: 0.0049753246753246735, violated group size: 0.217\n", - "iteration: 463, error: 0.41926781857451406, fairness violation: 0.004978639308855291, violated group size: 0.217\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": true + }, + "id": "u364ULCthI5L", + "outputId": "24fa9897-8b4a-4d42-afb3-2832bd76bb99" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "# output heatmap (brute force)\n", + "# replace None with the relative path if you want to save the plot\n", + "fair_model.heatmapflag = True\n", + "fair_model.heatmap_path = 'heatmap'\n", + "fair_model.generate_heatmap(data_set, dataset_yhat.labels)\n", + "Image(filename='{}.png'.format(fair_model.heatmap_path))\n", + "\n", + "\n", + "\n" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "iteration: 464, error: 0.41922629310344817, fairness violation: 0.004981939655172413, violated group size: 0.217\n", - "iteration: 465, error: 0.41918494623655916, fairness violation: 0.004985225806451612, violated group size: 0.217\n", - "iteration: 466, error: 0.4191437768240344, fairness violation: 0.004988497854077254, violated group size: 0.283\n", - "iteration: 467, error: 0.41910278372591, fairness violation: 0.004991755888650964, violated group size: 0.283\n", - "iteration: 468, error: 0.4190619658119658, fairness violation: 0.004994999999999998, violated group size: 0.217\n", - "iteration: 469, error: 0.4190213219616205, fairness violation: 0.0049982302771855, violated group size: 0.217\n", - "iteration: 470, error: 0.41898085106382993, fairness violation: 0.005001446808510636, violated group size: 0.283\n", - "iteration: 471, error: 0.41894055201698516, fairness violation: 0.005004649681528661, violated group size: 0.217\n", - "iteration: 472, error: 0.41890042372881364, fairness violation: 0.005007838983050847, violated group size: 0.283\n", - "iteration: 473, error: 0.4188604651162791, fairness violation: 0.005011014799154333, violated group size: 0.217\n", - "iteration: 474, error: 0.41882067510548526, fairness violation: 0.005014177215189871, violated group size: 0.217\n", - "iteration: 475, error: 0.41878105263157905, fairness violation: 0.0050173263157894735, violated group size: 0.283\n", - "iteration: 476, error: 0.41874159663865557, fairness violation: 0.0050204621848739485, violated group size: 0.217\n", - "iteration: 477, error: 0.4188259958071279, fairness violation: 0.005013576519916141, violated group size: 0.217\n", - "iteration: 478, error: 0.41878661087866115, fairness violation: 0.005016707112970709, violated group size: 0.217\n", - "iteration: 479, error: 0.4188705636743216, fairness violation: 0.005009858037578285, violated group size: 0.217\n", - "iteration: 480, error: 0.41883125000000004, fairness violation: 0.005012983333333334, violated group size: 0.283\n", - "iteration: 481, error: 0.4187920997920998, fairness violation: 0.005016095634095634, violated group size: 0.283\n", - "iteration: 482, error: 0.4187531120331951, fairness violation: 0.0050191950207468874, violated group size: 0.283\n", - "iteration: 483, error: 0.4188364389233955, fairness violation: 0.00501239751552795, violated group size: 0.217\n", - "iteration: 484, error: 0.41891942148760325, fairness violation: 0.005005628099173555, violated group size: 0.283\n", - "iteration: 485, error: 0.4190020618556701, fairness violation: 0.004998886597938144, violated group size: 0.283\n", - "iteration: 486, error: 0.41896296296296304, fairness violation: 0.005001995884773661, violated group size: 0.217\n", - "iteration: 487, error: 0.4190451745379877, fairness violation: 0.004995289527720739, violated group size: 0.283\n", - "iteration: 488, error: 0.4191270491803279, fairness violation: 0.004988610655737704, violated group size: 0.283\n", - "iteration: 489, error: 0.4192085889570552, fairness violation: 0.004981959100204497, violated group size: 0.217\n", - "iteration: 490, error: 0.41916938775510204, fairness violation: 0.004985077551020407, violated group size: 0.283\n", - "iteration: 491, error: 0.4192505091649695, fairness violation: 0.004978460285132381, violated group size: 0.217\n", - "iteration: 492, error: 0.4192113821138212, fairness violation: 0.004981573170731706, violated group size: 0.217\n", - "iteration: 493, error: 0.41917241379310355, fairness violation: 0.004984673427991887, violated group size: 0.283\n", - "iteration: 494, error: 0.41913360323886634, fairness violation: 0.004987761133603237, violated group size: 0.217\n", - "iteration: 495, error: 0.4192141414141415, fairness violation: 0.004981191919191918, violated group size: 0.217\n", - "iteration: 496, error: 0.4192943548387097, fairness violation: 0.004974649193548386, violated group size: 0.217\n", - "iteration: 497, error: 0.419374245472837, fairness violation: 0.004968132796780683, violated group size: 0.217\n", - "iteration: 498, error: 0.4194538152610441, fairness violation: 0.004961642570281124, violated group size: 0.217\n", - "iteration: 499, error: 0.41953306613226454, fairness violation: 0.0049551783567134255, violated group size: 0.217\n" - ] - } - ], - "source": [ - "C = 100\n", - "print_flag = True\n", - "gamma = .005\n", - "\n", - "\n", - "fair_model = GerryFairClassifier(C=C, printflag=print_flag, gamma=gamma, fairness_def='FP',\n", - " max_iters=max_iterations, heatmapflag=False)\n", - "\n", - "# fit method\n", - "fair_model.fit(data_set, early_termination=True)\n", - "\n", - "# predict method. If threshold in (0, 1) produces binary predictions\n", - "\n", - "dataset_yhat = fair_model.predict(data_set, threshold=False)\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**3-d heatmaps**\n", - "\n", - "We now show to generate a 3d-heatmap of unfairness using the `generate_heatmap` method. The $X-Y$ axes in the plot represent the coefficients of the linear threshold function that defines a protected subgroup with respect to the first two sensitive attributes. Which $2$ attributes are considered sensitive can be overwritten with the `col_index` argument. The $Z$-axes is the $\\gamma$-disparity (FP) of the corresponding subgroup defined by the linear threshold function. This is important because it allows us to (1) visualize convergence as the heatmap flattens and (2) brute force check the fairness in low-dimensions without relying on a heuristic auditor. See the [the rich subgroup fairness empirical paper](https://arxiv.org/abs/1808.08166) for a discussion of these plots. Note that in the below plot no group has a $\\gamma$-disparity of greater than $.005$, which we would expect since the set of linear threshold functions on two attributes is a subset of the set of linear threshold functions on all protected attributes, and the final model is $\\gamma$-fair. " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "pycharm": { - "is_executing": true - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" + "cell_type": "markdown", + "metadata": { + "id": "SwMw4smGhI5M" + }, + "source": [ + "**black-box auditing**\n", + "\n", + "We now show to audit any black box classifier with respect to rich subgroup fairness under either FP or FN rate. Note the below auditing procedure would work for any set of (soft) predictions $\\hat{y}$, and need make no assumptions about the structure of the predictor. We note that as expected the disparity of the group found is the same as the disparity printed out in the last iteration of the `fit` method.\n", + " " ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\n", - "# output heatmap (brute force)\n", - "# replace None with the relative path if you want to save the plot\n", - "fair_model.heatmapflag = True\n", - "fair_model.heatmap_path = 'heatmap'\n", - "fair_model.generate_heatmap(data_set, dataset_yhat.labels)\n", - "Image(filename='{}.png'.format(fair_model.heatmap_path)) \n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**black-box auditing**\n", - "\n", - "We now show to audit any black box classifier with respect to rich subgroup fairness under either FP or FN rate. Note the below auditing procedure would work for any set of (soft) predictions $\\hat{y}$, and need make no assumptions about the structure of the predictor. We note that as expected the disparity of the group found is the same as the disparity printed out in the last iteration of the `fit` method.\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "pycharm": { - "is_executing": true - } - }, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.004955178356713431\n" - ] - } - ], - "source": [ - "\n", - "\n", - "gerry_metric = BinaryLabelDatasetMetric(data_set)\n", - "gamma_disparity = gerry_metric.rich_subgroup(array_to_tuple(dataset_yhat.labels), 'FP')\n", - "print(gamma_disparity)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**pareto curves**\n", - "\n", - "The `FairFictPlay` algorithm implemented in the `fit` method converges given access to perfect oracles for solving cost-sensitive classification (CSC) problems. A cost-sensitive classification problem over a hypothesis class $\\mathcal{H}$ is $$\\min_{h}\\sum_{i = 1}^{n}(1-h(x_i))c_0 + h(x_i)c_1$$\n", - "By default in this package, and in the companion [empirical](https://arxiv.org/abs/1808.08166) and [theory](https://arxiv.org/pdf/1711.05144.pdf) papers, the hypothesis class of the learner and the of the subgroups are hyperplanes. The corresponding heuristic oracle for solving the CSC problem first forms two regression problems $(x_i, c_0)$ and $(x_i, c_1)$. Then in the case of hyperplanes, trains two regressions $r_i: \\mathcal{X} \\to R$ which predict the costs of classifying a given point $x$ $0,1$ respectively. Finally the binary classifier output by the oracle is defined as $\\hat{r}(x) = \\arg\\min_{j \\in \\{0,1\\}}r_j(x)$. But of course if we are interesting in different hypothesis classes for the learner, we simply need different regressors. In this package in addition to linear regression, we've added support for regression trees, kernelized ridge regression, and support vector regression. Below we trace out Pareto curves of $\\gamma$-disparity vs. error for each of these different heuristic oracles. " - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "pycharm": { - "is_executing": true - } - }, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": true + }, + "id": "YsozvR3hhI5M", + "outputId": "6ef397ab-120c-49a0-a767-5201a047ee3d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.004955178356713431\n" + ] + } + ], + "source": [ + "\n", + "\n", + "gerry_metric = BinaryLabelDatasetMetric(data_set)\n", + "gamma_disparity = gerry_metric.rich_subgroup(array_to_tuple(dataset_yhat.labels), 'FP')\n", + "print(gamma_disparity)\n" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Curr Predictor: Linear\n", - "Curr Predictor: SVR\n", - "Curr Predictor: Tree\n", - "Curr Predictor: Kernel\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "1qK4jg_PhI5M" + }, + "source": [ + "**pareto curves**\n", + "\n", + "The `FairFictPlay` algorithm implemented in the `fit` method converges given access to perfect oracles for solving cost-sensitive classification (CSC) problems. A cost-sensitive classification problem over a hypothesis class $\\mathcal{H}$ is $$\\min_{h}\\sum_{i = 1}^{n}(1-h(x_i))c_0 + h(x_i)c_1$$\n", + "By default in this package, and in the companion [empirical](https://arxiv.org/abs/1808.08166) and [theory](https://arxiv.org/pdf/1711.05144.pdf) papers, the hypothesis class of the learner and the of the subgroups are hyperplanes. The corresponding heuristic oracle for solving the CSC problem first forms two regression problems $(x_i, c_0)$ and $(x_i, c_1)$. Then in the case of hyperplanes, trains two regressions $r_i: \\mathcal{X} \\to R$ which predict the costs of classifying a given point $x$ $0,1$ respectively. Finally the binary classifier output by the oracle is defined as $\\hat{r}(x) = \\arg\\min_{j \\in \\{0,1\\}}r_j(x)$. But of course if we are interesting in different hypothesis classes for the learner, we simply need different regressors. In this package in addition to linear regression, we've added support for regression trees, kernelized ridge regression, and support vector regression. Below we trace out Pareto curves of $\\gamma$-disparity vs. error for each of these different heuristic oracles." + ] }, { - "data": { - "image/png": "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\n", - "text/plain": [ - "" + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": true + }, + "id": "WJspqrmEhI5M", + "outputId": "d1478011-d530-45e8-a32f-3862db281721" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Curr Predictor: Linear\n", + "Curr Predictor: SVR\n", + "Curr Predictor: Tree\n", + "Curr Predictor: Kernel\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# set to 50 iterations for fast running of notebook - set >= 1000 when running real experiments\n", + "pareto_iters = 50\n", + "def multiple_classifiers_pareto(dataset, gamma_list=[0.002, 0.005, 0.01, 0.02, 0.05, 0.1], save_results=False, iters=pareto_iters):\n", + "\n", + " ln_predictor = linear_model.LinearRegression()\n", + " svm_predictor = svm.LinearSVR()\n", + " tree_predictor = tree.DecisionTreeRegressor(max_depth=3)\n", + " kernel_predictor = KernelRidge(alpha=1.0, gamma=1.0, kernel='rbf')\n", + " predictor_dict = {'Linear': {'predictor': ln_predictor, 'iters': iters},\n", + " 'SVR': {'predictor': svm_predictor, 'iters': iters},\n", + " 'Tree': {'predictor': tree_predictor, 'iters': iters},\n", + " 'Kernel': {'predictor': kernel_predictor, 'iters': iters}}\n", + "\n", + " results_dict = {}\n", + "\n", + " for pred in predictor_dict:\n", + " print('Curr Predictor: {}'.format(pred))\n", + " predictor = predictor_dict[pred]['predictor']\n", + " max_iters = predictor_dict[pred]['iters']\n", + " fair_clf = GerryFairClassifier(C=100, printflag=True, gamma=1, predictor=predictor, max_iters=max_iters)\n", + " fair_clf.printflag = False\n", + " fair_clf.max_iters=max_iters\n", + " errors, fp_violations, fn_violations = fair_clf.pareto(dataset, gamma_list)\n", + " results_dict[pred] = {'errors': errors, 'fp_violations': fp_violations, 'fn_violations': fn_violations}\n", + " plt.plot(errors, fp_violations, label=pred)\n", + "\n", + " if save_results:\n", + " pickle.dump(results_dict, open('results_dict_' + str(gamma_list) + '_gammas' + str(gamma_list) + '.pkl', 'wb'))\n", + "\n", + " plt.xlabel('Error')\n", + " plt.ylabel('Unfairness')\n", + " plt.legend()\n", + " plt.title('Error vs. Unfairness\\n(Adult Dataset)')\n", + " plt.savefig('gerryfair_pareto.png')\n", + " plt.close()\n", + "multiple_classifiers_pareto(data_set)\n", + "Image(filename='gerryfair_pareto.png')" ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# set to 50 iterations for fast running of notebook - set >= 1000 when running real experiments\n", - "pareto_iters = 50\n", - "def multiple_classifiers_pareto(dataset, gamma_list=[0.002, 0.005, 0.01, 0.02, 0.05, 0.1], save_results=False, iters=pareto_iters):\n", - "\n", - " ln_predictor = linear_model.LinearRegression()\n", - " svm_predictor = svm.LinearSVR()\n", - " tree_predictor = tree.DecisionTreeRegressor(max_depth=3)\n", - " kernel_predictor = KernelRidge(alpha=1.0, gamma=1.0, kernel='rbf')\n", - " predictor_dict = {'Linear': {'predictor': ln_predictor, 'iters': iters},\n", - " 'SVR': {'predictor': svm_predictor, 'iters': iters},\n", - " 'Tree': {'predictor': tree_predictor, 'iters': iters},\n", - " 'Kernel': {'predictor': kernel_predictor, 'iters': iters}}\n", - "\n", - " results_dict = {}\n", - "\n", - " for pred in predictor_dict:\n", - " print('Curr Predictor: {}'.format(pred))\n", - " predictor = predictor_dict[pred]['predictor']\n", - " max_iters = predictor_dict[pred]['iters']\n", - " fair_clf = GerryFairClassifier(C=100, printflag=True, gamma=1, predictor=predictor, max_iters=max_iters)\n", - " fair_clf.printflag = False\n", - " fair_clf.max_iters=max_iters\n", - " errors, fp_violations, fn_violations = fair_clf.pareto(dataset, gamma_list)\n", - " results_dict[pred] = {'errors': errors, 'fp_violations': fp_violations, 'fn_violations': fn_violations}\n", - " plt.plot(errors, fp_violations, label=pred)\n", - "\n", - " if save_results:\n", - " pickle.dump(results_dict, open('results_dict_' + str(gamma_list) + '_gammas' + str(gamma_list) + '.pkl', 'wb'))\n", - "\n", - " plt.xlabel('Error')\n", - " plt.ylabel('Unfairness')\n", - " plt.legend()\n", - " plt.title('Error vs. Unfairness\\n(Adult Dataset)')\n", - " plt.savefig('gerryfair_pareto.png')\n", - " plt.close()\n", - "multiple_classifiers_pareto(data_set)\n", - "Image(filename='gerryfair_pareto.png') " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A natural question one might ask is, suppose we fix a statistical fairness definition for rich subgroup fairness like equality of false positive rates, `FP`. Does learning a classifier that is fair with respect to `FP` increase or decrease fairness with respect to false negative rates `FN`? One could see this relationship going in either direction - and indeed we submit that it is dataset dependent. In some cases, if enforcing `FP` fairness pushes the classifier towards the constant classifier, then it will also satisify `FN` rate fairness, since the constant classifier is perfectly fair. However, if the hypothesis class is sufficiently rich, then one would expect that ceteris paribus since we are optimizing for error in addition to `FP` rate fairness, the algorithm would increase `FN` rate unfairness in order to decrease error. Below we trace the FN vs. FP rate tradeoff across a range of input $\\gamma$, where the classifier is optimized only for `FP` rate fairness. " - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "pycharm": { - "is_executing": true - } - }, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "gamma: 0.001 gamma: 0.002 gamma: 0.003 gamma: 0.004 gamma: 0.005 gamma: 0.0075 gamma: 0.01 gamma: 0.02 gamma: 0.03 gamma: 0.05 " - ] + "cell_type": "markdown", + "metadata": { + "id": "N_ghZDh6hI5N" + }, + "source": [ + "A natural question one might ask is, suppose we fix a statistical fairness definition for rich subgroup fairness like equality of false positive rates, `FP`. Does learning a classifier that is fair with respect to `FP` increase or decrease fairness with respect to false negative rates `FN`? One could see this relationship going in either direction - and indeed we submit that it is dataset dependent. In some cases, if enforcing `FP` fairness pushes the classifier towards the constant classifier, then it will also satisify `FN` rate fairness, since the constant classifier is perfectly fair. However, if the hypothesis class is sufficiently rich, then one would expect that ceteris paribus since we are optimizing for error in addition to `FP` rate fairness, the algorithm would increase `FN` rate unfairness in order to decrease error. Below we trace the FN vs. FP rate tradeoff across a range of input $\\gamma$, where the classifier is optimized only for `FP` rate fairness." + ] }, { - "data": { - "image/png": "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\n", - "text/plain": [ - "" + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": true + }, + "id": "0xLIr5QdhI5N", + "outputId": "33fb403b-09c0-44a7-9c55-260319380020" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gamma: 0.001 gamma: 0.002 gamma: 0.003 gamma: 0.004 gamma: 0.005 gamma: 0.0075 gamma: 0.01 gamma: 0.02 gamma: 0.03 gamma: 0.05 " + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def fp_vs_fn(dataset, gamma_list, iters):\n", + " fp_auditor = Auditor(dataset, 'FP')\n", + " fn_auditor = Auditor(dataset, 'FN')\n", + " fp_violations = []\n", + " fn_violations = []\n", + " for g in gamma_list:\n", + " print('gamma: {} '.format(g), end =\" \")\n", + " fair_model = GerryFairClassifier(C=100, printflag=False, gamma=g, max_iters=iters)\n", + " fair_model.gamma=g\n", + " fair_model.fit(dataset)\n", + " predictions = array_to_tuple((fair_model.predict(dataset)).labels)\n", + " _, fp_diff = fp_auditor.audit(predictions)\n", + " _, fn_diff = fn_auditor.audit(predictions)\n", + " fp_violations.append(fp_diff)\n", + " fn_violations.append(fn_diff)\n", + "\n", + " plt.plot(fp_violations, fn_violations, label='adult')\n", + " plt.xlabel('False Positive Disparity')\n", + " plt.ylabel('False Negative Disparity')\n", + " plt.legend()\n", + " plt.title('FP vs FN Unfairness')\n", + " plt.savefig('gerryfair_fp_fn.png')\n", + " plt.close()\n", + "\n", + "gamma_list = [0.001, 0.002, 0.003, 0.004, 0.005, 0.0075, 0.01, 0.02, 0.03, 0.05]\n", + "fp_vs_fn(data_set, gamma_list, pareto_iters)\n", + "Image(filename='gerryfair_fp_fn.png')" ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": true + }, + "id": "wn6BQLiFhI5N" + }, + "outputs": [], + "source": [] } - ], - "source": [ - "def fp_vs_fn(dataset, gamma_list, iters):\n", - " fp_auditor = Auditor(dataset, 'FP')\n", - " fn_auditor = Auditor(dataset, 'FN')\n", - " fp_violations = []\n", - " fn_violations = []\n", - " for g in gamma_list:\n", - " print('gamma: {} '.format(g), end =\" \")\n", - " fair_model = GerryFairClassifier(C=100, printflag=False, gamma=g, max_iters=iters)\n", - " fair_model.gamma=g\n", - " fair_model.fit(dataset)\n", - " predictions = array_to_tuple((fair_model.predict(dataset)).labels)\n", - " _, fp_diff = fp_auditor.audit(predictions)\n", - " _, fn_diff = fn_auditor.audit(predictions)\n", - " fp_violations.append(fp_diff)\n", - " fn_violations.append(fn_diff)\n", - "\n", - " plt.plot(fp_violations, fn_violations, label='adult')\n", - " plt.xlabel('False Positive Disparity')\n", - " plt.ylabel('False Negative Disparity')\n", - " plt.legend()\n", - " plt.title('FP vs FN Unfairness')\n", - " plt.savefig('gerryfair_fp_fn.png')\n", - " plt.close()\n", - "\n", - "gamma_list = [0.001, 0.002, 0.003, 0.004, 0.005, 0.0075, 0.01, 0.02, 0.03, 0.05]\n", - "fp_vs_fn(data_set, gamma_list, pareto_iters)\n", - "Image(filename='gerryfair_fp_fn.png')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.9" + }, "pycharm": { - "is_executing": true + "stem_cell": { + "cell_type": "raw", + "metadata": { + "collapsed": false + }, + "source": [] + } + }, + "colab": { + "provenance": [] } - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.9" - }, - "pycharm": { - "stem_cell": { - "cell_type": "raw", - "metadata": { - "collapsed": false - }, - "source": [] - } - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/examples/demo_json_explainers.ipynb b/examples/demo_json_explainers.ipynb index da23274c..fe8e8ddb 100644 --- a/examples/demo_json_explainers.ipynb +++ b/examples/demo_json_explainers.ipynb @@ -1,263 +1,309 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Load all necessary packages\n", - "import sys\n", - "sys.path.append(\"../\")\n", - "from collections import OrderedDict\n", - "import json\n", - "from pprint import pprint\n", - "from aif360.datasets import GermanDataset\n", - "from aif360.metrics import BinaryLabelDatasetMetric\n", - "from aif360.explainers import MetricTextExplainer, MetricJSONExplainer\n", - "from IPython.display import JSON, display_json" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Load dataset" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "gd = GermanDataset()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Create metrics" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "priv = [{'sex': 1}]\n", - "unpriv = [{'sex': 0}]\n", - "bldm = BinaryLabelDatasetMetric(gd, unprivileged_groups=unpriv, privileged_groups=priv)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Create explainers" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "text_expl = MetricTextExplainer(bldm)\n", - "json_expl = MetricJSONExplainer(bldm)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Text explanations" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ + "cells": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of positive-outcome instances: 700.0\n" - ] - } - ], - "source": [ - "print(text_expl.num_positives())" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Trusted-AI/AIF360/blob/main/examples/demo_json_explainers.ipynb)\n" + ], + "metadata": { + "id": "PXISC-e0l2JJ" + } + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mean difference (mean label value on privileged instances - mean label value on unprivileged instances): -0.0748013090229\n" - ] - } - ], - "source": [ - "print(text_expl.mean_difference())" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "id": "s-b2u2Rvl013" + }, + "outputs": [], + "source": [ + "# Load all necessary packages\n", + "import sys\n", + "sys.path.append(\"../\")\n", + "from collections import OrderedDict\n", + "import json\n", + "from pprint import pprint\n", + "from aif360.datasets import GermanDataset\n", + "from aif360.metrics import BinaryLabelDatasetMetric\n", + "from aif360.explainers import MetricTextExplainer, MetricJSONExplainer\n", + "from IPython.display import JSON, display_json" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 0.896567328205\n" - ] - } - ], - "source": [ - "print(text_expl.disparate_impact())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### JSON Explanations" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def format_json(json_str):\n", - " return json.dumps(json.loads(json_str, object_pairs_hook=OrderedDict), indent=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "3HohcQsBl016" + }, + "source": [ + "##### Load dataset" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\n", - " \"metric\": \"num_positives\", \n", - " \"message\": \"Number of positive-outcome instances: 700.0\", \n", - " \"numPositives\": 700.0, \n", - " \"description\": \"Computed as the number of positive instances for the given (privileged or unprivileged) group.\", \n", - " \"ideal\": \"The ideal value of this metric lies in the total number of positive instances made available\"\n", - "}\n" - ] - } - ], - "source": [ - "print(format_json(json_expl.num_positives()))" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "id": "vHsL60ZSl017" + }, + "outputs": [], + "source": [ + "gd = GermanDataset()" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\n", - " \"metric\": \"mean_difference\", \n", - " \"message\": \"Mean difference (mean label value on privileged instances - mean label value on unprivileged instances): -0.0748013090229\", \n", - " \"numPositivesUnprivileged\": 201.0, \n", - " \"numInstancesUnprivileged\": 310.0, \n", - " \"numPositivesPrivileged\": 499.0, \n", - " \"numInstancesPrivileged\": 690.0, \n", - " \"description\": \"Computed as the difference of the rate of favorable outcomes received by the unprivileged group to the privileged group.\", \n", - " \"ideal\": \"The ideal value of this metric is 0.0\"\n", - "}\n" - ] - } - ], - "source": [ - "print(format_json(json_expl.mean_difference()))" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "Fy7C2Lttl017" + }, + "source": [ + "##### Create metrics" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "id": "BWIQjCUdl018" + }, + "outputs": [], + "source": [ + "priv = [{'sex': 1}]\n", + "unpriv = [{'sex': 0}]\n", + "bldm = BinaryLabelDatasetMetric(gd, unprivileged_groups=unpriv, privileged_groups=priv)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eUsxBOxVl018" + }, + "source": [ + "##### Create explainers" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "id": "7agLzgCCl018" + }, + "outputs": [], + "source": [ + "text_expl = MetricTextExplainer(bldm)\n", + "json_expl = MetricJSONExplainer(bldm)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hEKcHC3Fl019" + }, + "source": [ + "##### Text explanations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "4yfddrtAl019", + "outputId": "680af6c9-53c0-4b51-d4b6-d09207f00ccd" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of positive-outcome instances: 700.0\n" + ] + } + ], + "source": [ + "print(text_expl.num_positives())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Xg91poCjl01-", + "outputId": "e310a8ce-3730-4e08-dafd-6f9ecd26945a" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean difference (mean label value on privileged instances - mean label value on unprivileged instances): -0.0748013090229\n" + ] + } + ], + "source": [ + "print(text_expl.mean_difference())" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\n", - " \"metric\": \"disparate_impact\", \n", - " \"message\": \"Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 0.896567328205\", \n", - " \"numPositivePredictionsUnprivileged\": 201.0, \n", - " \"numUnprivileged\": 310.0, \n", - " \"numPositivePredictionsPrivileged\": 499.0, \n", - " \"numPrivileged\": 690.0, \n", - " \"description\": \"Computed as the ratio of likelihood of favorable outcome for the unprivileged group to that of the privileged group.\", \n", - " \"ideal\": \"The ideal value of this metric is 1.0\"\n", - "}\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "W9HdX1wUl01-", + "outputId": "aff81d6b-f850-4a9c-e25a-60e77c69b093" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 0.896567328205\n" + ] + } + ], + "source": [ + "print(text_expl.disparate_impact())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "LA2uVnjPl01_" + }, + "source": [ + "##### JSON Explanations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "id": "JCosLnQbl01_" + }, + "outputs": [], + "source": [ + "def format_json(json_str):\n", + " return json.dumps(json.loads(json_str, object_pairs_hook=OrderedDict), indent=2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "F1nemIIel01_", + "outputId": "7c03e9aa-4aee-4862-ddd5-e7abd20d5941" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"metric\": \"num_positives\", \n", + " \"message\": \"Number of positive-outcome instances: 700.0\", \n", + " \"numPositives\": 700.0, \n", + " \"description\": \"Computed as the number of positive instances for the given (privileged or unprivileged) group.\", \n", + " \"ideal\": \"The ideal value of this metric lies in the total number of positive instances made available\"\n", + "}\n" + ] + } + ], + "source": [ + "print(format_json(json_expl.num_positives()))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "vaBapB4xl01_", + "outputId": "381346be-c9e9-4f41-dbaf-2c18cdd06ff6" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"metric\": \"mean_difference\", \n", + " \"message\": \"Mean difference (mean label value on privileged instances - mean label value on unprivileged instances): -0.0748013090229\", \n", + " \"numPositivesUnprivileged\": 201.0, \n", + " \"numInstancesUnprivileged\": 310.0, \n", + " \"numPositivesPrivileged\": 499.0, \n", + " \"numInstancesPrivileged\": 690.0, \n", + " \"description\": \"Computed as the difference of the rate of favorable outcomes received by the unprivileged group to the privileged group.\", \n", + " \"ideal\": \"The ideal value of this metric is 0.0\"\n", + "}\n" + ] + } + ], + "source": [ + "print(format_json(json_expl.mean_difference()))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "qExRlmw8l02A", + "outputId": "11b63f8e-4cc6-4192-e600-de0231ae33cc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"metric\": \"disparate_impact\", \n", + " \"message\": \"Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 0.896567328205\", \n", + " \"numPositivePredictionsUnprivileged\": 201.0, \n", + " \"numUnprivileged\": 310.0, \n", + " \"numPositivePredictionsPrivileged\": 499.0, \n", + " \"numPrivileged\": 690.0, \n", + " \"description\": \"Computed as the ratio of likelihood of favorable outcome for the unprivileged group to that of the privileged group.\", \n", + " \"ideal\": \"The ideal value of this metric is 1.0\"\n", + "}\n" + ] + } + ], + "source": [ + "print(format_json(json_expl.disparate_impact()))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "id": "mu6tkv_xl02A" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + }, + "colab": { + "provenance": [] } - ], - "source": [ - "print(format_json(json_expl.disparate_impact()))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/examples/demo_lfr.ipynb b/examples/demo_lfr.ipynb index 134a2729..9ed91c43 100644 --- a/examples/demo_lfr.ipynb +++ b/examples/demo_lfr.ipynb @@ -1,473 +1,528 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### This notebook demonstrates the use of the learning fair representations algorithm for bias mitigation\n", - "Learning fair representations [1] is a pre-processing technique that finds a latent representation which encodes the data well but obfuscates information about protected attributes. We will see how to use this algorithm for learning representations that encourage individual fairness and apply them on the Adult dataset.\n", - "\n", - "References:\n", - "\n", - "[1] R. Zemel, Y. Wu, K. Swersky, T. Pitassi, and C. Dwork, \"Learning Fair Representations.\" \n", - "International Conference on Machine Learning, 2013." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "# Load all necessary packages\n", - "import sys\n", - "sys.path.append(\"../\")\n", - "from aif360.datasets import BinaryLabelDataset\n", - "from aif360.datasets import AdultDataset\n", - "from aif360.metrics import BinaryLabelDatasetMetric\n", - "from aif360.metrics import ClassificationMetric\n", - "from aif360.metrics.utils import compute_boolean_conditioning_vector\n", - "\n", - "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_adult\n", - "from aif360.algorithms.preprocessing.lfr import LFR\n", - "\n", - "from sklearn.linear_model import LogisticRegression\n", - "from sklearn.preprocessing import StandardScaler\n", - "from sklearn.metrics import accuracy_score\n", - "from sklearn.metrics import classification_report\n", - "\n", - "from IPython.display import Markdown, display\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "\n", - "from common_utils import compute_metrics" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Load dataset and set options" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# Get the dataset and split into train and test\n", - "dataset_orig = load_preproc_data_adult()\n", - "dataset_orig_train, dataset_orig_test = dataset_orig.split([0.7], shuffle=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Clean up training data" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ + "cells": [ { - "data": { - "text/markdown": [ - "#### Training Dataset shape" + "cell_type": "markdown", + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Trusted-AI/AIF360/blob/main/examples/demo_lfr.ipynb)\n" ], - "text/plain": [ - "" + "metadata": { + "id": "tVXbNnjsmVIz" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BKhA67dOmMcG" + }, + "source": [ + "#### This notebook demonstrates the use of the learning fair representations algorithm for bias mitigation\n", + "Learning fair representations [1] is a pre-processing technique that finds a latent representation which encodes the data well but obfuscates information about protected attributes. We will see how to use this algorithm for learning representations that encourage individual fairness and apply them on the Adult dataset.\n", + "\n", + "References:\n", + "\n", + "[1] R. Zemel, Y. Wu, K. Swersky, T. Pitassi, and C. Dwork, \"Learning Fair Representations.\"\n", + "International Conference on Machine Learning, 2013." ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "(34189, 18)\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "wG_aksDfmMcJ" + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "# Load all necessary packages\n", + "import sys\n", + "sys.path.append(\"../\")\n", + "from aif360.datasets import BinaryLabelDataset\n", + "from aif360.datasets import AdultDataset\n", + "from aif360.metrics import BinaryLabelDatasetMetric\n", + "from aif360.metrics import ClassificationMetric\n", + "from aif360.metrics.utils import compute_boolean_conditioning_vector\n", + "\n", + "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_adult\n", + "from aif360.algorithms.preprocessing.lfr import LFR\n", + "\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn.metrics import classification_report\n", + "\n", + "from IPython.display import Markdown, display\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "from common_utils import compute_metrics" + ] }, { - "data": { - "text/markdown": [ - "#### Favorable and unfavorable labels" - ], - "text/plain": [ - "" + "cell_type": "markdown", + "metadata": { + "id": "AtUDRcFzmMcK" + }, + "source": [ + "#### Load dataset and set options" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "1.0 0.0\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "UeELy5k1mMcL" + }, + "outputs": [], + "source": [ + "# Get the dataset and split into train and test\n", + "dataset_orig = load_preproc_data_adult()\n", + "dataset_orig_train, dataset_orig_test = dataset_orig.split([0.7], shuffle=True)" + ] }, { - "data": { - "text/markdown": [ - "#### Protected attribute names" + "cell_type": "markdown", + "metadata": { + "id": "rKE1eMYemMcL" + }, + "source": [ + "#### Clean up training data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "1rBcLsI-mMcL", + "outputId": "027ce352-06e6-478c-ceb6-1b810401643d" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Training Dataset shape" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(34189, 18)\n" + ] + }, + { + "data": { + "text/markdown": [ + "#### Favorable and unfavorable labels" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0 0.0\n" + ] + }, + { + "data": { + "text/markdown": [ + "#### Protected attribute names" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['sex', 'race']\n" + ] + }, + { + "data": { + "text/markdown": [ + "#### Privileged and unprivileged protected attribute values" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[array([1.]), array([1.])] [array([0.]), array([0.])]\n" + ] + }, + { + "data": { + "text/markdown": [ + "#### Dataset feature names" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['race', 'sex', 'Age (decade)=10', 'Age (decade)=20', 'Age (decade)=30', 'Age (decade)=40', 'Age (decade)=50', 'Age (decade)=60', 'Age (decade)=>=70', 'Education Years=6', 'Education Years=7', 'Education Years=8', 'Education Years=9', 'Education Years=10', 'Education Years=11', 'Education Years=12', 'Education Years=<6', 'Education Years=>12']\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "# print out some labels, names, etc.\n", + "display(Markdown(\"#### Training Dataset shape\"))\n", + "print(dataset_orig_train.features.shape)\n", + "display(Markdown(\"#### Favorable and unfavorable labels\"))\n", + "print(dataset_orig_train.favorable_label, dataset_orig_train.unfavorable_label)\n", + "display(Markdown(\"#### Protected attribute names\"))\n", + "print(dataset_orig_train.protected_attribute_names)\n", + "display(Markdown(\"#### Privileged and unprivileged protected attribute values\"))\n", + "print(dataset_orig_train.privileged_protected_attributes,\n", + " dataset_orig_train.unprivileged_protected_attributes)\n", + "display(Markdown(\"#### Dataset feature names\"))\n", + "print(dataset_orig_train.feature_names)" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "['sex', 'race']\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "4pY8KI0QmMcM" + }, + "source": [ + "#### Metric for original training data" + ] }, { - "data": { - "text/markdown": [ - "#### Privileged and unprivileged protected attribute values" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "n5qIXMbemMcM", + "outputId": "ad97d8eb-3381-4388-982f-5c1f070d9504" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Original training dataset" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Difference in mean outcomes between unprivileged and privileged groups = -0.193139\n" + ] + }, + { + "data": { + "text/markdown": [ + "#### Original test dataset" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Difference in mean outcomes between unprivileged and privileged groups = -0.197697\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "# Metric for the original dataset\n", + "privileged_groups = [{'sex': 1.0}]\n", + "unprivileged_groups = [{'sex': 0.0}]\n", + "\n", + "metric_orig_train = BinaryLabelDatasetMetric(dataset_orig_train,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "display(Markdown(\"#### Original training dataset\"))\n", + "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_orig_train.mean_difference())\n", + "metric_orig_test = BinaryLabelDatasetMetric(dataset_orig_test,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "display(Markdown(\"#### Original test dataset\"))\n", + "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_orig_test.mean_difference())\n" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "[array([1.]), array([1.])] [array([0.]), array([0.])]\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "xvap7BOvmMcN" + }, + "source": [ + "#### Train with and transform the original training data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "HelNehJ4mMcN" + }, + "outputs": [], + "source": [ + "scale_orig = StandardScaler()\n", + "dataset_orig_train.features = scale_orig.fit_transform(dataset_orig_train.features)\n", + "dataset_orig_test.features = scale_orig.transform(dataset_orig_test.features)" + ] }, { - "data": { - "text/markdown": [ - "#### Dataset feature names" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "V3qCK0q-mMcN", + "outputId": "76a156cf-7de7-40ef-87a1-c89add05e108" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step: 0, loss: 1.0939550595829053, L_x: 2.531834521858599, L_y: 0.8200826015334493, L_z: 0.010344502931797964\n", + "step: 250, loss: 0.9162820270109503, L_x: 2.529109218043187, L_y: 0.6432961063010657, L_z: 0.010037499452782905\n", + "step: 500, loss: 0.8207071510514392, L_x: 2.5204911168067197, L_y: 0.5500397646035967, L_z: 0.00930913738358528\n", + "step: 750, loss: 0.8102771268166408, L_x: 2.511873834704061, L_y: 0.5427956868742799, L_z: 0.008147028235977415\n", + "step: 1000, loss: 0.7996570283329768, L_x: 2.480828451323288, L_y: 0.5399446552800813, L_z: 0.00581476396028337\n", + "step: 1250, loss: 0.7844631169970814, L_x: 2.4242508289183613, L_y: 0.5304307199052671, L_z: 0.005803657099989009\n", + "step: 1500, loss: 0.7653305722023572, L_x: 2.3297047767431986, L_y: 0.5176248867874912, L_z: 0.007367603870273078\n", + "step: 1750, loss: 0.7154304631442515, L_x: 2.085955877234543, L_y: 0.48081670080967953, L_z: 0.013009087305558827\n", + "step: 2000, loss: 0.6906420918886886, L_x: 1.896344106091722, L_y: 0.4646651544564373, L_z: 0.018171263411539594\n", + "step: 2250, loss: 0.6783680937630076, L_x: 1.7895665853948028, L_y: 0.4587714378849466, L_z: 0.020319998669290275\n", + "step: 2500, loss: 0.6725576747654705, L_x: 1.742061633693402, L_y: 0.4577729094336143, L_z: 0.020289300981257967\n", + "step: 2750, loss: 0.6694103860159343, L_x: 1.7548885984309939, L_y: 0.4545867175857845, L_z: 0.019667404293525217\n", + "step: 3000, loss: 0.6658207636894926, L_x: 1.7515234617350093, L_y: 0.4539151313299769, L_z: 0.018376643093007367\n", + "step: 3250, loss: 0.6481415219979564, L_x: 1.7252276686316934, L_y: 0.4491717858033674, L_z: 0.013223484665709846\n", + "step: 3500, loss: 0.645366243737316, L_x: 1.7196207136719521, L_y: 0.4482843307446003, L_z: 0.012559920812760247\n", + "step: 3750, loss: 0.6425278186287126, L_x: 1.7117758355776211, L_y: 0.4473063883366716, L_z: 0.012021923367139413\n", + "step: 4000, loss: 0.6419409673076768, L_x: 1.7092609385556714, L_y: 0.44744616781598634, L_z: 0.011784352818061686\n", + "step: 4250, loss: 0.6377801462539607, L_x: 1.6917081956472533, L_y: 0.4496335370425122, L_z: 0.009487894823361622\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "# Input recontruction quality - Ax\n", + "# Fairness constraint - Az\n", + "# Output prediction error - Ay\n", + "\n", + "privileged_groups = [{'sex': 1}]\n", + "unprivileged_groups = [{'sex': 0}]\n", + "\n", + "TR = LFR(unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups,\n", + " k=10, Ax=0.1, Ay=1.0, Az=2.0,\n", + " verbose=1\n", + " )\n", + "TR = TR.fit(dataset_orig_train, maxiter=5000, maxfun=5000)" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "['race', 'sex', 'Age (decade)=10', 'Age (decade)=20', 'Age (decade)=30', 'Age (decade)=40', 'Age (decade)=50', 'Age (decade)=60', 'Age (decade)=>=70', 'Education Years=6', 'Education Years=7', 'Education Years=8', 'Education Years=9', 'Education Years=10', 'Education Years=11', 'Education Years=12', 'Education Years=<6', 'Education Years=>12']\n" - ] - } - ], - "source": [ - "# print out some labels, names, etc.\n", - "display(Markdown(\"#### Training Dataset shape\"))\n", - "print(dataset_orig_train.features.shape)\n", - "display(Markdown(\"#### Favorable and unfavorable labels\"))\n", - "print(dataset_orig_train.favorable_label, dataset_orig_train.unfavorable_label)\n", - "display(Markdown(\"#### Protected attribute names\"))\n", - "print(dataset_orig_train.protected_attribute_names)\n", - "display(Markdown(\"#### Privileged and unprivileged protected attribute values\"))\n", - "print(dataset_orig_train.privileged_protected_attributes, \n", - " dataset_orig_train.unprivileged_protected_attributes)\n", - "display(Markdown(\"#### Dataset feature names\"))\n", - "print(dataset_orig_train.feature_names)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Metric for original training data" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "sO4LI_hbmMcO" + }, + "outputs": [], + "source": [ + "# Transform training data and align features\n", + "dataset_transf_train = TR.transform(dataset_orig_train)\n", + "dataset_transf_test = TR.transform(dataset_orig_test)" + ] + }, { - "data": { - "text/markdown": [ - "#### Original training dataset" - ], - "text/plain": [ - "" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ZNXZ4AlUmMcO" + }, + "outputs": [], + "source": [ + "print(classification_report(dataset_orig_test.labels, dataset_transf_test.labels))" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Difference in mean outcomes between unprivileged and privileged groups = -0.193139\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "UA_fxUSemMcO" + }, + "outputs": [], + "source": [ + "metric_transf_train = BinaryLabelDatasetMetric(dataset_transf_train,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "display(Markdown(\"#### Transformed training dataset\"))\n", + "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_transf_train.mean_difference())\n", + "metric_transf_test = BinaryLabelDatasetMetric(dataset_transf_test,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "display(Markdown(\"#### Transformed test dataset\"))\n", + "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_transf_test.mean_difference())\n" + ] }, { - "data": { - "text/markdown": [ - "#### Original test dataset" - ], - "text/plain": [ - "" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "PRATChL3mMcO" + }, + "outputs": [], + "source": [ + "from common_utils import compute_metrics\n", + "\n", + "display(Markdown(\"#### Predictions from transformed testing data\"))\n", + "bal_acc_arr_transf = []\n", + "disp_imp_arr_transf = []\n", + "\n", + "class_thresh_arr = np.linspace(0.01, 0.99, 100)\n", + "\n", + "dataset_transf_test_new = dataset_orig_test.copy(deepcopy=True)\n", + "dataset_transf_test_new.scores = dataset_transf_test.scores\n", + "\n", + "\n", + "for thresh in class_thresh_arr:\n", + "\n", + " fav_inds = dataset_transf_test_new.scores > thresh\n", + " dataset_transf_test_new.labels[fav_inds] = 1.0\n", + " dataset_transf_test_new.labels[~fav_inds] = 0.0\n", + "\n", + " metric_test_aft = compute_metrics(dataset_orig_test, dataset_transf_test_new,\n", + " unprivileged_groups, privileged_groups,\n", + " disp = False)\n", + "\n", + " bal_acc_arr_transf.append(metric_test_aft[\"Balanced accuracy\"])\n", + " disp_imp_arr_transf.append(metric_test_aft[\"Disparate impact\"])" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Difference in mean outcomes between unprivileged and privileged groups = -0.197697\n" - ] - } - ], - "source": [ - "# Metric for the original dataset\n", - "privileged_groups = [{'sex': 1.0}]\n", - "unprivileged_groups = [{'sex': 0.0}]\n", - "\n", - "metric_orig_train = BinaryLabelDatasetMetric(dataset_orig_train, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "display(Markdown(\"#### Original training dataset\"))\n", - "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_orig_train.mean_difference())\n", - "metric_orig_test = BinaryLabelDatasetMetric(dataset_orig_test, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "display(Markdown(\"#### Original test dataset\"))\n", - "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_orig_test.mean_difference())\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Train with and transform the original training data" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "scale_orig = StandardScaler()\n", - "dataset_orig_train.features = scale_orig.fit_transform(dataset_orig_train.features)\n", - "dataset_orig_test.features = scale_orig.transform(dataset_orig_test.features)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "HGsipNVamMcO" + }, + "outputs": [], + "source": [ + "fig, ax1 = plt.subplots(figsize=(10,7))\n", + "ax1.plot(class_thresh_arr, bal_acc_arr_transf)\n", + "ax1.set_xlabel('Classification Thresholds', fontsize=16, fontweight='bold')\n", + "ax1.set_ylabel('Balanced Accuracy', color='b', fontsize=16, fontweight='bold')\n", + "ax1.xaxis.set_tick_params(labelsize=14)\n", + "ax1.yaxis.set_tick_params(labelsize=14)\n", + "\n", + "\n", + "ax2 = ax1.twinx()\n", + "ax2.plot(class_thresh_arr, np.abs(1.0-np.array(disp_imp_arr_transf)), color='r')\n", + "ax2.set_ylabel('abs(1-disparate impact)', color='r', fontsize=16, fontweight='bold')\n", + "ax2.yaxis.set_tick_params(labelsize=14)\n", + "ax2.grid(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "biB1DXjKmMcP" + }, + "source": [ + "abs(1-disparate impact) must be small (close to 0) for classifier predictions to be fair." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "DxtBqemwmMcP" + }, + "outputs": [], + "source": [ + "display(Markdown(\"#### Individual fairness metrics\"))\n", + "print(\"Consistency of labels in transformed training dataset= %f\" %metric_transf_train.consistency())\n", + "print(\"Consistency of labels in original training dataset= %f\" %metric_orig_train.consistency())\n", + "print(\"Consistency of labels in transformed test dataset= %f\" %metric_transf_test.consistency())\n", + "print(\"Consistency of labels in original test dataset= %f\" %metric_orig_test.consistency())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "90gI7jtwmMcP" + }, + "outputs": [], + "source": [ + "def check_algorithm_success():\n", + " \"\"\"Transformed dataset consistency should be greater than original dataset.\"\"\"\n", + " assert metric_transf_test.consistency() > metric_orig_test.consistency(), \"Transformed dataset consistency should be greater than original dataset.\"\n", + "\n", + "check_algorithm_success()" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "step: 0, loss: 1.0939550595829053, L_x: 2.531834521858599, L_y: 0.8200826015334493, L_z: 0.010344502931797964\n", - "step: 250, loss: 0.9162820270109503, L_x: 2.529109218043187, L_y: 0.6432961063010657, L_z: 0.010037499452782905\n", - "step: 500, loss: 0.8207071510514392, L_x: 2.5204911168067197, L_y: 0.5500397646035967, L_z: 0.00930913738358528\n", - "step: 750, loss: 0.8102771268166408, L_x: 2.511873834704061, L_y: 0.5427956868742799, L_z: 0.008147028235977415\n", - "step: 1000, loss: 0.7996570283329768, L_x: 2.480828451323288, L_y: 0.5399446552800813, L_z: 0.00581476396028337\n", - "step: 1250, loss: 0.7844631169970814, L_x: 2.4242508289183613, L_y: 0.5304307199052671, L_z: 0.005803657099989009\n", - "step: 1500, loss: 0.7653305722023572, L_x: 2.3297047767431986, L_y: 0.5176248867874912, L_z: 0.007367603870273078\n", - "step: 1750, loss: 0.7154304631442515, L_x: 2.085955877234543, L_y: 0.48081670080967953, L_z: 0.013009087305558827\n", - "step: 2000, loss: 0.6906420918886886, L_x: 1.896344106091722, L_y: 0.4646651544564373, L_z: 0.018171263411539594\n", - "step: 2250, loss: 0.6783680937630076, L_x: 1.7895665853948028, L_y: 0.4587714378849466, L_z: 0.020319998669290275\n", - "step: 2500, loss: 0.6725576747654705, L_x: 1.742061633693402, L_y: 0.4577729094336143, L_z: 0.020289300981257967\n", - "step: 2750, loss: 0.6694103860159343, L_x: 1.7548885984309939, L_y: 0.4545867175857845, L_z: 0.019667404293525217\n", - "step: 3000, loss: 0.6658207636894926, L_x: 1.7515234617350093, L_y: 0.4539151313299769, L_z: 0.018376643093007367\n", - "step: 3250, loss: 0.6481415219979564, L_x: 1.7252276686316934, L_y: 0.4491717858033674, L_z: 0.013223484665709846\n", - "step: 3500, loss: 0.645366243737316, L_x: 1.7196207136719521, L_y: 0.4482843307446003, L_z: 0.012559920812760247\n", - "step: 3750, loss: 0.6425278186287126, L_x: 1.7117758355776211, L_y: 0.4473063883366716, L_z: 0.012021923367139413\n", - "step: 4000, loss: 0.6419409673076768, L_x: 1.7092609385556714, L_y: 0.44744616781598634, L_z: 0.011784352818061686\n", - "step: 4250, loss: 0.6377801462539607, L_x: 1.6917081956472533, L_y: 0.4496335370425122, L_z: 0.009487894823361622\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "GkkBIqXgmMcP" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.10" + }, + "colab": { + "provenance": [] } - ], - "source": [ - "# Input recontruction quality - Ax\n", - "# Fairness constraint - Az\n", - "# Output prediction error - Ay\n", - "\n", - "privileged_groups = [{'sex': 1}]\n", - "unprivileged_groups = [{'sex': 0}]\n", - " \n", - "TR = LFR(unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups,\n", - " k=10, Ax=0.1, Ay=1.0, Az=2.0,\n", - " verbose=1\n", - " )\n", - "TR = TR.fit(dataset_orig_train, maxiter=5000, maxfun=5000)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Transform training data and align features\n", - "dataset_transf_train = TR.transform(dataset_orig_train)\n", - "dataset_transf_test = TR.transform(dataset_orig_test)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(classification_report(dataset_orig_test.labels, dataset_transf_test.labels))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "metric_transf_train = BinaryLabelDatasetMetric(dataset_transf_train, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "display(Markdown(\"#### Transformed training dataset\"))\n", - "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_transf_train.mean_difference())\n", - "metric_transf_test = BinaryLabelDatasetMetric(dataset_transf_test, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "display(Markdown(\"#### Transformed test dataset\"))\n", - "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_transf_test.mean_difference())\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from common_utils import compute_metrics\n", - "\n", - "display(Markdown(\"#### Predictions from transformed testing data\"))\n", - "bal_acc_arr_transf = []\n", - "disp_imp_arr_transf = []\n", - "\n", - "class_thresh_arr = np.linspace(0.01, 0.99, 100)\n", - "\n", - "dataset_transf_test_new = dataset_orig_test.copy(deepcopy=True)\n", - "dataset_transf_test_new.scores = dataset_transf_test.scores\n", - "\n", - "\n", - "for thresh in class_thresh_arr:\n", - " \n", - " fav_inds = dataset_transf_test_new.scores > thresh\n", - " dataset_transf_test_new.labels[fav_inds] = 1.0\n", - " dataset_transf_test_new.labels[~fav_inds] = 0.0\n", - " \n", - " metric_test_aft = compute_metrics(dataset_orig_test, dataset_transf_test_new, \n", - " unprivileged_groups, privileged_groups,\n", - " disp = False)\n", - "\n", - " bal_acc_arr_transf.append(metric_test_aft[\"Balanced accuracy\"])\n", - " disp_imp_arr_transf.append(metric_test_aft[\"Disparate impact\"])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fig, ax1 = plt.subplots(figsize=(10,7))\n", - "ax1.plot(class_thresh_arr, bal_acc_arr_transf)\n", - "ax1.set_xlabel('Classification Thresholds', fontsize=16, fontweight='bold')\n", - "ax1.set_ylabel('Balanced Accuracy', color='b', fontsize=16, fontweight='bold')\n", - "ax1.xaxis.set_tick_params(labelsize=14)\n", - "ax1.yaxis.set_tick_params(labelsize=14)\n", - "\n", - "\n", - "ax2 = ax1.twinx()\n", - "ax2.plot(class_thresh_arr, np.abs(1.0-np.array(disp_imp_arr_transf)), color='r')\n", - "ax2.set_ylabel('abs(1-disparate impact)', color='r', fontsize=16, fontweight='bold')\n", - "ax2.yaxis.set_tick_params(labelsize=14)\n", - "ax2.grid(True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "abs(1-disparate impact) must be small (close to 0) for classifier predictions to be fair." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "display(Markdown(\"#### Individual fairness metrics\"))\n", - "print(\"Consistency of labels in transformed training dataset= %f\" %metric_transf_train.consistency())\n", - "print(\"Consistency of labels in original training dataset= %f\" %metric_orig_train.consistency())\n", - "print(\"Consistency of labels in transformed test dataset= %f\" %metric_transf_test.consistency())\n", - "print(\"Consistency of labels in original test dataset= %f\" %metric_orig_test.consistency())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def check_algorithm_success():\n", - " \"\"\"Transformed dataset consistency should be greater than original dataset.\"\"\"\n", - " assert metric_transf_test.consistency() > metric_orig_test.consistency(), \"Transformed dataset consistency should be greater than original dataset.\"\n", - "\n", - "check_algorithm_success() " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.10" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/examples/demo_mdss_classifier_metric.ipynb b/examples/demo_mdss_classifier_metric.ipynb index 004d2956..13f94437 100644 --- a/examples/demo_mdss_classifier_metric.ipynb +++ b/examples/demo_mdss_classifier_metric.ipynb @@ -1,1230 +1,1381 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Bias scan using Multi-Dimensional Subset Scan (MDSS)\n", - "\n", - "\"Identifying Significant Predictive Bias in Classifiers\" https://arxiv.org/abs/1611.08292\n", - "\n", - "The goal of bias scan is to identify a subgroup(s) that has significantly more predictive bias than would be expected from an unbiased classifier. There are $\\prod_{m=1}^{M}\\left(2^{|X_{m}|}-1\\right)$ unique subgroups from a dataset with $M$ features, with each feature having $|X_{m}|$ discretized values, where a subgroup is any $M$-dimension\n", - "Cartesian set product, between subsets of feature-values from each feature --- excluding the empty set. Bias scan mitigates this computational hurdle by approximately identifing the most statistically biased subgroup in linear time (rather than exponential).\n", - "\n", - "\n", - "We define the statistical measure of predictive bias function, $score_{bias}(S)$ as a likelihood ratio score and a function of a given subgroup $S$. The null hypothesis is that the given prediction's odds are correct for all subgroups in $\\mathcal{D}$:\n", - "\n", - "$$H_{0}:odds(y_{i})=\\frac{\\hat{p}_{i}}{1-\\hat{p}_{i}}\\ \\forall i\\in\\mathcal{D}.$$\n", - "\n", - "The alternative hypothesis assumes some constant multiplicative bias in the odds for some given subgroup $S$:\n", - "\n", - "$$H_{1}:\\ odds(y_{i})=q\\frac{\\hat{p}_{i}}{1-\\hat{p}_{i}},\\ \\text{where}\\ q>1\\ \\forall i\\in S\\ \\mathrm{and}\\ q=1\\ \\forall i\\notin S.$$\n", - "\n", - "In the classification setting, each observation's likelihood is Bernoulli distributed and assumed independent. This results in the following scoring function for a subgroup $S$:\n", - "\n", - "\\begin{align*}\n", - "score_{bias}(S)= & \\max_{q}\\log\\prod_{i\\in S}\\frac{Bernoulli(\\frac{q\\hat{p}_{i}}{1-\\hat{p}_{i}+q\\hat{p}_{i}})}{Bernoulli(\\hat{p}_{i})}\\\\\n", - "= & \\max_{q}\\log(q)\\sum_{i\\in S}y_{i}-\\sum_{i\\in S}\\log(1-\\hat{p}_{i}+q\\hat{p}_{i}).\n", - "\\end{align*}\n", - "Our bias scan is thus represented as: $S^{*}=FSS(\\mathcal{D},\\mathcal{E},F_{score})=MDSS(\\mathcal{D},\\hat{p},score_{bias})$.\n", - "\n", - "where $S^{*}$ is the detected most anomalous subgroup, $FSS$ is one of several subset scan algorithms for different problem settings, $\\mathcal{D}$ is a dataset with outcomes $Y$ and discretized features $\\mathcal{X}$, $\\mathcal{E}$ are a set of expectations or 'normal' values for $Y$, and $F_{score}$ is an expectation-based scoring statistic that measures the amount of anomalousness between subgroup observations and their expectations.\n", - "\n", - "Predictive bias emphasizes comparable predictions for a subgroup and its observations and Bias scan provides a more general method that can detect and characterize such bias, or poor classifier fit, in the larger space of all possible subgroups, without a priori specification." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import itertools\n", - "\n", - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "from aif360.metrics import BinaryLabelDatasetMetric, MDSSClassificationMetric\n", - "from aif360.detectors import bias_scan\n", - "\n", - "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_compas" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll demonstrate scoring a subset and finding the most anomalous subset with bias scan using the compas dataset.\n", - "\n", - "We can specify subgroups to be scored or scan for the most anomalous subgroup. Bias scan allows us to decide if we aim to identify bias as `higher` than expected probabilities or `lower` than expected probabilities. Depending on the favourable label, the corresponding subgroup may be categorized as priviledged or unprivileged." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "dataset_orig = load_preproc_data_compas()\n", - "\n", - "female_group = [{'sex': 1}]\n", - "male_group = [{'sex': 0}]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The dataset has the categorical features one-hot encoded so we'll modify the dataset to convert them back \n", - "to the categorical featues because scanning one-hot encoded features may find subgroups that are not meaningful e.g., a subgroup with 2 race values. " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "dataset_orig_df = pd.DataFrame(dataset_orig.features, columns=dataset_orig.feature_names)\n", - "\n", - "age_cat = np.argmax(dataset_orig_df[['age_cat=Less than 25', 'age_cat=25 to 45',\n", - " 'age_cat=Greater than 45']].values, axis=1).reshape(-1, 1)\n", - "priors_count = np.argmax(dataset_orig_df[['priors_count=0', 'priors_count=1 to 3',\n", - " 'priors_count=More than 3']].values, axis=1).reshape(-1, 1)\n", - "c_charge_degree = np.argmax(dataset_orig_df[['c_charge_degree=M', 'c_charge_degree=F']].values, axis=1).reshape(-1, 1)\n", - "\n", - "features = np.concatenate((dataset_orig_df[['sex', 'race']].values, age_cat, priors_count,\n", - " c_charge_degree, dataset_orig.labels), axis=1)\n", - "feature_names = ['sex', 'race', 'age_cat', 'priors_count', 'c_charge_degree']" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "scrolled": true - }, - "outputs": [ + "cells": [ { - "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", - "
sexraceage_catpriors_countc_charge_degreetwo_year_recid
00.00.01.00.01.01.0
10.00.00.02.01.01.0
20.01.01.02.01.01.0
31.01.01.00.00.00.0
40.01.01.00.01.00.0
\n", - "
" + "cell_type": "markdown", + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Trusted-AI/AIF360/blob/main/examples/demo_mdss_classifier_metric.ipynb)" ], - "text/plain": [ - " sex race age_cat priors_count c_charge_degree two_year_recid\n", - "0 0.0 0.0 1.0 0.0 1.0 1.0\n", - "1 0.0 0.0 0.0 2.0 1.0 1.0\n", - "2 0.0 1.0 1.0 2.0 1.0 1.0\n", - "3 1.0 1.0 1.0 0.0 0.0 0.0\n", - "4 0.0 1.0 1.0 0.0 1.0 0.0" + "metadata": { + "id": "zu6QM0J8CN0q" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kci10l16B90B" + }, + "source": [ + "## Bias scan using Multi-Dimensional Subset Scan (MDSS)\n", + "\n", + "\"Identifying Significant Predictive Bias in Classifiers\" https://arxiv.org/abs/1611.08292\n", + "\n", + "The goal of bias scan is to identify a subgroup(s) that has significantly more predictive bias than would be expected from an unbiased classifier. There are $\\prod_{m=1}^{M}\\left(2^{|X_{m}|}-1\\right)$ unique subgroups from a dataset with $M$ features, with each feature having $|X_{m}|$ discretized values, where a subgroup is any $M$-dimension\n", + "Cartesian set product, between subsets of feature-values from each feature --- excluding the empty set. Bias scan mitigates this computational hurdle by approximately identifing the most statistically biased subgroup in linear time (rather than exponential).\n", + "\n", + "\n", + "We define the statistical measure of predictive bias function, $score_{bias}(S)$ as a likelihood ratio score and a function of a given subgroup $S$. The null hypothesis is that the given prediction's odds are correct for all subgroups in $\\mathcal{D}$:\n", + "\n", + "$$H_{0}:odds(y_{i})=\\frac{\\hat{p}_{i}}{1-\\hat{p}_{i}}\\ \\forall i\\in\\mathcal{D}.$$\n", + "\n", + "The alternative hypothesis assumes some constant multiplicative bias in the odds for some given subgroup $S$:\n", + "\n", + "$$H_{1}:\\ odds(y_{i})=q\\frac{\\hat{p}_{i}}{1-\\hat{p}_{i}},\\ \\text{where}\\ q>1\\ \\forall i\\in S\\ \\mathrm{and}\\ q=1\\ \\forall i\\notin S.$$\n", + "\n", + "In the classification setting, each observation's likelihood is Bernoulli distributed and assumed independent. This results in the following scoring function for a subgroup $S$:\n", + "\n", + "\\begin{align*}\n", + "score_{bias}(S)= & \\max_{q}\\log\\prod_{i\\in S}\\frac{Bernoulli(\\frac{q\\hat{p}_{i}}{1-\\hat{p}_{i}+q\\hat{p}_{i}})}{Bernoulli(\\hat{p}_{i})}\\\\\n", + "= & \\max_{q}\\log(q)\\sum_{i\\in S}y_{i}-\\sum_{i\\in S}\\log(1-\\hat{p}_{i}+q\\hat{p}_{i}).\n", + "\\end{align*}\n", + "Our bias scan is thus represented as: $S^{*}=FSS(\\mathcal{D},\\mathcal{E},F_{score})=MDSS(\\mathcal{D},\\hat{p},score_{bias})$.\n", + "\n", + "where $S^{*}$ is the detected most anomalous subgroup, $FSS$ is one of several subset scan algorithms for different problem settings, $\\mathcal{D}$ is a dataset with outcomes $Y$ and discretized features $\\mathcal{X}$, $\\mathcal{E}$ are a set of expectations or 'normal' values for $Y$, and $F_{score}$ is an expectation-based scoring statistic that measures the amount of anomalousness between subgroup observations and their expectations.\n", + "\n", + "Predictive bias emphasizes comparable predictions for a subgroup and its observations and Bias scan provides a more general method that can detect and characterize such bias, or poor classifier fit, in the larger space of all possible subgroups, without a priori specification." ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = pd.DataFrame(features, columns=feature_names + ['two_year_recid'])\n", - "df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Training\n", - "We'll create a structured dataset and then train a simple classifier to predict the probability of the outcome" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "from aif360.datasets import StandardDataset\n", - "dataset = StandardDataset(df, label_name='two_year_recid', favorable_classes=[0],\n", - " protected_attribute_names=['sex', 'race'],\n", - " privileged_classes=[[1], [1]],\n", - " instance_weights_name=None)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "dataset_orig_train, dataset_orig_test = dataset.split([0.7], shuffle=True, seed=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Train set: Difference in mean outcomes between unprivileged and privileged groups = -0.124496\n", - "Test set: Difference in mean outcomes between unprivileged and privileged groups = -0.159410\n" - ] - } - ], - "source": [ - "metric_train = BinaryLabelDatasetMetric(dataset_orig_train,\n", - " unprivileged_groups=male_group,\n", - " privileged_groups=female_group)\n", - "\n", - "print(\"Train set: Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_train.mean_difference())\n", - "metric_test = BinaryLabelDatasetMetric(dataset_orig_test,\n", - " unprivileged_groups=male_group,\n", - " privileged_groups=female_group)\n", - "print(\"Test set: Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_test.mean_difference())\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It shows that overall Females in the dataset have a lower observed recidivism them Males." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we train a classifier, the model is likely to pick up this bias in the dataset" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2DYOd2UsB90E" + }, + "outputs": [], + "source": [ + "import itertools\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "from aif360.metrics import BinaryLabelDatasetMetric, MDSSClassificationMetric\n", + "from aif360.detectors import bias_scan\n", + "\n", + "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_compas" + ] + }, { - "data": { - "text/plain": [ - "LogisticRegression(random_state=0)" + "cell_type": "markdown", + "metadata": { + "id": "SqG1-54_B90F" + }, + "source": [ + "We'll demonstrate scoring a subset and finding the most anomalous subset with bias scan using the compas dataset.\n", + "\n", + "We can specify subgroups to be scored or scan for the most anomalous subgroup. Bias scan allows us to decide if we aim to identify bias as `higher` than expected probabilities or `lower` than expected probabilities. Depending on the favourable label, the corresponding subgroup may be categorized as priviledged or unprivileged." ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from sklearn.linear_model import LogisticRegression\n", - "clf = LogisticRegression(solver='lbfgs', C=1.0, penalty='l2', random_state=0)\n", - "clf.fit(dataset_orig_train.features, dataset_orig_train.labels.flatten())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that the probability scores we use are the probabilities of the favorable label, which is 0 in this case." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "array([0., 1.])" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "CeaDWPaEB90G" + }, + "outputs": [], + "source": [ + "dataset_orig = load_preproc_data_compas()\n", + "\n", + "female_group = [{'sex': 1}]\n", + "male_group = [{'sex': 0}]" ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "clf.classes_" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "predictions should reflect the probability of a favorable outcome (i.e. no recidivism)." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "dataset_bias_test_prob = clf.predict_proba(dataset_orig_test.features)[:, 0]" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "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", - "
sexraceage_catpriors_countc_charge_degreeobservedprobabilities
01.01.02.02.01.01.00.552951
11.00.01.00.01.00.00.740959
20.01.00.01.01.00.00.374728
30.00.02.02.01.01.00.444487
40.01.01.01.00.01.00.584908
\n", - "
" + "cell_type": "markdown", + "metadata": { + "id": "UbcjVVhAB90G" + }, + "source": [ + "The dataset has the categorical features one-hot encoded so we'll modify the dataset to convert them back\n", + "to the categorical featues because scanning one-hot encoded features may find subgroups that are not meaningful e.g., a subgroup with 2 race values." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "NzbzKqmfB90G" + }, + "outputs": [], + "source": [ + "dataset_orig_df = pd.DataFrame(dataset_orig.features, columns=dataset_orig.feature_names)\n", + "\n", + "age_cat = np.argmax(dataset_orig_df[['age_cat=Less than 25', 'age_cat=25 to 45',\n", + " 'age_cat=Greater than 45']].values, axis=1).reshape(-1, 1)\n", + "priors_count = np.argmax(dataset_orig_df[['priors_count=0', 'priors_count=1 to 3',\n", + " 'priors_count=More than 3']].values, axis=1).reshape(-1, 1)\n", + "c_charge_degree = np.argmax(dataset_orig_df[['c_charge_degree=M', 'c_charge_degree=F']].values, axis=1).reshape(-1, 1)\n", + "\n", + "features = np.concatenate((dataset_orig_df[['sex', 'race']].values, age_cat, priors_count,\n", + " c_charge_degree, dataset_orig.labels), axis=1)\n", + "feature_names = ['sex', 'race', 'age_cat', 'priors_count', 'c_charge_degree']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true, + "id": "QxeSBzMVB90H", + "outputId": "a64c16ec-f5e1-40fc-81f9-1c0a4e96d521" + }, + "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", + "
sexraceage_catpriors_countc_charge_degreetwo_year_recid
00.00.01.00.01.01.0
10.00.00.02.01.01.0
20.01.01.02.01.01.0
31.01.01.00.00.00.0
40.01.01.00.01.00.0
\n", + "
" + ], + "text/plain": [ + " sex race age_cat priors_count c_charge_degree two_year_recid\n", + "0 0.0 0.0 1.0 0.0 1.0 1.0\n", + "1 0.0 0.0 0.0 2.0 1.0 1.0\n", + "2 0.0 1.0 1.0 2.0 1.0 1.0\n", + "3 1.0 1.0 1.0 0.0 0.0 0.0\n", + "4 0.0 1.0 1.0 0.0 1.0 0.0" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " sex race age_cat priors_count c_charge_degree observed probabilities\n", - "0 1.0 1.0 2.0 2.0 1.0 1.0 0.552951\n", - "1 1.0 0.0 1.0 0.0 1.0 0.0 0.740959\n", - "2 0.0 1.0 0.0 1.0 1.0 0.0 0.374728\n", - "3 0.0 0.0 2.0 2.0 1.0 1.0 0.444487\n", - "4 0.0 1.0 1.0 1.0 0.0 1.0 0.584908" + "source": [ + "df = pd.DataFrame(features, columns=feature_names + ['two_year_recid'])\n", + "df.head()" ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = pd.DataFrame(dataset_orig_test.features, columns=dataset_orig_test.feature_names)\n", - "df['observed'] = pd.Series(dataset_orig_test.labels.flatten(), index=df.index)\n", - "df['probabilities'] = pd.Series(dataset_bias_test_prob, index=df.index)\n", - "df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll the create another structured dataset as the classified dataset by assigning the predicted probabilities to the scores attribute" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "dataset_bias_test = dataset_orig_test.copy()\n", - "dataset_bias_test.scores = dataset_bias_test_prob\n", - "dataset_bias_test.labels = dataset_orig_test.labels" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Bias scoring" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, we try to observe the difference between the model prediction and the actual observations of the favorable label, which in this case is 0. We create a new test_df for this computation. \n", - "\n", - "If the model's average prediction of the favorable label is higher than the actual observations average, then the group is said to be privileged. In the converse case, the group is said to be unprivileged.\n", - "\n", - "We would check for whether the male and female groups are privileged or not using mdss score" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9MBbYHoyB90I" + }, + "source": [ + "### Training\n", + "We'll create a structured dataset and then train a simple classifier to predict the probability of the outcome" + ] + }, { - "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", - "
sexraceage_catpriors_countc_charge_degreetwo_year_recidmodel_not_recidobserved_not_recid
24791.01.02.02.01.01.00.5529510.0
35741.00.01.00.01.00.00.7409591.0
5130.01.00.01.01.00.00.3747281.0
17250.00.02.02.01.01.00.4444870.0
960.01.01.01.00.01.00.5849080.0
...........................
49310.01.00.01.01.00.00.3747281.0
32640.00.00.00.01.01.00.5357530.0
16530.00.01.01.01.00.00.4900371.0
26071.01.01.00.01.01.00.7691400.0
27320.01.00.02.00.01.00.2517260.0
\n", - "

1584 rows × 8 columns

\n", - "
" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Mr3tEubCB90I" + }, + "outputs": [], + "source": [ + "from aif360.datasets import StandardDataset\n", + "dataset = StandardDataset(df, label_name='two_year_recid', favorable_classes=[0],\n", + " protected_attribute_names=['sex', 'race'],\n", + " privileged_classes=[[1], [1]],\n", + " instance_weights_name=None)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ub0RsE6_B90I" + }, + "outputs": [], + "source": [ + "dataset_orig_train, dataset_orig_test = dataset.split([0.7], shuffle=True, seed=0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ozr0_L3AB90I", + "outputId": "b4a747cc-8121-452b-dc23-effcd43b89d7" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train set: Difference in mean outcomes between unprivileged and privileged groups = -0.124496\n", + "Test set: Difference in mean outcomes between unprivileged and privileged groups = -0.159410\n" + ] + } ], - "text/plain": [ - " sex race age_cat priors_count c_charge_degree two_year_recid \\\n", - "2479 1.0 1.0 2.0 2.0 1.0 1.0 \n", - "3574 1.0 0.0 1.0 0.0 1.0 0.0 \n", - "513 0.0 1.0 0.0 1.0 1.0 0.0 \n", - "1725 0.0 0.0 2.0 2.0 1.0 1.0 \n", - "96 0.0 1.0 1.0 1.0 0.0 1.0 \n", - "... ... ... ... ... ... ... \n", - "4931 0.0 1.0 0.0 1.0 1.0 0.0 \n", - "3264 0.0 0.0 0.0 0.0 1.0 1.0 \n", - "1653 0.0 0.0 1.0 1.0 1.0 0.0 \n", - "2607 1.0 1.0 1.0 0.0 1.0 1.0 \n", - "2732 0.0 1.0 0.0 2.0 0.0 1.0 \n", - "\n", - " model_not_recid observed_not_recid \n", - "2479 0.552951 0.0 \n", - "3574 0.740959 1.0 \n", - "513 0.374728 1.0 \n", - "1725 0.444487 0.0 \n", - "96 0.584908 0.0 \n", - "... ... ... \n", - "4931 0.374728 1.0 \n", - "3264 0.535753 0.0 \n", - "1653 0.490037 1.0 \n", - "2607 0.769140 0.0 \n", - "2732 0.251726 0.0 \n", - "\n", - "[1584 rows x 8 columns]" + "source": [ + "metric_train = BinaryLabelDatasetMetric(dataset_orig_train,\n", + " unprivileged_groups=male_group,\n", + " privileged_groups=female_group)\n", + "\n", + "print(\"Train set: Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_train.mean_difference())\n", + "metric_test = BinaryLabelDatasetMetric(dataset_orig_test,\n", + " unprivileged_groups=male_group,\n", + " privileged_groups=female_group)\n", + "print(\"Test set: Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_test.mean_difference())\n" ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "test_df = dataset_bias_test.convert_to_dataframe()[0]\n", - "test_df['model_not_recid'] = dataset_bias_test.scores.flatten()\n", - "test_df['observed_not_recid'] = 1 - test_df['two_year_recid']\n", - "test_df" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "model_not_recid 0.617561\n", - "observed_not_recid 0.657051\n", - "dtype: float64" + "cell_type": "markdown", + "metadata": { + "id": "uhDQDm_5B90J" + }, + "source": [ + "It shows that overall Females in the dataset have a lower observed recidivism them Males." ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Females actual vs predicted rates of positive label\n", - "test_df[test_df.sex == 1][['model_not_recid','observed_not_recid']].mean()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Since model average predictions for the positive label is lower than the observed average by a substantial amount (about 4%), the female group is most likely unprivileged." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "model_not_recid 0.512443\n", - "observed_not_recid 0.497642\n", - "dtype: float64" + "cell_type": "markdown", + "metadata": { + "id": "VNo-Ix97B90J" + }, + "source": [ + "If we train a classifier, the model is likely to pick up this bias in the dataset" ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Males actual vs predicted rates of positive label\n", - "test_df[test_df.sex == 0][['model_not_recid','observed_not_recid']].mean()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Since model average predictions for the positive label is greater than the observed average by a small amount (about 1.5%), the male group could be privileged." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we'll create an instance of the MDSS Classification Metric and assess the apriori defined privileged and unprivileged groups; females and males respectively. \n", - "\n", - "By apriori defining the male group as unprivileged, we are saying we expect that the model's predictions is systematically lower than the actual observation.\n", - "\n", - "By apriori defining the female group as privileged, we are saying we expect that the model's predictions is systematically higher than the actual observation.\n", - "\n", - "From our mini-analysis above, we know that these hypothesis are unlikely to be true " - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "mdss_classified = MDSSClassificationMetric(dataset_orig_test, dataset_bias_test,\n", - " unprivileged_groups=male_group,\n", - " privileged_groups=female_group)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "-0.0" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Hj1KWwaOB90J", + "outputId": "abf6f0c4-ec8c-4033-a88a-bbb11fa47900" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "LogisticRegression(random_state=0)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "clf = LogisticRegression(solver='lbfgs', C=1.0, penalty='l2', random_state=0)\n", + "clf.fit(dataset_orig_train.features, dataset_orig_train.labels.flatten())" ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# We are asking the question:\n", - "# Is there evidence that the hypothesized privileged group is actually privileged?\n", - "\n", - "female_privileged_score = mdss_classified.score_groups(privileged=True)\n", - "female_privileged_score" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By having a score very close to zero, mdss bias score is informing us that there is no evidence from the data that our hypothesis of the female group being privileged is true." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "-0.0" + "cell_type": "markdown", + "metadata": { + "id": "8bC5aDp4B90K" + }, + "source": [ + "Note that the probability scores we use are the probabilities of the favorable label, which is 0 in this case." ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# We are asking the question:\n", - "# Is there evidence that the hypothesized unprivileged group is actually unprivileged?\n", - "\n", - "male_unprivileged_score = mdss_classified.score_groups(privileged=False)\n", - "male_unprivileged_score" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By having a score very close zero, mdss bias score is informing us that there is no evidence from the data to support our hypothesis of the male group being unprivileged is true." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can flip our initial hypothesis and check if the male group is privileged or the female group is unprivileged." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "mdss_classified = MDSSClassificationMetric(dataset_orig_test, dataset_bias_test,\n", - " unprivileged_groups=female_group,\n", - " privileged_groups=male_group)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "0.63" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "tQU_CQtOB90K", + "outputId": "f9beec78-31e0-48e7-bfcf-7f276b09af16" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0., 1.])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "clf.classes_" ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "male_privileged_score = mdss_classified.score_groups(privileged=True)\n", - "male_privileged_score" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By having a positive score, mdss bias score is informing us that there is evidence from the data that our hypothesis of the male group being privileged is true." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "1.1769" + "cell_type": "markdown", + "metadata": { + "id": "UyhqLqhNB90K" + }, + "source": [ + "predictions should reflect the probability of a favorable outcome (i.e. no recidivism)." ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "female_unprivileged_score = mdss_classified.score_groups(privileged=False)\n", - "female_unprivileged_score" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By having a positive score, mdss bias score is informing us that there is evidence from the data to support our hypothesis of the female group being unprivileged is true." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By taking into account the size of the group and the magnitude of the deviation, mdss bias core has been able to tell us the following about the male and female groups:\n", - "- There is no evidence that the female group is privileged.\n", - "- There is no evidence that the male group is unprivileged.\n", - "- There is evidence that the male group is privileged.\n", - "- There is evidence that the female is unprivileged." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Bias scan\n", - "We get the bias score for the apriori defined subgroup but assuming we had no prior knowledge \n", - "about the predictive bias and wanted to find the subgroups with the most bias, we can apply bias scan to identify the priviledged and unpriviledged groups. The privileged argument is not a reference to a group but the direction for which to scan for bias." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "privileged_subset = bias_scan(df.iloc[:, :-2], df.observed, df.probabilities,\n", - " favorable_value=dataset_orig_test.favorable_label,\n", - " penalty=0.5, overpredicted=True)\n", - "unprivileged_subset = bias_scan(df.iloc[:, :-2], df.observed, df.probabilities,\n", - " favorable_value=dataset_orig_test.favorable_label,\n", - " penalty=0.5, overpredicted=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "({'race': [0.0], 'age_cat': [0.0], 'sex': [0.0]}, 3.1526)\n", - "({'sex': [1.0], 'race': [0.0]}, 3.3036)\n" - ] - } - ], - "source": [ - "print(privileged_subset)\n", - "print(unprivileged_subset)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "assert privileged_subset[0]\n", - "assert unprivileged_subset[0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can observe that the bias score is higher than the score of the prior groups. These subgroups are guaranteed to be the highest scoring subgroup among the exponentially many subgroups.\n", - "\n", - "For the purposes of this example, the logistic regression model systematically underestimates the recidivism risk of individuals in the `Non-caucasian`, `less than 25`, `Male` subgroup whereas individuals belonging to the `Non-caucasian`, `Female` are assigned a higher risk than is actually observed. We refer to these subgroups as the `detected privileged group` and `detected unprivileged group` respectively." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can create another srtuctured dataset using the new groups to compute other dataset metrics. " - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "protected_attr_names = set(privileged_subset[0].keys()).union(set(unprivileged_subset[0].keys()))\n", - "dataset_orig_test.protected_attribute_names = list(protected_attr_names)\n", - "dataset_bias_test.protected_attribute_names = list(protected_attr_names)\n", - "\n", - "protected_attr = np.where(np.isin(dataset_orig_test.feature_names, list(protected_attr_names)))[0]\n", - "\n", - "dataset_orig_test.protected_attributes = dataset_orig_test.features[:, protected_attr]\n", - "dataset_bias_test.protected_attributes = dataset_bias_test.features[:, protected_attr]" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "# converts from dictionary of lists to list of dictionaries\n", - "a = list(privileged_subset[0].values())\n", - "subset_values = list(itertools.product(*a))\n", - "\n", - "detected_privileged_groups = []\n", - "for vals in subset_values:\n", - " detected_privileged_groups.append((dict(zip(privileged_subset[0].keys(), vals))))\n", - "\n", - "a = list(unprivileged_subset[0].values())\n", - "subset_values = list(itertools.product(*a))\n", - "\n", - "detected_unprivileged_groups = []\n", - "for vals in subset_values:\n", - " detected_unprivileged_groups.append((dict(zip(unprivileged_subset[0].keys(), vals))))" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "20HUpT98B90K" + }, + "outputs": [], + "source": [ + "dataset_bias_test_prob = clf.predict_proba(dataset_orig_test.features)[:, 0]" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test set: Difference in mean outcomes between unprivileged and privileged groups = 0.275836\n" - ] - } - ], - "source": [ - "metric_bias_test = BinaryLabelDatasetMetric(dataset_bias_test,\n", - " unprivileged_groups=detected_unprivileged_groups,\n", - " privileged_groups=detected_privileged_groups)\n", - "\n", - "print(\"Test set: Difference in mean outcomes between unprivileged and privileged groups = %f\"\n", - " % metric_bias_test.mean_difference())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It appears the detected privileged group have a higher risk of recidivism than the unprivileged group." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As noted in the paper, predictive bias is different from predictive fairness so there's no the emphasis in the subgroups having comparable predictions between them. \n", - "We can investigate the difference in what the model predicts vs what we actually observed as well as the multiplicative difference in the odds of the subgroups." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "to_choose = df[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", - "temp_df = df.loc[to_choose]" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ryABk3w5B90K", + "outputId": "234f8d7b-f69a-42ad-9544-bc151e367245" + }, + "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", + "
sexraceage_catpriors_countc_charge_degreeobservedprobabilities
01.01.02.02.01.01.00.552951
11.00.01.00.01.00.00.740959
20.01.00.01.01.00.00.374728
30.00.02.02.01.01.00.444487
40.01.01.01.00.01.00.584908
\n", + "
" + ], + "text/plain": [ + " sex race age_cat priors_count c_charge_degree observed probabilities\n", + "0 1.0 1.0 2.0 2.0 1.0 1.0 0.552951\n", + "1 1.0 0.0 1.0 0.0 1.0 0.0 0.740959\n", + "2 0.0 1.0 0.0 1.0 1.0 0.0 0.374728\n", + "3 0.0 0.0 2.0 2.0 1.0 1.0 0.444487\n", + "4 0.0 1.0 1.0 1.0 0.0 1.0 0.584908" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.DataFrame(dataset_orig_test.features, columns=dataset_orig_test.feature_names)\n", + "df['observed'] = pd.Series(dataset_orig_test.labels.flatten(), index=df.index)\n", + "df['probabilities'] = pd.Series(dataset_bias_test_prob, index=df.index)\n", + "df.head()" + ] + }, { - "data": { - "text/plain": [ - "'Our detected priviledged group has a size of 192, we observe 67.71% as the average risk of recidivism, but our model predicts 57.30%'" + "cell_type": "markdown", + "metadata": { + "id": "8cH_NmUuB90L" + }, + "source": [ + "We'll the create another structured dataset as the classified dataset by assigning the predicted probabilities to the scores attribute" ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "group_obs = temp_df['observed'].mean()\n", - "group_prob = 1-temp_df['probabilities'].mean()\n", - "\n", - "\"Our detected priviledged group has a size of {}, we observe {:.2%} as the average risk of recidivism, but our model predicts {:.2%}\"\\\n", - ".format(len(temp_df), group_obs, group_prob)" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "'This is a multiplicative increase in the odds by 1.562'" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "kctU9DX1B90L" + }, + "outputs": [], + "source": [ + "dataset_bias_test = dataset_orig_test.copy()\n", + "dataset_bias_test.scores = dataset_bias_test_prob\n", + "dataset_bias_test.labels = dataset_orig_test.labels" ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "odds_mul = (group_obs / (1 - group_obs)) / (group_prob /(1 - group_prob))\n", - "\"This is a multiplicative increase in the odds by {:.3f}\".format(odds_mul)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "assert odds_mul > 1" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "to_choose = df[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", - "temp_df = df.loc[to_choose]" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "'Our detected unpriviledged group has a size of 169, we observe 33.14% as the average risk of recidivism, but our model predicts 43.65%'" + "cell_type": "markdown", + "metadata": { + "id": "OB_6l47PB90L" + }, + "source": [ + "### Bias scoring" ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "group_obs = temp_df['observed'].mean()\n", - "group_prob = 1-temp_df['probabilities'].mean()\n", - "\n", - "\"Our detected unpriviledged group has a size of {}, we observe {:.2%} as the average risk of recidivism, but our model predicts {:.2%}\"\\\n", - ".format(len(temp_df), group_obs, group_prob)" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "'This is a multiplicative decrease in the odds by 0.640'" + "cell_type": "markdown", + "metadata": { + "id": "ykJRqEA3B90L" + }, + "source": [ + "First, we try to observe the difference between the model prediction and the actual observations of the favorable label, which in this case is 0. We create a new test_df for this computation.\n", + "\n", + "If the model's average prediction of the favorable label is higher than the actual observations average, then the group is said to be privileged. In the converse case, the group is said to be unprivileged.\n", + "\n", + "We would check for whether the male and female groups are privileged or not using mdss score" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "PV5F2zMwB90L", + "outputId": "32bd9359-b7a1-4ee5-89fe-7f838dd50e15" + }, + "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", + "
sexraceage_catpriors_countc_charge_degreetwo_year_recidmodel_not_recidobserved_not_recid
24791.01.02.02.01.01.00.5529510.0
35741.00.01.00.01.00.00.7409591.0
5130.01.00.01.01.00.00.3747281.0
17250.00.02.02.01.01.00.4444870.0
960.01.01.01.00.01.00.5849080.0
...........................
49310.01.00.01.01.00.00.3747281.0
32640.00.00.00.01.01.00.5357530.0
16530.00.01.01.01.00.00.4900371.0
26071.01.01.00.01.01.00.7691400.0
27320.01.00.02.00.01.00.2517260.0
\n", + "

1584 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " sex race age_cat priors_count c_charge_degree two_year_recid \\\n", + "2479 1.0 1.0 2.0 2.0 1.0 1.0 \n", + "3574 1.0 0.0 1.0 0.0 1.0 0.0 \n", + "513 0.0 1.0 0.0 1.0 1.0 0.0 \n", + "1725 0.0 0.0 2.0 2.0 1.0 1.0 \n", + "96 0.0 1.0 1.0 1.0 0.0 1.0 \n", + "... ... ... ... ... ... ... \n", + "4931 0.0 1.0 0.0 1.0 1.0 0.0 \n", + "3264 0.0 0.0 0.0 0.0 1.0 1.0 \n", + "1653 0.0 0.0 1.0 1.0 1.0 0.0 \n", + "2607 1.0 1.0 1.0 0.0 1.0 1.0 \n", + "2732 0.0 1.0 0.0 2.0 0.0 1.0 \n", + "\n", + " model_not_recid observed_not_recid \n", + "2479 0.552951 0.0 \n", + "3574 0.740959 1.0 \n", + "513 0.374728 1.0 \n", + "1725 0.444487 0.0 \n", + "96 0.584908 0.0 \n", + "... ... ... \n", + "4931 0.374728 1.0 \n", + "3264 0.535753 0.0 \n", + "1653 0.490037 1.0 \n", + "2607 0.769140 0.0 \n", + "2732 0.251726 0.0 \n", + "\n", + "[1584 rows x 8 columns]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_df = dataset_bias_test.convert_to_dataframe()[0]\n", + "test_df['model_not_recid'] = dataset_bias_test.scores.flatten()\n", + "test_df['observed_not_recid'] = 1 - test_df['two_year_recid']\n", + "test_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "qMjfpXO4B90M", + "outputId": "78697715-5600-4c49-ee4d-a747ded2606d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "model_not_recid 0.617561\n", + "observed_not_recid 0.657051\n", + "dtype: float64" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Females actual vs predicted rates of positive label\n", + "test_df[test_df.sex == 1][['model_not_recid','observed_not_recid']].mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HKaZKOgNB90M" + }, + "source": [ + "Since model average predictions for the positive label is lower than the observed average by a substantial amount (about 4%), the female group is most likely unprivileged." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "_tKQJ0FUB90M", + "outputId": "1b6bbce7-e1b7-44c9-8803-59241e5cdc27" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "model_not_recid 0.512443\n", + "observed_not_recid 0.497642\n", + "dtype: float64" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Males actual vs predicted rates of positive label\n", + "test_df[test_df.sex == 0][['model_not_recid','observed_not_recid']].mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y-wvPZH3B90M" + }, + "source": [ + "Since model average predictions for the positive label is greater than the observed average by a small amount (about 1.5%), the male group could be privileged." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6fQGJP-2B90M" + }, + "source": [ + "Now, we'll create an instance of the MDSS Classification Metric and assess the apriori defined privileged and unprivileged groups; females and males respectively.\n", + "\n", + "By apriori defining the male group as unprivileged, we are saying we expect that the model's predictions is systematically lower than the actual observation.\n", + "\n", + "By apriori defining the female group as privileged, we are saying we expect that the model's predictions is systematically higher than the actual observation.\n", + "\n", + "From our mini-analysis above, we know that these hypothesis are unlikely to be true" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "yIqKBRPbB90M" + }, + "outputs": [], + "source": [ + "mdss_classified = MDSSClassificationMetric(dataset_orig_test, dataset_bias_test,\n", + " unprivileged_groups=male_group,\n", + " privileged_groups=female_group)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "SI_TOyu0B90N", + "outputId": "9c118292-8368-4e0b-fdee-5ef094b6e9a1" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "-0.0" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# We are asking the question:\n", + "# Is there evidence that the hypothesized privileged group is actually privileged?\n", + "\n", + "female_privileged_score = mdss_classified.score_groups(privileged=True)\n", + "female_privileged_score" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OOKIOvxUB90N" + }, + "source": [ + "By having a score very close to zero, mdss bias score is informing us that there is no evidence from the data that our hypothesis of the female group being privileged is true." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "B8dsK90PB90N", + "outputId": "4cf06af8-6ca3-49d6-a9d7-895e7ce69478" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "-0.0" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# We are asking the question:\n", + "# Is there evidence that the hypothesized unprivileged group is actually unprivileged?\n", + "\n", + "male_unprivileged_score = mdss_classified.score_groups(privileged=False)\n", + "male_unprivileged_score" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Anh6JvDAB90N" + }, + "source": [ + "By having a score very close zero, mdss bias score is informing us that there is no evidence from the data to support our hypothesis of the male group being unprivileged is true." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2QuN7nxrB90N" + }, + "source": [ + "We can flip our initial hypothesis and check if the male group is privileged or the female group is unprivileged." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Om4DTlYtB90O" + }, + "outputs": [], + "source": [ + "mdss_classified = MDSSClassificationMetric(dataset_orig_test, dataset_bias_test,\n", + " unprivileged_groups=female_group,\n", + " privileged_groups=male_group)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "baP4caqSB90O", + "outputId": "a892284c-1b54-411b-c839-45925cf17bc6" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.63" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "male_privileged_score = mdss_classified.score_groups(privileged=True)\n", + "male_privileged_score" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "vZWkojHvB90O" + }, + "source": [ + "By having a positive score, mdss bias score is informing us that there is evidence from the data that our hypothesis of the male group being privileged is true." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "bp8kBr9nB90O", + "outputId": "d689519f-775d-4a5f-e372-43de18e122ae" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1.1769" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "female_unprivileged_score = mdss_classified.score_groups(privileged=False)\n", + "female_unprivileged_score" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "v7LHafDqB90P" + }, + "source": [ + "By having a positive score, mdss bias score is informing us that there is evidence from the data to support our hypothesis of the female group being unprivileged is true." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fIO7ig11B90P" + }, + "source": [ + "By taking into account the size of the group and the magnitude of the deviation, mdss bias core has been able to tell us the following about the male and female groups:\n", + "- There is no evidence that the female group is privileged.\n", + "- There is no evidence that the male group is unprivileged.\n", + "- There is evidence that the male group is privileged.\n", + "- There is evidence that the female is unprivileged." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XlYgT7krB90Q" + }, + "source": [ + "### Bias scan\n", + "We get the bias score for the apriori defined subgroup but assuming we had no prior knowledge\n", + "about the predictive bias and wanted to find the subgroups with the most bias, we can apply bias scan to identify the priviledged and unpriviledged groups. The privileged argument is not a reference to a group but the direction for which to scan for bias." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "JDyYYrMsB90Q" + }, + "outputs": [], + "source": [ + "privileged_subset = bias_scan(df.iloc[:, :-2], df.observed, df.probabilities,\n", + " favorable_value=dataset_orig_test.favorable_label,\n", + " penalty=0.5, overpredicted=True)\n", + "unprivileged_subset = bias_scan(df.iloc[:, :-2], df.observed, df.probabilities,\n", + " favorable_value=dataset_orig_test.favorable_label,\n", + " penalty=0.5, overpredicted=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "SmDnrJb_B90Q", + "outputId": "325ae712-7d15-4a19-9732-7afe72ab3e41" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "({'race': [0.0], 'age_cat': [0.0], 'sex': [0.0]}, 3.1526)\n", + "({'sex': [1.0], 'race': [0.0]}, 3.3036)\n" + ] + } + ], + "source": [ + "print(privileged_subset)\n", + "print(unprivileged_subset)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "k3i-WdwLB90Q" + }, + "outputs": [], + "source": [ + "assert privileged_subset[0]\n", + "assert unprivileged_subset[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "LEkybEddB90Q" + }, + "source": [ + "We can observe that the bias score is higher than the score of the prior groups. These subgroups are guaranteed to be the highest scoring subgroup among the exponentially many subgroups.\n", + "\n", + "For the purposes of this example, the logistic regression model systematically underestimates the recidivism risk of individuals in the `Non-caucasian`, `less than 25`, `Male` subgroup whereas individuals belonging to the `Non-caucasian`, `Female` are assigned a higher risk than is actually observed. We refer to these subgroups as the `detected privileged group` and `detected unprivileged group` respectively." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "I_YxruutB90Q" + }, + "source": [ + "We can create another srtuctured dataset using the new groups to compute other dataset metrics. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "xdVrmsmtB90R" + }, + "outputs": [], + "source": [ + "protected_attr_names = set(privileged_subset[0].keys()).union(set(unprivileged_subset[0].keys()))\n", + "dataset_orig_test.protected_attribute_names = list(protected_attr_names)\n", + "dataset_bias_test.protected_attribute_names = list(protected_attr_names)\n", + "\n", + "protected_attr = np.where(np.isin(dataset_orig_test.feature_names, list(protected_attr_names)))[0]\n", + "\n", + "dataset_orig_test.protected_attributes = dataset_orig_test.features[:, protected_attr]\n", + "dataset_bias_test.protected_attributes = dataset_bias_test.features[:, protected_attr]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Q2W84utLB90R" + }, + "outputs": [], + "source": [ + "# converts from dictionary of lists to list of dictionaries\n", + "a = list(privileged_subset[0].values())\n", + "subset_values = list(itertools.product(*a))\n", + "\n", + "detected_privileged_groups = []\n", + "for vals in subset_values:\n", + " detected_privileged_groups.append((dict(zip(privileged_subset[0].keys(), vals))))\n", + "\n", + "a = list(unprivileged_subset[0].values())\n", + "subset_values = list(itertools.product(*a))\n", + "\n", + "detected_unprivileged_groups = []\n", + "for vals in subset_values:\n", + " detected_unprivileged_groups.append((dict(zip(unprivileged_subset[0].keys(), vals))))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "5CQLNeLMB90R", + "outputId": "fdf5c829-9610-43a1-b46c-6d6e7409f52c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test set: Difference in mean outcomes between unprivileged and privileged groups = 0.275836\n" + ] + } + ], + "source": [ + "metric_bias_test = BinaryLabelDatasetMetric(dataset_bias_test,\n", + " unprivileged_groups=detected_unprivileged_groups,\n", + " privileged_groups=detected_privileged_groups)\n", + "\n", + "print(\"Test set: Difference in mean outcomes between unprivileged and privileged groups = %f\"\n", + " % metric_bias_test.mean_difference())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "FpsKHVQOB90R" + }, + "source": [ + "It appears the detected privileged group have a higher risk of recidivism than the unprivileged group." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "aM5Xi7wYB90R" + }, + "source": [ + "As noted in the paper, predictive bias is different from predictive fairness so there's no the emphasis in the subgroups having comparable predictions between them.\n", + "We can investigate the difference in what the model predicts vs what we actually observed as well as the multiplicative difference in the odds of the subgroups." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "-S80czQ6B90R" + }, + "outputs": [], + "source": [ + "to_choose = df[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", + "temp_df = df.loc[to_choose]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Tv-pOahHB90S", + "outputId": "b4b11f9c-8ec7-4cff-c4fb-fb1dbc17f383" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected priviledged group has a size of 192, we observe 67.71% as the average risk of recidivism, but our model predicts 57.30%'" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "group_obs = temp_df['observed'].mean()\n", + "group_prob = 1-temp_df['probabilities'].mean()\n", + "\n", + "\"Our detected priviledged group has a size of {}, we observe {:.2%} as the average risk of recidivism, but our model predicts {:.2%}\"\\\n", + ".format(len(temp_df), group_obs, group_prob)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "mhzLh_ZWB90S", + "outputId": "6507496a-8086-4605-a135-e031dde9de69" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'This is a multiplicative increase in the odds by 1.562'" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "odds_mul = (group_obs / (1 - group_obs)) / (group_prob /(1 - group_prob))\n", + "\"This is a multiplicative increase in the odds by {:.3f}\".format(odds_mul)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "4CBlc07aB90S" + }, + "outputs": [], + "source": [ + "assert odds_mul > 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "u-e4oDAwB90S" + }, + "outputs": [], + "source": [ + "to_choose = df[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", + "temp_df = df.loc[to_choose]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hOwgUMAsB90S", + "outputId": "d45edf71-6256-4ae8-8c21-60c1a5275de4" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected unpriviledged group has a size of 169, we observe 33.14% as the average risk of recidivism, but our model predicts 43.65%'" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "group_obs = temp_df['observed'].mean()\n", + "group_prob = 1-temp_df['probabilities'].mean()\n", + "\n", + "\"Our detected unpriviledged group has a size of {}, we observe {:.2%} as the average risk of recidivism, but our model predicts {:.2%}\"\\\n", + ".format(len(temp_df), group_obs, group_prob)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "DHMHVUyOB90T", + "outputId": "705cf23c-7d1c-41e4-a2a7-cb8b39a5b498" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'This is a multiplicative decrease in the odds by 0.640'" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "odds_mul = (group_obs / (1 - group_obs)) / (group_prob /(1 - group_prob))\n", + "\"This is a multiplicative decrease in the odds by {:.3f}\".format(odds_mul)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "RComzQQWB90T" + }, + "outputs": [], + "source": [ + "assert odds_mul < 1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pak55cFNB90T" + }, + "source": [ + "In summary, this notebook demonstrates the use of bias scan to identify subgroups with significant predictive bias, as quantified by a likelihood ratio score, using subset scanning. This allows consideration of not just subgroups of a priori interest or small dimensions, but the space of all possible subgroups of features.\n", + "It also presents opportunity for a kind of bias mitigation technique that uses the multiplicative odds in the over-or-under estimated subgroups to adjust for predictive fairness." ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" } - ], - "source": [ - "odds_mul = (group_obs / (1 - group_obs)) / (group_prob /(1 - group_prob))\n", - "\"This is a multiplicative decrease in the odds by {:.3f}\".format(odds_mul)" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "assert odds_mul < 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In summary, this notebook demonstrates the use of bias scan to identify subgroups with significant predictive bias, as quantified by a likelihood ratio score, using subset scanning. This allows consideration of not just subgroups of a priori interest or small dimensions, but the space of all possible subgroups of features.\n", - "It also presents opportunity for a kind of bias mitigation technique that uses the multiplicative odds in the over-or-under estimated subgroups to adjust for predictive fairness." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.9.7 ('aif360')", - "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.9.7" + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.7 ('aif360')", + "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.9.7" + }, + "vscode": { + "interpreter": { + "hash": "d0c5ced7753e77a483fec8ff7063075635521cce6e0bd54998c8f174742209dd" + } + }, + "colab": { + "provenance": [] + } }, - "vscode": { - "interpreter": { - "hash": "d0c5ced7753e77a483fec8ff7063075635521cce6e0bd54998c8f174742209dd" - } - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/examples/demo_mdss_detector.ipynb b/examples/demo_mdss_detector.ipynb index 6ce0ed8d..1cf24f3e 100644 --- a/examples/demo_mdss_detector.ipynb +++ b/examples/demo_mdss_detector.ipynb @@ -1,1542 +1,1730 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Bias scan using Multi-Dimensional Subset Scan (MDSS)\n", - "\n", - "\"Identifying Significant Predictive Bias in Classifiers\" https://arxiv.org/abs/1611.08292\n", - "\n", - "The goal of bias scan is to identify a subgroup(s) that has significantly more predictive bias than would be expected from an unbiased classifier. There are $\\prod_{m=1}^{M}\\left(2^{|X_{m}|}-1\\right)$ unique subgroups from a dataset with $M$ features, with each feature having $|X_{m}|$ discretized values, where a subgroup is any $M$-dimension\n", - "Cartesian set product, between subsets of feature-values from each feature --- excluding the empty set. Bias scan mitigates this computational hurdle by approximately identifing the most statistically biased subgroup in linear time (rather than exponential).\n", - "\n", - "\n", - "We define the statistical measure of predictive bias function, $score_{bias}(S)$ as a likelihood ratio score and a function of a given subgroup $S$. The null hypothesis is that the given prediction's odds are correct for all subgroups in $\\mathcal{D}$:\n", - "\n", - "$$H_{0}:odds(y_{i})=\\frac{\\hat{p}_{i}}{1-\\hat{p}_{i}}\\ \\forall i\\in\\mathcal{D}.$$\n", - "\n", - "The alternative hypothesis assumes some constant multiplicative bias in the odds for some given subgroup $S$:\n", - "\n", - "$$H_{1}:\\ odds(y_{i})=q\\frac{\\hat{p}_{i}}{1-\\hat{p}_{i}},\\ \\text{where}\\ q>1\\ \\forall i\\in S\\ \\mathrm{and}\\ q=1\\ \\forall i\\notin S.$$\n", - "\n", - "In the classification setting, each observation's likelihood is Bernoulli distributed and assumed independent. This results in the following scoring function for a subgroup $S$:\n", - "\n", - "\\begin{align*}\n", - "score_{bias}(S)= & \\max_{q}\\log\\prod_{i\\in S}\\frac{Bernoulli(\\frac{q\\hat{p}_{i}}{1-\\hat{p}_{i}+q\\hat{p}_{i}})}{Bernoulli(\\hat{p}_{i})}\\\\\n", - "= & \\max_{q}\\log(q)\\sum_{i\\in S}y_{i}-\\sum_{i\\in S}\\log(1-\\hat{p}_{i}+q\\hat{p}_{i}).\n", - "\\end{align*}\n", - "Our bias scan is thus represented as: $S^{*}=FSS(\\mathcal{D},\\mathcal{E},F_{score})=MDSS(\\mathcal{D},\\hat{p},score_{bias})$.\n", - "\n", - "where $S^{*}$ is the detected most anomalous subgroup, $FSS$ is one of several subset scan algorithms for different problem settings, $\\mathcal{D}$ is a dataset with outcomes $Y$ and discretized features $\\mathcal{X}$, $\\mathcal{E}$ are a set of expectations or 'normal' values for $Y$, and $F_{score}$ is an expectation-based scoring statistic that measures the amount of anomalousness between subgroup observations and their expectations.\n", - "\n", - "Predictive bias emphasizes comparable predictions for a subgroup and its observations and Bias scan provides a more general method that can detect and characterize such bias, or poor classifier fit, in the larger space of all possible subgroups, without a priori specification." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Usage\n", - "\n", - "MDScan currently supports three scoring functions. These scoring functions usage are described below:\n", - "- *BerkJones*: Non-parametric scoring function. To be used for all of the four types of outcomes supported - binary, continuous, nominal, ordinal.\n", - "- *Bernoulli*: Parametric scoring function. To used for two of the four types of outcomes supported - binary and nominal.\n", - "- *Guassian*: Parametric scoring function. To used for one of the four types of outcomes supported - continuous.\n", - "- *Poisson*: Parametric scoring function. To be used for three of the four types of outcomes supported - binary, continuous, and ordinal.\n", - "\n", - "Note, non-parametric scoring functions can only be used for datasets where the expectations are constant or none.\n", - "\n", - "The type of outcomes must be provided using the mode keyword argument. The definition for the four types of outcomes supported are provided below:\n", - "- Binary: Yes/no outcomes. Outcomes must 0 or 1.\n", - "- Continuous: Continuous outcomes. Outcomes could be any real number.\n", - "- Nominal: Multiclass outcomes with no rank or order between them. Outcomes must be a finite set of integers with dimensionality <= 10.\n", - "- Ordinal: Multiclass outcomes that are ranked in a specific order. Outcomes must be positive integers.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from aif360.detectors.mdss_detector import bias_scan\n", - "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_compas\n", - "\n", - "import numpy as np\n", - "import pandas as pd" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll demonstrate finding the most anomalous subset with bias scan using the compas dataset. We can specify subgroups to be scored or scan for the most anomalous subgroup. Bias scan allows us to decide if we aim to identify bias as `higher` than expected probabilities or `lower` than expected probabilities." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Compas Dataset\n", - "This is a binary classification use case where the favorable label is 0 and the scoring function is the default bernoulli." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "np.random.seed(0)\n", - "\n", - "dataset_orig = load_preproc_data_compas()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The dataset has the categorical features one-hot encoded so we'll modify the dataset to convert them back \n", - "to the categorical featues because scanning one-hot encoded features may find subgroups that are not meaningful eg. a subgroup with 2 race values. " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "dataset_orig_df = pd.DataFrame(dataset_orig.features, columns=dataset_orig.feature_names)\n", - "\n", - "age_cat = np.argmax(dataset_orig_df[['age_cat=Less than 25', 'age_cat=25 to 45', \n", - " 'age_cat=Greater than 45']].values, axis=1).reshape(-1, 1)\n", - "priors_count = np.argmax(dataset_orig_df[['priors_count=0', 'priors_count=1 to 3', \n", - " 'priors_count=More than 3']].values, axis=1).reshape(-1, 1)\n", - "c_charge_degree = np.argmax(dataset_orig_df[['c_charge_degree=F', 'c_charge_degree=M']].values, axis=1).reshape(-1, 1)\n", - "\n", - "features = np.concatenate((dataset_orig_df[['sex', 'race']].values, age_cat, priors_count, \\\n", - " c_charge_degree, dataset_orig.labels), axis=1)\n", - "feature_names = ['sex', 'race', 'age_cat', 'priors_count', 'c_charge_degree']" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "df = pd.DataFrame(features, columns=feature_names + ['two_year_recid'])" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
sexraceage_catpriors_countc_charge_degreetwo_year_recid
00.00.01.00.00.01.0
10.00.00.02.00.01.0
20.01.01.02.00.01.0
31.01.01.00.01.00.0
40.01.01.00.00.00.0
\n", - "
" + "cells": [ + { + "cell_type": "markdown", + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Trusted-AI/AIF360/blob/main/examples/demo_mdss_detector.ipynb)" ], - "text/plain": [ - " sex race age_cat priors_count c_charge_degree two_year_recid\n", - "0 0.0 0.0 1.0 0.0 0.0 1.0\n", - "1 0.0 0.0 0.0 2.0 0.0 1.0\n", - "2 0.0 1.0 1.0 2.0 0.0 1.0\n", - "3 1.0 1.0 1.0 0.0 1.0 0.0\n", - "4 0.0 1.0 1.0 0.0 0.0 0.0" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### training\n", - "We'll train a simple classifier to predict the probability of the outcome" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "LogisticRegression()" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from sklearn.linear_model import LogisticRegression\n", - "X = df.drop('two_year_recid', axis = 1)\n", - "y = df['two_year_recid']\n", - "clf = LogisticRegression(solver='lbfgs', C=1.0, penalty='l2')\n", - "clf.fit(X, y)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that the probability scores we use are the probabilities of the favorable label, which is 0 in this case." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "probs = pd.Series(clf.predict_proba(X)[:,0])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### bias scan\n", - "We can scan for a privileged and unprivileged subset using bias scan" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "privileged_subset = bias_scan(data=X,observations=y,expectations=probs,favorable_value=0, overpredicted=True)\n", - "unprivileged_subset = bias_scan(data=X,observations=y,expectations=probs,favorable_value=0,overpredicted=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "({'age_cat': [1.0], 'priors_count': [0.0, 1.0, 2.0], 'sex': [1.0], 'race': [1.0], 'c_charge_degree': [0.0]}, 7.9086)\n", - "({'race': [0.0], 'age_cat': [1.0, 2.0], 'priors_count': [1.0], 'c_charge_degree': [0.0, 1.0]}, 7.0227)\n" - ] - } - ], - "source": [ - "print(privileged_subset)\n", - "print(unprivileged_subset)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "dff = X.copy()\n", - "dff['observed'] = y \n", - "dff['probabilities'] = 1 - probs" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "to_choose = dff[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", - "temp_df = dff.loc[to_choose]" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Our detected priviledged group has a size of 147, we observe 0.5374149659863946 as the average risk of recidivism, but our model predicts 0.38278159716895366'" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\"Our detected priviledged group has a size of {}, we observe {} as the average risk of recidivism, but our model predicts {}\"\\\n", - ".format(len(temp_df), temp_df['observed'].mean(), temp_df['probabilities'].mean())" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "to_choose = dff[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", - "temp_df = dff.loc[to_choose]" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Our detected priviledged group has a size of 732, we observe 0.3770491803278688 as the average risk of recidivism, but our model predicts 0.4447038821779929'" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\"Our detected priviledged group has a size of {}, we observe {} as the average risk of recidivism, but our model predicts {}\"\\\n", - ".format(len(temp_df), temp_df['observed'].mean(), temp_df['probabilities'].mean())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Adult Dataset\n", - "This is a binary classification use case where the favorable label is 1 and the scoring function is the berk jones." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "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", - "
workclasseducationmarital_statusoccupationrelationshipracesexnative_countryage_bineducation_num_binhours_per_week_bincapital_gain_bincapital_loss_binobservedexpectation
0Private11thNever-marriedMachine-op-inspctOwn-childBlackMaleUnited-States17-271-840-440000.236226
1PrivateHS-gradMarried-civ-spouseFarming-fishingHusbandWhiteMaleUnited-States37-47945-990000.236226
2Local-govAssoc-acdmMarried-civ-spouseProtective-servHusbandWhiteMaleUnited-States28-3612-1640-440010.236226
3PrivateSome-collegeMarried-civ-spouseMachine-op-inspctHusbandBlackMaleUnited-States37-4710-1140-447298-7978010.236226
4?Some-collegeNever-married?Own-childWhiteFemaleUnited-States17-2710-111-390000.236226
\n", - "
" + "metadata": { + "id": "cot8Opn7Ck5r" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xYzhBYSCChiJ" + }, + "source": [ + "## Bias scan using Multi-Dimensional Subset Scan (MDSS)\n", + "\n", + "\"Identifying Significant Predictive Bias in Classifiers\" https://arxiv.org/abs/1611.08292\n", + "\n", + "The goal of bias scan is to identify a subgroup(s) that has significantly more predictive bias than would be expected from an unbiased classifier. There are $\\prod_{m=1}^{M}\\left(2^{|X_{m}|}-1\\right)$ unique subgroups from a dataset with $M$ features, with each feature having $|X_{m}|$ discretized values, where a subgroup is any $M$-dimension\n", + "Cartesian set product, between subsets of feature-values from each feature --- excluding the empty set. Bias scan mitigates this computational hurdle by approximately identifing the most statistically biased subgroup in linear time (rather than exponential).\n", + "\n", + "\n", + "We define the statistical measure of predictive bias function, $score_{bias}(S)$ as a likelihood ratio score and a function of a given subgroup $S$. The null hypothesis is that the given prediction's odds are correct for all subgroups in $\\mathcal{D}$:\n", + "\n", + "$$H_{0}:odds(y_{i})=\\frac{\\hat{p}_{i}}{1-\\hat{p}_{i}}\\ \\forall i\\in\\mathcal{D}.$$\n", + "\n", + "The alternative hypothesis assumes some constant multiplicative bias in the odds for some given subgroup $S$:\n", + "\n", + "$$H_{1}:\\ odds(y_{i})=q\\frac{\\hat{p}_{i}}{1-\\hat{p}_{i}},\\ \\text{where}\\ q>1\\ \\forall i\\in S\\ \\mathrm{and}\\ q=1\\ \\forall i\\notin S.$$\n", + "\n", + "In the classification setting, each observation's likelihood is Bernoulli distributed and assumed independent. This results in the following scoring function for a subgroup $S$:\n", + "\n", + "\\begin{align*}\n", + "score_{bias}(S)= & \\max_{q}\\log\\prod_{i\\in S}\\frac{Bernoulli(\\frac{q\\hat{p}_{i}}{1-\\hat{p}_{i}+q\\hat{p}_{i}})}{Bernoulli(\\hat{p}_{i})}\\\\\n", + "= & \\max_{q}\\log(q)\\sum_{i\\in S}y_{i}-\\sum_{i\\in S}\\log(1-\\hat{p}_{i}+q\\hat{p}_{i}).\n", + "\\end{align*}\n", + "Our bias scan is thus represented as: $S^{*}=FSS(\\mathcal{D},\\mathcal{E},F_{score})=MDSS(\\mathcal{D},\\hat{p},score_{bias})$.\n", + "\n", + "where $S^{*}$ is the detected most anomalous subgroup, $FSS$ is one of several subset scan algorithms for different problem settings, $\\mathcal{D}$ is a dataset with outcomes $Y$ and discretized features $\\mathcal{X}$, $\\mathcal{E}$ are a set of expectations or 'normal' values for $Y$, and $F_{score}$ is an expectation-based scoring statistic that measures the amount of anomalousness between subgroup observations and their expectations.\n", + "\n", + "Predictive bias emphasizes comparable predictions for a subgroup and its observations and Bias scan provides a more general method that can detect and characterize such bias, or poor classifier fit, in the larger space of all possible subgroups, without a priori specification." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_StPscBKChiM" + }, + "source": [ + "### Usage\n", + "\n", + "MDScan currently supports three scoring functions. These scoring functions usage are described below:\n", + "- *BerkJones*: Non-parametric scoring function. To be used for all of the four types of outcomes supported - binary, continuous, nominal, ordinal.\n", + "- *Bernoulli*: Parametric scoring function. To used for two of the four types of outcomes supported - binary and nominal.\n", + "- *Guassian*: Parametric scoring function. To used for one of the four types of outcomes supported - continuous.\n", + "- *Poisson*: Parametric scoring function. To be used for three of the four types of outcomes supported - binary, continuous, and ordinal.\n", + "\n", + "Note, non-parametric scoring functions can only be used for datasets where the expectations are constant or none.\n", + "\n", + "The type of outcomes must be provided using the mode keyword argument. The definition for the four types of outcomes supported are provided below:\n", + "- Binary: Yes/no outcomes. Outcomes must 0 or 1.\n", + "- Continuous: Continuous outcomes. Outcomes could be any real number.\n", + "- Nominal: Multiclass outcomes with no rank or order between them. Outcomes must be a finite set of integers with dimensionality <= 10.\n", + "- Ordinal: Multiclass outcomes that are ranked in a specific order. Outcomes must be positive integers.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "pEw-BVOaChiM" + }, + "outputs": [], + "source": [ + "from aif360.detectors.mdss_detector import bias_scan\n", + "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_compas\n", + "\n", + "import numpy as np\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WBaUrHfAChiN" + }, + "source": [ + "We'll demonstrate finding the most anomalous subset with bias scan using the compas dataset. We can specify subgroups to be scored or scan for the most anomalous subgroup. Bias scan allows us to decide if we aim to identify bias as `higher` than expected probabilities or `lower` than expected probabilities." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b-4Qb66XChiN" + }, + "source": [ + "# Compas Dataset\n", + "This is a binary classification use case where the favorable label is 0 and the scoring function is the default bernoulli." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Yzhak7pCChiO" + }, + "outputs": [], + "source": [ + "np.random.seed(0)\n", + "\n", + "dataset_orig = load_preproc_data_compas()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_aaSrX5ZChiO" + }, + "source": [ + "The dataset has the categorical features one-hot encoded so we'll modify the dataset to convert them back\n", + "to the categorical featues because scanning one-hot encoded features may find subgroups that are not meaningful eg. a subgroup with 2 race values." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EsV3GU1TChiO" + }, + "outputs": [], + "source": [ + "dataset_orig_df = pd.DataFrame(dataset_orig.features, columns=dataset_orig.feature_names)\n", + "\n", + "age_cat = np.argmax(dataset_orig_df[['age_cat=Less than 25', 'age_cat=25 to 45',\n", + " 'age_cat=Greater than 45']].values, axis=1).reshape(-1, 1)\n", + "priors_count = np.argmax(dataset_orig_df[['priors_count=0', 'priors_count=1 to 3',\n", + " 'priors_count=More than 3']].values, axis=1).reshape(-1, 1)\n", + "c_charge_degree = np.argmax(dataset_orig_df[['c_charge_degree=F', 'c_charge_degree=M']].values, axis=1).reshape(-1, 1)\n", + "\n", + "features = np.concatenate((dataset_orig_df[['sex', 'race']].values, age_cat, priors_count, \\\n", + " c_charge_degree, dataset_orig.labels), axis=1)\n", + "feature_names = ['sex', 'race', 'age_cat', 'priors_count', 'c_charge_degree']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "jWLqSK0pChiO" + }, + "outputs": [], + "source": [ + "df = pd.DataFrame(features, columns=feature_names + ['two_year_recid'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true, + "id": "EfTmpJKMChiP", + "outputId": "b3287ae8-bee7-4d60-bfac-a201c384849f" + }, + "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", + "
sexraceage_catpriors_countc_charge_degreetwo_year_recid
00.00.01.00.00.01.0
10.00.00.02.00.01.0
20.01.01.02.00.01.0
31.01.01.00.01.00.0
40.01.01.00.00.00.0
\n", + "
" + ], + "text/plain": [ + " sex race age_cat priors_count c_charge_degree two_year_recid\n", + "0 0.0 0.0 1.0 0.0 0.0 1.0\n", + "1 0.0 0.0 0.0 2.0 0.0 1.0\n", + "2 0.0 1.0 1.0 2.0 0.0 1.0\n", + "3 1.0 1.0 1.0 0.0 1.0 0.0\n", + "4 0.0 1.0 1.0 0.0 0.0 0.0" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " workclass education marital_status occupation \\\n", - "0 Private 11th Never-married Machine-op-inspct \n", - "1 Private HS-grad Married-civ-spouse Farming-fishing \n", - "2 Local-gov Assoc-acdm Married-civ-spouse Protective-serv \n", - "3 Private Some-college Married-civ-spouse Machine-op-inspct \n", - "4 ? Some-college Never-married ? \n", - "\n", - " relationship race sex native_country age_bin education_num_bin \\\n", - "0 Own-child Black Male United-States 17-27 1-8 \n", - "1 Husband White Male United-States 37-47 9 \n", - "2 Husband White Male United-States 28-36 12-16 \n", - "3 Husband Black Male United-States 37-47 10-11 \n", - "4 Own-child White Female United-States 17-27 10-11 \n", - "\n", - " hours_per_week_bin capital_gain_bin capital_loss_bin observed expectation \n", - "0 40-44 0 0 0 0.236226 \n", - "1 45-99 0 0 0 0.236226 \n", - "2 40-44 0 0 1 0.236226 \n", - "3 40-44 7298-7978 0 1 0.236226 \n", - "4 1-39 0 0 0 0.236226 " - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data = pd.read_csv('https://gist.githubusercontent.com/Viktour19/b690679802c431646d36f7e2dd117b9e/raw/d8f17bf25664bd2d9fa010750b9e451c4155dd61/adult_autostrat.csv')\n", - "data.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that for the adult dataset, the positive label is 1 and thus the expectations provided is the probability of the earning >50k i.e label 1 and the favorable label is 1 which is the default for binary classification tasks. Since we would be using scoring function BerkJones, we also need to pass in an alpha value. Alpha can be interpreted as what proportion of the data you expect to have the favorable value" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "X = data.drop(['observed','expectation'], axis = 1)\n", - "probs = data['expectation']\n", - "y = data['observed']" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "privileged_subset = bias_scan(data=X, observations=y, scoring='BerkJones', expectations=probs, overpredicted=True,penalty=50, alpha = .24)\n", - "unprivileged_subset = bias_scan(data=X,observations=y, scoring='BerkJones', expectations=probs, overpredicted=False,penalty=50, alpha = .24)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "({'relationship': [' Not-in-family', ' Other-relative', ' Own-child', ' Unmarried'], 'capital_gain_bin': ['0']}, 932.4812)\n", - "({'education_num_bin': ['12-16'], 'marital_status': [' Married-civ-spouse']}, 1041.1901)\n" - ] - } - ], - "source": [ - "print(privileged_subset)\n", - "print(unprivileged_subset)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "dff = X.copy()\n", - "dff['observed'] = y \n", - "dff['probabilities'] = probs" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Our detected privileged group has a size of 8532, we observe 0.0472 as the average probability of earning >50k, but our model predicts 0.2362'" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "to_choose = dff[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", - "temp_df = dff.loc[to_choose]\n", - "\n", - "\"Our detected privileged group has a size of {}, we observe {} as the average probability of earning >50k, but our model predicts {}\"\\\n", - ".format(len(temp_df), np.round(temp_df['observed'].mean(),4), np.round(temp_df['probabilities'].mean(),4))" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Our detected unprivileged group has a size of 2430, we observe 0.6996 as the average probability of earning >50k, but our model predicts 0.2362'" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "to_choose = dff[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", - "temp_df = dff.loc[to_choose]\n", - "\n", - "\"Our detected unprivileged group has a size of {}, we observe {} as the average probability of earning >50k, but our model predicts {}\"\\\n", - ".format(len(temp_df), np.round(temp_df['observed'].mean(),4), np.round(temp_df['probabilities'].mean(),4))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Insurance Costs\n", - "This is a regression use case where the favorable value is 0 and the scoring function is Gaussian." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1338, 7)" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data = pd.read_csv('https://raw.githubusercontent.com/Adebayo-Oshingbesan/data/main/insurance.csv')\n", - "data.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "for col in ['bmi','age']:\n", - " data[col] = pd.qcut(data[col], 10, duplicates='drop')\n", - " data[col] = data[col].apply(lambda x: str(round(x.left, 2)) + ' - ' + str(round(x.right,2)))" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "features = data.drop('charges', axis = 1)\n", - "X = features.copy()\n", - "\n", - "for feature in X.columns:\n", - " X[feature] = X[feature].astype('category').cat.codes\n", - "\n", - "y = data['charges']" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.linear_model import LinearRegression\n", - "reg = LinearRegression()\n", - "reg.fit(X, y)\n", - "y_pred = pd.Series(reg.predict(X))" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "privileged_subset = bias_scan(data=features, observations=y, expectations=y_pred, scoring = 'Gaussian', \n", - " overpredicted=True, penalty=1e10, mode ='continuous', favorable_value='low')\n", - "\n", - "unprivileged_subset = bias_scan(data=features, observations=y, expectations=y_pred, scoring = 'Gaussian', \n", - " overpredicted=False, penalty=1e10, mode ='continuous', favorable_value='low')" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "({'bmi': ['15.96 - 22.99', '22.99 - 25.33', '25.33 - 27.36'], 'smoker': ['no']}, 2384.5786)\n", - "({'bmi': ['15.96 - 22.99', '22.99 - 25.33', '25.33 - 27.36', '27.36 - 28.8'], 'smoker': ['yes']}, 3927.8765)\n" - ] - } - ], - "source": [ - "print(privileged_subset)\n", - "print(unprivileged_subset)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Our detected privileged group has a size of 321, we observe 7844.8402958566985 as the mean insurance costs, but our model predicts 5420.493262774548'" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "to_choose = data[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", - "temp_df = data.loc[to_choose].copy()\n", - "temp_y = y_pred.loc[to_choose].copy()\n", - "\n", - "\"Our detected privileged group has a size of {}, we observe {} as the mean insurance costs, but our model predicts {}\"\\\n", - ".format(len(temp_df), temp_df['charges'].mean(), temp_y.mean())" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Our detected privileged group has a size of 115, we observe 21148.373896173915 as the mean insurance costs, but our model predicts 29694.035319112845'" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "to_choose = data[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", - "temp_df = data.loc[to_choose].copy()\n", - "temp_y = y_pred.loc[to_choose].copy()\n", - "\n", - "\"Our detected privileged group has a size of {}, we observe {} as the mean insurance costs, but our model predicts {}\"\\\n", - ".format(len(temp_df), temp_df['charges'].mean(), temp_y.mean())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Hospitalization Time\n", - "This is an ordinal, multiclass classification use case where the favorable value is 1 and the scoring function is Poisson." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(29980, 22)" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data = pd.read_csv('https://raw.githubusercontent.com/Adebayo-Oshingbesan/data/main/hospital.csv')\n", - "data = data[data['Length of Stay'] != '120 +'].fillna('Unknown')\n", - "data.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "X = data.drop(['Length of Stay'], axis = 1)\n", - "y = pd.to_numeric(data['Length of Stay'])" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "privileged_subset = bias_scan(data=X, observations=y, scoring = 'Poisson', favorable_value = 'low', overpredicted=True, penalty=50, mode ='ordinal')\n", - "unprivileged_subset = bias_scan(data=X, observations=y, scoring = 'Poisson', favorable_value = 'low', overpredicted=False, penalty=50, mode ='ordinal')" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "({'APR Severity of Illness Description': ['Extreme']}, 11180.5386)\n", - "({'Patient Disposition': ['Home or Self Care', 'Left Against Medical Advice', 'Short-term Hospital'], 'APR Severity of Illness Description': ['Minor', 'Moderate'], 'APR MDC Code': [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21]}, 9950.881)\n" - ] - } - ], - "source": [ - "print(privileged_subset)\n", - "print(unprivileged_subset)" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "dff = X.copy()\n", - "dff['observed'] = y \n", - "dff['predicted'] = y.mean()" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Our detected privileged group has a size of 1900, we observe 15.2216 as the average number of days spent in the hospital, but our model predicts 5.4231'" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "to_choose = dff[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", - "temp_df = dff.loc[to_choose]\n", - "\n", - "\"Our detected privileged group has a size of {}, we observe {} as the average number of days spent in the hospital, but our model predicts {}\"\\\n", - ".format(len(temp_df), np.round(temp_df['observed'].mean(),4), np.round(temp_df['predicted'].mean(),4))" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Our detected unprivileged group has a size of 14620, we observe 2.8301 as the average number of days spent in the hospital, but our model predicts 5.4231'" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "to_choose = dff[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", - "temp_df = dff.loc[to_choose]\n", - "\n", - "\"Our detected unprivileged group has a size of {}, we observe {} as the average number of days spent in the hospital, but our model predicts {}\"\\\n", - ".format(len(temp_df), np.round(temp_df['observed'].mean(),4), np.round(temp_df['predicted'].mean(),4))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Temperature Dataset\n", - "This is a regression use case where the favorable value is the higher temperatures and the scoring function is Berk Jones." - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "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", - "
SummaryPrecipTypeHumidityWindSpeedVisibilityPressureDailySummaryTemperature
0Partly Cloudyrain0.8914.119715.82631015.13Partly cloudy throughout the day.9.472222
1Partly Cloudyrain0.8614.264615.82631015.63Partly cloudy throughout the day.9.355556
2Mostly Cloudyrain0.893.928414.95691015.94Partly cloudy throughout the day.9.377778
3Partly Cloudyrain0.8314.103615.82631016.41Partly cloudy throughout the day.8.288889
4Mostly Cloudyrain0.8311.044615.82631016.51Partly cloudy throughout the day.8.755556
\n", - "
" + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wXtPQiNOChiQ" + }, + "source": [ + "### training\n", + "We'll train a simple classifier to predict the probability of the outcome" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "djiP9uJfChiQ", + "outputId": "092e5ab3-1060-4ba9-cb2e-c05aa9b6aecd" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "LogisticRegression()" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " Summary PrecipType Humidity WindSpeed Visibility Pressure \\\n", - "0 Partly Cloudy rain 0.89 14.1197 15.8263 1015.13 \n", - "1 Partly Cloudy rain 0.86 14.2646 15.8263 1015.63 \n", - "2 Mostly Cloudy rain 0.89 3.9284 14.9569 1015.94 \n", - "3 Partly Cloudy rain 0.83 14.1036 15.8263 1016.41 \n", - "4 Mostly Cloudy rain 0.83 11.0446 15.8263 1016.51 \n", - "\n", - " DailySummary Temperature \n", - "0 Partly cloudy throughout the day. 9.472222 \n", - "1 Partly cloudy throughout the day. 9.355556 \n", - "2 Partly cloudy throughout the day. 9.377778 \n", - "3 Partly cloudy throughout the day. 8.288889 \n", - "4 Partly cloudy throughout the day. 8.755556 " - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data = pd.read_csv('https://raw.githubusercontent.com/Adebayo-Oshingbesan/data/main/weatherHistory.csv')\n", - "data.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Binning the continuous features since bias scan support only categorical features." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [], - "source": [ - "for col in ['Humidity','WindSpeed','Visibility','Pressure']:\n", - " data[col] = pd.qcut(data[col], 10, duplicates='drop')\n", - " data[col] = data[col].apply(lambda x: str(round(x.left, 2)) + ' - ' + str(round(x.right,2)))" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "features = data.drop('Temperature', axis = 1)\n", - "y = data['Temperature']" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "privileged_subset = bias_scan(data=features, observations=y, favorable_value = 'high',\n", - " scoring = 'BerkJones', overpredicted=True, penalty=50, mode ='continuous', alpha = .4)\n", - "\n", - "unprivileged_subset = bias_scan(data=features, observations=y, favorable_value = 'high',\n", - " scoring = 'BerkJones', overpredicted=False, penalty=50, mode ='continuous', alpha = .4)" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "({'Pressure': ['-0.0 - 1007.07', '1018.17 - 1020.0', '1020.0 - 1022.42', '1022.42 - 1026.61', '1026.61 - 1046.38'], 'Humidity': ['0.72 - 0.78', '0.78 - 0.83', '0.83 - 0.87', '0.87 - 0.92', '0.92 - 0.95', '0.95 - 1.0']}, 6907.8227)\n", - "({'Visibility': ['9.9 - 9.98', '9.98 - 10.05', '10.05 - 11.04', '11.04 - 11.45', '11.45 - 15.15', '15.15 - 15.83', '15.83 - 16.1'], 'PrecipType': ['rain'], 'Pressure': ['-0.0 - 1007.07', '1007.07 - 1010.68', '1010.68 - 1012.95', '1012.95 - 1014.8', '1014.8 - 1016.45', '1016.45 - 1018.17', '1018.17 - 1020.0', '1020.0 - 1022.42']}, 19962.4291)\n" - ] - } - ], - "source": [ - "print(privileged_subset)\n", - "print(unprivileged_subset)" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Our detected privileged group has a size of 31607, we observe 5.155584909121934 as the mean temperature, but our model predicts 11.93267843751985'" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "to_choose = data[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", - "temp_df = data.loc[to_choose].copy()\n", - "\n", - "\"Our detected privileged group has a size of {}, we observe {} as the mean temperature, but our model predicts {}\"\\\n", - ".format(len(temp_df), temp_df['Temperature'].mean(), y.mean())" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Our detected unprivileged group has a size of 55642, we observe 16.773802762911078 as the mean temperature, but our model predicts 11.93267843751985'" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "to_choose = data[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", - "temp_df = data.loc[to_choose].copy()\n", - "\n", - "\"Our detected unprivileged group has a size of {}, we observe {} as the mean temperature, but our model predicts {}\"\\\n", - ".format(len(temp_df), temp_df['Temperature'].mean(), y.mean())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Iris Dataset\n", - "This is an nominal, multiclass classification use case where the favorable value is a flower specie and the scoring function is Bernoulli." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "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", - "
SepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
05.13.51.40.2Iris-setosa
14.93.01.40.2Iris-setosa
24.73.21.30.2Iris-setosa
34.63.11.50.2Iris-setosa
45.03.61.40.2Iris-setosa
\n", - "
" + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "X = df.drop('two_year_recid', axis = 1)\n", + "y = df['two_year_recid']\n", + "clf = LogisticRegression(solver='lbfgs', C=1.0, penalty='l2')\n", + "clf.fit(X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xg10wgXrChiQ" + }, + "source": [ + "Note that the probability scores we use are the probabilities of the favorable label, which is 0 in this case." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "6DftyJMwChiQ" + }, + "outputs": [], + "source": [ + "probs = pd.Series(clf.predict_proba(X)[:,0])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Hg8G2sw1ChiR" + }, + "source": [ + "### bias scan\n", + "We can scan for a privileged and unprivileged subset using bias scan" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "s5DAn7t9ChiR" + }, + "outputs": [], + "source": [ + "privileged_subset = bias_scan(data=X,observations=y,expectations=probs,favorable_value=0, overpredicted=True)\n", + "unprivileged_subset = bias_scan(data=X,observations=y,expectations=probs,favorable_value=0,overpredicted=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "XEcSO-DWChiR", + "outputId": "2c0ed17b-0ef5-49e6-b06a-e8ee63c1806e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "({'age_cat': [1.0], 'priors_count': [0.0, 1.0, 2.0], 'sex': [1.0], 'race': [1.0], 'c_charge_degree': [0.0]}, 7.9086)\n", + "({'race': [0.0], 'age_cat': [1.0, 2.0], 'priors_count': [1.0], 'c_charge_degree': [0.0, 1.0]}, 7.0227)\n" + ] + } ], - "text/plain": [ - " SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species\n", - "0 5.1 3.5 1.4 0.2 Iris-setosa\n", - "1 4.9 3.0 1.4 0.2 Iris-setosa\n", - "2 4.7 3.2 1.3 0.2 Iris-setosa\n", - "3 4.6 3.1 1.5 0.2 Iris-setosa\n", - "4 5.0 3.6 1.4 0.2 Iris-setosa" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "iris_data = pd.read_csv('https://raw.githubusercontent.com/Adebayo-Oshingbesan/data/main/Iris.csv').drop('Id', axis = 1)\n", - "iris_data.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [], - "source": [ - "for col in iris_data.columns:\n", - " if col != 'Species':\n", - " iris_data[col] = pd.qcut(iris_data[col], 10, duplicates='drop')\n", - " iris_data[col] = iris_data[col].apply(lambda x: str(round(x.left, 2)) + ' - ' + str(round(x.right,2)))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " Training simple model on data" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [], - "source": [ - "X = iris_data.drop('Species', axis = 1)\n", - "for col in X.columns:\n", - " X[col] = X[col].cat.codes\n", - "\n", - "y = iris_data['Species']" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.linear_model import LogisticRegression\n", - "clf_2 = LogisticRegression(C=1e-3)\n", - "clf_2.fit(X, y)\n", - "iris_data['Prediction'] = clf_2.predict(X)" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [], - "source": [ - "features = iris_data.drop(['Species','Prediction'], axis = 1)\n", - "expectations = pd.DataFrame(clf_2.predict_proba(X), columns=clf_2.classes_)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Bias scan" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [], - "source": [ - "privileged_subset = bias_scan(data=features, observations=y, expectations=expectations, scoring = 'Bernoulli', \n", - " favorable_value = 'Iris-virginica', overpredicted=True, penalty=.05, mode ='nominal')\n", - "unprivileged_subset = bias_scan(data=features, observations=y, expectations=expectations, scoring = 'Bernoulli', \n", - " favorable_value = 'Iris-virginica', overpredicted=False, penalty=.005, mode ='nominal')" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "({'PetalLengthCm': ['1.0 - 1.4', '1.4 - 1.5', '1.5 - 1.7', '1.7 - 3.9', '3.9 - 4.35', '4.35 - 4.64'], 'PetalWidthCm': ['0.1 - 0.2', '0.2 - 0.4', '0.4 - 1.16', '1.16 - 1.3', '1.3 - 1.5']}, 20.0508)\n", - "({'SepalLengthCm': ['4.8 - 5.0', '5.6 - 5.8', '6.1 - 6.3', '6.3 - 6.52', '6.52 - 6.9', '6.9 - 7.9'], 'PetalWidthCm': ['1.5 - 1.8', '1.8 - 1.9', '1.9 - 2.2', '2.2 - 2.5'], 'PetalLengthCm': ['4.35 - 4.64', '5.0 - 5.32', '5.32 - 5.8', '5.8 - 6.9']}, 22.101)\n" - ] - } - ], - "source": [ - "print(privileged_subset)\n", - "print(unprivileged_subset)" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Our detected privileged group has a size of 88, we observe 0 as the count of Iris-virginica, but our model predicts 50'" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "to_choose = iris_data[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", - "temp_df = iris_data.loc[to_choose].copy()\n", - "\n", - "\"Our detected privileged group has a size of {}, we observe {} as the count of Iris-virginica, but our model predicts {}\"\\\n", - ".format(len(temp_df), (temp_df['Species'] == 'Iris-virginica').sum(), (temp_df['Prediction'] == 'Iris-setosa').sum())" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Our detected unprivileged group has a size of 39, we observe 39 as the count of Iris-virginica, but our model predicts 38'" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "to_choose = iris_data[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", - "temp_df = iris_data.loc[to_choose].copy()\n", - "\n", - "\"Our detected unprivileged group has a size of {}, we observe {} as the count of Iris-virginica, but our model predicts {}\"\\\n", - ".format(len(temp_df), (temp_df['Species'] == 'Iris-virginica').sum(), (temp_df['Prediction'] == 'Iris-virginica').sum())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Assuming we want to scan for the second most privileged group, we can remove the records that belongs to the most privileged_subset and then rescan." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [], - "source": [ - "to_choose = iris_data[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", - "X_filtered = iris_data[~to_choose]\n", - "y_filtered = y[~to_choose]" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [], - "source": [ - "privileged_subset = bias_scan(data=X_filtered.drop(['Species','Prediction'], axis = 1), observations=y_filtered, \n", - " favorable_value = 'Iris-virginica', scoring = 'Bernoulli', overpredicted=True, penalty=1e-6, mode = 'nominal')" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "({'PetalLengthCm': ['1.0 - 1.4', '1.4 - 1.5', '1.5 - 1.7', '1.7 - 3.9', '3.9 - 4.35', '4.35 - 4.64']}, 36.0207)\n" - ] + "source": [ + "print(privileged_subset)\n", + "print(unprivileged_subset)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "F-0Po3Z0ChiR" + }, + "outputs": [], + "source": [ + "dff = X.copy()\n", + "dff['observed'] = y\n", + "dff['probabilities'] = 1 - probs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BiAQLZTyChiR" + }, + "outputs": [], + "source": [ + "to_choose = dff[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", + "temp_df = dff.loc[to_choose]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "sSKlQJ5GChiR", + "outputId": "a35f78f8-8590-46be-d8e5-7d2326a8c125" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected priviledged group has a size of 147, we observe 0.5374149659863946 as the average risk of recidivism, but our model predicts 0.38278159716895366'" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"Our detected priviledged group has a size of {}, we observe {} as the average risk of recidivism, but our model predicts {}\"\\\n", + ".format(len(temp_df), temp_df['observed'].mean(), temp_df['probabilities'].mean())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "mXzojdkmChiS" + }, + "outputs": [], + "source": [ + "to_choose = dff[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", + "temp_df = dff.loc[to_choose]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "GYXXRRboChiS", + "outputId": "b2203dbe-33b6-41a8-da39-005684236ac7" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected priviledged group has a size of 732, we observe 0.3770491803278688 as the average risk of recidivism, but our model predicts 0.4447038821779929'" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"Our detected priviledged group has a size of {}, we observe {} as the average risk of recidivism, but our model predicts {}\"\\\n", + ".format(len(temp_df), temp_df['observed'].mean(), temp_df['probabilities'].mean())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SzLEtrNVChiS" + }, + "source": [ + "# Adult Dataset\n", + "This is a binary classification use case where the favorable label is 1 and the scoring function is the berk jones." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "-keubU1FChiS", + "outputId": "2e83deac-8a79-4c74-e4bf-f2b0663345c6" + }, + "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", + "
workclasseducationmarital_statusoccupationrelationshipracesexnative_countryage_bineducation_num_binhours_per_week_bincapital_gain_bincapital_loss_binobservedexpectation
0Private11thNever-marriedMachine-op-inspctOwn-childBlackMaleUnited-States17-271-840-440000.236226
1PrivateHS-gradMarried-civ-spouseFarming-fishingHusbandWhiteMaleUnited-States37-47945-990000.236226
2Local-govAssoc-acdmMarried-civ-spouseProtective-servHusbandWhiteMaleUnited-States28-3612-1640-440010.236226
3PrivateSome-collegeMarried-civ-spouseMachine-op-inspctHusbandBlackMaleUnited-States37-4710-1140-447298-7978010.236226
4?Some-collegeNever-married?Own-childWhiteFemaleUnited-States17-2710-111-390000.236226
\n", + "
" + ], + "text/plain": [ + " workclass education marital_status occupation \\\n", + "0 Private 11th Never-married Machine-op-inspct \n", + "1 Private HS-grad Married-civ-spouse Farming-fishing \n", + "2 Local-gov Assoc-acdm Married-civ-spouse Protective-serv \n", + "3 Private Some-college Married-civ-spouse Machine-op-inspct \n", + "4 ? Some-college Never-married ? \n", + "\n", + " relationship race sex native_country age_bin education_num_bin \\\n", + "0 Own-child Black Male United-States 17-27 1-8 \n", + "1 Husband White Male United-States 37-47 9 \n", + "2 Husband White Male United-States 28-36 12-16 \n", + "3 Husband Black Male United-States 37-47 10-11 \n", + "4 Own-child White Female United-States 17-27 10-11 \n", + "\n", + " hours_per_week_bin capital_gain_bin capital_loss_bin observed expectation \n", + "0 40-44 0 0 0 0.236226 \n", + "1 45-99 0 0 0 0.236226 \n", + "2 40-44 0 0 1 0.236226 \n", + "3 40-44 7298-7978 0 1 0.236226 \n", + "4 1-39 0 0 0 0.236226 " + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.read_csv('https://gist.githubusercontent.com/Viktour19/b690679802c431646d36f7e2dd117b9e/raw/d8f17bf25664bd2d9fa010750b9e451c4155dd61/adult_autostrat.csv')\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "J7Cgj8FqChiS" + }, + "source": [ + "Note that for the adult dataset, the positive label is 1 and thus the expectations provided is the probability of the earning >50k i.e label 1 and the favorable label is 1 which is the default for binary classification tasks. Since we would be using scoring function BerkJones, we also need to pass in an alpha value. Alpha can be interpreted as what proportion of the data you expect to have the favorable value" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "O1SjEJe5ChiS" + }, + "outputs": [], + "source": [ + "X = data.drop(['observed','expectation'], axis = 1)\n", + "probs = data['expectation']\n", + "y = data['observed']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "QN7OywqMChiS" + }, + "outputs": [], + "source": [ + "privileged_subset = bias_scan(data=X, observations=y, scoring='BerkJones', expectations=probs, overpredicted=True,penalty=50, alpha = .24)\n", + "unprivileged_subset = bias_scan(data=X,observations=y, scoring='BerkJones', expectations=probs, overpredicted=False,penalty=50, alpha = .24)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "w_iAu1aYChiT", + "outputId": "8fd30d41-0357-4396-d2c6-0e1c537c5a18" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "({'relationship': [' Not-in-family', ' Other-relative', ' Own-child', ' Unmarried'], 'capital_gain_bin': ['0']}, 932.4812)\n", + "({'education_num_bin': ['12-16'], 'marital_status': [' Married-civ-spouse']}, 1041.1901)\n" + ] + } + ], + "source": [ + "print(privileged_subset)\n", + "print(unprivileged_subset)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "peWzovx9ChiT" + }, + "outputs": [], + "source": [ + "dff = X.copy()\n", + "dff['observed'] = y\n", + "dff['probabilities'] = probs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EpY65LofChiT", + "outputId": "de4642f3-3ffb-4076-dc72-bbdc3a400c6f" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected privileged group has a size of 8532, we observe 0.0472 as the average probability of earning >50k, but our model predicts 0.2362'" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "to_choose = dff[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", + "temp_df = dff.loc[to_choose]\n", + "\n", + "\"Our detected privileged group has a size of {}, we observe {} as the average probability of earning >50k, but our model predicts {}\"\\\n", + ".format(len(temp_df), np.round(temp_df['observed'].mean(),4), np.round(temp_df['probabilities'].mean(),4))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "PwgDaz0pChiT", + "outputId": "0a5f3580-803e-4bde-edbd-de3d94de2d65" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected unprivileged group has a size of 2430, we observe 0.6996 as the average probability of earning >50k, but our model predicts 0.2362'" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "to_choose = dff[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", + "temp_df = dff.loc[to_choose]\n", + "\n", + "\"Our detected unprivileged group has a size of {}, we observe {} as the average probability of earning >50k, but our model predicts {}\"\\\n", + ".format(len(temp_df), np.round(temp_df['observed'].mean(),4), np.round(temp_df['probabilities'].mean(),4))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "LXTW6plLChiT" + }, + "source": [ + "# Insurance Costs\n", + "This is a regression use case where the favorable value is 0 and the scoring function is Gaussian." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ZjCIbdjHChiT", + "outputId": "152e0c16-7036-405f-b3e5-b1b6e544bba7" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1338, 7)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.read_csv('https://raw.githubusercontent.com/Adebayo-Oshingbesan/data/main/insurance.csv')\n", + "data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "xvUrgNm0ChiU" + }, + "outputs": [], + "source": [ + "for col in ['bmi','age']:\n", + " data[col] = pd.qcut(data[col], 10, duplicates='drop')\n", + " data[col] = data[col].apply(lambda x: str(round(x.left, 2)) + ' - ' + str(round(x.right,2)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "UUG30SyKChiU" + }, + "outputs": [], + "source": [ + "features = data.drop('charges', axis = 1)\n", + "X = features.copy()\n", + "\n", + "for feature in X.columns:\n", + " X[feature] = X[feature].astype('category').cat.codes\n", + "\n", + "y = data['charges']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "yHnX7-OFChiU" + }, + "outputs": [], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "reg = LinearRegression()\n", + "reg.fit(X, y)\n", + "y_pred = pd.Series(reg.predict(X))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "lOfpbRoOChiU" + }, + "outputs": [], + "source": [ + "privileged_subset = bias_scan(data=features, observations=y, expectations=y_pred, scoring = 'Gaussian',\n", + " overpredicted=True, penalty=1e10, mode ='continuous', favorable_value='low')\n", + "\n", + "unprivileged_subset = bias_scan(data=features, observations=y, expectations=y_pred, scoring = 'Gaussian',\n", + " overpredicted=False, penalty=1e10, mode ='continuous', favorable_value='low')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "l33QGsytChiU", + "outputId": "3a17f919-fffa-404d-b0bd-ca50a06050bf" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "({'bmi': ['15.96 - 22.99', '22.99 - 25.33', '25.33 - 27.36'], 'smoker': ['no']}, 2384.5786)\n", + "({'bmi': ['15.96 - 22.99', '22.99 - 25.33', '25.33 - 27.36', '27.36 - 28.8'], 'smoker': ['yes']}, 3927.8765)\n" + ] + } + ], + "source": [ + "print(privileged_subset)\n", + "print(unprivileged_subset)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "FWQXeaXCChiU", + "outputId": "62a22a5b-6801-4e52-b163-a9662aba90aa" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected privileged group has a size of 321, we observe 7844.8402958566985 as the mean insurance costs, but our model predicts 5420.493262774548'" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "to_choose = data[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", + "temp_df = data.loc[to_choose].copy()\n", + "temp_y = y_pred.loc[to_choose].copy()\n", + "\n", + "\"Our detected privileged group has a size of {}, we observe {} as the mean insurance costs, but our model predicts {}\"\\\n", + ".format(len(temp_df), temp_df['charges'].mean(), temp_y.mean())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "tZTmBX6AChia", + "outputId": "00d084db-6be3-443a-c88d-3be5bd0aa93a" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected privileged group has a size of 115, we observe 21148.373896173915 as the mean insurance costs, but our model predicts 29694.035319112845'" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "to_choose = data[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", + "temp_df = data.loc[to_choose].copy()\n", + "temp_y = y_pred.loc[to_choose].copy()\n", + "\n", + "\"Our detected privileged group has a size of {}, we observe {} as the mean insurance costs, but our model predicts {}\"\\\n", + ".format(len(temp_df), temp_df['charges'].mean(), temp_y.mean())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "V-eFnnGoChib" + }, + "source": [ + "# Hospitalization Time\n", + "This is an ordinal, multiclass classification use case where the favorable value is 1 and the scoring function is Poisson." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "CQhDUxmLChib", + "outputId": "5667e6b9-48e1-4e6c-ba3f-ee1e51e6dd59" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(29980, 22)" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.read_csv('https://raw.githubusercontent.com/Adebayo-Oshingbesan/data/main/hospital.csv')\n", + "data = data[data['Length of Stay'] != '120 +'].fillna('Unknown')\n", + "data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Y8f8KIbBChib" + }, + "outputs": [], + "source": [ + "X = data.drop(['Length of Stay'], axis = 1)\n", + "y = pd.to_numeric(data['Length of Stay'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "GujHJ6dxChib" + }, + "outputs": [], + "source": [ + "privileged_subset = bias_scan(data=X, observations=y, scoring = 'Poisson', favorable_value = 'low', overpredicted=True, penalty=50, mode ='ordinal')\n", + "unprivileged_subset = bias_scan(data=X, observations=y, scoring = 'Poisson', favorable_value = 'low', overpredicted=False, penalty=50, mode ='ordinal')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ijEm55FYChib", + "outputId": "c59cf22a-8989-45b5-d7fa-90d17cfbf571" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "({'APR Severity of Illness Description': ['Extreme']}, 11180.5386)\n", + "({'Patient Disposition': ['Home or Self Care', 'Left Against Medical Advice', 'Short-term Hospital'], 'APR Severity of Illness Description': ['Minor', 'Moderate'], 'APR MDC Code': [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21]}, 9950.881)\n" + ] + } + ], + "source": [ + "print(privileged_subset)\n", + "print(unprivileged_subset)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "sW0U5lJSChib" + }, + "outputs": [], + "source": [ + "dff = X.copy()\n", + "dff['observed'] = y\n", + "dff['predicted'] = y.mean()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "mCE1XmynChib", + "outputId": "855049ca-dca0-43a9-ccf0-cb878d45626a" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected privileged group has a size of 1900, we observe 15.2216 as the average number of days spent in the hospital, but our model predicts 5.4231'" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "to_choose = dff[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", + "temp_df = dff.loc[to_choose]\n", + "\n", + "\"Our detected privileged group has a size of {}, we observe {} as the average number of days spent in the hospital, but our model predicts {}\"\\\n", + ".format(len(temp_df), np.round(temp_df['observed'].mean(),4), np.round(temp_df['predicted'].mean(),4))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "6_sJJ7ytChic", + "outputId": "7b94ce1f-71f5-4e20-eb64-f5a322aec649" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected unprivileged group has a size of 14620, we observe 2.8301 as the average number of days spent in the hospital, but our model predicts 5.4231'" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "to_choose = dff[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", + "temp_df = dff.loc[to_choose]\n", + "\n", + "\"Our detected unprivileged group has a size of {}, we observe {} as the average number of days spent in the hospital, but our model predicts {}\"\\\n", + ".format(len(temp_df), np.round(temp_df['observed'].mean(),4), np.round(temp_df['predicted'].mean(),4))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OurrfXisChic" + }, + "source": [ + "# Temperature Dataset\n", + "This is a regression use case where the favorable value is the higher temperatures and the scoring function is Berk Jones." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "YijsudnQChic", + "outputId": "13ce0ef1-e6a5-4a9a-f550-537e7c0d7f15" + }, + "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", + "
SummaryPrecipTypeHumidityWindSpeedVisibilityPressureDailySummaryTemperature
0Partly Cloudyrain0.8914.119715.82631015.13Partly cloudy throughout the day.9.472222
1Partly Cloudyrain0.8614.264615.82631015.63Partly cloudy throughout the day.9.355556
2Mostly Cloudyrain0.893.928414.95691015.94Partly cloudy throughout the day.9.377778
3Partly Cloudyrain0.8314.103615.82631016.41Partly cloudy throughout the day.8.288889
4Mostly Cloudyrain0.8311.044615.82631016.51Partly cloudy throughout the day.8.755556
\n", + "
" + ], + "text/plain": [ + " Summary PrecipType Humidity WindSpeed Visibility Pressure \\\n", + "0 Partly Cloudy rain 0.89 14.1197 15.8263 1015.13 \n", + "1 Partly Cloudy rain 0.86 14.2646 15.8263 1015.63 \n", + "2 Mostly Cloudy rain 0.89 3.9284 14.9569 1015.94 \n", + "3 Partly Cloudy rain 0.83 14.1036 15.8263 1016.41 \n", + "4 Mostly Cloudy rain 0.83 11.0446 15.8263 1016.51 \n", + "\n", + " DailySummary Temperature \n", + "0 Partly cloudy throughout the day. 9.472222 \n", + "1 Partly cloudy throughout the day. 9.355556 \n", + "2 Partly cloudy throughout the day. 9.377778 \n", + "3 Partly cloudy throughout the day. 8.288889 \n", + "4 Partly cloudy throughout the day. 8.755556 " + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.read_csv('https://raw.githubusercontent.com/Adebayo-Oshingbesan/data/main/weatherHistory.csv')\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nWsgeaAoChic" + }, + "source": [ + "Binning the continuous features since bias scan support only categorical features." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "yBU4ApF_Chic" + }, + "outputs": [], + "source": [ + "for col in ['Humidity','WindSpeed','Visibility','Pressure']:\n", + " data[col] = pd.qcut(data[col], 10, duplicates='drop')\n", + " data[col] = data[col].apply(lambda x: str(round(x.left, 2)) + ' - ' + str(round(x.right,2)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "L9ZDBb05Chic" + }, + "outputs": [], + "source": [ + "features = data.drop('Temperature', axis = 1)\n", + "y = data['Temperature']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "OErDGbP7Chic" + }, + "outputs": [], + "source": [ + "privileged_subset = bias_scan(data=features, observations=y, favorable_value = 'high',\n", + " scoring = 'BerkJones', overpredicted=True, penalty=50, mode ='continuous', alpha = .4)\n", + "\n", + "unprivileged_subset = bias_scan(data=features, observations=y, favorable_value = 'high',\n", + " scoring = 'BerkJones', overpredicted=False, penalty=50, mode ='continuous', alpha = .4)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "qHcrvsRrChid", + "outputId": "4e8e8b4c-2b39-4aed-a497-aaa71a068305" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "({'Pressure': ['-0.0 - 1007.07', '1018.17 - 1020.0', '1020.0 - 1022.42', '1022.42 - 1026.61', '1026.61 - 1046.38'], 'Humidity': ['0.72 - 0.78', '0.78 - 0.83', '0.83 - 0.87', '0.87 - 0.92', '0.92 - 0.95', '0.95 - 1.0']}, 6907.8227)\n", + "({'Visibility': ['9.9 - 9.98', '9.98 - 10.05', '10.05 - 11.04', '11.04 - 11.45', '11.45 - 15.15', '15.15 - 15.83', '15.83 - 16.1'], 'PrecipType': ['rain'], 'Pressure': ['-0.0 - 1007.07', '1007.07 - 1010.68', '1010.68 - 1012.95', '1012.95 - 1014.8', '1014.8 - 1016.45', '1016.45 - 1018.17', '1018.17 - 1020.0', '1020.0 - 1022.42']}, 19962.4291)\n" + ] + } + ], + "source": [ + "print(privileged_subset)\n", + "print(unprivileged_subset)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "qSXQ5YCrChid", + "outputId": "8e120487-1088-4c20-fdd0-445e3a6c87ff" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected privileged group has a size of 31607, we observe 5.155584909121934 as the mean temperature, but our model predicts 11.93267843751985'" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "to_choose = data[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", + "temp_df = data.loc[to_choose].copy()\n", + "\n", + "\"Our detected privileged group has a size of {}, we observe {} as the mean temperature, but our model predicts {}\"\\\n", + ".format(len(temp_df), temp_df['Temperature'].mean(), y.mean())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "nEVOD0hRChid", + "outputId": "7aa5f93c-1b13-4cdf-d280-599caf98f4a1" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected unprivileged group has a size of 55642, we observe 16.773802762911078 as the mean temperature, but our model predicts 11.93267843751985'" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "to_choose = data[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", + "temp_df = data.loc[to_choose].copy()\n", + "\n", + "\"Our detected unprivileged group has a size of {}, we observe {} as the mean temperature, but our model predicts {}\"\\\n", + ".format(len(temp_df), temp_df['Temperature'].mean(), y.mean())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "K5gEwJeeChid" + }, + "source": [ + "# Iris Dataset\n", + "This is an nominal, multiclass classification use case where the favorable value is a flower specie and the scoring function is Bernoulli." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2r6LHOaEChid", + "outputId": "a3de6e37-70a5-4d5e-c963-a73542660785" + }, + "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", + "
SepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
05.13.51.40.2Iris-setosa
14.93.01.40.2Iris-setosa
24.73.21.30.2Iris-setosa
34.63.11.50.2Iris-setosa
45.03.61.40.2Iris-setosa
\n", + "
" + ], + "text/plain": [ + " SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species\n", + "0 5.1 3.5 1.4 0.2 Iris-setosa\n", + "1 4.9 3.0 1.4 0.2 Iris-setosa\n", + "2 4.7 3.2 1.3 0.2 Iris-setosa\n", + "3 4.6 3.1 1.5 0.2 Iris-setosa\n", + "4 5.0 3.6 1.4 0.2 Iris-setosa" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "iris_data = pd.read_csv('https://raw.githubusercontent.com/Adebayo-Oshingbesan/data/main/Iris.csv').drop('Id', axis = 1)\n", + "iris_data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "LcrAOo8_Chid" + }, + "outputs": [], + "source": [ + "for col in iris_data.columns:\n", + " if col != 'Species':\n", + " iris_data[col] = pd.qcut(iris_data[col], 10, duplicates='drop')\n", + " iris_data[col] = iris_data[col].apply(lambda x: str(round(x.left, 2)) + ' - ' + str(round(x.right,2)))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-YMP9Vn4Chie" + }, + "source": [ + " Training simple model on data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "UAmGe08iChie" + }, + "outputs": [], + "source": [ + "X = iris_data.drop('Species', axis = 1)\n", + "for col in X.columns:\n", + " X[col] = X[col].cat.codes\n", + "\n", + "y = iris_data['Species']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "KwiBCBS2Chie" + }, + "outputs": [], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "clf_2 = LogisticRegression(C=1e-3)\n", + "clf_2.fit(X, y)\n", + "iris_data['Prediction'] = clf_2.predict(X)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "xmILWHzJChie" + }, + "outputs": [], + "source": [ + "features = iris_data.drop(['Species','Prediction'], axis = 1)\n", + "expectations = pd.DataFrame(clf_2.predict_proba(X), columns=clf_2.classes_)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4PFjV1M5Chie" + }, + "source": [ + "Bias scan" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "6aNKTPWnChie" + }, + "outputs": [], + "source": [ + "privileged_subset = bias_scan(data=features, observations=y, expectations=expectations, scoring = 'Bernoulli',\n", + " favorable_value = 'Iris-virginica', overpredicted=True, penalty=.05, mode ='nominal')\n", + "unprivileged_subset = bias_scan(data=features, observations=y, expectations=expectations, scoring = 'Bernoulli',\n", + " favorable_value = 'Iris-virginica', overpredicted=False, penalty=.005, mode ='nominal')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "qsS4-RavChie", + "outputId": "753bbe0d-ea3b-42bd-a0e0-ff0b16f6f097" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "({'PetalLengthCm': ['1.0 - 1.4', '1.4 - 1.5', '1.5 - 1.7', '1.7 - 3.9', '3.9 - 4.35', '4.35 - 4.64'], 'PetalWidthCm': ['0.1 - 0.2', '0.2 - 0.4', '0.4 - 1.16', '1.16 - 1.3', '1.3 - 1.5']}, 20.0508)\n", + "({'SepalLengthCm': ['4.8 - 5.0', '5.6 - 5.8', '6.1 - 6.3', '6.3 - 6.52', '6.52 - 6.9', '6.9 - 7.9'], 'PetalWidthCm': ['1.5 - 1.8', '1.8 - 1.9', '1.9 - 2.2', '2.2 - 2.5'], 'PetalLengthCm': ['4.35 - 4.64', '5.0 - 5.32', '5.32 - 5.8', '5.8 - 6.9']}, 22.101)\n" + ] + } + ], + "source": [ + "print(privileged_subset)\n", + "print(unprivileged_subset)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "bnaSm1EZChie", + "outputId": "5dfa7e86-309a-44fa-c49d-b3a9b0044d65" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected privileged group has a size of 88, we observe 0 as the count of Iris-virginica, but our model predicts 50'" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "to_choose = iris_data[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", + "temp_df = iris_data.loc[to_choose].copy()\n", + "\n", + "\"Our detected privileged group has a size of {}, we observe {} as the count of Iris-virginica, but our model predicts {}\"\\\n", + ".format(len(temp_df), (temp_df['Species'] == 'Iris-virginica').sum(), (temp_df['Prediction'] == 'Iris-setosa').sum())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "9h6-a6P0Chif", + "outputId": "99ab2c4c-f3a9-45df-8be9-4f32c58fcaf2" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected unprivileged group has a size of 39, we observe 39 as the count of Iris-virginica, but our model predicts 38'" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "to_choose = iris_data[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", + "temp_df = iris_data.loc[to_choose].copy()\n", + "\n", + "\"Our detected unprivileged group has a size of {}, we observe {} as the count of Iris-virginica, but our model predicts {}\"\\\n", + ".format(len(temp_df), (temp_df['Species'] == 'Iris-virginica').sum(), (temp_df['Prediction'] == 'Iris-virginica').sum())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MZttznF3Chif" + }, + "source": [ + "Assuming we want to scan for the second most privileged group, we can remove the records that belongs to the most privileged_subset and then rescan." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EiDMjpAUChif" + }, + "outputs": [], + "source": [ + "to_choose = iris_data[unprivileged_subset[0].keys()].isin(unprivileged_subset[0]).all(axis=1)\n", + "X_filtered = iris_data[~to_choose]\n", + "y_filtered = y[~to_choose]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "FGRZ11QAChif" + }, + "outputs": [], + "source": [ + "privileged_subset = bias_scan(data=X_filtered.drop(['Species','Prediction'], axis = 1), observations=y_filtered,\n", + " favorable_value = 'Iris-virginica', scoring = 'Bernoulli', overpredicted=True, penalty=1e-6, mode = 'nominal')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "45vgxTdEChif", + "outputId": "40ba98f2-a25a-4065-abff-91ca794acfe3" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "({'PetalLengthCm': ['1.0 - 1.4', '1.4 - 1.5', '1.5 - 1.7', '1.7 - 3.9', '3.9 - 4.35', '4.35 - 4.64']}, 36.0207)\n" + ] + } + ], + "source": [ + "print(privileged_subset)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "7rcDITN6Chif", + "outputId": "e1fedb40-179f-46b2-bcc9-639743db19c7" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Our detected privileged group has a size of 89, we observe 0 as the count of Iris-virginica, but our model predicts 4'" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "to_choose = X_filtered[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", + "temp_df = X_filtered.loc[to_choose]\n", + "\n", + "\"Our detected privileged group has a size of {}, we observe {} as the count of Iris-virginica, but our model predicts {}\"\\\n", + ".format(len(temp_df), (temp_df['Species'] == 'Iris-virginica').sum(), (temp_df['Prediction'] == 'Iris-virginica').sum())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7eR5OiuoChif" + }, + "source": [ + "In summary, this notebook explains how to use the new mdss bias scan interface in aif360.detectors to scan for bias, even for tasks beyond binary classification, using the concepts of over-predictions and under-predictions." + ] } - ], - "source": [ - "print(privileged_subset)" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Our detected privileged group has a size of 89, we observe 0 as the count of Iris-virginica, but our model predicts 4'" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.7 ('aif360')", + "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.9.7" + }, + "vscode": { + "interpreter": { + "hash": "d0c5ced7753e77a483fec8ff7063075635521cce6e0bd54998c8f174742209dd" + } + }, + "colab": { + "provenance": [] } - ], - "source": [ - "to_choose = X_filtered[privileged_subset[0].keys()].isin(privileged_subset[0]).all(axis=1)\n", - "temp_df = X_filtered.loc[to_choose]\n", - "\n", - "\"Our detected privileged group has a size of {}, we observe {} as the count of Iris-virginica, but our model predicts {}\"\\\n", - ".format(len(temp_df), (temp_df['Species'] == 'Iris-virginica').sum(), (temp_df['Prediction'] == 'Iris-virginica').sum())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In summary, this notebook explains how to use the new mdss bias scan interface in aif360.detectors to scan for bias, even for tasks beyond binary classification, using the concepts of over-predictions and under-predictions." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.9.7 ('aif360')", - "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.9.7" }, - "vscode": { - "interpreter": { - "hash": "d0c5ced7753e77a483fec8ff7063075635521cce6e0bd54998c8f174742209dd" - } - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/examples/demo_meta_classifier.ipynb b/examples/demo_meta_classifier.ipynb index 5b62ef56..22709920 100644 --- a/examples/demo_meta_classifier.ipynb +++ b/examples/demo_meta_classifier.ipynb @@ -1,467 +1,528 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "scrolled": true - }, - "source": [ - "# Meta-Algorithm for fair classification.\n", - "The fairness metrics to be optimized have to specified as \"input\". Currently we can handle the following fairness metrics:\n", - "Statistical Rate, False Positive Rate, True Positive Rate, False Negative Rate, True Negative Rate,\n", - "Accuracy Rate, False Discovery Rate, False Omission Rate, Positive Predictive Rate, Negative Predictive Rate.\n", - "\n", - "-----------------------------\n", - "\n", - "The example below considers the cases of False Discovery Parity and Statistical Rate (disparate impact).\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from IPython.display import Markdown, display\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from sklearn.preprocessing import MaxAbsScaler\n", - "from tqdm import tqdm\n", - "\n", - "from aif360.metrics import BinaryLabelDatasetMetric\n", - "from aif360.metrics import ClassificationMetric\n", - "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_adult\n", - "from aif360.algorithms.inprocessing import MetaFairClassifier\n", - "\n", - "np.random.seed(12345)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Original Training dataset" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "dataset_orig = load_preproc_data_adult()\n", - "\n", - "privileged_groups = [{'sex': 1}]\n", - "unprivileged_groups = [{'sex': 0}]\n", - "\n", - "dataset_orig_train, dataset_orig_test = dataset_orig.split([0.7], shuffle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "min_max_scaler = MaxAbsScaler()\n", - "dataset_orig_train.features = min_max_scaler.fit_transform(dataset_orig_train.features)\n", - "dataset_orig_test.features = min_max_scaler.transform(dataset_orig_test.features)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "scrolled": true, - "tags": [] - }, - "outputs": [ + "cells": [ { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Training Dataset shape" - }, - "metadata": {} + "cell_type": "markdown", + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Trusted-AI/AIF360/blob/main/examples/demo_meta_classifier.ipynb)" + ], + "metadata": { + "id": "sjDIfgLTC20Y" + } }, { - "output_type": "stream", - "name": "stdout", - "text": "(34189, 18)\n" + "cell_type": "markdown", + "metadata": { + "scrolled": true, + "id": "h5NsmisDC1uI" + }, + "source": [ + "# Meta-Algorithm for fair classification.\n", + "The fairness metrics to be optimized have to specified as \"input\". Currently we can handle the following fairness metrics:\n", + "Statistical Rate, False Positive Rate, True Positive Rate, False Negative Rate, True Negative Rate,\n", + "Accuracy Rate, False Discovery Rate, False Omission Rate, Positive Predictive Rate, Negative Predictive Rate.\n", + "\n", + "-----------------------------\n", + "\n", + "The example below considers the cases of False Discovery Parity and Statistical Rate (disparate impact).\n" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Favorable and unfavorable labels" - }, - "metadata": {} + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "MjbL8vrIC1uL" + }, + "outputs": [], + "source": [ + "from IPython.display import Markdown, display\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from sklearn.preprocessing import MaxAbsScaler\n", + "from tqdm import tqdm\n", + "\n", + "from aif360.metrics import BinaryLabelDatasetMetric\n", + "from aif360.metrics import ClassificationMetric\n", + "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_adult\n", + "from aif360.algorithms.inprocessing import MetaFairClassifier\n", + "\n", + "np.random.seed(12345)" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "1.0 0.0\n" + "cell_type": "markdown", + "metadata": { + "id": "XCVx_M0PC1uM" + }, + "source": [ + "## Original Training dataset" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Protected attribute names" - }, - "metadata": {} + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "xYJhjuEqC1uM" + }, + "outputs": [], + "source": [ + "dataset_orig = load_preproc_data_adult()\n", + "\n", + "privileged_groups = [{'sex': 1}]\n", + "unprivileged_groups = [{'sex': 0}]\n", + "\n", + "dataset_orig_train, dataset_orig_test = dataset_orig.split([0.7], shuffle=True)" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "['sex', 'race']\n" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "8W4CWxEvC1uM" + }, + "outputs": [], + "source": [ + "min_max_scaler = MaxAbsScaler()\n", + "dataset_orig_train.features = min_max_scaler.fit_transform(dataset_orig_train.features)\n", + "dataset_orig_test.features = min_max_scaler.transform(dataset_orig_test.features)" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Privileged and unprivileged protected attribute values" - }, - "metadata": {} + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true, + "tags": [], + "id": "jA7WAHWsC1uN", + "outputId": "5dde451b-0d61-4123-d0f8-af0d27aea497" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Training Dataset shape" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "(34189, 18)\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Favorable and unfavorable labels" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "1.0 0.0\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Protected attribute names" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "['sex', 'race']\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Privileged and unprivileged protected attribute values" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "[array([1.]), array([1.])] [array([0.]), array([0.])]\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Dataset feature names" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "['race', 'sex', 'Age (decade)=10', 'Age (decade)=20', 'Age (decade)=30', 'Age (decade)=40', 'Age (decade)=50', 'Age (decade)=60', 'Age (decade)=>=70', 'Education Years=6', 'Education Years=7', 'Education Years=8', 'Education Years=9', 'Education Years=10', 'Education Years=11', 'Education Years=12', 'Education Years=<6', 'Education Years=>12']\n" + } + ], + "source": [ + "display(Markdown(\"#### Training Dataset shape\"))\n", + "print(dataset_orig_train.features.shape)\n", + "display(Markdown(\"#### Favorable and unfavorable labels\"))\n", + "print(dataset_orig_train.favorable_label, dataset_orig_train.unfavorable_label)\n", + "display(Markdown(\"#### Protected attribute names\"))\n", + "print(dataset_orig_train.protected_attribute_names)\n", + "display(Markdown(\"#### Privileged and unprivileged protected attribute values\"))\n", + "print(dataset_orig_train.privileged_protected_attributes,\n", + " dataset_orig_train.unprivileged_protected_attributes)\n", + "display(Markdown(\"#### Dataset feature names\"))\n", + "print(dataset_orig_train.feature_names)" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "[array([1.]), array([1.])] [array([0.]), array([0.])]\n" + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "aFuh5g4pC1uO", + "outputId": "57906c3d-53bc-4e5c-a91a-1ca9805e045f" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Train set: Difference in mean outcomes between unprivileged and privileged groups = -0.193\nTest set: Difference in mean outcomes between unprivileged and privileged groups = -0.199\n" + } + ], + "source": [ + "metric_orig_train = BinaryLabelDatasetMetric(dataset_orig_train,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "print(\"Train set: Difference in mean outcomes between unprivileged and privileged groups = {:.3f}\".format(metric_orig_train.mean_difference()))\n", + "metric_orig_test = BinaryLabelDatasetMetric(dataset_orig_test,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "print(\"Test set: Difference in mean outcomes between unprivileged and privileged groups = {:.3f}\".format(metric_orig_test.mean_difference()))" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Dataset feature names" - }, - "metadata": {} + "cell_type": "markdown", + "metadata": { + "id": "YtI7xAQpC1uO" + }, + "source": [ + "## Algorithm without debiasing\n", + "\n", + "Get classifier without fairness constraints" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "['race', 'sex', 'Age (decade)=10', 'Age (decade)=20', 'Age (decade)=30', 'Age (decade)=40', 'Age (decade)=50', 'Age (decade)=60', 'Age (decade)=>=70', 'Education Years=6', 'Education Years=7', 'Education Years=8', 'Education Years=9', 'Education Years=10', 'Education Years=11', 'Education Years=12', 'Education Years=<6', 'Education Years=>12']\n" - } - ], - "source": [ - "display(Markdown(\"#### Training Dataset shape\"))\n", - "print(dataset_orig_train.features.shape)\n", - "display(Markdown(\"#### Favorable and unfavorable labels\"))\n", - "print(dataset_orig_train.favorable_label, dataset_orig_train.unfavorable_label)\n", - "display(Markdown(\"#### Protected attribute names\"))\n", - "print(dataset_orig_train.protected_attribute_names)\n", - "display(Markdown(\"#### Privileged and unprivileged protected attribute values\"))\n", - "print(dataset_orig_train.privileged_protected_attributes, \n", - " dataset_orig_train.unprivileged_protected_attributes)\n", - "display(Markdown(\"#### Dataset feature names\"))\n", - "print(dataset_orig_train.feature_names)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "tags": [] - }, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false, + "id": "Ps2Sawo6C1uO" + }, + "outputs": [], + "source": [ + "biased_model = MetaFairClassifier(tau=0, sensitive_attr=\"sex\", type=\"fdr\").fit(dataset_orig_train)" + ] + }, { - "output_type": "stream", - "name": "stdout", - "text": "Train set: Difference in mean outcomes between unprivileged and privileged groups = -0.193\nTest set: Difference in mean outcomes between unprivileged and privileged groups = -0.199\n" - } - ], - "source": [ - "metric_orig_train = BinaryLabelDatasetMetric(dataset_orig_train, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "print(\"Train set: Difference in mean outcomes between unprivileged and privileged groups = {:.3f}\".format(metric_orig_train.mean_difference()))\n", - "metric_orig_test = BinaryLabelDatasetMetric(dataset_orig_test, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "print(\"Test set: Difference in mean outcomes between unprivileged and privileged groups = {:.3f}\".format(metric_orig_test.mean_difference()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Algorithm without debiasing\n", - "\n", - "Get classifier without fairness constraints" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "biased_model = MetaFairClassifier(tau=0, sensitive_attr=\"sex\", type=\"fdr\").fit(dataset_orig_train)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Apply the unconstrained model to test data" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "dataset_bias_test = biased_model.predict(dataset_orig_test)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "tags": [] - }, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "G44H-9PpC1uP" + }, + "source": [ + "Apply the unconstrained model to test data" + ] + }, { - "output_type": "stream", - "name": "stdout", - "text": "Test set: Classification accuracy = 0.787\nTest set: Balanced classification accuracy = 0.619\nTest set: Disparate impact = 0.433\nTest set: False discovery rate ratio = 0.492\n" - } - ], - "source": [ - "classified_metric_bias_test = ClassificationMetric(dataset_orig_test, dataset_bias_test,\n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "print(\"Test set: Classification accuracy = {:.3f}\".format(classified_metric_bias_test.accuracy()))\n", - "TPR = classified_metric_bias_test.true_positive_rate()\n", - "TNR = classified_metric_bias_test.true_negative_rate()\n", - "bal_acc_bias_test = 0.5*(TPR+TNR)\n", - "print(\"Test set: Balanced classification accuracy = {:.3f}\".format(bal_acc_bias_test))\n", - "print(\"Test set: Disparate impact = {:.3f}\".format(classified_metric_bias_test.disparate_impact()))\n", - "fdr = classified_metric_bias_test.false_discovery_rate_ratio()\n", - "fdr = min(fdr, 1/fdr)\n", - "print(\"Test set: False discovery rate ratio = {:.3f}\".format(fdr))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Debiasing with FDR objective\n", - "\n", - "Learn a debiased classifier" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "debiased_model = MetaFairClassifier(tau=0.7, sensitive_attr=\"sex\", type=\"fdr\").fit(dataset_orig_train)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Apply the debiased model to test data" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "dataset_debiasing_test = debiased_model.predict(dataset_orig_test)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Model - with debiasing - dataset metrics" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "tags": [] - }, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "83DjcoK2C1uP" + }, + "outputs": [], + "source": [ + "dataset_bias_test = biased_model.predict(dataset_orig_test)" + ] + }, { - "output_type": "stream", - "name": "stdout", - "text": "Test set: Difference in mean outcomes between unprivileged and privileged groups = -0.126\n" - } - ], - "source": [ - "metric_dataset_debiasing_test = BinaryLabelDatasetMetric(dataset_debiasing_test, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "\n", - "print(\"Test set: Difference in mean outcomes between unprivileged and privileged groups = {:.3f}\".format(metric_dataset_debiasing_test.mean_difference()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Model - with debiasing - classification metrics" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "tags": [] - }, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "_8386WfuC1uP", + "outputId": "2e62132e-b01f-433e-bf0b-d4a185e574a3" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Test set: Classification accuracy = 0.787\nTest set: Balanced classification accuracy = 0.619\nTest set: Disparate impact = 0.433\nTest set: False discovery rate ratio = 0.492\n" + } + ], + "source": [ + "classified_metric_bias_test = ClassificationMetric(dataset_orig_test, dataset_bias_test,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "print(\"Test set: Classification accuracy = {:.3f}\".format(classified_metric_bias_test.accuracy()))\n", + "TPR = classified_metric_bias_test.true_positive_rate()\n", + "TNR = classified_metric_bias_test.true_negative_rate()\n", + "bal_acc_bias_test = 0.5*(TPR+TNR)\n", + "print(\"Test set: Balanced classification accuracy = {:.3f}\".format(bal_acc_bias_test))\n", + "print(\"Test set: Disparate impact = {:.3f}\".format(classified_metric_bias_test.disparate_impact()))\n", + "fdr = classified_metric_bias_test.false_discovery_rate_ratio()\n", + "fdr = min(fdr, 1/fdr)\n", + "print(\"Test set: False discovery rate ratio = {:.3f}\".format(fdr))" + ] + }, { - "output_type": "stream", - "name": "stdout", - "text": "Test set: Classification accuracy = 0.694\nTest set: Balanced classification accuracy = 0.712\nTest set: Disparate impact = 0.730\nTest set: False discovery rate ratio = 0.643\n" - } - ], - "source": [ - "classified_metric_debiasing_test = ClassificationMetric(dataset_orig_test, \n", - " dataset_debiasing_test,\n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "print(\"Test set: Classification accuracy = {:.3f}\".format(classified_metric_debiasing_test.accuracy()))\n", - "TPR = classified_metric_debiasing_test.true_positive_rate()\n", - "TNR = classified_metric_debiasing_test.true_negative_rate()\n", - "bal_acc_debiasing_test = 0.5*(TPR+TNR)\n", - "print(\"Test set: Balanced classification accuracy = {:.3f}\".format(bal_acc_debiasing_test))\n", - "print(\"Test set: Disparate impact = {:.3f}\".format(classified_metric_debiasing_test.disparate_impact()))\n", - "fdr = classified_metric_debiasing_test.false_discovery_rate_ratio()\n", - "fdr = min(fdr, 1/fdr)\n", - "print(\"Test set: False discovery rate ratio = {:.3f}\".format(fdr))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "We see that the FDR ratio has increased meaning it is now closer to parity." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Running the algorithm for different tau values" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "tags": [] - }, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "4Hk_4pw_C1uP" + }, + "source": [ + "## Debiasing with FDR objective\n", + "\n", + "Learn a debiased classifier" + ] + }, { - "output_type": "stream", - "name": "stderr", - "text": "100%|██████████| 10/10 [00:16<00:00, 1.65s/it]\n" - } - ], - "source": [ - "accuracies, statistical_rates = [], []\n", - "s_attr = \"race\"\n", - "\n", - "all_tau = np.linspace(0, 0.9, 10)\n", - "for tau in tqdm(all_tau):\n", - " debiased_model = MetaFairClassifier(tau=tau, sensitive_attr=s_attr, type='sr')\n", - " debiased_model.fit(dataset_orig_train)\n", - "\n", - " dataset_debiasing_test = debiased_model.predict(dataset_orig_test)\n", - " metric = ClassificationMetric(dataset_orig_test, dataset_debiasing_test,\n", - " unprivileged_groups=[{s_attr: 0}],\n", - " privileged_groups=[{s_attr: 1}])\n", - "\n", - " accuracies.append(metric.accuracy())\n", - " sr = metric.disparate_impact()\n", - " statistical_rates.append(min(sr, 1/sr))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Output fairness is represented by $\\gamma_{sr}$, which is the disparate impact ratio of different sensitive attribute values." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "fv8PFKShC1uQ" + }, + "outputs": [], + "source": [ + "debiased_model = MetaFairClassifier(tau=0.7, sensitive_attr=\"sex\", type=\"fdr\").fit(dataset_orig_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "FS95cQ6tC1uQ" + }, + "source": [ + "Apply the debiased model to test data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2jHJD1r7C1uQ" + }, + "outputs": [], + "source": [ + "dataset_debiasing_test = debiased_model.predict(dataset_orig_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zPDB86PeC1uQ" + }, + "source": [ + "### Model - with debiasing - dataset metrics" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "m-TZSduuC1uQ", + "outputId": "b0e4303b-befd-47e8-e338-ca20755eea4f" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Test set: Difference in mean outcomes between unprivileged and privileged groups = -0.126\n" + } + ], + "source": [ + "metric_dataset_debiasing_test = BinaryLabelDatasetMetric(dataset_debiasing_test,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "\n", + "print(\"Test set: Difference in mean outcomes between unprivileged and privileged groups = {:.3f}\".format(metric_dataset_debiasing_test.mean_difference()))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9dT_7mArC1uQ" + }, + "source": [ + "### Model - with debiasing - classification metrics" + ] + }, { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "33CRw9eGC1uR", + "outputId": "b5d9c3ea-cb2e-4d1b-f50b-3936705c3c3a" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Test set: Classification accuracy = 0.694\nTest set: Balanced classification accuracy = 0.712\nTest set: Disparate impact = 0.730\nTest set: False discovery rate ratio = 0.643\n" + } + ], + "source": [ + "classified_metric_debiasing_test = ClassificationMetric(dataset_orig_test,\n", + " dataset_debiasing_test,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "print(\"Test set: Classification accuracy = {:.3f}\".format(classified_metric_debiasing_test.accuracy()))\n", + "TPR = classified_metric_debiasing_test.true_positive_rate()\n", + "TNR = classified_metric_debiasing_test.true_negative_rate()\n", + "bal_acc_debiasing_test = 0.5*(TPR+TNR)\n", + "print(\"Test set: Balanced classification accuracy = {:.3f}\".format(bal_acc_debiasing_test))\n", + "print(\"Test set: Disparate impact = {:.3f}\".format(classified_metric_debiasing_test.disparate_impact()))\n", + "fdr = classified_metric_debiasing_test.false_discovery_rate_ratio()\n", + "fdr = min(fdr, 1/fdr)\n", + "print(\"Test set: False discovery rate ratio = {:.3f}\".format(fdr))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [], + "id": "0EWkP2m2C1uR" + }, + "source": [ + "We see that the FDR ratio has increased meaning it is now closer to parity." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fun9czlMC1uR" + }, + "source": [ + "## Running the algorithm for different tau values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "PrMarZ_kC1uR", + "outputId": "5c405344-4dd0-4f52-f115-f7ae9d474af4" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": "100%|██████████| 10/10 [00:16<00:00, 1.65s/it]\n" + } + ], + "source": [ + "accuracies, statistical_rates = [], []\n", + "s_attr = \"race\"\n", + "\n", + "all_tau = np.linspace(0, 0.9, 10)\n", + "for tau in tqdm(all_tau):\n", + " debiased_model = MetaFairClassifier(tau=tau, sensitive_attr=s_attr, type='sr')\n", + " debiased_model.fit(dataset_orig_train)\n", + "\n", + " dataset_debiasing_test = debiased_model.predict(dataset_orig_test)\n", + " metric = ClassificationMetric(dataset_orig_test, dataset_debiasing_test,\n", + " unprivileged_groups=[{s_attr: 0}],\n", + " privileged_groups=[{s_attr: 1}])\n", + "\n", + " accuracies.append(metric.accuracy())\n", + " sr = metric.disparate_impact()\n", + " statistical_rates.append(min(sr, 1/sr))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dWSiLvXEC1uS" + }, + "source": [ + "Output fairness is represented by $\\gamma_{sr}$, which is the disparate impact ratio of different sensitive attribute values." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BX7YH5rnC1uS", + "outputId": "b831f896-cdea-4610-f803-d73b5f7b13dd" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "fig, ax1 = plt.subplots(figsize=(13,7))\n", + "ax1.plot(all_tau, accuracies, color='r')\n", + "ax1.set_title('Accuracy and $\\gamma_{sr}$ vs Tau', fontsize=16, fontweight='bold')\n", + "ax1.set_xlabel('Input Tau', fontsize=16, fontweight='bold')\n", + "ax1.set_ylabel('Accuracy', color='r', fontsize=16, fontweight='bold')\n", + "ax1.xaxis.set_tick_params(labelsize=14)\n", + "ax1.yaxis.set_tick_params(labelsize=14)\n", + "\n", + "ax2 = ax1.twinx()\n", + "ax2.plot(all_tau, statistical_rates, color='b')\n", + "ax2.set_ylabel('$\\gamma_{sr}$', color='b', fontsize=16, fontweight='bold')\n", + "ax2.yaxis.set_tick_params(labelsize=14)\n", + "ax2.grid(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HRHHvcuQC1uS" + }, + "source": [ + "References:\n", + "\n", + " Celis, L. E., Huang, L., Keswani, V., & Vishnoi, N. K. (2018).\n", + " \"Classification with Fairness Constraints: A Meta-Algorithm with Provable Guarantees.\"\"\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.6.9 64-bit", + "language": "python", + "name": "python_defaultSpec_1596663900877" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.15" + }, + "colab": { + "provenance": [] } - ], - "source": [ - "fig, ax1 = plt.subplots(figsize=(13,7))\n", - "ax1.plot(all_tau, accuracies, color='r')\n", - "ax1.set_title('Accuracy and $\\gamma_{sr}$ vs Tau', fontsize=16, fontweight='bold')\n", - "ax1.set_xlabel('Input Tau', fontsize=16, fontweight='bold')\n", - "ax1.set_ylabel('Accuracy', color='r', fontsize=16, fontweight='bold')\n", - "ax1.xaxis.set_tick_params(labelsize=14)\n", - "ax1.yaxis.set_tick_params(labelsize=14)\n", - "\n", - "ax2 = ax1.twinx()\n", - "ax2.plot(all_tau, statistical_rates, color='b')\n", - "ax2.set_ylabel('$\\gamma_{sr}$', color='b', fontsize=16, fontweight='bold')\n", - "ax2.yaxis.set_tick_params(labelsize=14)\n", - "ax2.grid(True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "References:\n", - "\n", - " Celis, L. E., Huang, L., Keswani, V., & Vishnoi, N. K. (2018). \n", - " \"Classification with Fairness Constraints: A Meta-Algorithm with Provable Guarantees.\"\"\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.6.9 64-bit", - "language": "python", - "name": "python_defaultSpec_1596663900877" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.15" - } - }, - "nbformat": 4, - "nbformat_minor": 2 + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/demo_ot_metric.ipynb b/examples/demo_ot_metric.ipynb index 9c8bc904..dd8217d8 100644 --- a/examples/demo_ot_metric.ipynb +++ b/examples/demo_ot_metric.ipynb @@ -1,1379 +1,1485 @@ { - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Measuring bias with Optimal Transport by calculating the Wasserstein distance" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Table of contents\n", - "\n", - "- Introduction\n", - "- General Optimal Transport examples\n", - "- Usage\n", - "- Application to Compas Dataset\n", - "- Application to Adult Dataset\n", - "- More details\n", - " - OT for mapping estimation\n", - " - Kantorovich optimal transport problem\n", - " - Solving optimal transport\n", - " - Necessity and priority of usage" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## References\n", - "\n", - "\"FlipTest: fairness testing via optimal transport\" https://dl.acm.org/doi/abs/10.1145/3351095.3372845\n", - "\n", - "\"Obtaining Fairness using Optimal Transport Theory\" http://proceedings.mlr.press/v97/gordaliza19a.html\n", - "\n", - "\"Computational Optimal Transport\" https://arxiv.org/abs/1803.00567\n", - "\n", - "\"POT: Python Optimal Transport\" https://jmlr.org/papers/v22/20-451.html" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Introduction\n", - "\n", - "Optimal Transport (OT) is a field of mathematics which studies the geometry of probability spaces. Among its many contributions, OT provides a principled way to compare and align probability distributions by taking into account the underlying geometry of the\n", - "considered metric space.\n", - "\n", - "Optimal Transport (OT) is a mathematical problem that was first introduced by Gaspard Monge in 1781. It addresses the task of determining the most efficient method for transporting mass from one distribution to another. In this problem, the cost associated with moving a unit of mass from one position to another is referred to as the ground cost. The primary objective of OT is to minimize the total cost incurred when moving one mass distribution onto another. The optimization problem can be expressed for two distributions $\\mu_s$ and $\\mu_t$ as\n", - "\n", - "$$\n", - "\\min_{m, m_{\\#} \\mu_s=\\mu_t} \\int c(x, m(x)) d \\mu_s(x)\n", - "$$\n", - "in the continuous case, and\n", - "$$\n", - "\\min_{\\sigma \\in \\text{Perm}(n)} \\frac{1}{n} \\sum_{i=1}^n \\textbf{C}_{i,\\sigma(i)}\n", - "$$\n", - "in the discrete case, where $\\textbf{C}_{\\cdot, \\cdot}$ is the ground cost and the constraint $m_{\\#} \\mu_s=\\mu_t$ ensures that $\\mu_s$ is completely transported to $\\mu_t$. Where $T_{\\#} \\mu_s = \\mu_s(T^{-1}(B)) = u_{t}(B)$ with $T$ as a trasportation matrix between $\\mu_s$ and $\\mu_t$ at point $B$. " - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "OT can be used to detect **model-induced bias** by calculating the above cost (also known as **Earth Mover's distance** or **Wasserstein distance**) between the distribution of ground truth labels and model predictions for each of the **protected groups**. If its value is close to 1, the model is **biased** towards this group." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## General Optimal Transport examples" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us start with some simple examples of calculating the Earth Mover's distance between two distributions - the basis of Optimal Transport for bias detection. We do this using the `earth_movers_distance` function.\n", - "\n", - "For concrete examples of bias detection on real datasets, skip to the next chapter." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1. General Optimal Transport\n", - "\n", - "Suppose we have two distributions $a$ and $b$ (as shown in the picture below), and we need to calculate the Wasserstein distance between these two distributions." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "# Initial distribution\n", - "a = np.array([0., 0.01547988, 0.03095975, 0.04643963, 0.05727554, 0.05417957, 0.04643963, 0.07739938, \n", - " 0.10835913, 0.12383901, 0.11764706, 0.10526316, 0.09287926, 0.07739938, 0.04643962, 0. ])\n", - "# Required distribution\n", - "b = np.array([0., 0.01829787, 0.02702128, 0.04106383, 0.07, 0.10829787, 0.14212766, 0.14468085, \n", - " 0.13, 0.10808511, 0.08255319, 0.05170213, 0.03361702, 0.02702128, 0.01553191, 0. ])" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Trusted-AI/AIF360/blob/main/examples/demo_ot_metric.ipynb)" + ], + "metadata": { + "id": "vGqYImdfDCyy" + } + }, { - "data": { - "image/png": "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jkbhwoUNm82W+H4knO+jjz5KlulOq/Xt2LHDaN26tZE/f36jQIECRteuXY0zZ84kOT4qKsp47bXXDE9PTyNPnjxG/fr1jd27dydbWSe17/21a9eM119/3fDy8jIcHR2N4sWLGy+88ILx77//Jmnn5eVltGzZMtnruvU9FRERkTtL6borwbVr14zSpUsb5cuXN2JjYw3DMIw9e/YYnTp1Mh544AHD0dHR8PDwMJ544glj6tSpSY795ZdfjFq1ahnOzs6Gh4eH8eqrrxpffPFFspXg7vWa4nar9aV0fWgYhhETE2OMHz8+8Zouf/78RqVKlYx+/foZhw4dSvL8r7zyivHAAw8YLi4uRq1atYzg4OAUr2lScuLECaNDhw6J100dOnQwtm7detfV+oKDg4127doZXl5ehrOzs+Hq6mrUr1/fWL58eZLzr1+/3qhevbrh7OycZAXBhPOdO3cuWabbrdbXsmVLY9GiRcbDDz9sODk5Gd7e3saECROSHX/w4EEjICDAKFiwoFGsWDHjpZdeMlauXJns/b/dNahhpHw9/ueffxqtW7c2ChUqZDg5ORm+vr5J3iPD+O/f+dtvv02yP6VrV5GcwGYYhpF5pTAREREREZHcbfbs2fTu3ZujR4+mufePiEhOojmnRERERERERETEMipOiYiIiIiIiIiIZTSsT0RERERERERELKOeUyIiIiIiIiIiYhkVp0RERERERERExDIqTomIiIiIiIiIiGUcrA6QXuLj4zl16hQFChTAZrNZHUdERETSmWEYXLlyhRIlSmBnp8/Xshtdq4mIiOR8ab1eyzHFqVOnTuHp6Wl1DBEREclgoaGhlCpVyuoYkkq6VhMREck9Unu9lmOKUwUKFADMN6BgwYIWpxEREZH0dvnyZTw9PRP/z5fsRddqIiIiOV9ar9dyTHEqoXt4wYIFdcEjIiKSg2lIWPakazUREZHcI7XXa5qwQURERERERERELKPilIiIiIiIiIiIWEbFKRERERERERERsYyKUyIiIiIiIiIiYhkVp0RERERERERExDIqTomIiIiIiIiIiGVUnBIREREREREREcuoOCUiIiIiIiIiIpZxsDqAiEiOFx8H57bAtdOQpzgU8wc7e6tTiYiIiIiIZAkqTomIZKTQJbBjEESe+G9f3lLgNxE821uXS0REREREJIvQsD4RkYwSugS2dExamAKIPGnuD11iTS4REREREZEsRD2nREQyQnyc2WMKI8nuqBgn9p+qxNnL7kT9/T2FAp6kVGl7vL3BZrMkqYiIiORwly7B0aNw+jQYBuTJA15eULo0OOgvQhHJAvSrSETkPoSEhBAeHp5sf/6r26lwo8dU+BVX5m3tyvzgLmw/WoPoWOf/Go650T5/LH5+EdSvf4knnviXAgXicXNzo3Tp0pnxMkRERCSHOXQIZs2CVavgjz/MotSt8uaF2rWhWTPo1MksVomIWMFmGCn9msp+Ll++TKFChbh06RIFCxa0Oo6I5AIhISFU8qnEtchryR7rUhsm9SrCuBWv8cmal7kWnTfxsSL5LlCiyCnyOF3jwKlCXLnuBdxUsCIC+Apnl4kcPLBOBSqRG/R/ffamfz+RzLFvH7zxBixblnT/Aw9AiRJmT6krV+DYMYiKStqmRQt49VWoX/+mHt1a2EVEUiGt/9+r55SISBqFh4dzLfIa3T/vjnsF9ySPXdnggc+rPTh72dxfzWsXvevNotUjKyhT7GjiBd8U104ctPMm/KgHR371Yf+G6lw47g4MIOp6H4YPv8TUqaC/40REROROYmLgnXdg7FiIjzeLS02bQo8e0LAhFC+etH18vFnI2rABFi+Gn34ye1mtWgWPPgrjxkH9slrYRUQyh4pTIiL3yb2CO56+ngDERtmz+PX6BH9VBQCfEnv5sOvrtKq+IsmcUgYQ4VKYmJq18LbZ4V0Dajx1AMM4wD8/l+L7d6oQsrMC8+Y9wObN8Nln0K6dBS9OREREsrwTJ8zrhO3bza+ffNIsUvn43P4YOzt4+GHz9tJLcPgwTJgAM2fC779Dgwbw1GOxfNTVDq9iNx2YsLCL/yIVqEQk3Wi1PhGRdBIRnofP2rQn+Ksq2GwGTz23gp1jqtPqkeSFKYDNPu0wbEl/DdtsUN7/BE/97wugCZ6e1zl1Ctq3h65d4fLlTHs5IiIikg388QfUqmUWpooUgYULzSF9dypMpaRcOZg0CY4fhxf6x2NnF8e3v3Xi4df/5osNz900Z9WNjR2DzSF/IiLpQD2nRETSwcWT+Zncvh1nDxUlT6Hr9Jy2Gp/Gx1kf9jT19y2lwPWLiW0jXAqz2acdhz1873LW9cyfv49Vq6rzwQcwf7554blwIVSvnqEvR0RERLKB3bvNIXsXL5rFqFWrwNv73o693aIuAIO7bae/12cMnD2Jnw/402/GFyzZ1p6Zzz9LiSKnAQMiQzn4ywwi8tVIdrwWdRGR1FJxSkTkPl05V5DZvTpy/nghCpe4wgtLluJe4V8ADnv4csS9CiUuHCZf1GWuOhfkVNFyyXpM3Y6Li8F775kTlHbpAv/8Y66qM2MGPP10Rr4qERERyVJumZh8X7g/AQH2XLxoXhusXGn2nLoXd1rUBcyFXea9CJtH1eeTNS8zYsFY1vzRjOpv7OKbgd1oVHkDAIGv92N+cPLj8+TNw/59+1WgEpF7puKUiMh9cWXRq/24cLwQbmUuMmDZEop6XknSwrDZcdK1/H09S506sGsX9OoFK1ZA9+7mEtGBgSQZMigiIiI5UGjSicnPXylKy8CdnDvnxSOPwA8/QKFC9366Oy3qAlAuKhTOL8TOzmBw84k0811N508X8EeILwEfrGV0x7d448kx1AvsRElnzyTHnjl4hjn95hAeHq7ilIjcszTNOTV58mTKlCmDi4sLfn5+bNmy5bZtT58+Tbdu3ahYsSJ2dnYMHjw4WZtp06bh7+9PkSJFKFKkCI0bN+b3339PSzQRkUwTFWUDvufCcXcKl7iSYmEqPbm6wnffwWuvmV+/8465Ak9MTIY9pYiIiFgtdIk5AfmNwlRsnD2dPl3I0TNelH3gMGtmrkhVYepmCYu63HqLqVmLKy6FE+fJrFTiAL++U4tn688g3rBn1Lfv0/nzhVyrWjfZsSkVu0RE7ibVxakFCxYwePBgRo4cya5du/D396d58+aEhISk2D4qKopixYoxcuRIfH1Tnl9l06ZNdO3alY0bNxIcHEzp0qUJCAjg5MmTqY0nIpIpDAPGjCkN1MalQCQvLFmaoYWpBHZ28OGHMH06ODjA3Lnm6jzXUu6VLyIiItlZfJzZYyqxTASBi99hw9+NyOccwXdD2+J2dEC6T0xu2OzY7GMuE5zwzHmcrjPj+b583uc5HOxj+HbLU0zq0IGrF1zS9blFJHdK9bC+CRMm0KdPH/r27QtAUFAQa9asYcqUKYwdOzZZe29vbyZOnAjAzJkzUzzn3Llzk3w9bdo0Fi1axI8//kjPnj1TPCYqKoqoqKjEry9rCSsRyUQTJ8KKFa5ALK0Cv8K9QtRdj0lPffpAiRLmKn4rV5pzUi1fDgUKZGoMERERSQe3m5w8/9XtVLjRYwrglwN1+GD5cABmPv8slT3/gkhuOzE5pH1y8sMevqys3jvZwi5dWyzibO2KvD/kJY4ElySoaSf6LfwOtzKXUv0cIiIJUlWcio6OZseOHQwfPjzJ/oCAALZu3ZpuoSIjI4mJiaFo0aK3bTN27FjeeeeddHtOEZF7tXEjvPJKwlev4OXnCHje4YiM0bw5rFkDrVrBpk3QqBGsXg13+NUpIiIiWcydJidPmJgcIOJ6PnpM+Zp4w56e/l/Sqda3ie1uNzE53N/k5Ldb2KWAzY5Blb7liy5tOHe4CJ+0eIoBS5fgUelCqp9DRARSWZwKDw8nLi4Od/ek44jd3d0JCwtLt1DDhw+nZMmSNG7c+LZtRowYwdChQxO/vnz5Mp6emf/HoYjkLufPm5ORx8dDq1bnWbHiE+CVux6XUerVgw0boFkz2LYNmjSB9evvfbUeERERsdadJidPmJgcIHDROxw9VxYvt2N80vPlJO1Smpgc0mdy8tst7FL8ofMMXruAqR3bcXqvG5+16cALS5YCoWl6HhHJ3dI0IbrtlqWhDMNIti+txo0bx7x581iyZAkuLrcfv+zs7EzBggWT3EREMpJhwHPPwalTULEiDB+e8lx7ma1GDdi8GYoVg507oWlTuPRvHJzZBMfmmffpPBeFiGR96b2Azc3mz5+PzWajbdu26RtaJBdLaXLyhInJdx+vysQ1gwCY0vsFCuU1pzQxgCsuhYmpWSvFic0zenLyQh6RvLh8MZ7VzhARnpdJbToQdqBUhj6niORMqSpOubm5YW9vn6yX1NmzZ5P1pkqL8ePHM2bMGNauXUvVqlXv+3wiIulpxgxYuhQcHeGbbyBPHuPuB2WShx+GH380V/Tbtg2a197FlRWtYWs3+LEhLPc2V/sRkVwhIxawSXD8+HGGDRuGv79/RkQXkZsYNjs2VWrHgFlTiIt3oOOj39K82mrzsRttNvu0w7Clqc9BushX9DovLF2CV43TRF504dtX+gGPWJZHRLKnVP0Wc3Jyws/Pj3Xr1iXZv27dOurUqXNfQT766CPeffddVq9eTY0aKU/mJyJilaNHYZD5gSXvvw+PZMFrripVYP2cHymS7wLBB2rQ4qNVRFzPZz4YedJchloFKpFc4eYFbHx8fAgKCsLT05MpU6ak2D5hAZuePXtS6A5r0sfFxfH000/zzjvvULZs2TtmiIqK4vLly0luIpJ6i4I7EnyoDvlcIgjqMThxf4RLYVZW781hjzsXlDND3kLRvLB4KWVrnyT6ah5gNUePahU/Ebl3qS6xDx06lOnTpzNz5kz27dvHkCFDCAkJoX///oA5F9StK+zt3r2b3bt3ExERwblz59i9ezd79+5NfHzcuHGMGjWKmTNn4u3tTVhYGGFhYURERNznyxMRuX+GAf37Q2SkOcfTK9ZNMXVn8XFUu96LdSOaUCjvRX4+4E/r8d9zLdqFxM9XdwzWED+RHC5hAZuAgIAk+9NjAZvRo0dTrFgx+vTpc9e2Y8eOpVChQok3zQ0qknqxUfasfLcuAPUG/0Fws3b84NuDRY8OZFaDt7JEYSqBS4EYnp+3HPeKoUAxBgx4kGPHrE4lItlFqiZEB+jcuTPnz59n9OjRnD59msqVK7Nq1Sq8vLwAc86CW7uMV69ePXF7x44dfPPNN3h5eXHsxm+ryZMnEx0dTceOHZMcFxgYyNtvv53aiCIi6WruXFi7FpydYfp0sLOu5zxw9+Wm/cqcYO3wABqPWc+mfQ3p/OkCFg/qgKNDLESGZshy0yKSdWTUAja//PILM2bMYPfu3ffUXovXiNy/n2dU5fzxQhT0iKDBwF2czJd8YvKsxKVgNO0/nMaUtp05e/ZhmjSBLVvAw8PqZCKS1aW6OAUwYMAABgwYkOJjs2fPTrbPMO48L8sxldRFJIsKD4chQ8ztt96C8hZfE97rctOPltvGimGtaPrhGr7f2YZen8/m6xd6YGdnZNhy0yKStaTnAjZXrlyhe/fuTJs2DTc3t3s6xtnZGWdn5zQ9n4hA1FUH1geZHyY1H/4rzvliLU50b/IWigQCKFHiCP/840zz5maBKn9+q5OJSFaWpuKUiEhuMWyYWaCqUgVefdXqNPe+3DRAPZ8tLBrUkbYfL+ObrU9TOO9FPuv1YoYuNy0i1suIBWwOHz7MsWPHaN26deK++Ph4ABwcHDhw4ADlypVLe2gRSWbrrCpEhOfF1fsij3bbe/cDspRTTJ58iOeeq8zu3dClC3z3HdjbW51LRLIqFadERG7jt9/gyy/N7S++MFfpyyoSlpu+WYxRkiub1pL/+kUS+ka0rL6Kr/r35OnJc5m8fiB5C13D8wt7PC1c1UdEMtbNC9i0a9cucf+6det48skn03TOSpUq8eeffybZN2rUKK5cucLEiRM1XE8knUVHOrDhMz8Amgzdhr1D1lkh+F55ekbz/ffQoAGsXGn2RP/kE6tTiUhWpb9ORERSEB8PL79sbvfqBbVqWRrnnhg2Ozb7mH+I3nwJ27XOfCb1Modij188jB8/04qoIjldei9g4+LiQuXKlZPcChcuTIECBahcuTJOTk6Z/hpFcrKtX1bmytl8FC19iZqd91sdJ80eewzmzDG3P/1UxSkRuT31nBIRScHXX8Pvv0OBAjB2rNVp7t1hD19WVu9N/X1LKXD9YuL+7q0W8Gvhxnz1cUeWB/qTp2AUtZ/527qgIpKhMmIBGxHJHNHX7NnwiflBUpMh27B3jLc40f3p0AHGjYPXXoPBg835O5s3tzqViGQ1Kk6JiNziyhUYPtzcfvPN7LfCzGEPX464V6HEhcPki7rMVeeCnCpajkcanuRE3HY2fFKDhUMb4VIwmurtDlkdV0QySHovYHMv5xCR+7dt/kNcPpOPIqUuU7PrPqvjpIthw+DQIZg2Dbp1g23b4MEHrU4lIlmJhvWJiNzio48gLMy8aEoY2pfdGDY7TrqW52AJP066lse4McdU68BfqP3MnxiGjTn9m3Jgk+aJERERySri42HTFLMXY4OBO3Fwyt69phLYbOawvtq14eJFaNvW/DBQRCSBilMiIjc5cwYmTDC3P/gActoq6DYbPDV+I9WePEhcjD0ze7YidE8xq2OJiIgIsG9dGc79UwSXglE8lu1W6LszZ2dYvBiKF4e//4bevSGVHTZFJAdTcUpE5CZjxsDVq1CzJrRvb3WajGFnb9B96lrK+4cSFeHE553aEn60kNWxREREcr1Nk81eU3We+ROXAjEWp0l/xYubBSpHR/P+gw+sTiQiWYWKUyIiNxw7BlOmmNsffGD2MsqpHJzjePbrFZSofI6Ic3mZ2rEtVy/ktzqWiIhIrnX2nxIc2uKJnX08/s/tsTpOhqldGyZNMrdHjYKffrI2j4hkDSpOiYjcEBgIMTHQpAk88YTVaTJenoLR9Fu4DFevS4QfLcyS4X0BFahERESssOPbegD4PnmIIqUiLE6TsZ57Dnr2NOfY6toVzp2zOpGIWE3FKRER4K+/4Ouvze0xY6zNkpkKeUTSf9Ey8rtFcvZQKWAJMTE5uMuYiIhIllSM/RuqAdDghV3WRskkkyZBpUpw6tR/hSoRyb1UnBIRwexWbhjQsSPUqGF1msxVrNxFnl/wHY4uUUATAgO9dIEoIiKSqZ4lPtYBL7/TePmdsTpMpsifHxYuBBcXWL3aXC1ZRHIvFadEJNfbtQu++w7s7ODdd61OY43S1c/SZvSXQAxr1hRl6FCtoCMiIpIZzA+E+gFQp/eflmbJbFWqwCefmNsjR8Ivv1ibR0Sso+KUiOR6779v3nfpYnYvz628ax4EegEwcSKMG2dpHBERkVzh118LAmVwzh9J9baHrI6T6fr2Needioszr8X+/dfqRCJiBRWnRCRX+/tvcyljgDfesDZL1vANQ4eeAGD4cPjyS4vjiIiI5HCLFrkB8HDT7TjljbU4Teaz2eDzz6F8eThxAgYMAOLj4MwmODbPvI+PsziliGQ0FadEJFdL6DXVoQM8/LC1WbKKp58+y6uvmtt9+pjzQIiIiEj6Cw2FLVsKAVC1TbDFaaxToADMmQP29jB/Psx7dRD82BC2djPvl3tD6BKrY4pIBlJxSkRyrYMHYcECc3vUKGuzZDUffADdu5td7Dt2hG3brE4kIiKS80yfDvHxNmAjrqXPWR3HUo8+Cm++vBeAF6a+R+j5Uv89GHkStnRUgUokB1NxSkRyrbFjzUlIW7eGatWsTpO12NnBjBkQEABXr0LLlvDPP1anEhERyTni42HWrISvvrAyStYQH8fIui14tNxvXIoszDNTv7xRuAO4sUrLjsEa4ieSQzlYHUBEJFPFx8G5LRw9eJmvv24N2NRr6jacnGDRImjQAHbuhGbNYOtWeOABq5OJiIhkfxs2mMP6ChSI5cqVpcCLVkfKcCEhIYSHh6f4WP6r26kQdZw5A7pT7Y3dbNz7BBPXDGJI86AbLQyIDOXgLzOIyFcj2fFubm6ULl0648KLSIZScUpEco/QJbBjEESeYMKXnxAXZ6OJ7088WjwcaG91uiypQAFYuRLq1IHDh80eVBs3Qv78VicTERHJ3mbPNu+bNv2XRYuiLM2SGUJCQqjkU4lrkddSfLxLbZj3IpT3+IcJTw+l/8zPGbFgLE0qr6Oy59+J7QJf78f8FKbnypM3D/v37VeBSiSbUnFKRHKH0CXmXAUYnL9SlJmbnwVgeMt3YMtG8F8EnipQpcTDw5wUvW5d2L7dnIPq++/B0dHqZCIiItnTpUv/rRbcuvV5Fi2yNk9mCA8P51rkNbp/3h33Cu7JHi8XFQrnFwLw/BNf8P3O1qzc3Ypen8/m13dq4WBvDuerF9iJks6eSY49c/AMc/rNITw8XMUpkWxKc06JSM4XH2f2mLoxX8GU9S8QGZWP6t47afjQBrON5jC4owoVYMUKyJsX1qyBvn3BMKxOJSIikj0tXAjXr8NDD8HDD0daHSdTuVdwx9PXM9ktpmYtrrgUxgBsNpjW9zkK5/2XHUdrMH7lMAzgikthYmrWSnZsSsUuEcle1HNKRHKEu85hEHkCgOvRzny69iUAXm35ETYb3G0OA9A8BgCPPWZeTD/5JHz1FZQsCWPGWJ1KREQk+0mYCL1XL25ci4hhs2OzTzta7pqFARQvEkZQj8H0+vxLAhe/Qxu/7zjSqjaGTf0rRHIiFadEJNu71zkMAL7+uQdnL7tT2vU4HR9N2of+dnMYgOYxSNCyJXzxBfTpY652WLIkDBxodSoREZHs48ABCA4Ge3vo3h1On7Y6UdZx2MOXldV7U3/fUgpcv0hP/69Y8GtnftjTgvZzv6df71XYoa7bIjmRilMiku3d6xwG8fE2/rfqFQCGNP8YR4fYJO1SmsMANI/BrZ59Fk6ehLfegpdeguLFob2m6xIREbknCROhN2tm/h+q4lRShz18OeJehRIXDpMv6jJPfrqVjS0bcWDPg2yeWo2GA3dZHVFEMoCKUyKSYyTMYXCrGKMkVzatZcMv/hw4XYlCeS/Sp8GMxMcNICJhDgN1Fb8no0aZBarPP4du3WDdOvD3tzqViIhI1hYXZw6NB+jd29osWZlhs+Oka3nzixLw5LtbWDC4Maver0PlZkcpVu6ipflEJP3przARyfES5jD438phALzQaAoF8kSYj91os9mnneYwSAWbDSZNMuefioqCNm3g778xJ5U/swmOzTPvNcm8iIhIoo0b4dQpKFoUWrWyOk32UavH31SoH0LMdQfmvdyY+HirE4lIetNfYiKSK2w605gtB+rhYB/DS00/Tdwf4VKYldV7c9jD18J02ZO9PcybB3XqwMWL0KxJJCdm1oIfG8LWbub9cm8IXWJ1VBERkSzhm2/M+6eeAmdna7NkJzYbdJ64Hqd80RwJLslvcx62OpKIpDMVp0QkV9jyRTUAfNv9w9am7fnBtweLHh3IrAZvqTB1H/Lkge+/h0oPXubE6bw0f2cmF68W+q9B5EnY0lEFKhERyfWuX4fFi83tbt2szZIduZa+QvPhvwKwPPBxrpzNa3EiEUlPKk6JSI4XEZ6HnUsqAOD/3B+cdC3PwRJ+nHQtr6F86aBo4ThWvxpAiSIn+etEFZ6c8B3XoxM+Dr4xcHLHYA3xExGRXG3VKrh8GUqVgscftzpN9lSv325K+Z7h2iUXlo6sZ3UcEUlHmhBdRHK84K8qExvlQOlHwvCqEWZ1nGwpJCSE8PDwFB/Lf3U7FfL/xg+vNcd/9BZ+2l+fHlO+Zv5LXbC3iwcMiAzl4C8ziMhXI9nxbm5uWgVRRERyvIQhfV27gp0+G0sTeweDzh9vYELjzuxcXJGaXfbi0yjE6lgikg5UnBKRHC0uxo6fZ1QBwP+5PdhsFgfKhkJCQqjkU4lrkddSfLxLbZj3IlQt/SfLhrSl2bjVLPr9KYZ8fZqJPQclvueBr/djfnDy4/PkzcP+fftVoBIRkRzr0iVYscLc1pC+++NZ7Sz+z+3hp8+rs2jYE7z+yxyrI4lIOlBxSkRytD9XluXS6QLkLxZJ9baHrI6TLYWHh3Mt8hrdP++OewX3ZI+XiwqF8wsBaPjwJr7q35Muny3g07UvU7LoSV5vPQ6AeoGdKOnsmeTYMwfPMKffHMLDw1WcEhGRHGvpUnN1Wx8f8NVUl/etxRvB/PH9g5w/Xog14x+l2pNHrY4kIvdJxSkRydF+ujERep1n/sTBWXMe3Q/3Cu54+nom2x9jlOTKprXkv34RG9C59kJOXSzB0DkfM3z+hxQvfIp2TVYQU7MWnprjS0REcqF588z7bt1QL+504FIghg7jNjGje2s2fvYIJatstjqSiNwn/ZUgIjnWiT+KceTXktg5xFG3959Wx8mxDJsdm33amds39g1pHsQrLcYD0GfaTD4+P0qTz4uISK505gysX29ud+1qbZacpEqLI1Rt9Q/xsfas+19HQFU/kexMfymISI71y0xzrinf1v9QqPhVi9PkbIc9fFlZvTcRLoUT943r+hpP+X9LbJwj7w95idDdD1gXUERExCILF0J8PDz2GJQrZ3WanKX9B5twzh/F6b3eQB+r44jIfdCwPhHJka5fdmLH4ooA1H1WvaYyw2EPX464V6HEhcPki7rMVeeC1Gp8ij1dQji4uTSfd36SwWsW4OZ92eqoIiIimSZhlT5NhJ7+Cpe4SvMRv7JsZH1gLBcvnrQ6koikkXpOiUiOtGNJBaKvOvFA+QuUq6MLlcxi2Ow46VqegyX8OOlaHntnePbLlZSscpaIc3mZ2rEdEeF5rI4pIiKSKY4cgV9/BTs76NTJ6jQ5k/9ze3ArcxpwY/LkElbHEZE0UnFKRHIcw4Dg2eaQvjrP/KWJRy3mUjCa5xd8R9HSlwg/UpgvurQh6qo67opktMmTJ1OmTBlcXFzw8/Njy5Ytt217+vRpunXrRsWKFbGzs2Pw4MHJ2kybNg1/f3+KFClCkSJFaNy4Mb///nsGvgKR7C9hIvRGjcDDw9osOZW9g0GjQUsBWLLEje3bLQ4kImmi4pSI5Dihu9w58ccDODjHUrPLPqvjCFDII5J+3y4jX9FrhOz04MtnWxAXo/+CRDLKggULGDx4MCNHjmTXrl34+/vTvHlzQkJCUmwfFRVFsWLFGDlyJL63Wed+06ZNdO3alY0bNxIcHEzp0qUJCAjg5En1ThW5nW+/Ne87d7Y2R05XyvcIMAfDsDFggDnHl4hkL/rLQERynK1fVgbAt80/5Ct63eI0ksC9/EWem7ccxzwx7F1XhoVDn8Aw7n6ciKTehAkT6NOnD3379sXHx4egoCA8PT2ZMmVKiu29vb2ZOHEiPXv2pFChQim2mTt3LgMGDKBatWpUqlSJadOmER8fz48//phi+6ioKC5fvpzkJpKbHDoEe/aAvT20bWt1mtzgVfLli2PbNpgxw+osIpJaaSpOpXc3cYDFixfz0EMP4ezszEMPPcTSpUvTEk1Ecrnrl53YuaQCAHV6aSL0rMa7ZhjPzPgBm108v819mK2zmlodSSTHiY6OZseOHQQEBCTZHxAQwNatW9PteSIjI4mJiaFo0aIpPj527FgKFSqUePP09Ey35xbJDhYtMu8bNQJXV2uz5A5h9O9/CoARI+D8eYvjiEiqpLo4lRHdxIODg+ncuTM9evRgz5499OjRg06dOvHbb7+lNp6I5HLbF1Uk+qoT7hXOU7bWKavjSAoqNztKpwkbAPj16yZAP2sDieQw4eHhxMXF4e7unmS/u7s7YWFh6fY8w4cPp2TJkjRu3DjFx0eMGMGlS5cSb6Ghoen23CLZQUJxqmNHa3PkJp06naNyZbMwNXKk1WlEJDVSXZzKiG7iQUFBNGnShBEjRlCpUiVGjBhBo0aNCAoKSm08EcnFDAO23pgIvbYmQs/Savf8m2av/3rjq0ls3Jjy/w8ikna2W34JGoaRbF9ajRs3jnnz5rFkyRJcXFxSbOPs7EzBggWT3ERyiyNHYOdOc0hfu3ZWp8k9HBxg0iRz+4sv0OToItlIqopTGdVNPDg4ONk5mzZtesdzah4DEblV2H5PTv1VTBOhZxNNX/uNKi1/BewZObIMv/xidSKRnMHNzQ17e/tkvaTOnj2brDdVWowfP54xY8awdu1aqlatet/nE8mJEnpNNWgAbm6WRsl16tWDp582P7QcOFCTo4tkF6kqTmVUN/GwsLBUn1PzGIjIrf74vhYA1doeIl+RKIvTyN3YbNB4yBJgOVFRdrRuDXv3Wp1KJPtzcnLCz8+PdevWJdm/bt066tSpc1/n/uijj3j33XdZvXo1NWrUuK9zieRkCav0PfWUtTlyq48+ggIF4PffYdYsq9OIyL1I04ToGdFNPLXn1DwGIpJUPg5srAZA7Z5/WRtF7pmdfTzQhSpVIvj3X2jWDLQqvcj9Gzp0KNOnT2fmzJns27ePIUOGEBISQv/+/QHzOqpnz55Jjtm9eze7d+8mIiKCc+fOsXv3bvbeVDEeN24co0aNYubMmXh7exMWFkZYWBgRERGZ+tpEsrpjx8zhZHZ2GtJnleLF4e23ze033gANshHJ+lJVnMqobuIeHh6pPqfmMRCRpDoQc90Zt7IXNRF6tnONjz8+TIUKEBoKzZvDxYtWZxLJ3jp37kxQUBCjR4+mWrVq/PTTT6xatQovLy/AXE351sVsqlevTvXq1dmxYwfffPMN1atXp0WLFomPT548mejoaDp27Ejx4sUTb+PHj8/U1yaS1SUM6atfHx54wNosudmLL0KFCnD2LLz7rtVpRORuUlWcyqhu4rVr1052zrVr195313MRyU16AfBo172aCD0bKlIkjjVrwMMD/vzT/KQ5SiMzRe7LgAEDOHbsGFFRUezYsYN69eolPjZ79mw2bdqUpL1hGMlux44dS3z82LFjKbZ5O6F7gogAWqUvq3Bygo8/NrcnToSDB63NIyJ3luphfRnRTXzQoEGsXbuWDz/8kP379/Phhx+yfv16Bg8efH+vTkRyhZMnnYCGYIunZuf9VseRNPL2hh9+MOeI2LQJevbUJKYiIpK9hITAb7+Z8yq2b291GmnRwuyRHRMDr7xidRoRuROH1B7QuXNnzp8/z+jRozl9+jSVK1e+p27iCRK6int5eSV+GlenTh3mz5/PqFGjePPNNylXrhwLFizgscceu4+XJiK5xcqVRQEo/cg/FCl1xeI0cj+qVYOlS80LyYULoUQJmDAB9YYTEZFsYfFi897f3+wNLNb7+GNYtw5WrIDVq835LUUk60l1cQrMbuIDBgxI8bHZs2cn22cYxl3P2bFjRzqq76uIpFJ8PKxY4QpA5abbLE4j6aFRI/jyS+jWDYKCoGRJGDbM6lQiIiJ3p1X6sp6KFeHll80Pu4YMMa8zHB2tTiUit0rTan0iIlnFli1w8qQzcJkH/bVKX07RtSskzLH86qswd661eURERO7mxAkIDtaQvqzozTehWDHYvx8mT7Y6jYikRMUpEcnW/uusuQBHlxgLk0h6e+UV8xNOgN69Yf16a/OIiIjcScKQvrp1zWHpknUULgzvv29uBwbCuXOWxhGRFKg4JSLZVkTEf93nYbaFSSSjjB8PXbqYE5m2awe7dlmdSEREJGVapS9re/ZZc27LS5fgrbesTiMit1JxSkSyrcWL4epV8PS8Dmy1Oo5kADs7s3dcw4ZmMbJ5czh61OpUIiIiSZ06Bb/8Ym536GBtFkmZvT1MnGhuf/EF7NljbR4RSUrFKRHJthKG9LVufcHSHJKxnJ3NFfyqVoUzZ6BpU3XHFxGRrGXJEjAMqF0bSpWyOo3cTr160KmTuaDOoEHmv5mIZA0qTolItnTsGGzaZE462qLFeavjSAYrVAh++AG8vODQIWjZ0uxJJSIikhVolb7sY9w4cHGBzZv/mydMRKyn4pSIZEvz5pn3DRtC8eKaCD03KFEC1qwBV1fYts385DMmBoiPgzOb4Ng88z4+zuKkIiKSm4SFmasHg4b0ZQdeXvD66+b2sGFw7Zq1eUTEpOKUiGRL33xj3j/9tLU5JHNVrAgrVkCePGZPqr5dj2N85w0/NoSt3cz75d4QusTqqCIikkskDOl77DEoXdrqNHIvXnvNHH55/Dh8/LHVaUQEVJwSkWzozz/hr7/AyQnat7c6jWS2WrXM4RP29vF8tdiLEbMGJm0QeRK2dFSBSkREMoVW6ct+8uaFDz4wt8eONXu/iYi1VJwSkWwnoddUy5ZQuLClUcQiLZvHMe2FVwH48PvhTFz98k2P3pjddMdgDfETEZEMdfasOXcRqDiV3XTtCo8+as5h+eabVqcREQerA4iIpEZ8/H/FqW7drM0iGSskJITw8PAUH8t/dTu9a08g7KwTbywcy5A5H+NRKIzOtRfeaGFAZCgHf5lBRL4ayY53c3OjtMZeiIhIWsXHwbktLJ2Rl/j4R6lRw8Db22Z1KkkFOztzSF/dujBjBrz4Ivj6Wp1KJPdScUpEspWtWyEkBAoWNHtOSc4UEhJCJZ9KXItMeZbSLrVh3oswvM0HnLpYgs/WvkTPqV9RrOA5nnh4Y2K7wNf7MT84+fF58uZh/779KlCJiEjqhS6BHYMg8gTffrMOgKceGgOhPuCp+Qaykzp1zAVWFi6EoUMN1s/djO36achTHIr5g5291RFFcg0Vp0QkW0noNdW+vTkptuRM4eHhXIu8RvfPu+NewT3Z4+WiQuH8Qmw2COoxmDOX3Pn2t060nbCMn96sRzXvPQDUC+xESWfPJMeeOXiGOf3mEB4eruKUiIikTugSc15DDM5ddmPTvgYAdKw+E7YcBf9FKlBlMx9+CN99F8eGDfasGP8/Wj+ywnwgbynwm6h/T5FMojmnRCTbiIkxP9kCDenLLdwruOPp65nsFlOzFldcCmMA9nbxfNW/Jw18NnLlekGaf/QDR856c8WlMDE1ayU7NqVil4iIyF3Fx5k9pm7Mbbhse1vi4h14xHsHZR84YrbRfIfZjrf9EoYEfATAsG/GEx3raD6gBVZEMpV6TolItrFuHZw/D+7u0LCh1WnESobNjs0+7Wi5axYG4OIUxbKhban37k/8EeJLsw/XELhoEoZNn8GIiMi9u9t8hxUiTyR+veh3cwb0jo/eWK7vLvMdguY8zHJuFBxHtLnEzM29OXi6IlPWv8CgZp9gFiFtZsGx5JMa4ieSwVScEpFsI2FIX+fO4KDfXrneYQ9fVlbvTf19Sylw/SKF8l7mh9eaU/udXzkUVoE3Xh7BwGVLcM4fY3VUERHJBu51vkOA81eK8uPfjQDo+NiiJO1uN98haM5DK9xLwbFgXnj3qTfpN+ML3lkSSI/Hv6Zo/n9RwVEk8+jPOxHJFq5ehWXLzG0N6ZMEhz18OeJehRIXDpMv6jJXnQvSvcYGJrboTMhOD2b1bsFz33yPvWO81VFFRCSLu9f5DgGW7TCH9PmW3k15j3+StEtpvkPQnIdWSE3BsU+DGXy29kX+DK3K6KVvEdRjSGI7FRxFMp6KUyKSLXz/vVmgKlsWHn3U6jSSlRg2O066lk/8+gHXSzw3/zsmt+3A/h+9mT+oEd0mrcOmFb5FROQeJMx3eKsYoyRXNq0l//WLLPrNHNL31GPfJj5uABEJ8x1qWHmWkJqCo71dPP97+hUCPljHpHUDeaHRFCqWOAio4CiSGVScEpFsYf58875rV1RkkLvyrnGGZ2auYsbTrdk2/yEKukfSOvAXq2OJiEg2ljDfYe0ty1j/d2Pgv+KUcaPNZp92mu8wC7qXgqMNaFJlPS2rrWDl7la8Nm8cy15pq4KjSCbRT5iIZHmXL8Pq1eZ2587WZpHs4+GAY3SeuB6AHyfWYMv0qhYnEhGR7O6why/vhn9EbJwjVTz/oELxQ4DZY2pl9d4c9vC1OKGkRkLBEf4rMI5/ehj2drEs3/kkG/5uqIKjSCbRT5mIZHkrVkBUFFSsCJUrW51GspPHuu2j5aitACwdUZ/9G9TlXkRE7s+6TU8A8FD7EH7w7cGiRwcyq8FbKkxlUwkLrES4FAagUokDvNB4CgB9F3/JoWLVrAsnkotoWJ+IZHnf3pjOoWNHDemT1Gs8ZBtnDxdm27yHmP1sC7p8etDqSCIikk1FXnLiwCbzg44yXS5wsISfxYkkPdy6wMoj750gz2/XOXbAk9+/eYhaPf62OqJIjqeeUyKSpV25Aj/8YG4/9ZS1WSR7stmg84QNlHnsFNcvO7PsjWeBIlbHEhGRbOivH8oSF2OPR6VwPCr+a3UcSUcJC6wcLOHH5QdL0PTV3wFY+X5trl9xtDidSM6n4pSIZGkrV5pD+sqXh6qaMkjSyME5jme/WkERz8tcPFkM+JaYGKtTiYhIdrPnO3N1WN82/1icRDLa43334Fb2IlfO5uPHiTWsjiOS46k4JSJZWsKQvqee0pA+uT8Fil3juXnLccxzHWjE+PHJV+0RERG5nWuXndi/0RzSV+3JQxankYzm4BRPm3e2ALBx0iNcCC1gcSKRnE3FKRHJsiIiYNUqc1tD+iQ9lHjoPC1HfQPEs2hRMWbPtjqRiIhkF3+vLkNctAPuFc5T3OeC1XEkE1RpcYQHHw8lNsqBFaPrWh1HJEdTcUpEsqyVK+H6dShXDny1AI6kk3J19gJvA/DCC7Bnj6VxREQkm9itIX25js0Gbd/bgs1msHNxRY5t87A6kkiOpeKUiGRZGtInGec96ta9xPXr0KEDXLxodR4REcnKrl92Yv8GLwCqtdWQvtykVNVz1Oy6F4ClI+thGBYHEsmhVJwSkSzp6lUN6ZOMZDB69DG8vODwYejVC11siojIbf29tgyxUQ4Ue/BfivuctzqOZLKWo7bilC+a49uLs2tJBavjiORIKk6JSJa0ahVcuwZly0L16lankZyocOE4Fi0CJyf47jv4+GOrE4mISFa1Z/mDgDkRunpz5z6FPCJp9PIOAFa+V4fYKHuLE4nkPCpOiUiWlDCkr2NHDemTjFOjxn9FqREjNP+U5CyTJ0+mTJkyuLi44Ofnx5YtW27b9vTp03Tr1o2KFStiZ2fH4MGDU2y3ePFiHnroIZydnXnooYdYunRpBqUXyTqiIhzZt94bAN82GtKXWzUYsJOCHhGcP16IX2ZVsTqOSI6j4pSIZDnXrpmToYOG9EnGe+EFaNMGoqOhWzfz+08ku1uwYAGDBw9m5MiR7Nq1C39/f5o3b05ISEiK7aOioihWrBgjR47E9zYrUAQHB9O5c2d69OjBnj176NGjB506deK3337LyJciYrm/13oTc90Bt7IXKVk53Oo4YhHnfLE0f/1XANaOf5Rrl50sTiSSs6g4JSJZzrp1EBkJpUuDn5/VaSSns9lg+nTw8IC9e+HVV61OJHL/JkyYQJ8+fejbty8+Pj4EBQXh6enJlClTUmzv7e3NxIkT6dmzJ4UKFUqxTVBQEE2aNGHEiBFUqlSJESNG0KhRI4KCglJsHxUVxeXLl5PcRLKjPTdW6dOQPnn06b08UP4CVy/k4ceJNayOI5KjqDglIlnOsmXmfdu2GtInmaNYMZg929yeNAlWrLA0jsh9iY6OZseOHQQEBCTZHxAQwNatW9N83uDg4GTnbNq06W3POXbsWAoVKpR48/T0TPNzi1gl6qoDezWkT26wdzBo8/bPAGyeUp0r51Iu5otI6qk4JSJZSmwsLF9ubrdta2kUyWWaNoWEaXb69IHzWoxJsqnw8HDi4uJwd3dPst/d3Z2wsLA0nzcsLCxV5xwxYgSXLl1KvIWGhqb5uUWssm+dNzHXHHH1vkipquesjiNZwMPNjlK21klirjuwdVbA3Q8QkXui4pSIZClbt5pFgSJFwN/f6jSS24wdCw89BGfPwtChVqcRuT+2W7qeGoaRbF9GntPZ2ZmCBQsmuYlkN7tvDOnzbfOPenMLYPbqb32j99Tfa2oCD1sbSCSHUHFKRLKUhCF9rVuDg4OlUSQXcnGBGTPMC8+vvoI1a6xOJJJ6bm5u2NvbJ+vRdPbs2WQ9n1LDw8Mj3c8pkpVFRzqwd10ZwJxvSiRBmUfD8G19CCPeDvjA6jgiOYKKUyKSZRhG0vmmRKxQqxYMGmRuP/88XLlibR6R1HJycsLPz49169Yl2b9u3Trq1KmT5vPWrl072TnXrl17X+cUycr2rfcmOtKRoqUv4VntrNVxJItp+eZWbHZxQCt27MhvdRyRbE/FKRHJMv74A44eNXuvBGgIv1jovffA2xtCQmDkSKvTiKTe0KFDmT59OjNnzmTfvn0MGTKEkJAQ+vfvD5jzQfXs2TPJMbt372b37t1ERERw7tw5du/ezd69exMfHzRoEGvXruXDDz9k//79fPjhh6xfv57BCZO1ieQwu797ENCQPknZAw9epGrrXwGYOLEkhmFxIJFsTsUpEckyEnpNBQRAvnyWRpFcLl8+mDbN3P7sM3MuNJHspHPnzgQFBTF69GiqVavGTz/9xKpVq/Dy8gLg9OnThISEJDmmevXqVK9enR07dvDNN99QvXp1WrRokfh4nTp1mD9/PrNmzaJq1arMnj2bBQsW8Nhjj2XqaxPJDNHX7Pl7rYb0yZ3V7rkOuMLff+fj22+tTiOSvWlGFxHJMjSkT7KSxo2hd2+YNQsGDIAdO8De3upUIvduwIABDBgwIMXHZs+enWyfcQ8f+3fs2JGOHTvebzSRLG//j95EX3WiSKnLlH7kjNVxJIvKVzQCGA+8w5tvQvv2mjNVJK3S1HNq8uTJlClTBhcXF/z8/NiyZcsd22/evBk/Pz9cXFwoW7YsU6dOTdYmKCiIihUrkidPHjw9PRkyZAjXr19PSzwRyYaOHYPdu8HODlq1sjqNiGncOHPlyD17IIX/ukREJIfas1xD+uReTaBw4RgOHjQXUxGRtEl1cWrBggUMHjyYkSNHsmvXLvz9/WnevHmyruEJjh49SosWLfD392fXrl288cYbvPzyyyxevDixzdy5cxk+fDiBgYHs27ePGTNmsGDBAkaMGJH2VyYi2cp335n3jz8OxYpZm0UkgZubOf8UwKhRcO6ctXlERCTjxUQ58Ndqc0ifbxsN6ZO7iaBXL7N33TvvQFSUxXFEsqlUF6cmTJhAnz596Nu3Lz4+PgQFBeHp6cmUKVNSbD916lRKly5NUFAQPj4+9O3bl2effZbx48cntgkODqZu3bp069YNb29vAgIC6Nq1K9u3b0/7KxORbCVhSF+7dpbGEEmmXz+oVg0uXoQ33rA6jYiIZLRjv1UiKsKZwiWv4FUjzOo4kg089dQ5SpQwF1JJmLNSRFInVcWp6OhoduzYQcAty2gFBASw9TazxQYHBydr37RpU7Zv305MTAwAjz/+ODt27OD3338H4MiRI6xatYqWLVveNktUVBSXL19OchOR7On8efjpJ3P7ySetzSJyK3t7c1J0gOnTYdcua/OIiEjG2r+xGgDV2x7ETstHyT1wcTEYNcrcfv99iIy0No9IdpSqX7fh4eHExcXh7u6eZL+7uzthYSl/qhAWFpZi+9jYWMLDwwHo0qUL7777Lo8//jiOjo6UK1eOhg0bMnz48NtmGTt2LIUKFUq8eXp6pualiEgWsmIFxMdD1apQpozVaUSSq1sXunY1t199FS0XLSKSY+XlyK8PAVC9nYb0yb3r0we8vSEs7L8PtUTk3qXpswDbLbMCGoaRbN/d2t+8f9OmTbz//vtMnjyZnTt3smTJElasWMG7775723OOGDGCS5cuJd5CQ0PT8lJEJAtYscK8b9PG2hwidzJmDDg5wY8/wpo1VqcREZGM0ZLY6064el/Es7pW6ZN75+QEb79tbn/4IVy6ZGkckWwnVcUpNzc37O3tk/WSOnv2bLLeUQk8PDxSbO/g4ICrqysAb775Jj169KBv375UqVKFdu3aMWbMGMaOHUt8fHyK53V2dqZgwYJJbiKSzcTHER26mbVrogFo1SLO4kAit+ftDS+9ZG6/+qpB3KlNcGwenNkE8freFRHJGToDUK3tIa3SJ6nWvTtUqgQXLsDHH1udRiR7SVVxysnJCT8/P9atW5dk/7p166hTp06Kx9SuXTtZ+7Vr11KjRg0cHR0BiIyMxO6WAd329vYYhpHYy0pEcpjQJbDcm5+nvsPlK04UK3iWmqfLmPtFsqiRI6FIoWj++svGl29/BVu7wY8NYbm3vndFRLK5q1ftgBYAVG930Nowki3Z28Po0eb2hAnmvKoicm9SPaxv6NChTJ8+nZkzZ7Jv3z6GDBlCSEgI/fv3B8zhdj179kxs379/f44fP87QoUPZt28fM2fOZMaMGQwbNiyxTevWrZkyZQrz58/n6NGjrFu3jjfffJM2bdpgb2+fDi9TRLKU0CWwpSNEnmDFrlYAtKy2ErvrJ8z9+iNfsqgiEUsY1WoEAG8veZuoGCfzgciT+t4VEcnmNm8uBOShiOdZSlYOtzqOZFMdOpir/F65Yg7vE5F7k+riVOfOnQkKCmL06NFUq1aNn376iVWrVuHl5QXA6dOnCQkJSWxfpkwZVq1axaZNm6hWrRrvvvsun3zyCR06dEhsM2rUKF555RVGjRrFQw89RJ8+fWjatCmff/55OrxEEclS4uNgxyDA7BWZUJxqVX1F4j52DNYwKcl6bnzvDmg8iRJFThJ6vjQzNvW58aC+d0VEsrt164oAULHBHg3pkzSzs4P33jO3P/sMzp61No9IduGQloMGDBjAgAEDUnxs9uzZyfbVr1+fnTt33j6EgwOBgYEEBgamJY6IZDEhISGJq3HeKv/V7VSIPAHAwdPlORRWAUf7aJpUThj+a0BkKAd/mUFEvhrJjndzc6N06dIZFV1yuXv53nVxgpFPvs/A2ZN5/7uR9K4/izxO17nb9y7o+1dEJKu6eBG2bjXnsK3YcDfgZGUcyeZatICaNWHbNhg/HsaNszqRSNaXpuKUiMjthISEUMmnEtcir6X4eJfaMO9Fczuh11R9n80UzHslSbvA1/sxPzj58Xny5mH/vv36A1/SXWq+d/s0mMGH379OyHkvvtjwPIOafZLY7nbfu6DvXxGRrGrZMoiNtQP+wq3MGcDT4kSSndlsEBgIrVrBpEnw6qtQrJjVqUSyNhWnRCRdhYeHcy3yGt0/7457heSreJaLCoXzC4Fbh/QlVS+wEyWdk14Ynjl4hjn95hAeHq4/7iXdpeZ719kxmlFt3+P5GdMYu3wEzzWcRl5ns6iV0vcu6PtXRCQrW7AgccvKGJKDtGgBfn6wY4e5ct+YMVYnEsnaVJwSkQzhXsEdT9/kf6DHGCW5smktsecNthzwB5IWpwwgwqUwMTVr4WlL9bR4Ivftbt+7+a9fxAb0qjebsctHcPRcWbP3VPOJ+t4VEcmGzp+H9esTvloAtLEwjeQUNhu89RY8+SR8+im88gq4ulqdSiTr0tWziGQqw2bHZp92rP0zgNg4RyqV2Ec59yPmYzfabPZph6E/7iWLSfjeBfN71dEhluFtPgDgf6teITrWUd+7IiLZ0JIlEBsLFStGAoesjiM5SOvW4OsLEREQFGR1GpGsTVfQIpLpDnv48vnxwUDSXlMRLoVZWb03hz18LUomcmeHPXxZWb03ES6FAXjG/0uKFz7FiQuevBYyVd+7IiLZUMKQviZN/rU2iOQ4Cb2nAD75BP7Vt5jIbak4JSKZLj7Oxu8/Vwcgf1dHfvDtwaJHBzKrwVv6416yvMMevsxq8BaLHh3IhhqdadzvNwDmf9WW+DitPS4ikp2cOQMbN5rbKk5JRmjbFqpUgcuXYeJEq9OIZF0qTolIpju+3YOrF/KQp9B1CjSx52AJP066ltdwKMk2DJsdJ13Lc7CEHw8POE2eQtc5e6gof64sZ3U0ERFJhcWLIT4eataEUqWirY4jOZCdHbz5prkdFAQXL1qZRiTr0l+CIpLp9q7zBqBSo+PYO8ZbG0bkPrkUiMG/7x4A1gfVwDDucoCIiGQZCUP6One2NofkbB06wEMPwaVLMGWK1WlEsiYVp0Qk0/29pgwADwcctTiJSPqo128PjnliCN3tzpFfS1gdR0RE7sGpU7Bli7n91FPWZpGczc4Ohg83tydOhGvXrM0jkhWpOCUimeriyfyc+rsYNptBpUbHrY4jki7yu12jxlP7AfhpajVrw4iIyD359lswDKhdG0qXtjqN5HRdupjfZ2fOwJdfWp1GJOtRcUpEMlXCkD6vGqfJ73rd2jAi6aje8+bQvj9WluN8SAGL04iIyN1oSJ9kJkdHeOUVc/ujjyA21to8IlmNilMikqn2rvcG4KEmxyzNIZLeij90ngr1QzDi7fh5uladFBHJyo4dg+BgsNk0pE8yT58+4OoKR46Yk/GLyH9UnBKRTBMbZc/BzZ4A+Kg4JTlQ/f67Afj164eJinC0NoyIiNzW/PnmfYMGUEJTBUomyZcPXn7Z3P7gA7SIishNVJwSkUxzeGtJoq86UdAjglJVz1kdRyTd+TQ5ilvZi1y75MK2BT5WxxERkdv45hvzvls3a3NI7jNwIOTNC7t3w7p1VqcRyTpUnBKRTJMw35RPo+PYbNZmEckIdnZQ7/ndAPz0hS/x8dbmERGR5P7807w5OkKHDlankdzG1RWef97c/uADa7OIZCUqTolIpkmcbyrgqLVBRDLQo1334lIgirOHinJgg5fVcURE5Bbz5pn3LVpAkSLWZpHcaehQcHCAjRvh9x92wLF5cGYTxMdZHU3EMipOiUimOHekEOf+KYKdQxwV64daHUckw7gUiOGxp/cC8PPMqhanERGRmxmGhvSJ9Tw94em2xwEYF3gUtnaDHxvCcm8IXWJtOBGLqDglIpkiYUhfudqncCkYbW0YkQxWp9efAOxd683Fk/ktTiMiIgmCg+H4ccifH1q1sjqN5FqhSxhWw/wGXLq9HUfPepv7I0/Clo4qUEmupOKUiGSKfTeKUw810ZA+yfncK/xLubonMOLt+HXOw1bHERGRGxJ6TbVrZ05KLZLp4uNgxyAqe/5Fk8priTfs+WztizcevLF8347BGuInuY6D1QFEJOeLuurAP7+UAsCnyTFrw4hkkjrP/MXhX0rx69cP0+SV362OIyKS68XEwMKF5raG9ElGCgkJITw8PMXH8l/dToXIEwAMaf4x6/4KYPqmvrzd4W0K5IkADIgM5eAvM4jIVyPFc7i5uVG6dOmMii9iCRWnRCTDHdriSWyUA0VLX8K9wr9WxxHJFFVb/UO+ote4eKoA+3/0pqBHiNWRRERytR9/hHPnoFgxaNTI6jSSU4WEhFDJpxLXIq+l+HiX2jDvRkepplXXULH4fg6crsSszb15udmnie0CX+/H/OCUnyNP3jzs37dfBSrJUVScEpEMlzDf1EMBx7DZrM0iklkcXeKo2WUfmyY/wtbZlWk2/CerI4mI5GoJQ/o6dQJHR2uzSM4VHh7OtchrdP+8O+4V3JM9Xi4qFM6bXfjs7AwGNwvihVlTmbhmEAMDJmFvFw9AvcBOlHT2THb8mYNnmNNvDuHh4SpOSY6iOadEJEMZBuxdWwaAhzSkT3KZ2s/cmBh9nTeXzxayOI3kNpMnT6ZMmTK4uLjg5+fHli1b7th+8+bN+Pn54eLiQtmyZZk6dWqyNkFBQVSsWJE8efLg6enJkCFDuH79eka9BJF0ExkJS5ea2xrSJ5nBvYI7nr6eyW4xNWtxxaVwwuxS9PT/iiL5LnDkbDm+39kaA7jiUpiYmrVSPD6lgpdITqDilIhkqLB9rlw8WQBHl1gerHvC6jgimcq9/MXEidH/WvWY1XEkF1mwYAGDBw9m5MiR7Nq1C39/f5o3b05ISMrDS48ePUqLFi3w9/dn165dvPHGG7z88sssXrw4sc3cuXMZPnw4gYGB7Nu3jxkzZrBgwQJGjBiRWS9LJM1WrICICPD2htq1rU4juZlhs2OzTztzG8jrfI1+T3wOQNDqwQBs9mmHYdOf6pK76DteRDLU3vXeAJT3D8Upb6y1YUQsUKeX2Xvqz5WPov92JbNMmDCBPn360LdvX3x8fAgKCsLT05MpU6ak2H7q1KmULl2aoKAgfHx86Nu3L88++yzjx49PbBMcHEzdunXp1q0b3t7eBAQE0LVrV7Zv355ZL0skzRKG9HXtiqYYEMsd9vBlZfXeRLgUBmBgk0k42MeweV8DPnEO5LCHr7UBRSygq2QRyVB713oDWqVPci/fVofJW+QaEeGFgcZWx5FcIDo6mh07dhAQEJBkf0BAAFu3bk3xmODg4GTtmzZtyvbt24mJiQHg8ccfZ8eOHfz+u7n65JEjR1i1ahUtW7ZM8ZxRUVFcvnw5yU3ECv/+C6tWmdtdu1qbRSTBYQ9fZjV4i0WPDuTPJ57gseZ7AJi7qJPFyUSsoeKUiGSYyEtOHP2tBKD5piT3cnCO45EOB2989YylWSR3CA8PJy4uDnf3pPOSuLu7ExYWluIxYWFhKbaPjY1NXA69S5cuvPvuuzz++OM4OjpSrlw5GjZsyPDhw1M859ixYylUqFDizdMz+cS+Iplh8WKIiYHKlaFKFavTiPzHsNlx0rU8B0v48djgfwDYubgil8/ktTiZSOZTcUpEMszBjaWJj7PDvcJ5XL30ibnkXo922Xdjqx1Xrui/XskctlvGLhmGkWzf3drfvH/Tpk28//77TJ48mZ07d7JkyRJWrFjBu+++m+L5RowYwaVLlxJvoaGh9/NyRNJs3jzzXhOhS1ZW+pEzeNc8RVyMPb9+/bDVcUQyna6QRSTD/L1Oq/SJAHhWP0NRrzNAHtavL2J1HMnh3NzcsLe3T9ZL6uzZs8l6RyXw8PBIsb2DgwOurq4AvPnmm/To0YO+fftSpUoV2rVrx5gxYxg7dizx8fHJzuns7EzBggWT3EQy28mTsHGjud2li7VZRO7m8b5/APDLrCrExWpyNMldVJwSkQxhxNvYd2My9IcCjlmaRcRqNhs83NScNHrFCleL00hO5+TkhJ+fH+vWrUuyf926ddSpUyfFY2rXrp2s/dq1a6lRowaOjo4AREZGYmeX9NLR3t4ewzASe1mJZDXffAOGAXXrQpkyVqcRubNqbf4hv1skl04X4K9V5ayOI5KpVJwSkQxx5lBJIs7lxTl/FGUeO2V1HBHL+TTeAcSxe3d+/vnH6jSS0w0dOpTp06czc+ZM9u3bx5AhQwgJCaF///6AOeSuZ8+eie379+/P8ePHGTp0KPv27WPmzJnMmDGDYcOGJbZp3bo1U6ZMYf78+Rw9epR169bx5ptv0qZNG+zt7TP9NYrcjWHAV1+Z2zd9u4tkWQ7OcdR+5i8Afp5R1eI0IpnLweoAIpIzHfnVB4CKDUJxcEo+3EMktylQ7DKwHmjKV1/B6NFWJ5KcrHPnzpw/f57Ro0dz+vRpKleuzKpVq/Dy8gLg9OnThISEJLYvU6YMq1atYsiQIUyaNIkSJUrwySef0KFDh8Q2o0aNwmazMWrUKE6ePEmxYsVo3bo177//fqa/PpF7sWcP/PUXODnBU09ZnUbk3tR55k/Wf1yDQ1s8Ob2vKMV9LlgdSSRTqDglIhni6I3ilOabErnZbBKKU2+/DXbqvywZaMCAAQwYMCDFx2bPnp1sX/369dm5c+dtz+fg4EBgYCCBgYHpFVEkQyX0mmrTBopouj/JJoqUiqBKiyP8seJBfplZlY4fbbI6kkim0GWxiGSA4oTtLw3AQwFHLc4ikpUsI1++OI4fh59+sjqLiEjOFRtrzjcF0KOHtVlEUuvxvnsA2LbAh+uXnSxOI5I5VJwSkQzQEgAvv9MUdI+0OItIVnKdJk3+BWDOHIujiIjkYOvXw5kz4OYGzZpZnUYkdcr7n8C9wnmiIpzYtqCS1XFEMoWKUyKSAdoAULm5ek2J3KpZM3PuiMWLISrK4jAiIjlUwpC+Ll3MOadEshObDR7v8wdgToyuBVElN1BxSkTS1bVrdkBjACo3O2JtGJEs6JFHIiheHC5ehDVrrE4jIpLzXL4My5aZ21qlT7Krmp3345w/mjMHXTm0pZTVcUQynIpTIpKufvutAJCHQsXP4+Fz3uo4IlmOvT107mxuz5tnbRYRkZxo8WK4dg0qVoQaNaxOI5I2LgWjqdl5HwA/T/e1OI1IxlNxSkTS1U8/FQKgbO292GwWhxHJorp2Ne+/+w4iIqzNIiKS03z9tXnfsye6FpFsre6z5tC+P1eV5d8T+S1OI5KxVJwSkXQTF/dfcapcnb8tTiOSddWsCeXKmZ/sL19udRoRkZwjJAQ2bTK3n37a0igi9624zwXK+4dixNsR/GVlq+OIZCgVp0Qk3fz+O/z7ryNwkVK+mm9K5HZsNnOSXtDQPhGR9DR3LhgGNGgAXl5WpxG5fwm9p4K/rkxstP58l5xL390ikm7+6wHyA/YO8VZGEcnyEob2rVkDFy5Ym0VEJCcwjP+G9PXoYW0WkfRSpcURChWP4MrZfPzx/YNWxxHJMGkqTk2ePJkyZcrg4uKCn58fW7ZsuWP7zZs34+fnh4uLC2XLlmXq1KnJ2ly8eJGBAwdSvHhxXFxc8PHxYdWqVWmJJyIW+f77hC2NUxK5m4cfhipVICbGnLxXRETuz44dsG8fuLhAx45WpxFJH/aO8dTu+RcAP8+sanEakYyT6uLUggULGDx4MCNHjmTXrl34+/vTvHlzQkJCUmx/9OhRWrRogb+/P7t27eKNN97g5ZdfZvFNV+LR0dE0adKEY8eOsWjRIg4cOMC0adMoWbJk2l+ZiGSqw4fh77/B3t4AVlsdRyRbSOg9paF9IiL3IT4Ozmxi9icHAWj7ZDwFC1qcSSQd1e75F3b28RwJLsm5Ix5WxxHJEKkuTk2YMIE+ffrQt29ffHx8CAoKwtPTkylTpqTYfurUqZQuXZqgoCB8fHzo27cvzz77LOPHj09sM3PmTC5cuMCyZcuoW7cuXl5ePP744/j63n7JzKioKC5fvpzkJiLWWbrUvH/kkSvARSujiGQbCfNObdoEYWGWRhERyZ5Cl8Byb67/0IxvlrgB8Gyl7uZ+kRyiUPGrVGl5GIA939WxOI1IxkhVcSo6OpodO3YQEBCQZH9AQABbt25N8Zjg4OBk7Zs2bcr27duJiYkBYPny5dSuXZuBAwfi7u5O5cqVGTNmDHFxcbfNMnbsWAoVKpR48/T0TM1LEZF0ltAZ8oknLlqaQyQ7KVPGXLnPMGDZMqvTiIhkM6FLYEtHiDzBdzue5N+rRfF0DeGJBxea+1Wgkhzk8b57ANi71g8oYG0YkQyQquJUeHg4cXFxuLu7J9nv7u5O2G0+8g0LC0uxfWxsLOHh4QAcOXKERYsWERcXx6pVqxg1ahT/+9//eP/992+bZcSIEVy6dCnxFhoampqXIiLp6MQJ+PVXc7thw0vWhhHJZhLmRVm0yNocIiLZSnwc7BgEGADM+qk3AL3qzcbe7sYH3DsGm+1EcoAH657EvcJ5Yq47A5rxX3Ieh7QcZLPZknxtGEayfXdrf/P++Ph4HnjgAb744gvs7e3x8/Pj1KlTfPTRR7z11lspntPZ2RlnZ+e0xBe5d/FxcG4LXDsNeYpDMX+ws7c6VZaTMKSvTh0oVizG2jAi2UyHDvD66+bQvvBwcHOzOpGISNYQEhKS+GH2rfJf3U6FyBMAhJ4vxdo/zZEaverNvtHCgMhQDv4yg4h8NVI8h5ubG6VLl07v2CIZwmaDx/v8weLXGwIDMIwoqyOJpKtUFafc3Nywt7dP1kvq7NmzyXpHJfDw8EixvYODA66urgAUL14cR0dH7O3/+6Pfx8eHsLAwoqOjcXJySk1MkfQRusT8RO7GhQ8AeUuB30TwbG9drixoyY1e8x06WJtDJDsqVw6qVYPdu+G776BPH6sTiYhYLyQkhEo+lbgWeS3Fx7vUhnkvmttf/vQMhmFHA5+NlH3gaJJ2ga/3Y35wys+RJ28e9u/brwKVZBs1Ou9neWAdYq4/zI4dB/HzszqRSPpJVXHKyckJPz8/1q1bR7t27RL3r1u3jieffDLFY2rXrs33/60vD8DatWupUaMGjo6OANStW5dvvvmG+Ph47OzMkYYHDx6kePHiKkyJNRLmMLjRVTxR5EnY0pEjpVex6WAz/vgD/vkHzpyByEizSeHCULw4PPQQPPIINGhg7supzp2Dn34yt9u3hwsXrM0jkh117GgWpxYtUnFKRATM6USuRV6j++fdca+Q/EPwclGhcH4h8fG2xCF9vevPStauXmAnSjonn5v2zMEzzOk3h/DwcBWnJNvIUzCahwJ2sGd5Hb79thjPP291IpH0k+phfUOHDqVHjx7UqFGD2rVr88UXXxASEkL//v0Bcy6okydP8tVXXwHQv39/PvvsM4YOHcpzzz1HcHAwM2bMYN5N62a/8MILfPrppwwaNIiXXnqJQ4cOMWbMGF5++eV0epkiqXDLHAYJ9p7wYcamPny/qzWHwirc9TQJE4Tb2YG/P/ToAZ07Q/78GZDZQsuWQXw8+PmBt7eKUyJp0bEjjBoF69fDv/9CkSJWJxIRyRrcK7jj6Zu8uBRjlOTKprXs2FWVI2fLUcDlMh1qLk583AAiXAoTU7MWnrZUL1AukmX5tglmz/I6bNxYmFOnoEQJqxOJpI9UF6c6d+7M+fPnGT16NKdPn6Zy5cqsWrUKLy8vAE6fPk1ISEhi+zJlyrBq1SqGDBnCpEmTKFGiBJ988gkdbhr/4+npydq1axkyZAhVq1alZMmSDBo0iNdffz0dXqJIym43j8HNcxgYBizf0YaPVw9h874GiW0c7GOoXvkcFSrb4+19HTe3WPLkicMwbFy5Yk9ERBFOnCjC1q2wfz9s3mzehg2DF1+EoUNzzh+fCUU4DekTSbuKFeHhh+Hvv+H776FnT6sTiYhkbYbNjs0+7VgUVA+AzrUWkM/F7Mae8PHiZp92GCpMSQ5TrNxpYAtxcf5Mnw63maJZJNtJ04ToAwYMYMCAASk+Nnv27GT76tevz86dO+94ztq1a/NrwnJfIhnsTvMYJMxhsGlvfYbP/4DfDtcCwM4WRxu/5fR4/GsaP7yefjOvMHduyue/eQ6D48dh3jyYMcMcAvjeezB5MgQGwsCBYJ+N51cPD4cffzS3VZwSuT8dO5rFqUWLVJwSEbkXf+etyfztXQF4tsHMxP0RLoXZ7NOOwx6+VkUTyWCTAX8+/xxGjIAbs+WIZGtpKk6JZHd3msegWNhlOgc1YuFvnQHI63yVlwM+YWCTSZRyPZnY7l7nMPDyguHD4dVXzcmOAwPhr79g0CCYOxdmzTLnp8qOFi2C2Fhzbq0Kdx/pKCJ30LEjvPMOrFkDly9DwYJWJxIRydp2LStP1DVnHnjwAie6+fFDdHmuOhfkVNFy6jElOdxiihaN4dQpR5Yv14fEkjOoOCW52s3zGBgGbF9YiSkj6hN50QV7u1j6PfE5b7Z7F4/CZxKPSescBvb25oThbdrA9Olmwer336FGDZg2DZ5+Or1fXcb75hvzvls3a3OI5AQPP2wWeQ8ehBUr9HMlInI3v39jfrr3WPe9nHIrb3EakcwUQ7t24cyYUZzJk1WckpxBHymIANevODKnX1PmvtCUyIsulPU5zm+jH+Wz3i8mK0zB/c1h4OAA/fubw3cCAuDaNejeHQYPhpiY+38tmSUkBLZsAZvNnOhdRO6PzfbfxeXSpdZmERHJ6s4cLMLR30tgZx9PjU77rI4jkunatQvHzg42bIB9+hGQHEDFKcn1Tu115X+NurJjUSXs7ONpMXIrAzct53T7akS4FE7SNsKlMCur906XOQxKloRVq8wVugAmToRWrSAyIg7ObIJj88z7+Lj7fq6MMH++eV+vHpQqZW0WkZyibVvzfvVqiIqyNIqISJb2+zyz15RP42MU8oi0OI1I5itePIbWrc3tKVOszSKSHjSsT3K1w8E+/DCmE1ERThQucYWe03+gbK3T5mMevhxxr0KJC4fJF3U5Q+YwsLeHd981h/Z16wZr10LTR3ewYuiTFMp72WyUtxT4TQTP9un2vOlh3jzzXkOPRNJPjRpQvDicPm1+Etq8udWJRESynthoO35LGNL39F6L04hYZ+BAc07bL7+EMWMgf36rE4mknXpOSa5kGACDWTayN1ERTpSvF8qwzd8kFqYS29nsOOlanoMl/DjpWj7DJtd88klYN2cThfJe5Od9j/LE+xu4EFHEfDDyJGzpCKFLMuS502LvXti921wZRGPcRdKPnZ05Lx2YF5siIpLcXz+UJeJcXgq6X+XhpketjiNimUaNoHx5cyGVhLlgRbIrFack1zEMCAoqCXwMhh21n/mT/t8uI7/rdetCxcdRx9aDTSMbUKzgWXYe86P1+O+JjMpD4kxXOwZnmSF+c+ea982agaurtVlEcpqEoX3Ll0N8vKVRRESypK2zqwDwWPe/sXfUL0rJvezs4IUXzO1JkxI+gBfJnjSsT3KVuDjzF/icOe4A1Ov/Pe3eP4LNljnPHxISQnh4eLL9+a9up0LkCap5n2DDG0/gP3oLWw/VpfOnC1gyuD2ODrEQGcrBX2YQka9Giud2c3OjdOnSGf0SiI2F2bPN7e7dM/zpRHKdhg2hQAFzaN/27fDoo1YnEhHJOsKPFuLg5tLYbAa1evxldRwRy/XqBSNHwh9/wNatULeu1YlE0kbFKck1YmLgmWfMuZLs7Azi4/tQs3NRbDbPTHn+kJAQKvlU4lrktWSPdakN8140tyt7/s33w1rTZOw6VuxqTf+ZU5n+XF9sNgh8vR/zg1M+f568edi/b3+GF6h++AFOnQI3N3M4ooikL2dns1fit9+aQ/tUnBIR+U/w1w8DUPGJ47iWvmJxGhHrFSlizgE7YwZMnqzilGRfKk5JrhATA506wbJl4OAA7757lBEjZgGvZFqG8PBwrkVeo/vn3XGv4J7ksXJRoXB+YeLXj1f8hQUvdabdx0uZubkPVTz/ZHDzidQL7ERJ5+TFtDMHzzCn3xzCw8MzvDg1fbp5/8wz5h/RIpL+nnzSLE4tWwbvv291GhGRrCE22o7f5prFqTrPqNeUSIIBA8zi1LffwscfwwMPWJ1IJPU055TkeHFx0LOn+Uees7PZEyEg4KJledwruOPp65nkFlOzFldcCnPzMPE2ft/zv6fN4tmwb8bz/cE2xNSslexYT1/PZMWujHLqFKxcaW736ZMpTymSK7VoYa7muXcv/POP1WlERLIGTYQukrJHHoHHHjM/kJ8xw+o0Immj4pTkaPHx8PzzMH++ubLckiXmH31ZjWGzY7NPO3P7pv2Dmk2kp/+XxMU78HTQXMJDCluSL8Hs2Waxr25d8PGxNIpIjlakCNSvb25r1T4REZMmQhe5vQEDzPupU83rdZHsRsUpybEMAwYPhpkzzZUs5s3LmoWpBIc9fFlZvTcRLoUT99ls8NELw3mw8lGuXMrPjO6tiIpwtCRffPx/n8Q895wlEURylYQ53VScEhHRROgid9Opk7mKdkjIfyMdRLITFackx3r3Xfj0U7PAM3s2dOhgdaK7O+zhy6wGb7Ho0YH84NuDRY8OZH7T1+g+bwMFHrjKqb+LMX9QI0uWiV27Fo4cgYIFoWPHzH9+kdwmoTj1yy9w/ry1WSR7mjx5MmXKlMHFxQU/Pz+2bNlyx/abN2/Gz88PFxcXypYty9SpU5O1uXjxIgMHDqR48eK4uLjg4+PDqlWrMuoliCTSROgid+bi8t+0G5MnW5tFJC1UnJIc6csvITDQ3J40CXr0sDZPahg2O066ludgCT9OupbHsNlRuGQEvWevws4hjl1LK7JpUvVMz/Xxx+Z9796QL1+mP71IruPlBVWqmL0WV6+2Oo1kNwsWLGDw4MGMHDmSXbt24e/vT/PmzQkJCUmx/dGjR2nRogX+/v7s2rWLN954g5dffpnFixcntomOjqZJkyYcO3aMRYsWceDAAaZNm0bJkiUz62VJLqWJ0EXuTb9+5gfza9ZozkrJflSckhznxx+hb19ze/hweOEFa/Okl7K1TtFuzE8ALH/7cQ7+VCrTnvvvv82eU3Z28PLLmfa0Irley5bmvTqmSGpNmDCBPn360LdvX3x8fAgKCsLT05MpU6ak2H7q1KmULl2aoKAgfHx86Nu3L88++yzjx49PbDNz5kwuXLjAsmXLqFu3Ll5eXjz++OP4+vpm1suSXGrP9w+aE6F7RGgidJE7KFsWmjc3t2/z614ky1JxSnKUP/+E9u0hNha6ds15S7A/3ucPanbZixFvx5d9mvPviQKZ8rxBQeZ927bmf3oikjkS5slbvVqTm8q9i46OZseOHQQEBCTZHxAQwNatW1M8Jjg4OFn7pk2bsn37dmJiYgBYvnw5tWvXZuDAgbi7u1O5cmXGjBlD3G2+OaOiorh8+XKSm0ha/DzNLIDW6fWnJkIXuYuBA837WbMgMtLaLCKpoeKU5BgnT5p/yF2+DPXqmb+Q7XLYd7jNBk/9bwOlqp7l6vm8zHymJTHX7TP0OU+ehK+/NreHDMnQpxKRW9Suba7cd+EC/Pab1WkkuwgPDycuLg53d/ck+93d3QkLC0vxmLCwsBTbx8bGEh4eDsCRI0dYtGgRcXFxrFq1ilGjRvG///2P92/zSdDYsWMpVKhQ4s3T0zMdXp3kNmcOluTo7yWwd4zTkD6Re9C0KZQpA//+a65YLpJd5LA/3SW3ioyE1q3hxAmoVAmWLgVnZ6tTZQynPHH0/moF+YpeI3SXO4tebZihE6R/+CFERYG/P9Stm3HPIyLJOTiYF5mglXck9Ww2W5KvDcNItu9u7W/eHx8fzwMPPMAXX3yBn58fXbp0YeTIkbcdKjhixAguXbqUeAsNDb2flyO51O5ldQDwbfMPBd3VDUTkbuzt/5vWJCgISxZSEkkLFack2zMMePZZ2LULihUz52YpWtTqVBnLtfQVek7/AZtdPL/NfZg/vq+VIc9z8iR88YW5HRho9twSkcyVMLRP807JvXJzc8Pe3j5ZL6mzZ88m6x2VwMPDI8X2Dg4OuLq6AlC8eHEqVKiAvf1/PXZ9fHwICwsjOjo62TmdnZ0pWLBgkptI6hRl/4+PAOD/3G5ro4hkI889Zy5g9Oef5ny8ItmBilOS7X34ISxYYPYwWLTI7MaaG1RsEEqrt8y5QzZ82hZI/wLVmDFmr6nHH4cnnkj304vIPWjWzCwM795tFoxF7sbJyQk/Pz/WrVuXZP+6deuoU6dOisfUrl07Wfu1a9dSo0YNHB0dAahbty7//PMP8fH/zflz8OBBihcvjpOTUzq/ChGAZ4mNdqSU7xm8a6Y8JFVEkitc2PzwHmDCBEujiNwzFackW1u5Et54w9z+9FNzrqnc5ImXduDb5hDxsQ7AIs6dc0i3c//1F3z+ubk9erR6TYlYpVgxePRRc1u9p+ReDR06lOnTpzNz5kz27dvHkCFDCAkJoX///oA55K5nz56J7fv378/x48cZOnQo+/btY+bMmcyYMYNhw4YltnnhhRc4f/48gwYN4uDBg6xcuZIxY8YwMGH2XZF0ZM6zPwAA/75/6DpEJJUGDTKv33/4AfbtszqNyN2pOCXZ1v790K2bOayvXz+4cb2dq9hs0PXTdbh6hQElGTToQS5duv/zGob5H1pcHLRrBw0b3v85RSTtWrY071WcknvVuXNngoKCGD16NNWqVeOnn35i1apVeHl5AXD69GlCQkIS25cpU4ZVq1axadMmqlWrxrvvvssnn3xChw4dEtt4enqydu1atm3bRtWqVXn55ZcZNGgQw4cPz/TXJznfL78UAsrgUvAq1dsfsDqOSLZTrpy50jb8t/K2SFaWft0sRDJafByc2wLXTnMpphRPPvk4ly/b8PeHTz6xOpx1XArE0Pb9Wczo3psDBzxo29b8hMTFJZUnuun9XbimKhs2PIyzM/zvfxmRWkRSo2VLeOstWLc2jqgDi3Au7A7F/MEuY1frlOxtwIABDBgwIMXHZs+enWxf/fr12blz5x3PWbt2bX799df0iCdyRwsWFAOgSovfccoTZ3Eakexp6FBzoaivvoL33jN7Y4tkVeo5JdlD6BJY7g0/NsT4pRu9uoVz8KANzxKRLFoEuX2qi8IlzwPNyZcvjk2bzB5lMTGpOMFN72/o96/Rf2gJAIa/sC/XzOElkpVVc12CR5EzXI20Z8uX0+DHhubPbOgSq6OJiKS7Awfg118LAvH4PrnV6jgi2VbdulCzJly/DlOnWp1G5M5UnJKsL3QJbOkIkScA+N+qV1i2vR1ODlEs7t+AB6L0x5lpN//732GcnMxPSNq3h2vX7uGwm97f2Dh7ek75iouRRahZ9ndGVvfVH78iVgtdgt0vHWlRdQUAK3fdGOMXedL82dXPqIjkMP/1iF9BIY9/rYwikq3ZbDBkiLn92WdmkUokq1JxSrK2+DjYMQgwAPhpnz/D538AQFCPwdQstx12DDbbCTVrRrBsmTmkb8UKCAiAsDstbnPT+xsfb6PvtOls2teQfM4RfDOwG44OsXp/Rax0089oy+orAVi5+0Zx6sbvRf2MikhOcv48zJqV8NXHVkYRyRE6doRSpeDsWZg3z+o0IrenOafEciEhIYSHh6f4WP6r26lwo8dU2EV3On+2gLh4B56uO4f+jW70TY0M5eAvM4jIVyPFc7i5uVG6dOkMyZ4VNW8Oq1dDmzbw889QrVosb799hEcfjUjWNuH9jY2z56UvP+XLLb2wt4tl7oCnedDjsNnoDu9vbntvRTLCvf4ObPzwehztozkUVoFDYQ9S3uMfwNDvQBHJUT7/3Oz5XbFiJAcObAL8rI4kkq05OsLLL8Nrr8GECfDMM2CnLiqSBak4JZYKCQmhkk8lrkWmPP6sS22Y9yLExtnT5bP5hF0szsOl/uLzZ/slWVI48PV+zA9O+Tny5M3D/n37c9UfZ/Xrw++/Q6tWMfzzjyMvvFABmAd8COxJbNelNrzeypeXvvqUnw/4AzC7Xy+erLE8yflu9/7mxvdWJD3d6+9AgIJ5r+BfaQsb/m7ED7ubU77Zp4nt9DtQRHKCqCj49Mavtu7dz/Lmm9bmEckpnnsO3n0X/voLVq6E1q2tTiSSnIpTYqnw8HCuRV6j++fdca/gnuzxclGhcH4ho759j837GpDf5QqLB3Ugn0tkknb1AjtR0tkz2fFnDp5hTr85hIeH57o/zCpWhJkz/6ZevS3YbAMxjK5AV4p6ncHNOwwH5xh+PuzK/JHmjOf5nCOY1a83Tz22KNm5Unp/c/N7K5Je7vV3YIJmVVez4e9GrP0zgJdvKk7pd6CI5ATz5pnTEZQsCU2a/KvilEg6KVwYBgyADz+EMWOgVSuSfNAvkhWoOCVZgnsFdzx9k/9hFWOUZMFH9nz4/XAAZjzXh4olDiY+bgARLoWJqVkLT5v6p94qX7544GWenhrL36tb8MeKB7lw3J0Lx//7I9jOLo5Ojy3kg87D8SoWkuR4vb8imeNOvwOvbFpL/usXsQFNq67htXkfsXFfQ6JinHByjNbPqIjkCIZhDjkCeOklcHQ0rA0kksMMGQITJ8Kvv8Lmpbtp8Mg+yFMcivmDnb3V8URUnJKsLTykMG9Mmg7AS00n0qnWt4mPJVyybPZph6E/yu7IvcJJajy1mojzLhzf4cHZg0WIi7WnaOlLNKm4hqdDPkl2jN5fEesZNjs2+7Sj5a5ZGEAVzz9xLxTGmUse/HKwDg0f3qSfURHJEdavhz//hHz54Pnn4ehRqxOJ5Czu7tCn82EmfVmOMYFnaTCim/lA3lLgNxE821sbUHI9Xc1KlhUXa+Pr55ty9UpeKvr+Q2Dv95M8HuFSmJXVe3PYw9eihNlPftfrPBxwjIYv7qLx4O080v4Q5x8uy8rqvYlwKZykrd5fkazhsIdv4s+ozQYBVdYCsHJfG/2MikiO8b//mffPPgtFilibRSRHCl3Cq9Ub4WAfw7q/Ath2+MZCKpEnYUtHCF1ibT7J9dRzSrKstR89xrFtJXApEEWnL39irucISlw4TL6oy1x1LsipouXUWyCdHPbw5Yh7Fb2/IlnUzT+j7iGR8DMsPNyN0h7zrY4mInLfdu+GNWvMFcQGDbI6jUgOFB8HOwbhVewET9eZy5dbejF2+QiWDOmAOV7CBjsGQ8knNcRPLKPilGRJh4NLsPZ/NQF4asIGXEtfwcCOk67lLU6Wcxk2vb8iWVnCz2ihdvYwAk784c6Vc3koUCzllf5ERLKLDz4w7zt1gnLlrM0ikp2FhIQQHh6ebH/+q9upEHkCgNdbf8hXP/dk6fb2/H3iIR4utRcwIDKUg7/MICJfjRTP7ebmpsVVJEOpOCVZTuQlJ+b0a4oRb0eNzvvw63Dw7geJiOQSBR6IpGSVs5z88wEObi6NX8cDVkcSEUmzQ4fg2xtTig4fbm0WkewsJCSESj6VuBaZ/EOrLrVh3ovmtk/J/bSvsYTF2zoyeslbLHi5S2K7wNf7MT845fPnyZuH/fv2q0AlGUbFKclSDAO+feUJ/j1REFfvi3T8cJPVkUREspyKDUM4+ecD7N+g4pSIZG/jxkF8PLRsCb6aQk8kzcLDw7kWeY3un3fHvYJ7ksfKRYXC+YWJXwe2f4cl29uz8LfOvHF8DL5efwBQL7ATJZ2Trx585uAZ5vSbQ3h4uIpTkmFUnJIsZduCSuxaUhE7+3h6fLEal4LRVkcSEclyKj1xnA2f1ODARi8MA2w2qxOJiKTeyZPw5Zfm9ogR1mYRySncK7jj6Zu0wBRjlOTKprXkv34RG1Cl9F90qTWfecHdeGvRaJa90pYIl8LE1KyFp+acFYvoO0+yjPCjhVj8WkMAmr3+K941zlicSEQkayr72Gkc88Rw+Uw+Tu9ztTqOiEiaTJgAMTFQrx7UrWt1GpGcy7DZsdmnnbl9Y19g+3ews8WxfOeT/H64Jpt92mkxJLGUvvskS4iLtePr55sSFeFE2donaTxku9WRRESyLAfnOB6sexKA/T96WZxGRCT1zp+Hzz83t994w9osIrnBYQ9fVlbvTYRLYQAqljhIT/+vAOi/eiaHPTSuVqyl4pRkCcFfBnB8R3FcCkbR4/M12Nkbdz9IRCQXq/TEcQAObNTcDyKS/QQFwdWrUL06BARYnUYkdzjs4cusBm+x6NGB/ODbgxpvH8POIY7dWyvzzy8lrY4nuVyailOTJ0+mTJkyuLi44Ofnx5YtW+7YfvPmzfj5+eHi4kLZsmWZOnXqbdvOnz8fm81G27Zt0xJNsiV/fpv7BACdP/6RIqWuWJxHRCTrq9jQLE4dDi5J9DV7i9OIiNy78+fN4hTAqFGaN08kMxk2O066ludgCT9iqxWlVo+/AVj5Xh0M9Q8QC6W6OLVgwQIGDx7MyJEj2bVrF/7+/jRv3pyQkJAU2x89epQWLVrg7+/Prl27eOONN3j55ZdZvHhxsrbHjx9n2LBh+Pv7p/6VSLZ0+bI9MAcMOx7tupfq7Q5ZHUlEJFtwr/AvhUtcITbKgcNb9WmniGQf48dDRITZa6pdO6vTiORuAUO34egSy9HfSvDnynJWx5FcLNXFqQkTJtCnTx/69u2Lj48PQUFBeHp6MmXKlBTbT506ldKlSxMUFISPjw99+/bl2WefZfz48UnaxcXF8fTTT/POO+9QtmzZtL0ayVYMA8aMKQ2UpnCJcNp/sMnqSCIi2YbNdvPQPs07JSLZw9mz8Omn5vY776jXlIjVCpeMoOHAHQAsD3yc2Cj1xhZrpKo4FR0dzY4dOwi4ZWB4QEAAW7duTfGY4ODgZO2bNm3K9u3biYmJSdw3evRoihUrRp8+fe4pS1RUFJcvX05yk+zlyy9h3boiQAwtRs3FpUDMXY8REZH/VGxo9lrWvFMikl189JE511SNGtCqldVpRASg0aAdFHS/SvjRwmyZXtXqOJJLpao4FR4eTlxcHO7u7kn2u7u7ExYWluIxYWFhKbaPjY0lPDwcgF9++YUZM2Ywbdq0e84yduxYChUqlHjz9PRMzUsRi/3zD7z4YsJXgRT3CbUyjohItlS+nvm78/Q+N66czWtxGhGROwsLg0mTzO3Ro9VrSiSrcM4fQ4uRZmeTNR89RsR5F4sTSW6UpgnRbbf8T2IYRrJ9d2ufsP/KlSt0796dadOm4ebmds8ZRowYwaVLlxJvoaEqbmQXMTHQrZv5qZmf3xXgQ6sjiYhkS/ldr1OyylkADm0pZXEaEZE7+/BDuHYNatWCZs2sTiMiN3u06z5KVD7H9cvOrPnoMavjSC6UquKUm5sb9vb2yXpJnT17NlnvqAQeHh4ptndwcMDV1ZXDhw9z7NgxWrdujYODAw4ODnz11VcsX74cBwcHDh8+nOJ5nZ2dKViwYJKbZA+BgbBtGxQuDKNHHwPiLU4kIpJ9lfc/AcDBn9SDWESyruPHIWGKWvWaEsl67OwN2r73EwC/zKhK2IEiFieS3CZVxSknJyf8/PxYt25dkv3r1q2jTp06KR5Tu3btZO3Xrl1LjRo1cHR0pFKlSvz555/s3r078damTRsaNmzI7t27NVwvh9m0CT74wNyeNg08PDTPlIjI/ahQ3+w5fEjFKRHJwkaOhKgoaNgQGjf+f3t3HlZF3b9x/M2O4i4JoqJorplLYIWKZpmmLeaSW2LlkmTmVv5cy7LUMvOhHkNTMTOTrDTTspRMcC0Tl3pcy1QQRcMdIUCY3x+jJIELBgycc7+u61wMc+acc4/gnA+fM/P9Wp1GRHJTp9VRGnY4SGaGI0tHt+HyBU8ihSLPl/WNHDmSefPmMX/+fPbu3cuIESOIjY0lJCQEMC+369u3b9b2ISEhHDlyhJEjR7J3717mz59PeHg4L730EgDu7u40bNgw261cuXKULl2ahg0b4urqmk+7KlY7fRqCg81Z+vr1g27drE4kIlL81bw3HkfnDE4dKcupIzqLWESKnpgY+OQTc/ntt3XWlEhR1nnKelzcL/Hb+mps+6ye1XHEjuS5OdWjRw9CQ0OZNGkSTZo0Yf369axatYrq1c1prI8fP05sbGzW9n5+fqxatYqoqCiaNGnC66+/znvvvUfXrl3zby+kyDMMGDQIjh6F2rXh3XetTiQiYhvcS6dT/a4TgM6eEpGixzBg1Chz+cknwd/f2jwicn0Vq5+n3aifAPjq5SAunnGzOJHYC+dbedDgwYMZPHhwrvctWLAgx7rWrVuzffv2m37+3J5DircPP4QvvgBnZ/OTs1KlrE4kImI7areK49BWHw6sr8a9wbutjiMikmXVKli3DtzcYPJkq9OIyM1o8/x2Yj6rR8L+inz9WguaP/O71ZHEDtzSbH0iefHbbzB0qLn8+uvQrJm1eUREbE3WuFMbqmp8CBEpMi5dgv/7P3N56FC4fKGFiBRxzq6ZPDHjBwC2LLyT+F9rWBtI7IKaU1Kg0tKgd2+4eNEcAPPKad0iIpJ/agQk4FIinQsnPUjYV8HqOCIiAISHw549UKECjBtndRoRyYtagce450nzbOzIGd0AjQUtBUvNKSlQr7wC27ZB+fKwcCE4OVmdSETE9ji7ZVDznmMAHNC4UyJipcwMOBHFqR1LGTfWnJX5lVegXDlrY4lI3j322kZKeSZz6rA38KrVccTGqTklBWbdOpg2zVyeNw+qVrU2j4iILat95dI+NadExCpxy2BFDVjbhgmjTnL6jAsNfffx/GNfWp1MRG6BR4W/6H758j74P379taSlecS2qTklBeLUKQgONmdoGTAAunSxOpGIiG2rE3QUgN83ViXjkuZpF5FCFrcMNnSD5KPEHLqLD34YBMDMviE4b+lq3i8ixU6jRw5S/8EYwImJE2uQnGx1IrFVak5JvjMMePZZiI+HOnUgNNTqRCIitq9q45OUKPsXf11w4+iuSlbHkSIgLCwMPz8/3N3d8ff3Z8OGDdfdPjo6Gn9/f9zd3alZsyazZ8++5raffvopDg4OPP744/mcWoqlzAyIGQYYZGY6MGTBTAzDkV6Bi2ldP9rcJma4uZ2IFDv3v7AciOfIEfesSQ5E8puz1QHE9oSHw7Jl4OICixeDh4fViUREbJ+jk8HtLY/y6ze3c2B9Nar7n7A6klhoyZIlDB8+nLCwMFq0aMEHH3xAhw4d2LNnD76+vjm2P3ToEB07dmTgwIEsWrSITZs2MXjwYG677Ta6du2abdsjR47w0ksvERQUVFi7I0VAbGwsiYmJud5X6uI26iSbZ2/OXhvCj78HUsr9Am/3vjITjgHJcRzYFE6SR0COx3t6eub6eykiRYN76RSgH7Ca99+HBx6Azp2tTiW2Rs0pyVf798OwYeby5Mng729tHhERe1I7yGxO/ba+Gg+O2GZ1HLHQjBkz6N+/PwMGDAAgNDSU1atXM2vWLKZOnZpj+9mzZ+Pr60vo5dOd69evz7Zt25g+fXq25lRGRgZPPvkkr732Ghs2bODs2bOFsTtisdjYWOrVr0dKckqu9/cMhIghEHeqKmM+fROAKd3HUaXCsWzbTRw9iE+35Hx8iZIl2Ld3nxpUIkXaGoKDT/Dxx1706wd33QXVq1udSWyJmlOSb9LSoHdvSE42u+kvvmh1IhER+1KnlTko+qGffEj/S9Oj2qu0tDRiYmIYM2ZMtvXt2rVj8+bNuT5my5YttGvXLtu69u3bEx4eTnp6Oi4uLgBMmjSJ2267jf79+9/wMsHU1FRSU1Ozvj9//vyt7I4UAYmJiaQkp9Dngz541fHKcX+t1DiMxM8Y/GEYF/4qQ2DtzQx+MCzHdq0mdqeKW/ZJG04cOMGiQYtITExUc0qkiHv++WPs3+/F1q3m331RUebVMiL5Qc0pyTcTJsD27VChAnz0EThqRDMRkULlVfc0Zbwucv6EB4e3eeNe+rDVkcQCiYmJZGRk4OWVvYng5eVFQkJCro9JSEjIdftLly6RmJhI5cqV2bRpE+Hh4ezcufOmckydOpXXXnvtlvZBiiavOl5Ua5xzRtB0owoL3ijF1zsexdU5lXkDBuDkmJl1vwEkuZcjvdm9VHNQgShSXLm4GEREQNOmsHkzvPQSvPuu1anEVujdQfLF2rXw9tvmcng4VKlibR4REXvk4AC1WpjjvhzcVNXiNGI1B4fsszYahpFj3Y22v7L+woUL9OnTh7lz5+Lp6XlTrz927FjOnTuXdYuLi8vjHkhxcTahNMPmm3+hjus0mQZV92bdZ1z+Gl2/M4YaUyLFXs2asHChufzee+ZJCSL5QWdOya3JzIA/N0DKcU6lVKNv3xaAA88+C5q4R0TEOre3iGfHsrr8vqkKdzxkdRqxgqenJ05OTjnOkjp58mSOs6Ou8Pb2znV7Z2dnKlasyO7duzl8+DCPPvpo1v2ZmeaZMc7Ozuzfv59atWple7ybmxtubm75sUtShBkGRLzQlgvnSlGrwWGGPDEbrpqUL8m9HNH1O3PQu7F1IUUkX3XqBK+8ApMmwaBB0KABNGtmdSop7tSckryLW2ZOF5x8FMOAAaHLOHbMgbq1LjBjRmmr04mI2LXbL585dWRbZS6l6W3eHrm6uuLv709kZCSdr5pOKTIykk6dOuX6mMDAQFauXJlt3Zo1awgICMDFxYV69erx66+/Zrt/woQJXLhwgXfffZdq1XJe6iX2YeO8Ruz7oQYu7pd4Inw9n9QZi8/pg3iknueiWxmOVailM6ZEbNDEibBjB6xcaTarfvwRNGyc/BuqWiVv4pbBhm5cOUl77rqBLN/WGRenNCL6tcbj9ATw6GJtRhERO1ap9hlKV7rIhZMeJOxVlWivRo4cSXBwMAEBAQQGBjJnzhxiY2MJCQkBzEvu4uPjWXj52oyQkBBmzpzJyJEjGThwIFu2bCE8PJyIiAgA3N3dadiwYbbXKFeuHECO9WI/EvZVYMXEIAAee20D3nXPYOBIfMXaFicTkYLm6AgffwwtWsDu3dChA2zcCOXLW51Miit9jCE3LzPDPGPqcmNq37G6DP84FICpPcbStMZOiBlubiciIpZwcIBazeMBiNtV0+I0YpUePXoQGhrKpEmTaNKkCevXr2fVqlVUvzzv9/Hjx4mNjc3a3s/Pj1WrVhEVFUWTJk14/fXXee+99+jatatVuyBFXOpFZz58uiPpfzlTt80RWvT/xepIIlLIypaFb78FHx/Ys8cc3uWqSVpF8kRnTkk2sbGxJCYm5npfqYvbqJNsXi6Smu5Kr5kRpKSV5MGGaxjR4T+AAclxHNgUTpJHQK7P4enpqWmCRUQK2O0tj7JzeR2O7qx1443FZg0ePJjBgwfnet+CBQtyrGvdujXbt2+/6efP7TnEPhgGfP7S/Zw4UJEy3kn0mbVGszSL2Klq1cwGVcuWsH49dO8On38Orq5WJ5PiRs0pyRIbG0u9+vVISU7J9f6egRAxxFwe/9lkdh5pSsVSiSwIeRpHRyNru4mjB/Hpltxfo0TJEuzbu08NKhGRAnT75TOnju2pDqg6FJH89ePHd7BtSX0cnTJ5at63lK6UbHUkEbFQo0awfDl07AgrVkDv3vDpp+CsboPkgX5dJEtiYiIpySn0+aAPXnVyzuZTKzUOTn1G5K9teWfVSwDMf7YfPuWPZ9uu1cTuVHHLOTDqiQMnWDRoEYmJiWpOiYgUIK+6pynlmUxSYklA0+eISP45vM2LpaPvA6DjhM3Uan7M2kAiUiTcfz98+aV5ad/SpRAcDAsXgouL1cmkuFBzSnLwquNFtcY5m0vpRhUOr9jGU7M/AuC5tmE85v/3zD4G5nTB6c3upZpmZRERscyVcad2ragNtLY6jojYiAt/luXTFx7lUqozDTse5P4XYqyOJCJFSIcO5iV9XbuaZ04lJcGSJVDSPQP+3AApx6FEZbgtCBydrI4rRYw6CHLTMnGk58IvOH7Wh/o+e5je+6Ws+65c1Bddv7OmCxYRKQJub3n08tJ9VsYQEZvhzlcTnub8CQ8q10+kz6zVGmdKRHJ47DHzDCp3d/j6a2h/XyJnIxrB2jawubf5dUUNcxZ4kavoLUVu2uYFd/LTuqY4u6Qz78VBlHT7e2yqJPdyfNP0GQ56N7YwoYiIXHFl3CloTnq6g6VZRKR4y8gA+JgTB6rhUSGFAYtX4l463epYIlJEPfIIREZC2TJpbPzZk8D/+4IDx2v/vUFyPGzopgaVZKPL+uSmJOyrwPIJQQA8MnEL257uwrHTjfFIPc9FtzIcq1BLZ0yJiBQhXvVOUaJsEinnSrFnT0nuucfqRCJSHBkGTJtWDbgLJ5dLPPPRN1Ssft7qWCJSxLVsnsH61x6m46QP2XesPne/spVPh/TkocarMa+7cYCY4VClky7xE0DNKbkJ6X85sXDgQ6SnuFC3zRFahezAcHAkvmLtGz9YREQs4egIVRv9wW8bGhETU4pnnrE6kYgUR2+8AV98cRuQSYexEdze4rTVkUSkCImNjSUxMTHH+lIXt9Go0vdseyOArqFL2fxbCx5++xvGdZrCK50n4eJ8CZLjOLApnCSPgFyf29PTUxNp2RE1p+SGVr7agmO7b6OUZzJPhq3R+AIiIsVE1SYHLzenSlsdRUSKoTlz4JVXrnw3lLpt3IGck+aIiH2KjY2lXv16pCSn5LivZyBEDAHvcif4Yfz9DF34HnN+GMQby19mza/tWDS4D7W9f2fi6EF8uiX35y9RsgT79u5Tg8pOqDkl17V7TQ3Wz2kKQO/3IynjlWxxIhERuVnVGv8BwK5dHqSnazpnEbl5H38Mzz1nLvfvf5zw8PeBFy3NJCJFS2JiIinJKfT5oA9edbyy3VcrNQ5OfQaAm0saH/QP4YE71jIo/AO2HryHxmN38UrnSbQYH0sVD58cz33iwAkWDVpEYmKimlN2Qs0puaZzCSWJGPIgAK0G7aDBg4etDSQiInni6ZcAnCIlpSIxMXDvvVYnEpHiYMEC6NfPHG8qJAQGDDhOeLjVqUSkqPKq40W1xtnPqkw3qnAhag2l/jrLlWlZut/7OYG1t/DMBx+ydndbxi55E+9diXR5M5o6rY7mfGKxK7pAS3KVmQmLn29HUmJJfBr+yWOvbrI6koiI5JGDowGsByAqytIoIlJMzJ//d2Pquefg/ffBQRN+ikgeGQ6ORNfvbC5ftb5axaOsGfsgH4UEU6b8BRL2eRL2eFdmdX2co7/cZk1YKRLUnJJcRYc1Zf+66riUSKfv3G9xdsuwOpKIiNySaAA2bLA4hogUebNmQf/+ZmPq+efNxpTGGhWRW3XQuzHfNH2GJPdy2dZfLFGOCkNdGP3zYoIG7sTJJYP966oz/b7efDTgIeL/52lNYLGULuuTHE7sr8LXr7cAoPPk9XjXPWNxIhERuXVmV2rTJsjIACfN1iwi/2AY8PLLMHmy+f3QoRAaqjOmROTfO+jdmD+87sTn9EE8Us9z0a0MxyrUwnBwxIO/6PpWNK2f28G3UwKJ+aIeO5bVZceyutS42x+IwTBu+BJiI/RZiPyDB9+80YeMdCcaPfI7gU/9z+pAIiLyr+yiZMkMzp2D/+mQLiL/kJ5uXsZ3pTH16qtqTIlI/jIcHImvWJsDPv7EV6yN4ZC9DeFZ4zzBc1bzUvQnNO28HwfHTA5vrQeso2/fukREmMcqsW1qTsk/vMuZo7dRtvIFerz7vQoTEZFiL4NGjS4CsHGjxVFEpEg5dw4efdQcAN3JCebOhYkT1ZgSEWtUvTORp8K/Y/zPC2ncaROQwp49HvTuDX5+MGUKJCZanVIKippTkmXNmnJAf3DIpM8Hq/Eon2p1JBERyQdNmyYBGndKRP62bx/ccw+sXg0lS8JXX8GAAVanEhEBT79ztB3+JeDLoEHH8PKC+HgYPx6qVYOBA3U2uC1Sc0oAOHIEJk/2BeCeJ3+gdst4ixOJiEh+adLk7+aUxm4QkZUr4e67Yf9+qFoV1q+Hhx+2OpWIyD8l8uyzCRw5AgsXwl13wV9/wbx5cOed0LateTzLzLQ6p+QHNaeES5fgySchKckZ+JHAp9ZYHUlERPJRw4YXcXGBY8fg0CGr04hIocnMgBNRcDgCTkRxKS2DV16Bxx6DCxegVSuIiQF/f6uDiohcm5sbBAfDtm3mB21du5ozia5dax7P6tSB994zj2vZ/OMYSKZmoC/K1JwSJk82Z3Hy8MgAeuPkrNaziIgtcXc3CAgwlzXulIidiFsGK2rA2jawuTdxnwXTpkkMr79u3v388/D991CpkqUpRURumoMDtGwJX3wBf/wBo0ZBuXJw8CAMGwZVqsCIEeZ9/zwGsraN+X3cMmt3Qq5JzSk7t2kTTJpkLo8ZEwvoI3UREVvUsqX5VeNOidiBuGWwoRskHwXgq22P0XjsLjbuvZvS7udZ/N+tzJwJLi4W5xQRuUXVq8O0aXD0KISFQb165plToaFw++0Gj3d2JGb3P7rvyfHmsVENqiJJzSk7dvYs9O5tXqMbHAwdO56xOpKIiBSQoCDzq5pTIjYuMwNihgEGZy+Wpd+ccB7/z1ecuViBgJo/s2PKXfSq2k2Xt4iITfDwgOeeg9274dtv4aH2BobhwFcxjxMwIYbgsIXEJla7vPXlgTdjhusYWAQ5Wx1ArGEYMGgQxMZCzZrw/vvw229WpxIRkYLSooX5df9++PNPuO02a/OIyK2LjY0l8RrzqZe6uI06yUf5bld7BsydR/yZqjg4ZPJix3eY3H08rs7pkAwHNoWT5BGQ4/Genp74+voW9C6IiNyyax0DK1WCd8dvI7PtDCYvH8+iTcEs2hTM51ufYGSHGUx4/A1KuqVAcpyOgUWQmlN2asEC+OwzcHaGiAgoXdrqRCIiUpAqVICGDc2plzduhM6drU4kIrciNjaWevXrkZKckuv9XZqVoYLHHOZFDQTgdq/fWDDoaVrU3Zxtu4mjB/HplpyPL1GyBPv27tMfZyJSJN3oGNgzECKGwMeD+zK8QygvfTKdqL1tmLpiHJ/91J05/Z/l/jvW6RhYBKk5ZYcOHIAXXjCXX3/dnEpYRERsX8uWZnNqwwY1p0SKq8TERFKSU+jzQR+86nhlrTcM2L+uCd/PfJjzZ8oDMOyhUKZ0H2eeKfAPrSZ2p4pbtWzrThw4waJBi0hMTNQfZiJSJF3rGHhFrdQ4OPUZAP5+2/lh/P2siHmMIR/N5OCJ23lgyg/0ax1OwIsbqVKxYrbH6hhoLTWn7ExaGvTqBRcvQps25gwHIiJiH4KCYPZsjTslYgu86nhRrbHZXDr5ezm+GNWGA9HmH1O3+/zG3H4DuK/++hyPM4Ak93KkN7uXag4aflZEiqerj4FXSzeqcCFqDaX+OosD5gx/nQJW0KbBOsZ9NoWw7wczP7o/5Q8+QfCc76h57/HCDy+5uqV3pLCwMPz8/HB3d8ff358NN6hyo6Oj8ff3x93dnZo1azJ79uxs98+dO5egoCDKly9P+fLladu2LVu3br2VaHID48fD9u3m5R0ffwxOTlYnEhGRwnJlUPQdOyApydosIvLvpaU4sWrKvbzV8kkORPvi7HaJDmO3MG3V27Suv/7K0L9ZrnwfXb8zhhpTImKDDAdHouubp4dffQwsU/IC/336Bda/HERl3xOcOVqG/z7Sje+m3U1mhoM1YSWbPL8rLVmyhOHDhzN+/Hh27NhBUFAQHTp0IDY2NtftDx06RMeOHQkKCmLHjh2MGzeOoUOHsnTp0qxtoqKi6NWrF+vWrWPLli34+vrSrl074uPjb33PJIfISJg+3VyePx+qVLE2j4iIFK5q1cyplzMy4McfrU4jIv/Goa11mdayD2um30NGmjP1HjjMmM2LaD9qK7G+d/BN02dIci+X7TFJ7uX4pukzHPRubE1oEZFCcNC78TWPgWd71mXYhqU067kHI9OR794M5P1OXTh/oqQ1YSVLni/rmzFjBv3792fAgAEAhIaGsnr1ambNmsXUqVNzbD979mx8fX0JDQ0FoH79+mzbto3p06fTtWtXAD755JNsj5k7dy5ffPEFa9eupW/fvnmNKLn480+48k/53HPQqZO1eURExBotW8KRI+alfW3bWp1GRPLq5EkXYAnLRncHoGzlJDpPiabxY7/jcNWH/we9G/OH1534nD6IR+p5LrqV4ViFWjpjSkTswvWOge6k82RYJHXvi+Xzl+7n4OaqvHN/Tx5+eb7Vse1anppTaWlpxMTEMGbMmGzr27Vrx+bNm3N9zJYtW2jXrl22de3btyc8PJz09HRcXFxyPCY5OZn09HQqVKhwzSypqamkpqZmfX/+/Pm87IpdMQx45hlISIAGDf4+e0pEROxPUBB88onGnRIpbi5dgpkzYfz4BsCdODhm0GrQLjqM+RH30um5PsZwcCS+Yu3CDSoiUkTc6BgY0H0/vnedILzPI5w4UJElw54HdhVeQMkmTx+dJCYmkpGRgZdX9lHxvby8SEhIyPUxCQkJuW5/6dIlEhMTc33MmDFjqFKlCm2v85Hu1KlTKVu2bNatWrWcg6GJaeZM+OYbcHODiAgoqTMWRUTs1pVxp378EdJz/3tWRIqYn382Z1ceMQKSk52ALfT5IJTOkzdcszElIiI3Vun2s4xY8xl3Pvw7GenOwHzeeacKGRlWJ7M/t3Rer4ND9gHDDMPIse5G2+e2HmDatGlERESwbNky3N3dr/mcY8eO5dy5c1m3uLi4vOyC3di1C156yVx++21o1MjaPCIiYq169aB8eUhJMd8jRKToOncOhgyBe+4xJzIoXx7Gjz8CtKDS7ZphSkQkP7iXSeOZj76h+TPfAbB4sRfdu5u1khSePDWnPD09cXJyynGW1MmTJ3OcHXWFt7d3rts7OztTsWLFbOunT5/OlClTWLNmDY1u0EVxc3OjTJky2W6S3cWL0LMnpKXBI4+YxY2IiNg3R0cIDDSXr3FFvohYzDDgs8+gfn14/33z+z59YN8+6NLlFOSYh09ERP4NR0cI7Ps90AMXl0yWLYMHHoBrXOwlBSBPzSlXV1f8/f2JjIzMtj4yMpLmzZvn+pjAwMAc269Zs4aAgIBs4029/fbbvP7663z33XcEBATkJZZcw4gRZhFTuTJ8+CFc5+Q2ERGxI1festWcEil6YmPh4YehRw84fhxq14bvv4ePP4ZKlaxOJyJi6z4jLOx3ypWDLVvMmungQasz2Yc8X9Y3cuRI5s2bx/z589m7dy8jRowgNjaWkJAQwLzc7uoZ9kJCQjhy5AgjR45k7969zJ8/n/DwcF66cq0Z5qV8EyZMYP78+dSoUYOEhAQSEhJISkrKh120T59/DnPnmg2pRYvA09PqRCIiUlSoOWUfwsLC8PPzw93dHX9/fzbcYBT86Oho/P39cXd3p2bNmsyePTvb/XPnziUoKIjy5ctTvnx52rZty9atWwtyF+yKYUB4ODRsCN9+C66uMHEi/PKL+em9iIgUjrvuSmLzZqheHX77zaybfvnF6lS2L8/NqR49ehAaGsqkSZNo0qQJ69evZ9WqVVSvXh2A48ePExsbm7W9n58fq1atIioqiiZNmvD666/z3nvv0bVr16xtwsLCSEtLo1u3blSuXDnrNl3Tyt2SI0dg4EBzeexYuP9+a/OIiEjRcvfd4OQEcXHmTWzPkiVLGD58OOPHj2fHjh0EBQXRoUOHbDXa1Q4dOkTHjh0JCgpix44djBs3jqFDh7J06dKsbaKioujVqxfr1q1jy5Yt+Pr60q5dO+Lj4wtrt2xWfLx5ttSAAXDhgnnp7S+/wKuvwnWGYBURkQJSv7555lSTJnDyJNx3H+jzmILlfCsPGjx4MIMHD871vgULFuRY17p1a7Zv337N5zt8+PCtxJBcXLoEvXubA2jee69Z1IiIiFzNw8MstmJizMJLE97anhkzZtC/f38GDBgAQGhoKKtXr2bWrFlMnTo1x/azZ8/G19eX0NBQAOrXr8+2bduYPn161geKn3zySbbHzJ07ly+++IK1a9dmO2te8iYiAgYPhrNnzZmV33jDHJrBycnqZCIi9q1yZVi3Djp2NOultm3h66+hVSurk9mmW5qtT4qYzAw4EQWHI5j0f4fZvBnKlIHFi+GqYb1ERESy6NI+25WWlkZMTAzt2rXLtr5du3ZsvsYPfMuWLTm2b9++Pdu2bSM9PT3XxyQnJ5Oenk6FChVyvT81NZXz589nu9mtq2o1TkRBZgYXL0L//uaHimfPQrNmsH27OcuyGlMiIkVDuXKwZg20aWOe2frQQ+b3kv/UnCru4pbBihqwtg1R8z7gjVBfAOZM+Qk/P2ujiYhI0aXmlO1KTEwkIyMjx0zKXl5eOWZQviIhISHX7S9dukTiNaYqGjNmDFWqVKFt27a53j916lTKli2bdatmr6foXVWrsbk3rG3D//7bnmZNzjN/vjk+6CuvmP8XGzSwOqyIiPxTqVLwzTfmGVQpKfDoo+b3kr/UnCrO4pbBhm6QfJRTFyrQJ2wRhuFIv9bz6VE+0LxfREQkF1eaUzt2QHKytVmkYDj8Y5pewzByrLvR9rmtB3Mym4iICJYtW4b7NQZFGjt2LOfOncu6xdnjAGdX1WpXLN7Ui2ajVrL39zJUrpTC2rXw2mvgfEuDbYiISGEoUQK+/BK6doW0NOjSBVavtjqVbVFzqrjKzICYYYCBYcCAefOIP1OVOpX3817fF8xtYoab24mIiPxDtWpQpYo5VuHPP1udRvKTp6cnTk5OOc6SOnnyZI6zo67w9vbOdXtnZ2cqVqyYbf306dOZMmUKa9asoVGjRtfM4ebmRpkyZbLd7MpVtRpARqYjoyPe5MmwxfyVXoL2jb5j51vNadNatZqISHHg6mqOE9ili9mgevxxWLvW6lS2Q5/RFGGxsbHXPJW+1MVt1Ln8KdzstSEs39YZV+dUPh3SEw/3yx+BJ8dxYFM4SR4BOR7v6emJr69vgWUXEZGizcHBPHvq88/Ny4lat7Y6keQXV1dX/P39iYyMpHPnzlnrIyMj6dSpU66PCQwMZOXKldnWrVmzhoCAAFyuGsDy7bff5o033mD16tUEBOSsL+zRteq1q2u1sxfL0vv9xXy7qyMAYx+bwutPvIyTY+Y1azVQvSYiUtS4uJgNqm7dYOVK8xK/b79VHZUf1JwqomJjY6lXvx4pySm53t8zECKGwK+xDRmx6D8AvNVzNE1r7My23cTRg/h0S87HlyhZgn1796ngERGxY1c3p8S2jBw5kuDgYAICAggMDGTOnDnExsYSEhICmJfcxcfHs3DhQgBCQkKYOXMmI0eOZODAgWzZsoXw8HAiIiKynnPatGm8/PLLLF68mBo1amSdaVWqVClKlSpV+DtZBFyvXrtSqx09VYX2b61mT/wdlHBNZv6z/egZuCRru2vVaqB6TUSkKHJ1NeunLl1g1Sp4+GHzEr8WLaxOVrypOVVEJSYmkpKcQp8P+uBVJ+cp+LVS40g+tpJe70eQmu5OxybfMOyhd3Ns12pid6q4ZR+A9MSBEywatIjExEQVOyIiduzqQdENwzybSmxDjx49OHXqFJMmTeL48eM0bNiQVatWUb16dQCOHz9ObGxs1vZ+fn6sWrWKESNG8P777+Pj48N7771H165ds7YJCwsjLS2Nbt26ZXutiRMn8uqrrxbKfhU116vXaqXGsfeXX2j/1mriTvniUz6elS8+yl1+O7Jtl1utBqrXRESKMjc3WLoUOnUyZ+/r2BGio6FJowz4cwOkHIcSleG2IHDUFKw3Q82pIs6rjhfVGucsWNKNKgzt1Z7dRxviXe44Hz77TLY/Kgwgyb0c6c3upZqDhhYTEZGcmjQBd3c4fRoOHIC6da1OJPlp8ODBDB48ONf7FixYkGNd69at2b59+zWf7/Dhw/mUzPbkVq8d2BrA+EmzOJNUgbqV97F6dHuq3/Z3Q1C1mohI8ebuDsuXw0MPwfr10P7Bv9j42oPULrfx741KVgX/d6FaF8tyFhd6Jyymdn5dm/A1/XBwyGThc8FUKvtn1n3G5a/R9TtjqNgREZFrcHWFZs3MZV3aJ5J/Dqyvyvudu3ImqQL31PqRDRNb5mhMgWo1EZHirkQJWLECmjY8y8lEdx6c+DHxp33+3iA53py1NW6ZdSGLCb0bFkNnjpbm06FtAejS/zvuDYjJdn+Sezm+afoMB70bWxFPRESKkasv7RORf+/3TVWY2+sx0lNcqPfAYV5asgD327LPyKdaTUTEdpQtncF3L95Hbe8DHEmsQbs313A6qfzley9/HBEz3JzFVa5Jl/UVMxmXHPh4UHtSzrnje1cCzScf5EPnV/A5fRCP1PNcdCvDsQq19CmciIjcFDWnRPLPwS0+zOlpNqYaPHiIfgu/Id6tPh/6qVYTESnOrjUzK1yendV1F2vGtKPlaxvZE38HHaet4vtxbSnlfhEwIDlOs7PegJpTxUzkO3fzx5YquJVKpe/c73ByycTAkfiKta2OJiIixVBgoPl1zx44cwbKl7/+9iKSu0NbvZnToxNpF12p2+YIz3z0Dc5u5qfkhoNqNRGR4up6M7PC37Oz1rjtCGvGtCPo9Q38dPBeuvxnGV+PegRX53RAs7PeiJpTxcgfP/qw+u27Aeg+Yx2efucsTiQiIsXdbbdB7drw22/w44/QoYPViUSKn1OHvVgyvBOpSa7UaR1L/0UrcXHX5RsiIrbgejOzgjk7K6c+A6BB1b18+38duH/yD0T+rx0D581lwaCncXDQ7Kw3ouZUMZF81o2FAx/CyHSkWa89+Hfbb3UkERGxEc2bm82pzZvVnBLJOx+Wjh5Ayjl3ajQ7xoBPVuJaQo0pERFbk9vMrADpRhUuRK2h1F9ncQDurvUzXwzrxiPTv2bhhqeoVjGW0cEzNDvrDehfphgwDFgy7AHOxpfmtlpn6PpmlNWRRETEhmjcKZFbk5TkCKziwsnyVKp9moERK3EtecnqWCIiUogMB0ei63c2ly+ve6jxaj7oPwiAyctfZtz//qOxBm9A/zrFwJaPGrJrZW2cXDLoO/c73EunWx1JRERsyJXm1E8/wSX9XS1yUzIyYPx4P6AxHhXOM+jz5XhU+MvqWCIiYoGD3o35pukzJLmXy1rX/775jH7iLQDCJvVlT2R1i9IVD7qsr4hLPOTFl+NaA/DIy5uo1uSkxYlERMTWNGgAZcvCuXPwyy9w111WJxIp+iZMgI0bywIpdJ4STkVffeYrImLPDno35g+vO7PNzlq5vSt3O+9ha0QDFvTryAsrl+pv+mvQu2iR5s43bzxJ+l/O1Lv/MK0H77A6kIiI2CBHR7jnHnP5xx+tzSJSHEREwJtvXvmuH151462MIyIiRcSV2VkP+Pibs7Q6OtIjdC117ztC2kVX5vR8jFOxpa2OWSSpOVWkvU3iHz6Uui2ZJ8MicdRPS0RECsi995pff/rJ2hwiRd3//gf9+5vLTz2VAHxqaR4RESnanFwyeWbBKnwa/smFkx588MTjJJ91szpWkaN2RxEVFVUWGALAk2GrKV0p2dpAIiJi03TmlMiNXbwI3btDSgq0awfPP3/M6kgiIlIMuJdJ49lPv6JclQuc/K0CHz79MBnpasdcTf8aRVB8PEyaZA6WFtAjivoPxFqcSEREbN2V5tSBA3D6tLVZRIqqIUNg716oXBk+/hicnKxOJCIixUU5n4s8++kK3Eql8dv6anwx6j4M48aPsxdqThUxGRnQpw+cO+cMbKNl/2+tjiQiInagYkW4/XZzeetWa7OIFEUffwwLFphjtEVEQKVKVicSEZHixueORPrO+xYHx0y2LLyTqLCmVkcqMtScKmLefBOioqBkyQygF04uGVZHEhERO6Fxp0Ryd+QIPP+8uTxxIrRubW0eEREpvu5od5jH39gAwIpXgvh9UwOLExUNak4VIZs3mwUPwJgxccDvluYRERH7onGnRHLKzIR+/eDCBWjeHMaPtzqRiIgUd60G7aT5M79gGA6seuNJoLHVkSyn5lQRcfYs9O7992V9Dz+sAT9ERKRwXX3mlMZAEDG9/z788AOULAkffaRxpkRE5N9zcICub0ZT974jpP/lBqzkzz+drY5lKTWnigDDgGefNU8Zr1XLLIJEREQKW6NG4OYGZ87Ab79ZnUbEer/9BqNHm8tvv/33uGwiIiL/lpNLJk99uIoK1U8A1Rg5shbJyVanso6aU0XAhx/C55+Ds7M5wGaZMlYnEhERe+TqCv7+5rLGnRJ7ZxgQEgIpKdC2LTz3nNWJRETE1pQsm0bnKeFAInv2eNC3r3k5uT1Sc8piBw7ACy+Yy5MnQ7Nm1uYRERH7pnGnREwff2xezleiBHzwgXkJhoiISH4r53MaeBwXl0yWLoUJE6xOZA01pyyUlmaOM5WcDPffDy+9ZHUiERGxd5qxTwQSE2HkSHN54kSoWdPaPCIiYus28fLLsQBMnQoLFlibxgpqTlnolVcgJgYqVICFC8FRPw0REbHYlTOndu0yL2cSsUejRsGpU3DnnX83qURERArSww+fzpoR9tlnYcMGa/MUNrVDLLJuHUybZi7PmwdVqlibR0REBMDXF7y94dIl2L7d6jQihe/HH81PrB0czMv5XFysTiQiIvZi0iR44glIT4fOneGPP6xOVHjUnLLAqVMQHPz3LH2dO1udSERExOTgoHGnxH5lZsKwYeby009DYKClcURExM44OpofkPj7m32DRx+Fc+esTlU41JwqZIYBAwdCfDzUrQszZlidSEREJLsr406pOSX2ZtEi2LoVSpWCKVOsTiMiIvaoZEn46ivw8YE9e6BnT/OMdlun5lQhmzcPvvzSPEU8IgI8PKxOJCIikt2VM6c0KLrYk6QkGDPGXJ4wwby8VURExApVqsCKFeaMsd99Zx+Tp6k5VYj274fhw83lKVOgaVNL44iIiOQqIMA8rTwuDo4dszqNSOGYNg2OHzdn5rtSr4mIiFjF39+cOA3g3XfNcRBtmZpThSQ1FXr1guRkaNtWM7+IiEjRVbo03HGHuayzp8QenDgB77xjLk+bBm5u1uYREREB6NYN3njDXB4yBH74wdo8BUnNqUIyYQLs2AEVK8JHH5mfSIuIiBRVGndK7Mkbb5gfIN59N3TpYnUaERGRv40bB08+aY471a0bHDhgdaKCoRZJIfj+e5g+3VwODzcHNhMRESnKNO6U2ItDh/6+VGLqVHPGShERkaLCwcEcu/ree+HMGXMGvzNnrE6V/9ScKmCJidC3r7kcEgKdOlmbR0RE5GZcOXPq55/tY4YYsV8TJ0J6ujnswv33W51GREQkJ3d3WL4cfH3NM6eeeMJ877Ilak4VIMOAAQPMwTXr1/97LAMREZGirl49c+yp5GTYvdvqNCIFY88eWLTIXJ4yxdosIiIi1+PlBStXgocHrF0LQ4eaPQdboeZUfsrMgBNRcDgCTkQxZ3YmX30Frq6weDGULGl1QBERkZvj5AR3321WPD9+s9V8f8vMsDaUSH64ql57Y8IJDAM6d4ZmzawOJiIicn2NGkFEhHmp3+zZMHMmOfoQxbVec7Y6gM2IWwYxwyD5KAB74+sxYsJ2oARTp0KTJpamExERyZu4ZdxTLp61vMDWNb8yqMYAKFkV/N+FahoxWoqpq+q1A8drs2R5dwBeHrgWeMDabCIiIjfh0UfNmWVHjYLhww1q//k0D9Vb9PcGxbReu6Uzp8LCwvDz88Pd3R1/f382bNhw3e2jo6Px9/fH3d2dmjVrMnv27BzbLF26lAYNGuDm5kaDBg348ssvbyWaNeKWwYZuWY2p1HRXes2MICWtBO3uXM3wrsssDigiIpIHl9/X7qkeCcDWg3eb65Pjzfe7OL2vFQeq1/7hH/XalK/GkWk48UjTlTQ986B+r0VEpNh48UV4pvthMjMd6DF9JnuO1v/7zmJar+W5ObVkyRKGDx/O+PHj2bFjB0FBQXTo0IHY2Nhctz906BAdO3YkKCiIHTt2MG7cOIYOHcrSpUuzttmyZQs9evQgODiYXbt2ERwcTPfu3fmpOEwRlJlhfgLH3xd7jlsyhV2xTfAs/ScLBj2D447hxfbUOhERsTNXva81q/kzALvj7+BCSimy3utihut9rYhTvfYP/6jX/jjpx6JNfQB4ufPr5jb6vRYRkWLCwchgdrf7aVUvmvMpZXn0nZUkXqh4+d7iWa/l+bK+GTNm0L9/fwYMGABAaGgoq1evZtasWUydOjXH9rNnz8bX15fQ0FAA6tevz7Zt25g+fTpdu3bNeo4HH3yQsWPHAjB27Fiio6MJDQ0lIiIi1xypqamkpqZmfX/u3DkAzp8/n9dduikJCQkkJCTkWF8qeQe3Jx7N+n7t7jbM+HYgcJ7/9u2Lh9txzifC72tmklSyaa7P7e3tjbe3d7Z1SUlJAMTtiiP1YmpuD7tlJ38/mfUaV/97FeRrXut1rXjNgn5dvaZtvaZVr6vXtK3XvNbrWvW7Czf3vubhlkCV8ruJP1ON9fsaE1R3E2BAclye39fyw5V9MGxp9M8CUhTqtcKu1eDm67XXvxxKRmYy9zf4nnqVf+Z8Mrf0e21rxyp7ec1rva7qCb1mfryufo/0mvn1utd6T4PL72vnDrFgUGfun/wDf5ysyWPTP+arFzvh5pxOsazXjDxITU01nJycjGXLlmVbP3ToUKNVq1a5PiYoKMgYOnRotnXLli0znJ2djbS0NMMwDKNatWrGjBkzsm0zY8YMw9fX95pZJk6caGC2BHXTTTfddNNNNzu6xcXF5aV8sTtFpV5Traabbrrppptu9nvLa72WpzOnEhMTycjIwMvLK9t6Ly+va3b0EhISct3+0qVLJCYmUrly5Wtuc63nBPPTupEjR2Z9n5mZyenTp6lYsSIODg552a18df78eapVq0ZcXBxlypSxLEdhsJd9tZf9BPvZV+2n7bGXfbWX/YTc99UwDC5cuICPj4/F6Yq2olKvFdVaDfR/yRZpP22Pveyr9tP22Mu+Xms/b7Veu6XZ+v5ZUBiGcd0iI7ft/7k+r8/p5uaGm5tbtnXlypW7bu7CVKZMGZv+Rbyaveyrvewn2M++aj9tj73sq73sJ+Tc17Jly1qYpnixul4r6rUa2Pf/JVul/bQ99rKv2k/bYy/7mtt+3kq9lqcB0T09PXFycsrxCdnJkydzfJJ2hbe3d67bOzs7U7Fixetuc63nFBEREZHcqV4TERGR4iZPzSlXV1f8/f2JjIzMtj4yMpLmzZvn+pjAwMAc269Zs4aAgABcXFyuu821nlNEREREcqd6TURERIqbPF/WN3LkSIKDgwkICCAwMJA5c+YQGxtLSEgIYI4vEB8fz8KFCwEICQlh5syZjBw5koEDB7JlyxbCw8OzzeoybNgwWrVqxVtvvUWnTp346quv+P7779m4cWM+7WbhcXNzY+LEiTlOY7dF9rKv9rKfYD/7qv20Pfayr/ayn2Bf+1oQVK9dnz39ftnLvmo/bY+97Kv20/bYy77m9346GEbe52MOCwtj2rRpHD9+nIYNG/Kf//yHVq1aAfD0009z+PBhoqKisraPjo5mxIgR7N69Gx8fH0aPHp1VHF3xxRdfMGHCBP744w9q1arF5MmT6dKly7/bOxERERE7pXpNREREiotbak6JiIiIiIiIiIjkhzyNOSUiIiIiIiIiIpKf1JwSERERERERERHLqDklIiIiIiIiIiKWUXNKREREREREREQso+ZUPgsLC8PPzw93d3f8/f3ZsGGD1ZHy1dSpU2nWrBmlS5emUqVKPP744+zfv9/qWAVu6tSpODg4MHz4cKujFIj4+Hj69OlDxYoVKVmyJE2aNCEmJsbqWPnu0qVLTJgwAT8/P0qUKEHNmjWZNGkSmZmZVkf7V9avX8+jjz6Kj48PDg4OLF++PNv9hmHw6quv4uPjQ4kSJbjvvvvYvXu3NWH/hevtZ3p6OqNHj+bOO+/Ew8MDHx8f+vbty7Fjx6wL/C/c6Gd6tUGDBuHg4EBoaGih5csvN7Ofe/fu5bHHHqNs2bKULl2ae++9l9jY2MIPKzZF9ZptUr1W/NlqrQaq10D1muq161NzKh8tWbKE4cOHM378eHbs2EFQUBAdOnSwqSI6Ojqa559/nh9//JHIyEguXbpEu3btuHjxotXRCszPP//MnDlzaNSokdVRCsSZM2do0aIFLi4ufPvtt+zZs4d33nmHcuXKWR0t37311lvMnj2bmTNnsnfvXqZNm8bbb7/Nf//7X6uj/SsXL16kcePGzJw5M9f7p02bxowZM5g5cyY///wz3t7ePPjgg1y4cKGQk/4719vP5ORktm/fzssvv8z27dtZtmwZBw4c4LHHHrMg6b93o5/pFcuXL+enn37Cx8enkJLlrxvt58GDB2nZsiX16tUjKiqKXbt28fLLL+Pu7l7IScWWqF6zTarXbIOt1mqgeg1Ur6leuwFD8s3dd99thISEZFtXr149Y8yYMRYlKngnT540ACM6OtrqKAXiwoULRu3atY3IyEijdevWxrBhw6yOlO9Gjx5ttGzZ0uoYheLhhx82+vXrl21dly5djD59+liUKP8Bxpdffpn1fWZmpuHt7W28+eabWev++usvo2zZssbs2bMtSJg//rmfudm6dasBGEeOHCmcUAXkWvt69OhRo0qVKsb//vc/o3r16sZ//vOfQs+Wn3Lbzx49etjU/08pGlSv2R7Va7bDHmo1w1C9djXVa8VLQdZrOnMqn6SlpRETE0O7du2yrW/Xrh2bN2+2KFXBO3fuHAAVKlSwOEnBeP7553n44Ydp27at1VEKzIoVKwgICOCJJ56gUqVKNG3alLlz51odq0C0bNmStWvXcuDAAQB27drFxo0b6dixo8XJCs6hQ4dISEjIdmxyc3OjdevWNn1sAvP45ODgYHOfKgNkZmYSHBzMqFGjuOOOO6yOUyAyMzP55ptvqFOnDu3bt6dSpUrcc8891z1lXuRGVK+pXiuu7KVes8daDVSvqV4rvvKzXlNzKp8kJiaSkZGBl5dXtvVeXl4kJCRYlKpgGYbByJEjadmyJQ0bNrQ6Tr779NNPiYmJYerUqVZHKVB//PEHs2bNonbt2qxevZqQkBCGDh3KwoULrY6W70aPHk2vXr2oV68eLi4uNG3alOHDh9OrVy+roxWYK8cfezo2Afz111+MGTOG3r17U6ZMGavj5Lu33noLZ2dnhg4danWUAnPy5EmSkpJ48803eeihh1izZg2dO3emS5cuREdHWx1PiinVa6rXiit7qdfssVYD1Wuq14qv/KzXnAsoo91ycHDI9r1hGDnW2YohQ4bwyy+/sHHjRquj5Lu4uDiGDRvGmjVrbH5sk8zMTAICApgyZQoATZs2Zffu3cyaNYu+fftanC5/LVmyhEWLFrF48WLuuOMOdu7cyfDhw/Hx8eGpp56yOl6BsqdjU3p6Oj179iQzM5OwsDCr4+S7mJgY3n33XbZv326zP0Mga/DbTp06MWLECACaNGnC5s2bmT17Nq1bt7YynhRz9nRMVL1mG+ylXrPnWg3s69ikes025Ge9pjOn8omnpydOTk45OtsnT57M0QG3BS+88AIrVqxg3bp1VK1a1eo4+S4mJoaTJ0/i7++Ps7Mzzs7OREdH89577+Hs7ExGRobVEfNN5cqVadCgQbZ19evXt6mBYa8YNWoUY8aMoWfPntx5550EBwczYsQIm/601dvbG8Bujk3p6el0796dQ4cOERkZaZOfwm3YsIGTJ0/i6+ubdXw6cuQIL774IjVq1LA6Xr7x9PTE2dnZbo5PUjhUr9kW1Wu2dzy0x1oNVK+pXiu+8rNeU3Mqn7i6uuLv709kZGS29ZGRkTRv3tyiVPnPMAyGDBnCsmXL+OGHH/Dz87M6UoF44IEH+PXXX9m5c2fWLSAggCeffJKdO3fi5ORkdcR806JFixzTSx84cIDq1atblKjgJCcn4+iY/bDn5ORkE9MTX4ufnx/e3t7Zjk1paWlER0fb1LEJ/i50fvvtN77//nsqVqxodaQCERwczC+//JLt+OTj48OoUaNYvXq11fHyjaurK82aNbOb45MUDtVrtkX1mu0dD+2xVgPVa7ZI9Vrej0+6rC8fjRw5kuDgYAICAggMDGTOnDnExsYSEhJidbR88/zzz7N48WK++uorSpcundXdL1u2LCVKlLA4Xf4pXbp0jnEZPDw8qFixos2N1zBixAiaN2/OlClT6N69O1u3bmXOnDnMmTPH6mj57tFHH2Xy5Mn4+vpyxx13sGPHDmbMmEG/fv2sjvavJCUl8fvvv2d9f+jQIXbu3EmFChXw9fVl+PDhTJkyhdq1a1O7dm2mTJlCyZIl6d27t4Wp8+56++nj40O3bt3Yvn07X3/9NRkZGVnHpwoVKuDq6mpV7Ftyo5/pPws5FxcXvL29qVu3bmFH/VdutJ+jRo2iR48etGrVijZt2vDdd9+xcuVKoqKirAstxZ7qNdVrxZG91Gu2WquB6jXVa6rXbuhfz/cn2bz//vtG9erVDVdXV+Ouu+6yuSl7gVxvH374odXRCpytTk1sGIaxcuVKo2HDhoabm5tRr149Y86cOVZHKhDnz583hg0bZvj6+hru7u5GzZo1jfHjxxupqalWR/tX1q1bl+v/y6eeesowDHN64okTJxre3t6Gm5ub0apVK+PXX3+1NvQtuN5+Hjp06JrHp3Xr1lkdPc9u9DP9p+I6NfHN7Gd4eLhx++23G+7u7kbjxo2N5cuXWxdYbIbqNduleq14s9VazTBUr6leU712Iw6GYRh5a2eJiIiIiIiIiIjkD405JSIiIiIiIiIillFzSkRERERERERELKPmlIiIiIiIiIiIWEbNKRERERERERERsYyaUyIiIiIiIiIiYhk1p0RERERERERExDJqTomIiIiIiIiIiGXUnBIREREREREREcuoOSUiIiIiIiIiIpZRc0pERERERERERCyj5pSIiIiIiIiIiFjm/wEQlDvJOgiVrgAAAABJRU5ErkJggg==", - "text/plain": [ - "
" + "cell_type": "markdown", + "metadata": { + "id": "Fp89L1E4DCXe" + }, + "source": [ + "# Measuring bias with Optimal Transport by calculating the Wasserstein distance" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "from scipy.interpolate import make_interp_spline\n", - "\n", - "# Drawing both of them\n", - "figure, axis = plt.subplots(1, 2)\n", - "figure.set_figheight(4)\n", - "figure.set_figwidth(12)\n", - "figure.tight_layout(w_pad = 5)\n", - "\n", - "def draw(y, id):\n", - " x = np.array(range(0, np.size(y)))\n", - " XYSpline = make_interp_spline(x, y) \n", - " X = np.linspace(x.min(), x.max(), 500)\n", - " Y = XYSpline(X)\n", - " axis[id].bar(x, y, color=\"lightgreen\", ec='black')\n", - " axis[id].scatter(x, y, color=\"orange\")\n", - " axis[id].plot(X, Y, color='blue')\n", - "\n", - "axis[0].title.set_text(\"Initial distribution\")\n", - "axis[1].title.set_text(\"Required distribution\")\n", - "draw(a, 0)\n", - "draw(b, 1)\n", - "\n", - "plt.show()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In order to better understand how Optimal Transport works, below is presented the code considering the case when the matrix cost distance is presented and defined as the absolute difference between positions of each part of the distribution. That is $\\text{distance}[i][j] = abs(i - j)$." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "_a = pd.Series(a)\n", - "_b = pd.Series(b)\n", - "distance = np.zeros((np.size(a), np.size(b)))\n", - "for i in range(np.size(a)):\n", - " for j in range(np.size(b)):\n", - " distance[i][j] = abs(i - j)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Wasserstein distance is equal to 1.3773703499999999.\n" - ] - } - ], - "source": [ - "from aif360.sklearn.metrics import ot_distance\n", - "c0 = ot_distance(y_true=_a, y_pred=_b, cost_matrix=distance, mode='continuous')\n", - "\n", - "print(\"Wasserstein distance is equal to \", c0, \".\", sep=\"\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2. Randomly distributed samples\n", - "\n", - "Suppose we have two distributions $a$ and $b$ with length $N$, that are generated randomly, and we need to calculate earth_movers_distance for them." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "N = 1000\n", - "np.random.seed(seed=1)\n", - "\n", - "# Initial distribution\n", - "a = np.random.rand(N)\n", - "a /= np.sum(a)\n", - "\n", - "# Required distribution\n", - "b = np.random.rand(N)\n", - "b /= np.sum(b)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "1Fk66iQtDCXg" + }, + "source": [ + "## Table of contents\n", + "\n", + "- Introduction\n", + "- General Optimal Transport examples\n", + "- Usage\n", + "- Application to Compas Dataset\n", + "- Application to Adult Dataset\n", + "- More details\n", + " - OT for mapping estimation\n", + " - Kantorovich optimal transport problem\n", + " - Solving optimal transport\n", + " - Necessity and priority of usage" + ] + }, { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABeAAAAGUCAYAAABdvoLAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPVUlEQVR4nO3dfZhVZb0//vfIwwCeEQFzBhKU+kKWmA9oFJZgPJj5GJUZktqxwoN2JDWSTB08CUVFnDQ1rYQyss5Ry04nE8Owwn4BPpSAWicSKkfCLwLKyOP6/cGXfRgBZWA2MzCv13XtS/da917rs242a6/15t73riiKoggAAAAAANCk9mvuAgAAAAAAYF8kgAcAAAAAgDIQwAMAAAAAQBkI4AEAAAAAoAwE8AAAAAAAUAYCeAAAAAAAKAMBPAAAAAAAlIEAHgAAAAAAykAADwAAAAAAZSCAB/Y606ZNS0VFRebNm7dLr6+oqEhtbW3p+cKFC1NbW5u//OUv27S94IILcthhh+3SfnbntUkyePDgDB48uPT8L3/5SyoqKjJt2rRGbWfGjBmZOnVqo16zvX3V1tamoqIiy5cvb9S2Xk25+h4AgJZry/X8lkfbtm3TvXv3nHPOOfnjH//Y3OWV/PKXv0xFRUV++ctf7pH9HXbYYbngggt26bWvdv3eGGvWrEltbW2jj3l7+zrssMNy2mmnNWo7r+XV7m1eeZ8H0FII4IFW5+GHH87HPvax0vOFCxdmwoQJ2w2Br7766txzzz17sLod6969ex5++OGceuqpjXrdrgTwu7qvxtpb+h4AgKZ3++235+GHH84DDzyQSy65JPfee2/e+c53ZsWKFc1dWpLk2GOPzcMPP5xjjz22uUvZJR/72Mfy8MMPN+o1a9asyYQJExodwO/KvnbFq93bvPI+D6ClaNvcBQDsaW9/+9t3uu0b3/jGMlbSOJWVlY2qfVds3LgxGzZs2CP7ei0tqe8BAGh6/fr1y3HHHZdk87c/N27cmGuvvTY/+tGP8tGPfrSZq0sOOOCAnbomXrNmTTp16rQHKmqcQw45JIccckhZ97Hl2PfEvl5Lc9+/AOyIEfDAPuGCCy7IP/3TP+VPf/pT3vve9+af/umf0rNnz1x++eVZu3Ztg7ZbfzVx2rRp+eAHP5gkOemkk0pfg93y1c3tTYPy9a9/PSeeeGIOPvjg7L///jnyyCMzefLkrF+/fpdqL4oikydPzqGHHpoOHTrk2GOPzc9+9rNt2m3va6X/+Mc/8olPfCI9e/ZMZWVlXve61+WEE07IAw88kGTzjcxPf/rTPPPMMw2+5rv19iZPnpzPf/7z6d27dyorK/Pggw++6nQ3S5cuzYgRI3LAAQekc+fOGTVqVP7xj380aLOjr39u/bXaXen7l19+OePHj0/v3r3Tvn37vP71r8/FF1+cF154YZv9nHbaabnvvvty7LHHpmPHjjn88MPz7W9/ewd/CgAANLctYfxzzz3XYPm8efNyxhlnpGvXrunQoUOOOeaY/PCHP9zm9b/97W9zwgknpEOHDunRo0fGjx+f2267LRUVFQ2+cbkz16rJ9qeg2XLf8Yc//CHDhw9PVVVVhgwZkiRZt25dPv/5z+fwww8vXZt/9KMf3eZaef369Rk3blxqamrSqVOnvPOd78zvfve7ne6nv//97zn77LNTVVWVzp0750Mf+lDq6uq2abe9aWFmzZqVwYMHp1u3bunYsWN69eqV97///VmzZk3+8pe/5HWve12SZMKECaXr8y19smV7jzzySD7wgQ+kS5cupUEzrzbdzT333JO3vvWt6dChQ97whjfka1/7WoP1W6YkeuW3Yl/Z/692b5Ns/8/1iSeeyJlnnpkuXbqkQ4cOOfroozN9+vTt7uf73/9+rrrqqvTo0SMHHHBAhg4dmqeeemq7xwTQGEbAA/uM9evX54wzzsiFF16Yyy+/PA899FD+7d/+LZ07d84111yz3deceuqpmThxYj772c/m61//eunrpa82+vp//ud/MnLkyFII/Pjjj+f666/Pk08+uUsB74QJEzJhwoRceOGF+cAHPpClS5fm4x//eDZu3Jg3velNr/raj3zkI3nkkUdy/fXXp2/fvnnhhRfyyCOP5Pnnn0+S3HTTTfnEJz6R//mf/9nhdC5f+9rX0rdv33z5y1/OAQcckD59+rzqPt/3vvfl7LPPzkUXXZQFCxbk6quvzsKFC/P//X//X9q1a7fTx93Yvi+KImeddVZ+8YtfZPz48XnXu96V3//+97n22mvz8MMP5+GHH05lZWWp/eOPP57LL788V155Zaqrq/PNb34zF154Yf7P//k/OfHEE3e6TgAA9ozFixcnSfr27Vta9uCDD+Y973lPBgwYkFtuuSWdO3fOnXfemQ996ENZs2ZNKRxeuHBhhgwZksMOOyzTpk1Lp06dctNNN2XGjBlNXue6detyxhlnZPTo0bnyyiuzYcOGbNq0KWeeeWZ+9atfZdy4cRk4cGCeeeaZXHvttRk8eHDmzZuXjh07Jkk+/vGP5zvf+U6uuOKKDBs2LE888URGjBiR1atXv+a+6+vrM3To0Pz973/PpEmT0rdv3/z0pz/Nhz70odd87V/+8peceuqpede73pVvf/vbOfDAA/O3v/0t9913X9atW5fu3bvnvvvuy3ve855ceOGFpelctoTyW4wYMSLnnHNOLrroorz00kuvus/HHnssY8eOTW1tbWpqavK9730vl156adatW5crrrjiNWve2s7c22ztqaeeysCBA3PwwQfna1/7Wrp165Y77rgjF1xwQZ577rmMGzeuQfvPfvazOeGEE/LNb34zq1atymc+85mcfvrpWbRoUdq0adOoWgG2JoAH9hnr1q3LhAkTSqOqhwwZknnz5mXGjBk7DOBf97rXlQLnt7zlLTv1tcUpU6aU/n/Tpk1517velW7duuWjH/1ovvKVr6RLly47XfMLL7yQL37xi3nf+96Xb37zm6XlRxxxRE444YTXDOB/85vf5GMf+1g+/vGPl5adeeaZpf9/y1vekgMPPPBVp5Tp0KFDfv7znzcIz7c3J/sWI0aMyOTJk5Mkw4cPT3V1dc4999z88Ic/zLnnnvuq9W6tsX1///335+c//3kmT56cT3/600mSYcOGpWfPnvnQhz6U73znOw36Yfny5fnNb36TXr16JUlOPPHE/OIXv8iMGTME8AAALcCW6Q9ffvnl/OY3v8nnP//5nHjiiTnjjDNKbcaMGZMjjjgis2bNStu2myOMk08+OcuXL89nP/vZnHfeedlvv/1y3XXXpSiKzJo1K9XV1Uk2D/jo169fk9e9fv36XHPNNQ2mybnzzjtz33335a677sqIESNKy4866qgcf/zxmTZtWv7lX/4lTz75ZKZPn55PfepTpWvqYcOGla6pX8v06dOzaNGi/PjHPy710/Dhw1NfX5/bbrvtVV87f/78vPzyy/nSl76Uo446qrR85MiRpf/v379/ks3T1+zo+vz888/PhAkTXrPWZPNo/UcffbS0v1NOOSXLli3Lv/3bv2XMmDGNmrpnZ+5ttlZbW5t169blwQcfTM+ePZMk733ve/PCCy9kwoQJGT16dDp37txg+3fccUfpeZs2bXL22Wdn7ty5prcBdospaIB9RkVFRU4//fQGy9761rfmmWeeadL9PProoznjjDPSrVu3tGnTJu3atct5552XjRs35umnn27Uth5++OG8/PLL21xsDxw4MIceeuhrvv5tb3tbpk2bls9//vP57W9/u0vT4JxxxhmNGrn+ylrPPvvstG3bNg8++GCj990Ys2bNSpIGXwtOkg9+8IPZf//984tf/KLB8qOPProUvieb/6Ghb9++Tf5+AABg17z97W9Pu3btUlVVlfe85z3p0qVLfvzjH5eC9j/96U958sknS9efGzZsKD3e+9735tlnny1NEfLggw9myJAhpfA92Ryg7szI8F3x/ve/v8Hz//qv/8qBBx6Y008/vUGdRx99dGpqakrTqGy5Zt7RNfVrefDBB1NVVdXgHymShiH6jhx99NFp3759PvGJT2T69On585///Jqv2Z5XHvurOeKIIxqE/cnmWletWpVHHnlkl/a/s2bNmpUhQ4aUwvctLrjggqxZs2abH419ZZ++9a1vTRL3D8BuE8AD+4xOnTqlQ4cODZZVVlbm5ZdfbrJ9LFmyJO9617vyt7/9Lf/+7/+eX/3qV5k7d26+/vWvJ9n8ldDG2DJVTE1NzTbrtrfslX7wgx/k/PPPzze/+c284x3vSNeuXXPeeedtdw7IHenevfvOF7ydutq2bZtu3bqVjqVcnn/++bRt23abr8BWVFSkpqZmm/1369Ztm21UVlY2+s8IAIDy+M53vpO5c+dm1qxZGT16dBYtWpQPf/jDpfVb5oK/4oor0q5duwaPMWPGJNn8rcdk87Xirl5TN1anTp1ywAEHNFj23HPP5YUXXkj79u23qbWurq5Bndura8s19Wt5/vnnG/wjwxY7c5xvfOMb88ADD+Tggw/OxRdfnDe+8Y154xvfmH//939/zddurTH3D6/2Z7In7h+2V2uPHj22u/9X9v+W6S3dPwC7yxQ0AI3wox/9KC+99FLuvvvuBiPUH3vssV3a3paLvO0F5nV1ddv8COkrHXTQQZk6dWqmTp2aJUuW5N57782VV16ZZcuW5b777tupGnb0Y0k7UldXl9e//vWl5xs2bMjzzz/f4IK1srJymx+/TXbvIrtbt27ZsGFD/vGPfzQI4YuiSF1dXY4//vhd3jYAAHvem9/85tIPr5500knZuHFjvvnNb+Y///M/84EPfCAHHXRQkmT8+PENpnXZ2pYpG7t167bDa+pX2t1r1e1dPx900EHp1q3bDq/Bq6qqSnVuqWt719SvpVu3btv9wdadHYDzrne9K+9617uycePGzJs3LzfccEPGjh2b6urqnHPOOTu1jcbcP7zan8mWvtgyiOqVfyZb/tFiV3Xr1i3PPvvsNsv//ve/J0np/QVQbkbAA61eY0Y2bLnY3PrHPouieM35Fnfk7W9/ezp06JDvfe97DZbPmTOn0V917NWrVy655JIMGzaswdc5m3rU9ytr/eEPf5gNGzZk8ODBpWWHHXZYfv/73zdoN2vWrLz44osNljWm74cMGZIkDeZlTJK77rorL730Umk9AAB7p8mTJ6dLly655pprsmnTprzpTW9Knz598vjjj+e4447b7mNLsH3SSSflF7/4RWnUfLJ5jvkf/OAH2+xnZ69VG+O0007L888/n40bN263zi3/ULDlmnlH19Sv5aSTTsrq1atz7733Nlje2B+bbdOmTQYMGFD6Ju+W+4emHvW9YMGCPP744w2WzZgxI1VVVTn22GOTpDTo6JV/Jq88xi317WxtQ4YMyaxZs0qB+xbf+c530qlTJ/O6A3uMEfBAq7flh5luvfXWVFVVpUOHDundu/d2vwI6bNiwtG/fPh/+8Iczbty4vPzyy7n55puzYsWKXdp3ly5dcsUVV+Tzn/98Pvaxj+WDH/xgli5dmtra2tf8GunKlStz0kknZeTIkTn88MNTVVWVuXPn5r777mswQujII4/M3XffnZtvvjn9+/fPfvvtVxpptCvuvvvutG3bNsOGDcuCBQty9dVX56ijjsrZZ59davORj3wkV199da655poMGjQoCxcuzI033tjgR46Sxvf9ySefnM985jNZtWpVTjjhhPz+97/Ptddem2OOOSYf+chHdvmYAABofl26dMn48eMzbty4zJgxI6NGjco3vvGNnHLKKTn55JNzwQUX5PWvf33+7//9v1m0aFEeeeSR/Md//EeS5HOf+1zuvffevPvd784111yTTp065etf/3peeumlbfazs9eqjXHOOefke9/7Xt773vfm0ksvzdve9ra0a9cuf/3rX/Pggw/mzDPPzPve9768+c1vzqhRozJ16tS0a9cuQ4cOzRNPPJEvf/nL20xrsz3nnXdevvrVr+a8887L9ddfnz59+uS///u/8/Of//w1X3vLLbdk1qxZOfXUU9OrV6+8/PLL+fa3v50kGTp0aJLNI/UPPfTQ/PjHP86QIUPStWvXHHTQQa/5zdwd6dGjR84444zU1tame/fuueOOOzJz5sx88YtfLP0A6/HHH583velNueKKK7Jhw4Z06dIl99xzT379619vs73G3Ntce+21+a//+q+cdNJJueaaa9K1a9d873vfy09/+tNMnjx5t/68ARrDCHig1evdu3emTp2axx9/PIMHD87xxx+fn/zkJ9tte/jhh+euu+7KihUrMmLEiHzyk5/M0Ucfna997Wu7vP/rrrsukyZNyv33358zzjgjN9xwQ2655ZbSKJkd6dChQwYMGJDvfve7Offcc3PKKafkm9/8Zj7zmc80GJF/6aWX5gMf+EA++9nP5u1vf/tuT9Vy991358knn8yIESNyzTXX5PTTT8/999+f9u3bl9p8+tOfzqc//elMmzYtp59+eu6666788Ic/zIEHHthgW43p+4qKivzoRz/KZZddlttvvz3vfe978+Uvfzkf+chHMmvWrAbfSgAAYO/0yU9+Mr169cp1112XjRs35qSTTsrvfve7HHjggRk7dmyGDh2af/mXf8kDDzxQCo2TzQM7HnjggRxwwAE5//zz84lPfCJvfetbc/XVV2+zj529Vm2MNm3a5N57781nP/vZ3H333Xnf+96Xs846K1/4whfSoUOHHHnkkaW23/rWt3LZZZdl2rRpOeOMM/LDH/4wd911V7p06fKa++nUqVNmzZqVoUOH5sorr8wHPvCB/PWvf82dd975mq89+uijs2HDhlx77bU55ZRT8pGPfCT/+Mc/cu+992b48OEN6uvUqVPOOOOMHH/88amtrd2lPtmyzylTpuQrX/lKzjzzzPzmN7/JlClTMm7cuFKbNm3a5Cc/+UkOP/zwXHTRRTnvvPNSWVmZG2+8cZvtNebe5k1velPmzJmTN73pTbn44otz1lln5Yknnsjtt9+eT3/607t8TACNVVEURdHcRQAAAAA0tWnTpuWjH/1oFi9evMujuAFgdxgBDwAAAAAAZSCABwAAAACAMjAFDQAAAAAAlIER8AAAAAAAUAYCeAAAAAAAKAMBPAAAAAAAlEHb5i5gV2zatCl///vfU1VVlYqKiuYuBwCAvURRFFm9enV69OiR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0CH9+/fPr371q1dtP3v27PTv3z8dOnTIG97whtxyyy3btLnrrrvylre8JZWVlXnLW96Se+65p9H7LYoitbW16dGjRzp27JjBgwdnwYIFDdqsXbs2n/zkJ3PQQQdl//33zxlnnJG//vWvu9ALO6cl9tX69evzmc98JkceeWT233//9OjRI+edd17+/ve/N9jG4MGDU1FR0eBxzjnn7GJPvLaW2FdJcsEFF2zTD29/+9sbtPG+2uyV/bTl8aUvfanUpjW8rx566KGcfvrp6dGjRyoqKvKjH/1om204X232Wn3lfPW/duZ95Xy12c70lfPVZpMmTcrxxx+fqqqqHHzwwTnrrLPy1FNPNWjTEs9XNJ+Weg3Skt+nLbHPWurn687Wvz2t+d5gZ2t/pdZ8j9CY+l+pNd8vbNES+8x5bd+6h9haS+23lnxua/X3FcU+4M477yzatWtX3HbbbcXChQuLSy+9tNh///2LZ555Zrvt//znPxedOnUqLr300mLhwoXFbbfdVrRr1674z//8z1KbOXPmFG3atCkmTpxYLFq0qJg4cWLRtm3b4re//W2j9vuFL3yhqKqqKu66667iD3/4Q/GhD32o6N69e7Fq1apSm4suuqh4/etfX8ycObN45JFHipNOOqk46qijig0bNrSavnrhhReKoUOHFj/4wQ+KJ598snj44YeLAQMGFP37929Qz6BBg4qPf/zjxbPPPlt6vPDCC03eTztT8yvtyffV+eefX7znPe9p0A/PP/98g3q8rzbbuo+effbZ4tvf/nZRUVFR/M///E+pTWt4X/33f/93cdVVVxV33XVXkaS45557ttmX89Vmr9VXzleNe185X222M33lfLXZySefXNx+++3FE088UTz22GPFqaeeWvTq1at48cUXS21a2vmK5tOSr0Fa6vu0pfZZS/x83VpL7beiaHmftY2pfWut+R5hay35WsV5be+/b9haS+23omi557WiaNn91lLPbe4rimKfCODf9ra3FRdddFGDZYcffnhx5ZVXbrf9uHHjisMPP7zBstGjRxdvf/vbS8/PPvvs4j3veU+DNieffHJxzjnn7PR+N23aVNTU1BRf+MIXSutffvnlonPnzsUtt9xSFMXmE3K7du2KO++8s9Tmb3/7W7HffvsV991332see2O11L7ant/97ndFkgZ/IQcNGlRceumlO3xNU2rJfXX++ecXZ5555g5r977a8fvqzDPPLN797nc3WNYa3ldb296HtfPVzvfV9rTW89XWXu3i2fmqoZ19XzlfbbZs2bIiSTF79uyiKFrm+Yrm01KvQVry+7Sl9tn2NPfn69Zacr+1tM/aLVpyn71Sc3/mbq0lfP7uLfcLW7TUPtse57WG9pZ7iK215H57pZZybmsJfVYUzXtfsddPQbNu3brMnz8/w4cPb7B8+PDhmTNnznZf8/DDD2/T/uSTT868efOyfv36V22zZZs7s9/Fixenrq6uQZvKysoMGjSo1Gb+/PlZv359gzY9evRIv379dlj/rmrJfbU9K1euTEVFRQ488MAGy7/3ve/loIMOyhFHHJErrrgiq1ev3vFB76K9oa9++ctf5uCDD07fvn3z8Y9/PMuWLSut877a/n6fe+65/PSnP82FF164zbp9+X21M5yvdq/+1ni+aozWfr7aFc5X/2vlypVJkq5duyZpeecrmk9LvgZpqe/Tltxn29Ocn69b2xv6raV81m6xN/TZFs39mbu1lvT5+0rOa3v/fcPW9oZ+a2nntWTv6LctWsq5rSX1WXPeV7Td6ZYt1PLly7Nx48ZUV1c3WF5dXZ26urrtvqaurm677Tds2JDly5ene/fuO2yzZZs7s98t/91em2eeeabUpn379unSpctO17+rWnJfvdLLL7+cK6+8MiNHjswBBxxQWn7uueemd+/eqampyRNPPJHx48fn8ccfz8yZM3euE3ZSS++rU045JR/84Adz6KGHZvHixbn66qvz7ne/O/Pnz09lZaX31Q72O3369FRVVWXEiBENlu/r76ud4Xy16/W31vPVznK+2jXOV5sVRZHLLrss73znO9OvX7/Sfra87pXbaY7zFc2nJV+DtNT3aUvus1dq7s/XrbX0fmtJn7VbtPQ+21pzf+ZuraV8/u5oP1te98rttMbz2q5wXtt5LfG8lrT8fttaSzm3tZQ+a+77ir0+gN+ioqKiwfOiKLZZ9lrtX7l8Z7bZVG1eaWfa7KqW3FfJ5h8qOeecc7Jp06bcdNNNDdZ9/OMfL/1/v3790qdPnxx33HF55JFHcuyxx+7wGHZVS+2rD33oQ6X/79evX4477rgceuih+elPf7rNybUx9e+OltpXW/v2t7+dc889Nx06dGiwvLW8r8pR2+7sqxz17Mm+Spyvdobz1a5xvtrskksuye9///v8+te/3u3adrYNe5+WfA3SUt+nLbnPkpb1+bq1ltpvLfGzdouW2mdbaymfuVtr7s/fpqxtd/bVGC25zxLntX3hHmJrLbXfttbSzm3N3WfNfV+x109Bc9BBB6VNmzbb/KvDsmXLtvkXjC1qamq2275t27bp1q3bq7bZss2d2W9NTU2SvGabdevWZcWKFTtd/65qyX21xfr163P22Wdn8eLFmTlzZoN/Fd6eY489Nu3atcsf//jHV23XWHtDX22te/fuOfTQQ0v94H217X5/9atf5amnnsrHPvax1zymfe19tTOcrxpff2s/X+2q1ni+aiznq80++clP5t57782DDz6YQw45pMF+kpZzvqL5tORrkJb6Pm3JfbZFS/l83dre0G9ba87P2i32lj5rCZ+5W2sJn7874ry29983bG1v6LettYTzWrL39FtLOre1hD5rCfcVe30A3759+/Tv33+br0rMnDkzAwcO3O5r3vGOd2zT/v77789xxx2Xdu3avWqbLdvcmf1u+UrH1m3WrVuX2bNnl9r0798/7dq1a9Dm2WefzRNPPLHD+ndVS+6r5H8/lP74xz/mgQceKP2lejULFizI+vXr071799ds2xgtva9e6fnnn8/SpUtL/eB9te1+v/Wtb6V///456qijXvOY9rX31c5wvmpc/c5Xu641nq8aq7Wfr4qiyCWXXJK77747s2bNSu/evRu0b2nnK5pPS74Gaanv05bcZ0nL+nzdWkvvt1dqzs/aLfaWPmsJn7lba8nXKs5re/99w9Zaer+9Uks4ryV7T7+1pHOb+4r/LWavd+eddxbt2rUrvvWtbxULFy4sxo4dW+y///7FX/7yl6IoiuLKK68sPvKRj5Ta//nPfy46depUfOpTnyoWLlxYfOtb3yratWtX/Od//mepzW9+85uiTZs2xRe+8IVi0aJFxRe+8IWibdu2xW9/+9ud3m9RFMUXvvCFonPnzsXdd99d/OEPfyg+/OEPF927dy9WrVpVanPRRRcVhxxySPHAAw8UjzzySPHud7+7OOqoo4oNGza0mr5av359ccYZZxSHHHJI8dhjjxXPPvts6bF27dqiKIriT3/6UzFhwoRi7ty5xeLFi4uf/vSnxeGHH14cc8wxraqvVq9eXVx++eXFnDlzisWLFxcPPvhg8Y53vKN4/etf7321nb+DRVEUK1euLDp16lTcfPPN29TeWt5Xq1evLh599NHi0UcfLZIUU6ZMKR599NHimWeeKbVxvtq5vnK+2vm+cr5q3N/BonC+Koqi+Jd/+Zeic+fOxS9/+csGf7/WrFlTatPSzlc0n5Z8DdJS36cttc9a4ufr3tBvLfGztqX32RYt6TN3ay35WsV5be+/b9gb+q0ln9dacr9t0RLPbe4rimKfCOCLoii+/vWvF4ceemjRvn374thjjy1mz55dWnf++ecXgwYNatD+l7/8ZXHMMccU7du3Lw477LDtvjH/4z/+o3jTm95UtGvXrjj88MOLu+66q1H7LYqi2LRpU3HttdcWNTU1RWVlZXHiiScWf/jDHxq0qa+vLy655JKia9euRceOHYvTTjutWLJkyW70xqtriX21ePHiIsl2Hw8++GBRFEWxZMmS4sQTTyy6du1atG/fvnjjG99Y/Ou//mvx/PPPN03HbEdL7Ks1a9YUw4cPL173utcV7dq1K3r16lWcf/7527xnvK/+1ze+8Y2iY8eOxQsvvLDNutbyvnrwwQe3+/fr/PPPL7VxvtrstfrK+ep/vVZfOV/9r535O1gUzldFUezw79ftt99eatMSz1c0n5Z6DdKS36ctsc9a6ufrztbv3mD7WmKfbdHSPnO31lKvVZzX9o37hq21xH5r6ee1omiZ/bZFSz23tfb7ior/VxAAAAAAANCE9vo54AEAAAAAoCUSwAMAAAAAQBkI4AEAAAAAoAwE8AAAAAAAUAYCeAAAAAAAKAMBPAAAAAAAlIEAHgAAAAAAykAADwAAAAAAZSCABwAAAACAMhDAAwAAAABAGQjgAQAAAACgDP5/Z7Rf8h6lGGIAAAAASUVORK5CYII=", - "text/plain": [ - "
" + "cell_type": "markdown", + "metadata": { + "id": "l6BtF35fDCXg" + }, + "source": [ + "## References\n", + "\n", + "\"FlipTest: fairness testing via optimal transport\" https://dl.acm.org/doi/abs/10.1145/3351095.3372845\n", + "\n", + "\"Obtaining Fairness using Optimal Transport Theory\" http://proceedings.mlr.press/v97/gordaliza19a.html\n", + "\n", + "\"Computational Optimal Transport\" https://arxiv.org/abs/1803.00567\n", + "\n", + "\"POT: Python Optimal Transport\" https://jmlr.org/papers/v22/20-451.html" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "# Drawing both of them\n", - "figure, axis = plt.subplots(1, 2)\n", - "figure.set_figheight(4)\n", - "figure.set_figwidth(15)\n", - "figure.tight_layout(w_pad = 5)\n", - "\n", - "def draw(y, id):\n", - " axis[id].hist(y, color='lightgreen', ec='black', bins=10)\n", - "\n", - "axis[0].title.set_text(\"Initial distribution\")\n", - "axis[1].title.set_text(\"Required distribution\")\n", - "draw(a, 0)\n", - "draw(b, 1)\n", - "\n", - "plt.show()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this case the Wasserstein distance tends to zero as the size of the samples increase." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Wasserstein distance is: 2.003382269162742e-05.\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "from aif360.sklearn.metrics import ot_distance\n", - "\n", - "_a = pd.Series(a)\n", - "_b = pd.Series(b)\n", - "c = ot_distance(y_true=_a, y_pred=_b, mode='continuous')\n", - "\n", - "print(\"Wasserstein distance is: \", c, \".\", sep=\"\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3. Permutations\n", - "\n", - "Another example that shows clearly what the permutations in the first formula refer to is the one presented below." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "# Initial distribution\n", - "a = np.array([0., 0.1, 0.1, 0.1, 0.08, 0., 0.1, 0.1, 0.08, 0.08, 0., 0.1, 0.08, 0.08, 0.08, 0.])\n", - "# Required distribution\n", - "b = np.array([0., 0.08, 0.08, 0.08, 0.1, 0., 0.08, 0.08, 0.1, 0.1, 0., 0.08, 0.1, 0.1, 0.1, 0.])" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "iy6Q5v0gDCXg" + }, + "source": [ + "## Introduction\n", + "\n", + "Optimal Transport (OT) is a field of mathematics which studies the geometry of probability spaces. Among its many contributions, OT provides a principled way to compare and align probability distributions by taking into account the underlying geometry of the\n", + "considered metric space.\n", + "\n", + "Optimal Transport (OT) is a mathematical problem that was first introduced by Gaspard Monge in 1781. It addresses the task of determining the most efficient method for transporting mass from one distribution to another. In this problem, the cost associated with moving a unit of mass from one position to another is referred to as the ground cost. The primary objective of OT is to minimize the total cost incurred when moving one mass distribution onto another. The optimization problem can be expressed for two distributions $\\mu_s$ and $\\mu_t$ as\n", + "\n", + "$$\n", + "\\min_{m, m_{\\#} \\mu_s=\\mu_t} \\int c(x, m(x)) d \\mu_s(x)\n", + "$$\n", + "in the continuous case, and\n", + "$$\n", + "\\min_{\\sigma \\in \\text{Perm}(n)} \\frac{1}{n} \\sum_{i=1}^n \\textbf{C}_{i,\\sigma(i)}\n", + "$$\n", + "in the discrete case, where $\\textbf{C}_{\\cdot, \\cdot}$ is the ground cost and the constraint $m_{\\#} \\mu_s=\\mu_t$ ensures that $\\mu_s$ is completely transported to $\\mu_t$. Where $T_{\\#} \\mu_s = \\mu_s(T^{-1}(B)) = u_{t}(B)$ with $T$ as a trasportation matrix between $\\mu_s$ and $\\mu_t$ at point $B$." + ] + }, { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABKcAAAGUCAYAAADgVkHZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABEFElEQVR4nO3deXxTVf7/8XftkoBCgVa6MG0pDEsVWSwqW0FGKQKCCwjICC6gdsAvtBUFBCw4AiPDMB1GoF82GR9uOIKKIyJFlsGhLqxuKKMCRaRCcSlr1/v7g2/zMySFpqScNnk9H488tCfn5p6Te0g+j3ducgMsy7IEAAAAAAAAGHCZ6QEAAAAAAADAfxFOAQAAAAAAwBjCKQAAAAAAABhDOAUAAAAAAABjCKcAAAAAAABgDOEUAAAAAAAAjCGcAgAAAAAAgDGEUwAAAAAAADCGcAoAAAAAAADGEE4BNdjy5csVEBCgbdu2VWn7gIAATZs2zfH3F198oWnTpmn//v0ufe+77z41bdq0Svu5mG0l6cYbb9SNN97o+Hv//v0KCAjQ8uXLPXqcl156SZmZmR5t425f06ZNU0BAgPLz8z16rPOpruceAAB4R3ndVX4LCgpSVFSUhg4dqv/+97+mh+ewadMmBQQEaNOmTZdkf02bNtV9991XpW3PV2d54tSpU5o2bZrHc3a3r6ZNm+rWW2/16HEu5Hw16Ln1OAD3CKcAH5aTk6NRo0Y5/v7iiy80ffp0twHJ1KlT9frrr1/C0VUsKipKOTk56tevn0fbVSWcquq+PFVbnnsAAPzdc889p5ycHK1fv16PPPKIVq9erW7duumnn34yPTRJ0rXXXqucnBxde+21podSJaNGjVJOTo5H25w6dUrTp0/3OJyqyr6q4nw16Ln1OAD3gkwPAED16dSpU6X7Nm/evBpH4hmbzebR2KuitLRUJSUll2RfF1KTnnsAAPxdmzZt1LFjR0lnz+4uLS1VRkaG3njjDd1///2GRyfVr1+/UrXLqVOnVLdu3UswIs/85je/0W9+85tq3Uf53C/Fvi7EdJ0J1BacOQXUMvfdd5+uuOIKff311+rbt6+uuOIKxcTE6NFHH1VhYaFT31+fRrx8+XLdddddkqSePXs6TlkvP83a3VfL5s+fr+7du6tx48a6/PLLdc0112j27NkqLi6u0tgty9Ls2bMVFxcnu92ua6+9Vu+8845LP3engB89elQPPfSQYmJiZLPZdOWVV6pr165av369pLPF49tvv60DBw44nZL/68ebPXu2nn76acXHx8tms2njxo3n/QrhwYMHdeedd6p+/foKDQ3VPffco6NHjzr1qehU7V+fAl+V5/7MmTOaNGmS4uPjFRISoiZNmmjMmDH6+eefXfZz6623au3atbr22mtVp04dtW7dWsuWLavgKAAAAE+UB1U//PCDU/u2bds0YMAANWrUSHa7XR06dNCrr77qsv0HH3ygrl27ym63Kzo6WpMmTdLixYsVEBDgdEZ1ZWoKyf3X+srrw08//VTJycmqV6+ebrrpJklSUVGRnn76abVu3dpRQ91///0uNU1xcbEef/xxRUZGqm7duurWrZs++uijSj9P33//vQYPHqx69eopNDRUQ4YMUV5enks/d1+127Bhg2688UaFhYWpTp06io2N1cCBA3Xq1Cnt379fV155pSRp+vTpjjqq/Dkpf7wdO3Zo0KBBatiwoeODv/N9hfD1119X27ZtZbfb1axZM82bN8/p/vKveZ571vu5z//5alDJ/XH97LPPdNttt6lhw4ay2+1q3769/vGPf7jdz8svv6zJkycrOjpa9evX180336yvvvrK7ZyA2owzp4BaqLi4WAMGDNDIkSP16KOP6t///rf++Mc/KjQ0VE8++aTbbfr166eZM2fqiSee0Pz58x2ngp/vrJ1vvvlGw4YNcwQku3fv1owZM/Tll19WKfyYPn26pk+frpEjR2rQoEE6ePCgHnzwQZWWlqpVq1bn3Xb48OHasWOHZsyYoZYtW+rnn3/Wjh07dOzYMUnSggUL9NBDD+mbb76p8Cty8+bNU8uWLTVnzhzVr19fLVq0OO8+77jjDg0ePFgpKSn6/PPPNXXqVH3xxRf68MMPFRwcXOl5e/rcW5al22+/Xe+9954mTZqkpKQkffLJJ8rIyFBOTo5ycnJks9kc/Xfv3q1HH31UEydOVEREhJYsWaKRI0fqt7/9rbp3717pcQIAAFf79u2TJLVs2dLRtnHjRt1yyy264YYblJWVpdDQUL3yyisaMmSITp065QhOvvjiC910001q2rSpli9frrp162rBggV66aWXvD7OoqIiDRgwQA8//LAmTpyokpISlZWV6bbbbtOWLVv0+OOPq0uXLjpw4IAyMjJ04403atu2bapTp44k6cEHH9Tzzz+v8ePHq1evXvrss89055136vjx4xfc9+nTp3XzzTfr+++/16xZs9SyZUu9/fbbGjJkyAW33b9/v/r166ekpCQtW7ZMDRo00KFDh7R27VoVFRUpKipKa9eu1S233KKRI0c6viJXHliVu/POOzV06FClpKTo5MmT593nrl27lJqaqmnTpikyMlIvvviixo0bp6KiIo0fP/6CY/61ytSgv/bVV1+pS5cuaty4sebNm6ewsDC98MILuu+++/TDDz/o8ccfd+r/xBNPqGvXrlqyZIkKCgo0YcIE9e/fX3v27FFgYKBHYwVqNAtAjfXcc89ZkqyPP/7Y0XbvvfdakqxXX33VqW/fvn2tVq1aObVJsjIyMhx///Of/7QkWRs3bnTZ17333mvFxcVVOJbS0lKruLjYev75563AwEDrxx9/rPS2lmVZP/30k2W326077rjDqf0///mPJcnq0aOHo23fvn2WJOu5555ztF1xxRVWamrqeffRr18/t+Mof7zmzZtbRUVFbu/79b4yMjIsSVZaWppT3xdffNGSZL3wwguOtnOf43JxcXHWvffe6/jbk+d+7dq1liRr9uzZTv1WrFhhSbIWLVrktB+73W4dOHDA0Xb69GmrUaNG1sMPP+yyLwAA4F553fXBBx9YxcXF1vHjx621a9dakZGRVvfu3a3i4mJH39atW1sdOnRwarMsy7r11lutqKgoq7S01LIsyxoyZIhVp04dKy8vz9GnpKTEat26tSXJ2rdvn6O9sjXFxo0bXWqK8vpw2bJlTtu+/PLLliRr5cqVTu0ff/yxJclasGCBZVmWtWfPnvPWPr/evzsLFy60JFlvvvmmU/uDDz5YYZ1V7rXXXrMkWbt27arw8Y8ePVrh81P+eE8++WSF9/1aXFycFRAQ4LK/Xr16WfXr17dOnjxpWdb/Xw+/PkaW5f75r6gGtSzX4zp06FDLZrNZubm5Tv369Olj1a1b1/r555+d9tO3b1+nfq+++qolycrJyXG7P6C24mt9QC0UEBCg/v37O7W1bdtWBw4c8Op+du7cqQEDBigsLEyBgYEKDg7WiBEjVFpaqr1793r0WDk5OTpz5ox+//vfO7V36dJFcXFxF9z++uuv1/Lly/X000/rgw8+qNJXCwcMGODRGU/njnXw4MEKCgrSxo0bPd63JzZs2CBJLlfGueuuu3T55Zfrvffec2pv3769YmNjHX/b7Xa1bNnS6+sBAAB/0KlTJwUHB6tevXq65ZZb1LBhQ7355psKCjr7pZOvv/5aX375paNOKCkpcdz69u2rw4cPO752tXHjRt10002KiIhwPH5gYGClziiqioEDBzr9/a9//UsNGjRQ//79ncbZvn17RUZGOr6aVl7bVFT7XMjGjRtVr149DRgwwKl92LBhF9y2ffv2CgkJ0UMPPaR//OMf+vbbby+4jTvnzv18rr76arVr186pbdiwYSooKNCOHTuqtP/K2rBhg2666SbFxMQ4td933306deqUyw+4n/uctm3bVpKo8+BzCKeAWqhu3bqy2+1ObTabTWfOnPHaPnJzc5WUlKRDhw7pb3/7m7Zs2aKPP/5Y8+fPl3T29G1PlH/9LjIy0uU+d23nWrFihe69914tWbJEnTt3VqNGjTRixAi3v2VQkaioqMoP2M24goKCFBYW5phLdTl27JiCgoJcTlcPCAhQZGSky/7DwsJcHsNms3l8jAAAgPT888/r448/1oYNG/Twww9rz549uvvuux33l//21Pjx4xUcHOx0Gz16tCQpPz9f0tn39KrWPp6qW7eu6tev79T2ww8/6Oeff1ZISIjLWPPy8pzG6W5c5bXPhRw7dswpgCtXmXk2b95c69evV+PGjTVmzBg1b95czZs319/+9rcLbvtrntR55zsml6LOczfW6Ohot/s/9/kv/2kH6jz4Gn5zCoBbb7zxhk6ePKlVq1Y5ndm0a9euKj1e+RuruzApLy/P5QfBzxUeHq7MzExlZmYqNzdXq1ev1sSJE3XkyBGtXbu2UmOo6AcxK5KXl6cmTZo4/i4pKdGxY8ecigSbzebyQ/TSxRU2YWFhKikp0dGjR50CKsuylJeXp+uuu67Kjw0AAM4vISHB8SPoPXv2VGlpqZYsWaLXXntNgwYNUnh4uCRp0qRJuvPOO90+RvlvaYaFhVVY+5zrYmsKd3VOeHi4wsLCKqyV6tWr5xhn+bjc1T4XEhYW5vbH0yv7IWJSUpKSkpJUWlqqbdu26e9//7tSU1MVERGhoUOHVuoxPKnzzndMyp+L8g+Czz0m5YFeVYWFhenw4cMu7d9//70kOdYX4G84cwrwI5580lL+Bv/rH962LEuLFy+u0r47deoku92uF1980al969atHp+WHBsbq0ceeUS9evVyOvXa22cLnTvWV199VSUlJbrxxhsdbU2bNtUnn3zi1G/Dhg06ceKEU5snz3351XVeeOEFp/aVK1fq5MmTjvsBAED1mz17tho2bKgnn3xSZWVlatWqlVq0aKHdu3erY8eObm/loU/Pnj313nvvOV3pr7S0VCtWrHDZT2VrCk/ceuutOnbsmEpLS92OszxEK69tKqp9LqRnz546fvy4Vq9e7dTu6Q+/BwYG6oYbbnCcqV9e53n7bKHPP/9cu3fvdmp76aWXVK9ePceFa8o/OD33mJw7x/LxVXZsN910kzZs2OAIo8o9//zzqlu3rjp16lTZaQA+hTOnAD/Spk0bSdKiRYtUr1492e12xcfHuz1du1evXgoJCdHdd9+txx9/XGfOnNHChQv1008/VWnfDRs21Pjx4/X0009r1KhRuuuuu3Tw4EHHVVLO55dfflHPnj01bNgwtW7dWvXq1dPHH3+stWvXOn1iec0112jVqlVauHChEhMTddlllzk++ayKVatWKSgoSL169XJcra9du3YaPHiwo8/w4cM1depUPfnkk+rRo4e++OILPfvsswoNDXV6LE+f+969e2vChAkqKChQ165dHVfr69Chg4YPH17lOQEAAM80bNhQkyZN0uOPP66XXnpJ99xzj/73f/9Xffr0Ue/evXXfffepSZMm+vHHH7Vnzx7t2LFD//znPyVJU6ZM0erVq/W73/1OTz75pOrWrav58+e7vZpcZWsKTwwdOlQvvvii+vbtq3Hjxun6669XcHCwvvvuO23cuFG33Xab7rjjDiUkJOiee+5RZmamgoODdfPNN+uzzz5zXOH4QkaMGKG//vWvGjFihGbMmKEWLVpozZo1evfddy+4bVZWljZs2KB+/fopNjZWZ86ccVwV+uabb5Z09gyvuLg4vfnmm7rpppvUqFEjhYeHX/DM+4pER0drwIABmjZtmqKiovTCCy8oOztbzzzzjOrWrStJuu6669SqVSuNHz9eJSUlatiwoV5//XW9//77Lo/nSQ2akZGhf/3rX+rZs6eefPJJNWrUSC+++KLefvttzZ49+6KON1Crmf5FdgAVq+hqfZdffrlLX3dXI5Gbq5pkZmZa8fHxVmBgoNPVU9xdce+tt96y2rVrZ9ntdqtJkybWY489Zr3zzjturxBzoav1WZZllZWVWbNmzbJiYmKs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H35YAQEByszMvGTj85bKzHPPnj0aMGCAQkNDVa9ePXXq1Em5ubmXfrDwKdRrvol6rfbz1VpNol6TqNeo186PcMqLVqxYodTUVE2ePFk7d+5UUlKS+vTp41NF9ObNmzVmzBh98MEHys7OVklJiZKTk3Xy5EnTQ6s2H3/8sRYtWqS2bduaHkq1+Omnn9S1a1cFBwfrnXfe0RdffKG//OUvatCggemhed0zzzyjrKwsPfvss9qzZ49mz56tP//5z/r73/9uemgX5eTJk2rXrp2effZZt/fPnj1bc+fO1bPPPquPP/5YkZGR6tWrl44fP36JR3pxzjfPU6dOaceOHZo6dap27NihVatWae/evRowYICBkV68Cx3Tcm+88YY+/PBDRUdHX6KRedeF5vnNN9+oW7duat26tTZt2qTdu3dr6tSpstvtl3ik8CXUa76Jes03+GqtJlGvSdRr1GsXYMFrrr/+eislJcWprXXr1tbEiRMNjaj6HTlyxJJkbd682fRQqsXx48etFi1aWNnZ2VaPHj2scePGmR6S102YMMHq1q2b6WFcEv369bMeeOABp7Y777zTuueeewyNyPskWa+//rrj77KyMisyMtL605/+5Gg7c+aMFRoaamVlZRkYoXecO093PvroI0uSdeDAgUszqGpS0Vy/++47q0mTJtZnn31mxcXFWX/9618v+di8yd08hwwZ4lP/PlEzUK/5Huo13+EPtZplUa/9GvVa7VKd9RpnTnlJUVGRtm/fruTkZKf25ORkbd261dCoqt8vv/wiSWrUqJHhkVSPMWPGqF+/frr55ptND6XarF69Wh07dtRdd92lxo0bq0OHDlq8eLHpYVWLbt266b333tPevXslSbt379b777+vvn37Gh5Z9dm3b5/y8vKcXptsNpt69Ojh069N0tnXp4CAAJ/7VFmSysrKNHz4cD322GO6+uqrTQ+nWpSVlentt99Wy5Yt1bt3bzVu3Fg33HDDeU+ZBy6Eeo16rbbyl3rNH2s1iXqNeq328ma9RjjlJfn5+SotLVVERIRTe0REhPLy8gyNqnpZlqX09HR169ZNbdq0MT0cr3vllVe0fft2zZo1y/RQqtW3336rhQsXqkWLFnr33XeVkpKisWPH6vnnnzc9NK+bMGGC7r77brVu3VrBwcHq0KGDUlNTdffdd5seWrUpf/3xp9cmSTpz5owmTpyoYcOGqX79+qaH43XPPPOMgoKCNHbsWNNDqTZHjhzRiRMn9Kc//Um33HKL1q1bpzvuuEN33nmnNm/ebHp4qKWo16jXait/qdf8sVaTqNeo12ovb9ZrQdU0Rr8VEBDg9LdlWS5tvuKRRx7RJ598ovfff9/0ULzu4MGDGjdunNatW+fzv21SVlamjh07aubMmZKkDh066PPPP9fChQs1YsQIw6PzrhUrVuiFF17QSy+9pKuvvlq7du1SamqqoqOjde+995oeXrXyp9em4uJiDR06VGVlZVqwYIHp4Xjd9u3b9be//U07duzw2WMoyfHjt7fddpvS0tIkSe3bt9fWrVuVlZWlHj16mBweajl/ek2kXvMN/lKv+XOtJvnXaxP1mm/wZr3GmVNeEh4ersDAQJdk+8iRIy4JuC/4n//5H61evVobN27Ub37zG9PD8brt27fryJEjSkxMVFBQkIKCgrR582bNmzdPQUFBKi0tNT1Er4mKitJVV13l1JaQkOBTPwxb7rHHHtPEiRM1dOhQXXPNNRo+fLjS0tJ8+tPWyMhISfKb16bi4mINHjxY+/btU3Z2tk9+CrdlyxYdOXJEsbGxjtenAwcO6NFHH1XTpk1ND89rwsPDFRQU5DevT7g0qNd8C/Wa770e+mOtJlGvUa/VXt6s1winvCQkJESJiYnKzs52as/OzlaXLl0Mjcr7LMvSI488olWrVmnDhg2Kj483PaRqcdNNN+nTTz/Vrl27HLeOHTvq97//vXbt2qXAwEDTQ/Sarl27ulxeeu/evYqLizM0oupz6tQpXXaZ88teYGCgT1yeuCLx8fGKjIx0em0qKirS5s2bfeq1Sfr/hc5///tfrV+/XmFhYaaHVC2GDx+uTz75xOn1KTo6Wo899pjeffdd08PzmpCQEF133XV+8/qES4N6zbdQr/ne66E/1moS9Zovol7z/PWJr/V5UXp6uoYPH66OHTuqc+fOWrRokXJzc5WSkmJ6aF4zZswYvfTSS3rzzTdVr149R7ofGhqqOnXqGB6d99SrV8/ldxkuv/xyhYWF+dzvNaSlpalLly6aOXOmBg8erI8++kiLFi3SokWLTA/N6/r3768ZM2YoNjZWV199tXbu3Km5c+fqgQceMD20i3LixAl9/fXXjr/37dunXbt2qVGjRoqNjVVqaqpmzpypFi1aqEWLFpo5c6bq1q2rYcOGGRy15843z+joaA0aNEg7duzQv/71L5WWljpenxo1aqSQkBBTw66SCx3Tcwu54OBgRUZGqlWrVpd6qBflQvN87LHHNGTIEHXv3l09e/bU2rVr9dZbb2nTpk3mBo1aj3qNeq028pd6zVdrNYl6jXqNeu2CLvp6f3Ayf/58Ky4uzgoJCbGuvfZan7tkryS3t+eee8700Kqdr16a2LIs66233rLatGlj2Ww2q3Xr1taiRYtMD6laFBQUWOPGjbNiY2Mtu91uNWvWzJo8ebJVWFhoemgXZePGjW7/Xd57772WZZ29PHFGRoYVGRlp2Ww2q3v37tann35qdtBVcL557tu3r8LXp40bN5oeuscudEzPVVsvTVyZeS5dutT67W9/a9ntdqtdu3bWG2+8YW7A8BnUa76Leq1289VazbKo16jXqNcuJMCyLMuzOAsAAAAAAADwDn5zCgAAAAAAAMYQTgEAAAAAAMAYwikAAAAAAAAYQzgFAAAAAAAAYwinAAAAAAAAYAzhFAAAAAAAAIwhnAIAAAAAAIAxhFMAAAAAAAAwhnAKAAAAAAAAxhBOAQAAAAAAwBjCKQAAAAAAABjz/wAcfxIVwbXtywAAAABJRU5ErkJggg==", - "text/plain": [ - "
" + "cell_type": "markdown", + "metadata": { + "id": "euPQoGR9DCXh" + }, + "source": [ + "OT can be used to detect **model-induced bias** by calculating the above cost (also known as **Earth Mover's distance** or **Wasserstein distance**) between the distribution of ground truth labels and model predictions for each of the **protected groups**. If its value is close to 1, the model is **biased** towards this group." ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "# Drawing both of them\n", - "figure, axis = plt.subplots(1, 2)\n", - "figure.set_figheight(4)\n", - "figure.set_figwidth(12)\n", - "figure.tight_layout(w_pad = 5)\n", - "\n", - "def draw(y, id):\n", - " x = np.array(range(0, np.size(y)))\n", - " axis[id].bar(x, y, color=\"lightgreen\", ec='black')\n", - " axis[id].scatter(x, y, color=\"orange\")\n", - "\n", - "axis[0].title.set_text(\"Initial distribution\")\n", - "axis[1].title.set_text(\"Required distribution\")\n", - "draw(a, 0)\n", - "draw(b, 1)\n", - "\n", - "plt.show()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There, since we can go from the initial distribution to the desired one just using permutations, the Wasserstein distance is zero." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.0\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "from aif360.sklearn.metrics import ot_distance\n", - "\n", - "_a = pd.Series(a)\n", - "_b = pd.Series(b)\n", - "c = ot_distance(_a, _b, mode='continuous')\n", - "\n", - "print(c)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4. Extreme case\n", - "\n", - "One more example that is closer to our case is \"normalization\". It's an explanation of why the maximum Wasserstein distance we can get in our case is approaching 1 (with increasing the size of the sample), that is, it is normalized. We get this in the case that all our population has a value 0 of the 2-year recidivism (which is presented in the paragraph \"Compas Dataset\") and the classifier fails massively in all the cases labeling all with a 1. That would be the worst-case scenario." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "# Initial distribution\n", - "a = np.array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.001])\n", - "# Required distribution\n", - "b = np.array([0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625])" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "e1VAdG5wDCXh" + }, + "source": [ + "## General Optimal Transport examples" + ] + }, { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABLgAAAGUCAYAAAA285u8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABVNklEQVR4nO3de1yUdd7/8TdxmNFSSlxBChDdCsxSg1ahEL1NTC076Eq1YaVW3NQqkKVopnlXpLkuax74WZrrr1La0LKNNbGUtZXa5GAnN6slMYM1rEQzOV6/P/wxd+MMyCA6Xszr+Xhcj73nO5/r+ny/w0if+8N18DIMwxAAAAAAAABgUue5ewIAAAAAAADA6aDBBQAAAAAAAFOjwQUAAAAAAABTo8EFAAAAAAAAU6PBBQAAAAAAAFOjwQUAAAAAAABTo8EFAAAAAAAAU6PBBQAAAAAAAFOjwQUAAAAAAABTo8EFeIA1a9bIy8tLu3btatP+Xl5emjdvnu31Z599pnnz5unrr792iL3nnnvUq1evNuU5nX0laejQoRo6dKjt9ddffy0vLy+tWbPGpeO88sorysrKcmkfZ7nmzZsnLy8vVVVVuXSslpypzx4AALSPprqrafPx8VHPnj11++2364svvnD39Gy2b98uLy8vbd++/azk69Wrl+6555427dtSneWKY8eOad68eS6v2VmuXr166cYbb3TpOKfSUg16cj0OwBENLgCnVFhYqClTpthef/bZZ3riiSecNlnmzJmjjRs3nsXZNa9nz54qLCzUmDFjXNqvLQ2utuZylVk+ewAAPN2LL76owsJCbd26VQ899JA2bdqk6667Tj/88IO7pyZJuvrqq1VYWKirr77a3VNpkylTpqiwsNClfY4dO6YnnnjC5QZXW3K1RUs16Mn1OABHPu6eAIBz3+DBg1sd26dPnzM4E9dYLBaX5t4WDQ0Nqq+vPyu5TuVc+uwBAPB0/fr1U3R0tKQTZ5k3NDRo7ty5ev3113Xvvfe6eXZS165dW1W7HDt2TJ07dz4LM3LNJZdcoksuueSM5mha+9nIdSrurjMBM+AMLsBD3XPPPbrgggv05ZdfavTo0brgggsUEhKihx9+WDU1NXaxvzwles2aNfrtb38rSRo2bJjt9PumU8adXSa3bNkyDRkyRD169ND555+vK6+8UgsXLlRdXV2b5m4YhhYuXKiwsDBZrVZdffXV+tvf/uYQ5+x09u+++07333+/QkJCZLFY9Ktf/UrXXnuttm7dKulEAfrWW29p3759dpcX/PJ4Cxcu1JNPPqnw8HBZLBZt27atxcsh9+/fr9tuu01du3aVv7+/7rrrLn333Xd2Mc2ddv7L0/nb8tkfP35cGRkZCg8Pl5+fny6++GI9+OCD+vHHHx3y3Hjjjdq8ebOuvvpqderUSREREVq9enUzPwUAAOCKpmbXf/7zH7vxXbt2aezYserWrZusVqsGDhyoV1991WH/999/X9dee62sVquCg4OVkZGh559/Xl5eXnZndremppCcX6LYVB9+/PHHSkhIUJcuXTR8+HBJUm1trZ588klFRETYaqh7773Xoaapq6vTo48+qqCgIHXu3FnXXXed/vnPf7b6c/r22281YcIEdenSRf7+/kpMTFRlZaVDnLPLBt99910NHTpUAQEB6tSpk0JDQzVu3DgdO3ZMX3/9tX71q19Jkp544glbHdX0mTQdr7i4WOPHj9dFF11k++NhS5dDbty4UVdddZWsVqt69+6tJUuW2L3fdMnqyWffn/z5t1SDSs5/rp988oluvvlmXXTRRbJarRowYID+/Oc/O82zbt06zZ49W8HBweratauuv/56ff75507XBJgVZ3ABHqyurk5jx47V5MmT9fDDD+vvf/+7/ud//kf+/v56/PHHne4zZswYPf3005o1a5aWLVtmO629pbOHvvrqK9155522Jsvu3bv11FNP6V//+lebGihPPPGEnnjiCU2ePFnjx4/X/v37dd9996mhoUGXX355i/smJSWpuLhYTz31lC677DL9+OOPKi4u1qFDhyRJy5cv1/3336+vvvqq2cv9lixZossuu0yLFi1S165ddemll7aY89Zbb9WECROUnJysTz/9VHPmzNFnn32mDz74QL6+vq1et6ufvWEYuuWWW/TOO+8oIyNDcXFx+uijjzR37lwVFhaqsLBQFovFFr979249/PDDmjlzpgIDA/XCCy9o8uTJ+vWvf60hQ4a0ep4AAMBRWVmZJOmyyy6zjW3btk033HCDBg0apOzsbPn7+2v9+vVKTEzUsWPHbM2Xzz77TMOHD1evXr20Zs0ade7cWcuXL9crr7zS7vOsra3V2LFj9cADD2jmzJmqr69XY2Ojbr75Zu3YsUOPPvqoYmNjtW/fPs2dO1dDhw7Vrl271KlTJ0nSfffdp7Vr12r69OkaMWKEPvnkE9122206cuTIKXP//PPPuv766/Xtt98qMzNTl112md566y0lJiaect+vv/5aY8aMUVxcnFavXq0LL7xQBw4c0ObNm1VbW6uePXtq8+bNuuGGGzR58mTb5X5NTa8mt912m26//XYlJyfrp59+ajFnaWmpUlNTNW/ePAUFBenll1/WtGnTVFtbq+nTp59yzr/Umhr0lz7//HPFxsaqR48eWrJkiQICAvTSSy/pnnvu0X/+8x89+uijdvGzZs3StddeqxdeeEHV1dWaMWOGbrrpJu3Zs0fe3t4uzRU4ZxkAOrwXX3zRkGR8+OGHtrG7777bkGS8+uqrdrGjR482Lr/8crsxScbcuXNtr//yl78Ykoxt27Y55Lr77ruNsLCwZufS0NBg1NXVGWvXrjW8vb2N77//vtX7GoZh/PDDD4bVajVuvfVWu/F//OMfhiQjPj7eNlZWVmZIMl588UXb2AUXXGCkpqa2mGPMmDFO59F0vD59+hi1tbVO3/tlrrlz5xqSjLS0NLvYl19+2ZBkvPTSS7axkz/jJmFhYcbdd99te+3KZ79582ZDkrFw4UK7uJycHEOSsXLlSrs8VqvV2Ldvn23s559/Nrp162Y88MADDrkAAIBzTXXX+++/b9TV1RlHjhwxNm/ebAQFBRlDhgwx6urqbLERERHGwIED7cYMwzBuvPFGo2fPnkZDQ4NhGIaRmJhodOrUyaisrLTF1NfXGxEREYYko6yszDbe2ppi27ZtDjVFU324evVqu33XrVtnSDJyc3Ptxj/88ENDkrF8+XLDMAxjz549LdY+v8zvzIoVKwxJxhtvvGE3ft999zVbZzV57bXXDElGaWlps8f/7rvvmv18mo73+OOPN/veL4WFhRleXl4O+UaMGGF07drV+OmnnwzD+N/vwy9/Robh/PNvrgY1DMef6+23325YLBajvLzcLm7UqFFG586djR9//NEuz+jRo+3iXn31VUOSUVhY6DQfYEZcogh4MC8vL9100012Y1dddZX27dvXrnlKSko0duxYBQQEyNvbW76+vpo4caIaGhq0d+9el45VWFio48eP63e/+53deGxsrMLCwk65/29+8xutWbNGTz75pN5///02XSY5duxYl868OnmuEyZMkI+Pj7Zt2+Zyble8++67kuTwxKLf/va3Ov/88/XOO+/YjQ8YMEChoaG211arVZdddlm7fx8AAPAEgwcPlq+vr7p06aIbbrhBF110kd544w35+Jy4iObLL7/Uv/71L1udUF9fb9tGjx6tiooK2yVk27Zt0/DhwxUYGGg7vre3d6vObGqLcePG2b3+61//qgsvvFA33XST3TwHDBigoKAg22V2TbVNc7XPqWzbtk1dunTR2LFj7cbvvPPOU+47YMAA+fn56f7779ef//xn/fvf/z7lPs6cvPaWXHHFFerfv7/d2J133qnq6moVFxe3KX9rvfvuuxo+fLhCQkLsxu+55x4dO3bM4ab4J3+mV111lSRR56FDocEFeLDOnTvLarXajVksFh0/frzdcpSXlysuLk4HDhzQn/70J+3YsUMffvihli1bJunEqeiuaLqUMCgoyOE9Z2Mny8nJ0d13360XXnhBMTEx6tatmyZOnOj03g7N6dmzZ+sn7GRePj4+CggIsK3lTDl06JB8fHwcTr338vJSUFCQQ/6AgACHY1gsFpd/RgAAQFq7dq0+/PBDvfvuu3rggQe0Z88e3XHHHbb3m+7FNX36dPn6+tptKSkpkqSqqipJJ/6b3tbax1WdO3dW165d7cb+85//6Mcff5Sfn5/DXCsrK+3m6WxeTbXPqRw6dMiuidekNevs06ePtm7dqh49eujBBx9Unz591KdPH/3pT3865b6/5Eqd19LP5GzUec7mGhwc7DT/yZ9/020qqPPQkXAPLgBn1Ouvv66ffvpJGzZssDvDqrS0tE3Ha/qPs7OGVGVlpcNN1k/WvXt3ZWVlKSsrS+Xl5dq0aZNmzpypgwcPavPmza2aQ3M3GW1OZWWlLr74Ytvr+vp6HTp0yK7QsFgsDjf3l06vOAoICFB9fb2+++47uyaXYRiqrKzUNddc0+ZjAwCAlkVGRtpuLD9s2DA1NDTohRde0Guvvabx48ere/fukqSMjAzddtttTo/RdG/RgICAZmufk51uTeGszunevbsCAgKarZW6dOlim2fTvJzVPqcSEBDg9Ib0rf1DZFxcnOLi4tTQ0KBdu3bpueeeU2pqqgIDA3X77be36hiu1Hkt/UyaPoumPyaf/DNpagq2VUBAgCoqKhzGv/32W0myfb8AT8IZXABc5spffJqKhF/ezNwwDD3//PNtyj148GBZrVa9/PLLduM7d+50+RTr0NBQPfTQQxoxYoTdaeTtfdbSyXN99dVXVV9fr6FDh9rGevXqpY8++sgu7t1339XRo0ftxlz57JueevTSSy/Zjefm5uqnn36yvQ8AAM68hQsX6qKLLtLjjz+uxsZGXX755br00ku1e/duRUdHO92aGkfDhg3TO++8Y/cExoaGBuXk5DjkaW1N4Yobb7xRhw4dUkNDg9N5NjXimmqb5mqfUxk2bJiOHDmiTZs22Y27ejN9b29vDRo0yHbFQFOd195nLX366afavXu33dgrr7yiLl262B4G1PTH15N/JievsWl+rZ3b8OHD9e6779oaWk3Wrl2rzp07a/Dgwa1dBtBhcAYXAJf169dPkrRy5Up16dJFVqtV4eHhTk89HzFihPz8/HTHHXfo0Ucf1fHjx7VixQr98MMPbcp90UUXafr06XryySc1ZcoU/fa3v9X+/fttT69pyeHDhzVs2DDdeeedioiIUJcuXfThhx9q8+bNdn85vfLKK7VhwwatWLFCUVFROu+882x/gW2LDRs2yMfHRyNGjLA9RbF///6aMGGCLSYpKUlz5szR448/rvj4eH322WdaunSp/P397Y7l6mc/cuRIzZgxQ9XV1br22mttT1EcOHCgkpKS2rwmAADgmosuukgZGRl69NFH9corr+iuu+7S//k//0ejRo3SyJEjdc899+jiiy/W999/rz179qi4uFh/+ctfJEmPPfaYNm3apP/6r//S448/rs6dO2vZsmVOn/LX2prCFbfffrtefvlljR49WtOmTdNvfvMb+fr66ptvvtG2bdt0880369Zbb1VkZKTuuusuZWVlydfXV9dff70++eQT25OnT2XixIn64x//qIkTJ+qpp57SpZdeqry8PL399tun3Dc7O1vvvvuuxowZo9DQUB0/ftz2tO7rr79e0okzzcLCwvTGG29o+PDh6tatm7p3737KKwCaExwcrLFjx2revHnq2bOnXnrpJeXn52vBggXq3LmzJOmaa67R5ZdfrunTp6u+vl4XXXSRNm7cqPfee8/heK7UoHPnztVf//pXDRs2TI8//ri6deuml19+WW+99ZYWLlx4Wj9vwLTcfZd7AGdec09RPP/88x1inT0lRk6eNpOVlWWEh4cb3t7edk+1cfYkxDfffNPo37+/YbVajYsvvth45JFHjL/97W9On9xzqqcoGoZhNDY2GpmZmUZISIjh5+dnXHXVVcabb75pxMfHt/gUxePHjxvJycnGVVddZXTt2tXo1KmTcfnllxtz5861PenGMAzj+++/N8aPH29ceOGFhpeXl+3zaDres88+6zCnlp6iWFRUZNx0003GBRdcYHTp0sW44447jP/85z92+9fU1BiPPvqoERISYnTq1MmIj483SktLHZ545Opn//PPPxszZswwwsLCDF9fX6Nnz57Gf//3fxs//PCDXVxYWJgxZswYh3Wd/JkCAICWOau7mvz8889GaGiocemllxr19fWGYRjG7t27jQkTJhg9evQwfH19jaCgIOO//uu/jOzsbLt9//GPfxiDBw82LBaLERQUZDzyyCPGypUrHZ7Q19qaormnKDqrDw3DMOrq6oxFixbZaroLLrjAiIiIMB544AHjiy++sMv/8MMPGz169DCsVqsxePBgo7Cw0GlN48w333xjjBs3zlY3jRs3zti5c+cpn6JYWFho3HrrrUZYWJhhsViMgIAAIz4+3ti0aZPd8bdu3WoMHDjQsFgsdk92bDred9995zCn5p6iOGbMGOO1114zrrjiCsPPz8/o1auXsXjxYof99+7dayQkJBhdu3Y1fvWrXxm///3vjbfeesvh82+uBjUM5/X4xx9/bNx0002Gv7+/4efnZ/Tv39/uMzKM//05/+Uvf7Ebd1a7AmbnZRiGcfbaaQAAAACA9rBmzRrde++9Kisra/NZSADQUXAPLgAAAAAAAJgaDS4AAAAAAACYGpcoAgAAAAAAwNQ4gwsAAAAAAACmRoMLAAAAAAAApkaDCwAAAAAAAKbm4+4JnEsaGxv17bffqkuXLvLy8nL3dAAAwBlgGIaOHDmi4OBgnXcef+szG+o1AAA6vrbUazS4fuHbb79VSEiIu6cBAADOgv379+uSSy5x9zTgIuo1AAA8hyv1Gg2uX+jSpYukEx9g165d3TwbAABwJlRXVyskJMT2332YC/UaAAAdX1vqNRpcv9B0mnvXrl0pmAAA6OC4vM2cqNcAAPAcrtRr3HgCAAAAAAAApkaDCwAAAAAAAKZGgwsAAAAAAACmRoMLAAAAAAAApkaDCwAAAAAAAKZGgwsAAAAAAACmRoMLAAAAAAAApkaDCwAAAAAAAKbm4+4JAACADq6xQfpuh/RzhdSpp/SrOOk8b3fPCjg97vhee0pOd+UlJznNmpecHSunu/J2gHqtTQ2u5cuX69lnn1VFRYWuuOIKZWVlKS4urtn4goICpaen69NPP1VwcLAeffRRJScn28Xk5uZqzpw5+uqrr9SnTx899dRTuvXWW23v//3vf9ezzz6roqIiVVRUaOPGjbrlllvsjmEYhp544gmtXLlSP/zwgwYNGqRly5bpiiuuaMsyAQDA6dq/QSqaJh375n/HOl8iRf1JCrnNffMCToc7vteektNdeclJTrPmJWfHyumuvB2kXnP5EsWcnBylpqZq9uzZKikpUVxcnEaNGqXy8nKn8WVlZRo9erTi4uJUUlKiWbNmaerUqcrNzbXFFBYWKjExUUlJSdq9e7eSkpI0YcIEffDBB7aYn376Sf3799fSpUubndvChQu1ePFiLV26VB9++KGCgoI0YsQIHTlyxNVlAgCA07V/g7RjvH2xJEnHDpwY37/BPfMCToc7vteektNdeclJTrPmJWfHyumuvB2oXvMyDMNwZYdBgwbp6quv1ooVK2xjkZGRuuWWW5SZmekQP2PGDG3atEl79uyxjSUnJ2v37t0qLCyUJCUmJqq6ulp/+9vfbDE33HCDLrroIq1bt85x0l5eDmdwGYah4OBgpaamasaMGZKkmpoaBQYGasGCBXrggQdOubbq6mr5+/vr8OHD6tq166k/DAAA4Fxjg7Spl2OxZON14i+DY8vO+unv/Pfe3Nz683PH99pTcrorLznJada85OxYOd2Vt4PVay5dolhbW6uioiLNnDnTbjwhIUE7d+50uk9hYaESEhLsxkaOHKlVq1aprq5Ovr6+KiwsVFpamkNMVlZWq+dWVlamyspKu1wWi0Xx8fHauXOn0wZXTU2NampqbK+rq6tbnQ8AAE9XXl6uqqoqp+9d8NMuXdZssSRJhnRsv/b+Y5WOnh/tNKJ79+4KDQ1th5kCreeO77W7/i01l9cdOdsjr6fkbC4v3yO+u67kbC4v3yO+R67kbCmvO7jU4KqqqlJDQ4MCAwPtxgMDA1VZWel0n8rKSqfx9fX1qqqqUs+ePZuNae6YzeVp2u/k4+zbt8/pPpmZmXriiSdanQMAAJxQXl6uiMgI/XzsZ6fv3x4jrXvo1MeZO+MBrS90/l6nzp30rz3/OmeKJnR87vheu+vfUkt53ZGzPfJ6Sk5nefkeuS9ne+Tle3Ru/Uz5HrU+Z3N53aVNN5n38vKye20YhsPYqeJPHnf1mO0xt4yMDKWnp9teV1dXKyQkxOWcAAB4mqqqKv187Gfd9X/uUuBlgQ7v96nZLx169ZTHGTJ3gi62OP639z97/6OXHnhJVVVV50TBBM/gju+1u/4ttZTXHTlPN6+n5GwuL98j9+U83bx8j869nynfo9blbCmvu7jU4Orevbu8vb0dzqw6ePCgw5lTTYKCgpzG+/j4KCAgoMWY5o7ZXB7pxJlcPXv2bNVxLBaLLBZLq3MAAAB7gZcFKqS/Y8FTZ1ysI9u36ILjP8rZn5kMSUetF6rumsEK8XL5mTfAGeWO77W7/i05y+uOnGc6Lzk943vEd9e8OZvL6yk5z3ReT6nXXJqhn5+foqKilJ+fbzeen5+v2NhYp/vExMQ4xG/ZskXR0dHy9fVtMaa5YzoTHh6uoKAgu+PU1taqoKDApeMAAIDTZ3idp4LIW0/83ye/9///tyDyVhkmKJaAJu74XntKTnflJSc5zZqXnB0rp7vydrR6zeVZpqen64UXXtDq1au1Z88epaWlqby8XMnJyZJOXPY3ceJEW3xycrL27dun9PR07dmzR6tXr9aqVas0ffp0W8y0adO0ZcsWLViwQP/617+0YMECbd26VampqbaYo0ePqrS0VKWlpZJO3FS+tLRU5eXlkk5cmpiamqqnn35aGzdu1CeffKJ77rlHnTt31p133tmWzwYAAJyGr4L6662B9+qo9UK78aPWC/XWwHv1VVB/90wMOA3u+F57Sk535SUnOc2al5wdK6e78nakes3le3AlJibq0KFDmj9/vioqKtSvXz/l5eUpLCxMklRRUWFrOkknzqzKy8tTWlqali1bpuDgYC1ZskTjxo2zxcTGxmr9+vV67LHHNGfOHPXp00c5OTkaNGiQLWbXrl0aNmyY7XXTvbPuvvturVmzRpL06KOP6ueff1ZKSop++OEHDRo0SFu2bFGXLl1cXSYAAGgHXwX1178Dr1Tw91/p/Jpq/WTpqm+79THNXwIBZ9zxvfaUnO7KS05ymjUvOTtWTnfl7Sj1WptuMp+SkqKUlBSn7zU1m34pPj5excXFLR5z/PjxGj9+fLPvDx061HZz+uZ4eXlp3rx5mjdvXotxAADg7DG8ztOBgEvdPQ2gXbnje+0pOd2Vl5zkNGtecnasnO7K2xHqNXO14wAAAAAAAICT0OACAAAAAACAqdHgAgAAgFPLly9XeHi4rFaroqKitGPHjhbjCwoKFBUVJavVqt69eys7O9sh5scff9SDDz6onj17ymq1KjIyUnl5eWdqCQAAwEPQ4AIAAICDnJwcpaamavbs2SopKVFcXJxGjRpl9zChXyorK9Po0aMVFxenkpISzZo1S1OnTlVubq4tpra2ViNGjNDXX3+t1157TZ9//rmef/55XXzxxWdrWQAAoINq003mAQAA0LEtXrxYkydP1pQpUyRJWVlZevvtt7VixQplZmY6xGdnZys0NFRZWVmSpMjISO3atUuLFi2yPT179erV+v7777Vz5075+vpKku1J3AAAAKeDM7gAAABgp7a2VkVFRUpISLAbT0hI0M6dO53uU1hY6BA/cuRI7dq1S3V1dZKkTZs2KSYmRg8++KACAwPVr18/Pf3002poaGh2LjU1NaqurrbbAAAATkaDCwAAAHaqqqrU0NCgwMBAu/HAwEBVVlY63aeystJpfH19vaqqqiRJ//73v/Xaa6+poaFBeXl5euyxx/SHP/xBTz31VLNzyczMlL+/v20LCQk5zdUBAICOiAYXAAAAnPLy8rJ7bRiGw9ip4n853tjYqB49emjlypWKiorS7bffrtmzZ2vFihXNHjMjI0OHDx+2bfv372/rcgAAQAfGPbgAAABgp3v37vL29nY4W+vgwYMOZ2k1CQoKchrv4+OjgIAASVLPnj3l6+srb29vW0xkZKQqKytVW1srPz8/h+NaLBZZLJbTXRIAAOjgOIMLAAAAdvz8/BQVFaX8/Hy78fz8fMXGxjrdJyYmxiF+y5Ytio6Ott1Q/tprr9WXX36pxsZGW8zevXvVs2dPp80tAACA1qLBBQAAAAfp6el64YUXtHr1au3Zs0dpaWkqLy9XcnKypBOXDk6cONEWn5ycrH379ik9PV179uzR6tWrtWrVKk2fPt0W89///d86dOiQpk2bpr179+qtt97S008/rQcffPCsrw8AAHQsXKIIAAAAB4mJiTp06JDmz5+viooK9evXT3l5eQoLC5MkVVRUqLy83BYfHh6uvLw8paWladmyZQoODtaSJUs0btw4W0xISIi2bNmitLQ0XXXVVbr44os1bdo0zZgx46yvDwAAdCw0uAAAAOBUSkqKUlJSnL63Zs0ah7H4+HgVFxe3eMyYmBi9//777TE9AAAA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", - "text/plain": [ - "
" + "cell_type": "markdown", + "metadata": { + "id": "Jl5mlU65DCXh" + }, + "source": [ + "Let us start with some simple examples of calculating the Earth Mover's distance between two distributions - the basis of Optimal Transport for bias detection. We do this using the `earth_movers_distance` function.\n", + "\n", + "For concrete examples of bias detection on real datasets, skip to the next chapter." ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "# Drawing both of them\n", - "figure, axis = plt.subplots(1, 2)\n", - "figure.set_figheight(4)\n", - "figure.set_figwidth(12)\n", - "figure.tight_layout(w_pad = 5)\n", - "\n", - "def draw(y, id):\n", - " x = np.array(range(0, np.size(y)))\n", - " axis[id].bar(x, y, color=\"lightgreen\", ec='black')\n", - " axis[id].scatter(x, y, color=\"orange\")\n", - "\n", - "axis[0].title.set_text(\"Initial distribution\")\n", - "axis[1].title.set_text(\"Required distribution\")\n", - "draw(a, 0)\n", - "draw(b, 1)\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.9375\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "from aif360.sklearn.metrics import ot_distance\n", - "\n", - "_a = pd.Series(a)\n", - "_b = pd.Series(b)\n", - "c = ot_distance(_a, _b)\n", - "\n", - "print(c)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Usage\n", - "\n", - "The type of outcomes must be provided using the `mode` keyword argument. The definition for the four types of outcomes supported are provided below:\n", - "- Binary: Yes/no outcomes. Outcomes must 0 or 1.\n", - "- Continuous: Continuous outcomes. Outcomes could be any real number.\n", - "- Nominal: Multiclass outcomes with no rank or order between them. Outcomes must be a finite set of integers.\n", - "- Ordinal: Multiclass outcomes that are ranked in a specific order. Outcomes must be positive integers." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Compas Dataset" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll demonstrate finding the scanning for bias with earth_movers_distance using the Compas dataset. We scan for bias in the predictions of an `sklearn` logistic regression model with respect to different groups." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_compas\n", - "\n", - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "np.random.seed(0)\n", - "dataset_orig = load_preproc_data_compas()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We scan for bias at first with respect to `sex`, and then `age`.\n", - "\n", - "To scan for bias with respect for a feature that is one-hot encoded - in this case, age category - we need to convert it to nominal or ordinal format." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "Zxqm3r4bDCXh" + }, + "source": [ + "### 1. General Optimal Transport\n", + "\n", + "Suppose we have two distributions $a$ and $b$ (as shown in the picture below), and we need to calculate the Wasserstein distance between these two distributions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "mf1QLAOSDCXh" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "# Initial distribution\n", + "a = np.array([0., 0.01547988, 0.03095975, 0.04643963, 0.05727554, 0.05417957, 0.04643963, 0.07739938,\n", + " 0.10835913, 0.12383901, 0.11764706, 0.10526316, 0.09287926, 0.07739938, 0.04643962, 0. ])\n", + "# Required distribution\n", + "b = np.array([0., 0.01829787, 0.02702128, 0.04106383, 0.07, 0.10829787, 0.14212766, 0.14468085,\n", + " 0.13, 0.10808511, 0.08255319, 0.05170213, 0.03361702, 0.02702128, 0.01553191, 0. ])" + ] + }, { - "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", - "
sexracepriors_count=0priors_count=1 to 3priors_count=More than 3c_charge_degree=Fc_charge_degree=Mage_cattwo_year_recid
00.00.01.00.00.01.00.011.0
10.00.00.00.01.01.00.001.0
20.01.00.00.01.01.00.011.0
31.01.01.00.00.00.01.010.0
40.01.01.00.00.01.00.010.0
\n", - "
" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "LSbUK_LVDCXi", + "outputId": "621856d3-65c9-4fa4-e82a-4d9ba29c50ee" + }, + "outputs": [ + { + "data": { + "image/png": "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jkbhwoUNm82W+H4knO+jjz5KlulOq/Xt2LHDaN26tZE/f36jQIECRteuXY0zZ84kOT4qKsp47bXXDE9PTyNPnjxG/fr1jd27dydbWSe17/21a9eM119/3fDy8jIcHR2N4sWLGy+88ILx77//Jmnn5eVltGzZMtnruvU9FRERkTtL6borwbVr14zSpUsb5cuXN2JjYw3DMIw9e/YYnTp1Mh544AHD0dHR8PDwMJ544glj6tSpSY795ZdfjFq1ahnOzs6Gh4eH8eqrrxpffPFFspXg7vWa4nar9aV0fWgYhhETE2OMHz8+8Zouf/78RqVKlYx+/foZhw4dSvL8r7zyivHAAw8YLi4uRq1atYzg4OAUr2lScuLECaNDhw6J100dOnQwtm7detfV+oKDg4127doZXl5ehrOzs+Hq6mrUr1/fWL58eZLzr1+/3qhevbrh7OycZAXBhPOdO3cuWabbrdbXsmVLY9GiRcbDDz9sODk5Gd7e3saECROSHX/w4EEjICDAKFiwoFGsWDHjpZdeMlauXJns/b/dNahhpHw9/ueffxqtW7c2ChUqZDg5ORm+vr5J3iPD+O/f+dtvv02yP6VrV5GcwGYYhpF5pTAREREREZHcbfbs2fTu3ZujR4+mufePiEhOojmnRERERERERETEMipOiYiIiIiIiIiIZTSsT0RERERERERELKOeUyIiIiIiIiIiYhkVp0RERERERERExDIqTomIiIiIiIiIiGUcrA6QXuLj4zl16hQFChTAZrNZHUdERETSmWEYXLlyhRIlSmBnp8/Xshtdq4mIiOR8ab1eyzHFqVOnTuHp6Wl1DBEREclgoaGhlCpVyuoYkkq6VhMREck9Unu9lmOKUwUKFADMN6BgwYIWpxEREZH0dvnyZTw9PRP/z5fsRddqIiIiOV9ar9dyTHEqoXt4wYIFdcEjIiKSg2lIWPakazUREZHcI7XXa5qwQURERERERERELKPilIiIiIiIiIiIWEbFKRERERERERERsYyKUyIiIiIiIiIiYhkVp0RERERERERExDIqTomIiIiIiIiIiGVUnBIREREREREREcuoOCUiIiIiIiIiIpZxsDqAiEiOFx8H57bAtdOQpzgU8wc7e6tTiYiIiIiIZAkqTomIZKTQJbBjEESe+G9f3lLgNxE821uXS0REREREJIvQsD4RkYwSugS2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jk1paWlER0fb1LEJ/i50fvvtN77//nsqVqxodaQCERwczC+//JLt+OTj48OoUaNYvXq11fHyjaurK82aNbOb45MUDtVrtkX1mu0dD+2xVgPVa7ZI9Vrej0+6rC8fjRw5kuDgYAICAggMDGTOnDnExsYSEhJidbR88/zzz7N48WK++uorSpcundXdL1u2LCVKlLA4Xf4pXbp0jnEZPDw8qFixos2N1zBixAiaN2/OlClT6N69O1u3bmXOnDnMmTPH6mj57tFHH2Xy5Mn4+vpyxx13sGPHDmbMmEG/fv2sjvavJCUl8fvvv2d9f+jQIXbu3EmFChXw9fVl+PDhTJkyhdq1a1O7dm2mTJlCyZIl6d27t4Wp8+56++nj40O3bt3Yvn07X3/9NRkZGVnHpwoVKuDq6mpV7Ftyo5/pPws5FxcXvL29qVu3bmFH/VdutJ+jRo2iR48etGrVijZt2vDdd9+xcuVKoqKirAstxZ7qNdVrxZG91Gu2WquB6jXVa6rXbuhfz/cn2bz//vtG9erVDVdXV+Ouu+6yuSl7gVxvH374odXRCpytTk1sGIaxcuVKo2HDhoabm5tRr149Y86cOVZHKhDnz583hg0bZvj6+hru7u5GzZo1jfHjxxupqalWR/tX1q1bl+v/y6eeesowDHN64okTJxre3t6Gm5ub0apVK+PXX3+1NvQtuN5+Hjp06JrHp3Xr1lkdPc9u9DP9p+I6NfHN7Gd4eLhx++23G+7u7kbjxo2N5cuXWxdYbIbqNduleq14s9VazTBUr6leU712Iw6GYRh5a2eJiIiIiIiIiIjkD405JSIiIiIiIiIillFzSkRERERERERELKPmlIiIiIiIiIiIWEbNKRERERERERERsYyaUyIiIiIiIiIiYhk1p0RERERERERExDJqTomIiIiIiIiIiGXUnBIREREREREREcuoOSUiIiIiIiIiIpZRc0pERERERERERCyj5pSIiIiIiIiIiFjm/wEQlDvJOgiVrgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } ], - "text/plain": [ - " sex race priors_count=0 priors_count=1 to 3 priors_count=More than 3 \\\n", - "0 0.0 0.0 1.0 0.0 0.0 \n", - "1 0.0 0.0 0.0 0.0 1.0 \n", - "2 0.0 1.0 0.0 0.0 1.0 \n", - "3 1.0 1.0 1.0 0.0 0.0 \n", - "4 0.0 1.0 1.0 0.0 0.0 \n", - "\n", - " c_charge_degree=F c_charge_degree=M age_cat two_year_recid \n", - "0 1.0 0.0 1 1.0 \n", - "1 1.0 0.0 0 1.0 \n", - "2 1.0 0.0 1 1.0 \n", - "3 0.0 1.0 1 0.0 \n", - "4 1.0 0.0 1 0.0 " + "source": [ + "import matplotlib.pyplot as plt\n", + "from scipy.interpolate import make_interp_spline\n", + "\n", + "# Drawing both of them\n", + "figure, axis = plt.subplots(1, 2)\n", + "figure.set_figheight(4)\n", + "figure.set_figwidth(12)\n", + "figure.tight_layout(w_pad = 5)\n", + "\n", + "def draw(y, id):\n", + " x = np.array(range(0, np.size(y)))\n", + " XYSpline = make_interp_spline(x, y)\n", + " X = np.linspace(x.min(), x.max(), 500)\n", + " Y = XYSpline(X)\n", + " axis[id].bar(x, y, color=\"lightgreen\", ec='black')\n", + " axis[id].scatter(x, y, color=\"orange\")\n", + " axis[id].plot(X, Y, color='blue')\n", + "\n", + "axis[0].title.set_text(\"Initial distribution\")\n", + "axis[1].title.set_text(\"Required distribution\")\n", + "draw(a, 0)\n", + "draw(b, 1)\n", + "\n", + "plt.show()" ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataset_orig_df = pd.DataFrame(dataset_orig.features, columns=dataset_orig.feature_names)\n", - "# Binning the features corresponding to age ('reshaping' them into one ordinal column)\n", - "age_cat_cols = ['age_cat=Less than 25', 'age_cat=25 to 45', 'age_cat=Greater than 45']\n", - "age_cat = np.argmax(dataset_orig_df[age_cat_cols].values, axis=1).reshape(-1, 1)\n", - "df = dataset_orig_df.drop(age_cat_cols, axis=1)\n", - "df['age_cat'] = age_cat\n", - "df['two_year_recid'] = dataset_orig.labels\n", - "df.head()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Measuring bias with respect to `sex`\n", - "\n", - "\n", - "We train a linear regression model on the dataset, and scan its results for bias with respect to `sex` using `earth_movers_distance`.\n", - "\n", - "The arguments are as follows:\n", - "- `ground_truth`: ground truth labels;\n", - "- `classifier`: predicted labels;\n", - "- `prot_attr`: the values of the sensitive attributes (with respect to which the classifier may be introducing bias);\n", - "- `num_iters`: maximum number of iterations performed when calculating the Earth Mover's Distance;\n", - "- `mode`: mode of the labels, one of binary, nominal, ordinal and continious; in our case the labels are binary." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "from aif360.sklearn.metrics import ot_distance\n", - "from sklearn.linear_model import LogisticRegression\n", - "from sklearn.model_selection import train_test_split\n", - "\n", - "X = df.drop('two_year_recid', axis=1)\n", - "y = df['two_year_recid']\n", - "clf = LogisticRegression(solver='lbfgs', max_iter=10000, C=1.0, penalty='l2')\n", - "clf.fit(X, y)\n", - "preds = pd.Series(clf.predict_proba(X)[:,0])\n", - "\n", - "ot_val1 = ot_distance(y_true=y, y_pred=preds, prot_attr=df['sex'])" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "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", - "
sexot_val
00.00.000209
11.00.001647
\n", - "
" + "cell_type": "markdown", + "metadata": { + "id": "_w9qXdzUDCXj" + }, + "source": [ + "In order to better understand how Optimal Transport works, below is presented the code considering the case when the matrix cost distance is presented and defined as the absolute difference between positions of each part of the distribution. That is $\\text{distance}[i][j] = abs(i - j)$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "3Y0nUhvcDCXj" + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "_a = pd.Series(a)\n", + "_b = pd.Series(b)\n", + "distance = np.zeros((np.size(a), np.size(b)))\n", + "for i in range(np.size(a)):\n", + " for j in range(np.size(b)):\n", + " distance[i][j] = abs(i - j)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "P2i9hj8VDCXj", + "outputId": "d2affef6-0656-40f3-f5ad-1be39352a547" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wasserstein distance is equal to 1.3773703499999999.\n" + ] + } ], - "text/plain": [ - " sex ot_val\n", - "0 0.0 0.000209\n", - "1 1.0 0.001647" + "source": [ + "from aif360.sklearn.metrics import ot_distance\n", + "c0 = ot_distance(y_true=_a, y_pred=_b, cost_matrix=distance, mode='continuous')\n", + "\n", + "print(\"Wasserstein distance is equal to \", c0, \".\", sep=\"\")" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "bs1 = pd.DataFrame({\"sex\": ot_val1.keys(), \"ot_val\": ot_val1.values()})\n", - "display(bs1)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We get the bias value for each each of the protected groups - in this case, Male (`0`) and Female (`1`). \n", - "\n", - "These values range from 0 to 1 and can be interpreted as the difference in percent between the ground truth distribution and the distribution of the protected group: for example, a value of 0.3 would mean a 30% difference." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Measuring bias with respect to `age_cat`\n", - "\n", - "Now we measure the bias of the same classifier with respect to the age category." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "ot_val2 = ot_distance(y_true=y, y_pred=preds, prot_attr=df['age_cat'])" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ + }, + { + "cell_type": "markdown", + "metadata": { + "id": "iXt221UKDCXk" + }, + "source": [ + "### 2. Randomly distributed samples\n", + "\n", + "Suppose we have two distributions $a$ and $b$ with length $N$, that are generated randomly, and we need to calculate earth_movers_distance for them." + ] + }, { - "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", - "
age_catot_val
000.000578
110.000313
220.001800
\n", - "
" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "uM1m8MkYDCXk" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "N = 1000\n", + "np.random.seed(seed=1)\n", + "\n", + "# Initial distribution\n", + "a = np.random.rand(N)\n", + "a /= np.sum(a)\n", + "\n", + "# Required distribution\n", + "b = np.random.rand(N)\n", + "b /= np.sum(b)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "KvR1F56qDCXk", + "outputId": "977b8774-b5cb-43e1-87ac-801dd4a91018" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABeAAAAGUCAYAAABdvoLAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPVUlEQVR4nO3dfZhVZb0//vfIwwCeEQFzBhKU+kKWmA9oFJZgPJj5GJUZktqxwoN2JDWSTB08CUVFnDQ1rYQyss5Ry04nE8Owwn4BPpSAWicSKkfCLwLKyOP6/cGXfRgBZWA2MzCv13XtS/da917rs242a6/15t73riiKoggAAAAAANCk9mvuAgAAAAAAYF8kgAcAAAAAgDIQwAMAAAAAQBkI4AEAAAAAoAwE8AAAAAAAUAYCeAAAAAAAKAMBPAAAAAAAlIEAHgAAAAAAykAADwAAAAAAZSCAB/Y606ZNS0VFRebNm7dLr6+oqEhtbW3p+cKFC1NbW5u//OUv27S94IILcthhh+3SfnbntUkyePDgDB48uPT8L3/5SyoqKjJt2rRGbWfGjBmZOnVqo16zvX3V1tamoqIiy5cvb9S2Xk25+h4AgJZry/X8lkfbtm3TvXv3nHPOOfnjH//Y3OWV/PKXv0xFRUV++ctf7pH9HXbYYbngggt26bWvdv3eGGvWrEltbW2jj3l7+zrssMNy2mmnNWo7r+XV7m1eeZ8H0FII4IFW5+GHH87HPvax0vOFCxdmwoQJ2w2Br7766txzzz17sLod6969ex5++OGceuqpjXrdrgTwu7qvxtpb+h4AgKZ3++235+GHH84DDzyQSy65JPfee2/e+c53ZsWKFc1dWpLk2GOPzcMPP5xjjz22uUvZJR/72Mfy8MMPN+o1a9asyYQJExodwO/KvnbFq93bvPI+D6ClaNvcBQDsaW9/+9t3uu0b3/jGMlbSOJWVlY2qfVds3LgxGzZs2CP7ei0tqe8BAGh6/fr1y3HHHZdk87c/N27cmGuvvTY/+tGP8tGPfrSZq0sOOOCAnbomXrNmTTp16rQHKmqcQw45JIccckhZ97Hl2PfEvl5Lc9+/AOyIEfDAPuGCCy7IP/3TP+VPf/pT3vve9+af/umf0rNnz1x++eVZu3Ztg7ZbfzVx2rRp+eAHP5gkOemkk0pfg93y1c3tTYPy9a9/PSeeeGIOPvjg7L///jnyyCMzefLkrF+/fpdqL4oikydPzqGHHpoOHTrk2GOPzc9+9rNt2m3va6X/+Mc/8olPfCI9e/ZMZWVlXve61+WEE07IAw88kGTzjcxPf/rTPPPMMw2+5rv19iZPnpzPf/7z6d27dyorK/Pggw++6nQ3S5cuzYgRI3LAAQekc+fOGTVqVP7xj380aLOjr39u/bXaXen7l19+OePHj0/v3r3Tvn37vP71r8/FF1+cF154YZv9nHbaabnvvvty7LHHpmPHjjn88MPz7W9/ewd/CgAANLctYfxzzz3XYPm8efNyxhlnpGvXrunQoUOOOeaY/PCHP9zm9b/97W9zwgknpEOHDunRo0fGjx+f2267LRUVFQ2+cbkz16rJ9qeg2XLf8Yc//CHDhw9PVVVVhgwZkiRZt25dPv/5z+fwww8vXZt/9KMf3eZaef369Rk3blxqamrSqVOnvPOd78zvfve7ne6nv//97zn77LNTVVWVzp0750Mf+lDq6uq2abe9aWFmzZqVwYMHp1u3bunYsWN69eqV97///VmzZk3+8pe/5HWve12SZMKECaXr8y19smV7jzzySD7wgQ+kS5cupUEzrzbdzT333JO3vvWt6dChQ97whjfka1/7WoP1W6YkeuW3Yl/Z/692b5Ns/8/1iSeeyJlnnpkuXbqkQ4cOOfroozN9+vTt7uf73/9+rrrqqvTo0SMHHHBAhg4dmqeeemq7xwTQGEbAA/uM9evX54wzzsiFF16Yyy+/PA899FD+7d/+LZ07d84111yz3deceuqpmThxYj772c/m61//eunrpa82+vp//ud/MnLkyFII/Pjjj+f666/Pk08+uUsB74QJEzJhwoRceOGF+cAHPpClS5fm4x//eDZu3Jg3velNr/raj3zkI3nkkUdy/fXXp2/fvnnhhRfyyCOP5Pnnn0+S3HTTTfnEJz6R//mf/9nhdC5f+9rX0rdv33z5y1/OAQcckD59+rzqPt/3vvfl7LPPzkUXXZQFCxbk6quvzsKFC/P//X//X9q1a7fTx93Yvi+KImeddVZ+8YtfZPz48XnXu96V3//+97n22mvz8MMP5+GHH05lZWWp/eOPP57LL788V155Zaqrq/PNb34zF154Yf7P//k/OfHEE3e6TgAA9ozFixcnSfr27Vta9uCDD+Y973lPBgwYkFtuuSWdO3fOnXfemQ996ENZs2ZNKRxeuHBhhgwZksMOOyzTpk1Lp06dctNNN2XGjBlNXue6detyxhlnZPTo0bnyyiuzYcOGbNq0KWeeeWZ+9atfZdy4cRk4cGCeeeaZXHvttRk8eHDmzZuXjh07Jkk+/vGP5zvf+U6uuOKKDBs2LE888URGjBiR1atXv+a+6+vrM3To0Pz973/PpEmT0rdv3/z0pz/Nhz70odd87V/+8peceuqpede73pVvf/vbOfDAA/O3v/0t9913X9atW5fu3bvnvvvuy3ve855ceOGFpelctoTyW4wYMSLnnHNOLrroorz00kuvus/HHnssY8eOTW1tbWpqavK9730vl156adatW5crrrjiNWve2s7c22ztqaeeysCBA3PwwQfna1/7Wrp165Y77rgjF1xwQZ577rmMGzeuQfvPfvazOeGEE/LNb34zq1atymc+85mcfvrpWbRoUdq0adOoWgG2JoAH9hnr1q3LhAkTSqOqhwwZknnz5mXGjBk7DOBf97rXlQLnt7zlLTv1tcUpU6aU/n/Tpk1517velW7duuWjH/1ovvKVr6RLly47XfMLL7yQL37xi3nf+96Xb37zm6XlRxxxRE444YTXDOB/85vf5GMf+1g+/vGPl5adeeaZpf9/y1vekgMPPPBVp5Tp0KFDfv7znzcIz7c3J/sWI0aMyOTJk5Mkw4cPT3V1dc4999z88Ic/zLnnnvuq9W6tsX1///335+c//3kmT56cT3/600mSYcOGpWfPnvnQhz6U73znOw36Yfny5fnNb36TXr16JUlOPPHE/OIXv8iMGTME8AAALcCW6Q9ffvnl/OY3v8nnP//5nHjiiTnjjDNKbcaMGZMjjjgis2bNStu2myOMk08+OcuXL89nP/vZnHfeedlvv/1y3XXXpSiKzJo1K9XV1Uk2D/jo169fk9e9fv36XHPNNQ2mybnzzjtz33335a677sqIESNKy4866qgcf/zxmTZtWv7lX/4lTz75ZKZPn55PfepTpWvqYcOGla6pX8v06dOzaNGi/PjHPy710/Dhw1NfX5/bbrvtVV87f/78vPzyy/nSl76Uo446qrR85MiRpf/v379/ks3T1+zo+vz888/PhAkTXrPWZPNo/UcffbS0v1NOOSXLli3Lv/3bv2XMmDGNmrpnZ+5ttlZbW5t169blwQcfTM+ePZMk733ve/PCCy9kwoQJGT16dDp37txg+3fccUfpeZs2bXL22Wdn7ty5prcBdospaIB9RkVFRU4//fQGy9761rfmmWeeadL9PProoznjjDPSrVu3tGnTJu3atct5552XjRs35umnn27Uth5++OG8/PLL21xsDxw4MIceeuhrvv5tb3tbpk2bls9//vP57W9/u0vT4JxxxhmNGrn+ylrPPvvstG3bNg8++GCj990Ys2bNSpIGXwtOkg9+8IPZf//984tf/KLB8qOPProUvieb/6Ghb9++Tf5+AABg17z97W9Pu3btUlVVlfe85z3p0qVLfvzjH5eC9j/96U958sknS9efGzZsKD3e+9735tlnny1NEfLggw9myJAhpfA92Ryg7szI8F3x/ve/v8Hz//qv/8qBBx6Y008/vUGdRx99dGpqakrTqGy5Zt7RNfVrefDBB1NVVdXgHymShiH6jhx99NFp3759PvGJT2T69On585///Jqv2Z5XHvurOeKIIxqE/cnmWletWpVHHnlkl/a/s2bNmpUhQ4aUwvctLrjggqxZs2abH419ZZ++9a1vTRL3D8BuE8AD+4xOnTqlQ4cODZZVVlbm5ZdfbrJ9LFmyJO9617vyt7/9Lf/+7/+eX/3qV5k7d26+/vWvJ9n8ldDG2DJVTE1NzTbrtrfslX7wgx/k/PPPzze/+c284x3vSNeuXXPeeedtdw7IHenevfvOF7ydutq2bZtu3bqVjqVcnn/++bRt23abr8BWVFSkpqZmm/1369Ztm21UVlY2+s8IAIDy+M53vpO5c+dm1qxZGT16dBYtWpQPf/jDpfVb5oK/4oor0q5duwaPMWPGJNn8rcdk87Xirl5TN1anTp1ywAEHNFj23HPP5YUXXkj79u23qbWurq5Bndura8s19Wt5/vnnG/wjwxY7c5xvfOMb88ADD+Tggw/OxRdfnDe+8Y154xvfmH//939/zddurTH3D6/2Z7In7h+2V2uPHj22u/9X9v+W6S3dPwC7yxQ0AI3wox/9KC+99FLuvvvuBiPUH3vssV3a3paLvO0F5nV1ddv8COkrHXTQQZk6dWqmTp2aJUuW5N57782VV16ZZcuW5b777tupGnb0Y0k7UldXl9e//vWl5xs2bMjzzz/f4IK1srJymx+/TXbvIrtbt27ZsGFD/vGPfzQI4YuiSF1dXY4//vhd3jYAAHvem9/85tIPr5500knZuHFjvvnNb+Y///M/84EPfCAHHXRQkmT8+PENpnXZ2pYpG7t167bDa+pX2t1r1e1dPx900EHp1q3bDq/Bq6qqSnVuqWt719SvpVu3btv9wdadHYDzrne9K+9617uycePGzJs3LzfccEPGjh2b6urqnHPOOTu1jcbcP7zan8mWvtgyiOqVfyZb/tFiV3Xr1i3PPvvsNsv//ve/J0np/QVQbkbAA61eY0Y2bLnY3PrHPouieM35Fnfk7W9/ezp06JDvfe97DZbPmTOn0V917NWrVy655JIMGzaswdc5m3rU9ytr/eEPf5gNGzZk8ODBpWWHHXZYfv/73zdoN2vWrLz44osNljWm74cMGZIkDeZlTJK77rorL730Umk9AAB7p8mTJ6dLly655pprsmnTprzpTW9Knz598vjjj+e4447b7mNLsH3SSSflF7/4RWnUfLJ5jvkf/OAH2+xnZ69VG+O0007L888/n40bN263zi3/ULDlmnlH19Sv5aSTTsrq1atz7733Nlje2B+bbdOmTQYMGFD6Ju+W+4emHvW9YMGCPP744w2WzZgxI1VVVTn22GOTpDTo6JV/Jq88xi317WxtQ4YMyaxZs0qB+xbf+c530qlTJ/O6A3uMEfBAq7flh5luvfXWVFVVpUOHDundu/d2vwI6bNiwtG/fPh/+8Iczbty4vPzyy7n55puzYsWKXdp3ly5dcsUVV+Tzn/98Pvaxj+WDH/xgli5dmtra2tf8GunKlStz0kknZeTIkTn88MNTVVWVuXPn5r777mswQujII4/M3XffnZtvvjn9+/fPfvvtVxpptCvuvvvutG3bNsOGDcuCBQty9dVX56ijjsrZZ59davORj3wkV199da655poMGjQoCxcuzI033tjgR46Sxvf9ySefnM985jNZtWpVTjjhhPz+97/Ptddem2OOOSYf+chHdvmYAABofl26dMn48eMzbty4zJgxI6NGjco3vvGNnHLKKTn55JNzwQUX5PWvf33+7//9v1m0aFEeeeSR/Md//EeS5HOf+1zuvffevPvd784111yTTp065etf/3peeumlbfazs9eqjXHOOefke9/7Xt773vfm0ksvzdve9ra0a9cuf/3rX/Pggw/mzDPPzPve9768+c1vzqhRozJ16tS0a9cuQ4cOzRNPPJEvf/nL20xrsz3nnXdevvrVr+a8887L9ddfnz59+uS///u/8/Of//w1X3vLLbdk1qxZOfXUU9OrV6+8/PLL+fa3v50kGTp0aJLNI/UPPfTQ/PjHP86QIUPStWvXHHTQQa/5zdwd6dGjR84444zU1tame/fuueOOOzJz5sx88YtfLP0A6/HHH583velNueKKK7Jhw4Z06dIl99xzT379619vs73G3Ntce+21+a//+q+cdNJJueaaa9K1a9d873vfy09/+tNMnjx5t/68ARrDCHig1evdu3emTp2axx9/PIMHD87xxx+fn/zkJ9tte/jhh+euu+7KihUrMmLEiHzyk5/M0Ucfna997Wu7vP/rrrsukyZNyv33358zzjgjN9xwQ2655ZbSKJkd6dChQwYMGJDvfve7Offcc3PKKafkm9/8Zj7zmc80GJF/6aWX5gMf+EA++9nP5u1vf/tuT9Vy991358knn8yIESNyzTXX5PTTT8/999+f9u3bl9p8+tOfzqc//elMmzYtp59+eu6666788Ic/zIEHHthgW43p+4qKivzoRz/KZZddlttvvz3vfe978+Uvfzkf+chHMmvWrAbfSgAAYO/0yU9+Mr169cp1112XjRs35qSTTsrvfve7HHjggRk7dmyGDh2af/mXf8kDDzxQCo2TzQM7HnjggRxwwAE5//zz84lPfCJvfetbc/XVV2+zj529Vm2MNm3a5N57781nP/vZ3H333Xnf+96Xs846K1/4whfSoUOHHHnkkaW23/rWt3LZZZdl2rRpOeOMM/LDH/4wd911V7p06fKa++nUqVNmzZqVoUOH5sorr8wHPvCB/PWvf82dd975mq89+uijs2HDhlx77bU55ZRT8pGPfCT/+Mc/cu+992b48OEN6uvUqVPOOOOMHH/88amtrd2lPtmyzylTpuQrX/lKzjzzzPzmN7/JlClTMm7cuFKbNm3a5Cc/+UkOP/zwXHTRRTnvvPNSWVmZG2+8cZvtNebe5k1velPmzJmTN73pTbn44otz1lln5Yknnsjtt9+eT3/607t8TACNVVEURdHcRQAAAAA0tWnTpuWjH/1oFi9evMujuAFgdxgBDwAAAAAAZSCABwAAAACAMjAFDQAAAAAAlIER8AAAAAAAUAYCeAAAAAAAKAMBPAAAAAAAlEHb5i5gV2zatCl///vfU1VVlYqKiuYuBwCAvURRFFm9enV69OiR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0CH9+/fPr371q1dtP3v27PTv3z8dOnTIG97whtxyyy3btLnrrrvylre8JZWVlXnLW96Se+65p9H7LYoitbW16dGjRzp27JjBgwdnwYIFDdqsXbs2n/zkJ3PQQQdl//33zxlnnJG//vWvu9ALO6cl9tX69evzmc98JkceeWT233//9OjRI+edd17+/ve/N9jG4MGDU1FR0eBxzjnn7GJPvLaW2FdJcsEFF2zTD29/+9sbtPG+2uyV/bTl8aUvfanUpjW8rx566KGcfvrp6dGjRyoqKvKjH/1om204X232Wn3lfPW/duZ95Xy12c70lfPVZpMmTcrxxx+fqqqqHHzwwTnrrLPy1FNPNWjTEs9XNJ+Weg3Skt+nLbHPWurn687Wvz2t+d5gZ2t/pdZ8j9CY+l+pNd8vbNES+8x5bd+6h9haS+23lnxua/X3FcU+4M477yzatWtX3HbbbcXChQuLSy+9tNh///2LZ555Zrvt//znPxedOnUqLr300mLhwoXFbbfdVrRr1674z//8z1KbOXPmFG3atCkmTpxYLFq0qJg4cWLRtm3b4re//W2j9vuFL3yhqKqqKu66667iD3/4Q/GhD32o6N69e7Fq1apSm4suuqh4/etfX8ycObN45JFHipNOOqk46qijig0bNrSavnrhhReKoUOHFj/4wQ+KJ598snj44YeLAQMGFP37929Qz6BBg4qPf/zjxbPPPlt6vPDCC03eTztT8yvtyffV+eefX7znPe9p0A/PP/98g3q8rzbbuo+effbZ4tvf/nZRUVFR/M///E+pTWt4X/33f/93cdVVVxV33XVXkaS45557ttmX89Vmr9VXzleNe185X222M33lfLXZySefXNx+++3FE088UTz22GPFqaeeWvTq1at48cUXS21a2vmK5tOSr0Fa6vu0pfZZS/x83VpL7beiaHmftY2pfWut+R5hay35WsV5be+/b9haS+23omi557WiaNn91lLPbe4rimKfCODf9ra3FRdddFGDZYcffnhx5ZVXbrf9uHHjisMPP7zBstGjRxdvf/vbS8/PPvvs4j3veU+DNieffHJxzjnn7PR+N23aVNTU1BRf+MIXSutffvnlonPnzsUtt9xSFMXmE3K7du2KO++8s9Tmb3/7W7HffvsV991332see2O11L7ant/97ndFkgZ/IQcNGlRceumlO3xNU2rJfXX++ecXZ5555g5r977a8fvqzDPPLN797nc3WNYa3ldb296HtfPVzvfV9rTW89XWXu3i2fmqoZ19XzlfbbZs2bIiSTF79uyiKFrm+Yrm01KvQVry+7Sl9tn2NPfn69Zacr+1tM/aLVpyn71Sc3/mbq0lfP7uLfcLW7TUPtse57WG9pZ7iK215H57pZZybmsJfVYUzXtfsddPQbNu3brMnz8/w4cPb7B8+PDhmTNnznZf8/DDD2/T/uSTT868efOyfv36V22zZZs7s9/Fixenrq6uQZvKysoMGjSo1Gb+/PlZv359gzY9evRIv379dlj/rmrJfbU9K1euTEVFRQ488MAGy7/3ve/loIMOyhFHHJErrrgiq1ev3vFB76K9oa9++ctf5uCDD07fvn3z8Y9/PMuWLSut877a/n6fe+65/PSnP82FF164zbp9+X21M5yvdq/+1ni+aozWfr7aFc5X/2vlypVJkq5duyZpeecrmk9LvgZpqe/Tltxn29Ocn69b2xv6raV81m6xN/TZFs39mbu1lvT5+0rOa3v/fcPW9oZ+a2nntWTv6LctWsq5rSX1WXPeV7Td6ZYt1PLly7Nx48ZUV1c3WF5dXZ26urrtvqaurm677Tds2JDly5ene/fuO2yzZZs7s98t/91em2eeeabUpn379unSpctO17+rWnJfvdLLL7+cK6+8MiNHjswBBxxQWn7uueemd+/eqampyRNPPJHx48fn8ccfz8yZM3euE3ZSS++rU045JR/84Adz6KGHZvHixbn66qvz7ne/O/Pnz09lZaX31Q72O3369FRVVWXEiBENlu/r76ud4Xy16/W31vPVznK+2jXOV5sVRZHLLrss73znO9OvX7/Sfra87pXbaY7zFc2nJV+DtNT3aUvus1dq7s/XrbX0fmtJn7VbtPQ+21pzf+ZuraV8/u5oP1te98rttMbz2q5wXtt5LfG8lrT8fttaSzm3tZQ+a+77ir0+gN+ioqKiwfOiKLZZ9lrtX7l8Z7bZVG1eaWfa7KqW3FfJ5h8qOeecc7Jp06bcdNNNDdZ9/OMfL/1/v3790qdPnxx33HF55JFHcuyxx+7wGHZVS+2rD33oQ6X/79evX4477rgceuih+elPf7rNybUx9e+OltpXW/v2t7+dc889Nx06dGiwvLW8r8pR2+7sqxz17Mm+Spyvdobz1a5xvtrskksuye9///v8+te/3u3adrYNe5+WfA3SUt+nLbnPkpb1+bq1ltpvLfGzdouW2mdbaymfuVtr7s/fpqxtd/bVGC25zxLntX3hHmJrLbXfttbSzm3N3WfNfV+x109Bc9BBB6VNmzbb/KvDsmXLtvkXjC1qamq2275t27bp1q3bq7bZss2d2W9NTU2SvGabdevWZcWKFTtd/65qyX21xfr163P22Wdn8eLFmTlzZoN/Fd6eY489Nu3atcsf//jHV23XWHtDX22te/fuOfTQQ0v94H217X5/9atf5amnnsrHPvax1zymfe19tTOcrxpff2s/X+2q1ni+aiznq80++clP5t57782DDz6YQw45pMF+kpZzvqL5tORrkJb6Pm3JfbZFS/l83dre0G9ba87P2i32lj5rCZ+5W2sJn7874ry29983bG1v6LettYTzWrL39FtLOre1hD5rCfcVe30A3759+/Tv33+br0rMnDkzAwcO3O5r3vGOd2zT/v77789xxx2Xdu3avWqbLdvcmf1u+UrH1m3WrVuX2bNnl9r0798/7dq1a9Dm2WefzRNPPLHD+ndVS+6r5H8/lP74xz/mgQceKP2lejULFizI+vXr071799ds2xgtva9e6fnnn8/SpUtL/eB9te1+v/Wtb6V///456qijXvOY9rX31c5wvmpc/c5Xu641nq8aq7Wfr4qiyCWXXJK77747s2bNSu/evRu0b2nnK5pPS74Gaanv05bcZ0nL+nzdWkvvt1dqzs/aLfaWPmsJn7lba8nXKs5re/99w9Zaer+9Uks4ryV7T7+1pHOb+4r/LWavd+eddxbt2rUrvvWtbxULFy4sxo4dW+y///7FX/7yl6IoiuLKK68sPvKRj5Ta//nPfy46depUfOpTnyoWLlxYfOtb3yratWtX/Od//mepzW9+85uiTZs2xRe+8IVi0aJFxRe+8IWibdu2xW9/+9ud3m9RFMUXvvCFonPnzsXdd99d/OEPfyg+/OEPF927dy9WrVpVanPRRRcVhxxySPHAAw8UjzzySPHud7+7OOqoo4oNGza0mr5av359ccYZZxSHHHJI8dhjjxXPPvts6bF27dqiKIriT3/6UzFhwoRi7ty5xeLFi4uf/vSnxeGHH14cc8wxraqvVq9eXVx++eXFnDlzisWLFxcPPvhg8Y53vKN4/etf7321nb+DRVEUK1euLDp16lTcfPPN29TeWt5Xq1evLh599NHi0UcfLZIUU6ZMKR599NHimWeeKbVxvtq5vnK+2vm+cr5q3N/BonC+Koqi+Jd/+Zeic+fOxS9/+csGf7/WrFlTatPSzlc0n5Z8DdJS36cttc9a4ufr3tBvLfGztqX32RYt6TN3ay35WsV5be+/b9gb+q0ln9dacr9t0RLPbe4rimKfCOCLoii+/vWvF4ceemjRvn374thjjy1mz55dWnf++ecXgwYNatD+l7/8ZXHMMccU7du3Lw477LDtvjH/4z/+o3jTm95UtGvXrjj88MOLu+66q1H7LYqi2LRpU3HttdcWNTU1RWVlZXHiiScWf/jDHxq0qa+vLy655JKia9euRceOHYvTTjutWLJkyW70xqtriX21ePHiIsl2Hw8++GBRFEWxZMmS4sQTTyy6du1atG/fvnjjG99Y/Ou//mvx/PPPN03HbEdL7Ks1a9YUw4cPL173utcV7dq1K3r16lWcf/7527xnvK/+1ze+8Y2iY8eOxQsvvLDNutbyvnrwwQe3+/fr/PPPL7VxvtrstfrK+ep/vVZfOV/9r535O1gUzldFUezw79ftt99eatMSz1c0n5Z6DdKS36ctsc9a6ufrztbv3mD7WmKfbdHSPnO31lKvVZzX9o37hq21xH5r6ee1omiZ/bZFSz23tfb7ior/VxAAAAAAANCE9vo54AEAAAAAoCUSwAMAAAAAQBkI4AEAAAAAoAwE8AAAAAAAUAYCeAAAAAAAKAMBPAAAAAAAlIEAHgAAAAAAykAADwAAAAAAZSCABwAAAACAMhDAAwAAAABAGQjgAQAAAACgDP5/Z7Rf8h6lGGIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } ], - "text/plain": [ - " age_cat ot_val\n", - "0 0 0.000578\n", - "1 1 0.000313\n", - "2 2 0.001800" + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "# Drawing both of them\n", + "figure, axis = plt.subplots(1, 2)\n", + "figure.set_figheight(4)\n", + "figure.set_figwidth(15)\n", + "figure.tight_layout(w_pad = 5)\n", + "\n", + "def draw(y, id):\n", + " axis[id].hist(y, color='lightgreen', ec='black', bins=10)\n", + "\n", + "axis[0].title.set_text(\"Initial distribution\")\n", + "axis[1].title.set_text(\"Required distribution\")\n", + "draw(a, 0)\n", + "draw(b, 1)\n", + "\n", + "plt.show()" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "bs2 = pd.DataFrame({\"age_cat\": ot_val2.keys(), \"ot_val\": ot_val2.values()})\n", - "display(bs2)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Adult Dataset" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us consider the Adult Dataset. It has two protected categories: `sex` and `race`." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_adult\n", - "\n", - "import numpy as np\n", - "import pandas as pd" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "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", - "
racesexAge (decade)=10Age (decade)=20Age (decade)=30Age (decade)=40Age (decade)=50Age (decade)=60Age (decade)=>=70Education Years=6Education Years=7Education Years=8Education Years=9Education Years=10Education Years=11Education Years=12Education Years=<6Education Years=>12Income Binary
00.01.00.01.00.00.00.00.00.00.01.00.00.00.00.00.00.00.00.0
11.01.00.00.01.00.00.00.00.00.00.00.01.00.00.00.00.00.00.0
21.01.00.01.00.00.00.00.00.00.00.00.00.00.00.01.00.00.01.0
30.01.00.00.00.01.00.00.00.00.00.00.00.01.00.00.00.00.01.0
41.00.01.00.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.0
\n", - "
" + "cell_type": "markdown", + "metadata": { + "id": "8cjTSciaDCXk" + }, + "source": [ + "In this case the Wasserstein distance tends to zero as the size of the samples increase." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "bL9oZwWPDCXk", + "outputId": "3d78349e-b7cc-4d27-c86c-47fbcf79a921" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wasserstein distance is: 2.003382269162742e-05.\n" + ] + } ], - "text/plain": [ - " race sex Age (decade)=10 Age (decade)=20 Age (decade)=30 \\\n", - "0 0.0 1.0 0.0 1.0 0.0 \n", - "1 1.0 1.0 0.0 0.0 1.0 \n", - "2 1.0 1.0 0.0 1.0 0.0 \n", - "3 0.0 1.0 0.0 0.0 0.0 \n", - "4 1.0 0.0 1.0 0.0 0.0 \n", - "\n", - " Age (decade)=40 Age (decade)=50 Age (decade)=60 Age (decade)=>=70 \\\n", - "0 0.0 0.0 0.0 0.0 \n", - "1 0.0 0.0 0.0 0.0 \n", - "2 0.0 0.0 0.0 0.0 \n", - "3 1.0 0.0 0.0 0.0 \n", - "4 0.0 0.0 0.0 0.0 \n", - "\n", - " Education Years=6 Education Years=7 Education Years=8 Education Years=9 \\\n", - "0 0.0 1.0 0.0 0.0 \n", - "1 0.0 0.0 0.0 1.0 \n", - "2 0.0 0.0 0.0 0.0 \n", - "3 0.0 0.0 0.0 0.0 \n", - "4 0.0 0.0 0.0 0.0 \n", - "\n", - " Education Years=10 Education Years=11 Education Years=12 \\\n", - "0 0.0 0.0 0.0 \n", - "1 0.0 0.0 0.0 \n", - "2 0.0 0.0 1.0 \n", - "3 1.0 0.0 0.0 \n", - "4 1.0 0.0 0.0 \n", - "\n", - " Education Years=<6 Education Years=>12 Income Binary \n", - "0 0.0 0.0 0.0 \n", - "1 0.0 0.0 0.0 \n", - "2 0.0 0.0 1.0 \n", - "3 0.0 0.0 1.0 \n", - "4 0.0 0.0 0.0 " + "source": [ + "import pandas as pd\n", + "from aif360.sklearn.metrics import ot_distance\n", + "\n", + "_a = pd.Series(a)\n", + "_b = pd.Series(b)\n", + "c = ot_distance(y_true=_a, y_pred=_b, mode='continuous')\n", + "\n", + "print(\"Wasserstein distance is: \", c, \".\", sep=\"\")" ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_raw = load_preproc_data_adult()\n", - "data = data_raw.convert_to_dataframe()[0]\n", - "data.head()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Measuring bias with respect to `sex`" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "clf = LogisticRegression(solver='lbfgs', max_iter=10000, C=1.0, penalty='l2')\n", - "X = data.drop('Income Binary',axis=1)\n", - "y = data['Income Binary']\n", - "\n", - "clf.fit(X, y)\n", - "preds = pd.Series(clf.predict_proba(X)[:,0])\n", - "\n", - "ot_val1 = ot_distance(y_true=y, y_pred=preds, prot_attr=data['sex'])" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OBbhxn09DCXk" + }, + "source": [ + "### 3. Permutations\n", + "\n", + "Another example that shows clearly what the permutations in the first formula refer to is the one presented below." + ] + }, { - "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", - "
sexot_val
00.00.000503
11.00.000067
\n", - "
" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "B1CTcaWsDCXk" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "# Initial distribution\n", + "a = np.array([0., 0.1, 0.1, 0.1, 0.08, 0., 0.1, 0.1, 0.08, 0.08, 0., 0.1, 0.08, 0.08, 0.08, 0.])\n", + "# Required distribution\n", + "b = np.array([0., 0.08, 0.08, 0.08, 0.1, 0., 0.08, 0.08, 0.1, 0.1, 0., 0.08, 0.1, 0.1, 0.1, 0.])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "mdhX4s8pDCXl", + "outputId": "763d21bc-502e-4442-eea5-63ee36f41d3e" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABKcAAAGUCAYAAADgVkHZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABEFElEQVR4nO3deXxTVf7/8XftkoBCgVa6MG0pDEsVWSwqW0FGKQKCCwjICC6gdsAvtBUFBCw4AiPDMB1GoF82GR9uOIKKIyJFlsGhLqxuKKMCRaRCcSlr1/v7g2/zMySFpqScNnk9H488tCfn5p6Te0g+j3ducgMsy7IEAAAAAAAAGHCZ6QEAAAAAAADAfxFOAQAAAAAAwBjCKQAAAAAAABhDOAUAAAAAAABjCKcAAAAAAABgDOEUAAAAAAAAjCGcAgAAAAAAgDGEUwAAAAAAADCGcAoAAAAAAADGEE4BNdjy5csVEBCgbdu2VWn7gIAATZs2zfH3F198oWnTpmn//v0ufe+77z41bdq0Svu5mG0l6cYbb9SNN97o+Hv//v0KCAjQ8uXLPXqcl156SZmZmR5t425f06ZNU0BAgPLz8z16rPOpruceAAB4R3ndVX4LCgpSVFSUhg4dqv/+97+mh+ewadMmBQQEaNOmTZdkf02bNtV9991XpW3PV2d54tSpU5o2bZrHc3a3r6ZNm+rWW2/16HEu5Hw16Ln1OAD3CKcAH5aTk6NRo0Y5/v7iiy80ffp0twHJ1KlT9frrr1/C0VUsKipKOTk56tevn0fbVSWcquq+PFVbnnsAAPzdc889p5ycHK1fv16PPPKIVq9erW7duumnn34yPTRJ0rXXXqucnBxde+21podSJaNGjVJOTo5H25w6dUrTp0/3OJyqyr6q4nw16Ln1OAD3gkwPAED16dSpU6X7Nm/evBpH4hmbzebR2KuitLRUJSUll2RfF1KTnnsAAPxdmzZt1LFjR0lnz+4uLS1VRkaG3njjDd1///2GRyfVr1+/UrXLqVOnVLdu3UswIs/85je/0W9+85tq3Uf53C/Fvi7EdJ0J1BacOQXUMvfdd5+uuOIKff311+rbt6+uuOIKxcTE6NFHH1VhYaFT31+fRrx8+XLdddddkqSePXs6TlkvP83a3VfL5s+fr+7du6tx48a6/PLLdc0112j27NkqLi6u0tgty9Ls2bMVFxcnu92ua6+9Vu+8845LP3engB89elQPPfSQYmJiZLPZdOWVV6pr165av369pLPF49tvv60DBw44nZL/68ebPXu2nn76acXHx8tms2njxo3n/QrhwYMHdeedd6p+/foKDQ3VPffco6NHjzr1qehU7V+fAl+V5/7MmTOaNGmS4uPjFRISoiZNmmjMmDH6+eefXfZz6623au3atbr22mtVp04dtW7dWsuWLavgKAAAAE+UB1U//PCDU/u2bds0YMAANWrUSHa7XR06dNCrr77qsv0HH3ygrl27ym63Kzo6WpMmTdLixYsVEBDgdEZ1ZWoKyf3X+srrw08//VTJycmqV6+ebrrpJklSUVGRnn76abVu3dpRQ91///0uNU1xcbEef/xxRUZGqm7duurWrZs++uijSj9P33//vQYPHqx69eopNDRUQ4YMUV5enks/d1+127Bhg2688UaFhYWpTp06io2N1cCBA3Xq1Cnt379fV155pSRp+vTpjjqq/Dkpf7wdO3Zo0KBBatiwoeODv/N9hfD1119X27ZtZbfb1axZM82bN8/p/vKveZ571vu5z//5alDJ/XH97LPPdNttt6lhw4ay2+1q3769/vGPf7jdz8svv6zJkycrOjpa9evX180336yvvvrK7ZyA2owzp4BaqLi4WAMGDNDIkSP16KOP6t///rf++Mc/KjQ0VE8++aTbbfr166eZM2fqiSee0Pz58x2ngp/vrJ1vvvlGw4YNcwQku3fv1owZM/Tll19WKfyYPn26pk+frpEjR2rQoEE6ePCgHnzwQZWWlqpVq1bn3Xb48OHasWOHZsyYoZYtW+rnn3/Wjh07dOzYMUnSggUL9NBDD+mbb76p8Cty8+bNU8uWLTVnzhzVr19fLVq0OO8+77jjDg0ePFgpKSn6/PPPNXXqVH3xxRf68MMPFRwcXOl5e/rcW5al22+/Xe+9954mTZqkpKQkffLJJ8rIyFBOTo5ycnJks9kc/Xfv3q1HH31UEydOVEREhJYsWaKRI0fqt7/9rbp3717pcQIAAFf79u2TJLVs2dLRtnHjRt1yyy264YYblJWVpdDQUL3yyisaMmSITp065QhOvvjiC910001q2rSpli9frrp162rBggV66aWXvD7OoqIiDRgwQA8//LAmTpyokpISlZWV6bbbbtOWLVv0+OOPq0uXLjpw4IAyMjJ04403atu2bapTp44k6cEHH9Tzzz+v8ePHq1evXvrss89055136vjx4xfc9+nTp3XzzTfr+++/16xZs9SyZUu9/fbbGjJkyAW33b9/v/r166ekpCQtW7ZMDRo00KFDh7R27VoVFRUpKipKa9eu1S233KKRI0c6viJXHliVu/POOzV06FClpKTo5MmT593nrl27lJqaqmnTpikyMlIvvviixo0bp6KiIo0fP/6CY/61ytSgv/bVV1+pS5cuaty4sebNm6ewsDC98MILuu+++/TDDz/o8ccfd+r/xBNPqGvXrlqyZIkKCgo0YcIE9e/fX3v27FFgYKBHYwVqNAtAjfXcc89ZkqyPP/7Y0XbvvfdakqxXX33VqW/fvn2tVq1aObVJsjIyMhx///Of/7QkWRs3bnTZ17333mvFxcVVOJbS0lKruLjYev75563AwEDrxx9/rPS2lmVZP/30k2W326077rjDqf0///mPJcnq0aOHo23fvn2WJOu5555ztF1xxRVWamrqeffRr18/t+Mof7zmzZtbRUVFbu/79b4yMjIsSVZaWppT3xdffNGSZL3wwguOtnOf43JxcXHWvffe6/jbk+d+7dq1liRr9uzZTv1WrFhhSbIWLVrktB+73W4dOHDA0Xb69GmrUaNG1sMPP+yyLwAA4F553fXBBx9YxcXF1vHjx621a9dakZGRVvfu3a3i4mJH39atW1sdOnRwarMsy7r11lutqKgoq7S01LIsyxoyZIhVp04dKy8vz9GnpKTEat26tSXJ2rdvn6O9sjXFxo0bXWqK8vpw2bJlTtu+/PLLliRr5cqVTu0ff/yxJclasGCBZVmWtWfPnvPWPr/evzsLFy60JFlvvvmmU/uDDz5YYZ1V7rXXXrMkWbt27arw8Y8ePVrh81P+eE8++WSF9/1aXFycFRAQ4LK/Xr16WfXr17dOnjxpWdb/Xw+/PkaW5f75r6gGtSzX4zp06FDLZrNZubm5Tv369Olj1a1b1/r555+d9tO3b1+nfq+++qolycrJyXG7P6C24mt9QC0UEBCg/v37O7W1bdtWBw4c8Op+du7cqQEDBigsLEyBgYEKDg7WiBEjVFpaqr1793r0WDk5OTpz5ox+//vfO7V36dJFcXFxF9z++uuv1/Lly/X000/rgw8+qNJXCwcMGODRGU/njnXw4MEKCgrSxo0bPd63JzZs2CBJLlfGueuuu3T55Zfrvffec2pv3769YmNjHX/b7Xa1bNnS6+sBAAB/0KlTJwUHB6tevXq65ZZb1LBhQ7355psKCjr7pZOvv/5aX375paNOKCkpcdz69u2rw4cPO752tXHjRt10002KiIhwPH5gYGClziiqioEDBzr9/a9//UsNGjRQ//79ncbZvn17RUZGOr6aVl7bVFT7XMjGjRtVr149DRgwwKl92LBhF9y2ffv2CgkJ0UMPPaR//OMf+vbbby+4jTvnzv18rr76arVr186pbdiwYSooKNCOHTuqtP/K2rBhg2666SbFxMQ4td933306deqUyw+4n/uctm3bVpKo8+BzCKeAWqhu3bqy2+1ObTabTWfOnPHaPnJzc5WUlKRDhw7pb3/7m7Zs2aKPP/5Y8+fPl3T29G1PlH/9LjIy0uU+d23nWrFihe69914tWbJEnTt3VqNGjTRixAi3v2VQkaioqMoP2M24goKCFBYW5phLdTl27JiCgoJcTlcPCAhQZGSky/7DwsJcHsNms3l8jAAAgPT888/r448/1oYNG/Twww9rz549uvvuux33l//21Pjx4xUcHOx0Gz16tCQpPz9f0tn39KrWPp6qW7eu6tev79T2ww8/6Oeff1ZISIjLWPPy8pzG6W5c5bXPhRw7dswpgCtXmXk2b95c69evV+PGjTVmzBg1b95czZs319/+9rcLbvtrntR55zsml6LOczfW6Ohot/s/9/kv/2kH6jz4Gn5zCoBbb7zxhk6ePKlVq1Y5ndm0a9euKj1e+RuruzApLy/P5QfBzxUeHq7MzExlZmYqNzdXq1ev1sSJE3XkyBGtXbu2UmOo6AcxK5KXl6cmTZo4/i4pKdGxY8ecigSbzebyQ/TSxRU2YWFhKikp0dGjR50CKsuylJeXp+uuu67Kjw0AAM4vISHB8SPoPXv2VGlpqZYsWaLXXntNgwYNUnh4uCRp0qRJuvPOO90+RvlvaYaFhVVY+5zrYmsKd3VOeHi4wsLCKqyV6tWr5xhn+bjc1T4XEhYW5vbH0yv7IWJSUpKSkpJUWlqqbdu26e9//7tSU1MVERGhoUOHVuoxPKnzzndMyp+L8g+Czz0m5YFeVYWFhenw4cMu7d9//70kOdYX4G84cwrwI5580lL+Bv/rH962LEuLFy+u0r47deoku92uF1980al969atHp+WHBsbq0ceeUS9evVyOvXa22cLnTvWV199VSUlJbrxxhsdbU2bNtUnn3zi1G/Dhg06ceKEU5snz3351XVeeOEFp/aVK1fq5MmTjvsBAED1mz17tho2bKgnn3xSZWVlatWqlVq0aKHdu3erY8eObm/loU/Pnj313nvvOV3pr7S0VCtWrHDZT2VrCk/ceuutOnbsmEpLS92OszxEK69tKqp9LqRnz546fvy4Vq9e7dTu6Q+/BwYG6oYbbnCcqV9e53n7bKHPP/9cu3fvdmp76aWXVK9ePceFa8o/OD33mJw7x/LxVXZsN910kzZs2OAIo8o9//zzqlu3rjp16lTZaQA+hTOnAD/Spk0bSdKiRYtUr1492e12xcfHuz1du1evXgoJCdHdd9+txx9/XGfOnNHChQv1008/VWnfDRs21Pjx4/X0009r1KhRuuuuu3Tw4EHHVVLO55dfflHPnj01bNgwtW7dWvXq1dPHH3+stWvXOn1iec0112jVqlVauHChEhMTddlllzk++ayKVatWKSgoSL169XJcra9du3YaPHiwo8/w4cM1depUPfnkk+rRo4e++OILPfvsswoNDXV6LE+f+969e2vChAkqKChQ165dHVfr69Chg4YPH17lOQEAAM80bNhQkyZN0uOPP66XXnpJ99xzj/73f/9Xffr0Ue/evXXfffepSZMm+vHHH7Vnzx7t2LFD//znPyVJU6ZM0erVq/W73/1OTz75pOrWrav58+e7vZpcZWsKTwwdOlQvvvii+vbtq3Hjxun6669XcHCwvvvuO23cuFG33Xab7rjjDiUkJOiee+5RZmamgoODdfPNN+uzzz5zXOH4QkaMGKG//vWvGjFihGbMmKEWLVpozZo1evfddy+4bVZWljZs2KB+/fopNjZWZ86ccVwV+uabb5Z09gyvuLg4vfnmm7rpppvUqFEjhYeHX/DM+4pER0drwIABmjZtmqKiovTCCy8oOztbzzzzjOrWrStJuu6669SqVSuNHz9eJSUlatiwoV5//XW9//77Lo/nSQ2akZGhf/3rX+rZs6eefPJJNWrUSC+++KLefvttzZ49+6KON1Crmf5FdgAVq+hqfZdffrlLX3dXI5Gbq5pkZmZa8fHxVmBgoNPVU9xdce+tt96y2rVrZ9ntdqtJkybWY489Zr3zzjturxBzoav1WZZllZWVWbNmzbJiYmKs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H35YAQEByszMvGTj85bKzHPPnj0aMGCAQkNDVa9ePXXq1Em5ubmXfrDwKdRrvol6rfbz1VpNol6TqNeo186PcMqLVqxYodTUVE2ePFk7d+5UUlKS+vTp41NF9ObNmzVmzBh98MEHys7OVklJiZKTk3Xy5EnTQ6s2H3/8sRYtWqS2bduaHkq1+Omnn9S1a1cFBwfrnXfe0RdffKG//OUvatCggemhed0zzzyjrKwsPfvss9qzZ49mz56tP//5z/r73/9uemgX5eTJk2rXrp2effZZt/fPnj1bc+fO1bPPPquPP/5YkZGR6tWrl44fP36JR3pxzjfPU6dOaceOHZo6dap27NihVatWae/evRowYICBkV68Cx3Tcm+88YY+/PBDRUdHX6KRedeF5vnNN9+oW7duat26tTZt2qTdu3dr6tSpstvtl3ik8CXUa76Jes03+GqtJlGvSdRr1GsXYMFrrr/+eislJcWprXXr1tbEiRMNjaj6HTlyxJJkbd682fRQqsXx48etFi1aWNnZ2VaPHj2scePGmR6S102YMMHq1q2b6WFcEv369bMeeOABp7Y777zTuueeewyNyPskWa+//rrj77KyMisyMtL605/+5Gg7c+aMFRoaamVlZRkYoXecO093PvroI0uSdeDAgUszqGpS0Vy/++47q0mTJtZnn31mxcXFWX/9618v+di8yd08hwwZ4lP/PlEzUK/5Huo13+EPtZplUa/9GvVa7VKd9RpnTnlJUVGRtm/fruTkZKf25ORkbd261dCoqt8vv/wiSWrUqJHhkVSPMWPGqF+/frr55ptND6XarF69Wh07dtRdd92lxo0bq0OHDlq8eLHpYVWLbt266b333tPevXslSbt379b777+vvn37Gh5Z9dm3b5/y8vKcXptsNpt69Ojh069N0tnXp4CAAJ/7VFmSysrKNHz4cD322GO6+uqrTQ+nWpSVlentt99Wy5Yt1bt3bzVu3Fg33HDDeU+ZBy6Eeo16rbbyl3rNH2s1iXqNeq328ma9RjjlJfn5+SotLVVERIRTe0REhPLy8gyNqnpZlqX09HR169ZNbdq0MT0cr3vllVe0fft2zZo1y/RQqtW3336rhQsXqkWLFnr33XeVkpKisWPH6vnnnzc9NK+bMGGC7r77brVu3VrBwcHq0KGDUlNTdffdd5seWrUpf/3xp9cmSTpz5owmTpyoYcOGqX79+qaH43XPPPOMgoKCNHbsWNNDqTZHjhzRiRMn9Kc//Um33HKL1q1bpzvuuEN33nmnNm/ebHp4qKWo16jXait/qdf8sVaTqNeo12ovb9ZrQdU0Rr8VEBDg9LdlWS5tvuKRRx7RJ598ovfff9/0ULzu4MGDGjdunNatW+fzv21SVlamjh07aubMmZKkDh066PPPP9fChQs1YsQIw6PzrhUrVuiFF17QSy+9pKuvvlq7du1SamqqoqOjde+995oeXrXyp9em4uJiDR06VGVlZVqwYIHp4Xjd9u3b9be//U07duzw2WMoyfHjt7fddpvS0tIkSe3bt9fWrVuVlZWlHj16mBweajl/ek2kXvMN/lKv+XOtJvnXaxP1mm/wZr3GmVNeEh4ersDAQJdk+8iRIy4JuC/4n//5H61evVobN27Ub37zG9PD8brt27fryJEjSkxMVFBQkIKCgrR582bNmzdPQUFBKi0tNT1Er4mKitJVV13l1JaQkOBTPwxb7rHHHtPEiRM1dOhQXXPNNRo+fLjS0tJ8+tPWyMhISfKb16bi4mINHjxY+/btU3Z2tk9+CrdlyxYdOXJEsbGxjtenAwcO6NFHH1XTpk1ND89rwsPDFRQU5DevT7g0qNd8C/Wa770e+mOtJlGvUa/VXt6s1winvCQkJESJiYnKzs52as/OzlaXLl0Mjcr7LMvSI488olWrVmnDhg2Kj483PaRqcdNNN+nTTz/Vrl27HLeOHTvq97//vXbt2qXAwEDTQ/Sarl27ulxeeu/evYqLizM0oupz6tQpXXaZ88teYGCgT1yeuCLx8fGKjIx0em0qKirS5s2bfeq1Sfr/hc5///tfrV+/XmFhYaaHVC2GDx+uTz75xOn1KTo6Wo899pjeffdd08PzmpCQEF133XV+8/qES4N6zbdQr/ne66E/1moS9Zovol7z/PWJr/V5UXp6uoYPH66OHTuqc+fOWrRokXJzc5WSkmJ6aF4zZswYvfTSS3rzzTdVr149R7ofGhqqOnXqGB6d99SrV8/ldxkuv/xyhYWF+dzvNaSlpalLly6aOXOmBg8erI8++kiLFi3SokWLTA/N6/r3768ZM2YoNjZWV199tXbu3Km5c+fqgQceMD20i3LixAl9/fXXjr/37dunXbt2qVGjRoqNjVVqaqpmzpypFi1aqEWLFpo5c6bq1q2rYcOGGRy15843z+joaA0aNEg7duzQv/71L5WWljpenxo1aqSQkBBTw66SCx3Tcwu54OBgRUZGqlWrVpd6qBflQvN87LHHNGTIEHXv3l09e/bU2rVr9dZbb2nTpk3mBo1aj3qNeq028pd6zVdrNYl6jXqNeu2CLvp6f3Ayf/58Ky4uzgoJCbGuvfZan7tkryS3t+eee8700Kqdr16a2LIs66233rLatGlj2Ww2q3Xr1taiRYtMD6laFBQUWOPGjbNiY2Mtu91uNWvWzJo8ebJVWFhoemgXZePGjW7/Xd57772WZZ29PHFGRoYVGRlp2Ww2q3v37tann35qdtBVcL557tu3r8LXp40bN5oeuscudEzPVVsvTVyZeS5dutT67W9/a9ntdqtdu3bWG2+8YW7A8BnUa76Leq1289VazbKo16jXqNcuJMCyLMuzOAsAAAAAAADwDn5zCgAAAAAAAMYQTgEAAAAAAMAYwikAAAAAAAAYQzgFAAAAAAAAYwinAAAAAAAAYAzhFAAAAAAAAIwhnAIAAAAAAIAxhFMAAAAAAAAwhnAKAAAAAAAAxhBOAQAAAAAAwBjCKQAAAAAAABjz/wAcfxIVwbXtywAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } ], - "text/plain": [ - " sex ot_val\n", - "0 0.0 0.000503\n", - "1 1.0 0.000067" + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "# Drawing both of them\n", + "figure, axis = plt.subplots(1, 2)\n", + "figure.set_figheight(4)\n", + "figure.set_figwidth(12)\n", + "figure.tight_layout(w_pad = 5)\n", + "\n", + "def draw(y, id):\n", + " x = np.array(range(0, np.size(y)))\n", + " axis[id].bar(x, y, color=\"lightgreen\", ec='black')\n", + " axis[id].scatter(x, y, color=\"orange\")\n", + "\n", + "axis[0].title.set_text(\"Initial distribution\")\n", + "axis[1].title.set_text(\"Required distribution\")\n", + "draw(a, 0)\n", + "draw(b, 1)\n", + "\n", + "plt.show()" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "bs1 = pd.DataFrame({\"sex\": ot_val1.keys(), \"ot_val\": ot_val1.values()})\n", - "display(bs1)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Measuring bias with respect to `race`" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "ot_val2 = ot_distance(y_true=y, y_pred=preds, prot_attr=data['race'])" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2b8iTs6CDCXl" + }, + "source": [ + "There, since we can go from the initial distribution to the desired one just using permutations, the Wasserstein distance is zero." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "PeRPqgPyDCXl", + "outputId": "bd589c43-78e5-4232-a8bb-674d8368066c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "from aif360.sklearn.metrics import ot_distance\n", + "\n", + "_a = pd.Series(a)\n", + "_b = pd.Series(b)\n", + "c = ot_distance(_a, _b, mode='continuous')\n", + "\n", + "print(c)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "V5JjvRvJDCXl" + }, + "source": [ + "### 4. Extreme case\n", + "\n", + "One more example that is closer to our case is \"normalization\". It's an explanation of why the maximum Wasserstein distance we can get in our case is approaching 1 (with increasing the size of the sample), that is, it is normalized. We get this in the case that all our population has a value 0 of the 2-year recidivism (which is presented in the paragraph \"Compas Dataset\") and the classifier fails massively in all the cases labeling all with a 1. That would be the worst-case scenario." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "C-XRy_ZNDCXl" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "# Initial distribution\n", + "a = np.array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.001])\n", + "# Required distribution\n", + "b = np.array([0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Wr7ugRoUDCXl", + "outputId": "73b33e31-cbe6-4ab1-994c-2922c8b51be2" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABLgAAAGUCAYAAAA285u8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABVNklEQVR4nO3de1yUdd7/8TdxmNFSSlxBChDdCsxSg1ahEL1NTC076Eq1YaVW3NQqkKVopnlXpLkuax74WZrrr1La0LKNNbGUtZXa5GAnN6slMYM1rEQzOV6/P/wxd+MMyCA6Xszr+Xhcj73nO5/r+ny/w0if+8N18DIMwxAAAAAAAABgUue5ewIAAAAAAADA6aDBBQAAAAAAAFOjwQUAAAAAAABTo8EFAAAAAAAAU6PBBQAAAAAAAFOjwQUAAAAAAABTo8EFAAAAAAAAU6PBBQAAAAAAAFOjwQUAAAAAAABTo8EFeIA1a9bIy8tLu3btatP+Xl5emjdvnu31Z599pnnz5unrr792iL3nnnvUq1evNuU5nX0laejQoRo6dKjt9ddffy0vLy+tWbPGpeO88sorysrKcmkfZ7nmzZsnLy8vVVVVuXSslpypzx4AALSPprqrafPx8VHPnj11++2364svvnD39Gy2b98uLy8vbd++/azk69Wrl+6555427dtSneWKY8eOad68eS6v2VmuXr166cYbb3TpOKfSUg16cj0OwBENLgCnVFhYqClTpthef/bZZ3riiSecNlnmzJmjjRs3nsXZNa9nz54qLCzUmDFjXNqvLQ2utuZylVk+ewAAPN2LL76owsJCbd26VQ899JA2bdqk6667Tj/88IO7pyZJuvrqq1VYWKirr77a3VNpkylTpqiwsNClfY4dO6YnnnjC5QZXW3K1RUs16Mn1OABHPu6eAIBz3+DBg1sd26dPnzM4E9dYLBaX5t4WDQ0Nqq+vPyu5TuVc+uwBAPB0/fr1U3R0tKQTZ5k3NDRo7ty5ev3113Xvvfe6eXZS165dW1W7HDt2TJ07dz4LM3LNJZdcoksuueSM5mha+9nIdSrurjMBM+AMLsBD3XPPPbrgggv05ZdfavTo0brgggsUEhKihx9+WDU1NXaxvzwles2aNfrtb38rSRo2bJjt9PumU8adXSa3bNkyDRkyRD169ND555+vK6+8UgsXLlRdXV2b5m4YhhYuXKiwsDBZrVZdffXV+tvf/uYQ5+x09u+++07333+/QkJCZLFY9Ktf/UrXXnuttm7dKulEAfrWW29p3759dpcX/PJ4Cxcu1JNPPqnw8HBZLBZt27atxcsh9+/fr9tuu01du3aVv7+/7rrrLn333Xd2Mc2ddv7L0/nb8tkfP35cGRkZCg8Pl5+fny6++GI9+OCD+vHHHx3y3Hjjjdq8ebOuvvpqderUSREREVq9enUzPwUAAOCKpmbXf/7zH7vxXbt2aezYserWrZusVqsGDhyoV1991WH/999/X9dee62sVquCg4OVkZGh559/Xl5eXnZndremppCcX6LYVB9+/PHHSkhIUJcuXTR8+HBJUm1trZ588klFRETYaqh7773Xoaapq6vTo48+qqCgIHXu3FnXXXed/vnPf7b6c/r22281YcIEdenSRf7+/kpMTFRlZaVDnLPLBt99910NHTpUAQEB6tSpk0JDQzVu3DgdO3ZMX3/9tX71q19Jkp544glbHdX0mTQdr7i4WOPHj9dFF11k++NhS5dDbty4UVdddZWsVqt69+6tJUuW2L3fdMnqyWffn/z5t1SDSs5/rp988oluvvlmXXTRRbJarRowYID+/Oc/O82zbt06zZ49W8HBweratauuv/56ff75507XBJgVZ3ABHqyurk5jx47V5MmT9fDDD+vvf/+7/ud//kf+/v56/PHHne4zZswYPf3005o1a5aWLVtmO629pbOHvvrqK9155522Jsvu3bv11FNP6V//+lebGihPPPGEnnjiCU2ePFnjx4/X/v37dd9996mhoUGXX355i/smJSWpuLhYTz31lC677DL9+OOPKi4u1qFDhyRJy5cv1/3336+vvvqq2cv9lixZossuu0yLFi1S165ddemll7aY89Zbb9WECROUnJysTz/9VHPmzNFnn32mDz74QL6+vq1et6ufvWEYuuWWW/TOO+8oIyNDcXFx+uijjzR37lwVFhaqsLBQFovFFr979249/PDDmjlzpgIDA/XCCy9o8uTJ+vWvf60hQ4a0ep4AAMBRWVmZJOmyyy6zjW3btk033HCDBg0apOzsbPn7+2v9+vVKTEzUsWPHbM2Xzz77TMOHD1evXr20Zs0ade7cWcuXL9crr7zS7vOsra3V2LFj9cADD2jmzJmqr69XY2Ojbr75Zu3YsUOPPvqoYmNjtW/fPs2dO1dDhw7Vrl271KlTJ0nSfffdp7Vr12r69OkaMWKEPvnkE9122206cuTIKXP//PPPuv766/Xtt98qMzNTl112md566y0lJiaect+vv/5aY8aMUVxcnFavXq0LL7xQBw4c0ObNm1VbW6uePXtq8+bNuuGGGzR58mTb5X5NTa8mt912m26//XYlJyfrp59+ajFnaWmpUlNTNW/ePAUFBenll1/WtGnTVFtbq+nTp59yzr/Umhr0lz7//HPFxsaqR48eWrJkiQICAvTSSy/pnnvu0X/+8x89+uijdvGzZs3StddeqxdeeEHV1dWaMWOGbrrpJu3Zs0fe3t4uzRU4ZxkAOrwXX3zRkGR8+OGHtrG7777bkGS8+uqrdrGjR482Lr/8crsxScbcuXNtr//yl78Ykoxt27Y55Lr77ruNsLCwZufS0NBg1NXVGWvXrjW8vb2N77//vtX7GoZh/PDDD4bVajVuvfVWu/F//OMfhiQjPj7eNlZWVmZIMl588UXb2AUXXGCkpqa2mGPMmDFO59F0vD59+hi1tbVO3/tlrrlz5xqSjLS0NLvYl19+2ZBkvPTSS7axkz/jJmFhYcbdd99te+3KZ79582ZDkrFw4UK7uJycHEOSsXLlSrs8VqvV2Ldvn23s559/Nrp162Y88MADDrkAAIBzTXXX+++/b9TV1RlHjhwxNm/ebAQFBRlDhgwx6urqbLERERHGwIED7cYMwzBuvPFGo2fPnkZDQ4NhGIaRmJhodOrUyaisrLTF1NfXGxEREYYko6yszDbe2ppi27ZtDjVFU324evVqu33XrVtnSDJyc3Ptxj/88ENDkrF8+XLDMAxjz549LdY+v8zvzIoVKwxJxhtvvGE3ft999zVbZzV57bXXDElGaWlps8f/7rvvmv18mo73+OOPN/veL4WFhRleXl4O+UaMGGF07drV+OmnnwzD+N/vwy9/Robh/PNvrgY1DMef6+23325YLBajvLzcLm7UqFFG586djR9//NEuz+jRo+3iXn31VUOSUVhY6DQfYEZcogh4MC8vL9100012Y1dddZX27dvXrnlKSko0duxYBQQEyNvbW76+vpo4caIaGhq0d+9el45VWFio48eP63e/+53deGxsrMLCwk65/29+8xutWbNGTz75pN5///02XSY5duxYl868OnmuEyZMkI+Pj7Zt2+Zyble8++67kuTwxKLf/va3Ov/88/XOO+/YjQ8YMEChoaG211arVZdddlm7fx8AAPAEgwcPlq+vr7p06aIbbrhBF110kd544w35+Jy4iObLL7/Uv/71L1udUF9fb9tGjx6tiooK2yVk27Zt0/DhwxUYGGg7vre3d6vObGqLcePG2b3+61//qgsvvFA33XST3TwHDBigoKAg22V2TbVNc7XPqWzbtk1dunTR2LFj7cbvvPPOU+47YMAA+fn56f7779ef//xn/fvf/z7lPs6cvPaWXHHFFerfv7/d2J133qnq6moVFxe3KX9rvfvuuxo+fLhCQkLsxu+55x4dO3bM4ab4J3+mV111lSRR56FDocEFeLDOnTvLarXajVksFh0/frzdcpSXlysuLk4HDhzQn/70J+3YsUMffvihli1bJunEqeiuaLqUMCgoyOE9Z2Mny8nJ0d13360XXnhBMTEx6tatmyZOnOj03g7N6dmzZ+sn7GRePj4+CggIsK3lTDl06JB8fHwcTr338vJSUFCQQ/6AgACHY1gsFpd/RgAAQFq7dq0+/PBDvfvuu3rggQe0Z88e3XHHHbb3m+7FNX36dPn6+tptKSkpkqSqqipJJ/6b3tbax1WdO3dW165d7cb+85//6Mcff5Sfn5/DXCsrK+3m6WxeTbXPqRw6dMiuidekNevs06ePtm7dqh49eujBBx9Unz591KdPH/3pT3865b6/5Eqd19LP5GzUec7mGhwc7DT/yZ9/020qqPPQkXAPLgBn1Ouvv66ffvpJGzZssDvDqrS0tE3Ha/qPs7OGVGVlpcNN1k/WvXt3ZWVlKSsrS+Xl5dq0aZNmzpypgwcPavPmza2aQ3M3GW1OZWWlLr74Ytvr+vp6HTp0yK7QsFgsDjf3l06vOAoICFB9fb2+++47uyaXYRiqrKzUNddc0+ZjAwCAlkVGRtpuLD9s2DA1NDTohRde0Guvvabx48ere/fukqSMjAzddtttTo/RdG/RgICAZmufk51uTeGszunevbsCAgKarZW6dOlim2fTvJzVPqcSEBDg9Ib0rf1DZFxcnOLi4tTQ0KBdu3bpueeeU2pqqgIDA3X77be36hiu1Hkt/UyaPoumPyaf/DNpagq2VUBAgCoqKhzGv/32W0myfb8AT8IZXABc5spffJqKhF/ezNwwDD3//PNtyj148GBZrVa9/PLLduM7d+50+RTr0NBQPfTQQxoxYoTdaeTtfdbSyXN99dVXVV9fr6FDh9rGevXqpY8++sgu7t1339XRo0ftxlz57JueevTSSy/Zjefm5uqnn36yvQ8AAM68hQsX6qKLLtLjjz+uxsZGXX755br00ku1e/duRUdHO92aGkfDhg3TO++8Y/cExoaGBuXk5DjkaW1N4Yobb7xRhw4dUkNDg9N5NjXimmqb5mqfUxk2bJiOHDmiTZs22Y27ejN9b29vDRo0yHbFQFOd195nLX366afavXu33dgrr7yiLl262B4G1PTH15N/JievsWl+rZ3b8OHD9e6779oaWk3Wrl2rzp07a/Dgwa1dBtBhcAYXAJf169dPkrRy5Up16dJFVqtV4eHhTk89HzFihPz8/HTHHXfo0Ucf1fHjx7VixQr98MMPbcp90UUXafr06XryySc1ZcoU/fa3v9X+/fttT69pyeHDhzVs2DDdeeedioiIUJcuXfThhx9q8+bNdn85vfLKK7VhwwatWLFCUVFROu+882x/gW2LDRs2yMfHRyNGjLA9RbF///6aMGGCLSYpKUlz5szR448/rvj4eH322WdaunSp/P397Y7l6mc/cuRIzZgxQ9XV1br22mttT1EcOHCgkpKS2rwmAADgmosuukgZGRl69NFH9corr+iuu+7S//k//0ejRo3SyJEjdc899+jiiy/W999/rz179qi4uFh/+ctfJEmPPfaYNm3apP/6r//S448/rs6dO2vZsmVOn/LX2prCFbfffrtefvlljR49WtOmTdNvfvMb+fr66ptvvtG2bdt0880369Zbb1VkZKTuuusuZWVlydfXV9dff70++eQT25OnT2XixIn64x//qIkTJ+qpp57SpZdeqry8PL399tun3Dc7O1vvvvuuxowZo9DQUB0/ftz2tO7rr79e0okzzcLCwvTGG29o+PDh6tatm7p3737KKwCaExwcrLFjx2revHnq2bOnXnrpJeXn52vBggXq3LmzJOmaa67R5ZdfrunTp6u+vl4XXXSRNm7cqPfee8/heK7UoHPnztVf//pXDRs2TI8//ri6deuml19+WW+99ZYWLlx4Wj9vwLTcfZd7AGdec09RPP/88x1inT0lRk6eNpOVlWWEh4cb3t7edk+1cfYkxDfffNPo37+/YbVajYsvvth45JFHjL/97W9On9xzqqcoGoZh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AAAAAACAqdHgAgAAgFPLly9XeHi4rFaroqKitGPHjhbjCwoKFBUVJavVqt69eys7O9sh5scff9SDDz6onj17ymq1KjIyUnl5eWdqCQAAwEPQ4AIAAICDnJwcpaamavbs2SopKVFcXJxGjRpl9zChXyorK9Po0aMVFxenkpISzZo1S1OnTlVubq4tpra2ViNGjNDXX3+t1157TZ9//rmef/55XXzxxWdrWQAAoINq003mAQAA0LEtXrxYkydP1pQpUyRJWVlZevvtt7VixQplZmY6xGdnZys0NFRZWVmSpMjISO3atUuLFi2yPT179erV+v7777Vz5075+vpKku1J3AAAAKeDM7gAAABgp7a2VkVFRUpISLAbT0hI0M6dO53uU1hY6BA/cuRI7dq1S3V1dZKkTZs2KSYmRg8++KACAwPVr18/Pf3002poaGh2LjU1NaqurrbbAAAATkaDCwAAAHaqqqrU0NCgwMBAu/HAwEBVVlY63aeystJpfH19vaqqqiRJ//73v/Xaa6+poaFBeXl5euyxx/SHP/xBTz31VLNzyczMlL+/v20LCQk5zdUBAICOiAYXAAAAnPLy8rJ7bRiGw9ip4n853tjYqB49emjlypWKiorS7bffrtmzZ2vFihXNHjMjI0OHDx+2bfv372/rcgAAQAfGPbgAAABgp3v37vL29nY4W+vgwYMOZ2k1CQoKchrv4+OjgIAASVLPnj3l6+srb29vW0xkZKQqKytVW1srPz8/h+NaLBZZLJbTXRIAAOjgOIMLAAAAdvz8/BQVFaX8/Hy78fz8fMXGxjrdJyYmxiF+y5Ytio6Ott1Q/tprr9WXX36pxsZGW8zevXvVs2dPp80tAACA1qLBBQAAAAfp6el64YUXtHr1au3Zs0dpaWkqLy9XcnKypBOXDk6cONEWn5ycrH379ik9PV179uzR6tWrtWrVKk2fPt0W89///d86dOiQpk2bpr179+qtt97S008/rQcffPCsrw8AAHQsXKIIAAAAB4mJiTp06JDmz5+viooK9evXT3l5eQoLC5MkVVRUqLy83BYfHh6uvLw8paWladmyZQoODtaSJUs0btw4W0xISIi2bNmitLQ0XXXVVbr44os1bdo0zZgx46yvDwAAdCw0uAAAAOBUSkqKUlJSnL63Zs0ah7H4+HgVFxe3eMyYmBi9//777TE9AAAA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "# Drawing both of them\n", + "figure, axis = plt.subplots(1, 2)\n", + "figure.set_figheight(4)\n", + "figure.set_figwidth(12)\n", + "figure.tight_layout(w_pad = 5)\n", + "\n", + "def draw(y, id):\n", + " x = np.array(range(0, np.size(y)))\n", + " axis[id].bar(x, y, color=\"lightgreen\", ec='black')\n", + " axis[id].scatter(x, y, color=\"orange\")\n", + "\n", + "axis[0].title.set_text(\"Initial distribution\")\n", + "axis[1].title.set_text(\"Required distribution\")\n", + "draw(a, 0)\n", + "draw(b, 1)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "RuuNFQUcDCXl", + "outputId": "b0dc6795-09a7-4160-b8b5-fbef7b182f11" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9375\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "from aif360.sklearn.metrics import ot_distance\n", + "\n", + "_a = pd.Series(a)\n", + "_b = pd.Series(b)\n", + "c = ot_distance(_a, _b)\n", + "\n", + "print(c)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "982f8APNDCXm" + }, + "source": [ + "## Usage\n", + "\n", + "The type of outcomes must be provided using the `mode` keyword argument. The definition for the four types of outcomes supported are provided below:\n", + "- Binary: Yes/no outcomes. Outcomes must 0 or 1.\n", + "- Continuous: Continuous outcomes. Outcomes could be any real number.\n", + "- Nominal: Multiclass outcomes with no rank or order between them. Outcomes must be a finite set of integers.\n", + "- Ordinal: Multiclass outcomes that are ranked in a specific order. Outcomes must be positive integers." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AXZLAng1DCXm" + }, + "source": [ + "## Compas Dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JbzgBkZ6DCXm" + }, + "source": [ + "We'll demonstrate finding the scanning for bias with earth_movers_distance using the Compas dataset. We scan for bias in the predictions of an `sklearn` logistic regression model with respect to different groups." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "S_a5CpBmDCXm" + }, + "outputs": [], + "source": [ + "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_compas\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "np.random.seed(0)\n", + "dataset_orig = load_preproc_data_compas()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MetVVGgEDCXm" + }, + "source": [ + "We scan for bias at first with respect to `sex`, and then `age`.\n", + "\n", + "To scan for bias with respect for a feature that is one-hot encoded - in this case, age category - we need to convert it to nominal or ordinal format." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "nKjqZpvrDCXm", + "outputId": "eb2d18a6-3d40-4a89-f9de-89b7b82441cd" + }, + "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", + "
sexracepriors_count=0priors_count=1 to 3priors_count=More than 3c_charge_degree=Fc_charge_degree=Mage_cattwo_year_recid
00.00.01.00.00.01.00.011.0
10.00.00.00.01.01.00.001.0
20.01.00.00.01.01.00.011.0
31.01.01.00.00.00.01.010.0
40.01.01.00.00.01.00.010.0
\n", + "
" + ], + "text/plain": [ + " sex race priors_count=0 priors_count=1 to 3 priors_count=More than 3 \\\n", + "0 0.0 0.0 1.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 1.0 \n", + "2 0.0 1.0 0.0 0.0 1.0 \n", + "3 1.0 1.0 1.0 0.0 0.0 \n", + "4 0.0 1.0 1.0 0.0 0.0 \n", + "\n", + " c_charge_degree=F c_charge_degree=M age_cat two_year_recid \n", + "0 1.0 0.0 1 1.0 \n", + "1 1.0 0.0 0 1.0 \n", + "2 1.0 0.0 1 1.0 \n", + "3 0.0 1.0 1 0.0 \n", + "4 1.0 0.0 1 0.0 " + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset_orig_df = pd.DataFrame(dataset_orig.features, columns=dataset_orig.feature_names)\n", + "# Binning the features corresponding to age ('reshaping' them into one ordinal column)\n", + "age_cat_cols = ['age_cat=Less than 25', 'age_cat=25 to 45', 'age_cat=Greater than 45']\n", + "age_cat = np.argmax(dataset_orig_df[age_cat_cols].values, axis=1).reshape(-1, 1)\n", + "df = dataset_orig_df.drop(age_cat_cols, axis=1)\n", + "df['age_cat'] = age_cat\n", + "df['two_year_recid'] = dataset_orig.labels\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gdQM2Pf0DCXm" + }, + "source": [ + "### Measuring bias with respect to `sex`\n", + "\n", + "\n", + "We train a linear regression model on the dataset, and scan its results for bias with respect to `sex` using `earth_movers_distance`.\n", + "\n", + "The arguments are as follows:\n", + "- `ground_truth`: ground truth labels;\n", + "- `classifier`: predicted labels;\n", + "- `prot_attr`: the values of the sensitive attributes (with respect to which the classifier may be introducing bias);\n", + "- `num_iters`: maximum number of iterations performed when calculating the Earth Mover's Distance;\n", + "- `mode`: mode of the labels, one of binary, nominal, ordinal and continious; in our case the labels are binary." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "1UMII6BdDCXn" + }, + "outputs": [], + "source": [ + "from aif360.sklearn.metrics import ot_distance\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "X = df.drop('two_year_recid', axis=1)\n", + "y = df['two_year_recid']\n", + "clf = LogisticRegression(solver='lbfgs', max_iter=10000, C=1.0, penalty='l2')\n", + "clf.fit(X, y)\n", + "preds = pd.Series(clf.predict_proba(X)[:,0])\n", + "\n", + "ot_val1 = ot_distance(y_true=y, y_pred=preds, prot_attr=df['sex'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "dJ9XucBpDCXn", + "outputId": "14f8db55-0698-4582-f0ab-a0d5b51d32c0" + }, + "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", + "
sexot_val
00.00.000209
11.00.001647
\n", + "
" + ], + "text/plain": [ + " sex ot_val\n", + "0 0.0 0.000209\n", + "1 1.0 0.001647" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bs1 = pd.DataFrame({\"sex\": ot_val1.keys(), \"ot_val\": ot_val1.values()})\n", + "display(bs1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qMuMdXc9DCXn" + }, + "source": [ + "We get the bias value for each each of the protected groups - in this case, Male (`0`) and Female (`1`).\n", + "\n", + "These values range from 0 to 1 and can be interpreted as the difference in percent between the ground truth distribution and the distribution of the protected group: for example, a value of 0.3 would mean a 30% difference." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AZHqN9JTDCXn" + }, + "source": [ + "### Measuring bias with respect to `age_cat`\n", + "\n", + "Now we measure the bias of the same classifier with respect to the age category." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "usxcylLxDCXn" + }, + "outputs": [], + "source": [ + "ot_val2 = ot_distance(y_true=y, y_pred=preds, prot_attr=df['age_cat'])" + ] + }, { - "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", - "
raceot_val
00.00.000779
11.00.000068
\n", - "
" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "KLAS5o-DDCXs", + "outputId": "6e4d8bdc-21e7-4e3e-f57c-04302bf53dc2" + }, + "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", + "
age_catot_val
000.000578
110.000313
220.001800
\n", + "
" + ], + "text/plain": [ + " age_cat ot_val\n", + "0 0 0.000578\n", + "1 1 0.000313\n", + "2 2 0.001800" + ] + }, + "metadata": {}, + "output_type": "display_data" + } ], - "text/plain": [ - " race ot_val\n", - "0 0.0 0.000779\n", - "1 1.0 0.000068" + "source": [ + "bs2 = pd.DataFrame({\"age_cat\": ot_val2.keys(), \"ot_val\": ot_val2.values()})\n", + "display(bs2)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xU8-Sjz_DCXs" + }, + "source": [ + "## Adult Dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "clHgbhiCDCXt" + }, + "source": [ + "Let us consider the Adult Dataset. It has two protected categories: `sex` and `race`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "XhiCZSmCDCXt" + }, + "outputs": [], + "source": [ + "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_adult\n", + "\n", + "import numpy as np\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "v6SiGFSTDCXt", + "outputId": "05ed49ca-30d7-4d3b-d706-296b3cbcb60a" + }, + "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", + "
racesexAge (decade)=10Age (decade)=20Age (decade)=30Age (decade)=40Age (decade)=50Age (decade)=60Age (decade)=>=70Education Years=6Education Years=7Education Years=8Education Years=9Education Years=10Education Years=11Education Years=12Education Years=<6Education Years=>12Income Binary
00.01.00.01.00.00.00.00.00.00.01.00.00.00.00.00.00.00.00.0
11.01.00.00.01.00.00.00.00.00.00.00.01.00.00.00.00.00.00.0
21.01.00.01.00.00.00.00.00.00.00.00.00.00.00.01.00.00.01.0
30.01.00.00.00.01.00.00.00.00.00.00.00.01.00.00.00.00.01.0
41.00.01.00.00.00.00.00.00.00.00.00.00.01.00.00.00.00.00.0
\n", + "
" + ], + "text/plain": [ + " race sex Age (decade)=10 Age (decade)=20 Age (decade)=30 \\\n", + "0 0.0 1.0 0.0 1.0 0.0 \n", + "1 1.0 1.0 0.0 0.0 1.0 \n", + "2 1.0 1.0 0.0 1.0 0.0 \n", + "3 0.0 1.0 0.0 0.0 0.0 \n", + "4 1.0 0.0 1.0 0.0 0.0 \n", + "\n", + " Age (decade)=40 Age (decade)=50 Age (decade)=60 Age (decade)=>=70 \\\n", + "0 0.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 1.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " Education Years=6 Education Years=7 Education Years=8 Education Years=9 \\\n", + "0 0.0 1.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 1.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " Education Years=10 Education Years=11 Education Years=12 \\\n", + "0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 \n", + "2 0.0 0.0 1.0 \n", + "3 1.0 0.0 0.0 \n", + "4 1.0 0.0 0.0 \n", + "\n", + " Education Years=<6 Education Years=>12 Income Binary \n", + "0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 \n", + "2 0.0 0.0 1.0 \n", + "3 0.0 0.0 1.0 \n", + "4 0.0 0.0 0.0 " + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_raw = load_preproc_data_adult()\n", + "data = data_raw.convert_to_dataframe()[0]\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "UrUBEyKeDCXt" + }, + "source": [ + "### Measuring bias with respect to `sex`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "WyItlB-4DCXt" + }, + "outputs": [], + "source": [ + "clf = LogisticRegression(solver='lbfgs', max_iter=10000, C=1.0, penalty='l2')\n", + "X = data.drop('Income Binary',axis=1)\n", + "y = data['Income Binary']\n", + "\n", + "clf.fit(X, y)\n", + "preds = pd.Series(clf.predict_proba(X)[:,0])\n", + "\n", + "ot_val1 = ot_distance(y_true=y, y_pred=preds, prot_attr=data['sex'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "iz35JSsaDCXt", + "outputId": "7b759101-d6b5-4579-f7f9-4667c21bad55" + }, + "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", + "
sexot_val
00.00.000503
11.00.000067
\n", + "
" + ], + "text/plain": [ + " sex ot_val\n", + "0 0.0 0.000503\n", + "1 1.0 0.000067" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bs1 = pd.DataFrame({\"sex\": ot_val1.keys(), \"ot_val\": ot_val1.values()})\n", + "display(bs1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "z1JSCRJ4DCXt" + }, + "source": [ + "### Measuring bias with respect to `race`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "3T0756nuDCXt" + }, + "outputs": [], + "source": [ + "ot_val2 = ot_distance(y_true=y, y_pred=preds, prot_attr=data['race'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BXcbZhdIDCXu", + "outputId": "2f21c706-9625-448d-d713-f5b60be57d4a" + }, + "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", + "
raceot_val
00.00.000779
11.00.000068
\n", + "
" + ], + "text/plain": [ + " race ot_val\n", + "0 0.0 0.000779\n", + "1 1.0 0.000068" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bs2 = pd.DataFrame({\"race\": ot_val2.keys(), \"ot_val\": ot_val2.values()})\n", + "display(bs2)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b_txzvFjDCXu" + }, + "source": [ + "## More details\n", + "\n", + "It is commonly employed as a means to quantify the similarity between distributions, particularly when the distributions have distinct supports. In scenarios where the supports of the distributions are disjoint, OT-based Wasserstein distances offer favorable comparisons to well-known f-divergences such as the Kullback-Leibler divergence, Jensen-Shannon divergence, and Total Variation distance.\n", + "\n", + "One notable aspect that makes OT valuable for data science applications is its ability to compute meaningful sub-gradients of the Wasserstein distance. This feature enhances its efficiency as a tool for measuring and optimizing similarity between empirical distributions.\n", + "\n", + "The machine learning (ML) literature has seen numerous contributions utilizing OT as an approach. For instance, in the training of Generative Adversarial Networks (GANs), OT has been utilized to tackle the issue of vanishing gradients, which can hinder the learning process. Additionally, OT has been employed to identify discriminant or robust subspaces within datasets, offering useful insights. Moreover, the Wasserstein distance has found application in measuring similarity between word embeddings of documents, as well as comparing signals or spectra.\n", + "\n", + "Due to the inherent constraint in the problem, solving Optimal Transport (OT) can be quite challenging. As a result, in practical applications dealing with discrete distributions, a more manageable approach known as a linear program has been employed as a substitute. This approach corresponds to the Kantorovitch formulation, where the original Monge mapping, denoted as $m$ is replaced by a joint distribution represented by an OT matrix.\n", + "From the optimization problem described above, we can identify two primary components of the OT solution that have practical applications:\n", + "- The optimal value (Wasserstein distance): This quantifies the similarity between distributions. It is used to measure the dissimilarity or similarity between datasets or distributions. The Wasserstein distance represents the optimal value obtained from solving the OT problem.\n", + "- The optimal mapping (Monge mapping or OT matrix): This determines the correspondences between the distributions. It describes how the mass is transported between the source and target distributions. The optimal mapping can be utilized to transfer knowledge or information between distributions.\n", + "\n", + "In the first case, OT is employed to assess the similarity between distributions or datasets. Here, the Wasserstein distance, which is the optimal value obtained from solving the OT problem, is used as a measure of similarity. In the second case, the focus lies on understanding the specific manner in which mass is transferred between distributions, represented by the mapping. This mapping can be leveraged to facilitate the transfer of knowledge or information between the distributions.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZIPRdM1wDCXu" + }, + "source": [ + "### OT for mapping estimation\n", + "\n", + "One fascinating aspect of the Optimal Transport (OT) problem is the inherent OT mapping. When computing the optimal transport between discrete distributions, one of the outputs is the OT matrix, which provides correspondences between the samples in each distribution.\n", + "\n", + "This correspondence is estimated based on the OT criterion and is obtained in a non-supervised manner. This characteristic makes it particularly intriguing for problems involving dataset transfer. OT has been employed, for instance, in performing color transfer between images or in the context of domain adaptation, where knowledge or information is transferred between different datasets.\n", + "\n", + "Furthermore, more recent applications have explored the extension of OT, known as Gromov-Wasserstein, to establish correspondences between languages using word embeddings. This utilization of OT enables the identification of connections or similarities between languages based on the distributional properties of word embeddings.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9tM6dploDCXu" + }, + "source": [ + "### Kantorovich optimal transport problem\n", + "\n", + "This is the most typical OT problem. It seeks an optimal coupling $\\boldsymbol{T}$ which minimizes the displacement cost of a discrete measure $\\boldsymbol{a}$ to a discrete measure $\\boldsymbol{b}$ with respect to a ground cost $\\boldsymbol{M} \\in \\mathbb{R}^{n_{1} \\times n_{2}}$. In order to be a transport plan, $\\boldsymbol{T}$ must be part of the set $\\Pi(\\mathbf{a}, \\mathbf{b})=\\left\\{\\boldsymbol{T} \\geq \\mathbf{0}, \\boldsymbol{T} \\mathbf{1}_{n_{2}}=\\boldsymbol{a}, \\boldsymbol{T}^{\\top} \\mathbf{1}_{n_{1}}=\\boldsymbol{b}\\right\\}$. When the ground cost is a metric, the optimal value of the OT problem is also a metric (Rubner et al., 2000; Cuturi and Avis, 2014) and is called the Wasserstein distance. In this discrete case, the OT problem is defined as\n", + "\n", + "$$\n", + "W_{M}(\\boldsymbol{a}, \\boldsymbol{b})=\\min _{\\boldsymbol{T} \\in \\Pi(\\mathbf{a}, \\mathbf{b})}\\langle\\boldsymbol{T}, \\boldsymbol{M}\\rangle\n", + "$$\n", + "\n", + "which is a linear program. The optimization problem above is often adapted to include a regularization term for the transport plan $\\boldsymbol{T}$, such as entropic regularization (Cuturi, 2013) or squared L2. For the entropic regularized OT problem, one may use the Sinkhorn Knopp algorithm (or variants), or stochastic optimization algorithms. POT has a simple syntax to solve these problems." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DDlqt0TnDCXu" + }, + "source": [ + "### Solving optimal transport\n", + "\n", + "The optimal transport problem between discrete distributions is often expressed as\n", + "$$\n", + "\\begin{array}{r}\n", + "\\gamma^*=\\arg \\min _{\\gamma \\in \\mathbb{R}_{+}^{m \\times n}} \\sum_{i, j} \\gamma_{i, j} M_{i, j} \\\\\n", + "\\text { s.t. } \\gamma 1=a ; \\gamma^T 1=b ; \\gamma \\geq 0\n", + "\\end{array}\n", + "$$\n", + "where:\n", + "- $M \\in \\mathbb{R}_{+}^{m \\times n}$ is the metric cost matrix defining the cost to move mass from bin $a_i$ to bin $b_j$.\n", + "- $a$ and $b$ are histograms on the simplex (positive, sum to 1) that represent the weights of each samples in the source an target distributions.\n", + "Solving the linear program above can be done using the function ot.emd that will return the optimal transport matrix $\\gamma^*$ :" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TFNEAAplDCXu" + }, + "source": [ + "### The necessity and priority of usage\n", + "\n", + "The main difference between the MDSS and OT detectors is the range of applicability. MDSS scanner can in linear time decide, what the most anomalous subset is, while in the case of OT detector has a narrower but more accurate field of use. The method used can only account for 1-dimensional histograms as precisely described in \"POT: Python Optimal Transport\" https://jmlr.org/papers/v22/20-451.html. This means there is no possibility yet to handle datasets of more than 1 feature. For more dimensions, there is a prospect for the Sinkhorn algorithm, which will be implemented in the nearest future. As compared to MDSS, the user needs to specify the sensitive attribute for which wants to know the bias.\n", + "\n", + "So if the user is interested in obtaining a certain bias on a particular parameter, it is better to use earth_movers_distance. But if it is more important to see the general picture for all parameters on bias presence, then it is better to use MDSS.\n", + "\n", + "The matrix that is obtained from the emd method is called a transport plan in the OT framework (the gamma matrix in https://pythonot.github.io/all.html?highlight=emd#ot.emd). It is the matrix which minimizes the transportation cost, and workable to evaluate the actual Wasserstein distance by taking the Frobenius product (see here for instance: https://en.wikipedia.org/wiki/Frobenius_inner_product) with the metric cost matrix, M." ] - }, - "metadata": {}, - "output_type": "display_data" } - ], - "source": [ - "bs2 = pd.DataFrame({\"race\": ot_val2.keys(), \"ot_val\": ot_val2.values()})\n", - "display(bs2)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## More details\n", - "\n", - "It is commonly employed as a means to quantify the similarity between distributions, particularly when the distributions have distinct supports. In scenarios where the supports of the distributions are disjoint, OT-based Wasserstein distances offer favorable comparisons to well-known f-divergences such as the Kullback-Leibler divergence, Jensen-Shannon divergence, and Total Variation distance.\n", - "\n", - "One notable aspect that makes OT valuable for data science applications is its ability to compute meaningful sub-gradients of the Wasserstein distance. This feature enhances its efficiency as a tool for measuring and optimizing similarity between empirical distributions.\n", - "\n", - "The machine learning (ML) literature has seen numerous contributions utilizing OT as an approach. For instance, in the training of Generative Adversarial Networks (GANs), OT has been utilized to tackle the issue of vanishing gradients, which can hinder the learning process. Additionally, OT has been employed to identify discriminant or robust subspaces within datasets, offering useful insights. Moreover, the Wasserstein distance has found application in measuring similarity between word embeddings of documents, as well as comparing signals or spectra.\n", - "\n", - "Due to the inherent constraint in the problem, solving Optimal Transport (OT) can be quite challenging. As a result, in practical applications dealing with discrete distributions, a more manageable approach known as a linear program has been employed as a substitute. This approach corresponds to the Kantorovitch formulation, where the original Monge mapping, denoted as $m$ is replaced by a joint distribution represented by an OT matrix.\n", - "From the optimization problem described above, we can identify two primary components of the OT solution that have practical applications:\n", - "- The optimal value (Wasserstein distance): This quantifies the similarity between distributions. It is used to measure the dissimilarity or similarity between datasets or distributions. The Wasserstein distance represents the optimal value obtained from solving the OT problem.\n", - "- The optimal mapping (Monge mapping or OT matrix): This determines the correspondences between the distributions. It describes how the mass is transported between the source and target distributions. The optimal mapping can be utilized to transfer knowledge or information between distributions.\n", - "\n", - "In the first case, OT is employed to assess the similarity between distributions or datasets. Here, the Wasserstein distance, which is the optimal value obtained from solving the OT problem, is used as a measure of similarity. In the second case, the focus lies on understanding the specific manner in which mass is transferred between distributions, represented by the mapping. This mapping can be leveraged to facilitate the transfer of knowledge or information between the distributions.\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### OT for mapping estimation\n", - "\n", - "One fascinating aspect of the Optimal Transport (OT) problem is the inherent OT mapping. When computing the optimal transport between discrete distributions, one of the outputs is the OT matrix, which provides correspondences between the samples in each distribution.\n", - "\n", - "This correspondence is estimated based on the OT criterion and is obtained in a non-supervised manner. This characteristic makes it particularly intriguing for problems involving dataset transfer. OT has been employed, for instance, in performing color transfer between images or in the context of domain adaptation, where knowledge or information is transferred between different datasets.\n", - "\n", - "Furthermore, more recent applications have explored the extension of OT, known as Gromov-Wasserstein, to establish correspondences between languages using word embeddings. This utilization of OT enables the identification of connections or similarities between languages based on the distributional properties of word embeddings.\n", - "\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Kantorovich optimal transport problem\n", - "\n", - "This is the most typical OT problem. It seeks an optimal coupling $\\boldsymbol{T}$ which minimizes the displacement cost of a discrete measure $\\boldsymbol{a}$ to a discrete measure $\\boldsymbol{b}$ with respect to a ground cost $\\boldsymbol{M} \\in \\mathbb{R}^{n_{1} \\times n_{2}}$. In order to be a transport plan, $\\boldsymbol{T}$ must be part of the set $\\Pi(\\mathbf{a}, \\mathbf{b})=\\left\\{\\boldsymbol{T} \\geq \\mathbf{0}, \\boldsymbol{T} \\mathbf{1}_{n_{2}}=\\boldsymbol{a}, \\boldsymbol{T}^{\\top} \\mathbf{1}_{n_{1}}=\\boldsymbol{b}\\right\\}$. When the ground cost is a metric, the optimal value of the OT problem is also a metric (Rubner et al., 2000; Cuturi and Avis, 2014) and is called the Wasserstein distance. In this discrete case, the OT problem is defined as\n", - "\n", - "$$\n", - "W_{M}(\\boldsymbol{a}, \\boldsymbol{b})=\\min _{\\boldsymbol{T} \\in \\Pi(\\mathbf{a}, \\mathbf{b})}\\langle\\boldsymbol{T}, \\boldsymbol{M}\\rangle\n", - "$$\n", - "\n", - "which is a linear program. The optimization problem above is often adapted to include a regularization term for the transport plan $\\boldsymbol{T}$, such as entropic regularization (Cuturi, 2013) or squared L2. For the entropic regularized OT problem, one may use the Sinkhorn Knopp algorithm (or variants), or stochastic optimization algorithms. POT has a simple syntax to solve these problems." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Solving optimal transport\n", - "\n", - "The optimal transport problem between discrete distributions is often expressed as\n", - "$$\n", - "\\begin{array}{r}\n", - "\\gamma^*=\\arg \\min _{\\gamma \\in \\mathbb{R}_{+}^{m \\times n}} \\sum_{i, j} \\gamma_{i, j} M_{i, j} \\\\\n", - "\\text { s.t. } \\gamma 1=a ; \\gamma^T 1=b ; \\gamma \\geq 0\n", - "\\end{array}\n", - "$$\n", - "where:\n", - "- $M \\in \\mathbb{R}_{+}^{m \\times n}$ is the metric cost matrix defining the cost to move mass from bin $a_i$ to bin $b_j$.\n", - "- $a$ and $b$ are histograms on the simplex (positive, sum to 1) that represent the weights of each samples in the source an target distributions.\n", - "Solving the linear program above can be done using the function ot.emd that will return the optimal transport matrix $\\gamma^*$ :" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### The necessity and priority of usage\n", - "\n", - "The main difference between the MDSS and OT detectors is the range of applicability. MDSS scanner can in linear time decide, what the most anomalous subset is, while in the case of OT detector has a narrower but more accurate field of use. The method used can only account for 1-dimensional histograms as precisely described in \"POT: Python Optimal Transport\" https://jmlr.org/papers/v22/20-451.html. This means there is no possibility yet to handle datasets of more than 1 feature. For more dimensions, there is a prospect for the Sinkhorn algorithm, which will be implemented in the nearest future. As compared to MDSS, the user needs to specify the sensitive attribute for which wants to know the bias. \n", - "\n", - "So if the user is interested in obtaining a certain bias on a particular parameter, it is better to use earth_movers_distance. But if it is more important to see the general picture for all parameters on bias presence, then it is better to use MDSS.\n", - "\n", - "The matrix that is obtained from the emd method is called a transport plan in the OT framework (the gamma matrix in https://pythonot.github.io/all.html?highlight=emd#ot.emd). It is the matrix which minimizes the transportation cost, and workable to evaluate the actual Wasserstein distance by taking the Frobenius product (see here for instance: https://en.wikipedia.org/wiki/Frobenius_inner_product) with the metric cost matrix, M." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "e3a8dcdfdfc9ccb9b75f5bdad7d0512468824af451b906a037b07d69b0e56c16" + } + }, + "colab": { + "provenance": [] + } }, - "orig_nbformat": 4, - "vscode": { - "interpreter": { - "hash": "e3a8dcdfdfc9ccb9b75f5bdad7d0512468824af451b906a037b07d69b0e56c16" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/examples/demo_reject_option_classification.ipynb b/examples/demo_reject_option_classification.ipynb index 004b0ec1..47724ac2 100644 --- a/examples/demo_reject_option_classification.ipynb +++ b/examples/demo_reject_option_classification.ipynb @@ -1,804 +1,888 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### This notebook demonstrates the use of the Reject Option Classification (ROC) post-processing algorithm for bias mitigation.\n", - "- The debiasing function used is implemented in the `RejectOptionClassification` class.\n", - "- Divide the dataset into training, validation, and testing partitions.\n", - "- Train classifier on original training data.\n", - "- Estimate the optimal classification threshold, that maximizes balanced accuracy without fairness constraints.\n", - "- Estimate the optimal classification threshold, and the critical region boundary (ROC margin) using a validation set for the desired constraint on fairness. The best parameters are those that maximize the classification threshold while satisfying the fairness constraints.\n", - "- The constraints can be used on the following fairness measures:\n", - " * Statistical parity difference on the predictions of the classifier\n", - " * Average odds difference for the classifier\n", - " * Equal opportunity difference for the classifier\n", - "- Determine the prediction scores for testing data. Using the estimated optimal classification threshold, compute accuracy and fairness metrics.\n", - "- Using the determined optimal classification threshold and the ROC margin, adjust the predictions. Report accuracy and fairness metric on the new predictions." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "# Load all necessary packages\n", - "import sys\n", - "sys.path.append(\"../\")\n", - "import numpy as np\n", - "from tqdm import tqdm\n", - "from warnings import warn\n", - "\n", - "from aif360.datasets import BinaryLabelDataset\n", - "from aif360.datasets import AdultDataset, GermanDataset, CompasDataset\n", - "from aif360.metrics import ClassificationMetric, BinaryLabelDatasetMetric\n", - "from aif360.metrics.utils import compute_boolean_conditioning_vector\n", - "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions\\\n", - " import load_preproc_data_adult, load_preproc_data_german, load_preproc_data_compas\n", - "from aif360.algorithms.postprocessing.reject_option_classification\\\n", - " import RejectOptionClassification\n", - "from common_utils import compute_metrics\n", - "\n", - "from sklearn.linear_model import LogisticRegression\n", - "from sklearn.preprocessing import StandardScaler\n", - "from sklearn.metrics import accuracy_score\n", - "\n", - "from IPython.display import Markdown, display\n", - "import matplotlib.pyplot as plt\n", - "from ipywidgets import interactive, FloatSlider" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Load dataset and specify options" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "## import dataset\n", - "dataset_used = \"adult\" # \"adult\", \"german\", \"compas\"\n", - "protected_attribute_used = 1 # 1, 2\n", - "\n", - "if dataset_used == \"adult\":\n", - "# dataset_orig = AdultDataset()\n", - " if protected_attribute_used == 1:\n", - " privileged_groups = [{'sex': 1}]\n", - " unprivileged_groups = [{'sex': 0}]\n", - " dataset_orig = load_preproc_data_adult(['sex'])\n", - " else:\n", - " privileged_groups = [{'race': 1}]\n", - " unprivileged_groups = [{'race': 0}]\n", - " dataset_orig = load_preproc_data_adult(['race'])\n", - " \n", - "elif dataset_used == \"german\":\n", - "# dataset_orig = GermanDataset()\n", - " if protected_attribute_used == 1:\n", - " privileged_groups = [{'sex': 1}]\n", - " unprivileged_groups = [{'sex': 0}]\n", - " dataset_orig = load_preproc_data_german(['sex'])\n", - " else:\n", - " privileged_groups = [{'age': 1}]\n", - " unprivileged_groups = [{'age': 0}]\n", - " dataset_orig = load_preproc_data_german(['age'])\n", - " \n", - "elif dataset_used == \"compas\":\n", - "# dataset_orig = CompasDataset()\n", - " if protected_attribute_used == 1:\n", - " privileged_groups = [{'sex': 1}]\n", - " unprivileged_groups = [{'sex': 0}]\n", - " dataset_orig = load_preproc_data_compas(['sex'])\n", - " else:\n", - " privileged_groups = [{'race': 1}]\n", - " unprivileged_groups = [{'race': 0}] \n", - " dataset_orig = load_preproc_data_compas(['race'])\n", - "\n", - " \n", - "# Metric used (should be one of allowed_metrics)\n", - "metric_name = \"Statistical parity difference\"\n", - "\n", - "# Upper and lower bound on the fairness metric used\n", - "metric_ub = 0.05\n", - "metric_lb = -0.05\n", - " \n", - "#random seed for calibrated equal odds prediction\n", - "np.random.seed(1)\n", - "\n", - "# Verify metric name\n", - "allowed_metrics = [\"Statistical parity difference\",\n", - " \"Average odds difference\",\n", - " \"Equal opportunity difference\"]\n", - "if metric_name not in allowed_metrics:\n", - " raise ValueError(\"Metric name should be one of allowed metrics\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Split into train, test and validation" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# Get the dataset and split into train and test\n", - "dataset_orig_train, dataset_orig_vt = dataset_orig.split([0.7], shuffle=True)\n", - "dataset_orig_valid, dataset_orig_test = dataset_orig_vt.split([0.5], shuffle=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Clean up training data and display properties of the data" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "#### Training Dataset shape" + "cells": [ + { + "cell_type": "markdown", + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Trusted-AI/AIF360/blob/main/examples/demo_reject_option_classification.ipynb)" ], - "text/plain": [ - "" + "metadata": { + "id": "d7UMvwuqELCz" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "s2106jSjEKag" + }, + "source": [ + "#### This notebook demonstrates the use of the Reject Option Classification (ROC) post-processing algorithm for bias mitigation.\n", + "- The debiasing function used is implemented in the `RejectOptionClassification` class.\n", + "- Divide the dataset into training, validation, and testing partitions.\n", + "- Train classifier on original training data.\n", + "- Estimate the optimal classification threshold, that maximizes balanced accuracy without fairness constraints.\n", + "- Estimate the optimal classification threshold, and the critical region boundary (ROC margin) using a validation set for the desired constraint on fairness. The best parameters are those that maximize the classification threshold while satisfying the fairness constraints.\n", + "- The constraints can be used on the following fairness measures:\n", + " * Statistical parity difference on the predictions of the classifier\n", + " * Average odds difference for the classifier\n", + " * Equal opportunity difference for the classifier\n", + "- Determine the prediction scores for testing data. Using the estimated optimal classification threshold, compute accuracy and fairness metrics.\n", + "- Using the determined optimal classification threshold and the ROC margin, adjust the predictions. Report accuracy and fairness metric on the new predictions." ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "(34189, 18)\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "AEdfTuQQEKai" + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "# Load all necessary packages\n", + "import sys\n", + "sys.path.append(\"../\")\n", + "import numpy as np\n", + "from tqdm import tqdm\n", + "from warnings import warn\n", + "\n", + "from aif360.datasets import BinaryLabelDataset\n", + "from aif360.datasets import AdultDataset, GermanDataset, CompasDataset\n", + "from aif360.metrics import ClassificationMetric, BinaryLabelDatasetMetric\n", + "from aif360.metrics.utils import compute_boolean_conditioning_vector\n", + "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions\\\n", + " import load_preproc_data_adult, load_preproc_data_german, load_preproc_data_compas\n", + "from aif360.algorithms.postprocessing.reject_option_classification\\\n", + " import RejectOptionClassification\n", + "from common_utils import compute_metrics\n", + "\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.metrics import accuracy_score\n", + "\n", + "from IPython.display import Markdown, display\n", + "import matplotlib.pyplot as plt\n", + "from ipywidgets import interactive, FloatSlider" + ] }, { - "data": { - "text/markdown": [ - "#### Favorable and unfavorable labels" - ], - "text/plain": [ - "" + "cell_type": "markdown", + "metadata": { + "id": "CJ5WlRxlEKak" + }, + "source": [ + "#### Load dataset and specify options" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "(1.0, 0.0)\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "vGB2s9vKEKak" + }, + "outputs": [], + "source": [ + "## import dataset\n", + "dataset_used = \"adult\" # \"adult\", \"german\", \"compas\"\n", + "protected_attribute_used = 1 # 1, 2\n", + "\n", + "if dataset_used == \"adult\":\n", + "# dataset_orig = AdultDataset()\n", + " if protected_attribute_used == 1:\n", + " privileged_groups = [{'sex': 1}]\n", + " unprivileged_groups = [{'sex': 0}]\n", + " dataset_orig = load_preproc_data_adult(['sex'])\n", + " else:\n", + " privileged_groups = [{'race': 1}]\n", + " unprivileged_groups = [{'race': 0}]\n", + " dataset_orig = load_preproc_data_adult(['race'])\n", + "\n", + "elif dataset_used == \"german\":\n", + "# dataset_orig = GermanDataset()\n", + " if protected_attribute_used == 1:\n", + " privileged_groups = [{'sex': 1}]\n", + " unprivileged_groups = [{'sex': 0}]\n", + " dataset_orig = load_preproc_data_german(['sex'])\n", + " else:\n", + " privileged_groups = [{'age': 1}]\n", + " unprivileged_groups = [{'age': 0}]\n", + " dataset_orig = load_preproc_data_german(['age'])\n", + "\n", + "elif dataset_used == \"compas\":\n", + "# dataset_orig = CompasDataset()\n", + " if protected_attribute_used == 1:\n", + " privileged_groups = [{'sex': 1}]\n", + " unprivileged_groups = [{'sex': 0}]\n", + " dataset_orig = load_preproc_data_compas(['sex'])\n", + " else:\n", + " privileged_groups = [{'race': 1}]\n", + " unprivileged_groups = [{'race': 0}]\n", + " dataset_orig = load_preproc_data_compas(['race'])\n", + "\n", + "\n", + "# Metric used (should be one of allowed_metrics)\n", + "metric_name = \"Statistical parity difference\"\n", + "\n", + "# Upper and lower bound on the fairness metric used\n", + "metric_ub = 0.05\n", + "metric_lb = -0.05\n", + "\n", + "#random seed for calibrated equal odds prediction\n", + "np.random.seed(1)\n", + "\n", + "# Verify metric name\n", + "allowed_metrics = [\"Statistical parity difference\",\n", + " \"Average odds difference\",\n", + " \"Equal opportunity difference\"]\n", + "if metric_name not in allowed_metrics:\n", + " raise ValueError(\"Metric name should be one of allowed metrics\")" + ] }, { - "data": { - "text/markdown": [ - "#### Protected attribute names" - ], - "text/plain": [ - "" + "cell_type": "markdown", + "metadata": { + "id": "MVg1w8UREKak" + }, + "source": [ + "#### Split into train, test and validation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "TYG56PPqEKal" + }, + "outputs": [], + "source": [ + "# Get the dataset and split into train and test\n", + "dataset_orig_train, dataset_orig_vt = dataset_orig.split([0.7], shuffle=True)\n", + "dataset_orig_valid, dataset_orig_test = dataset_orig_vt.split([0.5], shuffle=True)" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "['sex']\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "4MCJ47rEEKal" + }, + "source": [ + "#### Clean up training data and display properties of the data" + ] }, { - "data": { - "text/markdown": [ - "#### Privileged and unprivileged protected attribute values" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "XyFgyqgyEKal", + "outputId": "0a6f20cc-ab05-4bb3-c6fe-75497f1e558e" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Training Dataset shape" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(34189, 18)\n" + ] + }, + { + "data": { + "text/markdown": [ + "#### Favorable and unfavorable labels" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1.0, 0.0)\n" + ] + }, + { + "data": { + "text/markdown": [ + "#### Protected attribute names" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['sex']\n" + ] + }, + { + "data": { + "text/markdown": [ + "#### Privileged and unprivileged protected attribute values" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "([array([1.])], [array([0.])])\n" + ] + }, + { + "data": { + "text/markdown": [ + "#### Dataset feature names" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['race', 'sex', 'Age (decade)=10', 'Age (decade)=20', 'Age (decade)=30', 'Age (decade)=40', 'Age (decade)=50', 'Age (decade)=60', 'Age (decade)=>=70', 'Education Years=6', 'Education Years=7', 'Education Years=8', 'Education Years=9', 'Education Years=10', 'Education Years=11', 'Education Years=12', 'Education Years=<6', 'Education Years=>12']\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "# print out some labels, names, etc.\n", + "display(Markdown(\"#### Training Dataset shape\"))\n", + "print(dataset_orig_train.features.shape)\n", + "display(Markdown(\"#### Favorable and unfavorable labels\"))\n", + "print(dataset_orig_train.favorable_label, dataset_orig_train.unfavorable_label)\n", + "display(Markdown(\"#### Protected attribute names\"))\n", + "print(dataset_orig_train.protected_attribute_names)\n", + "display(Markdown(\"#### Privileged and unprivileged protected attribute values\"))\n", + "print(dataset_orig_train.privileged_protected_attributes,\n", + " dataset_orig_train.unprivileged_protected_attributes)\n", + "display(Markdown(\"#### Dataset feature names\"))\n", + "print(dataset_orig_train.feature_names)" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "([array([1.])], [array([0.])])\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "komnLuKdEKam" + }, + "source": [ + "#### Metric for original training data" + ] }, { - "data": { - "text/markdown": [ - "#### Dataset feature names" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "5o0lE46IEKam", + "outputId": "00af823c-3549-4def-f501-ab9501a91321" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Original training dataset" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Difference in mean outcomes between unprivileged and privileged groups = -0.190698\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "metric_orig_train = BinaryLabelDatasetMetric(dataset_orig_train,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "display(Markdown(\"#### Original training dataset\"))\n", + "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_orig_train.mean_difference())" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "['race', 'sex', 'Age (decade)=10', 'Age (decade)=20', 'Age (decade)=30', 'Age (decade)=40', 'Age (decade)=50', 'Age (decade)=60', 'Age (decade)=>=70', 'Education Years=6', 'Education Years=7', 'Education Years=8', 'Education Years=9', 'Education Years=10', 'Education Years=11', 'Education Years=12', 'Education Years=<6', 'Education Years=>12']\n" - ] - } - ], - "source": [ - "# print out some labels, names, etc.\n", - "display(Markdown(\"#### Training Dataset shape\"))\n", - "print(dataset_orig_train.features.shape)\n", - "display(Markdown(\"#### Favorable and unfavorable labels\"))\n", - "print(dataset_orig_train.favorable_label, dataset_orig_train.unfavorable_label)\n", - "display(Markdown(\"#### Protected attribute names\"))\n", - "print(dataset_orig_train.protected_attribute_names)\n", - "display(Markdown(\"#### Privileged and unprivileged protected attribute values\"))\n", - "print(dataset_orig_train.privileged_protected_attributes, \n", - " dataset_orig_train.unprivileged_protected_attributes)\n", - "display(Markdown(\"#### Dataset feature names\"))\n", - "print(dataset_orig_train.feature_names)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Metric for original training data" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "#### Original training dataset" - ], - "text/plain": [ - "" + "cell_type": "markdown", + "metadata": { + "id": "i_E0KBPAEKan" + }, + "source": [ + "### Train classifier on original data" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Difference in mean outcomes between unprivileged and privileged groups = -0.190698\n" - ] - } - ], - "source": [ - "metric_orig_train = BinaryLabelDatasetMetric(dataset_orig_train, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "display(Markdown(\"#### Original training dataset\"))\n", - "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_orig_train.mean_difference())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Train classifier on original data" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# Logistic regression classifier and predictions\n", - "scale_orig = StandardScaler()\n", - "X_train = scale_orig.fit_transform(dataset_orig_train.features)\n", - "y_train = dataset_orig_train.labels.ravel()\n", - "\n", - "lmod = LogisticRegression()\n", - "lmod.fit(X_train, y_train)\n", - "y_train_pred = lmod.predict(X_train)\n", - "\n", - "# positive class index\n", - "pos_ind = np.where(lmod.classes_ == dataset_orig_train.favorable_label)[0][0]\n", - "\n", - "dataset_orig_train_pred = dataset_orig_train.copy(deepcopy=True)\n", - "dataset_orig_train_pred.labels = y_train_pred" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Obtain scores for validation and test sets" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "dataset_orig_valid_pred = dataset_orig_valid.copy(deepcopy=True)\n", - "X_valid = scale_orig.transform(dataset_orig_valid_pred.features)\n", - "y_valid = dataset_orig_valid_pred.labels\n", - "dataset_orig_valid_pred.scores = lmod.predict_proba(X_valid)[:,pos_ind].reshape(-1,1)\n", - "\n", - "dataset_orig_test_pred = dataset_orig_test.copy(deepcopy=True)\n", - "X_test = scale_orig.transform(dataset_orig_test_pred.features)\n", - "y_test = dataset_orig_test_pred.labels\n", - "dataset_orig_test_pred.scores = lmod.predict_proba(X_test)[:,pos_ind].reshape(-1,1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Find the optimal parameters from the validation set" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Best threshold for classification only (no fairness)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Best balanced accuracy (no fairness constraints) = 0.7473\n", - "Optimal classification threshold (no fairness constraints) = 0.2674\n" - ] - } - ], - "source": [ - "num_thresh = 100\n", - "ba_arr = np.zeros(num_thresh)\n", - "class_thresh_arr = np.linspace(0.01, 0.99, num_thresh)\n", - "for idx, class_thresh in enumerate(class_thresh_arr):\n", - " \n", - " fav_inds = dataset_orig_valid_pred.scores > class_thresh\n", - " dataset_orig_valid_pred.labels[fav_inds] = dataset_orig_valid_pred.favorable_label\n", - " dataset_orig_valid_pred.labels[~fav_inds] = dataset_orig_valid_pred.unfavorable_label\n", - " \n", - " classified_metric_orig_valid = ClassificationMetric(dataset_orig_valid,\n", - " dataset_orig_valid_pred, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - " \n", - " ba_arr[idx] = 0.5*(classified_metric_orig_valid.true_positive_rate()\\\n", - " +classified_metric_orig_valid.true_negative_rate())\n", - "\n", - "best_ind = np.where(ba_arr == np.max(ba_arr))[0][0]\n", - "best_class_thresh = class_thresh_arr[best_ind]\n", - "\n", - "print(\"Best balanced accuracy (no fairness constraints) = %.4f\" % np.max(ba_arr))\n", - "print(\"Optimal classification threshold (no fairness constraints) = %.4f\" % best_class_thresh)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Estimate optimal parameters for the ROC method" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "ROC = RejectOptionClassification(unprivileged_groups=unprivileged_groups, \n", - " privileged_groups=privileged_groups, \n", - " low_class_thresh=0.01, high_class_thresh=0.99,\n", - " num_class_thresh=100, num_ROC_margin=50,\n", - " metric_name=metric_name,\n", - " metric_ub=metric_ub, metric_lb=metric_lb)\n", - "ROC = ROC.fit(dataset_orig_valid, dataset_orig_valid_pred)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Optimal classification threshold (with fairness constraints) = 0.5049\n", - "Optimal ROC margin = 0.1819\n" - ] - } - ], - "source": [ - "print(\"Optimal classification threshold (with fairness constraints) = %.4f\" % ROC.classification_threshold)\n", - "print(\"Optimal ROC margin = %.4f\" % ROC.ROC_margin)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Predictions from Validation Set" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "#### Validation set" - ], - "text/plain": [ - "" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "5lY_98bAEKan" + }, + "outputs": [], + "source": [ + "# Logistic regression classifier and predictions\n", + "scale_orig = StandardScaler()\n", + "X_train = scale_orig.fit_transform(dataset_orig_train.features)\n", + "y_train = dataset_orig_train.labels.ravel()\n", + "\n", + "lmod = LogisticRegression()\n", + "lmod.fit(X_train, y_train)\n", + "y_train_pred = lmod.predict(X_train)\n", + "\n", + "# positive class index\n", + "pos_ind = np.where(lmod.classes_ == dataset_orig_train.favorable_label)[0][0]\n", + "\n", + "dataset_orig_train_pred = dataset_orig_train.copy(deepcopy=True)\n", + "dataset_orig_train_pred.labels = y_train_pred" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "data": { - "text/markdown": [ - "##### Raw predictions - No fairness constraints, only maximizing balanced accuracy" - ], - "text/plain": [ - "" + "cell_type": "markdown", + "metadata": { + "id": "BDMk25uDEKan" + }, + "source": [ + "#### Obtain scores for validation and test sets" ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Balanced accuracy = 0.7473\n", - "Statistical parity difference = -0.3703\n", - "Disparate impact = 0.2687\n", - "Average odds difference = -0.2910\n", - "Equal opportunity difference = -0.3066\n", - "Theil index = 0.1123\n" - ] - } - ], - "source": [ - "# Metrics for the test set\n", - "fav_inds = dataset_orig_valid_pred.scores > best_class_thresh\n", - "dataset_orig_valid_pred.labels[fav_inds] = dataset_orig_valid_pred.favorable_label\n", - "dataset_orig_valid_pred.labels[~fav_inds] = dataset_orig_valid_pred.unfavorable_label\n", - "\n", - "display(Markdown(\"#### Validation set\"))\n", - "display(Markdown(\"##### Raw predictions - No fairness constraints, only maximizing balanced accuracy\"))\n", - "\n", - "metric_valid_bef = compute_metrics(dataset_orig_valid, dataset_orig_valid_pred, \n", - " unprivileged_groups, privileged_groups)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "#### Validation set" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "V5VmAEHaEKan" + }, + "outputs": [], + "source": [ + "dataset_orig_valid_pred = dataset_orig_valid.copy(deepcopy=True)\n", + "X_valid = scale_orig.transform(dataset_orig_valid_pred.features)\n", + "y_valid = dataset_orig_valid_pred.labels\n", + "dataset_orig_valid_pred.scores = lmod.predict_proba(X_valid)[:,pos_ind].reshape(-1,1)\n", + "\n", + "dataset_orig_test_pred = dataset_orig_test.copy(deepcopy=True)\n", + "X_test = scale_orig.transform(dataset_orig_test_pred.features)\n", + "y_test = dataset_orig_test_pred.labels\n", + "dataset_orig_test_pred.scores = lmod.predict_proba(X_test)[:,pos_ind].reshape(-1,1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nT335R3VEKan" + }, + "source": [ + "### Find the optimal parameters from the validation set" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0QP_Z4FfEKan" + }, + "source": [ + "#### Best threshold for classification only (no fairness)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "TBCG4ciYEKao", + "outputId": "9e521331-9e23-4a65-8854-11f317c532dd" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best balanced accuracy (no fairness constraints) = 0.7473\n", + "Optimal classification threshold (no fairness constraints) = 0.2674\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "num_thresh = 100\n", + "ba_arr = np.zeros(num_thresh)\n", + "class_thresh_arr = np.linspace(0.01, 0.99, num_thresh)\n", + "for idx, class_thresh in enumerate(class_thresh_arr):\n", + "\n", + " fav_inds = dataset_orig_valid_pred.scores > class_thresh\n", + " dataset_orig_valid_pred.labels[fav_inds] = dataset_orig_valid_pred.favorable_label\n", + " dataset_orig_valid_pred.labels[~fav_inds] = dataset_orig_valid_pred.unfavorable_label\n", + "\n", + " classified_metric_orig_valid = ClassificationMetric(dataset_orig_valid,\n", + " dataset_orig_valid_pred,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "\n", + " ba_arr[idx] = 0.5*(classified_metric_orig_valid.true_positive_rate()\\\n", + " +classified_metric_orig_valid.true_negative_rate())\n", + "\n", + "best_ind = np.where(ba_arr == np.max(ba_arr))[0][0]\n", + "best_class_thresh = class_thresh_arr[best_ind]\n", + "\n", + "print(\"Best balanced accuracy (no fairness constraints) = %.4f\" % np.max(ba_arr))\n", + "print(\"Optimal classification threshold (no fairness constraints) = %.4f\" % best_class_thresh)" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "data": { - "text/markdown": [ - "##### Transformed predictions - With fairness constraints" + "cell_type": "markdown", + "metadata": { + "id": "uLSLLz9LEKao" + }, + "source": [ + "#### Estimate optimal parameters for the ROC method" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "CHnwHA7MEKao" + }, + "outputs": [], + "source": [ + "ROC = RejectOptionClassification(unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups,\n", + " low_class_thresh=0.01, high_class_thresh=0.99,\n", + " num_class_thresh=100, num_ROC_margin=50,\n", + " metric_name=metric_name,\n", + " metric_ub=metric_ub, metric_lb=metric_lb)\n", + "ROC = ROC.fit(dataset_orig_valid, dataset_orig_valid_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "V_mjRe-MEKao", + "outputId": "45c22432-37ac-4653-cd78-18a4d0d2e8c3" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimal classification threshold (with fairness constraints) = 0.5049\n", + "Optimal ROC margin = 0.1819\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "print(\"Optimal classification threshold (with fairness constraints) = %.4f\" % ROC.classification_threshold)\n", + "print(\"Optimal ROC margin = %.4f\" % ROC.ROC_margin)" ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Balanced accuracy = 0.6051\n", - "Statistical parity difference = -0.0436\n", - "Disparate impact = 0.6107\n", - "Average odds difference = -0.0049\n", - "Equal opportunity difference = -0.0136\n", - "Theil index = 0.2184\n" - ] - } - ], - "source": [ - "# Transform the validation set\n", - "dataset_transf_valid_pred = ROC.predict(dataset_orig_valid_pred)\n", - "\n", - "display(Markdown(\"#### Validation set\"))\n", - "display(Markdown(\"##### Transformed predictions - With fairness constraints\"))\n", - "metric_valid_aft = compute_metrics(dataset_orig_valid, dataset_transf_valid_pred, \n", - " unprivileged_groups, privileged_groups)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "# Testing: Check if the metric optimized has not become worse\n", - "assert np.abs(metric_valid_aft[metric_name]) <= np.abs(metric_valid_bef[metric_name])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Predictions from Test Set" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "#### Test set" + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xrKBT_JtEKao" + }, + "source": [ + "### Predictions from Validation Set" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "jaNwAJVjEKap", + "outputId": "05ff8be0-0c2d-40c3-fb0f-422014a0c6f8" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Validation set" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Raw predictions - No fairness constraints, only maximizing balanced accuracy" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Balanced accuracy = 0.7473\n", + "Statistical parity difference = -0.3703\n", + "Disparate impact = 0.2687\n", + "Average odds difference = -0.2910\n", + "Equal opportunity difference = -0.3066\n", + "Theil index = 0.1123\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "# Metrics for the test set\n", + "fav_inds = dataset_orig_valid_pred.scores > best_class_thresh\n", + "dataset_orig_valid_pred.labels[fav_inds] = dataset_orig_valid_pred.favorable_label\n", + "dataset_orig_valid_pred.labels[~fav_inds] = dataset_orig_valid_pred.unfavorable_label\n", + "\n", + "display(Markdown(\"#### Validation set\"))\n", + "display(Markdown(\"##### Raw predictions - No fairness constraints, only maximizing balanced accuracy\"))\n", + "\n", + "metric_valid_bef = compute_metrics(dataset_orig_valid, dataset_orig_valid_pred,\n", + " unprivileged_groups, privileged_groups)" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "data": { - "text/markdown": [ - "##### Raw predictions - No fairness constraints, only maximizing balanced accuracy" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Cah4xxAXEKap", + "outputId": "3b2f3e3b-6970-4222-b404-852c55df3f52" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Validation set" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Transformed predictions - With fairness constraints" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Balanced accuracy = 0.6051\n", + "Statistical parity difference = -0.0436\n", + "Disparate impact = 0.6107\n", + "Average odds difference = -0.0049\n", + "Equal opportunity difference = -0.0136\n", + "Theil index = 0.2184\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "# Transform the validation set\n", + "dataset_transf_valid_pred = ROC.predict(dataset_orig_valid_pred)\n", + "\n", + "display(Markdown(\"#### Validation set\"))\n", + "display(Markdown(\"##### Transformed predictions - With fairness constraints\"))\n", + "metric_valid_aft = compute_metrics(dataset_orig_valid, dataset_transf_valid_pred,\n", + " unprivileged_groups, privileged_groups)" ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Balanced accuracy = 0.7417\n", - "Statistical parity difference = -0.3576\n", - "Disparate impact = 0.2774\n", - "Average odds difference = -0.3281\n", - "Equal opportunity difference = -0.4001\n", - "Theil index = 0.1128\n" - ] - } - ], - "source": [ - "# Metrics for the test set\n", - "fav_inds = dataset_orig_test_pred.scores > best_class_thresh\n", - "dataset_orig_test_pred.labels[fav_inds] = dataset_orig_test_pred.favorable_label\n", - "dataset_orig_test_pred.labels[~fav_inds] = dataset_orig_test_pred.unfavorable_label\n", - "\n", - "display(Markdown(\"#### Test set\"))\n", - "display(Markdown(\"##### Raw predictions - No fairness constraints, only maximizing balanced accuracy\"))\n", - "\n", - "metric_test_bef = compute_metrics(dataset_orig_test, dataset_orig_test_pred, \n", - " unprivileged_groups, privileged_groups)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "#### Test set" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "URUEY2y5EKap" + }, + "outputs": [], + "source": [ + "# Testing: Check if the metric optimized has not become worse\n", + "assert np.abs(metric_valid_aft[metric_name]) <= np.abs(metric_valid_bef[metric_name])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5ZtFhlFIEKap" + }, + "source": [ + "### Predictions from Test Set" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Ylh6DYw6EKap", + "outputId": "0adb3168-8b07-40fd-8ab6-0cedf6f3e93d" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Test set" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Raw predictions - No fairness constraints, only maximizing balanced accuracy" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Balanced accuracy = 0.7417\n", + "Statistical parity difference = -0.3576\n", + "Disparate impact = 0.2774\n", + "Average odds difference = -0.3281\n", + "Equal opportunity difference = -0.4001\n", + "Theil index = 0.1128\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "# Metrics for the test set\n", + "fav_inds = dataset_orig_test_pred.scores > best_class_thresh\n", + "dataset_orig_test_pred.labels[fav_inds] = dataset_orig_test_pred.favorable_label\n", + "dataset_orig_test_pred.labels[~fav_inds] = dataset_orig_test_pred.unfavorable_label\n", + "\n", + "display(Markdown(\"#### Test set\"))\n", + "display(Markdown(\"##### Raw predictions - No fairness constraints, only maximizing balanced accuracy\"))\n", + "\n", + "metric_test_bef = compute_metrics(dataset_orig_test, dataset_orig_test_pred,\n", + " unprivileged_groups, privileged_groups)" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "data": { - "text/markdown": [ - "##### Transformed predictions - With fairness constraints" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0tf5iP1qEKap", + "outputId": "21b8acdc-8806-47bd-8b2b-d13aacc7a75a" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Test set" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "##### Transformed predictions - With fairness constraints" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Balanced accuracy = 0.5968\n", + "Statistical parity difference = -0.0340\n", + "Disparate impact = 0.6932\n", + "Average odds difference = -0.0151\n", + "Equal opportunity difference = -0.0415\n", + "Theil index = 0.2133\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "# Metrics for the transformed test set\n", + "dataset_transf_test_pred = ROC.predict(dataset_orig_test_pred)\n", + "\n", + "display(Markdown(\"#### Test set\"))\n", + "display(Markdown(\"##### Transformed predictions - With fairness constraints\"))\n", + "metric_test_aft = compute_metrics(dataset_orig_test, dataset_transf_test_pred,\n", + " unprivileged_groups, privileged_groups)" ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Balanced accuracy = 0.5968\n", - "Statistical parity difference = -0.0340\n", - "Disparate impact = 0.6932\n", - "Average odds difference = -0.0151\n", - "Equal opportunity difference = -0.0415\n", - "Theil index = 0.2133\n" - ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "aAHHyobOEKaq" + }, + "source": [ + "# Summary of Optimal Parameters\n", + "We show the optimal parameters for all combinations of metrics optimized, datasets, and protected attributes below." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SdxWpeoLEKaq" + }, + "source": [ + "### Fairness Metric: Statistical parity difference, Accuracy Metric: Balanced accuracy\n", + "\n", + "#### Performance\n", + "\n", + "| Dataset |Sex (Acc-Bef)|Sex (Acc-Aft)|Sex (Fair-Bef)|Sex (Fair-Aft)|Race/Age (Acc-Bef)|Race/Age (Acc-Aft)|Race/Age (Fair-Bef)|Race/Age (Fair-Aft)|\n", + "|-|-|-|-|-|-|-|-|-|\n", + "|Adult (Valid)|0.7473|0.6051|-0.3703|-0.0436|0.7473|0.6198|-0.2226|-0.0007|\n", + "|Adult (Test)|0.7417|0.5968|-0.3576|-0.0340|0.7417|0.6202|-0.2279|0.0006|\n", + "|German (Valid)|0.6930|0.6991|-0.0613|0.0429|0.6930|0.6607|-0.2525|-0.0328|\n", + "|German (Test)|0.6524|0.6460|-0.0025|0.0410|0.6524|0.6317|-0.3231|-0.1038|\n", + "|Compas (Valid)|0.6599|0.6400|-0.2802|0.0234|0.6599|0.6646|-0.3225|-0.0471|\n", + "|Compas (Test)|0.6774|0.6746|-0.2724|-0.0313|0.6774|0.6512|-0.2494|0.0578|\n", + "\n", + "#### Optimal Parameters\n", + "\n", + "| Dataset |Sex (Class. thresh.)|Sex (Class. thresh. - fairness)|Sex (ROC margin - fairness)| Race/Age (Class. thresh.)|Race/Age (Class. thresh. - fairness)|Race/Age (ROC margin - fairness)|\n", + "|-|-|-|-|-|-|-|\n", + "|Adult|0.2674|0.5049|0.1819|0.2674|0.5049|0.0808|\n", + "|German|0.6732|0.6237|0.0538|0.6732|0.7029|0.0728|\n", + "|Compas|0.5148|0.5841|0.0679|0.5148|0.5841|0.0679|" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gyGBhpfDEKaq" + }, + "source": [ + "### Fairness Metric: Average odds difference, Accuracy Metric: Balanced accuracy\n", + "\n", + "#### Performance\n", + "\n", + "| Dataset |Sex (Acc-Bef)|Sex (Acc-Aft)|Sex (Fair-Bef)|Sex (Fair-Aft)|Race/Age (Acc-Bef)|Race/Age (Acc-Aft)|Race/Age (Fair-Bef)|Race/Age (Fair-Aft)|\n", + "|-|-|-|-|-|-|-|-|-|\n", + "|Adult (Valid)|0.7473|0.6058|-0.2910|-0.0385|0.7473|0.6593|-0.1947|-0.0444|\n", + "|Adult (Test)|0.7417|0.6024|-0.3281|-0.0438|0.7417|0.6611|-0.1991|-0.0121|\n", + "|German (Valid)|0.6930|0.6930|-0.0039|-0.0039|0.6930|0.6807|-0.0919|-0.0193|\n", + "|German (Test)|0.6524|0.6571|0.0071|0.0237|0.6524|0.6587|-0.3278|-0.2708|\n", + "|Compas (Valid)|0.6599|0.6416|-0.2285|-0.0332|0.6599|0.6646|-0.2918|-0.0105|\n", + "|Compas (Test)|0.6774|0.6721|-0.2439|-0.0716|0.6774|0.6512|-0.1927|0.1145|\n", + "\n", + "#### Optimal Parameters\n", + "\n", + "| Dataset |Sex (Class. thresh.)|Sex (Class. thresh. - fairness)|Sex (ROC margin - fairness)| Race/Age (Class. thresh.)|Race/Age (Class. thresh. - fairness)|Race/Age (ROC margin - fairness)|\n", + "|-|-|-|-|-|-|-|\n", + "|Adult|0.2674|0.5049|0.1212|0.2674|0.5049|0.0505|\n", + "|German|0.6732|0.6633|0.0137|0.6732|0.6732|0.0467|\n", + "|Compas|0.5148|0.5742|0.0608|0.5148|0.5841|0.0679|\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uU7vi8qpEKaq" + }, + "source": [ + "### Fairness Metric: Equal opportunity difference, Accuracy Metric: Balanced accuracy\n", + "\n", + "#### Performance\n", + "\n", + "| Dataset |Sex (Acc-Bef)|Sex (Acc-Aft)|Sex (Fair-Bef)|Sex (Fair-Aft)|Race/Age (Acc-Bef)|Race/Age (Acc-Aft)|Race/Age (Fair-Bef)|Race/Age (Fair-Aft)|\n", + "|-|-|-|-|-|-|-|-|-|\n", + "|Adult (Valid)|0.7473|0.6051|-0.3066|-0.0136|0.7473|0.6198|-0.2285|0.0287|\n", + "|Adult (Test)|0.7417|0.5968|-0.4001|-0.0415|0.7417|0.6202|-0.2165|0.1193|\n", + "|German (Valid)|0.6930|0.6930|-0.0347|-0.0347|0.6930|0.6597|0.1162|-0.0210|\n", + "|German (Test)|0.6524|0.6571|0.0400|0.0733|0.6524|0.6190|-0.3556|-0.4333|\n", + "|Compas (Valid)|0.6599|0.6416|-0.1938|0.0244|0.6599|0.6646|-0.2315|0.0002|\n", + "|Compas (Test)|0.6774|0.6721|-0.1392|0.0236|0.6774|0.6512|-0.1877|0.1196|\n", + "\n", + "#### Optimal Parameters\n", + "\n", + "| Dataset |Sex (Class. thresh.)|Sex (Class. thresh. - fairness)|Sex (ROC margin - fairness)| Race/Age (Class. thresh.)|Race/Age (Class. thresh. - fairness)|Race/Age (ROC margin - fairness)|\n", + "|-|-|-|-|-|-|-|\n", + "|Adult|0.2674|0.5049|0.1819|0.2674|0.5049|0.0808|\n", + "|German|0.6732|0.6633|0.0137|0.6732|0.6039|0.0000|\n", + "|Compas|0.5148|0.5742|0.0608|0.5148|0.5841|0.0679|\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "zq-eTEOlEKaq" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + }, + "colab": { + "provenance": [] } - ], - "source": [ - "# Metrics for the transformed test set\n", - "dataset_transf_test_pred = ROC.predict(dataset_orig_test_pred)\n", - "\n", - "display(Markdown(\"#### Test set\"))\n", - "display(Markdown(\"##### Transformed predictions - With fairness constraints\"))\n", - "metric_test_aft = compute_metrics(dataset_orig_test, dataset_transf_test_pred, \n", - " unprivileged_groups, privileged_groups)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Summary of Optimal Parameters\n", - "We show the optimal parameters for all combinations of metrics optimized, datasets, and protected attributes below." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Fairness Metric: Statistical parity difference, Accuracy Metric: Balanced accuracy\n", - "\n", - "#### Performance\n", - "\n", - "| Dataset |Sex (Acc-Bef)|Sex (Acc-Aft)|Sex (Fair-Bef)|Sex (Fair-Aft)|Race/Age (Acc-Bef)|Race/Age (Acc-Aft)|Race/Age (Fair-Bef)|Race/Age (Fair-Aft)|\n", - "|-|-|-|-|-|-|-|-|-|\n", - "|Adult (Valid)|0.7473|0.6051|-0.3703|-0.0436|0.7473|0.6198|-0.2226|-0.0007|\n", - "|Adult (Test)|0.7417|0.5968|-0.3576|-0.0340|0.7417|0.6202|-0.2279|0.0006|\n", - "|German (Valid)|0.6930|0.6991|-0.0613|0.0429|0.6930|0.6607|-0.2525|-0.0328|\n", - "|German (Test)|0.6524|0.6460|-0.0025|0.0410|0.6524|0.6317|-0.3231|-0.1038|\n", - "|Compas (Valid)|0.6599|0.6400|-0.2802|0.0234|0.6599|0.6646|-0.3225|-0.0471|\n", - "|Compas (Test)|0.6774|0.6746|-0.2724|-0.0313|0.6774|0.6512|-0.2494|0.0578|\n", - "\n", - "#### Optimal Parameters\n", - "\n", - "| Dataset |Sex (Class. thresh.)|Sex (Class. thresh. - fairness)|Sex (ROC margin - fairness)| Race/Age (Class. thresh.)|Race/Age (Class. thresh. - fairness)|Race/Age (ROC margin - fairness)|\n", - "|-|-|-|-|-|-|-|\n", - "|Adult|0.2674|0.5049|0.1819|0.2674|0.5049|0.0808|\n", - "|German|0.6732|0.6237|0.0538|0.6732|0.7029|0.0728|\n", - "|Compas|0.5148|0.5841|0.0679|0.5148|0.5841|0.0679|" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Fairness Metric: Average odds difference, Accuracy Metric: Balanced accuracy\n", - "\n", - "#### Performance\n", - "\n", - "| Dataset |Sex (Acc-Bef)|Sex (Acc-Aft)|Sex (Fair-Bef)|Sex (Fair-Aft)|Race/Age (Acc-Bef)|Race/Age (Acc-Aft)|Race/Age (Fair-Bef)|Race/Age (Fair-Aft)|\n", - "|-|-|-|-|-|-|-|-|-|\n", - "|Adult (Valid)|0.7473|0.6058|-0.2910|-0.0385|0.7473|0.6593|-0.1947|-0.0444|\n", - "|Adult (Test)|0.7417|0.6024|-0.3281|-0.0438|0.7417|0.6611|-0.1991|-0.0121|\n", - "|German (Valid)|0.6930|0.6930|-0.0039|-0.0039|0.6930|0.6807|-0.0919|-0.0193|\n", - "|German (Test)|0.6524|0.6571|0.0071|0.0237|0.6524|0.6587|-0.3278|-0.2708|\n", - "|Compas (Valid)|0.6599|0.6416|-0.2285|-0.0332|0.6599|0.6646|-0.2918|-0.0105|\n", - "|Compas (Test)|0.6774|0.6721|-0.2439|-0.0716|0.6774|0.6512|-0.1927|0.1145|\n", - "\n", - "#### Optimal Parameters\n", - "\n", - "| Dataset |Sex (Class. thresh.)|Sex (Class. thresh. - fairness)|Sex (ROC margin - fairness)| Race/Age (Class. thresh.)|Race/Age (Class. thresh. - fairness)|Race/Age (ROC margin - fairness)|\n", - "|-|-|-|-|-|-|-|\n", - "|Adult|0.2674|0.5049|0.1212|0.2674|0.5049|0.0505|\n", - "|German|0.6732|0.6633|0.0137|0.6732|0.6732|0.0467|\n", - "|Compas|0.5148|0.5742|0.0608|0.5148|0.5841|0.0679|\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Fairness Metric: Equal opportunity difference, Accuracy Metric: Balanced accuracy\n", - "\n", - "#### Performance\n", - "\n", - "| Dataset |Sex (Acc-Bef)|Sex (Acc-Aft)|Sex (Fair-Bef)|Sex (Fair-Aft)|Race/Age (Acc-Bef)|Race/Age (Acc-Aft)|Race/Age (Fair-Bef)|Race/Age (Fair-Aft)|\n", - "|-|-|-|-|-|-|-|-|-|\n", - "|Adult (Valid)|0.7473|0.6051|-0.3066|-0.0136|0.7473|0.6198|-0.2285|0.0287|\n", - "|Adult (Test)|0.7417|0.5968|-0.4001|-0.0415|0.7417|0.6202|-0.2165|0.1193|\n", - "|German (Valid)|0.6930|0.6930|-0.0347|-0.0347|0.6930|0.6597|0.1162|-0.0210|\n", - "|German (Test)|0.6524|0.6571|0.0400|0.0733|0.6524|0.6190|-0.3556|-0.4333|\n", - "|Compas (Valid)|0.6599|0.6416|-0.1938|0.0244|0.6599|0.6646|-0.2315|0.0002|\n", - "|Compas (Test)|0.6774|0.6721|-0.1392|0.0236|0.6774|0.6512|-0.1877|0.1196|\n", - "\n", - "#### Optimal Parameters\n", - "\n", - "| Dataset |Sex (Class. thresh.)|Sex (Class. thresh. - fairness)|Sex (ROC margin - fairness)| Race/Age (Class. thresh.)|Race/Age (Class. thresh. - fairness)|Race/Age (ROC margin - fairness)|\n", - "|-|-|-|-|-|-|-|\n", - "|Adult|0.2674|0.5049|0.1819|0.2674|0.5049|0.0808|\n", - "|German|0.6732|0.6633|0.0137|0.6732|0.6039|0.0000|\n", - "|Compas|0.5148|0.5742|0.0608|0.5148|0.5841|0.0679|\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.10" - } - }, - "nbformat": 4, - "nbformat_minor": 2 + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/demo_reweighing_preproc.ipynb b/examples/demo_reweighing_preproc.ipynb index 25b3a9af..3af0fb92 100644 --- a/examples/demo_reweighing_preproc.ipynb +++ b/examples/demo_reweighing_preproc.ipynb @@ -1,956 +1,1067 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### This notebook demonstrates the use of a reweighing pre-processing algorithm for bias mitigation\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "# Load all necessary packages\n", - "import sys\n", - "sys.path.append(\"../\")\n", - "import numpy as np\n", - "from tqdm import tqdm\n", - "\n", - "from aif360.datasets import BinaryLabelDataset\n", - "from aif360.datasets import AdultDataset, GermanDataset, CompasDataset\n", - "from aif360.metrics import BinaryLabelDatasetMetric\n", - "from aif360.metrics import ClassificationMetric\n", - "from aif360.algorithms.preprocessing.reweighing import Reweighing\n", - "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions\\\n", - " import load_preproc_data_adult, load_preproc_data_german, load_preproc_data_compas\n", - "from sklearn.linear_model import LogisticRegression\n", - "from sklearn.preprocessing import StandardScaler\n", - "from sklearn.metrics import accuracy_score\n", - "\n", - "from IPython.display import Markdown, display\n", - "import matplotlib.pyplot as plt\n", - "\n", - "from common_utils import compute_metrics" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Load dataset and set options" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "## import dataset\n", - "dataset_used = \"adult\" # \"adult\", \"german\", \"compas\"\n", - "protected_attribute_used = 1 # 1, 2\n", - "\n", - "\n", - "if dataset_used == \"adult\":\n", - "# dataset_orig = AdultDataset()\n", - " if protected_attribute_used == 1:\n", - " privileged_groups = [{'sex': 1}]\n", - " unprivileged_groups = [{'sex': 0}]\n", - " dataset_orig = load_preproc_data_adult(['sex'])\n", - " else:\n", - " privileged_groups = [{'race': 1}]\n", - " unprivileged_groups = [{'race': 0}]\n", - " dataset_orig = load_preproc_data_adult(['race'])\n", - " \n", - "elif dataset_used == \"german\":\n", - "# dataset_orig = GermanDataset()\n", - " if protected_attribute_used == 1:\n", - " privileged_groups = [{'sex': 1}]\n", - " unprivileged_groups = [{'sex': 0}]\n", - " dataset_orig = load_preproc_data_german(['sex'])\n", - " else:\n", - " privileged_groups = [{'age': 1}]\n", - " unprivileged_groups = [{'age': 0}]\n", - " dataset_orig = load_preproc_data_german(['age'])\n", - " \n", - "elif dataset_used == \"compas\":\n", - "# dataset_orig = CompasDataset()\n", - " if protected_attribute_used == 1:\n", - " privileged_groups = [{'sex': 1}]\n", - " unprivileged_groups = [{'sex': 0}]\n", - " dataset_orig = load_preproc_data_compas(['sex'])\n", - " else:\n", - " privileged_groups = [{'race': 1}]\n", - " unprivileged_groups = [{'race': 0}]\n", - " dataset_orig = load_preproc_data_compas(['race'])\n", - "\n", - "all_metrics = [\"Statistical parity difference\",\n", - " \"Average odds difference\",\n", - " \"Equal opportunity difference\"]\n", - "\n", - "#random seed for calibrated equal odds prediction\n", - "np.random.seed(1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Split into train, and test" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# Get the dataset and split into train and test\n", - "dataset_orig_train, dataset_orig_vt = dataset_orig.split([0.7], shuffle=True)\n", - "dataset_orig_valid, dataset_orig_test = dataset_orig_vt.split([0.5], shuffle=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Clean up training data" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "#### Training Dataset shape" + "cells": [ + { + "cell_type": "markdown", + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Trusted-AI/AIF360/blob/main/examples/demo_reweighing_preproc.ipynb)" ], - "text/plain": [ - "" + "metadata": { + "id": "kld2ROMiEqjG" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2wa7Lj9UEqAS" + }, + "source": [ + "#### This notebook demonstrates the use of a reweighing pre-processing algorithm for bias mitigation\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Hb5z2N-nEqAU" + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "# Load all necessary packages\n", + "import sys\n", + "sys.path.append(\"../\")\n", + "import numpy as np\n", + "from tqdm import tqdm\n", + "\n", + "from aif360.datasets import BinaryLabelDataset\n", + "from aif360.datasets import AdultDataset, GermanDataset, CompasDataset\n", + "from aif360.metrics import BinaryLabelDatasetMetric\n", + "from aif360.metrics import ClassificationMetric\n", + "from aif360.algorithms.preprocessing.reweighing import Reweighing\n", + "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions\\\n", + " import load_preproc_data_adult, load_preproc_data_german, load_preproc_data_compas\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.metrics import accuracy_score\n", + "\n", + "from IPython.display import Markdown, display\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from common_utils import compute_metrics" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Z1Q8uhveEqAV" + }, + "source": [ + "#### Load dataset and set options" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "aITNAPt7EqAV" + }, + "outputs": [], + "source": [ + "## import dataset\n", + "dataset_used = \"adult\" # \"adult\", \"german\", \"compas\"\n", + "protected_attribute_used = 1 # 1, 2\n", + "\n", + "\n", + "if dataset_used == \"adult\":\n", + "# dataset_orig = AdultDataset()\n", + " if protected_attribute_used == 1:\n", + " privileged_groups = [{'sex': 1}]\n", + " unprivileged_groups = [{'sex': 0}]\n", + " dataset_orig = load_preproc_data_adult(['sex'])\n", + " else:\n", + " privileged_groups = [{'race': 1}]\n", + " unprivileged_groups = [{'race': 0}]\n", + " dataset_orig = load_preproc_data_adult(['race'])\n", + "\n", + "elif dataset_used == \"german\":\n", + "# dataset_orig = GermanDataset()\n", + " if protected_attribute_used == 1:\n", + " privileged_groups = [{'sex': 1}]\n", + " unprivileged_groups = [{'sex': 0}]\n", + " dataset_orig = load_preproc_data_german(['sex'])\n", + " else:\n", + " privileged_groups = [{'age': 1}]\n", + " unprivileged_groups = [{'age': 0}]\n", + " dataset_orig = load_preproc_data_german(['age'])\n", + "\n", + "elif dataset_used == \"compas\":\n", + "# dataset_orig = CompasDataset()\n", + " if protected_attribute_used == 1:\n", + " privileged_groups = [{'sex': 1}]\n", + " unprivileged_groups = [{'sex': 0}]\n", + " dataset_orig = load_preproc_data_compas(['sex'])\n", + " else:\n", + " privileged_groups = [{'race': 1}]\n", + " unprivileged_groups = [{'race': 0}]\n", + " dataset_orig = load_preproc_data_compas(['race'])\n", + "\n", + "all_metrics = [\"Statistical parity difference\",\n", + " \"Average odds difference\",\n", + " \"Equal opportunity difference\"]\n", + "\n", + "#random seed for calibrated equal odds prediction\n", + "np.random.seed(1)" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "(34189, 18)\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "1gdWRyHiEqAV" + }, + "source": [ + "#### Split into train, and test" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "-y91WRx8EqAW" + }, + "outputs": [], + "source": [ + "# Get the dataset and split into train and test\n", + "dataset_orig_train, dataset_orig_vt = dataset_orig.split([0.7], shuffle=True)\n", + "dataset_orig_valid, dataset_orig_test = dataset_orig_vt.split([0.5], shuffle=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jS5e2yI1EqAW" + }, + "source": [ + "#### Clean up training data" + ] }, { - "data": { - "text/markdown": [ - "#### Favorable and unfavorable labels" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hNo6RAZVEqAW", + "outputId": "9048b4d5-2c26-45c4-884b-48b503483891" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Training Dataset shape" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(34189, 18)\n" + ] + }, + { + "data": { + "text/markdown": [ + "#### Favorable and unfavorable labels" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1.0, 0.0)\n" + ] + }, + { + "data": { + "text/markdown": [ + "#### Protected attribute names" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['sex']\n" + ] + }, + { + "data": { + "text/markdown": [ + "#### Privileged and unprivileged protected attribute values" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "([array([1.])], [array([0.])])\n" + ] + }, + { + "data": { + "text/markdown": [ + "#### Dataset feature names" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['race', 'sex', 'Age (decade)=10', 'Age (decade)=20', 'Age (decade)=30', 'Age (decade)=40', 'Age (decade)=50', 'Age (decade)=60', 'Age (decade)=>=70', 'Education Years=6', 'Education Years=7', 'Education Years=8', 'Education Years=9', 'Education Years=10', 'Education Years=11', 'Education Years=12', 'Education Years=<6', 'Education Years=>12']\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "# print out some labels, names, etc.\n", + "display(Markdown(\"#### Training Dataset shape\"))\n", + "print(dataset_orig_train.features.shape)\n", + "display(Markdown(\"#### Favorable and unfavorable labels\"))\n", + "print(dataset_orig_train.favorable_label, dataset_orig_train.unfavorable_label)\n", + "display(Markdown(\"#### Protected attribute names\"))\n", + "print(dataset_orig_train.protected_attribute_names)\n", + "display(Markdown(\"#### Privileged and unprivileged protected attribute values\"))\n", + "print(dataset_orig_train.privileged_protected_attributes,\n", + " dataset_orig_train.unprivileged_protected_attributes)\n", + "display(Markdown(\"#### Dataset feature names\"))\n", + "print(dataset_orig_train.feature_names)" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "(1.0, 0.0)\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "2BpxVxkREqAX" + }, + "source": [ + "#### Metric for original training data" + ] }, { - "data": { - "text/markdown": [ - "#### Protected attribute names" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "LXkJXK9uEqAX", + "outputId": "60fc518a-f5c8-462b-d1df-d9415104cb3f" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Original training dataset" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Difference in mean outcomes between unprivileged and privileged groups = -0.190698\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "# Metric for the original dataset\n", + "metric_orig_train = BinaryLabelDatasetMetric(dataset_orig_train,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "display(Markdown(\"#### Original training dataset\"))\n", + "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_orig_train.mean_difference())" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "['sex']\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "SYH2uoveEqAX" + }, + "source": [ + "#### Train with and transform the original training data" + ] }, { - "data": { - "text/markdown": [ - "#### Privileged and unprivileged protected attribute values" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "oriR9WsVEqAX" + }, + "outputs": [], + "source": [ + "RW = Reweighing(unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "RW.fit(dataset_orig_train)\n", + "dataset_transf_train = RW.transform(dataset_orig_train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "KzmPD_aFEqAX" + }, + "outputs": [], + "source": [ + "### Testing\n", + "assert np.abs(dataset_transf_train.instance_weights.sum()-dataset_orig_train.instance_weights.sum())<1e-6" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1jvdO21CEqAX" + }, + "source": [ + "#### Metric with the transformed training data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "1k_NnwKHEqAY", + "outputId": "8b43d1c5-cd8c-4855-f3bb-138e84fa2708" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Transformed training dataset" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Difference in mean outcomes between unprivileged and privileged groups = -0.000000\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "metric_transf_train = BinaryLabelDatasetMetric(dataset_transf_train,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "display(Markdown(\"#### Transformed training dataset\"))\n", + "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_transf_train.mean_difference())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Vkbk8fMhEqAY" + }, + "outputs": [], + "source": [ + "### Testing\n", + "assert np.abs(metric_transf_train.mean_difference()) < 1e-6" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5BtkCp43EqAY" + }, + "source": [ + "### Train classifier on original data" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "([array([1.])], [array([0.])])\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "i0GS7CqmEqAY" + }, + "outputs": [], + "source": [ + "# Logistic regression classifier and predictions\n", + "scale_orig = StandardScaler()\n", + "X_train = scale_orig.fit_transform(dataset_orig_train.features)\n", + "y_train = dataset_orig_train.labels.ravel()\n", + "w_train = dataset_orig_train.instance_weights.ravel()\n", + "\n", + "lmod = LogisticRegression()\n", + "lmod.fit(X_train, y_train,\n", + " sample_weight=dataset_orig_train.instance_weights)\n", + "y_train_pred = lmod.predict(X_train)\n", + "\n", + "# positive class index\n", + "pos_ind = np.where(lmod.classes_ == dataset_orig_train.favorable_label)[0][0]\n", + "\n", + "dataset_orig_train_pred = dataset_orig_train.copy()\n", + "dataset_orig_train_pred.labels = y_train_pred" + ] }, { - "data": { - "text/markdown": [ - "#### Dataset feature names" + "cell_type": "markdown", + "metadata": { + "id": "jkx3ZxtuEqAY" + }, + "source": [ + "#### Obtain scores for original validation and test sets" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "t91rkccAEqAY" + }, + "outputs": [], + "source": [ + "dataset_orig_valid_pred = dataset_orig_valid.copy(deepcopy=True)\n", + "X_valid = scale_orig.transform(dataset_orig_valid_pred.features)\n", + "y_valid = dataset_orig_valid_pred.labels\n", + "dataset_orig_valid_pred.scores = lmod.predict_proba(X_valid)[:,pos_ind].reshape(-1,1)\n", + "\n", + "dataset_orig_test_pred = dataset_orig_test.copy(deepcopy=True)\n", + "X_test = scale_orig.transform(dataset_orig_test_pred.features)\n", + "y_test = dataset_orig_test_pred.labels\n", + "dataset_orig_test_pred.scores = lmod.predict_proba(X_test)[:,pos_ind].reshape(-1,1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xYPWUCrLEqAY" + }, + "source": [ + "### Find the optimal classification threshold from the validation set" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "sltBSivLEqAY", + "outputId": "02ae46c7-41a9-494d-bf76-a9743a828482" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best balanced accuracy (no reweighing) = 0.7473\n", + "Optimal classification threshold (no reweighing) = 0.2674\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "num_thresh = 100\n", + "ba_arr = np.zeros(num_thresh)\n", + "class_thresh_arr = np.linspace(0.01, 0.99, num_thresh)\n", + "for idx, class_thresh in enumerate(class_thresh_arr):\n", + "\n", + " fav_inds = dataset_orig_valid_pred.scores > class_thresh\n", + " dataset_orig_valid_pred.labels[fav_inds] = dataset_orig_valid_pred.favorable_label\n", + " dataset_orig_valid_pred.labels[~fav_inds] = dataset_orig_valid_pred.unfavorable_label\n", + "\n", + " classified_metric_orig_valid = ClassificationMetric(dataset_orig_valid,\n", + " dataset_orig_valid_pred,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "\n", + " ba_arr[idx] = 0.5*(classified_metric_orig_valid.true_positive_rate()\\\n", + " +classified_metric_orig_valid.true_negative_rate())\n", + "\n", + "best_ind = np.where(ba_arr == np.max(ba_arr))[0][0]\n", + "best_class_thresh = class_thresh_arr[best_ind]\n", + "\n", + "print(\"Best balanced accuracy (no reweighing) = %.4f\" % np.max(ba_arr))\n", + "print(\"Optimal classification threshold (no reweighing) = %.4f\" % best_class_thresh)" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "['race', 'sex', 'Age (decade)=10', 'Age (decade)=20', 'Age (decade)=30', 'Age (decade)=40', 'Age (decade)=50', 'Age (decade)=60', 'Age (decade)=>=70', 'Education Years=6', 'Education Years=7', 'Education Years=8', 'Education Years=9', 'Education Years=10', 'Education Years=11', 'Education Years=12', 'Education Years=<6', 'Education Years=>12']\n" - ] - } - ], - "source": [ - "# print out some labels, names, etc.\n", - "display(Markdown(\"#### Training Dataset shape\"))\n", - "print(dataset_orig_train.features.shape)\n", - "display(Markdown(\"#### Favorable and unfavorable labels\"))\n", - "print(dataset_orig_train.favorable_label, dataset_orig_train.unfavorable_label)\n", - "display(Markdown(\"#### Protected attribute names\"))\n", - "print(dataset_orig_train.protected_attribute_names)\n", - "display(Markdown(\"#### Privileged and unprivileged protected attribute values\"))\n", - "print(dataset_orig_train.privileged_protected_attributes, \n", - " dataset_orig_train.unprivileged_protected_attributes)\n", - "display(Markdown(\"#### Dataset feature names\"))\n", - "print(dataset_orig_train.feature_names)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Metric for original training data" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "#### Original training dataset" + "cell_type": "markdown", + "metadata": { + "id": "1E85P7JpEqAY" + }, + "source": [ + "### Predictions from the original test set at the optimal classification threshold" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "8MQxVbSuEqAZ", + "outputId": "304dfde5-5248-43a4-f725-8277c110e9d9" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Predictions from original testing data" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 14%|█▍ | 14/100 [00:00<00:00, 134.43it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Classification threshold used = 0.2674\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 41%|████ | 41/100 [00:00<00:00, 131.04it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Balanced accuracy = 0.7417\n", + "Statistical parity difference = -0.3576\n", + "Disparate impact = 0.2774\n", + "Average odds difference = -0.3281\n", + "Equal opportunity difference = -0.4001\n", + "Theil index = 0.1128\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 67%|██████▋ | 67/100 [00:00<00:00, 127.49it/s]../aif360/metrics/dataset_metric.py:94: RuntimeWarning: invalid value encountered in double_scalars\n", + " return metric_fun(privileged=False) / metric_fun(privileged=True)\n", + "100%|██████████| 100/100 [00:00<00:00, 121.44it/s]\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "display(Markdown(\"#### Predictions from original testing data\"))\n", + "bal_acc_arr_orig = []\n", + "disp_imp_arr_orig = []\n", + "avg_odds_diff_arr_orig = []\n", + "\n", + "print(\"Classification threshold used = %.4f\" % best_class_thresh)\n", + "for thresh in tqdm(class_thresh_arr):\n", + "\n", + " if thresh == best_class_thresh:\n", + " disp = True\n", + " else:\n", + " disp = False\n", + "\n", + " fav_inds = dataset_orig_test_pred.scores > thresh\n", + " dataset_orig_test_pred.labels[fav_inds] = dataset_orig_test_pred.favorable_label\n", + " dataset_orig_test_pred.labels[~fav_inds] = dataset_orig_test_pred.unfavorable_label\n", + "\n", + " metric_test_bef = compute_metrics(dataset_orig_test, dataset_orig_test_pred,\n", + " unprivileged_groups, privileged_groups,\n", + " disp = disp)\n", + "\n", + " bal_acc_arr_orig.append(metric_test_bef[\"Balanced accuracy\"])\n", + " avg_odds_diff_arr_orig.append(metric_test_bef[\"Average odds difference\"])\n", + " disp_imp_arr_orig.append(metric_test_bef[\"Disparate impact\"])" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Difference in mean outcomes between unprivileged and privileged groups = -0.190698\n" - ] - } - ], - "source": [ - "# Metric for the original dataset\n", - "metric_orig_train = BinaryLabelDatasetMetric(dataset_orig_train, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "display(Markdown(\"#### Original training dataset\"))\n", - "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_orig_train.mean_difference())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Train with and transform the original training data" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "RW = Reweighing(unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "RW.fit(dataset_orig_train)\n", - "dataset_transf_train = RW.transform(dataset_orig_train)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "### Testing \n", - "assert np.abs(dataset_transf_train.instance_weights.sum()-dataset_orig_train.instance_weights.sum())<1e-6" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Metric with the transformed training data" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "#### Transformed training dataset" + "cell_type": "markdown", + "metadata": { + "id": "RXJvR_iGEqAZ" + }, + "source": [ + "#### Display results for all thresholds" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "cnCff_lAEqAZ", + "outputId": "b5c2884a-f512-4d87-c049-45e9743ba5d1" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAG2CAYAAABGcv+aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd4VFX6wPHvSW8QSELvSC9SBBHQDS7iIooFC6yiYgG7IspPReyNXcUuFlbExoKNRV1ARUVFUJGyCNJDTwgESAjp5fz+ODOQDCl3kpm5M5n38zzz3OSWc99Y4M0p71Faa4QQQgghhLBTiN0BCCGEEEIIIUmpEEIIIYSwnSSlQgghhBDCdpKUCiGEEEII20lSKoQQQgghbCdJqRBCCCGEsJ0kpUIIIYQQwnaSlAohhBBCCNtJUiqEEEIIIWwXZncAdgsJCdHR0dF2hyGEEEIIUa3c3Fytta6TnYpBn5RGR0eTk5NjdxgiyOzfvx+Apk2b2hyJEEKIQKKUyrM7Bm8J+qRUCDuMGTMGgKVLl9obiBBCCOEnJCkVwgb333+/3SEIIYQQfkVpre2OwVaxsbFahu+FEEIIEQiUUrla61i74/CGOjlRVgh/t2fPHvbs2WN3GEIIIYTfkOF7IWxw9dVXAzKnVAghhHCyJSlVSt0KTAaaARuAiVrrnyq5dzZwbQWXjndfK6WGAN9XcE9XrfUmT8QshCdNnTrV7hCEEEIIv+LzOaVKqdHAB8CtwDLH8Tqgm9Z6dwX3xwOuhUR/Bn7UWl/nuGcIJintDhwuc99BrXVJVfHInFIhhBBCBIq6PKfUjqT0V2Cd1np8mXNbgU+01g9YeH4wJpkdrLVe7jg3BJOUNtJaZ7gTjySlwg4pKSkAtG/f3uZIhBBCBJK6nJT6dKGTUioCOA342uXS18Agi82MBzY4E1IXvyul0pRS3yqlzq5FqEJ41fXXX8/1119vdxhCCCGE3/D1nNIkIBRIdzmfDpxT3cOOofwrANce1TTgFmAlEAFcDXyrlEquaK6qUmoCMAEgIiLCzR9BiNp77LHH7A5BCCGE8CuBtvp+LKZ39/2yJ7XWm4HNZU6tUEq1xSymOikp1Vq/BbwFZvjeS7EKUank5GS7QxBCCCH8iq/rlGYAJUATl/NNgP0Wnh8PfKq1PlztnfAr0NG98ITwjc2bN7N58+bqbxRCCCHcpJT6i1Lqc6XUPqWUVkqNs/BMT6XUD0qpPMdzDyullA/CPc6nSanWuhBYBQxzuTQMqGiO6HFKqdOBXsBMi6/rjRnWF8Lv3HTTTdx00012hyGEEKJuigPWA3cBedXdrJSqD3yDmU7Z3/HcZGCSF2M8iR3D988D7yulfsOUdroZaA68AaCUeg9Aa32Ny3MTgK1a66WuDSqlJgI7MTVPIzDD/BcDl3rlJxCilp5++mm7QxBCCFFHaa0XAgvheL336lwFxADXaq3zgPVKqS7AJKXU89pHpZp8npRqrecppRKBqZji+euBEVrrXY5bWrs+o5SqB4wBHq+k2QjgWaAl5jeCDcD5jn8pQnhcUUkpmblFNKoXWaPnBw2yWmxCeE1JCWzZYo5C1ETjxuYjROAbCPzkSEidvgKeANoCO3wRhC0LnbTWM4AZlVwbUsG5bExXdGXt/RP4p6fiE6Ks/KISNqRmsX7fUf5MPcqGtCy27D9GYUkpdw7tyKRhndxuc/369QD06NHD0+EKq154ASZPtjsKEcgefxweesjuKITwhKbAXpdz6WWu1d2k1J8kJCTI/uOinJJSTW5hCTmFxeQWlJBbVIJz5KJtiKJLs1Ci24RSWKzIOrCRj7/cQaM493pMJ06cCMCLL77o8fiFNT0/+YSY5s1JmTDB7lBEgMpp1Ypc+ftD+F6YUur3Mt+/5agqFPB8vqOTv5EdnURZn/8vlYlz11CqISxE0bNlPP3bJnBam4b0bBFPs/gonIsRS0o1d81dw5fr0njiou5cPbCt5fesXLkSgP79+3vjxxDVKS2FpCS49FKYaXXtpBBC2M/dHZ2UUseA27XWs6u45z0gUWt9fplz/YHfgPZaa+kpFcKXiktKee6rzXRuWp+HLuhKn1YNiY4IrfT+0BDFC6N7k19UykMLNhAdEcZlp7W09C5JRm22ZQscOQIDB9odiRBC+IMVwD+UUlFa63zHuWFAKmYhuU/4uk6pEH5r0fr97D6cy11DOzLolKQqE1Kn8NAQXr2yD2d1TOL/PvkfX65LtfSutWvXsnbt2tqGLGpqxQpzlKRUCFEHKaXilFK9lVK9Mblea8f3rR3Xn1FKfVvmkTlALjBbKdVDKTUKuB/w2cp7kOF7Gb4XAGitGfnqMnILSlgyKZmQEPfqBecWFnPtrN9YszuTzk3rnXQ9PDSEqPAQosJDiQoL5ctnbkJrGHLPq2TlFZGZW0RWXhHhoSG0ToihbWIMrRNjaZMQw+ntEmiVEOOpH1UATJgAH38Mhw5BiPxuLoQIHFaG75VSQ4DvK7j0rtZ6nKNM1BCtddsyz/QEXgNOB45gSnU+LkmpD0lSKgCWbc1g7Nu/Mm1UT8acflJVMkuy84t4euEmDmbnlzuvNRSWlFJQVEp+cQn5RSVk7NpCWIiiVcduxEeHH/8UFJew61Auuw7lkpaVR6mGepFhfD95CEluLqYSVTj1VGjRAhYtsjsSIYRwi7tzSgOJzCkVAnjzx+00rhfJJX1b1LiNelHhPDOqp8W7k6u9o7C4lHV7Mxn91i+8uGQLT15stW1RpaNHYf16s8hJCCGE35BxKxH01u/L4qetGVx/Zjsiw6qfR+oJK1euPL4CvzIRYSH0a5vAVQNa8+/f9rDtQLZPYqvzfvvNdF/LfFIhhPArkpSKoPfGD9upFxnGlQNqNmxfE5MnT2ayxcLtdw3tSEx4KM8s3OTlqILEihWgFAwYYHckQgghypDhexHUdh/KZeEfaYz/S3vqR4X77L2vvvqq5XsT4yK59ewO/GPxJpZvy2BQhyQvRhYEVqyAbt0gPt7uSIQQQpQhPaUiqM38KYWwkBCuH9zOp+/t0aOHW1uMXje4LS0aRPPUwo2Ulgb34sRaKS2FX36RoXshhPBDkpSKoJVxrICPft/DJX1a0KR+lE/fvXz5cpYvX275/qjwUP5veGc2pB5l/pp9XoysjpOi+UII4bdk+F7UeVm5RSzekMafqUc5klvEkdxCMnOLSMvKp7CklAnJ7X0e05QpUwBY6sa+2SNPbc6sZTt49qvNjOjZzFJxf+FCiuYLIYTfkqRU1Em5hcV882c6X/wvlR+2HKSoRFMvMoyEuAgaxkSQFBdBx8ZxnNkxiVMaxfk8vjfffNPtZ0JCFA+e340r3lzB28tSuP2vHb0QWR23YgU0aACdO9sdiRBCCBdSPF+K5weco/lF/G9PJmt3Z/K/vZlk5xeXu641/LEvi7yiEprWj2Jkr2Zc2KsFPVrURyn3dmryRze9/zvLtmbw+9Rh0lvqrp49oWVLKZovhAhYUjxfCJsVlZTyzMJN/Lj1INsPHkNrU9WnQ6M4EmIjyt2rFFzStwUX9mrO6W0T3N4y1Bd++OEHAJKTqy+i7+rKAW34akM6K3ce5i+dGnk6tLorKws2bIDLL7c7EiGEEBWQpFQEhJe/3cqsn3eQ3KkRF/VqTp/WDTm1VbxPyzh50iOPPAK4N6fUqX/bhkSEhvDztgxJSt0hRfOFEMKvSVIq/N6qXUd47fttXHZaS567vJfd4XjErFmzavxsTEQYfds0YNm2DA9GFASkaL4QQvg1KQkl/FpOQTGTPlpLs/hoHhnZze5wPKZ9+/a0b1/zVf9ndkhiQ+pRDucUejAqP/LFF7B3r2fbXLECuneH+vU9264QQgiPkKRU+LUn/7uR3Ydzef6KXtQL0KH6iixZsoQlS5bU+PnBjl2dlm+vg72lu3fDhReaXZdef90UvK8tKZovhBB+T5JS4be+3ZjOv3/bzYSz2jOgfaLd4XjUk08+yZNPPlnj53u2iKdeVBg/18Uh/NRUc0xKgltvheRk2LSpdm1u3gyZmZKUCiGEH5M5pcIvHTpWwH2frqNL03pMOreT3eF43Pvvv1+r58NCQxjYPrFuzis9cMAc582D9eth0iTo1QsefhhGjTLzQl0/1fnvf81RklIhhPBbkpQKv6O15oHP/uBoXjHv3zCAyLC6V4uzVatWtW7jzI5JfP1nOrsP5dI6McYDUfmJ9HRzbNIE+veH886DO+6AqVPNp6YSE6FT3fsFRwgh6gpJSoVfOZhdwP2fruPbTQeYMqILXZvVzUUpixcvBmD48OE1bsM5r3TZtgyuTGztkbj8grOntHFjc2zaFD7+GJYtM4uftC7/sapbNwiRGUtCCOGvJCkVfuObP9O5/9N1ZBcU89AF3bh+cFu7Q/KaadOmAbVLStsnxdIsPoqft2Vw5YA6lJSmp5sV8lFR5c+feaY98QghhPAJSUqF7XIKinniyz+Zu3IP3ZrV599jetOpST27w/KquXPn1roNpRSDOySxZGM6paXaL3euqpEDB8zQvRBCiKAiSamwVcrBY1w3eyW7D+dyy5BTuPucTkSE1f0h1qZNm3qknTM7JPHJqr38mXaUHi3iPdKm7dLTTwzdCyGECBqSlArbZOUWceO7v5OdX8y8CQM5vV2C3SH5zBdffAHAyJEja9XOoA6mVNaybRl1Jyk9cAC6dLE7CiGEED5W97ukhF8qLinl9n+vZs+RXN68+rSgSkgBpk+fzvTp02vdTuN6UXRuUq9u1StNT5fheyGECELSUyps8eR/N/LT1gz+eemp9G8bXAkpwCeffOKxtgZ3SOLDX3eRX1RCVHiAl88qKoJDh2T4XgghgpD0lAqfm/PrbmYv38mNZ7bjiv61r9cZiJKSkkhKSvJIW2d2TKSguJTVu454pD1bZTh6fKWnVAghgo4kpcKnfkk5xMML1pPcqREPjOhqdzi2+eyzz/jss8880tbp7RIJC1F1Y3cnZ+F86SkVQoigI8P3wmd2H8rllg9W0SYxhleu7ENoXSlhVAMvv/wyAKNGjap1W3GRYfRp3aBuzCt1Fs6XnlIhhAg6kpQKnzhWUMz4936nVMPb1/anflS43SHZasGCBR5tb3CHJF76diuXzPj5pGshShGiTF3TUKUIDwth7IDWnNvdM2WpPEp6SoUQImhJUiq8rrRUc/e8tWw7eIx3rzudtkmxdodku/h4z5ZvGtWnJev3ZVFQXHrSNa2hVGtKtaakVLMvI4cJ769iTP9WPHRBN2Ij/eiPAekpFUKIoOVHfxuJuurFJVv45s90HhnZjTM7emZxT6CbN28eAKNHj/ZIe60TY/jXtf0t3VtYXMoLS7bwxg/bWZFyiBdG96Zv64YeiaPW0tMhIsJsMyqEECKoyEIn4VVfrkvl5e+2cUW/lowb1NbucPzG66+/zuuvv27LuyPCQrhveBfmjj+D4hLN5W+s4IVvtlBccnIvq885txhVwTvfWAghgpXSWtsdg61iY2N1Tk6O3WHUSev3ZXHZG8vp3jyeOeMHEBkW4DU0PSg3NxeAmJgYW+M4ml/Eows28NmafZzeLoHXruxLo3qR9gV03nmmLNTKlfbFIIQQfkwplau1rpPz4KSnVHjFgex8Jrz3Ow1jInhj7GmSkLqIiYmxPSEFqB8VzvOje/Pi6N6s25vJBa/8xOrdNtY7PXBAFjkJIUSQkqRUeNSew7k8/sWfnP3sUg7lFPLW1f3s7XnzUx988AEffPCB3WEcd3GfFnx2y2AiwkIY8+YvzPl1tz2ByBajQggRtGT4XobvPeJ/ezKZ+VMKi9bvRwEXnNqMm4ecQpemsmClIkOGDAFg6dKltsbhKjO3kDvnruXHLQcZ078Vj17Y3Xdbl2oNkZEwaRJMm+abdwohRICpy8P3svpe1NrzX2/m5e+2US8yjBvPbMe1g9rSvEG03WH5tW+++cbuECrUICaCd8b154VvtvDq99tQSvHMqJ6+eXlmJhQVSU+pEEIEKUlKRa19tmYfA9sn8tY1p1EvyIviWxUe7r//nEJDFPf+rTOpWXl8uS6Vxy7sTkSYD2b6SOF8IYQIajKnVNTKgex89h7JY2jXxpKQumH27NnMnj3b7jCqNKJHM7Lzi1mRcsg3L5TC+UIIEdQkKRW1snpXJgB9/KX4eoAIhKT0zI5JxEaEsnh9mm9e6OwplaRUCCGCkiSlolbW7D5CRGgIPVrIgiZ3LF261O8WObmKCg/l7C6N+XpDOiWlPlgQ6ewpleF7IYQISpKUilpZtesI3VvUlzqkddTwHk05lFPI7zsPe/9l6elmJ6ck2YpWCCGCkSSlosYKi0tZty/Lf/ZNDyAzZ85k5syZdodRrbM7NyYiLIRF6/d7/2UHDpiENFR+wRFCiGAkSamosT/TjlJYXCpJaQ3MmzePefPm2R1GtWIjw/hLx0Z8tWE/Xq9pLIXzhRAiqElJKFFjq3eZ7Sj7tmlgcySBZ8mSJXaHYNnwHk1ZsjGddXuz6NXKi/+u09NlPqkQQgQx6SkVNbZ69xGax0fRLF4K5ddl53RtTFiI8v4Q/oED0lMqhBBBTJJSUWNrdmfSp40M3dfEjBkzmDFjht1hWNIgJoKBpySyeH2ad4fwpadUCCGCmiSlokbSj+azLzNP5pPW0BdffMEXX3xhdxiW/a17U3YeymVL+jHvvCA3F44dk55SIYQIYpKUiho5Pp+0tcwnrYlFixaxaNEiu8Ow7NzuTVAKFnmrkL7s5iSEEEFPklJRI6t3HyEiLITuzePtDkX4QON6UfRr05DF3ppXKoXzhRAi6ElSKmpk1a4j9GwRT0SY/CdUEy+99BIvvfSS3WG45W/dm7JpfzY7M3I837hsMSqEEEFPSkIJtxUUl7B+31GuHdTG7lAC1rfffgvAXXfdZXMk1g3v0ZQn/7uRj1ft4dK+Lctdyy0sIS0rn7SsPFIz89mflUdRiaZvm4ac0T6Brk3rExKiKm9cekqFECLoSVIq3LYh9SiFJVI0vzY+//zzmj9cXAxHjkCjRp4LyIKWDWM4tWU8r32/nde+317pfeGhiib1owD47x9mDmp8dDint0ugT+sGJ21JGxGquGjXXuqDJKVCCBHEJCkVbjtRNF+SUlu8+Sbcdx/s2OHzxPTVv/dlzZ4jJ52PDAulWXwUzRpEkRQbebxXNDUzj193HOKX7Yf5ZcchvvkzvcJ2i79dw5ioWP7Yn0f/tlEoVUWvqhBCiDpJklLhtjW7M2nRIPp4b5hw33PPPQfAvffe6/7Da9dCTg589BHcdpuHI6ta68QYWifGWL6/eYNoLunTkkv6mOH+YwXFlJSWr3V66FgBeStmcCAmniveXEHXZvUZN6gNl5/WquohfyGEEHWKLatUlFK3KqV2KKXylVKrlFJnVXHvbKWUruCT43JfsqOtfKVUilLqZu//JMFp9e4j0ktaSytWrGDFihU1ezglxRw//NBzAflIXGQY8dHh5T7tG8XRPTSPlp3bMG1UT7TW3PfpH8z5bbfd4QohhPAhnyelSqnRwEvA00AfYDmwSCnVupJH7gKauXxSgI/KtNkOWOhoqw/wDPCKUupSL/0YQSstK4+0rHypT1pLn376KZ9++mnNHt6+HcLCYMWKEwlqTWgNe/fCp5/CQw/BJ5+Y+ap2OHCA0KZNGXN6axbddRbtkmL5dmPFQ/1CCCHqJjt6SicBs7XWM7XWG7XWdwBpwC0V3ay1ztJa73d+gFOA9sDMMrfdDKRqre9wtDkTeBeowdioqMrqXZkAssjJLoWFsGcPjB1rvne3t1RrMyf1kkugRQto1QouuwyefBIuvxw6dIAXXoCjRz0fe1XS04+Xg1JKkdypEStSDpFfVOLbOIQQQtjGp0mpUioCOA342uXS18Agi82MBzZorZeXOTewgja/AvoppcJrEquo2OrdR4gMC6Frs/p2hxLQpk2bxrRp09x/cNcuKC2FIUMgOdkkpe7sRz9/Ptx8M/zxBwwdCi+/DL/+auaozp8PbdrApEnQsiXcfTfs91Kx/LKKi+HQoXIr75M7NSK/qJSVOw97//1CCCH8gq8XOiUBoYDruFw6cE51Dyul4oErgAdcLjUFllTQZpjjneX2RlRKTQAmAERERFgMXWxMO8ri9fs5taUUza+ttWvX1uxB53B9+/Zw1VUwYQKsWgX9+lX/bHExPPggdO1qktLQ8qWZuPhi81m1yvSWvvqqSVh//hm8uRo+I8Mk1mUK5w9on0BEWAg/bD7IWR19W2FACCGEPQItsxiLifn92jSitX5La91Pa90vLEwKEFSnuKSUGUu3ceGryygoLuHeczvbHVLAmzt3LnPnznX/QWdSesopZtg9IsL6EP5778GmTfDUUycnpGWddhp88AG89pqZt7pwoftxuqOCwvkxEWGc3jaBH7ce9O67hRBC+A1fJ6UZQAngupdgE8DKOOF44FOtteuY3v5K2ix2vFPUUMrBY1z+5gr+uXgzw7o14eu7kxnQPtHusILX9u0QFQVNm0LDhnD++TB3bvULlPLz4ZFH4PTTTW+oFdddZ5LfqVPNlAFvqWSL0eROjdiSfozUzDzvvVsIIYTf8GlSqrUuBFYBw1wuDcOsnK+UUup0oBflFzg5raikzd+11kU1i1Z88MsuRrz8EykHc3hpTG9eu7IvCbEy3cETnnjiCZ544gn3H0xJMUP3IY7/da+6ysz7/O67qp+bMcOstJ82zfpQfHg4PPqoqYv62Wfux2pVJVuMJnc2w/Y/bpHeUiGE8DtKRaLUVSj1PkptQamjKJWNUltRag5KjUOpaHeatGP4/nlgnFLqRqVUV6XUS0Bz4A0ApdR7Sqn3KnhuArBVa720gmtvAC2UUi862rwRGAc855WfIAi89v02pv5nPQPaJfL13X/hot4tZJcdD9q8eTObN292/8Ht201S6nT++RAfX/UQflYWPP00nHsunH22e+/7+9+hWzd4+GEo8dJK+Ep6Sjs2jqNp/SgZwhdCCH+iVCxKPQakAu8BVwIdgDggFlMlaTTwNpCKUk+gVKyVpn0+oVJrPU8plQhMxdQcXQ+M0FrvctxyUr1SpVQ9YAzweCVt7lBKjQBewJSWSgXu1FrXsBBkcHvjh+08+9VmLu7dnOlX9CZUdtXxuA8++MD9h7Q2PaVDhpw4FxVl5pbOmwevvw4xFey2NH26Wd3+9NPuvzM0FB5/3Lzjww/hmmvcb6M66elmbmx8fLnTztJQC9enUVxSSlhooE2BF0KIOmkb0BhwJgcZwDpOTJdMAk51HOOBKcANmA7IKtnyp7zWeobWuq3WOlJrfZrW+scy14ZorYe43J+ttY7TWv+zijZ/0Fr3dbTZTmv9hhd/hDpr5o8pTFu0iZG9mvPc5b0kIfUnBw/CsWNmnmdZV11lzn/++cnPHDgAzz8PV1xhFjDVxCWXQJ8+Zii/yAuzYQ4cMEP3FfTEJ3duRHZ+MWv3ZHr+vUIIIWqiCbAH01HYDa0bo/U5aD3G8TkHrRsD3Rz37OXkdT8Vkq4Hcdzby3bw1MKNnH9qM164opf0THnRww8/zMMPP+zeQ2XLQZWVnGzqilY0hP/UU2aRU03mrzqFhJji+jt2wKxZNW+nMmUK57safEoSIUrmlQohhLvc2dLdcf+VSqm1SqlcpdR+pdQHSqmmFdx6A9ABrR9F602VNqj1JrR+FDOcf6OVmCXrEADM/nkHT3z5J+f1aMqLo3tLQuple/bsYc+ePe49VLYcVFkhIWbu58KFZv5n2c+MGXD99dCpU+0CPu88GDTIJLf5+bVry5Wzp7QC8THh9GndkB8kKRVCCMvc3dJdKTUYU27zXaA7cDGmp/Pk3g6t30Fr63tSa12M1u9YuVWKdAo2pGbx6Bd/cm63Jrz89z6ES0Lqde+8Y+n/z/K2bzfHtm1PvnbHHZCaarYhLatfPzMntLaUMr2lf/2reVffvuWvR0eb3aDatDFbl4a7sZFaejr07Fnp5eROjXhhyRYO5xRK9QchhLDm+Jbuju/vUEoNx6y7cd2ACMzOmHu11i84vt+hlHoFeKXKtyj1HaDRemgF18xwoNaW/xKSpFTw8rdbqRcVxrOX95KE1J+lpJj96qMrqLDRqpUpeO9NZ58Nw4fDv/5V9X0hIdC8OfToYbYqHTas8jJUWlfZUwomKX3+my38tPUgF/VuUYsfQAgh6r4yW7q7ViCqakv3n4GnlVIjgS+BRMwC8+p2TxkCVLbX9aNAKZUsUq9I0CelCQkJLF261O4wbJNfVEqPkGyGnhbFml9/tjucoDFzpvnldfz48Zaf6b16NSQmstbG/17VvfcSVkHMYXl5RO7fT1R6OlGOY8Pffyfyb3/jaJcu7Bo7lkMDB56or+p87tgxziwsZFt2Nnur+Lnu61VC9o51LM3c6ukfSQghAk2YUur3Mt+/pbV+q8z3bm/prrVeoZQagxmuj8bkh98A19YoQqUaOL9y57GgT0oPHz7MkLIldoLMze+v4uftRSy776/ER7sx5CpqZc6cOQDu/bd36BAMGxY4/70WFMB771F/2jR6Tp1qhujvugsaldnLfr/ZyK3DoEF0qOLn+uzfa1i+4RC/TUkmRCpCCCGCW7HWup8nG1RKdcMM1T8BfIUp2fks8CZwjcvN1+KarJph/LLaOI5H3Ikj6JPSYPZn6lEWb9jPXUM7SkLqY2+99Vb1N5WVlwf79p288t6fRUbC+PFmu9K5c00lgBsrWYDpunjLRXKnRnz+v1Q27j9Kl6b1KSoppbCklKLiUkorGzhyER8dTkSYTE8RQtR5NdnS/QHgN631s47v1ymlcoCflFJTtNZ7y9zblvLD9gpIdmnP2Xuwwp3AJSkNYi9/u5V6kWFcP7id3aGI6uzcaY6BlJQ6hYXB2LFw5ZWwfj0UuyzajI2ttjrAWZ2SADj/5WU1DuOURrF8fvuZxEbKH3tCiLpLa12olHJu6f5xmUvDgMo2FYrBJLJlOb+v7Ld5RfnEtKxDwC/AHVZidpI/nYPUxjTTS3rn0I7Ex0gvqa/de++9ADz3nMWdcCsrBxVIQkLg1FNr9GjjelH887JT2X0ol/DQEMLDFBGhIYSHhlgazj+aV8SzX23m5W+38sBpEvQhAAAgAElEQVSIrjWKQQghAsjzwPtKqd8wi5huxmVLdwCttXNo/gtgplLqFk4M378IrNZa7y7XstaPAY9hGirFrL73yDCUJKVBytlLeoP0ktoiLy/PvQec5aACsafUQ67o16pWz+86lMPby3Ywqm9LOjet56GohBDC/7i7pbvWerZjS/fbgelAFvAdcF81r7rOk3ErrS1OyKqjYmNjdU5Ojt1h+NTGtKOc99JP3Dm0I5OG1bKouvCNiRPh7bfh6NHKyyuJKh3OKeSv05fSqXE95t10Bkr+OQohApBSKldrHWt3HAAo1Q5oBRxE641lzncFGgF70HqH1eZk1n8QeuU76SUNONu3m15SSaRqLCE2ggfO68JvOw/zyaq91T8ghBCiOq8B3wOnu5zv5zj/qjuNSVIaZPYczmXhH/u5bnBbmUtqo4kTJzJx4kTrD6SkBPZ8Uj9x+WmtOK1NQ55ZtIkjOYXVPyCEEKIqzu39FrmcX4xZ/OSy/V/VJCkNMjsPmakKZ3ZsVM2dwm+UlpqkNIjnk3pKSIjiyYt7kJVXxD+/2mR3OEIIEegaOo75Luedv/UnuNOYLHQKMgezCwBIipM9xO304osvWr95/37Iz5ek1EO6NqvP9YPbMvOnHVzm6DkVQghRI0cwc0cvB94uc/7SMtctk57SIJNxzCSljepF2hyJsKwulIPyMxPP6USz+Cim/mc9wb7YUwghauEXzDD9DJR6G6XuQal/Aa9japj+4k5jkpQGmYxjhUSGhRAnBcRh61ZYuNCWV992223cdttt1m6WclAeFxsZxq1nd2Bj2lFSMoKr+oYQQnjQS5jkMwwYB/wTUyYq3HH+BXcak6Q0yGRkF5AUFynlcADuvhtGjTJ7tPtYdHQ00dHR1m5OSTGF59u0qf5eYdmgUxIB+H3nYZsjEUKIAKX198BEoAjTY+r8FAJ3o/UP7jRnqbtMKQZoza9uhir80MFjBTJ0D5CZCV9/DUVFsGYNnHGGT19veScnMD2lrVpBhMwD9qT2SbEkxkbw244jjO7fuvoHhBBCnEzrV1DqM2A40ARIBxaj9T53m7I6hrtCKf4A/gV8oLV7E1eF/ziYXUDLhjF2h2G/L74wCSnA8uU+T0rdIuWgvEIpRb+2DVkpPaVCCFE7JgF9u9r7quHO8H0PzD6o+5TiQ6U4u7YvF76XcayQRvWkx41PPoGWLaFtW5OU+tiECROYMGGCtZudhfOFx/Vvm8Duw7mkH3WtZiKEEMISpRJQ6k6Ueg2lZrl83EpUrfaUPg9cAbQEooAxwBilSMFkxrO1Zr87Lxa+V1KqOZxj5pQGtaNH4auv4JZb4OBB+P570NqnuyUlJiZau/HYMThwQJJSLzm9nSmh99uOw4zs1dzmaIQQIsAodQqwDGhc0VXMYqcbrDZnqadUa+7VmtbAXzDL/A86XnYK8BSwWyk+VoreVl8sfO9wTiGlWspB8d//msVNl10GgwZBairs3u3TEJ555hmeeeaZ6m/c4dgyWIbvvaJbs/rERITKEL4QQtTMo5h5pKqCj9vcWn2vNcu05jagP1B2RVUYMAr4VSkuqkkgwvucNUqDvqf044+hWTMYONAkpWDLEL4lUg7Kq8JCQ+jbuiErd8o0eSGEqIFkTG/oU47vNXAhpj7pFuA8dxpzKylVimFK8SmwDdNrCiYbXgOkYOpSPVXJ48JmkpRihsMXLYJLLzVllnr0gLg4nyel1113Hdddd131N0rhfK/r3zaBTfuPkpVXZHcoQggRaJo4jtOPn9H6S+DvQCfMinzLLCWlSjFZKbYCi4GLOVEU9T9AstacBvQGjjqCEH5IthjFFMvPzzdD9wBhYTBggM+T0latWtGqVauqb9Iali6FhARoKFthekv/dg3RGlbvkt5SIYRwk3OP+6OASTKUaglkO85f5U5jVhc6/QOThCrHi2cBL2vNTucNWpOjFPuBju4EIHxHthjFrLpv0gTOPPPEuYED4ZlnTC9qXJxPwnj88cerv2nOHFO66umnvR9QEOvTqiFhIYrfdh7m7C4VzdUXQghRiQygNZAA7AXaAwtxJqjgVsLhzvD9DuBuoKXWTCqbkJbxV0dAwg8F/RajublmkdOoURAaeuL8oEFQUgIrV9oXm6vdu+G220xs//d/dkdTp0VHhNKjRTwrd8hiJyGEcNMGx7Ez8A2m87I70BfTmbnMncasJqWXAB215iWtOVbZTVqTqjW73AlA+E7QbzG6aJFJTJ1D907OwvnuDOFrbeZ7al2jUMaOHcvYsWMrvlhaCuPGmUT5/ffLJ9DCK05vl8C6vVnkF5XYHYoQQgSS54EpQC7wGLCRE6vvNwF3utOY1aR0KdBKKZLKnlSKJKVorRTx7rxU2OPgsQKSgn3oPikJ/vKX8ucbNoRu3awnpTt2wAUXmMVHt99ukkg3de7cmc6dO1d88aWXTO3UF1+UVfc+0r9tAoUlpazbm2V3KEIIETi0/g6t/4HWa9A6HbPRUh+gJ3AqWqe405zVpHQWZvj+SpfzYxzna721lPC+g9kFNArWlfd5efDll3DJJWZxk6tBg2DFiqoTzMJCM/e0e3f48UcYORJmzICbbjK9mm546KGHeOihh06+sH49PPAAXHghXH+9W22KmuvXxiwkk3qlQghRA0olotQlwI2YaZz70drtoSerSekAx/FTl/OfYbpoByD8XlBvMfr112Yhk+vQvdOgQXDkCGzeXPH1n36CPn1gyhQ47zzYuBEWLICpU+Ff/zLD7cXF1uMpKYEilxJEBQUwdizUrw8zZ/p0h6lg1zA2go6N4/hN5pUKIYR7lHoUs8jpE+ANx3EvSj3iblNWV7w0chwzXc5nuVwXfiqotxgtLYXXXzellc4+u+J7yhbR79q1/LUPPzTJYps2ZjX8BRecuPbEExAVZZLTggJzb3h45XH8+CPMmcOY2bOhqIi5MTEQH28+WpukeMECaCyrwH2tf7sEvlibSkmpJjREfiEQQohqKTUZeLiCK5HAwyh1DK2nV3C9QlaT0mygIXAuML/M+XMdx0oXPwn/4NxiNOiSUq1h0iSz1/0LL1SeMHbqZJLW5cvhhjLb9KakwC23mBJSixdDbOzJzz74oElM773XJKYTJ5a/XlhoemrnzYN9+yA2lt7du5v5rb16QVaW+WRmwo03mqF74XOnt01gzq+72Zh2lB4tZJq8EEJYcJvjmIfJD3djSkRdAkQDd1C2sH41rCalq4FzgFlK0R2zuqorMAmz5H+V1RcKewRtjdLnnjMLhyZOhLvuqvw+pUxvadnFTsXFcNVVZuenDz+sOCF1uucek5jefjt8/vnJ18PDYcQImD4dRo7k/piYmv9Mwiv6t0sA4PedhyUpFUIIa5pg8sCL0HrJ8bNKDQO+Atwa9rOalL6BSUrrY5b8H3+tI5g33Hmp8L2g3GL0gw9Mjc/Ro00yWN0czUGDzGKow4dNr+kTT8Avv8DcudC6dfXvu+02+Otf4cCB8ueVgp49ZVcmP9eiQTTN46NYufMI4wa3szscIYQIBBuBXpi97sta4Tiud6cxS0mp1nymFM9jekZdTde63JC+8EMnktIgWej09ddw3XVmDum775rezuo455X+8ouZ4/nkk3DNNSaptapr15PnpFbg0ksvBeDTT13XDgo79W+XwPLth9h2oPoZSZFhIbRKkB5vIURQmwp8DtwK/LPM+VuBIkwNU8ssb+2jNfcqxTzgQkx3bTrwudb40TY4ojLH972vC8P3RUWQnW3mYR49enI5prQ0GDPG1B6dPx8iLf7M/fubQvWLFpkFTW3bwiuveDx8gIEDB3qlXVE7Z7RPZMHaVM55/gdL9089vys3niW1ZIUQQWsyZtH7Myh1O7AHaOn4HASmoJQzMdVoPbSqxpSu4Y40dUVsbKzOycmxOwyve3rhRt5dvpNNTwwPzB2dcnLMHvXbtpmao9Vp08bMD23e3L339OsHq1aZ5HTZshO7PYmgUFBcwvebDlJYUv2GCB//voeVOw/zzd3J0mMqhPAZpVSu1rqKRQ4+pFQpZhpntXdiktIqtyi03FOqFGHACMz+ptGu17XmcattCd8L+C1GFy2CP/4wBeXbtjXD6/XrQ716Fa+oHzgQGtWgUtmgQSYpfeQRSUiDUGRYKMN7NLV0b782DRn2/A88vGA9s8b1D9z/t4QQonY89oefpaRUKRpjthqtZF9EAElK/VnAbzE6f74pofTmmxXvyOQpt95qFiQ98ID33gFc6Cj79HlFK/VFQGjeIJq7h3Xiyf9uZNH6/Yzo2czukIQQwre0troJkyVWG3sM6ILJhiv6CD8X0FuMFhaaVfEXXujdhBSgSxd47DGvv2fo0KEMHVrl1BoRAMYNaku3ZvV57IsNZOcXVf+AEEKISln9m/dczJyB2cB1jq/vwhRF1cA0bwQnPCfjWCF9WjewO4ya+e47s6DpkkvsjsRj7qqqZqoIGGGhITw9qieXzPiZ6V9v4dELu9sdkhBC+JZSIZjt5ltjdnIqT+v3rDZlNSlt4Tjej0lK0ZpXleJ74A/MKivhpwJ+i9H58yEuDs45x+5IhDhJ71YNGDugDe+t2MmlfVvSs6UU3hdCBAmlugILgFMquUMDlpNSq8P3zpo7hzB1p1CKRsAux/kJVl8ofC+gtxgtKTF7wY8YYXZMqiPOO+88zjvvPLvDEB4yeXhnEuMimTL/D0pKg7uiiRAiqMwAOlD59E63pnha7Sk9hOktjQf2Y3pGPwTyHddlqxo/FtBbjP7yC6Sn16mhe4CRI0faHYLwoPpR4Tx8QTfu+PcaXv52K3cP62R3SEII4QunYXpD/wMsBgpr05jVpHQzJik9BfgRuApwrtLQwOraBCG8K6C3GP3sM4iIMD2ldcitt95qdwjCwy44tRnfbzrAS99uJTI8hFuHdLA7JCGE8LZ0oD0wDq2za9uY1eH7mcBbQBRmJf5BTnTLZgATaxuI8J6A3WJUazOfdOhQU5NUCD+mlOLZy3txUe/m/HPxZl5fut3ukIQQwtuexuSC96JUrXu+LPWUas1HwEfO75WiI3A2UAz8rDWZtQ1EeE/AbjG6bh3s2AFT3No6NyCc41i0tWTJEpsjEZ4UGqKYfnkvtIZ/LN4EwC1DKpv/L4QQAU7rd1DqImAqcB9KHcDkhsfvQGvLfwhWm5QqRSTwp+Pb87Vmk9Ycxay2EgEg41ghkWEh1Iv0co1PT5s/H0JCTH3SOmb06NF2hyC8JCw0hOev6IXGJKZKwc3JkpgKIeogpR4ALsRM5YzgRLUmcG4t6oZqsxStKVCKRKAekOJO48I/BOwWo599BoMHQ+PGdkficePHj7c7BOFFYaEhvHBFLwCmLdrE4vX7iQit2cYnSfUiuHVIB3q0kFJTQgi/c4fjqFyONWL1T0nnGGOv2rxM2CMgtxjdvt3sdV/HVt2L4OFMTMef1Y7o8FBCQ1SNPiu2H+KCV5Zx57/XsOdwrt0/lhBClBWH6Q29BIhB6xCXT6g7jVkdz30RSAb+rRQPAmuBvLI3aM1ud14sfOdgdgEtG0bbHYZ75s83xzqalA4ZMgSApUuX2hqH8K6w0BAePL9brdo4ml/Emz9s5+1lO1i0Po2xZ7Th9rM7kBiI1TSEEHXN58DfgZVonV/dzdWxmpT+iMmEE4A5FVzXbrQlfCwgtxidPx/69IG2be2OxCvGjRtndwgiQNSPCmfy37pwzcC2vLhkC+8u38ns5TsJreF0nNAQxeMXdWd0/9YejlQIEYQ+wWxFvwilXgJ2Un6hE2j9o9XGlNbVz0FVitJqbtFa41YXrb+IjY3VOTk5dofhNSWlmo4PLuS2sztwz7md7Q7HmpQU6NABHnsMHnrI7miE8CvbDmTz+f/SKCmt7o/liv20NYOdGTn89H9/JT4m3MPRCSG8TSmVq7WOtTsOAJQqperFTBqtLXdaWr3xXasNCv9yJDfAthjNzYXLL4d69eDqq+2OxmuKiooACA+XpEC4p0PjekwaVq/Gz5/f8yjnv/ITr/+wnfvP6+LByIQQQcpjq6it1im9zlMvFL51vEZpICSlWsP48bBmDXz+eZ0dugcYNmwYIHNKhe91a16fi3u34J2fd3DtoDY0iw+w+eZCCH/i0U5LmQdaxwXUvvfTp8OcOfDkk3DBBXZH41U33nij3SGIIDZpWCe+XJfKS0u2Mu3SU+0ORwgRqLT2aKelpaRUKWZVc4vWmhs8EI/wML/aYnTrVpg5E/7+d7OIqayvvoL77oPLLquTOzi5Gjt2rN0hiCDWKiGGsWe04d3lO7nxrPZ0aBxnd0hCCOHWQqfKblS4udBJKXUrMBloBmwAJmqtf6ri/gjMFlZXA82BdOA5rfXLjuvjgHcqeDRaV1OioK4vdJr5YwpPLdzIukfPpX6UzfMXJ0+G554zX591Ftx1F1x0EezcCf37Q6tWsHw5xNX9vyBzc029yZiYGJsjEcHq0LECkp9dyuAOibx5dT+7wxFCWGT7QielZmEWMN3g+Loq5j6L3Bm+98hEVqXUaOAl4FZgmeO4SCnVTWtdWa3TuUBLYAKwFWgCuE6EygXK7eVXXUIaDA4eK/CfLUZXr4aePeHaa+HVV02vaOvWEBZmthNdsCAoElKAESNGADKnVNgnMS6S8We154UlW1i9+wh9Wze0OyQhRGAYB5QCNzi+rq5303JSanVHp3Yun47A3zBJZQ7wV6svBCYBs7XWM7XWG7XWdwBpwC0V3ayUOhcYCozQWn+jtd6ptf5Va73U5Vattd5f9uNGTHWW32wxqrVZwHTGGXDPPbBtm6lF2r497NsHH30E7drZG6MP3XLLLdxyS4X/yQvhMzee1Y6kuAj+sWgTVkbNhBDCQbl8XdnHLVZX3++q4PR2pVgBZGASyh+qa8cxDH8a8JzLpa+BQZU8djGwEpiklLoGs5PUImCK1vpYmfuilVK7gFDMjlMPaa3XVBdTXec3W4zu2gVHjkDfvub70FC4+GLzKSqCICuNNHr0aLtDEILYyDDuHNqRhxdsYOnmg5zdpbHdIQkh/F+7Sr6uNas9pZUJw3TbDrd4fxImaUx3OZ8ONK3kmfbAmUAv4FLgdsf7Zpe5ZzNwPXARZrurfOBnpVTHihpUSk1QSv2ulPq9uLi4olvqjIxjhTTyh0VOaxy/H7gucIKgS0gBsrKyyMrKsjsMIRjTvzVJcZEsWLvP7lCEEIFA611ovavc11V93FCb1fdRwGAgEvDm364hmMT3Sq11lolH3Q58pZRqorVO11qvAFaciFctx/SW3gHc6dqg1vot4C0wC528GLvtDmYX0LtVvN1hmPmkoaFwqpSfAbjooosAmVMq7BcRFkLrhGgOOip1CCGEXayufhlHxRNZnfMFFlpsJwMowSxUKqsJUNkc0DRgnzMhddjoOLbm5F5XtNYlSqnfMXNfg1ZJqeZwToF/FM5fswa6dIFoKdQNcOedJ/2uJIRtkuIi2XUo1+4whBBBzp3h+4omsBZghtEnWmlAa10IrAKGuVwaBiyv5LGfgeZKqbLLsjs5jhV2CyuzqudUTEIbtPxqi9HVq0/MJxWMGjWKUaNG2R2GEIBZiZ8hPaVCCJtZ7SmtaCJrgdaV9m5W5XngfaXUb5iE82ZM7dE3AJRS7wFora9x3D8HeAh4Ryn1KNAAU1LqE631AcczjwC/YMpF1ccM2Z9KJSv6g4XfbDG6fz+kpVU8nzRIZWRkAJCUlGRzJEJAo7gIDucWUlxSSlhobZcaCCFEzdRm9X2NaK3nKaUSMcXwmwHrMeWenO9o7XL/MaXUOcArmFX4R4D/APeXua0BZo5oU8z81jXAX7TWv3kq7kCUftSUabV9i1HnIifpKT3usssuA2ROqfAPSfUi0RqO5BbZ/+eFECJoWV3oNBw4HVijNV+UOX8h0Bv4TWsWW32p1noGMKOSa0MqOLcZOLeK9u4G7rb6/mCQU1DMtEWbqB8VRke7txB0JqW9e9sbhx+555577A5BiOOcoykZxwokKRVC1JxS0WidV9PHrQ7fPwwMAM5zOX8MeBSz8t1yUiq8S2vNvR//jy3p2bxz3ek0jLW5JNTq1XDKKRDvB1UA/MTIkSPtDkGI48ompUII4RZTfvNZzPqgSCAMpV7ETKecjtYbrDZlNSnt4jiucDnvHB7vavWFwvte/W4bi9bv58ERXUnu1MjucExPqQzdl7N/v5mO3bRpZeV5hfCdREctY0lKhRBuUaoNJjdsiFkA76zUVARci1lw/qDV5qzOaI9xHF3Hgeu5XBc2+3rDfqZ/s4VL+rTgxrP8YNvOzExISZGk1MWYMWMYM2aM3WEIAZTpKc0utDkSIUSAeRRIwCShZX2CSVLPcacxqz2laZgFSA9idlRymuI4prrzUuEdW9KzuXveWk5tGc8zo3rav989wNq15igr78u5//77q79JCB+pHxVGRGgIGTnSUyqEcMu5mN7RvwHflzn/h+PYxp3GrCalS4AbgFuU4lzMtp6dgVMcwSxx56XC8w7nFDL+vd+JiQzjrav7ERUeandIxurV5ihJaTnDh1vdmVcI71NKkRQXIT2lQgh3OecIutaad/aKNXSnMavD99Mwi5rAJKIjHEcF5DiuCxtorVn4RxrnvvAjaZn5vDG2L03jo+wO64Q1a6B5c2jiuolXcNuzZw979uyxOwwhjkuqJwX0hahLlFK3KqV2KKXylVKrlFJnVXN/hFLqccczBUqp3Uqp6rYfPOw4tnU5f6HjeMidmK3WKd3u6CF9m/KLmv4EbtSaFHdeKjxjf1Y+Dy1Yzzd/ptOjRX1mX9efHi38bIW77ORUoauvvhqQOqXCfyTGRnAgW5JSIeoCpdRozEZDtwLLHMdFSqluWuvdlTw2F2gJTMBsRtQEqG5v8BWYBHROmZe/CVyDGUlf5k7cVofv0ZpfgO5KcYoj0HSt2e7Oy4RnlJZq5vy2m38s2kRRaSlTRnTh+sHt/G8nltxc2LQJLr3U7kj8ztSpU+0OQYhykuIi2ZiWbXcYQgjPmATM1lrPdHx/h1JqOGanywdcb1ZKnQsMBU7RWmc4Tu+08J5/ABcAfTmx8v5GzEh6CTDdnaAtJ6VOjkRUklEbzfwphWcWbWJwh0SevqQnbRJj7Q6pYuvWQWmp9JRW4Jxz3FqQKITXJdWL5FBOAVpr/1gkKYSoEaVUBHAa8JzLpa+BQZU8djFm18xJSqlrgDxgETBFa32skmdA619Q6irMhkgJZa4cAW5D61/did3qjk4fAmOAR7XmiTLnH8KUA5ijNVe782J/kZCQEHBDqNGHc3mgTymdm+Sz44+V7LA7oEo0X7CATsCKggIKAuyfsbelppqCFc2bN7c5EiGMU4oLubNbEd99v5TQEElKhfBjYUqp38t8/5bW+q0y3ycBoUC6y3PpVF6iqT1wJlAAXIrZvv0VoDlwWZXRaP0RSn0BDAYaAweA5Wida+mnKcNqT6kzs/7A5fz7wGOYHyQgHT58mCFDhtgdhlsufu1nYiNDuWn0GXaHUrUPP4SEBAZecQVIz0s5zv/mAu0XIlF3LVi7j+nL1rJkWD86NK5X/QNCCLsUa637ebjNEMzw+5Va6ywApdTtwFdKqSZaa9cE11BqFqDR+gZcKzGZHlfQ+j2rQVhNSps5jvtdzjuDlG1pfCg1M88/dmqqjnMnJ0lIT/LYY4/ZHYIQ5TgL6B/MLqRDY5uDEULURgZmPqdr2ZsmnJzHOaUB+5wJqcNGx7E1J/e6Oo3DJLM3VHBtNlAKWE5Kra6MyXccB7qcH+hyXXhZYXEpB48V0KxBdQvibFZUBH/8IfVJK5GcnExycrLdYQhxnDMpPSQF9IUIaFrrQmAVZi/6soZxcj1Rp5+B5kqpsjt3dnIcd7kdhFLOnT7d6pWy2lP6B2auwGylmILJnrsCT2Ey5D+qeFZ4UPrRfLSG5v5Ui7Qif/4JhYWyyKkSmzdvBqBz5842RyKEkRQXAUCGlIUSoi54HnhfKfUbJuG8GTM/9A0ApdR7AFrraxz3zwEeAt5RSj2KmVP6EvCJ1vpAuZaVugi4yOXcLJf3d3Qcj7oTtNWkdDYmKW0BvFs2DExSOtudl4qaS83MA6C5v/eUyk5OVbrpppsAmVMq/EfDmAhCFGQck12dhAh0Wut5SqlEYCpmCuZ6YITW2tnr2drl/mNKqXMwi5tWYlbP/weoaE/s3pwYtgeTC15bURjAWnfitlo8/22lGI5ZkeXqE61xzZCFl6RlmZkSzRv4cU9pWhq88grEx0PHjtXfH4Sefvppu0MQopyQEEVCrOzqJERdobWegSnVVNG1IRWc24zZy94qZ8ek82tXG4CJbrTnVvH8y5XiCmAkjuL5wOda87E7LxS1k5plekqbxftpT+maNTByJGRmwr//DSF+VtDfTwwaVFmpOCHskxQXIUmpEKI6L2JGyBWQgklM25W5roFDaJ3jbsNuFc/Xmo+Aj8qeU4o44FKtyw3rCy9Jy8ynflQYsZFu73vgffPnw9ixkJgIy5ZB7952R+S31q9fD0CPHj1sjkSIExrVi5TheyFE1cwKfbNKX6nHMSWh3F8MVYEaZTZKEQIMB67G9JxGgSSlvpCamed/80m1hmnTYMoUGDAA/vMfaCpVwqpy++23AzKnVPiXpLhIdmS43bkhhAhWWj/qyebcSkqVoj8mER2N2TEAys8pEF6WmpXvf0npE0/AI4/A3/8Ob78N0X4Wnx969tln7Q5BiJM4h+9lq1EhhGVKjQUmAZ0xnZRlabS2nGtWe6NStAPGAldxYol/2T+t8jArtIQPpGXl0bd1A7vDKG/xYjjjDLODk/xFZkn//v3tDkGIkyTGRZJfVEpOYQlx/jhFSAjhX5S6AlMcX+NmTdKKVPqnjlLcjElGyxbMd32hBppozbHaBiKql1tYTGZukf/1lO7dC2efLQmpG9auNVUyesu8W+FHnAX0M7ILJHArcmAAACAASURBVCkVQlhxm+OYB8Rg8sLDQCKQ6fhYVtXS6BmYhFQ5PkXAQsxWUkOcN0lC6jupmX5YDqqkBFJToVUruyMJKBMnTmTiRLcqZQjhdc4C+rKrkxDColMxieg5x89o3Qh4BJM3jnSnMSu/CmtgFjBZa5PxKkV3d14iPCPNH8tB7d9vEtOWLe2OJKC8+OKLdocgxEmcPaUHs2UFvhDCkljHcTXO9UVKhQLTgceAl4GhVhuzOj5zPTBSKeYDnwIZVl8gPCfN0VPawp+G7/fuNUfpKXWLDNsLf9SonmP4XmqVCiGsOQo0xIyoZwP1gPNwloyCAe40VtXw/TRgDyeG7xsDE4CvgGVuhSw8Yl9mHkpBk/p+NHy/Z485Sk+pW1auXMnKlSvtDkOIchJizfC9JKVCCItSHcfGwEbH1wuApY6vD7vTWKVJqdZM0Zq2mPmj/8Jkvc4E1TmZFaXYqxTT3HmpqJm0rDyS4iKJCPOjXZKkp7RGJk+ezOTJk+0OQ4hywkNDaBATLkmpEMKqNZi8cABmFb4q8wE3a9hXO3yvNT8CPyrF7ZgJq2OBEUC445bmwGTgfndeLNyX5o81SvfsMXVJGza0O5KA8uqrr9odghAVSoqL5JDs6iSEsOZW4P+AbLTORal4TC37YmA+8A93GrNc80NrCjHzST9ViobAGEztUtnE20dSM/Po1KSe3WGUt3evGbqXclBuke1Fhb9yFtAXQogqKRUJXOr47msgF62nQc1Hz2s0Dqw1R7Tmda05E+gAPFrTAIQ1WmtSM/P9a+U9mJ5SGbp32/Lly1m+fLndYQhxkqS4SDKkp1QIUR2tCzDTO2dhyj/VWq2rI2tNCvCEB2IRVcjKKyKvqMS/apTCicL5wi1TpkwBYOnSpfYGIoSLpLhIMrKlp1QIYUkKZrfPUk80Jlt2BIgThfP9qKdUCufX2Jtvvml3CEJUKCkuguyCYvKLSogKD7U7HCGEf5sOvAncA0ytbWOSlAaIE4Xz/ainVArn11jnzp3tDkGICjkL6B/KKfSvmshCCH80CDgEPIBSo4D/YbYcddJofYPVxiQpDRCpmebfsV/1lEo5qBr74YcfAEhOTrY5EiHKcyalGdkFkpQKIapzLc6dnKCz4+NKktK6JjUrn/BQRSPHXxh+QQrn19gjjzwCyJxS4X+SZFcnIYR7qiq/o6u4dhJJSgNEWmYeTepHERLiR6WXpKe0xmbNmmV3CEJUKFF2dRJCWNfOk41VmpQqxV/cachRZF94SWpmPs39sRyUFM6vkfbt29sdghAVanS8p1TKQgkhqqH1Lk82V1VP6VKsd7vqatoStZSalUe/Nn6W/O3da3pJpXC+25YsWQLAOeecY3MkQpQXFR5KXGSY9JQKIaz7//buPD6uut7/+OvTNGnSJd1S2lJayiaLoEUWBVEqm4CyI+31YoX7wwoFBBEUuCA7VFkuRUWkCmXxXioFBJSyShEB2UEKGKBNW1q6703SNsvn98f3DJmGLDPJzJxJ5v18POZxZs75nnM+M5O0n3xXswGEqaE+W3vmnnKlZXuJpLKNPNDY6Cxdt5Hh+Tbo4OOP1Z+0g66++mpASankp7Cqk2pKRaQdZsXAbcAEWl6QKa1Ky7YK3tXs9WHAMOAFYCGwDfBVYAXw11RvKOlbsWETdQ3O1vk0HRSEmtKDDoo7ii7pnnvuiTsEkVYN1gT6IpKa84FTM3WxVpNS96abmPGfhCx4nDszkvafBPwfIVGVLFm0JjFHaR7VlCYmzldNaYeM1OAwyWMVfUuYu7w67jBEJP+NJ9SGvg2MiZ4/BBxJqMD8RzoXa6mqtSWJWfofb7b/MUIT/wXp3FTSs3htHq7mpInzO+Xxxx/n8ceb/zqJ5IeKvr1YWa3mexFp1w7R9sRP97ifCHyHMDL/0XQulmpSOjraTmq2/8xou206N5X0NE2cn0fN95oOqlMmT57M5MmT4w5DpEUVfXuxumYz9Q0ZWc5aRLqv4mg7H2gAwKwMeBooAq5I52Kpdj79ANgduM6MnwCLgeFABaGq9oN0birpWbx2I2XFRfQvK26/cK5o4vxOue++++IOQaRVFf164Q6rqjezVXke/TEsIvlmNTCEMOp+FSEvvBTYEB3fMZ2LpZqU/jehj0BRdMOKaL8BjcDF6dxU0vPJmlq2HlCK5dPUS6op7ZRhw4bFHYJIqyqiCfSXb9ikpFRE2jKXkJSOAN4Avgn8LDrmQFU6F0up+d6dvwCHAy9HN7Fo+0/gMHeNvs+mT9ZuzK/+pKCJ8zvp0Ucf5dFH0+pqI5IzFZpAX0RS8xShtXwX4AZCRaXRNKXolelcLOW5o9x5BnjGjN7AQGC1OzXp3Ew6ZvGaWnbeeUjcYWxJE+d3yo033gjAUUcdFXMkIp9V0TckpSs1gb6ItMX9MuCyT1+bHUgY9FQP/Bn3tGZnSmsVJjN6EvqWDnZnZjrnSsdsrm9k+YZN+VlTqv6kHTZjxoz2C4nEpKJvaL7Xqk4ikqZX0k1Ek6U6+h4zvgMsAl4iGuJvxjNmzDXjsI4GIG1bum4j7uTfuveJmlLpkIqKCioqKtovKBKDvr160qtnDzXfi0j7zHbDbAZma4GNmK3B7H7Mdkv3UiklpWZ8jTBJfgVb9hX4K2G6qBNbPlM6KzEd1PB8mg5KE+d32oMPPsiDDz4YdxgiLTIzKrSqk4i0x2xfwnij44B+hPywHDgeeBmzfdK5XKrN9xcREth/EzqzJvyV0LF1v3RuKqnL64nzVVPaYbfccgsAxx9/fMyRiLSsom8Jf31nMS9XrWq37LaDe3PP//syRT3Ux1ykwNwE9Ime1wErgcGE+Uv7RMe/lurFUk1Kv0IYbX8U8GHS/rnRdkSqN5T0JJYYzavm+8R0UKop7bCHH3447hBE2nTmN3bkyfeWtltuxYZNzKpczqvzVvGV7QfnIDIRySN7EfLDXwEX4V4bTZ7/C+Cs6HjKUk1KE1nwgmb7B0TbPMqYupfFa2sZ0LuYspKiuENpoonzO61///5xhyDSpsM+P4zDPt/+fLrVm+r50lVPMfOdxUpKRQrPamAocCnuoRYtJKaXEJLSlelcLNWBTouibfNm+vOj7cJ0biqp+2jZBrYZmGc5vybO77Tp06czffr0uMMQ6bQ+vXoyduchzJy9hMZGjzscEcmtu6PtLs327xxt70jnYqnWlD4B/BD4c2KHGf8GdiJU2z6Rzk0lNWtr6nh13momfn37uEPZkibO77Tf/va3AIwbNy7mSEQ678g9hvPEu0t5Y8Fq9h49KO5wRCR35hBqQx/FbCqhRX0UcBqhQnM+ZhM+Le1+d0sXSUg1Kb2aMMJ+MCEJhZCQWhTMdanHL6l6tnIZDY3OobsNjTuULWni/E577LHH4g5BJGMO2mUrSop68Ng7S5SUihSW39GUF7a05PzUpOdOU81qi1JdZnQR8FXgSZqWkGqMXn8tOi4Z9tR7SxnSrxdjthnQfuFc0sT5nda7d2969+4ddxgiGdGvtJivf66Cx2cvxl1N+CIFxtJ4tCmdZUY/AA43oxQYBKxyZ2PaoUtKNtU3MKtyGUeP2Zoe+TbNysKFcNBBcUfRpd17770AnHzyyTFHIpIZR+w+nKffX8bbC9cyZmSe/SEtItlyaiYvllJSakZ/oD9Q484K4JNofwXQG1jrztpMBlboXpqzkurNDfnXdK+J8zPi97//PaCkVLqPQ3YdSnGRMfOdxUpKRQqF+12ZvFyqo+/vAKqA7zbbPz7a/4dMBiWh6b53SRH775BnS1Fq4vyMeOqpp3jqqafiDkMkY/r3LuarO1bwmJrwRQqXWQ/MxmF2AWZj0j091aT0y9H2gWb7HyT0EfgyaTCzSWZWZWYbzex1M2tztn8zKzGzK6NzNpnZAjP7UbMyJ5jZe9Hx98zsuHRiyieNjc5T7y3lwM8NobQ4j+YnBU2cnyHFxcUUFxfHHYZIRh25+3A+XlXLu5+sizsUEckFs8mYLcPssmjP/cD/ApOBVzE7OJ3LpZqUDom2a5rtX9vseLvMbBwwBbgW2BN4EZhpZqPaOO0+4HBgImHuq+8A/0q65n7AdOCPwJhoe7+ZpZUs54t/LVrLsvWbctd07w5Tp8KTT4Za0LYkJs5XTWmnTJs2jWnTpsUdhkhGHbrbUIp6GI+9szjuUEQkNw4kzMz0d8xGAMfRNKipCLgwnYulmpSuj7aHNdufeL0hjXueB0xz96nu/r67nw0sBs5oqbCZHQYcDBzp7k+5+zx3f9ndZyUVOxd41t2via55DTAr2t/lPPXeEop6GAftslVubvjWWzBxInzzm7DttnDxxVBZ2XJZ1ZRmhJJS6Y4G9ilhv+0H89g7asIXKRA7RNt3gX2i5/fSNABqz3QulmpS+gYh673DjEvMOMGMSwh9SR14PZWLmFkJYR3UJ5sdehLYv5XTjgVeBc4zs4Vm9qGZ3WJmfZPK7NfCNZ9o45p57an3lrLP6IEM6F2Smxs+8kiYc/SOO2DMGPjlL2GXXWC//eC222DVqqaymjg/I2bNmsWsWbPiDkMk447YYxjzVtbw7yXr2y8sIl1dYs3sVYRVnRx4lNCED1CezsVSTUpvS7r4FcCfou2AZsfbU0Gozl3abP9SoLVFlrcHDgC+CJxAWEv1cGBaUplh6VzTzCaa2Wtm9lp9fX2KoefG/JXVfLB0A4fu1v6a0xnzyCOw//5w6qnwl7+ExPP662H9ejjjDBg+HI4/Hv78Z5g7VxPni0irDtttGD0MZqoJX6QQJGqtjqOp9fwDoF/0PK0O5qlOnv8gcBMtT4J6ozsPpXPTNPUgZN7fjZrtnyAkpieYWYc6Xbr77e6+t7vv3bNnylO15sRT74Xc+rBc9SdduBDeeAOOPrpp3/DhcP758M474dikSfDCC3DccSExVdN9p02dOpWpU6e2X1CkixnSrxf7bjeIx2YviTsUEcm+t6PtfYT+peuB2YQKRQjLjqYs1ZpS3DmfMMr+GuD30fbL7vw0jfutABqA5hnXUKC1f8EWA4vcPXke1PejbWJw1JI0r5m3nnxvKbsM68fIQTla7efRR8M2OSlNMIM994T/+R9YtAgeewwmTIDTTstNbN3Y9OnTmT59etxhiGTFt/YYzkfLNvD8h8vjDkVEsmsysJGmyspf4t4AfDs6/mI6F7Ncd0Y3s5eBt919YtK+D4AH3P2iFspPBG4GtnL3DdG+g4GngaHuvszMpgMD3f2wpPOeBFa6+3+0FU+fPn28uro6E2+t01ZVb2bvq5/irG/syHmH7Zybmx5xBMyZEwY2qUleRDJgY10Dh9/8dwAeP/fr+Te1nUgXZmY17t4n7jg+ZTaSMMipCvc3o327Elb/nIt7yn15Um67NqMfcCSwLVDa/Lg7V6Z4qZuAe8zsFeAF4HRga6J+qWZ2d7ieT4jK/y9wKXCnmV1O6Mc6BZjh7suiMlOAv5vZhcCfCX0bvkHoi9plPPP+Uhqd3PUnXb8e/vY3OPtsJaQikjGlxUVcc9we/OfvX+Y3z37ET3L1R7aI5J77x8DHzfa933LhtqW6zOg+wGOErLc1KSWl7j7dzAYDlwDDCX0PjnT3+VGRUc3KbzCzQ4BfEUbhryYknhcmlXnRzMYDV0dxzAHGufvLqcSUL55+fynD+5ey+4i0Bqt13BNPwObNcMwxubmffOrWW28FYNKkSTFHIpIdX92xguP3HMFtz83h6C9uzU5D+7V/kojkP7NQaeh+96fP2+J+d8qXTqX53owXCNMutX5Lp0u2z+RT8/2Xr32ar+5YwU0npb0yV8dMmBD6iS5ZAnk24Ku7O+KIIwCYOXNmzJGIZM/KDZs4+Kbn2GmrvkyfuB89eqhFRqSzYm++N2sEGnHvGT1vK5F03FNOMFIt+IXops8RlhqtbicISdP6jXUsXbeJHbfq237hTKivh7/+Fb79bSWkMVAyKoVgcN9eXHzkrvx0xr/402sfM37fthbuE5EuxFp53impZiNrgN7A8e6fWWpUMqBqRait3WFIjpLSF18Mk+K3NOpeRCRDvrPXNsx4fSHXPvY+B+86lCH9esUdkoh0zqmtPO+0VJPSuwl9OHcH/pHJACSYszys1LrDkBzVyD/yCJSUwGHNV46VXJgyZQoA55xzTsyRiGSXmXHtcXtw5JTnueov73HlMZ/P+j379upJz6KUZzwUkXS439Xi8wxINSmdB6wFHjbjD0AlUJdcwJ2UO7LKZ81dXk1RD2PUoBwkpe7w8MNw0EHQT4MP4vDMM88ASkqlMOy4VV/OGLsDU575kEfe/iTr99tn9EDuP71LrjItUtBSTUp/R1Mf0p+0cNxBSWlnzFm+gVGDelPSMwd/3VdWwkcfwXnnZf9e0qJHHnkk7hBEcuqsg3Zk28G9WVtb137hTpg5ewkfLduQ1XuIFDSzuWmUdtx3SLVwOiNcNGwyi+Ysq85t0z3AUUfl5n4iUvCKi3pw/Jeyv0Txig2beGP+atwd0/zLItkwmi0Huyd+0ZoPgLcW9rUp1aQ0ox1ZZUsNjU7VymoO3HlIbm748MOw115awz5GN9xwAwDnn39+zJGIdC/lpcXUNzq1dQ30LtHMIiJZ0tJffJ3+KzCl31h3MtqRVba0aHUtm+sbc1NTunw5vPQSXH559u8lrXrppZfiDkGkWyovKwZgbW2dklKRbHBv6mdotgPw9+jx38BCYBvgWsLKmgemc2n9xuaBOStC/6ftczEd1LvvhoFOB3SpFVi7nQceeCDuEES6pfLSkJSuq61neP+YgxHp/m4BhgFn4J6YMnQuZqcDq4CbgcNTvVjKo2rMONmMN8yoNqOh2aM+nXcgW5qzLDEdVA6S0oULw3bkyOzfS0Qkx8rLQl3Luo3ZHVAlku/MbJKZVZnZRjN73cy+luJ5B5hZvZnNTqF4oiZ0+2b7d4y2adWApVRTasZJhNH1jgY8ZdzcFdUM7F3MoD4l2b9ZIikdMSL795JWTZ48GYALL7ww5khEupemmlIlpVK4zGwcMAWYRJhffhIw08x2c/cFbZw3kJDvPQOkkihsAMqAmZjdQ1Pz/feSjqcs1eb7M6NtLWFlJydUyw4mrPakVZ46Yc6yDblpuoeQlA4aBL175+Z+0qK33nor7hBEuqVEn1LVlEqBOw+Y5u5To9dnm9nhwBnARW2c9wfgLkIF5Ikp3OcewlShFcCPk/YnRt6nNV1oqs33X4gufkhihztDgMsIk+hrbqFOmLM8h9NBLVyoUfd54L777uO+++6LOwyRbqe8NGq+r1WvMilMZlYC7AU82ezQk0Crq0qY2SRgKHB1Gre7mJB4WrMH0f6L07hWyjWliYzpDaI5p8woAm4EriB0dD04nRvni0GDBjFr1qzY7t/gzve3q2ZYaQOzZq3O+v32ev99Ng8cyDsxvmcRkWxx4Cd71FO2spJZs+bFHY5INvQ0s9eSXt/u7rcnva4AioClzc5bSlLlYjIz24NQ0fgVd29IeY5f9zrgFMyuI4y2HwysAGbhXpnaRZqkmpSuAwYSst/1QD/gCMLSowBfTvfG+WLVqlWMHTs2tvu/uWA1Nz7xIlMnjGHsbkOzf8O1a+HAA2N9zwJXXXUVAJdeemnMkYh0P5MufZyTvzKSk8buFncoItlQ7+57Z+piZtYLmA6c7+5VHbpISEDTTkKbSzUp/YSQlG4FvA/sCzycdHxVZwMpVHOXVwOwfS6a7zdvhqVL1XyfByorO/27KyKtKC/rqeZ7KWQrgAZCU3yyocCSFsoPB3YF7jSzO6N9PQAzs3rgSHdv3hWgZWEJ0rSWFk2WalL6JrA7oUb0bj5bM6rJ9TtozvIN9OxhjBqUg4FHn3wStkpKY3fvvffGHYJIt1VeWqyBTlKw3H2zmb0OHArcn3ToUKClSbIXAXs02zcpKn8cMC+N248mzaVFk6WalE4Cfgqsd6fGjP7AOKAeeAj4RUcDKHRzl1czanBviotSnjK24xLTQSkpFZFurLxMSakUvJuAe8zsFeAF4HRga+A2ADO7G8DdJ3joF7rFnKRmtgzY5O6pzFWaMakuM1oNVCe9ngxMzlZQhWTO8g25mTQflJTmkZ///OcAXHnllTFHItL9lJf2ZMWGzXGHIRIbd59uZoOBSwjN87MJzfDzoyKjYguuDa0mpWbpBexOq5OxSsvqGxqZt7Kag3fNwQAnUFKaRz7++OO4QxDptsrLipm7orr9giLdmLvfCtzayrGx7Zx7OXB5xoNqR1s1pfNIvV+At3MtacHC1bXUNXhuBjlBSEr79YPy8tzcT1p15513tl9IRDqkvLRYKzqJxMG9U30R20sktaRoFs1ZnsM17wEWLVItqYh0e+VlPVm3sR53J+X5FkUkdm0lpRpRn2WJ6aC0mlPhueiisMrbddddF3MkIt1PeWkxDY1OzeYG+vRSI55IzoX+rMuBRtxT/iVstaA7p2YiLmndnOUbGNynhAG9S3Jzw4UL4ZAWF3OQHFu5cmXcIYh0W+VlxQCs21inpFQkXmk1Vei3NUZzl1fnrj9pfT0sXqya0jxx++23t19IRDqkvDRKSmvrGd4/5mBEuhuzSSmU6lByk3JSasbOwA+BnYGyZofdnYM7EkAhm7N8A4fmYmlRCCs5NTQoKRWRbq+8LPzXprlKRbLi13Rigvy2pJSUmrEXMAtoadkhI0vBdWdrajazsnpzbkfeg5LSPHH++ecDcMMNN8QciUj301RTqqRUJIsyPoow1ZrSi+lgVay0bM6ng5w0cX4hqq2tjTsEkW4ruU+piGTcZqCYsDrU0lbK9AYuSPfCqSal+xNqQycBv42efxG4GtiFsOSopCHn00EpKc0rv/nNb+IOQaTbKi+Nmu9r62OORKRbegvYB3gW9/tbLBFG36edlKY6yengaPvHxA53ZgMTgc8BP073xoVu7vJqiouMbQY2756bJQsXQmkpDBqUm/uJiMSkn5rvRbLpZULT/ZczfeFUa0prgb7Axuh5aTTwaUN0/OhMB9bdzVm+gdGD+9CzqFOLH6QuMUepJpLOC+eeey4AN998c8yRiHQ/JT17UFZcpOZ7key4CrgDWNNGmVXAduleONWkdBkhKR1EWH50F+BZINE20pjujQvd3OUb2HGrHDXdgybOF5GCUl7WU833ItngvgJY0U4ZB+ane+lUk9J3gO2BLwB/AXYFEnMZOfBkujcuZA2NzoJVNRy627Dc3XThQjjggNzdT9qkGlKR7CovLVZNqUgXk2rb8RXAdwm1pFcTktBEO/AzwDkZj6wb+2RNLXUNzujBLc2wlQWNjWHd+xEjcnM/EZGYlZcpKRXJCrPLMBuQRvkBmF2WStGUklJ33nZnujsfubPencMJTfn93TnMneUpBycsWFUDwKhBOUpKV6yAujo13+eRM888kzPPPDPuMES6rfJSNd+LZMllwHzM/oDZYZh9dspQsz7RsTsIzfg/T+XCnVlmtASo7sT5BWv+yigpzVVNqaaDyjtlZTmadUGkQPUvK2buCv0XJZIF7wG7AadEj0bM5tHUz7QCGE1TxacB76Zy4TaTUjO+BIwHSoE/u/M3M04DriPUlG4y41Z3zk/9vcj8VWE6qOH9czgdFCgpzSNayUkku8rLijUllEh2fAH4f8D5wE5AEbADYewRbLnS0xzgeuD3qVy41aTUjAMI/UUTZc4043rgp4TBTUZIVn9sxkfu3Jbquyl0H6+qYeTA3hT1yNH0TEpKRaTAhIFO9bg7pqnwRDLHvRGYCkzFbCzwTcJk+onR20uBV4EncH82nUu3VVN6AWEZqeb7ICSkKwhVtAZ8D5SUpmr+yprcNd1DSEp79oSttsrdPaVNEydOBOD222+PORKR7qm8rCcNjU7N5gb69OpMTzURaZX7LGBWpi7X1kCnvQk1ok8QlhedSUhAHfgPd7YC/jMqu1umAuru3J0FK2vYNleDnCAkpSNGQI8cTdQv7Ro8eDCDBw9uv6CIdEh5YlUnjcAX6TLa+vOxItqOc2edGf8HrI72PRhtHyAsPdovS/F1O6tr6li/qZ6RuU5K1XSfV6677rq4QxDp1srLEkuN1jO8f8zBiHRXZvsSKjHfx/1ZzA4FbgFGAY8DE3BPecRhW1VnxQDurIu2axMH3KmLtpsTYaXzHgrZ/JXhu9l28GdnUMgaJaUiUmBUUyqSEz8FfgV8DrNiQkXl54Ay4FjC9FEpa7ejjdln55ZqaZ+kJjFH6ba56lPqHpLSo4/Ozf0kJaeeeioAd955Z8yRiHRP5WXhv7e1NUpKRbJoz2j7N2AvQiv7YuCT6PUxhMQ1Jan0/k7Ocr2FfZKGBStzPHH+6tVQW6vVnPLMyJEj4w5BpFtTTalITiSWnP8YODB6Phn4EyE53Tadi7WXlKpZPsPmr6phaHkvSouLcnNDTQeVl6688sq4QxDp1pr6lCopFcmiRGVlb2D36PW7NI1BakjnYm0lpVekHZq0K4y8z3F/UlBSKiIFpV9p+O9t3UYtNSqSRYsIE+g/StNMTO8CW0fPV7R0UmtaTUrdlZRmw/xV1Ryw45Dc3VBJaV46+eSTAbj33ntjjkSkeyou6kHvkiLVlIpk10PAz4CvEFrXX8F9KWYnRcf/lc7FNKNwDm2sa2Dpuk25G+QEsGhRmJ902LD2y0rO7LzzznGHINLthVWdlJSKZNEVQDnwNaAKOC/aP4qwKuh96VxMSWkOdWjkfWNjePTs4Fe1cGFISIubL84lcbr00kvjDkGk2ysv68m6WjXfi2SN+0bgzBb23wDckO7llJTm0PyOjLz/7nfho4/gxRehpCT9m2qOUhEpUKopFckRsz2AQwhTQq0AnsJ9drqX0bqTOdRUU5riQKc334Tp0+H11+GGdv7gePNNOOccWL58y/1KSvPS+PHjGT9+fNxhiHRr5WVKSkWyyqwnZtOAtwg1oxdG27cxuxOztKYaUlKaQwtWVtOvV08G9k6x5L3RvgAAIABJREFUKf3aa6G8HI44Aq66CubMabncypVwzDFwyy3wpS/BSy81HVNSmpfGjBnDmDFj4g5DpFsrL1XzvUiWXQ1MIAxyav6YEB1PmZLSHJq/qoaRg3pjlsL0r++/Dw88AGedBVOnhj6hkyaFFZqSNTbChAmwdCnceWco9/Wvw5QpsG5deCgpzTsXXnghF154YdxhiHRrqikVyboJhLlJlwHXAqdH22WExPSUdC6mpDSHFqysSX2Q0+TJUFYG554bVmO6+mp48snQnJ/shhvgscfgppvglFNCU/+RR4bzvv3tUEarOYlIASovLWZdbR3e/I95EcmU/tH2W7hfgvvtuF8CHBXtL0/nYkpKc6Sh0fl4dQ2jUklKq6rgj3+EiRNhSDSn6Zlnwl57hWRzzZqw7x//gIsvhu98J9SiAgwcCA89BL/4BbzwQtinmtK8c8IJJ3DCCSfEHYZIt1Ze1pNGh+rNaS0qIyKpey3afthsf2W0fSWdiykpzZHFa2upa/DUVnP65S+hqAjOP79pX1ER3H57GMh08cVhO348jB4dmveTuwT06AE//Sn87W9w2mmw994Zfz/SOfvttx/77bdf3GGIdGvlpVpqVCTLfgxsAK7GrBQg2l4FrKNp3tKUaEqoHEl5jtJPPoE77ghN8c2b3b/0JTj77DCg6eWXQ2L6z39C//4tXooDDwwPyTvnJ//BISJZUV4WJaUb69iaspijEekmzOY230OYq3QiZiuBwUAxUA3MAHZI9dJKSnNkQapzlN54IzQ0wM9+1vLxq66CGTPgjTfg1lthzz0zHKmISPfQVFOqEfgiGTSaMLgp0USbeF4CDE/a1xdIcQ7MQElpjsxfVUPPHsbw/qWtF1qxAm67Df7jP2D77Vsu068fPPhgmPbp9NOzE6xk3dFHHw3AI488EnMkIt1XeVn4L07N9yIZtYCQdGZcLEmpmU0CLiBk1O8C57r7862UHQs828KhXd3931GZU4A7WyhT5mEJrNgtWFnDNgPL6FnURjfeKVOgpgYuuqjti+27b3hIl3XwwQfHHYJIt/dpTammhRLJHPfR2bp0zpNSMxsHTAEmAf+ItjPNbDd3X9DGqZ8HViW9brZ0ETU067eQLwkpwPxV1YxqbyWn+++Hww+H3XbLTVASm3POOSfuEES6vU/7lKqmVKRLiKOm9DxgmrtPjV6fbWaHA2cAbVURLnP3FW0cd3dfkqkgM8ndmb+yhj1HDmy9UGNjmArqmGNyF5iISDfWrzRqvt+oPqUiWWPWEzgS2BlaGFHofmWql8ppUmpmJcBehHVRkz0J7N/O6a+ZWS/gPeBqd2/epF9mZvOBIsIarJe6+5sZCLvT1tbWsX5jfdsj7z/5BDZvhu22y11gEpsjjjgCgJkzZ8YciUj3VVzUg94lRaopFckWs62AWYSEtDX5mZQCFYSkcWmz/UuBQ1o5ZzGhFvVVwsiu7wHPmNmBSf1QK4H/At4G+gHnAC+Y2RfdvfmErpjZRGAiQElJSafeUCrmRyPvR7Y18r6qKmyVlBaEo446qv1CItJp5aVaalQki64AdmnjeFoDovJ+9L27V9K0MgDAS2Y2mjBQ6vmozEvAS4kCZvYiobb0bOBHLVzzduB2gD59+mR9/bn5qcxROjea9qu1UffSrUxKrMAlIllVXtZTU0KJZM9hhMRzGnBq9PwcQv7lwOR0LpbrFZ1WAA3A0Gb7hwLp9Ad9GdiptYPu3kBY+qrVMrm0YGU10M4cpVVVYVWmUaNyFJWISPenmlKRrEqs8nPhp3vcfw0cD3wOSGud85wmpe6+GXgdOLTZoUOBF9O41BhCs36LzMyAL7RVJpfmr6xhSL9e9C5po2K6qiqs4NSrV+4Ck9gccsghHHJIaz1WRCRTysuUlIpkUUO0XQmEXzSzIcD8aP/EdC4WR/P9TcA9ZvYK8AJwOrA1cBuAmd0N4O4TotfnAvMI85mWACcDxwInJC5oZpcB/wQ+BMoJTfZfIPRFjd38VTVs295KTnPnqum+gIwbNy7uEEQKQnlpTz5apuZ7kSxZSagt7U9o8d4G+COQmJKzjWmHPivnSam7TzezwcAlhMnzZwNHunsiq27efl0CXE94o7WE5PRb7v5YUpkBhD6iw4C1wJvA1939lay9kTQsWFnD/jsObrtQVRWo5qxg/OAHP4g7BJGCoJpSkayqJCSlOwB/B/4TSKwO48Ab6VwsloFO7n4rcGsrx8Y2e/1L4JftXO/HwI8zFV8mbaxrYMm6jW33J924MUwJpZH3IiIZ1b+smHW1dbg7oWeXiGTQVOAjoJQwEv8wYEh0bDlwbjoXy/vR913dpvpGvveVbdl39KDWC82fD+5qvi8gY8eOBWDWrFmxxiHS3ZWXFtPoUL25gb699F+eSEa5/wn406evzXYCvgHUAy/gviady+k3NMv6lxVz1bG7t11Ic5QWnFNOOSXuEEQKQnlZtKpTbZ2SUpFsc18HPNzR0/Ubmg+UlBYcJaUiuVFeWgzAuo11bN3CCogikj9yPU+ptGTu3DAV1PDhcUciOVJXV0ddnQZfiGRbeVmUlGoCfZG8p5rSfFBVBaNHQw/9jVAoDj00TNWrPqUi2fVpTWmt/ggUyXdKSvNBVZWa7gvMaaedFncIIgXh0z6lmhZKJO8pKc0Hc+fCV74SdxSSQyeffHLcIYgUhERN6VrVlIrkPbUXx23NmvBQTWlBqampoaamJu4wRLq9fqWJ0ffqUyqS71RTGjeNvC9IRx55JKA+pSLZ1rOoB31KitR8L9IFKCmN29y5YauJ8wvKGWecEXcIIgWjPFrVSUTym5LSuKmmtCCNGzcu7hBECkZ5abFqSkW6APUpjVtVFQwYEB5SMNauXcvatWvjDkOkIJSX9VSfUpEuQDWlcauqUtN9ATrmmGMA9SkVyYXy0mKWrNsYdxgi0g4lpXGbOxd23z3uKCTHfvSjH8UdgkjBKC8r5oNl6+MOQ0TaoaQ0To2NMG8eHHVU3JFIjh1//PFxhyBSMMpLe7K6uo5/fLgiY9fs0QO+NGogpcVFGbumSCaZ2STgAmA48C5wrrs/30rZ44HTgT2BUuA94Bp3fyRH4QJKSuO1ZAls2qTm+wK0YkX4z7GioiLmSES6v6H9S9mwqZ6T//ByRq974RG7cPqBO2T0miKZYGbjgCnAJOAf0Xamme3m7gtaOOVA4G/AJcAq4D+Bh8xsbGuJbDYoKY1TYjoojbwvOCeeeCKgPqUiuXDaAdvz5e0G0+iesWv+4O7XmL+yOmPXE8mw84Bp7j41en22mR0OnAFc1Lywu5/TbNcVZvYt4FhASWlB0HRQBesnP/lJ3CGIFIySnj3Ya9uBGb3miAFlLFmrwVOSf8ysBNgLuKHZoSeB/dO4VD9gdabiSkXBJ6WDBg2KrbZq27/9jdFmPD9/Po2LF8cSg8SjX79+gGpKRbqqk0bUsLlhrX6HJQ49zey1pNe3u/vtSa8rgCJgabPzlgKHpHIDMzsT2Aa4pzOBpqvgk9JVq1YxduzYeG4+bRpsvTVfP+yweO4vsVmyZAkAw4YNizkSEemIix96h5nvLubNk8bGHYoUnnp33ztbFzezE4DrgXHuPj9b92lJwSelsaqqUtN9gRo/fjygmlKRrmp4eSmra+rYWNegEfiSb1YADcDQZvuHAkvaOtHMTgTuBia4+6PZCa91SkrjVFUF3/hG3FFIDC688MK4QxCRThjavxSAZes2MWpw75ijEWni7pvN7HXgUOD+pEOHAg+0dp6ZnQTcBXzf3WdkN8qWKSmNy6ZNsHChakoL1OGHHx53CCLSCcPKQ1K6eG2tklLJRzcB95jZK8ALhDlItwZuAzCzuwHcfUL0ejyh/+j5wN/NLNG3bLO7r8pV0EpK47JgAbgrKS1QH3/8MQAjR46MORIR6YjhUU2pli+VfOTu081sMGHe0eHAbODIpD6io5qdcjohJ7w5eiQ8B4zNbrRNlJTGJTEdlCbOL0jf+973APUpFemqEs33S5WUSp5y91uBW1s5Nrat13FRUhoXTZxf0C655JK4QxCRTujXqye9S4pYsnZT3KGIdBtKSuNSVQUlJbD11nFHIjE45JCUpooTkTxlZgzrX8qSdbVxhyLSbfSIO4CCVVUFo0dDD30FhWju3LnMTdSWi0iXNKy8VKs6iWSQakrjMneumu4L2H/9138B6lMq0pUNKy/l5aqcDUwW6faUlMalqgr22SfuKCQmV1xxRdwhiEgnDetfytJ1G2lsdHr0sLjDEenylJTGYeVKWLUKdtop7kgkJgceeGDcIYhIJw3rX0p9o7OiehNb9SuNOxyRLk8dGuNQWRm2O+8cbxwSm8rKSioTPwci0iUNjSbQX6oR+CIZoZrSOCgpLXg//OEPAfUpFenKEhPoL15byx7b9I85GpGuT0lpHCorobg4jL6XgnTttdfGHYKIdFJiqVFNoC+SGUpK4/DBB7DjjtBTH3+h2n///eMOQUQ6aXDfXhT1MC01KpIh6lMah8pK+Nzn4o5CYjR79mxmz54ddxgi0glFPYyh/XqxWHOVimSEqupyraEBPvoIvv3tuCORGJ111lmA+pSKdHVDo2mhRKTzlJTm2rx5sHmzBjkVuOuvvz7uEEQkA4aVl/LB0vVxhyHSLSgpzbUPPghbJaUFbR8tnCDSLQzrX8rfP1gedxgi3YL6lOZaYjoo9SktaG+99RZvvfVW3GGISCcNKy+lenMD6zfWxR2KSJenmtJcq6yEgQOhoiLuSCRG5557LqA+pSJd3bD+TdNC9Sstjjkaka5NSWmuVVaGpnvTOsmF7Oabb447BBHJgMRcpUvWbmLHrfrFHI1I16akNNc++AAOOSTuKCRmY8aMiTsEEcmAYUmrOolI56hPaS5t2ACLFqk/qfDqq6/y6quvxh2GiHTSUK3qJJIxqinNJY28l8gFF1wAqE+pSFdXWlzEwN7FWtVJJAOUlOZSYuS9ktKC9+tf/zruEEQkQ4aWl7JEqzqJdJqS0lz64IMwwGnHHeOORGK2++67xx2CiGTIsP6lqikVyQD1Kc2lykoYPRpKS+OORGL24osv8uKLL8YdhohkwPD+pSxZuynuMES6PNWU5lJlpQY5CQAXX3wxoD6lIt3B0PJSVmzYxOb6Rkp6qq5HpKOUlOaKe2i+P+CAuCORPPC73/0u7hBEJEMSc5UuW7+RbQb2jjkaka5LSWmufPJJmBJKg5wE2Fk/ByLdRvKqTkpKRTpO7Qy5oumgJMlzzz3Hc889F3cYIpIBTRPoa7CTSGeopjRXEtNBqU+pAJdddhmgPqUi3UHTUqNKSkU6Q0lprlRWQu/eMGJE3JFIHrjjjjviDkFEMqR/WTGlxT20qpNIJykpzZXEyPse6jEhsP3228cdgohkiJkxrLyUJes0LZRIZyhDypUPPlB/UvnU008/zdNPPx13GCKSIWFVp9q4wxDp0lRTmgubNkFVFXz3u3FHInni6quvBuCQQw6JORIRyYTh/Ut5fcHquMMQ6dKUlObCnDnQ2KiaUvnUPffcE3cIIpJBQ/uXsnTtJtwdM4s7HJEuSUlpLiRG3isplcjIkSPjDkFEMmhYeSmbGxpZVb2ZwX17xR2OSJcUS59SM5tkZlVmttHMXjezr7VRdqyZeQuPXZqVO8HM3jOzTdH2uOy/kxQl5ijVdFASefzxx3n88cfjDkNEMmR4NFfpEo3AF+mwnCelZjYOmAJcC+wJvAjMNLNR7Zz6eWB40uPDpGvuB0wH/giMibb3m9mXM/4GOqKyEoYNg/LyuCORPDF58mQmT54cdxgikiFDy5tWdRKRjomj+f48YJq7T41en21mhwNnABe1cd4yd1/RyrFzgWfd/Zro9TVm9o1o/39kIuhOqaxU071s4b777os7BBHJIK3qJNJ5OU1KzawE2Au4odmhJ4H92zn9NTPrBbwHXO3uzyYd2w/4VbPyTwBndSLczKmshBNOiDsKySPDhg2LOwQRyaAhfXvRw+DNBWvYYUjfuMORmAzoXcwuw9Qq2lG5rimtAIqApc32LwVamxtnMaEW9VWgBPge8IyZHejuz0dlhrVyzfj/51+5MjxUUypJHn30UQCOOuqomCMRkUzoWdSDkYN6M+P1hcx4fWHc4UhMxu48hGmn7ht3GF1W3o++d/dKoDJp10tmNhq4AHi+pXPaY2YTgYkAJSUlnYywHf36wfPPw6j2usxKIbnxxhsBJaUi3cn//uArzF9ZHXcYEqMBZVnOKbq5XCelK4AGYGiz/UOBJWlc52VgfNLrJelc091vB24H6NOnj6dx3/SVlMABB2T1FtL1zJgxI+4QRCTDRgwoY8SAsrjDEOmycjr63t03A68DhzY7dChhFH6qxhCa9RNeysA1RXKmoqKCioqKuMMQERHJG3E0398E3GNmrwAvAKcDWwO3AZjZ3QDuPiF6fS4wD3iX0Kf0ZOBYIHnk0BTg72Z2IfBn4DjgG4CqKCUvPfjggwAcf/zxMUciIiKSH3KelLr7dDMbDFxCmG90NnCku8+PijTvfFkCXA9sA9QSktNvuftjSdd80czGA1cDVwJzgHHu/nJW34xIB91yyy2AklIREZEEc89ul8p816dPH6+uVsd0ya21a9cC0L9//5gjERGRrsTMaty9T9xxZEPej74X6Y6UjIqIiGwp58uMighMnz6d6dOnxx2GiIhI3lDzvZrvJQZjx44FYNasWbHGISIiXUt3br5XUqqkVGJQU1MDQO/evWOOREREupLunJSqT6lIDJSMioiIbEl9SkVicO+993LvvffGHYaIiEjeUPO9mu8lBupTKiIiHdGdm++VlCoplRjU1dUBUFxcHHMkIiLSlXTnpFR9SkVioGRURERkS+pTKhKDadOmMW3atLjDEBERyRtqvlfzvcRAfUpFRKQjunPzfcEnpWbWCNRm+LI9gfoMX1MyQ99NftP3k7/03eQ3fT/5K9PfTZm7d8uW7oJPSrPBzF5z973jjkM+S99NftP3k7/03eQ3fT/5S99N6rplpi0iIiIiXYuSUhERERGJnZLS7Lg97gCkVfpu8pu+n/yl7ya/6fvJX/puUqQ+pSIiIiISO9WUioiIiEjslJSKiIiISOyUlKbJzCaZWZWZbTSz183sa+2UPzAqt9HM5prZ6bmKtRCl8/2Y2fFm9qSZLTez9Wb2spkdnct4C0m6vztJ5x1gZvVmNjvbMRayDvzbVmJmV0bnbDKzBWb2o1zFW0g68N1818zeMrMaM1tiZvea2bBcxVtIzOzrZvaImS0yMzezU1I4Zw8ze87MaqPzfm5mloNw856S0jSY2ThgCnAtsCfwIjDTzEa1Un474LGo3J7AdcCvzOyE3ERcWNL9foADgb8B34rKPwY8lGqyJKnrwHeTOG8gcDfwTNaDLGAd/H7uAw4HJgI7A98B/pXlUAtOB/7f+SpwD3AX8HngWGA34I85Cbjw9AVmA+eQwkI8ZlYOPAUsBfaJzrsAOC+LMXYZGuiUBjN7GfiXu/8gad+HwAx3v6iF8r8Ajnf3nZL2/R74vLvvl4uYC0m6308r13gFeN7df5KlMAtSR78bM3sQeBsw4ER33z3rwRagDvzbdhhwP7CDu6/IXaSFpwPfzfnA2e6+bdK+U4FfuXvfXMRcqMxsA3CWu09ro8wZwC+Aoe5eG+27BDgD2MYLPClTTWmKzKwE2At4stmhJ4H9WzltvxbKPwHsbWbFmY2wsHXw+2lJP2B1puKSjn83ZjYJGApcnb3opIPfz7HAq8B5ZrbQzD40s1vMTElPBnXwu3kBGG5mR1lQAYwntARJ/PYjVHwk16o+AWwNjI4lojyipDR1FUARoco92VKgtb46w1op3zO6nmROR76fLZjZmcA2hKYvyZy0vxsz2wO4DDjZ3RuyG17B68jvzvbAAcAXgROAswhN+dOyE2LBSvu7cfeXCEnoH4HNwHJCS8P3sxempKG1vCBxrKApKRUBon6+1wPfdff5ccdTyMysFzAdON/dq+KOR1rUA3DC78vL7v4EITE9wcyGxhtaYTOz3YBfAVcRalkPJyQ7v4szLpFU9Iw7gC5kBdBAaE5MNhRY0so5S1opXx9dTzKnI98PAGZ2ImEwzQR3fzQ74RW0dL+b4cCuwJ1mdme0rwdgZlYPHOnuzZszpeM68ruzGFjk7muT9r0fbUfx2Zog6ZiOfDcXAa+4+/XR63+ZWTXwvJld7O4LsxOqpKi1vCBxrKCppjRF7r4ZeB04tNmhQwmjIVvyUivlX3P3usxGWNg6+P1gZicRmutPcfcZ2YuwcHXgu1kE7AGMSXrcBnwUPW/1+5T0dfB35wVg62Z9SD8XbdXSkCEd/G56ExLZZInX+j8/fi8BXzOz0qR9hwKfAPNiiSifuLseKT6AcYQ+OqcRanKmABuAbaPjdwN3J5XfDqgGbo7Knxadf0Lc76U7Pjrw/YwH6ghTcgxLegyK+710t0e6300L518OzI77fXTXRwd+d/oCHxNG4H8e+CphWpz7434v3e3Rge/mlOjftTMIfX+/ShiU9nrc76U7PqLfhcQfzzXAz6Pno6Lj1wHPJJXvT6gRvQ/YHTgeWAf8JO73kg8PNd+nwd2nm9lg4BJCE+NsQlNiomZgVLPyVWZ2JPA/hH8gPgF+5O4P5DDsgpHu9wOcTujCcnP0SHgOGJvdaAtLB74byaEO/Nu2wcwOIfRdfJUwY8WfgQtzF3Vh6MB3M83M+hH6+N4IrCXMx/yz3EVdUPYGnk16fUX0uIvwB8JwYIfEQXdfa2aHAr8BXiP87twI3JSjePOa5ikVERERkdipf4mIiIiIxE5JqYiIiIjETkmpiIiIiMROSamIiIiIxE5JqYiIiIjETkmpiIiIiMROSalInjOznczs12b2vpltMLP1ZvZvM5tqZl9JKjfPzNzM5sUYbiKWaVEsbmajk/YPNbM/mtliM2uIjt9sZqOTyk/LYlwDzOzy6HFsqnHnipmNTbp/e4/Lo3MSr2flOt72ZPN7Tee7ava5ZjQOEckcTZ4vksfM7FTgt0CvZod2jh5DgM8kV3lsCmGFmrgMAC6Lnt9FmPBdRETygJJSkTxlZgcBvye0aDhwDfA7YBmwLXAiTeuN5xV3P4Wwmklze0XbNcB27r4m6ZhlOax2tRF3ru4/i6TPwcxOAe6MXt4VxZdxZlbq7huzcW0RkVSp+V4kf11H0+/oLe5+qbsvdPfN7v6hu18H/KCtC5jZGDN70Mw+MrN1ZlZnZkuifXs3K7udmd1tZgvMbKOZrTGz2VEz6VZJ5X5gZq+Z2Soz22Rmi8zsKTP7flKZLZpWE82nwI5RkQHA6uj4KW0185rZl8zs/6L7bDazFWb2rJntGx3va2Z3mdk7ZrYyeo9rzOzvZjYu6TqXA1VJl/5+83u20e2gj5ldYWbvmlmtmdWY2Ztmdp6Z9Uwqt8X7MLMJ0WdYa6H7xffJIjM7yMz+Gd1vjpn91MySk9zLk+I7zsz+YGYrgNqkMrua2T1Jn/cyM5thZl9odq+Ufl6anXOSmf2rrc/DzL5mZo+Y2fKkn9f7mt+/jc9g6yjeDdHPw2+Bfq2UTfs9iEgWubseeuiRZw9gK0LtaOIxIoVz5kVl5yXtG9/sOsmPamDXpLLvtlF296jMd9ooMyPpWtOS9o8GxrZx3ilRmcTraUnXOQ6oa+28qMywNq7twISo3OVtlJnWUtzRvj7A622c+xjQIyqb/D5Wt1L+gDR+Dk5p6XNpViZxfEUrn9XJSWUvb1b+03LR8QOAmlbirgW+lubPS/LnsaS9zwM4GWhopdxGYGxrP2PRvjLg/RbO/aSlzzGV96CHHnrk7qGaUpH8NDrp+Tp3X9TB67wBfBMYTuiXWg6cER3rDfwQwMwGA7tF+28hJGKDgH2AS4G10bGvR9sNhD6tvQhdCU4CHm8tCHef5e4GzI92zXd3ix7TWjrHzMqAqTR1M/o5MBSoICTHc6P96wn9VEdH76kU2J+QXAGcF8VwObBd0i3uSorhlNZiB84FvhQ9f4LwWW5P+GwBjiAk/80NACYB/YFfJO3/Xhv36ozBwC+BgcBZKdzPgMMJn9ke0b6phMRuPqGrRS9gT2A54XP9DaT185JsKG18HmbWB/gVoXWgnvAHSTlwelSuF6H7SlsmALtEz/8JbEOonV/TvGAH34OIZJH6lIp0b0uA/wfcTEjaypod3znarib8xz2AkGStJ9Q4ve3uVyeVr4q2fYBLCDWI7wNPunum/xP/KiHRApjl7lclHZuR9LyGkKhOB3YlNNUm90/dmc75VtLzi9x9CYCZXUnTQKkjgf9tdt7r7v7bqOy9wM+i/dt2Mp7WLAV+7u4NZnYX8Ot27nejuz8RPZ9tZjvRlNBtS/hum9vDzIYR+jWn8vOSrL3P46vR9QAec/fEZ/s7MzsdGAN8zsx2dPePWrnHQUnPr0v8MWdmNxL6ZydL9WdeRHJENaUi+Wle0vNyM9u6g9f5E/BTQrLWPCElsc/dGwk1VguBnYD/Bu4F3on6ao6Myt8K3A8kyt9MqD1camYXdjDG1gxNev5eG+V+RqjB+zKhZq35gKnSTsYxJOn5gqTn85Oet9T/sDLpeXUG42nNHHdvSON+bzZ7nWofysFp/Lwka+/zaO1zhvY/609jS3q+sJXnQFo/8yKSI0pKRfKQuy8DXknadUFL5ZIH2bRwbCCh6R5CLdrngSKgxQEj7v4XYBShZvFo4EpC/77dCbWiuPtGdz+J0Mx5APBfwMuEptVrzWxEau8wJUuTnu/aRrnkpvNjgV5RV4GVLZT1DsSxLOn5qFaeJ5dJqOvkfdP16f3cPZX71TZ7nfwenk7q2vDpg9B39t3oHu3+vLQWHy1/Hq19zs1ft/RZJ6xIer5NK8+bgkj/PYhIFikpFclf/02okQT4UTRyemszK7Ywof7FhD6Aramn6T//emAdoZn7qpYKm9lKTGQ+AAACoUlEQVSvgIMJ/UUfBx4ANkWHR0VlTjCzs4ARwNuEWtO3E5eglf/8O+gFmhLLb5jZxWY2xMwGmtmxZpbo31qfdM4aoNjMLmXLWrOE5ER1p6gfY3v+mvT8GgsLAIwm9HFtqUyX5O4fAh9ELw82s3MtLDZQamZfNLOfA/clyqfy85KmFwlN6gBHmNnRFmZW+AGhXytAZRtN9wDPJj2/0MxGmNkOwE9aKpyF9yAinaCkVCRPufvThIFIdYTf1cuARcBmQvJwDWFQS2vnrweeiV6OAD4m1D7u1sopZwBPJd3jbcIgGAhN9BBqLH9FaE5fHz0mRscWA/9K4y22yd1rCVNeJZLOawi1ZKuAhwiDjYieJ8wiJBg/ooXBLe6+gTDiGsJgqA3R9EintBHKFLYc1LSE0Lc2MefqTEJ/1u5gImGUuwH/Q0gSa4G3gCvYsktFKj8vKXP3auBswh9ixcDDhJ+v26Mim2ga9NSau4F/R8/3IzTNf8SWXQOSZfQ9iEjnKCkVyWPu/ntCc/uthES0ltAfrxL4AzC5nUucTEiYVhNGE99L6ysqTQb+QUj86gkDiN4gJHhTojLPEAb0fERI/hoIyeh9wIFRIpkx7v4Qoa/ofYRpfeoJSelzNPUz/QVwLSGxqI2OHUTro6e/B/ydUHOcSgzVhFkHriQMhNlESNzeItTAHR31T+zy3P05QrJ9NyGhqyN83v8i/DFycVLxVH5e0r3/HwnTh/2FUKtdT/hD6k/Avh4WF2jr/FrgEOBBwu/JGsLiA63N55vx9yAiHWepdT0SEREREcke1ZSKiIiISOyUlIqIiIhI7JSUioiIiEjslJSKiIiISOyUlIqIiIhI7JSUioiIiEjslJSKiIiISOyUlIqIiIhI7JSUioiIiEjs/j8O3UQsMmkwrAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } ], - "text/plain": [ - "" + "source": [ + "fig, ax1 = plt.subplots(figsize=(10,7))\n", + "ax1.plot(class_thresh_arr, bal_acc_arr_orig)\n", + "ax1.set_xlabel('Classification Thresholds', fontsize=16, fontweight='bold')\n", + "ax1.set_ylabel('Balanced Accuracy', color='b', fontsize=16, fontweight='bold')\n", + "ax1.xaxis.set_tick_params(labelsize=14)\n", + "ax1.yaxis.set_tick_params(labelsize=14)\n", + "\n", + "\n", + "ax2 = ax1.twinx()\n", + "ax2.plot(class_thresh_arr, np.abs(1.0-np.array(disp_imp_arr_orig)), color='r')\n", + "ax2.set_ylabel('abs(1-disparate impact)', color='r', fontsize=16, fontweight='bold')\n", + "ax2.axvline(best_class_thresh, color='k', linestyle=':')\n", + "ax2.yaxis.set_tick_params(labelsize=14)\n", + "ax2.grid(True)" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Difference in mean outcomes between unprivileged and privileged groups = -0.000000\n" - ] - } - ], - "source": [ - "metric_transf_train = BinaryLabelDatasetMetric(dataset_transf_train, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "display(Markdown(\"#### Transformed training dataset\"))\n", - "print(\"Difference in mean outcomes between unprivileged and privileged groups = %f\" % metric_transf_train.mean_difference())" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "### Testing \n", - "assert np.abs(metric_transf_train.mean_difference()) < 1e-6" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Train classifier on original data" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# Logistic regression classifier and predictions\n", - "scale_orig = StandardScaler()\n", - "X_train = scale_orig.fit_transform(dataset_orig_train.features)\n", - "y_train = dataset_orig_train.labels.ravel()\n", - "w_train = dataset_orig_train.instance_weights.ravel()\n", - "\n", - "lmod = LogisticRegression()\n", - "lmod.fit(X_train, y_train, \n", - " sample_weight=dataset_orig_train.instance_weights)\n", - "y_train_pred = lmod.predict(X_train)\n", - "\n", - "# positive class index\n", - "pos_ind = np.where(lmod.classes_ == dataset_orig_train.favorable_label)[0][0]\n", - "\n", - "dataset_orig_train_pred = dataset_orig_train.copy()\n", - "dataset_orig_train_pred.labels = y_train_pred" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Obtain scores for original validation and test sets" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "dataset_orig_valid_pred = dataset_orig_valid.copy(deepcopy=True)\n", - "X_valid = scale_orig.transform(dataset_orig_valid_pred.features)\n", - "y_valid = dataset_orig_valid_pred.labels\n", - "dataset_orig_valid_pred.scores = lmod.predict_proba(X_valid)[:,pos_ind].reshape(-1,1)\n", - "\n", - "dataset_orig_test_pred = dataset_orig_test.copy(deepcopy=True)\n", - "X_test = scale_orig.transform(dataset_orig_test_pred.features)\n", - "y_test = dataset_orig_test_pred.labels\n", - "dataset_orig_test_pred.scores = lmod.predict_proba(X_test)[:,pos_ind].reshape(-1,1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Find the optimal classification threshold from the validation set" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Best balanced accuracy (no reweighing) = 0.7473\n", - "Optimal classification threshold (no reweighing) = 0.2674\n" - ] - } - ], - "source": [ - "num_thresh = 100\n", - "ba_arr = np.zeros(num_thresh)\n", - "class_thresh_arr = np.linspace(0.01, 0.99, num_thresh)\n", - "for idx, class_thresh in enumerate(class_thresh_arr):\n", - " \n", - " fav_inds = dataset_orig_valid_pred.scores > class_thresh\n", - " dataset_orig_valid_pred.labels[fav_inds] = dataset_orig_valid_pred.favorable_label\n", - " dataset_orig_valid_pred.labels[~fav_inds] = dataset_orig_valid_pred.unfavorable_label\n", - " \n", - " classified_metric_orig_valid = ClassificationMetric(dataset_orig_valid,\n", - " dataset_orig_valid_pred, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - " \n", - " ba_arr[idx] = 0.5*(classified_metric_orig_valid.true_positive_rate()\\\n", - " +classified_metric_orig_valid.true_negative_rate())\n", - "\n", - "best_ind = np.where(ba_arr == np.max(ba_arr))[0][0]\n", - "best_class_thresh = class_thresh_arr[best_ind]\n", - "\n", - "print(\"Best balanced accuracy (no reweighing) = %.4f\" % np.max(ba_arr))\n", - "print(\"Optimal classification threshold (no reweighing) = %.4f\" % best_class_thresh)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Predictions from the original test set at the optimal classification threshold" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "#### Predictions from original testing data" + "cell_type": "markdown", + "metadata": { + "id": "SVS2_UFuEqAZ" + }, + "source": [ + "```abs(1-disparate impact)``` must be small (close to 0) for classifier predictions to be fair.\n", + "\n", + "However, for a classifier trained with original training data, at the best classification rate, this is quite high. This implies unfairness." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "XQXKx9LKEqAZ", + "outputId": "2cc1dfc3-0576-4183-f4e1-b6414ae5eb63" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 14%|█▍ | 14/100 [00:00<00:00, 134.43it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Classification threshold used = 0.2674\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 41%|████ | 41/100 [00:00<00:00, 131.04it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Balanced accuracy = 0.7417\n", - "Statistical parity difference = -0.3576\n", - "Disparate impact = 0.2774\n", - "Average odds difference = -0.3281\n", - "Equal opportunity difference = -0.4001\n", - "Theil index = 0.1128\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 67%|██████▋ | 67/100 [00:00<00:00, 127.49it/s]../aif360/metrics/dataset_metric.py:94: RuntimeWarning: invalid value encountered in double_scalars\n", - " return metric_fun(privileged=False) / metric_fun(privileged=True)\n", - "100%|██████████| 100/100 [00:00<00:00, 121.44it/s]\n" - ] - } - ], - "source": [ - "display(Markdown(\"#### Predictions from original testing data\"))\n", - "bal_acc_arr_orig = []\n", - "disp_imp_arr_orig = []\n", - "avg_odds_diff_arr_orig = []\n", - "\n", - "print(\"Classification threshold used = %.4f\" % best_class_thresh)\n", - "for thresh in tqdm(class_thresh_arr):\n", - " \n", - " if thresh == best_class_thresh:\n", - " disp = True\n", - " else:\n", - " disp = False\n", - " \n", - " fav_inds = dataset_orig_test_pred.scores > thresh\n", - " dataset_orig_test_pred.labels[fav_inds] = dataset_orig_test_pred.favorable_label\n", - " dataset_orig_test_pred.labels[~fav_inds] = dataset_orig_test_pred.unfavorable_label\n", - " \n", - " metric_test_bef = compute_metrics(dataset_orig_test, dataset_orig_test_pred, \n", - " unprivileged_groups, privileged_groups,\n", - " disp = disp)\n", - "\n", - " bal_acc_arr_orig.append(metric_test_bef[\"Balanced accuracy\"])\n", - " avg_odds_diff_arr_orig.append(metric_test_bef[\"Average odds difference\"])\n", - " disp_imp_arr_orig.append(metric_test_bef[\"Disparate impact\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Display results for all thresholds" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAG2CAYAAABGcv+aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd4VFX6wPHvSW8QSELvSC9SBBHQDS7iIooFC6yiYgG7IspPReyNXcUuFlbExoKNRV1ARUVFUJGyCNJDTwgESAjp5fz+ODOQDCl3kpm5M5n38zzz3OSWc99Y4M0p71Faa4QQQgghhLBTiN0BCCGEEEIIIUmpEEIIIYSwnSSlQgghhBDCdpKUCiGEEEII20lSKoQQQgghbCdJqRBCCCGEsJ0kpUIIIYQQwnaSlAohhBBCCNtJUiqEEEIIIWwXZncAdgsJCdHR0dF2hyGEEEIIUa3c3Fytta6TnYpBn5RGR0eTk5NjdxgiyOzfvx+Apk2b2hyJEEKIQKKUyrM7Bm8J+qRUCDuMGTMGgKVLl9obiBBCCOEnJCkVwgb333+/3SEIIYQQfkVpre2OwVaxsbFahu+FEEIIEQiUUrla61i74/CGOjlRVgh/t2fPHvbs2WN3GEIIIYTfkOF7IWxw9dVXAzKnVAghhHCyJSlVSt0KTAaaARuAiVrrnyq5dzZwbQWXjndfK6WGAN9XcE9XrfUmT8QshCdNnTrV7hCEEEIIv+LzOaVKqdHAB8CtwDLH8Tqgm9Z6dwX3xwOuhUR/Bn7UWl/nuGcIJintDhwuc99BrXVJVfHInFIhhBBCBIq6PKfUjqT0V2Cd1np8mXNbgU+01g9YeH4wJpkdrLVe7jg3BJOUNtJaZ7gTjySlwg4pKSkAtG/f3uZIhBBCBJK6nJT6dKGTUioCOA342uXS18Agi82MBzY4E1IXvyul0pRS3yqlzq5FqEJ41fXXX8/1119vdxhCCCGE3/D1nNIkIBRIdzmfDpxT3cOOofwrANce1TTgFmAlEAFcDXyrlEquaK6qUmoCMAEgIiLCzR9BiNp77LHH7A5BCCGE8CuBtvp+LKZ39/2yJ7XWm4HNZU6tUEq1xSymOikp1Vq/BbwFZvjeS7EKUank5GS7QxBCCCH8iq/rlGYAJUATl/NNgP0Wnh8PfKq1PlztnfAr0NG98ITwjc2bN7N58+bqbxRCCCHcpJT6i1Lqc6XUPqWUVkqNs/BMT6XUD0qpPMdzDyullA/CPc6nSanWuhBYBQxzuTQMqGiO6HFKqdOBXsBMi6/rjRnWF8Lv3HTTTdx00012hyGEEKJuigPWA3cBedXdrJSqD3yDmU7Z3/HcZGCSF2M8iR3D988D7yulfsOUdroZaA68AaCUeg9Aa32Ny3MTgK1a66WuDSqlJgI7MTVPIzDD/BcDl3rlJxCilp5++mm7QxBCCFFHaa0XAgvheL336lwFxADXaq3zgPVKqS7AJKXU89pHpZp8npRqrecppRKBqZji+euBEVrrXY5bWrs+o5SqB4wBHq+k2QjgWaAl5jeCDcD5jn8pQnhcUUkpmblFNKoXWaPnBw2yWmxCeE1JCWzZYo5C1ETjxuYjROAbCPzkSEidvgKeANoCO3wRhC0LnbTWM4AZlVwbUsG5bExXdGXt/RP4p6fiE6Ks/KISNqRmsX7fUf5MPcqGtCy27D9GYUkpdw7tyKRhndxuc/369QD06NHD0+EKq154ASZPtjsKEcgefxweesjuKITwhKbAXpdz6WWu1d2k1J8kJCTI/uOinJJSTW5hCTmFxeQWlJBbVIJz5KJtiKJLs1Ci24RSWKzIOrCRj7/cQaM493pMJ06cCMCLL77o8fiFNT0/+YSY5s1JmTDB7lBEgMpp1Ypc+ftD+F6YUur3Mt+/5agqFPB8vqOTv5EdnURZn/8vlYlz11CqISxE0bNlPP3bJnBam4b0bBFPs/gonIsRS0o1d81dw5fr0njiou5cPbCt5fesXLkSgP79+3vjxxDVKS2FpCS49FKYaXXtpBBC2M/dHZ2UUseA27XWs6u45z0gUWt9fplz/YHfgPZaa+kpFcKXiktKee6rzXRuWp+HLuhKn1YNiY4IrfT+0BDFC6N7k19UykMLNhAdEcZlp7W09C5JRm22ZQscOQIDB9odiRBC+IMVwD+UUlFa63zHuWFAKmYhuU/4uk6pEH5r0fr97D6cy11DOzLolKQqE1Kn8NAQXr2yD2d1TOL/PvkfX65LtfSutWvXsnbt2tqGLGpqxQpzlKRUCFEHKaXilFK9lVK9Mblea8f3rR3Xn1FKfVvmkTlALjBbKdVDKTUKuB/w2cp7kOF7Gb4XAGitGfnqMnILSlgyKZmQEPfqBecWFnPtrN9YszuTzk3rnXQ9PDSEqPAQosJDiQoL5ctnbkJrGHLPq2TlFZGZW0RWXhHhoSG0ToihbWIMrRNjaZMQw+ntEmiVEOOpH1UATJgAH38Mhw5BiPxuLoQIHFaG75VSQ4DvK7j0rtZ6nKNM1BCtddsyz/QEXgNOB45gSnU+LkmpD0lSKgCWbc1g7Nu/Mm1UT8acflJVMkuy84t4euEmDmbnlzuvNRSWlFJQVEp+cQn5RSVk7NpCWIiiVcduxEeHH/8UFJew61Auuw7lkpaVR6mGepFhfD95CEluLqYSVTj1VGjRAhYtsjsSIYRwi7tzSgOJzCkVAnjzx+00rhfJJX1b1LiNelHhPDOqp8W7k6u9o7C4lHV7Mxn91i+8uGQLT15stW1RpaNHYf16s8hJCCGE35BxKxH01u/L4qetGVx/Zjsiw6qfR+oJK1euPL4CvzIRYSH0a5vAVQNa8+/f9rDtQLZPYqvzfvvNdF/LfFIhhPArkpSKoPfGD9upFxnGlQNqNmxfE5MnT2ayxcLtdw3tSEx4KM8s3OTlqILEihWgFAwYYHckQgghypDhexHUdh/KZeEfaYz/S3vqR4X77L2vvvqq5XsT4yK59ewO/GPxJpZvy2BQhyQvRhYEVqyAbt0gPt7uSIQQQpQhPaUiqM38KYWwkBCuH9zOp+/t0aOHW1uMXje4LS0aRPPUwo2Ulgb34sRaKS2FX36RoXshhPBDkpSKoJVxrICPft/DJX1a0KR+lE/fvXz5cpYvX275/qjwUP5veGc2pB5l/pp9XoysjpOi+UII4bdk+F7UeVm5RSzekMafqUc5klvEkdxCMnOLSMvKp7CklAnJ7X0e05QpUwBY6sa+2SNPbc6sZTt49qvNjOjZzFJxf+FCiuYLIYTfkqRU1Em5hcV882c6X/wvlR+2HKSoRFMvMoyEuAgaxkSQFBdBx8ZxnNkxiVMaxfk8vjfffNPtZ0JCFA+e340r3lzB28tSuP2vHb0QWR23YgU0aACdO9sdiRBCCBdSPF+K5weco/lF/G9PJmt3Z/K/vZlk5xeXu641/LEvi7yiEprWj2Jkr2Zc2KsFPVrURyn3dmryRze9/zvLtmbw+9Rh0lvqrp49oWVLKZovhAhYUjxfCJsVlZTyzMJN/Lj1INsPHkNrU9WnQ6M4EmIjyt2rFFzStwUX9mrO6W0T3N4y1Bd++OEHAJKTqy+i7+rKAW34akM6K3ce5i+dGnk6tLorKws2bIDLL7c7EiGEEBWQpFQEhJe/3cqsn3eQ3KkRF/VqTp/WDTm1VbxPyzh50iOPPAK4N6fUqX/bhkSEhvDztgxJSt0hRfOFEMKvSVIq/N6qXUd47fttXHZaS567vJfd4XjErFmzavxsTEQYfds0YNm2DA9GFASkaL4QQvg1KQkl/FpOQTGTPlpLs/hoHhnZze5wPKZ9+/a0b1/zVf9ndkhiQ+pRDucUejAqP/LFF7B3r2fbXLECuneH+vU9264QQgiPkKRU+LUn/7uR3Ydzef6KXtQL0KH6iixZsoQlS5bU+PnBjl2dlm+vg72lu3fDhReaXZdef90UvK8tKZovhBB+T5JS4be+3ZjOv3/bzYSz2jOgfaLd4XjUk08+yZNPPlnj53u2iKdeVBg/18Uh/NRUc0xKgltvheRk2LSpdm1u3gyZmZKUCiGEH5M5pcIvHTpWwH2frqNL03pMOreT3eF43Pvvv1+r58NCQxjYPrFuzis9cMAc582D9eth0iTo1QsefhhGjTLzQl0/1fnvf81RklIhhPBbkpQKv6O15oHP/uBoXjHv3zCAyLC6V4uzVatWtW7jzI5JfP1nOrsP5dI6McYDUfmJ9HRzbNIE+veH886DO+6AqVPNp6YSE6FT3fsFRwgh6gpJSoVfOZhdwP2fruPbTQeYMqILXZvVzUUpixcvBmD48OE1bsM5r3TZtgyuTGztkbj8grOntHFjc2zaFD7+GJYtM4uftC7/sapbNwiRGUtCCOGvJCkVfuObP9O5/9N1ZBcU89AF3bh+cFu7Q/KaadOmAbVLStsnxdIsPoqft2Vw5YA6lJSmp5sV8lFR5c+feaY98QghhPAJSUqF7XIKinniyz+Zu3IP3ZrV599jetOpST27w/KquXPn1roNpRSDOySxZGM6paXaL3euqpEDB8zQvRBCiKAiSamwVcrBY1w3eyW7D+dyy5BTuPucTkSE1f0h1qZNm3qknTM7JPHJqr38mXaUHi3iPdKm7dLTTwzdCyGECBqSlArbZOUWceO7v5OdX8y8CQM5vV2C3SH5zBdffAHAyJEja9XOoA6mVNaybRl1Jyk9cAC6dLE7CiGEED5W97ukhF8qLinl9n+vZs+RXN68+rSgSkgBpk+fzvTp02vdTuN6UXRuUq9u1StNT5fheyGECELSUyps8eR/N/LT1gz+eemp9G8bXAkpwCeffOKxtgZ3SOLDX3eRX1RCVHiAl88qKoJDh2T4XgghgpD0lAqfm/PrbmYv38mNZ7bjiv61r9cZiJKSkkhKSvJIW2d2TKSguJTVu454pD1bZTh6fKWnVAghgo4kpcKnfkk5xMML1pPcqREPjOhqdzi2+eyzz/jss8880tbp7RIJC1F1Y3cnZ+F86SkVQoigI8P3wmd2H8rllg9W0SYxhleu7ENoXSlhVAMvv/wyAKNGjap1W3GRYfRp3aBuzCt1Fs6XnlIhhAg6kpQKnzhWUMz4936nVMPb1/anflS43SHZasGCBR5tb3CHJF76diuXzPj5pGshShGiTF3TUKUIDwth7IDWnNvdM2WpPEp6SoUQImhJUiq8rrRUc/e8tWw7eIx3rzudtkmxdodku/h4z5ZvGtWnJev3ZVFQXHrSNa2hVGtKtaakVLMvI4cJ769iTP9WPHRBN2Ij/eiPAekpFUKIoOVHfxuJuurFJVv45s90HhnZjTM7emZxT6CbN28eAKNHj/ZIe60TY/jXtf0t3VtYXMoLS7bwxg/bWZFyiBdG96Zv64YeiaPW0tMhIsJsMyqEECKoyEIn4VVfrkvl5e+2cUW/lowb1NbucPzG66+/zuuvv27LuyPCQrhveBfmjj+D4hLN5W+s4IVvtlBccnIvq885txhVwTvfWAghgpXSWtsdg61iY2N1Tk6O3WHUSev3ZXHZG8vp3jyeOeMHEBkW4DU0PSg3NxeAmJgYW+M4ml/Eows28NmafZzeLoHXruxLo3qR9gV03nmmLNTKlfbFIIQQfkwplau1rpPz4KSnVHjFgex8Jrz3Ow1jInhj7GmSkLqIiYmxPSEFqB8VzvOje/Pi6N6s25vJBa/8xOrdNtY7PXBAFjkJIUSQkqRUeNSew7k8/sWfnP3sUg7lFPLW1f3s7XnzUx988AEffPCB3WEcd3GfFnx2y2AiwkIY8+YvzPl1tz2ByBajQggRtGT4XobvPeJ/ezKZ+VMKi9bvRwEXnNqMm4ecQpemsmClIkOGDAFg6dKltsbhKjO3kDvnruXHLQcZ078Vj17Y3Xdbl2oNkZEwaRJMm+abdwohRICpy8P3svpe1NrzX2/m5e+2US8yjBvPbMe1g9rSvEG03WH5tW+++cbuECrUICaCd8b154VvtvDq99tQSvHMqJ6+eXlmJhQVSU+pEEIEKUlKRa19tmYfA9sn8tY1p1EvyIviWxUe7r//nEJDFPf+rTOpWXl8uS6Vxy7sTkSYD2b6SOF8IYQIajKnVNTKgex89h7JY2jXxpKQumH27NnMnj3b7jCqNKJHM7Lzi1mRcsg3L5TC+UIIEdQkKRW1snpXJgB9/KX4eoAIhKT0zI5JxEaEsnh9mm9e6OwplaRUCCGCkiSlolbW7D5CRGgIPVrIgiZ3LF261O8WObmKCg/l7C6N+XpDOiWlPlgQ6ewpleF7IYQISpKUilpZtesI3VvUlzqkddTwHk05lFPI7zsPe/9l6elmJ6ck2YpWCCGCkSSlosYKi0tZty/Lf/ZNDyAzZ85k5syZdodRrbM7NyYiLIRF6/d7/2UHDpiENFR+wRFCiGAkSamosT/TjlJYXCpJaQ3MmzePefPm2R1GtWIjw/hLx0Z8tWE/Xq9pLIXzhRAiqElJKFFjq3eZ7Sj7tmlgcySBZ8mSJXaHYNnwHk1ZsjGddXuz6NXKi/+u09NlPqkQQgQx6SkVNbZ69xGax0fRLF4K5ddl53RtTFiI8v4Q/oED0lMqhBBBTJJSUWNrdmfSp40M3dfEjBkzmDFjht1hWNIgJoKBpySyeH2ad4fwpadUCCGCmiSlokbSj+azLzNP5pPW0BdffMEXX3xhdxiW/a17U3YeymVL+jHvvCA3F44dk55SIYQIYpKUiho5Pp+0tcwnrYlFixaxaNEiu8Ow7NzuTVAKFnmrkL7s5iSEEEFPklJRI6t3HyEiLITuzePtDkX4QON6UfRr05DF3ppXKoXzhRAi6ElSKmpk1a4j9GwRT0SY/CdUEy+99BIvvfSS3WG45W/dm7JpfzY7M3I837hsMSqEEEFPSkIJtxUUl7B+31GuHdTG7lAC1rfffgvAXXfdZXMk1g3v0ZQn/7uRj1ft4dK+Lctdyy0sIS0rn7SsPFIz89mflUdRiaZvm4ac0T6Brk3rExKiKm9cekqFECLoSVIq3LYh9SiFJVI0vzY+//zzmj9cXAxHjkCjRp4LyIKWDWM4tWU8r32/nde+317pfeGhiib1owD47x9mDmp8dDint0ugT+sGJ21JGxGquGjXXuqDJKVCCBHEJCkVbjtRNF+SUlu8+Sbcdx/s2OHzxPTVv/dlzZ4jJ52PDAulWXwUzRpEkRQbebxXNDUzj193HOKX7Yf5ZcchvvkzvcJ2i79dw5ioWP7Yn0f/tlEoVUWvqhBCiDpJklLhtjW7M2nRIPp4b5hw33PPPQfAvffe6/7Da9dCTg589BHcdpuHI6ta68QYWifGWL6/eYNoLunTkkv6mOH+YwXFlJSWr3V66FgBeStmcCAmniveXEHXZvUZN6gNl5/WquohfyGEEHWKLatUlFK3KqV2KKXylVKrlFJnVXHvbKWUruCT43JfsqOtfKVUilLqZu//JMFp9e4j0ktaSytWrGDFihU1ezglxRw//NBzAflIXGQY8dHh5T7tG8XRPTSPlp3bMG1UT7TW3PfpH8z5bbfd4QohhPAhnyelSqnRwEvA00AfYDmwSCnVupJH7gKauXxSgI/KtNkOWOhoqw/wDPCKUupSL/0YQSstK4+0rHypT1pLn376KZ9++mnNHt6+HcLCYMWKEwlqTWgNe/fCp5/CQw/BJ5+Y+ap2OHCA0KZNGXN6axbddRbtkmL5dmPFQ/1CCCHqJjt6SicBs7XWM7XWG7XWdwBpwC0V3ay1ztJa73d+gFOA9sDMMrfdDKRqre9wtDkTeBeowdioqMrqXZkAssjJLoWFsGcPjB1rvne3t1RrMyf1kkugRQto1QouuwyefBIuvxw6dIAXXoCjRz0fe1XS04+Xg1JKkdypEStSDpFfVOLbOIQQQtjGp0mpUioCOA342uXS18Agi82MBzZorZeXOTewgja/AvoppcJrEquo2OrdR4gMC6Frs/p2hxLQpk2bxrRp09x/cNcuKC2FIUMgOdkkpe7sRz9/Ptx8M/zxBwwdCi+/DL/+auaozp8PbdrApEnQsiXcfTfs91Kx/LKKi+HQoXIr75M7NSK/qJSVOw97//1CCCH8gq8XOiUBoYDruFw6cE51Dyul4oErgAdcLjUFllTQZpjjneX2RlRKTQAmAERERFgMXWxMO8ri9fs5taUUza+ttWvX1uxB53B9+/Zw1VUwYQKsWgX9+lX/bHExPPggdO1qktLQ8qWZuPhi81m1yvSWvvqqSVh//hm8uRo+I8Mk1mUK5w9on0BEWAg/bD7IWR19W2FACCGEPQItsxiLifn92jSitX5La91Pa90vLEwKEFSnuKSUGUu3ceGryygoLuHeczvbHVLAmzt3LnPnznX/QWdSesopZtg9IsL6EP5778GmTfDUUycnpGWddhp88AG89pqZt7pwoftxuqOCwvkxEWGc3jaBH7ce9O67hRBC+A1fJ6UZQAngupdgE8DKOOF44FOtteuY3v5K2ix2vFPUUMrBY1z+5gr+uXgzw7o14eu7kxnQPtHusILX9u0QFQVNm0LDhnD++TB3bvULlPLz4ZFH4PTTTW+oFdddZ5LfqVPNlAFvqWSL0eROjdiSfozUzDzvvVsIIYTf8GlSqrUuBFYBw1wuDcOsnK+UUup0oBflFzg5raikzd+11kU1i1Z88MsuRrz8EykHc3hpTG9eu7IvCbEy3cETnnjiCZ544gn3H0xJMUP3IY7/da+6ysz7/O67qp+bMcOstJ82zfpQfHg4PPqoqYv62Wfux2pVJVuMJnc2w/Y/bpHeUiGE8DtKRaLUVSj1PkptQamjKJWNUltRag5KjUOpaHeatGP4/nlgnFLqRqVUV6XUS0Bz4A0ApdR7Sqn3KnhuArBVa720gmtvAC2UUi862rwRGAc855WfIAi89v02pv5nPQPaJfL13X/hot4tZJcdD9q8eTObN292/8Ht201S6nT++RAfX/UQflYWPP00nHsunH22e+/7+9+hWzd4+GEo8dJK+Ep6Sjs2jqNp/SgZwhdCCH+iVCxKPQakAu8BVwIdgDggFlMlaTTwNpCKUk+gVKyVpn0+oVJrPU8plQhMxdQcXQ+M0FrvctxyUr1SpVQ9YAzweCVt7lBKjQBewJSWSgXu1FrXsBBkcHvjh+08+9VmLu7dnOlX9CZUdtXxuA8++MD9h7Q2PaVDhpw4FxVl5pbOmwevvw4xFey2NH26Wd3+9NPuvzM0FB5/3Lzjww/hmmvcb6M66elmbmx8fLnTztJQC9enUVxSSlhooE2BF0KIOmkb0BhwJgcZwDpOTJdMAk51HOOBKcANmA7IKtnyp7zWeobWuq3WOlJrfZrW+scy14ZorYe43J+ttY7TWv+zijZ/0Fr3dbTZTmv9hhd/hDpr5o8pTFu0iZG9mvPc5b0kIfUnBw/CsWNmnmdZV11lzn/++cnPHDgAzz8PV1xhFjDVxCWXQJ8+Zii/yAuzYQ4cMEP3FfTEJ3duRHZ+MWv3ZHr+vUIIIWqiCbAH01HYDa0bo/U5aD3G8TkHrRsD3Rz37OXkdT8Vkq4Hcdzby3bw1MKNnH9qM164opf0THnRww8/zMMPP+zeQ2XLQZWVnGzqilY0hP/UU2aRU03mrzqFhJji+jt2wKxZNW+nMmUK57safEoSIUrmlQohhLvc2dLdcf+VSqm1SqlcpdR+pdQHSqmmFdx6A9ABrR9F602VNqj1JrR+FDOcf6OVmCXrEADM/nkHT3z5J+f1aMqLo3tLQuple/bsYc+ePe49VLYcVFkhIWbu58KFZv5n2c+MGXD99dCpU+0CPu88GDTIJLf5+bVry5Wzp7QC8THh9GndkB8kKRVCCMvc3dJdKTUYU27zXaA7cDGmp/Pk3g6t30Fr63tSa12M1u9YuVWKdAo2pGbx6Bd/cm63Jrz89z6ES0Lqde+8Y+n/z/K2bzfHtm1PvnbHHZCaarYhLatfPzMntLaUMr2lf/2reVffvuWvR0eb3aDatDFbl4a7sZFaejr07Fnp5eROjXhhyRYO5xRK9QchhLDm+Jbuju/vUEoNx6y7cd2ACMzOmHu11i84vt+hlHoFeKXKtyj1HaDRemgF18xwoNaW/xKSpFTw8rdbqRcVxrOX95KE1J+lpJj96qMrqLDRqpUpeO9NZ58Nw4fDv/5V9X0hIdC8OfToYbYqHTas8jJUWlfZUwomKX3+my38tPUgF/VuUYsfQAgh6r4yW7q7ViCqakv3n4GnlVIjgS+BRMwC8+p2TxkCVLbX9aNAKZUsUq9I0CelCQkJLF261O4wbJNfVEqPkGyGnhbFml9/tjucoDFzpvnldfz48Zaf6b16NSQmstbG/17VvfcSVkHMYXl5RO7fT1R6OlGOY8Pffyfyb3/jaJcu7Bo7lkMDB56or+p87tgxziwsZFt2Nnur+Lnu61VC9o51LM3c6ukfSQghAk2YUur3Mt+/pbV+q8z3bm/prrVeoZQagxmuj8bkh98A19YoQqUaOL9y57GgT0oPHz7MkLIldoLMze+v4uftRSy776/ER7sx5CpqZc6cOQDu/bd36BAMGxY4/70WFMB771F/2jR6Tp1qhujvugsaldnLfr/ZyK3DoEF0qOLn+uzfa1i+4RC/TUkmRCpCCCGCW7HWup8nG1RKdcMM1T8BfIUp2fks8CZwjcvN1+KarJph/LLaOI5H3Ikj6JPSYPZn6lEWb9jPXUM7SkLqY2+99Vb1N5WVlwf79p288t6fRUbC+PFmu9K5c00lgBsrWYDpunjLRXKnRnz+v1Q27j9Kl6b1KSoppbCklKLiUkorGzhyER8dTkSYTE8RQtR5NdnS/QHgN631s47v1ymlcoCflFJTtNZ7y9zblvLD9gpIdmnP2Xuwwp3AJSkNYi9/u5V6kWFcP7id3aGI6uzcaY6BlJQ6hYXB2LFw5ZWwfj0UuyzajI2ttjrAWZ2SADj/5WU1DuOURrF8fvuZxEbKH3tCiLpLa12olHJu6f5xmUvDgMo2FYrBJLJlOb+v7Ld5RfnEtKxDwC/AHVZidpI/nYPUxjTTS3rn0I7Ex0gvqa/de++9ADz3nMWdcCsrBxVIQkLg1FNr9GjjelH887JT2X0ol/DQEMLDFBGhIYSHhlgazj+aV8SzX23m5W+38sBpEvQhAAAgAElEQVSIrjWKQQghAsjzwPtKqd8wi5huxmVLdwCttXNo/gtgplLqFk4M378IrNZa7y7XstaPAY9hGirFrL73yDCUJKVBytlLeoP0ktoiLy/PvQec5aACsafUQ67o16pWz+86lMPby3Ywqm9LOjet56GohBDC/7i7pbvWerZjS/fbgelAFvAdcF81r7rOk3ErrS1OyKqjYmNjdU5Ojt1h+NTGtKOc99JP3Dm0I5OG1bKouvCNiRPh7bfh6NHKyyuJKh3OKeSv05fSqXE95t10Bkr+OQohApBSKldrHWt3HAAo1Q5oBRxE641lzncFGgF70HqH1eZk1n8QeuU76SUNONu3m15SSaRqLCE2ggfO68JvOw/zyaq91T8ghBCiOq8B3wOnu5zv5zj/qjuNSVIaZPYczmXhH/u5bnBbmUtqo4kTJzJx4kTrD6SkBPZ8Uj9x+WmtOK1NQ55ZtIkjOYXVPyCEEKIqzu39FrmcX4xZ/OSy/V/VJCkNMjsPmakKZ3ZsVM2dwm+UlpqkNIjnk3pKSIjiyYt7kJVXxD+/2mR3OEIIEegaOo75Luedv/UnuNOYLHQKMgezCwBIipM9xO304osvWr95/37Iz5ek1EO6NqvP9YPbMvOnHVzm6DkVQghRI0cwc0cvB94uc/7SMtctk57SIJNxzCSljepF2hyJsKwulIPyMxPP6USz+Cim/mc9wb7YUwghauEXzDD9DJR6G6XuQal/Aa9japj+4k5jkpQGmYxjhUSGhRAnBcRh61ZYuNCWV992223cdttt1m6WclAeFxsZxq1nd2Bj2lFSMoKr+oYQQnjQS5jkMwwYB/wTUyYq3HH+BXcak6Q0yGRkF5AUFynlcADuvhtGjTJ7tPtYdHQ00dHR1m5OSTGF59u0qf5eYdmgUxIB+H3nYZsjEUKIAKX198BEoAjTY+r8FAJ3o/UP7jRnqbtMKQZoza9uhir80MFjBTJ0D5CZCV9/DUVFsGYNnHGGT19veScnMD2lrVpBhMwD9qT2SbEkxkbw244jjO7fuvoHhBBCnEzrV1DqM2A40ARIBxaj9T53m7I6hrtCKf4A/gV8oLV7E1eF/ziYXUDLhjF2h2G/L74wCSnA8uU+T0rdIuWgvEIpRb+2DVkpPaVCCFE7JgF9u9r7quHO8H0PzD6o+5TiQ6U4u7YvF76XcayQRvWkx41PPoGWLaFtW5OU+tiECROYMGGCtZudhfOFx/Vvm8Duw7mkH3WtZiKEEMISpRJQ6k6Ueg2lZrl83EpUrfaUPg9cAbQEooAxwBilSMFkxrO1Zr87Lxa+V1KqOZxj5pQGtaNH4auv4JZb4OBB+P570NqnuyUlJiZau/HYMThwQJJSLzm9nSmh99uOw4zs1dzmaIQQIsAodQqwDGhc0VXMYqcbrDZnqadUa+7VmtbAXzDL/A86XnYK8BSwWyk+VoreVl8sfO9wTiGlWspB8d//msVNl10GgwZBairs3u3TEJ555hmeeeaZ6m/c4dgyWIbvvaJbs/rERITKEL4QQtTMo5h5pKqCj9vcWn2vNcu05jagP1B2RVUYMAr4VSkuqkkgwvucNUqDvqf044+hWTMYONAkpWDLEL4lUg7Kq8JCQ+jbuiErd8o0eSGEqIFkTG/oU47vNXAhpj7pFuA8dxpzKylVimFK8SmwDdNrCiYbXgOkYOpSPVXJ48JmkpRihsMXLYJLLzVllnr0gLg4nyel1113Hdddd131N0rhfK/r3zaBTfuPkpVXZHcoQggRaJo4jtOPn9H6S+DvQCfMinzLLCWlSjFZKbYCi4GLOVEU9T9AstacBvQGjjqCEH5IthjFFMvPzzdD9wBhYTBggM+T0latWtGqVauqb9Iali6FhARoKFthekv/dg3RGlbvkt5SIYRwk3OP+6OASTKUaglkO85f5U5jVhc6/QOThCrHi2cBL2vNTucNWpOjFPuBju4EIHxHthjFrLpv0gTOPPPEuYED4ZlnTC9qXJxPwnj88cerv2nOHFO66umnvR9QEOvTqiFhIYrfdh7m7C4VzdUXQghRiQygNZAA7AXaAwtxJqjgVsLhzvD9DuBuoKXWTCqbkJbxV0dAwg8F/RajublmkdOoURAaeuL8oEFQUgIrV9oXm6vdu+G220xs//d/dkdTp0VHhNKjRTwrd8hiJyGEcNMGx7Ez8A2m87I70BfTmbnMncasJqWXAB215iWtOVbZTVqTqjW73AlA+E7QbzG6aJFJTJ1D907OwvnuDOFrbeZ7al2jUMaOHcvYsWMrvlhaCuPGmUT5/ffLJ9DCK05vl8C6vVnkF5XYHYoQQgSS54EpQC7wGLCRE6vvNwF3utOY1aR0KdBKKZLKnlSKJKVorRTx7rxU2OPgsQKSgn3oPikJ/vKX8ucbNoRu3awnpTt2wAUXmMVHt99ukkg3de7cmc6dO1d88aWXTO3UF1+UVfc+0r9tAoUlpazbm2V3KEIIETi0/g6t/4HWa9A6HbPRUh+gJ3AqWqe405zVpHQWZvj+SpfzYxzna721lPC+g9kFNArWlfd5efDll3DJJWZxk6tBg2DFiqoTzMJCM/e0e3f48UcYORJmzICbbjK9mm546KGHeOihh06+sH49PPAAXHghXH+9W22KmuvXxiwkk3qlQghRA0olotQlwI2YaZz70drtoSerSekAx/FTl/OfYbpoByD8XlBvMfr112Yhk+vQvdOgQXDkCGzeXPH1n36CPn1gyhQ47zzYuBEWLICpU+Ff/zLD7cXF1uMpKYEilxJEBQUwdizUrw8zZ/p0h6lg1zA2go6N4/hN5pUKIYR7lHoUs8jpE+ANx3EvSj3iblNWV7w0chwzXc5nuVwXfiqotxgtLYXXXzellc4+u+J7yhbR79q1/LUPPzTJYps2ZjX8BRecuPbEExAVZZLTggJzb3h45XH8+CPMmcOY2bOhqIi5MTEQH28+WpukeMECaCyrwH2tf7sEvlibSkmpJjREfiEQQohqKTUZeLiCK5HAwyh1DK2nV3C9QlaT0mygIXAuML/M+XMdx0oXPwn/4NxiNOiSUq1h0iSz1/0LL1SeMHbqZJLW5cvhhjLb9KakwC23mBJSixdDbOzJzz74oElM773XJKYTJ5a/XlhoemrnzYN9+yA2lt7du5v5rb16QVaW+WRmwo03mqF74XOnt01gzq+72Zh2lB4tZJq8EEJYcJvjmIfJD3djSkRdAkQDd1C2sH41rCalq4FzgFlK0R2zuqorMAmz5H+V1RcKewRtjdLnnjMLhyZOhLvuqvw+pUxvadnFTsXFcNVVZuenDz+sOCF1uucek5jefjt8/vnJ18PDYcQImD4dRo7k/piYmv9Mwiv6t0sA4PedhyUpFUIIa5pg8sCL0HrJ8bNKDQO+Atwa9rOalL6BSUrrY5b8H3+tI5g33Hmp8L2g3GL0gw9Mjc/Ro00yWN0czUGDzGKow4dNr+kTT8Avv8DcudC6dfXvu+02+Otf4cCB8ueVgp49ZVcmP9eiQTTN46NYufMI4wa3szscIYQIBBuBXpi97sta4Tiud6cxS0mp1nymFM9jekZdTde63JC+8EMnktIgWej09ddw3XVmDum775rezuo455X+8ouZ4/nkk3DNNSaptapr15PnpFbg0ksvBeDTT13XDgo79W+XwPLth9h2oPoZSZFhIbRKkB5vIURQmwp8DtwK/LPM+VuBIkwNU8ssb+2jNfcqxTzgQkx3bTrwudb40TY4ojLH972vC8P3RUWQnW3mYR49enI5prQ0GDPG1B6dPx8iLf7M/fubQvWLFpkFTW3bwiuveDx8gIEDB3qlXVE7Z7RPZMHaVM55/gdL9089vys3niW1ZIUQQWsyZtH7Myh1O7AHaOn4HASmoJQzMdVoPbSqxpSu4Y40dUVsbKzOycmxOwyve3rhRt5dvpNNTwwPzB2dcnLMHvXbtpmao9Vp08bMD23e3L339OsHq1aZ5HTZshO7PYmgUFBcwvebDlJYUv2GCB//voeVOw/zzd3J0mMqhPAZpVSu1rqKRQ4+pFQpZhpntXdiktIqtyi03FOqFGHACMz+ptGu17XmcattCd8L+C1GFy2CP/4wBeXbtjXD6/XrQ716Fa+oHzgQGtWgUtmgQSYpfeQRSUiDUGRYKMN7NLV0b782DRn2/A88vGA9s8b1D9z/t4QQonY89oefpaRUKRpjthqtZF9EAElK/VnAbzE6f74pofTmmxXvyOQpt95qFiQ98ID33gFc6Cj79HlFK/VFQGjeIJq7h3Xiyf9uZNH6/Yzo2czukIQQwre0troJkyVWG3sM6ILJhiv6CD8X0FuMFhaaVfEXXujdhBSgSxd47DGvv2fo0KEMHVrl1BoRAMYNaku3ZvV57IsNZOcXVf+AEEKISln9m/dczJyB2cB1jq/vwhRF1cA0bwQnPCfjWCF9WjewO4ya+e47s6DpkkvsjsRj7qqqZqoIGGGhITw9qieXzPiZ6V9v4dELu9sdkhBC+JZSIZjt5ltjdnIqT+v3rDZlNSlt4Tjej0lK0ZpXleJ74A/MKivhpwJ+i9H58yEuDs45x+5IhDhJ71YNGDugDe+t2MmlfVvSs6UU3hdCBAmlugILgFMquUMDlpNSq8P3zpo7hzB1p1CKRsAux/kJVl8ofC+gtxgtKTF7wY8YYXZMqiPOO+88zjvvPLvDEB4yeXhnEuMimTL/D0pKg7uiiRAiqMwAOlD59E63pnha7Sk9hOktjQf2Y3pGPwTyHddlqxo/FtBbjP7yC6Sn16mhe4CRI0faHYLwoPpR4Tx8QTfu+PcaXv52K3cP62R3SEII4QunYXpD/wMsBgpr05jVpHQzJik9BfgRuApwrtLQwOraBCG8K6C3GP3sM4iIMD2ldcitt95qdwjCwy44tRnfbzrAS99uJTI8hFuHdLA7JCGE8LZ0oD0wDq2za9uY1eH7mcBbQBRmJf5BTnTLZgATaxuI8J6A3WJUazOfdOhQU5NUCD+mlOLZy3txUe/m/HPxZl5fut3ukIQQwtuexuSC96JUrXu+LPWUas1HwEfO75WiI3A2UAz8rDWZtQ1EeE/AbjG6bh3s2AFT3No6NyCc41i0tWTJEpsjEZ4UGqKYfnkvtIZ/LN4EwC1DKpv/L4QQAU7rd1DqImAqcB9KHcDkhsfvQGvLfwhWm5QqRSTwp+Pb87Vmk9Ycxay2EgEg41ghkWEh1Iv0co1PT5s/H0JCTH3SOmb06NF2hyC8JCw0hOev6IXGJKZKwc3JkpgKIeogpR4ALsRM5YzgRLUmcG4t6oZqsxStKVCKRKAekOJO48I/BOwWo599BoMHQ+PGdkficePHj7c7BOFFYaEhvHBFLwCmLdrE4vX7iQit2cYnSfUiuHVIB3q0kFJTQgi/c4fjqFyONWL1T0nnGGOv2rxM2CMgtxjdvt3sdV/HVt2L4OFMTMef1Y7o8FBCQ1SNPiu2H+KCV5Zx57/XsOdwrt0/lhBClBWH6Q29BIhB6xCXT6g7jVkdz30RSAb+rRQPAmuBvLI3aM1ud14sfOdgdgEtG0bbHYZ75s83xzqalA4ZMgSApUuX2hqH8K6w0BAePL9brdo4ml/Emz9s5+1lO1i0Po2xZ7Th9rM7kBiI1TSEEHXN58DfgZVonV/dzdWxmpT+iMmEE4A5FVzXbrQlfCwgtxidPx/69IG2be2OxCvGjRtndwgiQNSPCmfy37pwzcC2vLhkC+8u38ns5TsJreF0nNAQxeMXdWd0/9YejlQIEYQ+wWxFvwilXgJ2Un6hE2j9o9XGlNbVz0FVitJqbtFa41YXrb+IjY3VOTk5dofhNSWlmo4PLuS2sztwz7md7Q7HmpQU6NABHnsMHnrI7miE8CvbDmTz+f/SKCmt7o/liv20NYOdGTn89H9/JT4m3MPRCSG8TSmVq7WOtTsOAJQqperFTBqtLXdaWr3xXasNCv9yJDfAthjNzYXLL4d69eDqq+2OxmuKiooACA+XpEC4p0PjekwaVq/Gz5/f8yjnv/ITr/+wnfvP6+LByIQQQcpjq6it1im9zlMvFL51vEZpICSlWsP48bBmDXz+eZ0dugcYNmwYIHNKhe91a16fi3u34J2fd3DtoDY0iw+w+eZCCH/i0U5LmQdaxwXUvvfTp8OcOfDkk3DBBXZH41U33nij3SGIIDZpWCe+XJfKS0u2Mu3SU+0ORwgRqLT2aKelpaRUKWZVc4vWmhs8EI/wML/aYnTrVpg5E/7+d7OIqayvvoL77oPLLquTOzi5Gjt2rN0hiCDWKiGGsWe04d3lO7nxrPZ0aBxnd0hCCOHWQqfKblS4udBJKXUrMBloBmwAJmqtf6ri/gjMFlZXA82BdOA5rfXLjuvjgHcqeDRaV1OioK4vdJr5YwpPLdzIukfPpX6UzfMXJ0+G554zX591Ftx1F1x0EezcCf37Q6tWsHw5xNX9vyBzc029yZiYGJsjEcHq0LECkp9dyuAOibx5dT+7wxFCWGT7QielZmEWMN3g+Loq5j6L3Bm+98hEVqXUaOAl4FZgmeO4SCnVTWtdWa3TuUBLYAKwFWgCuE6EygXK7eVXXUIaDA4eK/CfLUZXr4aePeHaa+HVV02vaOvWEBZmthNdsCAoElKAESNGADKnVNgnMS6S8We154UlW1i9+wh9Wze0OyQhRGAYB5QCNzi+rq5303JSanVHp3Yun47A3zBJZQ7wV6svBCYBs7XWM7XWG7XWdwBpwC0V3ayUOhcYCozQWn+jtd6ptf5Va73U5Vattd5f9uNGTHWW32wxqrVZwHTGGXDPPbBtm6lF2r497NsHH30E7drZG6MP3XLLLdxyS4X/yQvhMzee1Y6kuAj+sWgTVkbNhBDCQbl8XdnHLVZX3++q4PR2pVgBZGASyh+qa8cxDH8a8JzLpa+BQZU8djGwEpiklLoGs5PUImCK1vpYmfuilVK7gFDMjlMPaa3XVBdTXec3W4zu2gVHjkDfvub70FC4+GLzKSqCICuNNHr0aLtDEILYyDDuHNqRhxdsYOnmg5zdpbHdIQkh/F+7Sr6uNas9pZUJw3TbDrd4fxImaUx3OZ8ONK3kmfbAmUAv4FLgdsf7Zpe5ZzNwPXARZrurfOBnpVTHihpUSk1QSv2ulPq9uLi4olvqjIxjhTTyh0VOaxy/H7gucIKgS0gBsrKyyMrKsjsMIRjTvzVJcZEsWLvP7lCEEIFA611ovavc11V93FCb1fdRwGAgEvDm364hmMT3Sq11lolH3Q58pZRqorVO11qvAFaciFctx/SW3gHc6dqg1vot4C0wC528GLvtDmYX0LtVvN1hmPmkoaFwqpSfAbjooosAmVMq7BcRFkLrhGgOOip1CCGEXayufhlHxRNZnfMFFlpsJwMowSxUKqsJUNkc0DRgnzMhddjoOLbm5F5XtNYlSqnfMXNfg1ZJqeZwToF/FM5fswa6dIFoKdQNcOedJ/2uJIRtkuIi2XUo1+4whBBBzp3h+4omsBZghtEnWmlAa10IrAKGuVwaBiyv5LGfgeZKqbLLsjs5jhV2CyuzqudUTEIbtPxqi9HVq0/MJxWMGjWKUaNG2R2GEIBZiZ8hPaVCCJtZ7SmtaCJrgdaV9m5W5XngfaXUb5iE82ZM7dE3AJRS7wFora9x3D8HeAh4Ryn1KNAAU1LqE631AcczjwC/YMpF1ccM2Z9KJSv6g4XfbDG6fz+kpVU8nzRIZWRkAJCUlGRzJEJAo7gIDucWUlxSSlhobZcaCCFEzdRm9X2NaK3nKaUSMcXwmwHrMeWenO9o7XL/MaXUOcArmFX4R4D/APeXua0BZo5oU8z81jXAX7TWv3kq7kCUftSUabV9i1HnIifpKT3usssuA2ROqfAPSfUi0RqO5BbZ/+eFECJoWV3oNBw4HVijNV+UOX8h0Bv4TWsWW32p1noGMKOSa0MqOLcZOLeK9u4G7rb6/mCQU1DMtEWbqB8VRke7txB0JqW9e9sbhx+555577A5BiOOcoykZxwokKRVC1JxS0WidV9PHrQ7fPwwMAM5zOX8MeBSz8t1yUiq8S2vNvR//jy3p2bxz3ek0jLW5JNTq1XDKKRDvB1UA/MTIkSPtDkGI48ompUII4RZTfvNZzPqgSCAMpV7ETKecjtYbrDZlNSnt4jiucDnvHB7vavWFwvte/W4bi9bv58ERXUnu1MjucExPqQzdl7N/v5mO3bRpZeV5hfCdREctY0lKhRBuUaoNJjdsiFkA76zUVARci1lw/qDV5qzOaI9xHF3Hgeu5XBc2+3rDfqZ/s4VL+rTgxrP8YNvOzExISZGk1MWYMWMYM2aM3WEIAZTpKc0utDkSIUSAeRRIwCShZX2CSVLPcacxqz2laZgFSA9idlRymuI4prrzUuEdW9KzuXveWk5tGc8zo3rav989wNq15igr78u5//77q79JCB+pHxVGRGgIGTnSUyqEcMu5mN7RvwHflzn/h+PYxp3GrCalS4AbgFuU4lzMtp6dgVMcwSxx56XC8w7nFDL+vd+JiQzjrav7ERUeandIxurV5ihJaTnDh1vdmVcI71NKkRQXIT2lQgh3OecIutaad/aKNXSnMavD99Mwi5rAJKIjHEcF5DiuCxtorVn4RxrnvvAjaZn5vDG2L03jo+wO64Q1a6B5c2jiuolXcNuzZw979uyxOwwhjkuqJwX0hahLlFK3KqV2KKXylVKrlFJnVXN/hFLqccczBUqp3Uqp6rYfPOw4tnU5f6HjeMidmK3WKd3u6CF9m/KLmv4EbtSaFHdeKjxjf1Y+Dy1Yzzd/ptOjRX1mX9efHi38bIW77ORUoauvvhqQOqXCfyTGRnAgW5JSIeoCpdRozEZDtwLLHMdFSqluWuvdlTw2F2gJTMBsRtQEqG5v8BWYBHROmZe/CVyDGUlf5k7cVofv0ZpfgO5KcYoj0HSt2e7Oy4RnlJZq5vy2m38s2kRRaSlTRnTh+sHt/G8nltxc2LQJLr3U7kj8ztSpU+0OQYhykuIi2ZiWbXcYQgjPmATM1lrPdHx/h1JqOGanywdcb1ZKnQsMBU7RWmc4Tu+08J5/ABcAfTmx8v5GzEh6CTDdnaAtJ6VOjkRUklEbzfwphWcWbWJwh0SevqQnbRJj7Q6pYuvWQWmp9JRW4Jxz3FqQKITXJdWL5FBOAVpr/1gkKYSoEaVUBHAa8JzLpa+BQZU8djFm18xJSqlrgDxgETBFa32skmdA619Q6irMhkgJZa4cAW5D61/did3qjk4fAmOAR7XmiTLnH8KUA5ijNVe782J/kZCQEHBDqNGHc3mgTymdm+Sz44+V7LA7oEo0X7CATsCKggIKAuyfsbelppqCFc2bN7c5EiGMU4oLubNbEd99v5TQEElKhfBjYUqp38t8/5bW+q0y3ycBoUC6y3PpVF6iqT1wJlAAXIrZvv0VoDlwWZXRaP0RSn0BDAYaAweA5Wida+mnKcNqT6kzs/7A5fz7wGOYHyQgHT58mCFDhtgdhlsufu1nYiNDuWn0GXaHUrUPP4SEBAZecQVIz0s5zv/mAu0XIlF3LVi7j+nL1rJkWD86NK5X/QNCCLsUa637ebjNEMzw+5Va6ywApdTtwFdKqSZaa9cE11BqFqDR+gZcKzGZHlfQ+j2rQVhNSps5jvtdzjuDlG1pfCg1M88/dmqqjnMnJ0lIT/LYY4/ZHYIQ5TgL6B/MLqRDY5uDEULURgZmPqdr2ZsmnJzHOaUB+5wJqcNGx7E1J/e6Oo3DJLM3VHBtNlAKWE5Kra6MyXccB7qcH+hyXXhZYXEpB48V0KxBdQvibFZUBH/8IfVJK5GcnExycrLdYQhxnDMpPSQF9IUIaFrrQmAVZi/6soZxcj1Rp5+B5kqpsjt3dnIcd7kdhFLOnT7d6pWy2lP6B2auwGylmILJnrsCT2Ey5D+qeFZ4UPrRfLSG5v5Ui7Qif/4JhYWyyKkSmzdvBqBz5842RyKEkRQXAUCGlIUSoi54HnhfKfUbJuG8GTM/9A0ApdR7AFrraxz3zwEeAt5RSj2KmVP6EvCJ1vpAuZaVugi4yOXcLJf3d3Qcj7oTtNWkdDYmKW0BvFs2DExSOtudl4qaS83MA6C5v/eUyk5OVbrpppsAmVMq/EfDmAhCFGQck12dhAh0Wut5SqlEYCpmCuZ6YITW2tnr2drl/mNKqXMwi5tWYlbP/weoaE/s3pwYtgeTC15bURjAWnfitlo8/22lGI5ZkeXqE61xzZCFl6RlmZkSzRv4cU9pWhq88grEx0PHjtXfH4Sefvppu0MQopyQEEVCrOzqJERdobWegSnVVNG1IRWc24zZy94qZ8ek82tXG4CJbrTnVvH8y5XiCmAkjuL5wOda87E7LxS1k5plekqbxftpT+maNTByJGRmwr//DSF+VtDfTwwaVFmpOCHskxQXIUmpEKI6L2JGyBWQgklM25W5roFDaJ3jbsNuFc/Xmo+Aj8qeU4o44FKtyw3rCy9Jy8ynflQYsZFu73vgffPnw9ixkJgIy5ZB7952R+S31q9fD0CPHj1sjkSIExrVi5TheyFE1cwKfbNKX6nHMSWh3F8MVYEaZTZKEQIMB67G9JxGgSSlvpCamed/80m1hmnTYMoUGDAA/vMfaCpVwqpy++23AzKnVPiXpLhIdmS43bkhhAhWWj/qyebcSkqVoj8mER2N2TEAys8pEF6WmpXvf0npE0/AI4/A3/8Ob78N0X4Wnx969tln7Q5BiJM4h+9lq1EhhGVKjQUmAZ0xnZRlabS2nGtWe6NStAPGAldxYol/2T+t8jArtIQPpGXl0bd1A7vDKG/xYjjjDLODk/xFZkn//v3tDkGIkyTGRZJfVEpOYQlx/jhFSAjhX5S6AlMcX+NmTdKKVPqnjlLcjElGyxbMd32hBppozbHaBiKql1tYTGZukf/1lO7dC2efLQmpG9auNVUyesu8W+FHnAX0M7ILJHArcmAAACAASURBVCkVQlhxm+OYB8Rg8sLDQCKQ6fhYVtXS6BmYhFQ5PkXAQsxWUkOcN0lC6jupmX5YDqqkBFJToVUruyMJKBMnTmTiRLcqZQjhdc4C+rKrkxDColMxieg5x89o3Qh4BJM3jnSnMSu/CmtgFjBZa5PxKkV3d14iPCPNH8tB7d9vEtOWLe2OJKC8+OKLdocgxEmcPaUHs2UFvhDCkljHcTXO9UVKhQLTgceAl4GhVhuzOj5zPTBSKeYDnwIZVl8gPCfN0VPawp+G7/fuNUfpKXWLDNsLf9SonmP4XmqVCiGsOQo0xIyoZwP1gPNwloyCAe40VtXw/TRgDyeG7xsDE4CvgGVuhSw8Yl9mHkpBk/p+NHy/Z485Sk+pW1auXMnKlSvtDkOIchJizfC9JKVCCItSHcfGwEbH1wuApY6vD7vTWKVJqdZM0Zq2mPmj/8Jkvc4E1TmZFaXYqxTT3HmpqJm0rDyS4iKJCPOjXZKkp7RGJk+ezOTJk+0OQ4hywkNDaBATLkmpEMKqNZi8cABmFb4q8wE3a9hXO3yvNT8CPyrF7ZgJq2OBEUC445bmwGTgfndeLNyX5o81SvfsMXVJGza0O5KA8uqrr9odghAVSoqL5JDs6iSEsOZW4P+AbLTORal4TC37YmA+8A93GrNc80NrCjHzST9ViobAGEztUtnE20dSM/Po1KSe3WGUt3evGbqXclBuke1Fhb9yFtAXQogqKRUJXOr47msgF62nQc1Hz2s0Dqw1R7Tmda05E+gAPFrTAIQ1WmtSM/P9a+U9mJ5SGbp32/Lly1m+fLndYQhxkqS4SDKkp1QIUR2tCzDTO2dhyj/VWq2rI2tNCvCEB2IRVcjKKyKvqMS/apTCicL5wi1TpkwBYOnSpfYGIoSLpLhIMrKlp1QIYUkKZrfPUk80Jlt2BIgThfP9qKdUCufX2Jtvvml3CEJUKCkuguyCYvKLSogKD7U7HCGEf5sOvAncA0ytbWOSlAaIE4Xz/ainVArn11jnzp3tDkGICjkL6B/KKfSvmshCCH80CDgEPIBSo4D/YbYcddJofYPVxiQpDRCpmebfsV/1lEo5qBr74YcfAEhOTrY5EiHKcyalGdkFkpQKIapzLc6dnKCz4+NKktK6JjUrn/BQRSPHXxh+QQrn19gjjzwCyJxS4X+SZFcnIYR7qiq/o6u4dhJJSgNEWmYeTepHERLiR6WXpKe0xmbNmmV3CEJUKFF2dRJCWNfOk41VmpQqxV/cachRZF94SWpmPs39sRyUFM6vkfbt29sdghAVanS8p1TKQgkhqqH1Lk82V1VP6VKsd7vqatoStZSalUe/Nn6W/O3da3pJpXC+25YsWQLAOeecY3MkQpQXFR5KXGSY9JQKIaz7//buPD6uut7/+OvTNGnSJd1S2lJayiaLoEUWBVEqm4CyI+31YoX7wwoFBBEUuCA7VFkuRUWkCmXxXioFBJSyShEB2UEKGKBNW1q6703SNsvn98f3DJmGLDPJzJxJ5v18POZxZs75nnM+M5O0n3xXswGEqaE+W3vmnnKlZXuJpLKNPNDY6Cxdt5Hh+Tbo4OOP1Z+0g66++mpASankp7Cqk2pKRaQdZsXAbcAEWl6QKa1Ky7YK3tXs9WHAMOAFYCGwDfBVYAXw11RvKOlbsWETdQ3O1vk0HRSEmtKDDoo7ii7pnnvuiTsEkVYN1gT6IpKa84FTM3WxVpNS96abmPGfhCx4nDszkvafBPwfIVGVLFm0JjFHaR7VlCYmzldNaYeM1OAwyWMVfUuYu7w67jBEJP+NJ9SGvg2MiZ4/BBxJqMD8RzoXa6mqtSWJWfofb7b/MUIT/wXp3FTSs3htHq7mpInzO+Xxxx/n8ceb/zqJ5IeKvr1YWa3mexFp1w7R9sRP97ifCHyHMDL/0XQulmpSOjraTmq2/8xou206N5X0NE2cn0fN95oOqlMmT57M5MmT4w5DpEUVfXuxumYz9Q0ZWc5aRLqv4mg7H2gAwKwMeBooAq5I52Kpdj79ANgduM6MnwCLgeFABaGq9oN0birpWbx2I2XFRfQvK26/cK5o4vxOue++++IOQaRVFf164Q6rqjezVXke/TEsIvlmNTCEMOp+FSEvvBTYEB3fMZ2LpZqU/jehj0BRdMOKaL8BjcDF6dxU0vPJmlq2HlCK5dPUS6op7ZRhw4bFHYJIqyqiCfSXb9ikpFRE2jKXkJSOAN4Avgn8LDrmQFU6F0up+d6dvwCHAy9HN7Fo+0/gMHeNvs+mT9ZuzK/+pKCJ8zvp0Ucf5dFH0+pqI5IzFZpAX0RS8xShtXwX4AZCRaXRNKXolelcLOW5o9x5BnjGjN7AQGC1OzXp3Ew6ZvGaWnbeeUjcYWxJE+d3yo033gjAUUcdFXMkIp9V0TckpSs1gb6ItMX9MuCyT1+bHUgY9FQP/Bn3tGZnSmsVJjN6EvqWDnZnZjrnSsdsrm9k+YZN+VlTqv6kHTZjxoz2C4nEpKJvaL7Xqk4ikqZX0k1Ek6U6+h4zvgMsAl4iGuJvxjNmzDXjsI4GIG1bum4j7uTfuveJmlLpkIqKCioqKtovKBKDvr160qtnDzXfi0j7zHbDbAZma4GNmK3B7H7Mdkv3UiklpWZ8jTBJfgVb9hX4K2G6qBNbPlM6KzEd1PB8mg5KE+d32oMPPsiDDz4YdxgiLTIzKrSqk4i0x2xfwnij44B+hPywHDgeeBmzfdK5XKrN9xcREth/EzqzJvyV0LF1v3RuKqnL64nzVVPaYbfccgsAxx9/fMyRiLSsom8Jf31nMS9XrWq37LaDe3PP//syRT3Ux1ykwNwE9Ime1wErgcGE+Uv7RMe/lurFUk1Kv0IYbX8U8GHS/rnRdkSqN5T0JJYYzavm+8R0UKop7bCHH3447hBE2nTmN3bkyfeWtltuxYZNzKpczqvzVvGV7QfnIDIRySN7EfLDXwEX4V4bTZ7/C+Cs6HjKUk1KE1nwgmb7B0TbPMqYupfFa2sZ0LuYspKiuENpoonzO61///5xhyDSpsM+P4zDPt/+fLrVm+r50lVPMfOdxUpKRQrPamAocCnuoRYtJKaXEJLSlelcLNWBTouibfNm+vOj7cJ0biqp+2jZBrYZmGc5vybO77Tp06czffr0uMMQ6bQ+vXoyduchzJy9hMZGjzscEcmtu6PtLs327xxt70jnYqnWlD4B/BD4c2KHGf8GdiJU2z6Rzk0lNWtr6nh13momfn37uEPZkibO77Tf/va3AIwbNy7mSEQ678g9hvPEu0t5Y8Fq9h49KO5wRCR35hBqQx/FbCqhRX0UcBqhQnM+ZhM+Le1+d0sXSUg1Kb2aMMJ+MCEJhZCQWhTMdanHL6l6tnIZDY3OobsNjTuULWni/E577LHH4g5BJGMO2mUrSop68Ng7S5SUihSW39GUF7a05PzUpOdOU81qi1JdZnQR8FXgSZqWkGqMXn8tOi4Z9tR7SxnSrxdjthnQfuFc0sT5nda7d2969+4ddxgiGdGvtJivf66Cx2cvxl1N+CIFxtJ4tCmdZUY/AA43oxQYBKxyZ2PaoUtKNtU3MKtyGUeP2Zoe+TbNysKFcNBBcUfRpd17770AnHzyyTFHIpIZR+w+nKffX8bbC9cyZmSe/SEtItlyaiYvllJSakZ/oD9Q484K4JNofwXQG1jrztpMBlboXpqzkurNDfnXdK+J8zPi97//PaCkVLqPQ3YdSnGRMfOdxUpKRQqF+12ZvFyqo+/vAKqA7zbbPz7a/4dMBiWh6b53SRH775BnS1Fq4vyMeOqpp3jqqafiDkMkY/r3LuarO1bwmJrwRQqXWQ/MxmF2AWZj0j091aT0y9H2gWb7HyT0EfgyaTCzSWZWZWYbzex1M2tztn8zKzGzK6NzNpnZAjP7UbMyJ5jZe9Hx98zsuHRiyieNjc5T7y3lwM8NobQ4j+YnBU2cnyHFxcUUFxfHHYZIRh25+3A+XlXLu5+sizsUEckFs8mYLcPssmjP/cD/ApOBVzE7OJ3LpZqUDom2a5rtX9vseLvMbBwwBbgW2BN4EZhpZqPaOO0+4HBgImHuq+8A/0q65n7AdOCPwJhoe7+ZpZUs54t/LVrLsvWbctd07w5Tp8KTT4Za0LYkJs5XTWmnTJs2jWnTpsUdhkhGHbrbUIp6GI+9szjuUEQkNw4kzMz0d8xGAMfRNKipCLgwnYulmpSuj7aHNdufeL0hjXueB0xz96nu/r67nw0sBs5oqbCZHQYcDBzp7k+5+zx3f9ndZyUVOxd41t2via55DTAr2t/lPPXeEop6GAftslVubvjWWzBxInzzm7DttnDxxVBZ2XJZ1ZRmhJJS6Y4G9ilhv+0H89g7asIXKRA7RNt3gX2i5/fSNABqz3QulmpS+gYh673DjEvMOMGMSwh9SR14PZWLmFkJYR3UJ5sdehLYv5XTjgVeBc4zs4Vm9qGZ3WJmfZPK7NfCNZ9o45p57an3lrLP6IEM6F2Smxs+8kiYc/SOO2DMGPjlL2GXXWC//eC222DVqqaymjg/I2bNmsWsWbPiDkMk447YYxjzVtbw7yXr2y8sIl1dYs3sVYRVnRx4lNCED1CezsVSTUpvS7r4FcCfou2AZsfbU0Gozl3abP9SoLVFlrcHDgC+CJxAWEv1cGBaUplh6VzTzCaa2Wtm9lp9fX2KoefG/JXVfLB0A4fu1v6a0xnzyCOw//5w6qnwl7+ExPP662H9ejjjDBg+HI4/Hv78Z5g7VxPni0irDtttGD0MZqoJX6QQJGqtjqOp9fwDoF/0PK0O5qlOnv8gcBMtT4J6ozsPpXPTNPUgZN7fjZrtnyAkpieYWYc6Xbr77e6+t7vv3bNnylO15sRT74Xc+rBc9SdduBDeeAOOPrpp3/DhcP758M474dikSfDCC3DccSExVdN9p02dOpWpU6e2X1CkixnSrxf7bjeIx2YviTsUEcm+t6PtfYT+peuB2YQKRQjLjqYs1ZpS3DmfMMr+GuD30fbL7vw0jfutABqA5hnXUKC1f8EWA4vcPXke1PejbWJw1JI0r5m3nnxvKbsM68fIQTla7efRR8M2OSlNMIM994T/+R9YtAgeewwmTIDTTstNbN3Y9OnTmT59etxhiGTFt/YYzkfLNvD8h8vjDkVEsmsysJGmyspf4t4AfDs6/mI6F7Ncd0Y3s5eBt919YtK+D4AH3P2iFspPBG4GtnL3DdG+g4GngaHuvszMpgMD3f2wpPOeBFa6+3+0FU+fPn28uro6E2+t01ZVb2bvq5/irG/syHmH7Zybmx5xBMyZEwY2qUleRDJgY10Dh9/8dwAeP/fr+Te1nUgXZmY17t4n7jg+ZTaSMMipCvc3o327Elb/nIt7yn15Um67NqMfcCSwLVDa/Lg7V6Z4qZuAe8zsFeAF4HRga6J+qWZ2d7ieT4jK/y9wKXCnmV1O6Mc6BZjh7suiMlOAv5vZhcCfCX0bvkHoi9plPPP+Uhqd3PUnXb8e/vY3OPtsJaQikjGlxUVcc9we/OfvX+Y3z37ET3L1R7aI5J77x8DHzfa933LhtqW6zOg+wGOErLc1KSWl7j7dzAYDlwDDCX0PjnT3+VGRUc3KbzCzQ4BfEUbhryYknhcmlXnRzMYDV0dxzAHGufvLqcSUL55+fynD+5ey+4i0Bqt13BNPwObNcMwxubmffOrWW28FYNKkSTFHIpIdX92xguP3HMFtz83h6C9uzU5D+7V/kojkP7NQaeh+96fP2+J+d8qXTqX53owXCNMutX5Lp0u2z+RT8/2Xr32ar+5YwU0npb0yV8dMmBD6iS5ZAnk24Ku7O+KIIwCYOXNmzJGIZM/KDZs4+Kbn2GmrvkyfuB89eqhFRqSzYm++N2sEGnHvGT1vK5F03FNOMFIt+IXops8RlhqtbicISdP6jXUsXbeJHbfq237hTKivh7/+Fb79bSWkMVAyKoVgcN9eXHzkrvx0xr/402sfM37fthbuE5EuxFp53impZiNrgN7A8e6fWWpUMqBqRait3WFIjpLSF18Mk+K3NOpeRCRDvrPXNsx4fSHXPvY+B+86lCH9esUdkoh0zqmtPO+0VJPSuwl9OHcH/pHJACSYszys1LrDkBzVyD/yCJSUwGHNV46VXJgyZQoA55xzTsyRiGSXmXHtcXtw5JTnueov73HlMZ/P+j379upJz6KUZzwUkXS439Xi8wxINSmdB6wFHjbjD0AlUJdcwJ2UO7LKZ81dXk1RD2PUoBwkpe7w8MNw0EHQT4MP4vDMM88ASkqlMOy4VV/OGLsDU575kEfe/iTr99tn9EDuP71LrjItUtBSTUp/R1Mf0p+0cNxBSWlnzFm+gVGDelPSMwd/3VdWwkcfwXnnZf9e0qJHHnkk7hBEcuqsg3Zk28G9WVtb137hTpg5ewkfLduQ1XuIFDSzuWmUdtx3SLVwOiNcNGwyi+Ysq85t0z3AUUfl5n4iUvCKi3pw/Jeyv0Txig2beGP+atwd0/zLItkwmi0Huyd+0ZoPgLcW9rUp1aQ0ox1ZZUsNjU7VymoO3HlIbm748MOw115awz5GN9xwAwDnn39+zJGIdC/lpcXUNzq1dQ30LtHMIiJZ0tJffJ3+KzCl31h3MtqRVba0aHUtm+sbc1NTunw5vPQSXH559u8lrXrppZfiDkGkWyovKwZgbW2dklKRbHBv6mdotgPw9+jx38BCYBvgWsLKmgemc2n9xuaBOStC/6ftczEd1LvvhoFOB3SpFVi7nQceeCDuEES6pfLSkJSuq61neP+YgxHp/m4BhgFn4J6YMnQuZqcDq4CbgcNTvVjKo2rMONmMN8yoNqOh2aM+nXcgW5qzLDEdVA6S0oULw3bkyOzfS0Qkx8rLQl3Luo3ZHVAlku/MbJKZVZnZRjN73cy+luJ5B5hZvZnNTqF4oiZ0+2b7d4y2adWApVRTasZJhNH1jgY8ZdzcFdUM7F3MoD4l2b9ZIikdMSL795JWTZ48GYALL7ww5khEupemmlIlpVK4zGwcMAWYRJhffhIw08x2c/cFbZw3kJDvPQOkkihsAMqAmZjdQ1Pz/feSjqcs1eb7M6NtLWFlJydUyw4mrPakVZ46Yc6yDblpuoeQlA4aBL175+Z+0qK33nor7hBEuqVEn1LVlEqBOw+Y5u5To9dnm9nhwBnARW2c9wfgLkIF5Ikp3OcewlShFcCPk/YnRt6nNV1oqs33X4gufkhihztDgMsIk+hrbqFOmLM8h9NBLVyoUfd54L777uO+++6LOwyRbqe8NGq+r1WvMilMZlYC7AU82ezQk0Crq0qY2SRgKHB1Gre7mJB4WrMH0f6L07hWyjWliYzpDaI5p8woAm4EriB0dD04nRvni0GDBjFr1qzY7t/gzve3q2ZYaQOzZq3O+v32ev99Ng8cyDsxvmcRkWxx4Cd71FO2spJZs+bFHY5INvQ0s9eSXt/u7rcnva4AioClzc5bSlLlYjIz24NQ0fgVd29IeY5f9zrgFMyuI4y2HwysAGbhXpnaRZqkmpSuAwYSst/1QD/gCMLSowBfTvfG+WLVqlWMHTs2tvu/uWA1Nz7xIlMnjGHsbkOzf8O1a+HAA2N9zwJXXXUVAJdeemnMkYh0P5MufZyTvzKSk8buFncoItlQ7+57Z+piZtYLmA6c7+5VHbpISEDTTkKbSzUp/YSQlG4FvA/sCzycdHxVZwMpVHOXVwOwfS6a7zdvhqVL1XyfByorO/27KyKtKC/rqeZ7KWQrgAZCU3yyocCSFsoPB3YF7jSzO6N9PQAzs3rgSHdv3hWgZWEJ0rSWFk2WalL6JrA7oUb0bj5bM6rJ9TtozvIN9OxhjBqUg4FHn3wStkpKY3fvvffGHYJIt1VeWqyBTlKw3H2zmb0OHArcn3ToUKClSbIXAXs02zcpKn8cMC+N248mzaVFk6WalE4Cfgqsd6fGjP7AOKAeeAj4RUcDKHRzl1czanBviotSnjK24xLTQSkpFZFurLxMSakUvJuAe8zsFeAF4HRga+A2ADO7G8DdJ3joF7rFnKRmtgzY5O6pzFWaMakuM1oNVCe9ngxMzlZQhWTO8g25mTQflJTmkZ///OcAXHnllTFHItL9lJf2ZMWGzXGHIRIbd59uZoOBSwjN87MJzfDzoyKjYguuDa0mpWbpBexOq5OxSsvqGxqZt7Kag3fNwQAnUFKaRz7++OO4QxDptsrLipm7orr9giLdmLvfCtzayrGx7Zx7OXB5xoNqR1s1pfNIvV+At3MtacHC1bXUNXhuBjlBSEr79YPy8tzcT1p15513tl9IRDqkvLRYKzqJxMG9U30R20sktaRoFs1ZnsM17wEWLVItqYh0e+VlPVm3sR53J+X5FkUkdm0lpRpRn2WJ6aC0mlPhueiisMrbddddF3MkIt1PeWkxDY1OzeYG+vRSI55IzoX+rMuBRtxT/iVstaA7p2YiLmndnOUbGNynhAG9S3Jzw4UL4ZAWF3OQHFu5cmXcIYh0W+VlxQCs21inpFQkXmk1Vei3NUZzl1fnrj9pfT0sXqya0jxx++23t19IRDqkvDRKSmvrGd4/5mBEuhuzSSmU6lByk3JSasbOwA+BnYGyZofdnYM7EkAhm7N8A4fmYmlRCCs5NTQoKRWRbq+8LPzXprlKRbLi13Rigvy2pJSUmrEXMAtoadkhI0vBdWdrajazsnpzbkfeg5LSPHH++ecDcMMNN8QciUj301RTqqRUJIsyPoow1ZrSi+lgVay0bM6ng5w0cX4hqq2tjTsEkW4ruU+piGTcZqCYsDrU0lbK9AYuSPfCqSal+xNqQycBv42efxG4GtiFsOSopCHn00EpKc0rv/nNb+IOQaTbKi+Nmu9r62OORKRbegvYB3gW9/tbLBFG36edlKY6yengaPvHxA53ZgMTgc8BP073xoVu7vJqiouMbQY2756bJQsXQmkpDBqUm/uJiMSkn5rvRbLpZULT/ZczfeFUa0prgb7Axuh5aTTwaUN0/OhMB9bdzVm+gdGD+9CzqFOLH6QuMUepJpLOC+eeey4AN998c8yRiHQ/JT17UFZcpOZ7key4CrgDWNNGmVXAduleONWkdBkhKR1EWH50F+BZINE20pjujQvd3OUb2HGrHDXdgybOF5GCUl7WU833ItngvgJY0U4ZB+ane+lUk9J3gO2BLwB/AXYFEnMZOfBkujcuZA2NzoJVNRy627Dc3XThQjjggNzdT9qkGlKR7CovLVZNqUgXk2rb8RXAdwm1pFcTktBEO/AzwDkZj6wb+2RNLXUNzujBLc2wlQWNjWHd+xEjcnM/EZGYlZcpKRXJCrPLMBuQRvkBmF2WStGUklJ33nZnujsfubPencMJTfn93TnMneUpBycsWFUDwKhBOUpKV6yAujo13+eRM888kzPPPDPuMES6rfJSNd+LZMllwHzM/oDZYZh9dspQsz7RsTsIzfg/T+XCnVlmtASo7sT5BWv+yigpzVVNqaaDyjtlZTmadUGkQPUvK2buCv0XJZIF7wG7AadEj0bM5tHUz7QCGE1TxacB76Zy4TaTUjO+BIwHSoE/u/M3M04DriPUlG4y41Z3zk/9vcj8VWE6qOH9czgdFCgpzSNayUkku8rLijUllEh2fAH4f8D5wE5AEbADYewRbLnS0xzgeuD3qVy41aTUjAMI/UUTZc4043rgp4TBTUZIVn9sxkfu3Jbquyl0H6+qYeTA3hT1yNH0TEpKRaTAhIFO9bg7pqnwRDLHvRGYCkzFbCzwTcJk+onR20uBV4EncH82nUu3VVN6AWEZqeb7ICSkKwhVtAZ8D5SUpmr+yprcNd1DSEp79oSttsrdPaVNEydOBOD222+PORKR7qm8rCcNjU7N5gb69OpMTzURaZX7LGBWpi7X1kCnvQk1ok8QlhedSUhAHfgPd7YC/jMqu1umAuru3J0FK2vYNleDnCAkpSNGQI8cTdQv7Ro8eDCDBw9uv6CIdEh5YlUnjcAX6TLa+vOxItqOc2edGf8HrI72PRhtHyAsPdovS/F1O6tr6li/qZ6RuU5K1XSfV6677rq4QxDp1srLEkuN1jO8f8zBiHRXZvsSKjHfx/1ZzA4FbgFGAY8DE3BPecRhW1VnxQDurIu2axMH3KmLtpsTYaXzHgrZ/JXhu9l28GdnUMgaJaUiUmBUUyqSEz8FfgV8DrNiQkXl54Ay4FjC9FEpa7ejjdln55ZqaZ+kJjFH6ba56lPqHpLSo4/Ozf0kJaeeeioAd955Z8yRiHRP5WXhv7e1NUpKRbJoz2j7N2AvQiv7YuCT6PUxhMQ1Jan0/k7Ocr2FfZKGBStzPHH+6tVQW6vVnPLMyJEj4w5BpFtTTalITiSWnP8YODB6Phn4EyE53Tadi7WXlKpZPsPmr6phaHkvSouLcnNDTQeVl6688sq4QxDp1pr6lCopFcmiRGVlb2D36PW7NI1BakjnYm0lpVekHZq0K4y8z3F/UlBSKiIFpV9p+O9t3UYtNSqSRYsIE+g/StNMTO8CW0fPV7R0UmtaTUrdlZRmw/xV1Ryw45Dc3VBJaV46+eSTAbj33ntjjkSkeyou6kHvkiLVlIpk10PAz4CvEFrXX8F9KWYnRcf/lc7FNKNwDm2sa2Dpuk25G+QEsGhRmJ902LD2y0rO7LzzznGHINLthVWdlJSKZNEVQDnwNaAKOC/aP4qwKuh96VxMSWkOdWjkfWNjePTs4Fe1cGFISIubL84lcbr00kvjDkGk2ysv68m6WjXfi2SN+0bgzBb23wDckO7llJTm0PyOjLz/7nfho4/gxRehpCT9m2qOUhEpUKopFckRsz2AQwhTQq0AnsJ9drqX0bqTOdRUU5riQKc334Tp0+H11+GGdv7gePNNOOccWL58y/1KSvPS+PHjGT9+fNxhiHRr5WVKSkWyyqwnZtOAtwg1oxdG27cxuxOztKYaUlKaQwtWVtOvV08G9k6x5L3RvgAAIABJREFUKf3aa6G8HI44Aq66CubMabncypVwzDFwyy3wpS/BSy81HVNSmpfGjBnDmDFj4g5DpFsrL1XzvUiWXQ1MIAxyav6YEB1PmZLSHJq/qoaRg3pjlsL0r++/Dw88AGedBVOnhj6hkyaFFZqSNTbChAmwdCnceWco9/Wvw5QpsG5deCgpzTsXXnghF154YdxhiHRrqikVyboJhLlJlwHXAqdH22WExPSUdC6mpDSHFqysSX2Q0+TJUFYG554bVmO6+mp48snQnJ/shhvgscfgppvglFNCU/+RR4bzvv3tUEarOYlIASovLWZdbR3e/I95EcmU/tH2W7hfgvvtuF8CHBXtL0/nYkpKc6Sh0fl4dQ2jUklKq6rgj3+EiRNhSDSn6Zlnwl57hWRzzZqw7x//gIsvhu98J9SiAgwcCA89BL/4BbzwQtinmtK8c8IJJ3DCCSfEHYZIt1Ze1pNGh+rNaS0qIyKpey3afthsf2W0fSWdiykpzZHFa2upa/DUVnP65S+hqAjOP79pX1ER3H57GMh08cVhO348jB4dmveTuwT06AE//Sn87W9w2mmw994Zfz/SOfvttx/77bdf3GGIdGvlpVpqVCTLfgxsAK7GrBQg2l4FrKNp3tKUaEqoHEl5jtJPPoE77ghN8c2b3b/0JTj77DCg6eWXQ2L6z39C//4tXooDDwwPyTvnJ//BISJZUV4WJaUb69iaspijEekmzOY230OYq3QiZiuBwUAxUA3MAHZI9dJKSnNkQapzlN54IzQ0wM9+1vLxq66CGTPgjTfg1lthzz0zHKmISPfQVFOqEfgiGTSaMLgp0USbeF4CDE/a1xdIcQ7MQElpjsxfVUPPHsbw/qWtF1qxAm67Df7jP2D77Vsu068fPPhgmPbp9NOzE6xk3dFHHw3AI488EnMkIt1XeVn4L07N9yIZtYCQdGZcLEmpmU0CLiBk1O8C57r7862UHQs828KhXd3931GZU4A7WyhT5mEJrNgtWFnDNgPL6FnURjfeKVOgpgYuuqjti+27b3hIl3XwwQfHHYJIt/dpTammhRLJHPfR2bp0zpNSMxsHTAEmAf+ItjPNbDd3X9DGqZ8HViW9brZ0ETU067eQLwkpwPxV1YxqbyWn+++Hww+H3XbLTVASm3POOSfuEES6vU/7lKqmVKRLiKOm9DxgmrtPjV6fbWaHA2cAbVURLnP3FW0cd3dfkqkgM8ndmb+yhj1HDmy9UGNjmArqmGNyF5iISDfWrzRqvt+oPqUiWWPWEzgS2BlaGFHofmWql8ppUmpmJcBehHVRkz0J7N/O6a+ZWS/gPeBqd2/epF9mZvOBIsIarJe6+5sZCLvT1tbWsX5jfdsj7z/5BDZvhu22y11gEpsjjjgCgJkzZ8YciUj3VVzUg94lRaopFckWs62AWYSEtDX5mZQCFYSkcWmz/UuBQ1o5ZzGhFvVVwsiu7wHPmNmBSf1QK4H/At4G+gHnAC+Y2RfdvfmErpjZRGAiQElJSafeUCrmRyPvR7Y18r6qKmyVlBaEo446qv1CItJp5aVaalQki64AdmnjeFoDovJ+9L27V9K0MgDAS2Y2mjBQ6vmozEvAS4kCZvYiobb0bOBHLVzzduB2gD59+mR9/bn5qcxROjea9qu1UffSrUxKrMAlIllVXtZTU0KJZM9hhMRzGnBq9PwcQv7lwOR0LpbrFZ1WAA3A0Gb7hwLp9Ad9GdiptYPu3kBY+qrVMrm0YGU10M4cpVVVYVWmUaNyFJWISPenmlKRrEqs8nPhp3vcfw0cD3wOSGud85wmpe6+GXgdOLTZoUOBF9O41BhCs36LzMyAL7RVJpfmr6xhSL9e9C5po2K6qiqs4NSrV+4Ck9gccsghHHJIaz1WRCRTysuUlIpkUUO0XQmEXzSzIcD8aP/EdC4WR/P9TcA9ZvYK8AJwOrA1cBuAmd0N4O4TotfnAvMI85mWACcDxwInJC5oZpcB/wQ+BMoJTfZfIPRFjd38VTVs295KTnPnqum+gIwbNy7uEEQKQnlpTz5apuZ7kSxZSagt7U9o8d4G+COQmJKzjWmHPivnSam7TzezwcAlhMnzZwNHunsiq27efl0CXE94o7WE5PRb7v5YUpkBhD6iw4C1wJvA1939lay9kTQsWFnD/jsObrtQVRWo5qxg/OAHP4g7BJGCoJpSkayqJCSlOwB/B/4TSKwO48Ab6VwsloFO7n4rcGsrx8Y2e/1L4JftXO/HwI8zFV8mbaxrYMm6jW33J924MUwJpZH3IiIZ1b+smHW1dbg7oWeXiGTQVOAjoJQwEv8wYEh0bDlwbjoXy/vR913dpvpGvveVbdl39KDWC82fD+5qvi8gY8eOBWDWrFmxxiHS3ZWXFtPoUL25gb699F+eSEa5/wn406evzXYCvgHUAy/gviady+k3NMv6lxVz1bG7t11Ic5QWnFNOOSXuEEQKQnlZtKpTbZ2SUpFsc18HPNzR0/Ubmg+UlBYcJaUiuVFeWgzAuo11bN3CCogikj9yPU+ptGTu3DAV1PDhcUciOVJXV0ddnQZfiGRbeVmUlGoCfZG8p5rSfFBVBaNHQw/9jVAoDj00TNWrPqUi2fVpTWmt/ggUyXdKSvNBVZWa7gvMaaedFncIIgXh0z6lmhZKJO8pKc0Hc+fCV74SdxSSQyeffHLcIYgUhERN6VrVlIrkPbUXx23NmvBQTWlBqampoaamJu4wRLq9fqWJ0ffqUyqS71RTGjeNvC9IRx55JKA+pSLZ1rOoB31KitR8L9IFKCmN29y5YauJ8wvKGWecEXcIIgWjPFrVSUTym5LSuKmmtCCNGzcu7hBECkZ5abFqSkW6APUpjVtVFQwYEB5SMNauXcvatWvjDkOkIJSX9VSfUpEuQDWlcauqUtN9ATrmmGMA9SkVyYXy0mKWrNsYdxgi0g4lpXGbOxd23z3uKCTHfvSjH8UdgkjBKC8r5oNl6+MOQ0TaoaQ0To2NMG8eHHVU3JFIjh1//PFxhyBSMMpLe7K6uo5/fLgiY9fs0QO+NGogpcVFGbumSCaZ2STgAmA48C5wrrs/30rZ44HTgT2BUuA94Bp3fyRH4QJKSuO1ZAls2qTm+wK0YkX4z7GioiLmSES6v6H9S9mwqZ6T//ByRq974RG7cPqBO2T0miKZYGbjgCnAJOAf0Xamme3m7gtaOOVA4G/AJcAq4D+Bh8xsbGuJbDYoKY1TYjoojbwvOCeeeCKgPqUiuXDaAdvz5e0G0+iesWv+4O7XmL+yOmPXE8mw84Bp7j41en22mR0OnAFc1Lywu5/TbNcVZvYt4FhASWlB0HRQBesnP/lJ3CGIFIySnj3Ya9uBGb3miAFlLFmrwVOSf8ysBNgLuKHZoSeB/dO4VD9gdabiSkXBJ6WDBg2KrbZq27/9jdFmPD9/Po2LF8cSg8SjX79+gGpKRbqqk0bUsLlhrX6HJQ49zey1pNe3u/vtSa8rgCJgabPzlgKHpHIDMzsT2Aa4pzOBpqvgk9JVq1YxduzYeG4+bRpsvTVfP+yweO4vsVmyZAkAw4YNizkSEemIix96h5nvLubNk8bGHYoUnnp33ztbFzezE4DrgXHuPj9b92lJwSelsaqqUtN9gRo/fjygmlKRrmp4eSmra+rYWNegEfiSb1YADcDQZvuHAkvaOtHMTgTuBia4+6PZCa91SkrjVFUF3/hG3FFIDC688MK4QxCRThjavxSAZes2MWpw75ijEWni7pvN7HXgUOD+pEOHAg+0dp6ZnQTcBXzf3WdkN8qWKSmNy6ZNsHChakoL1OGHHx53CCLSCcPKQ1K6eG2tklLJRzcB95jZK8ALhDlItwZuAzCzuwHcfUL0ejyh/+j5wN/NLNG3bLO7r8pV0EpK47JgAbgrKS1QH3/8MQAjR46MORIR6YjhUU2pli+VfOTu081sMGHe0eHAbODIpD6io5qdcjohJ7w5eiQ8B4zNbrRNlJTGJTEdlCbOL0jf+973APUpFemqEs33S5WUSp5y91uBW1s5Nrat13FRUhoXTZxf0C655JK4QxCRTujXqye9S4pYsnZT3KGIdBtKSuNSVQUlJbD11nFHIjE45JCUpooTkTxlZgzrX8qSdbVxhyLSbfSIO4CCVVUFo0dDD30FhWju3LnMTdSWi0iXNKy8VKs6iWSQakrjMneumu4L2H/9138B6lMq0pUNKy/l5aqcDUwW6faUlMalqgr22SfuKCQmV1xxRdwhiEgnDetfytJ1G2lsdHr0sLjDEenylJTGYeVKWLUKdtop7kgkJgceeGDcIYhIJw3rX0p9o7OiehNb9SuNOxyRLk8dGuNQWRm2O+8cbxwSm8rKSioTPwci0iUNjSbQX6oR+CIZoZrSOCgpLXg//OEPAfUpFenKEhPoL15byx7b9I85GpGuT0lpHCorobg4jL6XgnTttdfGHYKIdFJiqVFNoC+SGUpK4/DBB7DjjtBTH3+h2n///eMOQUQ6aXDfXhT1MC01KpIh6lMah8pK+Nzn4o5CYjR79mxmz54ddxgi0glFPYyh/XqxWHOVimSEqupyraEBPvoIvv3tuCORGJ111lmA+pSKdHVDo2mhRKTzlJTm2rx5sHmzBjkVuOuvvz7uEEQkA4aVl/LB0vVxhyHSLSgpzbUPPghbJaUFbR8tnCDSLQzrX8rfP1gedxgi3YL6lOZaYjoo9SktaG+99RZvvfVW3GGISCcNKy+lenMD6zfWxR2KSJenmtJcq6yEgQOhoiLuSCRG5557LqA+pSJd3bD+TdNC9Sstjjkaka5NSWmuVVaGpnvTOsmF7Oabb447BBHJgMRcpUvWbmLHrfrFHI1I16akNNc++AAOOSTuKCRmY8aMiTsEEcmAYUmrOolI56hPaS5t2ACLFqk/qfDqq6/y6quvxh2GiHTSUK3qJJIxqinNJY28l8gFF1wAqE+pSFdXWlzEwN7FWtVJJAOUlOZSYuS9ktKC9+tf/zruEEQkQ4aWl7JEqzqJdJqS0lz64IMwwGnHHeOORGK2++67xx2CiGTIsP6lqikVyQD1Kc2lykoYPRpKS+OORGL24osv8uKLL8YdhohkwPD+pSxZuynuMES6PNWU5lJlpQY5CQAXX3wxoD6lIt3B0PJSVmzYxOb6Rkp6qq5HpKOUlOaKe2i+P+CAuCORPPC73/0u7hBEJEMSc5UuW7+RbQb2jjkaka5LSWmufPJJmBJKg5wE2Fk/ByLdRvKqTkpKRTpO7Qy5oumgJMlzzz3Hc889F3cYIpIBTRPoa7CTSGeopjRXEtNBqU+pAJdddhmgPqUi3UHTUqNKSkU6Q0lprlRWQu/eMGJE3JFIHrjjjjviDkFEMqR/WTGlxT20qpNIJykpzZXEyPse6jEhsP3228cdgohkiJkxrLyUJes0LZRIZyhDypUPPlB/UvnU008/zdNPPx13GCKSIWFVp9q4wxDp0lRTmgubNkFVFXz3u3FHInni6quvBuCQQw6JORIRyYTh/Ut5fcHquMMQ6dKUlObCnDnQ2KiaUvnUPffcE3cIIpJBQ/uXsnTtJtwdM4s7HJEuSUlpLiRG3isplcjIkSPjDkFEMmhYeSmbGxpZVb2ZwX17xR2OSJcUS59SM5tkZlVmttHMXjezr7VRdqyZeQuPXZqVO8HM3jOzTdH2uOy/kxQl5ijVdFASefzxx3n88cfjDkNEMmR4NFfpEo3AF+mwnCelZjYOmAJcC+wJvAjMNLNR7Zz6eWB40uPDpGvuB0wH/giMibb3m9mXM/4GOqKyEoYNg/LyuCORPDF58mQmT54cdxgikiFDy5tWdRKRjomj+f48YJq7T41en21mhwNnABe1cd4yd1/RyrFzgWfd/Zro9TVm9o1o/39kIuhOqaxU071s4b777os7BBHJIK3qJNJ5OU1KzawE2Au4odmhJ4H92zn9NTPrBbwHXO3uzyYd2w/4VbPyTwBndSLczKmshBNOiDsKySPDhg2LOwQRyaAhfXvRw+DNBWvYYUjfuMORmAzoXcwuw9Qq2lG5rimtAIqApc32LwVamxtnMaEW9VWgBPge8IyZHejuz0dlhrVyzfj/51+5MjxUUypJHn30UQCOOuqomCMRkUzoWdSDkYN6M+P1hcx4fWHc4UhMxu48hGmn7ht3GF1W3o++d/dKoDJp10tmNhq4AHi+pXPaY2YTgYkAJSUlnYywHf36wfPPw6j2usxKIbnxxhsBJaUi3cn//uArzF9ZHXcYEqMBZVnOKbq5XCelK4AGYGiz/UOBJWlc52VgfNLrJelc091vB24H6NOnj6dx3/SVlMABB2T1FtL1zJgxI+4QRCTDRgwoY8SAsrjDEOmycjr63t03A68DhzY7dChhFH6qxhCa9RNeysA1RXKmoqKCioqKuMMQERHJG3E0398E3GNmrwAvAKcDWwO3AZjZ3QDuPiF6fS4wD3iX0Kf0ZOBYIHnk0BTg72Z2IfBn4DjgG4CqKCUvPfjggwAcf/zxMUciIiKSH3KelLr7dDMbDFxCmG90NnCku8+PijTvfFkCXA9sA9QSktNvuftjSdd80czGA1cDVwJzgHHu/nJW34xIB91yyy2AklIREZEEc89ul8p816dPH6+uVsd0ya21a9cC0L9//5gjERGRrsTMaty9T9xxZEPej74X6Y6UjIqIiGwp58uMighMnz6d6dOnxx2GiIhI3lDzvZrvJQZjx44FYNasWbHGISIiXUt3br5XUqqkVGJQU1MDQO/evWOOREREupLunJSqT6lIDJSMioiIbEl9SkVicO+993LvvffGHYaIiEjeUPO9mu8lBupTKiIiHdGdm++VlCoplRjU1dUBUFxcHHMkIiLSlXTnpFR9SkVioGRURERkS+pTKhKDadOmMW3atLjDEBERyRtqvlfzvcRAfUpFRKQjunPzfcEnpWbWCNRm+LI9gfoMX1MyQ99NftP3k7/03eQ3fT/5K9PfTZm7d8uW7oJPSrPBzF5z973jjkM+S99NftP3k7/03eQ3fT/5S99N6rplpi0iIiIiXYuSUhERERGJnZLS7Lg97gCkVfpu8pu+n/yl7ya/6fvJX/puUqQ+pSIiIiISO9WUioiIiEjslJSKiIiISOyUlKbJzCaZWZWZbTSz183sa+2UPzAqt9HM5prZ6bmKtRCl8/2Y2fFm9qSZLTez9Wb2spkdnct4C0m6vztJ5x1gZvVmNjvbMRayDvzbVmJmV0bnbDKzBWb2o1zFW0g68N1818zeMrMaM1tiZvea2bBcxVtIzOzrZvaImS0yMzezU1I4Zw8ze87MaqPzfm5mloNw856S0jSY2ThgCnAtsCfwIjDTzEa1Un474LGo3J7AdcCvzOyE3ERcWNL9foADgb8B34rKPwY8lGqyJKnrwHeTOG8gcDfwTNaDLGAd/H7uAw4HJgI7A98B/pXlUAtOB/7f+SpwD3AX8HngWGA34I85Cbjw9AVmA+eQwkI8ZlYOPAUsBfaJzrsAOC+LMXYZGuiUBjN7GfiXu/8gad+HwAx3v6iF8r8Ajnf3nZL2/R74vLvvl4uYC0m6308r13gFeN7df5KlMAtSR78bM3sQeBsw4ER33z3rwRagDvzbdhhwP7CDu6/IXaSFpwPfzfnA2e6+bdK+U4FfuXvfXMRcqMxsA3CWu09ro8wZwC+Aoe5eG+27BDgD2MYLPClTTWmKzKwE2At4stmhJ4H9WzltvxbKPwHsbWbFmY2wsHXw+2lJP2B1puKSjn83ZjYJGApcnb3opIPfz7HAq8B5ZrbQzD40s1vMTElPBnXwu3kBGG5mR1lQAYwntARJ/PYjVHwk16o+AWwNjI4lojyipDR1FUARoco92VKgtb46w1op3zO6nmROR76fLZjZmcA2hKYvyZy0vxsz2wO4DDjZ3RuyG17B68jvzvbAAcAXgROAswhN+dOyE2LBSvu7cfeXCEnoH4HNwHJCS8P3sxempKG1vCBxrKApKRUBon6+1wPfdff5ccdTyMysFzAdON/dq+KOR1rUA3DC78vL7v4EITE9wcyGxhtaYTOz3YBfAVcRalkPJyQ7v4szLpFU9Iw7gC5kBdBAaE5MNhRY0so5S1opXx9dTzKnI98PAGZ2ImEwzQR3fzQ74RW0dL+b4cCuwJ1mdme0rwdgZlYPHOnuzZszpeM68ruzGFjk7muT9r0fbUfx2Zog6ZiOfDcXAa+4+/XR63+ZWTXwvJld7O4LsxOqpKi1vCBxrKCppjRF7r4ZeB04tNmhQwmjIVvyUivlX3P3usxGWNg6+P1gZicRmutPcfcZ2YuwcHXgu1kE7AGMSXrcBnwUPW/1+5T0dfB35wVg62Z9SD8XbdXSkCEd/G56ExLZZInX+j8/fi8BXzOz0qR9hwKfAPNiiSifuLseKT6AcYQ+OqcRanKmABuAbaPjdwN3J5XfDqgGbo7Knxadf0Lc76U7Pjrw/YwH6ghTcgxLegyK+710t0e6300L518OzI77fXTXRwd+d/oCHxNG4H8e+CphWpz7434v3e3Rge/mlOjftTMIfX+/ShiU9nrc76U7PqLfhcQfzzXAz6Pno6Lj1wHPJJXvT6gRvQ/YHTgeWAf8JO73kg8PNd+nwd2nm9lg4BJCE+NsQlNiomZgVLPyVWZ2JPA/hH8gPgF+5O4P5DDsgpHu9wOcTujCcnP0SHgOGJvdaAtLB74byaEO/Nu2wcwOIfRdfJUwY8WfgQtzF3Vh6MB3M83M+hH6+N4IrCXMx/yz3EVdUPYGnk16fUX0uIvwB8JwYIfEQXdfa2aHAr8BXiP87twI3JSjePOa5ikVERERkdipf4mIiIiIxE5JqYiIiIjETkmpiIiIiMROSamIiIiIxE5JqYiIiIjETkmpiIiIiMROSalInjOznczs12b2vpltMLP1ZvZvM5tqZl9JKjfPzNzM5sUYbiKWaVEsbmajk/YPNbM/mtliM2uIjt9sZqOTyk/LYlwDzOzy6HFsqnHnipmNTbp/e4/Lo3MSr2flOt72ZPN7Tee7ava5ZjQOEckcTZ4vksfM7FTgt0CvZod2jh5DgM8kV3lsCmGFmrgMAC6Lnt9FmPBdRETygJJSkTxlZgcBvye0aDhwDfA7YBmwLXAiTeuN5xV3P4Wwmklze0XbNcB27r4m6ZhlOax2tRF3ru4/i6TPwcxOAe6MXt4VxZdxZlbq7huzcW0RkVSp+V4kf11H0+/oLe5+qbsvdPfN7v6hu18H/KCtC5jZGDN70Mw+MrN1ZlZnZkuifXs3K7udmd1tZgvMbKOZrTGz2VEz6VZJ5X5gZq+Z2Soz22Rmi8zsKTP7flKZLZpWE82nwI5RkQHA6uj4KW0185rZl8zs/6L7bDazFWb2rJntGx3va2Z3mdk7ZrYyeo9rzOzvZjYu6TqXA1VJl/5+83u20e2gj5ldYWbvmlmtmdWY2Ztmdp6Z9Uwqt8X7MLMJ0WdYa6H7xffJIjM7yMz+Gd1vjpn91MySk9zLk+I7zsz+YGYrgNqkMrua2T1Jn/cyM5thZl9odq+Ufl6anXOSmf2rrc/DzL5mZo+Y2fKkn9f7mt+/jc9g6yjeDdHPw2+Bfq2UTfs9iEgWubseeuiRZw9gK0LtaOIxIoVz5kVl5yXtG9/sOsmPamDXpLLvtlF296jMd9ooMyPpWtOS9o8GxrZx3ilRmcTraUnXOQ6oa+28qMywNq7twISo3OVtlJnWUtzRvj7A622c+xjQIyqb/D5Wt1L+gDR+Dk5p6XNpViZxfEUrn9XJSWUvb1b+03LR8QOAmlbirgW+lubPS/LnsaS9zwM4GWhopdxGYGxrP2PRvjLg/RbO/aSlzzGV96CHHnrk7qGaUpH8NDrp+Tp3X9TB67wBfBMYTuiXWg6cER3rDfwQwMwGA7tF+28hJGKDgH2AS4G10bGvR9sNhD6tvQhdCU4CHm8tCHef5e4GzI92zXd3ix7TWjrHzMqAqTR1M/o5MBSoICTHc6P96wn9VEdH76kU2J+QXAGcF8VwObBd0i3uSorhlNZiB84FvhQ9f4LwWW5P+GwBjiAk/80NACYB/YFfJO3/Xhv36ozBwC+BgcBZKdzPgMMJn9ke0b6phMRuPqGrRS9gT2A54XP9DaT185JsKG18HmbWB/gVoXWgnvAHSTlwelSuF6H7SlsmALtEz/8JbEOonV/TvGAH34OIZJH6lIp0b0uA/wfcTEjaypod3znarib8xz2AkGStJ9Q4ve3uVyeVr4q2fYBLCDWI7wNPunum/xP/KiHRApjl7lclHZuR9LyGkKhOB3YlNNUm90/dmc75VtLzi9x9CYCZXUnTQKkjgf9tdt7r7v7bqOy9wM+i/dt2Mp7WLAV+7u4NZnYX8Ot27nejuz8RPZ9tZjvRlNBtS/hum9vDzIYR+jWn8vOSrL3P46vR9QAec/fEZ/s7MzsdGAN8zsx2dPePWrnHQUnPr0v8MWdmNxL6ZydL9WdeRHJENaUi+Wle0vNyM9u6g9f5E/BTQrLWPCElsc/dGwk1VguBnYD/Bu4F3on6ao6Myt8K3A8kyt9MqD1camYXdjDG1gxNev5eG+V+RqjB+zKhZq35gKnSTsYxJOn5gqTn85Oet9T/sDLpeXUG42nNHHdvSON+bzZ7nWofysFp/Lwka+/zaO1zhvY/609jS3q+sJXnQFo/8yKSI0pKRfKQuy8DXknadUFL5ZIH2bRwbCCh6R5CLdrngSKgxQEj7v4XYBShZvFo4EpC/77dCbWiuPtGdz+J0Mx5APBfwMuEptVrzWxEau8wJUuTnu/aRrnkpvNjgV5RV4GVLZT1DsSxLOn5qFaeJ5dJqOvkfdP16f3cPZX71TZ7nfwenk7q2vDpg9B39t3oHu3+vLQWHy1/Hq19zs1ft/RZJ6xIer5NK8+bgkj/PYhIFikpFclf/02okQT4UTRyemszK7Ywof7FhD6Aramn6T//emAdoZn7qpYKm9lKTGQ+AAACoUlEQVSvgIMJ/UUfBx4ANkWHR0VlTjCzs4ARwNuEWtO3E5eglf/8O+gFmhLLb5jZxWY2xMwGmtmxZpbo31qfdM4aoNjMLmXLWrOE5ER1p6gfY3v+mvT8GgsLAIwm9HFtqUyX5O4fAh9ELw82s3MtLDZQamZfNLOfA/clyqfy85KmFwlN6gBHmNnRFmZW+AGhXytAZRtN9wDPJj2/0MxGmNkOwE9aKpyF9yAinaCkVCRPufvThIFIdYTf1cuARcBmQvJwDWFQS2vnrweeiV6OAD4m1D7u1sopZwBPJd3jbcIgGAhN9BBqLH9FaE5fHz0mRscWA/9K4y22yd1rCVNeJZLOawi1ZKuAhwiDjYieJ8wiJBg/ooXBLe6+gTDiGsJgqA3R9EintBHKFLYc1LSE0Lc2MefqTEJ/1u5gImGUuwH/Q0gSa4G3gCvYsktFKj8vKXP3auBswh9ixcDDhJ+v26Mim2ga9NSau4F/R8/3IzTNf8SWXQOSZfQ9iEjnKCkVyWPu/ntCc/uthES0ltAfrxL4AzC5nUucTEiYVhNGE99L6ysqTQb+QUj86gkDiN4gJHhTojLPEAb0fERI/hoIyeh9wIFRIpkx7v4Qoa/ofYRpfeoJSelzNPUz/QVwLSGxqI2OHUTro6e/B/ydUHOcSgzVhFkHriQMhNlESNzeItTAHR31T+zy3P05QrJ9NyGhqyN83v8i/DFycVLxVH5e0r3/HwnTh/2FUKtdT/hD6k/Avh4WF2jr/FrgEOBBwu/JGsLiA63N55vx9yAiHWepdT0SEREREcke1ZSKiIiISOyUlIqIiIhI7JSUioiIiEjslJSKiIiISOyUlIqIiIhI7JSUioiIiEjslJSKiIiISOyUlIqIiIhI7JSUioiIiEjs/j8O3UQsMmkwrAAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax1 = plt.subplots(figsize=(10,7))\n", - "ax1.plot(class_thresh_arr, bal_acc_arr_orig)\n", - "ax1.set_xlabel('Classification Thresholds', fontsize=16, fontweight='bold')\n", - "ax1.set_ylabel('Balanced Accuracy', color='b', fontsize=16, fontweight='bold')\n", - "ax1.xaxis.set_tick_params(labelsize=14)\n", - "ax1.yaxis.set_tick_params(labelsize=14)\n", - "\n", - "\n", - "ax2 = ax1.twinx()\n", - "ax2.plot(class_thresh_arr, np.abs(1.0-np.array(disp_imp_arr_orig)), color='r')\n", - "ax2.set_ylabel('abs(1-disparate impact)', color='r', fontsize=16, fontweight='bold')\n", - "ax2.axvline(best_class_thresh, color='k', linestyle=':')\n", - "ax2.yaxis.set_tick_params(labelsize=14)\n", - "ax2.grid(True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```abs(1-disparate impact)``` must be small (close to 0) for classifier predictions to be fair.\n", - "\n", - "However, for a classifier trained with original training data, at the best classification rate, this is quite high. This implies unfairness." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax1 = plt.subplots(figsize=(10,7))\n", - "ax1.plot(class_thresh_arr, bal_acc_arr_orig)\n", - "ax1.set_xlabel('Classification Thresholds', fontsize=16, fontweight='bold')\n", - "ax1.set_ylabel('Balanced Accuracy', color='b', fontsize=16, fontweight='bold')\n", - "ax1.xaxis.set_tick_params(labelsize=14)\n", - "ax1.yaxis.set_tick_params(labelsize=14)\n", - "\n", - "\n", - "ax2 = ax1.twinx()\n", - "ax2.plot(class_thresh_arr, avg_odds_diff_arr_orig, color='r')\n", - "ax2.set_ylabel('avg. odds diff.', color='r', fontsize=16, fontweight='bold')\n", - "ax2.axvline(best_class_thresh, color='k', linestyle=':')\n", - "ax2.yaxis.set_tick_params(labelsize=14)\n", - "ax2.grid(True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```average odds difference = 0.5((FPR_unpriv-FPR_priv)+(TPR_unpriv-TPR_priv))``` must be close to zero for the classifier to be fair.\n", - "\n", - "However, for a classifier trained with original training data, at the best classification rate, this is quite high. This implies unfairness." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Train classifier on transformed data" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "scale_transf = StandardScaler()\n", - "X_train = scale_transf.fit_transform(dataset_transf_train.features)\n", - "y_train = dataset_transf_train.labels.ravel()\n", - "\n", - "lmod = LogisticRegression()\n", - "lmod.fit(X_train, y_train,\n", - " sample_weight=dataset_transf_train.instance_weights)\n", - "y_train_pred = lmod.predict(X_train)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Obtain scores for transformed test set" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "dataset_transf_test_pred = dataset_orig_test.copy(deepcopy=True)\n", - "X_test = scale_transf.fit_transform(dataset_transf_test_pred.features)\n", - "y_test = dataset_transf_test_pred.labels\n", - "dataset_transf_test_pred.scores = lmod.predict_proba(X_test)[:,pos_ind].reshape(-1,1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Predictions from the transformed test set at the optimal classification threshold" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "#### Predictions from transformed testing data" + "source": [ + "fig, ax1 = plt.subplots(figsize=(10,7))\n", + "ax1.plot(class_thresh_arr, bal_acc_arr_orig)\n", + "ax1.set_xlabel('Classification Thresholds', fontsize=16, fontweight='bold')\n", + "ax1.set_ylabel('Balanced Accuracy', color='b', fontsize=16, fontweight='bold')\n", + "ax1.xaxis.set_tick_params(labelsize=14)\n", + "ax1.yaxis.set_tick_params(labelsize=14)\n", + "\n", + "\n", + "ax2 = ax1.twinx()\n", + "ax2.plot(class_thresh_arr, avg_odds_diff_arr_orig, color='r')\n", + "ax2.set_ylabel('avg. odds diff.', color='r', fontsize=16, fontweight='bold')\n", + "ax2.axvline(best_class_thresh, color='k', linestyle=':')\n", + "ax2.yaxis.set_tick_params(labelsize=14)\n", + "ax2.grid(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dIWP-qLnEqAZ" + }, + "source": [ + "```average odds difference = 0.5((FPR_unpriv-FPR_priv)+(TPR_unpriv-TPR_priv))``` must be close to zero for the classifier to be fair.\n", + "\n", + "However, for a classifier trained with original training data, at the best classification rate, this is quite high. This implies unfairness." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Af7QD7isEqAZ" + }, + "source": [ + "### Train classifier on transformed data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "GQMmlGUhEqAZ" + }, + "outputs": [], + "source": [ + "scale_transf = StandardScaler()\n", + "X_train = scale_transf.fit_transform(dataset_transf_train.features)\n", + "y_train = dataset_transf_train.labels.ravel()\n", + "\n", + "lmod = LogisticRegression()\n", + "lmod.fit(X_train, y_train,\n", + " sample_weight=dataset_transf_train.instance_weights)\n", + "y_train_pred = lmod.predict(X_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PwAsGmBjEqAZ" + }, + "source": [ + "#### Obtain scores for transformed test set" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hBUntbk8EqAa" + }, + "outputs": [], + "source": [ + "dataset_transf_test_pred = dataset_orig_test.copy(deepcopy=True)\n", + "X_test = scale_transf.fit_transform(dataset_transf_test_pred.features)\n", + "y_test = dataset_transf_test_pred.labels\n", + "dataset_transf_test_pred.scores = lmod.predict_proba(X_test)[:,pos_ind].reshape(-1,1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JqtLDy-qEqAa" + }, + "source": [ + "### Predictions from the transformed test set at the optimal classification threshold" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "amJP3jbrEqAa", + "outputId": "bacea04d-b4e1-4f69-d25e-9f9a69557199" + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### Predictions from transformed testing data" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 13%|█▎ | 13/100 [00:00<00:00, 127.35it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Classification threshold used = 0.2674\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 41%|████ | 41/100 [00:00<00:00, 98.54it/s] " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Balanced accuracy = 0.7128\n", + "Statistical parity difference = -0.0906\n", + "Disparate impact = 0.7625\n", + "Average odds difference = -0.0266\n", + "Equal opportunity difference = -0.0518\n", + "Theil index = 0.1294\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 100/100 [00:01<00:00, 97.34it/s]\n" + ] + } ], - "text/plain": [ - "" + "source": [ + "display(Markdown(\"#### Predictions from transformed testing data\"))\n", + "bal_acc_arr_transf = []\n", + "disp_imp_arr_transf = []\n", + "avg_odds_diff_arr_transf = []\n", + "\n", + "print(\"Classification threshold used = %.4f\" % best_class_thresh)\n", + "for thresh in tqdm(class_thresh_arr):\n", + "\n", + " if thresh == best_class_thresh:\n", + " disp = True\n", + " else:\n", + " disp = False\n", + "\n", + " fav_inds = dataset_transf_test_pred.scores > thresh\n", + " dataset_transf_test_pred.labels[fav_inds] = dataset_transf_test_pred.favorable_label\n", + " dataset_transf_test_pred.labels[~fav_inds] = dataset_transf_test_pred.unfavorable_label\n", + "\n", + " metric_test_aft = compute_metrics(dataset_orig_test, dataset_transf_test_pred,\n", + " unprivileged_groups, privileged_groups,\n", + " disp = disp)\n", + "\n", + " bal_acc_arr_transf.append(metric_test_aft[\"Balanced accuracy\"])\n", + " avg_odds_diff_arr_transf.append(metric_test_aft[\"Average odds difference\"])\n", + " disp_imp_arr_transf.append(metric_test_aft[\"Disparate impact\"])" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stderr", - "output_type": "stream", - "text": [ - " 13%|█▎ | 13/100 [00:00<00:00, 127.35it/s]" - ] + "cell_type": "markdown", + "metadata": { + "id": "66W_Hk_JEqAa" + }, + "source": [ + "#### Display results for all thresholds" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Classification threshold used = 0.2674\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0drHEcZoEqAa", + "outputId": "da8232fe-15c3-4c70-cd4a-3dee9a0f92d9" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax1 = plt.subplots(figsize=(10,7))\n", + "ax1.plot(class_thresh_arr, bal_acc_arr_transf)\n", + "ax1.set_xlabel('Classification Thresholds', fontsize=16, fontweight='bold')\n", + "ax1.set_ylabel('Balanced Accuracy', color='b', fontsize=16, fontweight='bold')\n", + "ax1.xaxis.set_tick_params(labelsize=14)\n", + "ax1.yaxis.set_tick_params(labelsize=14)\n", + "\n", + "\n", + "ax2 = ax1.twinx()\n", + "ax2.plot(class_thresh_arr, np.abs(1.0-np.array(disp_imp_arr_transf)), color='r')\n", + "ax2.set_ylabel('abs(1-disparate impact)', color='r', fontsize=16, fontweight='bold')\n", + "ax2.axvline(best_class_thresh, color='k', linestyle=':')\n", + "ax2.yaxis.set_tick_params(labelsize=14)\n", + "ax2.grid(True)" + ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - " 41%|████ | 41/100 [00:00<00:00, 98.54it/s] " - ] + "cell_type": "markdown", + "metadata": { + "id": "iDSrQeV8EqAa" + }, + "source": [ + "```abs(1-disparate impact)``` must be small (close to 0) for classifier predictions to be fair.\n", + "\n", + "For a classifier trained with reweighted training data, at the best classification rate, this is indeed the case.\n", + "This implies fairness." + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Balanced accuracy = 0.7128\n", - "Statistical parity difference = -0.0906\n", - "Disparate impact = 0.7625\n", - "Average odds difference = -0.0266\n", - "Equal opportunity difference = -0.0518\n", - "Theil index = 0.1294\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "sd_ijaPuEqAa", + "outputId": "11b66e0c-57e2-437c-eb2a-47320d354e41" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAroAAAG2CAYAAACQ1yX/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xl8VNX9//HXyb4CCWHfF0UUFVTEHWzFhVat2iqt2Kp1aa1a2+r3p7a2atXSb9WibdG6b636rdoiFZei4koFUVSURWUJssOEANlmO78/7gwZhkwyk8zkTmbez8cjj8nce+6dT9oxfPKZzznHWGsREREREck0OW4HICIiIiKSCkp0RURERCQjKdEVERERkYykRFdEREREMpISXRERERHJSEp0RURERCQjKdEVERERkYykRFdEREREMpISXRERERHJSHluB+C2nJwcW1xc7HYYIiIiIm2qr6+31loVKuOU9YlucXExdXV1bochWWbjxo0A9O3b1+VIRESkKzHGNLgdQ1eS9YmuiBumTp0KwLx589wNREREJIMp0RVxwbXXXut2CCIiIhnPWGvdjsFVpaWlVq0LIiIi0hUYY+qttaVux9FVqJlZxAVr165l7dq1bochIiKS0dS6IOKC8847D1CProiISCop0RVxwa9+9Su3QxAREcl46tFVj66IiIh0EerRTYx6dEVcsHLlSlauXOl2GCIiIhlNFV1VdMUFkyZNAtSjKyIiiVFFNzHq0RVxwU033eR2CCIiIhlPFV1VdEVERKSLUEU3MerRFXHB8uXLWb58udthiIiIZDRVdFXRFReoR1dERNpDFd3EqEdXxAW33Xab2yGIiIhkPFV0VdGVdggGLdsbfFSWFux5orYWund3JygREcl4qugmRj26Igmo9/p54r9rmPzHNxh/61xWbY34I2nlSqishEWL2rzPkiVLWLJkSQojFREREbUuiMRh/fYGHpu/hicXVFPb4GNUn3ICQcu7X25lWFXoD+sNGyAYhK++gkMPbfV+l19+OaAeXRERkVRSoitZxxcIsmRdLe+t8rCxthFjwGDIMWAM+AKWmnovnjov2+t9eOq8bNzRiLWWk8f05cKjh3HokArG3/oq76+u4dwJQ5wb+/2hF/C1GcMf/vCHFP6EIiIiAkp0JUus2LST/3y2ifdWeXh/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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax1 = plt.subplots(figsize=(10,7))\n", + "ax1.plot(class_thresh_arr, bal_acc_arr_transf)\n", + "ax1.set_xlabel('Classification Thresholds', fontsize=16, fontweight='bold')\n", + "ax1.set_ylabel('Balanced Accuracy', color='b', fontsize=16, fontweight='bold')\n", + "ax1.xaxis.set_tick_params(labelsize=14)\n", + "ax1.yaxis.set_tick_params(labelsize=14)\n", + "\n", + "\n", + "ax2 = ax1.twinx()\n", + "ax2.plot(class_thresh_arr, avg_odds_diff_arr_transf, color='r')\n", + "ax2.set_ylabel('avg. odds diff.', color='r', fontsize=16, fontweight='bold')\n", + "ax2.axvline(best_class_thresh, color='k', linestyle=':')\n", + "ax2.yaxis.set_tick_params(labelsize=14)\n", + "ax2.grid(True)" + ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 100/100 [00:01<00:00, 97.34it/s]\n" - ] - } - ], - "source": [ - "display(Markdown(\"#### Predictions from transformed testing data\"))\n", - "bal_acc_arr_transf = []\n", - "disp_imp_arr_transf = []\n", - "avg_odds_diff_arr_transf = []\n", - "\n", - "print(\"Classification threshold used = %.4f\" % best_class_thresh)\n", - "for thresh in tqdm(class_thresh_arr):\n", - " \n", - " if thresh == best_class_thresh:\n", - " disp = True\n", - " else:\n", - " disp = False\n", - " \n", - " fav_inds = dataset_transf_test_pred.scores > thresh\n", - " dataset_transf_test_pred.labels[fav_inds] = dataset_transf_test_pred.favorable_label\n", - " dataset_transf_test_pred.labels[~fav_inds] = dataset_transf_test_pred.unfavorable_label\n", - " \n", - " metric_test_aft = compute_metrics(dataset_orig_test, dataset_transf_test_pred, \n", - " unprivileged_groups, privileged_groups,\n", - " disp = disp)\n", - "\n", - " bal_acc_arr_transf.append(metric_test_aft[\"Balanced accuracy\"])\n", - " avg_odds_diff_arr_transf.append(metric_test_aft[\"Average odds difference\"])\n", - " disp_imp_arr_transf.append(metric_test_aft[\"Disparate impact\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Display results for all thresholds" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAG2CAYAAABGcv+aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xl8VOXZ//HPnX1hSwiEfV8EQVBEFFGwggvW3QotULUubVErbfX5qdW6W6ytD/q01OKGS11atS4VUVEREcqioqDs+75kQgIJyWS5f3+cGQhDljPJJGcm+b5fr3mdzJlz7nOlJfHKdW/GWouIiIiIiJfivA5ARERERERJqYiIiIh4TkmpiIiIiHhOSamIiIiIeE5JqYiIiIh4TkmpiIiIiHhOSamIiIiIeE5JqYiIiIh4TkmpiIiISCNjjJlsjNlojCkyxnxpjDmjhuuTjDH3B+4pNsZsMcb8qqHiBUhoyIdFo7i4OJuamup1GCIiIiI1KiwstNbaaouKxphxwOPAZGB+4Pi+Maa/tXZLFbe9CnQCbgDWAtlAgyZIpqlvM5qenm4LCgq8DkOamF27dgHQrl07jyMREZFYYowptNam13DNIuBba+31Fc6tBV631t5RyfXnAP8Celpr90U6ZrfUfS/igfHjxzN+/HivwxARkUbGGJMEDAE+DPnoQ2B4FbddAiwBfmOM2WaMWWuMecIY06weQz1Gk+++z8zMZO7cuV6HIU3M2LFjAfRvT0REwpVgjFla4f0Ma+2MCu+zgHhgd8h9u4HRVbTZAxgBFAOXA62A/wM6AFdEImg3mnxS6vP5GDVqlNdhSBOjf3MiIlJLpdbakyPcZhxggZ9Ya/MAjDE3AR8YY7KttaEJbr1Q972IB7Zu3crWrVu9DkNERBqffUAZzkSlirKBXVXcsxPYHkxIA1YGjl0iG17VlJSKeGDSpElMmjTJ6zBERKSRsdb6gS+BMSEfjQEWVHHbF0CHkDGkfQLHzZGNsGpNvvtexAt33XWX1yGIiEjj9RjwojFmMU7C+Quc8aFPAhhjXgCw1v40cP3LwN3Ac8aYe3HGlD6OM1t/T0MFraRUxAOjR1c11lxERKRurLWvGWNaA3cB7YEVwFhrbbDq2SXk+oPGmNE4k5uWALnAW8DtDRe11inVOqXiiQ0bNgDQo0cPjyMREZFY4mad0lilpFRJqXggOPteS0KJiEg4GnNSqu57EQ/cd999XocgIiISVVQpVaVUREREYkRjrpRqSSgRD6xevZrVq1d7HYaIiEjUUKVUlVLxgMaUiohIbTTmSqnGlIp44OGHH/Y6BBERkaiiSqkqpVIL5eWW/YdKyExP8joUkdhgLaxdC35/7dto29Z5iTRhqpSKCACF/lLe/Go7z32xkU05hcz5zUi6Z4X/u2HFihUADBgwINIhikSnt96Cyy6rWxv33gv33BORcEQk+igpFXFhx/5DvLBwM68s3kLeoRL6ZjenrNyyYP2+WiWlN910E6AxpdKEbN3qHGfOhPRaFnn6949YOCISfZSUSpNTUlbOiu15LNroY1deEcaAwRBnwBgoKbPkFvrxFfjZX1iCr8DPrvwirLWcN6AdPzu9O0O6ZjD0oY9ZuimXCcO6hh3Do48+Wg/fmUgUy8tzjj/5CSQmehuLiEQlJaXSJKzZfYCPvt/Noo0+lm7yUegvA6BFSgIWwEK5tZRbSIg3ZKYn0SotidbNkujdthmdMlL50cmd6ZyZdrjNU7pnsHijr1bxDB06NALflUgMyc+H1FQlpCJSJSWl0qjtOVDEnz9Ywz+/3Iq10De7OVcM6cSw7q05pXsmbZon17rtk7tmMmv5LnbsP0SHVqlh3bts2TIABg8eXOvni8SU/Hxo2dLrKEQkiikplUapqKSMZ7/YyF8/WYe/rJzrRnTn5yN7ktWs9kloqKHdMgFYssnHxYM7hnXvlClTAI0plSYkPx9atPA6ChGJYkpKpVE45C9jV34Ru/KK2LDvIH+bu55tuYcY0z+bO8f2q9VkpJr0a9+c9KR4lm7KDTspnTZtWsTjEYlqeXlKSkWkWkpKJWb5S8u56tnFfL8zn7xDJUd91je7Of+4bhin98qqt+cnxMdxUtcMlmwKf1ypuu2lyVGlVERqoKRUYtamnAIWbsjhB8e1ZUjXDLJbpNC+ZQrZLVLonpVOfJyp9xiGdsvkf+esIe9QCS1T3U/gWLJkiXO/JjxJU5GfD716eR2FiEQxJaUSs7bkFAJw8w96cWKXDE9iOLlbBtbCV5tzOes49zvN3HbbbYDGlEoTou57EamBklKJWZt9TlLatbV3u62d2DmDhDjDkk2+SpPSvMISxs1YSElZOdktUmjXIoW2LVIYfe3tnNlH2yVKE6LuexGpgZJSiVlbcgponpxARpp36x6mJsUzoGPLKseVvrJkC6t2HWB0v2x8BcUs2uhjz4EiSsoshc0SObOB4xXxhLVKSkWkRkpKJWZt9hXSpXUaxtT/2NHqDO2WwfMLNlNUUkZKYvzh8/7ScmZ+sYnTe7Xm6atOPny+vNxy4d3PMmvOBh6+dKAXIYs0rMJCKC/XOqUiUq04rwMQqa0tvkK6VNhhyStDu2XiLytn+fa8o87PWr6TXflFXDeix1Hn4+IM62c9xap3Z7A1MARBpFELbjGqSqmIVENJqcSksnLLNt8hurT2Pik9ucIi+kHWWp76fAM926Qzsk+bY+6Z9pfptD73Jhas39dgcYp4Jj/fOSopFZFqKCmVmLQrvwh/WTldM72b5BSUmZ5Er7bNWLop9/C5/27w8d2OfK47owdxlSxNde7wE+nQrSdfrMtpyFBFvKGkVERcUFIqMWlzTgEAXaOgUgrOuNKlm3yUl1sAnv58A63Tk7j0xMp3epo3bx5dijexYH0O1tqGDFWk4QWTUo0pFZFqKCmVmBRcozQaxpQCnNw1k/yiUtbsOcD6vQf5eNUeJp7a9aiJTxXdc889rHrvGfYdLGbN7oMNHK1IA9OYUhFxQbPvJSZt8RWSEGdo3zLF61AAOKV7cFxpLit35pOUEMek07pWef2zzz7LzrxDTHhtE/PX7aNvu+YNFapIw1P3vYi4oEqpxKTNvkI6ZaSSEB8d/4Q7ZaSS3SKZD7/bxRtfbuOyEzuS1Sy5yut79OjB6SceT9fWaSxYp8lO0sgpKRURF1QplZi0JaeQLh7u5BTKGMPQbpn859udAFw7onu118+ZMweA03tl886yHZSWlUdNgi0Sceq+FxEX9F9BiUmbcwroGiXjSYOGBpaGGtW3Db2zq++Of/DBB3nwwQc5vWcWB4tL+WZbXrXXi8S0/HxIS4ME1UFEpGr6DSExJ6+whPyi0qiZ5BQ0sk8bmqckMHlUrxqvffHFFwFIz2wNwIJ1+xjSNaNe4xPxjLYYFREXlJRKzNnsc5aDioaF8yvqlpXOt/ec42rb086dOx/+un/7Fnyxfh83n927PsMT8U5+vpaDEpEaqfteYs7mwHJQ0bJGaUVuElKA2bNnM3v2bABO79Warzbv55C/7Jjrduw/xLo9WjJKYlxeniqlIlIjJaUSc7b4omuN0tqYOnUqU6dOBWB4ryz8ZeVHbVMKsGHvQS76y3xGP/YZ1z2/hK+35FbWVJXKyi35RSURi1mk1tR9LyIuqPteYs6WnELaNE8mLSl2//m++uqrh78+pVsmifGGL9bv48w+bQDYvv8QE59ehLXwy1E9eWXxFi6dvoDTe7XmxlG9OK1na0rKLLvzi9iZV8TOvENs33+Irb5CtvoOsTW3kO25hygttxzfoQVj+mczpn82/du3cF3NFYmY/HzIzvY6ChGJcp78V90YMxm4DWgPfAdMsdZ+XsW1M4GrKvmo0FqbXuG6kcBjwPHADuCP1tonIxy6RIHNvoKYrpICtGvX7vDX6ckJnNg5gwXrcgDYe6CYiU8v4kBxKa9cfyoDOrbkprN68fKiLcz4fAM/eXoRrdISyTtUQugOpZnpSXTOTGNgx5ZcMLA9KYnxfLZmL49/vJZpc9bSsVUq5w9ox63n9q1ytymRiNOYUhFxocGTUmPMOOBxYDIwP3B83xjT31q7pZJbbgFuDzn3BTCvQpvdgVnAs8BEYAQw3Riz11r7RuS/C/HSlpxCTu3R2usw6uTdd98F4MILLwRgeK/WPP7xWrbkFPLzl75kV14RL157CgM6Ov8hT09O4PozezDptK68/uU2VmzPI7tFCh1apdCuZSodWqbQvlUqzZKP/ZH+1dm92XewmE9W7uHD73fx9PyNdM5M46rh3Rrs+5UmTmNKRcQFY0NLLfX9QGMWAd9aa6+vcG4t8Lq19g4X95+Ok8yebq1dEDj3CHCZtbZ3heueBo631p5WXXvp6em2oKCgdt+MNLji0jKOu3s2t5zdmymj+3gdTq2NGjUKgLlz5wKwZJOPHz25kKxmSeQfKuXpq04+3JUfaedNm0daUjxvTj69XtoXOYq1EB8Pv/sdPPCA19GIxDxjzFE9xY1Jg050MsYkAUOAD0M++hAY7rKZ64HvgglpwGmVtPkBcLIxJrE2sUp02uo7hLXROfM+HK+//jqvv/764feDOrUiLSkeX4GfJ348uN4SUoCLB3fkqy372RJYxUCkXhUUOImpKqUiUoOGnn2fBcQDu0PO7wbaHXv50YwxLYErgadCPmpXRZsJgWdKI7H18Mz72P4jMSsri6ysI/80kxLi+MNlA3nmqqGcN6B9vT77wkFO++98s71enyMCHNliVGNKRaQGsbYk1EScmF+sSyPGmBuMMUuNMUtLS0sjE5k0iM05gYXzY3yi05tvvsmbb7551LmLB3fkrOPa1vuzO2WkMbRbBm8t20FDD9+RJig/3zmqUioiNWjopHQfUAaErg2SDexycf/1wBvWWl/I+V1VtFkaeOZRrLUzrLUnW2tPTtBezDFls6+QtKR4spoleR1KnTzxxBM88cQTnj3/osEdWbfnICt3HvAsBmkilJSKiEsNmpRaa/3Al8CYkI/GAAuOveMIY8wpwCCO7boHWFhFm0uttVo9vBHZklNIl8y0mF9r8+233+btt9/27PkXDGxPQpzhbXXhS31TUioiLnnRff8YcLUx5jpjTD9jzONAB+BJAGPMC8aYFyq57wZgrbV2biWfPQl0NMZMC7R5HXA18Kd6+Q7EM1t8hTE/yQmgZcuWtPRwjF1mehJn9mnDu8t2UF6uLnypRxpTKiIuNXhSaq19DZgC3AUsw1lTdKy1dnPgki6B12HGmObAeODpKtrcCIwFzgy0+TvgV1qjtHEpL7ds8RXG/HhSgNdee43XXnvN0xguHtyBHXlFx2xvKhJRqpSKiEueDKi01k4Hplfx2ahKzh0AmtXQ5mfASZGIT6LTngPFFJeW06V1bM+8B/jb3/4GwLhx4zyLYXS/bFIT43n7mx0Mi/HNCCSKKSkVEZdibfa9NGHBmfddG0GldNasWcyaNcvTGNKTExjTP5tZy3fiLy33NBZpxIJJafPm3sYhIlFPSanEjC2BNUobw5jStLQ00tK8/z4uHtyB/YUlfL52r9ehSGOVlwfp6aCVTkSkBvotITFji6+Q+DhDh1apXodSZy+99BIAEydO9DSOM3q3oVVaIm8v28HZ/UJXVYOycsvB4lLnVVTKweISSsqOnRjVs00z2jRPboiQJdbk56vrXkRcUVIqMWNzTiEdWqWQGB/7Bf6nn3bm7HmdlCYlxDF2YHv+/dV2VmzPY/3eg6zYnsd3O/JZuTOf3EJ3K6oN6NiC/9x8Rj1HKzFJSamIuKSkVGLGZl8hXWN8e9Ggjz76yOsQDrtkcEdeXrSFH/7ffACS4uM4rn1zzj2+He1aptAsOYHmKQk0S06kWUoCifFHrxH7yco9PD1/Ixv3FdA9q3H8/yMRpKRUxBPGmMnAbUB74DtgirX28yquHQV8WslH/ay1q+otyBBKSiVmbMkp4PyB9bsvfENJTEz0OoTDhnbL4IFLBpCaGM/xHVrQq22zsKrRXVun8/T8jby/YieTR/Wqx0glJuXlaY1SkQZmjBkHPA5MBuYHju8bY/pba7dUc+vxQMV1Aht0wkHs94NKk5BfVEJuYUmjmHkPMHPmTGbOnOl1GAAYY5h0aleuGNKJfu1bhD08omOrVAZ3bsWs5TvrKUKJaaqUinjhN8BMa+1T1tqV1tqbgZ3AL2u4b4+1dleFV1n9h3qEklKJWv7Schas28dD733PpX/9AoBujaR7OJqS0ki4YGB7VmzPZ0tOodehSLRRUirSoIwxScAQ4MOQjz4Ehtdw+1JjzE5jzMfGmLPqJcBqqPteokZRSRnLt+exbMt+Fm/ysWDdPgr8ZSTFxzGsRyYTT+3KqL5tvA4zIubOnet1CBF13oB2PDRrJe+v2MnPR/b0OhyJJnl5SkpFGlYWEA/sDjm/GxhdxT3BKuoSIAmYBHxsjBlZ1TjU+tDkk9LMzMxGlyBEq4PFpRQUlx5zvqzcUugvo6ikHIuz3NDJSXGMOimBFinJpCcnEGcOQclmFs7ffMz9Eh3uGmIxe1Yxd+5Wr0ORaFFezsgDB9icm8sm/Z4ViZQEY8zSCu9nWGtn1KVBa+1qYHWFUwuNMd1wJkopKW0oPp+PUaNGeR1Go2WtZe6avTw+Zy3LthYQZyDOHD17OzUpnhM6ZTC4cysGd3aOjX3Ny6eeegqA66+/3uNIImfl3PU8MnsV8//fKXTKaBxjf6WODhwAa+l2wgl00+9ZkUgptdaeXM3n+4AyIHTx6WxgVxjPWQSMDzO2OmnySanUD2stc1fvZdrHa/lm6346tkrloUsHcMWQTiQnxHsdnudee+01oHElpWMHtuOR2auYvWIX153Rw+twJBpo33uRBmet9RtjvgTGAP+q8NEY4I0wmhqM063fYJSUSsQVlZRx08tfMWflHjplpPKHywZy+UmdSErQvLqgOXPmeB1CxHVtnc7xHVowa/lOJaXiyMtzjloSSqShPQa8aIxZDHwB/ALoADwJYIx5AcBa+9PA+ynAJpz1TJOAicAlwOUNGbSSUomoopIyfv7il3y2Zi+/G9uPq0/v1ih2YBJ3xg5sz6MfrGZn3iHat4z97WCljlQpFfGEtfY1Y0xr4C6cxfNXAGOttcGJGV1CbkkCHgU6AYdwktMLrLWzGihkQEtCSQRVTEinXjaQ68/soYS0CtOnT2f69OlehxFx5w9oB8D7y8MZtiSNlpJSEc9Ya6dba7tZa5OttUOstfMqfDbKWjuqwvs/Wmt7W2tTrbWZ1tozGjohBSWlEiGhCen4U0L/CJOK3n33Xd59912vw4i4Hm2acVy75ry/QgvpC0pKRSQs6r6XOisqKeOGF7/k87V7eeTygYwbqoS0Ju+//77XIdSb8we0Z9rHa9idX0R2ixSvwxEvaUypiIRBlVKps9te/9ZJSC87QQmpMHZgO6yFD75TF36Tp0qpiIRBSanUyd4Dxbz37Q6uP6MHVw7t7HU4MePxxx/n8ccf9zqMetE7uzm92zbj319vp6zceh2OeCmYlDZv7m0cIhITlJRKncz+bhflFi47qaPXocSUjz/+mI8//tjrMOrN1ad34+st+/nVK1/jLy33OhzxSl4epKdDvNYmFpGaaUyp1Ml73+6gZ5t0+marEhKOd955x+sQ6tWEYV0pLC7joVkrOVRSxvQJJ5GSqMSkycnP13hSEXFNlVKptT0Hili00ccFJ3TAhGwdKnL9mT146NIBfLp6D9c8t4SC4lKvQ5KGlp+v8aQi4poqpVJrs1fswlr44QntvQ4l5vzpT38C4NZbb/U4kvo1YVhX0pLiufVf3zLxmUXMvPoUTBys3JHP9zvz+X5HPrmFJfzxihPITE/yOlyJNCWlIhIGJaVSa+99u5PebZvRR133YVu4cKHXITSYS0/sRGpiAje/8hXDp35Mgb/s8GeZ6UkcKCrh/73xLTMmDVHFvbHJy1NSKiKuKSmVWtmTX8TiTT5uObu316HEpDfeeMPrEBrUeQPa8fw1p/D6V9vo2aYZ/du3oH+HFrRtnswz8zfy4HsreXXJVn6sTRcal/x86KhJkCLijpJSqZX3A133FwxU1724M7xXFsN7ZR1z/mend+ezNXu5/93vOaV7Jj3bNPMgOqkX6r4XkTBoopPUynvf7qRPdjN6q+u+VqZOncrUqVO9DiMqxMUZ/vSjQaQkxnHLq1pCqlFRUioiYVBSKmHblVfEks0+LhjYwetQYtayZctYtmyZ12FEjewWKUy9/ARWbM/nsY/WeB2OREJ5ORw4oKRURFxT972E7f0VO52u+xPaeR1KzHr11Ve9DiHqnHt8O358Shf+Pm89Z/bJYnjPY7v6JYYcPAjWap1SEXFNSamE7b1vd3Jcu+b0aquue4msu3/Yj0Ubcpjy6jJG9mlDgb+UguIyCopLKSkr576LBzC4cyuvwxQ3tO+9iIRJ3fcSlp15h1i6OVcTnOrogQce4IEHHvA6jKiTlpTAEz8+kfTkBL5Yt481uw+y/1AJSQlxrNtzkJlfbPQ6RHErL885KikVaZyMScaYCRjzIsaswZh8jDmAMWsx5mWMuRpjUsNpUpVSCcus5bsAGKsF8+tk9erVXocQtQZ0bMmnt4465vwdby7n7WXbKfSXkpakX11RT5VSkcbJmHTgf4CbgGDXVcVFpnsCPYBxwP9izF+AqVhbUFPT+s0urvlLy/n319vo176Flu2po5deesnrEGLOxYM78MriLXz0/W4uHqy1L6NeMCnVmFKRxmYd0JYjieg+4NvAESALOCFwbAncCVwL1Dg7WkmpuLLVV8hNr3zNiu35TL1soNfhSBN0SrdM2rdM4Z1lO5SUxgJVSkUaq2xgCzATeBVrV1V6lTHHAeOBa4BObhpWUio1mvP9bn77r28oL7f8bcJJnK/xpHX2+9//HoD777/f40hiR1yc4aJBHXhm/kZyC/xkpCd5HZJUR2NKRRqra4EXsba02qucZPVejHkQmOSmYU10kiqVlJXzh1krue6FpXTKSOU/vxqhhDRCtm7dytatW70OI+ZcNLgDpeWWWSt2eh2K1ESVUpHGydrnakxIj76+FGufc3OpKqVSqYPFpfzsuSUs3uRjwrAu3P3D/qQkxnsdVqPx3HOufj4lRP/2LejVthlvf72DCcO6eh2OVCeYlDbX0nEijZYxnwAWa8+u5DOnS9Ba112CqpTKMUrLyvnVK1/z5ZZcpo0bzEOXDlRCKlHBGMPFgzqweJOP7fsPeR2OVCc/H5o1g3j97hBpxEYFXpW5F/h9OI0pKZVjPPjeSj5ZtYf7LjqeS07UhJL6cMcdd3DHHXd4HUZMCk5yevebHR5HItXKy1PXvUhTZUxlS0XVSN33cpSZX2xk5oJNXDeiOxNPVfdofcnJyfE6hJjVpXUaJ3ZpxdvLdvCLkT29Dkeqkp+v5aBEGiNjrgKuCjn3SchVwQQiN5ymlZTKYZ+s2s39//meMf2zuWNsP6/DadRmzJjhdQgx7eJBHbj33e9Zs/sAfbI1ZjEq5eerUirSOHXD6bK3gfcGGBlyTbBCujCchpWUCgDf7cjjppe/5vgOLXl8/GDi48KquIs0qAtO6MAD763k7WXbue3c4wAoK7e8vWw70+asZYuvsNZtt05P4uYf9GLCqV1JjNcIp1pTUirS2BmOTkwrygH+C9wcVoPW2pqvasTS09NtQUGNO181avsL/Zw37XOMgbduPJ3sFileh9To3XrrrQD86U9/8jiS2PXTZxezYe9B5t12Fh+v2sOjH6xize6DHN+hBWf3yw5vIFMFizf6WLghh+5Z6dx+/nGc0z8bY/RHWtj693der7/udSQijYoxptBam+51HAAYU44z+z4iMxpVKRVeW7KVXflFvK2EtMEcOqSZ43V18aAO/PZf33De4/NYs/sg3bPS+ctPTmTsgPbE1aHSb63lk1V7eHjWSn7+4pec0j2T34zpQ9vmyTXemxAXR+fMVCWxoDGlIk3DNZFsTJXSJl4pLS+3nPXnuWQ3T+GfvzjN63BEXDtQVMLwP3xCWnI8U0b34YohnSLa3V5aVs4rS7Yy7aM15BT4Xd/34CUDNEkQnK77a6+F//1fryMRaVSirFLaHegM7MXalRXO9wPaAFuxdqPb5lQpbeLmr9vH5pxCfjOmj9ehiISleUoin9w6iuYpCfWyjm5CfByTTu3KJYM7MG/NPkrLy2u85+nPN/K3uesZN7Rz0x6PWlYGBw5oTKlI4/dX4FzgZ8DKCudPBmYCs4EL3DampLSJ+8eizWSmJ3HegHZeh9KkTJkyBYBp06Z5HElsa+OiS72umqckcsEJ7rbXbZGSyDUzl/Dvr7dz5cmd6zmyKHbwoHNUUirS2J0UOL4fcn42zuSnkwhDE/5TXnblFTFn5R5+dHInkhO064pIXY3q24bjO7TgybnrKStvwkOjgluMakypSGOXETgWhZwPjnnKDKcxJaVN2KtLtlBWbplwisa/NbRp06apStoIGWO48axebNhXwPsrdnodjneCSakqpSKNXXBx/B+FnL885HNXlJQ2UaVl5by6eCtn9mlDl9ZpXocj0mice3w7erRJ56+frqfJTiTNy3OOSkpFGrv/4nTTT8eYZzDmtxjzNPA3nDVM/xtOY0pKm6iPV+1hV34RE4d18TqUJunGG2/kxhtv9DoMqQfxcYbJo3qxcmc+n6za43U43lClVKSpeBwn+UwArgb+iLNMVGLgfFjLbygpbaL+sWgL7Vum8IPj2nodSpOUmppKamqq12FIPbl4cAc6ZaTyl0/XRa5aunMnvPACTJoEF1wAH3wA0VqJ1ZhSkabB2k+BKUAJTsU0+PIDv8baz8JpztXse2MYZi2LwgxVotTmnALmrdnLr0f3IaEpL1vjIe3k1Lglxsfx85E9ufutFSzckMPwnlm1a2j9evjrX+Gjj2DFCudcVhYkJcF558Hw4XDvvTB6NETTgv2qlIo0Hdb+H8a8CZwHZAO7gdlYuz3cptwuCbXQGJYDTwMvWRvewFWJLi8v3kJ8nGHc0Ca8ZI1IPfvRkE488fFa/vrputonpX/4Azz3HPzgB06FdMwYGDQISkqc8w89BOecAyNGwK23Qps2kf0mauvbb52jklKwslhLAAAgAElEQVSRpsFJQJ+pazOudnQyBmdvU0cx8G/gaWv5tK4BeK2p7ehUXFrGaX/4hFO6ZfLkpCFeh9Nk3XDDDQDMmDHD40ikPs2Yt56HZ63i3gv7c1LXDHq0aUaz5DCWh54wARYvhrVrK/+8uBiefhoefhh27IhM0JGSluZUTOO13JxIJEXVjk4AxmQCE4G+QOi4NIu117ptyu1vx8eAK4FOQAowHhhvDBtwMuOZ1rLL7UPFO+99uxNfgZ8Jp2qCk5dat27tdQjSACYM68o/Fm3h3ne/P3yubfNkerZpxs9H9mBU3xrGdPv9Tld9VZKT4cYbne08FyyA0tIIRR4BnTsrIRVp7IzpCcwHKvtlZnAKmq6TUleV0iPPZgTwY5z1p4IBWKAMeBt4yFqWuW4wCjSlSqm1lh/+33z8peV8+OszMdE0Bk2kkfKXlrPFV8C6PQVs2HeQ9XsK+OC7XZzRO4u/Tayht+Lii2HzZlgWU79WRaQeRVWl1JgXgQnVXGGx1vVfp2HNcrGW+dZyIzAUqDijKgG4DFhkDBeH06Y0nP9u8PHdjnyuHdFdCalIA0lKiKNX2+acN6Adk0f14s9XDqJ/+xb4Cvw131xTpVRExFsjcYqTDwXeW+AinPVJ1wDnh9NYWEmpMYwxhjeAdcCZwdPA18AGnHWpHqridvHYM/M30Do9iUtO7Oh1KE3eNddcwzXXXON1GOKRjPREcgtdJKUlJUpKRSSaZQeOfz58xtr/4PSq98GZke+aq6TUGG4zhrXAbOASjiyK+hYw0lqGAIOB/EAQEmU27D3InJV7mHhqV1ISNc7La507d6ZzZ61+0FRlpie7r5QmJtZ/QCIitRP8RZaPMxEejOkEHAicr65r/xhuJzo9gpOEmsCDnwWesJZNwQuspcAYdgG9wwlAGsazX2wkKSGOSadpn/tocP/993sdgngoMz2R3MISysstcXHVDKXx+7UAvYhEs31AFyAT2Ab0AGYRTFAhOZzGwum+3wj8GuhkLb+pmJBW8INAQBJFcgv8vP7lNi47sSNZzcL69yEi9SAzPZmycsuBohpmy2tMqYhEt+8Cx77ARzjFy+OBk3CKmfPDacxtpfRS4B1rqXaqvrVE2UJ5AvCPRZspKinnZyO6ex2KBEycOBGAl156yeNIxAuZ6U6XfE5BMS3Tqume15hSEYlujwGfA4XAfTgTn/oFPlsJ/CqcxtwmpXOBzsZQaC37gieNIQtIA/KsJS+cB0vDKC4t4/mFmxnZpw19spt7HY4E9O3b1+sQxEMZaU6iWeNkJ40pFZFoZu0nwCeH3xszADgBKAVWYW1ZOM25TUqfxZng9GvgiQrnxwOP4+zwdEU4D5aG8e43O9l7oJjrrlSVNJrcfffdXocgHmqd7gyjyTnoIilVpVREop0xrXFWZcrCGWc6L9yEFNyPKR0WOL4Rcv5NnPEDw5CoY63l6c830De7OSN61XLvbRGJuIxA932NlVJ134tILRljJhtjNhpjiowxXxpjznB53whjTKkxZoXLB92LM8npdeDJwHEbxtwTbsxuk9I2geP+kPN5IZ9LFPl09R5W7TrAtWdosfxoM378eMaPH+91GOKRzHQn0fQVlFR/obrvRaQWjDHjcHqyHwZOBBYA7xtjqt1j3BiTAbwAfOzyQbcBv8eZZW8qvJKB32PMb8OJ221SGlxv6pyQ88H3B8N5qNS/FdvzuOWVZfRsk85Fgzp4HY6EGDx4MIMHD/Y6DPFIWlICKYlx+AqKq79Q3fciUju/AWZaa5+y1q601t4M7AR+WcN9zwDPAwtdPufGwPEQ8DIwNXA8hJOc3hxO0G7HlH4FjAaeNYbjcWZU9cP5pi3wZTgPNcZMBm4D2uMsJzDFWvt5NdcnAXcBk4AOwG7gT9baJwKfXw08V8mtqdbaonBiawzW7TnIT59dTIvURF68dpgWy49Ct99+u9chiMcy05LcVUqVlIpIGAI50xDgTyEffQgMr+a+yTg7ND0IuJ34kI2TB16MtXMqNDYG+ABo6zpw3CelT+IkpS1wpvwffmwgmCfdPrBCSXkyzvpVk3FKyv2ttVuquO1VoBNwA7AW53+E1JBrCoGeFU+4SUgzMzOZO3eu2/CjXklZOev3FnB9L+jZJp01yxaxxuugROQYP+t5iIT47cydm1vlNWf6/WzduZONjeh3lIjUWYIxZmmF9zOstTMqvM8C4nEKeBXtxsnljmGMGQjcA5xqrS0LY8jfSmAQzl73FQUrre7GpQa4Skqt5U1jeAynMhrqz9by7zCeebikHHh/szHmPJyS8h2hFxtjzgHOBnpaa4PLUW2qNExrd4URBwA+n49Ro0aFe1tU2nOgiCufXIivIInXfn4a/dq38DokqcLll18OwBtvhM4dlKbimWcWkV9UytuXn175BeXlUFZG11696NpIfkeJSESUWmtPjlRjxphk4DXgVmvtxjBvvwt4B6fA+McK5ycDJcCd4TTmtlKKtdxqDK8BF+FUKnfjLKi/xG0btSwpXwIsAX5jjPkpzjiF94E7rbUVx7KmGmM24/x1sAy421r7tdvYYt3+Qj8/fWYxew4U89J1w5SQRrnTTjvN6xDEY5npSWzOKaz6gpJA176670UkPPuAMpxcraJsoLLiXXucIZnPGWOCQyHjAGOMKQXGWms/rOJZt+FMev8DxtwEbMXp2e4E7AXuxJhgYmqx9uzqAnedlAIEElDXSWglwi4p42xbOgJnH9XLgVbA/+GMLQ2ujboa+BnwDdAcuAX4whgzyFq7NrRBY8wNOEMBSGokv/D/Pm8Da/cc5PlrTuGkLhlehyM1uPXWW70OQTyWmZ6Er6CaJaGUlIpILVhr/caYL4ExwL8qfDSGY5f2BNgODAw5Nzlw/aVU3jsdNBIO7/bZMfAKahP4HI4M96yW66TUGBKAsTj7m4aO58Ra7nfbVpjicL6Rn1hr85xYzE3AB8aYbGvtbmvtQirMFDPGLMCplt5MJVtcBcZezABIT0+v8X+kWLA99xCdM1IZ0VvrkYrEgsy0JA4Wl1JcWkZyQiWTEf2BhFVJqYiE7zHgRWPMYuAL4Bc4xbwnAYwxLwBYa39qrS0hZOynMWYPUGytdTMmNGJrTrpKSo2hLc5Wo9XtjegmKQ23pAzOEgbbgwlpwMrAsQvHVl0JDNJdCvR2EVOjkFvoJyNd//GKFRdddBEA77zzjseRiFcymwW2Gi0ooV3LapJSrVMqImGy1r5mnF2W7sLpnl+B0w2/OXBJteuVhvEgt0uLuuK2sfuA4zh6YdSKL1estX6c5aPGhHw0Bmdh18p8AXQwxjSrcK5P4Li5kusxzrSxE3AS2ibBV+AnM01Jaaw4++yzOfvsaofWSCMX/HmtsgtflVIRqQNr7XRrbTdrbbK1doi1dl6Fz0ZZa0dVc++91toBDRJoBW6778/B6UKfCVwT+PoWnO5xi7NYqluuS8qB61/GWS/rOeNsZdUKZ0mp1621ewL33IOzHMFanGWrfoWTlNa0SGyjkVvg1+SmGHLLLbd4HYJ4LNizUeVWoxpTKiKxwJg4nO3mu+Ds5HQ0a19w25TbpDQ4cPV2nKQUa/mLMXwKLMeZZeVKuCVla+1BY8xonMlNS4Bc4K1ALEGtcMaItsOZBfY1cKa1drHbuGKZtZacAv/hrQtFJPq1Dvy85tRUKVX3vYhEK2P6AW8Tsk58BRZn21JX3CalZUAikIOz7lSCMbThSPf5DTg7ALhirZ0OTK/is1GVnFvNsVucVvz818Cv3T6/sTlUUkZxabmS0hhy/vnnA/D+++97HIl45XClVN33IhK7pgO9ItWY26Q0B6da2hJnQlIn4B9AcMckrUHkoeCYNI0pjR0XXnih1yGIx1qlOhVQjSkVkRg2BKca+hYwG6hmnbuauU1KV+MkpT2BecAEnF2WCATzVV2CkLrJDeyfrdn3sWPy5MlehyAeS4iPo1VaYtVJqcaUikj0242znvzVWHugro25nX3/FM6YzRScmfh7OTLzfh8wpa6BSO35AhMlMtM19kwklmSmJR3++T2GxpSKSPR7GCcXvBVnu9I6cVUptZZ/Av8MvjeG3sBZQCnwhbXsr2sgUnu+gmIAMtPr/O9BGsjo0c4GZnPmzPE4EvFSZnoSvoPqvheRGGXtcxhzMc7k9f+Hs+h+acUrsLaqSVDHqDEpNYZk4PvA2wusZZW15OPMtpIo4At032tMaewYN26c1yFIFMhIT2Krr7DyD9V9LyLRzpg7gItwhnImcfQ2o662Fq2oxqTUWoqNoTXOnvIbwmlcGkZugZ/4OEPzFNe7xorHrr/+eq9DkCiQmZbEN1ur6GhSpVREot/NgaMJOdaK2zGlwT7GQXV5mNQPX6GfjLRE4uIitv2siDSAzGZJ5Bb6sbaSYoLGlIpI9GuGUw29FEjD2riQVyV7KFfNbVI6DfABrxjDOGPoawxdKr7C+x4kknwHtXB+rBk1ahSjRo3yOgzxWGZaEiVllgPFpcd+qEqpiES/dwLHJVhbVO2VLrjt752Hkwln4mz7GcqG0ZZEmFMp1X+4YsnVV1/tdQgSBYJ/TPoO+mmRElIR1ZhSEYl+r+NsbvQ+xjwObOLoiU5g7Ty3jYWTSKpvOErlFvjp1baZ12FIGJSUClRISgv9dCP96A/VfS8i0e9NnMJka5zlQ0OFVbR0e+HzbhuUhpdb6NfC+TGmJFAFS1TC0aRVu9Wouu9FJDZErGjpdp3SayL1QIms8nJLbmGJloOKMWPGjAFg7ty53gYinmodSEpzKktK1X0vItEvokVLjQONcflFJZSVW010ijHXXXed1yFIFFClVERimrURLVq6SkqN4dkaLrHWcm0E4pEwBffNVlIaWyZOnOh1CBIF0pPiSYqPO/xzfBSNKRWRJsZtpfRqql6VP7hiv5JSD+QG9s3WmNLYUljo7OKTlpbmcSTiJWOMs9VoVUlpfDzEuV25T0SkARjzLM72odcGvq6Oc51Lmn0f47TFaGwaO3YsoDGl4vxBGfzj8iglJeq6F5FodDVQjlOMvJqatxKNeFLavZL7egB3AycCP3T7QIksX0Ex4OwMI7Hjl7/8pdchSJRonZ5U+UQnv19JqYhEK1PF16FqSliP4nb2/eZKTq83hoXAPuCXwGfhPFgiQ5XS2DRu3DivQxAvffUVZGVBly5kpCexLbfw2Gv8fo0nFZFo1L2Kr+usrrPvE3Cy4PMiEIvUQm6hn5TEOFKTwtpeVjyWl5cHQMuWLT2ORDxx4YVw7rnw7LNkpiVWPaZUlVIRiTbWbq706wioy+z7FOB0IBnIi2RQ4p6vwK8qaQy6+OKLAY0pbZL27oUdO+DAAQAy05PJLyqlpKycxPgKk5o0plREmpi6zr4PjiOYFZFoJGy+Ar/Gk8agX/3qV16HIF5ZscI5FgfGg6c7XfS5hX7aNk85cp2670Wkianr7Pti4BVgSmTCkXD5CvxkqFIacy677DKvQxCvBJPSoiLAqZSC87N8TFKqSqmINCG1nX0PUGwtuyIZjIQvt9BP19Za6zLW7Nu3D4CsrCyPI5EGF1IpzQhUSo8ZV6ruexFpYuoy+16igCqlsemKK64ANKa0SVq+3Dke7r4PbjVacvR1qpSKSBPjdqLTecApwNfW8m6F8xcBg4HF1jK7fkKUqvhLyzlQVKotRmPQb3/7W69DEC9YW8mYUufnN7jm8GEaUyoiscaYVKw9VNvb3Xbf/x4YBpwfcv4gcC+wEJSUNrT9hdr3PlZdeOGFXocgXti69fCs+8Pd92nBpLSSSmlyckNGJyISPmN6A48CY3BWZErAmGlAC+DPWPud26bcbqp8XOC4MOT84sCxn9sHSuT4lJTGrF27drFrl4ZkNznBrvtu3Q4npYnxcTRPSTi2UqoxpSIS7YzpipMbXgikcmRSfAlwFfCTcJpzm5QGZ9I0CznfPORzaUDBiREaUxp7xo8fz/jx470OQxpasOt+yJDDSSk4W436CjWmVERizr1AJk4SWtHrOAnq6HAac9t9vxPoAvwOuKnC+TsDxx3hPFQiI5iUqlIae26//XavQxAvrFgBnTtD27ZHJaUZ6Unkhs6+15hSEYl+5+CsY38u8GmF84FuIbqG05jbpHQOcC3wS2M4B1gN9AV6BoKZE85DJTJylZTGrPPO0868TdLy5TBggDNWNKRSun1/0dHXqvteRKJfm8BxQcj5YDd+RjiNue2+n4ozqQmcRHRs4GiAgsDn0sCCEyNapamaEmu2bt3K1q1bvQ5DGlJpKaxcWWlSmpFWRaVUSamIRDdf4Ngt5PxFgWNOOI25SkqtZT1OiXYVTiIafH0PnGMtG8J5qERGbqGfFikJR++XLTFh0qRJTJo0yeswpCGtW+ckmgMHOkmp3+8sEYXT2+Er8GNthd2c1X0vItEvOAH+5cNnjPk78CxOT/r8cBpzvc2otfwXON4YegLZwO5Asioe8RX41XUfo+666y6vQxA3/H7Ytg127z6cQFYrMRFOOgni44/9LDjzfsAAZ2moYPvJyWSmJ+EvK6fAX0az5IQjn6lSKiLR7RHgh8BJOEkowHU4hcsy4M/hNOY6KQ0KJKJKRqOAr8BPhpLSmDR6dFgTEiUcTz0F8+bV/v5Dh5ykccsWqM2yXdOnwy9/eez5FSsgLg6OOw4++cQ5V1QEycmHf45zC/xHklKNKRWRaGftfzFmAjAdZxZ+UC5wI9YuCqc5tzs6/QMYD9xrLQ9UOH83znIAL1uL+iIbmK/AT4dWKV6HIbWwYYMz4qVHjx4eR9II3Xmnk9C1bl27+5OToVMnuOACZ6Z8ly7Qrl3l1c9Qv/kNPP981Ulp796QmnpkUfzAuNLWgaQ0p8BP58zACnuqlIpILLD2nxjzLnA60BbYAyzA2sJwm3JbKR0eOL4Ucv5F4D5gRLgPlrrLLfRzfIcWXochtfCzn/0MgLlz53obSGOTnw/79sEjj8D//E/DP/+qq5znrlsHvXod/dny5XDCCc7XIUlpxUrpYRpTKiLRzhhn7Ki11xK6EpMxPwXA2hfcNud2hkz7wDG0L2t34NjO7QMlMqy1GlMaw+677z7uu+8+r8NofNYHRhb17OnN83/8YzAGXn756POHDjmJ6oABzvuQpDTz8FajgaS0rAzKy1UpFZFod3XgVZmZOBOeXHOblAYX0Dst5PxpIZ9LAyn0l1FcWq4xpTFq5MiRjBw50uswGh+vk9JOnWDkSHjppaMnRq1c6bwfONB5nxIYdhNMSpuFJKUlgc1RlJSKSCwyJrjTp6n2uhBuu++X44wVmGkMdwIrcfa7fwhnttXyau6VeqDdnGLb6tWrAejbt6/HkTQyXielABMmwPXXw9KlMHSoc67izHs4plLaPDmBhDiDrzCQlPoDR3Xfi0i0MeZi4OKQc6EV0d6BY344TbtNSmfiJKUdgecrhoGTlM4M56FSd7mB/3hlat/7mPTzn/8c0JjSiFu/Htq0gebNvYvhiivgxhvhH/84kpSuWOEkosFkOSQpNcaQkZ6E72BIUqpKqYhEn8E4XfbB7iADXFXJdRZYFk7DbhfPfwZ4g6MXzg+WZF+3NrwxA1J3wUqpuu9j08MPP8zDDz/sdRjRqbQU3n4bcnPDv3f9em+rpACtWjkz91991flewElK+/eHhEAdICQpBWcG/uFKqbrvRST6BQuTlmPzw+AGS1PCadD1VkDW8iOcZaH+gTPD6h/AOGsZF84DJTLUfR/bhg8fzvDhw2u+sKkpLXW6vy+5xBmfedNNsHat+/ujISkFmDjRWXA/uB5pcM/7oEqS0nYtU1ixPY+ikjJVSkUkmk0DugM9OFKg7F7h1Q1ojrUDsfabcBoOa39Ka/mntUyylnMCx38ZQzNjKi3bSj1SUhrbVqxYwYoVK7wOI7oEE9J//tNZa/TKK2HGDOjb10lSa1oQ3+93Fr2PhqR07Fho2dLpws/Nhe3ba0xKbzijBzvzinhm/kaNKRWR6GVtHtZuxtpNwP3A/YH3wdcWrC2oTdO12jTdGOKMYawxvIKzTNQztWlHai+30E98nKFFStibckkUuOmmm7jpppu8DiN6VExIH30UHnoInnsONm+G3/0O5s93ZrW/807VbWza5CyjFA1JaUqKM7b0zTdhyRLnXHDmPVSalA7vlcXoftlM/3QdObkHnJOqlIpINLP2XqyN2PqGYSWlxjDUGJ4AdgLvAlcCaYQ55V/qzldQQkZaEsbof/pY9Oijj/Loo496HUZ0CE1Ib731yGft28MDDzhbfqanw8cfV91ONMy8r2jCBDh4EIJjh2uolALcOfY4ikvLeWneOueEklIRiXbGTMSYrzCmAGPKQl6l4TRVY5nNGLoDE4EJHJniXzETOgS8Fc5Dpe58BcVkpqtrL1YNDc7KbuoqJqR//OPRCWlFaWlOpfHbb6tuK9qS0pEjoWNH+Owzpyu/U6cjn1WRlPZo04yfntaNT1+fzS2gpFREopsxVwIvcGSyU51UWSk1hl8Yw3xgHc7+9r05etY9gSCyrWVCXQOR8OQGKqUSm5YtW8ayZWGtlNE4vf66k5BOnQq33Vb9tSecAN98c/Si9BWtX+9UU7OzIx9nbcTFOTs8gVMlrdirEUxKi47dd+SWs3vTKlAusAkaniMitWOMmWyM2WiMKTLGfGmMOaOaa0caYxYYY3KMMYeMMauMMVVUCY5yY+B4KHC0QE7g6/3A5nBirq77fjrOjk3BRLQEmAVcC4wKXmQtB8N5oESGr9BP62ZKSmPVlClTmDIlrJUyGqcvv3QStN/+tuZrBw1yJg1t21b55+vXQ48eRyd/XpsQ+Hu9Ytc9VFkpBWiZlsj4wc7OzV/urNVcARFp4owx44DHgYeBE4EFwPvGmC5V3HIQeAI4E+gPPAjcZ4yZXMOjTsBJREcfPmNtG+AenLzxwnDidjOm1OJMZGpnLT+0luc4kgWLR3IL/KqUxrBp06Yxbdo0r8Pw3vLl0K/fkfU7qzNokHP8pooVRqJlOaiKBg2CBx+EwGYJh4VsMxpqdM8MAJ5bsgN/aXl9RigijdNvgJnW2qestSuttTfjzAf6ZWUXW2u/tNa+aq39zlq70Vr7EvABUGV1NSA9cPyK4GL6xsQDfwba4CS6rrmd6PQzYJUx/M0YRgMazOih8nJLbqFfy0HFsMGDBzN48GCvw/Det9863fJuBK+rLCktL4cNG6IvKTXGWT3gxBOPPh8cK1pFUppQ5swN2HKghBf/G1bvl4g0ccaYJGAI8GHIRx8CrhbINsacGLj2sxouDW4jaoDAsiGcH3g+wDA3zwuqrjwxFfgJECz1tgVuCLwOVXVTrMnMzIy5rR7Lyi2/HlBKB/9m5s7d6XU4UgurVq0C4LjjjvM4Eu8k5OUxYudO1qelsdXlz+CwDh048NFHfH/66UedT9q7l+FFRawpK2NHjPw8n5mQwNa1a9lYSbxZX33FAODaExLYuXUFc+cqMRWRwxKMMUsrvJ9hrZ1R4X0WEA/sDrlvNxW72SthjNmGU+FMAO6z1j5ZQyw7gAycHHElcArwdoXPfTXcf5Qqk1JruRO40xjOxJl9/yOgZeDjNAJlWmPYBrxkLbeH8+Bo4fP5GDVqlNdhhGX93oNc++FnPD7+eEYN7uh1OFIL9957L0DM/UEUUYHvvecll9DT7c/gsGGkfvcdbUOvDyys3+f88+kTKz/PKSl0zc6ma2Xx7toFQLPuA3lk8UHeGjGYwZ1bNWx8IhKtSq21J9dT22cAzYBTgUeMMRuttS9Wc/3XwACciugLHFsZfT6ch9c4kMta5gHzjOEmnAGrE4GxHOnC7wDcBrGZlMai3OC+9xpTGrP+8pe/eB2C95Yvd44VF5WvyaBB8NZbUFDgzLQPirbloNxITq6y+z64o9PQPtnELTnIJ6v2KCkVEbf2AWVA6FIk2TgbHlXJWrsx8OVyY0w2zupL1SWlk4H/AQ5gbSHGtATGAaXAv4FHwgnc9eL51uK3ljes5VKgHc4yAAvCeZhEhrYYjX0DBgxgQOiM7KZm+XLIzHQWyHdr0CBnSajQLVrXr4f4eOhS1cTSKOQiKW3ZMp0Tu2Tw6ao9DRiYiMQya60f+BIYE/LRGMLL2+KA5Co/NSYZuBw4F2gRePhUrD0Ra4di7cNYWxbG82q3zai15FrL36xlBNALJ5OWBhJMSjOUlMasBQsWsGBBE/+bLjjJKZwlnKqagb9+PXTtGlt7xbtISklK4qy+bVi+PY89+ceuaSoiUoXHgKuNMdcZY/oZYx7H6dl+EsAY84Ix5oXgxcaYm40xPzTG9A68rgVuBV6q8gnWFgNPA8/iLP9UZ7VKSiuylg3W8kAkghF3fIWBSqm672PWnXfeyZ133ul1GN4pL3eqneF03YOTeDZvXnlSGktd91B9UloS+P2elMRZx7UFYO6avQ0UmIjEOmvta8AU4C5gGTACGGutDc6a7MKRiezgTIx6JHDtUpze8NuBmv5DtQFn5n1E1q6rc1IqDS+3wE9qYjypSfFehyK19Pe//52///3vXodRf+69F4YOrXr3pU2bnHGh4SalcXFHdnaqqLElpRUqpf3bt6BdixR14YtIWKy106213ay1ydbaIdbaeRU+G2WtHVXh/TRr7fHW2nRrbUtr7UmB+2tKNv+Mk5S62AGlZtrDLgb5Cko0njTG9e3b1+sQ6tcrr8CaNbBuHfTufezntZnkFDRoELz4olNtjYuD/fvB52ucSWliIsYYzjquDe9+sxN/aTlJCaoliEjUGI6zodIdGHMZ8A1HLxtqsfZat43pt1uMKSguZeH6fXTKSPU6FKmDzz77jM8+q2lN4hi1aZOTkAJ8GLp2c0AwKT3++PDbHzQIDhxwngOxOfMenKS0qIpxosHu+8AY2bP6tuVgcSlLN4W15J+ISH27CsgMfN0XuDJwLvi6OpzGlJTGmMc+WsOOvCL+57xGXmlr5MvVVH4AACAASURBVO655x7uuecer8OoHx995BybNz/ydahvv3X2qW/ePPz2Qyc7xXJSWl2lNDHx8CSw03tlkRQfx6er1YUvIlHHVPMKi7rvY8i32/bz3BcbmTCsC0O6ZtZ8g0StZ5991usQ6s+HH0KnTjB2rNONX1Jy7Kz45ctr13UPMGCAk6x98w1ceumRpLRHj7rF3dBSUiAnp/LPgklpQHpyAsN6ZPLJqj387oL+DRSgiEiNukeysSqT0sBOTq4FFtmXelJaVs7tbywnq1ky/3Ne092asrHoEWsJlFtlZTBnDlx2GZxzDsyYAYsWwYgRR64pKoK1a+GKK2r3jPR0Z5xqxUppdjY0a1b3+BtSTZXSpKPHjZ/Vty33/+d7tuQU0qV1WgMEKCJSgyOz+SOiukrpXAJbibpga2hL6ui5Lzbx/c58/jbhJFqmxtBajFKpOXPmADB6dLXbEMeepUudiUfnnAM/+IEzEemjj45OSleudJLX2lZKwenCXxrY+jkWZ95DzUtChSSlPzjOSUo/WbWbq0+PaHFCRKRujGkF9AaOnfBSYdZ/TWoaU1rdOIE6jRsQ97b6CnnsozWM7pfNeQPaeR2ORMCDDz7Igw8+6HUYkffhh07X+tlnQ0YGnHLKsZOdgpOcTjih9s8ZNAg2boT8/MaZlFZSKe2WlU6PrHQ+Wa31SkUkShiTiDHPAHuB/wKfhrw+Cae56qqbz4e8Pwdne9EvgG1AJ+B0nD1W3wvnoeKetZa73lpBnIH7Lz4eE87uNxK1Xnyxuq2EY9iHH8JJJ0FWlvN+zBh46CHIzXWSVHAmOSUnQ69etX9OMKFduhS2bWucSWklu1OddVxbXvzvZgr9paQlqXNKRDx3K3BNpBqrslJqLdcEX8AcnIR0nLWcaS0/sZYzgR8DWTiJqtSDd77ZwWdr9nLruX3p0ErLQDUWnTt3pnPnzl6HEVn5+bBwodN1H3TOOc56op9+euTc8uXQvz8k1CGpCs7Af/ttZ4H+xpaUVtJ9D04Xvr+0nAXrqpggJSLSsMbjDOFcFnhvgTeBImAdxxY4q+V2Sai7AsfZIedn4XTd3xbOQ8W9pz7fQL/2Lfjpad28DkUiaPbs2cyeHfrjFOM+/dQZK1oxKR02zFn2qWIXfl1m3gd17gytWsGbbzrvG1tSWkn3PcDQbpmkJ8XziZaGEpHoEPzle2TmqrVXAD/CmZn/bjiNuU1KuwWOk0PO3xg4dg3noeLenvxiTujYkvg4dds3JlOnTmXq1KlehxFZH37ozIw/7bQj5xIT4ayzjiSlOTmwc2fdk1JjnGrptm3O+1hOSivbirWKpDQpIY4RvbP4dNUeysrdzkMVEak3wXFGm4EyAIxJxelhjwfuC6cxt0lpYHsW/mAMu41hmTHs5v+zd99hUpXXA8e/BxZmYXdpuwgKIprYG7YQjUY0FtRoVJLgz1iwxChRo0Zj70YxlmDDrqhowBqDUcCGSSwoICp2BRt9cWm7LNvO74/3jjs7TLmzO/XO+TzPPDNz25ydWXYO521wLa5U+1n8U9cnIqNFZL6I1IvILBHZK8nxXUXkKu+cdSLyjYicGXXMCBH5yNv/kYgckUpM+UhVWVHXSK8yG20fNBMnTmTixIm5DiO9XnwRhg1zyVakAw5wg5K+/DI9g5zCwk345eXQt2/Hr5dt4fcpvHpTpDh9SgGO2GkAi1bW8/Ts7zIYnDHG+FLj3XcDwkvOXQr82Xuc0uABv0npxUALrqm+CtjeuxdcUnqR3xcUkZHALbiEdifgDeAFERmU4LSJwHDgFNwyVr8B3o+45u7AJOBRYIh3/4SIDPUbVz6qa2imobmF3t1tnfug6d+/P/37B2gmhfnz3dyjkU33YeFt06a5QU7Q8UoptCalP/rRDysfFZRwUhqrCT9On1KAA7ftz44b9+KmaZ9R39icwQCNMSaped79AGA2Li88H7galx/OT+VivpJSVZ7DJYUzvBcJJ6NvAQeopjT6/hxgvKreq6ofq+oZwCLgtFgHi8gBwC+Ag1X1RVX9SlVnqOr0iMPOAl5V1b961/wrbp7Vs1KIK+/U1DUA0Lu7VUqDZvLkyUyenFJXm/wWXk40VlL64x/D4MEuKf3gA6ishHQk5JFJaSEKJ6X19evvi9N8DyAiXHTQVixeVc8Dr6f0994YY9LtRVxr+VbAjbQWMMOVgqtSuZjfSimqvKzK7kAPYGOghyp7qPqfg0pEugK7AFETFzIN2CPOaYcD7wDniMh3IvK5iNwqIpHLt+we45pTE1yzIKyoc816vaxSGjg33XQTN910U67DSJ9p09zgoy23XH+fiJsa6pVX4N13XZU0HZXNbbd1S3VuvXXHr5ULiSqlCZrvAYZuVsl+W/fjzle/ZPmaOIOljDEm01QvR3VrVJ9F9WVgb1xr+E3Az1GdlMrlfCelACKUANsBO6hSl8q5nipcx9clUduX4KacimUzYE9gR2AEcDquajs+4pj+qVxTRE4RkZkiMrOpqSmV+LMqXCntU2ZJadA8+eSTPPnkk7kOIz2amuDll12VNF6yecABbsqoWbPS058UXEL61ltwXoFO/lFa6u7jJaVxKqVhFxy0JbUNTdz2yhcZCM4YY9rlbVTPRvU8VFOeLtR3UirCb4AFwJt4Q/xFeFmEeSLEaLNLm064rgJHe832U3GJ6QgR6deeC6rqPaq6q6ruWtKRuRIzrMarlFrzffBUVVVRFZ5gvtBFLi0aT3jJUUhPf9KwHXeEnj3Td71samef0rAfb1DByN0GMeGtr/mqujYDARpjjA8i2yDyJCIrgXpEViDyBCLbpHopX0mpCHsB/6B1cFO4HPJv3HRRv4595nqqcVMGRCeT/YDFcc5ZBCxQ1ZUR2z727sODoxaneM2CsMKrlFrzffA8/fTTPB2eY7NQqMKcOfDvf7e93Xtv69Ki8fTpA7vu6h6nMyktZMma75MkpQBn77c5XTp34oZpn6Y5OGOM8UHkJ7jxRkcAFbj8sAdwJDADkd1SuZzfMuGFuAT2E1xn1rB/4zq27h7rpGiq2iAis4D9gScidu0PPBXntNeB34hIuaqu8bZt4d1/7d2/6V3jhqhrvuEnrnxVU+v1Ke1mldKgufXWWwE48sgjcxyJD199BY8+ChMmwCefxD5mjz3cAKZEfvlLN9Bp223THmJB6kCf0rANepTy+59vxq0vf87Je9aw06DeaQ7SGGMSuhko8x43AsuBStz8pWXe/oTTfkbym5T+FNeEfijwecT2yKkA/LoZeERE3sYlnKcCGwF3AYjIwwCqepx3/GO4Oa8eFJErgF64TrRPqmp4WZNbgP+IyAXAP3EZ+z64vqgFq6augYrSEko6p9T11xSAZ599NtchxKcK8+bB1KkwcSL8979u+157wdlnw5Ah6/cd9bOO/V/+Akcf7eYVNR1uvg875eeb8diMr7li8kccMzTRzHrZNahPd4ZuluQ/KsaYQrcLLj+8DbgQ1bXe5PnX47pa7pLKxfwmpeEs+Juo7b28e9+LsqvqJBGpxC1duiEwFzfdU7jqOSjq+DUish/uB34HN1HrP4ELIo55Q0SOAq7BTT/wJTBSVWf4jSsf1dQ12BylAdUz3/pBVle7wUovveRuX33ltm+1Ffz1ry6ZHDy4Y68RChXu9E2ZkIbme4DyUAnnD9+Kvzz1Pud9uyKNAXZMl87CJ1cfZKvRGRNsNbjukpeiuhbAS0wvwSWly1O5mN+kdAFuKdHoZvpzvfuUlhZR1XHAuDj7hsXY9ikkHkylqk8CARnO7NTUNdogp4CaNMnNkjFy5MjMvUhLi1vSc0CShozFi2GbbaCmxg0a2mcfOPdc2G8/2GKLwpyYvhCkKSkF+M2uG7P3ln1Z19iSpuA65omZ33LrK1+wZl0TPa37kTFB9jBwHq5r5zsR28PzAz6QysX8JqVTgT/gKpQAiPAJsDmubDs1lRc1/qywSmlg3XnnnUAGk9KFC+G44+DVV2H27NaJ5mN56imXkD73HBx4IOTxjBSBkoY+pZE2qChNQ1DpMaC3azyzpNSYwPsSVw2djMi9uBb1QcDJuILm14gc98PRqg8nupjfb59rcCPsK3FJKLiEVLxgrvMfv/Grpq6BzarKkh9oCs7zzz+fuYtPngwnnABr17ppmCZMSJyUPv64q5QeckjmYjLri5eUqqbUpzQflYdcIrqmPn/ngTbGpMXdtOaFsZacvzfiseIqq3H5XWZ0AfAz3KpJ4SWkWrzne3n7TZqtqG206aACqnv37nTv3j29F62vhzPOgMMOc6srzZ4NBx8M//gHNMdZI33RIjeQ6Te/SW8sJrl4SWlzs0tMCzkpLXX1jjXrGnMciTEmCySFW0K+2+lU+QwYLkIp0Af4XpUYizabdGhsbmH1uiZrvg+oCRMmAHDMMcek54KffuoSyw8+cCPkr7vOJT1HHw3/+pdLPIcNW/+8p592CZAlpdkXLyltcPMTp9p8n0/KQ+6rZbVVSo0JuhPSeTFfSakIPYGeQJ0q1cBCb3sV0B1YqcrKBJcwKQqve9+7rHC/mEx89913H5CmpPSVV2DECJfEvPACDB/euu/QQ90UTI8+GjspDTfd29yh2RdeZrQ+6v/24aS0gCulFT9USi0pNSbQVB9K5+X8ToD5ADAfODpq+1He9vvTGZSx1ZyC7sUXX+TFF1/s+IUeeMANThowAN5+u21CCtC9OxxxBDz55PoVOWu6z614ldJGr8m7gJPScKXU+pQaU2REOiEyEpHzEBmS6ul+k9Kh3n30qktP4/oIDMWkla17H2xdunShS0eaZ1ta4IIL4KST3Lryr78efx7Ro492a9O/8ELb7dZ0n1vJmu8LOCktC1ml1JiiIDIGkaWIXO5teQK36NEY4B1EEqw/vT6/SWlf7z56ZuaVUftNmtR4lVLrUxpM46+/nvF33dW+k+vq4Le/heuvh1NPdevPJ5qMf7/9oG9feOyxttufeMKa7nOpUyc3/VaA+5RaUmpM4O2Nm5npP4gMwK2oGR7U1JmIhY788JuUrvbuoyewDz9fg0mrcPN97zJLSgOnro7xF13E+DFj2nf+ySe7KufNN8O4ccnnFS0pgZEj3VRRq1a5bYsWwX/+Y1XSXAuFAtl837mT0L1rZ2u+Nyb4wsv0fQjs5j2eQOsAqJ1SuZjfpHQ2Lut9QIRLRBghwiW4vqQKzErlRU1y1nwfYK+9xvSWFqbvu2/q506f7qZ4uuwyN8re72pLv/udG1DzzDPuuTXd54dYSWkAmu/BVUutUmpM4IWb6b7HreqkwGRcEz5Aj1Qu5jcpDbcz9gCuBB737ntF7TdpUlPbQNeSTnTr0jnXoZh0mzLF3S9PaUlgV0E74wzXd/T881M7d+hQ2HRTNwofrOk+XwQ5KS0tYbUlpcYE3ffe/RG0tp5/BlR4j1elcjG/k+c/DdxM7ElQb1LlmVRe1CRXU9dA7+5dEFt3PHimTOFe4N4PP0ztvHHjYO5cGDsWunVL7VwRN+Dp5Zdhzhxrus8XiZLSAu5TClARKrHme2OC7z3vfiKuf+lqYC6wmbf9m1Qu5rdSiirn4kbZ/xW4z7sfqspfUnlB409NXaMNcgqi+fPhs8+YBExatMj/eUuWuCb74cPdik3t8bvfuVH7xx5rTff5IqB9SsFVSq353pjAGwPU01qs/BuqzcAvvf1vpHIx3ys6AajyDvBOKueY9llR10Av608aPFOnAvDSvvvC++/7P+/8812f0Ftv9d+PNNrWW8OQIa5Sak33+SHIzfehEqpX1+U6DGNMJqlOR2Qr3CCn+ai+6+2ZBLwIzEvlcr6TUhEqgIOBTYDS9ePiqlRe2CRWU9fI5huU5zoMk25Tprg+obvv7gYttbS4qYESeeMNeOghuPBC2Hzzjr3+737nklKrkuaHADffl4e6WKXUmGKg+i3wbdS2j9tzKb/LjO4GPI9b8z4eS0rTyFVKC7tSYqI0NLglQY8+mnGffAItLYxeuRJ6945/TnMznH46DBwIF1/c8RiOPx7efNNNum9yL8DN9xWlJayub8x1GMaYdBM5DgDVh394nIjqw34v7bdSOhY3OWrcl/T7giY5VWVFXaNNBxU0b74Jq1fD8OFMvtwtfjG6ujpxUnrfffDuuzBpEpSVdTyGvn3hqeiF2UzOlJZCbW3bbQFqvl+zrglVtQGbxgTLeKAFeNh7nCgHVO84X/wmpTt4F34Nt9RobZIgTAesXtdEU4vaQKegmTLFTWS/77680LUrHHKImxYqUZP844/DDjtYc3tQhULw/fdttwUlKS0toUVhbWMz3bumNHzBGJP/JM7jDvH7l2IF0B04UnW9pUZNmq2odU1eNtApYKZOhT32gB49oNJreEg2V+mSJbDllu0f3GTyW6D7lHpLjdY3WVJqTLCcEOdxh/n9S/Ewbv3S7YD/pTMAsz5b9z6AFi92zfDXXgvALc89B8CfkiWlS5fCXntlOjqTKwHvUwqu5WeDHMdijEkj1YdiPk4Dv0npV8BK4FkR7gc+Bdr0YFf132fAJFZj694Hz7Rp7v7AAwF4eeZMAP5UXR3/nOZmqK6GDewrPbACPiUUYBPoG2N885uU3k1rH9I/x9ifUkdWk9gKW/c+eKZOdcnlkCEA/Ov5513zbKJK6fLlbpL7fv2yFKTJumJovrdpoYwJFpFU5h5VVH/k9+BUOvpYp7Ysseb7gGlpcZXSgw5qnZNUBPr0SZyULl3q7q1SGlxBrpSGm++tUmpM0Aym7WD3cH4YPQBeYmxLyG9SmtaOrCaxmrpGRKBHt8KulBjP7NmuGd5ruge48cYbQYRzLSktbkHuUxpyf7+sUmpMIMUqVHa4eOkrKVUlrR1ZTWI1tQ307NaFzp2sOB0IU6a4yugBB/yw6c0333R9RhMlpUuWuHtLSoMrnJSqts6w0NDgHnfunNvYOihcKV1jE+gbEyyqrcsQivwI+I93uxj4DhgIXAvsA+ydyqWTrG9ocqGmrsGa7oNkyhTYZRc3cb3nqaee4qk993QV1HisUhp8oZBLSJsiqokNDa4/aYFPA1YWckm1VUqNCbRbgf7AaajOQ7UB1XnAqUBf3OJLvvlOSkU4RoTZItSK0Bx1s786abSirtHmKA2KNWvgrbfaVEl/UFmZvE9pSQn06pW5+ExuhULuPrIJv7Gx4JvuAUIlnela0onVlpQaE2ThSuhmUdt/7N3vmcrFfCWlIvwWN7p+R6Abrt9A9M2kiVVKA2T5ctdM/6O2gw/HjBnDmC++aB1hH8vSpa662skaNAIrVlLa0BCIpBSgIlRiU0IZkyMiMlpE5otIvYjMEpG4k16LyJEiMk1ElonIahGZISKH+XiZNd79C4jciMhZiNwI/Dtqvy9+v+3+6N2v9e4VCJd4VgBfp/KiJjGrlAZIeF3z7t3bbJ4zZw5zVqxwyUhdXexzly61pvugKy119/X1rdsClJSWl5ZQa5VSY7JOREYCt+D6du4EvAG8ICKD4pyyN/AKcIh3/PPAM4kSWc8juMJkFXA2cJN335d2TBfqNyndwbv4fuENqvQFLsdNon9oKi9qErNKaYCEE86ysjabJ06cyMQzz3RP4vUrtaQ0+OJVSgt8jtKw8lCJ9Sk1JjfOAcar6r2q+rGqngEsAk6LdbCq/klVx6jq26r6hapeCcwCDk/yOhfhEs9YrecPe/t985uUhr9RZ+PNOSVCZ1xG3BfX0dWkwbqmZuoamm3i/KAIV0qjklLA9SmF+P1KLSkNvgD3KQWXlNo8pcZkl4h0BXYBpkXtmgbskcKlKoCahEeoNqI6CtgaGA1cikt8t0b1BFRT+gPgd57SVUBvXPa72gv0INzSowBDU3nRfNKnTx+mT5+e6zB+0NSi/Hn7JjZaO5/p0xfkOhzTQX1mzGAHYPYnn7Aqom/oww8/TOmSJYwD3nvlFWpWrVrv3D0XLWLRunV8mUe/nya9qj7/nO2Ama+/zhpvCrBtvvuOsqYm3gnA535wVR2NzS159TfWmAAoEZGZEc/vUdV7Ip5XAZ2BJVHnLSGixTsREfkjbmqnR3xFpPopbgn6DvGblC7EJaUbAB8DPwGejdj/fUcDyZXvv/+eYcOG5TqMH3yyeBUnT/svdxy9PcN22DDX4Zh4vvwS/vY3uPXW1mpXLF7T/M577QXbb//D5vvuu48GL0ndceBAiP4drKuDtWvZeJdd2DiPfj9NmnndO3bdfnsY6v3fvlcv6Nkzr/4utddZE9/l3W9X8Npvh+U6FGOCpElVd83UxUVkBHADMFJVUxsz5JYgTWlp0Uh+m+/fxVVJh7J+3wHAJtdPl5paW/c+76nCKafAPffAxx8nPjbOQKcJEyYw4f773ZNYzffLlrl7a74PtqA335fa6HtjcqAaaAb6RW3vByxOdKKI/BpXHT1OVSe347UHe7d28VspHQ38BVitSp0IPYGRQBPwDHB9ewMwba0Ir3tfFowvpUB6/HF45RX3OJx0xhNnoBMAffq4+1gDnWzi/OIQ8CmhykNdbJ5SY7JMVRtEZBawP/BExK79gafinSciv8UVGY9X1SczG2VsfpcZrQVqI56PAcZkKqhiVlMXrpQG40spcFavhnPOgR49YNWq5ElpnIFOl112GQBX9ewZu1JqSWlxCHxS2pmGphbWNTUTKinsZVONKTA3A4+IyNvA67gVljYC7gIQkYcBVPU47/lRuArpucB/RKS/d50GVc1aF824SakI8eayikmVbzoejqnxKqU2T2meuvpqWLgQ7rwTTjvNf6U0qvn+22+/dQ+qqhInpf2iW19MoMRLSisqchNPmpWH3FdM7TpLSo3JJlWdJCKVwCXAhsBc4OCIPqLROd6puJxwLG2XBn0NGJbZaFslqpR+hTf9kw+a5FrGp5raBrp16UxpF/sDnnc++gj+/nc46ST4xS/cNj+V0lAIOrf9PB988EH3YOjQ2EmpNxKbvn07GLTJa4HvU+r+c72mvok+1iXJmKxS1XHAuDj7hiV63oEX7dAShMkSSVs+NMtq6hptkFM+UoXTT3cVrOuuc4kD+EtKo6qkbVRWtg5qirR0KZSXJz7XFL7AN9+7r5jV6xpzHIkxphAkSkptRH0OrKhroJf1J82+xkaYORNeew1WrnSV0D33bF0G8vHH4dVXYdw4V71c6U3R66f5PsYgpwsvvBCA6yorY4/gt4nzi0P49yugSWlFqfuKsRH4xhQZ13VgGdCCqu+W9LgHqnJCOuIyqampa6B3mVVKs+LLL2HiRJeIvv56a//PkhIYMwa6dYN99oEDD4Trr4edd3ZTQUFrorlmTeLXqK2NmZQuDzfZV1bG71NqSWnwFcEyo4AtNWpM8Uqpxd36geaZFXWNbNirW67DCL5p0+DXv3aj6bffHk48EfbeG37+c5dETp8OU6fClCnw/PPunKeeau0bWlLiqll+KqUxmuDvucdbfOOaa1wM0dWxpUthk006/nOa/BZOSuvrW7cFqk+pJaXGBI7IaB9HxZgHMTnfSakIWwJ/ALYEorMmVeUX7QnAtFVT12B9SjPt3nvdyPltt4Vnn4XBg9c/5pBD3A1g3jxXzdxtt7bHlJf761Maa47SsMpKd//999C/f+v2pUvXfz0TPAHvU1oR7lNqzffGBMnt+B8InxJfSakIuwDTgVijLoQMBVdsWlqUlWsbbY7STGlpgYsuck3xw4e7fqJ+pt7ZbDN3i1ZW5i8p7dVrvc3nnnsuADf+5CduQ3V1a1La0uIGP1nzffB17uxuQW2+t0qpMUGW9sHwfiulF9HOUqzxb1V9Iy2KDXTKhLVr4fjj4Ykn4NRT4bbbXBN8R/hJSuvqYMCAGOGsdQ/CldLIfqUrVkBTkyWlxSIUCuyUUN26dKaT2EAnYwKmAeiCm4h/SZxjugPnpXphv9/Ke+CqoaOBO73HOwLXAFvhlhw1HdS6mlMwqiR5QxWOOML1I73xRrcik6ThP3h+K6Uxmu/vuOMO9+C999x9ZFJqqzkVl+ikNEDN9yJCeajEKqXGBMscYDfgVVSfiHmEG32fclLqd5JTr5zDo+ENqswFTgG2AM5O9YXN+sKrOVnzfZpNnuwGLf397/DnP6cnIQWXbCYbfR9noNMPYlVKLSktLpFJqWqgKqUAFaVdrE+pMcEyA9d0PzTdF/ZbKV0LlAP13uNSb+BT+Bv5sHQHVoxW2BKj6dfUBBdeCFtsAaP9DBhMQVlZawIZT5xK6VlnnQXA2OuucxssKS1ekUlpeFGGgPQpBbxKqU2eb0yAXA08AKxIcMz3wKapXthvUroUl5T2wS0/uhXwKhD+729Lqi9s1ldT6/5w23J8afTQQ2550KeeSv8XfXk5zJ8ff79q8hWdunVzt+rq1m2WlBaXWElpgCql5aXWfG9MoKhWA9VJjlHg61Qv7Tcp/QDYDNgBeA7YGugXfmlgWqovbNZX80OlNDhfSDlVVweXXw4//anrU5puyfqUrlvnEtMYldKxY8e2PqmqWr9SKtLatG+CLTIpbXB/AwKVlIZKfmgFMsaYRPz2Kb0SOBpXJb0Gl4SGO+a9DPwp7ZEVoZq6Bjp3EnqU2poGaXHrrbBgAfztb+nrRxopWVIa3pdonlJYf1WnJUvcto7ODmAKQ9CT0tISVlul1JjgELkckfXnOox/fC9ELvdzqK9vPVXeA96L2DRchF5AkypJRnoYv2rqGunVrQuSiQSq2Cxf7pYKPfRQ2GuvzLxGsqQ0vGxpjOb7P/7xj4A3Cj86KV26FPr1W+8cE1ClpYHuU1oRKqHWklJjguRy4BxEngQmAa+j2vbLUKQM+BlwFDAC1wX0ymQX7kgppiuQZD4ck4oVdQ02yCldrr3WLd8ZHkiUCWVlLploaopd1UxQKe3WLWJRtMpKmDOn9bmte19cQqHWZUaDWCkNldg8pcYEy0fANsAo79aCyFe09jOtAgbT2hovwId+LpwwKRVhZ1yWYOFCFQAAIABJREFUWwr8U5VXRDgZuA436GmdCONUOdf/z2Liqam11ZzS4quv4PbbYdQot5RopoSTzdpa6Nlz/f3hpDRGpfTGG29sfRKrUrrTTmkM1OS1UMgtmADBTEpLS6htaKa5RencyVqBjAmAHYCTgHOBzYHOwI9wY4+g7UpPXwI3APf5uXDcpFSEPXH9RcPH/FGEG4C/4AY3CS5ZPVuEL1S5y+9PY2KrqWtgYO8EI7WNP5ddBp06wZVJWwo6przc3cdLSsPN98n6lFZVQU2NW160UyerlBabWH1KA9R8Xx5yXyG1DU30KA3Oz2VM0VJtAe4F7kVkGHAgbjJ9b61slgDvAFNRfTWVSyeqlJ6HW0Yqehu4hLQaV6IV4FiwpLSjVtQ1sv0A+6PdIS++CI884uYmHTgws68VWSmNJUHz/SmnnALAPffc4yqlLS2uWlZe7u4tKS0eAZ8SqsIbuLmm3pJSYwJHdTowPV2XSzT6fldcRXQqbnnRF3AJqAL/p8oGwO+8Y7dJV0DFaunqepaurrdKaUfU1MAJJ8DWW8Oll2b+9ZIlpQkGOlVWVlIZnvIpclWnZcvcY0tKi0fQR9+HXCJqc5UaY5JJVCmt8u5HqrJKhH8ANd62p737p3BLj1ZkKL6i8cIHi2lROHj7/skPNrH98Y9uOqV//ctNSJ9pHaiUXhc5ACuclFZXu5HYYElpMQl6UupVSm2pUWMCSOQnuCLmx6i+isj+wK3AIGAKcNx6I/MTSFQp7QKgyirvfmV4hyqN3n14RmTrvd5B/3pvIVv1r2Dzfpbft8vEifCPf7jJ8nfeOTuvGU4218SZFS3BQKc2qrz//y1fbqs5FaMi6VNqlVJjAukvwG3AFoh0wRUqtwC6AYfjpo/yLemUUCJc5mebab/vauqY9XUN5x24Za5DKUwLFsBpp7mVmy64IHuv67f5Pkal9IQTTgDgwQcfbNt838n7f6IlpcWjiPqUGmMCJzxVzCvALrhW9kXAQu/5r3CJqy9+5imNzHI1xjbTQc+9vwiAQ3fYKMeRFCBVOPFEV2F6+OHsroIUOfo+lgSV0o033rj1SWRSqt4/MUtKi0fQm+9/qJQ25jgSY0wGhFd6+RbY23s8Bngcl5xuksrFkn2DW7N8Fkx+byE7btyLQZU2yCll48bBtGnufvPNs/vafiqlXbrEbIq96qqrWp/06OGS6epqaG52SUqFdeMoGqGQm32hqSmYSan1KTUmyMLFyu7Adt7zD2kdg9ScysUSJaUZnuTRAHy5bA0fLlzFpb+0CQxS9s47cN55cOCBcOqp2X99PwOdks1RCiACffq4Sum6da5KakvNFo/w4LZ16wK5zGhZV+tTakyALcBNoD+Z1pmYPgTCTb/VsU6KJ25SqmpJaTZMfm8hInDI9hvmOpTC8uWXcMghbo34hx7KTRLnJymNM8jpmGOOAWDChAluQ1WVS0rr6qzpvtiEQu5+3bpAVko7dxLKuna2PqXGBNMzwPnAT3Gt62+jugSR33r730/lYlnsgGeiqSqT31vITwb3oX/P0lyHUziWLYPhw12T55QpLjHNhc6dXUIRb/R9XV3cSumWW0YNagsvNbp6tSWlxSbgSSm4JnyrlBoTSFcCPYC9gPnAOd72QbhVQSemcjFLSnPoo0Wr+HJZLSfuuWmuQykctbXwy1/Cd9/BK69AdHKXbWVl7Wq+vzR6cv/KSlf9XbECttsuzUGavBZOSuvrAzklFEBZqITVlpQaEzyq9cAfY2y/Ebgx1ctZUppDk99bREkn4aDtrOnel6YmOOoomDkTnnoKdt891xG5EfiJBjolm6M0rLISZsyA77/PXeXX5EZkpTSAU0IBVIRKrPnemCAT2R7YDzclVDXwIqpzU72MJaU5Em6633PzKvqUBesLKCNU3YpNzz0Hd9wBhx+e64icZJXSOKPojzrqKAAmTvRaNqqqYPFi93Na831xseZ7Y0yhEikB7gOOjbHvYeBkVH2PwE+0olPGiMhoEZkvIvUiMktE9kpw7DAR0Ri3rSKOGRXnmLztqDn7mxUsWLHW5ib1a9o0uOceOP98GD0619G0SpaUxqmUDhkyhCFDhrRuqKy0OUqLVaykNGDN9+VWKTUmqK4BjsMNcoq+Heft9y3rlVIRGQncAowG/ufdvyAi26jqNwlO3Rb4PuL5sqj9dcCPIjeo6+uQlya/t5CuJZ04YFtrqvXl9ttds3bk/J75IFFSmmCg0wXRK0+FJ9AHS0qLTXTzfadObhBdgJSHulil1JhgOg43N+kyXMX0G9wgp5OBDYBRwIV+L5aL5vtzgPGqeq/3/AwRGQ6cRuLAl6pqovmuVFUXpyvITGpuUf79wSL23XIDKkqDVRHJiPnz4d//hosvzr9mzbIy1+wei995SsGS0mIWXSnNt9/xNKgoLWF1va3oZEwA9fTuD0F11g9bRZ4FZuBG5vuW1eZ7EemKWwt1WtSuacAeSU6fKSKLRORlEdknxv5uIvK1iHwnIs+JyE4xjskLr39RzbLV6zhsiDXd+3LXXa569Ic/5DqS9SWrlMZpvh8xYgQjRoxo3VBV1frYktLiUgRJaXnI9SnVcBcVY0xQzPTuP4/a/ql3/3YqF8t2n9IqoDOwJGr7EqB/nHMW4aqoI4AjcT/oy1H9UD8FTgR+BfwfUA+8LiIx150UkVNEZKaIzGxqyn6T0jPvLqCitIR9t7LkI6m1a+G+++BXv4KBA3Mdzfrijb5XTVgp3X333dk9cvaAyEpp375pDtLkteikNGD9ScENdGpRWNuY0oqDxpj8dzawBriG8Dged381sIrWeUt9yfvR96r6Ka0ZN8CbIjIYOA/4r3fMm8Cb4QNE5A1gDnAGcGaMa94D3ANQVlaW1f+6165rYsrcxRy+0wBKuwSr31hGTJrkpkk6/fRcRxJbvEppQ4Nbxz5OpfTcc89tuyGclPbqFchKmUkguk9pAD//8lDrUqPdu+b9144xJhGRedFbcHOVnoLIcqAS6ALUAk8SNd4nkWz/dagGmoHo0T39gFT6g84Ajoq3U1WbRWQmbj3WvDJl7mLWNjZz5M4Dch1KZq1e7RKzyApge9xxB2yzDQwblpaw0i5eUlpX17rfj9693b013RefUm+SkAA331eUeklpfRMbxJ4lzRhTOAbjBjeF1/cOP+4KbBixrRzw+SXoZLX5XlUbgFnA/lG79gfeSOFSQ3DN+jGJiAA7JDomV555dwEb9+nGrpv0znUombNsGey6KwwaBGPGuC/b9nj7bTdR/ujRuVnb3o+yMpdINEYN4ggnqnGS0sMOO4zDDjusdUNJiauSWlJafIqkTylgI/CNCYZvvNvX3i3ycfS2RLMqrScX7Sg3A4+IyNvA68CpwEbAXQDiJltFVY/znp8FfAV8iMvCjwEOx/UxxTvmcuAtXEfbHrgm+x1wfVHzxqKVa3n9y2rO2HdzJF+TrI5aswYOOQS++cZVNy+8EB58EG69FQ48MLVr3XGH67N57Ppz8uaNcNJZW+uSyrBwpTRO8/0vfvGL9TduuCFsZIPfik4x9CkNtVZKjTEFTnVwpi6d9aRUVSeJSCVwCa7MOxc4WFW/9g4ZFHVKV+AGYCCwFpecHqKqz0cc0wvXR7Q/sBJ4F/i5qqY06ivTnp2zEFU4YqeANt03NMCIETB7NjzzDBx6KEyZAmeeCcOHu1WYLr7YJZqRevZ0CVmkZctcf9KTT4YeKc0okV3xktIkldI//elP62987DH3XpjiUgx9Sr3m+9VWKTXGJJCTHueqOg4YF2ffsKjnfwP+luR6Z+NGgOUtVeXp2d+x86BebFqVUheLwtDSAqNGuZWX7r/fJaTgktEPPoC//x2uvhr++c/Y5x9wgGumP+QQ15R9//3uSzqfVm+KJZxgR/crDT+PUymNKXKFJ1M8wklpfX1gm+8rQq76a5VSYwLILTV6MLAl0G29/aq+V72xYZBZ8uHCVXy2ZA1XH75drkNJP1U45xz4xz/guuvgxBPb7g+F4IILXDP8//7Xupxm2Kefwr33ukrqxhvDKae4aaD22ccNcspnkZXSSEkGOh100EEAvPDCC5mKzBSKkhI3D2+Q+5SWWp9SYwJJZANgOi4hjceS0nzzzLsL6NJZOHSHDZMfXGhuugluuQXOOsutTR/PgAEwcmTsfRdfDJMnw513wqWXtl4338VLSpM03x8ariQbA+4/buHm+wD2KS0LuenvLCk1JnCuBLZKsD+laTctKc2CpuYWnp2zkH232oBe3QNWBVm1Ci6/HA47zCWR7R3AVVICRxzhbp99BjNmuMf5LlmlNE7z/eh875ZgsiuclDY0pNblo0CESjrTtaQTq6353pigOQCXeI4HTvAe/wk3T7wCY1K5mCWlWfDfL6qpXrOOI3bKwxWJOmrSJJeAXXSRa4JMhy22cLdCEE5K16xpuz1JpdSYNiKT0gA23wNUhEpYs64x+YHGmEISHrl9AS4pBdXbEXkV+AA3SN23bC8zWpSenr2AXt27sM9WAVw+8r77YLvt4Cc/yXUkuZGs+T5O1Wu//fZjv/32y2BgpqBEJqUBbL4H16/UBjoZEzjhtYOXA+5/nSJ9cXOUApySysWsUpphq+sbmfbhYn6z60BCJQFbVvT9990E92PH5u/k9pkWb/R9koFOI+P1rTXFKbJPaUArpeWhEutTakzwLMdVS3viVuYcCDwK1Hv7U1opyJLSDPt6eR2VZV05cucANt3ff7/7Aj3mmFxHkjuJKqUlJXETjN///vcZDswUlCJovi8PlVifUmOC51NcUvoj4D/A74Dw6jAKzE7lYpaUZth2A3ryv/P3DV4hsb4eHnkEjjyy4+vbF7Jw83ysSmkAB6yYDCktDXxSWlFawqKV9ckPNMYUknuBL4BS3Ej8A4BwX8VlwFmpXMz6lGZBp04SvGVFn34aamqg2Ct+nTu7hCJWpTTBIKdhw4YxbNiwzMZmCkfAp4QCa743JttEZLSIzBeRehGZJSJ7JTh2QxF5TEQ+EZFmERnv60VUH0f1NFT/h+oXwObAEcChwJaovptKzFYpNbBkCVx1lZu0fscd/Z1z332w2WZufftiV1YWe/R9gqR01KhRmY3JFJZiaL63gU7GZI2IjARuAUYD//PuXxCRbVT1mxinhIBq3BROKQ1OakN1FfBse0+3SmmxW7ECDjwQxo2D3XeHCROSn/PFF/Dqq3DSSembBqqQlZWl3Hw/atQoS0xNq2JISkNdWG2VUmOy5RxgvKreq6ofq+oZwCLgtFgHq+pXqnqmqo4Hvs9inG1YRlHM6urgl7+Ejz5yyehPfuKWAj3jDPflGM8DD7hk1JIqp7w85eb7xsZGGhttzkbjCYVcP+0AJ6UVpSU0NLWwrqk5+cHGmHYTka7ALsC0qF3TgD2yH5F/Rd9836dPH6ZPn57rMLJOmprY7pJL6PP223x06aUsGzAAufRSNttgAza+/XZWvvoqH15xBQ1VVeud99O772b1T3/K3M8+c6svFbmdW1po/PZbPoj4Pdpp0SJaQiHei/O7ddZZru/32LFjsxChyXfbrFxJeU0N3Zubmb9gAV8H8G9S/7oG/rx9E/964aV29bEXgZ7dulDSKWD9841JXYmIzIx4fo+q3hPxvAroDCyJOm8JkNcTZBd9Uvr9998X34CTlhZXEZ0xA+6+m21Pieg+8otfwKRJ9DzpJPY4/XQYPRr23BOGDnWVv2efhe+/J3T++cX3vsXTvz80N7d9P0pKYODAuO/RueeeC2DvoXEefBA+/hiATbfYgk0D+Hvx38+Xce4Db6Pa/ib8M38xmHP2LZDV3ozJnCZV3TXXQWRC0SelRUcVzjwTHnsMrrvODW6KNnKkW6XppJPgiivcOZ07w047ubXuN9wQDj4466HnrbIyWLSo7bYkzffHFPPcrmZ9oRCsXu0eB7T5fq/N+/LhlQfS1KLtOn/fG19j2WqbUsoYH6pxKy31i9reDzfBfd6ypLSYNDfDn/4Ed9wB550H558f/9htt4W33nIDod58E15/Hf73P/jwQ7jsMlcJNE6s0fdJBjrVeSs+dbe5TA24pDTcLzmgU0IBdO/a/r8bVeVdWbY6QV93YwwAqtogIrOA/YEnInbtDzyVm6j8scyiWKxb51ZeevJJOPdcuP56f0uD9uoFBx3kbuCqpkGbc7WjYo2+T1IpPdirNBdjf2YTQyjU+jigldKOqioPsbx2Xa7DMKZQ3Aw8IiJvA68DpwIbAXcBiMjDAKp6XPgEERniPewBtHjPG1T1o2wFbUlpMVi5Eo44wk3jdNNNcM457b+WJaTrizX6Pkml9LTTYs7KYYqVJaVJVZV35etvapMfaIxBVSeJSCVwCbAhMBc4WFW/9g4ZFOO06InuDwW+BgZnKs5olpQG3eLFrso5d66b9ul3v8t1RMETXSltbHS3BJXSkSNHZiEwUzBKS1sfW1IaU2V5iOVrrPneGL9UdRwwLs6+YTG25bzqZElpkKi6PqBff916GzsWli6F555zk+Sb9Csra01Eu3RpTVATJKUrV64EoGfPntmI0OS7yEppgPuUdkRVeYi6hmbqGpo61DfVGJO/7F92UIwf7wYxrVrVdvuAAa7ZfrfdchJWUQgnn7W1rg+uN4gpUfP9r371K8D6lBqPNd8nVVnu3pflaxro3se+uowJIvuXHRRPPAEVFW5k/CabwODB7r6qyvqBZlo4KV2zxiWlPiqlZ555ZhYCMwXDktKk+pa792jZmnVs3MdmrTAmiCwpDQJVmDXL9R39859zHU3xiayUgq9K6ZFHHpnhoExBsaQ0qchKqTEmmDrlOgCTBosWwZIlsPPOuY6kOJWXu/twUuqjUlpdXU11dXWGAzMFw/qUJlXlVUqr19i0UMYElVVKg2D2bHdvSWluRFdKfSSlv/71rwHrU2o8VilNqrVSakmpMUFlSWkQzJrl+o0OGZL8WJN+7Wi+/7N1szCRLClNKlTSmYrSEqqt+d6YwLKkNAhmz4attkpYmTMZFDnQCXxVSg899NAMB2UKijXf+9K3PMQyq5QaE1jWpzQIZs2ypvtcakeldPHixSxevDjDgZmCYZVSXyrLu1rzvTEBZpXSQrdkCSxYALvskutIilc7+pQeddRRgPUpNR5LSn2pKg/x+dI1uQ7DGJMhlpQWune9pWqtUpo77Rh9f8EFF2Q4KFNQLCn1pbK8K2/Ns0qpMUFlSWmhmzXL3dsgp9wJN9NHNt936pQwuRg+fHgWAjMFo7S09bH1KY2rqjxETV0jjc0tdOlsvc+MCRr7V13oZs+GzTcHW0M9dzp1gm7d2lZKy8oSrqT17bff8u2332YpQJP3rFLqS6U3V2lNrY3ANyaIrFJa6GbPhqFDcx2FKStrHX1fV5dwkBPAscceC1ifUuOxpNSXvt5cpcvWrGODHqVJjjbGFBpLSgvZ8uXw1Vdw2mm5jsSUla1fKU3gkksuyUJQpmBYUupLuFJqS40aE0yWlBay8CAnG3mfeykmpfvtt18WgjIFw+Yp9cWWGjUm2KxPaSELLy+60065jcO4EfiRA52SNN/PmzePefPmZSEwUxDCSWlJScK+yMWudalRq5QaE0RWKS1ks2bB4MHQp0+uIzEpVkpPPPFEwPqUGk84GbWm+4QqQiV0LelklVJjAsqS0kI2e7bNT5ovysrcIgbgKqW9eyc8/Morr8xCUKZgiLhqqTXdJyQiVJV1pdoqpcYEkiWlhWrlSvjiCzjhhFxHYqDt6HsfldK99947C0GZghIKWaXUh6qKkFVKjQko61NaqGwlp/ySYvP9p59+yqeffpqFwEzBsKTUl6ryEMtrLSk1JoisUlqowoOcLCnND5FJqY+BTn/4wx8A61NqIoRCrm+pSaiyrCsfLVyV6zCMMRlgfwEL1axZMHAgbLBBriMx0Hb0vY9K6bXXXpuFoExBKS21kfc+VFW4SqmqIvZ+GRMolpTmM1U44wxXPRkzpu362DbIKb+UlUFTE6xdCw0NSSule+yxR5YCMwUjcq5SE1dlWVcam5VVa5vo2d0GhhkTJNanNJ/ddRfccQfccgvstRd8843bvmYNfPqpJaX5JFwZXbq07fM45s6dy9y5czMclCko1qfUl74VLnlfZoOdjAkcS0rz1ccfwznnwIEHwtNPw2efuST0pZdgzhxXRbWVnPJHiknp6aefzumnn57hoExBsaTUl8qy8FKjlpQaEzTWfJ+P1q2D//s/qKiA8eOhf3/Ydls48kiXpA4d6o6zSmn+iE5KkzTf33DDDRkOyBScfv1cFxCTUFWFS9xtrlJjgseS0nx00UXw3nswebJLSAG22AJmzICTT4aJE90X2IYb5jZO0yqclC5b1vZ5HLvttluGAzIF5/77XQuISeiHSqlNC2VM4FhSmm9efBFuvhlGj4Zf/rLtvrIyeOwx2H9/G6mbb8rL3b3PSumcOXMAGDJkSCajMoUkySpgxulT1hURqF5tSakxQWNJaT6probjj4dttoEbb4x9jAh466abPJJin9KzzjoLsHlKjUlV505Cn+5dqa615ntjgsaS0nyxdCkceywsXw4vvADduuU6IpOKFJPSsWPHZjggY4KrqjxklVJjAsiS0lxbtw5uuw2uvtqtBHTHHbDjjrmOyqQqxYFO1mxvTPtVlndluVVKjQkcmxIqV1Thn/90o+rPOw9+/nOYOxdOOSXXkZn2SHGg0zvvvMM777yT4aCMCaaq8hDVNiWUMYFjldJceO89OPtsePVVl5ROnQoHHJDrqExHpDjQ6bzzzgOsT6kx7VFZ3pXlNiWUMYFjSWk2LVkCl14K990Hffq4pvpTTnHLiJrCFu4D7LNP6e23357hgIwJrqryEGvWNVHf2Expl865DscYkyaWDWXDunVuqdBrrnFro599tktOe/XKdWQmXTp1ctXRujo3Q0JpacLDt9tuuywFZkzw9C13c5VWr1nHwN6JWyWMMYXDktJMmzMHRoyAefPg0EPdVE9bbJHrqEwmlJW5pLR796RzyL7xxhsA7LHHHtmIzJhAqSxvXdXJklJjgsOS0kzbZBPYeGO4807rNxp0ZWVuoFOSpnuAiy66CLA+pca0R1W4UmrTQhkTKJaUZlrv3mCJR3EIJ6NJBjkB3H333RkOxpjgCldKbalRY4LFklJj0iU8At9HpXTLLbfMcDDGBNcPlVIbgW9MoNg8pcakSzgZ9ZGUvvbaa7z22msZDsiYYCrt0pnyUInNVWpMwFil1Jh0SaH5/vLLLwesT6kx7VVV3tUqpcYEjCWlxqRLCpXSBx54IMPBGBNsleUhllul1JhAsaTUmHRJoVK62WabZTgYY4Ktqrwr86trcx2GMSaNrE+pMemSQqX0pZde4qWXXspwQMYEl6uUWvO9MUFilVJj0iWF0ffXXHMNAPvtt18mIzImsKrKQ3xf10BTcwslna2+YkwQWFJqTLqk0Hz/yCOPZDgYY4KtqrwrqlBT10jfilCuwzHGpIElpcakSwrN9xtvvHGGgzEm2FrnKl1nSakxAZGTNg8RGS0i80WkXkRmicheCY4dJiIa47ZV1HEjROQjEVnn3R+R+Z/EmAgpVEqnTJnClClTMhyQMcEVTkqtX6kxwZH1pFRERgK3ANcCOwFvAC+IyKAkp24LbBhx+zzimrsDk4BHgSHe/RMiMjTtP4Ax8aRQKR0zZgxjxozJcEDGBFd4qVGbQN+Y2FIpAHrH7+0dVy8i80Tk1GzFGpaL5vtzgPGqeq/3/AwRGQ6cBlyY4LylqlodZ99ZwKuq+lfv+V9FZB9v+/+lI2hjkkohKZ04cWKGgzEm2CKb740xbUUUAEcD//PuXxCRbVT1mxjHbwo8DzwAHAPsCYwTkWWq+lS24s5qUioiXYFdgBujdk0D9khy+kwRCQEfAdeo6qsR+3YHbos6fipwegfCNSY14dH3Pprv+/fvn+FgjAm2HqUldO3cibkLVvLWvOW5DscYAPr1KGXTquSFiSxItQB4KrBQVc/wnn/stTafCwQzKQWqgM7AkqjtS4B4c+Mswr2J7wBdgWOBl0Vkb1X9r3dM/zjXtG9+kz0bbdT2PoHJkycDcOihh2YyImMCS0QY0Lsb/5yzkH/OWZjrcIwB4JifDuKaw7fPaQztLADu7u2PNBU4XkS6qGpjeqOMLe9H36vqp8CnEZveFJHBwHnAf2Odk4yInAKcAjBgwABbf9ykTemjj1Lf2AhJfqcuvfRSACoqKrIQlTHBdNFOSkOTjbw3+aOk87Js5BQlIjIz4vk9qnpPxPP2FAD7A9EruizB5YlVuAJhxmU7Ka0GmoF+Udv7AYtTuM4M4KiI54tTuab34d0DUFZWpsOGDUvhpY3puPBqTlVVVTmOxBhjTIFpUtVdcx1EJmR19L2qNgCzgP2jdu2PG4Xv1xDaZu1vpuGaxmRNVVWVJaTGGGMyoT0FwHjFvSbvelmRi+b7m4FHRORt4HVc59qNgLsARORhAFU9znt+FvAV8CGuT+kxwOHAiIhr3gL8R0QuAP4JHAHsgxs9ZkzeefrppwE48sgjcxyJMcaYIFHVBhEJFwCfiNi1P/EHLb2Jy50i7Q/MzFZ/UshBUqqqk0SkErgEN9/oXOBgVf3aOyR6vtKuwA3AQGAtLjk9RFWfj7jmGyJyFHANcBXwJTBSVWdk9Icxpp1uvfVWwJJSY4wxGZFSAdDbfrqIjAXuBn4GjCLL02qKqmbz9fJOWVmZ1tbW5joMU2RWrlwJQM+ePXMciTHGmEIiInWqmnTeKREZDfyF1gLg2ar6H2/fdABVHRZx/N7A33GLFS0ErlfVu9Idf8KYLSm1pNQYY4wxhcFvUlqIsr7MqDEGJk2axKRJk3IdhjHGGJM3rFJqlVKTA+FpyGyOXGOMMakIcqXUklJLSk0O1NXVAdDdx5KkxhhjTFiQk9K8X9HJmCCyZNQYY4xpy/qUGpMDEyZMYMKAqKr3AAAPEElEQVSECbkOwxhjjMkb1nxvzfcmB6xPqTHGmPYIcvO9JaWWlJocaGx0C2R06dIlx5EYY4wpJEFOSq1PqTE5YMmoMcYY05b1KTUmB8aPH8/48eNzHYYxxhiTN6z53prvTQ5Yn1JjjDHtEeTm+6JPSkWkBVibxkuWAE1pvJ5JL/t88pd9NvnNPp/8ZZ9Nfkv359NNVQPZ0l30SWm6ichMVd0113GY2OzzyV/22eQ3+3zyl302+c0+H/8CmWkbY4wxxpjCYkmpMcYYY4zJOUtK0++eXAdgErLPJ3/ZZ5Pf7PPJX/bZ5Df7fHyyPqXGGGOMMSbnrFJqjDHGGGNyzpJSY4wxxhiTc5aUpkhERovIfBGpF5FZIrJXkuP39o6rF5F5InJqtmItRql8PiJypIhME5FlIrJaRGaIyGHZjLeYpPpvJ+K8PUWkSUTmZjrGYtaOv21dReQq75x1IvKNiJyZrXiLSTs+m6NFZI6I1InIYhGZICL9sxVvMRGRn4vIv0RkgYioiIzycc72IvKaiKz1zrtMRCQL4eY9S0pTICIjgVuAa4GdgDeAF0RkUJzjNwWe947bCbgOuE1ERmQn4uKS6ucD7A28AhziHf888IzfZMn4147PJnxeb+Bh4OWMB1nE2vn5TASGA6cAWwK/Ad7PcKhFpx3fOz8DHgEeArYFDge2AR7NSsDFpxyYC/wJHwvxiEgP4EVgCbCbd955wDkZjLFg2ECnFIjIDOB9Vf19xLbPgSdV9cIYx18PHKmqm0dsuw/YVlV3z0bMxSTVzyfONd4G/quqf85QmEWpvZ+NiDwNvAcI8GtV3S7jwRahdvxtOwB4AviRqlZnL9Li047P5lzgDFXdJGLbCcBtqlqejZiLlYisAU5X1fEJjjkNuB7op6prvW2XAKcBA7XIkzKrlPokIl2BXYBpUbumAXvEOW33GMdPBXYVkS7pjbC4tfPziaUCqElXXKb9n42IjAb6AddkLjrTzs/ncOAd4BwR+U5EPheRW0XEkp40audn8zqwoYgcKk4VcBSuJcjk3u64wkdkVXUqsBEwOCcR5RFLSv2rAjrjSu6RlgDx+ur0j3N8iXc9kz7t+XzaEJE/AgNxTV8mfVL+bERke+By4BhVbc5seEWvPf92NgP2BHYERgCn45ryx2cmxKKV8mejqm/iktBHgQZgGa6l4fjMhWlSEC8vCO8rapaUGgN4/XxvAI5W1a9zHU8xE5EQMAk4V1Xn5zoeE1MnQHH/Xmao6lRcYjpCRPrlNrTiJiLbALcBV+OqrMNxyc7duYzLGD9Kch1AAakGmnHNiZH6AYvjnLM4zvFN3vVM+rTn8wFARH6NG0xznKpOzkx4RS3Vz2ZDYGvgQRF50NvWCRARaQIOVtXo5kzTfu35t7MIWKCqKyO2fezdD2L9SpBpn/Z8NhcCb6vqDd7z90WkFviviFykqt9lJlTjU7y8ILyvqFml1CdVbQBmAftH7dofNxoyljfjHD9TVRvTG2Fxa+fng4j8FtdcP0pVn8xchMWrHZ/NAmB7YEjE7S7gC+9x3M/TpK6d/3ZeBzaK6kO6hXdvLQ1p0s7PpjsukY0Ufm7f+bn3JrCXiJRGbNsfWAh8lZOI8omq2s3nDRiJ66NzMq6ScwuwBtjE2/8w8HDE8ZsCtcBY7/iTvfNH5PpnCeKtHZ/PUUAjbkqO/hG3Prn+WYJ2S/WziXH+FcDcXP8cQb21499OOfAtbgT+tsDPcNPiPJHrnyVot3Z8NqO8v2un4fr+/gw3KG1Wrn+WIN68fwvh/zzXAZd5jwd5+68DXo44vieuIjoR2A44ElgF/DnXP0s+3Kz5PgWqOklEKoFLcE2Mc3FNieHKwKCo4+eLyMHA33F/IBYCZ6rqU1kMu2ik+vkAp+K6sIz1bmGvAcMyG21xacdnY7KoHX/b1ojIfri+i+/gZqz4J3BB9qIuDu34bMaLSAWuj+9NwErcfMznZy/qorIr8GrE8yu920O4/yBsCPwovFNVV4rI/sAdwEzcv52bgJuzFG9es3lKjTHGGGNMzln/EmOMMcYYk3OWlBpjjDHGmJyzpNQYY4wxxuScJaXGGGOMMSbnLCk1xhhjjDE5Z0mpMcYYY4zJOUtKjclzIrK5iNwuIh+LyBoRWS0in4jIvSLy04jjvhIRFZGvchhuOJbxXiwqIoMjtvcTkUdFZJGINHv7x4rI4Ijjx2cwrl4icoV3O9xv3NkiIsMiXj/Z7QrvnPDz6dmON5lMfq6pfFZR72ta4zDGpI9Nnm9MHhORE4A7gVDUri29W19gveQqj92CW6EmV3oBl3uPH8JN+G6MMSYPWFJqTJ4SkX2B+3AtGgr8FbgbWApsAvya1vXG84qqjsKtZhJtF+9+BbCpqq6I2CcZDiupBHFn6/WnE/E+iMgo4EHv6UNefGknIqWqWp+JaxtjjF/WfG9M/rqO1n+jt6rqpar6nao2qOrnqnod8PtEFxCRISLytIh8ISKrRKRRRBZ723aNOnZTEXlYRL4RkXoRWSEic71m0g0ijvu9iMwUke9FZJ2ILBCRF0Xk+Ihj2jSthptPgR97h/QCarz9oxI184rIziLyD+91GkSkWkReFZGfePvLReQhEflARJZ7P+MKEfmPiIyMuM4VwPyISx8f/ZoJuh2UiciVIvKhiKwVkToReVdEzhGRkojj2vwcInKc9x6uFdf94ngySET2FZG3vNf7UkT+IiKRSe4VEfEdISL3i0g1sDbimK1F5JGI93upiDwpIjtEvZav35eoc34rIu8nej9EZC8R+ZeILIv4fZ0Y/foJ3oONvHjXeL8PdwIVcY5N+WcwxmSQqtrNbnbLsxuwAa46Gr4N8HHOV96xX0VsOyrqOpG3WmDriGM/THDsdt4xv0lwzJMR1xofsX0wMCzBeaO8Y8LPx0dc5wigMd553jH9E1xbgeO8465IcMz4WHF728qAWQnOfR7o5B0b+XPUxDl+zxR+D0bFel+ijgnvr47zXh0TcewVUcf/cJy3f0+gLk7ca4G9Uvx9iXw/Fid7P4BjgOY4x9UDw+L9jnnbugEfxzh3Yaz30c/PYDe72S17N6uUGpOfBkc8XqWqC9p5ndnAgcCGuH6pPYDTvH3dgT8AiEglsI23/VZcItYH2A24FFjp7fu5d78G16c1hOtK8FtgSrwgVHW6qgrwtbfpa1UV7zY+1jki0g24l9ZuRpcB/YAqXHI8z9u+GtdPdbD3M5UCe+CSK4BzvBiuADaNeImHImIYFS924CxgZ+/xVNx7uRnuvQU4CJf8R+sFjAZ6AtdHbD82wWt1RCXwN6A3cLqP1xNgOO49297bdi8usfsa19UiBOwELMO9r3dASr8vkfqR4P0QkTLgNlzrQBPuPyQ9gFO940K47iuJHAds5T1+CxiIq86viD6wnT+DMSaDrE+pMcG2GDgJGItL2rpF7d/Su6/BfXH3wiVZq3EVp/dU9ZqI4+d792XAJbgK4sfANFVN95f4z3CJFsB0Vb06Yt+TEY/rcInqJGBrXFNtZP/ULemYQyIeX6iqiwFE5CpaB0odDDwWdd4sVb3TO3YCcL63fZMOxhPPEuAyVW0WkYeA25O83k2qOtV7PFdENqc1odsE99lG215E+uP6Nfv5fYmU7P34mXc9gOdVNfze3i0ipwJDgC1E5Meq+kWc19g34vF14f/MichNuP7Zkfz+zhtjssQqpcbkp68iHvcQkY3aeZ3Hgb/gkrXohJTwNlVtwVWsvgM2By4GJgAfeH01N/aOHwc8AYSPH4urHi4RkQvaGWM8/SIef5TguPNxFbyhuMpa9ICp0g7G0Tfi8TcRj7+OeByr/+GnEY9r0xhPPF+qanMKr/du1HO/fSgrU/h9iZTs/Yj3PkPy9/qH2CIefxfnMZDS77wxJkssKTUmD6nqUuDtiE3nxToucpBNjH29cU334Kpo2wKdgZgDRlT1OWAQrrJ4GHAVrn/fdriqKKpar6q/xTVz7gmcCMzANa1eKyID/P2EviyJeLx1guMim84PB0JeV4HlMY7VdsSxNOLxoDiPI48Ja+zg66bqh9dTVT+vtzbqeeTP8FJE14Yfbri+sx96r5H09yVefMR+P+K9z9HPY73XYdURjwfGedwaROo/gzEmgywpNSZ/XYyrSAKc6Y2c3khEuoibUP8iXB/AeJpo/fJv4v/bu3vQKKIoiuP/Wwi2FlYBEcTGxk6wEo2NTRBsFWwMCCqCjQRUVCKxkhCwEG2CQhA0CIqCBo2opSSpjKYT0UqDSVhiVp7FeUtmYXez+WISOT8IzLJvdnfChJx9c+8b+I0uc19vNDgiBoBOVC/6AngEzOend+QxxyLiDNABjKNZ0/HaS9Dkn/8KvWcxWB6MiJ6I2B4R2yLiaETU6lurhX2mgS0RcYn6WbOaYlDdnesYl/KssN0bugHATlTj2mjMppRS+gJ8zg87I+J86GYDWyNib0RcBoZq49s5X5bpA7qkDnAkIrpCKyucQnWtAJMtLt0DvC5sX4yIjojYBVxoNHgdjsHMVsGh1GyDSim9Qo1IC+hv9QrwDfiDwkMvampptv8MMJIfdgBf0ezjnia7nAZeFt5jHDXBgC7Rg2YsB9Dl9Jn8052f+w5MLOMQW0opVdCSV7XQ2YtmyX4Cw6jZiLxd8wYFjHM0aG5JKc2ijmtQM9RsXh7pZIuP0k99U9MPVFtbW3P1Oapn/R90oy73AG6hkFgBxoCr1JdUtHO+tC2lNAecRV/EtgBP0Pl1Jw+ZZ7HpqZlB4FPe3o8uzU9RXxpQtKbHYGar41BqtoGllO6iy+23URCtoHq8SeAe0LfESxxHgekX6ia+T/M7KvUB71Dwq6IGoo8o4PXnMSOooWcKhb+/KIwOAQdykFwzKaVhVCs6hJb1qaJQOspinelN4AYKFpX83CGad0+fAN6imeN2PsMcWnXgGmqEmUfBbQzNwHXl+sRNL6U0isL2IAp0C+j3PYG+jPQUhrdzviz3/R+g5cOeolntKvoi9RDYl3RzgVb7V4DDwGP0dzKNbj7QbD3fNT8GM1u5aK/0yMzMzMxs/Xim1MzMzMxK51BqZmZmZqVzKDUzMzOz0jmUmpmZmVnpHErNzMzMrHQOpWZmZmZWOodSMzMzMyudQ6mZmZmZlc6h1MzMzMxK9w9SV9cJoDUPPgAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" + "cell_type": "markdown", + "metadata": { + "id": "Gl4oFd-LEqAf" + }, + "source": [ + "```average odds difference = 0.5((FPR_unpriv-FPR_priv)+(TPR_unpriv-TPR_priv))``` must be close to zero for the classifier to be fair.\n", + "\n", + "For a classifier trained with reweighted training data, at the best classification rate, this is indeed the case.\n", + "This implies fairness." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "id": "mC9VED1KEqAf" + }, + "source": [ + "# Summary of Results\n", + "We show the optimal classification thresholds, and the fairness and accuracy metrics." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "I93c6CY4EqAf" + }, + "source": [ + "### Classification Thresholds\n", + "\n", + "| Dataset |Classification threshold|\n", + "|-|-|\n", + "|Adult||0.2674|\n", + "|German|0.6732|\n", + "|Compas|0.5148|" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oT0aNe0OEqAf" + }, + "source": [ + "### Fairness Metric: Disparate impact, Accuracy Metric: Balanced accuracy\n", + "\n", + "#### Performance\n", + "\n", + "| Dataset |Sex (Acc-Bef)|Sex (Acc-Aft)|Sex (Fair-Bef)|Sex (Fair-Aft)|Race/Age (Acc-Bef)|Race/Age (Acc-Aft)|Race/Age (Fair-Bef)|Race/Age (Fair-Aft)|\n", + "|-|-|-|-|-|-|-|-|-|\n", + "|Adult (Test)|0.7417|0.7128|0.2774|0.7625|0.7417|0.7443|0.4423|0.7430|\n", + "|German (Test)|0.6524|0.6460|0.9948|1.0852|0.6524|0.6460|0.3824|0.5735|\n", + "|Compas (Test)|0.6774|0.6562|0.6631|0.8342|0.6774|0.6342|0.6600|1.1062|\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VlTe6r2ZEqAf" + }, + "source": [ + "### Fairness Metric: Average odds difference, Accuracy Metric: Balanced accuracy\n", + "\n", + "#### Performance\n", + "\n", + "| Dataset |Sex (Acc-Bef)|Sex (Acc-Aft)|Sex (Fair-Bef)|Sex (Fair-Aft)|Race/Age (Acc-Bef)|Race/Age (Acc-Aft)|Race/Age (Fair-Bef)|Race/Age (Fair-Aft)|\n", + "|-|-|-|-|-|-|-|-|-|\n", + "|Adult (Test)|0.7417|0.7128|-0.3281|-0.0266|0.7417|0.7443|-0.1991|-0.0395|\n", + "|German (Test)|0.6524|0.6460|0.0071|0.0550|0.6524|0.6460|-0.3278|-0.1944|\n", + "|Compas (Test)|0.6774|0.6562|-0.2439|-0.0946|0.6774|0.6342|-0.1927|0.1042|" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "uDz4X4JXEqAf" + }, + "outputs": [], + "source": [] } - ], - "source": [ - "fig, ax1 = plt.subplots(figsize=(10,7))\n", - "ax1.plot(class_thresh_arr, bal_acc_arr_transf)\n", - "ax1.set_xlabel('Classification Thresholds', fontsize=16, fontweight='bold')\n", - "ax1.set_ylabel('Balanced Accuracy', color='b', fontsize=16, fontweight='bold')\n", - "ax1.xaxis.set_tick_params(labelsize=14)\n", - "ax1.yaxis.set_tick_params(labelsize=14)\n", - "\n", - "\n", - "ax2 = ax1.twinx()\n", - "ax2.plot(class_thresh_arr, np.abs(1.0-np.array(disp_imp_arr_transf)), color='r')\n", - "ax2.set_ylabel('abs(1-disparate impact)', color='r', fontsize=16, fontweight='bold')\n", - "ax2.axvline(best_class_thresh, color='k', linestyle=':')\n", - "ax2.yaxis.set_tick_params(labelsize=14)\n", - "ax2.grid(True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```abs(1-disparate impact)``` must be small (close to 0) for classifier predictions to be fair.\n", - "\n", - "For a classifier trained with reweighted training data, at the best classification rate, this is indeed the case.\n", - "This implies fairness." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAroAAAG2CAYAAACQ1yX/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xl8VNX9//HXyb4CCWHfF0UUFVTEHWzFhVat2iqt2Kp1aa1a2+r3p7a2atXSb9WibdG6b636rdoiFZei4koFUVSURWUJssOEANlmO78/7gwZhkwyk8zkTmbez8cjj8nce+6dT9oxfPKZzznHWGsREREREck0OW4HICIiIiKSCkp0RURERCQjKdEVERERkYykRFdEREREMpISXRERERHJSEp0RURERCQjKdEVERERkYykRFdEREREMpISXRERERHJSHluB+C2nJwcW1xc7HYYIiIiIm2qr6+31loVKuOU9YlucXExdXV1bochWWbjxo0A9O3b1+VIRESkKzHGNLgdQ1eS9YmuiBumTp0KwLx589wNREREJIMp0RVxwbXXXut2CCIiIhnPWGvdjsFVpaWlVq0LIiIi0hUYY+qttaVux9FVqJlZxAVr165l7dq1bochIiKS0dS6IOKC8847D1CProiISCop0RVxwa9+9Su3QxAREcl46tFVj66IiIh0EerRTYx6dEVcsHLlSlauXOl2GCIiIhlNFV1VdMUFkyZNAtSjKyIiiVFFNzHq0RVxwU033eR2CCIiIhlPFV1VdEVERKSLUEU3MerRFXHB8uXLWb58udthiIiIZDRVdFXRFReoR1dERNpDFd3EqEdXxAW33Xab2yGIiIhkPFV0VdGVdggGLdsbfFSWFux5orYWund3JygREcl4qugmRj26Igmo9/p54r9rmPzHNxh/61xWbY34I2nlSqishEWL2rzPkiVLWLJkSQojFREREbUuiMRh/fYGHpu/hicXVFPb4GNUn3ICQcu7X25lWFXoD+sNGyAYhK++gkMPbfV+l19+OaAeXRERkVRSoitZxxcIsmRdLe+t8rCxthFjwGDIMWAM+AKWmnovnjov2+t9eOq8bNzRiLWWk8f05cKjh3HokArG3/oq76+u4dwJQ5wb+/2hF/C1GcMf/vCHFP6EIiIiAkp0JUus2LST/3y2ifdWeXh/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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + }, + "colab": { + "provenance": [] } - ], - "source": [ - "fig, ax1 = plt.subplots(figsize=(10,7))\n", - "ax1.plot(class_thresh_arr, bal_acc_arr_transf)\n", - "ax1.set_xlabel('Classification Thresholds', fontsize=16, fontweight='bold')\n", - "ax1.set_ylabel('Balanced Accuracy', color='b', fontsize=16, fontweight='bold')\n", - "ax1.xaxis.set_tick_params(labelsize=14)\n", - "ax1.yaxis.set_tick_params(labelsize=14)\n", - "\n", - "\n", - "ax2 = ax1.twinx()\n", - "ax2.plot(class_thresh_arr, avg_odds_diff_arr_transf, color='r')\n", - "ax2.set_ylabel('avg. odds diff.', color='r', fontsize=16, fontweight='bold')\n", - "ax2.axvline(best_class_thresh, color='k', linestyle=':')\n", - "ax2.yaxis.set_tick_params(labelsize=14)\n", - "ax2.grid(True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```average odds difference = 0.5((FPR_unpriv-FPR_priv)+(TPR_unpriv-TPR_priv))``` must be close to zero for the classifier to be fair.\n", - "\n", - "For a classifier trained with reweighted training data, at the best classification rate, this is indeed the case.\n", - "This implies fairness." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "# Summary of Results\n", - "We show the optimal classification thresholds, and the fairness and accuracy metrics." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Classification Thresholds\n", - "\n", - "| Dataset |Classification threshold|\n", - "|-|-|\n", - "|Adult||0.2674|\n", - "|German|0.6732|\n", - "|Compas|0.5148|" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Fairness Metric: Disparate impact, Accuracy Metric: Balanced accuracy\n", - "\n", - "#### Performance\n", - "\n", - "| Dataset |Sex (Acc-Bef)|Sex (Acc-Aft)|Sex (Fair-Bef)|Sex (Fair-Aft)|Race/Age (Acc-Bef)|Race/Age (Acc-Aft)|Race/Age (Fair-Bef)|Race/Age (Fair-Aft)|\n", - "|-|-|-|-|-|-|-|-|-|\n", - "|Adult (Test)|0.7417|0.7128|0.2774|0.7625|0.7417|0.7443|0.4423|0.7430|\n", - "|German (Test)|0.6524|0.6460|0.9948|1.0852|0.6524|0.6460|0.3824|0.5735|\n", - "|Compas (Test)|0.6774|0.6562|0.6631|0.8342|0.6774|0.6342|0.6600|1.1062|\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Fairness Metric: Average odds difference, Accuracy Metric: Balanced accuracy\n", - "\n", - "#### Performance\n", - "\n", - "| Dataset |Sex (Acc-Bef)|Sex (Acc-Aft)|Sex (Fair-Bef)|Sex (Fair-Aft)|Race/Age (Acc-Bef)|Race/Age (Acc-Aft)|Race/Age (Fair-Bef)|Race/Age (Fair-Aft)|\n", - "|-|-|-|-|-|-|-|-|-|\n", - "|Adult (Test)|0.7417|0.7128|-0.3281|-0.0266|0.7417|0.7443|-0.1991|-0.0395|\n", - "|German (Test)|0.6524|0.6460|0.0071|0.0550|0.6524|0.6460|-0.3278|-0.1944|\n", - "|Compas (Test)|0.6774|0.6562|-0.2439|-0.0946|0.6774|0.6342|-0.1927|0.1042|" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.10" - } - }, - "nbformat": 4, - "nbformat_minor": 2 + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file diff --git a/examples/demo_short_gerryfair_test.ipynb b/examples/demo_short_gerryfair_test.ipynb index 281dee28..e7dca201 100644 --- a/examples/demo_short_gerryfair_test.ipynb +++ b/examples/demo_short_gerryfair_test.ipynb @@ -1,183 +1,202 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "pycharm": { - "is_executing": false - } - }, - "outputs": [ + "cells": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "iteration: 1, error: 0.229, fairness violation: 0.05428400000000001, violated group size: 0.249\n", - "iteration: 2, error: 0.3645, fairness violation: 0.027142000000000006, violated group size: 0.249\n", - "iteration: 3, error: 0.4096666666666666, fairness violation: 0.01809466666666667, violated group size: 0.251\n", - "iteration: 4, error: 0.43225, fairness violation: 0.013571000000000003, violated group size: 0.249\n", - "iteration: 5, error: 0.44580000000000014, fairness violation: 0.0108568, violated group size: 0.251\n", - "iteration: 6, error: 0.4548333333333334, fairness violation: 0.009047333333333338, violated group size: 0.251\n", - "iteration: 7, error: 0.46128571428571435, fairness violation: 0.007754857142857144, violated group size: 0.251\n", - "iteration: 8, error: 0.466125, fairness violation: 0.006785500000000003, violated group size: 0.251\n", - "iteration: 9, error: 0.469888888888889, fairness violation: 0.006031555555555558, violated group size: 0.249\n" - ] - } - ], - "source": [ - "%matplotlib inline\n", - "import warnings\n", - "warnings.filterwarnings(\"ignore\")\n", - "import sys\n", - "sys.path.append(\"../\")\n", - "from aif360.algorithms.inprocessing import GerryFairClassifier\n", - "from aif360.algorithms.inprocessing.gerryfair.clean import array_to_tuple\n", - "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_adult\n", - "from sklearn import svm\n", - "from sklearn import tree\n", - "from sklearn.kernel_ridge import KernelRidge\n", - "from sklearn import linear_model\n", - "from aif360.metrics import BinaryLabelDatasetMetric\n", - "from IPython.display import Image\n", - "import pickle\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# load data set\n", - "data_set = load_preproc_data_adult(sub_samp=1000, balance=True)\n", - "max_iterations = 10\n", - "C = 100\n", - "print_flag = True\n", - "gamma = .005\n", - "\n", - "fair_model = GerryFairClassifier(C=C, printflag=print_flag, gamma=gamma, fairness_def='FP',\n", - " max_iters=max_iterations, heatmapflag=False)\n", - "# fit method\n", - "fair_model.fit(data_set, early_termination=True)\n", - "\n", - "# predict method. If threshold in (0, 1) produces binary predictions\n", - "dataset_yhat = fair_model.predict(data_set, threshold=False)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "pycharm": { - "is_executing": false - } - }, - "outputs": [ + "cell_type": "markdown", + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Trusted-AI/AIF360/blob/main/examples/demo_short_gerryfair_test.ipynb)" + ], + "metadata": { + "id": "qsaaqV7jGtYV" + } + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.0060315555555555565\n" - ] - } - ], - "source": [ - "# auditing \n", - "\n", - "gerry_metric = BinaryLabelDatasetMetric(data_set)\n", - "gamma_disparity = gerry_metric.rich_subgroup(array_to_tuple(dataset_yhat.labels), 'FP')\n", - "print(gamma_disparity)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "pycharm": { - "is_executing": false - } - }, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": false + }, + "id": "9Cb8bfPXGUa0", + "outputId": "165bfd3e-1281-4b34-d21d-137182075fab" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iteration: 1, error: 0.229, fairness violation: 0.05428400000000001, violated group size: 0.249\n", + "iteration: 2, error: 0.3645, fairness violation: 0.027142000000000006, violated group size: 0.249\n", + "iteration: 3, error: 0.4096666666666666, fairness violation: 0.01809466666666667, violated group size: 0.251\n", + "iteration: 4, error: 0.43225, fairness violation: 0.013571000000000003, violated group size: 0.249\n", + "iteration: 5, error: 0.44580000000000014, fairness violation: 0.0108568, violated group size: 0.251\n", + "iteration: 6, error: 0.4548333333333334, fairness violation: 0.009047333333333338, violated group size: 0.251\n", + "iteration: 7, error: 0.46128571428571435, fairness violation: 0.007754857142857144, violated group size: 0.251\n", + "iteration: 8, error: 0.466125, fairness violation: 0.006785500000000003, violated group size: 0.251\n", + "iteration: 9, error: 0.469888888888889, fairness violation: 0.006031555555555558, violated group size: 0.249\n" + ] + } + ], + "source": [ + "%matplotlib inline\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "import sys\n", + "sys.path.append(\"../\")\n", + "from aif360.algorithms.inprocessing import GerryFairClassifier\n", + "from aif360.algorithms.inprocessing.gerryfair.clean import array_to_tuple\n", + "from aif360.algorithms.preprocessing.optim_preproc_helpers.data_preproc_functions import load_preproc_data_adult\n", + "from sklearn import svm\n", + "from sklearn import tree\n", + "from sklearn.kernel_ridge import KernelRidge\n", + "from sklearn import linear_model\n", + "from aif360.metrics import BinaryLabelDatasetMetric\n", + "from IPython.display import Image\n", + "import pickle\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# load data set\n", + "data_set = load_preproc_data_adult(sub_samp=1000, balance=True)\n", + "max_iterations = 10\n", + "C = 100\n", + "print_flag = True\n", + "gamma = .005\n", + "\n", + "fair_model = GerryFairClassifier(C=C, printflag=print_flag, gamma=gamma, fairness_def='FP',\n", + " max_iters=max_iterations, heatmapflag=False)\n", + "# fit method\n", + "fair_model.fit(data_set, early_termination=True)\n", + "\n", + "# predict method. If threshold in (0, 1) produces binary predictions\n", + "dataset_yhat = fair_model.predict(data_set, threshold=False)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": false + }, + "id": "cCdltbMWGUa2", + "outputId": "0ab1dd98-6cae-45a1-e51c-41ef9b7193df" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0060315555555555565\n" + ] + } + ], + "source": [ + "# auditing\n", + "\n", + "gerry_metric = BinaryLabelDatasetMetric(data_set)\n", + "gamma_disparity = gerry_metric.rich_subgroup(array_to_tuple(dataset_yhat.labels), 'FP')\n", + "print(gamma_disparity)\n", + "\n" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Curr Predictor: Linear\n", - "Curr Predictor: SVR\n", - "Curr Predictor: Tree\n", - "Curr Predictor: Kernel\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": false + }, + "id": "on2jaBgsGUa3", + "outputId": "ed58df2b-2288-491b-bf07-ad5d783baa06" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Curr Predictor: Linear\n", + "Curr Predictor: SVR\n", + "Curr Predictor: Tree\n", + "Curr Predictor: Kernel\n" + ] + } + ], + "source": [ + "# set to 10 iterations for fast running of notebook - set >= 1000 when running real experiments\n", + "# tests learning with different hypothesis classes\n", + "pareto_iters = 10\n", + "def multiple_classifiers_pareto(dataset, gamma_list=[0.002, 0.005, 0.01], save_results=False, iters=pareto_iters):\n", + "\n", + " ln_predictor = linear_model.LinearRegression()\n", + " svm_predictor = svm.LinearSVR()\n", + " tree_predictor = tree.DecisionTreeRegressor(max_depth=3)\n", + " kernel_predictor = KernelRidge(alpha=1.0, gamma=1.0, kernel='rbf')\n", + " predictor_dict = {'Linear': {'predictor': ln_predictor, 'iters': iters},\n", + " 'SVR': {'predictor': svm_predictor, 'iters': iters},\n", + " 'Tree': {'predictor': tree_predictor, 'iters': iters},\n", + " 'Kernel': {'predictor': kernel_predictor, 'iters': iters}}\n", + "\n", + " results_dict = {}\n", + "\n", + " for pred in predictor_dict:\n", + " print('Curr Predictor: {}'.format(pred))\n", + " predictor = predictor_dict[pred]['predictor']\n", + " max_iters = predictor_dict[pred]['iters']\n", + " fair_clf = GerryFairClassifier(C=100, printflag=True, gamma=1, predictor=predictor, max_iters=max_iters)\n", + " fair_clf.printflag = False\n", + " fair_clf.max_iters=max_iters\n", + " errors, fp_violations, fn_violations = fair_clf.pareto(dataset, gamma_list)\n", + " results_dict[pred] = {'errors': errors, 'fp_violations': fp_violations, 'fn_violations': fn_violations}\n", + " if save_results:\n", + " pickle.dump(results_dict, open('results_dict_' + str(gamma_list) + '_gammas' + str(gamma_list) + '.pkl', 'wb'))\n", + "\n", + "multiple_classifiers_pareto(data_set)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": false + }, + "id": "tgGHGbQZGUa3" + }, + "outputs": [], + "source": [] } - ], - "source": [ - "# set to 10 iterations for fast running of notebook - set >= 1000 when running real experiments\n", - "# tests learning with different hypothesis classes\n", - "pareto_iters = 10\n", - "def multiple_classifiers_pareto(dataset, gamma_list=[0.002, 0.005, 0.01], save_results=False, iters=pareto_iters):\n", - "\n", - " ln_predictor = linear_model.LinearRegression()\n", - " svm_predictor = svm.LinearSVR()\n", - " tree_predictor = tree.DecisionTreeRegressor(max_depth=3)\n", - " kernel_predictor = KernelRidge(alpha=1.0, gamma=1.0, kernel='rbf')\n", - " predictor_dict = {'Linear': {'predictor': ln_predictor, 'iters': iters},\n", - " 'SVR': {'predictor': svm_predictor, 'iters': iters},\n", - " 'Tree': {'predictor': tree_predictor, 'iters': iters},\n", - " 'Kernel': {'predictor': kernel_predictor, 'iters': iters}}\n", - "\n", - " results_dict = {}\n", - "\n", - " for pred in predictor_dict:\n", - " print('Curr Predictor: {}'.format(pred))\n", - " predictor = predictor_dict[pred]['predictor']\n", - " max_iters = predictor_dict[pred]['iters']\n", - " fair_clf = GerryFairClassifier(C=100, printflag=True, gamma=1, predictor=predictor, max_iters=max_iters)\n", - " fair_clf.printflag = False\n", - " fair_clf.max_iters=max_iters\n", - " errors, fp_violations, fn_violations = fair_clf.pareto(dataset, gamma_list)\n", - " results_dict[pred] = {'errors': errors, 'fp_violations': fp_violations, 'fn_violations': fn_violations}\n", - " if save_results:\n", - " pickle.dump(results_dict, open('results_dict_' + str(gamma_list) + '_gammas' + str(gamma_list) + '.pkl', 'wb'))\n", - "\n", - "multiple_classifiers_pareto(data_set)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.9" + }, "pycharm": { - "is_executing": false + "stem_cell": { + "cell_type": "raw", + "metadata": { + "collapsed": false + }, + "source": [] + } + }, + "colab": { + "provenance": [] } - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.9" - }, - "pycharm": { - "stem_cell": { - "cell_type": "raw", - "metadata": { - "collapsed": false - }, - "source": [] - } - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/examples/tutorial_medical_expenditure.ipynb b/examples/tutorial_medical_expenditure.ipynb index 8f8d7186..96d823eb 100644 --- a/examples/tutorial_medical_expenditure.ipynb +++ b/examples/tutorial_medical_expenditure.ipynb @@ -1,2242 +1,2565 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Medical Expenditure Tutorial" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## This tutorial demonstrates classification model learning with bias mitigation as a part of a Care Management use case using Medical Expenditure data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The notebook demonstrates how the AIF 360 toolkit can be used to detect and reduce bias when learning classifiers using a variety of fairness metrics and algorithms . It also demonstrates how explanations can be generated for predictions made by models learnt with the toolkit using LIME.\n", - "\n", - "Classifiers are built using Logistic Regression as well as Random Forests.\n", - "\n", - "Bias detection is demonstrated using several metrics, including disparate impact, average odds difference, statistical parity difference, equal opportunity difference, and Theil index.\n", - "\n", - "Bias alleviation is explored via a variety of methods, including reweighing (pre-processing algorithm), prejudice remover (in-processing algorithm), and disparate impact remover (pre-processing technique).\n", - "\n", - "Data from the [Medical Expenditure Panel Survey](https://meps.ahrq.gov/mepsweb/) is used in this tutorial. See [Section 2](#2.-Data-used) below for more details.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Table of Contents" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To return to the table of contents, click on the number at any major section heading.\n", - "\n", - "[1. Use case](#1.-Use-case)\n", - "\n", - "[2. Data used](#2.-Data-used)\n", - "\n", - "[3. Training models without debiasing](#3.-Training-models-on-original-2015-Panel-19-data)\n", - "\n", - "[4. Reweighing (pre-processing bias mitigation)](#4.-Bias-mitigation-using-pre-processing-technique---Reweighing)\n", - "\n", - "[5. Prejudice Remover (in-processing bias mitigation)](#5.-Bias-mitigation-using-in-processing-technique---Prejudice-Remover-(PR))\n", - "\n", - "[6. Summary of results](#6.-Summary-of-Model-Learning-Results)\n", - "\n", - "[7. Deploying model](#7.-Deploying-model)\n", - "\n", - "[8. Generating explanations for model predictions using LIME](#8.-Generating-explanations-for-model-predictions-using-LIME)\n", - "\n", - "[9. Re-deploying Model](#9.-Re-deploying-Model)\n", - "\n", - "[10. Overall Summary](#10.-SUMMARY)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [1.](#Table-of-Contents) Use case" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In order to demonstrate how AIF 360 can be used to detect and mitigate bias in classfier models, we adopt the following use case:\n", - "\n", - "1. a data scientist develops a 'fair' healthcare utilization scoring model with respect to defined protected classes. Fairness may be dictated by legal or government regulations, such as a requirement that additional care decisions be not predicated on factors such as race of the patient.\n", - "\n", - "\n", - "2. developer takes the model AND performance characteristics / specs of the model (e.g. accuracy, fairness tests, etc. basically the model factsheet) and deploys the model in an enterprise app that prioritizes cases for care management.\n", - "\n", - "\n", - "3. the app is put into production and starts scoring people and making recommendations. \n", - "\n", - "\n", - "4. explanations are generated for each recommendation\n", - "\n", - "\n", - "5. both recommendations and associated explanations are given to nurses as a part of the care management process. The nurses can evaluate the recommendations for quality and correctness and provide feedback.\n", - "\n", - "\n", - "6. nurse feedback as well as analysis of usage data with respect to specs of the model w.r.t accuracy and fairness is communicated to AI Ops specialist and LOB user periodically.\n", - "\n", - "\n", - "7. when significant drift in model specs relative to the model factsheet is observed, the model is sent back for retraining." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [2.](#Table-of-Contents) Data used" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The specific data used is the [2015 Full Year Consolidated Data File](https://meps.ahrq.gov/mepsweb/data_stats/download_data_files_detail.jsp?cboPufNumber=HC-181) as well as the [2016 Full Year Consolidated Data File](https://meps.ahrq.gov/mepsweb/data_stats/download_data_files_detail.jsp?cboPufNumber=HC-192)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The 2015 file contains data from rounds 3,4,5 of panel 19 (2014) and rounds 1,2,3 of panel 20 (2015). The 2016 file contains data from rounds 3,4,5 of panel 20 (2015) and rounds 1,2,3 of panel 21 (2016).\n", - "\n", - "For this demonstration, three datasets were constructed: one from panel 19, round 5 (used for learning models), one from panel 20, round 3 (used for deployment/testing of model - steps); the other from panel 21, round 3 (used for re-training and deployment/testing of updated model)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For each dataset, the sensitive attribute is 'RACE' constructed as follows: 'Whites' (privileged class) defined by the features RACEV2X = 1 (White) and HISPANX = 2 (non Hispanic); 'Non-Whites' that included everyone else. \n", - "\n", - "Along with race as the sensitive feature, other features used for modeling include demographics (such as age, gender, active duty status), physical/mental health assessments, diagnosis codes (such as history of diagnosis of cancer, or diabetes), and limitations (such as cognitive or hearing or vision limitation).\n", - "\n", - "To measure utilization, a composite feature, 'UTILIZATION', was created to measure the total number of trips requiring some sort of medical care by summing up the following features: OBTOTV15(16), the number of office based visits; OPTOTV15(16), the number of outpatient visits; ERTOT15(16), the number of ER visits; IPNGTD15(16), the number of inpatient nights, and + HHTOTD16, the number of home health visits.\n", - "\n", - "The model classification task is to predict whether a person would have 'high' utilization (defined as UTILIZATION >= 10, roughly the average utilization for the considered population). High utilization respondents constituted around 17% of each dataset.\n", - "\n", - "To simulate the scenario, each dataset is split into 3 parts: a train, a validation, and a test/deployment part.\n", - "\n", - "We assume that the model is initially built and tuned using the 2015 Panel 19 train/test data. (Use case steps 1-2.)\n", - "It is then put into practice and used to score people to identify potential candidates for care management (Use case steps 3-5). Initial deployment is simulated to 2015 Panel 20 deployment data. To show change in performance and/or fairness over time, (use case steps 6-7), the 2016 Panel 21 deployment data is used. Finally, if drift is observed, the 2015 train/validation data is used to learn a new model and evaluated again on the 2016 deployment data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [3.](#Table-of-Contents) Training models on original 2015 Panel 19 data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, load all necessary packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "sys.path.insert(0, '../')\n", - "\n", - "%matplotlib inline\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from IPython.display import Markdown, display\n", - "\n", - "# Datasets\n", - "from aif360.datasets import MEPSDataset19\n", - "from aif360.datasets import MEPSDataset20\n", - "from aif360.datasets import MEPSDataset21\n", - "\n", - "# Fairness metrics\n", - "from aif360.metrics import BinaryLabelDatasetMetric\n", - "from aif360.metrics import ClassificationMetric\n", - "\n", - "# Explainers\n", - "from aif360.explainers import MetricTextExplainer\n", - "\n", - "# Scalers\n", - "from sklearn.preprocessing import StandardScaler\n", - "\n", - "# Classifiers\n", - "from sklearn.ensemble import RandomForestClassifier\n", - "from sklearn.linear_model import LogisticRegression\n", - "from sklearn.pipeline import make_pipeline\n", - "\n", - "# Bias mitigation techniques\n", - "from aif360.algorithms.preprocessing import Reweighing\n", - "from aif360.algorithms.inprocessing import PrejudiceRemover\n", - "\n", - "# LIME\n", - "from aif360.datasets.lime_encoder import LimeEncoder\n", - "import lime\n", - "from lime.lime_tabular import LimeTabularExplainer\n", - "\n", - "np.random.seed(1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.1. Load data & create splits for learning/validating/testing model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Get the dataset and split into train (50%), validate (30%), and test (20%)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "(dataset_orig_panel19_train,\n", - " dataset_orig_panel19_val,\n", - " dataset_orig_panel19_test) = MEPSDataset19().split([0.5, 0.8], shuffle=True)\n", - "\n", - "sens_ind = 0\n", - "sens_attr = dataset_orig_panel19_train.protected_attribute_names[sens_ind]\n", - "\n", - "unprivileged_groups = [{sens_attr: v} for v in\n", - " dataset_orig_panel19_train.unprivileged_protected_attributes[sens_ind]]\n", - "privileged_groups = [{sens_attr: v} for v in\n", - " dataset_orig_panel19_train.privileged_protected_attributes[sens_ind]]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This function will be used throughout the notebook to print out some labels, names, etc." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "def describe(train=None, val=None, test=None):\n", - " if train is not None:\n", - " display(Markdown(\"#### Training Dataset shape\"))\n", - " print(train.features.shape)\n", - " if val is not None:\n", - " display(Markdown(\"#### Validation Dataset shape\"))\n", - " print(val.features.shape)\n", - " display(Markdown(\"#### Test Dataset shape\"))\n", - " print(test.features.shape)\n", - " display(Markdown(\"#### Favorable and unfavorable labels\"))\n", - " print(test.favorable_label, test.unfavorable_label)\n", - " display(Markdown(\"#### Protected attribute names\"))\n", - " print(test.protected_attribute_names)\n", - " display(Markdown(\"#### Privileged and unprivileged protected attribute values\"))\n", - " print(test.privileged_protected_attributes, \n", - " test.unprivileged_protected_attributes)\n", - " display(Markdown(\"#### Dataset feature names\"))\n", - " print(test.feature_names)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Show 2015 dataset details" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "tags": [] - }, - "outputs": [ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Trusted-AI/AIF360/blob/main/examples/tutorial_medical_expenditure.ipynb)" + ], + "metadata": { + "id": "vEJtd4TZHluk" + } + }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Training Dataset shape" - }, - "metadata": {} + "cell_type": "markdown", + "metadata": { + "id": "L4KzQLdJHHV3" + }, + "source": [ + "# Medical Expenditure Tutorial" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "(7915, 138)\n" + "cell_type": "markdown", + "metadata": { + "id": "F92_6AkpHHV5" + }, + "source": [ + "## This tutorial demonstrates classification model learning with bias mitigation as a part of a Care Management use case using Medical Expenditure data." + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Validation Dataset shape" - }, - "metadata": {} + "cell_type": "markdown", + "metadata": { + "id": "i-MYlxfEHHV5" + }, + "source": [ + "The notebook demonstrates how the AIF 360 toolkit can be used to detect and reduce bias when learning classifiers using a variety of fairness metrics and algorithms . It also demonstrates how explanations can be generated for predictions made by models learnt with the toolkit using LIME.\n", + "\n", + "Classifiers are built using Logistic Regression as well as Random Forests.\n", + "\n", + "Bias detection is demonstrated using several metrics, including disparate impact, average odds difference, statistical parity difference, equal opportunity difference, and Theil index.\n", + "\n", + "Bias alleviation is explored via a variety of methods, including reweighing (pre-processing algorithm), prejudice remover (in-processing algorithm), and disparate impact remover (pre-processing technique).\n", + "\n", + "Data from the [Medical Expenditure Panel Survey](https://meps.ahrq.gov/mepsweb/) is used in this tutorial. See [Section 2](#2.-Data-used) below for more details.\n" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "(4749, 138)\n" + "cell_type": "markdown", + "metadata": { + "id": "52e2nvCaHHV6" + }, + "source": [ + "## Table of Contents" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Test Dataset shape" - }, - "metadata": {} + "cell_type": "markdown", + "metadata": { + "id": "oTpXyrKpHHV6" + }, + "source": [ + "To return to the table of contents, click on the number at any major section heading.\n", + "\n", + "[1. Use case](#1.-Use-case)\n", + "\n", + "[2. Data used](#2.-Data-used)\n", + "\n", + "[3. Training models without debiasing](#3.-Training-models-on-original-2015-Panel-19-data)\n", + "\n", + "[4. Reweighing (pre-processing bias mitigation)](#4.-Bias-mitigation-using-pre-processing-technique---Reweighing)\n", + "\n", + "[5. Prejudice Remover (in-processing bias mitigation)](#5.-Bias-mitigation-using-in-processing-technique---Prejudice-Remover-(PR))\n", + "\n", + "[6. Summary of results](#6.-Summary-of-Model-Learning-Results)\n", + "\n", + "[7. Deploying model](#7.-Deploying-model)\n", + "\n", + "[8. Generating explanations for model predictions using LIME](#8.-Generating-explanations-for-model-predictions-using-LIME)\n", + "\n", + "[9. Re-deploying Model](#9.-Re-deploying-Model)\n", + "\n", + "[10. Overall Summary](#10.-SUMMARY)" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "(3166, 138)\n" + "cell_type": "markdown", + "metadata": { + "id": "OD5cMJOHHHV6" + }, + "source": [ + "## [1.](#Table-of-Contents) Use case" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Favorable and unfavorable labels" - }, - "metadata": {} + "cell_type": "markdown", + "metadata": { + "id": "C_X0hQkEHHV6" + }, + "source": [ + "In order to demonstrate how AIF 360 can be used to detect and mitigate bias in classfier models, we adopt the following use case:\n", + "\n", + "1. a data scientist develops a 'fair' healthcare utilization scoring model with respect to defined protected classes. Fairness may be dictated by legal or government regulations, such as a requirement that additional care decisions be not predicated on factors such as race of the patient.\n", + "\n", + "\n", + "2. developer takes the model AND performance characteristics / specs of the model (e.g. accuracy, fairness tests, etc. basically the model factsheet) and deploys the model in an enterprise app that prioritizes cases for care management.\n", + "\n", + "\n", + "3. the app is put into production and starts scoring people and making recommendations.\n", + "\n", + "\n", + "4. explanations are generated for each recommendation\n", + "\n", + "\n", + "5. both recommendations and associated explanations are given to nurses as a part of the care management process. The nurses can evaluate the recommendations for quality and correctness and provide feedback.\n", + "\n", + "\n", + "6. nurse feedback as well as analysis of usage data with respect to specs of the model w.r.t accuracy and fairness is communicated to AI Ops specialist and LOB user periodically.\n", + "\n", + "\n", + "7. when significant drift in model specs relative to the model factsheet is observed, the model is sent back for retraining." + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "1.0 0.0\n" + "cell_type": "markdown", + "metadata": { + "id": "aM9yDCerHHV6" + }, + "source": [ + "## [2.](#Table-of-Contents) Data used" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Protected attribute names" - }, - "metadata": {} + "cell_type": "markdown", + "metadata": { + "id": "JQwdXTlNHHV6" + }, + "source": [ + "The specific data used is the [2015 Full Year Consolidated Data File](https://meps.ahrq.gov/mepsweb/data_stats/download_data_files_detail.jsp?cboPufNumber=HC-181) as well as the [2016 Full Year Consolidated Data File](https://meps.ahrq.gov/mepsweb/data_stats/download_data_files_detail.jsp?cboPufNumber=HC-192)." + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "['RACE']\n" + "cell_type": "markdown", + "metadata": { + "id": "39NlmjCVHHV7" + }, + "source": [ + "The 2015 file contains data from rounds 3,4,5 of panel 19 (2014) and rounds 1,2,3 of panel 20 (2015). The 2016 file contains data from rounds 3,4,5 of panel 20 (2015) and rounds 1,2,3 of panel 21 (2016).\n", + "\n", + "For this demonstration, three datasets were constructed: one from panel 19, round 5 (used for learning models), one from panel 20, round 3 (used for deployment/testing of model - steps); the other from panel 21, round 3 (used for re-training and deployment/testing of updated model)." + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Privileged and unprivileged protected attribute values" - }, - "metadata": {} + "cell_type": "markdown", + "metadata": { + "id": "k8QrrHJvHHV7" + }, + "source": [ + "For each dataset, the sensitive attribute is 'RACE' constructed as follows: 'Whites' (privileged class) defined by the features RACEV2X = 1 (White) and HISPANX = 2 (non Hispanic); 'Non-Whites' that included everyone else. \n", + "\n", + "Along with race as the sensitive feature, other features used for modeling include demographics (such as age, gender, active duty status), physical/mental health assessments, diagnosis codes (such as history of diagnosis of cancer, or diabetes), and limitations (such as cognitive or hearing or vision limitation).\n", + "\n", + "To measure utilization, a composite feature, 'UTILIZATION', was created to measure the total number of trips requiring some sort of medical care by summing up the following features: OBTOTV15(16), the number of office based visits; OPTOTV15(16), the number of outpatient visits; ERTOT15(16), the number of ER visits; IPNGTD15(16), the number of inpatient nights, and + HHTOTD16, the number of home health visits.\n", + "\n", + "The model classification task is to predict whether a person would have 'high' utilization (defined as UTILIZATION >= 10, roughly the average utilization for the considered population). High utilization respondents constituted around 17% of each dataset.\n", + "\n", + "To simulate the scenario, each dataset is split into 3 parts: a train, a validation, and a test/deployment part.\n", + "\n", + "We assume that the model is initially built and tuned using the 2015 Panel 19 train/test data. (Use case steps 1-2.)\n", + "It is then put into practice and used to score people to identify potential candidates for care management (Use case steps 3-5). Initial deployment is simulated to 2015 Panel 20 deployment data. To show change in performance and/or fairness over time, (use case steps 6-7), the 2016 Panel 21 deployment data is used. Finally, if drift is observed, the 2015 train/validation data is used to learn a new model and evaluated again on the 2016 deployment data" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "[array([1.])] [array([0.])]\n" + "cell_type": "markdown", + "metadata": { + "id": "TMCLPCFaHHV7" + }, + "source": [ + "## [3.](#Table-of-Contents) Training models on original 2015 Panel 19 data" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Dataset feature names" - }, - "metadata": {} + "cell_type": "markdown", + "metadata": { + "id": "iylHAkh8HHV7" + }, + "source": [ + "First, load all necessary packages" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "['AGE', 'RACE', 'PCS42', 'MCS42', 'K6SUM42', 'REGION=1', 'REGION=2', 'REGION=3', 'REGION=4', 'SEX=1', 'SEX=2', 'MARRY=1', 'MARRY=2', 'MARRY=3', 'MARRY=4', 'MARRY=5', 'MARRY=6', 'MARRY=7', 'MARRY=8', 'MARRY=9', 'MARRY=10', 'FTSTU=-1', 'FTSTU=1', 'FTSTU=2', 'FTSTU=3', 'ACTDTY=1', 'ACTDTY=2', 'ACTDTY=3', 'ACTDTY=4', 'HONRDC=1', 'HONRDC=2', 'HONRDC=3', 'HONRDC=4', 'RTHLTH=-1', 'RTHLTH=1', 'RTHLTH=2', 'RTHLTH=3', 'RTHLTH=4', 'RTHLTH=5', 'MNHLTH=-1', 'MNHLTH=1', 'MNHLTH=2', 'MNHLTH=3', 'MNHLTH=4', 'MNHLTH=5', 'HIBPDX=-1', 'HIBPDX=1', 'HIBPDX=2', 'CHDDX=-1', 'CHDDX=1', 'CHDDX=2', 'ANGIDX=-1', 'ANGIDX=1', 'ANGIDX=2', 'MIDX=-1', 'MIDX=1', 'MIDX=2', 'OHRTDX=-1', 'OHRTDX=1', 'OHRTDX=2', 'STRKDX=-1', 'STRKDX=1', 'STRKDX=2', 'EMPHDX=-1', 'EMPHDX=1', 'EMPHDX=2', 'CHBRON=-1', 'CHBRON=1', 'CHBRON=2', 'CHOLDX=-1', 'CHOLDX=1', 'CHOLDX=2', 'CANCERDX=-1', 'CANCERDX=1', 'CANCERDX=2', 'DIABDX=-1', 'DIABDX=1', 'DIABDX=2', 'JTPAIN=-1', 'JTPAIN=1', 'JTPAIN=2', 'ARTHDX=-1', 'ARTHDX=1', 'ARTHDX=2', 'ARTHTYPE=-1', 'ARTHTYPE=1', 'ARTHTYPE=2', 'ARTHTYPE=3', 'ASTHDX=1', 'ASTHDX=2', 'ADHDADDX=-1', 'ADHDADDX=1', 'ADHDADDX=2', 'PREGNT=-1', 'PREGNT=1', 'PREGNT=2', 'WLKLIM=-1', 'WLKLIM=1', 'WLKLIM=2', 'ACTLIM=-1', 'ACTLIM=1', 'ACTLIM=2', 'SOCLIM=-1', 'SOCLIM=1', 'SOCLIM=2', 'COGLIM=-1', 'COGLIM=1', 'COGLIM=2', 'DFHEAR42=-1', 'DFHEAR42=1', 'DFHEAR42=2', 'DFSEE42=-1', 'DFSEE42=1', 'DFSEE42=2', 'ADSMOK42=-1', 'ADSMOK42=1', 'ADSMOK42=2', 'PHQ242=-1', 'PHQ242=0', 'PHQ242=1', 'PHQ242=2', 'PHQ242=3', 'PHQ242=4', 'PHQ242=5', 'PHQ242=6', 'EMPST=-1', 'EMPST=1', 'EMPST=2', 'EMPST=3', 'EMPST=4', 'POVCAT=1', 'POVCAT=2', 'POVCAT=3', 'POVCAT=4', 'POVCAT=5', 'INSCOV=1', 'INSCOV=2', 'INSCOV=3']\n" - } - ], - "source": [ - "describe(dataset_orig_panel19_train, dataset_orig_panel19_val, dataset_orig_panel19_test)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Metrics for original data" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 0.48230522996275893\n" - } - ], - "source": [ - "metric_orig_panel19_train = BinaryLabelDatasetMetric(\n", - " dataset_orig_panel19_train,\n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "explainer_orig_panel19_train = MetricTextExplainer(metric_orig_panel19_train)\n", - "\n", - "print(explainer_orig_panel19_train.disparate_impact())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.2. Learning a Logistic Regression (LR) classifier on original data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 3.2.1. Training LR model on original data" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "dataset = dataset_orig_panel19_train\n", - "model = make_pipeline(StandardScaler(),\n", - " LogisticRegression(solver='liblinear', random_state=1))\n", - "fit_params = {'logisticregression__sample_weight': dataset.instance_weights}\n", - "\n", - "lr_orig_panel19 = model.fit(dataset.features, dataset.labels.ravel(), **fit_params)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 3.2.2. Validating LR model on original data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This function will be used throughout the tutorial to find best threshold using a validation set" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import defaultdict\n", - "\n", - "def test(dataset, model, thresh_arr):\n", - " try:\n", - " # sklearn classifier\n", - " y_val_pred_prob = model.predict_proba(dataset.features)\n", - " pos_ind = np.where(model.classes_ == dataset.favorable_label)[0][0]\n", - " except AttributeError:\n", - " # aif360 inprocessing algorithm\n", - " y_val_pred_prob = model.predict(dataset).scores\n", - " pos_ind = 0\n", - " \n", - " metric_arrs = defaultdict(list)\n", - " for thresh in thresh_arr:\n", - " y_val_pred = (y_val_pred_prob[:, pos_ind] > thresh).astype(np.float64)\n", - "\n", - " dataset_pred = dataset.copy()\n", - " dataset_pred.labels = y_val_pred\n", - " metric = ClassificationMetric(\n", - " dataset, dataset_pred,\n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "\n", - " metric_arrs['bal_acc'].append((metric.true_positive_rate()\n", - " + metric.true_negative_rate()) / 2)\n", - " metric_arrs['avg_odds_diff'].append(metric.average_odds_difference())\n", - " metric_arrs['disp_imp'].append(metric.disparate_impact())\n", - " metric_arrs['stat_par_diff'].append(metric.statistical_parity_difference())\n", - " metric_arrs['eq_opp_diff'].append(metric.equal_opportunity_difference())\n", - " metric_arrs['theil_ind'].append(metric.theil_index())\n", - " \n", - " return metric_arrs" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "thresh_arr = np.linspace(0.01, 0.5, 50)\n", - "val_metrics = test(dataset=dataset_orig_panel19_val,\n", - " model=lr_orig_panel19,\n", - " thresh_arr=thresh_arr)\n", - "lr_orig_best_ind = np.argmax(val_metrics['bal_acc'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot metrics with twin x-axes" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "def plot(x, x_name, y_left, y_left_name, y_right, y_right_name):\n", - " fig, ax1 = plt.subplots(figsize=(10,7))\n", - " ax1.plot(x, y_left)\n", - " ax1.set_xlabel(x_name, fontsize=16, fontweight='bold')\n", - " ax1.set_ylabel(y_left_name, color='b', fontsize=16, fontweight='bold')\n", - " ax1.xaxis.set_tick_params(labelsize=14)\n", - " ax1.yaxis.set_tick_params(labelsize=14)\n", - " ax1.set_ylim(0.5, 0.8)\n", - "\n", - " ax2 = ax1.twinx()\n", - " ax2.plot(x, y_right, color='r')\n", - " ax2.set_ylabel(y_right_name, color='r', fontsize=16, fontweight='bold')\n", - " if 'DI' in y_right_name:\n", - " ax2.set_ylim(0., 0.7)\n", - " else:\n", - " ax2.set_ylim(-0.25, 0.1)\n", - "\n", - " best_ind = np.argmax(y_left)\n", - " ax2.axvline(np.array(x)[best_ind], color='k', linestyle=':')\n", - " ax2.yaxis.set_tick_params(labelsize=14)\n", - " ax2.grid(True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we plot $1 - \\min(\\text{disparate impact}, 1/\\text{disparate impact})$ since it's possible to overcorrect and end up with a value greater than 1, implying unfairness for the original privileged group. For shorthand, we simply call this 1-min(DI, 1/DI) from now on. We want the plotted metric to be less than 0.2." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "disp_imp = np.array(val_metrics['disp_imp'])\n", - "disp_imp_err = 1 - np.minimum(disp_imp, 1/disp_imp)\n", - "plot(thresh_arr, 'Classification Thresholds',\n", - " val_metrics['bal_acc'], 'Balanced Accuracy',\n", - " disp_imp_err, '1 - min(DI, 1/DI)')" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "plot(thresh_arr, 'Classification Thresholds',\n", - " val_metrics['bal_acc'], 'Balanced Accuracy',\n", - " val_metrics['avg_odds_diff'], 'avg. odds diff.')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Make a function to print out accuracy and fairness metrics. This will be used throughout the tutorial." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "def describe_metrics(metrics, thresh_arr):\n", - " best_ind = np.argmax(metrics['bal_acc'])\n", - " print(\"Threshold corresponding to Best balanced accuracy: {:6.4f}\".format(thresh_arr[best_ind]))\n", - " print(\"Best balanced accuracy: {:6.4f}\".format(metrics['bal_acc'][best_ind]))\n", - "# disp_imp_at_best_ind = np.abs(1 - np.array(metrics['disp_imp']))[best_ind]\n", - " disp_imp_at_best_ind = 1 - min(metrics['disp_imp'][best_ind], 1/metrics['disp_imp'][best_ind])\n", - " print(\"Corresponding 1-min(DI, 1/DI) value: {:6.4f}\".format(disp_imp_at_best_ind))\n", - " print(\"Corresponding average odds difference value: {:6.4f}\".format(metrics['avg_odds_diff'][best_ind]))\n", - " print(\"Corresponding statistical parity difference value: {:6.4f}\".format(metrics['stat_par_diff'][best_ind]))\n", - " print(\"Corresponding equal opportunity difference value: {:6.4f}\".format(metrics['eq_opp_diff'][best_ind]))\n", - " print(\"Corresponding Theil index value: {:6.4f}\".format(metrics['theil_ind'][best_ind]))" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.1900\nBest balanced accuracy: 0.7627\nCorresponding 1-min(DI, 1/DI) value: 0.6066\nCorresponding average odds difference value: -0.1831\nCorresponding statistical parity difference value: -0.2643\nCorresponding equal opportunity difference value: -0.1608\nCorresponding Theil index value: 0.0936\n" - } - ], - "source": [ - "describe_metrics(val_metrics, thresh_arr)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 3.2.3. Testing LR model on original data" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "lr_orig_metrics = test(dataset=dataset_orig_panel19_test,\n", - " model=lr_orig_panel19,\n", - " thresh_arr=[thresh_arr[lr_orig_best_ind]])" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.1900\nBest balanced accuracy: 0.7759\nCorresponding 1-min(DI, 1/DI) value: 0.5738\nCorresponding average odds difference value: -0.2057\nCorresponding statistical parity difference value: -0.2612\nCorresponding equal opportunity difference value: -0.2228\nCorresponding Theil index value: 0.0921\n" - } - ], - "source": [ - "describe_metrics(lr_orig_metrics, [thresh_arr[lr_orig_best_ind]])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For all the fairness metrics displayed above, the value should be close to '0' for fairness.\n", - "\n", - "1-min(DI, 1/DI) < 0.2 is typically desired for classifier predictions to be fair.\n", - "\n", - "However, for a logistic regression classifier trained with original training data, at the best classification rate, this is quite high. This implies unfairness.\n", - "\n", - "Similarly, $\\text{average odds difference} = \\frac{(FPR_{unpriv}-FPR_{priv})+(TPR_{unpriv}-TPR_{priv})}{2}$ must be close to zero for the classifier to be fair.\n", - "\n", - "Again, the results for this classifier-data combination are still high. This still implies unfairness." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 3.3. Learning a Random Forest (RF) classifier on original data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 3.3.1. Training RF model on original data" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "dataset = dataset_orig_panel19_train\n", - "model = make_pipeline(StandardScaler(),\n", - " RandomForestClassifier(n_estimators=500, min_samples_leaf=25))\n", - "fit_params = {'randomforestclassifier__sample_weight': dataset.instance_weights}\n", - "rf_orig_panel19 = model.fit(dataset.features, dataset.labels.ravel(), **fit_params)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 3.3.2. Validating RF model on original data" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "thresh_arr = np.linspace(0.01, 0.5, 50)\n", - "val_metrics = test(dataset=dataset_orig_panel19_val,\n", - " model=rf_orig_panel19,\n", - " thresh_arr=thresh_arr)\n", - "rf_orig_best_ind = np.argmax(val_metrics['bal_acc'])" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "disp_imp = np.array(val_metrics['disp_imp'])\n", - "disp_imp_err = 1 - np.minimum(disp_imp, 1/disp_imp)\n", - "plot(thresh_arr, 'Classification Thresholds',\n", - " val_metrics['bal_acc'], 'Balanced Accuracy',\n", - " disp_imp_err, '1 - min(DI, 1/DI)')" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "plot(thresh_arr, 'Classification Thresholds',\n", - " val_metrics['bal_acc'], 'Balanced Accuracy',\n", - " val_metrics['avg_odds_diff'], 'avg. odds diff.')" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.2300\nBest balanced accuracy: 0.7717\nCorresponding 1-min(DI, 1/DI) value: 0.4860\nCorresponding average odds difference value: -0.1157\nCorresponding statistical parity difference value: -0.1929\nCorresponding equal opportunity difference value: -0.1063\nCorresponding Theil index value: 0.0896\n" - } - ], - "source": [ - "describe_metrics(val_metrics, thresh_arr)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 3.3.3. Testing RF model on original data" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "rf_orig_metrics = test(dataset=dataset_orig_panel19_test,\n", - " model=rf_orig_panel19,\n", - " thresh_arr=[thresh_arr[rf_orig_best_ind]])" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.2300\nBest balanced accuracy: 0.7638\nCorresponding 1-min(DI, 1/DI) value: 0.5141\nCorresponding average odds difference value: -0.1388\nCorresponding statistical parity difference value: -0.2190\nCorresponding equal opportunity difference value: -0.1135\nCorresponding Theil index value: 0.0936\n" - } - ], - "source": [ - "describe_metrics(rf_orig_metrics, [thresh_arr[rf_orig_best_ind]])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As in the case of the logistic regression classifier learned on the original data, the fairness metrics for the random forest classifier have values that are quite far from 0.\n", - "\n", - "For example, 1 - min(DI, 1/DI) has a value of over 0.5 as opposed to the desired value of < 0.2.\n", - "\n", - "This indicates that the random forest classifier learned on the original data is also unfair." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [4.](#Table-of-Contents) Bias mitigation using pre-processing technique - Reweighing" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.1. Transform data" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "RW = Reweighing(unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "dataset_transf_panel19_train = RW.fit_transform(dataset_orig_panel19_train)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Metrics for transformed data" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 1.0000000000000002\n" - } - ], - "source": [ - "metric_transf_panel19_train = BinaryLabelDatasetMetric(\n", - " dataset_transf_panel19_train,\n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "explainer_transf_panel19_train = MetricTextExplainer(metric_transf_panel19_train)\n", - "\n", - "print(explainer_transf_panel19_train.disparate_impact())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.2. Learning a Logistic Regression (LR) classifier on data transformed by reweighing" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 4.2.1. Training LR model after reweighing" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "dataset = dataset_transf_panel19_train\n", - "model = make_pipeline(StandardScaler(),\n", - " LogisticRegression(solver='liblinear', random_state=1))\n", - "fit_params = {'logisticregression__sample_weight': dataset.instance_weights}\n", - "lr_transf_panel19 = model.fit(dataset.features, dataset.labels.ravel(), **fit_params)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 4.2.2. Validating LR model after reweighing" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "thresh_arr = np.linspace(0.01, 0.5, 50)\n", - "val_metrics = test(dataset=dataset_orig_panel19_val,\n", - " model=lr_transf_panel19,\n", - " thresh_arr=thresh_arr)\n", - "lr_transf_best_ind = np.argmax(val_metrics['bal_acc'])" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAG4CAYAAAB8eJ7qAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXhU5dnH8e+TjRB2CBCWsMoiIKCACKiAgqVW3K1YcaFVVLTWWqnaurdaX7W2VmrdalHUioh7XVlVVASUTdnXsIQtEJaQbeZ+/zgTCRCSCSQ5M5Pf57rGSc4855x7IIZ77mdzZoaIiIiIiJ/i/A5ARERERERJqYiIiIj4TkmpiIiIiPhOSamIiIiI+E5JqYiIiIj4TkmpiIiIiPhOSamIiIiI+M6XpNQ5N8Y5t8Y5l+ucm+ecO62M9r9wzs13zuU45zKdcy8759IOaXORc+4H51xe6PmCyn0XIiIiIpGpPLmWc268c85KeOyrypirPCl1zl0KPAE8BJwIfAl86JxrdYT2A4AJwItAV+B8oAvwSrE2/YCJoWM9Q8+TnHN9K++diIiIiESe8uZawG+AZoc8VgOvV360B7iq3tHJOTcbWGhm1xY7tgJ4w8zuLKH9bcCvzax1sWOjgCfNrHbo+4lAQzMbWqzNFGCbmV1Wee9GREREJLKUN9cq4fwBwBfAADP7svIiPViVVkqdc0lAL+CTQ176BOh/hNNmAc2cc8OdJxUYAXxQrE2/Eq75cSnXFBEREYk5R5lrHepa4PuqTEgBEqryZkAqEA9sOeT4FmBISSeY2VfOuRF4XfI18WL+FLiqWLO0I1wzjRI450YDowFSUlJ6paamlu9diIiIiPhg/fr1Bnxb7NCzZvZsse/LnWsV55yrB/wcKLOiWtGqOiktN+dcF+BJ4E941c9mwKPAM8CVR3PN0F/eswC1atWydevWVUywIuKLzMxMANLSSvwcKiISM5xz+82sdyXeYiReT/qESrxHiao6Kd0OBICmhxxvCmQe4Zw7gW/M7NHQ9wtDs8E+d879wcw2hM4tzzVFJIaMGDECgBkzZvgbiIiI/44m1yruWmCymWVVdGBlqdKk1MzynXPzgKHApGIvDQUmH+G0FLw/3OKKvi8aE/tV6BqPFmszFG+2mYjEuDvuuMPvEEREIsJR5loAOOdOBnoAt1RehEfmR/f948AE59w3eJOYrgeaA08DOOdeAjCzoq7594DnnHM3cKD7/u/At2a2PtTmCeAz59wdwNvABcBg4NQqeUci4qthw4b5HYKISCQpb65VZDSwwsxmVF2oB1R5UmpmE51zjYC78BLMxcDZZlY0sLPVIe3HO+fqADcBfwWygWnA7cXafBmaDPVn4AFgFXCpmc2u7PcjIv7LyMgAID093edIRET8V95cCyCUa43Ay6N8UeXrlEaaWrVq2b59VbphgYhUsEGDBgEaUyoisc85l2NmtfyOozJE/Ox7EZGy3HXXXX6HICIix0iVUlVKRUREJErEcqW0Snd0EhGpDKtXr2b16tV+hyEiIsdAlVJVSkWinsaUikh1EcuVUo0pFZGod//99/sdgoiIHCNVSlUpFRERkSgRy5VSjSkVkai3bNkyli1b5ncYIiJyDFQpVaVUJOppTKmIVBexXCnVmFIRiXoPPfSQ3yGIiMgxUqVUlVIRERGJErFcKdWYUhGJeosXL2bx4sV+hyEiIsdAlVJVSkWinsaUikh1EcuVUo0pFZGo9+ijj/odgoiIHCNVSlUpFRERkSgRy5VSjSkVkag3f/585s+f73cYIiJyDFQpVaVUJOppTKmIVBexXCnVmFIRiXp///vf/Q5BRESOkSqlqpSKiIhIlIjlSqnGlIpI1JszZw5z5szxOwwRETkGqpSqUioS9TSmVESqi1iulGpMqYhEvXHjxvkdgoiIHCNVSlUpFRERkSgRy5VSjSkVkaj35Zdf8uWXX/odhoiIHANVSlUpFYl6GlMqItVFLFdKNaZURKLeM88843cIIiJyjFQpVaVUREREokQsV0o1plREot7MmTOZOXOm32GIiMgxUKVUlVKRqKcxpSJSXcRypVRjSkUk6r3wwgt+hyAiIsdIlVJVSkVERCRKxHKlVGNKRSTqTZkyhSlTpvgdhoiIHANVSlUpFYl6GlMqItVFLFdKlZQqKRWJehkZGQCkp6f7HImISOWK5aRUE51EJOopGRURiX4aUyoiUe+jjz7io48+8jsMERE5Buq+V/e9SNTTmFIRqS5iufteSamSUpGol5mZCUBaWprPkYiIVK5YTko1plREop6SURGR6KcxpSIS9d577z3ee+89v8MQEZFjoO57dd+LRD2NKRWR6iKWu++VlCopFYl627dvByA1NdXnSERE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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "disp_imp = np.array(val_metrics['disp_imp'])\n", - "disp_imp_err = 1 - np.minimum(disp_imp, 1/disp_imp)\n", - "plot(thresh_arr, 'Classification Thresholds',\n", - " val_metrics['bal_acc'], 'Balanced Accuracy',\n", - " disp_imp_err, '1 - min(DI, 1/DI)')" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "plot(thresh_arr, 'Classification Thresholds',\n", - " val_metrics['bal_acc'], 'Balanced Accuracy',\n", - " val_metrics['avg_odds_diff'], 'avg. odds diff.')" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.2200\nBest balanced accuracy: 0.7581\nCorresponding 1-min(DI, 1/DI) value: 0.2939\nCorresponding average odds difference value: -0.0084\nCorresponding statistical parity difference value: -0.0992\nCorresponding equal opportunity difference value: 0.0242\nCorresponding Theil index value: 0.0938\n" - } - ], - "source": [ - "describe_metrics(val_metrics, thresh_arr)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 4.2.3. Testing LR model after reweighing" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "lr_transf_metrics = test(dataset=dataset_orig_panel19_test,\n", - " model=lr_transf_panel19,\n", - " thresh_arr=[thresh_arr[lr_transf_best_ind]])" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.2200\nBest balanced accuracy: 0.7539\nCorresponding 1-min(DI, 1/DI) value: 0.2482\nCorresponding average odds difference value: -0.0151\nCorresponding statistical parity difference value: -0.0872\nCorresponding equal opportunity difference value: -0.0035\nCorresponding Theil index value: 0.0966\n" - } - ], - "source": [ - "describe_metrics(lr_transf_metrics, [thresh_arr[lr_transf_best_ind]])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The fairness metrics for the logistic regression model learned after reweighing are well improved, and thus the model is much more fair relative to the logistic regression model learned from the original data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.3. Learning a Random Forest (RF) classifier on data transformed by reweighing" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 4.3.1. Training RF model after reweighing" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "dataset = dataset_transf_panel19_train\n", - "model = make_pipeline(StandardScaler(),\n", - " RandomForestClassifier(n_estimators=500, min_samples_leaf=25))\n", - "fit_params = {'randomforestclassifier__sample_weight': dataset.instance_weights}\n", - "rf_transf_panel19 = model.fit(dataset.features, dataset.labels.ravel(), **fit_params)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 4.3.2. Validating RF model after reweighing" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "thresh_arr = np.linspace(0.01, 0.5, 50)\n", - "val_metrics = test(dataset=dataset_orig_panel19_val,\n", - " model=rf_transf_panel19,\n", - " thresh_arr=thresh_arr)\n", - "rf_transf_best_ind = np.argmax(val_metrics['bal_acc'])" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "disp_imp = np.array(val_metrics['disp_imp'])\n", - "disp_imp_err = 1 - np.minimum(disp_imp, 1/disp_imp)\n", - "plot(thresh_arr, 'Classification Thresholds',\n", - " val_metrics['bal_acc'], 'Balanced Accuracy',\n", - " disp_imp_err, '1 - min(DI, 1/DI)')" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "plot(thresh_arr, 'Classification Thresholds',\n", - " val_metrics['bal_acc'], 'Balanced Accuracy',\n", - " val_metrics['avg_odds_diff'], 'avg. odds diff.')" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.2500\nBest balanced accuracy: 0.7703\nCorresponding 1-min(DI, 1/DI) value: 0.4516\nCorresponding average odds difference value: -0.0876\nCorresponding statistical parity difference value: -0.1668\nCorresponding equal opportunity difference value: -0.0758\nCorresponding Theil index value: 0.0906\n" - } - ], - "source": [ - "describe_metrics(val_metrics, thresh_arr)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 4.3.3. Testing RF model after reweighing" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "rf_transf_metrics = test(dataset=dataset_orig_panel19_test,\n", - " model=rf_transf_panel19,\n", - " thresh_arr=[thresh_arr[rf_transf_best_ind]])" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.2500\nBest balanced accuracy: 0.7586\nCorresponding 1-min(DI, 1/DI) value: 0.4307\nCorresponding average odds difference value: -0.0843\nCorresponding statistical parity difference value: -0.1632\nCorresponding equal opportunity difference value: -0.0611\nCorresponding Theil index value: 0.0963\n" - } - ], - "source": [ - "describe_metrics(rf_transf_metrics, [thresh_arr[rf_transf_best_ind]])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once again, the model learned from the transformed data is fairer than that learned from the original data. However, the random forest model learned from the transformed data is still relatively unfair as compared to the logistic regression model learned from the transformed data." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "## [5.](#Table-of-Contents) Bias mitigation using in-processing technique - Prejudice Remover (PR)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 5.1. Learning a Prejudice Remover (PR) model on original data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 5.1.1. Training a PR model" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "model = PrejudiceRemover(sensitive_attr=sens_attr, eta=25.0)\n", - "pr_orig_scaler = StandardScaler()\n", - "\n", - "dataset = dataset_orig_panel19_train.copy()\n", - "dataset.features = pr_orig_scaler.fit_transform(dataset.features)\n", - "\n", - "pr_orig_panel19 = model.fit(dataset)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 5.1.2. Validating PR model" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "thresh_arr = np.linspace(0.01, 0.50, 50)\n", - "\n", - "dataset = dataset_orig_panel19_val.copy()\n", - "dataset.features = pr_orig_scaler.transform(dataset.features)\n", - "\n", - "val_metrics = test(dataset=dataset,\n", - " model=pr_orig_panel19,\n", - " thresh_arr=thresh_arr)\n", - "pr_orig_best_ind = np.argmax(val_metrics['bal_acc'])" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "disp_imp = np.array(val_metrics['disp_imp'])\n", - "disp_imp_err = 1 - np.minimum(disp_imp, 1/disp_imp)\n", - "plot(thresh_arr, 'Classification Thresholds',\n", - " val_metrics['bal_acc'], 'Balanced Accuracy',\n", - " disp_imp_err, '1 - min(DI, 1/DI)')" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "plot(thresh_arr, 'Classification Thresholds',\n", - " val_metrics['bal_acc'], 'Balanced Accuracy',\n", - " val_metrics['avg_odds_diff'], 'avg. odds diff.')" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.1200\nBest balanced accuracy: 0.6836\nCorresponding 1-min(DI, 1/DI) value: 0.2268\nCorresponding average odds difference value: 0.0254\nCorresponding statistical parity difference value: -0.0830\nCorresponding equal opportunity difference value: 0.1172\nCorresponding Theil index value: 0.1119\n" - } - ], - "source": [ - "describe_metrics(val_metrics, thresh_arr)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 5.1.3. Testing PR model" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [], - "source": [ - "dataset = dataset_orig_panel19_test.copy()\n", - "dataset.features = pr_orig_scaler.transform(dataset.features)\n", - "\n", - "pr_orig_metrics = test(dataset=dataset,\n", - " model=pr_orig_panel19,\n", - " thresh_arr=[thresh_arr[pr_orig_best_ind]])" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.1200\nBest balanced accuracy: 0.6880\nCorresponding 1-min(DI, 1/DI) value: 0.1588\nCorresponding average odds difference value: 0.0523\nCorresponding statistical parity difference value: -0.0566\nCorresponding equal opportunity difference value: 0.1479\nCorresponding Theil index value: 0.1108\n" - } - ], - "source": [ - "describe_metrics(pr_orig_metrics, [thresh_arr[pr_orig_best_ind]])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As in the case of reweighing, prejudice remover results in a fair model. However, it has come at the expense of relatively lower balanced accuracy." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [6.](#Table-of-Contents) Summary of Model Learning Results" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": " bal_acc avg_odds_diff disp_imp \\\nBias Mitigator Classifier \n Logistic Regression 0.775935 -0.205706 0.426176 \n Random Forest 0.763772 -0.138763 0.485869 \nReweighing Logistic Regression 0.753893 -0.015104 0.751755 \nReweighing Random Forest 0.758565 -0.084303 0.569260 \nPrejudice Remover 0.688028 0.052286 0.841229 \n\n stat_par_diff eq_opp_diff theil_ind \nBias Mitigator Classifier \n Logistic Regression -0.261207 -0.222779 0.092122 \n Random Forest -0.218998 -0.113503 0.093575 \nReweighing Logistic Regression -0.087196 -0.003518 0.096575 \nReweighing Random Forest -0.163191 -0.061108 0.096345 \nPrejudice Remover -0.056631 0.147869 0.110774 ", - "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
bal_accavg_odds_diffdisp_impstat_par_diffeq_opp_difftheil_ind
Bias MitigatorClassifier
Logistic Regression0.775935-0.2057060.426176-0.261207-0.2227790.092122
Random Forest0.763772-0.1387630.485869-0.218998-0.1135030.093575
ReweighingLogistic Regression0.753893-0.0151040.751755-0.087196-0.0035180.096575
ReweighingRandom Forest0.758565-0.0843030.569260-0.163191-0.0611080.096345
Prejudice Remover0.6880280.0522860.841229-0.0566310.1478690.110774
\n
" - }, - "metadata": {}, - "execution_count": 46 - } - ], - "source": [ - "import pandas as pd\n", - "pd.set_option('display.multi_sparse', False)\n", - "results = [lr_orig_metrics, rf_orig_metrics, lr_transf_metrics,\n", - " rf_transf_metrics, pr_orig_metrics]\n", - "debias = pd.Series(['']*2 + ['Reweighing']*2\n", - " + ['Prejudice Remover'],\n", - " name='Bias Mitigator')\n", - "clf = pd.Series(['Logistic Regression', 'Random Forest']*2 + [''],\n", - " name='Classifier')\n", - "pd.concat([pd.DataFrame(metrics) for metrics in results], axis=0).set_index([debias, clf])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Of all the models, the logistic regression model gives the best balance in terms of balanced accuracy and fairness. While the model learnt by prejudice remover is slightly fairer, it has much lower accuracy. All other models are quite unfair compared to the logistic model. Hence, we take the logistic regression model learnt from data transformed by re-weighing and 'deploy' it." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [7.](#Table-of-Contents) Deploying model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 7.1. Testing model learned on 2014 (Panel 19) on 2015 (Panel 20) deployment data" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [], - "source": [ - "dataset_orig_panel20_deploy = MEPSDataset20()\n", - "\n", - "# now align it with the 2014 dataset\n", - "dataset_orig_panel20_deploy = dataset_orig_panel19_train.align_datasets(dataset_orig_panel20_deploy)" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": { - "tags": [] - }, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "QrsoK5hTHHV7" + }, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.insert(0, '../')\n", + "\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from IPython.display import Markdown, display\n", + "\n", + "# Datasets\n", + "from aif360.datasets import MEPSDataset19\n", + "from aif360.datasets import MEPSDataset20\n", + "from aif360.datasets import MEPSDataset21\n", + "\n", + "# Fairness metrics\n", + "from aif360.metrics import BinaryLabelDatasetMetric\n", + "from aif360.metrics import ClassificationMetric\n", + "\n", + "# Explainers\n", + "from aif360.explainers import MetricTextExplainer\n", + "\n", + "# Scalers\n", + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "# Classifiers\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.pipeline import make_pipeline\n", + "\n", + "# Bias mitigation techniques\n", + "from aif360.algorithms.preprocessing import Reweighing\n", + "from aif360.algorithms.inprocessing import PrejudiceRemover\n", + "\n", + "# LIME\n", + "from aif360.datasets.lime_encoder import LimeEncoder\n", + "import lime\n", + "from lime.lime_tabular import LimeTabularExplainer\n", + "\n", + "np.random.seed(1)" + ] + }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Test Dataset shape" - }, - "metadata": {} + "cell_type": "markdown", + "metadata": { + "id": "KBOISv2hHHV8" + }, + "source": [ + "### 3.1. Load data & create splits for learning/validating/testing model" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "(17570, 138)\n" + "cell_type": "markdown", + "metadata": { + "id": "8WYyOIpsHHV8" + }, + "source": [ + "Get the dataset and split into train (50%), validate (30%), and test (20%)" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Favorable and unfavorable labels" - }, - "metadata": {} + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "_Xxxpd6LHHV8" + }, + "outputs": [], + "source": [ + "(dataset_orig_panel19_train,\n", + " dataset_orig_panel19_val,\n", + " dataset_orig_panel19_test) = MEPSDataset19().split([0.5, 0.8], shuffle=True)\n", + "\n", + "sens_ind = 0\n", + "sens_attr = dataset_orig_panel19_train.protected_attribute_names[sens_ind]\n", + "\n", + "unprivileged_groups = [{sens_attr: v} for v in\n", + " dataset_orig_panel19_train.unprivileged_protected_attributes[sens_ind]]\n", + "privileged_groups = [{sens_attr: v} for v in\n", + " dataset_orig_panel19_train.privileged_protected_attributes[sens_ind]]" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "1.0 0.0\n" + "cell_type": "markdown", + "metadata": { + "id": "KrANNAJ2HHV8" + }, + "source": [ + "This function will be used throughout the notebook to print out some labels, names, etc." + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Protected attribute names" - }, - "metadata": {} + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true, + "id": "a11OtzvpHHV8" + }, + "outputs": [], + "source": [ + "def describe(train=None, val=None, test=None):\n", + " if train is not None:\n", + " display(Markdown(\"#### Training Dataset shape\"))\n", + " print(train.features.shape)\n", + " if val is not None:\n", + " display(Markdown(\"#### Validation Dataset shape\"))\n", + " print(val.features.shape)\n", + " display(Markdown(\"#### Test Dataset shape\"))\n", + " print(test.features.shape)\n", + " display(Markdown(\"#### Favorable and unfavorable labels\"))\n", + " print(test.favorable_label, test.unfavorable_label)\n", + " display(Markdown(\"#### Protected attribute names\"))\n", + " print(test.protected_attribute_names)\n", + " display(Markdown(\"#### Privileged and unprivileged protected attribute values\"))\n", + " print(test.privileged_protected_attributes,\n", + " test.unprivileged_protected_attributes)\n", + " display(Markdown(\"#### Dataset feature names\"))\n", + " print(test.feature_names)" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "['RACE']\n" + "cell_type": "markdown", + "metadata": { + "id": "G2ZKAdY4HHV8" + }, + "source": [ + "Show 2015 dataset details" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Privileged and unprivileged protected attribute values" - }, - "metadata": {} + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "3jCL-l67HHV9", + "outputId": "bc17de82-2f69-43bf-ce21-22f69b900bad" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Training Dataset shape" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "(7915, 138)\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Validation Dataset shape" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "(4749, 138)\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Test Dataset shape" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "(3166, 138)\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Favorable and unfavorable labels" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "1.0 0.0\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Protected attribute names" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "['RACE']\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Privileged and unprivileged protected attribute values" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "[array([1.])] [array([0.])]\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Dataset feature names" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "['AGE', 'RACE', 'PCS42', 'MCS42', 'K6SUM42', 'REGION=1', 'REGION=2', 'REGION=3', 'REGION=4', 'SEX=1', 'SEX=2', 'MARRY=1', 'MARRY=2', 'MARRY=3', 'MARRY=4', 'MARRY=5', 'MARRY=6', 'MARRY=7', 'MARRY=8', 'MARRY=9', 'MARRY=10', 'FTSTU=-1', 'FTSTU=1', 'FTSTU=2', 'FTSTU=3', 'ACTDTY=1', 'ACTDTY=2', 'ACTDTY=3', 'ACTDTY=4', 'HONRDC=1', 'HONRDC=2', 'HONRDC=3', 'HONRDC=4', 'RTHLTH=-1', 'RTHLTH=1', 'RTHLTH=2', 'RTHLTH=3', 'RTHLTH=4', 'RTHLTH=5', 'MNHLTH=-1', 'MNHLTH=1', 'MNHLTH=2', 'MNHLTH=3', 'MNHLTH=4', 'MNHLTH=5', 'HIBPDX=-1', 'HIBPDX=1', 'HIBPDX=2', 'CHDDX=-1', 'CHDDX=1', 'CHDDX=2', 'ANGIDX=-1', 'ANGIDX=1', 'ANGIDX=2', 'MIDX=-1', 'MIDX=1', 'MIDX=2', 'OHRTDX=-1', 'OHRTDX=1', 'OHRTDX=2', 'STRKDX=-1', 'STRKDX=1', 'STRKDX=2', 'EMPHDX=-1', 'EMPHDX=1', 'EMPHDX=2', 'CHBRON=-1', 'CHBRON=1', 'CHBRON=2', 'CHOLDX=-1', 'CHOLDX=1', 'CHOLDX=2', 'CANCERDX=-1', 'CANCERDX=1', 'CANCERDX=2', 'DIABDX=-1', 'DIABDX=1', 'DIABDX=2', 'JTPAIN=-1', 'JTPAIN=1', 'JTPAIN=2', 'ARTHDX=-1', 'ARTHDX=1', 'ARTHDX=2', 'ARTHTYPE=-1', 'ARTHTYPE=1', 'ARTHTYPE=2', 'ARTHTYPE=3', 'ASTHDX=1', 'ASTHDX=2', 'ADHDADDX=-1', 'ADHDADDX=1', 'ADHDADDX=2', 'PREGNT=-1', 'PREGNT=1', 'PREGNT=2', 'WLKLIM=-1', 'WLKLIM=1', 'WLKLIM=2', 'ACTLIM=-1', 'ACTLIM=1', 'ACTLIM=2', 'SOCLIM=-1', 'SOCLIM=1', 'SOCLIM=2', 'COGLIM=-1', 'COGLIM=1', 'COGLIM=2', 'DFHEAR42=-1', 'DFHEAR42=1', 'DFHEAR42=2', 'DFSEE42=-1', 'DFSEE42=1', 'DFSEE42=2', 'ADSMOK42=-1', 'ADSMOK42=1', 'ADSMOK42=2', 'PHQ242=-1', 'PHQ242=0', 'PHQ242=1', 'PHQ242=2', 'PHQ242=3', 'PHQ242=4', 'PHQ242=5', 'PHQ242=6', 'EMPST=-1', 'EMPST=1', 'EMPST=2', 'EMPST=3', 'EMPST=4', 'POVCAT=1', 'POVCAT=2', 'POVCAT=3', 'POVCAT=4', 'POVCAT=5', 'INSCOV=1', 'INSCOV=2', 'INSCOV=3']\n" + } + ], + "source": [ + "describe(dataset_orig_panel19_train, dataset_orig_panel19_val, dataset_orig_panel19_test)" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "[array([1.])] [array([0.])]\n" + "cell_type": "markdown", + "metadata": { + "id": "Z0O8P8wZHHV9" + }, + "source": [ + "Metrics for original data" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Dataset feature names" - }, - "metadata": {} + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "m5IYpllTHHV9", + "outputId": "b6b4808f-dfd0-4dfe-ac8f-3ef935e01537" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 0.48230522996275893\n" + } + ], + "source": [ + "metric_orig_panel19_train = BinaryLabelDatasetMetric(\n", + " dataset_orig_panel19_train,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "explainer_orig_panel19_train = MetricTextExplainer(metric_orig_panel19_train)\n", + "\n", + "print(explainer_orig_panel19_train.disparate_impact())" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "['AGE', 'RACE', 'PCS42', 'MCS42', 'K6SUM42', 'REGION=1', 'REGION=2', 'REGION=3', 'REGION=4', 'SEX=1', 'SEX=2', 'MARRY=1', 'MARRY=2', 'MARRY=3', 'MARRY=4', 'MARRY=5', 'MARRY=6', 'MARRY=7', 'MARRY=8', 'MARRY=9', 'MARRY=10', 'FTSTU=-1', 'FTSTU=1', 'FTSTU=2', 'FTSTU=3', 'ACTDTY=1', 'ACTDTY=2', 'ACTDTY=3', 'ACTDTY=4', 'HONRDC=1', 'HONRDC=2', 'HONRDC=3', 'HONRDC=4', 'RTHLTH=-1', 'RTHLTH=1', 'RTHLTH=2', 'RTHLTH=3', 'RTHLTH=4', 'RTHLTH=5', 'MNHLTH=-1', 'MNHLTH=1', 'MNHLTH=2', 'MNHLTH=3', 'MNHLTH=4', 'MNHLTH=5', 'HIBPDX=-1', 'HIBPDX=1', 'HIBPDX=2', 'CHDDX=-1', 'CHDDX=1', 'CHDDX=2', 'ANGIDX=-1', 'ANGIDX=1', 'ANGIDX=2', 'MIDX=-1', 'MIDX=1', 'MIDX=2', 'OHRTDX=-1', 'OHRTDX=1', 'OHRTDX=2', 'STRKDX=-1', 'STRKDX=1', 'STRKDX=2', 'EMPHDX=-1', 'EMPHDX=1', 'EMPHDX=2', 'CHBRON=-1', 'CHBRON=1', 'CHBRON=2', 'CHOLDX=-1', 'CHOLDX=1', 'CHOLDX=2', 'CANCERDX=-1', 'CANCERDX=1', 'CANCERDX=2', 'DIABDX=-1', 'DIABDX=1', 'DIABDX=2', 'JTPAIN=-1', 'JTPAIN=1', 'JTPAIN=2', 'ARTHDX=-1', 'ARTHDX=1', 'ARTHDX=2', 'ARTHTYPE=-1', 'ARTHTYPE=1', 'ARTHTYPE=2', 'ARTHTYPE=3', 'ASTHDX=1', 'ASTHDX=2', 'ADHDADDX=-1', 'ADHDADDX=1', 'ADHDADDX=2', 'PREGNT=-1', 'PREGNT=1', 'PREGNT=2', 'WLKLIM=-1', 'WLKLIM=1', 'WLKLIM=2', 'ACTLIM=-1', 'ACTLIM=1', 'ACTLIM=2', 'SOCLIM=-1', 'SOCLIM=1', 'SOCLIM=2', 'COGLIM=-1', 'COGLIM=1', 'COGLIM=2', 'DFHEAR42=-1', 'DFHEAR42=1', 'DFHEAR42=2', 'DFSEE42=-1', 'DFSEE42=1', 'DFSEE42=2', 'ADSMOK42=-1', 'ADSMOK42=1', 'ADSMOK42=2', 'PHQ242=-1', 'PHQ242=0', 'PHQ242=1', 'PHQ242=2', 'PHQ242=3', 'PHQ242=4', 'PHQ242=5', 'PHQ242=6', 'EMPST=-1', 'EMPST=1', 'EMPST=2', 'EMPST=3', 'EMPST=4', 'POVCAT=1', 'POVCAT=2', 'POVCAT=3', 'POVCAT=4', 'POVCAT=5', 'INSCOV=1', 'INSCOV=2', 'INSCOV=3']\n" - } - ], - "source": [ - "# describe(dataset_orig_panel20_train, dataset_orig_panel20_val, dataset_orig_panel20_deploy)\n", - "describe(test=dataset_orig_panel20_deploy)" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 0.5456992351196291\n" - } - ], - "source": [ - "metric_orig_panel20_deploy = BinaryLabelDatasetMetric(\n", - " dataset_orig_panel20_deploy, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "explainer_orig_panel20_deploy = MetricTextExplainer(metric_orig_panel20_deploy)\n", - "\n", - "print(explainer_orig_panel20_deploy.disparate_impact())" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [], - "source": [ - "lr_transf_metrics_panel20_deploy = test(\n", - " dataset=dataset_orig_panel20_deploy,\n", - " model=lr_transf_panel19,\n", - " thresh_arr=[thresh_arr[lr_transf_best_ind]])" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.2200\nBest balanced accuracy: 0.7311\nCorresponding 1-min(DI, 1/DI) value: 0.1943\nCorresponding average odds difference value: 0.0071\nCorresponding statistical parity difference value: -0.0596\nCorresponding equal opportunity difference value: 0.0303\nCorresponding Theil index value: 0.1019\n" - } - ], - "source": [ - "describe_metrics(lr_transf_metrics_panel20_deploy, [thresh_arr[lr_transf_best_ind]])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Deployed model tested on the 2015 Panel 20 data still exhibits fairness as well as maintains accuracy." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [8.](#Table-of-Contents) Generating explanations for model predictions using LIME" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 8.1. Generating explanations on 2015 Panel 20 deployment data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This section shows how LIME can be integrated with AIF360 to get explanations for model predictions." - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [], - "source": [ - "train_dataset = dataset_transf_panel19_train # data the deployed model (lr from transformed data)\n", - "test_dataset = dataset_orig_panel20_deploy # the data model is being tested on\n", - "model = lr_transf_panel19 # lr_transf_panel19 is LR model learned from Panel 19 with Reweighing\n", - "thresh_arr = np.linspace(0.01, 0.5, 50)\n", - "best_thresh = thresh_arr[lr_transf_best_ind]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, we need to fit the encoder to the aif360 dataset" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [], - "source": [ - "lime_data = LimeEncoder().fit(train_dataset)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `transform()` method is then used to convert aif360 features to LIME-compatible features" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [], - "source": [ - "s_train = lime_data.transform(train_dataset.features)\n", - "s_test = lime_data.transform(test_dataset.features)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `LimeTabularExplainer` takes as input the LIME-compatible data along with various other arguments to create a lime explainer" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [], - "source": [ - "explainer = LimeTabularExplainer(\n", - " s_train, class_names=lime_data.s_class_names, \n", - " feature_names=lime_data.s_feature_names,\n", - " categorical_features=lime_data.s_categorical_features, \n", - " categorical_names=lime_data.s_categorical_names, \n", - " kernel_width=3, verbose=False, discretize_continuous=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `inverse_transform()` function is used to transform LIME-compatible data back to aif360-compatible data since that is needed by the model to make predictions. The function below is used to produce the predictions for any perturbed data that is produce by LIME" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "def s_predict_fn(x):\n", - " return model.predict_proba(lime_data.inverse_transform(x))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `explain_instance()` method can then be used to produce explanations for any instance in the test dataset" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [], - "source": [ - "def show_explanation(ind):\n", - " exp = explainer.explain_instance(s_test[ind], s_predict_fn, num_features=10)\n", - " print(\"Actual label: \" + str(test_dataset.labels[ind]))\n", - " exp.as_pyplot_figure()\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.2200\nActual label: [0.]\n" - }, - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } - }, - { - "output_type": "stream", - "name": "stdout", - "text": "Actual label: [0.]\n" - }, - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "print(\"Threshold corresponding to Best balanced accuracy: {:6.4f}\".format(best_thresh))\n", - "show_explanation(0)\n", - "show_explanation(2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "See the [LIME documentation](https://github.com/marcotcr/lime) for detailed description of results. In short, the left hand side shows the label predictions made by the model, the middle shows the features that are important to the instance in question and their contributions (weights) to the label prediction, while the right hand side shows the actual values of the features in the particular instance." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [9.](#Table-of-Contents) Re-deploying Model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 9.1. Testing model learned on 2014 (Panel 19) data on 2016 (Panel 21) deployment data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Load the Panel 21 data, and split it again into 3 parts: train, validate, and deploy. We test the deployed model against the deployment data. If a new model needs to be learnt, it will be learnt from the train/validate data and then tested again on the deployment data." - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": { - "tags": [] - }, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "3FPzVT6aHHV9" + }, + "source": [ + "### 3.2. Learning a Logistic Regression (LR) classifier on original data" + ] + }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Test Dataset shape" - }, - "metadata": {} + "cell_type": "markdown", + "metadata": { + "id": "B-TWJ25bHHV9" + }, + "source": [ + "#### 3.2.1. Training LR model on original data" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "(15675, 138)\n" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "eswfdeoeHHV-" + }, + "outputs": [], + "source": [ + "dataset = dataset_orig_panel19_train\n", + "model = make_pipeline(StandardScaler(),\n", + " LogisticRegression(solver='liblinear', random_state=1))\n", + "fit_params = {'logisticregression__sample_weight': dataset.instance_weights}\n", + "\n", + "lr_orig_panel19 = model.fit(dataset.features, dataset.labels.ravel(), **fit_params)" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Favorable and unfavorable labels" - }, - "metadata": {} + "cell_type": "markdown", + "metadata": { + "id": "gliJu1abHHV-" + }, + "source": [ + "#### 3.2.2. Validating LR model on original data" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "1.0 0.0\n" + "cell_type": "markdown", + "metadata": { + "id": "Pp1EFVfqHHV-" + }, + "source": [ + "This function will be used throughout the tutorial to find best threshold using a validation set" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Protected attribute names" - }, - "metadata": {} + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Ly9Re3JkHHV-" + }, + "outputs": [], + "source": [ + "from collections import defaultdict\n", + "\n", + "def test(dataset, model, thresh_arr):\n", + " try:\n", + " # sklearn classifier\n", + " y_val_pred_prob = model.predict_proba(dataset.features)\n", + " pos_ind = np.where(model.classes_ == dataset.favorable_label)[0][0]\n", + " except AttributeError:\n", + " # aif360 inprocessing algorithm\n", + " y_val_pred_prob = model.predict(dataset).scores\n", + " pos_ind = 0\n", + "\n", + " metric_arrs = defaultdict(list)\n", + " for thresh in thresh_arr:\n", + " y_val_pred = (y_val_pred_prob[:, pos_ind] > thresh).astype(np.float64)\n", + "\n", + " dataset_pred = dataset.copy()\n", + " dataset_pred.labels = y_val_pred\n", + " metric = ClassificationMetric(\n", + " dataset, dataset_pred,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "\n", + " metric_arrs['bal_acc'].append((metric.true_positive_rate()\n", + " + metric.true_negative_rate()) / 2)\n", + " metric_arrs['avg_odds_diff'].append(metric.average_odds_difference())\n", + " metric_arrs['disp_imp'].append(metric.disparate_impact())\n", + " metric_arrs['stat_par_diff'].append(metric.statistical_parity_difference())\n", + " metric_arrs['eq_opp_diff'].append(metric.equal_opportunity_difference())\n", + " metric_arrs['theil_ind'].append(metric.theil_index())\n", + "\n", + " return metric_arrs" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "['RACE']\n" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "WXYPRxEuHHV-" + }, + "outputs": [], + "source": [ + "thresh_arr = np.linspace(0.01, 0.5, 50)\n", + "val_metrics = test(dataset=dataset_orig_panel19_val,\n", + " model=lr_orig_panel19,\n", + " thresh_arr=thresh_arr)\n", + "lr_orig_best_ind = np.argmax(val_metrics['bal_acc'])" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Privileged and unprivileged protected attribute values" - }, - "metadata": {} + "cell_type": "markdown", + "metadata": { + "id": "j8y_WX34HHV-" + }, + "source": [ + "Plot metrics with twin x-axes" + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "[array([1.])] [array([0.])]\n" + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false, + "id": "e8LcnRvoHHV-" + }, + "outputs": [], + "source": [ + "def plot(x, x_name, y_left, y_left_name, y_right, y_right_name):\n", + " fig, ax1 = plt.subplots(figsize=(10,7))\n", + " ax1.plot(x, y_left)\n", + " ax1.set_xlabel(x_name, fontsize=16, fontweight='bold')\n", + " ax1.set_ylabel(y_left_name, color='b', fontsize=16, fontweight='bold')\n", + " ax1.xaxis.set_tick_params(labelsize=14)\n", + " ax1.yaxis.set_tick_params(labelsize=14)\n", + " ax1.set_ylim(0.5, 0.8)\n", + "\n", + " ax2 = ax1.twinx()\n", + " ax2.plot(x, y_right, color='r')\n", + " ax2.set_ylabel(y_right_name, color='r', fontsize=16, fontweight='bold')\n", + " if 'DI' in y_right_name:\n", + " ax2.set_ylim(0., 0.7)\n", + " else:\n", + " ax2.set_ylim(-0.25, 0.1)\n", + "\n", + " best_ind = np.argmax(y_left)\n", + " ax2.axvline(np.array(x)[best_ind], color='k', linestyle=':')\n", + " ax2.yaxis.set_tick_params(labelsize=14)\n", + " ax2.grid(True)" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": "", - "text/markdown": "#### Dataset feature names" - }, - "metadata": {} + "cell_type": "markdown", + "metadata": { + "id": "q2ouoHOKHHV-" + }, + "source": [ + "Here we plot $1 - \\min(\\text{disparate impact}, 1/\\text{disparate impact})$ since it's possible to overcorrect and end up with a value greater than 1, implying unfairness for the original privileged group. For shorthand, we simply call this 1-min(DI, 1/DI) from now on. We want the plotted metric to be less than 0.2." + ] }, { - "output_type": "stream", - "name": "stdout", - "text": "['AGE', 'RACE', 'PCS42', 'MCS42', 'K6SUM42', 'REGION=1', 'REGION=2', 'REGION=3', 'REGION=4', 'SEX=1', 'SEX=2', 'MARRY=1', 'MARRY=2', 'MARRY=3', 'MARRY=4', 'MARRY=5', 'MARRY=6', 'MARRY=7', 'MARRY=8', 'MARRY=9', 'MARRY=10', 'FTSTU=-1', 'FTSTU=1', 'FTSTU=2', 'FTSTU=3', 'ACTDTY=1', 'ACTDTY=2', 'ACTDTY=3', 'ACTDTY=4', 'HONRDC=1', 'HONRDC=2', 'HONRDC=3', 'HONRDC=4', 'RTHLTH=-1', 'RTHLTH=1', 'RTHLTH=2', 'RTHLTH=3', 'RTHLTH=4', 'RTHLTH=5', 'MNHLTH=-1', 'MNHLTH=1', 'MNHLTH=2', 'MNHLTH=3', 'MNHLTH=4', 'MNHLTH=5', 'HIBPDX=-1', 'HIBPDX=1', 'HIBPDX=2', 'CHDDX=-1', 'CHDDX=1', 'CHDDX=2', 'ANGIDX=-1', 'ANGIDX=1', 'ANGIDX=2', 'MIDX=-1', 'MIDX=1', 'MIDX=2', 'OHRTDX=-1', 'OHRTDX=1', 'OHRTDX=2', 'STRKDX=-1', 'STRKDX=1', 'STRKDX=2', 'EMPHDX=-1', 'EMPHDX=1', 'EMPHDX=2', 'CHBRON=-1', 'CHBRON=1', 'CHBRON=2', 'CHOLDX=-1', 'CHOLDX=1', 'CHOLDX=2', 'CANCERDX=-1', 'CANCERDX=1', 'CANCERDX=2', 'DIABDX=-1', 'DIABDX=1', 'DIABDX=2', 'JTPAIN=-1', 'JTPAIN=1', 'JTPAIN=2', 'ARTHDX=-1', 'ARTHDX=1', 'ARTHDX=2', 'ARTHTYPE=-1', 'ARTHTYPE=1', 'ARTHTYPE=2', 'ARTHTYPE=3', 'ASTHDX=1', 'ASTHDX=2', 'ADHDADDX=-1', 'ADHDADDX=1', 'ADHDADDX=2', 'PREGNT=-1', 'PREGNT=1', 'PREGNT=2', 'WLKLIM=-1', 'WLKLIM=1', 'WLKLIM=2', 'ACTLIM=-1', 'ACTLIM=1', 'ACTLIM=2', 'SOCLIM=-1', 'SOCLIM=1', 'SOCLIM=2', 'COGLIM=-1', 'COGLIM=1', 'COGLIM=2', 'DFHEAR42=-1', 'DFHEAR42=1', 'DFHEAR42=2', 'DFSEE42=-1', 'DFSEE42=1', 'DFSEE42=2', 'ADSMOK42=-1', 'ADSMOK42=1', 'ADSMOK42=2', 'PHQ242=-1', 'PHQ242=0', 'PHQ242=1', 'PHQ242=2', 'PHQ242=3', 'PHQ242=4', 'PHQ242=5', 'PHQ242=6', 'EMPST=-1', 'EMPST=1', 'EMPST=2', 'EMPST=3', 'EMPST=4', 'POVCAT=1', 'POVCAT=2', 'POVCAT=3', 'POVCAT=4', 'POVCAT=5', 'INSCOV=1', 'INSCOV=2', 'INSCOV=3']\n" - } - ], - "source": [ - "dataset_orig_panel21_deploy = MEPSDataset21()\n", - "\n", - "# now align it with the panel19 datasets\n", - "dataset_orig_panel21_deploy = dataset_orig_panel19_train.align_datasets(dataset_orig_panel21_deploy)\n", - "\n", - "describe(test=dataset_orig_panel21_deploy)" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 0.48375589333734254\n" - } - ], - "source": [ - "metric_orig_panel21_deploy = BinaryLabelDatasetMetric(\n", - " dataset_orig_panel21_deploy, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "explainer_orig_panel21_deploy = MetricTextExplainer(metric_orig_panel21_deploy)\n", - "\n", - "print(explainer_orig_panel21_deploy.disparate_impact())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, the logistic regression classifier trained on the panel 19 data after reweighing is tested against the panel 21 deployment data." - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [], - "source": [ - "lr_transf_metrics_panel21_deploy = test(\n", - " dataset=dataset_orig_panel21_deploy,\n", - " model=lr_transf_panel19,\n", - " thresh_arr=[thresh_arr[lr_transf_best_ind]])" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.2200\nBest balanced accuracy: 0.7379\nCorresponding 1-min(DI, 1/DI) value: 0.2559\nCorresponding average odds difference value: -0.0143\nCorresponding statistical parity difference value: -0.0813\nCorresponding equal opportunity difference value: -0.0044\nCorresponding Theil index value: 0.0994\n" - } - ], - "source": [ - "describe_metrics(lr_transf_metrics_panel21_deploy, [thresh_arr[lr_transf_best_ind]])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Compared to the 2015 panel 20 deployment data results, the $|1 - \\text{disparate impact}|$ fairness metric shows a noticable drift upwards. While still within specs, it may be worthwhile to re-learn the model. So even though the model is still relatively fair and accurate, we go ahead and re-learn the model from the 2015 Panel 20 data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 9.2. Re-learning model (from 2015 Panel 20 data)" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": {}, - "outputs": [], - "source": [ - "(dataset_orig_panel20_train,\n", - " dataset_orig_panel20_val,\n", - " dataset_orig_panel20_test) = MEPSDataset20().split([0.5, 0.8], shuffle=True) \n", - "\n", - "# now align them with the 2014 datasets\n", - "dataset_orig_panel20_train = dataset_orig_panel19_train.align_datasets(dataset_orig_panel20_train)\n", - "dataset_orig_panel20_val = dataset_orig_panel19_train.align_datasets(dataset_orig_panel20_val)\n", - "dataset_orig_panel20_test = dataset_orig_panel19_train.align_datasets(dataset_orig_panel20_test)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Train and evaluate new model on 'transformed' 2016 training/test data**" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [], - "source": [ - "RW = Reweighing(unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "RW.fit(dataset_orig_panel20_train)\n", - "dataset_transf_panel20_train = RW.transform(dataset_orig_panel20_train)" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 1.0000000000000002\n" - } - ], - "source": [ - "metric_transf_panel20_train = BinaryLabelDatasetMetric(\n", - " dataset_transf_panel20_train, \n", - " unprivileged_groups=unprivileged_groups,\n", - " privileged_groups=privileged_groups)\n", - "explainer_transf_panel20_train = MetricTextExplainer(metric_transf_panel20_train)\n", - "\n", - "print(explainer_transf_panel20_train.disparate_impact())" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": {}, - "outputs": [], - "source": [ - "dataset = dataset_transf_panel20_train\n", - "model = make_pipeline(StandardScaler(),\n", - " LogisticRegression(solver='liblinear', random_state=1))\n", - "fit_params = {'logisticregression__sample_weight': dataset.instance_weights}\n", - "lr_transf_panel20 = model.fit(dataset.features, dataset.labels.ravel(), **fit_params)" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "metadata": {}, - "outputs": [], - "source": [ - "thresh_arr = np.linspace(0.01, 0.5, 50)\n", - "val_metrics = test(dataset=dataset_orig_panel20_val,\n", - " model=lr_transf_panel20,\n", - " thresh_arr=thresh_arr)\n", - "lr_transf_best_ind_panel20 = np.argmax(val_metrics['bal_acc'])" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "disp_imp = np.array(val_metrics['disp_imp'])\n", - "disp_imp_err = 1 - np.minimum(disp_imp, 1/disp_imp)\n", - "plot(thresh_arr, 'Classification Thresholds',\n", - " val_metrics['bal_acc'], 'Balanced Accuracy',\n", - " disp_imp_err, '1 - min(DI, 1/DI)')" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAroAAAG4CAYAAACq3USPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3hU1dbA4d+GhN4JVUKvghRBlCYgoKKI10YRC4hYsKHXT8FruYJdroIiKkUQsAuKqFSlSJcOUgRCCSVAgDTSk/X9sRMYYgIzZCZnMlnv88wzmTNnztlDmayzZu21jYiglFJKKaVUoCnk9ACUUkoppZTyBQ10lVJKKaVUQNJAVymllFJKBSQNdJVSSimlVEDSQFcppZRSSgUkDXSVUkoppVRA0kBXKaWUUkoFJEcCXWPMUGPMPmNMojFmvTGm00X2v9sYs8kYE2+MiTDGzDDGVM2yzx3GmO3GmKSM+9t8+y6UUkoppfyTJ7GWMaaaMeZLY8xOY0yaMWZqDvvlu1grzwNdY0xfYCzwBtAKWAnMNcbUzGH/DsB04HOgKfAv4HLgC5d92gHfZGxrmXH/nTHmat+9E6WUUkop/+NprAUUBSKBt4A1ORwzX8ZaJq9XRjPGrAG2iMgQl227ge9FZEQ2+z8LPCEitVy2DQI+FJFSGY+/ASqISA+XfRYBJ0Skv+/ejVJKKaWUf/E01sry2p+BSBEZmGV7voy18jSja4wpArQGFmR5agHQPoeXrQCqGWNuMVYI0A/41WWfdtkcc/4FjqmUUkopFXAuMdZyR76MtYLy+HwhQGHgWJbtx4Du2b1ARFYZY/phU+TFsWNeCNzvslvVHI5ZlWwYYx4CHgIoUaJE65CQEM/ehVJKKaWUAw4ePCjABpdNE0Rkgstjj2MtN3kUa/mLvA50PWaMuRz4EBiFvXKoBrwLfArcdynHzPgHMQGgZMmScuDAAe8MVqkCLCIiAoCqVf36M08ppfI1Y0yCiLRxehz5RV4HupFAGlAly/YqQEQOrxkBrBWRdzMebzHGnAH+MMa8ICKHMl7ryTGVUl7Wr18/AJYsWeLsQJRSqmC7lFjLHfky1srTGl0RSQbWAz2yPNUDOyMwOyWwf2GuMh9njn+Vh8dUSnnZ8OHDGT58uNPDUEqpAu0SYy135MtYy4nShfeA6caYtdiJZo8A1YFPAIwx0wBEJLMsYQ4w0RjzKOdKF8YAG0TkYMY+Y4FlxpjhwI/AbUBXoGOevCOlFDfeeKPTQ1BKKWV5GmthjGmZ8WMZID3jcbKIbM/Yni9jrTwPdEXkG2NMReBFbNC6DbhJRDILZWtm2X+qMaY08DjwPyAa+B143mWflRkT1l4DRgJ7gb4ikm0vOKWU94WHhwMQGhrq8EiUUqpg8zTWyrAxy+NbgANA7Yxj5stYK8/76PqbkiVLypkzZ5wehlL5XpcuXQCt0VVKKV8yxsSLSEmnx5Ff+H3XBaVU/vDiiy86PQSllFLqPJrR1YyuUkoppfIJzeh6Jk+7LiilAldYWBhhYWFOD0MppZQ6SzO6mtFVyiu0RlcppXxPM7qe0RpdpZRXvPrqq04PQSmllDqPZnQ1o6uUUkqpfEIzup7RGl2llFfs2rWLXbt2OT0MpZRS6izN6GpGVymv0BpdpZTyPc3oekZrdJVSXvHGG284PQSllFLqPJrR1YyuUkoppfIJzeh6Rmt0lVJesW3bNrZt2+b0MJRSSqmzNKOrGV2lvEJrdJVSyvc0o+sZrdFVSnnFu+++6/QQlFJKqfNoRlczukoppZTKJzSj6xmt0VVKecWmTZvYtGmT08NQSimlztKMrmZ0lfIKrdFVSinf04yuZ7RGVynlFWPGjHF6CEoppdR5NKOrGV2llFJK5ROa0fWM1ugqpbzizz//5M8//3R6GEoppdRZmtHVjK5SXqE1ukop5Xua0fWM1ugqpbxi3LhxTg9BKaWUOo9mdDWjq5RSSql8QjO6ntEaXaWUV6xcuZKVK1c6PQyllFLqLM3oakZXKa/QGl2llPI9zeh6Rmt0lVJe8emnnzo9BKWUUuo8mtHVjK5SSiml8gnN6HpGa3SVUl6xdOlSli5d6vQwlFJKqbM0o6sZXaW8Qmt0lVLK9zSj6xmt0VVKecVnn33m9BCUUkqp82hGVzO6SimllMonNKPrGa3RVUp5xaJFi1i0aJHTw1BKKaXO0oyuZnSV8gqt0VVKKd/TjK5nNNDVQFcprwgPDwcgNDTU4ZEopVTg0kDXMzoZTSnlFRrgKqWU8jdao6uU8op58+Yxb948p4ehlFJKnaWlC1q6oJRXaI2uUkr5npYueEYDXQ10lfKKiIgIAKpWrerwSJRSKnBpoOsZrdFVSnmFBrhKKaX8jdboKqW8Ys6cOcyZM8fpYSillFJnaemCli4o5RVao6uUUr6npQue0UBXA12lvCIyMhKAkJAQh0eilFKBSwNdz2iNrlLKKzTAVUop5W+0Rlcp5RWzZs1i1qxZTg9DKaWUOktLF7R0QSmv0BpdpZTyPS1d8IxmdJVSXjF79mxmz57t9DCUUkoBxpihxph9xphEY8x6Y0yni+zfOWO/RGNMmDHmkSzP/9cYI1luEb59F7mnga5SyivKli1L2bJlnR6GUkoVeMaYvsBY4A2gFbASmGuMqZnD/nWAXzP2awW8CXxojLkjy667gGoutyt88ga8SEsXtHRBKa/45ptvAOjbt6/DI1FKqcDlTumCMWYNsEVEhrhs2w18LyIjstn/beB2EWngsm0S0FRE2mU8/i9wp4g08847yRua0VVKecXHH3/Mxx9/7PQwlFKqQDPGFAFaAwuyPLUAaJ/Dy9pls/98oI0xJthlW11jzJGMkoivjTF1vTJoHyrw7cUqVKigk2eU8oLhw4cDOhlNKaV8LMgYs87l8QQRmeDyOAQoDBzL8rpjQPccjlkVWJTN/kEZxzsKrAEGAjuBysCLwEpjTFMROXkJ7yNPFPhA99SpU2dniyullFJK+blUEWmT1ycVkbmuj40xq4Ew4H7gvbwej7u0dEEp5RUzZsxgxowZTg9DKaUKukggDaiSZXsVIKcuCRE57J+acbx/EJE44C+gQXbP+wsNdJVSXjFp0iQmTZrk9DCUUqpAE5FkYD3QI8tTPbBdFbKzKof914lISnYvMMYUAxpjyxr8lnZd0K4LSnlFSor9LAwODr7InkoppS6Vm10X+gLTgaHACuARYDC2i8IBY8w0ABG5L2P/OsA2YCLwKdABGA/0F5GZGfuMBuYAB7E1ui8B1wJXiMgBb79Pb3Eko+tJE2NjzNRsGhSLMeaMyz5dctincd68I6VUcHCwBrlKKeUHROQbYBh2wtgmoCNwk0tAWjPjlrn/PuAmbOC6CfgP8GRmkJuhBvAVtpfuLCAJuMafg1xwIKObcZUxA3uVsTzjfhBwuYgczGb/skDxLJtXAMtEZFDGPl2AxUBT4JTLfidEJO1C49GMrlLeMXXqVAAGDhzo6DiUUiqQ6RLAnnEi0PWoiXE2r++ADZA7iMjKjG1dsIFuJRHJtmg6JxroKuUdmd1LtL2YUkr5jga6nsnT9mIuTYxHZ3nqQk2MsxoC/JUZ5GaxzhhTFNgOvCYiiy95sEopj2iAq5RSyt/kdY3uhZoYV73YizPKGPpgi6VdHQUeBe4AbsfWj/yWU+2vMeYhY8w6Y8y61NRUz96BUkoppZTKF/LbghH3YIPz6a4bRWQXNrjNtMoYUxv4P+CPrAfJWEFkAtjSBR+NVakCZeJEe/05ZMiQi+yplFJK5Y28zuheShNjV0OAmSJy6qJ72qXq/LqJsVKB5JtvvuGbb75xehhKKSelpcHHH8PcuRffV6k8kKcZXRFJNsZkNjH+zuWpHsDM7F9lGWPaAi2w7TLc0RI/b2KsVKCIjEvi/tcmUyK4MGnpQuFCxukhKaXy2rFjcM89sGiRfXzrrTB2LNSq5ey4VIHmROnCe8B0Y8xazjUxrg58ApC1ibGLh4DdIrIk6wGNMcOA/dil6IpgSxz+ha3ZVcp/JSVB0aJOj+KSxCamsOCvY8zefIQVeyJJS7dVQJ+t2MfIW5vSulYFh0eolMozS5ZA//4QFQWffgqnT8PIkdCkCbz4Ivz73/n2s07lb46sjGaMGQo8B1TDrsTxtIgsy3huCYCIdHHZvzQ2OztSRN7J5njPYcsaagAJ2ID3TRH59WJj0fZiyhEpKTBwIPz0E3z3Hdx4o9MjcktSahpLdp3gp01HWLTjGEmp6dQoX5xbW1YnbuOvHI9NZGPJq4mISeSOK2vwfM9GVC5dzOlhK+W/zpyB5cuhRAnolOPaSf4rPR3eeANeeQUaNLCfZ1dcYZ87eBCefhpmzYJGjWDcOOje3dnxBgBtL+YZXQJYA12V1xISoE8f+PlnCA2Fo0dh0iS4/36nR5attHRhddhJftp0hF+3HSU2MZWKJYvQq3k1ere8jCtrlsMYQ8+ePQH4/sc5jFu8h0l/hFEsqDDDejTkvna1CC7syEKMSvmXlBRYuxZ++81+xb96td0GcMMNMHo0NGvm7Bjddfy4LVVYuBDuvhs++QRKl/7nfnPnwhNPwN690Lcv/O9/cNlleT/eAKGBrmc00NVAV+Wl2Fhbt7ZkCYwfb3853HGH/YX3+uswYgQY/6hvTUsXZq4/xJhFf3MkOpFSRYO4oWlVbm1Znfb1KhJ0kcA17EQc/52znWV/n6BRldL8t3dT2tWr6NEYRATjJ38eSl2S9HTYutUGtr/9BsuWQVyc/X9+5ZXQrZu9bd8Or74KMTHw4IP2a/8qWedt+5Fly2ypwsmT8MEHMGTIhT+7EhPh7bfhzTchONi+1yeesD8rj2ig6xkNdDXQVXnl1Cm46SZYtw4+/xwGDLDbk5PhgQfgiy9g6FD7S6NwYceGKSIs2XWCt+buZNexWFrVLMeQTnW5rnFligV7Ni4RYeH2Y4z8eTuHTidwS4vqvHBTY6qVPX9V7+iEFMJOxLH3xBn2nohj7/E49p6II/xUAq1qluPhznXp0rAyhXSSm/KF9HSYNg1OnIB774WqF23rfmEiNhCcOBHmz4fIjAU7GzU6F9h26QIVstSxnzwJo0bBRx9BsWLwwgswbBgUL/6PUzgmPR3eegteegnq1bOlCi1auP/6vXvhySfh119ticP48dCxo+/GG4A00PWMBroa6Kq8EBEB118Pu3bBt9/arK6r9HSbzX3nHbjtNhv0OvDLbdvhaN74dQcr956kVsUSPH9jY3o2q+pWVnXs2LEAPPXUU/94LjEljY+X7OXjpXsJKmQYcHVNziSnZQS0Z4iMSzq7b1AhQ+2QktQNKUn1csWZ/1cER6MTaVC5FEM61eXWVtUpGuTchYAKMLt3w+DB8EdGy/WgIPt/8JFHoGtXz75hiYmB6dNt8LZ9O5QvD716nQtua9Rw7zh//w3PPw8//gg1a9osaL9+UMjh8p/MC4H5820JwoQJUKaM58cRse/tqacgPNzev/GGrVPOrZ077Z9Tw4a5P5af0kDXMxroaqDrO6dOQalSUKSI0yNx1sGDdgLG4cMwe/aFJ2N88IHN4LRvbyeqZc34+Mih0/GMnr+LHzcdoXyJYJ7q1oC7r65FkSD3f7H27t0bgJ9++inHfQ6ejGfUL9tZuP0YZYsHU79yKepVKkm9SqWoW8n+HFqhxHn1vClp6fy85QgTlu1jx9EYKpcuysAOtRnQthZlS+jXngXS6dMQHQ21a1/6MdLSYMwY2xGgaFF4/33o0MEGb1Om2M+vhg3h4Ydt/XzFC5TdbN1qg9vp0+3ksjZt4LHHbDCYmwvWJUvgmWdg40Zo2xbee8+OMa+kp9uL87Vr7e2HH+yfy5gx9s8lt2VFZ87A8OF2klqDBjB1qv3suxRHj9pkweef28dt28J999kLhAv93eVDGuh6RgNdDXR948cf7SSFcuXsB/WQIdlPUgh0f/9tA9uYGPtVnTsf4t9+a7Mm9erBvHnEVanObzuOUa1scZrXKOtx+cCFRMen8NGSPUxdsR9jYHDHOjzSpR5livk2gIxPTqV4cGGP6m9FhOV7IpmwLIw/dkdSskhh+l5Vkwc61qZGeS9kgpT/SU21GdctW+xt82Z7Hx5un+/YER5/HG6/3bNaz+3bbbnQmjVwyy12ElX16ueeT0yE77+321essIFwnz42y9uunQ3wkpNtN4Hx4202uFgxG1QNHQpXXeW9P4P0dBtAv/ACHDlix9u6tS2vcL1VqWLHcKlE7MV4ZlC7dq0ts4qNtc+XLg3XXGPrbFu18s57y/T77/bvIzzctiEbOdL995KUZHv1jhpl/06efhoqV7alKJs3238XN99sP1NvvjkgWpxpoOsZDXQ10PUuEVu/9cIL9sO+dGn7IVa+vP2F9MQTUKmS06PMG1u2QI8e9s9kwQJo2dL91y5ZQvqt/yIuqCgD73qVDeVCAfu1ftPLytK6Znna1C5P61rlqVLGs19u8cmpHIlKZMmu43z4+x5iElO4vVUN/n19Q6qX86NawAv460g0k/7Yx5zNRxCgV/NqPNa1Pg2rFMCLqUCyfbv9v5IZ1P71lw1kwJYUNG4MzZufqwn99FMIC4Nq1WwQ+tBDF66vTUmBd9+1E6FKl4YPP7TB6YUuuLZuteeZNs0Gfc2bw7XX2gvS48ftBemjj9p2gb7MHJ45Y7sVjB9vF2bITrly5we+mdlkY869x+x+PnbMBrZHM9ZYCg62f8Zt2567NWrk29KJmBj4v/+zGfXLL7eZ2TZtct5fBH75xQa2e/bYC4D33oP69c/ts3mzvUj44gtbPla+vP37vu8+uPpqv5n46ykNdD2jga4Gut6TmGhnC3/xhe0mMGmS/aBdu9ZmAX74wV6lDx5sr9pz87Wjv1u9Gnr2tKUbCxfaX9BuEBE2HDzN5OX72Pf7aqZ89wplU5PYP/kLjrS8mnUHTrP+wGk2h0eRlJoOwGXlitO6VvmztzLFgjkSncDR6ASORCVyNDqBo1GJHIlO5EhUAtEJKWfP16lBCCN6NuHy6pdQZ5fF6NGjAXj22WdzfSx3HYlK4LPl+/hq7UEKGcOsoe1poMFu/pOQYIPP0aNtSUGVKucC2ubN7a1x439m49LTbeuqceNg3jwboN15p72gvuaa8wOZTZts1nDjRrjrLvuaypXdH2NcHHz1lV3edvNmW3s7dKi9mM3r2tmUFBtkR0Scux07dv7jiAh7kSBib5Dzz2XL2sREZlDbokXussO5MX++/R0REWFLEV566Z/lbzt32gB33jz772LMGNuaLSepqbbjxbRp9vdQQoItlbjvPnuB4m7ttJ/QQNczGuhqoOsdERHwr3/ZrwJzapO1c6edbDVjhv0F1b+/nXCRH3pGJifb2rSkJPtz1ltKyrmfIyJsuUbVqvbD1Y3lL1PS0pm7LYLJy/exOTyKMsWCuPvqWgyqWZgqff5lv769/HI78aNMGdJKlyaqUFEOpxfhQEphdicajqYXIa5IcTZWb0xEmZCzxy5bPJhqZYtRvVzx8+7rVy5F8xrlvPZHdMcddiHCmTMvuJq3TxyJSqD3uBWULFqYH4d2oHzJAl4Xnp8sWWJLm/bssYHoyJGX1mN1927brWDKFJsdvPJKG/DedpvNhL75pq15Hz/etvS7VCL2c8CpQLAgiIqygezUqTbo/vxzex8dbf99fPCBnbj23//abwo9KVuJiYGZM+0xly61Fyk9e9p/gzffbL858HMa6HpGA10NdHNv40bbReDkSfs10e23X3j/Q4fsxI9PP7Vfx/XqZa/a27bNm/G6ioiA9evtbOLISHvv+nPmfXS0Z8dt1sx+BVut2gV3i45P4as/D/L5yv0cjU6kTkhJHuhQmzta16BEkYwP3NOn4eWX7aS2mJhzt9hYe5+QcN4xk0uXYedHUylxQw+qlyt27jgBbsPB0/SbsJrWNcszbXBbXaDC30VFwXPP2RZcdevar6y7dcv9cePi7MX0hx/aUojChW2W+N577edOgE1MCmhz5thylMhIexH044/283jwYJtQ8SQjn52wMJg82V4cHT1qP68HDrTHr1fPK2/BFzTQ9YwGuhro5s6sWfYXSIUKtkuAJ5MUTp2yGZixY20wN3q07Tjgy7opEdi2zY51zhybgXZVpIitIQ4J+ed9xYo2ixAcbPdzvbluCw629Ww5THoQETaGR/HdunBmbzpCfHIa7epWZHDHOlzX+BJ6xaak2KA3NtZ+WA8ebCfBTZxoP7QLkFkbDvHMt5u555qavPavK5wejsrJDz/YrgTHjtlvP1591TutpVyJ2Gzx99/b/tU33+zd46u8cfKkzcx/9ZXtODF2rJ2M502pqXay8MSJ9j493V50Pfig/UbAzyawaaDrGQ10NdC9NCK27+GLL9qi/h9/vPQm67Gxtn3PDz/YoPnTT73bQzY52c6K/ukne9u/326/6iro3dv2yqxWzQazpUv7LNCOjEvihw2H+XZdOLuPx1E8uDC9mldjYIfaNK1e1nsnioqyNYiLFtlJgaNG5UkN4VtvvQXA8OHDfX6uC45j7k4+WbqXkbc25b52tR0di8oiIsJ+1Txzpv0qevJk7wctKjDt22fndfh6AtnhwzbDO3my/V1RsaL9vXTbbbbu2w/aZWqg6xkNdDXQ9VxCgr3S/fJLu7rXpEm5r1dLT4fXXoNXXrEzbX/4IXcTBKKi7JX5Tz/ZySoxMXaM3bvb4LZXr4uWFXhDalo6S/8+wbfrwvltx3FS04Ura5ajT5tQbm5ejdK+auOVkmIzZhMn2l6eU6b4fAGKfv36AfD111/79DwXk5YuPDx9HYt3neDzQW3p2CDk4i9SviUCn30Gzz5rPz9eecX+rMu/Kn+Vnm7nWEycaBM5KSlQsqRd0e766+0kxMaNHencoIGuZzTQ1UDXfWlptnh/xAjbSeGNN2yzb2/+R5892/bfLVnSZn08bY5+4oSdeDJunK3/rVzZtp3p3dsGud7+ejQHYSfi+G79IWauP8Tx2CRCShXh9itrcFfrGnnXFUDEloM895zt/Tl7doFp7RaXlMod41dyNDqB2Y93pE6I/k5wzLFj9oL4t99sW66JEwN61SoVgKKjYfFiO+9i4UI7cRJsMqZHD3vr3j3PPl810PWMBroa6F6YiJ1s9sUX8PXXtmF52bI2Q3jbbb455/btdnLbgQM2YH3ooYu/xjXAjY+3vRKfeMKWVeRh65/k1HSe/mYTv2w9SuFChq6NKnFXm1Cua1zZuclRM2fai4dq1WzfySZNnBlHHgs/FU/vccspX7IIPwztQNnimj3Mc9u22W9Pjh+3E8GGDHF+GVulcmvfPhvwLlxoL+BOn7bbW7a0v3uef96np9dA1zMa6Gqgm72wMFua8MUXti1YcLBtwTJggM2Q+vhrcE6ftr14582zjeDHjs2+Nioy0mYtXQPcl15yJJgTEf797WZmbTzME9fV595ralHZw8UcfGbtWpvVTky0Ewivu87rpxg1ahQAL730ktePfanWhJ1kwKQ1tK8fwmf3tyFIOzHknfnzba14qVK2hOhCzf+Vyq/S0mznnszAt0ED+62FD2mg6xkNdDXQPef4cbvazxdf2AUPwH7VOGCAbcJeoULejictDf7zH7vYRMeOdvZ0lSr2uchIm8H98EPHA9xM78zbyfgle/l3j4Y80a2BY+PI0YEDdub5rl12wt8DD3j18Pfccw8AM2bM8Opxc+vrtQcZPmsrD3Sow8u3XO70cAqGjz+236g0a2a7m4SGOj0ipfKGiM/rdjXQ9YwGuhroWm+8YXu1pqXBFVfY4LZ/f6hZ0+mR2bYygwfb2a+ffWaXFPajABdg2qr9vDz7L+6+uiav/6sZxl+XloyOtlm2hQttR4bXXsu3y2B64tU5fzFlxX7euv0K+rX1g3/TgSotza56OHasvaj66ivbyUQp5TUa6HpGA10NdO1a7q1a2V6Tr79uA11/s3GjXXnt4EEbmPlJgAswb1sEj36xnm6Nq/DJPVf6/9fjrh0ZxoyBp55yekQ+l5qWzqCpf7I67CQzBl/N1XV10QCvi4215UY//2z7YY8ebRdrUEp5lQa6ntFAt6AHuiK2Xcq2bfYr7RA/bsV04oT9yv2OO/wiwAX4c/8pBkxaQ9PqZfjywWsoXiSf/GJPT7flKD/9ZGcSe6Fm9+WXXwZg5MiRuT6WL0QnpHDbRyuIjEuiW5Mq1K9cigaVS9GgSmlCyxf3/wsUfxYebmv3t22zy7MOHer0iJQKWBroekYD3YIe6Gb2wv3kE3j4YadHk6/sOR7LHR+vomLJInz/aHsqlHS+kbhHYmNtA/Rjx2DdOtuMPRcGDRoEwJQpU7wwON/YH3mGUT9vZ8fRGI5EJ57dXiSoEHVDSmYEv6VpUMUGwbUqlqRIkAbAF7R+vQ1y4+Jsjf+NNzo9IqUCmga6ntFAtyAHujExtuF19ep2KVz9mtFtx2ISuX38SpJS0/lhaHtCK+RNf16v273brhBXpw6sWJFnfYb9QWxiCntPnGH3sVj2HI9j9/E49hyPI/x0PJkfi0GFDLUqljgb/NavbG/1KpWiWHDO/19S09I5Gp3IwVPxhJ+Kt/enE4iMTaJlzXJ0aViJK2uVd67lnLf88IO9UK5c2ZYsNGvm9IiUCnga6HpGA92CHOg++6ztXLB6te03q9wSk5hCn09WEX4qnm8ebkezy7y4fK8T5s61E4f69bMdNwrA5LQLSUhOY++JOHYfzwiAj8Wx50QcB07Gk5ZuPy+NgdDyJWhQuRT1q5SiTLFgwk/FE37aBrVHohLP7gs2YK5Rvjhligez/UgMqelC6aJBdKgfQpdGlejcqBLVyvq4ZZ83pabaiYwjR0LbtnYxksyOKEopn9JA1zMa6BbUQPevv2xz6/vvt0v4Krckp6YzcMpa1u47xZRBV9GpQYCsNPbWW3bFu3fftRdAl2DEiBEAvPnmm94cmd9ISk1jf2R8RvY3lt3H49h7PI6wE2dITksnpFRRQisUp2aFEoSWL2HvK5QgtEJxqpUtTuFC9gIiJjGFlXsiWbLrBEt2nSAixpZQNK5ams6NKtG5YSXa1KrgvyUT+/bZLO6qVXDffbbsydd9tZVSZ2mg6xkNdFTPqT8AACAASURBVAtioCtiJx9t3mwnoBWQZWFzKz1dePrbTczedIT3+rTg9itrOD0k7xGBvn3tKmpz59q13D30UMYKdhMmTPD26Pxaalo6KWlySRMRRYS/j8WxZNdxluw6wboDp0hJE0oVDaJ1rfK0DC1Hy5rlaBVajnIlclkD7o3+njNm2IlmxtgAt3//3B1PKeUxDXQ9o4FuQQx0v/7a/oIaPx4efdTp0eQbb/66g0+XhfH8jY15tEs9p4fjfWfOQLt2cOgQ/Pkn1AvA9+jn4pJSWbEnkqV/n2D9/tP8fTz2bL1wnZCStAwtR6ua5WgZWo7GVcvknPUVgb//tmVJq1bZ+x07bAvBp5+GTp08C3qjo22A++WXdvGW6dNzPXlRKXVpNND1jAa6BS3QjY21E9CqVrXLwuoENLf8tPkIT361kfva1eLV3k39d0GI3AoLs0u1XnaZDZBKlXJ6RAVaXFIqWw5FsfFgFJvC7X1kXBJgO0U0q16GVjXLc1X5QrQ5voeKWzdgVq+2k0tPnbIHKVPG1uDXqWNXFzx1yvbNfvppm8XPbmltVytWwD332BZir7xiS1yCgnz8zpVSOdFA1zMa6Ba0QPe552wd5sqVNnunLupodAI3vL+MepVL8d3D7QK/3+rChbZF1O2323ZRbgb1z2bU9o4ePdqXoyvQRITDUQlsCo9i0/5TVP5yKl1+/576Jw5SCPtZfqR6HaJbtqFIh/ZU69mVEs2bnbugjY+35QdjxtgMb9WqNlP7yCP/LGHKnHA2ahTUqmUnKupnhlKO00DXMxroFqRAd8cOaN4c7r3XLqWrLio9Xbj3szVsPBjFr092onZIAfls+d//7KS0N96wGTw3PPbYYwB89NFHvhyZAti/Hx54ABYvJv2adhxv35mtoU34vUwdVp1MZf/JeAAKGWhUtQwtQ8txZc1y3NCsKmWKBdvShoUL4f33Yd48KFrUZm2HDbMtwlwnnN17L4wbZzPDSinHaaDrGQ10C0qgKwI9etjm7rt22b6X6qKmrNjHq3O28+btV9C/bU2nh5N3RGzg89VXtj/qTTc5PSIF9u9lwgR7EWIMvPceDB78j6z7qTPJbA6PYuPB02wMt2UPsYmplChSmNtaXcZ97WrTqGppu/OOHTB2LEybBgkJ0LkzbNgAhQrBxx/rhDOl/IwGup7RQLegBLrffQd9+tjMTEbmTV3Y7mOx9PpwOR3rhzDp/jaBW5ebk/h4O/EoLAw+/9z22tXaTOccPGiD2kWLoHt3mDwZarp38ZWeLmw9HM2M1QeYvfkIyanptKtbkfvb16J7kyq2HOfkSZg40QbSderYb31q1fLxm1JKeUoDXc9ooFsQAt24OGjSBEJC7FKvOgHtopJT07n94xUciUpk/rBrqVS6qNNDcsaBA3DttTbIqlLFfo09aBBcfvk/dh02bBgAY8aMyetR+kZMjF0pzungXsQGnU8/DenptqzkoYcuuVXYqTPJfPNnODNWH+BwVALVyxZjwDW16HdVKBVLFdB/50rlIxroeibAZ9UoAF5/3baM+ugjDXLd9MFvu9l2OIY3b7+i4Aa5YDN6e/bYla+uucZOYmra1M7i/+QTiIpyeoTeI2K/sh81yr7XcuXsBK3+/e1ErJMn835Mhw7ZspEHH7TdMLZuhYcfzlU/3Aoli/Bol3ose64rn97bmjqVSvLu/F20e+t3/v3tZrYcCqC/U6VUgacZ3UDP6O7aBVdcYSeWTJni9GjyhfUHTnHXJ6u4s3UN3rmzhdPD8S/Hj9tZ+1OmwLZtUKwY3HabzfJ262brOvOT2FhbCvDLL/Drr3D0qA0ir7rKdp44dMg+d+yYfW/t20OvXraMo2lT3y2XLGJrZp96ClJS4J13bM9rH/357j4Wy7RVB5i54RDxyWl0bliJN2+/gurldMUzpfyNZnQ9o4FuIAe6InDDDbZf7t9/6wQ0N5xJSqXn2D8QhLlPXUupolqTmi0RO7FxyhS7iEBUFISG2glsffpAixa+CwJza88eO8Hul19g6VIbSJYpY/+v3Hwz9Ox5/v+V9HT7Xn/+2d42bLDba9WyQW+vXtCliw36vWHfPnj8cRt4d+pk/4zzaPGOmMQUvl57kPcX7iaokOHlWy7nztY1Cl59ulJ+TANdD4lIgb6VKFFCAtaECSIgMm6c0yPJN4bP3Cy1h/8sa/eddHoo+UdCgsjXX8vQ0FAZaoz9N1e/vsgLL4hs3CiSnu70CO0Y5s4V6drVjg9EmjQRefZZkcWLRZKT3T/WoUP2/1bv3iLFi9tjhYSIjBkjkph46WNMTBQZOVKkWDGRUqXs8dLSLv14ubA/Mk7u+nil1Hr+Z3lgylo5Fp3gyDiUUv8EnBE34htgKLAPSATWA50usn/njP0SgTDgkdwe0x9umtHNi4xuWlre18bu2QMtW9pawwUL8t9Xyg5YuP0YQ6at49Eu9Xj+xsZODyffefbZZyE+ntEtW9ouH4sX23/79evbLO9dd+V9pjc52S55PXq0rW+97DJ48kk7ljp1cn/8hAT7Pv/3P/j9d7ss7qhRcPfdnv2fW7DAZnF377Zje+89qFEj9+PLhfR04bMV+3h3/i6KBRdm5K1N6d2iumZ3lXKYOxldY0xfYAY2MF2ecT8IuFxEDmazfx1gG/AZMB7omHHfT0RmXsox/YZ7VwVytdMRua9uPs/oHj8u0rKlyKxZvj2Pq5QUkWuuESlXTiQ8PO/Om4+diE2UK0cukBvHLJOkFGeyaAHn+HGb+ezeXaRwYTmb6R0xQmTdOpHUVN+dOzpaZPRokRo17HmbNROZOlUkKck350tPF5k/X6RVK3u+5s1Ffv314tns8HCRu+6yr2nQwB7Dz+w5Hiv/+mi51Hr+Z3l42jo5EZuLrLVSKtdwI6MLrAEmZtm2G3gzh/3fBnZn2TYJWHWpx/SXm7sph1XGsNkYnjCG8l6LsguC4GAoXtxmab76Km/O+eabsHq1bfbucFYoPxARhs/cSmxSKmP6tqRIkGa/vaJSJRgyxK7AFRFh+7PWrm0nVrVpAxUq2HrY116zWVFvfLNy5AgMH277yz77LDRoYGtdt2yB+++HIkVyf47sGAPXX2/b9331lW3pd9NN0LUrrFnzz/1TUmyWuXFjmDPHZoG3brXH8DP1KpXi+0fa8/yNjfl953Guf38Zc7cedXpYSqkcGGOKAK2BBVmeWgC0z+Fl7bLZfz7QxhgTfInH9AtulS4YQzqQuWMS8AMwSYTFPhxbnggNDZXp06f79ByF4+O54oUXKLtlC7v+7/+I6NnTZ+cqvXMnVz72GMe7dmXHiy/67DyB5HR8ModOJ1CtbHFCSvkoECoARo8eDWSUMFxAcHQ0Fdasoey2bZTZto1S+/YBkF64MHENGhDdrBnRzZoRc8UVJFeocP6LRSicmEjhM2cIio8/dx8XR8XVq6myaBEmPZ0T115LeL9+xDZq5JP3ejEmJYVqP/9M7enTKXL6NCc6dWLfgw8SX7MmZTdvpuGYMZTcv5/Idu3Y88QTJFar5sg4PZWUmk74qXgSUtIoV7wI1csVo3AhLWVQKi917do1GdjqsmmCiEzIfGCMqQ4cBjqLyDKX7S8DA0TkHx+Mxpi/gRkiMtJl27XAUqA6YDw9pr9wN9AdDfQBMtODmS8KAyYDU0WI8MkIfSzPui7Ex9s2TAsW2H62Q4f65hxXXmkzY1u2QHlNvl/MgZNnuGnsHzSvUY4vHryaQvpL+5KNGDECgDfffNOzF54+DatWwYoVsHy57RKSmGifq1PHLtoQE2NvsbG2C0J2iheHBx6AZ56BunVz8U68KC4O3n/fZrETEqBdO/sea9WCDz6A3r2dHqHHUtLS+XjJXj74bTflSxZhbN+WtK8f4vSwlCowLlajq4Hu+TyajGYMHYH+wB1AZv8dAdKA2cDrImzy9iB9KU/biyUl2RKGOXPs5JVnnvHu8R9/3AbRv/0G113n3WMHoHX7T/HoFxtISklj7rBruUx7hvqH5GTYuNEGvqtX2wltZcpc/Farll3kwR+dOGEXbvnuOxg4EP7zHxvA52N/HYnmya82EhZ5hieva8CT3RpodlepPOBGoFsEiAf6i8h3Lts/ApqJSOdsXrMM2Coij7lsuwv4EiiBDXQ9Oqa/uKSuC8YQCkzDtqIQ7B+AAKlAHxFme3OQvpTnfXSTk22v0e++s7WJ//mPd447b56td3z6aTtjW+VIRJix5iAj5/xF9XLFmXBvGxpVLe30sJTKd84kpfLS7G3M2nCYa+pWYGy/VlQp46V+wkqpbLnZdWENsFlEHnLZ9jcwU0RGZLP/28BtItLQZdsE4AoRaXcpx/QXnmZ0ewCPAL2AIGyAC7ARKAPUA7aL0MzL4/QZRxaMSE21X7FOn24D3VGjctdy6eRJaNYMKla0k2G81bg+ACWmpPHy7G18u+4QXRtVYkzfVpQtEez0sALCoEGDAJiiK/AVON+vP8RLP26jRJHCvN+3Jdc2rOT0kJQKWB60F5uObQG2Ahu7DQaaisgBY8w0ABG5L2P/zPZiE4FPgQ7Y9mL95fz2Yjke09vv01vcWvbJGP4PeAjILHwzQDq2XOF9Ef4whpLY+o2G2R9FnRUUBFOn2oD09ddt7d7o0ZcW7IrAww/bYHfePA1yL+BodAKPTF/P5kPRPHldfYZ1b6g1uV4UGhrq9BCUQ+5sXYMWNcry+Jcbue+ztQztUo9nejQkqLB2MFHKCSLyjTGmIvAiUA0bxN7kEpDWzLL/PmPMTcD7wKPAEeDJzCDXzWP6JU+7LhggBttQ+AMR9mfZbyfQQIQ8Xh3h0jm6BLAIDBtmJ6U8+iiMG+f5wg7Tptm2SW+/Dc8955txBoA1YSd57MsNJCSn8b8+LbmxWVWnh6RUwElITuPVOX/x9Z/htKlVng/6t6K61r4r5VW6BLBnPAl0w4APgckixOWwX3UgWAS/ju5dORrogg12R4ywgerAgTBpkvurqO3fD82b2xXQFi/O+9XX8gER4fOV+3ntlx3UrFiCCfe2pn5lrcdVypdmbzrMC7O2EhxUiPf6tOC6xlWcHpJSAUMDXc+4G+jeCvwkgucz1/yc44Eu2GB35Ej473/hqqtsk/k2baB1a9teKbuShrQ0u9+mTbaVWO3aeT1qv5eYksYLP2xl1obDdG9Shff6tqBMMa3H9ZV77rkHgBkzZjg8EuUPwk7E8fiXG9l+NIaHrq3LMz0aUixYL8aVyi0NdD3jVo0usAQINYZ4ESIzNxpDCLbtRLQI0T4YX8FgDLzyClSpApMnw5gxtjsD2F64mUFvmzb2VrOmbU/2xx+21leD3H84dDqeR2asZ9vhGJ7u3pAnrquv9bg+1sihxRmUf6pbqRSzhrbn9V92MGFZGD9sPMyDHesw4JpalCrq7q8epZTKHXczujOBfwFPi/CBy/bHgbHADyLc6bNR+pBfZHSzSk6GbdtsB4V162D9epu1TU21z1esaJvn33ILfP997jo2BKCI6ERu/Wg58UlpjOnXkm5N9GtTpZy0au9JPlq8h+V7IilTLIiBHeowqH1typfUlQiV8pRmdD3jbqB7CDvDrqYIh122VwcOAYdFyJdTrv0y0M1OYiJs3WqD3nXrbAP6yZMhRFckcpWYkkafT1ex93gc3z/anibVyjg9JKVUhk3hUYxfvIcF249Rokhh7m5bkwc71aVqWe0Wo5S7NND1jLuBbhK2zKGMCGdctpcEYoFkEfLlJ1W+CXTVRYkIT369iZ+3HGHCvW3ocblmcvNSv379APj6668dHonyd38fi+WTJXuZvfkIhY3hjtaX8fC19agdor+7lboYDXQ9424vq9iM++uzbM98nG0XBqXy0keL9zBn8xGeu6GxBrkOaNmyJS1btnR6GCofaFilNO/1bcmSZ7vQ56oazNxwmOv+t4Qnv9rI7mOxFz+AUkq5yd2M7gKgOxAN/A/YATQBngHKAotEuMHtkxozFPg/bDnEX8AwEfkjh32nAvdn89R5VzTGmM7Ae0BTbKPjd0Tkk4uNRTO6gWHetggembGe21pdxnt9WmC0blmpfON4TCKTl+9jxuoDJKWmM7hjHZ7s1oCSOmlNqX/QjK5n3A10bwe+h3+0FzMZ2+4U4Qe3TmiXkJuBXUJuecb9IOByETmYzf5lgawdx1cAy0RkUMY+mUvXfYZdsq5jxn0/11U9sqOBbv63/UgMd3y8kkZVS/P1Q9doCyOl8qlTZ5J5e+5OvlkXTvWyxXj5lqbc0LSKXrgq5UIDXc+4FegCGMNobAY3q9EiuL0klzFmDbBFRIa4bNsNfC8iI9x4fQdsgNxBRFZmbHsbuF1EGrjsNwm7/nK7Cx1PA938LTIuiVvHrSAtXfjp8Q5ULpMvS8UDwh133AHAzJkXvLZU6qLW7T/Fiz9uY2dELF0bVeLV3s2oWbGE08NSyi9ooOsZt78XEuFZY/gG6A1UAY5hF5H4091jGGOKAK2B0VmeWgC0d/MwQ4C/MoPcDO0yjuFqPnC/MSZYRFLcHaPKP5JS03hk+npOnkniu4fba5DrsHbtLnhNqZTb2tSuwM9PdGTqyv28v/Bvery/lMe61ufhznUpGqTf2Cil3Od2RtcrJzOmOnAY6Cwiy1y2vwwMEJELdpzPKGM4CowQkbEu2/8GZojISJdt1wJLgeoicjTLcR4CHgIoUqRI66SkpFy/N5W3RITnvt/Cd+sP8dHdV3Jz82pOD0kp5QMR0YmM+nk7v2w9Sp2Qkoy6tRkdG2hbRVVwaUbXM25ndI0hCLgJaMQ/a2YRYeQ/XuR992A7RUzPzUFEZAIwAWzpghfGpfLY5OX7+G79IZ7q1kCDXKUCWNWyxfhowJX0+fsEr8zexj2T19CreTVe6nU5VfRbHKUKDmPSMn4SRNyOX93a0RgqY5cBvlDG1Z1ANxJIw5Y+uKoCRLjx+iHATBE5lWV7RA7HTM04pwogi3ce541fd3DTFVV5qluDi79A5YnevXsD8NNPPzk8EhWIOjesxLxh1/Lp0jA+WrKH33ceZ8DVdsEJDXiVKhAuaVaquxHxq0DjCzzvVlZURJKNMeuBHsB3Lk/1AC44g8UY0xZoAQzL5ulVwG1ZtvUA1ml9bmDZczyWJ7/aSJNqZRh9VwsKFdLZ2P6iW7duTg9BBbhiwYV5qnsDbm1ZnfcX/c3k5fv4fOUB7mxTg0euracT1pQKbAdxM9505W57sb1AbWAqthWYAE8BT2T8/JYIU906oW0vNh3bVmwF8AgwGNsh4YAxZhqAiNyX5XWTgGtFpGE2x8xsLzYR+BTogG0v1l/biwWOmMQUbvlwOWeS0vjp8Q5UL/ePChqlVAFy4OQZPl0WxvfrDpGans4tLarzaJd6NK6qS3+rwKU1up5xN9BNBIKBqthuCyJCYWNoCmwFXhbhNbdPaheMeA67YMQ24OnMyWnGmCXYE3Rx2b80dhLaSBF5J4djdgbe59yCEW/rghGB5b0Fu/jg9z18/0g72tSu4PRwlFJ+4pjLghPxyWl0b1KFoV3rcWXN8k4PTSmvC8hA15j3sLW3/8YYm+gUmeaVQ7sZ6J4BimGD3QRsyUPVjJ9jgEMi1PTGgPKaBrr5Q1R8Mp3eXkynhiGMH9Da6eGobPTs2ROAuXPnOjwSVVCdPpPM56v2M2XFfqITUmhXtyKPda1Ph/oVddEJFTACNNBNB9IRCTrvZy9w9yAngcuwy/1GADWAL4DEjOf1sln51GfL9xGblMqTOvnMb91yyy1OD0EVcOVLFmFY94YM6VSXr9YeZMKyMO6ZvIbrGlfmjduuoGpZnbSmlJ9KBwzGZNYdee3K1N2M7kLgOuBqbG3uAM4vCF4uQmdvDSovaUbX/0XFJ9Px7cVcq9lcpZQHklLTmL7qAKMX7CK4cCFe7nU5d7auodldla8FaEb3CLZbVhQ2eSrAgRz2FkTquXvoQm7uNxHbd7YYtgPDCWy0bbDtu7LrhKCUV0xevo+4pFSe6vaPeYhKKZWjokGFebBTXeY9dS1Nqpbh/77fwqCpf3I0OsHpoSmlzrcYG1NmVggYbBOEnG5uu6SV0YyhDNAV26d2hQhRHh/ET2hG179lZnM7N6zERwOudHo46gK6d+8OwKJFixweiVL/lJ4uTF99gLfm7iSokOHFXk3o0yZUs7sq3wnQjG5l4APgSqA+NqN7MMf9Req4e+iL1ugaQ1Fge8bDm0XYKUIMMNvdkyh1qSb9sY8zyVqbmx/07dvX6SEolaNChQz3t69N10aVeW7mZp6fuZWftxzlrTuac5m2KlTKWSLHgX5A5sQ0j4LZC3G3RjcKKA0UFyHZGyf2F5rR9V+nzyTT8e3f6dK4Mh/drdlcpZR3pKcLX6w5wJtzd1LIGP5zcxP6XaXZXZU/BGhG17W92P0ZP+dpe7HvsSuPXSPCn944sb/QQNd/vTt/J+OX7GX+sGtpWKW008NRSgWY8FPxPD9zCyv3nqRj/RDeuO0KXV1N+b0ADXR91l7M3UC3I/ADEA38B9iE7aF7lsgFain8mAa6/ikzm9u1cWXGaTY3X+jSpQsAS5YscXQcSnlCRPhy7UHe+GUHianp3HxFNR7sVIfmNco5PTSlshWggW4q5yajRWEzuoW9cWh3o+Vl2MLgCsCX2TwvHhxLqYua+EcY8SlpPKW1ufnGwIEDnR6CUh4zxjDg6lpc17gyny3fx9drw/lp8xHa1q7A4E516N6kCoULaUmDUj52HNtebN/ZLcaE5bCvR+3F3M3opl9kFxHBK5F3XtOMrv85dSaZTm//znVNqvBh/1ZOD0cpVYDEJqbw7bpDTFmxj0OnE6hVsQQPdKjDna1rULKo5nOU8wI0o/sF0N/NvT3K9rob6E656FmFQe6e1J9ooOt/3p63k0+W7mXBsGtpoLW5+UZKSgoAwcHBDo9EqdxLTUtnwfZjTPojjA0HoyhTLIi7r67F/e1rUa2sdmlQzgnQQNe1vVhmttYr7cUuqY9uINFA17+cyqjN7abZ3HxHa3RVoFp/4DSfLd/H3G1HKWQMt7SozjM9GhJaQSeuqbwXkIGuKzsZLc9rdJXKExOWhZGQksZT3eo7PRTloQcffNDpISjlE61rlad1rfKEn4pn6sr9fLnmIL9sPcrgjnV4rGt9SmlJg1Le1NWbB3O3dOGzi+wiIgz2zpDylmZ0/cfJuCQ6vbOY7k2q8IFmc5VSfioiOpF35u9k1obDhJQqynM3NOKO1jV00prKEwGZ0TWmJgAiB8/+fCEibnf68mQyWk47GnQymvKCt+bu5NNle1n4dGfqVy7l9HCUh+Lj4wEoUUK/zlUFw6bwKEb9vJ31B07TtHoZXu51OVfXrej0sFSAC9BAN2sf3QsFp+JJj13tuqCBrl/IzOb2uLwKY/tpNjc/0hpdVRCJCHO2HOWtX3dwJDqRns2qMqJnE114QvlMAAe6ti43cwngnHlUv+tuRJx1dlsQUBd4CWgF9HL3hEplZ8IfYSSmpPHEddo3N7969NFHnR6CUnnOGEPvFtW5/vIqTFwWxvgle/ltx3EGd6rD0C71KF1Mu5Ao5YZpnMviuv6ca7nqumAMpYBI4EcR+nlrUHlJM7rOi4xLotPbi7mhaRXGaDZXKZWPHYtJ5J15u5i54RAhpYry2r+acWOzqk4PSwWQgMzo+lChXL4+CBt13+iFsagCasqKfSSlpvG4ZnPztejoaKKjo50ehlKOqlKmGP/r04LZj3WgerliPDJjPW/O3UFq2sW+jVVK+UJuui4UAzoAocBxEfLlJatmdJ2Vni50fPt3Glcrw2cDr3J6OCoXtEZXqfMlpabx6pztfLnmIO3rVeTD/q2oWKqo08NS+VxAZnSNuVh3L1eCiNudvtyt0R1I9vUSmb1UfnX3hEq5Wn/wNEeiE3nuxsZOD0Xl0pNPPun0EJTyK0WDCvPGbVfQMrQcL/64jVs+XM7H97SmRWg5p4emlL8ZiHt1uSZjP7cD3dx2XUgCvgKGiRDj7kn9iWZ0nfXSj9v4bn0461/soevIK6UC1rbD0Tw8fT0nYpN49dam9G978VahSmUnQDO6ntT25EnXBYAkESLcPZFSWaWmpfPr1qN0a1JFg9wAEBkZCUBISIjDI1HK/zS7rCw/P9GRJ7/eyIhZW9l0MIpXb21KseB82ZlTKW9zXQ2tNPApEAX8DzgE1AD+DYQAQzw5sFvRhQgHPDmoUu5YsfckJ88k07tFdaeHorzgzjvvBLRGV6mclC9ZhKmD2vL+wr8Zt3gPOyJiGD/gSmqU1567qoATWXr2Z2PGA1WBjojsc9m+FNgN3AL85O6h3Qp0jeFGoC2wUYQ5Ltt7Ay2BtSLMc/ekSgHM2XyE0sWC6NKoktNDUV7w73//2+khKOX3ChcyPHtDI1qEluOZbzZxy4fL+aB/Kzo10M9BpTL0ybhPyLI98/HteJDVdbdGdyVwNdBThAUu268DFgGrROjg7kn9idboOiMxJY2rXlvEDc2qMvquFk4PRyml8ty+yDM8Mn09u4/H0veqmjSsUooa5UtwWbni1KhQnDK62ITKhrdrdI0xRYHRQH+gOPAbMFREDl3kdUOB/wOqAX8Bw0TkD5fnlwCds7zsGxG58LoLxsQCJYDVwJucK10YDrQH4hAp4+bbc7tGN3NK/Kos29dm3Ddx94RKASzZdYLYpFQtWwggERG2ZL9q1XzZaVCpPFcnpCQ/PNael378ix82HiIx5fz5OKWLBZ0LfMvbW71KpejcsBKFCpkcjqqUx8YAt2ID3ZPAe8DPxpjWIpKW3QuMMX2BscBQYHnG/VxjzOUictBl1ynACy6Ps2ZpszMfm7W9Bpid5TnJeN5t7mZ0E4FgoIYIR122VwMOA8kiFPPkxP5CM7rOeOyLDazZd5LVI7oRVDi365Yof6B9dJW6dCLCqTPJHDqdwOGoBA6djufw6QSXxwnEJaUC0LZ2Bd65szm1D4UuWAAAIABJREFUQwJr4r1yjzczusaYssAJYJCIfJGxLRQ4APQUkWyDSmPMGmCLiAxx2bYb+F5ERmQ8XgJsE5HHPRxUNeB3oFE2z+4EuiFyNJvnsuVuRvcoUBP4D+A64Mwo/Yi7J1QqLimVRTuO0feqUA1yA8jw4cOdHoJS+ZYxhoqlilKxVNFs++yKCDEJqczfHsGon7dz49hlPH9jY+5vV1uzuyo3WmMTmWfLUkUk3BizA1sm8I9A1xhTJON1o7M8tSDjNa76GWP6AceAucCrIhJ7wRGJHMWYVsB9wHVARSASWAxMQyTR7XeH+xndidjmvALsBXZhI+16GbtMFuEhT07sL0JDQ2X69OlOD6NAiUpIIfxUPPUqlaJEEW2to5RSnkhNEw5FJRCbmELJIkHUKF+cIkGaNCgounbtmgxsddk0QUQmXMqxjDF3A9OAYHEJCI0xvwO7ReThbF5THfttfmcRWeay/WVggIg0ynj8EDYzfARoiq233S0i11/KWC+Vuxndt4C+QElscJsZ4BogLuP5fOnUqVNnv3JVeWPQlLX8fawwf/TvqpmIABIeHg5AaGiowyNRKvCJCDM3HObVOX+Rkpak2d2CJVVE2lxoB2PMa9hv4S+k60Wez5UswfdWY0wYsMYYc6WIbPDluV25dQkowl7gemxthHG5bQeuFyHMZyNUAeX0mWT+2B1JrxbV9AM5wNx7773ce++9Tg9DqQLBGMOdrWuw8OnOtKtbkVfnbKffhNXsj9Q5JwqwE8yaXOS2FogACmMXYnBVJeO57EQCaRn7uPsagHUZr2vg7pvwBreXoxJhNdDUGOph38yxjABYKbf9uu0oqemi3RYC0Isvvuj0EJQqcKqWLcZnA686m93V2l0FICKR2ID0gowx64EUoAfwZca2GthAeGUOx07OeF0P4DuXp3oAMy9wuiuwQbXbE8m8wa0a3UCmXRfyVt9PVxEZl8SiZzpjjH4IK6WUt0REJzJi1hYW7zpB29oVeLBTHZpUK0ON8sX18zaA+KCP7sfY1cYGcq69WHngbHsxY8xOYJyIjMt43BeYjm0rtgJ4BDuXq6mIHDDG1AMGAL9iA+7Lscv5JgBX5dS2zBfcXRntC6Af8F8RRrlsfwn4L/ClCPqdpbqgiOhE1u4/xbBuDfVDNwCFhdkKprp16zo8EqUKJtfs7sg5f/HQ9PUAlC4aRONqpWlctczZ+0ZVS1OqqNtf6qrANgxIBb7h3IIR92UJRhvhUt4gIt8YYyoCL2IXjNgG3CQiBzJ2SQa6AU8BpYBw4Bds14U8C3LB/a4L+7DtxeqLsM9le20gDDggQh1fDdKXNKObdyb9EcZrv+xg8bNdqKP9HwOO9tFVyn8kJKexIyKGnUdj2RkRw46j9ufYjF68ALUqlqBx1dJcVbsCfa8KpbSuxJYveDujmy/Y7FgIIic8fqmHC0aUEjm3qoUxFAfOAEkiFPf05P5AA92803vcckRgzhMdnR6K8oGlS5cC0Llz1hUflVL+QEQ4HJXAjqOx7Dwaw86IWHYcjSEs8gyliwVx7zW1GNShDpVKF3V6qOoCAj7QNaYntiPEakRmYcy9wHjsssAbgZsQOe724dwMdKOA0kAPEX532X4dsAiIFqG8R2/ET2igmzf2RZ6h6+gl/OemJgy5Vr/aVkopf7HlUBSfLN3L3G0RBBcuRJ82NXioUz1qVizh9NBUNgpAoDsHuAlbM/w9drGJUhnPCjARkUfcPZy7BTpbgQ7AVGN4AdiBnZH3esZJt17gtUoxZ7NdPK9Xi2oOj0T5yq5duwBo1Ci7VRuVUv6qeY1yjB/QmrATcUxYFsa3fx7iyzUH6dW8Oo90rsfl1cs4PURVsDTPuP8DaIsNcndgFyzrBdzgycHczegOBiZig9rznsrYNkSEzzw5sb/QjK7v/T97dx4fVXn9cfxzWMK+gyACAi64oKKICi5gC5baalu1BS0qttWq7U9tq1ate61b1WLF2qpVVLRSl1ZpFREUtIAIqCguoLKDLAkQ1kBIzu+PewOTmGUmTObO8n2/XvOazL3Pfe6Z3AROnjn3edydIX96i7ZN8/jnxf2jDkfqiGp0RbLD6o1FPPa/RYx9ZwlbdpQwqFcHLhm4H8f0aKsbidNADozobgUaAY2BnwEPAj8nGN0tAIpxj7u+Ju7pxcx4Djizkl3PuTMs3hOmGyW6de+TlRs59c9v8/vv9+bc4/aNOhypI9OnB1MuDhhQcalzEclEhVuLGTtzCY/9bxEFW3ZwVLfWXHfqwRzdvW3UoeW0HEh0y8pluwA3AhcBgwgWnNgCbMG9RdzdJTKPrhk/IphrrSNBzcTL7uUmC844SnTr3p2vfsYjby/k3eu+SbvmuslBRCSTFBWX8NzsZfxlypd8VVjE6Ud05tpTD2LvVhl5D3rGy4FE90PgUGAx0JlgMoQOQDtgAbAI9/3i7S6uJYDLuPNPd85155Tw+TkzmptxfiL9SO5wd8bPXckJ+7dXkpvl5s2bx7x586IOQ0SSrHHD+pzbvzuTfzOQy76xPxM+XsU37pnK6Dc+p6g4pVOiSm54hqA0tgdBCcMbuK8HyqZsei+Rzmq1MpoZ9YChwLkEI7yN3eNfTjidaES3bs1Zsp4zH5rOvT88gjP7dok6HKlDqtEVyQ3L1m3lD//9lAkfr6Jr2yb87tRD+NahHVW/myI5MKJrwJXAicAi4FbcCzD7GXAs8ALuE+LuLsHShX4Eye0wdq+QYQQDd/Xj7iiNKNGtWze//DH/eHcps68frMnIs9ysWbMA6NevX8SRiEgqTP8in5vHf8yC1Zs5Yf/23HTaIRzQMe7SSamlrE90k6zGRNeMHsAIgjWLDyjbHNNkG/Bvd35cJxHWMSW6dWdnSSnH3fEG/bq34aERfaMOR0REkmxnSSlPz1zKvRPns2VHCecety+/GnwgrZpqYKOuKNFNTJXlBmZcTJDgxs4HVfFzCQc6urO5DmKTDPfOwnXkb97O6Ud0jjoUSYEPPvgAgD59+kQciYikSoP69Th/QHdOO6Iz906cz5MzFvPy3JUMPngv2jZrRLtmebRtlkfb5nm0b9aIts3zaNcsj8YNM/JDYKkrZokUezvucZfLVjmia0YpQSJbltzuIFgF7QWCSXunkMElC2U0olt3rn5+Lq98tIrZ1w/WP2o5QDW6IvLJyo3c/dpnfPrVRtZt2UFxSeU5RtO8+rRtlsdBnVpyw3cPZt92GqCMV1aO6JqVJtDacY87qYgn0QV4DLjKnQ3hvkMJVkNToiuV2rGzlKNve53Bh3Tkvh9phC8XaERXRGK5O5u276Rg8w7WbdkePu+gYEv4vHk7kz9dw85S57dDe3Fe/+7Uq6cb2mqSpYnuYsovStaOYEW0YoJFItoRTDO2FViDe894u4536PcnwGlm/ItgRDc/3hNIbpqxsICNRTs5tbeW/M0VSnBFJJaZ0bJxQ1o2bkiP9pXnZV8VbuOaFz7i5vGf8Oq8VfzxrCPo1q5piiOVyLl33/W1WV/gDeBe4AbcizBrDPyBYIW0hO4Jq25E93bgHKBbbCjh8zagKRrRlSpc96+P+Pf7K3jvhiEqW8gRmnVBRGrD3Xlu9nJ+/59PKHHnmm8fxIhj99XobhWyckQ3ltnbwACgNe6bYra3AAqBGbgfH3d3ccy6cBLBTWk/BFrF7Co78CtgrDvXxHvSdKJEN/lKSp1jb5/MsT3b8uA5R0UdjqSIanRFZE+s3LCNa178iLcWrOW4nm25+0yN7lYmBxLdrQQLRZyC++SY7YOBiUAR7nH/YNS4Mpo7b7lzEcGyvz8EXiKombDw0Rm4KoG3gJldamaLzKzIzOaY2Yk1tM8zs1vDY7ab2VIzuyxm/0gz80oejROJS5LjvaXryd+8naGHdoo6FEmh0aNHM3r06KjDEJEM1bl1E564oB93nnEY81ZsZOj9b/HkjMWUlia+sJVktLXh83jMnsdsFGbPAy8TDLKurfrQr4t7egZ3dhDU575gRhtgOEGdxIBETmhmw4D7gUuB/4XPr5rZIe6+tIrDngW6ABcBnxMk3RUX2d4KlFv72N2LEolNkmPCvFXk1a/HoF4dog5FUqh3795RhyAiGc7MGH5MN048sAPXvPAhN770Ma9+tIq7zzqcrm01upsjHgJuJxjV/UHMdiNIdB9MpLNaLQFcrgOjJ/Bjd34fX3ubCXzo7hfGbPsceN7dr62k/SnAc8B+7l7pTXBmNhIY7e7NE41fpQvJ5e6cePebHNixBY+NVK1mLpk+fToAAwYk9LeviEil3J1nZy3jD//9lFJ3Lh64Hz89oQfNGsU9RpeVsr50AcDsZuBqIPaT+SLgLtxvSairPU10EzqZWR7ByOvZ7v5czPYHgd7uPrCSY/4CHAi8C5xHcCPcq8B17r45bDMS+DuwHKgPfADc4O7v1xSTEt3kmreikO8+8D/uPvNwftSva9ThSAqpRldE6sKKDdu45eWPmfjJato3b8Tl39yf4cd0o2H9Gqsvs1JOJLoAZq0IFi1rRzDb1zu4FybaTar/LGpPkIiurrB9NTC4imN6AicA24EzgdbAAwS1wWeFbeYTTIE2F2gBXA5MM7Mj3P3zZL4Bqd5rH6+insHgQzpGHYqk2N/+9reoQxCRLLRP6yY8fN7RzFmynrte/YwbXvqYR/+3iN+c0ovvHra3ZmfIVkFSO2FPu0n1iG5nYAUw0N3fitl+I/Bjd+9VyTETgROBTh5m8mE5w2vhtopJM2ZWNqr7prtfVsn+iwjqfcnLy+u7ffv2ZLw9AYbcN5V2zfN49qL+NTcWERFJgLvz5vw13D1hPp+t2kTvfVry26EHceIBuXNPSFaO6AZ5YPzcb423aapHdPOBEoKbyWJ1BFZVccxXwAovP1z9afjcja+PDuPuJWY2Gzigsg7d/WHgYQhKF+KOXqr15drNfL5mMz8+9pCoQ5EITJ06FYCBA79WgSQikhRmxjcO6sjAA/fipQ9WcO/EBZz793c5fv92/HboQRzepXXUIUrt3Ez5ldFqEneim9ICF3ffAcwBhlTYNQSYXsVh04DOZhZ7o9mB4fOSyg4wMwMOJ0iSJUVe+zj4W+UUTSuWk2666SZuuummqMMQkRxQv55xxlFdeOPKgdzw3UP4ZOVGTh89jV88/R7L1m2NOjypHYvzkVinqSxdgF3Tiz1FMK3YNOBi4KfAoe6+xMyeBHD388L2zQlGcN8hyPhbA38DPnX3H4Ztbgr3fw60BC4DzgWOd/d3q4tHN6Mlz/dG/w/MeOkXcS9YIllk4cKFAPTsGfcS5CIiSbGpqJhH3lrII28vokXjBoz7ef8qlx3OdFlaunB+zKuGwC0ESe2jBBMNdAF+RnCf1/W4PxJv11WWLoQrosXNnbdqbgXuPs7M2gHXA3sD84BT3b1sdLZbhfabLVgN4wFgFrAe+DeUW4mtNUEpQieC5eHeB06qKcmV5FmxYRtzlxdy9dCvlVlLjlCCKyJRadG4Ib8+pRffPaIzwx9+h3MeeYd//ry/5t7NFO5P7Pra7DaCfO4o3OfGbP8XQVVApWWpValyRNeMUuKvl3D3lNf7JoVGdJPj8WmLuGX8J7zxm4H07JDwdMaSBSZNmgTA4MFVTaAiIlL3Plm5kbMfeWfXyO4+rSuuL5XZsnJEN5bZSoJ7t9rjvj5me1uCe71W4753vN3VVKMbb72E5vbIca99vIoDOzZXkpvDbrvtNm677baowxCRHHdI55Y89dNjKNxazDmPvMPqjVokNcOU3VH4CGa9MWuNWW+grFyhZSKdVTei+3iFTacQDCVPY3e9xPEE2fV/3flJIidOFxrR3XMFm7fT7w+T+OXJ+/PrU1S6kKuWLVsGQNeuWihERKL33tL1nPvoTDq1asyzF/WnQ4tGUYeUFDkwojuRYG2FqqoKJuH+rXi7q3JE150Lyh7AJIIkd5g7J7lzjjsnAWcTLAIxLe43IFln0qerKXXNtpDrunbtqiRXRNLGUd3a8PgFx7ByQxEjHp3Jui07og5J4vN/wFoqrx5YSzDhQNzinV7s+vC54goVr4QnviqRk0p2mTBvFV3aNOHQzgl9miBZZsKECUyYsMeL2IiIJM0xPdry9/OPZnHBFkY8OpMNW5Xspj33+UBv4C7gXeBLYCZwJ3BYuD9ucU0vZsY2IA+41p27Y7b/FrgD2O5ORlZ7q3Rhz2wqKqbv7ydxXv99uf67Wigilw0aNAiAKVOmRBqHiEhFUxes5cInZnPQ3i0Y+7Njadm4YdQh1VrWly4kWbyJ7lyC7BqCmtyvCKYGax9um+fOEXUSYR1TortnXp67ksv+8T7PX9yfo7u3jTocidCqVcGCIZ06qYRFRNLP5E9Xc/HYORy2Tyue/OmxNG+UkZNF5U6ia3YccCqwF7AG+A+1mDY23tKF3wGlBGUK7YHDwmcjKBa+LtETS3Z4bd4qOrRoxFHd2kQdikSsU6dOSnJFJG198+COPHD2UcxdXshPHp/F1h07ow5JqmL2EMH9X78DLgyfZ2D2YMJdxbsymhnfBG4D+hEkyKUEtRPXu/NGoidOFxrRrb2i4hKO+v3rfP/Ifbj9B4dFHY5EbPz48QCcdtppEUciIlK18XNXcvmz77P/Xs3p3q4ZDeob9evVo0E9o349o74Z9evbrteNGtTnW4d25Mg0GdDJ+hFds5HAY1XsdeAC3J+Mu7tElwA2oynQBljvTsYvKK1Et/Ze/2Q1Fz45myd/cgwnHdgh6nAkYqrRFZFMMX7uSh55eyE7dpZSUuqUlDo7dz2XUlIKJaWl7Cx1iopLKC5xjt63DT87sQdDDulE/XrRLR+QA4nudOA4YAnwp/C5G/AroDswA/fj4+4ukUTXjAbAUUA7d16NP+r0pUS39q58bi4TP17F7OuHkNcg3ioYyVb5+fkAtG/fvoaWIiKZY8v2nfxz9jIem7aIZeu2sW+7pvzk+B788OguNM1LfZ1vDiS6G4FmwBG4z4vZ3hv4ENiEe6u4u0ugdOGHwGiC2lx3p4EZk4EewMXuTIz7TaQRJbq1U1xSSr8/TOIbvfbivmF9og5HRESkTpWUOq99vIpH3l7I+0s30KpJQ358bDfOH9Cdji0bpyyOHEh0i4CGQDvcN8Rsbw2sA7bjHvdMX3ENw5lxIvAPdt+AVjZm/1+CYeSz4j2hZId3F61jw9ZiLRIhu7z44ou8+OKLUYchIlIn6tczTj1sb/516fG8cMkABuzXjr9O/ZIT7nqD3/xzLp9+tTHqELPFsvD5njC5BbNWwB8r7I9LvNOLvQIMBT4DDiIY0a1vRi/gU+BjdzLybiSN6NbODf+ex3NzlvH+DafQJK9+1OFIGlCNrojkmqUFW3ls2iL+OXsZW3eU8L0+nbl/+JF1es4cGNH9E3A5u5cA3gw0j2kxCvffxN1dnInuOqAVcCDwObsT3YbAdmCDOxk5iaoS3cSVljrH3TGZo7q14a/n9o06HEkThYWFALRqFXfplIhIVijcWszT7y6hWV4Dzh/QvU7PlQOJbjtgDsENaBUtBo7GfV283cVbRV32DV1aYXvr8DkjV0WT2vlg+QbWbNrO0N4qW5DdlOCKSK5q1bQhlw7aP+owsoN7AWbHEkxpeyrQgWDBiP8CNyaS5EL8ie4KYF+gf4XtV4bPyxM5qWS21+atokE94+SD9oo6FEkj48aNA2DYsGERRyIiIhnNfTXBQhF7LN5E9zXg58C/yzaY8RlwAEENxWvJCEbSn7sz4eNVDNi/Pa2aZO5a4ZJ8Dz30EKBEV0RE0ke8k5/eBhQQlCqUFfUeQDD7wjrgjuSHJunos1WbWFKwlaGabUEqeOWVV3jllVeiDkNERBJgZo3M7AEzyzezLWb2spl1qeGYk8J2K8zMLVjNrGIbM7ObzWylmW0zsylmdmidvZEqxJXourMCOB6YSLD0r4XPE4ETw/2SA6Z/WQDAyQdpJTQpr2nTpjRt2jTqMEREJDGjgDOBs4ETgZbAf8ysuimVmgPzCGZH2FZFm6uB3wD/B/QjqLN93cxaJCnuuMS9pIc7C4ChZjQG2gLr3Cmqs8gkLc1evI4ubZqwdyvdfyjljR07FoARI0ZEHImIiMTDgvlpfwpc4O6vh9vOJVh2dzBVlKa6+yvAK2H7MZX0a8AVwJ3u/kK47XyCZPcc4G/Jfi9ViXfBiFZmdDOjvTtF7qx0p8iM9uF23W6dA9ydWYvX0697Rs4kJ3Xs0Ucf5dFHH406DBERiV9fglXIdq1u6+7LCNZIGLAH/fYAOlXodxvw1h72m7B4R3QfA74P/Ar4c8z24cD9wL/I0NXR2rZtqwnu47RjZynn99jCPs1L9T2Tr7n++usBLRghIlLHGpjZ7JjXD7v7w7XsqxNQAuRX2L463FdbZceurqTfffag34TFm+geGz6/UGH7iwSJ77FkqHXr1u1a0Umq99zsZdw76UMm/qo/B3ZMaYmNiIiIBHa6+9HVNTCz24Df1dDPyckLKQXMdi8g4V5xXYcqxZvolt15tKHC9sIK+yWLzV68nlZNGrJ/h+Y1N5acM2bMGABGjhwZaRwiIsIoYGwNbZYCxwH1gfbA2ph9HYG39+D8q2L6iU1KO8bsS9Rigpm/nATuMYu34SagDXAKQZlCmVPC583xnlAy16wl6zh63zbUq2dRhyJpSImuiEh6cPd8vl6O8DVmNgcoBoYAz4TbugAHA9P3IIRFBAntEGBW2G9jglkdrtqDfhNOQOJNdN8juPvuMTMOJShSPhj4NUFmPSfRE0tmKdi8nYVrt3BW32qn1pMcptpcEZHM4u6FZvZ34G4zW0OwZsJ9wIfApLJ2ZvYZMNrdR4evmwNlax7XA7qZWR9gnbsvdXc3s1HAdeGxC4DrCQZGn6lluG+xey2HuMWb6P6VINFtCdwSs93Ck/410RNLZpmzZD2AZlwQERHJLlcAO4FxQBNgMnCeu5fEtOlFUN5Q5mjgzZjXt4SPJ4CR4ba7w/4eJKgKmAmc4u6bahWl+6DaHGbu8SXHZtxDMIJb0T3uXF2bk6eDZs2a+ZYtW6IOI+3d/sqnjJm2mA9vPoXGDaubQ1py1SOPPALAhRcmZXlyERGphJltdfdmUceRKRJZMOJKM8YBpxMUE68GXnYPai8ku81avI7Du7RSkitVGjduHKBEV0RE9oDZSdXsdaAA90/i7S7uRBcgTGqV2OaYbTtKmLeikJ+e0DPqUCSNTZo0qeZGIiIi1ZtCTbW4ZiuAS3D/b02dxZ3omtECOBXYF2hccb87t8bbl2SWucs3UFzi9OveJupQREREJPvVNLtCF+BFzPrh/mF1DeNKdM3oR7CmcXV3IinRzVKzF68DoO++SnSlan/5y18AuPTSSyOOREREMtgTBNOSdSaY4mwp0BU4HlgJvE8wQUIewb1jI6vrrF6cJx0FtCPIsCt7SBabtXg9B3ZsTuumeVGHImls/PjxjB8/PuowREQks00G9gbOxv0E3M/B/UTgnHD7OOAHBPnnwJo6i7d04XCCeompBMsAb6EWc5lJ5ikpdd5bsp7T+nSOOhRJc6+++mrUIYiISOa7PnyuWH/7H4Lk9jrcD8GsEOhUU2fxJrobgKbAGe5fWwZYstiC1ZvYtH0nR6tsQUREROrevuHz5Zjdzu55cC8On3uEz5uII4+Nt3ThyfC5d5ztJUuU1edqoQipyf3338/9998fdRgiIpLZ5ofPtwJrMPsAs9XAXQTVBPMxq08w1e3KmjqLd0R3MVAIvGTG38MgimMbuO9KhiWLzFq8no4tG9GlTZOoQ5E0N3nyZAAuv/zyiCMREZEMdh3wElCfYBKEspE2I1jB7VrgG0BDYFpNncW1MpoZpVRfk+vuic3Jmy60Mlr1BtwxmSP3bcOD5xwVdSgiIiI5LydWRjMbBPwBOJag+qAUeAf4He5TMWsANAK2476zuq4SSU41u0KOWbFhGysLi7hI9bkiIiKSKu5TgOMxawq0Adbhvi1m/06C0d0axZvoXpBgiJIFyupzj1Z9rsThnnvuAeDKK6+MOBIREclYZlOAvwPP474V2Lon3cWV6LrzxJ6cRDLTrMXraN6oAQd1ahF1KJIBZsyYEXUIIiKS+U4CTgQewGwc8BjuM2vbWVw1utlMNbpVGzrqLTq0aMRTPz026lBERESEHKjRNSsiWPUMdt8f9inwGPAU7msT6S7e6cUwY4QZ75mxxYySCo+46iQkcxRuK2b+6k2aVkxERERSqSPwU4IV0koJ7hE7BPgjsByzFxPpLK5E14wfEcylewTQBC0DnPXeW7oed7RQhMTtzjvv5M4774w6DBERyWTuhbg/jvsQoAtwBTCTINdsCHwvke7ivRntF+HzNoIV0hxYB7QjWDVNq6VlmdmL11G/ntGnW+uoQ5EM8cEHH0QdgoiIZJfNBPnmeqCEYG7dhMSb6B5OkNwOBqYDuNPBjBuAXwKnJXpiSW+zFq+nd+eWNM3LyOmRJQLPPvts1CGIiEimM2sInAqcA3yHoJIAdlcPvJVId/HW6JYVPb9HWBhsRn3gXqAD8OdETirpbfvOEuYu26BpxURERCTVVgMvAmcRVBEYwVK/twMH4H5yIp3FO1y3kWDCXgM2AS2AbxMsCwzByhWSJeat2Mj2naX06676XInf73//ewBuuOGGiCMREZEMVlYzuYNgKeDHgInUcpqweBPdlQSJ7l4EUzwcE568zLranFzSU9lCEX331YiuxG/+/PlRhyAiIpnvA+Bx4Gnc9zi/jDfRfR/oTTBy+yRfH8HVghJZZNbi9fRo34wOLRpFHYpkkLFjx0YdgoiIZDr3o5LZXbyJ7qXA1cAmd7aa0QoYRrDO8L+Au5IZlESntNSZs2Qdgw/uGHUoIiIikovMGhDckNaL3Tej7eZ+a7xdxbsE8BZgS8zrOwFNmJmFFuZvZv3WYi0UIQm78cYbAbj11rj//RERESnPbC+JgVA7AAAgAElEQVRgCkGSW5U9T3TN6BZ/VODO0kTaS3qavXg9AEfrRjRJ0LJly6IOQUREMt8twEHV7E/oprTqphdbDCyK87EwkZOa2aVmtsjMisxsjpmdWEP7PDO7NTxmu5ktNbPLKrQ508w+Cfd/YmY/SCQmCcxavJ52zfLo0T57l9GWuvH444/z+OOPRx2GiIhktlMIktmy/1AcuAz4HFhAsDxw3GqaR7eypX6resTFzIYB9xPMh3YkwQIUr5pZdSPIzwJDgYsIhrJ/CHwY02d/YBzwNNAnfH7OzDTtWYJmL1lH333bYKZVnUVERCTl9gmfr9m1xX00cAZwIMGywHGzqqYlMyOhoRl3LojrhGYzgQ/d/cKYbZ8Dz7v7tZW0PwV4DtjP3fOr6HMc0NaDdZHLtk0C1rr72dXF06xZM9+yZUt1TXLGmo1FHHP7ZH536sFceFLPqMORDHPttcGv7x133BFxJCIi2cvMtrp79n7sarYFaAw0BLYRlNl2Cr/eCCzHPe7y2iprdONNXBNhZnlAX+CeCrsmAgOqOOz7wCzg12Z2HsEbfRW4zt03h236Aw9UOO41guWJJU6zl6g+V2qvoKAg6hBERCTzFRCM6rYCVhGM4D4NFIX7E0pS4p1eLFnaA/UJlneLtRoYXMUxPYETgO3AmQQrZjwAdCZYHg6CTL+yPjtV1qGZXURQBkFeXl5CbyCbzVq8jsYN63Fo51ZRhyIZ6OGHH446BBERyXzzCRLd/YC3gB8D3wz3OfBeIp3Fneia0Qv4OZXPaebuu4JItnoEb+wcdy8MYrFfAq+ZWUd3r5jg1sjdHwYehqB0IZnBZrLZi9fTp2tr8hrUVLotIiIiUiceAb4gKF+4heDmtA7hvrXAFYl0Fleia0ZfgjnNmla2m/inesgHSoCKqxF0JBiersxXwIqyJDf0afjcjWDkdlWCfUoFm7fv5OOVhfzi5P2jDkUy1JVXXgnAPfdUrEwSERGJk/s/gX/uem12AHAywSJl03DfkEh38Q7dXQc0Yw9mWwBw9x3AHGBIhV1DCGZfqMw0oLOZNY/ZdmD4vCR8npFgn1LBB0s3UOpwtBaKkFratm0b27ZtizoMERHJJu4bcX8J9/8mmuRC/KULAwhGbS8FHgq/PgK4jWBS32EJnPM+4Ckze5cgib2YoN72rwBm9iSAu58Xtn8GuAF43MxuJqjRvZ9gloY1YZv7gbfM7Brg38APCLL/ExKIK6fNXrKOegZHdWsddSiSoR588MGoQxARESkn3hHdduHz02Ub3JlHcEPXgcCv4j2hu48jqK+4HviAIBk91d3LRme7hY+y9psJblRrRTD7wj+BqcBPYtpMB4YDIwnm1z0PGObuM+ONK9e9s7CAgzq1pEXjhlGHIiIiIpIUVc6jW66RUQg0BxoBhQQFwocAm4FlwAZ3MvIzb82jC0XFJRx+80TO678v13/3kKjDkQx1xRXB/QGjRo2KOBIRkeyV9fPoJlm8pQtrCBLdtgRLAx8EvElQGAxQmvTIJGVmL17PjpJSjt+/fdShiIiIiCRNvInuRwTz2R4O/Ac4mN2zHDjBgg+SoaZ9mU+DesYxPTJyUF7ShEZyRUQk3cRbo3sLcA7BaO5tBIlt2YwLk4HLkx6ZpMz0L/Lp07U1zRqlev0QERERkboTV2bjzlxgbsymoWa0Bna6s7mKwyQDFG4r5qMVhfzyGwdEHYpkuF/84heAZl8QEZH0sSdDeHlAbt/FlQVmLiyg1GHAfu1qbixSjSZNKi6YKCIiEq1qE10zjiKYtqsx8G933jDjZ8AdBDembTfjL+5cWfehSl2Y/mUBjRvW40jNnyt7SCuiiYhIuqky0TXjBIL627I2vzDjj8DVBDegGUEC/CszvnAPFnyQzDLti3z6dW9Lowb1ow5FREREJKmquxntKqAh5Zf7vSrcZ0B+zNfn1lWAUnfWbCri8zWbNa2YJMVFF13ERRddFHUYIiKSADNrZGYPmFm+mW0xs5fNrEsNx5wUtlthZm5mIytpMybcF/t4p87eSBWqS3SPJhi5fY1g6d9XCZJaB852Zy/gx2FbrTKQgWZ8WQCoPleSo127drRrp58lEZEMMwo4EzgbOBFoCfzHzKr7qLc5MI9g1q1t1bSbBOwd8zg1GQEnosqV0czYTlC20MadjWa0AtYTJLqN3Sk2Iw8oAkrd9+jGtsjk8spoVz8/lwnzVvH+jadQv57VfICIiIhEKpkro5lZK2AtcIG7Px1u6wosAb7t7q/F0cdm4JfuPqbC9jFAe3f/bjJira3qRnQbArizMXwuLNvhTnH4vCPcpCwpw7g7074ooP9+7ZTkioiI5Ka+BPneroW/3H0Z8CkwIAn9n2Bma8xsgZk9YmZ7JaHPhNQ4CmvGjfFsy1Rt27ZlypQpUYeRcjtKShnedROdW+/MyfcvyXfXXXcB8Nvf/jbiSEREsloDM5sd8/phd3+4ln11AkrYfd9VmdXhvj0xAXgRWAR0J1hw7A0z6+vu2/ew77jFU25wU8zXXsm2jLZu3ToGDRoUdRgp9493l3Lv6x8x6dcD2H+v5lGHI1ngjTfeAMjJ3ycRkRTa6e5HV9fAzG4DfldDPycnL6Svc/dnY15+ZGZzCEoivkOQAKdETYmuPtPOUtO+yGevFo3Yr0NSynxEuPXWW6MOQUREAqOAsTW0WQocB9QH2hPU6pbpCLydzIDcfaWZLQdSuhRrdYnuLSmLQlKqtNSZ8WUBJx3YATP9LSMiIpJN3D2fr5cjfE04yloMDAGeCbd1AQ4GpiczJjNrD+wDfJXMfmtSZaLrrkQ3W81fvYmCLTs0rZgk1YgRIwAYO7amQQQREUkH7l5oZn8H7jazNUABcB/wIcHUYACY2WfAaHcfHb5uDuwf7q4HdDOzPsA6d18a7r8ZeIEgse1OsKruGuBfKXhru2TklGCyZ6aH8+dqoQhJpl69ekUdgoiIJO4KYCcwDmhCsCruee5eEtOmF0F5Q5mjgTdjXt8SPp4ARhLc4HYYcB7QmiDZfRP4kbtvqpN3UYUq59HNFbk4j+5Px8xiYf4W3rxyUNShiIiISAKSOY9uLqhuHl3JQjtLSpm5aB39VbYgIiIiWU6Jbo6Zu7yQzdt3cvx+KluQ5Bo+fDjDhw+POgwREZFdVKObY2Z8GdyEqRFdSbY+ffpEHYKIiEg5SnRzzLQvCjhk75a0bZYXdSiSZa655pqoQxARESlHpQs5pKi4hDlL13P8/hrNFRERkeynRDeHzF68nh07Sxmg+lypA2eeeSZnnnlm1GGIiIjsotKFHDL9y3wa1DOO6dE26lAkC/Xv3z/qEERERMpRoptDpn1ZQJ+urWnWSJddku/KK6+MOgQREZFyVLqQIwq3FfPR8g0M0GpoIiIikiOU6OaImQsLKHU4XtOKSR05/fTTOf3006MOQ0REZBd9hp0jpn9ZQOOG9ejTrXXUoUiW+uY3vxl1CCIiIuUo0c0R07/Mp1/3tjRqUD/qUCRLXX755VGHICIiUo5KF3LAmk1FLFi9meNVnysiIiI5RIluDpjxZQEAx2v+XKlD3/72t/n2t78ddRgiIiK7qHQhB0z7Ip9WTRpySOeWUYciWey0006LOgQREZFylOjmgOlfFnBcz7bUr2dRhyJZ7NJLL406BBERkXJUupDllhZsZfn6barPFRERkZyjRDfLTfsyH4ABqs+VOjZ48GAGDx4cdRgiIiK7qHQhy037Ip+OLRuxX4dmUYciWW7YsGFRhyAiIlKOEt0sVlrqzPiygIEHdsBM9blSty688MKoQxARESlHpQtZ7JOvNlKwZYfqc0VERCQnKdHNYlMXrAXgpAM7RByJ5IJBgwYxaNCgqMMQERHZRaULWWzq/LX03qclHVo0ijoUyQEjR46MOgQREZFylOhmqY1FxcxZup6LB/aMOhTJEUp0RUQk3ah0IUtN/yKfklJnUK+9og5FckRxcTHFxcVRhyEiIrKLRnSz1NQFa2nRuAFHdm0ddSiSI4YMGQLAlClTog1EREQkpEQ3C7k7U+av5YT929OgvgbtJTV+9rOfRR2CiIhIOUp0s9DnazbzVWERl39Tsy1I6owYMSLqEERERMrRcF8Wmjo/mFZsYC8lupI6W7duZevWrVGHISIisotGdLPQlAVr6NWxBXu3ahJ1KJJDTj31VEA1uiIikj6U6GaZLdt3MmvRekYe3z3qUCTHXHLJJVGHICIiUo4S3SzzzsICdpSUMlCroUmKDRs2LOoQREREylGNbpaZumAtTfPqc3T3NlGHIjmmsLCQwsLCqMMQERHZRSO6WaRsWrEB+7WjUYP6UYcjOeZ73/seoBpdERFJH5GM6JrZpWa2yMyKzGyOmZ1YTdtBZuaVPA6KaTOyijaNU/OO0sPigq0sXbdVZQsSicsuu4zLLrss6jBERER2SfmIrpkNA+4HLgX+Fz6/amaHuPvSag49FFgX83pthf1bgf1iN7h70Z5HnDmmzl8DwMADteyvpN4ZZ5wRdQgiIiLlRFG68GtgjLs/Er7+PzMbClwCXFvNcWvcPb+a/e7uq5IVZCaaumAtPdo3o1u7plGHIjkoPz/49Wzfvn3EkYiIiARSWrpgZnlAX2BihV0TgQE1HD7bzL4ys8lmdnIl+5uY2RIzW25m/zGzI5MRc6YoKi5hxsIClS1IZM466yzOOuusqMMQERHZJdUjuu2B+sDqCttXA4OrOOYrgtHeWUAecC4w2cwGuvvbYZv5wE+AuUAL4HJgmpkd4e6fV+zQzC4CLgLIy8vbozeULt5dtI6i4lKthiaR+c1vfhN1CCIiIuWk/awL7j6fIJEtM8PMugNXAW+HbWYAM8oamNl04APg/4Cv3R3j7g8DDwM0a9bM6yj0lJq6YC15DepxXI92UYciOeq0006LOgQREZFyUj3rQj5QAnSssL0jkEh97UzggKp2unsJMLu6Ntlm6oK1HNujLU3yNK2YRGPVqlWsWpXTZfIiIpJmUprouvsOYA4wpMKuIcD0BLrqQ1DSUCkzM+Dw6tpkk+Xrt/LFms0M6qXZFiQ6w4cPZ/jw4VGHISIisksUpQv3AU+Z2bvANOBioDPwVwAzexLA3c8LX18BLAY+JqjRHQF8HzizrEMzuwl4B/gcaElQrnA4QW1v1pu6IJhpTTeiSZSuueaaqEMQEREpJ+WJrruPM7N2wPXA3sA84FR3XxI26VbhkDzgj0AXYBtBwvsdd38lpk1rgprbTkAh8D5wkru/W2dvJI1Mnb+WfVo3Yb8OzaIORXLY0KFDow5BREQSZGaNgHuAs4EmwGTgUndfXs0x1wJnAL2A7QSDjde6+7yYNgbcRHDzfxuCstNfuPvHdfRWKo/VPSvuxaq1Zs2a+ZYtW6IOo9Z27CzlqN+/zul9OnP7Dw6LOhzJYcuWLQOga9euEUciIpK9zGyruydtZMvMHgK+B5wPFBB88t4a6Bve81TZMa8BzxLMiGXArUB/4BB3Xxe2+S3BoOZIgkkFbgROAHq5+6ZkxV+TtJ91Qao3Z8l6Nm/fySCVLUjEzj33XACmTJkSbSAiIhIXM2sF/BS4wN1fD7edCywhmPb1tcqOc/dvVejnXIJP1I8HxoejuVcAd7r7C2Gb84E1wDnA3+rkDVVCiW6Gm7pgLQ3qGQP212pUEq3rr78+6hBERCQxfYGGxCzk5e7LzOxTgoW8Kk10K9GCYIKD9eHrHgTlpLH9bjOzt8J+leimStu2bTN6BKrdps1cd5Qxe8b/og5FclyDBsE/J5n8+yQikgEamNnsmNcPh+sD1EYngmlf8ytsXx3ui9f9BOsXlK1pUHZsZQuE7ZNgjHsk5xPddevWMWjQoKjDqJXVG4sYeftkfjv0IAYN2i/qcCTHLVy4EICePXtGHImISFbb6e5HV9fAzG4DfldDPycnIxgzu4+g9vaEqmp6o5TziW4mK5tWbJCW/ZU08JOf/ATQiK6ISBoYBYytoc1S4DigPtAeWBuzryPh6rPVMbM/AcOBk919YcyustWDOobnie03pSsLKdHNYFMXrGWvFo04qFOLqEMR4ZZbbok6BBERAdw9n6+XI3yNmc0BigkW7nom3NYFOJgaFvIys/uBYQRJ7mcVdi8iSGiHEMzMgJk1Bk4ErkrkvewpJboZamdJKf/7PJ9TDulIcHOjSLQGDhwYdQgiIpIAdy80s78Dd5vZGnZPL/YhMKmsnZl9Box299Hh6weBcwkW8FpvZmU1uZvdfbO7u5mNAq4Lj11AMNXYZsKEOlWU6Gaoucs3ULitmIEqW5A0MX/+fAB69eoVcSQiIpKAK4CdwDh2LxhxXoV6214E5Q1lLg2fJ1fo6xbg5vDru8P+HmT3ghGnpHIOXdCCERm7YMR9E+cz+s0veP+GU2jVtGHU4YjsuqlTNboiInUn2QtGZDuN6GaoqQvWcmS3NkpyJW3cfvvtUYcgIiJSjhLdDFSweTsfrijkV4MPjDoUkV0GDBgQdQgiIiLl1Is6AEnc5M/W4A4DteyvpJF58+Yxb968qMMQERHZRSO6GeiZmUvp2aEZh3dpFXUoIrv88pe/BFSjKyIi6UOJboaZt6KQD5Zt4IbvHqJpxSSt/PGPf4w6BBERkXKU6GaYp2cupXHDepx1VJeoQxEpp1+/flGHICIiUo5qdDPIpqJiXvpgBacd3lmzLUja+eCDD/jggw+iDkNERGQXjehmkH+/v4KtO0r48XH7Rh2KyNdcccUVgGp0RUQkfSjRzRDuzth3ltJ7n5YcoZvQJA2NGjUq6hBERETKUaKbIeYsWc/81Zu484zDdBOapKU+ffpEHYKIiEg5qtHNEGPfWUKLRg04vU/nqEMRqdSsWbOYNWtW1GGIiIjsohHdDFCweTuvfLSKs4/pStM8XTJJT1dddRWgGl0REUkfypoywPNzlrOjpFQ3oUlaGz16dNQhiIiIlKNEN82VljrPvLuUY7q35cCOLaIOR6RKvXv3jjoEERGRclSjm+be/iKfJQVb+fFx3aIORaRa06dPZ/r06VGHISIisotGdNPc0+8soV2zPIb27hR1KCLVuu666wDV6IqISPpQopvGvircxqRPV3PRSfvRqEH9qMMRqdbf/va3qEMQEREpR4luGvvHu8tw4JxjVLYg6a9Xr15RhyAiIlKOanTTVHFJKc++u5STDuhAt3ZNow5HpEZTp05l6tSpUYchIiKyi0Z009TkT1ezZtN2/vADTSkmmeGmm24CVKMrIiLpQ4lumhr7zlI6t2rMNw7aK+pQROLy2GOPRR2CiIhIOUp009Ci/C3874t8fj3kQOrXs6jDEYlLz549ow5BRESkHNXopqFnZi6hQT1jeL+uUYciErdJkyYxadKkqMMQERHZRSO6aaaouITn5iznlEM7slfLxlGHIxK32267DYDBgwdHHImIiEhAiW6aeeWjr9iwtZgfH6ub0CSzPPXUU1GHICIiUo4S3TQz9p0l9GzfjAH7tYs6FJGEdO2qUhsREUkvqtFNI5+s3Mh7SzdwzrHdMNNNaJJZJkyYwIQJE6IOQ0REZBeN6KaRMdMX0ahBPc7q2yXqUEQSdueddwIwdOjQiCMREREJKNFNE9O/zOefs5dzwfHdad00L+pwRBL27LPPRh2CiIhIOUp008CmomKueu5DerRvxtXfOijqcERqpVOnTlGHICIiUo4S3TRw238+5avCbTx38QCa5NWPOhyRWhk/fjwAp512WsSRiIiIBJToRuyNz1YzbvYyLhm0H333bRN1OCK1du+99wJKdEVEJH2Yu0cdQ6SaNWvmW7ZsieTc67fs4JRRb9GuWR4v/fJ4GjXQaK5krvz8fADat28fcSQiItnLzLa6e7Oo48gUGtGN0I0vf8z6LTsYc0E/JbmS8ZTgiohIutE8uhH5z4crGT93JZd/8wAO7dwq6nBE9tiLL77Iiy++GHUYIiIiu6h0IYLShTWbijjlT2+xb9umvHDJABrU198bkvkGDRoEwJQpUyKNQ0Qkm6l0ITEqXUgxd+faFz5i244S7v1RHyW5kjVeeumlqEMQEREpR4luij03ZzmTP1vDDd89hP33ah51OCJJ06qVSnBERCS9aDgxhZav38qt4z/h2B5tuWBA96jDEUmqcePGMW7cuKjDEBER2UUjuilSWupc/fyHuDv3/PAI6tWzqEMSSaqHHnoIgGHDhkUciYiISECJboo8OWMx078s4I4zDqNr26ZRhyOSdK+88krUIYiIiJSjRDcFFq7dzJ0TPmNQrw4M79c16nBE6kTTpvoDTkRE0otqdOvYzpJSfvPcXBo1qM9dZx6OmUoWJDuNHTuWsWPHRh2GiIjILhrRrWNfFRaxdtN2bv3eoXRs2TjqcETqzKOPPgrAiBEjIo5EREQkEMmIrpldamaLzKzIzOaY2YnVtB1kZl7J46AK7c40s0/MbHv4/IO6fyc169q2KZN+PZDTj+gcdSgider111/n9ddfjzoMERFJgJk1MrMHzCzfzLaY2ctm1qWGY641s1lmttHM1prZeDPrXaHNmEpyt3fq9t18XcoTXTMbBtwP3A4cCUwHXjWzbjUceiiwd8zj85g++wPjgKeBPuHzc2Z2bNLfQC00blhfJQuS9Ro2bEjDhg2jDkNERBIzCjgTOBs4EWgJ/MfM6ldzzCDgL8AA4BvATmCSmbWt0G4S5XO3U5MaeRxSvgSwmc0EPnT3C2O2fQ487+7XVtJ+EPAm0MHd86vocxzQ1t2HxGybBKx197OriyeKJYBFstGYMWMAGDlyZKRxiIhks2QuAWxmrYC1wAXu/nS4rSuwBPi2u78WZz/NgULg++4+Ptw2Bmjv7t9NRqy1ldIRXTPLA/oCEyvsmkjwV0F1ZpvZV2Y22cxOrrCvfyV9vhZHnyKSJGPGjNmV7IqISEboCzQkJody92XApySWQ7UgyCnXV9h+gpmtMbMFZvaIme21pwEnKtU3o7UH6gOrK2xfDQyu4pivgEuAWUAecC4w2cwGuvvbYZtOVfTZqbIOzewi4KLwpZvZtkTeRIwGBMP1kp50fSIQZ5mOrk160/VJX7o26S0V16eJmc2Oef2wuz9cy746ASVAxU/Mq8yhqnA/8AEwI2bbBOBFYBHQHbgNeMPM+rr79lrGm7C0n3XB3ecD82M2zTCz7sBVwNuVHRNHnw8Dtf2h2MXMZrv70Xvaj9QNXZ/0pWuT3nR90peuTXpLl+tjZrcBv6uhWcVPx2t7rvuAE4AT3L2kbLu7PxvT7CMzm0NQEvEdggQ4JVKd6OYT/OXQscL2jsCqBPqZCQyPeb0qCX2KiIiIZINRQE0Tmy8FjiP4pL09Qa1umY7EMZhoZn8iyMdOdveF1bV195Vmthw4oKZ+kymlia677wgz+iHAczG7hgAvJNBVH4KShjIzwj7+WKHP6bUMVURERCQjhTfvV3oDf6wwJysmyJmeCbd1AQ6mhhzKzO4HhhEkuZ/Fca72wD6Uz9/qXBSlC/cBT5nZu8A04GKgM/BXADN7EsDdzwtfXwEsBj4mqNEdAXyfYCqMMvcDb5nZNcC/gR8QDMmfUMfvZY/LH6RO6fqkL12b9Kbrk750bdJbRl0fdy80s78Dd5vZGqCAIE/7kGBqMADM7DNgtLuPDl8/SHDP1PeB9WZWVs+72d03h7Mw3EwwiPkVQY3uHcAa4F8peGu7pHx6MQgWjACuJphTbR7wK3d/K9w3BcDdB4WvrwYuBLoA2wgS3jvc/ZUKfZ5FUOjcE/gS+J27p6wGRERERCTTmFkj4B7gHKAJMBm4NJx9oayNA7e4+80xrytzi7vfbGZNCAYejwRaEyS7bwI3xPabCpEkuiIiIiIidS2SJYBFREREROqaEt1qmNmlZrbIzIrMbI6ZnVhD+4FhuyIzW2hmF6cq1lyUyPUxs73N7Bkz+8zMSsIVW6SOJHhtzjCzieF66ZvMbKaZnZ7KeHNNgtdnoJlNN7MCM9sW/g5dmcp4c0mi/+/EHHeCme00s3l1HWMuS/B3Z5CZeSWPg1IZc65TolsFMxtGcJPb7QQ1JtOBV82sWxXtewCvhO2OJCi6fsDMzqysveyZRK8P0IjgDtQ7CaankzpSi2szEHiDYG7FIwl+j/4V73/wkphaXJ/NwJ+Bk4BDCO6FuCW810KSqBbXpuy4NsCTBLWVUkdqe32AQwnuSSp7fF6XcUp5qtGtgpnNBD509wtjtn0OPO/u11bS/i7gDHc/IGbbo8Ch7t4/FTHnkkSvT4Vj/wPku/vIuo0yN+3JtYlp/y7wtrv/po7CzFlJuj4vAtvd/ew6CjMn1fbahNdjLmDAWe7eu86DzUG1yAsGEdyA1SGc7ksioBHdSphZHsH6zxMr7JpI1Ws/96+k/WvA0WbWMLkR5rZaXh9JgSRemxZ8fc102UPJuD5mdmTYdmpyo8tttb024ch6R4KRdqkje/i7M9vMvjKzyWaWlNXIJH5KdCvXnmClkNUVtle39nOnKto3CPuT5KnN9ZHU2ONrY2a/IJhO8KnkhibswfUxs+Vmth2YDfzF3f9aNyHmrISvjZkdBtwEjIhdelXqRG1+d74CLiGY9/8MYD4wWWVZqRXFghEiIpUKa9r/CAxz9yVRxyPlnAg0J1gy9C4zW+Tu+mMkIuHcp+OAK919UdTxyNe5+3yC5LbMDDPrDlxFHMvrSnIo0a1cPlBC8HFQrI7AqiqOWVVF+53EsQyfJKQ210dSo9bXJlz05UngPHcfXzfh5bxaX5+YZOojM+tIsOqREt3kSfTa7E2wTOvjZvZ4uK0eYGa2EzjV3St+zC61l6z/d2YCw5MVlNRMpQuVcPcdwByCtZ9jDaHqtZ9nVNF+trsXJzfC3FbL6yMpUNtrY2Y/IkiaRrr783UXYW5L4u9OPYKZTCRJanFtVgCHAX1iHn8Fvgi/1r+FSZTE350+BCUNkiIa0a3afcBT4d3f04CLgc4E/5BgZk8CuL/5wkAAAAooSURBVPt5Yfu/Ar80s1HA34DjgZGA7kquG4leH8ysT/hlS6A0fL3D3T9JZeA5IKFrY2bDCZLcK4G3bPea6TvcfV2KY88FiV6f/wMWsfsj2JMIrtVfUht2Toj72oQDKOXmzDWzNQSzYWgu3bqR6O/OFcBi4GMgDxgBfJ+gZldSRIluFdx9nJm1A64n+IhoHsFHQWV1g90qtF9kZqcCfyIoPl8JXObuL6Qw7JyR6PUJvV/h9WnAEqB7XcWZi2pxbS4m+LdoVPgoMxUYVLfR5p5aXJ/6wF0Evyc7gS+Bawj/c5fkqeW/a5Iitbg+eQT3HHQBthEkvN9x91dSFLKgeXRFREREJEupRldEREREspISXRERERHJSkp0RURERCQrKdEVERERkaykRFdEREREspISXRERERHJSkp0RdKcmR1gZqPN7FMz22xmm8zsMzN7xMyOi2m32MzczBZHGG5ZLGPCWDxc271se0cze9rMvjKzknD/KDPrHtN+TB3G1drMbg4f34837lQxs0Ex56/pcXN4TNnrKamOtyZ1eV0TuVYVvq9JjUNE0psWjBBJY2Z2AfAQX19utVf46ECw0k6muB8YFuH5WwM3hV8/Afw7wlhERKSOKdEVSVNm9g3gUYJPXhz4A8Hy0muAfYGzgAMjC7Aa7j6SYAnsivqGzxuAHu6+IWaf1XFYNaom7lSdfwox3wczGwk8Hr58Iowv6cyssbsX1UXfIiJRUumCSPq6g92/o3929xvcfbm773D3z939DuDC6jowsz5m9qKZfWFmG82s2MxWhduOrtC2h5k9aWZLzazIzDaY2bzwI+K9YtpdaGazzWydmW03sxVm9rqZnR/TptzHymUfHQP7h01aA+vD/SOr+4jbzI4ys3+E59lhZvlm9qaZHRPub25mT5jZR2ZWEL7HDWb2lpkNi+nnZmBRTNfnVzxnNSUXzczsFjP72My2mdlWM3vfzH5tZg1i2pV7H2Z2Xvg93GZB6cn51CEz+4aZvROe70szu9rMYhPnm2Pi+4GZ/d3M8gmWJy1rc7CZPRXz/V5jZs+b2eEVzhXXz0uFY35kZh9W9/0wsxPN7GUzWxvz8/psxfNX8z3oHMa7Ofx5eAhoUUXbhN+DiGQYd9dDDz3S7AHsRTCKW/bYJ45jFodtF8dsG16hn9jHFuDgmLYfV9O2d9jmh9W0eT6mrzEx27sDg6o5bmTYpuz1mJh+fgAUV3Vc2KZTNX07cF7Y7uZq2oypLO5wWzNgTjXHvgLUC9vGvo/1VbQ/IYGfg5GVfV8qtCnbn1/F92pETNubK7Tf1S7cfwKwtYq4twEnJvjzEvv9WFXT9wMYAZRU0a4IGFTVz1i4rQnwaSXHrqzs+xjPe9BDDz0y+6ERXZH01D3m643uvqKW/bwHfAvYm6DOtyVwSbivKfBzADNrBxwSbv8zQXLXFugH3AAUhvtOCp83E9QINyIoo/gRMKGqINx9irsbsCTctMTdLXyMqewYM2sCPMLuEqsbgY5Ae4KEe2G4fRNB3W/38D01BgYQJGwAvw5juBnoEXOKJ2JiGFlV7MAVwFHh168RfC97EnxvAb5N8AdFRa2BS4FWwF0x28+t5lx7oh1wN9AG+GUc5zNgKMH37LBw2yMEyeISgjKTRsCRwFqC7+uDkNDPS6yOVPP9MLNmwAMEn2LsJPgjpyVwcdiuEUHpTnXOAw4Kv34H6ELwKcKGig1r+R5EJMOoRlcku60CfgqMIkgEm1TY3yt8Xk+QDLQmSNw2EYyMzXX322LaLwqfmwHXE4x0fgpMdPdkJwbHEyRvAFPc/fcx+56P+XorQfI7DjiY4GPq2HrfXuyZ78R8fa27rwIws1vZfTPbqcAzFY6b4+4PhW3HAr8Nt++7h/FUZTVwo7uXmNkTwOgaznevu78Wfj3PzP6/vfsLjaOK4jj+PUiwT0KRojQaBY3gP/RJEQWx9cWXUBB8UhDBoqBFELWk2GIltT6IlkJB0ZdSIVS0CPUP2KIVFfRBm4piNILVirb4p9iGNWbr8eHMZG+Wmd3ZNMLu8PtA4M7u3Z07N3fh7N1z74zSChIvIf637a41swuJPPEq4yXVrT9uzt4P4G13z/v2RTN7ALgeuMLMLnf3mZJzrEnKz+RfEM3sOSLfPVV1zIvIANOMrkh/+iEpn2dmq5f4PnuBx4kAsD3IJX/M3f8lZtaOAaPAJmAP8GWW+3pxVn8X8BqQ13+BmOU8bmYbl9jGMhck5a871HuCmGm8kZgBbF/UtuIs27EqKf+YlI8m5aJ8zumkPLuM7Snzvbuf6eF8X7QdV81JPb+H8ZLq1h9l/Qzd+3qhbUn5WEkZ6GnMi8gAU6Ar0ofc/QTwWfLQY0X10oVQBc+tJNIWIGb7rgbOAQoX9bj7fmCEmAEdA7YS+ZLXELO3uPvf7n4X8RPvLcB9wKfEz8rbzGy42hVWcjwpX9mhXpo2sA44N0uT+L2gri+hHSeS8khJOa2Tmz/L8/Zq4XzuXuV8jbbj9BoOJGkdC39ELvJX2Tm6jpey9lHcH2X93H5c1Ne535LyRSXlViN6vwYRGTAKdEX61yZi5hRgQ7ZifrWZDVncRGKcyKks06QVUDSBv4if+J8uqmxmO4G1RP7tu8DrwFz29EhW504zewgYBqaI2d2p/C0oCSiW6GNaweptZjZuZqvMbKWZrTOzPF+4mbzmJDBkZk+yeHYvlwa/o1leaDdvJeUJi5teXErkDBfVGUju/h3wbXa41swesbjBxgozu87MNgOTef0q46VHnxDpBAB3mNmYxY4a9xN5wgDTHdIWAN5PyhvNbNjMLgMeLar8P1yDiPQZBboifcrdDxCLxeaJz+oW4GfgHyIgmSAWHpW9/hRwMDscBn4iZkmvKnnJg8B7yTmmiIVKEOkJEDOrO4lUglPZ3/rsuV+AIz1cYkfu3iC2T8sD2QliNu8PYB+xIIysnPuACFo2ULAAyd1PEyvtIRasnc622rq3Q1N2sHjh2a9ErnK+J/A7RH5wHawndjcw4Hki8GwAh4GnWJxOUmW8VObus8DDxJe7IeBNYny9lFWZo7Uwrcxu4JusfBORljDD4rSI1LJeg4j0HwW6In3M3V8mUg12EcFtg8hvnAZeAbZ3eYu7iSDsT2IV+R7K70y2HfiICCabxCKvz4mgcUdW5yCx6GqGCCjPEAHuJHBrFpwuG3ffR+TeThJbRDWJQPcQrbzdZ4FtRLDSyJ5bQ/mq+XuAD4kZ7iptmCV2m9hKLFaaI4LBw8RM4ViW7znw3P0QEcDvJoLEeaK/jxBfcMaT6lXGS6/nf5XYim4/MfveJL6c7QVu8LihRqfXN4DbgTeIz8lJ4oYbZftNL/s1iEh/sWqpXCIiIiIig0UzuiIiIiJSSwp0RURERKSWFOiKiIiISC0p0BURERGRWlKgKyIiIiK1pEBXRERERGpJga6IiIiI1JICXRERERGpJQW6IiIiIlJL/wHQ7Z7o5+kNGwAAAABJRU5ErkJggg==\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], - "source": [ - "plot(thresh_arr, 'Classification Thresholds',\n", - " val_metrics['bal_acc'], 'Balanced Accuracy',\n", - " val_metrics['avg_odds_diff'], 'avg. odds diff.')" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.1900\nBest balanced accuracy: 0.7465\nCorresponding 1-min(DI, 1/DI) value: 0.1129\nCorresponding average odds difference value: 0.0036\nCorresponding statistical parity difference value: -0.0414\nCorresponding equal opportunity difference value: -0.0057\nCorresponding Theil index value: 0.0946\n" - } - ], - "source": [ - "describe_metrics(val_metrics, thresh_arr)" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [], - "source": [ - "lr_transf_metrics_panel20_test = test(\n", - " dataset=dataset_orig_panel20_test,\n", - " model=lr_transf_panel20,\n", - " thresh_arr=[thresh_arr[lr_transf_best_ind_panel20]])" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.1900\nBest balanced accuracy: 0.7490\nCorresponding 1-min(DI, 1/DI) value: 0.0533\nCorresponding average odds difference value: 0.0158\nCorresponding statistical parity difference value: -0.0184\nCorresponding equal opportunity difference value: -0.0150\nCorresponding Theil index value: 0.0988\n" - } - ], - "source": [ - "describe_metrics(lr_transf_metrics_panel20_test, [thresh_arr[lr_transf_best_ind_panel20]])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The new model is both relatively fair as well as accurate so we deploy and test against the 2016 deployment data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 9.3. Testing model learned on 2015 (Panel 20) data on 2016 (Panel 21) deployment data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Evaluate new 2015 transformed data model and evaluate again on 2016 deployment data**" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": {}, - "outputs": [], - "source": [ - "lr_transf_panel20_metrics_panel21_deploy = test(\n", - " dataset=dataset_orig_panel21_deploy,\n", - " model=lr_transf_panel20,\n", - " thresh_arr=[thresh_arr[lr_transf_best_ind_panel20]])" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": "Threshold corresponding to Best balanced accuracy: 0.1900\nBest balanced accuracy: 0.7370\nCorresponding 1-min(DI, 1/DI) value: 0.1698\nCorresponding average odds difference value: -0.0021\nCorresponding statistical parity difference value: -0.0648\nCorresponding equal opportunity difference value: 0.0016\nCorresponding Theil index value: 0.0960\n" + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "4tQlJ4P1HHV-", + "outputId": "1f67dacc-9607-49d3-dd42-47a9003a5cbd" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "disp_imp = np.array(val_metrics['disp_imp'])\n", + "disp_imp_err = 1 - np.minimum(disp_imp, 1/disp_imp)\n", + "plot(thresh_arr, 'Classification Thresholds',\n", + " val_metrics['bal_acc'], 'Balanced Accuracy',\n", + " disp_imp_err, '1 - min(DI, 1/DI)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "zMMhQiBtHHV_", + "outputId": "9666d9a4-09df-450b-8df5-274b079de02b" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plot(thresh_arr, 'Classification Thresholds',\n", + " val_metrics['bal_acc'], 'Balanced Accuracy',\n", + " val_metrics['avg_odds_diff'], 'avg. odds diff.')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_TnIlce5HHV_" + }, + "source": [ + "Make a function to print out accuracy and fairness metrics. This will be used throughout the tutorial." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "9TkUXqWNHHV_" + }, + "outputs": [], + "source": [ + "def describe_metrics(metrics, thresh_arr):\n", + " best_ind = np.argmax(metrics['bal_acc'])\n", + " print(\"Threshold corresponding to Best balanced accuracy: {:6.4f}\".format(thresh_arr[best_ind]))\n", + " print(\"Best balanced accuracy: {:6.4f}\".format(metrics['bal_acc'][best_ind]))\n", + "# disp_imp_at_best_ind = np.abs(1 - np.array(metrics['disp_imp']))[best_ind]\n", + " disp_imp_at_best_ind = 1 - min(metrics['disp_imp'][best_ind], 1/metrics['disp_imp'][best_ind])\n", + " print(\"Corresponding 1-min(DI, 1/DI) value: {:6.4f}\".format(disp_imp_at_best_ind))\n", + " print(\"Corresponding average odds difference value: {:6.4f}\".format(metrics['avg_odds_diff'][best_ind]))\n", + " print(\"Corresponding statistical parity difference value: {:6.4f}\".format(metrics['stat_par_diff'][best_ind]))\n", + " print(\"Corresponding equal opportunity difference value: {:6.4f}\".format(metrics['eq_opp_diff'][best_ind]))\n", + " print(\"Corresponding Theil index value: {:6.4f}\".format(metrics['theil_ind'][best_ind]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "If3oRVsIHHV_", + "outputId": "50ca70be-1981-4935-9b50-35f537fbbccf" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.1900\nBest balanced accuracy: 0.7627\nCorresponding 1-min(DI, 1/DI) value: 0.6066\nCorresponding average odds difference value: -0.1831\nCorresponding statistical parity difference value: -0.2643\nCorresponding equal opportunity difference value: -0.1608\nCorresponding Theil index value: 0.0936\n" + } + ], + "source": [ + "describe_metrics(val_metrics, thresh_arr)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6d_DyGR6HHV_" + }, + "source": [ + "#### 3.2.3. Testing LR model on original data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "U-poJJj2HHWD" + }, + "outputs": [], + "source": [ + "lr_orig_metrics = test(dataset=dataset_orig_panel19_test,\n", + " model=lr_orig_panel19,\n", + " thresh_arr=[thresh_arr[lr_orig_best_ind]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "8QOwbTfFHHWD", + "outputId": "89bac9e9-6f9d-49f0-e009-ee49c9d67f9b" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.1900\nBest balanced accuracy: 0.7759\nCorresponding 1-min(DI, 1/DI) value: 0.5738\nCorresponding average odds difference value: -0.2057\nCorresponding statistical parity difference value: -0.2612\nCorresponding equal opportunity difference value: -0.2228\nCorresponding Theil index value: 0.0921\n" + } + ], + "source": [ + "describe_metrics(lr_orig_metrics, [thresh_arr[lr_orig_best_ind]])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kTskH6IFHHWE" + }, + "source": [ + "For all the fairness metrics displayed above, the value should be close to '0' for fairness.\n", + "\n", + "1-min(DI, 1/DI) < 0.2 is typically desired for classifier predictions to be fair.\n", + "\n", + "However, for a logistic regression classifier trained with original training data, at the best classification rate, this is quite high. This implies unfairness.\n", + "\n", + "Similarly, $\\text{average odds difference} = \\frac{(FPR_{unpriv}-FPR_{priv})+(TPR_{unpriv}-TPR_{priv})}{2}$ must be close to zero for the classifier to be fair.\n", + "\n", + "Again, the results for this classifier-data combination are still high. This still implies unfairness." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DmtHiBcRHHWE" + }, + "source": [ + "### 3.3. Learning a Random Forest (RF) classifier on original data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dq0DCzjHHHWE" + }, + "source": [ + "#### 3.3.1. Training RF model on original data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "YiiL5wqoHHWE" + }, + "outputs": [], + "source": [ + "dataset = dataset_orig_panel19_train\n", + "model = make_pipeline(StandardScaler(),\n", + " RandomForestClassifier(n_estimators=500, min_samples_leaf=25))\n", + "fit_params = {'randomforestclassifier__sample_weight': dataset.instance_weights}\n", + "rf_orig_panel19 = model.fit(dataset.features, dataset.labels.ravel(), **fit_params)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "H7RinWUpHHWE" + }, + "source": [ + "#### 3.3.2. Validating RF model on original data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Z3qGN6sqHHWE" + }, + "outputs": [], + "source": [ + "thresh_arr = np.linspace(0.01, 0.5, 50)\n", + "val_metrics = test(dataset=dataset_orig_panel19_val,\n", + " model=rf_orig_panel19,\n", + " thresh_arr=thresh_arr)\n", + "rf_orig_best_ind = np.argmax(val_metrics['bal_acc'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false, + "id": "h2gP_bMdHHWE", + "outputId": "177ffe66-6dd6-4478-a58d-5c1862285cab" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "disp_imp = np.array(val_metrics['disp_imp'])\n", + "disp_imp_err = 1 - np.minimum(disp_imp, 1/disp_imp)\n", + "plot(thresh_arr, 'Classification Thresholds',\n", + " val_metrics['bal_acc'], 'Balanced Accuracy',\n", + " disp_imp_err, '1 - min(DI, 1/DI)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false, + "id": "jvBY8APFHHWE", + "outputId": "a1bba751-3d5b-4dbd-b803-ad2c98a7e34d" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAroAAAG4CAYAAACq3USPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3hU1brH8e9KJQESSgihJPTekV6kS1FQQQWli1jAftGr56hH8R6xd7ErAoqKgIKCIiJIL0KA0AOkQEhCElJICCmz7h87kTEmMAOZ2TOT9/M8eSazZ8/ebyzwy5q13qW01gghhBBCCOFpvMwuQAghhBBCCEeQoCuEEEIIITySBF0hhBBCCOGRJOgKIYQQQgiPJEFXCCGEEEJ4JAm6QgghhBDCI0nQFUIIIYQQHsmUoKuUmqGUOqGUylVK/amU6nuZ8+9QSkUqpXKUUolKqYVKqbAS54xRSh1QSl0oerzZsT+FEEIIIYRrsidrKaXqKKW+UkodUkoVKqXmlXGe22UtpwddpdRY4C3gBaATsBlYpZSKKOP83sAC4AugDXAT0Br40uqcnsA3Rcc6Fj0uVkp1d9xPIoQQQgjheuzNWoA/kAK8CGwr45pumbWUs3dGU0ptA/ZqradbHTsKfKe1frKU82cBD2itG1gdmwq8o7WuUvT8G6CG1nqI1TlrgDNa69sd99MIIYQQQrgWe7NWiff+CKRoraeUOO6WWcupI7pKKT/gGmB1iZdWA73KeNsmoI5SaqQyhADjgJVW5/Qs5Zq/XOKaQgghhBAe5wqzli3cMmv5OPl+IYA3kFTieBIwuLQ3aK23KKXGYQyRB2DU/Csw2eq0sDKuGUYplFJ3A3cDBAYGXhMSEmLfTyGEEEIIYYK4uDgN7LI69JHW+iOr53ZnLRvZlbVchbODrt2UUq2Bd4DnMX5zqAO8AnwITLqSaxb9B/ERQOXKlXVsbGz5FCuEcGmJiYkAhIW59J/LQghRJqXUea11F7PrcBfODropQCFQu8Tx2kBiGe95EtiutX6l6PlepVQ2sEEp9S+t9cmi99pzTSFEBTRu3DgA1q1bZ24hQgjhOFeStWzhllnLqXN0tdZ5wJ/AkBIvDcFYEViaQIx/YdaKnxfXv8XOawohKqAnnniCJ554wuwyhBDCYa4wa9nCLbOWGVMXXgcWKKW2Yyw0uxeoC3wAoJSaD6C1Lp6WsAL4WCl1HxenLrwJ7NJaxxWd8xbwh1LqCeB74GZgANDHKT+REMItDBs2zOwShBDCGezNWiilOhZ9GwRYip7naa0PFB13y6zl9KCrtf5GKVUTeAojtEYBI7TWxRNlI0qcP08pVRW4H3gNyADWAv9rdc7mogVr/wfMBo4BY7XWpfaCE0JUTPHx8QCEh4ebXIkQQjiOvVmryO4Sz0cCsUDDomu6ZdZyeh9dV1O5cmWdnZ1tdhlCCCfo378/IHN0hRDuSymVo7WubHYd7sLluy4IIUR5eeqpp8wuQQghhBPJiK6M6AohhBDCTciIrn2c2nVBCCHMdPz4cY4fP252GUIIIZxERnRlRFeICkPm6Aoh3J2M6NpH5ugKISqM5557zuwShBBCOJGM6MqIrhBCCCHchIzo2kfm6AohKozDhw9z+PBhs8sQQgjhJDKiKyO6QlQYMkdXCOHuZETXPjJHVwhRYbzwwgtmlyCEEMKJZERXRnSFEEII4SZkRNc+MkdXCFFhREVFERUVZXYZQgghnERGdGVEV4gKQ+boCiHcnYzo2kfm6AohKoxXXnnF7BKEEEI4kYzoyoiuEEIIIdyEjOjaR+boCiEqjMjISCIjI80uQwghhJPIiK6M6ApRYcgcXSGEu5MRXfvIHF0hRIXx5ptvml2CEEIIJ5IRXRnRFUIIIYSbkBFd+8gcXSFEhbFjxw527NhhdhlCCCGcREZ0ZURXiApD5ugKIdydjOjaR+boCiEqjHfffdfsEoQQQjiRjOjKiK4QQggh3ISM6NpH5ugKISqMzZs3s3nzZrPLEEII4SQyoisjukJUGDJHVwjh7mRE1z4yR1cIUWF8+OGHZpcghBDCiWREV0Z0hRBCCOEmZETXPjJHVwhRYaxfv57169ebXYYQQggnkRFdGdEVosKQObpCCHcnI7r2kTm6QgiPprUmKfMC0cnnGD7jOc7m5LH3ZDrt61czuzQhhBAOJiO6MqIrhEewWDSn0s8TfeYc0UnnOJqcxdFk4/usCwV/nacUaA3t6gUzvnsEIzvUpbK//M4vhHAPMqJrHwm6EnSFcEvpOXn8GXuWHTFn2RmTxv6ETM7nF/71ekgVf5qGVqZZaFWa1a5C09AqJOzfjq+PFxnVW/Ll1jgOJ2VRxd+HmzvVY3yPCFqGBZn4EwkhxOVJ0LWPBF0JukK4PK2N0dqdMWfZEZPGzpizHE7KAsDXW9G2XjAd6lejee2iUFurCtUr+/3jOtZzdLXW7Io7y5db4/hx32nyCixc06A647tHMKJdHSr5ejvzRxRCCJtI0LWPBF0JukK4JK0130eeYu2hM+yMSeN0Ri4AVf196NygOl0bVqdLwxp0qF+NAD/bQml8fDwA4eHhfzt+NjuPJbtO8tW2OI6nZFMt0JdbOtdnYMtQWtUJKjU0CyGEGSTo2keCrgRdIVyOxaKZ/eMB5m2OoXaQP10b1vjrq0VYVby9lEPuq7Vmy/FUvtwWxy9RiRRYjD8fw4Iq0apOVVrWCaJVnSBa16lKw5qV8fGWDo1CCOeSoGsfCboSdIVwKYUWzRNL9rL4z5NM69OIp65vhVLlE2x//vlnAIYNG3bZc89m5xGVkMHB05kcPJ3FwdOZRCef+yv8+vt40bx2VVrVqUq7+tXo0zSEhjUDy61WIYQojQRd+0jQlaArhMvIK7DwyDeR/LTvNA8PbsZDg5qVa3C82j66eQUWopPPFYXfTA4mGiE4LTsPgPrVA+jbLIQ+TWvRu2lNqgXKlAchRPmSoGsfCboSdIVwCefzCrnvyz9Zd/gMT13firv6Ni73eyQmJgIQFhZWbtfUWhOTmsPGo2fYcDSFLcdSybpQgFLQvl4wfZvVok+zEDpHVMfPR6Y6CCGujgRd+0jQlaArhOmycvOZNm8nO2LTmHNzO8Z1izC7pCtWUGhhz8l0/jiSwsboFCLj0ym0aAL9vOnZuCZ3dI9gQItQvBw0z1gI4dkk6NpHgq4EXSFMdTY7j8mfb+dAQiZvjO3IyA51HXavFStWADBy5EiH3aOkzNx8thxLZePRFH49kERiZi5NalVmet/G3NSpnrQxE0LYRYKufSToStAVwjRJmblM+GQbsWk5fDChMwNb1nbo/a52ju7Vyi+0sHLfaT764zj7EzIJqeLHpJ4NmdCjATWkhZkQwgYSdO0jQVeCrhCmiE/LYfwn20g9d4GPJ3ehV5MQh98zJSUFgJAQx9/rUorbmH38x3F+P3yGSr5e3HpNONP6NKJhiPz9JYQomwRd+0jQlaArhNNFJ59jwifbOJ9fyBd3dqNjeDWzSzLN0aQsPtlwgmW7T5FvsXBd69rcfW1jrmlQw+zShBAuSIKufSToStAVotxorcnNt3A2J4/0nHzSc/I4m5NP+nnj+dnsPNLP57P2UDJeSrHwrm60DAtyWn1Lly4FYPTo0U67p62Ss3KZvzmWhdtiSc/Jp1FIZfo0DaF30xB6NqlJcICv2SUKIVyABF37SNCVoCvEVcnNL2TlvtN8tS2OvacyyCuwlHlugK831QN9qV8jkJfGtKeRkz+mN3uOri1y8gpYuusUaw8ls/V4Kjl5hXgpaFe/Gn2Lgm/nBtXw95FFbEJURBJ07SNBV4KuEFfkREo2X22LZfGfJ0nPyadxSGUGtgylRhU/qgf6UT3Ql+AAP6pX9qV6oB/BAb6mdxjIyMgAIDg42NQ6bJVXYLQq23A0hU1Wrcoq+XrRrVFN+jStSe+mIbQKC5J2ZUJUELYGXaXUDOAxoA6wH3hYa73hEuf3A14H2gAJwMta6w+sXn8W+E+JtyVprcuvMbkDSNCVoCuEzfILLaw5kMTCbbFsik7Fx0sxtE0Y47tH0LNJTdn+1sGycvPZdjyNjdFGj97o5HMAVA/0pWeTmvRsEkLvJjVpFFJZ/l0I4aFsCbpKqbHAQmAGsLHocSrQWmsdV8r5jYAo4DNgLtCn6HGc1npJ0TnPAuOA/lZvLdRan7nKH8mhJOhK0BXishLSz7Noexxf74jnTNYF6lUL4PZu4dzWNZzQqpXMLs9m33zzDQBjx441uZLykZiRy+ZjKWyKTmXzsRROZ+QCEBZUiV5NatKraQi9mtSkbrUAkysVQpQXG4PuNmCv1nq61bGjwHda6ydLOf8lYLTWupnVsU+ANlrrnkXPnwVu0Vq3LZ+fxDkk6ErQFaJUGTn5/HYoiR/3nmbd4WQ0MKBFKOO7R9C/RSjebvhRuTvM0b1SxVsRbz6WwuboVLYcTyUtOw+ARiGV6d20JvcPaEZYsPv8YiKE+KfLBV2llB+QA9yutV5sdfw9oK3Wul8p7/kD2Ke1nml17FbgKyBQa51fFHQfB9KBC8A24F9a6+Pl85M5RoUPuuHh4XrBggVmlyGESyi0aDJy88k8X8C53AI0Gl9vL6oH+lKjsh++3l5ml3hVcnONEc9KlSpG2MvNt3DuQgHZFwo4d6EALy9FgxqBBPrJQjYh3NWAAQPygH1Whz7SWn9U/EQpVRc4BfTTWv9hdfwZYLzWukXJayqljgALtdazrY5dC6wH6mqtTyulhgNVgUNAKPAU0BJj1De1PH/G8uRjdgFmS0tL+2uUR4iKKDEjl5+jTrMqKpEdMWlYNETUCGR42zCGtQ2jQ/1qstDJAxxJyuLu+Ts5te88z45qw/juDcwuSQhxZQq01l2cfVOt9Srr50qprcBxYDLGIjaXVOGDrhAVUXJWLt/vPsWqqER2x6UD0Cy0CvcPaMqwtnVoVaeqRy5mWrhwIQATJkwwuRLna167Kj/M7MND3+zm38uiiDqVybOjWkubMiE8TwpQCJTcU702kFjGexLLOL+g6Hr/oLU+p5TaDzQr7XVXIUFXiApk78l0Pt8Uw497E8gv1LStF8RjQ1swtE0YTUOrmF2ew33yySdAxQy6AMGBvnw6uSuvrT7M3HXHOJKUxfvjOxMaVDGmcghREWit85RSfwJDgMVWLw0BlpTxti3AzSWODQF2aq3zS3uDUqoSxtSF36+uYseq8HN0ZTGa8HQFhRZ+2Z/E55tOsDP2LJX9vLm1SziTejagcS3PD7fW8vONP699fWWXsZ/2nmbW4j0EBfjw/oRr6BxR3eyShBA2sKO92AKMtmKbgHuBaRjzaWOVUvMBtNaTis4vbi/2MfAh0BujvdjtVu3FXgVWAHEYc3SfBq4F2mmtY8v75ywvpgRde5oYK6XmYcz/KOmvf9FKqf6U/htFK631oUvVIkFXeKr0nDwWbY9nwZYYEjJyiagRyOReDbm1S32CKknQE3AoMZO75/9JYkYuz9/UhrFdI8wuSQhxGXZuGPE4RtaKAh4pXpymlFoHoLXub3V+P+ANLm4Y8VKJDSO+xgi2IcAZYCvwtNb6QLn8YA7i9KB7BU2Mg4GSTSA3AX9oracWndMfI+i2AdKszjujtS68VD0SdIWnOZqUxeebY1i66yS5+RZ6Nq7J1N4NGdSqtlu2BCtP8+bNA2DKlCmm1uFK0nPyeGDRbjYcTWFijwY8fUNr/Hzcu7uGEJ5MtgC2jxlB164mxqW8vzdGQO6ttd5cdKw/RtCtpbUuddJ0WSToCk+Rcu4CT38fxaqoRPx8vLipY12m9m5EqzpBZpfmMjy5j+7VKLRoXv7lEB+uP07XhtV5947O1JZ5u0K4JAm69nFq0L2SJsalXGMe0MV6Zw6roBsL+AMHgP/TWl92grQEXeEJVu9P5Mml+8i6UMB9/ZowqWcDalbxN7ss4WaW70ng8e/2YLHAiHZhTOzZkM4R1TyyA4cQ7kqCrn2c3XUhBPAGkkocTwIGX+7NRdMYbgNKjvyeBu4DdgB+wETgN6VUv9Lm/iql7gbuBvDz87PzRxDCdZy7UMDsFfv5dudJWtcJYtG4jjSvXdXssoSbGtWhLu3rBTNvcwxL/jzJ95EJtKkbxMQeDbixYz0CZKMJIYSbcfaIrt27dZR4/0zgNYxdOtIuc+5KjKbKoy51nozoCne1IyaNR7+N5NTZ89zXvwkPDWoucysv4+OPPwZg+vTplzlTZF8oYNnuUyzYEsvhpCyCKvlwa5dwJvRoQKMQGUwSwiwyomsft5q6oJSKBPZrrcfbcK//AOO01q0udZ4EXeFuLhQU8vqvR/joj+OEVw/kjbEduKZBDbPLcguDBxsfHK1Zs8bkStyH1prtJ9KYvzWWX6ISKbBorm1ei0k9GjCgZWiFX+AohLNJ0LWPWYvR9mit77Y6dgRYcqnFaEqpbsA2YIDWep0N91kGBGutB17qPAm6wp0cSszk4a8jOZSYxe3dwnnq+tZU9pd9X4RzJGfmsmh7PF9tjyUp8wJNQ6vw9d09CJH54EI4jQRd+5jVXszmJsZW7/sEuFZr3byUaz4MxGD05PUDJgBPAGO01ksvVY8EXeEOCi2aTzce59VfjhAU4MNLY9ozqFXJ3RqFcI78QgurohJ5bPEe2tcP5su7esi0GSGcRIKufZw+FKS1/kYpVRN4iotNjEdY7arxj47lSqmqwDhgdhmX9QNeAeoD5zEC7/Va65XlXL4QTrcnPp3//nSQ7TFpDG1TmxdubicdFa7Q3LlzAZgxY4bJlbg3X28vRnWoi9aah76O5Jkfopgzup10ZxBCuBzZAlhGdIWLijqVwZtrjrDmYDLVAn3594hW3HJNfQkTV2H48OEArFq1yuRKPMfLPx9i7rpjPDeqDZN7NTS7HCE8nozo2keCrgRd4WIOns7kzTVH+GV/EsEBvtx9bWMm92pIFZmLK1yQxaK5e8FOfj98hvl3dqN30xCzSxLCo0nQtY8EXQm6wkUcTszird+OsHJfIlUr+XBXn8ZM7dOQoEq+ZpcmxCVl5eYz5v3NJGVeYPn9vWlQU/4OFsJRJOjaR4KuBF1hsujkLN76LZof9yZQ2c+HO/s0YlqfRgQHSMAtb2+99RYADz30kMmVeJ7Y1GxufG8Ttar4s3RGL6rKL2hCOIQEXftI0JWgK0ygtWbPyQzmbTrBD3sSCPD1Zmrvhkzv25hqgbJbn6OMGmXsH7N8+XKTK/FMm6NTmPjZdvo3r8VHk7pIj10hHECCrn0k6ErQFU50NCmL5XsSWL4ngdjUHAJ8vZnUqwF3920snRSER5i/JYZnftjPjP5NeHxYS7PLEcLjSNC1j6xuEcLBTp7NYcWe0yzfk8DB05l4KejVJISZ/ZsytG2YTFEQHmVijwYcPJ3F3HXHaBFWlRs71jO7JCFEBSYjujKiKxwg5dwFVu47zQ+RCfwZexaAThHVGNWhLte3r0No1UomV1gxvfrqqwDMmjXL5Eo8W16BhQmfbGPPyXQW39uT9vWrmV2SEB5DRnTtI0FXgq4oR1pr/rVsH9/uPEmhRdOidlVGdazLyPZ1iagZaHZ5Fd6YMWMAWLJkicmVeL7UcxcY9e4mCi2a5ff3JjRIfrkTojxI0LWPBF0JuqIczdt0gmdXHOD2bhFM7tWAlmFBZpckhGkOJGQy5v3NtAiryqLpPQjw8za7JCHcngRd+0jQlaArysn+hAxufm8zfZqF8OnkLrKDmRDAqn2nue/LXYQFVeKRIc0Y07k+Pt5eZpclhNuSoGsfCboSdEU5yMkr4IZ3NnIut4BVD/WVDgou6sUXXwTgiSeeMLmSimX7iTReWHmQyPh0moVW4fFhLRncKlR+GRTiCkjQtY/8Wi1EOXhu+QFOpGTz5tiOEnJdWGRkJJGRkWaXUeF0a1SDZTN68f74zhRaNNPn7+S2D7f8tVBTCCEcRUZ0ZURXXKUVexJ4YNFuZg5owmNDpW+oEJeSX2jh253xvLnmKGeyLjC0TW0eG9qSpqFVzC5NCLcgI7r2kaArQVdchfi0HEa8tYFmtavwzT098ZW5h0LYJCevgE83nODDP45zPr+Q27qE8/DgZtSW7gxCXJIEXftI0JWgK65QfqGFWz/YwrHkc6x8qC/hNaR9mKt7/vnnAXj66adNrkQUSz13gXfWRvPltli8vRSjOtSlU0R1OoZXo1loFVm4JkQJEnTtIzujCXGF3vj1CJHx6bx7RycJuW7i8OHDZpcgSqhZxZ9nR7Vhau+GvLnmKKsPJPHtzpMABPh6065eMB3Cg+kYXp0O4cHUqxYgi9iEEDaTEV0Z0RVXYFN0ChM+3cbYLuG8OKa92eUI4TG01sSm5rDnZDqR8cbX/oRM8gosAIRU8adjeDBt6wXTNLQKjUIq0yikMoF+Mm4jKgYZ0bWPBF0JusJOqecuMPytDVSt5MOKB/rIX7BCOFhegYXDiVlExp8lMj6DPSfTiU4+97dz6gZXolGtyjQOMcJv41qVaVKrCnWrBeDtJSPAwnNI0LWPBF0JusIOWmvunLeDTcdS+X5Gb1rXlZ3P3MkzzzwDwOzZs02uRFyt83mFnEjJ5kRKNsfPnONESjbHir7Pyi3467wAX2/eGNuBYW3rmFitEOVHgq59ZChKCDt8vimG3w+f4blRbSTkuqH4+HizSxDlJMDPm9Z1g/7x/6HWmtTsPI6fyeZEyjnmbY7lqe+j6NkkhOAAX5OqFUKYRUZ0ZURX2CjqVAaj527m2uYhfDxJtvgVwh1Encpg5LsbmdyzIc+OamN2OUJcNRnRtY/0bRHCBlm5+Ty4aDfVK/vy8i0dJOQK4Sba1gtmQvcGzN8Sw4GETLPLEUI4mQRdIS4jr8DCfQt3EZeWw5tjO1Gjsp/ZJYkr9OSTT/Lkk0+aXYZwslnXtaBaoB/P/BCFxVKxP8UUoqKRoCvEJVgsmse/28PG6BReHNOenk1qml2SuAqpqamkpqaaXYZwsuBAX54Y3pKdsWdZuvuU2eUIIZxI5ujKHF1xCS+uOsQH648x67rm3D+wmdnlCCGukMWiueWDzcSm5rB2Vn9ZmCbclszRtY+M6ApRhi82x/DB+mOM7x7BzAFNzS5HCHEVvLwUs29sy9mcPF5fLTvkCVFRSNAVohQ/R53m2RX7GdK6NrNvbCuLzzzErFmzmDVrltllCJO0rRfMxB4NWLA1lqhTGWaXI4RwAgm6QpSwIyaNB7+OpFN4Nd4e10l2VfIg58+f5/z582aXIUz06HUtqC4L04SoMGSOrszRFVaOJmVxywdbqFnFjyX39qK6dFgQwuN89+dJZi3ew8u3tOe2LuFmlyOEXWSOrn1kRFeIIkmZuUz5fAd+Pl58MbWbhFwhPNToTvXo0qA6L646REZOvtnlCCEcSIKuEEBmbj6TP9tOek4en0/pSniNQLNLEg7w8MMP8/DDD5tdhjBZ8cK09Jw8XpWFaUJ4NAm6osLLK7Bw74I/iU4+xwcTr6FtvWCzSxJCOFjrukFM7tWQhdti2XdSFqYJ4alkjq7M0a3QLBbNI99G8kNkAq/f1oHRneubXZIQwkkyc/MZ+Op66lcPYOl9vfCShafCDcgcXfvIiK6o0Oaui+aHyAQeH9ZCQq4QFUxQJV/+fX1LIuPT+XZnvNnlCCEcQIKuqLCik7N4+7dobmhfh/v6NTG7HOEEM2fOZObMmWaXIVzITR3r0a1hDV76+RBns/Muea7WmrwCC/mFFidVJ8SVU0rNUEqdUErlKqX+VEr1vcz5/YrOy1VKHVdK3Xu113QFPmYXIIQZLBbNv5ZGEejvzbOj2siGEBVEQECA2SUIF6OUYvZNbbj+7Y2Mfn8zQZV8uFBgIa/AwoW/vgr/eg7g7+PFQ4ObMb1vY3y9ZbxIuB6l1FjgLWAGsLHocZVSqrXWOq6U8xsBK4HPgAlAH2CuUuqM1nrJlVzTVdg0R1cpumvNNifU43ROmaOrNUiQcilfbYvjX8v28cot7blV+mgKUeEt2h7HD5Gn8Pfxxt/HC39fb/y8vfD39frrsfi1PfHprD6QRJu6Qbw0pr0sYBVOZcscXaXUNmCv1nq61bGjwHda6ydLOf8lYLTWupnVsU+ANlrrnldyTVdha9C1APuAT4CFWnPW0YU5i8ODbkIC3HorzJ4NgwY57j7CZsmZuQx6fT1t6wbz1fTuMporhLDbqn2nefqH/ZzNyeOeaxvz4KBmVPL1NrssUQFcLugqpfyAHOB2rfViq+PvAW211v1Kec8fwD6t9UyrY7cCXwGBgLL3mq7CnqkLbYE3gZeUYhnwidb87piynKdGjRqsW7fOYdf3ys3lmpMn8Rk3jh2ffkpBUJDD7iVsE5eWwz3NC2gemsP69evNLkc40auvvgrArFmzTK5EuLsA4KVe3iRmKNJSDzN/aTT1qwcQ6CdhVzicj1Jqp9Xzj7TWH1k9DwG8gaQS70sCBpdxzTBgTSnn+xRdT13BNV2CrUH3deA2oD5QCRgHjFOK48CnwDytSXRMiY6VlpZG//79HXuTZcugRw/6LFgA334r0xhM9OuBJJ75eSePDW3NdQOaml2OcLJffvkFwPH/z4sKZePRFJ5YupeTu88zsUcDHh/WgqqVfM0uS3iuAq11F7OLcBc2zaLXmllaEwFcC7wPnMFI902A/wJxSrFYKTo6rFJ31rkzPP88fPcdfPGF2dVUWFm5+Tz9fRQtw6py97WNzS5HmGDOnDnMmTPH7DKEh+nTLITVj1zLnb0bsXBbLEPf+IPfDyWbXZaouFKAQqB2ieO1ocxBycQyzi8out6VXNMl2LVcVGs2as1MoCtg/ZmvDzAa2KYUN5ZjfZ5j1izo1w8eeACOHTO7mgrp1V8Ok5SVy5zR7WSltBCiXAX6+fDMyNYsua8Xlf19mDpvBw9/vZv0nEu3LBOivGmt84A/gSElXhoCbC7jbVvKOH+n1jr/Cq/pEuz6214phijFEiAaY3QXjJHd3cBxwBdjhFeU5O0N8+cbjxMnQkGB2RVVKLvizjJ/ayyTezakU0R1s8sRJpk6dSpTp041uwzhwTpHVOfHB/vw4KBm/Lj3NDe9t4ljZ86ZXZaoeF4Hpiil7lJKtVJKvQXUBT4AUErNV0rNt9+ubGoAACAASURBVDr/A6CeUurNovPvAqYAr9p6TVdlU9BViseU4ijwM3ATRqDVwPdAP625BugIZALNHVSr+4uIgA8+gC1b4L/y+4Cz5BVYeHLJPsKCKjFraAuzyxEmCg8PJzxc2skJx/L38ebRIc355p4eZOYWMHruZrYcSzW7LFGBaK2/AR4GngIiMfrijtBaxxadElH0VXz+CWAExiBmJPBv4MHiHro2XtMl2dNeTGOM3mZiNBR+W2tiSpx3CGimNW6z7NQpfXRLmjgRFi2CjRuhRw/n3rsCeu/3aF755TCfTOrC4NYlpxcJIYTjxKXmcOcXO4hJyeaF0e24Tfp2i6tkSx9dcZE9Qfc48A7wqdaU+jmMUtQFfLXGpdO9NVOCbkYGdOhgTGOIjISqVZ17/wrk+JlzDHtrA4NbhTJ3/DVmlyOEqIAyzucz88tdbIxO4b7+TXjsuhZ4eUn3HXFlJOjax9Y5ujdjjNS+VVbIBdCaBHcKuaYJDoaFCyEmBh56yOxqPJbWmn8t24e/jxfPjmxjdjnCBUyYMIEJEyaYXYaoYIIDfPl8alfu6B7B++uOMfOrXZzPKzS7LCEqBFuD7jogXClCrA8qRYhSRCiF7H9orz594F//gs8/N9qOiXK3eOdJth5P48nhrQgNqmR2OcIFtGjRghYtZJ62cD5fby/+e1Nbnrq+FT/vT2TcR1tIzsw1uywhPJ6tUxeWYCxCe0Rr3rY6fj/wFrBMa25xWJUOZMrUhWL5+UbgPXoU9u6F+vXNqcMDncm6wODX19OidlW+vruHfEwohHAZvx5I4sFFu6ke6MunU7rSqo7smClsJ1MX7GPriG73osclJY4vxVig1h1hP19fYwpDXh5MmQIWi9kVeYz/++kA5/MKeWF0Owm5QgiXMqR1bRbf25NCrbnl/c2yuYQQDmRr0K1V9Jhe4nhGideFvZo1gzffhN9+gzfeMLsajxCTks3yPQlM69uIpqFVzC5HuJBx48Yxbtw4s8sQgrb1gvlhZh8ahlRm2hc7eH31YU6kmPTpohAezNagm1X0eF2J48XPpRv21Zg2DW66yZizu2eP2dW4vflbYvFWiqm9GppdinAxHTt2pGNH2alcuIaw4Ep8e09PhrYJ4+210Qx4dR1DXl/Pyz8fIjI+HYvl8lMLhRCXZusc3dXAYIwR3NeAg0Ar4FEgGFijNUNtvqlSM4DHgDrAfuBhrfWGMs6dB0wu5aW/zVFRSvXD2LWjDZAAvKy1vuxuHabO0bWWkgLt20OTJrCh1H8UwgbZFwro8cJvDGgZytu3dzK7HCGEsEl8Wg6/Hkji1wNJbI9Jo9CiCa3qz+DWtbmudW16NqmJv4/btKgXDiRzdO1ja9AdDXyHsWnE314qOnaL1iyz6YZKjQUWAjOAjUWPU4HWWuu4Us4PBgJKHN4E/KG1nlp0TiMgCmMji7kYu3XMBcZZ7+pRGpcJugCzZ8Ozz0JSEtSS2SBXYsGWGJ7+YT9LZ/Sis2z1K4RwQ+k5efx+OJnV+5NYf+QMOXmFVPH3oV/zWgxtG8bwtmH4etv6gazwNBJ07WNT0AVQilcxRnBLelVrHrf5hkptA/ZqradbHTsKfKe1ftKG9/fGCMi9tdabi469BIzWWjezOu8ToI3WuuelrudSQXfnTujaFRYsAOn1aTeLRTPkjfVU8ffh+5m9UUoWoYm/GzNmDABLllzy918hXEZufiFbjqWyumi0N+XcBRrWDOTR61pwQ7s6sti2ApKgax+bfyXUmlkY3RX+C3xS9NjdzpDrB1wDrC7x0mqgl42XmQ7sLw65RXqWcs1fgC5KKV9b6zNd584QGgorV5pdiVvaGJ3CsTPZTOndUEKuKFXPnj3p2fOSv/sK4VIq+XozoGUoc0a3Y/u/BvHJpC5U8vXmwUW7ueGdjfx+OBlbB6yEqIh87DlZa3YAO67ifiGAN5BU4ngSxhzgSyqaxnAbUHLkNwxYU8o1fYruebrEde4G7gbw8/OzsXQn8PKC4cNh+XIoLDS2CBY2+2JzDCFV/BjRro7ZpQgXNWvWLLNLEOKKeXkpBreuzcCWoazYm8Brq48w9fMddGtYg8eHtaBLwxpmlyiEy7E56CqFDzACaME/58yiNbPLsa6yTMAYhV5wNRfRWn8EfATG1IVyqKv8jBgBX3wB27ZBL1sHuUVMSjZrDyfzwMBmsmBDCOHRvLwUN3asx/C2dfhmZzxv/3aUWz7YwqCWocwa2kI2oBCeSanifbM1WtucX206USlCMbYBvtTembYE3RSgEKhd4nhtINGG908Hlmit00ocTyzjmgVF93QfQ4YYI7mrVknQtUNxS7EJ3SPMLkW4sFGjRgGwfPlykysR4ur5+XgxsUcDxnSux7zNMXyw7hgj3t7AjR3q8uiQFkTUDDS7RCHK0xXNSbQ1ET8HtLzE6zaNimqt85RSfwJDgMVWLw3hn7uu/Y1SqhvQAXi4lJe3ADeXODYE2Km1zrelNpdRvboRcFeuhOefN7sat5B9oYDFO+MZ0a4OoUGVzC5HuLBBgwaZXYIQ5S7Qz4cZ/ZsyvlsDPvjjGJ9vOsGPe0/TvXEN2tYLpn29arSrF0x4jQBZvyDcWRw25k1rtrYXOwY0BOZhtALTwEPAA0Xfv6g182y6odFebAFGW7FNwL3ANIwOCbFKqfkAWutJJd73CXCt1rp5Kdcsbi/2MfAh0BujvdjtbtVerNicOcbmEQkJUEfmm16OtBQTQoiLkjNz+XjDcbYeT+NQYib5hcbf88EBvrSrF0y7+sHGY71g6leX8OtupOuCfWwNurmAL8airyRAa423UrQB9gHPaM3/2XxTY8OIxzE2jIgCHtFa/1H02jqMG/S3Or8qxoKy2Vrrl8u4Zj/gDS5uGPGSW20YYW3PHujYET77DKZONbsalyYtxYQQomwXCgo5kniOfacy2HcqnX2nMjicmPVX+K0W6EuH+tXo1qgG3RvVoF39YFnn4OI8Mugq9TrG3Nv/QSljoFPr+eVyaRuDbjZQCSPsnseY8hBW9H0mcFJr3HJypEsGXa2hfn1jCsPixZc/vwL748gZJn22nTfGduDmTvXNLke4uOHDhwOwatUqkysRwjwXCgo5nJjF3pMZ7DuZwe74sxxJOgeAv48XnSOqG8G3cQ06hVcnwE+Cryvx0KBrASxo7fO378uBrRdJBephbPebCNQHvgRyi16Xz4vLk1JG94Vvv4X8fPB1n1bAziYtxYQ9Ro4caXYJQpjO38eb9vWr0b5+tb+OpWXnsf1EmvEVk8o7a4/y1m/g661oXzTi27NxTfo0DZFNKoQjWACFUsUtQ8rtPzJbR3R/BQZibBjxEDCev08I3qg1/cqrKGdyyRFdgGXLYPRoWLcO+rnlP1qHi0nJZsBr63hgYDMeHfKPqdtCCCGuUGZuPn/GnGXbiTS2n0hl78kMCiyaDvWD+c+oNrIewkQeOqKbgNEtKx1j8FQDsWWcrdG6ia2XtnVE92MgGmP6wnPAdUCtotfOUHonBHE1Bg0yRnJXrpSgWwZpKSaEEI4RVMmXAS1DGdAyFICcvAJW7Uvk5V8OMXruZm7uVI8nhrektnS6EeXjd+B2Ls4QUBhNEEpjV+cFm0Z0//EmRRAwAKNP7SatSbf7Ii7CZUd0wQi7ycmwb5/Zlbic7AsF9HjhNwa2CuWtcZ3MLke4icGDjQ0Y16wpuZGiEMIW2RcKeO/3aD7ZcAIfb8XMAU2Z1qcRlXxlHq+zeOiIbijwNtAZaIoRZuPKPF/rRrZe+rIjukrhDxwoenq91hzSmkzgB1tvIq7QiBEwaxbExUGEjFpaW7rrJFkXCpjcq6HZpQg3MnbsWLNLEMKtVfb34fFhLRnbNZz//nSQV345zDc74vn39a24rnVt6XwjrozWycA4oHhhml1h9lJsnaObDlQFArQmrzxu7CpcekT34EFo3Ro++ADuucfsalyGtBQTQgjXsPFoCs+t2M/R5HP0aRrCf0a2plntqmaX5dE8dETXur3Y5KLvndpe7DuMncd6aM2O8rixq3DpoKs1NG4MHTrA99+bXY3LkJZiQgjhOvILLSzcGssbvx4hO6+QiT0a8MDAptSs4m92aR7JQ4Ouw9qL2Rp0+wDLgAzg30AkRg/dv2h9ibkULsylgy7AzJnwxReQmgr+8ocGwLR5O9hzMp1NTwyUxubCLv379wdg3bp1ptYhhCdKy87jtdWHWbQ9Dm8vxeBWtbmtSzh9m4Xg4+1ldnkew0ODbgHGArTqGJ0XNFqXy1/wtgZdC5de5aa1trmDg0tx+aD7009www3w669QtJCmIpOWYuJqzJs3D4ApU6aYWocQniw6OYtF2+NZtvsUadl51A7yZ0zn+tzaJZxGIZ6Vz8zgoUHXYe3F7Am6l6K1xi2H1lw+6ObkQI0aMGMGvP662dWYbvaKA8zfEsPmJwYSKm1thBDCZeUVWFh7KJnFO+P5/XAyFg1dG1bn1i7hXN+uDpX93XJ8zHQeGnS/xGgvZgu7RnttDbqfX/aumqm23tSVuHzQBRg2DGJi4NAhsysxlbQUE1crPz8fAF/ZbVAIp0rOzGXp7lN8uzOe42eyCfTz5vp2dZjQowEdwqtd/gLOYLHAqVNw+PDFryNH4NgxyC3aCFZr48v6e+vngwbBV185tEwPDbrW7cWKR2vLpb3YFfXR9SRuEXTffhseegiio6GJzaP1HueLzTH8Z/l+ls7oJbvyiCsic3SFMJfWml1xZ1m88yQr9iSQk1/IzP5NeXhwM+fO401ONqYEWofao0eNT1GLVakCLVpA06YQGGgcU+riV2nP27aF++93aOkeGXStGYvRnDtH15O5RdCNjoZmzeCddxz+P5Crslg0A19bR/XKfiyb0dvscoSbWrhwIQATJkwwuRIhxLkLBTy/4gDf7Iyna8PqvH17J+oEBzjuhlrDli3w3nuweDHk54OXFzRqZARa66/mzaFOnYsB1oVUgKBrbAer9fpyuZyNUxc+u8wpWmumlUdBzuYWQReM/+maNjW2BK6Afj2QxPT5O3n3jk7c0L6u2eUIIYQoJ9/vPsW/l+3Dz8eL127rwMCWtcv3BufOGdMJ5s6FPXsgKAimTDG+Wrd2u45GHhl0lTJ2xdI67q/vL0Vrmzt9lUfXBYUsRnO8hx+GDz802owVf4RSgYz7aAtxqTn88fgAaVMjrlhO0ceSgRXw/yEhXNnxM+eY+dVuDp7OZHrfRjw2tCV+Plf5Z/2hQ/D++zBvHmRmGj3pZ86EO+6Ayu6bEz006Jbso3vJTl/29Ni1578iVcaXcIYRI4zJ8BVwbuH+hAy2Hk9jcq+GEnLFVRkxYgQjRowwuwwhRAmNa1Vh2YxeTOzRgI83nOC2D7cQn5Zz+TeWlJ8PS5YYi8JatTJ2Fh05EjZtgt27Yfp0tw65Hk6V+P5SXzazNRGXXN3mAzQGngY6ATfYc1NxBa691hjJXbnSCL0VyKcbTxDo5824bpf/NEOIS7nvvvvMLkEIUYZKvt48f1Nbejapyf9+t5cRb2/glVvaM6xtncu/WWtYvhwefRSOH4eICHjhBZg2DUJDHV+8uFrzuTiKa/39VbuqxWhKUQVIAb7XmnHlVZQzuc3UBYBRo2D/fmNxmgtOkHeE5Mxcer+0lju6RfDcjW3NLkcIIYQTxKXm8MCiXew5mcHkng14ckQrKvmWMUPy8GGjM9Evvxhzbl94wdhoydstZ1RelkdOXXCgq/0c2AcjdQ8rh1rE5YwYYfymeuSI2ZU4zYKtsRRYNFN729wyT4gyZWRkkJGRYXYZQojLiKgZyOJ7e3FXn0Z8sSWWm+duZv6WGPYnZFBoKRqgy8qC//1faNfO6KbwxhsQGQk33uixIVfYz6apC2V0XagE9Ab8AfmbwxmGDzceV6402p94uNz8Qr7cFseglrVpKNtGinJw4403AtJHVwh34OfjxVM3tKZnk5o888N+nvlhPwCVfb2YeXo7k5a9R5W0M+RPnITvKy9D7XLu1iCcR6nLdfeyptHa5k5fV9t1ofjz83lac6etN3UlbjV1AYxm1HXqGI2uPdyi7XE8uXQfi6b3oGeTmmaXIzzA0qVLARg9erTJlQgh7KG15lT6eY6u3kij556k4cFd7A1rxn8G38Oe+i1pERbENQ2q0aVBDfo2C6FmFfdqGWYPj5y6cPlOC3+diYO2ALaU8dIFYBHwsNZk2npTV+J2Qfexx+CttyAtzdi1xUNprbnujT/w9fbipwf7oCrInGQhhBClSE2Fp5822mzWqAFz5pB1x0QiT2XyZ+xZ/ow9y+64dM5dKMDPx4sxnesxrU9jmoZ63t+THhx0bWVX0L3SrgsAF7Qm0dYbiXIyYgS8+ir89psxD8lDbTiawtHkc7x2awcJuaLcpKSkABASEmJyJUKIUhUUwIkTf9+a9/BhozVYdrbRB/e556B6daoCfZvVom+zWgAUWjQHEjL5anscS3edZNH2eAa2DOWuvo3o2bim/F3i2gZYfV8V+BBIB14DTgL1gf8BQoDp9lxYtgB2txHdvDwICYHbbzd+s/VQkz/bzv6ETDY9MQB/H1lUIMpH//79AZmjK4Rpzp+HlJSLXydP/j3QRkcbvXCLhYQYa1JatYIHHzQWntkg9dwFFmyNZcGWWFKz82hbL4i7+jTm+vZ18HXzfuweOaJrTam5wD1AU7Q+YXW8CXAU+BStbQ67tk5dGAZ0A3ZrzQqr46OAjsB2rfnZ1pu6ErcLugBjxsD27RAX55FtxqKTsxj8+h88OqQ5Dw5qZnY5woOsWGH88TVy5EiTKxHCQ2ltbLe7ffvfA23xV04pm0D4+Rlb3Ldo8c+vGjWuqpzc/EKW7T7FJxuOc+xMNnWCKzGlV0Nu7x5BUCXfq7q2WSpA0E0BqgP10DrR6nhdjNHds2ht88IdW4PuZqA7MFxrVlsdHwisAbZoTW9bb+pK3DLofvaZ0QR7xw7o0sXsasrdk0v3sWTXSbY8MdCjFxQIIYRHKSgw+tnOnQtVqxobNYSElP1VqxaEhUGDBuBj846uV8Ri0aw7kszHf5xgy/FUKvt5c1vXcCb2aEDjWu41j7e8g65Syh94FbgdCAB+A2ZorU9e5n0zgMeAOsB+4GGt9Qar19cB/Uq87Rut9aX3XVAqCwgEtgJzuDh14QmgF3AOrYNs/PFsDrppQDBQTWuyrI5XATKBdK25ul+7TOKWQTc93ei8cOed8N57ZldTrtKy8+g55zdu7lSPF8e0N7sc4WESE43BgbCwMJMrEcLK++/DsmUQHGx8VatW9mNICNSt63qf5mVnG1PqVqyAxx+HOXPAyzWnCESdyuCTDcf5ce9pCiyavs1CGN+9AYNbhbrFNvMOCLrvAzcCk4FU4HWgGnCN1rqwjPeMBRYCM4CNRY9TgdZa67iic9YBx4F/Wb31vNb60i1plfoOGE3ZXRiWovWttvxsYHvQzQV8gfpac9rqeB3gFJCnNZVsvakrccugCzBhAvz0EyQkQECA2dWUm3fXHuXV1UdY/ci1NK9d1exyhIeRObrC5bz5JjzyCDRvbmxykJFhDGaU9hF/sbp1oU8f6NvXeGzXztwNEpKSjJ3Idu2Cd96BGTPMq8UOyVm5fLM9nq+2x3E6I5ewoErc0T2CcV3DCQ1y3UhTnkFXKRUMnAGmaq2/LDoWDsQCw7XWv5Txvm3AXm01V1YpdRT4Tmv9ZNHzdUCU1vp+O4uqA6wFStsw4BAwCK1Pl/Ja6ZezMeieACKA97Xmfqvj7wAzgRitaWzrTV2J2wbdtWth0CBjLtTtt5tdTbnIK7DQ56W1tAiryoJp3c0uR3ign382lhIMGyabOQoX8PHHcPfdxrqLr7/++8f3+flG6C0OvsWPCQmweTNs2GAs5AIICoLevS+G365doZKTgtqhQ8ZmRsnJxs/ghvPfCwotrD2UzIKtsWw4moKPl2Jo2zAm9mhA90Y1XK5bQzkH3YEYUxVCtdZnrI7vxwit/ynlPX5ADnC71nqx1fH3gLZa635Fz9cBbYteTgJWAc9prbO4HKUqAZOAgUBNIAX4HZiP1rl2/Yw2Bt2PgWkYw8jHgMMYSbtJ0Smfas3d9tzYVYSHh+sFCxaYXYb9LBa6jx9Pbt267HntNbOrKRfpOfnEn82hUUhlqvg7dr6WEEKYqfavv9JyzhzSunUj6vnn0b52LozSGv+kJKrt20fw3r0E79tH5dhYACy+vmS1aEF6+/ZktG1LZtu2FFQt/0/Igvfupe1TT6F9fNj3wgtktWxZ7vdwtrwCC6nZeZzNyaPQoqnk402NKn5UD/TDy0Xy7oABA/KAfVaHPtJaf3Ql11JK3QHMB3y1VSBUSq0Fjmqt7ynlPXUxPs3vp7X+w+r4M8B4rXWLoud3Y4wMJwBtMObbHtVaX3cltV4pW4NuE2A3UPI3CAWcAzpqzfHyL8/x3HZEF2D2bPjPf4yegw0bml3NVdFac8M7G7lQYOHXR651ud+ghWeIj48HIDw83ORKRIW2dCncdhtce60xBa28pp+lpFwc7d2wAf7801ggBsaumn36XPyKiLi6eb7ffAOTJkGjRrBqlfHoQXLzC1mxJ4GFW2PZczKDGpX9uKtvIyb1bGj6QIwtI7pKqf8D/n2ZSw0A6uKgoFvK+7oB2zDm/u66TG3lxuY+ukrRA/gUaGV1+ABwl9ZsdUBtTuHWQTcuzgi4zzwDzz5rdjVXZevxVMZ9tJUXbm7HHd0jzC5HeCiZoytMt2qVsdlPly6werVjd7jMyTG682zcaHxt3gyZRZuY1q9/MfT26AGtW9sWuLU2Ni16/HHjvT/8cNUtwFzdn7FpvLM2mnWHzxAc4Mu0Po2Y3KshwQHmtCezMeiGYGyucClxQA8cNHWhlPd5AXkYYfiby9RWbuzeMKJodLc2kKQ1xxxSlRO5ddAFGDrUmCN14oTLrnC1xfT5O9kRk8aWJwYR4CcbRAjHWLNmDQCDBw82uRJRIa1bZ8xnbd3a2N2yWjXn3r+wEKKiLgbfDRvg1CnjNS8vaNLEWNjWtu3Fx6ZNL84dLiw0Nm2YO9cYkf7iC+fNBXYBe+LTeWdtNGsOJlG1kg9Tezfizt4NqRbo59Q6HLQYbYrW+quiY/UxQvDlFqPt0VrfbXXsCLCkeDFaKe/pAERSYiTY0WRnNHcPut98A+PGwa+/gpv+5R2bmk3/V9cxo38THhvq/nO8hBDiH7ZsgSFDjJ6x69cbbcLMpjXExhpTHPbtM0Lwvn3G7mQWi3GOv7+xK1nbtpCYCGvWwGOPwYsvuvXgytWIOpXBu2uj+Xl/IlX8fZjUswF39W1MjcrOCbwOai82EpjCxfZi1bFqL6aUOgS8q7V+t+j5WGABRluxTcC9GGu52mitY5Wxi9l4YCXGQrLWGNv5nge6ltW2zBFsnaP7JTAOeFZrnrc6/jTwLPCV1kx0VJGO5PZBNzfXaDUzdCgsWmR2NVdkzsqDfLrxBJueGEhtF27pItzf8ePGUoLGjd2ySYxwV7t3w4ABxgYJf/xh9EF3ZefPw8GDRvAtDr9RUcYc4FdfhZkzza7QJRxKzOTdtdH8tO80Ab7eTOjRgOl9G1OrqmM3OnLghhF38PcNI+KtztEYHROetTo2A3gcY8OIKOCR4pHaohZlCzG6LlQB4oGfiq6RVl6128Le9mJNteaE1fGGGM2AY7XGLWeiu33QBXjgAaNNTUKCW86VGvnORir7e/P13T3NLkV4OJmjK5zuwAHo1w8CA42pAhFuvAbBYqmwo7iXEp2cxbtro1m+J4FOEdVZcl8vh97P47cALo2xQj0Eq3nENr/Vzg0jqmjNeavjAUA2cEFr3HLXAo8IupGR0KkTvPuu2/2mfe5CAe2f/YX7BzTl0etKXagpRLlZv349AP36lbpWQojyFR1tdFYAYyS3aVNz6xEOdSIlm8zz+XQId+zca48PukoNx+gIsRWtl6LURGAuxrbAu4ERaJ1s6+Vs7ZFRHHR7YuxWUayn1evCLB07GkH3s8/cLuhGxqVj0dClofuNRAv3IwFXlJuCAmOThIQEOH3674/F3x89Cn5+EnIriEYhnps9nWwGMAKYglIBwHtcbG/bCZiNMSfYJrYG3X1Ab2CeUvwLOIjRZuy/GJtI7LvEe4Uz3HmnMYUhMtIIvm5ie0waXgo6RTh59bGokA4fPgxAixby6YG4Anl58Npr8N57RpAtXrBVTCkIDTXm4NatC9dcY3QpaN3anHqFcE/tix43AN0w5vgexNiw7AZgqD0XszXozsMIuvWAL6yOK4ygO8+emwoHuOMO+J//MUZ1337b7GpstjMmjVZ1gqhayZx+hKJiueceo/e5zNEVdtuwAe6915hzO3w4TJt2MdAWP4aGgr07nAkhSqpV9HgKGF70/ZvAdxhdIeraczGbgq7WfKoUw4Axpbz8ndZ8Zs9NhQPUqAE33wwLF8LLL7tFb8P8Qgu749IZ21V2qRLO8cILL5hdgnA3qanG5giffWa0BvvxR7j+erOrEsKT5QH+GBtetMcYUD3ExWmyefZczOblk1pzK0aLsS+BNUWPY7VmrD03FA40bRqcPQvLl5tdiU0OJGRyPr+QLg2rm12KqCB69epFr16OXREtPITWxoYILVvC/PlG2N2/X0KuEI4XV/S4EaO3r8ZoX1av6LjNC9HAjqALoDXfas1Erbmu6HGxUlRRisn2XEc4yMCBRuuaz9xjgH1HjNFKr0sDWYgmnCMqKoqoqCizyxCu7tAh48/TKVOgeXPYtQteegkqy2IjIZzgK4ypsY0wRnbXovVZoE/R67vsuZitc3T/Rim8gGHARIzdNCrx97m7wgze3sYfzM8/D/HxEO7aUwJ2xpwlvEYAYcGuP81CeIb7778fkDm6ogznz8OcOcauX5Urw0cfGZ+USe9YIZzpJaAQ6AucwOiyAEZm/RRYYs/F7NoCWCm6YoTbsRhzJ6BoTtOJ2wAAIABJREFUQZrWeNtzY1fhEX10rZ04AY0bw+zZ8PTTZldTJq01Xf+7hmub1+L129ynS4Rwbzt27ACga9euJlciXM7mzTBpEhw7BhMmGN0VQkPNrkqIf/D4Prrl7LIjukrRCJiAsWdxs+LDVqecB74v/9LEFWnUyPjI7fPP4d//dtmRiJjUHFLO5dFV+ucKJ5KAK0p14QKMHQs+PvDrrzB4sNkVCSHKSZlBVynuxQi41vuyqhKnaaC21pxzQG3iSk2bBuPHw/r1xv7qLmjHCWN+bldZiCacKDIyEoCObtRrWjjB/Plw8iT88ouEXCHMoFShHWdrtLZ56m2ZUxeUwoIRZIvDbR5Gt4UlGE171+HGUxaKedzUBTDmmdWpAyNHwoIFZldTqscW72HNwSR2PT2kaAtrIRyvf//+gMzRFVby86FFC6hVC7ZuNTZ9EMKFeeTUBaUslz/pLxqtbc6etiRiDXwGPKY16UY9tLGjIOFsAQHGBhKffw7vvAPVXG/XsZ2xZ7mmQQ0JucKp3nzzTbNLEK5m0SJjbcNbb0nIFcI8cRh5s1hNjB3R8jE2iagJ+AI5OKi92J3AIaV4XykGF91MuLI774TcXPj6a7Mr+Ycz/8/efYc5WWZ9HP8eehFBREAUVFbFgoKCXRRfwQUUuwt2dJVVrLuWtWBn7auirL0gYkGxrS4oggIKSLWhAioDitIHkV5mzvvHnZFxmJIMmTzJ5Pe5rlyZSZ48OTHOcObOuc9ZsY6cJatUtiAp17ZtW5UtyCZ5eXDnndCmDRx3XNTRiGQv951x3wX3XYBTCUnvv4H6uDcD6gMPxo4+M5FTl5bo3g38RChdMKAx0Bt4n9DEV9JZu3awzz5p2VN36txY/1xtRJMUmzx58u+dF0QYOhRmzoS+fbWaK5I+HiKs5t6Oe5iGFq5vBeoA9ydyshITXXducGdnoCPwNLCcTUlvHWJLzGbMM+PuxF6DVDizsClt8mT46quoo/mDyXOWUbNaFfbZoX7UoUiWueaaa7jmmmuiDkPSQX4+9OsHe+4JJ58cdTQiskm72PWBRW4/KHa9XyInK7N0wZ2x7vQGmgCnAW8TaiYKkt5mQEL/cphZHzPLMbO1ZjbVzDqUcXwNM7s99ph1ZvajmV1e6P5eZubFXLJ7EsGZZ0LNmmF0ZV4iGxor1pQ5ubRt3oAa1dKz9ZlUXgMGDGDAgAFRhyHp4L//henT07oNo0iWWhy7fgezoZg9hNlQ4L+ERdbFJT90c3H/dLuz3p3X3TkJaApcAoxP5MkAzKwH0B+4k5CVjweGm1mLUh72CmESW2+gFSHh/rLIMauB7QtfvGDJO1s1ahQ2WLz3XtoMj1i1biPTf/lN/XMlEq1bt6Z169ZRhyFRcw+ruX/6U+ifKyLp5DHCQmpN4CTgsth1weLlfxI5WblGALuzLBbIY2a0JLHC4H8AA939qdj3l5lZF+Bi4PqiB5vZMcDRwJ/cfUns5jnFhuW+IIE4ssPf/gZTp4axlvvvD6eeGmk4n//0K3n5TnttRJMIjB8f/jY/9NBDI45EIvX+++H34tNPhyERIpI+3O8mfCJ/LZuSW4C1wD2435vI6RIaAbylzKwGYeX1dHd/rdDt/wFau/uRxTzmUWB3YBJwDmES23DgBndfGTumF2H+8TygKvA5cJO7f1ZWTJWyj25R69aFwRFffhn6REa4ovXQyFn0H/UdX9xyDFvXUvMOSS310RXc4fDDw4CI776DGjWijkgkIZWyj25xzOoThpZtCywBPsV9eaKnSfWfso0IiejCIrcvBEoaR9MSOBxYB5wCNAAeIdQGFyxPziS0QPsCqAdcAYwzszbu/l0yX0BGqlkz7C5u1w5OPDFsUNsmmhXVKXOWsUfTrZXkSiSeeOKJqEOQqI0eDePHw3/+oyRXJJ2FpPa9LT1NJnxmU4VQfHyGxzJ5M7sUeN/Mmrj7QnefAEwoeICZjSes6l4GXF70hGbWm1DvS41s+UXXrBm8/jp07BiGSbz7LlRN7VC7jXn5TPtxGae22zGlzytSoFWrVlGHIFG7444wOfL886OOREQKmN2c0PHut8d7aKoT3SVAHqGDQ2FNgJLqa+cDP/sfl6u/jV23YPPVYdw9z8ymALsVd0J3fxJ4EkLpQtzRZ7pDDw2T0i66KGxOu/POlD79t/NXsHp9njaiSWTGjBkDwJFHblYlJdlg3Dj46CN44AGold1NeUTSzK38cTJaWeJOdFPaU8Xd1wNTgc5F7upMyR0cxgHNzGyrQrftHrueW9wDLMyV3ZeQJEthf/sbXHhh2Jw2dGhKn3rynIJBEdqIJtG45ZZbuOWWW6IOQ6LSr1/oRtO7d9SRiMjmLM5LQqIoXXgAeMHMJhGS2IsI9baPA5jZIAB3Pyd2/EvATcBzZnYroUa3PzDU3RfFHnML8CnwHbA1oVxhX0InBynqkUdC/8hevWCPPVK2OW3K3Fx23KY229evnZLnEynq2TScFCgpMmVKaLV4111Qt/Lv4xHJMOcV+ro6cBshqX2a0GhgR+ACwj6vvomcuMRE14wjEjmRO2PjO86HmNm2hEC3B6YD3dy9YHW2RZHjV5pZJ8IGtMnAMuAt4LpChzUglCI0JUxw+ww4wt0nJfIaskYEm9PcnUk5y+iwW6MKfR6R0rRs2TLqECQq//oXNGgAffpEHYmIFOX+/O9fm/Uj5HP74/5FodvfJFQFFFuWWpIS24uZkU/89RLunhEb2zaTFe3FSjJ+fNicdvTRFb45bc6SVXS8fzT/Oqk1Zx60U4U9j0hpRo4cCUCnTiU1eZFK6csvoU0buOUWuPXWqKMR2SKVvr2Y2S+EvVuNcF9W6PaGhL1eC3HfPt7TlVWjG2+9RMI1E5IGDj0UBgxIyeS0gvpcbUSTKPXr149+/fpFHYak2p13Qr16cPlmTXhEJP00iF0/hVlrzBpg1hooGDS2dSInK20V9vki3x9DWEoex6Z6icMI2fX/EnlSSSO9e6dkctqUOcuoX7s6u263VdkHi1SQF154IeoQJNVmzIBXX4V//hMa6g9tkQzwCWG2wkmxS2Eeuz9uJSa67psKg804kzCVrIc7Qwvd/hfgZULyK5nq4YfDR3vnnw8HHQTNmyf9KSbPzeWAnbehShUt/kt0mlfA/9uS5u66K7QS+/vfo45EROJzGTAW2K6Y+xZRzHyE0sTbXqxgh1vRCRXDCGUL1yTypJJmataEF1+EvLzQfizJY6GXrlzH7MWraK+yBYnYe++9x3vvbfGgHUl3K1bAs89Chw4waFDoHd64cdRRiUg83GcCrYF7gEnAD8BE4G5gn9j9cYt3A9nOses+wL2Fbr8kdq3dRZmuZcuw8nHFFeEfhnPPTdqpp8wNteQHqH+uROzuu+8GoEuXLhFHIptxh2HDYOlSOPBA2H13qJJAq/f8fBgzBgYODF1lVq8O5yj4vSYimcN9MXB9Mk5VYteFPxxkfEHIriHU5M4ntAYr6BU13Z02yQgo1bK660JR+flwxBHw9dfwzTdhTGYS/Ot/3/D8hLl8desx1KyW2rHDIoUtWBAGMDZt2jTiSOR37vD++9C3b9gvUKB+/ZDwHnTQpuviVmVzcuD558NlzhzYemvo0QPOOw8OPhhM5VJSuVT6rgsFzA4GugGNCSUL71KOtrHxJrrHAW8SGvUWfoAB+cAJ7pm5IU2JbhGzZoU2PH/+M7z5ZlL+kTjhP+OoWbUKr150SBICFJFKY+xYuPFG+OQT2Hnn0PqrfXuYNAkmTgyXr74KZVUQjjnooHDZeutQcvXRR+H31NFHhyE4J50EdepE95pEKlhWJLpmjwHFjTB8HPdLirm95FPFk+iG5+RooB9wAKG2N59QO9HXnQ8TedJ0okS3GPffD9dcAy+/DD17btGpVq/fyL63jqD3ES25tsseSQpQpHzeeecdALp37x5xJFlu8uSwgjtiRPjk6Kab4K9/hRo1Nj921SqYNi0kvZ9+Gq7nzQv3tWwZkttzzoGdVEEn2aHSJ7pmvYCSxlg6cB7ug+I+XbyJ7qbnpw6wDbDMndUJPTgNKdEtRl5e6LH7ww+hhGELNnGM/2EJZzw1ked6HcBRe2gziESrY8eOAIwePTrSOLLW9OkhqX3rLdh2W7j++jCprHaCY8F/+QUWLQqfPqk0QbJMFiS644GDgbnAg7HrFsDfCXvGJuB+WLynS2iamRnVCLW627ozPJHHSgapWjXsWN5/f7j00tCDspymzFmGGey/kzaiSfSGDh1a9kGSfN9/H6aSvfxyGNxw++1w5ZXh6/Jo1ixcRKQyak1Yue2O+/TfbzX7CPiSTXvG4hL3llYzTgN+BiYA78RuG2XGbDOOSeRJJQPsvTfcfDO89hq8/nq5TzN5Ti6tmtSjfu3qSQxOpHwaNWpEo0aNyj5Qkuejj8Lvk7feCkMbcnLCqm55k1wRqewKapjmFbl9XpH74xJXomtGB8JgiEb8ceTv/wjLyBUzTkuide21sN9+4aPFpUsTfvjGvHymzV2msb+SNt544w3eeOONqMPIHjNnwsknw667hlXdu+7SdDIRKctPsev7MQvjgM3qA/cVuT8u8a7oXh87tmiT3oJOC9pOXxlVrw7PPQe5ueFjxgTNWLCCVevzaK/+uZImHn74YR5++OGow8gOS5bAsceGDWb/+1/S2hWKSKX3LmFB9TxgKWbLgVzgfEJJwzuJnCzeRPdgCuol/mh27HqHRJ5UMkibNnDDDTB4MLz7bkIPnTInF0ArupI23n77bd5+++2ow6j81q0Lbb7mzYO33w5twURE4tMP+JFNFQT1Cn09F/hXIieLN9Et2N33Y5HbG8SuE9wyKxnlxhuhdeswHvjXX+N+2OQ5y9ihQW2aNdD/HpIe6tevT/369aMOo3JzhwsuCL1xn38+DG0QEYmX+1LgIOAZwoCyjcAvwFPAIbjnJnK6eBPdn2PXRUsUro5dFy0YlsqkRo1QwrBwIVx1VVwPcXcmz8mlnbotSBoZMmQIQ4YMiTqMyu2OO8InQP36hQllIiKJcl+I+4W474B7Ddx3xP1vuC9M9FTxJrrvE5aM3yq4wYwZhETXY/dLZda+fRgi8eyzYVxnGWYtXMmiFes4bNdtUxCcSHwee+wxHnvssajDqLxeeim0ETv33FDyJCISsXgT3X7AUkKpQsGEid0IyW8ucFfyQ5O0c8stsMcecOGFsGJFqYd+/N1iADrstl0qIhOJy7Bhwxg2bFjUYVRO48bBeefBkUfCk09qkINIhjCzmmb2iJktMbNVZvZfM9uxjMccETvuZzNzC9PMih5jZnarmf1iZmvMbLSZ7V1hL6QEcSW67vwMHAaMIIz+tdj1CKBD7H6p7GrVCiu68+aFmfSlGDNrMbs23kr1uZJW6tSpQ506daIOo/L54Qc48cQwhvf114sf5Ssi6eoh4BTgdKADsDXwrplVLeUxWwHTgSuANSUccy1wFXAZcACwCPjAzFLaRDvugRHuzHKnC2H3245APXe6uDOjwqKT9HPIIWFFt39/+PLLYg9ZuyGPSTm5HKHVXEkzgwcPZvDgwVGHUbksWwbHHQf5+aGN2LYqVxLJFBb60/4VuMbdP3D3acDZwL5Ap5Ie5+7D3P0Gdx9KWPgsel4DrgTudvfXPUw4O5eQQ55RAS+lRPEOjKhvRgszGrmz1p1f3FlrRqPY7drGnE3uvBO22QYuvjj841bEpJxc1m3Mp8PumkAl6eXpp5/m6aefjjqMymPDBjj11LCi++absNtuUUckIolpB1QnfEIPgLv/BHwLHLoF590FaFrkvGuAsVt43oRVi/O4Z4ETgb8Dhbut9wT6A2+SodPRGjZsyOjRo6MOI+M0Pf989rj3XmZcfz0Lunb9w33zl6/l6n3z4JdvGD3/m4giFNlc3759AfQznwzutLr/frb/8EO+ve46Fubng/67iqRCNTObUuj7J939yXKeqymQBywpcvvC2H3lVfDYol0SFpLi2QvxJroHxa5fL3L7G4TE9yAyVG5uLh07dow6jMxzxBEwbhx7PPMMe1x77R8+rjzmwTE0rrcNlx6Vsf9biEhp8vLCiPBhw6BvX/a84w72jDomkeyx0d3bl3aAmfUDbizjPEclL6QUMGvx+9fuRec6lCjeGt2CYsui0wKWF7lfskWVKvDoo2GARKE2QguWr2XWwpUcobIFSUMDBw5k4MCBUYeR2ZYvh+OPhwcegEsvhdtuizoiEdncQ8CeZVwmAQuAqkDRf7SbxO4rr4LHNknieecAOWyayhuXeBPdgl5SxxS5veD7lYk8qVQS++4LV1wBTz0Fn34KwFi1FZM0pkR3C333XZh0NmIEPP44PPJI+KNXRNKKuy9x9xllXFYDU4ENQOeCx8Zai+0JjN+CEHIICW3h89YidHXYkvMWjAKOW7ylC9MIu++eNWNvQpHynsA/CH11pybypFKJ3HorvPIK9OkDkyYxdtZiGteryR5NU9o9RCQuqs3dAh98AH/5C1SrBqNGhfIlEclo7r7czJ4B7jWzRYSZCQ8AXwIjC44zsxnAAHcfEPt+K2DX2N1VgBZm1hbIdfcf3d3N7CHghthjZwF9CQujL5Uz3LFsmuUQt3gT3ccJie7WQOHPqSz2pI8n+sRSSdSrBw89BH/5C/mPPsonv+7B0Xs0wdQsXqRycA/tBK+6Clq3hrffhp13jjoqEUmeK4GNwBCgNjAKOMfd8wod04o/lje0Bz4q9P1tscvzQK/YbffGzvcfYBtgInCMu5c+caok7h3L8zBzjy85NuN+wgpuUfe7c215njwd1K1b11etWhV1GJnNHbp0IW/CBA4+51H6XnAUJ7RN6aZKkbg89dRTAFx44YURR5Ih1q0LbQSfew5OOgkGDYKttoo6KpGsZmar3b1u1HFkirgTXQAzDgCOJxQTLwT+687kCootJZToJsl335G39968s/thdPj0PbbdqmbUEYlsplOn0P985MiRZRwpLFgAJ58MEybAzTeHEeCqxxWJXKVPdM1Kq4tyYCnucfcuTSjRrYyU6CbPa8eez2nDnoMPP4SjMqtriYgUMm0anHACLF0Kzz8Pp50WdUQiEpMFiW4+Zdfi/gxcjPv/yjxdAqUL9YBuwE5AraL3u3N7XCdKM0p0k2PF2g0cdNO7jH/xChrUrwtffKF59yKZZONG+PbbsNHshhugUaNQj7vfflFHJiKFZEmiG48NwAG4f1naQXFtRouVLAwDGpZyWEYmupIc439YyuqqNVjQ7z4a/LVn6LF53XVRhyXyB48++igAffr0iTiSiOXnw/ffw+TJMGVKuP7sM1i9OtzfoQO89ho0KdoCU0Skwj1PaEvWjNCK7EegOXAY8AvwGaFBQg3C3rFepZ0srhVdM8YBh5RyiLtTtezY049WdJPjxje/4q3Pfuazm4+hRo/TYPjwsDq0005Rhybyu66xcdXDhw+POJIUW78+TDH79NOQ1E6dGgY/ANSuHVZtDzhg02W33UCdU0TSUhas6J5FSHbPwH1Iodt7Ai8C5xJGFg8D5uK+S6mnizPRXQHUAcYQxgCvokj9hDvPJ/I60oUS3eQ44t6P2L1JPZ4+tz389BPsuSd06gRvvRV1aCLZa+XKMNDlgQdg3jyoXj0MejngAGjfPlzvtVfojSsiGSELEt0ZwG5AfdxXFrp9K+A3YAbue2G2DKiFe+3SThfvb7dfCYnuye6bjQGWLDdnySp+zF3NhR1if1Q1bx52af/zn2FM8EUXabe2SLzWroXLLgvlBSedFP5grLXZtojSLV4cppYNGADLloXhDo8/Hs5VUx1RRCStFXwUfAVmd7JpRfai2HXBCu4K4shj480+BsWuW8d5vGSRYsf+/v3vcPjhcMklYeXogw8iik5kk/79+9O/f/+owyjZ2rUhuX366VAj2707bLcd9OgRJhD+9lvpj8/JgUsvDSVDd9wBRx4Z2oONGQPHHqskV0QywczY9e3AIsw+x2whcA+hmmAmZlUJrW5/Ketk8Sa6c4DlwNtm3GvGX804p/Al4ZchlcbYWYtp0bAOOzcq9ElK9erhH9cXXoDcXDjmmHCZNi26QCXrjRo1ilGjRkUdRvHWrIHjj4f334dnngmrssOHwxlnwOjRcPrpIent1i2UIyxatOmxX34JZ54ZamuffBJ69oRvvoE334SDD47sJYmIlMMNQD5h+m5DYB/CVDYD8oDrgf8DqgPjyjpZvDW6ZfU0c/e4yyDSimp0t8z6jfnsd/sITtp/B/qduE/xB61bF0oY+vULSe/pp4evW7ZMbbCS3X77LZTUvPBCSCRPPDHqiDZZvTokuR9+CM8+C716/fH+vLywMvvmm+GSkxPKgQ47LGwmGzEiTCz729/gyithxx0jeRkiUvEqfY0ugFlH4F/AQYRF2XzgU+BG3MdgVg2oCazDfWOpp0og0S2Nui5kqU9nL6Xnk5/yxNnt+PPeTUs/ePlyuPdeePDB0LPz4ouhb9+wSiVSUdzh9dfhiitg/nxo0SJszBo0KKyWRm3VqlCiMHo0DBwI55TxAZl7WMF9442Q9C5dCn36hMs226QiYhGJUFYkugXM6gDbALm4rynXKeJMdM8t6xh1XchO9743gyfHzuazmztTr1b1+B70yy9w661hVa1uXbj22lDTWzc7fm4lhWbPDjWrw4dD27bc36EDNGnC1SNHhtKaJ56ACy+MLr6VK+G44+Djj0PifeaZ0cUiIhmh0ie6ZqOBZ4Ch5U1u/3A6jQBWorsluj/yCbWrV+XVi0prs1yCGTPg+utDC7Jddgkb1v70p+QHKdln/Xr497/h9ttD66x+/eCSSzilRw8AXh88GE49NfSWfeCB8IdWqq1YETaIjRsHgweHkh4RkTJkQaJbUC67AhgCPIv7xHKfTomuEt3yWrpyHe3/NZKrOu/Opf+3W/lPNHYsnHxyGBk8cmTo6ylSXmPGhLKYb7+FU06B/v1hhx02P279+rCCOnRoSIj79k3dkITffgubyj79FF58MXRVEBGJQxYkumsJU89g0/6wb4FngRdwX5zI6eJubmrGWWZMM2OVGXlFLqUWAkvl9Mn3S3Av0lasPI44IiQn7qEdkjozSHksXhw2cXXsGDoY/O9/IYktLsmF8IfVyy/Duedu6vucij/8ly+HLl1Ckvvyy0pyRUT+qAnwV2AUm7ov7AXcB8zD7I1EThZXomvGXwi9dNsAtWNPWvQiWWbsrCVsU6c6rXeov+Un23vvUKdYpw783//B+PFbfk7JDsuWhfKDPfYIq6PXXw9ffx1WTIu4++67ufvuuzfdUK1a6HJwySVw333hOr+svbdbYPly+POfwxjeV1+F006ruOcSEclE7stxfw73zsCOwJXAREKuWR04IZHTxdsS7JLY9RrChDQHcoFtCVPTNC0ty7g7H3+3mMN3246qVZL0d86uu4Zkt1On0HP3v/8NSa9IUe4hWXzssTBIYe1aOOqoMA1s771LfNjnn3+++Y1VqoTHbbUV3HNP6ILwzDPJH4u7fPmmXtKvvZZe7c1ERNLTSkK+uYzQQzfhDl/x/ibfl5DcdgLGA7iznRk3AZcC3RN9YslsMxasYNGKdXTYrVFyT9yiRajZ7dw5rMgNHRp2pYtASEJffjkkuNOmheS0V68wZrpNmzIf/sorrxR/hxncdRfUqxdqdVetgpdeCuUNybB2beiTO21a+H/6hIQWJEREsodZdaAbcAZwLKGSADZVD4xN5HTx1ugWFD1PI1YYbEZV4N/AdsDDiTypZL6xs0It+BFbWp9bnKZNQ0/R1q3DONRXX03+c0hm+eYbuOwyaNYstAPbsCEMIfn555D0xpHklskMbrwx9Hl+/fWw4rpmizvbhJ7Rp58e/oAbNEhJrohI6RYCbwCnEqoIjDDq905gN9yPSuRk8a7o/kZo2GuEdg/1gK6EscAQJldIFvn4uyW0alKPpvVrVcwTbLstjBoVVnNPPz2ssJ13XsU8l6SnvLwwFGHAgJAk1qgRalovvhgOPbRcHRLuuOMOAG666aaSD7ryyrBS3Lt3KKN5+21oVM5PLtzDavNbb4XuD2ohJiJSlgax6/XA24RuCyMoZ5uweBPdXwiJbmNCi4cDY09eILc8Ty6Zac36PCbNyeXcQ3aq2CeqXx/eey+s6p5/fhiTesklZT9OMpt7mPh1881hU9kuu4Ta2fPO2+IpejNnzozvwAsuCFPGzjoLDj449NvdfffEn/DGG0O9b9++cPnliT9eRCT7fA48B7yI+xbnl/Emup8BrQkrt4PYfAU3I6eiSfl8mrOU9Rvzt7ytWDzq1g2b0nr0CBOuli8PNZkNG0KtClpNlmi4hz9s+vYNtaytWoWNZqedFjaMJcHgwYPjP/iUU0JrsuOPh0MOCauyHTrE//gHHwx1v717hz69IiJSNvf9k3m6eEcA1wW2Ala4s9qM64AewEbgTeAed/KSGViqaGBE4m5/5xtenDiXL245hlrVE94AWT4bNoR+py+/vOm22rVDiUPDhuFS9OuTT9aktUzx0UchwR0/Pqzg3nornHFG8jsflMfs2WFjZE4OPPdciKssL7wA55wT/h989VWomqKfExGp9Cr9wAgAs2qEDWmt2LQZbRP3uFcPNBlNiW7COj0whmYNajPo/ANT+8R5eWHFb948yM2FpUvDdeGvC643bAgfc48erUlr6Wz8eLjpJvjwQ9hxx/D1eedB9eoV8nQ333wzALcnusKamxtKaMaODeOEb7ih5Brh//0vbDg74ohQ8qBPHkQkiSp9omvWGBhNSHKL5x736kGJyyVmtEgkLnd+TOR4yUy//LqG7xetpOcBzVP/5FWrwrHHln2cO8yYEXrwHn10mLpWnvpKqTjTpoWkdtgwaNIkbNTq3bvCk8KffvqpfA9s2BBGjIC//jWsPM+eDY8/vnlCPn58KLVo0yaUOijJFRFJ1G3AHqXcn9BymHEKAAAgAElEQVQKbWmFb3OAnDgvsxN5UjPrY2Y5ZrbWzKaaWamFb2ZWw8xujz1mnZn9aGaXFznmFDP7Jnb/N2Z2UiIxSXxGzVgEwJG7p6A+t7zMYM89Q9eGvLyQ8M5O6H9RqSjr14euBu3ahRG499wDP/wQNmqlICl87rnneO6558r34Jo1Q0nCTTeFaWrduoWa8QLTp4c/xHbYAYYPh623Tk7QIiLZ5RhCMlvwy9qBy4HvgFmE8cBxK2uHR3Gjfku6xMXMegD9Cf3Q9iMMoBhuZqWtIL8CdAF6E5ayTwO+LHTOQ4AhwItA29j1a2amtmdJNvyr+fxpu7rs2nirqEMp2157wciRoRfq0UfDj1nwoUNubuhOkY5ycuDww8Pq7eWXh++vvTZsOMwUZmFj2XPPhbKYww6DuXPD5c9/DnXjI0ZA48ZRRyoikql2iF1f9/st7gOAk4HdCWOB41Zija4ZCS17uBNXk1Mzmwh86e4XFrrtO2Cou19fzPHHAK8Bf3L3JSWccwjQ0MNc5ILbRgKL3b3UxpWq0Y3f0pXrOOBfI7nkqF256piSS2fSztSpIdFt1CjUWDZrFnVEyeMOX30F774bLp9+Gj5mv+OOUAqQLpug3nxzUx/kgQMjG397/fXhV8xdd9215ScbNSp0ZqhdO/TdXbIk/P+1zz5bfm4RkRJkQY3uKqAWUB1YQyizbRr7+jdgHu5xl9eWWKMbb+KaCDOrAbQD7i9y1wjg0BIediIwGfiHmZ1DeKHDgRvcfWXsmEOAR4o87n3CeGJJkhHfLCTfoWvr7aMOJTHt2oVNbJ07h4R39OhQF5qp1qwJm7cKktt588Lt7duH+tGxY6FPn1BD+vDDcOSR0cW6fn1Yte3fHw44AIYMCV0VIrJ06dLknezoo2HcuFDCMG8efPCBklwRkS23lLCqWx9YQFjBfRFYG7t/m0ROlurePY2AqoTxboUtBDqV8JiWwOHAOuAUwsSMR4BmhPFwEDL94s7ZtLgTmllvQhkENZI1yz4LDPtqPjtvW4c9t68XdSiJK2j636VLmHb10Ufln3YVhZ9/3pTYjhoVkt26deGYY0Irrm7dYPvYHyDuYYTtVVdBx45hc9R998FOFTzgo6icnND/ePLkUJd7zz1hulmEnnzyyeSecO+94YsvQslIy5bJPbeISHaaSUh0/wSMBc4Ejo7d58C0RE4Wd6JrRivgbxTf08zdfw8i2aoQXtgZ7r48xGKXAu+bWRN3L5rglsndnwSehFC6kMxgK6tlq9Yz/oel9D6iJVaO0atpoUOHMHziuONCgvjhh9CgQdmPi9p774WhBRs2hNXQCy4Ir+HII8MGqaLM4NRTw8ao++6Du++Gd94JK6v//CfUqVPxMRcuVXjzzchKFVKiQYPM+P9IRCQzPAV8TyhfuI2wOa1gB/xi4MpEThZXomtGO0JPs+L+hTTib/WwBMgDin5u3ISwPF2c+cDPBUluzLex6xaEldsFCZ5TEvTBtwvJy3e6ZVrZQlFHHx0SrxNOCJuHPvggvXfHT5oU6kD33hsGDw4b7OL9Q6N27TBGt1evkOQWbKK67z74y1/iP08i1q0Lz/Xww2lRqlDU1VdfDcD99xetnhIRkbTg/irw6u/fm+0GHEUYUjYO918TOV28czVvAOqyBd0WANx9PTAV6Fzkrs6E7gvFGQc0M7PC2/wLmqLOjV1PSPCckqDhX81nx21q03qHNE4K49WlS5hWNW1a+Mh/5cqyHxOFWbPCqmyTJqFd1d57ly85bdEijNIdOzZMjOvZM6wGjx8Pv/4aSh22xNq1oUxh9Oiwav7ww6FU4ZNP0irJBVizZg1r1qyJOgwREYmX+2+4v437/xJNciH+EcDzgcZAH+AxwgpuG6AfoalvD3e+iOsJQ3uxF2LnGgdcROiJtre7zzWzQeF1+Tmx47cirOB+CtxKqNF9AvjW3U+LHXMooY6jL/AWcBJwO3C4u08sLR51XSjb8jUbaN/vA847bBdu6LZn1OEkz2uvhaRvv/1Ch4Ljjkufjgzz58Ohh8KqVWHD0267Jee8eXnwzDNw442hSwCEutnGjcOlSZPNv27UKPSLnT9/0+WXXzZ9/Wuh3zv160faVUFEpLKr9F0XkizeRHc9YRNZfUJrB3enqhmNCeUBg9zpFfeTmvUBrgW2B6YDf3f3sbH7RhOeoGOh41sRNqAdDiwjJLPXufuKQsecSki8WwI/ADe6+xtlxaJEt2xvTJvHP179gjf7HMp+LRLa7Jj+XnstfNQ+Z074vn176N491MS2aVMxH++XZfnysOL6/fdhlbR9++Q/x6+/hlG1CxeGy6JF4VLw9cKFoWNCUTVrhk1v228f/igo+vV++6mHrIhIBVKim5h4E93lwFZATWA5oUB4L2Al8BPwqzsNKzDOCqNEt2wXPD+Fb35Zzrjr/i9zN6KVxh2+/jpsVHvnHZg4MdzWvHlIert3h6OOKn7jV7KtWxfKKcaODR0W/vznin/O4rjDihUh4V2yJNQxb789bLNNNMl/klx5ZdjD8NBDD0UciYhI+SjRTUy8NbqLYtcNCaOBAT4i1MYC5CcxJkkjK9dtZOx3i+nSevvKmeRCSNxat4YbboAJE8LH8c88E/rvDhwIXbuGj+9PPTUkoBUlPx/OOSd0g3juueiSXAj/TbbeOpRMHHJIqA9u2DCjk1wREck+8Sa6X8Wu9wXeJWxCa0Loc+aEgQ9SCX04YxHrN+bTbZ9iWxJXTk2awPnnh+4MS5eGj/jPOgs+/jiUFBx9dNholUzuYQPXq6+GrghnnZXc8wsQVnK1misikj3iTXRvA84grOb2IyS2BUs7o4Arkh6ZpIXhX82ncb2a7F/ZanPjVatWKCV47LFQx/vgg6HMoUOHMHhi3LjkPM8998Ajj8A//gGxFlgiIiKyZeJKdN35wp0h7nzvzgp3uhDKGOq7c4w7iys2TInC6vUb+WjmIrq2bkqVKvrImtq1w6rr7NnwwAMwfTocfngYLTx+CzrZDRwI118PZ5wRVnOlwlxyySVccsklUYchIiIpEu+KbnFqEMbySiU1euZi1m7Ip+s+GT4kItnq1IG//z0kvP/+N3z5JRx2WKipnTCh7McXNmxYmHTWuXOoy62yJT+SUpbatWtTu3bRwY4iIlJZldp1wYz9gZ6ELgtvufOhGRcAdxFWdNcBj7qTsZ+1qutCyS59aRqfzl7KxBs6UVUruiVbtSqUNtx7LyxeHBLerl3DyN6yLi+/DHvuCR99BPXqRf1KREQkzanrQmJKTHTNOJxQf1t4TPB9hP63zqYaXQcucefxCoyzwijRLd7aDXnsf8cHnLTfDvzrpH2iDiczrFoFjz4aEt6CYQwFzKB69c0vu+4aNqA1KTrBWkREZHNKdBNT2uek1wDV+eO432ti9xmwpNDXZ1dUgBKNMbMWs3p9Ht1UthC/unXhmmvg559Dt4bffoM1a2DjxtA6bN26MG542bIwlOHnn2HMGCW5KdS7d2969+4ddRgiImnDzGqa2SNmtsTMVpnZf81sxzIec0TsuJ/NzM2sVzHHDIzdV/jyaYW9kBKUlui2J6zWvk8Y1zuckNQ6cLo7jYEzY8fuVZFBSuoN/2o+29SpzkG7ZOQckGjVqBF6ztarF7o2VK0adUQSs+2227LttttGHYaISDp5CDgFOB3oAGwNvGtmpf3jtRVhsu0VwJpSjhtJmIJbcOmWjIATUVrpwjpC2cI27vxmRn3C+F0HarmzwYwawFog3/0PJQ4ZQ6ULm1u3MY92d4zk2H22555T9406HBEREYlJZumCmdUHFgPnufuLsduaA3OBru7+fhznWAlc6u4Di9w+EGjk7sclI9byKm1FtzqAO7/FrpcX3OHOhtj1+thN2qlUiXzy3RJWrttI12waEiEiIpJ92hHyvd8Hf7n7T8C3wKFJOP/hZrbIzGaZ2VNm1jgJ50xImauwZtwcz22ZqmHDhowePTrqMNLK/GVruLZNHj7/G0bP/ybqcESS5p577gHgn//8Z8SRiIiUWzUzm1Lo+yfd/clynqspkMemfVcFFsbu2xLvAW8AOcDOhIFjH5pZO3dPWXvaeMoNbin0tRdzW0bLzc2lY8eOUYeRNtZvzKd9vw/ovNdO9OnYJupwRJLqww8/BNDPvIhkso3u3r60A8ysH3BjGec5Knkhbc7dXyn07VdmNpVQEnEsIQFOibISXZUkZJnxPyzht7Ub6aayBamEbr/99qhDEBFJhYeAwWUc8yNwMFAVaAR/mHLbBPg4mQG5+y9mNg/YLZnnLUtpie5tKYtC0sbwrxawVc1qHL5bo6hDERERkXJw9yVsXo6wmdgq6wagM/BS7LYdgT2BLZhtX+xzNQJ2AOYn87xlKTHRdVeim2025OXz/jcL6LRnY2pWU0ssqXzOOussAAYPLmuhQ0Sk8nP35Wb2DHCvmS0ClgIPAF8SWoMBYGYzgAHuPiD2/VbArrG7qwAtzKwtkOvuP8buvxV4nZDY7kyYqrsIeDMFL+13GdkSTCrGxNm5/Lp6A101JEIqqVatWkUdgohIurkS2AgMAWoTpuKe4+55hY5pRShvKNAe+KjQ97fFLs8DvQgb3PYBzgEaEJLdj4C/uPuKCnkVJSixj262UB/dTW548yve+uxnpt3UmVrVtaIrIiKSbjQCODGl9dGVLJKX77w/fQH/t0djJbkiIiJSKSjRFQAm5eSydNV6uqlsQSqxnj170rNnz6jDEBGRFFGNrgDw3vT51KpehY6ttos6FJEK07Zt26hDEBGRFFKiKwCM+2EpB7fcljo19L+EVF7XXXdd1CGIiEgKqXRBWLJyHd8vWslBu2wbdSgiIiIiSaNEV5ickwvAgbs0jDgSkYp1yimncMopp0QdhoiIpIg+pxYm5uRSu3pV9tmhftShiFSoQw45JOoQREQkhZToChNzctl/pwbUqKYFfqncrr766qhDEBGRFFJmk+WWr97AjAW/qT5XREREKh0lullu8pxc3FWfK9nh+OOP5/jjj486DBERSRGVLmS5iTlLqVGtCm2bN4g6FJEKd/TRR0cdgoiIpJAS3Sw3KSeXts0baOyvZIUrrrgi6hBERCSFVLqQxVau28j0X37jIJUtiIiISCWkRDeLTZ27jLx810Y0yRpdu3ala9euUYchIiIpotKFLDZx9lKqVTH230n1uZIdunfvHnUIIiKSQkp0s9iknFz22bE+dWrofwPJDn369Ik6BBERSSGVLmSpNevz+GLer2orJiIiIpWWEt0s9dmPy9iQ5xys+lzJIp06daJTp05RhyEiIimiz6yz1MScXKoYtNt5m6hDEUmZHj16RB2CiIikkBLdLDUxZyl7NduarWtVjzoUkZS58MILow5BRERSSKULWWjdxjw++/FXDtxZZQsiIiJSeSnRzUJfzlvOuo35HNRSG9Eku3Ts2JGOHTtGHYaIiKSIShey0KScXAAO3FmJrmSXXr16RR2CiIikkBLdLPTp7KW0alKPberWiDoUkZRSoisikl1UupBlNuTlM3XuMpUtSFbasGEDGzZsiDoMERFJEa3oZpmvf/mN1evzNChCslLnzp0BGD16dLSBiIhISijRzTITZy8FUKIrWemCCy6IOgQREUkhJbpZZlJOLi0b1aVxvVpRhyKScmeddVbUIYiISAqpRjeL5OU7k+bkqj5Xstbq1atZvXp11GGIiEiKaEU3i8xY8Bsr1m5U2YJkrW7dugGq0RURyRZKdLPIxNmhf+5Bu2gimmSniy++OOoQREQkhZToZpGJOUtp3rA2zRrUjjoUkUj06NEj6hBERCSFVKObJdydSTm5HLizVnMley1fvpzly5dHHYaIiKSIVnSzxHeLVrJs9QZtRJOsdsIJJwCq0RURyRaRrOiaWR8zyzGztWY21cw6lHJsRzPzYi57FDqmVwnHqIdWzMScgvpcJbqSvS6//HIuv/zyqMMQEZEUSfmKrpn1APoDfYBPYtfDzWwvd/+xlIfuDeQW+n5xkftXA38qfIO7r93yiCuHibOX0nTrWrRoWCfqUEQic/LJJ0cdgoiIpFAUpQv/AAa6+1Ox7y8zsy7AxcD1pTxukbsvKeV+d/cFyQqyMimozz245baYWdThiERmyZLwK6RRo0YRRyIiIqmQ0tIFM6sBtANGFLlrBHBoGQ+fYmbzzWyUmR1VzP21zWyumc0zs3fNbL9kxFwZzFm6mkUr1qk+V7Leqaeeyqmnnhp1GCIikiKpXtFtBFQFFha5fSHQqYTHzCes9k4GagBnA6PM7Eh3/zh2zEzgfOALoB5wBTDOzNq4+3dFT2hmvYHeADVq1NiiF5QJJs5eCqg+V+Sqq66KOgQREUmhtO+64O4zCYlsgQlmtjNwDfBx7JgJwISCA8xsPPA5cBmw2c4Td38SeBKgbt26XkGhp41JObk02qoGf9puq6hDEYlU9+7dow5BRERSKNVdF5YAeUCTIrc3ARKpr50I7FbSne6eB0wp7ZhsMjEnlwN3aaj6XMl6CxYsYMEClfKLiGSLlCa67r4emAp0LnJXZ2B8AqdqSyhpKJaFjG7f0o7JFvOWrebnX9dw4M4qWxDp2bMnPXv2jDoMERFJkShKFx4AXjCzScA44CKgGfA4gJkNAnD3c2LfXwnMAb4m1OieBZwInFJwQjO7BfgU+A7YmlCusC+htjerTZwd65/bUhPRRK677rqoQxARkRRKeaLr7kPMbFugL7A9MB3o5u5zY4e0KPKQGsB9wI7AGkLCe6y7Dyt0TANCzW1TYDnwGXCEu0+qsBeSISbl5FK/dnVaNakXdSgikevSpUvUIYiIpBUzqwncD5wO1AZGAX3cfV4pj7keOBloBawjLDZe7+7TCx1jwC2Ezf/bEMpOL3H3ryvopRQfq3ul34tVqrp16/qqVauiDqPCdLzvI3ZtXI+nz20fdSgikfvpp58AaN68ecSRiIiUj5mtdve6STzfY8AJwLnAUsIn7w2AdrE9T8U95n3gFUJHLANuBw4B9nL33Ngx/yQsavYiNBW4GTgcaOXuK5IVf1nSvuuClN/0n5czZ+lqzjtsl6hDEUkLZ599NgCjR4+ONhARkTRgZvWBvwLnufsHsdvOBuYS2r6+X9zj3P3PRc5zNuET9cOAd2KruVcCd7v767FjzgUWAWcAT1TICyqGEt1K7MWJc6lVvQon7rdD1KGIpIW+fftGHYKISDppB1Sn0CAvd//JzL4lDPIqNtEtRj1Cg4Nlse93IZSTFj7vGjMbGzuvEt1UadiwYaVc3clzZ8e1K7ipXXU+mzgu6nBE0kK1auFXXmX8mReRrFHNzKYU+v7J2HyA8mhKaPu6pMjtC2P3xas/YX5BwUyDgscWNyAspatvWZ/o5ubm0rFjx6jDSLpnP8nhvi+/4d3LDqX1DvWjDkckLcyePRuAli1bRhyJiEi5bXT3UjfemFk/4MYyznNUMoIxswcItbeHl1TTG6WsT3QrI3dn8Kdz2a9FAyW5IoWcf/75gFZ0RaTSewgYXMYxPwIHA1WBRsDiQvc1ITZ9tjRm9iDQEzjK3WcXuqtgMk+T2PMUPm9Kp/Yo0a2Exv+wlNlLVvFgjzZRhyKSVm677baoQxARqXDuvoTNyxE2Y2ZTgQ2EwV0vxW7bEdiTMgZ5mVl/oAchyZ1R5O4cQkLbmdCZATOrBXQArknktWwpJbqV0AsT5tKwbg26tt4+6lBE0sqRRx4ZdQgiImnD3Zeb2TPAvWa2iE3txb4ERhYcZ2YzgAHuPiD2/X+AswkDvJaZWUFN7kp3X+nubmYPATfEHjuL0GpsJbGEOlWU6FYy85ev4YNvF3Jhh5bUql416nBE0srMmTMBaNWqVcSRiIikjSuBjcAQNg2MOKdIvW0rQnlDgT6x61FFznUbcGvs63tj5/sPmwZGHJPKHrqggRGVbmDEAyNm8shH3zP2mqNo3rBO1OGIpJWCjaeq0RWRTJXsgRGVnVZ0K5H1G/N5efJPHNWqsZJckWLceeedUYcgIiIppES3EhnxzQIWr1jH2QfvFHUoImnp0EMPjToEERFJoSpRByDJ88KEuTRvWJsjd98u6lBE0tL06dOZPn161GGIiEiKaEW3kpi1cAUTc3K5vuseVKliUYcjkpYuvfRSQDW6IiLZQoluJfHChLnUqFaF09o3jzoUkbR13333RR2CiIikkBLdSmDluo28MW0ex+27PQ3r1og6HJG0dcABB0QdgoiIpJBqdCuBNz/7mVXr87QJTaQMn3/+OZ9//nnUYYiISIpoRTfDuTuDJ8yl9Q5b07Z5g6jDEUlrV155JaAaXRGRbKFEN8NNnrOMmQtXcO8p+2KmTWgipXnooYeiDkFERFJIiW6GGzRhDlvXqkb3Ns2iDkUk7bVt2zbqEEREJIVUo5vBFq1Yy3vTF3Ba++bUrlE16nBE0t7kyZOZPHly1GGIiEiKaEU3gw2Z9BMb850zD2oRdSgiGeGaa64BVKMrIpItlOhmqI15+bw06Uc67NaIltttFXU4IhlhwIABUYcgIiIppEQ3Q42asYj5y9dy6/F7Rx2KSMZo3bp11CGIiEgKqUY3Q70wYS7N6tfi6D0aRx2KSMYYP34848ePjzoMERFJEa3oZqDZi1fyyfdLuPqY3alWVX+riMTrhhtuAFSjKyKSLZToZqBBE+ZSvarxlwOaRx2KSEZ54oknog5BRERSSIluhlmxdgNDp87juH2b0bherajDEckorVq1ijoEERFJIX3unWFenzqPles20uvQnaMORSTjjBkzhjFjxkQdhoiIpIhWdDNIfr7z/IS57NeiAW2aN4g6HJGMc8sttwCq0RURyRZKdDPImO8Wk7NkFf17aoypSHk8++yzUYcgIiIppEQ3gzw/fg7b1atJ19bbRx2KSEZq2bJl1CGIiEgKqUY3Q8xevJLRMxdz1kE7UaOa3jaR8hg5ciQjR46MOgwREUkRrehmiIKWYmcc1CLqUEQyVr9+/QDo1KlTxJGIiEgqKNHNACvWbuC1KT/Rfd9mbFevZtThiGSsF154IeoQREQkhZToZoChU+exan0e56qlmMgWad5cQ1ZERLKJij3TXH6+8/z4OeyvlmIiW+y9997jvffeizoMERFJEa3oprkxsxYzZ+lq/nGMJjqJbKm7774bgC5dukQciYiIpIIS3TQ3cPwcGterSdfWTaMORSTjvfLKK1GHICIiKaREN439sHglY2Yt5h+dd6d6VVWZiGyppk31B6OISDZR9pTGBo2fQ42qVTj9QLUUE0mGd955h3feeSfqMEREJEW0opumflu7gaFT53Fcm+3VUkwkSf79738D0L1794gjERGRVFCim6aGTgktxc47dJeoQxGpNIYOHRp1CCIikkJKdNNQfr4zaMIc2u20DfvsWD/qcEQqjUaNGkUdgoiIpJBqdNNQQUsxDYgQSa433niDN954I+owREQkRbSim4aeGz+HJlurpZhIsj388MMAnHzyyRFHIiIiqaBEN818v2glY2ct5iq1FBNJurfffjvqEEREJIWU6KaZQRNiLcUOUksxkWSrX1817yIi2URLhmmkoKVY9zbNaLSVWoqJJNuQIUMYMmRI1GGIiEiKaEU3jbwy6UdWr8+jlzahiVSIxx57DIAePXpEHImIiKSCEt00sCEvn4dGzuLR0T9w2K7bqqWYSAUZNmxY1CGIiEgKKdGN2E+5q7n8lc/47Mdf6dG+Obccv1fUIYlUWnXq1Ik6BBERSSEluhH67xe/cOMbXwHwyOn70b1Ns4gjEqncBg8eDMBZZ50VcSQiIpIK5u5RxxCpunXr+qpVq1L6nKvWbeSW/37N0Knz2L9FA/r33I/mDbXSJFLROnbsCMDo0aMjjUNEpLzMbLW71406jkwRSdcFM+tjZjlmttbMpppZh1KO7WhmXsxljyLHnWJm35jZutj1SRX/ShI3/eflHPfIJ7w+bR6X/d+uvPq3Q5TkiqTIBx98wAcffBB1GCIiacPMaprZI2a2xMxWmdl/zWzHMh5zvZlNNrPfzGyxmb1jZq2LHDOwmNzt04p9NZtLeaJrZj2A/sCdwH7AeGC4mZXVOHZvYPtCl+8KnfMQYAjwItA2dv2amR2U9BdQTvn5ztMfz+akR8exZn0eL11wMFcd04pqGgohkjLVq1enevXqUYchIpJOHgJOAU4HOgBbA++aWdVSHtMReBQ4FPg/YCMw0swaFjluJH/M3bolNfI4pLx0wcwmAl+6+4WFbvsOGOru1xdzfEfgI2A7d19SwjmHAA3dvXOh20YCi9399NLiSUXpwuIV67j6tS8YM2sxnfdqwr2n7Ms2dWtU6HOKyOYGDhwIQK9evSKNQ0SkvJJZumBm9YHFwHnu/mLstubAXKCru78f53m2ApYDJ7r7O7HbBgKN3P24ZMRaXildTjSzGkA7YESRu0YQ/ioozRQzm29mo8zsqCL3HVLMOd+P45wV7selq+na/2MmzF7KHSfszZNnt1OSKxKRgQMH/p7siogI7YDqFMqh3P0n4FsSy6HqEXLKZUVuP9zMFpnZLDN7yswab2nAiUp114VGQFVgYZHbFwKdSnjMfOBiYDJQAzgbGGVmR7r7x7FjmpZwzqbFndDMegO9Y9+6ma1J5EUUUo2wXB+Xc/4F55TziaRcEnp/JKUifW/MLKqnzhT62Ulfem/SWyren9pmNqXQ90+6+5PlPFdTIA8o+ol5iTlUCfoDnwMTCt32HvAGkAPsDPQDPjSzdu6+rpzxJizt24u5+0xgZqGbJpjZzsA1wMfFPSaOcz4JlPd/it+Z2RR3b7+l55GKofcnfem9SW96f9KX3pv0li7vj5n1A24s47Cin46X97keAA4HDnf3vILb3f2VQod9ZWZTCSURxxIS4JRIdaK7hPCXQ5MitzcBFiRwnolAz0LfL0jCOUVEREQqg4eAwWUc8yNwMOGT9kaEWt0CTTzWsUIAAA7SSURBVIhjMdHMHiTkY0e5++zSjnX3X8xsHrBbWedNppQmuu6+PpbRdwZeK3RXZ+D1BE7VllDSUGBC7Bz3FTnn+HKGKiIiIpKRYpv3i93AX1gsJ9tAyJleit22I7AnZeRQZtYf6EFIcmfE8VyNgB34Y/5W4aIoXXgAeMHMJgHjgIuAZsDjAGY2CMDdz4l9fyUwB/iaUKN7FnAioRVGgf7AWDO7DngLOImwJH94Bb+WLS5/kAql9yd96b1Jb3p/0pfem/SWUe+Puy83s2eAe81sEbCUkKd9SWgNBoCZzQAGuPuA2Pf/IeyZOhFYZmYF9bwr3X1lrAvDrYRFzPmEGt27gEXAmyl4ab+LZDKamfUBriX0VJsO/N3dx8buGw3g7h1j318LXAjsCKwhJLx3ufuwIuc8lVDo3BL4AbjR3VNWAyIiIiKSacysJnA/cAZQGxgF9Il1Xyg4xoHb3P3WQt8X5zZ3v9XMahMWHvcDGhCS3Y+AmwqfNxWyfgSwiIiIiFROGsslIiIiIpWSEt1SmFkfM8sxs7VmNtXMOpRx/JGx49aa2WwzuyhVsWajRN4fM9vezF4ysxlmlheb2CIVJMH35mQzGxGbl77CzCaa2fGpjDfbJPj+HGlm481sqZmtif0MXZ3KeLNJov/uFHrc4Wa20cymV3SM2SzBn52OZubFXPZIZczZToluCcysB2GT252EGpPxwHAza1HC8bsAw2LH7Ucoun7EzE4p7njZMom+P0BNwg7Uuwnt6aSClOO9ORL4kNBbcT/Cz9Gb8f4DL4kpx/uzEngYOALYi7AX4rbYXgtJonK8NwWP2wYYRKitlApS3vcH2JuwJ6ng8l1Fxil/pBrdEpjZROBLd7+w0G3fAUPd/fpijr8HONnddyt029PA3u5+SCpiziaJvj9FHvsusMTde1VslNlpS96bQsdPAj5296sqKMyslaT35w1gnbufXkFhZqXyvjex9+MLwIBT3b11hQebhcqRF3QkbMDaLtbuSyKgFd1imFkNwvznEUXuGkHJs58PKeb494H2ZlY9uRFmt3K+P5ICSXxv6rH5zHTZQsl4f8xsv9ixY5IbXXYr73sTW1lvQlhplwqyhT87U8xsvpmNMrOkTCOT+CnRLV4jwqSQhUVuL232c9MSjq8WO58kT3neH0mNLX5vzOwSQjvBF5IbmrAF74+ZzTOzdcAU4FF3f7xiQsxaCb83ZrYPcAtwVuHRq1IhyvOzMx+4mND3/2RgJjBKZVmpFcXACBGRYsVq2u8Derj73KjjkT/oAGxFGBl6j5nluLv+GIlIrPfpEOBqd8+JOh7ZnLvPJCS3BSaY2c7ANcQxXleSQ4lu8ZYAeYSPgwprAiwo4TELSjh+I3GM4ZOElOf9kdQo93sTG/oyCDjH3d+pmPCyXrnfn0LJ1Fdm1oQw9UiJbvIk+t5sTxjT+pyZPRe7rQpgZrYR6ObuRT9ml/JL1r87E4GeyQpKyqbShWK4+3pgKmH2c2GdKXn284QSjp/i7huSG2F2K+f7IylQ3vfGzP5CSJp6ufvQioswuyXxZ6cKoZOJJEk53pufgX2AtoUujwPfx77W78IkSuLPTltCSYOkiFZ0S/YA8EJs9/c44CKgGeEXCWY2CMDdz4kd/zhwqZk9BDwBHAb0ArQruWIk+v5gZm1jX24N5Me+X+/u36Qy8CyQ0HtjZj0JSe7VwFjbNDN9vbvnpjj2bJDo+3MZkMOmj2CPILxXj6Y27KwQ93sTW0D5Q89cM1tE6IahXroVI9GfnSuBOcDXQA3gLOBEQs2upIgS3RK4+xAz2xboS/iIaDrho6CCusEWRY7PMbNuwIOE4vNfgMvd/fUUhp01En1/Yj4r8n13YC6wc0XFmY3K8d5cRPhd9FDsUmAM0LFio80+5Xh/qgL3EH5ONgI/ANcR+8ddkqecv9ckRcrx/tQg7DnYEVhDSHiPdfdhKQpZUB9dEREREamkVKMrIiIiIpWSEl0REfn/9u491o6qiuP496cSilUsIhQpQlEKFkERFR+AYjFRNCEQFfyDR9WAYJAQjIAgUMDyMDHyEqJAbBG0IoIaRBAIhahBI4/yEJAiLYKUUmilLbelrcs/1j69u8dzzj23D3ruye+TTO4+M2tm9uw7N1l3Zs0ZM7O+5ETXzMzMzPqSE10zMzMz60tOdM3MzMysLznRNTMzM7O+5ETXrMdJmiDpUkmPSloiabGkxyRdIekjVdwcSSFpzkbsbqMv00pforzbvTF/rKRrJT0naVVZfqGk8VX8tA3YrzGSppTpoG77/VqRtF+1/6GmKWWdxueZr3V/h7Ihf6/D+V01jet67YeZ9Ta/MMKsh0n6MnA5//+61V3KtBX5pp2R4iLg0I24/zHAmaU9Hfj1RuyLmZltYE50zXqUpEnAleSdlwCmkq+Xng/sAHwB2HmjdbCDiJhMvgK72QfKz0XAjhGxqFqmDdytIXXo92u1/5lU4yBpMvCT8nF66d96J2lURCzbENs2M9uYXLpg1rvOY/Bv9OKIOD0inomIVyPiiYg4Dziq0wYk7SHpBkmzJb0saYWkeWXeB5tid5R0taSnJS2TtEjSw+UW8dZV3FGS/ibpJUnLJT0r6TZJR1Yxa9xWbtw6BnYqIWOAhWX55E63uCXtKennZT+vSlog6U5Je5Xlb5I0XdJDkl4sx7hI0t2SDq22MwV4qtr0kc377FByMVrSWZIekTQg6RVJ90s6UdIbqrg1jkPSEWUMB5SlJ0eyAUmaJOmesr8nJZ0kqU6cp1T9O1jSVZIWkK8nbcRMlPTTarznS7pe0nub9tXV+dK0ziGSHuw0HpL2lfRbSS9U5+uM5v13GINtS3+XlPPhcuDNbWKHfQxmNsJEhCdPnnpsArYmr+I2pnFdrDOnxM6p5n2paTv1tBSYWMU+0iF2txLzxQ4x11fbmlbNHw/s12G9ySWm8XlatZ2DgRXt1isx23TYdgBHlLgpHWKmtep3mTcauLfDujcDryux9XEsbBO/zzDOg8mtxqUpprF8QZuxOqyKndIUvzquLN8HeKVNvweAfYd5vtTjMW+o8QAOA1a1iVsG7NfuHCvzNgMebbHuv1uNYzfH4MmTp5E9+YquWW8aX7Vfjohn13I79wGfBt5O1vluDhxblr0R+BqApC2BXcv8i8nk7q3Ah4DTgf+UZR8vP5eQNcKbkmUUhwC3tOtERMyMCAFzy6y5EaEyTWu1jqTNgCsYLLE6AxgLvI1MuP9Z5i8m637Hl2MaBXyMTNgATix9mALsWO1ietWHye36DpwA7Fnat5Jj+U5ybAEOIP+haDYG+DrwFuCCav7hHfa1LrYEvgdsARzXxf4EfIYcs93LvCvIZHEuWWayKfB+4AVyXH8IwzpfamPpMB6SRgOXkHcxVpL/5GwOHFPiNiVLdzo5Anh3ad8DbEfeRVjUHLiWx2BmI4xrdM362zzgq8CFZCK4WdPyXcrPhWQyMIZM3BaTV8ZmRcR3q/inys/RwHfIK52PAn+IiPWdGOxNJm8AMyPinGrZ9VX7FTL5/QUwkbxNXdf77sK6+VzV/nZEzAOQdDaDD7N9FvhZ03r3RsTlJfYa4OQyf4d17E87zwNnRMQqSdOBS4fY3/cj4tbSfljSBAaTxB3I322z3SVtQ9aJd3O+1IYaj73L9gBujojG2P5I0jHAHsDOknaKiNlt9jGpap/X+AdR0vfJevdat+e8mY1gvqJr1pvmVO3NJW27ltu5DjiJTACbk1wa8yLiv+SVtWeACcBpwDXAQ6X29R0l/jLgl0Aj/kLyKufzkk5Zyz62M7Zq/71D3MnklcYPk1cAmx9qG7WO/diqaj9dtedW7Vb1nI9X7aXrsT/tPBkRq4axv/ubPndbk7rlMM6X2lDj0W6cYeixXt23qv1MmzYwrHPezEYwJ7pmPSgi5gN/rWZ9q1Vc/SBUi2VbkGULkFf73gO8Hmj5UE9E3ARsT14BPRA4m6yX3I28ektELIuIQ8hbvPsAXwH+Qt5WPlfSuO6OsCvPV+2JHeLqsoGDgE1LmcSLLWJjLfoxv2pv36ZdxzSsWMf9Dtfq/UVEN/sbaPpcH8PtVVnH6omsRX6k7GPI86Vd/2g9Hu3Guflzq7FuWFC1t2vTHuzE8I/BzEYYJ7pmves08sopwPHlifltJW2ifInEqWRNZTsrGUwoVgIvk7f4z2kVLOkSYH+y/vYW4FfA8rJ4+xLzeUnHAeOAWeTV3VmNTdAmoVhLf2IwWf2kpFMlbSVpC0kHSWrUC6+s1lkEbCLpdNa8utdQJ78TSl3oUH5XtacqX3oxnqwZbhUzIkXEE8A/ysf9JZ2gfMHGKEnvk3QGMKMR3835Mkx/JssJAA6QdKDyGzWOIuuEAR7vULYAcGfVPkXSOEnvAr7ZKngDHIOZ9RgnumY9KiJuJx8WW0H+rZ4JPAu8SiYkU8kHj9qtvxi4o3wcB/yLvEq6a5tVjgVuq/Yxi3xQCbI8AfLK6iVkKcHiMh1dlj0HPDiMQ+woIgbIr09rJLJTyat5LwE3kg+EUdoNM8mk5XhaPIAUEUvIJ+0hH1hbUr5qa3KHrlzEmg+ezSNrlRvfCfx7sj64HxxNfruBgB+QiecA8ABwFmuWk3RzvnQtIpYC3yD/udsE+A15fv24hCxn8MG0dq4GHivtj5JlCbNZsyyitl6Pwcx6jxNdsx4WEVeSpQaXkcntAFnf+DhwFXD+EJs4jEzCFpJPkV9D+zeTnQ/8kUwmV5IPed1HJo0XlZg7yIeuZpMJ5SoywZ0BfKIkp+tNRNxI1t7OIL8iaiWZ6N7FYN3uBcC5ZLIyUJZNov1T84cDd5NXuLvpw1Ly2ybOJh9WWk4mgw+QVwoPLPWeI15E3EUm8FeTSeIKcrwfJP/BObUK7+Z8Ge7+ryW/iu4m8ur7SvKfs+uAvSJfqNFp/QHgU8AN5N/JIvKFG+2+b3q9H4OZ9RZ1V8plZmZmZjay+IqumZmZmfUlJ7pmZmZm1pec6JqZmZlZX3Kia2ZmZmZ9yYmumZmZmfUlJ7pmZmZm1pec6JqZmZlZX3Kia2ZmZmZ9yYmumZmZmfWl/wHoCNzxJwzT1QAAAABJRU5ErkJggg==\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plot(thresh_arr, 'Classification Thresholds',\n", + " val_metrics['bal_acc'], 'Balanced Accuracy',\n", + " val_metrics['avg_odds_diff'], 'avg. odds diff.')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "hU_k8-v9HHWF", + "outputId": "88f2f7d7-868e-4ca4-89d1-b2617f4d79a3" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.2300\nBest balanced accuracy: 0.7717\nCorresponding 1-min(DI, 1/DI) value: 0.4860\nCorresponding average odds difference value: -0.1157\nCorresponding statistical parity difference value: -0.1929\nCorresponding equal opportunity difference value: -0.1063\nCorresponding Theil index value: 0.0896\n" + } + ], + "source": [ + "describe_metrics(val_metrics, thresh_arr)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uC7NIOsZHHWF" + }, + "source": [ + "#### 3.3.3. Testing RF model on original data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "_pydY7xcHHWF" + }, + "outputs": [], + "source": [ + "rf_orig_metrics = test(dataset=dataset_orig_panel19_test,\n", + " model=rf_orig_panel19,\n", + " thresh_arr=[thresh_arr[rf_orig_best_ind]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "luhNCYPfHHWF", + "outputId": "d33d2a3f-4936-48a1-ce26-4583af4ff7b7" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.2300\nBest balanced accuracy: 0.7638\nCorresponding 1-min(DI, 1/DI) value: 0.5141\nCorresponding average odds difference value: -0.1388\nCorresponding statistical parity difference value: -0.2190\nCorresponding equal opportunity difference value: -0.1135\nCorresponding Theil index value: 0.0936\n" + } + ], + "source": [ + "describe_metrics(rf_orig_metrics, [thresh_arr[rf_orig_best_ind]])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0a2LHpNYHHWF" + }, + "source": [ + "As in the case of the logistic regression classifier learned on the original data, the fairness metrics for the random forest classifier have values that are quite far from 0.\n", + "\n", + "For example, 1 - min(DI, 1/DI) has a value of over 0.5 as opposed to the desired value of < 0.2.\n", + "\n", + "This indicates that the random forest classifier learned on the original data is also unfair." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1U0RwwbIHHWF" + }, + "source": [ + "## [4.](#Table-of-Contents) Bias mitigation using pre-processing technique - Reweighing" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6HlWdhCTHHWF" + }, + "source": [ + "### 4.1. Transform data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "z7mwDFmVHHWF" + }, + "outputs": [], + "source": [ + "RW = Reweighing(unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "dataset_transf_panel19_train = RW.fit_transform(dataset_orig_panel19_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xFh-nxmOHHWG" + }, + "source": [ + "Metrics for transformed data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "zDKYll6wHHWG", + "outputId": "8473c9b8-0dc0-46c0-c798-ab965900b0e3" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 1.0000000000000002\n" + } + ], + "source": [ + "metric_transf_panel19_train = BinaryLabelDatasetMetric(\n", + " dataset_transf_panel19_train,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "explainer_transf_panel19_train = MetricTextExplainer(metric_transf_panel19_train)\n", + "\n", + "print(explainer_transf_panel19_train.disparate_impact())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1R0Vk-3OHHWG" + }, + "source": [ + "### 4.2. Learning a Logistic Regression (LR) classifier on data transformed by reweighing" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OHLbxcK2HHWG" + }, + "source": [ + "#### 4.2.1. Training LR model after reweighing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "FGb3-8VIHHWG" + }, + "outputs": [], + "source": [ + "dataset = dataset_transf_panel19_train\n", + "model = make_pipeline(StandardScaler(),\n", + " LogisticRegression(solver='liblinear', random_state=1))\n", + "fit_params = {'logisticregression__sample_weight': dataset.instance_weights}\n", + "lr_transf_panel19 = model.fit(dataset.features, dataset.labels.ravel(), **fit_params)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "apSeaQhGHHWG" + }, + "source": [ + "#### 4.2.2. Validating LR model after reweighing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "rObPE6MGHHWG" + }, + "outputs": [], + "source": [ + "thresh_arr = np.linspace(0.01, 0.5, 50)\n", + "val_metrics = test(dataset=dataset_orig_panel19_val,\n", + " model=lr_transf_panel19,\n", + " thresh_arr=thresh_arr)\n", + "lr_transf_best_ind = np.argmax(val_metrics['bal_acc'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "NO_xBTfrHHWG", + "outputId": "85249a47-071b-4198-d370-5b4138611052" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAG4CAYAAAB8eJ7qAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXhU5dnH8e+TjRB2CBCWsMoiIKCACKiAgqVW3K1YcaFVVLTWWqnaurdaX7W2VmrdalHUioh7XVlVVASUTdnXsIQtEJaQbeZ+/zgTCRCSCSQ5M5Pf57rGSc4855x7IIZ77mdzZoaIiIiIiJ/i/A5ARERERERJqYiIiIj4TkmpiIiIiPhOSamIiIiI+E5JqYiIiIj4TkmpiIiIiPhOSamIiIiI+M6XpNQ5N8Y5t8Y5l+ucm+ecO62M9r9wzs13zuU45zKdcy8759IOaXORc+4H51xe6PmCyn0XIiIiIpGpPLmWc268c85KeOyrypirPCl1zl0KPAE8BJwIfAl86JxrdYT2A4AJwItAV+B8oAvwSrE2/YCJoWM9Q8+TnHN9K++diIiIiESe8uZawG+AZoc8VgOvV360B7iq3tHJOTcbWGhm1xY7tgJ4w8zuLKH9bcCvzax1sWOjgCfNrHbo+4lAQzMbWqzNFGCbmV1Wee9GREREJLKUN9cq4fwBwBfAADP7svIiPViVVkqdc0lAL+CTQ176BOh/hNNmAc2cc8OdJxUYAXxQrE2/Eq75cSnXFBEREYk5R5lrHepa4PuqTEgBEqryZkAqEA9sOeT4FmBISSeY2VfOuRF4XfI18WL+FLiqWLO0I1wzjRI450YDowFSUlJ6paamlu9diIiIiPhg/fr1Bnxb7NCzZvZsse/LnWsV55yrB/wcKLOiWtGqOiktN+dcF+BJ4E941c9mwKPAM8CVR3PN0F/eswC1atWydevWVUywIuKLzMxMANLSSvwcKiISM5xz+82sdyXeYiReT/qESrxHiao6Kd0OBICmhxxvCmQe4Zw7gW/M7NHQ9wtDs8E+d879wcw2hM4tzzVFJIaMGDECgBkzZvgbiIiI/44m1yruWmCymWVVdGBlqdKk1MzynXPzgKHApGIvDQUmH+G0FLw/3OKKvi8aE/tV6BqPFmszFG+2mYjEuDvuuMPvEEREIsJR5loAOOdOBnoAt1RehEfmR/f948AE59w3eJOYrgeaA08DOOdeAjCzoq7594DnnHM3cKD7/u/At2a2PtTmCeAz59wdwNvABcBg4NQqeUci4qthw4b5HYKISCQpb65VZDSwwsxmVF2oB1R5UmpmE51zjYC78BLMxcDZZlY0sLPVIe3HO+fqADcBfwWygWnA7cXafBmaDPVn4AFgFXCpmc2u7PcjIv7LyMgAID093edIRET8V95cCyCUa43Ay6N8UeXrlEaaWrVq2b59VbphgYhUsEGDBgEaUyoisc85l2NmtfyOozJE/Ox7EZGy3HXXXX6HICIix0iVUlVKRUREJErEcqW0Snd0EhGpDKtXr2b16tV+hyEiIsdAlVJVSkWinsaUikh1EcuVUo0pFZGod//99/sdgoiIHCNVSlUpFRERkSgRy5VSjSkVkai3bNkyli1b5ncYIiJyDFQpVaVUJOppTKmIVBexXCnVmFIRiXoPPfSQ3yGIiMgxUqVUlVIRERGJErFcKdWYUhGJeosXL2bx4sV+hyEiIsdAlVJVSkWinsaUikh1EcuVUo0pFZGo9+ijj/odgoiIHCNVSlUpFRERkSgRy5VSjSkVkag3f/585s+f73cYIiJyDFQpVaVUJOppTKmIVBexXCnVmFIRiXp///vf/Q5BRESOkSqlqpSKiIhIlIjlSqnGlIpI1JszZw5z5szxOwwRETkGqpSqUioS9TSmVESqi1iulGpMqYhEvXHjxvkdgoiIHCNVSlUpFRERkSgRy5VSjSkVkaj35Zdf8uWXX/odhoiIHANVSlUpFYl6GlMqItVFLFdKNaZURKLeM88843cIIiJyjFQpVaVUREREokQsV0o1plREot7MmTOZOXOm32GIiMgxUKVUlVKRqKcxpSJSXcRypVRjSkUk6r3wwgt+hyAiIsdIlVJVSkVERCRKxHKlVGNKRSTqTZkyhSlTpvgdhoiIHANVSlUpFYl6GlMqItVFLFdKlZQqKRWJehkZGQCkp6f7HImISOWK5aRUE51EJOopGRURiX4aUyoiUe+jjz7io48+8jsMERE5Buq+V/e9SNTTmFIRqS5iufteSamSUpGol5mZCUBaWprPkYiIVK5YTko1plREop6SURGR6KcxpSIS9d577z3ee+89v8MQEZFjoO57dd+LRD2NKRWR6iKWu++VlCopFYl627dvByA1NdXnSERE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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "disp_imp = np.array(val_metrics['disp_imp'])\n", + "disp_imp_err = 1 - np.minimum(disp_imp, 1/disp_imp)\n", + "plot(thresh_arr, 'Classification Thresholds',\n", + " val_metrics['bal_acc'], 'Balanced Accuracy',\n", + " disp_imp_err, '1 - min(DI, 1/DI)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "uh4aQ2Z6HHWG", + "outputId": "538172de-f2cc-4c47-8aa7-cfd0d4094b59" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plot(thresh_arr, 'Classification Thresholds',\n", + " val_metrics['bal_acc'], 'Balanced Accuracy',\n", + " val_metrics['avg_odds_diff'], 'avg. odds diff.')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "qKKdkMELHHWH", + "outputId": "280e5812-55ec-47d2-e942-7139f1ce3140" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.2200\nBest balanced accuracy: 0.7581\nCorresponding 1-min(DI, 1/DI) value: 0.2939\nCorresponding average odds difference value: -0.0084\nCorresponding statistical parity difference value: -0.0992\nCorresponding equal opportunity difference value: 0.0242\nCorresponding Theil index value: 0.0938\n" + } + ], + "source": [ + "describe_metrics(val_metrics, thresh_arr)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8ZMdD_WsHHWH" + }, + "source": [ + "#### 4.2.3. Testing LR model after reweighing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hFwLENjsHHWH" + }, + "outputs": [], + "source": [ + "lr_transf_metrics = test(dataset=dataset_orig_panel19_test,\n", + " model=lr_transf_panel19,\n", + " thresh_arr=[thresh_arr[lr_transf_best_ind]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "q2N7cXo5HHWH", + "outputId": "0a5abb12-1425-4e56-d4c9-8a7ad4684906" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.2200\nBest balanced accuracy: 0.7539\nCorresponding 1-min(DI, 1/DI) value: 0.2482\nCorresponding average odds difference value: -0.0151\nCorresponding statistical parity difference value: -0.0872\nCorresponding equal opportunity difference value: -0.0035\nCorresponding Theil index value: 0.0966\n" + } + ], + "source": [ + "describe_metrics(lr_transf_metrics, [thresh_arr[lr_transf_best_ind]])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NhNt40B5HHWH" + }, + "source": [ + "The fairness metrics for the logistic regression model learned after reweighing are well improved, and thus the model is much more fair relative to the logistic regression model learned from the original data." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4aLi-JrbHHWH" + }, + "source": [ + "### 4.3. Learning a Random Forest (RF) classifier on data transformed by reweighing" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Xt20MGrvHHWH" + }, + "source": [ + "#### 4.3.1. Training RF model after reweighing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "JmPkZxCWHHWH" + }, + "outputs": [], + "source": [ + "dataset = dataset_transf_panel19_train\n", + "model = make_pipeline(StandardScaler(),\n", + " RandomForestClassifier(n_estimators=500, min_samples_leaf=25))\n", + "fit_params = {'randomforestclassifier__sample_weight': dataset.instance_weights}\n", + "rf_transf_panel19 = model.fit(dataset.features, dataset.labels.ravel(), **fit_params)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "L5PRJkXCHHWH" + }, + "source": [ + "#### 4.3.2. Validating RF model after reweighing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "aiMIbrEgHHWI" + }, + "outputs": [], + "source": [ + "thresh_arr = np.linspace(0.01, 0.5, 50)\n", + "val_metrics = test(dataset=dataset_orig_panel19_val,\n", + " model=rf_transf_panel19,\n", + " thresh_arr=thresh_arr)\n", + "rf_transf_best_ind = np.argmax(val_metrics['bal_acc'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false, + "id": "PVXbPb4wHHWI", + "outputId": "58c2c3e1-ecd9-4dc7-f538-802897455410" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "disp_imp = np.array(val_metrics['disp_imp'])\n", + "disp_imp_err = 1 - np.minimum(disp_imp, 1/disp_imp)\n", + "plot(thresh_arr, 'Classification Thresholds',\n", + " val_metrics['bal_acc'], 'Balanced Accuracy',\n", + " disp_imp_err, '1 - min(DI, 1/DI)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "OOqXnkZFHHWI", + "outputId": "d4ae6179-58d1-49f2-9adb-84c0cf210c29" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plot(thresh_arr, 'Classification Thresholds',\n", + " val_metrics['bal_acc'], 'Balanced Accuracy',\n", + " val_metrics['avg_odds_diff'], 'avg. odds diff.')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "41srPkY6HHWI", + "outputId": "0e3d76b6-a67c-4bb8-e313-d91361cf9719" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.2500\nBest balanced accuracy: 0.7703\nCorresponding 1-min(DI, 1/DI) value: 0.4516\nCorresponding average odds difference value: -0.0876\nCorresponding statistical parity difference value: -0.1668\nCorresponding equal opportunity difference value: -0.0758\nCorresponding Theil index value: 0.0906\n" + } + ], + "source": [ + "describe_metrics(val_metrics, thresh_arr)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IwyaM88yHHWI" + }, + "source": [ + "#### 4.3.3. Testing RF model after reweighing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Z10zcyKcHHWI" + }, + "outputs": [], + "source": [ + "rf_transf_metrics = test(dataset=dataset_orig_panel19_test,\n", + " model=rf_transf_panel19,\n", + " thresh_arr=[thresh_arr[rf_transf_best_ind]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "WYxXPLuMHHWI", + "outputId": "ae4de973-33a1-41cc-ba11-451fac6a5451" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.2500\nBest balanced accuracy: 0.7586\nCorresponding 1-min(DI, 1/DI) value: 0.4307\nCorresponding average odds difference value: -0.0843\nCorresponding statistical parity difference value: -0.1632\nCorresponding equal opportunity difference value: -0.0611\nCorresponding Theil index value: 0.0963\n" + } + ], + "source": [ + "describe_metrics(rf_transf_metrics, [thresh_arr[rf_transf_best_ind]])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Zu7Cz8UNHHWI" + }, + "source": [ + "Once again, the model learned from the transformed data is fairer than that learned from the original data. However, the random forest model learned from the transformed data is still relatively unfair as compared to the logistic regression model learned from the transformed data." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "id": "Ktz4pZSUHHWJ" + }, + "source": [ + "## [5.](#Table-of-Contents) Bias mitigation using in-processing technique - Prejudice Remover (PR)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "faA3UnViHHWJ" + }, + "source": [ + "### 5.1. Learning a Prejudice Remover (PR) model on original data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nXck0WKmHHWJ" + }, + "source": [ + "#### 5.1.1. Training a PR model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "vt67nMosHHWJ" + }, + "outputs": [], + "source": [ + "model = PrejudiceRemover(sensitive_attr=sens_attr, eta=25.0)\n", + "pr_orig_scaler = StandardScaler()\n", + "\n", + "dataset = dataset_orig_panel19_train.copy()\n", + "dataset.features = pr_orig_scaler.fit_transform(dataset.features)\n", + "\n", + "pr_orig_panel19 = model.fit(dataset)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Yz8PMbcPHHWJ" + }, + "source": [ + "#### 5.1.2. Validating PR model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BF5yFBPiHHWJ" + }, + "outputs": [], + "source": [ + "thresh_arr = np.linspace(0.01, 0.50, 50)\n", + "\n", + "dataset = dataset_orig_panel19_val.copy()\n", + "dataset.features = pr_orig_scaler.transform(dataset.features)\n", + "\n", + "val_metrics = test(dataset=dataset,\n", + " model=pr_orig_panel19,\n", + " thresh_arr=thresh_arr)\n", + "pr_orig_best_ind = np.argmax(val_metrics['bal_acc'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "tLxkKhtKHHWJ", + "outputId": "9b6b7bf9-55f9-4348-d45c-7288599b7ac0" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "disp_imp = np.array(val_metrics['disp_imp'])\n", + "disp_imp_err = 1 - np.minimum(disp_imp, 1/disp_imp)\n", + "plot(thresh_arr, 'Classification Thresholds',\n", + " val_metrics['bal_acc'], 'Balanced Accuracy',\n", + " disp_imp_err, '1 - min(DI, 1/DI)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "YNoY9lsYHHWJ", + "outputId": "9264c33b-4c98-468b-f685-9164dc51ef8c" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plot(thresh_arr, 'Classification Thresholds',\n", + " val_metrics['bal_acc'], 'Balanced Accuracy',\n", + " val_metrics['avg_odds_diff'], 'avg. odds diff.')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "m_x9fO3WHHWJ", + "outputId": "fb841c6c-8f0c-429f-9d76-a6b5e950993f" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.1200\nBest balanced accuracy: 0.6836\nCorresponding 1-min(DI, 1/DI) value: 0.2268\nCorresponding average odds difference value: 0.0254\nCorresponding statistical parity difference value: -0.0830\nCorresponding equal opportunity difference value: 0.1172\nCorresponding Theil index value: 0.1119\n" + } + ], + "source": [ + "describe_metrics(val_metrics, thresh_arr)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0EjCQuShHHWK" + }, + "source": [ + "#### 5.1.3. Testing PR model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "j3S5tpgYHHWK" + }, + "outputs": [], + "source": [ + "dataset = dataset_orig_panel19_test.copy()\n", + "dataset.features = pr_orig_scaler.transform(dataset.features)\n", + "\n", + "pr_orig_metrics = test(dataset=dataset,\n", + " model=pr_orig_panel19,\n", + " thresh_arr=[thresh_arr[pr_orig_best_ind]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "90e5rVizHHWK", + "outputId": "541007a6-5736-4a83-e9da-5014a3618f73" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.1200\nBest balanced accuracy: 0.6880\nCorresponding 1-min(DI, 1/DI) value: 0.1588\nCorresponding average odds difference value: 0.0523\nCorresponding statistical parity difference value: -0.0566\nCorresponding equal opportunity difference value: 0.1479\nCorresponding Theil index value: 0.1108\n" + } + ], + "source": [ + "describe_metrics(pr_orig_metrics, [thresh_arr[pr_orig_best_ind]])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TaTt2mnPHHWK" + }, + "source": [ + "As in the case of reweighing, prejudice remover results in a fair model. However, it has come at the expense of relatively lower balanced accuracy." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yt1djlzTHHWK" + }, + "source": [ + "## [6.](#Table-of-Contents) Summary of Model Learning Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Basw72baHHWK", + "outputId": "71f7dc12-8075-4c91-be11-2239f777ed61" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": " bal_acc avg_odds_diff disp_imp \\\nBias Mitigator Classifier \n Logistic Regression 0.775935 -0.205706 0.426176 \n Random Forest 0.763772 -0.138763 0.485869 \nReweighing Logistic Regression 0.753893 -0.015104 0.751755 \nReweighing Random Forest 0.758565 -0.084303 0.569260 \nPrejudice Remover 0.688028 0.052286 0.841229 \n\n stat_par_diff eq_opp_diff theil_ind \nBias Mitigator Classifier \n Logistic Regression -0.261207 -0.222779 0.092122 \n Random Forest -0.218998 -0.113503 0.093575 \nReweighing Logistic Regression -0.087196 -0.003518 0.096575 \nReweighing Random Forest -0.163191 -0.061108 0.096345 \nPrejudice Remover -0.056631 0.147869 0.110774 ", + "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
bal_accavg_odds_diffdisp_impstat_par_diffeq_opp_difftheil_ind
Bias MitigatorClassifier
Logistic Regression0.775935-0.2057060.426176-0.261207-0.2227790.092122
Random Forest0.763772-0.1387630.485869-0.218998-0.1135030.093575
ReweighingLogistic Regression0.753893-0.0151040.751755-0.087196-0.0035180.096575
ReweighingRandom Forest0.758565-0.0843030.569260-0.163191-0.0611080.096345
Prejudice Remover0.6880280.0522860.841229-0.0566310.1478690.110774
\n
" + }, + "metadata": {}, + "execution_count": 46 + } + ], + "source": [ + "import pandas as pd\n", + "pd.set_option('display.multi_sparse', False)\n", + "results = [lr_orig_metrics, rf_orig_metrics, lr_transf_metrics,\n", + " rf_transf_metrics, pr_orig_metrics]\n", + "debias = pd.Series(['']*2 + ['Reweighing']*2\n", + " + ['Prejudice Remover'],\n", + " name='Bias Mitigator')\n", + "clf = pd.Series(['Logistic Regression', 'Random Forest']*2 + [''],\n", + " name='Classifier')\n", + "pd.concat([pd.DataFrame(metrics) for metrics in results], axis=0).set_index([debias, clf])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CJDhooGKHHWK" + }, + "source": [ + "Of all the models, the logistic regression model gives the best balance in terms of balanced accuracy and fairness. While the model learnt by prejudice remover is slightly fairer, it has much lower accuracy. All other models are quite unfair compared to the logistic model. Hence, we take the logistic regression model learnt from data transformed by re-weighing and 'deploy' it." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "aEDxFnodHHWK" + }, + "source": [ + "## [7.](#Table-of-Contents) Deploying model" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oyqIkRvdHHWK" + }, + "source": [ + "### 7.1. Testing model learned on 2014 (Panel 19) on 2015 (Panel 20) deployment data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "M3z8wVn5HHWL" + }, + "outputs": [], + "source": [ + "dataset_orig_panel20_deploy = MEPSDataset20()\n", + "\n", + "# now align it with the 2014 dataset\n", + "dataset_orig_panel20_deploy = dataset_orig_panel19_train.align_datasets(dataset_orig_panel20_deploy)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "KdOl-sIsHHWL", + "outputId": "81790d78-d6ee-4719-a350-1745338d47dc" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Test Dataset shape" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "(17570, 138)\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Favorable and unfavorable labels" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "1.0 0.0\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Protected attribute names" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "['RACE']\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Privileged and unprivileged protected attribute values" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "[array([1.])] [array([0.])]\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Dataset feature names" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "['AGE', 'RACE', 'PCS42', 'MCS42', 'K6SUM42', 'REGION=1', 'REGION=2', 'REGION=3', 'REGION=4', 'SEX=1', 'SEX=2', 'MARRY=1', 'MARRY=2', 'MARRY=3', 'MARRY=4', 'MARRY=5', 'MARRY=6', 'MARRY=7', 'MARRY=8', 'MARRY=9', 'MARRY=10', 'FTSTU=-1', 'FTSTU=1', 'FTSTU=2', 'FTSTU=3', 'ACTDTY=1', 'ACTDTY=2', 'ACTDTY=3', 'ACTDTY=4', 'HONRDC=1', 'HONRDC=2', 'HONRDC=3', 'HONRDC=4', 'RTHLTH=-1', 'RTHLTH=1', 'RTHLTH=2', 'RTHLTH=3', 'RTHLTH=4', 'RTHLTH=5', 'MNHLTH=-1', 'MNHLTH=1', 'MNHLTH=2', 'MNHLTH=3', 'MNHLTH=4', 'MNHLTH=5', 'HIBPDX=-1', 'HIBPDX=1', 'HIBPDX=2', 'CHDDX=-1', 'CHDDX=1', 'CHDDX=2', 'ANGIDX=-1', 'ANGIDX=1', 'ANGIDX=2', 'MIDX=-1', 'MIDX=1', 'MIDX=2', 'OHRTDX=-1', 'OHRTDX=1', 'OHRTDX=2', 'STRKDX=-1', 'STRKDX=1', 'STRKDX=2', 'EMPHDX=-1', 'EMPHDX=1', 'EMPHDX=2', 'CHBRON=-1', 'CHBRON=1', 'CHBRON=2', 'CHOLDX=-1', 'CHOLDX=1', 'CHOLDX=2', 'CANCERDX=-1', 'CANCERDX=1', 'CANCERDX=2', 'DIABDX=-1', 'DIABDX=1', 'DIABDX=2', 'JTPAIN=-1', 'JTPAIN=1', 'JTPAIN=2', 'ARTHDX=-1', 'ARTHDX=1', 'ARTHDX=2', 'ARTHTYPE=-1', 'ARTHTYPE=1', 'ARTHTYPE=2', 'ARTHTYPE=3', 'ASTHDX=1', 'ASTHDX=2', 'ADHDADDX=-1', 'ADHDADDX=1', 'ADHDADDX=2', 'PREGNT=-1', 'PREGNT=1', 'PREGNT=2', 'WLKLIM=-1', 'WLKLIM=1', 'WLKLIM=2', 'ACTLIM=-1', 'ACTLIM=1', 'ACTLIM=2', 'SOCLIM=-1', 'SOCLIM=1', 'SOCLIM=2', 'COGLIM=-1', 'COGLIM=1', 'COGLIM=2', 'DFHEAR42=-1', 'DFHEAR42=1', 'DFHEAR42=2', 'DFSEE42=-1', 'DFSEE42=1', 'DFSEE42=2', 'ADSMOK42=-1', 'ADSMOK42=1', 'ADSMOK42=2', 'PHQ242=-1', 'PHQ242=0', 'PHQ242=1', 'PHQ242=2', 'PHQ242=3', 'PHQ242=4', 'PHQ242=5', 'PHQ242=6', 'EMPST=-1', 'EMPST=1', 'EMPST=2', 'EMPST=3', 'EMPST=4', 'POVCAT=1', 'POVCAT=2', 'POVCAT=3', 'POVCAT=4', 'POVCAT=5', 'INSCOV=1', 'INSCOV=2', 'INSCOV=3']\n" + } + ], + "source": [ + "# describe(dataset_orig_panel20_train, dataset_orig_panel20_val, dataset_orig_panel20_deploy)\n", + "describe(test=dataset_orig_panel20_deploy)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "E4qSM5rSHHWL", + "outputId": "17959509-a2ff-44d4-eba8-1452bf446554" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 0.5456992351196291\n" + } + ], + "source": [ + "metric_orig_panel20_deploy = BinaryLabelDatasetMetric(\n", + " dataset_orig_panel20_deploy,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "explainer_orig_panel20_deploy = MetricTextExplainer(metric_orig_panel20_deploy)\n", + "\n", + "print(explainer_orig_panel20_deploy.disparate_impact())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "z2-YoHhfHHWL" + }, + "outputs": [], + "source": [ + "lr_transf_metrics_panel20_deploy = test(\n", + " dataset=dataset_orig_panel20_deploy,\n", + " model=lr_transf_panel19,\n", + " thresh_arr=[thresh_arr[lr_transf_best_ind]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "j2Qj7xcLHHWL", + "outputId": "116a14ee-e388-434e-b23d-730e1435f176" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.2200\nBest balanced accuracy: 0.7311\nCorresponding 1-min(DI, 1/DI) value: 0.1943\nCorresponding average odds difference value: 0.0071\nCorresponding statistical parity difference value: -0.0596\nCorresponding equal opportunity difference value: 0.0303\nCorresponding Theil index value: 0.1019\n" + } + ], + "source": [ + "describe_metrics(lr_transf_metrics_panel20_deploy, [thresh_arr[lr_transf_best_ind]])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VlVmF7LIHHWL" + }, + "source": [ + "Deployed model tested on the 2015 Panel 20 data still exhibits fairness as well as maintains accuracy." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rUHqnJ94HHWL" + }, + "source": [ + "## [8.](#Table-of-Contents) Generating explanations for model predictions using LIME" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "F_GPgLfoHHWL" + }, + "source": [ + "### 8.1. Generating explanations on 2015 Panel 20 deployment data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bnp7xZwGHHWL" + }, + "source": [ + "This section shows how LIME can be integrated with AIF360 to get explanations for model predictions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "QZBohMsZHHWM" + }, + "outputs": [], + "source": [ + "train_dataset = dataset_transf_panel19_train # data the deployed model (lr from transformed data)\n", + "test_dataset = dataset_orig_panel20_deploy # the data model is being tested on\n", + "model = lr_transf_panel19 # lr_transf_panel19 is LR model learned from Panel 19 with Reweighing\n", + "thresh_arr = np.linspace(0.01, 0.5, 50)\n", + "best_thresh = thresh_arr[lr_transf_best_ind]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "G9rEHpH7HHWM" + }, + "source": [ + "First, we need to fit the encoder to the aif360 dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "JcB0MdZ-HHWM" + }, + "outputs": [], + "source": [ + "lime_data = LimeEncoder().fit(train_dataset)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "h0G8A9GTHHWM" + }, + "source": [ + "The `transform()` method is then used to convert aif360 features to LIME-compatible features" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "-uqsPpZiHHWM" + }, + "outputs": [], + "source": [ + "s_train = lime_data.transform(train_dataset.features)\n", + "s_test = lime_data.transform(test_dataset.features)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Ou-JY9c_HHWM" + }, + "source": [ + "The `LimeTabularExplainer` takes as input the LIME-compatible data along with various other arguments to create a lime explainer" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "R8CcGvwKHHWM" + }, + "outputs": [], + "source": [ + "explainer = LimeTabularExplainer(\n", + " s_train, class_names=lime_data.s_class_names,\n", + " feature_names=lime_data.s_feature_names,\n", + " categorical_features=lime_data.s_categorical_features,\n", + " categorical_names=lime_data.s_categorical_names,\n", + " kernel_width=3, verbose=False, discretize_continuous=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9jBM2wiiHHWM" + }, + "source": [ + "The `inverse_transform()` function is used to transform LIME-compatible data back to aif360-compatible data since that is needed by the model to make predictions. The function below is used to produce the predictions for any perturbed data that is produce by LIME" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2TmjbxoQHHWM" + }, + "outputs": [], + "source": [ + "def s_predict_fn(x):\n", + " return model.predict_proba(lime_data.inverse_transform(x))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SaTs8D_kHHWN" + }, + "source": [ + "The `explain_instance()` method can then be used to produce explanations for any instance in the test dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Dr-0XvwEHHWN" + }, + "outputs": [], + "source": [ + "def show_explanation(ind):\n", + " exp = explainer.explain_instance(s_test[ind], s_predict_fn, num_features=10)\n", + " print(\"Actual label: \" + str(test_dataset.labels[ind]))\n", + " exp.as_pyplot_figure()\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "mMRScWYZHHWN", + "outputId": "0340e4fc-6cdf-4f8d-c53e-a82c5a110629" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.2200\nActual label: [0.]\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + }, + { + "output_type": "stream", + "name": "stdout", + "text": "Actual label: [0.]\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "print(\"Threshold corresponding to Best balanced accuracy: {:6.4f}\".format(best_thresh))\n", + "show_explanation(0)\n", + "show_explanation(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "q0-hXW89HHWN" + }, + "source": [ + "See the [LIME documentation](https://github.com/marcotcr/lime) for detailed description of results. In short, the left hand side shows the label predictions made by the model, the middle shows the features that are important to the instance in question and their contributions (weights) to the label prediction, while the right hand side shows the actual values of the features in the particular instance." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "No8MeAB_HHWN" + }, + "source": [ + "## [9.](#Table-of-Contents) Re-deploying Model" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "A621roj3HHWN" + }, + "source": [ + "### 9.1. Testing model learned on 2014 (Panel 19) data on 2016 (Panel 21) deployment data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0lV2Yv79HHWN" + }, + "source": [ + "Load the Panel 21 data, and split it again into 3 parts: train, validate, and deploy. We test the deployed model against the deployment data. If a new model needs to be learnt, it will be learnt from the train/validate data and then tested again on the deployment data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "An4HJoIgHHWO", + "outputId": "088e2fb5-c634-4a23-ad6a-8b53c4406cf2" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Test Dataset shape" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "(15675, 138)\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Favorable and unfavorable labels" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "1.0 0.0\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Protected attribute names" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "['RACE']\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Privileged and unprivileged protected attribute values" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "[array([1.])] [array([0.])]\n" + }, + { + "output_type": "display_data", + "data": { + "text/plain": "", + "text/markdown": "#### Dataset feature names" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": "['AGE', 'RACE', 'PCS42', 'MCS42', 'K6SUM42', 'REGION=1', 'REGION=2', 'REGION=3', 'REGION=4', 'SEX=1', 'SEX=2', 'MARRY=1', 'MARRY=2', 'MARRY=3', 'MARRY=4', 'MARRY=5', 'MARRY=6', 'MARRY=7', 'MARRY=8', 'MARRY=9', 'MARRY=10', 'FTSTU=-1', 'FTSTU=1', 'FTSTU=2', 'FTSTU=3', 'ACTDTY=1', 'ACTDTY=2', 'ACTDTY=3', 'ACTDTY=4', 'HONRDC=1', 'HONRDC=2', 'HONRDC=3', 'HONRDC=4', 'RTHLTH=-1', 'RTHLTH=1', 'RTHLTH=2', 'RTHLTH=3', 'RTHLTH=4', 'RTHLTH=5', 'MNHLTH=-1', 'MNHLTH=1', 'MNHLTH=2', 'MNHLTH=3', 'MNHLTH=4', 'MNHLTH=5', 'HIBPDX=-1', 'HIBPDX=1', 'HIBPDX=2', 'CHDDX=-1', 'CHDDX=1', 'CHDDX=2', 'ANGIDX=-1', 'ANGIDX=1', 'ANGIDX=2', 'MIDX=-1', 'MIDX=1', 'MIDX=2', 'OHRTDX=-1', 'OHRTDX=1', 'OHRTDX=2', 'STRKDX=-1', 'STRKDX=1', 'STRKDX=2', 'EMPHDX=-1', 'EMPHDX=1', 'EMPHDX=2', 'CHBRON=-1', 'CHBRON=1', 'CHBRON=2', 'CHOLDX=-1', 'CHOLDX=1', 'CHOLDX=2', 'CANCERDX=-1', 'CANCERDX=1', 'CANCERDX=2', 'DIABDX=-1', 'DIABDX=1', 'DIABDX=2', 'JTPAIN=-1', 'JTPAIN=1', 'JTPAIN=2', 'ARTHDX=-1', 'ARTHDX=1', 'ARTHDX=2', 'ARTHTYPE=-1', 'ARTHTYPE=1', 'ARTHTYPE=2', 'ARTHTYPE=3', 'ASTHDX=1', 'ASTHDX=2', 'ADHDADDX=-1', 'ADHDADDX=1', 'ADHDADDX=2', 'PREGNT=-1', 'PREGNT=1', 'PREGNT=2', 'WLKLIM=-1', 'WLKLIM=1', 'WLKLIM=2', 'ACTLIM=-1', 'ACTLIM=1', 'ACTLIM=2', 'SOCLIM=-1', 'SOCLIM=1', 'SOCLIM=2', 'COGLIM=-1', 'COGLIM=1', 'COGLIM=2', 'DFHEAR42=-1', 'DFHEAR42=1', 'DFHEAR42=2', 'DFSEE42=-1', 'DFSEE42=1', 'DFSEE42=2', 'ADSMOK42=-1', 'ADSMOK42=1', 'ADSMOK42=2', 'PHQ242=-1', 'PHQ242=0', 'PHQ242=1', 'PHQ242=2', 'PHQ242=3', 'PHQ242=4', 'PHQ242=5', 'PHQ242=6', 'EMPST=-1', 'EMPST=1', 'EMPST=2', 'EMPST=3', 'EMPST=4', 'POVCAT=1', 'POVCAT=2', 'POVCAT=3', 'POVCAT=4', 'POVCAT=5', 'INSCOV=1', 'INSCOV=2', 'INSCOV=3']\n" + } + ], + "source": [ + "dataset_orig_panel21_deploy = MEPSDataset21()\n", + "\n", + "# now align it with the panel19 datasets\n", + "dataset_orig_panel21_deploy = dataset_orig_panel19_train.align_datasets(dataset_orig_panel21_deploy)\n", + "\n", + "describe(test=dataset_orig_panel21_deploy)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "AHoDpe7xHHWO", + "outputId": "d7ba8540-9d6a-4f83-8b03-02b04865bd4c" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 0.48375589333734254\n" + } + ], + "source": [ + "metric_orig_panel21_deploy = BinaryLabelDatasetMetric(\n", + " dataset_orig_panel21_deploy,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "explainer_orig_panel21_deploy = MetricTextExplainer(metric_orig_panel21_deploy)\n", + "\n", + "print(explainer_orig_panel21_deploy.disparate_impact())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sMz4MX7zHHWO" + }, + "source": [ + "Now, the logistic regression classifier trained on the panel 19 data after reweighing is tested against the panel 21 deployment data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "WMOZML07HHWO" + }, + "outputs": [], + "source": [ + "lr_transf_metrics_panel21_deploy = test(\n", + " dataset=dataset_orig_panel21_deploy,\n", + " model=lr_transf_panel19,\n", + " thresh_arr=[thresh_arr[lr_transf_best_ind]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "RbzA-DCMHHWO", + "outputId": "e0e077ed-939b-4363-c42b-b8febacee519" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.2200\nBest balanced accuracy: 0.7379\nCorresponding 1-min(DI, 1/DI) value: 0.2559\nCorresponding average odds difference value: -0.0143\nCorresponding statistical parity difference value: -0.0813\nCorresponding equal opportunity difference value: -0.0044\nCorresponding Theil index value: 0.0994\n" + } + ], + "source": [ + "describe_metrics(lr_transf_metrics_panel21_deploy, [thresh_arr[lr_transf_best_ind]])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_rMgf0GbHHWO" + }, + "source": [ + "Compared to the 2015 panel 20 deployment data results, the $|1 - \\text{disparate impact}|$ fairness metric shows a noticable drift upwards. While still within specs, it may be worthwhile to re-learn the model. So even though the model is still relatively fair and accurate, we go ahead and re-learn the model from the 2015 Panel 20 data." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OXg8g2XFHHWO" + }, + "source": [ + "### 9.2. Re-learning model (from 2015 Panel 20 data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "PUB2J2HzHHWO" + }, + "outputs": [], + "source": [ + "(dataset_orig_panel20_train,\n", + " dataset_orig_panel20_val,\n", + " dataset_orig_panel20_test) = MEPSDataset20().split([0.5, 0.8], shuffle=True)\n", + "\n", + "# now align them with the 2014 datasets\n", + "dataset_orig_panel20_train = dataset_orig_panel19_train.align_datasets(dataset_orig_panel20_train)\n", + "dataset_orig_panel20_val = dataset_orig_panel19_train.align_datasets(dataset_orig_panel20_val)\n", + "dataset_orig_panel20_test = dataset_orig_panel19_train.align_datasets(dataset_orig_panel20_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SbU22z6zHHWO" + }, + "source": [ + "**Train and evaluate new model on 'transformed' 2016 training/test data**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "iYr0J7UeHHWO" + }, + "outputs": [], + "source": [ + "RW = Reweighing(unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "RW.fit(dataset_orig_panel20_train)\n", + "dataset_transf_panel20_train = RW.transform(dataset_orig_panel20_train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "ycBpixZiHHWO", + "outputId": "76ca5700-77de-484f-98cb-66473480b633" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Disparate impact (probability of favorable outcome for unprivileged instances / probability of favorable outcome for privileged instances): 1.0000000000000002\n" + } + ], + "source": [ + "metric_transf_panel20_train = BinaryLabelDatasetMetric(\n", + " dataset_transf_panel20_train,\n", + " unprivileged_groups=unprivileged_groups,\n", + " privileged_groups=privileged_groups)\n", + "explainer_transf_panel20_train = MetricTextExplainer(metric_transf_panel20_train)\n", + "\n", + "print(explainer_transf_panel20_train.disparate_impact())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "dn80T84LHHWP" + }, + "outputs": [], + "source": [ + "dataset = dataset_transf_panel20_train\n", + "model = make_pipeline(StandardScaler(),\n", + " LogisticRegression(solver='liblinear', random_state=1))\n", + "fit_params = {'logisticregression__sample_weight': dataset.instance_weights}\n", + "lr_transf_panel20 = model.fit(dataset.features, dataset.labels.ravel(), **fit_params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "-m9vMblqHHWP" + }, + "outputs": [], + "source": [ + "thresh_arr = np.linspace(0.01, 0.5, 50)\n", + "val_metrics = test(dataset=dataset_orig_panel20_val,\n", + " model=lr_transf_panel20,\n", + " thresh_arr=thresh_arr)\n", + "lr_transf_best_ind_panel20 = np.argmax(val_metrics['bal_acc'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "KZABqErYHHWP", + "outputId": "4a47c4b5-926d-4223-affa-6bf9a36f016b" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAG4CAYAAAB8eJ7qAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3iUZdbH8e+dQGihhyq9IyggoNIEFRRdy1pBsa5lWXXV3dW1vOra1rJr3dVVEbGxq6iogIogKh1pAkoVCCV0QiAQQvp5/3gSDTEJE5jJMzP5fa4r1zDP3M89ZyzhzLmbMzNERERERPwU43cAIiIiIiJKSkVERETEd0pKRURERMR3SkpFRERExHdKSkVERETEd0pKRURERMR3SkpFRERExHe+JKXOuVuccxuccxnOucXOuQFHaH+lc26pcy7dObfDOTfWOde4SJtLnHMrnXOZ+Y8XhfZTiIiIiISnsuRazrm3nHNWzM/B8oy53JNS59ww4EXgCaAHMBeY7JxrUUL7fsC7wNtAF+C3wPHAfwu16QOMy7/WPf/xQ+fcKaH7JCIiIiLhp6y5FnAH0KTITyLwQeij/YUr7xOdnHPzgR/M7KZC19YCH5nZfcW0vwv4o5m1LHTteuDfZhaf/3wcUM/MhhRqMw3YbWZXhO7TiIiIiISXsuZaxdzfD5gN9DOzuaGL9HDlWil1zsUBPYGpRV6aCvQt4bY5QBPn3PnOkwAMB74o1KZPMX1OKaVPERERkahzlLlWUTcBK8ozIQWoVJ5vBiQAscDOItd3AoOLu8HM5jnnhuMNyVfDi/kr4NpCzRqX0GdjiuGcuxm4GaB69eo9ExISyvYpRERERHywefNmA74vdGmUmY0q9LzMuVZhzrnawOXAESuqwVbeSWmZOeeOB/4NPIZX/WwC/BN4DbjmaPrM/5c3CqBGjRq2adOm4AQrUoHt2LEDgMaNi/0uKCIiQeCcO2RmvUL4FlfhjaS/G8L3KFZ5J6XJQC7QqMj1RsCOEu65D1hgZv/Mf/5D/mqwWc65+81sS/69ZelTRIJs+PDhAEyfPt3fQEREKrajybUKuwkYb2YpwQ7sSMo1KTWzLOfcYmAI8GGhl4YA40u4rTreP9zCCp4XzImdl9/HPwu1GYK32kxEysG9997rdwgiIhXeUeZaADjnTga6AXeGLsKS+TF8/xzwrnNuAd4ippFAU+BVAOfcOwBmVjA0Pwl43Tn3B34Zvn8B+N7MNue3eRGY6Zy7F/gUuAg4HehfLp9IRBg6dKjfIYiIiKesuVaBm4G1Zja9/EL9RbknpWY2zjlXH3gAL8FcDpxrZgUTO1sUaf+Wc64mcBvwLJAKfAPcU6jN3PzFUI8DjwLrgWFmNj/Un0dEPElJSQA0b97c50hERCq2suZaAPm51nC8PMoX5b5PabipUaOGHTxYrgcWiESlQYMGAZpTKiISSs65dDOr4XccoRD2q+9FJDI88MADfocgIiIRTJVSVUpFREQkQkRzpbRcT3QSkeiVmJhIYmKi32GIiEiEUqVUlVKRoNCcUhGR0IvmSqnmlIpIUDzyyCN+hyAiIhFMlVJVSkVERCRCRHOlVHNKRSQo1qxZw5o1a/wOQ0REIpQqpaqUigSF5pSKiIReNFdKNadURILiiSee8DsEERGJYKqUqlIqIiIiESKaK6WaUyoiQbF8+XKWL1/udxgiIhKhVClVpVQkKDSnVEQk9KK5Uqo5pSISFP/85z/9DkFERCKYKqWqlIqIiEiEiOZKqeaUikhQLF26lKVLl/odhoiIRChVSlUpFQkKzSkVEQm9aK6Uak6piATFCy+84HcIIiISwVQpVaVUREREIkQ0V0o1p1REgmLhwoUsXLjQ7zBERCRCqVKqSqlIUGhOqYhI6EVzpVRzSkUkKF566SW/QxARkQimSqkqpSIiIhIhorlSqjmlIhIUc+fOZe7cuX6HISIiEUqVUlVKRYJCc0pFREIvmiulmlMqIkHx2muv+R2CiIhEMFVKVSkVERGRCBHNlVLNKRWRoJgxYwYzZszwOwwREYlQqpSqUioSFJpTKiISetFcKdWcUhEJijFjxvgdgoiIRDBVSlUpFRERkQgRzZVSzSkVkaCYNm0a06ZN8zsMERGJUKqUqlIqEhSaUyoiEnrRXClVUqqkVCQokpKSAGjevLnPkYiIRK9oTkq10ElEgkLJqIiIHAvNKRWRoPjyyy/58ssv/Q5DREQilIbvNXwvEhSaUyoiEnrRPHyvpFRJqUhQ7NixA4DGjRv7HImISPSK5qRUc0pFJCiUjIqIyLHQnFIRCYpJkyYxadIkv8MQEZEIpeF7Dd+LBIXmlIqIhF40D98rKVVSKhIUycnJACQkJPgciYhI9IrmpFRzSkUkKJSMiojIsdCcUhEJio8//piPP/7Y7zBERCRCafhew/ciQaE5pSIioRfNw/eqlIpIUEyYMIEJEyb4HYaIiADOuVuccxuccxnOucXOuQFHaB/nnHs0/55M59xm59zt5RUvaE6piARJ7dq1/Q5BREQA59ww4EXgFmB2/uNk59zxZra5hNveB5oBNwNrgUZAtXII92cavtfwvUhQjBs3DoBhw4b5HImISPQKZPjeOTcf+MHMbip0bS3wkZndV0z7s4APgbZmlhzsmAOl4XsRCYpXXnmFV155xe8wREQqNOdcHNATmFrkpalA3xJu+y2wEPizc26Lc26tc+5fzrn4EIb6KxV++L5evXpamCESBPfeey+ghU4iIiFWyTm3qNDzUWY2qtDzBCAW2Fnkvp3A4BL6bAP0BzKBS4A6wL+BpsClwQg6EBU+KU1JSfl51bCIiIhImMsxs15B7jMGMOBKM0sFcM7dBkxxzjUys6IJbkho+F5EgmLs2LGMHTvW7zBERCq6ZCAXb6FSYY2AHSXcsx3YWpCQ5luV/9giuOGVTEmpiATF6NGjGT16tN9hiIhUaGaWBSwGhhR5aQgwt4Tb5gBNi8wh7ZD/uCm4EZZMq++1+l4kKLKzswGoXLmyz5GIiESvAFffDwPexdsKag4wErgB6GJmm5xz7wCY2TX57ePxKqPfAQ/jzSl9DVhlZpeF6KP8ii+V0rJs6Oqce8s5Z8X8HCzUZlAJbTqVzycSkcqVKyshFREJA2Y2DrgTeABYireI6VwzK6h6tqDQsLyZpeEtgqqNtwr/A2AG8LtyDLv8K6X52ftYDt/Q9Xqg2A1dnXO1+fXmrXOAmWZ2fX6bQcC3QBcgpVC73WaWW1o8qpSKBMdbb70FwHXXXedrHCIi0Syajxn1Iykt04auxdzfDy+Z7Wdmc/OvDcJLShuUddNXJaUiwVGwi4W2hBIRCZ1oTkrLdUuoQhu6PlPkpdI2dC3qJmBFQUJaxCLnXBVgJfC4mX171MGKSJkoGRURkWNR3nNKS9vQtfGRbs4fyr8ceL3IS9uBP+Bt+HoxsAb4uqS5qs65m51zi5xzi3Jycsr2CUREREQk6CJt8/yr8BLpdwtfNLM1eIlogXnOuVbA3cCsop3kn3wwCrzh+xDFKlKhvP66913xpptuOkJLERGRXyvvSunRbOha2E3AeDNLOWJLmA+0L1t4InK0xo0bx7hx4/wOQ0REIlS5VkrNLMs5V7Ch64eFXhoCjC/tXufcyUA3vC0OAtEdb1hfREIsOS2Tax9/g+qVY8nNM2JjnN8hiYhIhPFj+P454F3n3AJ+2dC1KfAqQNENXQu5GVhrZtOLduicuxPYCKwA4vCG+X+LN8dURELgQEY2U1fsZMKybcxZl0xunjcTZsycDTx6YRd6tqznc4QiIhJJyj0pNbNxzrn6eBu6NgGW8+sNXQ/jnKsJDAceLaHbOOCfQDPgEF5y+hsz+yLI4YtUaJk5uUxfs5uJS7cxbdVOMnPyaFa3GiMHtiFtyRfsOpDBkrRTuOSVeVxyUjPuOacjDWtW9TtsERGJADpmVPuUipQqN8/4LnEPE5du44vl2zmQkUP9GnGcd2ITLuh+HCe1qINzjnPOOQeAjz6dxEvfrmP0rESqVorlziEduKZPSyrH+nKAnIhIVInmfUqVlCopFSlWbp4xfvEWXpj2E9tSM4ivUomzuzTmwu5N6du2PpWOkGQm7k7j4UkrmfnTbjo2qsnDF3ShT9v6ZYrBzHBO81NFRAooKY1iSkpFDmdmTF+zm6cmr2bNzgP0aFGHmwa04YxODalaObbMfX21ciePfraSLXsPcX63ptx/biea1D785ODUQ9kk7k5j/e6DrN+dxvpdaazfnUZSyiF6tKjD7we2YVCHhsRoAZWIVHBKSqOYklKRXyzfmsoTX6xi7vo9tKxfnXuGduKcro0Dqla++OKLANxxxx2/ei0jO5dXpq/nlRnrqRTjGHFKCw5m5eYnnwdJTsv8uW2lGEerhBq0SahB0zrVmLJiB9tTM2jfMJ6bBrThwh5NqVKpbMmxiEi0UFIaxZSUisCWvek8M2UNny7dRt3qlbnjzPZceUpL4ioFPg/0ggsuAGDixIklttm8J53HPl/JVyt3UrtaZdo1jKdtgxq0bRBPmwben5vXq37Y/NPs3Dw++2Ebo2ZuYNX2/TSsWYXr+rVixMktqV298tF/aBGRCKSkNIopKZVwl5aZw9erdtKkdjVObFa7zEPopUlNz+bl6et4a85GnIMb+rdm5KC21Koa2mQvPSuHapVjyzRf1MyYvS6ZUTMTmbU2mRpxsQzr3YLf9W9Fs7rVQxitiEj4UFIaxZSUSrhKSknn7bkbGbcwiQOZOYA3tN3luNr0bFGXXq3q0rNlXRrVKtuWS+lZOWzbl8H0Nbv49zfr2J+RzcU9mvGXszrQtE61I3cQBlZsS2X0rA1MWrYNA847sQm3nt6ODo1q+h2aiEhIKSmNYkpKJZyYGd9v3ssbszfw5fIdxDjHuSc04apTW3IgI5tFm/ayeNNeliXtIzMnD4Dj6lSjZ8u6P//UqlqZbamH2J56iG37Mtieeojt+zLYlprBtn2HSD2U/fP7DWifwH3ndOb4prWOOfZnnnkGgLvuuuuY+wrUtn2HGDN7A+8t2EyMc3x8S1/aKzEVkSimpDSKKSmVcJCdm8fk5Tt4Y/YGliXto1bVSlx5Skuu7dvyVyvVAbJy8li1fT+LNu3l+017WbQphZ37M4vpGWpXq0yT2lVpWqfaYY/tGsZzYrM6QfsMl1ziHaA2fnypJwaHxLZ9h7jgpTnUqBLLp7f0o26NuHKPQUSkPCgpjWJKSsVPqenZvLdwM2/P3cj21AxaJ9Tgd/1acUnPZlSPC/zANTNjW2oGizftJSMrlyZ1qtKkdjWa1qlapn4i2feb9zJ81Hf0bFGXd244WZv1i0hUUlIaxZSUSnkzM5Yk7ePDRUlMWLqN9Kxc+rSpzw39W3NGJ+3FeSw+/n4Lf/5gGVed2oLHf3uC3+GIiARdNCelFaOEIhIGktMy+eT7rXywKIm1u9KoVjmW805swnX9WtGlaW2/wztmTz31FAD33nuvbzFcfFIzftqZxqsz1tOhUU2u6dPKt1hERKRslJSKhFBObh4zftrNB4uS+HrVLnLyjJNa1OGpi0/gNyc2oWaIt14qT0uXLvU7BADuPrsj63Yd4JFJK2mTEE//9gl+hyQiIgHQ8L2G7yUEEnen8eHiLYxfvIVdBzJJiI/j4pOacVnPZlodXg7SMnO45D9z2Z56iAm39ad1QlSOdIlIBRTNw/dKSpWUShBl5eTxp3FL+fzH7cTGOE7v2IDLejXnjE4NtfCmnCWlpHPBS7OpWyOOT27pR+1q0VOVFpGKS0lpFFNSKsFiZvzlg2V8vGQrfzyjHVef2pKGZdzYPpI99thjADz44IM+R/KL+Yl7GDF6Pn3bJTDm2l5U0hcDEYlw0ZyU6je0SJD8c8oaPl6ylb8M6cBfzupYoRJSgDVr1rBmzRq/wzjMKW3q8/hvuzLzp9088cVqv8MREZFSaKGTSBC8M28j/5m+nitPacFtZ7TzOxxfjB071u8QijX85Bas2XmAMXM20KFRPMNPbuF3SCIiUgxVSkWO0ZfLd/C3iSsY3LkRj17QBee0z2i4+b9zOzOgfQIPTljO/MQ9focjIiLF0JxSzSmVY7BwYwojRs+nS9Na/O/GU6kWF+t3SL556KGHAHj00Ud9jqR4qYeyuejlOSSnZXJm50a0axhP+4bxtG9Uk+Z1q2m+qYhEhGieU6rhe5GjtG7XAW58exHN6lTjjWt7V+iEFCApKcnvEEpVu1plxlzXm8c+W8n8xD18smTrz6/FVYqhTUKN/ES1Ju0beQlry/o1iKukZFVEpDyoUqpKqRyFnfszuPg/c8nMyeOTW/rSvF51v0OSMjqQkc363QdZu/MA63alsXZXGut2pZG0N52CX4uVYhwt61f/OVFt19D7adsgnqqVS/4SkpObx/bUDDanpJOUku497j1E8oFMureow6AODTipZV1tEyYiZRbNlVIlpUpKpYz2Z2Rz+avzSEpJZ9zv+9D1uMg/IlR+cSgrl/W701i7Kz9Z3ZnGut1pbNqTTm6e9/vSOWhetzrtG8bTrlE8tapWJiklnaS9XgK6bV/Gz23BS26b1a1GrWqVWbltPzl5Rs0qlejXLoFBHRswsGMDmtSu5tdHFpEIoqQ0iikplbLIysnjujcXsGBDCm9e35sB7Rv4HVLYuO+++wB48sknfY4kNDJzctmYnJ5fVT3A2l1prN+VRuLug2Tl5pEQX4Xm9arRol51mtet7j3Wq07zetVoUrsasTHeArj9GdnMXZfM9DW7mb5mNzv2ZwDQqXFNBnZswMAODejVsp6mDYhIsZSURjElpRKovDzjTx8sZcLSbTx3eTcuPqmZ3yGFlZtvvhmAUaNG+RxJ+crJzSM7145qTrGZ8dPONKav2cX0NbtZtCmF7FwjvkolerasS/fmdejeog49mtehTvW4EEQvIpFGSWkUU1IqgXryi1W8NjORe4Z24g+D2vodjkShtMwc5qxLZsZPu1m8cS8/7Trw8/zW1gk16N68Dj1a1KF78zp0alxL1VSRCkhJaRRTUiqBmLhsG7e/t4Rr+rTkEe1FKuUkLTOHH7bsY8nmfSxN8h6T0zIBb8eArk1r0aNFXXq0qEOPFnVpWruq/tsUiXJKSqOYklI5ku2phzj7+Zm0bRjPh7/vo/0sS3DXXXcB8Mwzz/gcSfQyM7buO8TSpH0s3byPJUn7+HFrKlk5eQA0qFmFHs29BLV78zqc2Kw2Napo5z+RaBLNSal+W4mUIi/PuOvDZeTkGc9f3l0JaSkOHTrkdwhRzzlHs7rVaVa3Oued2BTwFt+t3rH/50rqks17mbpyJwAxDjo2rkX35nU4qUUdzu7amFpVK/v5EURESqRKqSqlUoo352zgkUkrefLiE7hCZ6ZLhEg5mMWyJC9BXZLkDf0fyMihelwsF/U4jmv6tKJj45p+hykiRyGaK6VKSpWUSgnW7jzAef+eTf92CYy+tpfm6knEysszftyaytjvNjFh2TaycvLo06Y+1/ZtyeDOjTQCIBJBlJRGMSWlUpysnDwufmUO2/ZlMOXO02hQs4rfIYW9O++8E4AXXnjB50ikNCkHsxi3MImx321i675DNK1dlRGntmR47+bUj9d/5yLhLpqTUn09FinGv75ey/Kt+3ny4hOUkEpUqVcjjj8MasvMv57Oa1f3pHWDGvxzyhr6PPUNf/lgGT9s2ed3iCJSQalSqkqpFLF4UwqXvTqPS3s24x+XdvM7HJGQW7vzAO/M28T477eQnpXLwA4NePLiE2haR0efioSbaK6UKilVUiqFHMzM4ZwXZ2EYk+84jXhtpyMVyP6MbN5fsJnnv1pLpRjHQ+cfz6U9m2k+tUgYieakVMP3IoU8/vlKkvam89zl3ZWQltGtt97Krbfe6ncYcgxqVa3Mzae15cs7B9C5SS3u/ugHbnx7Ebv2Z/gdmoiUkXPuFufcBudchnNusXNuQCltBznnrJifTuUZs5JSkXxfrdzJewuSGDmwLb1b1fM7nIhTrVo1qlXTcG80aFm/Bu/ffCoP/KYzs9clM+T5mUxYupWKPrImEimcc8OAF4EngB7AXGCyc+5Iext2AZoU+lkbyjiLCmj43jlOMWN+OcRT7jR8LwDJaZmc/fxMGtaqyoRb++lMcZF863encdeHy1iyeR9DuzTm8Yu6kqBV+iK+CWT43jk3H/jBzG4qdG0t8JGZ3VdM+0HAt0ADM0sOcsgBC/Rv3nnOscw5/ugcdUMakUg5MzPuHf8jBzJzeGFYdyWkIoW0bRDPRyP7cs/QTnyzehdnPT+TyT9u9zssESmBcy4O6AlMLfLSVKDvEW5f5Jzb7pz72jl3ekgCLEWgldI8oKBhJvAJMNqMb0MYW7lo3ry5vfvuu36HIT7am57Flr2HaFK7GgnxcX6HE7EKzry/6667fI5EQiUzJ4+klHQOZedSp1ocTetUJTZGi6BEytPpp5+eBfxY6NIoMxtV8MQ51xTYCgw0s5mFrj8EjDCzjkX7dM51BE4HFgJxwNXAyPw+ZoXkgxQj0JUczwGXA82AqsBwYLhzJAJvAG+ZsSM0IYZWSkoKgwYN8jsM8cmmPQe59cVZnNisEf+94hRi9BfsUZsyZQqA/n+Kctm5ebwyfT2PfL2WujVyeXFYd/q2S/A7LJGKJMfMegWzQzNbA6wpdGmec64VcDdQbklpmbaEco7+wBXAJUDD/MsG5AITgL+bsTTYQYaS5pRWXIs2pvCH/35PZnYuk+88jeO0J6NIwFZsS+X295aQmHyQ289oz+1ntlfVVKQcHGlOaf7wfTpwhZl9WOj6y0BXMxsY4Pv8DRhuZp2PNeZAlWnynBmzzbgV6A3MKPRSJeBiYL5zXBjE+ESCzsx497tNXPH6d1SPi+XDkX2VkIqUUZemtZl4W38u6nEcL369lhGjv2Onto4S8Z2ZZQGLgSFFXhqCtwo/UN2Bcp1AXtZK6RC8OQbn4SWiBV+LlwC1gLbASjO6BjnOkFGltGLJyM7loQnL+WDRFk7v2IAXhvWgdvXKfocVFa6//noA3nzzTZ8jkfL20eItPPjpcqrHxfL8sO6c1qGB3yGJRK0AV98PA94FbgHm4OVuNwBdzGyTc+4dADO7Jr/9ncBGYAXenNKrgHuBS8zs4xB9lF8JaE6pc9wN3Ay0KbgE5OEN2T9vxiznqIE3sbZDKAIVOVbbUw8x8t3FLNuSyu1ntOPOwR00hzSImjdv7ncI4pNLezajW7Pa3Pa/JVwzZgG3DGrLn4d0oFKsdrIQ8YOZjXPO1QcewNtvdDlwrpltym9SdL/SOOCfeGuHDuElp78xsy/KKWSg7KvvHbAfGAP8y4yNRdqtBtqbERv8UENDldKKYX7iHm793/ccysrl2cu7M7RrY79DEok6h7JyeWTSCt5fmESvlnX51xU9aKqpMSJBFc3HjJYlKU0E/g28YUZaCe2aApXN2FTc6+FISWl0MzPenruRxz9fRYv61Rl1dU/aNazpd1giUW3C0q3c//GPVK4Uw3OXd+OMTo38Dkkkaigp9RYvTTQj6s6YU1IavTKyc7n/kx/5+PutDO7ciOeGdaNWVc0fDZWrrroKgLFjx/ociYSDxN1p3Pa/Jazcvp+bT2vDn4d0oGrliBlEEwlb0ZyUBrpP6XSguXOkm/Hz8VPOkQBUB1LNSA1BfCJHZcvedEaOXczyrfv50+AO/PGMdpo/GmIdO/5qP2apwNo0iOfjW/ry989XMWpmIp8s2cqN/Vsz4tSWxFcJ9K8eEalIAq2Ujgd+C/zJjH8Vun4b8CLwiRmXhizKEFKlNPrsSM3gwpdnk56ZywvDu3NmZw0divhp3vo9vPztOmavS6ZW1Upc16811/dtRd0aOkFNpKyiuVIaaFK6BW/1Vgsztha63hTYAmw1IyKX3iopjS4Z2blc/to81u9K46M/9KVzk1p+hyQi+ZYm7eM/365j6sqdVI+L5cqTW3DjgDY0rl3V79BEIkbYJqXe8aaN8RbF78Bs6xHu+HUXASalmXhD/bXMOFjoeg3gAJBlRkT+VlFSGj3MjNvfX8pnP2xj1NW9GHK8KqTlafjw4QC8//77Pkci4e6nnQd4dfp6JizbRqxzXNLzOH5/WltaJYTf37Mi4SasklLnTgZuAoYCTYu8uhOYAozGbE4g3QW6idyB/MezilwveF7sanyR8vTyt+uYtGwbfz27kxJSH3Tv3p3u3bv7HYZEgA6NavLcsO5Mv2sQl/duxvjvt3LGs9O5/b0lrN154MgdiIi/nOuNczOAecDvgOPwKqSFfxoD1wAzcW4WzvU+YrcBVkqnAoOBVOBZYBXQGfgzUBuYZsbZgX8WdwtwN96UgBXAnWY2q4S2bwHXFvPSYd8UnHMDgeeALsA24B9m9uqRYlGlNDp8uXwHI8cu5qIex/Hc5d1wTouaRCLFrv0ZvDF7A2O/20RmTh439G/N7We2p4YWRIn8SlhUSp0rvH/9DrxTo5bBz4vhE4BuQD+85BQgD7NS/6cONCm9GPgoP4DDXsq/dqkZnwT2OdwwYCze0Vez8x+vB443s83FtK8NFN19eQ4w08yuz2/TGu+0gjHAf4D++Y/DzWx8afEoKY18K7ft55JX5tKxcU3ev/lUbTsjEqFSDmbx9OTVjFuURNPaVXno/C6c3aWRvmSKFBImSWkOMA54HZhBScmk9z/vQLxTQS/DrNR9GQNKSr1+eQavMlrUM2b8NaBOvPjmAz+Y2U2Frq0FPjKz+wK4vx9eMtvPzObmX3sauNjM2hdqNxrvjNc+pfWnpDSyJadlcuFLc8jNMybe1o+GtSJyanNUuOSSSwAYP77U74EiR7RoYwoPfLqc1TsOcHrHBjxyQVda1K/ud1giYSFMktJ2mK0L9j0Bj42YcZdzjAMuABrhTWCdaMbCwONxcUBP4JkiL00F+gbYzU3AioKENF+f/D4KmwJc65yrbGbZgcYokSMzJ5eR7y5mz8FMPvx9XyWkPuvTp9TvfyIB69WqHp/9sT9vzd3I81/9xJDnZ3Dr6e34/cA2VKmkkRAR35U1IQ3wnoArpcHgvO0CtgIDzWxmoesPASPMrNTdt/OH8rcD95nZi4Wu/wSMNbNHC107DZgBNKOQvG8AACAASURBVDWz7UX6uRmvlExcXFzPzMzMY/5sUr7MjL9+9AMfLt7Cy1eexG9ObOJ3SCISAjtSM3jss5V8/uN2WifU4LELu9K/fYLfYYn4JiwqpSEScKXUOSoB5wId+fUcT8x49Fc3Bd9VeDsGvHssnZjZKGAUeMP3QYhLytkbszfw4eIt3HFmeyWkIlGsce2qvDziJC7/aTd/m7Ccq96Yz3knNuHB846nkUZHRPzhXGIZWhtmbQNpGFBS6hwN8Y4aLa2SGUhSmgzk4g3/F9YIb/XWkdwEjDezlCLXd5TQZw6/rASTKPHt6l088cUqzj2hMXec2f7IN0i5uOCCCwCYOHGiz5FINBrYoQFf3nkar81I5OXp6/hm9S5GnOJtvq/kVKTcteLXi9+LU7AgPiCBVkofATqV8npAb2hmWc65xcAQ4MNCLw0BSl0d4bwNWrsBdxbz8jzgoiLXhgCLNJ80uqzbdYDb31tC5ya1eOaybjrPPoyceeaZfocgUa5q5VjuGNyeC7s35flpP/HG7A28PXcTl/ZqxsjT2moxlEj5CvpfwIFuCbUeLyt+C2/7JgPuAP6Y/+enzHgroDf0toR6F28rqDnASOAGvJXym5xz7wCY2TVF7hsNnGZmHYrps2BLqNeB1/D2xfoPcIW2hIoe+zOyOf/fszmYmcvE2/rRtM6vZpGISAWyac9BXpuZyEeLtpCTl8f53Zryh0Ft6dRYxwtL9AqLOaXOtSxTe7NNAXUbYFKaAVTG2wB1J946k1jn6AL8CDxkxuOBxpa/ef5f8TbPXw78qWDhk3Nuuhe/DSrUvibeAqdHzewfJfQ5EHieXzbPf1qb50eX56au4V/frOOjkX3o1aqe3+GISJjYWWjz/fSsXAZ3bsQtp7flpBZ1/Q5NJOjCIikNkUCT0oNAVbzE9BDesH/j/D/vB7aY0SKEcYaMktLIsC89iwFPf8uADgn8Z0RPv8ORYpxzzjkATJ482edIpKLaezCLt+dt5M05G0k9lE2fNvW59fR29GtXXxvwS9QIu6TUuTrAmXgj6gAbgK8xSy1rV4HOKd2Dd65pbbxFRc2A/wIZ+a/r66iE1JjZGziQmcPtWtgUts4//3y/Q5AKrm6NOO4c3IGbBrThvQWbGTUzkavemM8ZnRryxEUn0Li2FkSJBJVzDwD3AEUndKfj3JOYPVGm7gKslH4FnAGcgjeXdASHL26abcbAsrxxuFClNPztS8+i/9PfcpqqpCJSBpk5ubw7bxPPTF1D5dgYHjrveC7t2UxVU4loYVMpde4FvLVFUPyiJwNexKy400CLFRNgu9fx9vWsircSf3d+AA5vy6XiVsSLBMUbszeQlpnDHWf+ao2biEiJqlSK5cYBbfjyjtPo3LgWd3/0A9e/tZDtqYf8Dk0ksjnXF7i94BnwEzAR+AxYV+j6HTh3asDdHs2JTs5RCzgdbx/QOWbsK3MnYUKV0vBWUCUd2KEBL484ye9wpBSDBw8GYNq0aT5HIvJreXnGu99t4qnJq6kU43jgvM5c3qu5qqYSccKiUurcm8C1wD7geswmFHn9EuANoCbwNma/C6TbI84pdY4qwMr8p78xY7UZ+4EJpdwmEhSjZ23gYJbmkkaCYcOG+R2CSIliYhzX9m3F6R0b8tfxy7hn/I989sN2nrrkRI7T9nIiZdUbb3j+nl8lpABm43GuAd72nL0D7TTQOaX78LLdamZkBdp5JFClNHztPZhF/6e/YVCnhrx8paqkIhIceXnGf+dv4snJq4lxjv/7TWeG91bVVCJDmFRKU/AWvzfBbFcJbRriLY7fi1n9QLoNdE5pwXhctwDbixyz0bMTSc/O1VGiIhJUMTGOq/u0Ysqdp3Fis9rc9/GPXP3GAjbvSfc7NJFIEQ9QYkJ6+Gs1A+000Eppf+ATIBX4P2Ap3h6lhd6bzYG+aThRpTQ8FVRJT+/UkJdUJY0IgwYNAmD69Om+xiFSFmbG/xZs5onPV5GRk8dvTmjCjQNac2KzOn6HJlKsMKmU5uEN3z9yhJYPA4ZZbCDdBrpP6cz8N68H/K+Y160MfYkc0euzVCWNNNddd53fIYiUmXOOEae05IxODRkzewPvL0hi4rJtnNyqHjcMaM3gzo2IjdGwvkgJ/hbMzgKtlOYdoYmZEVAWHG5UKQ0/KQezGPD0N5zRuRH/vqKH3+GISAVyICObDxZt4c05G9iy9xAt61fnd/1ac2nPZtSootqL+C+MKqWBCrhSGmhS+uYR39G4PpA3DDdKSsPP01+u5tUZ65l652m0bxTwVBTxWXZ2NgCVK1f2ORKRY5eTm8fUlTsZPSuR7zfvo1bVSlx5Skuu7duSJrW1Wl/8EyZJ6cMcfohS6cyONMzvdXs0+5RGEyWl4SUlfy7pmaqSRhzNKZVotXjTXsbM3sDk5duJcY7zuzXlz0M60Lxe0ZMVRUIvLJLSENFYhISVUTMTOZSdyx1ntvM7FCmjG2+80e8QREKiZ8u69GxZl6SUdN6au5H/zd/M5z9u54b+rbn19HbEa1hfKhrnFgMfA59gtvJIzQPuNsDh+zFHaGJm3BCckMqXKqXhY09aJgP+8S2DOzfiX6qSikiY2pGawT+mrObj77eSEF+Fv57dkUt6NtOCKCkXYVEpdW4n0ABvCH89XoL6KWbfHVO3ZVjoVFJDhxY6SRA8NXk1r81cz1d/Gki7hvF+hyNllJ7u7fFYvbqGNKViWJq0j8c+W8niTXvp0rQWD513PKe0CWiPcJGjFiZJqQP6ARcDvwVa4eWJO4BP83++wSy3TN1q9b2S0nBQUCUdcnwjXhyuKmkk0pxSqYjMjEk/bOepL1axLTWDc7o25r5zOtOivr6cSWiERVJalHPd+CVBPQEvQU0FPsPb534KZkc8nSLQpLRlkUuVgDbAg0AP4DwzZpQl/nChpDQ8PDl5Fa/PTGSqqqQRa9y4cQAMGzbM50hEyl9Gdi6vz0zkP9PXk5tn3DCgNbcMakvNqtqNQoIrLJPSwpxrg5egXgScgnd6aDpmR/zL/ZhW3ztHPJAMfGrG8KPuyEdKSv2XnJbJgKe/5ewujXhBVVIRiWA792fwjy/XMP77LSTEV+Hx33ZlaNfGfoclUSTsk9LCnGuEVz39LWbnHKl5zDG+XSW8Eu3QY+xHKrA352wgMyeX287Q6U2RLDU1ldTUVL/DEPFVo1pVefbybky4tR9N61Rl5NjFPDl5FTm5ZdlrXCRKmO3E7LVAElI4ttX3VfEmuTYHdpkRkV8FVSn1V16e0f/pb+jUpBZjruvtdzhyDDSnVORwmTm5PDJpJf+bv5m+bevz7yt6UD++it9hSYSLmEqpc/WB3UAeZgHtmxbo5mrXUfzq+4L9L74IsB+RwyzevJdtqRn8dWgnv0ORY3T77bf7HYJIWKlSKZYnLjqB7s3r8MCnyzn/37N55aqedGtex+/QRMpTwHullWXH3+I6zQTeA+4sQz8iP5u4dBtVK8cw5PhGfocix+jiiy/2OwSRsHR5r+Yc36QWv393MZe9Oo9HLuzCFSe38DsskaPn3C0BtCpzNfdoV98DZJqxo6xvGG40fO+fnNw8Tnnia05tW5+XrzzJ73DkGCUnJwOQkJDgcyQi4WnvwSxuf38Js9YmM6xXcx65sAtVK0fkborio7AYvneutP3rD2sJGGYB/YceUKXUjE2BtBMpiznr97DnYBYXdGvqdygSBJdeeimgOaUiJalbI463rj+Z57/6iZe+XceqHfv5z4iTaFZXe5pKxArqMWYBJaXOMRQ4GVhixqRC1y8AugMLzPgymIFJ9Ju0bBs1q1ZiUMcGfociQfCXv/zF7xBEwl5sjOOuszvSrXkd/jxuKef/ezb/uqIHA9rr96BElCygMvAqsLOENtWBu8vSaaDD93PxNkA9x4ypha6fAUwD5pnRryxvHC40fO+PjOxcej8+jbO7NuaZy7r5HY6ISLnbkHyQke8uZu2uAwzr3YIOjeJpVrc6x9WpRrN61ailjfelGIEO3ztv3ufdQBNgBXCnmc0K4L7+wHRgtZl1LaHRd0BvYDhmH5bQpmD1fXCH74GCpdHzilxfkP/YOcB+RACYvmY3BzJzNHQfRXbs8KaYN24ckbvDiZS71gk1+OTWvjz46Qo+WbKFjOzD9zKtWbXSL0lqXe+nbYN4BnZoQExMUEdNJco454YBLwK3ALPzHyc75443s82l3FcXeAf4GjiulLeYjzeCfgpQfFJ6NHEHWCnNwCvTNjNje6HrTYCtQJYZVYMVVHlSpdQft/73e+Zv2MN3951JpdhjPcNBwoH2KRU5emZGysEstuw9xNZ9h9iyN52tew8Ven6ItMwcAE5uVY9/XHoirRLCf6tKCb5AKqXOufnAD2Z2U6Fra4GPzOy+Uu77GFiGN1f00lIqpQl4Ses+zIpfd+ScA7xtJkpqU0SgldLt+R3/H3Bboev35z9uC7AfEdIyc5i2aifDejdXQhpF7r33Xr9DEIlYzjnqx1ehfnyVYvcxNTP2H8physodPPbZSoa+OJN7hnbi2j6tVDWVwzjn4oCewDNFXpoK9C3lvluARsDjwIOlvolZMt4x86W1MSjbQvlAk9JpwA3AH5zjLGAN0BFoi7clwLSyvGk4qVevnio75WzfoWxu65xF22o7mT699P+mJXJUreoNluj/J5HQaQg8PyCOLfsOcWDjD7y1bSXN6lYjrpK+4FcglZxziwo9H2Vmowo9TwBi+fUCpJ3A4OI6dM6dAPwNONXMcr0iZ/kLNCl9ChiGtxFq2/wf8Mq7afmvR6SUlJSfhx2lfFz/5gJ+2hnLrCtO1zf8KJKUlARA8+bNfY5EJPqZGeO/38ojk1aQnZupqmnFkmNmvYLVmXOuCjAOuMvMNgSr36MR0FcrM9YDZwGr8RLRgp+VwFlmJIYsQokqew9mMWttMud1a6JfnlHm6quv5uqrr/Y7DJEKwTnHpT2b8dWfBtKnTX0embSS4aO+Y2Oy1kgIyUAu3lB8YY2g2EOPmuAtWH/TOZfjnMsBHgK65D8/K6TRFhLwMaNmfAd0cY62eB9sZ36yKhKwL5ZvJyfPtOo+Cj3wwAN+hyBS4TSuXZUx1/X+uWqquaZiZlnOucXAEA5fGT8EGF/MLVuBE4pcuyW//UXAxhCEWayAVt9HM62+L1/DXptHclom0/48EL/mrIiIRKMdqRnc9/EPfLtmNye3qseNA1rTuUktmtWtpt+3USTA1ffDgHfxkss5wEi8tUFdzGyTc+4dADO7poT7H6a01fchEuiJTv8FhgMPm/FYoesPAg8D/zND43ZSqh2pGSzYmMKdZ3bQL8golJjozeJp06aNz5GIVEyFq6aPTlrBze8uBqBmlUp0alKTTo1r/fzYsXFN4qsEPFgqEcbMxjlv8/oH8IbnlwPn2i9bM7XwLbhSBLpP6Qa8D9DOjA2FrrcCEoFNZrQOVZChpEpp+Rk9K5HHP1/Ft3cNorX214s62qdUJHwcyspl1Y79rN5+gNU79rNqu/fnA/l7nQK0rF+dTo1r0rtVPYb1bk5NnSAVEQI90SkSlXXz/HgzDhW6Xg04CGSaUS1kUYaQktLyc8FLszGDSX/s73coEgIzZswAYODAgT5HIiLFMTO27jvEqu0HWL19P6t3HGDV9v0kJh+kZtVKXH1qS67v15oGNav4HaqUImKSUue+yf/TQuBBzLKOeEuASek+oCYwxIxvCl0/A2+P0lQz6h5V0D5TUlo+NiQf5PRnpvN/53bmptM0vCsiEi5+2LKPV2esZ/LyHVSOjeHyXs24eUBbWtSv7ndoUowISkrz8PayB/gBuBKzVaXeEmBSOgvoB2zBO8VpFd72AX8HmgFzzDjt6CP3j5LS8vGvr9fy3Fc/Me++M2hSOyKL6nIEa9asAaBjx44+RyIiRyNxdxqjZiby8fdbycnL47wTmzJyYFuOb1rL79CkkAhLSgtLxyy+1FsCTEpvAF7nl4z355fyr91kxpgyhBo2lJSGnpkx5PmZ1Ksexwcj+/gdjoSI5pSKRIed+zMYM3sDY7/bxMGsXAZ1bMAfBrbl5Nb1tEg1DERQUtoy/08JwFBgKGYDSr0l0C2hnOND4JJiXvrQjGFliTOcKCkNvZXb9nPuv2bx2G+7cvWpLY98g0SkuXPnAtC3b4lHK4tIBElNz2bs/E2Mmb2BPQezOKlFHe4/tzO9WtXzO7QKLWKS0qNQpn1KneNy4HzyN88HJpodtjFrxFFSGnpPTV7N67MSWXD/mdSP1wR6EZFIkpGdy4eLkvjP9PVsT83ggm5Nue/cTpqK5RMlpaV14IgHLjHj7eCEVL6UlIaWmdH/6W9p1zCet393st/hSAgtX74cgK5dy3WvZREpJ+lZObw6fT2vzkwk1jluPb0tNw5oQ9XKsX6HVqGERVL6y8r6QBhmZwbU7dEkpc4Rgzc/4Gq8ymlVs8CPLA0nSkpDa/GmvVzyylyevawbl/Rs5nc4EkKaUypSMSSlpPP3z1fx5YodNK9Xjf8793jO7tJI803LSZgkpYVX1pfaEi8pDeibS1mH73vjJaLD8Cau/vyGZkTkVyUlpaH18MQVvLdgM4seGKyNmaPcwoULAejdu7fPkYhIeZi7LpmHJ63gp51p9G+XwN/OP572jWr6HVbUC6OkNFDBS0qdozVwFTACaF9wuVCTQ8CnZowoQ4BhQ0lp6OTk5nHqk9/Qu1VdXrmqp9/hiIhIkOXk5vHf+Zt5duoaDmblcvWpLfnT4A7Urq4iRKiESVJatlNSzGYE0qzEIXfnGImXjBbew6dobd6ARmaklSk4qRC+S0whOS2TC7o19TsUKQdLly4FoHv37j5HIiLlpVJsDNf2bcX53Zry7NQ1vDNvIxOXbWNw54bUq1GF+jXiqFcjjnrxcSTUqEK9+Djq14jTPNRIF2CSWVYlVkqdo2C+QEEimoV3etN4YD0wnQgeti+gSmno/PWjZXzx4w4WPTBYv4AqAM0pFZGV2/bzjymrWbV9PykHs8jOLT7HqB4XS70acXRqXIsHz+tMy/pRuZg8JMKiUlqYN5n4JKBV/pUNmH1/VF0FkJQCjAHuNmNf/mtdgB9RUiolyMrJo9fjXzH4+EY8d7kqZxWBKqUiUpiZcSAzhz1pWaQczMx/zGLPwfzHtEy+XrWLnDzjnqEduaZPK2JitFjqSMIqKXXuKuBJoOiQ6FbgXsz+V5buAl0x/zvgfOf4BK9SmlyWN5GKZ17iHvZn5HBu1yZ+hyLlRMmoiBTmnKNW1crUqlqZ1gnF51DbUw9x7/gfeXjSSiYv38E/L+1Gi/rVyzlSOSrO3Q08VfCsyKvNgHdxrglmzwbcZSmV0ieAK4EWhS4XND4EVEeVUinB/Z/8yKdLtvL9g0M0dF9BaPW9iBwNM+PDRVt47LOV5Jpx7zmduOqUlqqaliAsKqXOdQWW4iWjDjiIN7UzBmiDlyMC5ALdMFsZSLcxJb1gxv1mtAIGAaOB1EJvXp38BNU5tjj3c6YsQm6eMXXFTk7v1FAJaQVy9913c/fdd/sdhohEGOccl/duzpQ/nUavVvV4aMIKrhz9HZv3pPsdmpTsD3g5ZCbwJ6AOZt0xOxGoA9yNtxYpJr9tQEpMSguYMdOMm/GOFr0MmABk80uC2jT/zQPmnLvFObfBOZfhnFvsnBtwhPZxzrlH8+/JdM5tds7dXuj165xzVsxP1bLEJcHx/ea9JKdlMrRLY79DkXL00ksv8dJLL/kdhohEqKZ1qvH29b156uITWL51P0NfnMk78zaSl3dsJ09KSPTFK04+jNmLmOX+/IpZTv6Q/cN4eWK/QDs9YlL6y3uQZcZ4My4CGgO3AnMDvb+Ac24Y8CLwBNAjv4/JzrkWpdz2Pt4JUjcDHfGS4x+KtEkHmhT+MbOMssYnx+7L5TuIi41hUMcGfoci5ahr1646YlREjolzjuEnt2DKn06jZ8u6PDRhBSNGzycpRVXTMFNwRGNpC5nG5j82D7TTozpm9LAOHG2AEWY8Flh7Nx/4wcxuKnRtLfCRmd1XTPuzgA+BtmZW7AIr59x1wEtmFl/W+DWnNLjMjAH/+JYOjWoy5jrNLaxI5s71vqP27dvX50hEJBqYGe8vTOLvn68iz4yRA9tyQ//W1KgSkaeaB02YzCnNxFssX4mSFyc5vDml2ZhVCaTbY/43a0YiBJyQxgE9gWeKvDQVrxRcnN8CC4E/O+euwVtkNRm438wKb9pfzTm3CYjFm3z7oJktCfiDSFCs2LafLXsPcfsZ7Y/cWKLK/fffD2ifUhEJDuccV5zcgtM6NOCRiSt47qufeGfeJu44sx3DT25B5diAB3sl+CrjDd9fjTvigrSAc83y/rqRgJc07ixyfScwuIR72gD98SbTXoI3gfbfeHNZL81vswZv26plQE3gDmCOc66bma0N5geQ0k1ZsYMYB4OPb+R3KFLOXnvtNb9DEJEodFydaoy6pheLN+3l6cmreXDCCkbP3sBfzurIeSc00Sp9f70ZzM6Oefi+TG/mXFO8DVUHmtnMQtcfAkaYWcdi7pkKDAAam1lq/rWzgCn514omuDjnCqql35rZ7cW8fjPe/FTi4uJ6ZmZmBuPjCTDkuRnUj4/j/Zv7HLmxiIhIGZgZ367ZxT++XMPqHQfoelwt7hnaiQHtK84ahjAZvs8rQ2vDLKCteMq7UpqMN7+gaBmtEbCjhHu2A1sLEtJ8q/IfW/DrqitmluucWwQUO4ZsZqOAUeDNKQ04einV+t1prN2VxohTjvc7FPHBjBneUcgDBw70ORIRiVbOOc7o1IiBHRoyYelWnp36E1e/sYB+7epzz9BOnNisjt8hVhRvh6LTck1KzSzLObcYGIK3eKnAELyTooozB7jMORdfaA5ph/zHTcXd4LzJtSfiDedLOZmywvtecZa2gqqQ/va3vwGaUyoioRcb47j4pGb85sQmjP1uMy99s5YLXprDb05owr3ndKJ5PZ0KFVJm14ei23Idvoeft4R6F7gFL+EcCdwAdDGzTc65dwDM7Jr89vF4ldHv8Pa8qgO8Bqwys8vy2/wt//W1QC3gduBqoJ+ZLSgtHq2+D54LX5oNzjHh1oC3JJMokpiYCECbNm18jkREKpoDGdm8PjOR12dtoGbVSoz7fZ8SjzaNdGExfB8iJVZKneO0snRkxswjtwIzG+ecqw88gLef6HLgXDMrqHq2KNI+zTk3GG9x00JgL/ApcG+hZnXwhuMb4508tQQ47UgJqQTP1n2HWLYllb8O/dW0YKkglIyKiF9qVq3Mn8/qyHndmjJ81Hdc+fp3fPD7PqqYhopz1wLvYhbY3FLnYoCrMSt12L/ESqlz5PHLWfdHYmblPj81KFQpDY4352zgkUkr+eYvA2nToMzbxUoUmDZtGgCDB5e0kYaISOit3LafK17/7ueK6XF1qvkdUlCFRaXUW+i0EW/1/TjMfiqhXQdgOHAd0PJIC56OlJQGysyIyEPOlZQGx/BR80g5mMXUP2mRS0U1aNAgQHNKRcR/P2zZx4jX51MvPo4Pft+HRrWi59TxMElKdwIN+KV4mYx30mbBIUcJeGt7EgruAHZhVuqik9KS0qJ7T52FNzw+B9iCd8RUv/wAPjfjd2X4OGFDSemx25OWSe+/T+O209vx57M0fF9RJSUlAdC8ecAnyomIhMz3m/dy9ej5NK5dlfdv7kODmgEdKhT2wiQpjQfuw1sfVDv/atGEsmAD2QPAy8CTmB0otdtAFjo5xwjgHWCYGR8Vun458B5wsxlvBPAxwo6S0mM3buFm7hn/I5/9sT9dj6t95BtERETKwYINKVw7ZgEt6lXnvZtPpV6NOL9DOmZhkZQWcK4aMAw4G+iNV7wEb7vOhXh7yn+AWUCJVqBJ6Sq8bZhqm5FW6Ho8sB/4yYxOZfgYYUNJ6bG7/s0FrN2Vxqy/np5/1K1URF9++SUAQ4cO9TkSEZFfzF2XzPVvLaRtg3j+d9Mp1Kke2YlpWCWlQRbowbGt8h9vKXL91vzHlkGJRiLOgYxs5qzbw9AujZWQVnBPPfUUTz31lN9hiIgcpm+7BEZd04t1u9K4ZswC9mdk+x2SlCDQSukyoGv+02S8U5aa8MsE1uVmdAtJhCGmSumxmbhsG7e/t4SPRvahV6t6focjPtqxwzs8oXFjHZ4gIuHn61U7GTl2MSccV5t3bjiF+CoRuWlQeFZKvarUyXhFyl+vKjN7J6BuAkxKzwM+AWI5fCKrA/KAC834PJA3DDdKSo/Nrf/9ngUbU5h/35nExKhSKiIi4evL5Tu49X/f07NFXd76XW+qx0VeYhp2Salz7YCJQEkrnQ2zgP5BB3yik3OcCTyON5E1Bi8ZXQA8YMY3AXUShpSUHr2M7FxOeuwrftvjOJ646AS/wxGfTZo0CYDzzz/f50hEREo2adk27nh/Ce0axtOqfg0qxTpiY2KoFOOIjXHEOkdsrPv5eZVKsZzdpRE9WtT1O3QgLJPSKXjHxZfEjrQ/aYGAvyKY8TXwtXNUB+oCe81ID/R+iT6z1iaTnpXLUJ11L8Czzz4LKCkVkfB2fremALw+K5HNKenk5hm5eUbOz4955OZBbl4eOXlGRnYur85YT6+WdblxQGuGHN+YWI0MFnYK3ij6auAL4CCBH750mIArpQDOUQk4CahvxuSjecNwo0rp0bvrw2VMXbGDRQ8MIa5SoGvmJFolJ3t7JickJByhpYhI5DiYmcMHi5IYM2cDSSmHaFm/Or/r15rLejXzZfg/DCulO/A20m+K2c5j6qoMw/eXAS/hLW4yMyo5x9dAa2CkGVOPJRC/KCk9Otm5efT++zTO6NiQ54Z19zscERGRkMrNM6as2MHrsxJZsnkftatVZsQpLbi2b6tyPTEqDJPSl4GRQDfMlh9LV4FNPHUMwNsk3/HLDv0AnwPPAJdCZCalcnQWbEhhX3o2Z2noXvJ9/PHHAFx8JpH/6wAAIABJREFU8cU+RyIiEnyxMY5zT2jCuSc0YfGmvYyelcirM9bz+qxELuh2HDcOaE3nJrX8DtMPU4ArgIk49wywBjh83y2zmYF0FOjq+y+AoXjzBTqRf9a9c3QEVgErzIjIlS6qlB6dBz9dzoeLk1jy4FlUiwto/rJEuUGDBgEwffp0X+MQESkvm/ekM2bOBj5YlER6Vi4Xdm/Ki8N7hPQ9w7BSmkfpc0iDu/reOVLwzjbtAKzll6S0MpAJ7DMjIjepVFJadnl5xqlPfs1JLery6tU9/7+9+w5zsswaOPw79CZVpCiIBcEOIrpgYVR00V1dRVdAUdFdUbFhwYoVFbBjQUVdUVg79s+CoKAUERAVVKp0AYEZeptyvj9OZgnDlGQmyZtkzn1dudKevO9JMgNnnnKeoMNxSWL9+vUA1KnjW80658qX9Vuy+e/3i6lZpRKXdGwR13MlaVJanJivvs9/80sKPF43dF09wuO4NPDjsnX8uXE7XQ7zoXu3kyejzrnyqk6NyvTJODDoMIJyX6wOFGlSuhyr0t+hwOM3h66XxSogl/y+mLWSShWEk1rvFXQoLom89dZbAHTr1i3gSJxzziWMasKT0i+AK4AP8h8QYTbQEptH8EWsAnLJTVX5/JeVdDxwT+pUrxx0OC6JPPfcc4Anpc4550on0qT0AWyFfQN2TmZtia3EXwsMjH1oLhnNXrmRxWu3cMWJBwQdiksyn376adAhOOecCxGRPkA/oAnwC9BXVb8tom0nLJdrBdQAFgMvqeqjRRz8K2yu6Cmh28WxdhGIKClVZbkIxwFPAacAFYFcYCzQV5XlkRzHpb5JC9YCcFLrhgFH4pJNjRo1gg7BOeccICLdgCFAH2BC6PozETlEVQuuDwLYhOV4M4EtwHHAC6FFVUMLaZ+BbTeff7uoVfNSzHO7N45mRycAEaoB9YFMVbZF9eIk5Kvvo3PVyOnMXL6eCbeeHHQoLsmMHDkSgJ49ewYciXPOpa9IVt+LyBTgZ1W9POyxecC7qnp7hOd5D9iuqj0KedLKQKlWjOXq+4j2hhShjgjNRdhTlW2q/KHKNhH2DD3uy27LAVVl6qIs2rdIyepfLs5eeuklXnrppaDDcM65ck1EqgDt2H1To9FAxwiP0TbUdnyhDVQr/C/RtNvFXSIuZh5pndJRwNnADao8Ffb4NVj38PuqnBfpSZNJs2bNdMSIEUGHkRJ25OQxZ9VG9q5bnfo1qwQdjksyOTk5AFSqlPi9oJ1zrrw46aSTdmDD7PmGqeqw/Dsi0hSrmtRJw3ZSEpG7gQtVtVVRxxaRZdg+9pWA+1T1/ljHX5xI//c4NnQ9qsDj72FzEI4lRWVmZv5vJxpXvHemLeWxMT8z+oYOHNRoj6DDcc4558qjHFU9Ok7HPgGoBfwFGCwiC1W15J47kQpYLtgcqLrb86qvRXLySJPS/FUt6wo8vr7A8y6NTVuURZ3qlTmwYa2gQ3FJaPjw4QD06tUr0Dicc66cW4MtRm9U4PFGwMriXqiqC0M3Z4pII+BeoPikVORg4EOgqLI8CkSUlEY0pxTYGLo+rcDj+fc3RXgcl8KmLs7k6H3rUaGCBB2KS0LDhw//X2LqnHMuGKq6A5gOnFrgqVOBSVEcqgKF9XrubihwILbSvqhLRCLtKf0B6Az8R4RDgd+Ag4EbsQx4eqQndKlp7abt/L56M+e12yfoUFySGjduXNAhOOecM48DI0Tke2AicCXQFHgeQEReA1DVi0P3rwUWAnNCrz8R27WzsHJQBbXDcsEPgM+BHaUNOtKk9HksKa3Nrnuc5tefer60AbjUMH1xFoCvvHfOOeeSnKq+JSINgP5Y8fxZwBmqujjUpHmBl1QEBgMtgBxgAXAbkeV3q4D9gV6obiypcXEiGr5X5T0s6y6sO/YxVd4vSxAu+U1bnEWVihU4fG+v/uUK9+KLL/Liiy8GHYZzzjlAVYeqagtVraqq7cJX4qtqhqpmhN1/UlUPVdWaqlpHVY8Kvb6kGqQAD2E54c2IRDLcX6SoiueL0B44C5ssuwr4SJWpZQkgaF48PzLnDJ1IRRHevSqiEmeuHOrcuTMAY8aMCTgS55xLX5EUz084kQ+AM4Fs4E+stzWfohrR3uRRFRQMJaApnYS66G3dkcus5ev51/H7Bx2KS2KejDrnXDkkcjvWYalAFWDv8GeJYpvRiJNSEfYAzgD2BaoVfF6VhBZYdYnz07J1ZOcq7VvUCzoU55xzziWXa0PXUuA6ahElpaFh+0+xPe+L4klpmpq2KBOAdvt6UuqKNnSoLdLs06dPwJE455xLoFpYb2hX4AtUt5X2QJHWKX0SaEAZ60+51DR1URYHNapF3Rq+tagr2scff8zHH38cdBjOOecS66PQ9dSyJKQQ+fD9EVgWPB7banQzUcwRcKkrN0/5YXEWZ7ZpGnQoLsl99tlnQYfgnHMu8d7FNlP6DJEhwCJ2XegEYSv/ixNpUroOqAF0Vd1tq1GXxuau2sjG7Tkc7UP3zjnnnNvde1hHZQOgsLqASoT5ZqTD9/l7lh4WYXuXJvLnk3rRfFeSIUOGMGTIkKDDcM45l3jFbTEa821GFwHrgQ9FeBnbhio7vIHq/xJXl0amLsqiUe2q7FOvetChuCQ3duxYAK6//vqAI3HOOZdAr8bqQBEVzxchj+LnkKpqdDVPk4UXzy9ex4FjabtvPZ694KigQ3HOOefKvaQsnh8jkQ7fQ4y6Zl3qWL5uK3+s30Z7n0/qnHPOuTiLtHfz0rhG4ZJS/nzSo30+qYvAo48+CsDNN98ccCTOOedSUURJqWrs5gu41DF1USa1qlaideM9gg7FpYDJkycHHYJzzrkUlpLzQF1iTFuURdvmdalUMZpZHq68GjVqVNAhOOecS2ERZxsi9BThBxE2i5Bb4JJT8hFcKlm/NZs5qzZ6KSjnnHPOJUREPaUinI/VKlV8UVO58MOSLFTxovkuYoMGDQLgtttuCzgS55xzqSjS4furQ9dbsZ2dFMjEqvevC11cGpm2KJOKFYQ2zesGHYpLET/++GPQITjnnAuayN2Aojog6pdGWKc0C6gNHAdMwuqSVhThLuAa4GRVfon25MnA65QW7vwXJrM9O5cPrzk+6FCcc845F5L0dUpFrLa9asVoXxrpnNL8N/8DoSL6IlQEHgMaAk9Fe2KXvLbn5PLT0nVeCso555xzCRPp8P0GoB42n3QjsAdwOrb1KMCxsQ/NBWXW8g1sz8mjfQufT+oiN2CAjdTcddddAUfinHMuFUWalP6BJaV7Ab8BxwAfhj2fGeO4XIDyi+a329d7Sl3k5syZE3QIzjnnUlikSekM4DCsR/Q1du8Z9eL6aWTqoiz227MmDfeoGnQoLoWMHDky6BCcc84Fr9S7gEaalPYBbgE2qrJFhDpANyAHeB8YXNoAXHLJy1OmL86k88GNgg7FOeecc6lGtdQdlZFuM7oZ2Bx2fxAwqLQndcnr9zWbyNqS7UXzXdTuvvtuAO6///6AI3HOOZeKikxKRWgezYFUWVL2cFzQpi3KAuBoX+TkorR06dKgQ3DOOZfCiuspXUSo/FMEtIRj7UJE+gD9gCbAL0BfVf22mPZVgP7ARUBTYBXwqKo+FdbmXGAAcACwALhTVd+PNCZnpi7KokHNKuy3Z/KWQHPJ6ZVXXgk6BOeccymspDqlEsUlIiLSDRgCPAS0xYrxfyYixfXMvgl0AXoDrYB/Aj+HHbMD8BbwX6BN6PodEfFSVVGatjiTdvvWQ8R3k3XOOedc4hTXuxmvFfU3AsNV9cXQ/WtFpAtwFXB7wcYichpwCnCAqq4JPbyoQLO+wNeq+mDo/oMiclLo8R4xjj9t/blhG4vXbqHnsfsGHYpLQbffbr++AwcODDgS55xzqajIpFS19Ev6ixIahm8HPFrgqdFAxyJedjYwFbhRRC4GtgKfAXeo6qZQmw7A0wVe9wW2BaqL0LTFPp/Uld7atWuDDsE551wKi3geaIzsCVTE5oSGWwV0LuI1+wPHA9uBc4G6WALaFDgv1KZxEcdsXNgBRaQ3NhWAKlWqRPUG0tnURZlUq1yBQ5vWCToUl4KGDRsWdAjOOeeShUgDYDWQh2pE+WYUi5NoBVyBzemsXuBpVeWUSI8VpQrYQqoLVHW9xSLXAF+ISCNVLZiMlkhVhwHDAGrWrBnpYq60N21RFm2a1aVKpZKmGjvnnHPORSTiRSoRJaUitAPGATWKOFmkid0aIBcoWJm9EbCyiNesAJbnJ6Qhv4Wum2M9oiujPKYrYNP2HH75Yz1Xn3Rg0KG4FHXzzTcD8OijBWfnOOecSytWRakkUZfxibSn9I7SHLwgVd0hItOBU4F3wp46FRhVxMsmAv8UkVphc0gPCl0vDl1PDh3jkQLHnFTWmMuLH5esI0/haC+a70pp69atQYfgnHMuMZ4h8g7JiEWalHYMnbwP8Fzo9pHAA0BrbMvRSD0OjBCR77GE80psfujzACLyGoCqXhxq/zpwF/CKiNyLzSkdAryrqn+G2gwBvhGR24APgHOAk7C5qC4C0xZnUkHgqOZ1gw7Fpahnn3026BCcc84lVkzrR0aalDYIXf8XS0pRZZYIvbEh8huAXpEcSFXfEpv82h8rnj8LOENV83s9mxdov0lEOmOLm6YCWVjieVtYm0ki0h1Lku/Hiud3U9UpEb6/cu+739fSunFt9qhWOehQnHPOOZfcdgCVsQ7Fotb21MA2SoqYqJbc+yrCeqAWUBVYD1QDDgE2AUuBdaqk5LhvzZo1dfPmzUGHEaht2bkcce9oLu6wL/3/fkjQ4bgU1bdvXwCefPLJgCNxzrn0JSJbVDXYbRdFvgPaA91RfaeINvmr7xXVipEcNtJl1vnD5PXZWbj+a2wuJ0BehMdxSWjaoix25OZx3IF7Bh2Kc84555LfFGzoPqY7Z0Y6fD8Tqxd6BPAJcDA7V7srVvzepaiJC9ZQqYJwzH4p2dntkoT3kDrnXLkxAPgPsK6YNpnAftEcNNKk9D5sb/lF2LzNI4HTsIR0LHB9NCd1yWXS/DW0aVaXmlUTvZeCc84551KObfu+poQ2ys4qSRGJKAtR5Sfgp7CHuohQF8hRZVMRL3MpYP3WbGYuX881J7cMOhSX4q6++mrAV+E755wrnbJ0jVUByvcKoTQw5fe15Cl0PKBByY2dK0b16gU3enPOOeciV2xSKsJRQHdstf0Hqnwlwr+Bgdiip+0iDFXl5viH6uJh0oK1VKtcgbZen9SVke/k5JxzriyKTEpFOB6bL5rf5moRHgFuweaSCpas3iDCfFUrfu9Sy8T5a2jfoj5VK0VUrcE555xzLi6KKwnVDyuMKmGX/CKows4JrgJcFK8AXfz8uXEb8/7c5KWgXEz07t2b3r17Bx2Gc845QET6iMhCEdkmItNF5IRi2nYVkdEislpENorIFBE5K5HxQvFJ6dFYj+gX2Pain2EJqAI9VNkLuDDU1iuup6DJC9YCPp/UxUaDBg1o0MB/lpxzLmgi0g3bgv0hoC0wCfhMRJoX8ZJOwFfA30LtPwXeLy6RjYcid3QSYTs2dF9PlQ0i1MG2+FSgmirZIlQBtgF5qmVaNBWY8ryj0y3v/sTns1Yy4+7TqFghptvXOueccy4OItnRSUSmAD+r6uVhj80D3lXV2yM8z/fAt6p6U5kCjkJxPaWVAVTZELpen/+EKtmh6x2hhzyjSTGqysT5a+lwQANPSJ1zzrk0ISJVgHbsvrHRaKBjFIfaA+uMTJgSezdFuDuSx1JV/fr1GTduXNBhJNyO3Dy6N9tI07o55fL9u9gbPHgwALfeemvAkTjnXFqrJCLTwu4PU9VhYff3BCoCqwq8bhXQOZITiMjVwD7AiLIEGq1IhtzvCbuthTyW0jIzM8nIyAg6jIR74/slPPblTMbc2JED96oVdDguDXz11VcA5fL3yTnnEihHVY+O18FF5FzgEaCbqka1I1NZlZSU+rhumpo4fw177VGVAxoWOy3FuYjdf//9QYfgnHPOqiPlAo0KPN4IWFncC0XkPOA14GJV/Tg+4RWtuKT0voRF4RIqL0+ZvGAtJx7UEBH/u8M555xLF6q6Q0SmA6cC74Q9dSowqqjXicj5wKvAJar6bnyjLFyRSamqJ6Xpas6qjazdvMNLQbmY6tmzJwAjR44MOBLnnCv3HgdGhFbQTwSuBJqCbXQkIq8BqOrFofvdsfmjNwPfiEjj0HF2qGpmooJOyTJOrmwmheqTetF8F0utWrUKOgTnnHOAqr4lIg2A/kATYBZwRtgc0YL1Sq/EcsInQ5d844GM+Ea7U5F1SsuL8lin9F/Dp/L7ms18fXNG0KE455xzLgqR1ClNVcXVKXVpKCc3jykLM+ngQ/fOOeecSyKelJYzPy1bz6btORx3gA/du9jq3r073bt3DzqM5LR+PQwZAqefDr/8EnQ0zjmXlHxOaTkzecEaAO8pdTHXpk2boENIPr/9Bs88A6+9Bps2QdWq0KULTJ4M++wTdHTOOZdUfE5pOZtT2mPYd6zfms2n158QdCjOpafcXPi//4Onn4YxY6BKFejRA669FipVghNPhGbN4NtvoV69oKN1zqUYn1Pq0sK27FymL8niuAO9l9S5mMvKgsceg5Yt4R//sF7SBx6ApUth+HBo1w6OPBLefx/mzrU227YFHbVzziUNT0rLkWmLstiRk0dHn0/q4uDcc8/l3HPPDTqMxJs9G664wobjb77Zrt9+GxYuhDvvhL322rX9ySfDiBHWU3rhhdaz6pxzzueUlieTFqyhUgXhmP3qBx2KS0MdOnQIOoTEmjsX7r8f3njDhugvuMCG6COZW9utG6xcCX37wnXX2bxT313NOVfOeVJajkxcsJY2zepSs6p/7S72br755qBDSIx582DAAPjvf6FaNbjpJushLdgjWpLrr4fly+GRR2DvveGOO+ITr3POpQjPTsqJ9VuzmblsHdec3DLoUJxLTQsWWDI6cqT1jN5wA9xyS/TJaLhBg2DFChvmb9IELr00dvE651yK8aS0nJjy+1ryFI7zUlAuTs466ywAPvroo4AjibGFC23B0quvQuXKNtx+yy3QuHHJry1JhQrw8svw559w+eXQqBGccUbZj+uccynIk9JyYtKCtVSrXIE2zesGHYpLU6ecckrQIcTWggXWkzl8OFSsCNdcA7feaj2asVSlCrz7Lpx0Evzzn/DVV3DssbE9h3POpQCvU1pO6pSe9sR4GtWuxoh/+X92zhVq1Sr4+mu7fPUVzJ9vxe5794bbboOmTeN//o4dbfenSZPgoIPiez7nXEpK5zql3lNaDvy5cRtzV22i61G+g4xLQ3l58OGHtn1n48bWk5l/2Wsv6+UszNq1MG7czkT011/t8dq1oVMn6NPHei4TtfNSo0bwxReWmP71r5aYxrpX1jnnkpgnpeXA5AVrAXy/exdXp59+OgCfffZZYk6YnQ2vv25D7LNnF96mQgVLTMOT1WrVYOJE+PlnUIWaNeH44+GSS2wIvW1b23kpCAceCJ9+ChkZVmz/5Zch9Lk651y686S0HJg4fw11qlfmkKa1gw7FpbEzzzwzMSfautWStUcegSVLbJekN9+EM8+E1aut/ueKFbtfVq6En36CDRvgmGOsxujJJ0P79raAKVkcfTRMmAAXXWSLnq64Ah59FGrVCjoy55yLK59TWg7mlB4/+CsObVqbFy46OuhQnCu99evhuefgiSdstXrHjlZK6fTT07Pw/LZtcPfdlpDut5+t/j/++KCjcs4FLJ3nlPo2o2luydotLMvaynEH+tC9S1GrV0P//rDvvnD77Ta8Pn689SaecUZ6JqRg0wweftjeK8CJJ1opqm3bgo3LOefixJPSNDdxwRoA3+/exV3nzp3p3Llz7A64ebPtlrTvvvDQQ3DqqTB9Onz+uSVo6ZqMFnTCCTbtoHdvm7Jw9NEwY0bQUTnnXMx5UprmJs5fQ6PaVTmgYVr29Lsk0q1bN7p16xabg02daj2iTzxh+8T/+iu88w4cdVRsjp9qatWC55+3RVCZmTYn9oEHICcn6Miccy5mfE5pGs8pzctT2j84hk4HNeTxbm2CDse5kuXmwuDBcM89tmJ+xAhbie52ysy0Qv5vvGHJ6WuvQatWiTv/jh1Ww/W33+z7Ouec5Foo5lyaS+c5pb76Po39umIDazfv8PmkLjUsXmwrzr/91npHn3sO6tULOqrkU7++lcL6xz+slurhh8O//22LvvbeO3bn2bzZSm399tvOy6+/2k5X4T20LVtar+0//1l+plQ45+LCh+/T2Pi5qwE48aCGAUfiyoOMjAwyStur+cYbVtrpxx+t5++NNzwhLUm3bjBrliWkL70EBxwAffta6avSyMmx6QHdu0OLFjZl4Oij7Q+FwYMtIT34YFtsNWIETJsGH31ku15162a9tmPHxvQtOufKFx++T+Ph+/Ofn8yW7Bw+ufaEoENx5cDw4cMB6NWrV+QvWr/ehqJHjrQSTyNHWvkjF51Fi2DAACsbVaUKXHst9OsHe0YwSjJ7NrzyiiWaK1bYa049FQ45xJLQgw+2ov5VqhT++txc+O9/4a67rG7saafZhgZt28b0LTrnTDoP33tSmqZJ6YZt2bS9/0uu7LQ//f7aOuhwnNvdhAnQsycsW2b1OO+4I7idlNLFvHlw3302vF+zpvWc3nQT1K27a7v16+GttywZ/e4724r1jDPg0kvhb38rOgEtzrZtNuXigQds3muPHpYoH3BAbN6bc8lu61ZYswaaNYvradI5KfXh+zQ1af4acvOUjFZ7BR2KKyeys7PJzs4uuWFOjiWhnTpZMjRhgt33hLTsWra03uZZs2xTgQcesKH4AQMsER071v4QaNLEdorasMHKTC1bZkPx55xTuoQUrK7qDTfA77/b/NYPPoDWra3XdtWqmL5N55LGtm3w4Ydw4YW2pXGfPkFHlNK8pzRNe0pvf+9nPvl5BTPuOpVKFf1vDxd/+fNJx40bV3zD226zOYqXXgpDhsAee8Q9tnLrxx+tksFHH0GFCpCXZ72mPXpAr162xWq8FietWGFbub74oiWst95qvbY1asTnfC56GzfClCn2O3jssUFHU3p5ebB0qS3Gmz3b/vCtX9/mpdevv+vt6tXL/jO/Ywd8+aWNNnz4of1x16ABdO0KF1wQ94oh6dxT6klpGialqkrHQV/RplldnuvZLuhwXDkxcuRIAHr27Fl0o2+/tR7Syy+HF15IUGSOqVNtzmjHjnD22ZYkJsrcuTY1Y9Qoqw4wcKD1KlVI0T+Wly+Hb76xhV2pNDVB1SonTJoEkyfb9axZltBVrWobNCSytFhpbN9uU1Tyq0LkX8+ZA1u2RHaMqlV3Jqh77gn77APNm9uQe/6leXNrE568ZmfbSMPbb8P778O6dfYHXteucP75cPLJCSuN5klpGkvHpHTuqo2c9sQ3DOp6ON2PaR50OM6ZDRtshX3FitaDV6tW0BG5RJowwYb3p02Ddu3g8cdtZ65UMW+ebfv66quWoIAtyjvtNFsYdvLJyVUxYvNm+6zzE9DJk22+I0Dt2tYz2rGj/U5edhkccQR8/XVy/rEwa5b1QP7yiyXR+fbd1xbitW6987p1a/ujKyvL5jZnZhZ9e/Vq62Fdtmz3jShq1NiZpNatC199Za+pXdumuZx/PnTuXPrpLmWQzkmpT+JKQ+PnWCmoTq28FJRLnC2hnooaRQ3P9u1rq7MnTPCEtDw6/ngbKn7jDZvC0amT9TINHmyr+5PVjz9a7+6771pP2OWX27zcH36A0aNtUdkLL1gy1779ziT1L3+Jf89ZXp713M6ebb2F4ZclS3a2O+gg+PvfoUMHS0QPPtj+OMyXlQX/+peVFuvdO74xR2vpUujSxd7rnXfuTD5btSp+Kkjt2pa0RiIvz+Y9L1li5yt4WbDA5miffz789a/W2+riwntK07Cn9MKXvmPNxh18cUMK9UK4lFfsnNIPPrDehf79bdGNK9+2bLEtZAcOtPl511xjJaWSqafx228tvs8+swSnTx/7w6pRo13bZWdbsv3ll5akfv+9JTl77AEnnWTzaGPVI7xqFQwbZj2Gc+bY1IjwYetatSxZy78cdZQlxyWVBlO1Xr9p02w4vGnT2MRbVpmZ9sfM8uX2fRxxRNARJYV07in1pDTNktLN23Noe/+X9DquBXeccXDQ4bhy5K233gKgW7duuz6xahUcdpjN0/ruO9+S0u20YoVVXnj5ZUtI77kHrrqq7D8jubkwfrz1Yn70kSVrBx6489KypV3vt9+u82tVbQOBgQNh4kRo2NAS0T59di+rVZSsLBsGHz0aPv7Y3uONN1olhLLM5X3nHftsMjOtokJ48pnfc9ikSekX8cyfb7uDnX46vPde6eOMla1brcd56lT44gvfbjiMJ6VpLN2S0rG/reJfr07jv/8+1rcXdcFThbPOgjFjYPp0K8juXEE//WQ9imPHWvJ30knWc3fKKTb0HEmipWo/Y6+/Dm++aclgrVpw5pn2/Pz5Ni903bqdrxGxOYP5yeqUKRZL8+a2+cBll5WtWsCmTXac55+3n/0RI6z3Mhpr1lhP8ltv2Q5br74av9+jhx+2KgmjRtnUiqDk5MC551pS//bbcN55wcWShDwpTWPplpTe/eEs3p2+jBl3n0rVShVLfoFzMbJ+/XoA6tSps/PBF1+0OWpDhsB11wUUmUsJqtYj9s47lpwuXmyP7733zgT1lFN2H1qeO9fmqb7+ut2uXNk2ArjwQptHWb36ru3XrrUENT9JDb/dpIklkRdcENse/c8/twR39WrrDb7ttsjq8n74odWTzcy0HuVIX1daOTlWVWDFChvGj7R3OJZU4corbZrC009bQu524UlpGkunpFRV6fTIOA5qVIuXLmkfdDiunNltTun8+dCmjS2u+OKL5FzV65KTqhXhHzNQAO9IAAAgAElEQVTGEtSvvrJkEmyhyymnWCmfd9+1eZAiNrx7wQXWw5ZMc1PzZWZagvXGG5b4vfZa0SWYsrLg+uutZ/XII6139MgjExPnDz9YfJddZolhot13H9x7r5URe/DBxJ8/BaRzUoqqJvwC9AEWAtuA6cAJxbTNALSQS+uwNr2KaFOtpFhq1Kih6eL31Zt031s/0dcmLQw6FFcOjRo1SkeNGmV3srNVO3RQrVtXdenSYANzqS83V3XGDNVHHlHt0kW1Rg1VUD3qKNXHHlNdtizoCCP35puq9eqpVq+u+vTT9t7CffaZatOmqhUrqt51l+r27YmPsV8/+3y//jqx533hBTtvr16qeXmJPXcKATZrALlbIi4J7ykVkW7ASCwxnRC6vhQ4RFWXFNI+A/gaOBTIDHtqtarmhtr0Ap4FdqlkrKorS4onnXpKh09cyL0f/8o3/U6ieQPfNcUF6KGHrHzL66/b7kHOxdKOHTbXMllWiUfrjz/g3/+2lf2dO8N//gN16ti82pdesjmjr75qc0iDsGWLLXqqWNHm2BacAhEPH3xgvdxduthtXxBZpHTuKQ0iKZ0C/Kyql4c9Ng94V1VvL6R9BpaUNlTVNUUcsxfwjKpGXfwwnZLSS1/5nkVrt/D1zRlBh+LKoTWhwtx7LllihbnPO8+GKp1zu1O1Odc33mjzRGvXtiLu/frZEHYid90qzNixljDffrv9kRlPEybYSvsjj7Tz1kzLfCtm0jkpTegkLxGpArQDRhd4ajTQsYSXTxORFSIyVkROKuT56iKyWESWicgnItI2FjGnim3ZuUz+fS2dDvKC+S4Y5513Hud17WqFxRs1gmefDTok55KXiC0C/Oknm3tds6YlZ4MHB5+Qgs3bvfRSW5H/00/xO88vv1iFhObN4ZNPPCEt5xK98mBPoCKwqsDjq4DGRbxmBXAVcC7QFZgDjBWRE8LazAEuA/4B9MDmqk4UkZaFHVBEeovINBGZllNwa7EU9f3CTLZl5/kuTi4wN910EzfVrWurdl95xfaWds4V74ADYNw4+PVX220pmTz6KDRoYFMN4vF/Zf5uTdWq2WLIkor8u7SX9NuMquocLOnMN1lEWgD9gG9DbSYDk/MbiMgk4EfgWmC3OjSqOgwYBjZ8H6fQE2r83NVUqVSBv+zXIOhQXDl1ZrVqVlfw2mttKM45F7nSFr2Pp/r1rSxTt27w1FM21SBWfvnFSndt2ADffGMbArhyL9E9pWuAXKDAPm00AkpclBRmClBoLyhAaAHUtOLapJvxc1dz7H71qV7Fa5O6BMvLgyFDWPn3v7OyZUsYNCjoiJxzsfLPf9rwev/+VqYrFsaNg+OOswVrX3+duHJXLuklNClV1R1YCaiC3SinApOiOFQbbFi/UCIiwBHFtUkny7K2MP/PTWS02ivoUFx5s2KF9Xb07Uv3WrXo3rBh2XbAcc4lFxEYOtQWY115pS3QKos334S//tUqJ0yeHP0OVy6tBTF8/zgwQkS+ByYCVwJNgecBROQ1AFW9OHS/L7AI+AWoAvQEzsbmmBJqcw/wHTAPqI0N2R+BzUVNe+PnrgbwRU4usT76CP71L9i8GYYO5bYWLZJzCNI5Vzb77GMjIFdfDZ062Q5tbaNcS6wKjzxi25ieeKKVfUrGTQ5coBKelKrqWyLSAOgPNAFmAWeoamhPOZoXeEkV4BFgH2Arlpz+TVU/DWtTF5sj2hhYD8wATlTV7+P2RpLI+Dmr2btudQ5o6KsWXQJs2WL1FJ9/3lYNv/46HHwwXYKOyzkXP1ddZbVD77gD2rWzxU8PPAB7RTBCl5tr2wwPHWrzU199FapWjX/M5ZyI9MHW3zTBcqe+qvptEW2bAI8BR2FTH0eoaq8EhbozjkTXKU02qV6ndEdOHkcN+JKz2jTloXMODzocl+5mzLCtHGfPtnqKAwb87z+XpUuXAtCsWbMgI3TOxdO6dXD//bYAqkYNuOce2z61SpXC22/ZYv9mfPih/ZsxaJBvOVxGkdQpLcVGRS2AG4EfgN7A3CCSUv/JSHHTF2exaXsOGT507+IpL8+G3o491lbLjhlj9QvDejsuuugiLrroogCDdM7FXd268PjjMHOmlbC66SY44gjbnaqg1avh5JNtqs8zz9i/GZ6QJsqNwHBVfVFVf1PVa9lZYnM3qrpIVa9T1eHsuntmQvlPR4obP3c1lSoIHQ/0+m4uTpYtsxJPt9xiq3B//tkKaxfQv39/+vfvH0CAzrmEa93aEtH/+z+bL3rGGfC3v8GcUAXHefOgQwcrvP/eezYf1SVEGTcqClS5H75v1qyZjhgxIugwSm3en5uoWEHYf0+fT+pir97333PIgw9SYccO5l17LStPP90XMznndiHZ2ez9/vu0eO01KmzbxsrTT6fhN9+gIsx66CE2HHJI0CGmlZNOOmkHMDPsoWGh+usAiEhTYDnQSVW/CXv8buBCVW1V3PFF5BNgjc8pDUAqzyldtWEbxz40llu7tOaqjAOCDselE1UYONBqEx52GLz7Lhx0ULEv+T1Uw3D//fdPRITOuWSzapX9m/Hyy7D//vD553DggUFHlXZKmlOayklp0u/o5IqWXwoqw7cWdbG0YQP06gXvvw89esCLL0a0H/Vll10GwLhx4+Ibn3MuOTVqZP9e3HKLrcqvUyfoiMqrWG1UlHCelKaw8XNXs9ceVWndeI+gQ3Hp4rff4JxzYP58eOIJuP76iIfr77vvvjgH55xLCS3LzWaKSUlVd4hI/kZF74Q9dSowKpioIuNJaYrKyc1jwrw1nHZII8Tn+LlYeP99uPhiK/MydqwVyY5CpyjbO+eci5uoNioKPdYmdLM2kBe6v0NVf01U0J6Upqiflq1j/dZsOvnQvSur3Fy46y6bQ3rssTZ/dJ99oj7MnNCq21atip2u5JxzLs5KsVER2MZD4c4EFgMt4hVnQZ6Upqjxc1ZTQeCEAz0pdWWwdq3NG/3yS+jdG556qtQ7rVxxxRWAzyl1zrlkoKpDgaFFPJdRyGOBD7t6Upqixs9dTdvm9ahTo3LQobhUNWMGdO0Kf/xhixP+/e8yHe6hhx6KUWDOOefKI09KU9DaTdv5efl6buhcfIke54o0diz8/e+w557w7bdwzDFlPmTHjkldk9k551yS86Q0BY2d/Seq0Mm3FnWlsX49XHIJ7LcfjBtnpVtiYNasWQAcdthhMTmec8658sWT0hT0+pQl7N+wJkfs4zXgXCncdBOsWGGr7WOUkAJcc801gM8pdc45VzqelKaYWcvX8+PSddz190O8FJSL3ujRttvKrbdC+/YxPfQjjzwS0+M555wrX3yb0RTbZvT292by/oxlTLm9sy9yctHZsMG2DK1Z0xY5VasWdETOOeeiVNI2o6nMe0pTyMZt2Xz443LOPKKpJ6Quev36wfLlMHFiXBLSH3/8EYA2bdqU0NI555zbnSelKeSDGcvZsiOXC/+yb9ChuFQzZgwMG2aJ6V/+EpdT9O3bF/A5pc4550rHh+9TZPheVeny5LdUriR8fM3xPp/URW7jRhu2r1YNfvwRqlePy2m8p9Q55+LPh+9d4KYvzmLOqo0M6nq4J6QuOrfeCkuXwoQJcUtIwZNR55xzZVMh6ABcZEZ+t5g9qlbirDZNgw7FpZKvvoLnnoMbboA4F7efOnUqU6dOjes5nHPOpS8fvk+B4fu1m7bTYeBX9DimGff9wwuTuwht2gSHHw6VK9uwfY0acT1dRkYG4HNKnXMunnz43gXq3enL2JGb5wucXHRuuw0WL4Zvvol7QgrwzDPPxP0czjnn0pcnpUkuL095/fslHNOiPgc12iPocFyqGDcOnn0Wrr8ejj8+Iaf07UWdc86Vhc8pTXLfzl/D4rVbuPAvzYMOxaWKzZvhX/+CAw6ABx9M2GknTZrEpEmTEnY+55xz6cV7SpPcf79bTIOaVehyWOOgQ3Gp4o474PffYfx4270pYae9A/A5pc4550rHk9IktmL9Vsb8toreJx5A1UoVgw7HJTNV20Z0/Hh46im49lo48cSEhvDCCy8k9HzOOefSiyelSeyN75eiwAXH+NB9ubd0KcyfD3/8YZcVK3a/vWWLtd1vPxg4MOEhtmrVKuHndM45lz48KU1S2bl5vPn9Ek5s2ZDmDeK/ctolqR074O674eGHrTc0X82a0LSpXdq3t+smTez65JMTOmyfb/z48QB06tQp4ed2zjmX+jwpTVJjf1vFnxu38+A5Xgaq3Jo9Gy68EH74AS6/HHr02JmI7pF8lRjuuecewOeUOuecKx1PSpPUyO+W0LRONU5uvVfQobhEU4UXXoAbb7T6oh98AP/4R9BRleg///lP0CE455xLYZ6UJqGFazYzYf4abjz1ICpW8H3uy5XVq62c08cfw2mnwfDhNiyfAvbff/+gQ3DOOZfCvE5pEnp9ymIqVRC6t28WdCgukT7/3LYF/eILeOIJ+OyzlElIAcaMGcOYMWOCDsM551yK8p7SJLMtO5d3pi/jtEMbsVftakGH4xJh2za49VYr5XTooTB6NBxxRNBRRe2BBx4AoHPnzgFH4pxzLhV5UppkPp25gnVbsrnwWF/glJI2boR+/WDePGjceOelSZNd7zdoACIwcyZccAHMmgXXXQeDBkH16kG/i1IZMWJE0CE455xLYZ6UJpmR3y1m/z1r0vGABkGH4qI1dy6cc46tmj/mGJgyxWqI5tcPDVe5MjRqBH/+CfXqwaefwumnJz7mGGrWzKebOOecKz1PSpPIr39s4Icl6+j/t4MR8QVOKeXjj6FnT0s2R4+GU06xx1Vh0yZYudIS1JUrd15WrLDV9ffcA3ulfpWFzz//HIAuXboEHIlzzrlU5ElpEhk+aSFVK1XgvHb7BB2Ki1ReHtx3H9x/Pxx1FLz3HuwbNvVCxGqK7rEHtGwZXJwJMGjQIMCTUuecc6XjSWmSmLRgDW9PW8alx7Wgbo0qQYfjIrFunfWO/t//Qa9eMHRoys4HjYU333wz6BCcc86lME9Kk8DGbdn0e+dn9tuzJrf8tXXQ4bhIzJpl80cXLYJnn4WrrrJe0XKscePGQYfgnHMuhXlSmgQe+OQ3VqzfyjtXdqR6lYpBh+NK8vbbcNllNiQ/bhwcd1zQESWFjz/+GIAzzzwz4Eicc86lIk9KA/bV7FW8NW0pV2UcQLt96wUdjitOTg7ceSc8/DB07AjvvGP70DsAHnvsMcCTUuecc6Ujqhp0DIGqWbOmbt68OZBzZ23ewWlPfkODmlX48JrjqFrJe0mTkqqVd7rzTvjqKxuqf/JJqOJzf8OtWbMGgD333DPgSJxzLn2JyBZVrRl0HPHgPaUBuvujX8javIPhl7b3hDQZrVsHI0fCsGFW5L5WLfjPf+DSS4OOLCl5Muqcc64sPCkNyCc//8HHP/3BTacexKFN6wQdjsunCpMnWyL69tuwdSscfbTd79HDElNXqPfeew+Arl27BhyJc865VOTD9wEM3/+5cRunPfEN+9avwairOlKpYoWEnt8VIitrZ6/orFm2iOnCC+Hyy63+qCtRRkYGAOPGjQs0DuecS2c+fO9iRlW5fdRMtu7I5bHz20SfkM6ebSWIJk2yBKpdu/gEWl7MnAmPPmq9otu2Qfv28OKL0L2794pG6cMPPww6BOeccynMk9IEe2f6MsbO/pO7/n4IB+4VYdKTm2t7oz/9NHz5pS2wqVMHMjLg/fehc+f4BKsKmZmweLHV48y/zsy03sNOneDII6FiCs6HXboU7r4bXn3Vks9evaB3b2jbNujIUladOj4NxTnnXOn58H0Ch++XZW2hy5PfcmjT2rxx+V+oUKGEYutZWbaw5tlnYeFCKz901VWWPOXkQJcu1nM6ciScf37Zgvv1V9uZKDz5XLzY9m0PV6sW1K4Nf/xh9+vUgRNOsAS1UydL6iol8d8669fDoEG2el4VrrsObr8d6nk5rrJ66623AOjWrVvAkTjnXPpK5+F7T0oTlJTm5Sk9X57CT0vX8XnfE2lWv0bRjWfOtF7RkSNtoc0JJ8C118LZZ0PlyjvbrVsHZ54JEyda+6uvjj6w7GxL0gYMsNv16tne7S1a2HXB2/Xr285FS5fC+PE7L/Pm2fH22AOOP94S1IwMWySUDD2pO3bAc8/Z+8zMtO1BBwzYdZ96VyY+p9Q55+LPk9I0lqikdPjEhdz78a8M7Ho4PY5pXnijzz6DwYMtyatWzRbaXHMNtGlT9IG3brX5jx99BHfdBffdF/l2lzNn2rD1Dz/YyvLHH4fSbhX5xx+7JqmzZ9vjbdvCCy/YXM0gqNp80TvugN9/t6kODz/sw/RxsGXLFgBq1CjmDy7nnHNlks5JqS/7ToDfV29i0OezyWjVkO7tm+3eYN48+Pvf4YwzbJh+8GBYtgxeeqn4hBSgenUYNcq2vRwwAK680uagFicnBx580BZJLV1qr3/99dInpGBTC3r0gOefh99+g5UrberBypVw7LHW07t+femPXxrjx9u58xctffGFzcn1hDQuatSo4Qmpc865UvOe0jj3lObk5vHPFybz++rNjL7hRBrVrrbzyU2bLDl8/HFbvHTPPTbHsTQ7BalC//7w0ENwzjmWZFartnu7WbOsd3T6dOjWDZ55BuJZ9Hz9eovr2Wct6R0yBM47L/Le3EipwpIlMG2aXSZMsEuzZvDAA9brnAzTCNLYyJEjAejZs2fAkTjnXPpK555ST0rjnJQuzdxCjxe/o99fW/GPNnvbg6rwxhvQr58Ne198sc3rbNKk7Cd86im4/nqb0/nhh7YQCax39JFH4N57baHSc89ZcpgoU6fCFVfAjBlw+umWpO63X+mOpWqfW34Cmn8JbXNJ5cpwxBG2+Ovaa6032cWdzyl1zrn486Q01icV6QP0A5oAvwB9VfXbItpmAF8X8tTBqjo7rN25wADgAGABcKeqvl9SLImYU7otO5eqlSogIvDjj5YoTZhgw+dPPw0dOsT2hG+8AZdcAoccYvNUs7Ksd3TqVEtEn30W9tortueMRE6Onbt/f5ticPfdcNNNuy7eKii/B3TGDLv88IMloCtX2vMVK8Jhh9mCqvzL4YdD1aqJeU/uf7KzswGoXNz36ZxzrkwiTUqjybVC7TsBjwOHAn8AD6vq87GJOjIJT0pFpBswEugDTAhdXwocoqpLCmmfgSWlhwKZYU+tVtXcUJsOwLfAPcB7QFfgPuA4VZ1SXDwJKwm1dq0tRHrhBVvBPnCg7aEeryHl0aOha1frKV2zxlbFDx1a9tJRsbBsmfXmvvceHHqofSbHHWeJ6rx5uyagM2bYanmAChWgdeudyWf79lYn1XtCnXPOlRORJKWlyLX2A2YB/wGGAseHrrur6qjYvoNi4g4gKZ0C/Kyql4c9Ng94V1VvL6R9BpaUNlTVNUUc8y2gvqqeGvbYGCxx7VFcPHFPSnNzLenq3x82bLCyTffem5i6mFOnWhmpDh2sh7JRo/ifMxqffGKfx5Iltvho7lzI/y6qVLEh+LZt7XLUUdYD6gtpktbw4cMB6NWrV6BxOOdcOoswKY021xoMdFXVlmGPvQQcqqoxHs4tWkKTUhGpAmwBeqjqO2GPPwscpqqdCnlNBpaULgaqAr8CD6jq12FtlgBPq+ojYY/1A65R1WILUcY9KV28GFq1ssTwqacssUok1dgvKoqlzZttIdJ33+1MQo86Cg4+uPhhfZd0fE6pc87FX0lJaSlzrW+Amap6ddhj/wReB2qoanYs30NREr31zp5ARWBVgcdXAUXtlbkCuAqYClQBLgLGikinsLkRjYs4ZqE1jkSkN9A7dFdFZGs0byJMJSAnopbjxlnS5YoW+2Qm8u/HxYxE9keQfzfJzb+f5OXfTXJLxPdTXUSmhd0fpqrDwu6XJtdqDIwppH2l0PFWlD7cyCXxfpBGVecAc8IemiwiLbDJu0VO2C3hmMOAYSU2LIGITFPVo8t6HBcf/v0kL/9ukpt/P8nLv5vk5t9P2SS6eP4aIBcoOLmxEbAyiuNMAVqG3V8Zg2M655xzzqW60uRaReVROaHjJURCk1JV3QFMB04t8NSpwKQoDtWGXbuSJ8fgmM4555xzKa2UuVZRedS0RM0nhWCG7x8HRojI98BE4EqgKfA8gIi8BqCqF4fu9wUWYTW2qgA9gbOBc8OOOQT4RkRuAz4AzgFOwkoaxFOZpwC4uPLvJ3n5d5Pc/PtJXv7dJLdk+X6iyrVCj18jIk8CLwDHAb2AYisYxVqQxfNvwQq6zgJuUNVvQs+NA1DVjND9W4DLgX2ArVhyOlBVPy1wzPOAB4D92Vk8/70EvB3nnHPOuaQSTa4VeqwT8AQ7i+cPTvvi+c4555xzzhWU6IVOzjnnnHPO7caT0mKISB8RWSgi20RkuoicUEL7TqF220TkdxG5MlGxlkfRfD8i0kREXheR2SKSKyLDExhquRPld9NVREaLyGoR2SgiU0TkrETGW95E+f10EpFJIrJWRLaGfoduTmS85Um0/++Eve54EckRkVnxjrE8i/J3J0NEtJBL60TGnEo8KS1CaN/YIcBDQFtsxdpnItK8iPb7AZ+G2rUFBgJPi8i5hbV3ZRPt94PtBrYGGISVFHNxUorvphPwFfC3UPtPgfcj/c/YRacU388m4CngROAQbO7+faH5ai6GSvHd5L+uHvAaMDbuQZZjpf1+sDmaTcIu8+IZZyrzOaVFSNV9Y8uLaL+fAq/9BFijqr3iG2X5VJbvJqz998C3qnpTnMIst2L0/bwHbFfVhK7MTXel/W5C38dPgADnqephcQ+2HCpFXpCBbZPeUFUTVuszlXlPaSHE9o1tB4wu8NRooGMRL+tQSPsvgKNFxDdxj6FSfj8uAWL43ewBZMUqLmdi8f2ISNtQ2/Gxja58K+13E+qxboT1YLs4KePvzjQRWSEiY0XkpLgEmCY8KS1ccfvGNi7iNY2LaJ+/b6yLndJ8Py4xyvzdiMjVWAm4EbENzVGG70dElonIdmAaMDTRpWLKgai/GxE5HLgH6KmqufENr9wrze/OCuAqrK56V2zL9LE+NaloQRTPd865QoXmYD8CdFPVxUHH43ZxAlAL+AswWEQWqqr/4RAQEakKvAXcrKoLg47H7U5V52CJaL7JItIC6Ad8G0RMyc6T0sKl7L6x5URpvh+XGKX+bkIbYLwGXKyqH8cnvHKv1N9PWOIzU0QaAffivdmxFO130wQ4GHhFRF4JPVYBEBHJAc5Q1YJDza70YvX/zhSge6yCSjc+fF+IVN43tjwo5ffjEqC0342InI8lOL1U9d34RVi+xfB3pwJW0cLFSCm+m+XA4UCbsMvzwPzQbf+3MIZi+LvTBhvWd4XwntKipeS+seVItN8PItImdLM2kBe6v0NVf01k4OVAVN+NiHTHEtKbgW9EJH9+1g5VzUxw7OVBtN/PtcBCdg5Dnoh9V0MTG3a5EPF3E+rs2KUmqYj8iVVF8Fql8RHt705fYBG2PXoVoCdwNjbH1BXCk9IiqOpbItIA6M/OfWPPCJvn1rxA+4Uicga2b+xV2L6x16nqqASGXW5E+/2EzChw/0xgMdAiXnGWR6X4bq7E/i16MnTJNx7IiG+05U8pvp+KwGDs9yQHWADcRug/Yhc7pfx3zSVIKb6fKtgc+X2ArVhy+jdV/TRBIaccr1PqnHPOOecC53NKnXPOOedc4Dwpdc4555xzgfOk1DnnnHPOBc6TUuecc845FzhPSp1zzjnnXOA8KXXOOeecc4HzpNS5JCciLUXkGRH5TUQ2ichGEZktIi+KyF/C2i0SERWRRQGGmx/L8FAsGtrrOf/xRiLyXxFZISK5oeefFJEWYe2HxzGuuiJyb+hydqRxJ4qIZISdv6TLvaHX5N8fl+h4SxLP7zWa76rA5xrTOJxzsePF851LYiJyKfAcu2/p2Cp0aYjtEJIqhgDdAjx/XeCe0O1XgQ8CjMU551wYT0qdS1IicjLwEjaiocCD2Ba2fwL7AucBBwUWYDFUtRe2zW5B7ULX64D9VHVd2HMS57BKVEzciTr/OMI+BxHpBbwSuvtqKL6YE5FqqrotHsd2zrlI+fC9c8lrIDt/R59S1btUdZmq7lDVeao6ELi8uAOISBsReU9E5ovIBhHJFpGVoceOLtB2PxF5TUSWiMg2EVknIrNCw6R7hbW7XESmiUimiGwXkeUi8qWIXBLWZpeh1fzhU+DAUJO6QFbo+V7FDfOKyFEi8kboPDtEZI2IfC0ix4SeryUir4rITBFZG3qP60TkGxHpFnace7E93PNdUvCcxUw7qCki94nILyKyVUS2iMgMEblRRCqFtdvlfYjIxaHPcKvY9ItLiCMROVlEvgudb4GI3CIi4UnuvWHxnSMiL4vIGmwLxPw2B4vIiLDP+08ReVdEjihwroh+Xgq85nwR+bm4z0NEThCRj0RkddjP65sFz1/MZ9A0FO+m0M/Dc8AeRbSN+j045+JIVf3iF78k2QXYC+sdzb/sHcFrFoXaLgp7rHuB44RfNgMHh7X9pZi2h4Xa/LOYNu+GHWt42OMtsD3si3pdr1Cb/PvDw45zDpBd1OtCbRoXc2wFLg61u7eYNsMLizv0WE1gejGv/RSoEGob/j6yimh/fBQ/B70K+1wKtMl/fk0Rn1XPsLb3Fmj/v3ah548HthQR91bghCh/XsI/j5UlfR5ATyC3iHbbgIyifsZCj1UHfivktX8U9jlG8h784he/JO7iPaXOJacWYbc3qOryUh7nB+CvQBNsXmpt4KrQczWAKwBEpAFwSOjxp7BErD7QHrgLWB967sTQ9SZsTmtVbCrB+cDnRQWhquNUVYDFoYcWq6qELsMLe42IVAdeZOc0o7uBRsCeWHL8e+jxjdg81Rah91QN6IglVwA3hmK4F9gv7BSvhsXQq6jYgb7AUaHbX2Cf5f7YZwtwOpb8F1QX6APUAQaHPcTXhUMAAAVISURBVH5RMecqiwbAw0A94JoIzidAF+wzOzz02ItYYrcYm2pRFWgLrMY+12chqp+XcI0o5vMQkZrA09joQA72B0lt4MpQu6rY9JXiXAy0Dt3+DtgH651fV7BhKd+Dcy6OfE6pc+ltJfAv4Eksaate4PlWoess7D/uuliStRHrcfpJVR8Ia78wdF0T6I/1IP4GjFbVWP8nfhyWaAGMU9UBYc+9G3Z7C5aovgUcjA3Vhs9PbUXZ/C3s9u2quhJARO5n50KpM4DXC7xuuqo+F2o7Erg19Pi+ZYynKKuAu1U1V0ReBZ4p4XyPqeoXoduzRKQlOxO6fbHvtqDDRaQxNq85kp+XcCV9HseFjgfwqarmf7YviMiVQBvgIBE5UFXnF3GOk8NuD8z/Y05EHsPmZ4eL9GfeOZcg3lPqXHJaFHa7tog0LeVx3gZuwZK1ggkp+Y+pah7WY7UMaAncCYwEZobmajYLtR8KvAPkt38S6z1cJSK3lTLGojQKu/1rMe1uxXrwjsV61goumKpWxjgaht1eEnZ7cdjtwuYfzgm7vTmG8RRlgarmRnG+GQXuRzqHskEUPy/hSvo8ivqcoeTP+n+xhd1eVsRtIKqfeedcgnhS6lwSUtU/ge/DHupXWLvwRTaFPFcPG7oH60U7FKgIFLpgRFU/AZpjPYtnAfdj8/sOw3pFUdVtqno+Nsx5PHAZMAUbWn1IRPaO7B1GZFXY7YOLaRc+dH42UDU0VWBtIW21FHH8GXa7eRG3w9vkyy7jeaP1v/OpaiTn21rgfvh7GBM2teF/F2zu7C+hc5T481JUfBT+eRT1ORe8X9hnnW9N2O19iri9M4jo34NzLo48KXUued2J9UgCXBdaOd1URCqLFdS/A5sDWJQcdv7nnwNswIa5BxTWWESeBk7B5ot+DowCtoeebh5qc66IXAPsDfyE9Zr+lH8IivjPv5QmsjOxPElE7hCRhiJST0TOFpH8+a05Ya9ZB1QWkbvYtdcsX3ii2jI0j7Ek/xd2+0GxDQBaYHNcC2uTklR1HjA3dPcUEekrttlANRE5UkTuBt7Mbx/Jz0uUJmFD6gCni8hZYpUVLsfmtQLMKWboHuDrsNu3icjeInIAcFNhjePwHpxzZeBJqXNJSlXHYAuRsrHf1XuA5cAOLHl4EFvUUtTrNwJjQ3f3BpZivY+HFPGSq4Avw87xE7YIBmyIHqzH8mlsOH1j6NI79NwK4Oco3mKxVHUrVvIqP+l8EOslywTexxYbEbqdbxyWYFxHIYtbVHUTtuIabDHUplB5pF7FhDKEXRc1rcTm1ubXXP0Mm8+aDnpjq9wFeAJLErcCPwL3seuUikh+XiKmqpuBa7E/xCoDH2I/X8NCTbazc9FTUV4DZodud8CG5uez69SAcDF9D865svGk1LkkpqovYcPtQ7FEdCs2H28O8DIwqIRD9MQSpixsNfFIit5RaRAwAUv8crAFRD9gCd6QUJux2IKe+Vjyl4slo28CnUKJZMyo6vvYXNE3sbI+OVhSOp6d80wHAw9hicXW0HMnU/Tq6YuAb7Ce40hi2IxVHbgfWwizHUvcfsR64M4KzU9Meao6Hku2X8MSumzs8/4Z+2PkjrDmkfy8RHv+/2Llwz7BerVzsD+k3gaOUdtcoLjXbwU6A+9hvyfrsM0HiqrnG/P34JwrPYls6pFzzjnnnHPx4z2lzjnnnHMucJ6UOuecc865wHlS6pxzzjnnAudJqXPOOeecC5wnpc4555xzLnCelDrnnHPOucB5Uuqcc8455wLnSalzzjnnnAucJ6XOOeeccy5w/w8sXML7Wvt98AAAAABJRU5ErkJggg==\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "disp_imp = np.array(val_metrics['disp_imp'])\n", + "disp_imp_err = 1 - np.minimum(disp_imp, 1/disp_imp)\n", + "plot(thresh_arr, 'Classification Thresholds',\n", + " val_metrics['bal_acc'], 'Balanced Accuracy',\n", + " disp_imp_err, '1 - min(DI, 1/DI)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "QPY6Jpg8HHWP", + "outputId": "2f63deeb-00f5-4217-d093-bc0519656749" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plot(thresh_arr, 'Classification Thresholds',\n", + " val_metrics['bal_acc'], 'Balanced Accuracy',\n", + " val_metrics['avg_odds_diff'], 'avg. odds diff.')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "Kzz07t6iHHWP", + "outputId": "29d487fa-d6a2-48ea-ba77-f6e3037c7f8e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.1900\nBest balanced accuracy: 0.7465\nCorresponding 1-min(DI, 1/DI) value: 0.1129\nCorresponding average odds difference value: 0.0036\nCorresponding statistical parity difference value: -0.0414\nCorresponding equal opportunity difference value: -0.0057\nCorresponding Theil index value: 0.0946\n" + } + ], + "source": [ + "describe_metrics(val_metrics, thresh_arr)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "OtQaMv-kHHWP" + }, + "outputs": [], + "source": [ + "lr_transf_metrics_panel20_test = test(\n", + " dataset=dataset_orig_panel20_test,\n", + " model=lr_transf_panel20,\n", + " thresh_arr=[thresh_arr[lr_transf_best_ind_panel20]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "OZSFd0V1HHWP", + "outputId": "8fc14730-50f4-48d4-95ee-10b447cc0811" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.1900\nBest balanced accuracy: 0.7490\nCorresponding 1-min(DI, 1/DI) value: 0.0533\nCorresponding average odds difference value: 0.0158\nCorresponding statistical parity difference value: -0.0184\nCorresponding equal opportunity difference value: -0.0150\nCorresponding Theil index value: 0.0988\n" + } + ], + "source": [ + "describe_metrics(lr_transf_metrics_panel20_test, [thresh_arr[lr_transf_best_ind_panel20]])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nu30oFGsHHWQ" + }, + "source": [ + "The new model is both relatively fair as well as accurate so we deploy and test against the 2016 deployment data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ELHXc_4eHHWQ" + }, + "source": [ + "### 9.3. Testing model learned on 2015 (Panel 20) data on 2016 (Panel 21) deployment data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "smQov8sGHHWQ" + }, + "source": [ + "**Evaluate new 2015 transformed data model and evaluate again on 2016 deployment data**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "GU4e1HSoHHWQ" + }, + "outputs": [], + "source": [ + "lr_transf_panel20_metrics_panel21_deploy = test(\n", + " dataset=dataset_orig_panel21_deploy,\n", + " model=lr_transf_panel20,\n", + " thresh_arr=[thresh_arr[lr_transf_best_ind_panel20]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [], + "id": "_8ipT0CcHHWQ", + "outputId": "bf801b64-147d-46c8-8854-b889e0052aba" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Threshold corresponding to Best balanced accuracy: 0.1900\nBest balanced accuracy: 0.7370\nCorresponding 1-min(DI, 1/DI) value: 0.1698\nCorresponding average odds difference value: -0.0021\nCorresponding statistical parity difference value: -0.0648\nCorresponding equal opportunity difference value: 0.0016\nCorresponding Theil index value: 0.0960\n" + } + ], + "source": [ + "describe_metrics(lr_transf_panel20_metrics_panel21_deploy, [thresh_arr[lr_transf_best_ind_panel20]])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9y--XlvYHHWQ" + }, + "source": [ + "The new transformed 2016 data model is again within original accuracy/fairness specs so is deployed" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "48SLB63AHHWQ" + }, + "source": [ + "## [10.](#Table-of-Contents) SUMMARY" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true, + "id": "pvC7jg_PHHWQ", + "outputId": "23be184f-38b5-4ff9-aa7b-1c759542fc30" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": " bal_acc \\\nBias Mitigator Classifier Training set Testing set \n Logistic Regression Panel19 Panel19 0.775935 \nReweighing Logistic Regression Panel19 Panel19 0.753893 \nReweighing Logistic Regression Panel19 Panel20 0.731136 \nReweighing Logistic Regression Panel19 Panel21 0.737916 \nReweighing Logistic Regression Panel20 Panel20 0.749024 \nReweighing Logistic Regression Panel20 Panel21 0.736958 \n\n avg_odds_diff \\\nBias Mitigator Classifier Training set Testing set \n Logistic Regression Panel19 Panel19 -0.205706 \nReweighing Logistic Regression Panel19 Panel19 -0.015104 \nReweighing Logistic Regression Panel19 Panel20 0.007135 \nReweighing Logistic Regression Panel19 Panel21 -0.014340 \nReweighing Logistic Regression Panel20 Panel20 0.015756 \nReweighing Logistic Regression Panel20 Panel21 -0.002077 \n\n disp_imp \\\nBias Mitigator Classifier Training set Testing set \n Logistic Regression Panel19 Panel19 0.426176 \nReweighing Logistic Regression Panel19 Panel19 0.751755 \nReweighing Logistic Regression Panel19 Panel20 0.805724 \nReweighing Logistic Regression Panel19 Panel21 0.744126 \nReweighing Logistic Regression Panel20 Panel20 0.946696 \nReweighing Logistic Regression Panel20 Panel21 0.830199 \n\n stat_par_diff \\\nBias Mitigator Classifier Training set Testing set \n Logistic Regression Panel19 Panel19 -0.261207 \nReweighing Logistic Regression Panel19 Panel19 -0.087196 \nReweighing Logistic Regression Panel19 Panel20 -0.059602 \nReweighing Logistic Regression Panel19 Panel21 -0.081262 \nReweighing Logistic Regression Panel20 Panel20 -0.018444 \nReweighing Logistic Regression Panel20 Panel21 -0.064846 \n\n eq_opp_diff \\\nBias Mitigator Classifier Training set Testing set \n Logistic Regression Panel19 Panel19 -0.222779 \nReweighing Logistic Regression Panel19 Panel19 -0.003518 \nReweighing Logistic Regression Panel19 Panel20 0.030262 \nReweighing Logistic Regression Panel19 Panel21 -0.004405 \nReweighing Logistic Regression Panel20 Panel20 -0.015005 \nReweighing Logistic Regression Panel20 Panel21 0.001623 \n\n theil_ind \nBias Mitigator Classifier Training set Testing set \n Logistic Regression Panel19 Panel19 0.092122 \nReweighing Logistic Regression Panel19 Panel19 0.096575 \nReweighing Logistic Regression Panel19 Panel20 0.101910 \nReweighing Logistic Regression Panel19 Panel21 0.099420 \nReweighing Logistic Regression Panel20 Panel20 0.098818 \nReweighing Logistic Regression Panel20 Panel21 0.095961 ", + "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
bal_accavg_odds_diffdisp_impstat_par_diffeq_opp_difftheil_ind
Bias MitigatorClassifierTraining setTesting set
Logistic RegressionPanel19Panel190.775935-0.2057060.426176-0.261207-0.2227790.092122
ReweighingLogistic RegressionPanel19Panel190.753893-0.0151040.751755-0.087196-0.0035180.096575
ReweighingLogistic RegressionPanel19Panel200.7311360.0071350.805724-0.0596020.0302620.101910
ReweighingLogistic RegressionPanel19Panel210.737916-0.0143400.744126-0.081262-0.0044050.099420
ReweighingLogistic RegressionPanel20Panel200.7490240.0157560.946696-0.018444-0.0150050.098818
ReweighingLogistic RegressionPanel20Panel210.736958-0.0020770.830199-0.0648460.0016230.095961
\n
" + }, + "metadata": {}, + "execution_count": 75 + } + ], + "source": [ + "results = [lr_orig_metrics, lr_transf_metrics,\n", + " lr_transf_metrics_panel20_deploy,\n", + " lr_transf_metrics_panel21_deploy,\n", + " lr_transf_metrics_panel20_test,\n", + " lr_transf_panel20_metrics_panel21_deploy]\n", + "debias = pd.Series([''] + ['Reweighing']*5, name='Bias Mitigator')\n", + "clf = pd.Series(['Logistic Regression']*6, name='Classifier')\n", + "tr = pd.Series(['Panel19']*4 + ['Panel20']*2, name='Training set')\n", + "te = pd.Series(['Panel19']*2 + ['Panel20', 'Panel21']*2, name='Testing set')\n", + "pd.concat([pd.DataFrame(m) for m in results], axis=0).set_index([debias, clf, tr, te])" + ] } - ], - "source": [ - "describe_metrics(lr_transf_panel20_metrics_panel21_deploy, [thresh_arr[lr_transf_best_ind_panel20]])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The new transformed 2016 data model is again within original accuracy/fairness specs so is deployed" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## [10.](#Table-of-Contents) SUMMARY" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": " bal_acc \\\nBias Mitigator Classifier Training set Testing set \n Logistic Regression Panel19 Panel19 0.775935 \nReweighing Logistic Regression Panel19 Panel19 0.753893 \nReweighing Logistic Regression Panel19 Panel20 0.731136 \nReweighing Logistic Regression Panel19 Panel21 0.737916 \nReweighing Logistic Regression Panel20 Panel20 0.749024 \nReweighing Logistic Regression Panel20 Panel21 0.736958 \n\n avg_odds_diff \\\nBias Mitigator Classifier Training set Testing set \n Logistic Regression Panel19 Panel19 -0.205706 \nReweighing Logistic Regression Panel19 Panel19 -0.015104 \nReweighing Logistic Regression Panel19 Panel20 0.007135 \nReweighing Logistic Regression Panel19 Panel21 -0.014340 \nReweighing Logistic Regression Panel20 Panel20 0.015756 \nReweighing Logistic Regression Panel20 Panel21 -0.002077 \n\n disp_imp \\\nBias Mitigator Classifier Training set Testing set \n Logistic Regression Panel19 Panel19 0.426176 \nReweighing Logistic Regression Panel19 Panel19 0.751755 \nReweighing Logistic Regression Panel19 Panel20 0.805724 \nReweighing Logistic Regression Panel19 Panel21 0.744126 \nReweighing Logistic Regression Panel20 Panel20 0.946696 \nReweighing Logistic Regression Panel20 Panel21 0.830199 \n\n stat_par_diff \\\nBias Mitigator Classifier Training set Testing set \n Logistic Regression Panel19 Panel19 -0.261207 \nReweighing Logistic Regression Panel19 Panel19 -0.087196 \nReweighing Logistic Regression Panel19 Panel20 -0.059602 \nReweighing Logistic Regression Panel19 Panel21 -0.081262 \nReweighing Logistic Regression Panel20 Panel20 -0.018444 \nReweighing Logistic Regression Panel20 Panel21 -0.064846 \n\n eq_opp_diff \\\nBias Mitigator Classifier Training set Testing set \n Logistic Regression Panel19 Panel19 -0.222779 \nReweighing Logistic Regression Panel19 Panel19 -0.003518 \nReweighing Logistic Regression Panel19 Panel20 0.030262 \nReweighing Logistic Regression Panel19 Panel21 -0.004405 \nReweighing Logistic Regression Panel20 Panel20 -0.015005 \nReweighing Logistic Regression Panel20 Panel21 0.001623 \n\n theil_ind \nBias Mitigator Classifier Training set Testing set \n Logistic Regression Panel19 Panel19 0.092122 \nReweighing Logistic Regression Panel19 Panel19 0.096575 \nReweighing Logistic Regression Panel19 Panel20 0.101910 \nReweighing Logistic Regression Panel19 Panel21 0.099420 \nReweighing Logistic Regression Panel20 Panel20 0.098818 \nReweighing Logistic Regression Panel20 Panel21 0.095961 ", - "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
bal_accavg_odds_diffdisp_impstat_par_diffeq_opp_difftheil_ind
Bias MitigatorClassifierTraining setTesting set
Logistic RegressionPanel19Panel190.775935-0.2057060.426176-0.261207-0.2227790.092122
ReweighingLogistic RegressionPanel19Panel190.753893-0.0151040.751755-0.087196-0.0035180.096575
ReweighingLogistic RegressionPanel19Panel200.7311360.0071350.805724-0.0596020.0302620.101910
ReweighingLogistic RegressionPanel19Panel210.737916-0.0143400.744126-0.081262-0.0044050.099420
ReweighingLogistic RegressionPanel20Panel200.7490240.0157560.946696-0.018444-0.0150050.098818
ReweighingLogistic RegressionPanel20Panel210.736958-0.0020770.830199-0.0648460.0016230.095961
\n
" - }, - "metadata": {}, - "execution_count": 75 + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.6" + }, + "colab": { + "provenance": [] } - ], - "source": [ - "results = [lr_orig_metrics, lr_transf_metrics,\n", - " lr_transf_metrics_panel20_deploy,\n", - " lr_transf_metrics_panel21_deploy,\n", - " lr_transf_metrics_panel20_test,\n", - " lr_transf_panel20_metrics_panel21_deploy]\n", - "debias = pd.Series([''] + ['Reweighing']*5, name='Bias Mitigator')\n", - "clf = pd.Series(['Logistic Regression']*6, name='Classifier')\n", - "tr = pd.Series(['Panel19']*4 + ['Panel20']*2, name='Training set')\n", - "te = pd.Series(['Panel19']*2 + ['Panel20', 'Panel21']*2, name='Testing set')\n", - "pd.concat([pd.DataFrame(m) for m in results], axis=0).set_index([debias, clf, tr, te])" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 + "nbformat": 4, + "nbformat_minor": 0 } \ No newline at end of file