{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Predicting Loan Repayment


\n", "\n", "

\n", "\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Introduction


\n", "The two most critical questions in the lending industry are: 1) How risky is the borrower? 2) Given the borrower's risk, should we lend him/her? The answer to the first question determines the interest rate the borrower would have. Interest rate measures among other things (such as time value of money) the riskness of the borrower, i.e. the riskier the borrower, the higher the interest rate. With interest rate in mind, we can then determine if the borrower is eligible for the loan.\n", "\n", "Investors (lenders) provide loans to borrowers in exchange for the promise of repayment with interest. That means the lender only makes profit (interest) if the borrower pays off the loan. However, if he/she doesn't repay the loan, then the lender loses money.\n", "\n", "We'll be using publicly available data from [LendingClub.com](https://www.LendingClub.com). The data covers the 9,578 loans funded by the platform between May 2007 and February 2010. The interest rate is provided to us for each borrower. Therefore, so we'll address the second question indirectly by trying to predict if the borrower will repay the loan by its mature date or not. Through this excerise we'll illustrate three modeling concepts:\n", "- What to do with missing values.\n", "- Techniques used with imbalanced classification problems.\n", "- Illustrate how to build an ensemble model using two methods: blending and stacking, which most likely gives us a boost in performance.\n", "\n", "Below is a short description of each feature in the data set:\n", "- **credit_policy**: 1 if the customer meets the credit underwriting criteria of LendingClub.com, and 0 otherwise.\n", "- **purpose**: The purpose of the loan such as: credit_card, debt_consolidation, etc.\n", "- **int_rate**: The interest rate of the loan (proportion).\n", "- **installment**: The monthly installments (\\$) owed by the borrower if the loan is funded.\n", "- **log_annual_inc**: The natural log of the annual income of the borrower.\n", "- **dti**: The debt-to-income ratio of the borrower.\n", "- **fico**: The FICO credit score of the borrower.\n", "- **days_with_cr_line**: The number of days the borrower has had a credit line.\n", "- **revol_bal**: The borrower's revolving balance.\n", "- **revol_util**: The borrower's revolving line utilization rate.\n", "- **inq_last_6mths**: The borrower's number of inquiries by creditors in the last 6 months.\n", "- **delinq_2yrs**: The number of times the borrower had been 30+ days past due on a payment in the past 2 years.\n", "- **pub_rec**: The borrower's number of derogatory public records.\n", "- **not_fully_paid**: indicates whether the loan was not paid back in full (the borrower either defaulted or the borrower was deemed unlikely to pay it back).\n", "\n", "Let's load the data and check:\n", "- Data types of each feature\n", "- If we have missing values\n", "- If we have imbalanced data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:34: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n", " from ._conv import register_converters as _register_converters\n", "Using TensorFlow backend.\n", "[MLENS] backend: threading\n" ] } ], "source": [ "import os\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "import fancyimpute\n", "from imblearn.pipeline import make_pipeline as imb_make_pipeline\n", "from imblearn.over_sampling import RandomOverSampler, SMOTE\n", "from imblearn.under_sampling import RandomUnderSampler\n", "from imblearn.ensemble import BalancedBaggingClassifier, EasyEnsemble\n", "from mlens.visualization import corrmat\n", "from sklearn.model_selection import train_test_split, cross_val_score, cross_val_predict\n", "from sklearn.preprocessing import Imputer, RobustScaler, FunctionTransformer\n", "from sklearn.ensemble import RandomForestClassifier, VotingClassifier, GradientBoostingClassifier\n", "from sklearn.ensemble.partial_dependence import plot_partial_dependence\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.svm import SVC, LinearSVC\n", "from sklearn.neighbors import KNeighborsClassifier\n", "from sklearn.metrics import (roc_auc_score, confusion_matrix,\n", " accuracy_score, roc_curve,\n", " precision_recall_curve, f1_score)\n", "from sklearn.pipeline import make_pipeline\n", "import xgboost as xgb\n", "from keras import models, layers, optimizers\n", "\n", "os.chdir(\"../\")\n", "from scripts.plot_roc import plot_roc_and_pr_curves\n", "os.chdir(\"notebooks/\")\n", "\n", "%matplotlib inline\n", "plt.style.use(\"fivethirtyeight\")\n", "sns.set_context(\"notebook\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "code_folding": [ 0 ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m\u001b[94mData types:\n", "-----------\n", "\u001b[30mcredit_policy int64\n", "purpose object\n", "int_rate float64\n", "installment float64\n", "log_annual_inc float64\n", "dti float64\n", "fico int64\n", "days_with_cr_line float64\n", "revol_bal int64\n", "revol_util float64\n", "inq_last_6mths float64\n", "delinq_2yrs float64\n", "pub_rec float64\n", "not_fully_paid int64\n", "dtype: object\n", "\n", "\u001b[1m\u001b[94mSum of null values in each feature:\n", "-----------------------------------\n", "\u001b[30mcredit_policy 0\n", "purpose 0\n", "int_rate 0\n", "installment 0\n", "log_annual_inc 4\n", "dti 0\n", "fico 0\n", "days_with_cr_line 29\n", "revol_bal 0\n", "revol_util 62\n", "inq_last_6mths 29\n", "delinq_2yrs 29\n", "pub_rec 29\n", "not_fully_paid 0\n", "dtype: int64\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", "
credit_policypurposeint_rateinstallmentlog_annual_incdtificodays_with_cr_linerevol_balrevol_utilinq_last_6mthsdelinq_2yrspub_recnot_fully_paid
01debt_consolidation0.1189829.1011.35040719.487375639.9583332885452.10.00.00.00
11credit_card0.1071228.2211.08214314.297072760.0000003362376.70.00.00.00
21debt_consolidation0.1357366.8610.37349111.636824710.000000351125.61.00.00.00
31debt_consolidation0.1008162.3411.3504078.107122699.9583333366773.21.00.00.00
41credit_card0.1426102.9211.29973214.976674066.000000474039.50.01.00.00
\n", "
" ], "text/plain": [ " credit_policy purpose int_rate installment log_annual_inc \\\n", "0 1 debt_consolidation 0.1189 829.10 11.350407 \n", "1 1 credit_card 0.1071 228.22 11.082143 \n", "2 1 debt_consolidation 0.1357 366.86 10.373491 \n", "3 1 debt_consolidation 0.1008 162.34 11.350407 \n", "4 1 credit_card 0.1426 102.92 11.299732 \n", "\n", " dti fico days_with_cr_line revol_bal revol_util inq_last_6mths \\\n", "0 19.48 737 5639.958333 28854 52.1 0.0 \n", "1 14.29 707 2760.000000 33623 76.7 0.0 \n", "2 11.63 682 4710.000000 3511 25.6 1.0 \n", "3 8.10 712 2699.958333 33667 73.2 1.0 \n", "4 14.97 667 4066.000000 4740 39.5 0.0 \n", "\n", " delinq_2yrs pub_rec not_fully_paid \n", "0 0.0 0.0 0 \n", "1 0.0 0.0 0 \n", "2 0.0 0.0 0 \n", "3 0.0 0.0 0 \n", "4 1.0 0.0 0 " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data\n", "df = pd.read_csv(\"../data/loans.csv\")\n", "\n", "# Check both the datatypes and if there is missing values\n", "print(f\"\\033[1m\\033[94mData types:\\n{11 * '-'}\")\n", "print(f\"\\033[30m{df.dtypes}\\n\")\n", "print(f\"\\033[1m\\033[94mSum of null values in each feature:\\n{35 * '-'}\")\n", "print(f\"\\033[30m{df.isnull().sum()}\")\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "code_folding": [ 0 ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Positive examples = 1533\n", "Negative examples = 8045\n", "Proportion of positive to negative examples = 19.06%\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Get number of positve and negative examples\n", "pos = df[df[\"not_fully_paid\"] == 1].shape[0]\n", "neg = df[df[\"not_fully_paid\"] == 0].shape[0]\n", "print(f\"Positive examples = {pos}\")\n", "print(f\"Negative examples = {neg}\")\n", "print(f\"Proportion of positive to negative examples = {(pos / neg) * 100:.2f}%\")\n", "plt.figure(figsize=(8, 6))\n", "sns.countplot(df[\"not_fully_paid\"])\n", "plt.xticks((0, 1), [\"Paid fully\", \"Not paid fully\"])\n", "plt.xlabel(\"\")\n", "plt.ylabel(\"Count\")\n", "plt.title(\"Class counts\", y=1, fontdict={\"fontsize\": 20});" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks like we have only one categorical feature (\"purpose\"). Also, six features have missing values (no missing values in labels). Moreover, the data set is pretty imbalanced as expected where positive examples (\"not paid fully\") are only 19%. We'll explain in the next section how to handle all of them after giving an overview of ensemble methods." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Modeling


\n", "**Ensemble methods** can be defined as combining several different models (base learners) into final model (meta learner) to reduce the generalization error. It relies on the assumption that each model would look at a different aspect of the data which yield to capturing part of the truth. Combining good performing models the were trained independently will capture more of the truth than a single model. Therefore, this would result in more accurate predictions and lower generalization errors.\n", "- Almost always ensemble model performance gets improved as we add more models.\n", "- Try to combine models that are as much different as possible. This will reduce the correlation between the models that will improve the performance of the ensemble model that will lead to significantly outperform the best model. In the worst case where all models are perfectly correlated, the ensemble would have the same performance as the best model and sometimes even lower if some models are very bad. As a result, pick models that are as good as possible.\n", "\n", "Different ensemble methods construct the ensemble of models in different ways. Below are the most common methods:\n", "- Blending: Averaging the predictions of all models.\n", "- Bagging: Build different models on different datasets and then take the majority vote from all the models. Given the original dataset, we sample with replacement to get the same size of the original dataset. Therefore, each dataset will include, on average, 2/3 of the original data and the rest 1/3 will be duplicates. Since each model will be built on a different dataset, it can be seen as a different model. *Random Forest* improves on default bagging trees by reducing the likelihood of strong features to picked on every split. In other words, it reduces the number of features available at each split from $n$ features to, for example, $n/2$ or $log(n)$ features. This will reduce correlation --> reduce variance.\n", "- Boosting: Build models sequentially. That means each model learns from the residuals of the previous model. The output will be all output of each single model weighted by the learning rate ($\\lambda$). It reduces the bias resulted from bagging by learning sequentially from residuals of previous trees (models). \n", "- Stacking: Build k models called base learners. Then fit a model to the output of the base learners to predict the final output.\n", "\n", "Since we'll be using Random Fores (bagging) and Gradient Boosting (boosting) classifiers as base learners in the ensemble model, we'll illustrate only averaging and stacking ensemble methods. Therefore, modeling parts would be consisted of three parts:\n", "- Strategies to deal with missing values.\n", "- Strategies to deal with imbalanced datasets.\n", "- Build ensemble models.\n", "\n", "Before going further, the following data preprocessing steps will be applicable to all models:\n", "1. Create dummy variables from the feature \"purpose\" since its nominal (not ordinal) categorical variable. It's also a good practice to drop the first one to avoid linear dependency between the resulted features since some algorithms may struggle with this issue.\n", "3. Split the data into training set (70%), and test set (30%). Training set will be used to fit the model, and test set will be to evaluate the best model to get an estimation of generalization error. Instead of having validation set to tune hyperparameters and evaluate different models, we'll use 10-folds cross validation because it's more reliable estimate of generalization error.\n", "2. Standardize the data. We'll be using `RobustScaler` so that the standarization will be less influenced by the outliers, i.e. more robust. It centers the data around the median and scale it using *interquartile range (IQR)*. This step will be included in the pipelines for each model as a transformer so we will not do it separately." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "code_folding": [] }, "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", "
credit_policyint_rateinstallmentlog_annual_incdtificodays_with_cr_linerevol_balrevol_utilinq_last_6mthsdelinq_2yrspub_recnot_fully_paidpurpose_credit_cardpurpose_debt_consolidationpurpose_educationalpurpose_home_improvementpurpose_major_purchasepurpose_small_business
010.1189829.1011.35040719.487375639.9583332885452.10.00.00.00010000
110.1071228.2211.08214314.297072760.0000003362376.70.00.00.00100000
210.1357366.8610.37349111.636824710.000000351125.61.00.00.00010000
310.1008162.3411.3504078.107122699.9583333366773.21.00.00.00010000
410.1426102.9211.29973214.976674066.000000474039.50.01.00.00100000
\n", "
" ], "text/plain": [ " credit_policy int_rate installment log_annual_inc dti fico \\\n", "0 1 0.1189 829.10 11.350407 19.48 737 \n", "1 1 0.1071 228.22 11.082143 14.29 707 \n", "2 1 0.1357 366.86 10.373491 11.63 682 \n", "3 1 0.1008 162.34 11.350407 8.10 712 \n", "4 1 0.1426 102.92 11.299732 14.97 667 \n", "\n", " days_with_cr_line revol_bal revol_util inq_last_6mths delinq_2yrs \\\n", "0 5639.958333 28854 52.1 0.0 0.0 \n", "1 2760.000000 33623 76.7 0.0 0.0 \n", "2 4710.000000 3511 25.6 1.0 0.0 \n", "3 2699.958333 33667 73.2 1.0 0.0 \n", "4 4066.000000 4740 39.5 0.0 1.0 \n", "\n", " pub_rec not_fully_paid purpose_credit_card purpose_debt_consolidation \\\n", "0 0.0 0 0 1 \n", "1 0.0 0 1 0 \n", "2 0.0 0 0 1 \n", "3 0.0 0 0 1 \n", "4 0.0 0 1 0 \n", "\n", " purpose_educational purpose_home_improvement purpose_major_purchase \\\n", "0 0 0 0 \n", "1 0 0 0 \n", "2 0 0 0 \n", "3 0 0 0 \n", "4 0 0 0 \n", "\n", " purpose_small_business \n", "0 0 \n", "1 0 \n", "2 0 \n", "3 0 \n", "4 0 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create dummy variables from the feature purpose\n", "df = pd.get_dummies(df, columns=[\"purpose\"], drop_first=True)\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Strategies to deal with missing value


\n", "Almost always real world data sets have missing values. This can be due, for example, users didn't fill some part of the forms or some transformations happened while collecting and cleaning the data before they send it to you. Sometimes missing values are informative and weren't generated randomly. Therefore, it's a good practice to add binary features to check if there is missing values in each row for each feature that has missing values. In our case, six features have missing values so we would add six binary features one for each feature. For example, \"log_annual_inc\" feature has missing values, so we would add a feature \"is_log_annual_inc_missing\" that takes the values $\\in \\{0, 1\\}$. Good thing is that the missing values are in the predictors only and not the labels. Below are some of the most common strategies for dealing with missing values:\n", "- Simply delete all examples that have any missing values. This is usually done if the missing values are very small compared to the size of the data set and the missing values were random. In other words, the added binary features did not improve the model. One disadvantage for this strategy is that the model will throw an error when test data has missing values at prediction.\n", "- Impute the missing values using the mean of each feature separately.\n", "- Impute the missing values using the median of each feature separately.\n", "- Use *Multivariate Imputation by Chained Equations (MICE)*. The main disadvantage of MICE is that we can't use it as a transformer in sklearn pipelines and it requires to use the full data set when imputing the missing values. This means that there will be a risk of data leakage since we're using both training and test sets to impute the missing values. The following steps explain how MICE works:\n", " - First step: Impute the missing values using the mean of each feature separately.\n", " - Second step: For each feature that has missing values, we take all other features as predictors (including the ones that had missing values) and try to predict the values for this feature using linear regression for example. The predicted values will replace the old values for that feature. We do this for all features that have missing values, i.e. each feature will be used once as a target variable to predict its values and the rest of the time as a predictor to predict other features' values. Therefore, one complete cycle (iteration) will be done once we run the model $k$ times to predict the $k$ features that have missing values. For our data set, each iteration will run the linear regression 6 times to predict the 6 features.\n", " - Third step: Repeat step 2 until there is not much of change between predictions.\n", "- Impute the missing values using K-Nearest Neighbors. We compute distance between all examples (excluding missing values) in the data set and take the average of k-nearest neighbors of each missing value. There's no implementation for it yet in sklearn and it's pretty inefficient to compute it since we'll have to go through all examples to calculate distances. Therefore, we'll skip this strategy in this notebook.\n", "\n", "To evaluate each strategy, we'll use *Random Forest* classifier with hyperparameters' values guided by [Data-driven Advice for Applying Machine Learning to Bioinformatics Problems](https://arxiv.org/pdf/1708.05070.pdf) as a starting point.\n", "\n", "Let's first create binary features for missing values and then prepare the data for each strategy discussed above. Next, we'll compute the 10-folds cross validation *AUC* score for all the models using training data." ] }, { "cell_type": "code", "execution_count": 5, "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", "
credit_policyint_rateinstallmentlog_annual_incdtificodays_with_cr_linerevol_balrevol_utilinq_last_6mths...purpose_educationalpurpose_home_improvementpurpose_major_purchasepurpose_small_businessis_log_annual_inc_missingis_days_with_cr_line_missingis_revol_util_missingis_inq_last_6mths_missingis_delinq_2yrs_missingis_pub_rec_missing
010.1189829.1011.35040719.487375639.9583332885452.10.0...0000000000
110.1071228.2211.08214314.297072760.0000003362376.70.0...0000000000
210.1357366.8610.37349111.636824710.000000351125.61.0...0000000000
310.1008162.3411.3504078.107122699.9583333366773.21.0...0000000000
410.1426102.9211.29973214.976674066.000000474039.50.0...0000000000
\n", "

5 rows × 25 columns

\n", "
" ], "text/plain": [ " credit_policy int_rate installment log_annual_inc dti fico \\\n", "0 1 0.1189 829.10 11.350407 19.48 737 \n", "1 1 0.1071 228.22 11.082143 14.29 707 \n", "2 1 0.1357 366.86 10.373491 11.63 682 \n", "3 1 0.1008 162.34 11.350407 8.10 712 \n", "4 1 0.1426 102.92 11.299732 14.97 667 \n", "\n", " days_with_cr_line revol_bal revol_util inq_last_6mths \\\n", "0 5639.958333 28854 52.1 0.0 \n", "1 2760.000000 33623 76.7 0.0 \n", "2 4710.000000 3511 25.6 1.0 \n", "3 2699.958333 33667 73.2 1.0 \n", "4 4066.000000 4740 39.5 0.0 \n", "\n", " ... purpose_educational purpose_home_improvement \\\n", "0 ... 0 0 \n", "1 ... 0 0 \n", "2 ... 0 0 \n", "3 ... 0 0 \n", "4 ... 0 0 \n", "\n", " purpose_major_purchase purpose_small_business is_log_annual_inc_missing \\\n", "0 0 0 0 \n", "1 0 0 0 \n", "2 0 0 0 \n", "3 0 0 0 \n", "4 0 0 0 \n", "\n", " is_days_with_cr_line_missing is_revol_util_missing \\\n", "0 0 0 \n", "1 0 0 \n", "2 0 0 \n", "3 0 0 \n", "4 0 0 \n", "\n", " is_inq_last_6mths_missing is_delinq_2yrs_missing is_pub_rec_missing \n", "0 0 0 0 \n", "1 0 0 0 \n", "2 0 0 0 \n", "3 0 0 0 \n", "4 0 0 0 \n", "\n", "[5 rows x 25 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create binary features to check if the example is has missing values for all features that have missing values\n", "for feature in df.columns:\n", " if np.any(np.isnan(df[feature])):\n", " df[\"is_\" + feature + \"_missing\"] = np.isnan(df[feature]) * 1\n", "\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "code_folding": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Original data shapes: ((7662, 24), (1916, 24))\n", "After dropping NAs: ((7611, 18), (1905, 18))\n", "MICE data shapes: ((7662, 24), (1916, 24))\n" ] } ], "source": [ "# Original Data\n", "X = df.loc[:, df.columns != \"not_fully_paid\"].values\n", "y = df.loc[:, df.columns == \"not_fully_paid\"].values.flatten()\n", "X_train, X_test, y_train, y_test = train_test_split(\n", " X, y, test_size=0.2, shuffle=True, random_state=123, stratify=y)\n", "print(f\"Original data shapes: {X_train.shape, X_test.shape}\")\n", "\n", "# Drop NA and remove binary columns\n", "train_indices_na = np.max(np.isnan(X_train), axis=1)\n", "test_indices_na = np.max(np.isnan(X_test), axis=1)\n", "X_train_dropna, y_train_dropna = X_train[~train_indices_na, :][:, :-6], y_train[~train_indices_na]\n", "X_test_dropna, y_test_dropna = X_test[~test_indices_na, :][:, :-6], y_test[~test_indices_na]\n", "print(f\"After dropping NAs: {X_train_dropna.shape, X_test_dropna.shape}\")\n", "\n", "# MICE data\n", "mice = fancyimpute.MICE(verbose=0)\n", "X_mice = mice.complete(X)\n", "X_train_mice, X_test_mice, y_train_mice, y_test_mice = train_test_split(\n", " X_mice, y, test_size=0.2, shuffle=True, random_state=123, stratify=y)\n", "print(f\"MICE data shapes: {X_train_mice.shape, X_test_mice.shape}\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "code_folding": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m\u001b[94mBaseline model's average AUC: 0.651\n", "\u001b[1m\u001b[94mMean imputation model's average AUC: 0.651\n", "\u001b[1m\u001b[94mMedian imputation model's average AUC: 0.651\n", "\u001b[1m\u001b[94mMICE imputation model's average AUC: 0.656\n" ] } ], "source": [ "# Build random forest classifier\n", "rf_clf = RandomForestClassifier(n_estimators=500,\n", " max_features=0.25,\n", " criterion=\"entropy\",\n", " class_weight=\"balanced\")\n", "# Build base line model -- Drop NA's\n", "pip_baseline = make_pipeline(RobustScaler(), rf_clf)\n", "scores = cross_val_score(pip_baseline,\n", " X_train_dropna, y_train_dropna,\n", " scoring=\"roc_auc\", cv=10)\n", "print(f\"\\033[1m\\033[94mBaseline model's average AUC: {scores.mean():.3f}\")\n", "\n", "# Build model with mean imputation\n", "pip_impute_mean = make_pipeline(Imputer(strategy=\"mean\"),\n", " RobustScaler(), rf_clf)\n", "scores = cross_val_score(pip_impute_mean,\n", " X_train, y_train,\n", " scoring=\"roc_auc\", cv=10)\n", "print(f\"\\033[1m\\033[94mMean imputation model's average AUC: {scores.mean():.3f}\")\n", "\n", "# Build model with median imputation\n", "pip_impute_median = make_pipeline(Imputer(strategy=\"median\"),\n", " RobustScaler(), rf_clf)\n", "scores = cross_val_score(pip_impute_median,\n", " X_train, y_train,\n", " scoring=\"roc_auc\", cv=10)\n", "print(f\"\\033[1m\\033[94mMedian imputation model's average AUC: {scores.mean():.3f}\")\n", "\n", "# Build model using MICE imputation\n", "pip_impute_mice = make_pipeline(RobustScaler(), rf_clf)\n", "scores = cross_val_score(pip_impute_mice,\n", " X_train_mice, y_train_mice,\n", " scoring=\"roc_auc\", cv=10)\n", "print(f\"\\033[1m\\033[94mMICE imputation model's average AUC: {scores.mean():.3f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's plot the feature importances to check if the added binary features added anything to the model." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "code_folding": [] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# fit RF to plot feature importances\n", "rf_clf.fit(RobustScaler().fit_transform(Imputer(strategy=\"median\").fit_transform(X_train)), y_train)\n", "\n", "# Plot features importance\n", "importances = rf_clf.feature_importances_\n", "indices = np.argsort(rf_clf.feature_importances_)[::-1]\n", "plt.figure(figsize=(12, 6))\n", "plt.bar(range(1, 25), importances[indices], align=\"center\")\n", "plt.xticks(range(1, 25), df.columns[df.columns != \"not_fully_paid\"][indices], rotation=90)\n", "plt.title(\"Feature Importance\", {\"fontsize\": 16});" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Guided by the 10-fold cross validation *AUC* scores, it looks like all strategies have comparable results and missing values were generated randomly. Also, the added six binary features showed no importance when plotting feature importances from *Random Forest* classifier. Therefore, it's safe to drop those features and use *Median Imputation* method as a transformer later on in the pipeline." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Drop generated binary features\n", "X_train = X_train[:, :-6]\n", "X_test = X_test[:, :-6]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Strategies to deal with imbalanced data


\n", "Classification problems in most real world applications have imbalanced data sets. In other words, the positive examples (minority class) are a lot less than negative examples (majority class). We can see that in spam detection, ads click, loan approvals, etc. In our example, the positive examples (people who haven't fully paid) were only 19% from the total examples. Therefore, accuracy is no longer a good measure of performance for different models because if we simply predict all examples to belong to the negative class, we achieve 81% accuracy. Better metrics for imbalanced data sets are *AUC* (area under the ROC curve) and f1-score. However, that's not enough because class imbalance influences a learning algorithm during training by making the decision rule biased towards the majority class by implicitly learns a model that optimizes the predictions based on the majority class in the dataset. As a result, we'll explore different methods to overcome class imbalance problem.\n", "- Under-Sample: Under-sample the majority class with or w/o replacement by making the number of positive and negative examples equal. One of the drawbacks of under-sampling is that it ignores a good portion of training data that has valuable information. In our example, it would loose around 6500 examples. However, it's very fast to train.\n", "- Over-Sample: Over-sample the minority class with or w/o replacement by making the number of positive and negative examples equal. We'll add around 6500 samples from the training data set with this strategy. It's a lot more computationally expensive than under-sampling. Also, it's more prune to overfitting due to repeated examples.\n", "- EasyEnsemble: Sample several subsets from the majority class, build a classifier on top of each sampled data, and combine the output of all classifiers. More details can be found [here](http://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/tsmcb09.pdf).\n", "- Synthetic Minority Oversampling Technique (SMOTE): It over-samples the minority class but using synthesized examples. It operates on feature space not the data space. Here how it works:\n", " - Compute the k-nearest neighbors for all minority samples.\n", " - Randomly choose number between 1-k.\n", " - For each feature:\n", " - Compute the difference between minority sample and its randomly chosen neighbor (from previous step).\n", " - Multiply the difference by random number between 0 and 1.\n", " - Add the obtained feature to the synthesized sample attributes.\n", " - Repeat the above until we get the number of synthesized samples needed. More information can be found [here](https://www.jair.org/media/953/live-953-2037-jair.pdf).\n", "\n", "There are other methods such as `EditedNearestNeighbors` and `CondensedNearestNeighbors` that we will not cover in this notebook and are rarely used in practice.\n", "\n", "In most applications, misclassifying the minority class (false negative) is a lot more expensive than misclassifying the majority class (false positive). In the context of lending, loosing money by lending to a risky borrower who is more likely to not fully pay the loan back is a lot more costly than missing the opportunity of lending to trust-worthy borrower (less risky). As a result, we can use `class_weight` that changes the weight of misclassifying positive example in the loss function. Also, we can use different cut-offs assign examples to classes. By default, 0.5 is the cut-off; however, we see more often in applications such as lending that the cut-off is less than 0.5. Note that changing the cut-off from the default 0.5 reduce the overall accuracy but may improve the accuracy of predicting positive/negative examples.\n", "\n", "We'll evaluate all the above methods plus the original model without resampling as a baseline model using the same *Random Forest* classifier we used in the missing values section." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "code_folding": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m\u001b[94mOriginal model's average AUC: 0.652\n", "\u001b[1m\u001b[94mUnder-sampled model's average AUC: 0.656\n", "\u001b[1m\u001b[94mOver-sampled model's average AUC: 0.651\n", "\u001b[1m\u001b[94mEasyEnsemble model's average AUC: 0.665\n", "\u001b[1m\u001b[94mSMOTE model's average AUC: 0.641\n" ] } ], "source": [ "# Build random forest classifier (same config)\n", "rf_clf = RandomForestClassifier(n_estimators=500,\n", " max_features=0.25,\n", " criterion=\"entropy\",\n", " class_weight=\"balanced\")\n", "\n", "# Build model with no sampling\n", "pip_orig = make_pipeline(Imputer(strategy=\"mean\"),\n", " RobustScaler(),\n", " rf_clf)\n", "scores = cross_val_score(pip_orig,\n", " X_train, y_train,\n", " scoring=\"roc_auc\", cv=10)\n", "print(f\"\\033[1m\\033[94mOriginal model's average AUC: {scores.mean():.3f}\")\n", "\n", "# Build model with undersampling\n", "pip_undersample = imb_make_pipeline(Imputer(strategy=\"mean\"),\n", " RobustScaler(),\n", " RandomUnderSampler(), rf_clf)\n", "scores = cross_val_score(pip_undersample,\n", " X_train, y_train,\n", " scoring=\"roc_auc\", cv=10)\n", "print(f\"\\033[1m\\033[94mUnder-sampled model's average AUC: {scores.mean():.3f}\")\n", "\n", "# Build model with oversampling\n", "pip_oversample = imb_make_pipeline(Imputer(strategy=\"mean\"),\n", " RobustScaler(),\n", " RandomOverSampler(), rf_clf)\n", "scores = cross_val_score(pip_oversample,\n", " X_train, y_train,\n", " scoring=\"roc_auc\", cv=10)\n", "print(f\"\\033[1m\\033[94mOver-sampled model's average AUC: {scores.mean():.3f}\")\n", "\n", "# Build model with EasyEnsemble\n", "resampled_rf = BalancedBaggingClassifier(base_estimator=rf_clf,\n", " n_estimators=10, random_state=123)\n", "pip_resampled = make_pipeline(Imputer(strategy=\"mean\"),\n", " RobustScaler(), resampled_rf)\n", " \n", "scores = cross_val_score(pip_resampled,\n", " X_train, y_train,\n", " scoring=\"roc_auc\", cv=10)\n", "print(f\"\\033[1m\\033[94mEasyEnsemble model's average AUC: {scores.mean():.3f}\")\n", "\n", "# Build model with SMOTE\n", "pip_smote = imb_make_pipeline(Imputer(strategy=\"mean\"),\n", " RobustScaler(),\n", " SMOTE(), rf_clf)\n", "scores = cross_val_score(pip_smote,\n", " X_train, y_train,\n", " scoring=\"roc_auc\", cv=10)\n", "print(f\"\\033[1m\\033[94mSMOTE model's average AUC: {scores.mean():.3f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "EasyEnsemble method has the highest 10-folds CV with average AUC = 0.665." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Build Ensemble methods


\n", "We'll build ensemble models using three different models as base learners:\n", "- Extra Gradient Boosting\n", "- Support Vector Classifier\n", "- Random Forest\n", "\n", "The ensemble models will be built using two different methods:\n", "- Blending (average) ensemble model. Fits the base learners to the training data and then, at test time, average the predictions generated by all the base learners.\n", " - Use VotingClassifier from sklearn that:\n", " - fit all the base learners on the training data\n", " - at test time, use all base learners to predict test data and then take the average of all predictions.\n", "- Stacked ensemble model: Fits the base learners to the training data. Next, use those trained base learners to generate predictions (meta-features) used by the meta-learner (assuming we have only one layer of base learners). There are few different ways of training stacked ensemble model:\n", " - Fitting the base learners to all training data and then generate predictions using the same training data it was used to fit those learners. This method is more prune to overfitting because the meta learner will give more weights to the base learner who memorized the training data better, i.e. meta-learner won't generate well and would overfit.\n", " - Split the training data into 2 to 3 different parts that will be used for training, validation, and generate predictions. It's a suboptimal method because held out sets usually have higher variance and different splits give different results as well as learning algorithms would have fewer data to train.\n", " - Use k-folds cross validation where we split the data into k-folds. We fit the base learners to the (k - 1) folds and use the fitted models to generate predictions of the held out fold. We repeat the process until we generate the predictions for all the k-folds. When done, refit the base learners to the full training data. This method is more reliable and will give models that memorize the data less weight. Therefore, it generalizes better on future data.\n", "\n", "We'll use logistic regression as the meta-learner for the stacked model. Note that we can use k-folds cross validation to validate and tune the hyperparameters of the meta learner. We will not tune the hyperparameters of any of the base learners or the meta-learner; however, we will use some of the values recommended by the [Pennsylvania Benchmarking Paper](https://arxiv.org/pdf/1708.05070.pdf). Additionally, we won't use EasyEnsemble in training because, after some experimentation, it didn't improve the AUC of the ensemble model more than 2% on average and it was computationally very expensive. In practice, we sometimes are willing to give up small improvements if the model would become a lot more complex computationally. Therefore, we will use `RandomUnderSampler`. Also, we'll impute the missing values and standardize the data beforehand so that it would shorten the code of the ensemble models and allows use to avoid using `Pipeline`. Additionally, we will plot ROC and PR curves using test data and evaluate the performance of all models." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((2452, 18), (2452,))" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Impute the missing data using features means\n", "imp = Imputer()\n", "imp.fit(X_train)\n", "X_train = imp.transform(X_train)\n", "X_test = imp.transform(X_test)\n", "\n", "# Standardize the data\n", "std = RobustScaler()\n", "std.fit(X_train)\n", "X_train = std.transform(X_train)\n", "X_test = std.transform(X_test)\n", "\n", "# Implement RandomUnderSampler\n", "random_undersampler = RandomUnderSampler()\n", "X_res, y_res = random_undersampler.fit_sample(X_train, y_train)\n", "# Shuffle the data\n", "perms = np.random.permutation(X_res.shape[0])\n", "X_res = X_res[perms]\n", "y_res = y_res[perms]\n", "X_res.shape, y_res.shape" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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uukmNm7cCMCaNWu49dZb6dKlC4MHD+bUqVOAswf8hRde4NZbb6Vr1658/fXXDBgwgLZt2zJz5kxXHCkpKdx777106tSJESNGkJWVlS/WBQsW0L17d8LCwnjqqafO22s8a9YsunXrRmhoKPfffz9nzpxxXVvO9QAEBga63r/xxhuEhIQQGhrK+PHjizz/+WzdupXmzZsTFBREjRo1iIqK4uOPPy7ymIULF3LnnXcC8N///pdu3brh7+9PvXr16NatG6tXrwbA19cXgIyMDM6ePVvoDSApH0rQRUSkKlAP+jlSTyRzNqApANcGdSjnaEQkx4X0eKempuLt7X3B3xkTE4O/vz+///473bt3JzIykn79+nHrrbfywgsvALB48WJGjhzJV199xbJly1i/fj0ZGRmEh4fTtm3bQs/95JNP8vrrr3PllVeyZcsWRo4cyUcffQTAkSNHWLlyJbt37yY6Opp+/foxf/58IiIiePrpp8nMzOTMmTMcO3aMSZMmsWTJEmrXrs0//vEPYmJiGDNmDOBMgOPi4njmmWcYPnw4q1atIi0tjc6dO/PnP/8ZgG3btvHll1/StGlToqKi+Oijj+jXr58rzl27drF06VJWrVqFl5cXI0eOZN68eURHRxd6bX379mXw4MEAvPTSS7z//vs8+uijhZaPi4tjxYoVrF69Gh8fH44fP56vzLx58/jnP/+Zb3vz5s157733cm1LSkrKlfwHBASwdevWQr//4MGDHDhwgC5duhR6fFJSkuvzgAED2Lp1K7feemuuupLy5+HQnzQiIlL5qTU7x9nsxt1hHLlWbzfejco5MhEpa9OmTWP58uUAJCYmsnfvXjp06EBQUBCbN2/myiuvJCEhgc6dOzN16lR69+5NrVq1AOjZs2eh5z116hSbNm1yJbEAZ8+edb3v06cPDoeDVq1a8csvvwDQrl07Hn/8cdLT0+nTpw/XX389K1euZNeuXdx2220ApKen06HDHzcWe/XqBUDr1q05ffo0devWpW7dunh7e3PixAnXeYOCggDn/OrPP/88V9K5bt06vvnmG7p16wY4b3o0aNCgyHrbuXMnEyZMIDk5mVOnThEREVFk+c8++4x7770XHx8fAPz9/fOVGThwIAMHDizyPDmstcUql2PRokVERkbi4eFRrOMXLVpEamoqDz/8MOvXr3fVjZQ/zUEXEZGq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KCMjg6SkpFzbWrZsWQpXWagK35afMWn42Jqkp5ys9v93uoPq0D1Uj+6henQP1aN7uLMei2rLSzNBL+juub2AMgVy9x8oZfwHT5WUkJCgenSD6l6P6enpgDPhyXEhnXHW2kKP8/b2LvLY06dP8+CDD5KYmEhWVhajRo3i6NGjHDlyhLvuuov69euzfPly/vKXv7Bt2zZSU1OJjIzkr3/9KwDbtm1j7NixnD59mpo1a7J06VK8vLzw9PTE29ubVatWMXnyZObOnYu1lhEjRnDo0CEAXn75ZTp37sxvv/3GkCFD+PXXX7nxxhtdcRcW+4cffsjbb7/N2bNnad++Pa+99hoeHh4EBgYydOhQVq5cSa1atfjggw9o1KgRS5Ys4ZVXXsHhcODr68snn3xCZmYm48ePZ8OGDaSlpfHwww8THR3N5s2befnll2nUqBE7duygb9++tG7dmmnTppGamsqcOXO44oor8PDwYOPGjcycOZOjR48yYcIEevbsSY0aNfDw8MDb25vTp08zevRodu7cSUZGBmPHjqVPnz5F/nvcc889JCYmkpaWxtChQ3nggQcACAwMJDExEYClS5eycuVKpk6dytGjRxkxYgT79+8HYMqUKXTqlDenLL7Vq1dz7733UqtWLUJDQzl58iQnTpygcePGBZbfu3cvx44do2vXrhhjiIuL4y9/+Qve3t7ceeed/PWvf6VmzZoYY1i+fDnNmzfHx8cHLy+vfP++6enpBAUF5fp9KGMVvi0fenkQX32/k+Brr73oc1V31b39cRfVo3uoHt1D9egeZVmPpZmgHwKanvO5CXC4kDKHjDGegB/wWynGJCKVUHR0dImPSU1NPW8iXpjVq1fTuHFj5s1zPtkhOTkZPz8/YmJi+Oijj7jkkksAGDduHP7+/mRmZhIZGcm3337LVVddxYMPPkhsbCzt2rUjJSWFWrVquc790Ucf8dZbbzF//nzq1avHQw89xPDhw7npppv46aefiIqKYtOmTUycOJHOnTszZswYVq1axbvvvltovLt27WLRokWsWrUKLy8vRo4cybx584iOjub06dO0b9+ecePG8dxzzzFr1ixGjRrFq6++ysKFCwkICODEiRMAvP/++/j6+rJ27VrS0tK47bbbCAkJAeDbb79l06ZN+Pv707ZtW+6//37WrFnD1KlTefvtt5k4cSIABw8eZMWK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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Define base learners\n", "xgb_clf = xgb.XGBClassifier(objective=\"binary:logistic\",\n", " learning_rate=0.03,\n", " n_estimators=500,\n", " max_depth=1,\n", " subsample=0.4,\n", " random_state=123)\n", "\n", "svm_clf = SVC(gamma=0.1,\n", " C=0.01,\n", " kernel=\"poly\",\n", " degree=3,\n", " coef0=10.0,\n", " probability=True)\n", "\n", "rf_clf = RandomForestClassifier(n_estimators=300,\n", " max_features=\"sqrt\",\n", " criterion=\"gini\",\n", " min_samples_leaf=5,\n", " class_weight=\"balanced\")\n", "\n", "# Define meta-learner\n", "logreg_clf = LogisticRegression(penalty=\"l2\",\n", " C=100,\n", " fit_intercept=True)\n", "\n", "# Fitting voting clf --> average ensemble\n", "voting_clf = VotingClassifier([(\"xgb\", xgb_clf),\n", " (\"svm\", svm_clf),\n", " (\"rf\", rf_clf)],\n", " voting=\"soft\",\n", " flatten_transform=True)\n", "voting_clf.fit(X_res, y_res)\n", "xgb_model, svm_model, rf_model = voting_clf.estimators_\n", "models = {\"xgb\": xgb_model, \"svm\": svm_model,\n", " \"rf\": rf_model, \"avg_ensemble\": voting_clf}\n", "\n", "# Build first stack of base learners\n", "first_stack = make_pipeline(voting_clf,\n", " FunctionTransformer(lambda X: X[:, 1::2]))\n", "# Use CV to generate meta-features\n", "meta_features = cross_val_predict(first_stack,\n", " X_res, y_res,\n", " cv=10,\n", " method=\"transform\")\n", "# Refit the first stack on the full training set\n", "first_stack.fit(X_res, y_res)\n", "# Fit the meta learner\n", "second_stack = logreg_clf.fit(meta_features, y_res)\n", "\n", "# Plot ROC and PR curves using all models and test data\n", "fig, axes = plt.subplots(1, 2, figsize=(14, 6))\n", "for name, model in models.items():\n", " model_probs = model.predict_proba(X_test)[:, 1:]\n", " model_auc_score = roc_auc_score(y_test, model_probs)\n", " fpr, tpr, _ = roc_curve(y_test, model_probs)\n", " precision, recall, _ = precision_recall_curve(y_test, model_probs)\n", " axes[0].plot(fpr, tpr, label=f\"{name}, auc = {model_auc_score:.3f}\")\n", " axes[1].plot(recall, precision, label=f\"{name}\")\n", "stacked_probs = second_stack.predict_proba(first_stack.transform(X_test))[:, 1:]\n", "stacked_auc_score = roc_auc_score(y_test, stacked_probs)\n", "fpr, tpr, _ = roc_curve(y_test, stacked_probs)\n", "precision, recall, _ = precision_recall_curve(y_test, stacked_probs)\n", "axes[0].plot(fpr, tpr, label=f\"stacked_ensemble, auc = {stacked_auc_score:.3f}\")\n", "axes[1].plot(recall, precision, label=\"stacked_ensembe\")\n", "axes[0].legend(loc=\"lower right\")\n", "axes[0].set_xlabel(\"FPR\")\n", "axes[0].set_ylabel(\"TPR\")\n", "axes[0].set_title(\"ROC curve\")\n", "axes[1].legend()\n", "axes[1].set_xlabel(\"recall\")\n", "axes[1].set_ylabel(\"precision\")\n", "axes[1].set_title(\"PR curve\")\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see from the chart above, stacked ensemble model didn't improve the performance. One of the major reasons are that the base learners are considerably highly correlated especially *Random Forest* and *Gradient Boosting* (see the correlation matrix below)." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot the correlation between base learners\n", "probs_df = pd.DataFrame(meta_features, columns=[\"xgb\", \"svm\", \"rf\"])\n", "corrmat(probs_df.corr(), inflate=True);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In addition, with classification problems where False Negatives are a lot more expensive than False Positives, we may want to have a model with a high precision rather than high recall, i.e. the probability of the model to identify positive examples from randomly selected examples. Below is the confusion matrix:" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "second_stack_probs = second_stack.predict_proba(first_stack.transform(X_test))\n", "second_stack_preds = second_stack.predict(first_stack.transform(X_test))\n", "conf_mat = confusion_matrix(y_test, second_stack_preds)\n", "# Define figure size and figure ratios\n", "plt.figure(figsize=(16, 8))\n", "plt.matshow(conf_mat, cmap=plt.cm.Reds, alpha=0.2)\n", "for i in range(2):\n", " for j in range(2):\n", " plt.text(x=j, y=i, s=conf_mat[i, j], ha=\"center\", va=\"center\")\n", "plt.title(\"Confusion matrix\", y=1.1, fontdict={\"fontsize\": 20})\n", "plt.xlabel(\"Predicted\", fontdict={\"fontsize\": 14})\n", "plt.ylabel(\"Actual\", fontdict={\"fontsize\": 14});" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's finally check the partial dependence plots to see what are the most important features and their relationships with whether the borrower will most likely pay the loan in full before mature data. we will plot only the top 8 features to make it easier to read." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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UkotmiIiIiIiIpJSKjRFREREREQkpVRoioiIiIiISEqp0BQREREREZGUUqEpIiIiIiIiKaVCU0RERERERFJKhaaIiIiIiIiklApNERERERERSSkVmiIiIiIiIpJSKjRFREREREQkpVRoioiIiIiISEqp0BQREREREZGUUqEpIiIiIiIiKaVCU0RERERERFJKhaaIiIiIiIiklApNERERERERSamcTAfQXIqKijzTMYgkUlBQYJmOIVOUmxJVykuRaFJuikRTzdxUi6aIiIiIiIiklApNERERERERSamMFppmdr+ZrTazeQnmn25mn4Q/75nZHnHzvjKzT81sjpnNbr6oRVo35aVINCk3RaJJuSlSu0y3aD4AHFvH/C+BQ9x9d+Bq4O4a8w9z93Huvnea4hNpix5AeSkSRQ+g3BSJogdQborsIKODAbn7dDMbUsf89+IefgAMSHdMIm2d8lIkmpSbItGk3BSpXaZbNBvix8DLcY8deM3MPjSz8zIUk0hbp7wUiSblpkg0KTelzWgRtzcxs8MIEvOguMkHuvsKM+sNvG5mn7n79GS2V1hYmI4wRRpkxIgRmQ6hSVKdl6DclMxr6XkJes+U1km5uSPlpkRBXbkZ+ULTzHYH7gWOc/d1senuviL8vdrMngX2BZJKzNbwz0okk9KRl6DcFGkqvWeKRJNyU9qiSHedNbNBwDPAj9x9Ydz0TmbWOfY3cDRQ60hfIpJaykuRaFJuikSTclPaqoy2aJrZo8ChQE8zWw78AcgFcPe7gN8DPYA7zAygIhyRqw/wbDgtB3jE3V9p9gMQaYWUlyLRpNwUiSblpkjtzN0zHUOzKCoqahsHKi1SQUGBZTqGTFFuSlQpL0WiSbkpEk01czPSXWdFRERERESk5VGhKSIiIiIiIimlQlNERERERERSSoWmiIiIiIiIpJQKTREREREREUkpFZoiIiIiIiKSUio0RUREREREJKVUaIqIiIiIiEhKqdAUERERERGRlFKhKSIiIiIiIimlQlNERERERERSSoWmiIiIiIiIpJQKTREREREREUkpFZoiIiIiIiKSUhktNM3sfjNbbWbzEsw3M7vVzL4ws0/MbM+4eWeZWWH4c1bzRS3S+ik3RaJHeSkSTcpNkdplukXzAeDYOuYfB4wIf84D7gQws+7AH4AJwL7AH8ysW1ojFWlbHkC5KRI1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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot partial dependence plots\n", "gbrt = GradientBoostingClassifier(loss=\"deviance\",\n", " learning_rate=0.1,\n", " n_estimators=100,\n", " max_depth=3,\n", " random_state=123)\n", "gbrt.fit(X_res, y_res)\n", "fig, axes = plot_partial_dependence(gbrt, X_res,\n", " np.argsort(gbrt.feature_importances_)[::-1][:8],\n", " n_cols=4,\n", " feature_names=df.columns[:-6],\n", " figsize=(14, 8))\n", "plt.subplots_adjust(top=0.9)\n", "plt.suptitle(\"Partial dependence plots of borrower not fully paid\\n\"\n", " \"the loan based on top most influential features\")\n", "for ax in axes: ax.set_xticks(())\n", "for ax in [axes[0], axes[4]]: ax.set_ylabel(\"Partial dependence\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we might expected, borrowers with lower annual income and less FICO scores are less likely to pay the loan fully; however, borrowers with lower interest rates (riskier) and smaller installments are more likely to pay the loan fully." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Conclusion


\n", "Most classification problems in the real world are imbalanced. Also, almost always data sets have missing values. In this notebook, we covered strategies to deal with both missing values and imbalanced data sets. We also explored different ways of building ensembles in sklearn. Below are some takeaway points:\n", "- There is no definitive guide of which algorithms to use given any situation. What may work on some data sets may not necessarily work on others. Therefore, always evaluate methods using cross validation to get a reliable estimates.\n", "- Sometimes we may be willing to give up some improvement to the model if that would increase the complexity much more than the percentage change in the improvement to the evaluation metrics.\n", "- In some classification problems, *False Negatives* are a lot more expensive than *False Positives*. Therefore, we can reduce cut-off points to reduce the False Negatives.\n", "- When building ensemble models, try to use good models that are as different as possible to reduce correlation between the base learners. We could've enhanced our stacked ensemble model by adding *Dense Neural Network* and some other kind of base learners as well as adding more layers to the stacked model.\n", "- EasyEnsemble usually performs better than any other resampling methods.\n", "- Missing values sometimes add more information to the model than we might expect. One way of capturing it is to add binary features for each feature that has missing values to check if each example is missing or not." ] } ], "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.4" } }, "nbformat": 4, "nbformat_minor": 2 }