Lending Club-EDA以及資料建模分析
目錄
1.前期準備
1.1 專案概述
1.2 本專案所解決的問題
1.3 模型選擇
2.資料探索性分析(EDA)
2.1簡單的資料清洗
2.2 資料單變數分析
2.3 二元相關性分析
2.4 總結
3.特徵工程
3.1 資料清洗
3.2 特徵過濾
3.3 特徵抽象
3.4 特徵縮放(無量綱化)
3.5特徵選擇
3.6 SMOTE-處理不均衡樣本資料
4 資料建模評估與最佳化
4.1 模型訓練及評估
4.2 模型最佳化
一、前期準備
1.1
本專案選擇的資料為2016年1~6月的lendingclub放款資料。根據業務的常識,除了像欺詐型別的客戶,通常情況下在放款一段時間後違約表現才可能充分和平穩。根據經驗法則,小微貸款需要6個月左右的時間,比如我目前所從事的車抵貸一般是三個月的時間(具體原因是因為車抵貸客戶的資質都是比較差,而且一般的貸款期限相對比較短)。但是所選擇的資料中很有一部分貸款狀態都是current(正常還款狀態中),在這次案例中為了便於分析統一將current規定為正常客戶,這也是最後一個模型的弊端。
1。2 本專案所解決的問題:透過過資料的基本分析嘗試解決一下問題:
(1)貸款客戶的基本畫像
(2)lending club平臺業務分析
(3)違約客戶與主要特徵之間的相關性分析
(4)根據分析結果,提出合理化建議
(5)透過構建模型,對新增貸款人預測是否違約,決定是否放款。
1。3 場景解析:我們的場景是透過使用者的歷史行為(如歷史資料的多維特徵和貸款狀態是否違約)來訓練模型,透過這個模型對新增的貸款人“是否具有償還能力,是否具有償債意願”進行分析,預測貸款申請人是否會發生違約貸款。這是一個監督學習的場景,因為已知了特徵以及貸款狀態是否違約(目標列),我們判定貸款申請人是否違約是一個
二元分類問題
,可以透過一個
分類演算法
來處理,這裡選用邏輯斯蒂迴歸(Logistic Regression)。
二、資料探索性分析
重要欄位的解釋
2。1資料讀取與簡單的資料清洗
(1)首先將匯入常用的包
(2)資料讀取與解析
透過基礎的資料解析大概知道我們的資料有37萬條記錄,49個特徵。同時存在著object型別,這個後續要進行特徵抽象。
另外數值型資料和object型別資料描述性分析可以看到欄位desc(借款描述)、mths_since_last
record確實比較嚴重。另外url列全部為同樣的內容,另外pub
_rec也是比較異常等。
同時也對平臺的業務模式有個初步的瞭解,比如借款期限分佈最多的是36個月,平均利率分佈在13。41%左右,信用評級以B級居多,貸款金額在1。5W左右。
另外對客戶的基本畫像有個初步的認識,比如借款職業多為老師,工作年限在十年以上的居多,房屋性質多為按揭。大多數人的目的是為了債務重組。這其實就是一個簡單的使用者畫像,瞭解分析的物件到底是哪群人,對於風控領域來講,很多的預測分析說到底就是假設某一群人在一定時間內會有相同的行為模式,所以使用者畫像是保障分析準確的重要前提。
describe只是針對數值資料進行描述
(3)資料清洗
先檢視資料的缺失情況,有幾列缺失率在50%以上,且屬性對我們的模型預測意義不大。我選擇將其刪除。
2。2 單變數分析與視覺化
(1)首先分析貸款狀態,看下目前所選的資料違約和正常的比例。為了以後便於分析,首先將正常的客戶編碼為0,違約的客戶編碼為1。透過視覺化看到大約有92%的正常客戶,8%的違約客戶。因為只是簡單的定義違約,因此得到的違約率稍微高一些。但是樣本還是屬於不均衡樣本,建模分析的時候要進行處理。
(2)對於任何一個金融產品,金額、利率、期限都是要首先關注的。
金額一般大部分來講都是處於10000~20000之間,可以看出平臺是以小金額貸款為主。
貸款期限主要以36期為主,一般借款期限越長,相對的風險越大。但是貸款期限長對於平臺來講收益比較大,前提也是客戶穩定還款的狀態下,但是夜長夢多,誰也不能保證客戶的收入一直平穩。因此權衡收益與風險,以實現風險可控的前提下利益最大化也是一個研究方向吧。目前我國的小額貸款大多都是2年左右,3年以上的幾乎很少了。
利率大多處在10%~18%的年華,一般客戶資質越差,利率越高。分客戶層級去劃分利率而不是一刀切也是實現了利益最大化的一種方式。
(3)客戶的房屋性質
可以看到按揭性質的房屋屬性最多,這樣的客戶一般面臨著較大的還款壓力。
(4)貸款用途
借款用途佔比最大的是債務組合,通俗的講就是拆東牆補西牆。此類客戶一般現金流比較緊張,逾期的風險比較高。
(5)過去兩年內的逾期次數
可以看到過年兩年逾期30天以上的次數絕大部分都介於0~3之間,也就是絕大部分客戶以往的歷史徵信記錄還是比較好的 ,相比我我國的徵信要求(一般都是近一年不可以兩三累六)嚴格了許多,當然這也是客戶申請初期FICO分值過濾掉了許多徵信不良的客戶。
2。3二元相關性分析
(1)客戶收入與違約之間的關係
首先根據客戶的收入水平劃分為5個等級,並檢視相應的個數。
從結果來看和我們預想的一樣,一般來說收入越高違約比例越小,中等收入的的人數佔比最多。
(2)客戶信用等級和貸款狀態之間的關係
客戶的信用等級越低所發生違約的可能性就越大。客戶等級非常好的(A級、B級)幾乎可以沒有違約可能性的出現。另外平臺為了更好的把控風險,絕大部分客戶都是出於A~E級別中的
(
2
)
creditScore
=
pd
。
DataFrame
(
data
。
groupby
([
‘Status’
,
‘grade’
])[
‘Status’
]
。
count
()
。
unstack
(
0
))
score
=
pd
。
DataFrame
(
creditScore
。
values
[
2
:],
index
=
list
(
creditScore
。
index
)[
2
:],
columns
=
list
(
creditScore
。
columns
))
index
=
list
(
creditScore
。
index
)[
2
:]
defaultRate
=
(
score
[
1
]
/
(
score
[
1
]
+
score
[
0
]))
。
reindex
(
index
)
(
defaultRate
)
y
=
list
(
defaultRate
。
values
)
fig1
=
plt
。
figure
(
1
)
fig1
。
set_size_inches
(
15。5
,
7。5
)
ax1
=
fig1
。
add_subplot
(
2
,
1
,
2
)
x
=
np
。
arange
(
len
(
index
))
+
1
ax1
。
bar
(
x
,
y
,
width
=
0。4
)
ax1
。
set_xticks
(
x
)
ax1
。
set_xticklabels
(
index
,
rotation
=
0
,
fontsize
=
12
)
ax1
。
set_ylabel
(
‘違約百分率(%)’
,
fontsize
=
14
)
for
a
,
b
in
zip
(
x
,
y
):
plt
。
text
(
a
,
b
+
0。001
,
‘
%。2f%%
’
%
(
b
*
100
),
ha
=
‘center’
,
va
=
‘bottom’
,
fontsize
=
10
)
ax2
=
fig1
。
add_subplot
(
2
,
1
,
1
)
incomeRage
。
plot
(
kind
=
‘bar’
,
ax
=
ax2
)
ax2
。
set_xticklabels
(
index
,
rotation
=
0
,
fontsize
=
12
)
ax2
。
set_ylabel
(
‘數量’
,
fontsize
=
14
)
plt
。
show
()
(3)工作年限和違約率之間的關係
可以看出平均的趨勢是隨著工作年限的增長,違約在降低。比如工作10年以上的客戶佔比最大,而違約率最低,所謂的優質客戶群體啊。
employmentStatus = pd。DataFrame(data。groupby([‘Status’, ‘emp_length’])[‘Status’]。count()。unstack(0))
employmentStatus = pd。DataFrame(employmentStatus。values[0:120], index=list(employmentStatus。index)[0:120],columns=list(employmentStatus。columns))
defaultRate=employmentStatus[1] / (employmentStatus[1] + employmentStatus[0])
fig1 = plt。figure(1,figsize=[15。5,5])
ax1 = fig1。add_subplot(2, 1, 1)
employmentStatus。plot(kind=‘line’, grid=True,ax=ax1)
#ax1。set_xlabel(‘受僱傭狀態持續時間(年)’, fontsize=14)
ax1。set_ylabel(‘數量’, fontsize=14)
ax2 = fig1。add_subplot(2, 1, 2)
ax2。plot(list(defaultRate。index),list(defaultRate。values),‘ko——’)
ax2。set_xlabel(‘受僱傭狀態持續時間(年)’, fontsize=14)
ax2。set_ylabel(‘違約百分率(%)’, fontsize=14)
plt。legend(loc=‘best’)
plt。show()
(4)貸款利率與歷史逾期記錄之間的關係
違約次數越多的人意味著自身財務狀況較差,償付能力也較低,因此此類客戶貸款風險越高,從圖中可以看到一般來說歷史的逾期次數越多,貸款利率基本呈現上浮的趨勢。
2.4、總結
(1)我們可以看到lendingclub客戶的基本畫像是滿足寄出的FICO信用記錄分,債務收入比-dtr(除去按揭外)一般控制在20%以下,客戶的年收入平均在74575美元。另外客戶多部分工作年限超過10年,有著較好的信用等級記錄,按揭房性質比例佔了近一半,大部分人申請貸款的目的是為了債務重組。透過分析發現違約率較高的影響因素一般多為工作年限不長,收入不穩定,還款意願較差等方面,這在為我們貸前稽核,以及制定合理的利率區間提供了 有利的證據。
(2)再來說下我國的P2P金融市場。目前的整個大環境可以用“慘淡”兩個字形容也不為過。先回顧下p2p發展的重要幾年:2014年,“促進網際網路金融健康發展”;2015年,回顧2014年工作時,提到“網際網路金融異軍突起”;部署2015年工作時,再次提出“促進網際網路金融健康發展”;2016年,“規範發展網際網路金融”;2017年,“對網際網路金融等累積風險要高度警惕”;2018年,“健全網際網路金融監管”。2019年,將會是……?從最初的“促進發展”到“規範發展”再到“警惕風險”,然後是2018年的“健全網際網路金融監管”,措辭變化的背後反映的是行業大環境的變遷。網際網路金融行業的這五年,經歷了爆發式增長,也見證了驟雨式整改,進入常態化“強監管”階段。在經歷過一系列的洗牌後,我們希望見證P2P市場更強。
後時代的LendingClub,要走的第一步應該是暫時忘掉擴大貸款體量,而專注於贏回投資者的信任。P2P行業在華爾街的玩命催化下向前突進得太快,現在也確實是時候放緩腳步加強一下自我修養。2016年5月,LendingClub在美國市場的最大競爭對手Prosper宣佈裁員四分之一,另一家著名P2P平臺OnDeck也下調了今年增長的預期。但是這些跡象都預示P2P行業窮途末路了嗎?我認為不是。正如P2P專業人士 Anthony Hsieh所評論的那樣:“你曾有諸多非理性的行為,但事實上市場環境收緊其實是件大好事。你會看到整個市場將變得更強!”