{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## License \n", "\n", "Copyright 2020 - 2023 Patrick Hall (jphall@gwu.edu)\n", "\n", "Licensed under the Apache License, Version 2.0 (the \"License\");\n", "you may not use this file except in compliance with the License.\n", "You may obtain a copy of the License at\n", "\n", " http://www.apache.org/licenses/LICENSE-2.0\n", "\n", "Unless required by applicable law or agreed to in writing, software\n", "distributed under the License is distributed on an \"AS IS\" BASIS,\n", "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "See the License for the specific language governing permissions and\n", "limitations under the License." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**DISCLAIMER:** This notebook is not legal compliance advice." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Lecture 5: Debugging a Machine Learning Model\n", "\n", "This notebook provides a basic introduction to three practical model debugging techniques that can be applied to machine learning models: residual analysis, sensitivity analysis, and benchmark models. The notebook starts by loading the UCI credit card default dataset and using h2o to train a GBM model to predict credit card defaults. Then, residual analysis is used to discover and debug an issue with the GBM, and the GBM is retrained and improved. Sensitivity analysis is then conducted to test the GBM credit card default model for fairness and stability. The notebook closes by comparing the GBM predictions to a benchmark linear model's predictions. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Global hyperparameters" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "SEED = 12345" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Python imports and inits" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/patrickh/Workspace/GWU_rml/env_rml/lib/python3.6/site-packages/sklearn/ensemble/weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.\n", " from numpy.core.umath_tests import inner1d\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321 ..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: openjdk version \"1.8.0_252\"; OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1~18.04-b09); OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)\n", " Starting server from /home/patrickh/Workspace/GWU_rml/env_rml/lib/python3.6/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /tmp/tmpfp1yr6sh\n", " JVM stdout: /tmp/tmpfp1yr6sh/h2o_patrickh_started_from_python.out\n", " JVM stderr: /tmp/tmpfp1yr6sh/h2o_patrickh_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321 ... successful.\n", "Warning: Your H2O cluster version is too old (9 months and 25 days)! Please download and install the latest version from http://h2o.ai/download/\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
H2O cluster uptime:01 secs
H2O cluster timezone:America/New_York
H2O data parsing timezone:UTC
H2O cluster version:3.26.0.3
H2O cluster version age:9 months and 25 days !!!
H2O cluster name:H2O_from_python_patrickh_02yx74
H2O cluster total nodes:1
H2O cluster free memory:1.879 Gb
H2O cluster total cores:24
H2O cluster allowed cores:24
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
H2O API Extensions:Amazon S3, XGBoost, Algos, AutoML, Core V3, Core V4
Python version:3.6.9 final
" ], "text/plain": [ "-------------------------- ---------------------------------------------------\n", "H2O cluster uptime: 01 secs\n", "H2O cluster timezone: America/New_York\n", "H2O data parsing timezone: UTC\n", "H2O cluster version: 3.26.0.3\n", "H2O cluster version age: 9 months and 25 days !!!\n", "H2O cluster name: H2O_from_python_patrickh_02yx74\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 1.879 Gb\n", "H2O cluster total cores: 24\n", "H2O cluster allowed cores: 24\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "H2O API Extensions: Amazon S3, XGBoost, Algos, AutoML, Core V3, Core V4\n", "Python version: 3.6.9 final\n", "-------------------------- ---------------------------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from rmltk import explain, model # simple module for explaining and training models\n", "\n", "# h2o Python API and specific classes for gbm\n", "import h2o \n", "from h2o.estimators.gbm import H2OGradientBoostingEstimator\n", "import numpy as np # array, vector, matrix calculations\n", "import pandas as pd # DataFrame handling\n", "import shap # for visualizing Shapley values\n", "\n", "\n", "pd.options.display.max_columns = 999 # enable display of all columns in notebook\n", "\n", "# plotting functionality\n", "import matplotlib.pyplot as plt\n", "from matplotlib.lines import Line2D # necessary for custom legends\n", "import seaborn as sns\n", "\n", "# display plots in notebook\n", "%matplotlib inline\n", "\n", "h2o.init(max_mem_size='2G') # start h2o\n", "h2o.remove_all() # remove any existing data structures from h2o memory" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Download, Explore, and Prepare UCI Credit Card Default Data\n", "\n", "UCI credit card default data: https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients\n", "\n", "The UCI credit card default data contains demographic and payment information about credit card customers in Taiwan in the year 2005. The data set contains 23 input variables: \n", "\n", "* **`LIMIT_BAL`**: Amount of given credit (NT dollar)\n", "* **`SEX`**: 1 = male; 2 = female\n", "* **`EDUCATION`**: 1 = graduate school; 2 = university; 3 = high school; 4 = others \n", "* **`MARRIAGE`**: 1 = married; 2 = single; 3 = others\n", "* **`AGE`**: Age in years \n", "* **`PAY_0`, `PAY_2` - `PAY_6`**: History of past payment; `PAY_0` = the repayment status in September, 2005; `PAY_2` = the repayment status in August, 2005; ...; `PAY_6` = the repayment status in April, 2005. The measurement scale for the repayment status is: -1 = pay duly; 1 = payment delay for one month; 2 = payment delay for two months; ...; 8 = payment delay for eight months; 9 = payment delay for nine months and above. \n", "* **`BILL_AMT1` - `BILL_AMT6`**: Amount of bill statement (NT dollar). `BILL_AMNT1` = amount of bill statement in September, 2005; `BILL_AMT2` = amount of bill statement in August, 2005; ...; `BILL_AMT6` = amount of bill statement in April, 2005. \n", "* **`PAY_AMT1` - `PAY_AMT6`**: Amount of previous payment (NT dollar). `PAY_AMT1` = amount paid in September, 2005; `PAY_AMT2` = amount paid in August, 2005; ...; `PAY_AMT6` = amount paid in April, 2005. \n", "\n", "These 23 input variables are used to predict the target variable, whether or not a customer defaulted on their credit card bill in late 2005.\n", "\n", "Because h2o accepts both numeric and character inputs, some variables will be recoded into more transparent character values.\n", "\n", "**Also, best practices and regulations can prohibit the use of demographic variables in credit lending models. This notebook uses them in the model only for educational purposes!**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Import data and clean" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# import XLS file\n", "path = 'default_of_credit_card_clients.xls'\n", "data = pd.read_excel(path,\n", " skiprows=1)\n", "\n", "# remove spaces from target column name \n", "data = data.rename(columns={'default payment next month': 'DEFAULT_NEXT_MONTH'}) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Assign modeling roles" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "y_name = DEFAULT_NEXT_MONTH\n", "x_name = ['LIMIT_BAL', 'SEX', 'EDUCATION', 'MARRIAGE', 'AGE', 'PAY_0', 'PAY_2', 'PAY_3', 'PAY_4', 'PAY_5', 'PAY_6', 'BILL_AMT1', 'BILL_AMT2', 'BILL_AMT3', 'BILL_AMT4', 'BILL_AMT5', 'BILL_AMT6', 'PAY_AMT1', 'PAY_AMT2', 'PAY_AMT3', 'PAY_AMT4', 'PAY_AMT5', 'PAY_AMT6']\n" ] } ], "source": [ "# assign target and inputs for GBM\n", "y_name = 'DEFAULT_NEXT_MONTH'\n", "x_names = [name for name in data.columns if name not in [y_name, 'ID']]\n", "print('y_name =', y_name)\n", "print('x_name =', x_names)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Helper function for recoding values in the UCI credict card default data" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "def recode_cc_data(frame):\n", " \n", " \"\"\" Recodes numeric categorical variables into categorical character variables\n", " with more transparent values. \n", " \n", " Args:\n", " frame: Pandas DataFrame version of UCI credit card default data.\n", " \n", " Returns: \n", " H2OFrame with recoded values.\n", " \n", " \"\"\"\n", " \n", " # define recoded values\n", " sex_dict = {1:'male', 2:'female'}\n", " education_dict = {0:'other', 1:'graduate school', 2:'university', 3:'high school', \n", " 4:'other', 5:'other', 6:'other'}\n", " marriage_dict = {0:'other', 1:'married', 2:'single', 3:'divorced'}\n", " pay_dict = {-2:'no consumption', -1:'pay duly', 0:'use of revolving credit', 1:'1 month delay', \n", " 2:'2 month delay', 3:'3 month delay', 4:'4 month delay', 5:'5 month delay', 6:'6 month delay', \n", " 7:'7 month delay', 8:'8 month delay', 9:'9+ month delay'}\n", " \n", " # recode values using Pandas apply() and anonymous function\n", " frame['SEX'] = frame['SEX'].apply(lambda i: sex_dict[i])\n", " frame['EDUCATION'] = frame['EDUCATION'].apply(lambda i: education_dict[i]) \n", " frame['MARRIAGE'] = frame['MARRIAGE'].apply(lambda i: marriage_dict[i]) \n", " for name in frame.columns:\n", " if name in ['PAY_0', 'PAY_2', 'PAY_3', 'PAY_4', 'PAY_5', 'PAY_6']:\n", " frame[name] = frame[name].apply(lambda i: pay_dict[i]) \n", " \n", " return h2o.H2OFrame(frame)\n", "\n", "data = recode_cc_data(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Ensure target is handled as a categorical variable\n", "In h2o, a numeric variable can be treated as numeric or categorical. The target variable `DEFAULT_NEXT_MONTH` takes on values of `0` or `1`. To ensure this numeric variable is treated as a categorical variable, the `asfactor()` function is used to explicitly declare that it is a categorical variable. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "data[y_name] = data[y_name].asfactor() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Display descriptive statistics" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rows:30000\n", "Cols:25\n", "\n", "\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
ID LIMIT_BAL SEX EDUCATION MARRIAGE AGE PAY_0 PAY_2 PAY_3 PAY_4 PAY_5 PAY_6 BILL_AMT1 BILL_AMT2 BILL_AMT3 BILL_AMT4 BILL_AMT5 BILL_AMT6 PAY_AMT1 PAY_AMT2 PAY_AMT3 PAY_AMT4 PAY_AMT5 PAY_AMT6 DEFAULT_NEXT_MONTH
type int int enum enum enum int enum enum enum enum enum enum int int int int int int int int int int int int enum
mins 1.0 10000.0 21.0 -165580.0 -69777.0 -157264.0 -170000.0 -81334.0 -339603.0 0.0 0.0 0.0 0.0 0.0 0.0
mean 15000.5 167484.32266666688 35.48549999999994 51223.3309000000949179.0751666666847013.1547999997143262.9489666666 40311.4009666665338871.760399999915663.580500000014 5921.16350000001 5225.681500000005 4826.076866666661 4799.387633333302 5215.502566666664
maxs 30000.0 1000000.0 79.0 964511.0 983931.0 1664089.0 891586.0 927171.0 961664.0 873552.0 1684259.0 896040.0 621000.0 426529.0 528666.0
sigma 8660.398374208891129747.66156720225 9.21790406809016 73635.8605755295971173.7687825283669349.3874270368164332.8561339164160797.1557702648 59554.1075367457416563.28035402576323040.87040205722617606.96146980311515666.15974403199315278.30567914479317777.465775435332
zeros 0 0 0 2008 2506 2870 3195 3506 4020 5249 5396 5968 6408 6703 7173
missing0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1.0 20000.0 femaleuniversity married 24.0 2 month delay 2 month delay pay duly pay duly no consumption no consumption 3913.0 3102.0 689.0 0.0 0.0 0.0 0.0 689.0 0.0 0.0 0.0 0.0 1
1 2.0 120000.0 femaleuniversity single 26.0 pay duly 2 month delay use of revolving credituse of revolving credituse of revolving credit2 month delay 2682.0 1725.0 2682.0 3272.0 3455.0 3261.0 0.0 1000.0 1000.0 1000.0 0.0 2000.0 1
2 3.0 90000.0 femaleuniversity single 34.0 use of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credit29239.0 14027.0 13559.0 14331.0 14948.0 15549.0 1518.0 1500.0 1000.0 1000.0 1000.0 5000.0 0
3 4.0 50000.0 femaleuniversity married 37.0 use of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credit46990.0 48233.0 49291.0 28314.0 28959.0 29547.0 2000.0 2019.0 1200.0 1100.0 1069.0 1000.0 0
4 5.0 50000.0 male university married 57.0 pay duly use of revolving creditpay duly use of revolving credituse of revolving credituse of revolving credit8617.0 5670.0 35835.0 20940.0 19146.0 19131.0 2000.0 36681.0 10000.0 9000.0 689.0 679.0 0
5 6.0 50000.0 male graduate schoolsingle 37.0 use of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credit64400.0 57069.0 57608.0 19394.0 19619.0 20024.0 2500.0 1815.0 657.0 1000.0 1000.0 800.0 0
6 7.0 500000.0 male graduate schoolsingle 29.0 use of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credit367965.0 412023.0 445007.0 542653.0 483003.0 473944.0 55000.0 40000.0 38000.0 20239.0 13750.0 13770.0 0
7 8.0 100000.0 femaleuniversity single 23.0 use of revolving creditpay duly pay duly use of revolving credituse of revolving creditpay duly 11876.0 380.0 601.0 221.0 -159.0 567.0 380.0 601.0 0.0 581.0 1687.0 1542.0 0
8 9.0 140000.0 femalehigh school married 28.0 use of revolving credituse of revolving credit2 month delay use of revolving credituse of revolving credituse of revolving credit11285.0 14096.0 12108.0 12211.0 11793.0 3719.0 3329.0 0.0 432.0 1000.0 1000.0 1000.0 0
9 10.0 20000.0 male high school single 35.0 no consumption no consumption no consumption no consumption pay duly pay duly 0.0 0.0 0.0 0.0 13007.0 13912.0 0.0 0.0 0.0 13007.0 1122.0 0.0 0
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Train an H2O GBM classifier" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Split data into training and test sets for early stopping" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train data rows = 21060, columns = 25\n", "Validation data rows = 8940, columns = 25\n" ] } ], "source": [ "# split into training and validation\n", "train, valid = data.split_frame([0.7], seed=SEED)\n", "\n", "# summarize split\n", "print('Train data rows = %d, columns = %d' % (train.shape[0], train.shape[1]))\n", "print('Validation data rows = %d, columns = %d' % (valid.shape[0], valid.shape[1]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Train h2o GBM classifier\n", "Many tuning parameters must be specified to train a GBM using h2o. Typically a grid search would be performed to identify the best parameters for a given modeling task using the `H2OGridSearch` class. For brevity's sake, a previously-discovered set of good tuning parameters are specified here." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm Model Build progress: |███████████████████████████████████████████████| 100%\n", "GBM Validation AUC = 0.7804\n" ] } ], "source": [ "# initialize GBM model\n", "gbm = H2OGradientBoostingEstimator(ntrees=150, # maximum 150 trees in GBM\n", " max_depth=4, # trees can have maximum depth of 4\n", " sample_rate=0.9, # use 90% of rows in each iteration (tree)\n", " col_sample_rate=0.9, # use 90% of variables in each iteration (tree)\n", " stopping_rounds=5, # stop if validation error does not decrease for 5 iterations (trees)\n", " seed=SEED) # for reproducibility\n", "\n", "# train a GBM model\n", "gbm.train(y=y_name, x=x_names, training_frame=train, validation_frame=valid)\n", "\n", "# print AUC\n", "print('GBM Validation AUC = %.4f' % gbm.auc(valid=True))\n", "\n", "# uncomment to see model details\n", "# print(model) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Display Shapley variable importance" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "shap_contribs_hf = gbm.predict_contributions(valid)\n", "shap_contribs_matrix = shap_contribs_hf.as_data_frame().values\n", "shap_contribs = shap_contribs_matrix[:,:-1] # remove constant intercept column\n", "shap.summary_plot(shap_contribs, x_names, plot_type='bar')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`PAY_0` is by far the most important variable in the model. Perhaps too important, as will be demonstrated below." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Conduct Residual Analysis to Debug Model\n", "Residuals refer to the difference between the recorded value of a dependent variable and the predicted value of a dependent variable for every row in a data set. Plotting the residual values against the predicted values is a time-honored model assessment technique and a great way to see all your modeling results in two dimensions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Bind model predictions onto validation data \n", "To calculate the residuals for our GBM model, first the model predictions are merged onto the validation set. The validation data is used here to see how the model behaves on holdout data, which should be closer to its behavior on new data than analyzing residuals for the training inputs and predictions." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm prediction progress: |████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "yhat_name = 'p_DEFAULT_NEXT_MONTH'\n", "preds1 = gbm.predict(valid).drop(['predict', 'p0'])\n", "preds1.columns = [yhat_name]\n", "valid_yhat = valid.cbind(preds1[yhat_name])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Calculate logloss residuals for binomial classification\n", "Logloss is one measure the GBM model used to make it's decisions. Logloss residuals can be calculated, analyzed, and explained in many ways to understand more about the model's errors. " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean logloss residual: 0.431811\n", "Logloss from h2o 0.431811\n" ] } ], "source": [ "# shortcut name\n", "resid_name = 'r_DEFAULT_NEXT_MONTH' \n", "\n", "# convert to pandas for easier handling\n", "valid_yhat_df = valid_yhat.as_data_frame()\n", "\n", "# calculate logloss residuals\n", "valid_yhat_df[resid_name] = -valid_yhat_df[y_name]*np.log(valid_yhat_df[yhat_name]) -\\\n", " (1 - valid_yhat_df[y_name])*np.log(1 - valid_yhat_df[yhat_name]) \n", " \n", "# check that logloss is calculated correctly\n", "print('Mean logloss residual: %.6f' % valid_yhat_df[resid_name].mean())\n", "print('Logloss from h2o %.6f' % gbm.logloss(valid=True))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot residuals\n", "Plotting residuals is a model debugging and diagnostic tool that enables users to see modeling results, and any anomolies, in a single two-dimensional plot. Here the pink points represent customers who defaulted, and the blue points represent customers who did not. A few potential outliers are visible. There appear to be several cases in the validation data with relatively large residuals. Understanding and addressing the factors that cause these outliers could lead to a more acccurate model." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfYAAAHxCAYAAACf7p4EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xl4nFX5//H3PZO1adp0SQs0QFkEytaCDSKbgqKgRUTZNwGVLwgKlp8IiiB1RRbZBQQEFAvILlCQRUAMAi1LaakoS2vLlrYkzd5MMuf3x5lpkzSZeZLMlpnP67rmyszznJm5J13uOee5zznmnENERETyQyjbAYiIiEjqKLGLiIjkESV2ERGRPKLELiIikkeU2EVERPKIEruIiEgeUWIXGQQzu8XMfh6wrTOzrYf4PkvN7PNDee4Q329qLN6iTL1nOpjZYjP77ADnPmtmK1L0Pk+b2bdS8VoiqabELtKDmR1pZi+YWauZ1cfuf8fMLNuxxQ3my0Wuin1xaTezFjP7MPaZRg/3dZ1zOzjnnk5BiCIjlhK7SIyZnQVcAVwMbARMBk4B9gRKshhavjrIOTcamAHsApyb5XhE8oISuwhgZmOBOcB3nHN3O+eanfeKc+4Y59zaAZ73bTN7y8w+NrMHzWyTPk2+ZGbvmNkqM7vYzEKx521lZk+Z2erYudvNrCoFn2MPM3vJzNbEfu7R49wWZvasmTWb2RNmdo2Z/WmA19kk9nk+jn2+b/c4t5uZzTezJjP7yMwuix0vM7M/xT5TY+z9JyeL2Tn3IfAYPsHH36PUzC4xs//F3uM6MyuPnZtoZg/F3uNjM/tHj9/ruksYZlYeGwloMLM3gNo+n7HXpZKeIyFmNi72Hitjz3/IzGoG+F1tbWbPxH7nq8zszmSfWSSdlNhFvE8DpcADQZ9gZvsBvwIOBzYGlgF39Gl2CDAT2BU4GDgp/vTYczcBpgGbAj8dcvQ+nvHAw8CVwATgMuBhM5sQa/Jn4MXYuZ8CxyV4uTuAFbH4DgV+Gfu84Ec1rnDOjQG2Au6KHf8GMDb2WSbgRzvaA8RdAxwIvNXj8K+BbfDJfmtgCnB+7NxZsdiq8aMqPwL6Wxv7glh8WwFfjMUXVAj4A7A5sFnsc1w9QNufAX8DxgE1wFWDeB+RlFNiF/EmAqucc13xA2ZWF+sVtpvZPv085xjgZufcy7Ee/bnAp81sao82FznnPnbO/Q+4HDgKwDn3lnPucefcWufcSnwS/swwP8OXgf865/7onOtyzs0F/g0cZGab4Xus5zvnOp1zzwEP9vciZrYp/vLDD51zHc65V4EbgeNjTSLA1mY20TnX4pz7V4/jE4CtnXPdzrkFzrmmBPHeb2bNwHKgHp+IidUznAx8P/a7awZ+CRzZ4302BjZ3zkWcc/9w/W96cTjwi9hrLMd/4QnEObfaOXePc64t9v6/YOA/nwj+C8Amsd/Xc0HfRyQdlNhFvNXAxJ5V4c65PZxzVbFz/f1b2QTfS4+3b4m1ndKjzfIe95fFnoOZTTazO8zsPTNrAv6E/3IxHL3i6fGeU2LnPnbOtQ0QW9/XiSfUvq8D8E18b/rfseH2WbHjf8QPqd9hZu+b2W/MrDhBvF91zlUCnwW2Y/3nrwZGAQtiX6wagUdjx8HXQLwF/C12meOcBJ+j7+8/EDMbZWbXm9my2J/Ps0CVmYX7aX42fgTmRfNV+Sf100YkY5TYRbzngbX44fKg3sf31AAwswp8j/W9Hm027XF/s9hzwPdAHbBTbEj7WHxyGI5e8fR4z/eAD4DxZjZqgNj6vs54M6vs53Vwzv3XOXcUMAm4CLjbzCpivecLnXPbA3sAs1jfyx+Qc+4Z4BbgktihVfih7x2cc1Wx29hYoR2x+oeznHNbAl8BZpvZ5/p56Q/Y8PffUxv+C0TcRj3unwVsC3wq9ucTH7HZ4M/IOfehc+7bzrlNgP8DrrUhTnMUSQUldhHAOdcIXIj/T/lQM6s0s5CZzQAqBnjaXOBEM5thZqX4ZP2Cc25pjzY/iBVibQqcAcQLqyqBFmCNmU0BfjDIkMOxYrX4rQR4BNjGzI42syIzOwLYHnjIObcMmA/81MxKzOzTwEED/C6WA3XAr2KvvTO+l/4nADM71syqnXNRoDH2tKiZ7WtmO8V6tU34IepowM9zObC/mU2Pve7vgd+a2aTYe04xsy/G7s+KFawZsAboHuB97gLOjf3+a4Dv9jn/KnC0mYXN7AB6D7VX4r9cNMZqFy4YKHAzO6xHYV0D/gtb0M8tknJK7CIxzrnfALPxQ6sfxW7XAz/EJ7q+7Z8AfgLcg+8dbsX668BxDwAL8EnkYeCm2PEL8QV1a2LH7x1kuOfgE0/89pRzbjW+l3wW/pLA2cAs59yq2HOOwRcJrgZ+jv+S0W+1P74WYCq+934fcEHs8wIcACw2sxZ8Id2Rzrl2fI/3bnxSXwI8gx+eTypWZ3Ab6wvkfogfbv9XbCj8CXwPGuATscct+JGWa51zf+/nZS/ED7+/iy9u6xvLGfgvN4343839Pc5dDpTjRw/+hb8UMJBa4IXY7+NB4Azn3DtJPrJI2lj/NSciku9i07L+7ZwbsDcqIiOPeuwiBcLMas3Pnw/Fhp4PpncvVUTywIheF1pEBmUj/JD/BPw88FOdc69kNyQRSTUNxYuIiOQRDcWLiIjkESV2ERGRPDIir7FPnDjRTZ06NdthiIiIZMyCBQtWOeeqk7UbkYl96tSpzJ8/P9thiIiIZIyZBVoWWUPxIiIieUSJXUREJI8osYuIiOSREXmNXUQklSKRCCtWrKCjoyPboYhQVlZGTU0NxcWJdj0emBK7iBS8FStWUFlZydSpU/Gbxolkh3OO1atXs2LFCrbYYoshvYaG4kWk4HV0dDBhwgQldck6M2PChAnDGj1SYhcRASV1yRnD/buoxC4iIpJHlNhFRHJAOBxmxowZ7LDDDkyfPp1LL72UaDQKwNNPP83YsWOZMWPGutsTTzzR63nx29KlS9e95plnnsmUKVPWvQ7AT3/6Uy655JJe7z116lRWrVoFwOjRo3udmzNnzrrX7vle11xzTb+f47zzzmP06NHrXq/na3Z1dW0Q78UXX0xXVxczZszgn//857rn7Lffftx3333MnDmTGTNmsNlmm1FdXb3uecuXL+/3/Wtqath33317Hdtxxx2ZMWPGusfPPvsstbW1bLfddmy33XbcdNNNSeOvr69f994bbbQRU6ZMWfd47dq1VFVV9XrPG2+8kTPPPHOD+JxzfOc732Hrrbdm55135tVXX+33cwyHiudERAapviHCm8siNDZ3U1UZZtvNi5k0bmgVzHHl5eXr/pOvr6/n6KOPpqmpiQsvvBCAvffem4ceeijh83qKRqPcd999bLrppjzzzDMbJLugzj//fM4//3y6urqYOHFioEQ0fvx4fvvb3/KLX/xig3OVlZX9vsY111zDaaedxvz585k7dy6jRo3ikEMO4ZBDDgF8oly0aBGXX3550vdvbGzk/fffZ5NNNuH111+nqGh9qnv//fc59thjefDBB5kxYwYrV67kC1/4AlOmTOGAAw4YMP5Jkyati/u8885j4sSJ6xJ3V1dX0pji/vrXv7J8+XLeeustnnvuOU477bReX2hSQT12EZFBqG+IULewnY61UcaNCdGxNkrdwnbqGyIpe49JkyZxww03cPXVVzPUrbWffvppdthhB0499VTmzp2bstiC+Na3vsXtt9/OmjVrAj9nzz335JOf/CQXXnghP/nJT7jyyiuH/P6HHXYYd911FwBz587lqKOOWnfuqquu4lvf+ta6Hnx1dTW//vWvueiii4YVf1APPPAAxx9/PAB77bUXH374IStXrkzpeyixi4gMwpvLIlSUhagoDxEyo6I8REVZiDeXpS6xA2y55ZZ0d3dTX18PwD/+8Y9eQ9hvv/02AO3t7euOxXu3sD6hHXLIITz88MNEIqmNL5ExY8Zw/PHH95ucm5ube32Ou+++e925iy66iEsuuYRvfOMbbLnllkN+/8MOO2zd6z788MN8+ctfXndu8eLFfPKTn+zVfubMmSxevDhQ/APp+7nmzJnTb7v33nuPTTfddN3jmpoa3nvvvcDvE4SG4kVEBqGxuZtxY3r3icrLjIam7rS+72CG4js7O3nkkUe47LLLqKys5FOf+hSPPfYYs2bNGrDiOtWzAs4880x23XVXvv/97/c6PtBQPPhRhnHjxrFo0aJhvXd1dTUVFRXccccdTJ8+nbKyskG/xkDxD6Tv54pfOsgG9dhFRAahqjJMe0fv4fH2DkdVZTil7/POO+8QDoeZNGnSoJ/72GOP0djYyE477cTUqVN57rnn1g3HT5gwgYaGhl7tm5ubNyj+Gq7x48dz+OGHc9111wVq39LSwjnnnMMzzzzD8uXLeeyxx4b1/kcccQSnnXZar2F4gO23354FCxb0OrZgwQJ22GGHYcUf1JQpU3oV/q1YsYIpU6ak9D2U2EVEBmHbzYtp7YjS2h4l6hyt7VFaO6Jsu/nwiud6WrlyJaeccgqnn376kHrSc+fO5cYbb2Tp0qUsXbqUd999l8cff5y2tjb22WcfHnzwQZqbmwG49957mT59OuFwar+YAJx11llce+21varyB3LBBRdw7LHH8olPfIJrr72WM888k87OziG/99e//nXOPvts9t9//17HTz/9dG688UYWLlwIwKpVqzj33HM5++yzhxV/UF/5yle47bbbAHjuueeYPHky1dVJt1gfFA3F97QCeAlYCVQD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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ " # initialize figure\n", "fig, ax_ = plt.subplots(figsize=(8, 8)) \n", "\n", "# plot groups with appropriate color\n", "color_list = ['royalblue', 'magenta'] \n", "c_idx = 0\n", "groups = valid_yhat_df.groupby(y_name) # define groups for levels of PAY_0\n", "for name, group in groups:\n", " ax_.plot(group.p_DEFAULT_NEXT_MONTH, group.r_DEFAULT_NEXT_MONTH, \n", " label=' '.join([y_name, str(name)]),\n", " marker='o', linestyle='', color=color_list[c_idx], alpha=0.3)\n", " c_idx += 1\n", " \n", "# annotate plot\n", "_ = plt.xlabel(yhat_name)\n", "_ = plt.ylabel(resid_name)\n", "_ = ax_.legend(loc=1)\n", "_ = plt.title('Global Logloss Residuals')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some high-magnitude outlying residuals are visible. Who are these customers? Why is the model so wrong about them? And are they somehow exerting undue influence on other predictions? The model could be retrained without these individuals and retested as a potentially remediation strategy. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Sort data by residuals and display data and residuals\n", "Printing a table with model inputs, actual target values, and model predictions sorted by residuals is another simple way to analyze residuals. Customers that defaulted, but were predicted not to, are listed at the top of the table below. The next table contains customers who were predicted to default, but then did not. Also notice the jumps in residual values. These are the potential outliers pictured in the residual plot above. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### `DEFAULT_NEXT_MONTH = 1` residuals" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IDLIMIT_BALSEXEDUCATIONMARRIAGEAGEPAY_0PAY_2PAY_3PAY_4PAY_5PAY_6BILL_AMT1BILL_AMT2BILL_AMT3BILL_AMT4BILL_AMT5BILL_AMT6PAY_AMT1PAY_AMT2PAY_AMT3PAY_AMT4PAY_AMT5PAY_AMT6DEFAULT_NEXT_MONTHp_DEFAULT_NEXT_MONTHr_DEFAULT_NEXT_MONTH
02561310000femalegraduate schoolsingle32no consumptionno consumptionno consumptionno consumptionno consumptionno consumption201388267659938543169575082676600885431695750735010.0458373.082662
13016350000malegraduate schoolmarried38no consumptionno consumptionpay dulyuse of revolving credituse of revolving creditno consumption1645941204416435233884992494144743088499241082410.0502302.991137
211462210000femalegraduate schoolsingle46pay dulypay dulypay dulyuse of revolving credituse of revolving creditpay duly1565539182988124247216641556485430366043315561404710.0505272.985238
325772350000femalegraduate schoolmarried33use of revolving creditpay dulypay dulypay dulypay dulypay duly82964685321792617966307413108868940180181805830897312448846110.0515032.966110
46933500000malegraduate schoolsingle37pay dulypay dulypay dulypay dulypay dulypay duly4331604463059215416713410254266044630594150843163881254263952610.0517172.961960
\n", "
" ], "text/plain": [ " ID LIMIT_BAL SEX EDUCATION MARRIAGE AGE \\\n", "0 2561 310000 female graduate school single 32 \n", "1 3016 350000 male graduate school married 38 \n", "2 11462 210000 female graduate school single 46 \n", "3 25772 350000 female graduate school married 33 \n", "4 6933 500000 male graduate school single 37 \n", "\n", " PAY_0 PAY_2 PAY_3 \\\n", "0 no consumption no consumption no consumption \n", "1 no consumption no consumption pay duly \n", "2 pay duly pay duly pay duly \n", "3 use of revolving credit pay duly pay duly \n", "4 pay duly pay duly pay duly \n", "\n", " PAY_4 PAY_5 PAY_6 \\\n", "0 no consumption no consumption no consumption \n", "1 use of revolving credit use of revolving credit no consumption \n", "2 use of revolving credit use of revolving credit pay duly \n", "3 pay duly pay duly pay duly \n", "4 pay duly pay duly pay duly \n", "\n", " BILL_AMT1 BILL_AMT2 BILL_AMT3 BILL_AMT4 BILL_AMT5 BILL_AMT6 PAY_AMT1 \\\n", "0 20138 8267 65993 8543 1695 750 8267 \n", "1 16459 4120 44164 35233 884 9924 941 \n", "2 15655 3918 29881 24247 21664 1556 4854 \n", "3 82964 68532 17926 17966 30741 31088 68940 \n", "4 4331 60446 30592 154167 13410 25426 60446 \n", "\n", " PAY_AMT2 PAY_AMT3 PAY_AMT4 PAY_AMT5 PAY_AMT6 DEFAULT_NEXT_MONTH \\\n", "0 66008 8543 1695 750 7350 1 \n", "1 44743 0 884 9924 10824 1 \n", "2 30366 0 433 1556 14047 1 \n", "3 18018 18058 30897 31244 88461 1 \n", "4 30594 150843 163881 25426 39526 1 \n", "\n", " p_DEFAULT_NEXT_MONTH r_DEFAULT_NEXT_MONTH \n", "0 0.045837 3.082662 \n", "1 0.050230 2.991137 \n", "2 0.050527 2.985238 \n", "3 0.051503 2.966110 \n", "4 0.051717 2.961960 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valid_yhat_df1 = valid_yhat_df[valid_yhat_df[y_name] == 1]\n", "valid_yhat_df1 = valid_yhat_df1.sort_values(by='r_DEFAULT_NEXT_MONTH', ascending=False).reset_index(drop=True)\n", "valid_yhat_df1.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### `DEFAULT_NEXT_MONTH = 0` residuals" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IDLIMIT_BALSEXEDUCATIONMARRIAGEAGEPAY_0PAY_2PAY_3PAY_4PAY_5PAY_6BILL_AMT1BILL_AMT2BILL_AMT3BILL_AMT4BILL_AMT5BILL_AMT6PAY_AMT1PAY_AMT2PAY_AMT3PAY_AMT4PAY_AMT5PAY_AMT6DEFAULT_NEXT_MONTHp_DEFAULT_NEXT_MONTHr_DEFAULT_NEXT_MONTH
05916110000femalegraduate schoolmarried412 month delay2 month delay7 month delay7 month delay7 month delay7 month delay15015015015015015000000000.8864682.175667
19672170000malegraduate schoolsingle482 month delay2 month delay7 month delay7 month delay7 month delay7 month delay24002400240024002400240000000000.8740182.071614
222725100000femaleuniversitymarried383 month delay2 month delay2 month delay3 month delay3 month delay3 month delay75075075075075075000000150000.8690512.032945
319316110000femalegraduate schoolmarried413 month delay2 month delay2 month delay7 month delay7 month delay7 month delay15015015015015015000000000.8665682.014160
42950520000maleuniversitymarried401 month delay2 month delay3 month delay2 month delay3 month delay3 month delay148291726716706186941904918459300002560955066100.8527811.915832
\n", "
" ], "text/plain": [ " ID LIMIT_BAL SEX EDUCATION MARRIAGE AGE PAY_0 \\\n", "0 5916 110000 female graduate school married 41 2 month delay \n", "1 9672 170000 male graduate school single 48 2 month delay \n", "2 22725 100000 female university married 38 3 month delay \n", "3 19316 110000 female graduate school married 41 3 month delay \n", "4 29505 20000 male university married 40 1 month delay \n", "\n", " PAY_2 PAY_3 PAY_4 PAY_5 PAY_6 \\\n", "0 2 month delay 7 month delay 7 month delay 7 month delay 7 month delay \n", "1 2 month delay 7 month delay 7 month delay 7 month delay 7 month delay \n", "2 2 month delay 2 month delay 3 month delay 3 month delay 3 month delay \n", "3 2 month delay 2 month delay 7 month delay 7 month delay 7 month delay \n", "4 2 month delay 3 month delay 2 month delay 3 month delay 3 month delay \n", "\n", " BILL_AMT1 BILL_AMT2 BILL_AMT3 BILL_AMT4 BILL_AMT5 BILL_AMT6 PAY_AMT1 \\\n", "0 150 150 150 150 150 150 0 \n", "1 2400 2400 2400 2400 2400 2400 0 \n", "2 750 750 750 750 750 750 0 \n", "3 150 150 150 150 150 150 0 \n", "4 14829 17267 16706 18694 19049 18459 3000 \n", "\n", " PAY_AMT2 PAY_AMT3 PAY_AMT4 PAY_AMT5 PAY_AMT6 DEFAULT_NEXT_MONTH \\\n", "0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 \n", "2 0 0 0 0 1500 0 \n", "3 0 0 0 0 0 0 \n", "4 0 2560 955 0 661 0 \n", "\n", " p_DEFAULT_NEXT_MONTH r_DEFAULT_NEXT_MONTH \n", "0 0.886468 2.175667 \n", "1 0.874018 2.071614 \n", "2 0.869051 2.032945 \n", "3 0.866568 2.014160 \n", "4 0.852781 1.915832 " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valid_yhat_df0 = valid_yhat_df[valid_yhat_df[y_name] == 0]\n", "valid_yhat_df0 = valid_yhat_df0.sort_values(by='r_DEFAULT_NEXT_MONTH', ascending=False).reset_index(drop=True)\n", "valid_yhat_df0.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This simple analysis has uncovered some of the most difficult customers for the GBM to correctly predict default. Perhaps because of the high importance of the payment variables, `PAY_0`-`PAY_6`, the GBM struggles to correctly predict several cases in which customers made timely recent payments and then suddenly defaulted and those customers that were chronically late making payments but did not default." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot residuals by most important input variable \n", "Residuals can also be plotted for important input variables to understand how the values of a single input variable affect prediction errors. When plotted by `PAY_0`, the residuals confirm that the GBM is struggling to accurately predict cases where default status is not correlated with recent payment behavior in an obvious way." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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0ks1nv/ZZ59VUlKS+vXrpy+//PKYy5uamqoLL7xQycnJSk5OVnp6+jGf01ebNm3Sp59+6nn/zDPPaOHChUd1jhkzZig1NfWIx/Tu3Vs5OTn+FBFBFmr1RZLeeust9evXT/3799f9998fkHP6gvrSsIVaXXn66ac995XLL79cXbt2PeZz+oq6glCrL7t27dLIkSM1aNAgDRo0SF988cUxn9NX1JfAIpgKgOjoaC1btkxvv/22wsPD9eqrr3r2paWl6bzzzvMELHFxcRo7dqwee+wxSdL69eu1adMmjRgxotpzb9myRR9++KHS09M1d+5c/fWvfw1ImQcOHKhly5Zp2bJluuKKKwJyTl9s2rRJK1eurLXrof4Jtfqyfft2LViwQK+//rrS0tJ02223HfM5fUV9adhCra7cdtttnvvKDTfcoKSkpGM+p6+oKwi1+vLPf/5T/fv315tvvqkHHnhAM2fOPOZz+or6ElhhdV2A403Xrl21ZcsWSVJubq6+//57Pffcc5o2bZpGjRolSRo6dKhSU1O1Zs0aPf7443rggQfkcDiqPd/HH3+s/v37Kzw8XG3btlXjxo21bds2tW3bNqjfY82aNZo7d66io6P1ww8/aMCAAWrTpo1efvllFRUV6R//+IdOOeUU7dy5U/fee6+ysrLUokULPfroo2rRooXuueceNW7cWN9++61+//133XffferevbvmzJmjgoICffHFF7r11lslSVu3btWIESO0Z88e3XLLLRo6dGiV8sydO1dvvfWWmjdvrri4OCUkJEiSvv32W/3tb3/TwYMH1aJFC82cOVNxcXGVPjtu3Djt2bNHRUVFGjNmjAYNGqQlS5Zo+/btuvvuuyVJ8+fPV1FRkW655Zag/ruislCoL0uWLNG1116rJk2aSJKaNWtW5RjqC4ItFOpKRenp6brpppuqbKeuoDaEQn2x2WzKy8uTJOXl5al58+ZVjqG+hAgLx6xLly6WZVlWcXGxNXbsWOuVV16xLMuyli5daj3wwAOWZVlW//79rV9++cXzmU2bNlmJiYnWtGnTjnjuBx980Hr77bc972+77TZr1apVVY6bMGGCdeWVV1b5+eSTT6ocu3TpUuuiiy6yBgwYYE2aNMnau3dvlWM+//xzKzEx0dq3b59VUFBgXXTRRdYzzzxjWZZlLViwwJo5c6ZlWZZ18803W8uXL7csy7L+9a9/WZMnT7Ysy7Luvvtua9KkSZbL5bLWr19vDR482HPt6dOne64zZ84ca/jw4VZRUZG1Z88e66KLLqpSlvXr11uDBg2yCgoKrP3791sXXXSRtXTpUquoqMgaPny4tX//fsuyLOu1117zlKtXr15Wdna2ZVmWdeDAAcuyLCs/P9/q27evdfDgQSsvL89KSkqySkpKLMuyrIEDB1q7du2q+T8EAibU6sstt9xizZw507rmmmusa665xlqzZk2VY6gvCIZQqytumZmZ1h//+EeruLi4yj7qCoIl1OpLZmamNWDAAKtnz57WhRdeaP34449VjqG+hAZ6pgIgPz9fycnJkqTExERPNJ+WluZpmevXr5/S09N18803S5I6duyo9u3ba9iwYQEpw5w5c3w+tlevXhowYICcTqcWLlyov/71r/r73/9e5bhzzjlHJ554oiTp1FNPVY8ePSRJHTp00FdffSVJ+uabbzyfHTx4cKUxt3369JHNZlOnTp3066+/1lieSy65ROHh4WrZsqUcDofy8/MVHR3t2f/VV1/p0ksvVUREhCIiIjzl+Omnn7RlyxbdcMMNkqTS0lK1a9euyvkXLlyojz76SJK0Z88e7dq1S23btlWXLl20cuVKNWvWTM2aNdNJJ53k6z8hjkGo1ZfS0lL9+uuv+ve//60dO3Zo1KhRevfdd+V0OisdR31BoIVaXXFbsWKF+vTpo7Cw6h8xqCsIhlCrL2lpaRo6dKiuv/56rVmzRnfddZeWLl1a5TjqS/1HMBUA7nG6Fe3fv19r167V9u3bZbPZVFJSoqZNm3oqsCTZ7XbZ7UeettaiRQtlZmZ63u/Zs0ctW7asctzEiRP1888/V9l+xx136OKLL660rWnTpp7Xf/7zn/Xiiy9We+2KD4t2u93z3m63q6Sk5Ijlrvh5h8Oh0tJSr8cd6VibzVZlm8vlUocOHbRo0aIaz/35559r3bp1WrJkiSIiIjRkyBAVFRVJkq666iq9/PLLOvHEEzV48GCv3weBEWr1pWXLljr//PMVFhamNm3a6MQTT9SuXbt02mmnVTqO+oJAC7W64paenq477rijxmtTVxAMoVZf/vOf/2jBggWSpG7dumn37t0qKiqq0lBHfan/SEARJO+++66uuuoqffzxx/roo4/06aefyuVyadu2bUd1nksuuURpaWkqLi7W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Ln399dd+XT8UEEwBAAAgJPz444/6v//7P73zzjtyuVx68803ffpc48aNFR8fr19++UWS9NNPP1UaHrdp0ybPsSNGjFBycrJGjhzp2Zaenq5+/frp8ssv13vvvSfLsgL7xY6ge/fuysvL07fffltl35tvvun5DldffbVne7NmzTR8+HC98MILuuuuu/y+dlhYmM4++2x9/fXXWrFihfr27evZt23bNnXs2FE2m82zrUmTJmrZsqV27Njh2XbzzTcfdTDoHgaYnJysxx57zO/y1waG+QEAACAknHLKKZ4hZ1dccYXef//9SkHEkVQMgI5mmF9RUZFWrVqlBx54QFFRUWrdurW++eYbnXfeeZUCiWAaO3asnnvuOY0YMaLS9uqG+bn997//VUxMjHbu3KmWLVv6fe1+/fopPT1d33//vZ577jktWbLkqD7fs2dPzZ49u1LA6k3FIYgrVqzQypUrj+qatYmeKQAAAISEisGLzWbzOZjJz8/Xzp07deqppx71NT/99FPl5uaqf//+6t27tzZv3qy0tDRJUlxcnLKzsz3HZmdnq2nTpkd9DW969eqlnTt36ocffvDp+LS0NEVGRuqZZ57R9OnTPcko/HHBBRd4ArOKQWbbtm21efPmSkFqbm6uMjMzFR8fX+kc/vROhQqCKQAAAISEnTt3asOGDZLM0Lvzzz/f62cKCgr08MMPq3fv3oqLizvqa6alpenRRx/VRx99pI8++kjvvPOO3n//fblcLnXt2lXp6emeuVtvvPFGtYkijpXNZtNNN92kBQsWeD02Pz9fs2fP1rRp03TuueeqY8eOnoQP/nA4HPrLX/5SJTNh27Ztddppp2n+/PmSJJfLpccee0xXXXWVIiIiKh172WWXadu2bdq5c6ff5aivGOYHAACAkNC2bVstWLBAmzdvVqdOnTRo0KAaj7399tvldDpVUlKi3r17a8KECZ597jlTbtddd52uuuqqKuc4ePCgVq9erenTp3u2nXDCCYqPj9fatWt16aWXauPGjRoyZIhsNpvatWunBx980HPsf//7X/Xs2dPz/sUXX1S7du38+u59+/atkv3vzTff1OrVqz3vn3zySS1dulRXXnmlp3fozjvv1J///Gf169dPJ5xwgl/X7tOnT7XbZ86cqQcffFBJSUlyuVzq2bOnJk2aVOU4m82mMWPGhHTWvprYrNqc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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# use Seaborn FacetGrid for convenience\n", "# some seaborn configs\n", "sns.set(font_scale=0.9) # legible font size\n", "sns.set_style('whitegrid', {'axes.grid': False}) # white background, no grid in plots\n", "sns.set_palette(sns.color_palette([\"#4169e1\", \"#ff00ff\"])) # consistent colors\n", "\n", "# facet grid of residuals by PAY_0 \n", "sorted_ = valid_yhat_df.sort_values(by='PAY_0') # sort for better layout of by-groups\n", "g = sns.FacetGrid(sorted_, col='PAY_0', hue=y_name, col_wrap=4) # init grid\n", "_ = g.map(plt.scatter, yhat_name, resid_name, alpha=0.4) # plot points\n", "_ = g.add_legend(bbox_to_anchor=(0.82, 0.2)) # legend" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Retrain GBM Classifier Based on Results of Residual Analysis\n", "Now that an issue has been discovered using residual analysis, can it be resolved? \n", "\n", "#### Create a variable that contains information about behavior over time\n", "One strategy to improve prediction accuracy is to introduce a new variable that summarizes a customer's spending behavior over time to expose any potential financial instability: the standard deviation of a customer's bill amounts over six months." ] }, { "cell_type": "code", "execution_count": 17, "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", "
IDLIMIT_BALSEXEDUCATIONMARRIAGEAGEPAY_0PAY_2PAY_3PAY_4PAY_5PAY_6BILL_AMT1BILL_AMT2BILL_AMT3BILL_AMT4BILL_AMT5BILL_AMT6PAY_AMT1PAY_AMT2PAY_AMT3PAY_AMT4PAY_AMT5PAY_AMT6DEFAULT_NEXT_MONTHbill_std
0120000femaleuniversitymarried242 month delay2 month delaypay dulypay dulyno consumptionno consumption391331026890000689000011761.633219
12120000femaleuniversitysingle26pay duly2 month delayuse of revolving credituse of revolving credituse of revolving credit2 month delay2682172526823272345532610100010001000020001637.967841
2390000femaleuniversitysingle34use of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credit29239140271355914331149481554915181500100010001000500006064.518593
\n", "
" ], "text/plain": [ " ID LIMIT_BAL SEX EDUCATION MARRIAGE AGE PAY_0 \\\n", "0 1 20000 female university married 24 2 month delay \n", "1 2 120000 female university single 26 pay duly \n", "2 3 90000 female university single 34 use of revolving credit \n", "\n", " PAY_2 PAY_3 PAY_4 \\\n", "0 2 month delay pay duly pay duly \n", "1 2 month delay use of revolving credit use of revolving credit \n", "2 use of revolving credit use of revolving credit use of revolving credit \n", "\n", " PAY_5 PAY_6 BILL_AMT1 BILL_AMT2 \\\n", "0 no consumption no consumption 3913 3102 \n", "1 use of revolving credit 2 month delay 2682 1725 \n", "2 use of revolving credit use of revolving credit 29239 14027 \n", "\n", " BILL_AMT3 BILL_AMT4 BILL_AMT5 BILL_AMT6 PAY_AMT1 PAY_AMT2 PAY_AMT3 \\\n", "0 689 0 0 0 0 689 0 \n", "1 2682 3272 3455 3261 0 1000 1000 \n", "2 13559 14331 14948 15549 1518 1500 1000 \n", "\n", " PAY_AMT4 PAY_AMT5 PAY_AMT6 DEFAULT_NEXT_MONTH bill_std \n", "0 0 0 0 1 1761.633219 \n", "1 1000 0 2000 1 637.967841 \n", "2 1000 1000 5000 0 6064.518593 " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data2 = data.as_data_frame()\n", "data2['bill_std'] = data2[['BILL_AMT1', 'BILL_AMT2', 'BILL_AMT3', 'BILL_AMT4', 'BILL_AMT5', 'BILL_AMT6']].std(axis=1)\n", "data2.head(n=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Convert Pandas DataFrame back to H2OFrame for modeling" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "data2 = h2o.H2OFrame(data2) # convert \n", "data2[y_name] = data2[y_name].asfactor() # ensure target is handled as a categorical variable\n", "train2, valid2 = data2.split_frame([0.7], seed=SEED) # split into training and validation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Retrain GBM with new variable" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm Model Build progress: |███████████████████████████████████████████████| 100%\n", "GBM Validation AUC = 0.7825\n" ] } ], "source": [ "# initialize GBM model\n", "gbm2 = H2OGradientBoostingEstimator(ntrees=150, # maximum 150 trees in GBM\n", " max_depth=6, # trees can have maximum depth of 6\n", " sample_rate=0.9, # use 90% of rows in each iteration (tree)\n", " col_sample_rate=0.85, # use 90% of variables in each iteration (tree)\n", " stopping_rounds=5, # stop if validation error does not decrease for 5 iterations (trees)\n", " seed=SEED) # for reproducibility\n", "\n", "# retrain GBM model\n", "gbm2.train(y=y_name,\n", " x=x_names + ['bill_std'], # add new variable\n", " training_frame=train2, \n", " validation_frame=valid2)\n", "\n", "# print AUC\n", "print('GBM Validation AUC = %.4f' % gbm2.auc(valid=True))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While there maybe be other more complex variables or a more optimal set of hyperparameters that could lead to further incremental increases in accuracy, more information is needed to achieve meaningful improvement in prediction performance. In particular, a common measure for credit lending, the customers' debt-to-income ratio, for each payment and billing period could be particularly useful. Spikes in debt-to-income ratio, representing loss of income or large increases in debt, would likely be very indicative of a default and would expose the GBM to information not currently available in the UCI credit card default data. Introducing new data could also de-emphasize `PAY_0`, which would likely result in a more stable model as well." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. Perform Sensitivity Analysis to Test Model Performance on Unseen Data\n", "\n", "Sensitivity analysis investigates whether model behavior and outputs remain stable when data is intentionally perturbed or other changes are simulated in data. Beyond traditional assessment practices, sensitivity analysis of machine learning model predictions is perhaps the most important validation technique for machine learning models. Machine learning models can make drastically differing predictions for only minor changes in input variable values. \n", "\n", "Here sensitivity analysis is used to understand the impact of changing the most important input variable, `PAY_0`, and the impact of a sociologically sensitive variable, `SEX`, in the model. If the model changes in reasonable and expected ways when important variable values are changed this can enhance trust in the model. If the contribution of potentially sensitive variables, such as those related to gender, race, age, marital status, or disability status, can be shown to have minimal impact on the model, this is an indication of fairness in the model predictions and can also increase overall trust in the model." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Bind new model predictions onto validation data \n", "Typically, a productive exercise in model debugging and validation is to investigate customers with very high or low predicted probabilities to determine if their predictions stay within reasonable bounds when important variables are changed. The predictions from the new, more accurate model are merged onto the validation set to find these potentially interesting customers. " ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm prediction progress: |████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "preds2 = gbm2.predict(valid2).drop(['predict', 'p0'])\n", "preds2.columns = [yhat_name]\n", "valid_yhat2 = valid2.cbind(preds2[yhat_name])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Find some percentiles of yhat in the validation data" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{0: 14020,\n", " 99: 25054,\n", " 10: 1027,\n", " 20: 21932,\n", " 30: 6331,\n", " 40: 24248,\n", " 50: 18409,\n", " 60: 22652,\n", " 70: 19717,\n", " 80: 9413,\n", " 90: 23311}" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred_percentile_dict = explain.get_percentile_dict(yhat_name, valid_yhat2.as_data_frame(), 'ID')\n", "pred_percentile_dict" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Display validation data prediction range\n", "Unlike some regression models and neural networks that can produce outrageous predictions for changes in input variables, GBM predictions in new data are bounded by the lowest and highest probability leaf nodes in each constiuent decision tree in the trained model. Extreme predictions are typically not an issue for tree models and classification tasks, but it is often a good idea to check that the model predictions cover a full range of useful values in the validation set." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Lowest prediction: " ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
DEFAULT_NEXT_MONTH p_DEFAULT_NEXT_MONTH
0 0.037913
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Highest prediction: " ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
DEFAULT_NEXT_MONTH p_DEFAULT_NEXT_MONTH
1 0.90732
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "print('Lowest prediction:', valid_yhat2[valid_yhat2['ID'] == int(pred_percentile_dict[0])][[y_name, yhat_name]])\n", "print('Highest prediction:', valid_yhat2[valid_yhat2['ID'] == int(pred_percentile_dict[99])][[y_name, yhat_name]])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Use trained model to test predictions for interesting situations: customer least likely to default\n", "As a starting point for further analysis, sensitivity analysis is performed for the customer least likely to default. This person has a very low probability of defaulting according to the trained GBM." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
ID LIMIT_BALSEX EDUCATION MARRIAGE AGEPAY_0 PAY_2 PAY_3 PAY_4 PAY_5 PAY_6 BILL_AMT1 BILL_AMT2 BILL_AMT3 BILL_AMT4 BILL_AMT5 BILL_AMT6 PAY_AMT1 PAY_AMT2 PAY_AMT3 PAY_AMT4 PAY_AMT5 PAY_AMT6 DEFAULT_NEXT_MONTH bill_std p_DEFAULT_NEXT_MONTH
14020 500000male university married 42use of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credit 114374 130999 153648 172515 178758 192589 50012 51343 70000 70000 80000 50000 0 29949.4 0.037913
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_case = valid_yhat2[valid_yhat2['ID'] == int(pred_percentile_dict[0])]\n", "test_case" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Test effect of changing `SEX`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`SEX` should not have a large impact on predictions. This could indicate unwanted sociological bias in the GBM model." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
ID LIMIT_BALSEX EDUCATION MARRIAGE AGEPAY_0 PAY_2 PAY_3 PAY_4 PAY_5 PAY_6 BILL_AMT1 BILL_AMT2 BILL_AMT3 BILL_AMT4 BILL_AMT5 BILL_AMT6 PAY_AMT1 PAY_AMT2 PAY_AMT3 PAY_AMT4 PAY_AMT5 PAY_AMT6 DEFAULT_NEXT_MONTH bill_std predict p0 p1
14020 500000femaleuniversity married 42use of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credit 114374 130999 153648 172515 178758 192589 50012 51343 70000 70000 80000 50000 0 29949.4 00.9627390.037261
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_case = valid_yhat2[valid_yhat2['ID'] == int(pred_percentile_dict[0])]\n", "test_case = test_case.drop([yhat_name])\n", "test_case['SEX'] = 'female'\n", "test_case = test_case.cbind(gbm2.predict(test_case))\n", "test_case" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As desired, simulating this person as a different sex does not have a large impact on their probability of default." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Test effect of changing `PAY_0`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Variable importance and residual analysis indicates that the value of `PAY_0` can have a strong effect on model predictions. Measuring the change in predicted probability when the value of `PAY_0` is changed from a timely payment to late payment is probably a good test case for prediction stability. " ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
ID LIMIT_BALSEX EDUCATION MARRIAGE AGEPAY_0 PAY_2 PAY_3 PAY_4 PAY_5 PAY_6 BILL_AMT1 BILL_AMT2 BILL_AMT3 BILL_AMT4 BILL_AMT5 BILL_AMT6 PAY_AMT1 PAY_AMT2 PAY_AMT3 PAY_AMT4 PAY_AMT5 PAY_AMT6 DEFAULT_NEXT_MONTH bill_std predict p0 p1
14020 500000male university married 422 month delayuse of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credit 114374 130999 153648 172515 178758 192589 50012 51343 70000 70000 80000 50000 0 29949.4 10.4109810.589019
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_case = valid_yhat2[valid_yhat2['ID'] == int(pred_percentile_dict[0])]\n", "test_case = test_case.drop([yhat_name])\n", "test_case['PAY_0'] = '2 month delay' \n", "test_case = test_case.cbind(gbm2.predict(test_case))\n", "test_case" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When the value is changed to `two month delay` there is a very large increase in predicted probability. Such a marked change related to the value of one variable is problematic for numerous reasons." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Use trained model to test predictions for interesting situations: customer most likely to default\n", "Now the same test will be performed on the customer most likely to default. This person has a very high probability of default under the GBM model. " ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
ID LIMIT_BALSEX EDUCATION MARRIAGE AGEPAY_0 PAY_2 PAY_3 PAY_4 PAY_5 PAY_6 BILL_AMT1 BILL_AMT2 BILL_AMT3 BILL_AMT4 BILL_AMT5 BILL_AMT6 PAY_AMT1 PAY_AMT2 PAY_AMT3 PAY_AMT4 PAY_AMT5 PAY_AMT6 DEFAULT_NEXT_MONTH bill_std p_DEFAULT_NEXT_MONTH
25054 500000male graduate schoolmarried 553 month delay2 month delay2 month delay2 month delay2 month delay2 month delay 4957 4957 4957 4957 4957 4957 0 0 0 0 0 0 1 0 0.90732
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_case = valid_yhat2[valid_yhat2['ID'] == int(pred_percentile_dict[99])]\n", "test_case" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Test effect of changing `SEX`\n", "Changing the value for `SEX` for this customer changes the predicted probability by a relatively small amount." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
ID LIMIT_BALSEX EDUCATION MARRIAGE AGEPAY_0 PAY_2 PAY_3 PAY_4 PAY_5 PAY_6 BILL_AMT1 BILL_AMT2 BILL_AMT3 BILL_AMT4 BILL_AMT5 BILL_AMT6 PAY_AMT1 PAY_AMT2 PAY_AMT3 PAY_AMT4 PAY_AMT5 PAY_AMT6 DEFAULT_NEXT_MONTH bill_std predict p0 p1
25054 500000femalegraduate schoolmarried 553 month delay2 month delay2 month delay2 month delay2 month delay2 month delay 4957 4957 4957 4957 4957 4957 0 0 0 0 0 0 1 0 10.09198550.908015
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_case = valid_yhat2[valid_yhat2['ID'] == int(pred_percentile_dict[99])]\n", "test_case = test_case.drop([yhat_name])\n", "test_case['SEX'] = 'female'\n", "test_case = test_case.cbind(gbm2.predict(test_case))\n", "test_case" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Test effect of changing `PAY_0`\n", "Switching the riskiest customer's value for `PAY_0` to `pay duly` reduces the their chance of default by a lot, a noticable swing in probability but still a higher probability value, notably greater than common lending cutoffs." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
ID LIMIT_BALSEX EDUCATION MARRIAGE AGEPAY_0 PAY_2 PAY_3 PAY_4 PAY_5 PAY_6 BILL_AMT1 BILL_AMT2 BILL_AMT3 BILL_AMT4 BILL_AMT5 BILL_AMT6 PAY_AMT1 PAY_AMT2 PAY_AMT3 PAY_AMT4 PAY_AMT5 PAY_AMT6 DEFAULT_NEXT_MONTH bill_std predict p0 p1
25054 500000male graduate schoolmarried 55pay duly2 month delay2 month delay2 month delay2 month delay2 month delay 4957 4957 4957 4957 4957 4957 0 0 0 0 0 0 1 0 10.3282140.671786
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_case = valid_yhat2[valid_yhat2['ID'] == int(pred_percentile_dict[99])]\n", "test_case = test_case.drop([yhat_name])\n", "test_case['PAY_0'] = 'pay duly' \n", "test_case = test_case.cbind(gbm2.predict(test_case))\n", "test_case" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From this small number of boundary test cases, the GBM model appears stable. However, if large swings in predictions occur for sensitive or important variables, practicioners are urged to retrain unstable models without the problematic variables or combinations of variables, which may unfortunately involve some trial and error. Also, four test cases is woefully inadequate for real-world models. Automated sensitivity analysis across many variables, combinations of variables, and for many different rows of data seems more appropriate for mission-critical machine learning." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6. Benchmark Models\n", "Benchmark models are an excellent model debugging tool. They can be used at training time to understand how a new model differs from an established, trusted model. They can also be used at scoring time to understand if a newer or more complex model is giving different predictions from a previously deployed trusted model or simpler model. If a prediction from a new model is too different from a prediction from a trusted model, this could be indicative of potential accuracy, fairness, or security problems." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Train a benchmark GLM \n", "Instead of using a pre-existing model, a stable penalized GLM will be used as a benchmark in this notebook." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glm Grid Build progress: |████████████████████████████████████████████████| 100%\n", "Best penalized GLM mean logloss residual: 0.440206\n", "At threshold: 0.246137\n" ] } ], "source": [ "best_glm = model.glm_grid(x_names + ['bill_std'], y_name, train2, valid2, SEED)\n", "print('Best penalized GLM mean logloss residual: %.6f' % \n", " best_glm.logloss(valid=True))\n", "glm_cut = best_glm.F1(valid=True)[0][0] # get GLM cutoff to create decisions\n", "print('At threshold: %.6f' % glm_cut)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Find a comparable GBM cutoff" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "GBM mean logloss residual: 0.431708\n", "At threshold: 0.227593\n" ] } ], "source": [ "print('GBM mean logloss residual: %.6f' % \n", " gbm2.logloss(valid=True))\n", "gbm_cut = gbm2.F1(valid=True)[0][0] # get GBM cutoff to create decisions\n", "print('At threshold: %.6f' % gbm_cut)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Find rows where GLM benchmark model is right, but GBM is wrong\n", "One interesting place to start comparing a more complex model to a simpler model is when the simple model is right and the complex model is wrong." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LIMIT_BALSEXEDUCATIONMARRIAGEAGEPAY_0PAY_2PAY_3PAY_4PAY_5PAY_6BILL_AMT1BILL_AMT2BILL_AMT3BILL_AMT4BILL_AMT5BILL_AMT6PAY_AMT1PAY_AMT2PAY_AMT3PAY_AMT4PAY_AMT5PAY_AMT6DEFAULT_NEXT_MONTHp_glm_DEFAULT_NEXT_MONTHp_gbm_DEFAULT_NEXT_MONTH
22300000femalegraduate schoolmarried45pay dulypay dulypay dulypay dulypay dulypay duly29129129129129129129129129129129129100.1387240.234757
51360000malegraduate schoolsingle291 month delayno consumptionpay dulypay dulyno consumptionno consumption0077000077000000.2036380.302616
6550000femalehigh schoolsingle371 month delay3 month delay2 month delayuse of revolving credituse of revolving credituse of revolving credit5262651537492053039430249299570241500100012013059210.3567090.211182
8010000malehigh schoolsingle23use of revolving credituse of revolving credituse of revolving credituse of revolving credituse of revolving credit2 month delay69747838900291829729941111341298478847017500.1828700.288847
92440000femalegraduate schoolsingle36no consumptionno consumptionno consumptionno consumptionno consumptionno consumption0000000000162000000.0454900.298846
\n", "
" ], "text/plain": [ " LIMIT_BAL SEX EDUCATION MARRIAGE AGE PAY_0 \\\n", "22 300000 female graduate school married 45 pay duly \n", "51 360000 male graduate school single 29 1 month delay \n", "65 50000 female high school single 37 1 month delay \n", "80 10000 male high school single 23 use of revolving credit \n", "92 440000 female graduate school single 36 no consumption \n", "\n", " PAY_2 PAY_3 PAY_4 \\\n", "22 pay duly pay duly pay duly \n", "51 no consumption pay duly pay duly \n", "65 3 month delay 2 month delay use of revolving credit \n", "80 use of revolving credit use of revolving credit use of revolving credit \n", "92 no consumption no consumption no consumption \n", "\n", " PAY_5 PAY_6 BILL_AMT1 BILL_AMT2 \\\n", "22 pay duly pay duly 291 291 \n", "51 no consumption no consumption 0 0 \n", "65 use of revolving credit use of revolving credit 52626 51537 \n", "80 use of revolving credit 2 month delay 6974 7838 \n", "92 no consumption no consumption 0 0 \n", "\n", " BILL_AMT3 BILL_AMT4 BILL_AMT5 BILL_AMT6 PAY_AMT1 PAY_AMT2 PAY_AMT3 \\\n", "22 291 291 291 291 291 291 291 \n", "51 77 0 0 0 0 77 0 \n", "65 49205 30394 30249 29957 0 24 1500 \n", "80 9002 9182 9729 9411 1134 1298 478 \n", "92 0 0 0 0 0 0 0 \n", "\n", " PAY_AMT4 PAY_AMT5 PAY_AMT6 DEFAULT_NEXT_MONTH \\\n", "22 291 291 291 0 \n", "51 0 0 0 0 \n", "65 1000 1201 30592 1 \n", "80 847 0 175 0 \n", "92 0 162000 0 0 \n", "\n", " p_glm_DEFAULT_NEXT_MONTH p_gbm_DEFAULT_NEXT_MONTH \n", "22 0.138724 0.234757 \n", "51 0.203638 0.302616 \n", "65 0.356709 0.211182 \n", "80 0.182870 0.288847 \n", "92 0.045490 0.298846 " ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# copy validation data\n", "valid_yhat_df2 = valid_yhat2.as_data_frame().copy(deep=True)\n", "\n", "# create columns for gbm and glm preds\n", "valid_yhat_df2.rename(columns={yhat_name: 'p_gbm_DEFAULT_NEXT_MONTH'}, inplace=True)\n", "valid_yhat_df2['p_glm_DEFAULT_NEXT_MONTH'] = best_glm.\\\n", " predict(valid2)['p1'].\\\n", " as_data_frame()\n", "\n", "# create columns for gbm and glm decisions (i.e. apply cutoff)\n", "valid_yhat_df2['gbm_DECISION'] = 0\n", "valid_yhat_df2.loc[valid_yhat_df2['p_gbm_DEFAULT_NEXT_MONTH'] > gbm_cut,\n", " 'gbm_DECISION'] = 1\n", "valid_yhat_df2['glm_DECISION'] = 0\n", "valid_yhat_df2.loc[valid_yhat_df2['p_glm_DEFAULT_NEXT_MONTH'] > glm_cut,\n", " 'glm_DECISION'] = 1\n", "\n", "# create columns for gbm and glm wrong decisions\n", "valid_yhat_df2['gbm_WRONG'] = 0\n", "valid_yhat_df2.loc[valid_yhat_df2[y_name] != valid_yhat_df2['gbm_DECISION'], 'gbm_WRONG'] = 1\n", "valid_yhat_df2['glm_WRONG'] = 0\n", "valid_yhat_df2.loc[valid_yhat_df2[y_name] != valid_yhat_df2['glm_DECISION'], 'glm_WRONG'] = 1\n", "\n", "# create a subset of preds where gbm is wrong, but glm is right\n", "gbm_wrong = valid_yhat_df2.loc[(valid_yhat_df2['gbm_WRONG'] == 1) & \n", " (valid_yhat_df2['glm_WRONG'] == 0)]\n", "\n", "gbm_wrong[x_names + [y_name, 'p_glm_DEFAULT_NEXT_MONTH', 'p_gbm_DEFAULT_NEXT_MONTH']].head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot rows where GLM benchmark model is right, but GBM is wrong" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# custom legend\n", "custom = [Line2D([0], [0], color='royalblue', lw=2),\n", " Line2D([0], [0], color='deeppink', lw=2),\n", " Line2D([0], [0], marker='o', color='w',\n", " markerfacecolor='orange', markersize=3)]\n", "\n", "# init plot\n", "fig, ax = plt.subplots(figsize=(7, 5)) \n", "\n", "# plot sorted actuals\n", "# double index reset orders index by sort variable and\n", "# brings index into frame for plotting\n", "_ = gbm_wrong[[y_name,'p_gbm_DEFAULT_NEXT_MONTH']].\\\n", " sort_values(by='p_gbm_DEFAULT_NEXT_MONTH').\\\n", " reset_index(drop=True).\\\n", " reset_index().\\\n", " plot(kind='scatter', x='index', y=y_name, color='orange', s=3, ax=ax, \n", " legend=False)\n", "\n", "# plot sorted gbm and glm preds \n", "_ = gbm_wrong[['p_glm_DEFAULT_NEXT_MONTH', 'p_gbm_DEFAULT_NEXT_MONTH']].\\\n", " sort_values(by='p_gbm_DEFAULT_NEXT_MONTH').\\\n", " reset_index(drop=True).\\\n", " plot(ax=ax, legend=False, \n", " title='Ranked Predictions for Correct GLM and Incorrect GBM')\n", "\n", "# annotate plot\n", "_ = ax.legend(custom, ['p_glm_DEFAULT_NEXT_MONTH', 'p_gbm_DEFAULT_NEXT_MONTH', \n", " y_name])\n", "_ = ax.set_xlabel('Ranked Row Index')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For a range of probabilities between ~0.2 and ~0.6 there exists a group of customers where a GLM model gives more correct predictions than the more complex GBM model. In the plot above, the yellow points represent the known target labels, the pink line is the sorted GBM model predictions, and the blue line is the GLM predictions for the same customers and target labels. For this group of people the GLM is obviously able to better represent some attribute of the customer's demographics or behaviors. Can the differences between this group of people and the rest of the customers be identified and leveraged to make better predictions?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Descriptive statistics for rows where GLM benchmark model is right, but GBM is wrong" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IDLIMIT_BALAGEBILL_AMT1BILL_AMT2BILL_AMT3BILL_AMT4BILL_AMT5BILL_AMT6PAY_AMT1PAY_AMT2PAY_AMT3PAY_AMT4PAY_AMT5PAY_AMT6DEFAULT_NEXT_MONTHbill_stdp_gbm_DEFAULT_NEXT_MONTHp_glm_DEFAULT_NEXT_MONTHgbm_DECISIONglm_DECISIONgbm_WRONGglm_WRONG
count387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.000000387.0387.0
mean14074.307494158010.33591736.74160224316.41602124700.67441925600.10594324657.00000022654.29715820100.1627912776.2739022930.2609821822.4366932021.9715761840.8656335164.0284240.0697675190.5722040.2771580.1938440.9302330.0697671.00.0
std8475.155425139110.49731410.38110170201.45604269611.28422570450.91492867177.65860660073.06759853222.3009428628.70341812493.2514816093.9075978385.1205069212.50637635502.7300940.25508415358.9655870.0607740.0502280.2550840.2550840.00.0
min78.00000010000.00000021.000000-1580.000000-5978.000000-2400.000000-1580.000000-1773.000000-2303.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.1275160.0257090.0000000.0000001.00.0
25%7060.00000040000.00000029.000000131.500000190.500000281.000000117.000000102.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000192.3601360.2385410.1659091.0000000.0000001.00.0
50%13531.000000130000.00000035.0000001727.0000001516.0000001300.0000001430.0000001072.0000001060.000000896.000000526.000000318.000000390.000000390.000000390.0000000.0000001072.6100250.2612360.1947431.0000000.0000001.00.0
75%20920.500000235000.00000044.00000012399.00000014646.00000015993.00000017049.50000017728.00000015733.5000002284.0000002000.0000001273.0000001108.0000001000.0000001500.0000000.0000002557.5927320.3022980.2259161.0000000.0000001.00.0
max29951.000000680000.00000067.000000568532.000000577681.000000577957.000000565669.000000524315.000000476846.000000100082.000000200000.00000080167.000000135000.000000162000.000000443001.0000001.000000184306.1783690.5295730.5288431.0000001.0000001.00.0
\n", "
" ], "text/plain": [ " ID LIMIT_BAL AGE BILL_AMT1 BILL_AMT2 \\\n", "count 387.000000 387.000000 387.000000 387.000000 387.000000 \n", "mean 14074.307494 158010.335917 36.741602 24316.416021 24700.674419 \n", "std 8475.155425 139110.497314 10.381101 70201.456042 69611.284225 \n", "min 78.000000 10000.000000 21.000000 -1580.000000 -5978.000000 \n", "25% 7060.000000 40000.000000 29.000000 131.500000 190.500000 \n", "50% 13531.000000 130000.000000 35.000000 1727.000000 1516.000000 \n", "75% 20920.500000 235000.000000 44.000000 12399.000000 14646.000000 \n", "max 29951.000000 680000.000000 67.000000 568532.000000 577681.000000 \n", "\n", " BILL_AMT3 BILL_AMT4 BILL_AMT5 BILL_AMT6 \\\n", "count 387.000000 387.000000 387.000000 387.000000 \n", "mean 25600.105943 24657.000000 22654.297158 20100.162791 \n", "std 70450.914928 67177.658606 60073.067598 53222.300942 \n", "min -2400.000000 -1580.000000 -1773.000000 -2303.000000 \n", "25% 281.000000 117.000000 102.000000 0.000000 \n", "50% 1300.000000 1430.000000 1072.000000 1060.000000 \n", "75% 15993.000000 17049.500000 17728.000000 15733.500000 \n", "max 577957.000000 565669.000000 524315.000000 476846.000000 \n", "\n", " PAY_AMT1 PAY_AMT2 PAY_AMT3 PAY_AMT4 \\\n", "count 387.000000 387.000000 387.000000 387.000000 \n", "mean 2776.273902 2930.260982 1822.436693 2021.971576 \n", "std 8628.703418 12493.251481 6093.907597 8385.120506 \n", "min 0.000000 0.000000 0.000000 0.000000 \n", "25% 0.000000 0.000000 0.000000 0.000000 \n", "50% 896.000000 526.000000 318.000000 390.000000 \n", "75% 2284.000000 2000.000000 1273.000000 1108.000000 \n", "max 100082.000000 200000.000000 80167.000000 135000.000000 \n", "\n", " PAY_AMT5 PAY_AMT6 DEFAULT_NEXT_MONTH bill_std \\\n", "count 387.000000 387.000000 387.000000 387.000000 \n", "mean 1840.865633 5164.028424 0.069767 5190.572204 \n", "std 9212.506376 35502.730094 0.255084 15358.965587 \n", "min 0.000000 0.000000 0.000000 0.000000 \n", "25% 0.000000 0.000000 0.000000 192.360136 \n", "50% 390.000000 390.000000 0.000000 1072.610025 \n", "75% 1000.000000 1500.000000 0.000000 2557.592732 \n", "max 162000.000000 443001.000000 1.000000 184306.178369 \n", "\n", " p_gbm_DEFAULT_NEXT_MONTH p_glm_DEFAULT_NEXT_MONTH gbm_DECISION \\\n", "count 387.000000 387.000000 387.000000 \n", "mean 0.277158 0.193844 0.930233 \n", "std 0.060774 0.050228 0.255084 \n", "min 0.127516 0.025709 0.000000 \n", "25% 0.238541 0.165909 1.000000 \n", "50% 0.261236 0.194743 1.000000 \n", "75% 0.302298 0.225916 1.000000 \n", "max 0.529573 0.528843 1.000000 \n", "\n", " glm_DECISION gbm_WRONG glm_WRONG \n", "count 387.000000 387.0 387.0 \n", "mean 0.069767 1.0 0.0 \n", "std 0.255084 0.0 0.0 \n", "min 0.000000 1.0 0.0 \n", "25% 0.000000 1.0 0.0 \n", "50% 0.000000 1.0 0.0 \n", "75% 0.000000 1.0 0.0 \n", "max 1.000000 1.0 0.0 " ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gbm_wrong.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If this group of people can be isolated, either by descriptive statistics, or by more sophisticated means, the training process could be adapted to fix these errors or another model could be used at scoring time to create more accurate predictions. Even if a group cannot be isolated, the two different model predictions could potentially be blended in this range of predicted probabilities." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Shutdown H2O" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Are you sure you want to shutdown the H2O instance running at http://localhost:54321 (Y/N)? y\n", "H2O session _sid_abf7 closed.\n" ] } ], "source": [ "# be careful, this can erase your work!\n", "h2o.cluster().shutdown(prompt=True)" ] } ], "metadata": { "anaconda-cloud": {}, "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.10.6" } }, "nbformat": 4, "nbformat_minor": 2 }