信用洞察|基於XGBoost的用戶信用評分模型研究

關注並標星索信達

每天打卡閱讀

更快走進金融人工智能世界

━━━━━━

信用洞察|基於XGBoost的用戶信用評分模型研究


我們是索信達集團旗下的金融人工智能實驗室團隊,微信公眾號(datamargin)將不定期推送原創AI科學文章。我們的作品都是由實戰經驗豐富的AI科學技術人員或資深顧問精心準備,志在分享結合實際業務的理論應用和心得體會。


文 | 索 信 達 楊 健 穎

本文針對銀行業的特點,提出了一套分析用戶信用數據以建立信用評分的流程方法:首先使用SMOTE過抽樣方法對不平衡數據進行調整,將原本不平衡的數據調整為平衡的數據;為保證模型的精度並滿足金融行業數據量大的特點,使用XGBoost算法訓練數據,並使用AUC值和代價敏感錯誤率作為評價模型好壞的指標;最後不僅預測用戶所屬的類別,同時還將模型所報告的用戶所屬類別概率結合評分卡知識進一步分析用戶的信用情況。


信用洞察|基於XGBoost的用戶信用評分模型研究


1.背景介紹


金融行業經常需要對客戶的信用風險進行評價,評價時通常是對用戶的一些屬性特徵建立相應模型,根據模型結果來判斷用戶的信用風險情況。但金融行業實際上擁有自身的一些特點,這使得實際運用模型算法時往往需要進行一些調整,主要特點如下:

要求:對於銀行而言,若將一個沒有風險的客戶判斷為有風險的,銀行只是損失了一個客戶;但若將一個有風險的客戶判斷為沒有風險的,這將面臨貸款難以收回的後果。後者的危害遠大於前者,所以在評價模型好壞時要考慮到這一點。

實際應用:常見的機器學習算法在分類時往往直接把樣本進行了分類,即報告某一用戶屬於風險低的一類還是風險高的一類。我們可以在此基礎上進一步分析用戶所屬類別的概率,結合評分卡的知識,建立用戶信用得分的模型體系,通過用戶的信用得分來進一步分析用戶的信用情況。


信用洞察|基於XGBoost的用戶信用評分模型研究

2.數據預處理

我們使用的數據來自UCI提供的機器學習公開數據集中的德國信用數據集,它包含1000條貸款申請記錄,其中700條是信用好的客戶,300條是信用差的客戶。 原始的數據由19個屬性描述,官方使用獨熱編碼將其中標稱屬性轉換為虛擬變量,轉換後的每條記錄由24個屬性描述,保存於網頁上的german.data-numeric.txt文件中。

首先,對數據的分佈情況進行分析,數據中信用好的客戶數據有700條,信用壞的客戶數據只有300條,數據類別明顯分佈明顯不均衡,而這種類不平衡的數據將會對模型的訓練有直接影響。

這裡舉個簡單例子說明一下造成影響的原因:極端一點,例如我們的樣本中有100條數據,其中正類99條,負類1條,訓練過程中若模型把所有樣本都分為正類,雖然將負類分錯了,但損失其實很小,精度達到了99%,模型也不必再訓練下去。這樣得到了精度高達99%的模型,但卻不能區分出負類,沒有實際意義。所以我們在訓練時,樣本中各個類別的數量越平衡越好。對於類別不平衡的問題,目前主要的思路有三種:

調整閾值:在預測樣本類別時,一般要求計算樣本屬於某一類別的概率,例如計算樣本屬於正例的概率,通常取閾值=0.5,即認為樣本屬於正例的概率大於0.5樣本為正例,小於0.5樣本為負例。但若樣本數據本身是不平衡的數據,應該根據正負樣本的比例調整閾值,而不再固定為0.5。

欠抽樣:從樣本量多的類別中隨機抽取部分數據和樣本量小的類別組合形成新的數據集,即減少樣本量大的類別的數據量。實際應用中常常多次抽取,每次抽取組合的數據集訓練一個模型,最終結果通過綜合多個模型來確定。但這一方法損失了一些數據信息,並且改變了數據的原始分佈,精度可能會有所降低,適用於數據量很大的情況。

過抽樣:通過一些算法對樣本量小的類別是數據進行補充,再和樣本量大的類別的數據組合形成新的數據集,即增加樣本量小的類別的數據使樣本類別達到平衡。常用的算法為SMOTE算法,這一算法精度很高,在學術界和工業界應用較多。但這一方法容易造成過擬合,實際應用中應搭配正則化以防止過擬合。


信用洞察|基於XGBoost的用戶信用評分模型研究


基於上述SMOTE算法的理論,我們對原始數據用SMOTE算法進行過抽樣以得到類別平衡的數據,並將過抽樣後的數據的按照4:1的比例分成訓練集和驗證集,再進行之後的模型訓練。

信用洞察|基於XGBoost的用戶信用評分模型研究


