python評分卡

來源:互聯網
上載者:User

標籤:眾數   fopen   tps   借貸   red   util   shu   目的   遞增   

1. 項目背景介紹1.1 信用風險和評分卡模型的基本概念

       信用風險指的是交易對手未能履行約定合約中的義務造成經濟損失的風險,即受信人不能履行還本付息的責任而使授信人的預期收益與實際收益發生偏離的可能性,它是金融風險的主要類型。

      借貸情境中的評分卡是一種以分數的形式來衡量風險幾率的一種手段,也是對未來一段時間內違約、逾期、失聯機率的預測。一般來說,分數越高,風險越小。

      信用風險計量體系包括主體評級模型和債項評級兩部分。其中主體評級模型包含以下四個方面內容:

 

  • 申請者評級模型:主要應用於相關融資類業務中新使用者的主體評級,適用於個人及機構融資主體。位於貸前准入環節。
  • 行為評級模型:主要用於相關融資類業務中存量客戶在續存期內的管理,如對客戶可能出現的逾期、延期等行為進行預測,僅適用於個人融資主體。 
  • 催收評級模型:主要應用於相關融資類業務中存量客戶是否需要催收的預測管理,僅適用於個人融資主體。 
  • 欺詐評級模型:主要應用於相關融資類業務中新客戶可能存在的欺詐行為的預測管理,適用於個人和機構融資主體。 在貸前准入環節裡面。

       本項目主要針對申請者評分模型。

1.2 資料來源

         本項目資料來源於kaggle競賽Give Me Some Credit。

2. 信用卡評分模型開發

      模型的構建主要包含以下幾大部分內容:資料準備及資料預先處理、變數選擇、模型構建、模型驗證、模型評估、模型部署、模型監控幾大部分。下面一一講述。

2.1 資料準備及資料預先處理2.1.1 擷取資料

       資料擷取包括存量客戶包括擷取存量客戶及潛在客戶的資料。存量客戶是指已經在證券公司開展相關融資類業務的客戶,包括個人客戶和機構客戶;潛在客戶是指未來擬在證券公司開展相關融資類業務的客戶,主要包括機構客戶,這也是解決證券業樣本較少的常用方法,這些潛在機構客戶包括上市公司、公開發行債券的發債主體、新三板上市公司、地區股權交易中心掛牌公司、非標融資機構等。

       首先我們來觀察現有的資料及指標。

       本項目資料來源於kaggle競賽Give Me Some Credit。其中訓練資料共計15萬條。

變數名

描述

類型

標號

SeriousDlqin2yrs

超過90天或更糟的逾期拖欠

Y/N

Y

RevolvingUtilizationOfUnsecuredLines

 

貸款以及信用卡可用額度與總額度比例

百分比

x0

age

借款人當時的年齡

整型

x1

NumberOfTime30-59DaysPastDueNotWorse

35-59天逾期但不糟糕次數

整型

x2

DebtRatio

 

負債比率

百分比

x3

MonthlyIncome

月收入

 

real

x4

NumberOfOpenCreditLinesAndLoans

開放式信貸和貸款數量,開放式貸款(分期付款如汽車貸款或抵押貸款)和信貸(如信用卡)的數量

整型

x5

NumberOfTimes90DaysLate

90天逾期次數:借款者有90天或更高逾期的次數

 

整型

x6

NumberRealEstateLoansOrLines

不動產貸款或額度數量:抵押貸款和不動產放款包括房屋淨值信貸額度

整型

x7

NumberOfTime60-89DaysPastDueNotWorse

60-89天逾期但不糟糕次數:借款人在在過去兩年內有60-89天逾期還款但不糟糕的次數

整型

x8

NumberOfDependents

家屬數量:不包括本人在內的家屬數量

整型

x9

 

2.1.2 資料預先處理

       通過python裡的describe()函數可以瀏覽整份資料的大致情況:

如:

 

圖 2.1

A. 缺失值處理

       變數中如果有缺失值,針對缺失值有四種情況:

 

  • 預設值極多:若預設值樣本佔總數比例極高,直接捨棄,因為作為特徵加入反而會引入雜訊值。
  • 非連續特徵預設值適中:如果缺值的樣本適中,而該屬性非連續值特徵屬性,就把NaN作為一個新類別,加入到類別特徵中。
  • 連續特徵預設值適中:如果缺值的樣本適中,考慮給定一個step,然後離散化,將NaN作為一個type加入到屬性類目中。
  • 預設值較少:考慮利用填充的辦法進行處理。其中有均值、眾數、中位元填充;用sklearn裡的RandomForest模型去擬合資料樣本訓練模型,然後去填充缺失值;拉格朗日插值法。

     可以看出MonthlyIncome(月收入)及NumberOfDependents(家屬數量)兩個變數出現了缺失值。由於MonthlyIncome缺失值達到29731條資料,比例較大,因此不能直接將缺失值刪除,選擇隨機森林法。而NumberOfDependents的缺失較少,對資料影響不大,因此直接刪除。

       使用dropna()函數刪除空值,使用drop_duplicates()重複資料刪除值。

B.異常值處理

      缺失值處理完畢後,我們還需要進行異常值處理。異常值是指明顯偏離大多數抽樣資料的數值,比如個人客戶的年齡大於100或小於0時,通常認為該值為異常值。找出樣本總體中的異常值,通常採用離群值檢測的方法。 離群值檢測的方法有單變數離群值檢測、局部離群值因子檢測、基於聚類方法的離群值檢測等方法。  

       在本資料集中,採用單變數離群值檢測來判斷異常值,採用盒狀圖。

       對於age變數而言,我們認為大於100歲小於等於0歲的為異常值,由盒狀圖可知,異常值樣本不多,故直接刪除。

 

