用邏輯迴歸模型解決網際網路金融信用風險問題

sljwy發表於2020-12-08
  • 邏輯迴歸(Logistic Regression)

    • 針對因變數為分類變數而進行迴歸分析的一種統計方法,屬於概率型非線性迴歸。

    • 優點:演算法易於實現和部署,執行效率和準確度高;

    • 缺點:離散型的自變數資料需要通過生產虛擬變數的方式來使用;

(二)底層原理及邏輯

  • 線上性迴歸中,因變數是連續變數,那麼線性迴歸能夠根據因變數和自變數之間存在的線性關係來構造迴歸方程;但是,一旦因變數是分類變數,那麼因變數與自變數就不會存在上面這種線性關係了,這時候就要通過某種變換來解決這個問題,這個變換就是對數變換;

  • 要理解對數變換,我們要先來學習一個函式Singmoid;

    • Singmoid函式又叫”S型”函式,在資料探勘領域大量使用,它得圖形是一個S形狀,如下圖所示:

@資料分析-jacky

  • 它得公式為:

@資料分析-jacky

  • 我們經常把它作為歸一化的函式來使用,所謂歸一化函式是指可以把連續數值,如上圖X軸正無窮大到負無窮大的範圍轉化為0到1的範圍,這就叫歸一化;因此,S函式可以為我們提供了一種將連續型的資料離散化為離散型資料的方法;
  • 如果f(x)>0.5,那麼我們可以把輸入轉換為1,如果f(x)<0.5,那麼轉換為0;

(三)案例實操-金融場景

1.場景介紹

  • 什麼是金融場景中的信用風險?

    • 信用風險是指借款人、證券發行人或交易對手因某些原因不願或無力履行合同而構成違約,使銀行、投資者或交易對手遭受損失的可能性。信用風險還包括由於履約能力的變化引起的損失的可能性。因此信用風險的大小主要取決於客戶的財務狀況和風險狀況。

2.痛點剖析

  • 網際網路金融的痛點在於信用風險控制。很多金融平臺沒有相應資質或者經驗,審查材料不嚴,導致大量資信不良的個人成功借貸,有些還是大數額的貸款。那麼,針對這個痛點,可以利用邏輯迴歸模型得以解決,下面jacky就跟大家介紹如何利用該模型解決網際網路金融信用風險問題,並用Python實現;

3.特徵選擇

(1) 因變數

  • 借貸人是否違約

    • 違約:0

    • 未違約:1

(2) 自變數

  • 違約記錄

  • 借貸時間

  • 銀行存款數額

  • 工作狀態

  • 房貸情況

  • 個人財產

  • 年齡

  • 電話號碼

  • 戶口所在地

  • 購買金融產品的種類

4.程式碼實操

(1) 匯入資料

#---author:朱元祿---
#匯入資料
import pandas
data = pandas.read_csv(
 'file:///Users/apple/Desktop/jacky_reinvest.csv',encoding='GBK'
)
#處理缺失值
data = data.dropna()
#檢視資料規模
data.shape

(2) 資料預處理

  • 邏輯迴歸要求輸入的資料是數值型的資料,因此我們要對離散資料進行虛擬資料的生成;

1)處理字元型與大小無關的欄位

dummyColumns = [
    '工作狀態','房貸情況','電話號碼','戶口所在地'
]
for column in dummyColumns:
    data[column]=data[column].astype('category')
dummiesData = pandas.get_dummies(
    data,
    columns=dummyColumns,
    prefix=dummyColumns,
    prefix_sep=" ",
    drop_first=True
)

2)呼叫Map方法進行可比較大小虛擬變數的轉換

productDict={
'12個月定存':4,'6個月定存':3,'3個月定存':2,'1個月定存':1}
data['產品Map']=data['金融產品'].map(productDict)

(3) 挑選可以建模的變數(特徵列)

  • 資料探勘對資料和業務知識的理解是非常重要的;

  • 挑選特徵列也是建模中最耗費精力的事情,特徵變數需要一一比較,才能選擇出來,在本案例中,jacky就簡化處理了,畢竟是分享

dummiesSelect = [
    'jacky選取的特徵列1','jacky選取的特徵列2','...'
]
inputData = dummiesData[dummiesSelect]
outputData = dummiesData[['違約結論']]

(4) 建模求解迴歸方程

from sklearn import linear_model
lrModel = linear_model.LogisticRegression()

(5) 模型訓練

lrModel.fit(inputData,outputData)

(6) 模型評估

lrModel.score(inputData,outputData)

(7) 使用模型預測未知引數

  • 因為邏輯迴歸輸入的引數是通過虛擬變數進行預處理過的,因此我們要對新的資料進行預測,那麼我們必須將我們的新資料使用訓練樣本的處理方法處理一次,才能作為邏輯模型的輸入進行預測,只要依葫蘆畫瓢在重複寫一次程式碼即可,這裡jacky就不贅述了;

5.模型解讀

本案例,jacky是使用真實案例做的分享,為了資料的保密性,具體結果展示就沒法一一呈現了,但是,我會分享結果和模型的解讀,對於資料建模的朋友來說,可能是有幫助的;

  • 正相關係數表示自變數越大,違約概率越小;負相關係數表示自變數越大,違約概率越大。下面逐一分析:

  • 1.違約記錄:之前沒有違約歷史記錄的客戶更加有信用,在之後違約的可能性也比較小。之前有過信用卡逾期未還款、股票融資被平倉後沒有歸還欠款的客戶,違約記錄越多的客戶,以後違約的可能性也比較大。

  • 2.借貸時間:借貸時間越長的客戶,違約的概率越大。借貸時間越長,外在的經濟環境和客戶自身的資產負債情況的不可預知性越大,違約的概率也隨之增加。
  • 3.銀行存款數額:銀行存款數額的大小,一定程度上反映了客戶的財務狀況,較好的財務狀況表明了更好的償貸能力,違約的可能性更小。
  • 4.工作狀態:客戶目前職業,收入對於客戶的償貸願望都有著直接影響。如果一個客戶有著良好的工作,穩定的收入,該客戶的現金流更加容易預測,違約的機率也隨之降低。
  • 5.房貸情況:這個比較複雜,一方面較高的房貸對於客戶來說是財政負擔,償還其他貸款的能力有所降低;另一方面,如果有足夠的公積金償還房貸,又恰恰證明了其較高的收入,能夠負擔起其餘的債務。
  • 6.個人財產:學區房、商業區等較高房價的住房可以作為借貸抵押。一般擁有這些住房的客戶,資產較高,可以更好地承擔債務。
  • 7.年齡:年齡較小的客戶消費慾望強烈,收入不穩定,積蓄不多,更有違約的風險。年齡較大的客戶一般都有明確的消費計劃,收入穩定,有著較為豐厚的積蓄,性格也比較穩重,個人違約的意願也比較小。
  • 8.電話號碼:聯絡方式對信用方式有正的方式。且與登記手機號碼的客戶相比,登記座機號碼的客戶更加穩定;
  • 9.戶口所在地:城市戶口的客戶一般收人較高,也比較穩定;農村戶口的客戶一般在城市打工或者在農村務農,收入無法得到切實的保障,遵守契約的意識也比較淡薄,違約可能性更大。

相關文章