天天看點

機器學習:銀行信貸違約預測模型

一種資料科學方法,用于預測和了解申請人的個人資料,以最大程度地降低未來貸款違約的風險。

機器學習:銀行信貸違約預測模型

關于該項目

該資料集包含有關信貸申請人的資訊。在全球範圍内,銀行使用這種資料集和資訊資料類型來建立模型,以幫助決定接受/拒絕誰的貸款。

在進行所有探索性資料分析、清理和處理我們可能(将)發現的所有異常之後,一個好/壞申請人的模式将暴露在機器學習模型中學習。

機器學習問題和目标

我們正在處理一個有監督的二進制分類問題。目标是訓練最好的機器學習模型,以最大限度地提高深入了解過去客戶資料的預測能力,最大限度地降低未來貸款違約的風險。

性能名額

​鑒于我們正在處理高度不平衡的資料,用于模型評估的名額是 ROC AUC 。

項目結構

該項目分為三類:

  1. EDA:探索性資料分析
  2. 資料整理:清理和特征選擇
  3. 機器學習:預測模組化

資料集

資料集為lendingclub資料集。

機器學習:銀行信貸違約預測模型

功能描述

  • id:貸款申請的唯一 ID。
  • 等級:LC配置設定的貸款等級。
  • year_inc:借款人在注冊時提供的自報年收入。
  • short_emp: 1 受雇 1 年或更短時間。
  • emp_length_num: 就業年限。可能的值介于 0 和 10 之間,其中 0 表示不到一年,而 10 表示十年或更長時間。
  • home_ownership:房屋所有權的類型。
  • dti(債務與收入比率):使用借款人每月債務支付總額與債務總額(不包括抵押貸款和申請的信用證貸款)除以借款人自我報告的月收入計算得出的比率。
  • 目的:借款人為貸款請求提供的類别。
  • term:貸款的付款次數。值以月為機關,可以是 36 或 60。
  • last_delinq_none: 1 當借款人至少有一次拖欠事件時。
  • last_major_derog_none: 1 個借款人至少有 90 天的差評。
  • revol_util:循環線使用率,或借款人使用的信貸量相對于所有可用的循環信貸。
  • total_rec_late_fee:迄今為止收到的滞納金。
  • od_ratio:透支比率。
  • bad_loan:未支付貸款時為 1。

導入依賴庫

import pandas as pd
import numpy as np
import seaborn as sns
import pingouin as pg
import scipy
from scipy.stats import chi2
from scipy.stats import chi2_contingency
from scipy.stats import pearsonr, spearmanr
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn import tree
from sklearn.tree import export_graphviz
from sklearn.externals.six import StringIO
from sklearn.linear_model import Perceptron
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import  precision_recall_curve, roc_auc_score, confusion_matrix, accuracy_score, recall_score, precision_score, f1_score,auc, roc_curve, plot_confusion_matrix
from category_encoders import BinaryEncoder
from IPython.display import Image
import pydotplus
import matplotlib.pyplot as plt
%matplotlib inline
color = sns.color_palette()
seed = 42      

加載和顯示資料集:

data = pd.read_csv('lending_club_loan_dataset.csv', low_memory=False      
>> data.head()      
機器學習:銀行信貸違約預測模型

EDA:解釋性資料分析

數值屬性的主要統計資料:

​​

​>> data.describe().round(3)​

該資料集有 2000 個觀測值和包括目标在内的 15 個變量,分為 11 個數字特征和 4 個類别特征。

存在缺失值的變量:“home_ownership”為 7.46%,“dti”為 0.77%,“last_major_derog_none”為 97.13%。

從均值和中位數的差異,以及變量“annual_inc”、“revol_util”和“total_rec_late_fee”的最大值的距離來看,似乎有一些異常值。

分類屬性的主要統計資料:

機器學習:銀行信貸違約預測模型

不平衡的資料:目标有 80% 的違約結果(值 1),而 20% 的貸款最終被支付/未違約(值 0)

機器學習:銀行信貸違約預測模型

EDA 功能

使用和濫用圖形來描述資料集中的所有特征。首先為每個圖表定義一些函數:箱線圖、直方圖、條形圖和餅圖、散點圖、資料透視圖以及統計描述。

機器學習:銀行信貸違約預測模型

類别分布的可視化:

機器學習:銀行信貸違約預測模型

直方圖告訴我們,收入越高,違約趨勢越高。

機器學習:銀行信貸違約預測模型

散點圖顯示了“年收入”和“債務收入比”之間的弱負相關。​

相關值為 -0.23,這意味着随着 yearn_inc 的減少,執行個體 1 的貸款(違約/未支付)增加。

機器學習:銀行信貸違約預測模型

就業年限。可能的值介于 0 和 10 之間,其中 0 表示不到一年,而 10 表示十年或更長時間。

機器學習:銀行信貸違約預測模型

特征:dti(債務收入比)

使用借款人每月債務支付總額與債務總額(不包括抵押貸款和申請的信用證貸款)除以借款人自我報告的月收入計算得出的比率。

機器學習:銀行信貸違約預測模型

與良好貸款相比,不良貸款(違約)的分布平均具有更高的“dti”值(債務與收入比率)。

機器學習:銀行信貸違約預測模型

等級Grade:趨勢是當等級等級降低時,違約貸款的可能性增加。

機器學習:銀行信貸違約預測模型

revol_util

循環線使用率,或借款人使用的信貸量相對于所有可用的循環信貸。客戶的年收入越低,借款人使用的信用額度相對于所有可用的循環信用額度越高。

機器學習:銀行信貸違約預測模型

年收入最低的客戶是滞納金較多的客戶,尤其是最高和重的客戶。

機器學習:銀行信貸違約預測模型

在房屋、小型企業或度假等貸款用途中,滞納金的發生頻率較高。另一方面,婚禮和汽車是滞納金執行最低的信用目的。

機器學習:銀行信貸違約預測模型

od_ratio透支比率

機器學習:銀行信貸違約預測模型

箱線圖:可視化數值資料分散

機器學習:銀行信貸違約預測模型

模型的混淆矩陣

機器學習:銀行信貸違約預測模型

模型ROC曲線

機器學習:銀行信貸違約預測模型

多算法比較中,支援向量機svc的auc最高

機器學習:銀行信貸違約預測模型

結論

最佳模型: 支援向量機 - 分類器 (SVC):75.21%。

經驗法則非常簡單:ROC AUC 名額的值越高越好。如果模型auc隻有 0.5,表示模型功能和随機猜測差不多。如果模型表現完美,auc将達到 1.0。

作者推薦AUC參考門檻值和模型性能劃分

機器學習:銀行信貸違約預測模型

如果有論文複現風控模型案例需求的學員,我們提供一對一定制輔導,快速幫你們解決問題。

歡迎關注《  python金融風控評分卡模型和資料分析(加強版)》,學習評分卡,內建樹,神經網絡算法等系統化風控模組化内容。

版權聲明:文章來自公衆号(python風控模型),未經許可,不得抄襲。遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

繼續閱讀