圖 2.2

       對於RevolvingUtilizationOfUnsecuredLines(可用額度比值)及DebtRatio(負債率)而言,盒狀圖如:

圖 2.3

      因為上述兩變數的數值型為百分比,故大於1的值全部刪除。

      對於變數x2(逾期30-59天筆數)、x6(逾期90天筆數)、x8(逾期60-89天筆數做盒狀圖,由圖可知,有兩異常值點,數值為96、98,刪除。

 

圖 2.4

2.2 探索資料

      探索資料主要是為了分析各變數對輸出結果的影響,在本項目中,主要關注的是違約客戶與各變數間的關係。

2.2.1 單變數分析

      首先來觀察好壞客戶的整體情況。

      

       圖 2.5

        再看年齡對違約客戶率的影響,由可知,違約客戶率隨著年齡增大而逐步下降。

 

圖 2.6

     現在再來分析月收入對違約客戶數量的影響,將月收入劃分為以下幾個層級:[0,5000],[5000,10000], [10000,15000],[15000,20000],[20000,100000].由下面兩圖可知,在20000收入之前隨著收入增加,違約客戶率遞減,而當月收入大於20000後,違約客戶率又隨收入增高發生遞增。

 

圖 2.7

 

圖 2.8

       接下來我們再分析NumberOfDependents(家屬數量)與最終輸出結果之間的關係。可以看出隨著家庭人口增多,違約客戶率呈現遞增的態勢。

 

圖 2.9

 

圖 2.10

     觀察逾期30-59天次數與違約客戶率之間的關係,可以看出隨著違約次數增加,違約客戶率呈現遞增的態勢。

 

圖 2.11

      對資料的單變數分析就暫時處理到這裡,剩餘的變數也採取同樣的方式進行分析。

 

2.2.2 多變數分析

      多變數分析主要用於分析變數之間的相關的程度,python中可採用corr()Function Compute各變數間的相關性。由圖11知,各變數間相關性較小,不存在共線性可能。

     

 

圖 2.12

3. 構建模型3.1特徵選取

      特徵選取非常重要,好的特徵能夠構造出較好的模型,至於Python的變數選擇代碼實現可以參考結合Scikit-learn介紹幾種常用的特徵選取方法。在此,我們採用信用卡評分模型常用的IV值篩選。具體的IV值及WOE計算方法在下面這篇博文中有詳細解釋,此處就不再贅述。

3.1.1 特徵分箱

      特徵分箱指的是將連續變數離散化或將多狀態的離散變數合并成少狀態。離散特徵的增加和減少都很容易,易於模型的快速迭代,離散化後的特徵對異常資料有很強的魯棒性,能夠減少未離散化之前異常值對模型的幹擾,同時離散化後可以進行特徵交叉。此外本文所選的模型演算法為羅吉斯迴歸,羅吉斯迴歸屬於廣義線性模型,表達能力受限;單變數離散化為N個後,每個變數有單獨的權重,相當於為模型引入非線性,提升模型表達能力,加大擬合,同時也降低了模型過擬合的風險。

       特徵分箱常用的有以下幾種方法:有監督的有Best-KS,ChiMerge(卡分分箱),無監督的包括等頻、等距、聚類。根據資料特徵,針對不同資料採用不同分箱方式。代碼如下:

3.1.2 WOE值計算

       定義WOE值並計算。

 

 

3.1.3 計算IV值

      IV的全稱是Information Value,中文意思是資訊價值,或者資訊量。圖13為各變數的IV值。我們定義IV值低於0.2的特徵為預測能力較弱或無關特徵,因此將DebtRatio等五個變數刪除。

 

圖 3.1

3.2 構造模型3.2.1 WOE值替換

        將篩選後的特徵變數進行WOE轉換,目的是減少羅吉斯迴歸的自變數處理量。

      

3.2.2 LR建模

      採用sklearn裡的linear_model 中的LogisticRegression()來構建模型。

 

4. 模型檢驗

利用測試集進行測試。看到ROC如:

 

圖 4.1

        從可知,AUC值為0.85,說明該模型的預測效果還是不錯的,正確率較高。

5. 信用評分

      上面的模型的輸出結果可以為每個客戶的客戶類別(好客戶還是違約客戶),也可以說出每個客戶是好客戶/違約客戶對應的機率值。這種結果看起來不直觀,我們需要把LR模型的結果值轉化為對應的分數(0-999分)。

 

 

根據資料查得:

a=log(p_good/P_bad)

Score = offset + factor * log(odds)

 

 

      得出各對應特徵分組分數為:

 

圖 5.1

       在基礎分數上對對應的分組分數加減,得出對應的評分,評分越高則違約風險越高。

 

6. 總結

 

       本文通過對kaggle上的Give Me Some Credit資料的挖掘分析,結合信用評分卡的建立原理,從資料的預先處理、變數選擇、建模分析到建立信用評分,建立了一個簡單的信用評分系統。本項目還有許多不足之處,比如分箱應當使用最優分箱或卡方分箱,減少人為分箱的隨機性,此外模型採用的是羅吉斯迴歸演算法,還可以多多嘗試其他模型。

python評分卡

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.