代碼詳解:準確率驚人!用Credit R創建信用風險評分模型
全文共3037字,預計學習時長6分鐘
機器學習正影響著許多不同的行業,金融業是受其影響最大的行業之一。
欺詐檢測、客戶細分、員工或客戶保留等功能是機器學習的主要目標,本文的關注點為信用風險評分。
信用評分是貸方和金融機構為獲取個人信譽而進行的統計分析。在所有評判標準中,貸方最終通過信用評分來決定是否延長或拒絕信貸。
——Investopedia
如何才能讓從事該領域的專業人員更加容易地應對工作?軟體包Credit R就這樣誕生了!它允許你在機器學習應用程序之前輕鬆創建信用風險評分的基本模型。此外,它還包含一些可用於驗證評分進程的函數。
該軟體包旨在促進變數分析、變數選擇、模型開發、模型校準、評定量表開發和模型驗證等方法的應用。通過已定義的函數,這些方法可以快速應用於所有建模數據或特定變數中。
在本文中,我們首先將了解Credit R軟體包的細節。然後,我們將列舉一個使用Credit R軟體包的完整例子,深入了解R軟體包。
這個軟體包是為信貸風險專業人士提供的。使用該軟體包需要具備信貸風險評分方法的基本知識。
目錄
1. 為什麼要使用Credit R?
2. 開始使用Credit R
3. Credit R中的函數列表
4. Credit R軟體包的應用
1. 為什麼要使用Credit R?
隨著信貸領域機器學習模型的需求不斷增加,人們對信貸風險模型的認識正在迅速轉變。然而,許多管理者對過渡到機器學習技術仍然非常謹慎。因此,一個可能的推測是,在這個轉換階段,機器學習演算法將與傳統方法並行。
一旦確定機器學習演算法,在挑戰該領域傳統方法的同時,也產生了比傳統方法更有效的結果,這樣就可以獲得監管者的信任。此外,解釋機器學習演算法的新方法可能有助於創建更透明的學習過程。
Credit R軟體包提供了自動使用傳統方法的可能性,也為傳統和機器學習模型的驗證提供了可能性。
2. 開始使用 Credit R
要安裝credit R軟體包,你首先需要安裝devtools軟體包。可以通過運行以下代碼來安裝devtools軟體包:
install.packages("devtools", dependencies = TRUE)
可以使用devtools軟體包中的「install_github」函數安裝creditR軟體包:
library(devtools)
devtools::install_github("ayhandis/creditR)
library(creditR)
3. Credit R中的函數列表
下面列出了該軟體包中可用的函數。
ls("package:creditR")
輸出:
4. Credit R 軟體包的應用
我們已經說了很多理論知識了,現在開始深入了解R軟體包吧!
下面列舉了一個Credit R的應用實例,它研究了如何使用軟體包中提供的函數執行信貸風險評分中的一些常見步驟。
在完成本例時,我們做了一些實踐。
一般應用程序在兩個主要標題下構建,即建模和模型驗證,在注釋行中可以看到相應代碼的詳細信息。
本文僅列舉了重要的輸出。
此R腳本旨在使Credit R軟體包更容易理解。獲得高精度模型不在本研究範圍內。
# Attaching the library
library(creditR)
#Model data and data structure
data("germancredit")
str(germancredit)
#Preparing a sample data set
#Converting the 『Creditability』 (default flag) variable into numeric type
sample_data$creditability
#Calculating the missing ratios
missing_ratio(sample_data)
輸出:
#Splitting the data into train and test sets
traintest
train
test
WOE變換是一種通過變數與目標變數的關係將變數轉換為分類變數的方法。以下「woerules」對象包含WOE規則。
#Applying WOE transformation on the variables
woerules
#Creating a dataset with the transformed variables and default flag
#Applying the WOE rules used on the train data to the test data
信息值和單變數基尼係數可以用作選擇變數的方法。一般來說,IV的閾值為0.30,單變數基尼的閾值為0.10。
#Performing the IV and Gini calculations for the whole data set
IV.calc.data(train_woe,"creditability")
輸出:
輸出:
#Creating a new dataset by Gini elimination. IV elimination is also possible
eliminated_data
str(eliminated_data)
輸出:
現實生活中有太多的變數無法用相關矩陣來管理。因此,可以將它們進行聚類以確定具有相似特徵的變數。這裡由於變數的數量很少,這種特殊的聚類示例沒有意義,但該方法通常在具有大量變數的數據集中非常有用。
#A demonstration of the functions useful in performing Clustering
clustering_data
clustering_data
輸出:
# Returns the data for variables that have the maximum gini value in the dataset
在某些情況下,集群的平均相關性很重要,因為集群的數量設置可能不正確。因此,如果集群具有較高的平均相關性,則應該對其進行詳細檢查。相關性值(在集群1中只有一個變數)為NaN。
correlation.cluster(eliminated_data,clustering_data,variables = "variable",clusters = "Group")
輸出:
#Creating a logistic regression model of the data
model= glm(formula = creditability ~ ., family = binomial(link = "logit"), data = eliminated_data)
summary(model)
輸出:
#Calculating variable weights
輸出:
#Generating the PD values for the train and test data
ms_train_data
ms_test_data
在現實生活中,相關機構使用的是評定量表而不是連續的PD值。由於一些監管問題或為了適應不斷變化的市場/投資組合條件,模型會根據不同的中心趨勢進行校準。
回歸和貝葉斯校正方法包含在軟體包中。通過嵌入企業系統,並藉助代碼「calibration object$calibration_formula」,可以獲得可執行校準的數值函數作為輸出。
#An example application of the Regression calibration method. The model is calibrated to the test_woe data
regression_calibration
regression_calibration$calibration_data
regression_calibration$calibration_model
regression_calibration$calibration_formula
輸出:
在評定量表上採用貝葉斯校正方法。藉助「master.scale」函數,我們可以輕鬆創建評定量表。然而,在現實生活中,只有在多次嘗試之後才能創建評定量表。
將摘要添加到輸出中。運行R腳本可以看到詳細信息。此外,本示例的目的僅僅是在本研究範圍內引入函數,因此PD值不會單獨增加。
#Creating a master scale
master_scale
master_scale
輸出:
為了採用貝葉斯校正法,我們在數據集中創建了分數變數,然後將評定量表的集中趨勢校準到5%。
#Calibrating the master scale and the modeling data to the default rate of 5% using the bayesian calibration method
ms_train_data$Score = log(ms_train_data$PD/(1-ms_train_data$PD))
ms_test_data$Score = log(ms_test_data$PD/(1-ms_test_data$PD))
bayesian_method
#After calibration, the information and data related to the calibration process can be obtained as follows
bayesian_method$Calibration.model
bayesian_method$Calibration.formula
輸出:
在實際應用中,對於不熟悉風險管理的員工來說,理解可能性的概念很難。因此,需要創建標準分。標準分可以通過使用「scalled.score」函數來創建。
#The Scaled score can be created using the following function
scaled.score(bayesian_method$calibration_data, "calibrated_pd", 3000, 15)
在建模階段之後,執行模型驗證以驗證不同的期望,例如模型的準確性和穩定性。在現實生活中還會應用定性驗證過程。
注意:模型校準僅用於例證。模型驗證測試按照以下原始標準進行。
在邏輯回歸創建的模型中,我們應考慮多重共線性問題。儘管使用了不同的閾值,但大於5的vif值表示存在這個問題。
#Calculating the Vif values of the variables.
vif.calc(model)
輸出:
一般來說,基尼係數的可接受下限為0.40。但是,這可能會因模型類型而異。
#Calculating the Gini for the model
Gini(model$fitted.values,ms_train_data$creditability)
輸出:
0.3577422
#Performing the 5 Fold cross validation
輸出:
#The KS test is performed on the distributions of the estimates for good and bad observations
Kolmogorov.Smirnov(ms_train_data,"creditability","PD")
Kolmogorov.Smirnov(ms_test_data,"creditability","PD")
記分卡通常要很長時間後才會進行修訂,因為修訂過程會產生巨大的運營成本。因此,模型的穩定性降低了修改的必要性。此外,相關機構需要穩定的模型,因為這些模型被用作許多計算的輸入,如減值、資本、風險加權資產等。
系統穩定性指數(System Stability Index)是用來衡量模型和變數穩定性的一種測試。若ssi值大於0.25,則表明變數穩定性受到損害。
#Variable stabilities are measured
SSI.calc.data(train_woe,test_woe,"creditability")
輸出:
由於主量表的主要目的是區分風險,所以HHI測試用於測量主量表的濃度。HHI值超過0.30表示濃度高。這可能是因為處於建模階段或主量表的創建方式不正確。
#The HHI test is performed to measure the concentration of the master scale
Herfindahl.Hirschman.Index(master_scale,"Total.Observations")
輸出:
0.1463665
通過「anchor.point」函數,我們測試了默認速率是否與預期水平的平均PD兼容。
#Performing the Anchor point test
Anchor.point(master_scale,"PD","Total.Observations",0.30)
輸出:
卡方檢驗也可以用作校準檢驗。「chi square.test」函數可用於在指定的置信度級別下執行此測試。
#The Chi-square test is applied on the master scale
chisquare.test(master_scale,"PD","Bad.Count","Total.Observations",0.90)
輸出:
二項式測試也可以用作校準測試。單尾二項檢驗通常用於IRB模型,而雙尾二項檢驗用於IFRS 9模型。但除了IRB之外,雙尾二項檢驗對於一般用途更方便。
#The Binomial test is applied on the master scale
master_scale$DR
Binomial.test(master_scale,"Total.Observations","PD","DR",0.90,"one")
輸出:
為了確保連續性,需要對建模和模型驗證進行管理。當正確管理R環境時,機構可以輕鬆提供這種可管理的建模和驗證環境。
相關機構正在使用開放源代碼環境(如R或具有大數據技術的Python)設計更高效的業務流程。從這個方面來看,Credit R為建模和驗證方法的應用帶來了組織上的便利。
結束語
Credit R軟體包為用戶提供了許多執行傳統信用風險評分的方法,以及一些用於測試模型有效性的方法,這些方法也可應用於ML演算法。此外,由於該軟體包在傳統方法的應用中提供了自動化功能,因此可以降低傳統過程的操作成本。
此外,可以將這些模型與機器學習模型進行比較,以證明ML模型也符合法規要求,滿足這些要求是應用ML模型的前提。
留言 點贊 發個朋友圈
我們一起分享AI學習與發展的乾貨
編譯組:王玲、盧佳琦
※牛津大學:使用波束搜索在人類腦電圖中查找語法
※代碼詳解:Numpy——通往人工智慧的大門
TAG:讀芯術 |