由於此時1000條數據劃分訓練集和預測集時並未設置隨機種子,這是隨機劃分,每次劃分出來的訓練集和驗證集所包含的樣本可能不會完全一樣,所以大家用同樣的代碼跑出的結果可能存在細微差異。本文所用到的數據和代碼都可以在筆者的github上獲取(https://github.com/Johnyee94/2019blog1.git)。


信用洞察|基於XGBoost的用戶信用評分模型研究


3.XGBoost訓練模型


準備好數據之後,我們使用XGBoost算法來訓練模型,XGBoost是一種集成了多棵決策樹的加法模型,擁有很高的精度和使用率;同時又引入了正則化項,防止模型過擬合;並且加入了CPU的多線程進行並行運算,極大提高了運算速度。XGBoost算法分步驟優化目標函數,首先對初始數據建立第一棵樹,完了之後以第一棵樹的殘差為數據再建立第二棵樹,再以第i-1棵樹的殘差為數據建立第i棵樹,直至建立完t棵樹,再根據所有樹的結果相加輸出最後結果。該算法原理的簡要介紹如下:


信用洞察|基於XGBoost的用戶信用評分模型研究


信用洞察|基於XGBoost的用戶信用評分模型研究


樹的節點時,根據特徵的分佈取其分位點作為分割的候選點,再計算每個特徵被它所對應的所有候選分割點分割後的信息增益值Gain,最大的Gain所對應的特徵和候選分割點就是這個節點的最優特徵和最佳分割點,再按此方法繼續分割。其中,Gain定義如下:


信用洞察|基於XGBoost的用戶信用評分模型研究


至此,我們把XGBoost的理論介紹完了,現在將使用該算法來訓練本文的數據,在訓練過程中需要對參數進行調整,以得到最優的參數。一般來說,我們調節的主要參數如表1所示:


信用洞察|基於XGBoost的用戶信用評分模型研究


本文使用xgboost包來訓練模型,並結合sklearn包的網格搜索函數來尋找最優參數。調參時,先給每個參數一個固定的取值,再給出需要調節的參數的取值範圍同時保持其他參數值不變,由此計算該參數的不同取值下模型的AUC評分,最大的AUC分數對應的參數值即為該參數的的最優取值,將此時的最優參數值替代模型中該參數的給定值再按此方法進行下一個參數的調節。按上述方法得出的最優參數如表2所示:


信用洞察|基於XGBoost的用戶信用評分模型研究


我們從上述調參順序的模型得分可以看出,從最開始的learning_rate到colsample_bytree,模型的得分一直在上升,這說明隨著最優參數的不斷調節模型模型越來越好。到reg_alpha和eg_lambda這裡,模型得分有些下降,這是因為我們調節了L1正則化和L2正則化的最優參數來防止模型過擬合,所以得分有些下降。我們將各個參數的最優值輸入到模型中去,以此得到最優模型,接下來用包含最優參數的XGBoost模型對預測集數據進行預測和精度評價。

我們使用剩下的20%數據作為驗證集來驗證模型的精度。不過這裡一定要注意的是,對於銀行而言,若將一個沒有風險的客戶判斷為有風險的,銀行只是損失了一個客戶;但若將一個有風險的客戶判斷為沒有風險的,這將面臨貸款難以收回的後果。後者的危害遠大於前者,所以在評價模型好壞時不能使用常用的錯誤率,這裡我們推薦使AUC值和代價敏感錯誤率作為評價指標。

AUC值實際就是ROC曲線的面積,它是一種獨立於類別分佈的評價指標,比較適用於評價類別不平衡學習問題,關於AUC的介紹已經很多了,這裡不再詳述。代價敏感錯誤率E(以二分類為例)的定義如下:


信用洞察|基於XGBoost的用戶信用評分模型研究


圖1 預測結果的混淆矩陣圖

預測結果的AUC值和代價敏感錯誤率E的平均變化幅度如表3所示:

表3 預測結果精度評價表

信用洞察|基於XGBoost的用戶信用評分模型研究


由此我們看到,XGBoost模型的AUC=0.901,這說明模型精度很好。隨著k的變化,代價敏感錯誤率E=0.086變化幅度很小,這說明XGBoost的誤判主要表現在將信用好的用戶判斷為信用差的,而將信用差的用戶誤判為信用差好的情況較少;並且從混淆矩陣也可以看出,模型將信用好的用戶判斷為信用差的誤判人數比將信用差的誤判為信用好的人數多了9個,這都說明模型在誤判時更傾向於將信用好的誤判為信用差的。綜合來看,XGBoost模型不論是從精度還是誤判來看錶現都很好。


信用洞察|基於XGBoost的用戶信用評分模型研究


4.用戶信用評分


由於通常情況下我們一般都是根據模型輸出的用戶類別的預測值來直接判斷用戶所屬的類別,例如用戶屬於信用好或信用差。但模型在做判斷時往往是根據用戶所屬類別的概率來判斷的,例如用戶屬於信用好的類別概率為0.55,屬於信用不好的類別概率為0.45,這時模型給出的結果是該用戶信用好,但實際這樣的判斷在銀行這種需要非常強的風險管控的的行業是有點武斷的。

所以在金融行業中我們不僅可以使用模型給出的用戶的類別的信息,還可以將模型中用戶所屬類別的概率利用起來,將這一概率與銀行的信用評分卡相結合,不僅判斷用戶的信用類別,還可以建立用戶信用評分體系。

在用戶信用評分體系中,設違約的概率為p,則正常的概率為1-p,違約與正常的概率比odds=p/1-p,從而定義評分卡的刻度:score=A-Blog(odds)


信用洞察|基於XGBoost的用戶信用評分模型研究


計算出的信用分值概況如表4所示,信用分值分佈表5所示,其中風險客戶比率值指60分以下的用戶佔比。

參考資料:

[1]Chawla N V , Bowyer K W , Hall L O , et al. SMOTE: Synthetic Minority Over-sampling Technique[J]. Journal of Artificial Intelligence Research, 2011, 16(1):321-357.

[2]Chen T , Guestrin C . XGBoost: A Scalable Tree Boosting System[C]// Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2016.

[3]周志華.機器學習[M]北京:清華大學出版社,2016.

[4] (美)Mamdouh Refaat著.信用風險評分卡研究[M].王奇松等譯.北京:社會科學文獻出版社2013.


分享到:


相關文章: