天天看點

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

信用風險計量模型可以包括跟個人信用評級,企業信用評級和國家信用評級。人信用評級有一系列評級模型組成,常見是A卡(申請評分卡)、B卡(行為模型)、C卡(催收模型)和F卡(反欺詐模型)。 今天我們展示的是個人信用評級模型的開發過程,資料采用kaggle上知名的give me some credit資料集。

一、模組化流程

典型的信用評分卡模型如圖1-1所示。信用風險評級模型的主要開發流程如下:

(1) 擷取資料,包括申請貸款客戶的資料。資料包括客戶各個次元,包括年齡,性别,收入,職業,家人數量,住房情況,消費情況,債務等等。

(2) 資料預處理,主要工作包括資料清洗、缺失值處理、異常值處理、資料類型轉換等等。我們需要把原始資料層層轉化為可模組化資料。

(3) EDA探索性資料分析和描述性統計,包括統計總體資料量大小,好壞客戶占比,資料類型有哪些,變量缺失率,變量頻率分析直方圖可視化,箱形圖可視化,變量相關性可視化等。

(4) 變量選擇,通過統計學和機器學習的方法,篩選出對違約狀态影響最顯著的變量。常見變量選擇方法很多,包括iv,feature importance,方差等等 。另外缺失率太高的變量也建議删除。無業務解釋性變量且沒有價值變量也建議删除。

(5) 模型開發,評分卡模組化主要難點是woe分箱,分數拉伸,變量系數計算。其中woe分箱是評分卡中難點中難點,需要豐富統計學知識和業務經驗。目前分箱算法多達50多種,沒有統一金标準,一般是先機器自動分箱,然後再手動調整分箱,最後反複測試模型最後性能,擇優選取最優分箱算法。

(6) 模型驗證,核實模型的區分能力、預測能力、穩定性、排序能力等等,并形成模型評估報告,得出模型是否可以使用的結論。模型驗證不是一次性完成,而是當模組化後,模型上線前,模型上線後定期驗證。模型開發和維護是一個循環周期,不是一次完成。

(7) 信用評分卡,根據邏輯回歸的變量系數和WOE值來生成評分卡。評分卡友善業務解釋,已使用幾十年,非常穩定,深受金融行業喜愛。其方法就是将Logistic模型機率分轉換為300-900分的标準評分的形式。

(8) 建立評分卡模型系統,根據信用評分卡方法,建立計算機自動信用化評分系統。美國傳統産品FICO有類似功能,FICO底層語言是Java。目前流行Java,python或R多種語言建構評分卡自動化模型系統。

(9)模型監控,着時間推移,模型區分能力,例如ks,auc會逐漸下降,模型穩定性也會發生偏移。我們需要專業模型監控團隊,當監控到模型區分能力下降顯著或模型穩定性發生較大偏移時,我們需要重新開發模型,疊代模型。模型監控團隊應該每日按時郵件發送模型監控報表給相關團隊,特别是開發團隊和業務團隊。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

二. 擷取資料

之前我講過利用German credit德國信用資料集建立python信用評分卡模型,該資料集優勢是資料量小,對計算機硬體要求不高,友善各個階層學員學習和測試。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

信用評分算法對違約機率進行猜測,是銀行用來确定是否應授予貸款的方法。資料屬于個人消費類貸款,通過預測某人在未來兩年内遇到财務困境的可能性,提高信用評分的最新水準。

銀行在市場經濟中發揮着至關重要的作用。他們決定誰可以獲得資金以及以什麼條件獲得資金,并且可以做出投資決策或終止投資決定。為了讓市場和社會發揮作用,個人和公司需要獲得信貸。

give me some credit有15萬樣本資料,該資料量解決中大型金融機構實戰資料,更加接近金融企業項目實戰。該資料集通過預測某人在未來兩年内遇到财務困難的可能性,提高信用評分的水準。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

變量中文釋義,變量少而精,可作為模組化的參考

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

我們對上述變量歸類,主要分為:

– 基本屬性:包括了借款人當時的年齡。

– 償債能力:包括了借款人的可用額度比值、月收入、負債比率。

– 信用曆史:兩年内35-59天逾期次數、兩年内60-89天逾期次數、兩年内90

天或高于90天逾期的次數。

– 财産狀況:包括了開放式信貸和貸款數量、不動産貸款或額度數量。

– 其它因素:借款人的家屬數量(不包括本人在内)

kaggle模型競賽中,獎金5000美金,模型評估名額為AUC。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

網際網路上國内外關于give me some credit資料集AUC得分最佳表現為0.85.

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

但我方《python信用評分卡模組化(附代碼)》教程中AUC可以達到0.929,調參後AUC可以更高,遠高于網際網路上give me some credit論文的模型性能AUC=0.85。網際網路論文關于模組化步驟有很多看似有理,但實際上不正确的理論。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

如果你好奇我方如何将give me some credit資料集AUC達到0.929,可參考教程《python信用評分卡模組化(附代碼)》

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

《python信用評分卡模組化(附代碼)》中give me some credit資料集一覽。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

三、資料預處理

資料預處理,主要工作包括資料清洗、缺失值處理、異常值處理、資料類型轉換等等。我們需要把原始資料層層轉化為可模組化資料。

3.1 缺失值處理

give me some credit資料集缺失資料并不嚴重,隻有兩個變量有缺失值,缺失率為2%和19.8%。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

現實中資料存在大量缺失值是非常普遍。央行征信很多變量缺失率可以高達99%。缺失值會導緻一些資料分析和模組化的問題。通常在信用風險評分卡模型開發的第一步我們就要進行缺失值處理。缺失值處理的方法,包括如下幾種。

(1) 直接删除含有缺失值的樣本。

(2) 填補缺失值。

(3) 不予理睬。

3.2 異常值處理

缺失值處理後,我們需要進行異常值檢驗。異常值分為統計學上異常值和業務上異常值。統計學異常值通常用箱型圖來判斷,如下圖。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

業務上異常值是根據業務線對變量定義和常識來判斷該資料是否合理。比如give me some credit資料集中有個人客戶的年齡為0,按照常理,我們認為該值為異常值。哪個貸款公司會把錢借給年齡為0的使用者?

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

3.3 資料劃分

我們建立模型後一般會遇到下面三種情況,underfitting欠拟合,just right拟合合适,overfitting過度拟合。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

為了驗證模型的性能,我們需要對資料集進行劃分。

首先把所有資料分成x資料和y資料(target目标變量)。

然後把x資料和y資料分成訓練集和測試集,并生成四個變量train_x,test_x,train_y,test_y.

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

四、EDA探索性資料分析和描述性統計

由于人大腦的生理結構,大部分人對數字不敏感,但資料可視化對大腦了解更友好。這就是資料可視化重要性,也友善向上司或決策層彙報工作。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

EDA探索性資料分析和描述性統計包括統計總體資料量大小,好壞客戶占比,資料類型有哪些,變量缺失率,變量頻率分析直方圖可視化,箱形圖可視化,變量相關性可視化等。EDA是Exploratory Data Analysis縮寫,中文釋義為探索性資料分析。探索性資料分析方法很多常見的有:hist直方圖、scater散點圖,boxer箱線圖,heat熱力圖,pairplot配對圖。

give me some credit資料集的age年齡變量直方圖

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

give me some credit資料集的target目标變量直方圖,可以發現好壞客戶占比非常不平衡。好客戶數量大概是壞客戶數量15倍左右。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

give me some credit資料集的家庭成員數量變量直方圖

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

give me some credit資料集所有變量的pairplot配對圖,大量資訊一目了然。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

give me some credit資料集所有變量相關性的熱力圖,可以分析出有6對變量相關性非常高,變量篩選時候需要注意。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

give me some credit資料集age年齡變量關于好壞客戶的分類箱型圖統計。我們可以看到好客戶年齡中位數要高于壞客戶年齡中位數。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

五、變量選擇

變量選擇,通過統計學和機器學習的方法,篩選出對違約狀态影響最顯著的變量。常見變量選擇方法很多,包括iv,feature importance,方差等等 。另外缺失率太高的變量也建議删除。無業務解釋性變量且沒有價值變量也建議删除。

《python信用評分卡模組化(附代碼)》教程中內建樹算法catboost的feature importance可視化圖,我們可以明顯看出RevolvingUtilizationOfUnsecuredLines可用額度比值變量的重要性最高。圖中藍色柱越長,重要性越大,反之亦然。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

《python信用評分卡模組化(附代碼)》教程中變量iv值計算結果如下,我們清晰看到RevolvingUtilizationOfUnsecuredLines可用額度比值變量的iv最高。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

通過feature importance和iv值方法我們都得到同樣結論:RevolvingUtilizationOfUnsecuredLines可用額度比值變量是最重要的。

六、模型開發

模型開發,評分卡模組化主要難點是woe分箱,分數拉伸,變量系數計算。其中woe分箱是評分卡中難點中難點,需要豐富統計學知識和業務經驗。目前分箱算法多達50多種,沒有統一金标準,一般是先機器自動分箱,然後再手動調整分箱,最後反複測試模型最後性能,擇優選取最優分箱算法。

《python信用評分卡模組化(附代碼)》講解Kmeans,等頻分箱、等距分箱,卡方分箱,決策樹分箱算法原理和python實作分箱代碼。《python信用評分卡模組化(附代碼)》還告訴你如何選擇分箱方法?在不同需求下,選擇最合适分箱方法。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

分箱主要分為有監督方法和無監督方法。k均值聚類算法(k-means clustering algorithm)是一種疊代求解的聚類分析算法,其步驟是,預将資料分為K組,則随機選取K個對象作為初始的聚類中心,然後計算每個對象與各個種子聚類中心之間的距離,把每個對象配置設定給距離它最近的聚類中心。聚類中心以及配置設定給它們的對象就代表一個聚類。每配置設定一個樣本,聚類的聚類中心會根據聚類中現有的對象被重新計算。這個過程将不斷重複直到滿足某個終止條件。終止條件可以是沒有(或最小數目)對象被重新配置設定給不同的聚類,沒有(或最小數目)聚類中心再發生變化,誤差平方和局部最小。下圖是Kmeans分箱算法原理。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

傳說中的最優分箱就是決策樹分箱。

決策樹分箱算法步驟為:

步驟 1:首先,它使用我們想要離散化的變量來訓練一個有限深度(2、3 或 4)的決策樹來預測目标。

_第 2 步:_然後将原始變量值替換為樹傳回的機率。單個 bin 内的所有觀測值的機率相同,是以用機率替換相當于将決策樹決定的截止值内的觀測值分組。

決策樹分箱算法好處和缺點是:

好處 :

  • 機率預測傳回的決策樹與目标單調相關。
  • 新的 bin 顯示出減少的熵,這是每個桶/桶内的觀察結果與它們自己的相似度,而不是其他桶/桶的觀察結果。
  • 樹會自動找到垃圾箱。

缺點:

  • 可能會導緻過拟合
  • 更重要的是,可能需要對樹參數進行一些調整以獲得最佳分割(例如,深度、一個分區中的最小樣本數、最大分區數和最小資訊增益)。這可能很耗時。
基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生
(決策樹分箱可視化)
           

等距分箱可用于類似age年齡的變量。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

分箱完成後,就把分箱資料轉換為woe資料,最後用邏輯回歸算法模組化。

七、模型驗證

邏輯回歸算法模組化後,我們需要模型驗證。模型驗證是核實模型的區分能力、預測能力、穩定性、排序能力等名額是否合格,并形成模型評估報告,得出模型是否可以使用的結論。模型驗證不是一次性完成,而是當模組化後,模型上線前,模型上線後定期驗證。模型開發和維護是一個循環周期,不是一次完成。

着時間推移,模型區分能力,例如ks,auc會逐漸下降,模型穩定性也會發生偏移。當模型區分能力下降顯著或模型穩定性發生較大偏移時,我們需要重新開發模型,疊代模型。

《python信用評分卡模組化(附代碼)》教程中訓練模型AUC為0.929,具體模型性能如下:

model accuracy is: 0.9406307593547452

model precision is: 0.9060132575757576

model sensitivity is: 0.6077497220898841

f1_score: 0.7274973861800208

AUC: 0.9290751730536397

good classifier

gini 0.8581503461072795

ks value:0.7107

遠超網際網路give me some credit資料集模組化論文的模型性能AUC 0.85。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

八、評分卡誕生

===

模型根據邏輯回歸的變量系數和WOE值來生成評分卡。評分卡友善業務解釋,已使用幾十年,非常穩定,深受金融行業喜愛。其方法就是将Logistic模型機率分轉換為300-900分的标準評分的形式。國内絕大多數信用評分卡都效仿的美國FICO分數。

FICO 分數為 800 或以上的個人具有特殊的信用記錄。信用評分高的人很可能多年來擁有多項信用額度。他們沒有超過任何信用額度,并及時還清了所有債務。

中高 700 分的 FICO 分數是不錯的分數。得分在此範圍内的個人明智地借貸和消費并及時付款。這些人,例如 800 歲以上的人,往往更容易獲得信貸,并且通常支付的利率要低得多。

最常見的分數介于 650 和 750 之間。雖然分數在此範圍内的個人信用相當好,但他們可能會延遲付款。這些人通常不會很難獲得貸款。但是,他們可能需要支付略高的利率。

最後一個要考慮的實際範圍是 599 或更低的分數。它們被認為信用評分不佳,通常是由于多次延遲付款、未能償還債務或已轉到收款機構的債務所緻。擁有此類 FICO 分數的個人通常很難(如果不是不可能的話)獲得任何形式的信用。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

如下圖, FICO信用分在very poor300-579分的占比最低,隻有17%;good670-739分的占比最高,達到21.5%。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

《python信用評分卡模組化(附代碼)》中評分卡生成有詳細章節講解,包括PDO,theta0,P0,A,B,odds,woe,iv等專業術語有完全解讀。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

九.評分卡自動評分系統

我們通過上面基礎,可以生成自動化評分系統,對每個申請單使用者生成好壞客戶真實标簽,好壞客戶預測标簽,壞客戶機率值,拉伸評分。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

根據信用評分卡方法,我們可以建立計算機自動信用化評分系統。美國傳統産品FICO有類似功能,FICO底層語言是Java。目前流行Java,python或R多種語言建構評分卡自動化模型系統。如果資料量大,建立自動信用化評分系統并非易事,需要專業團隊不斷測試和更新。python或R是開源語言,包定期更新,如果沒有專業團隊維護,該系統在将來會出現嚴重問題。

十.模型監控

着時間推移,模型區分能力,例如ks,auc會逐漸下降,模型穩定性也會發生偏移。我們需要專業模型監控團隊,當監控到模型區分能力下降顯著或模型穩定性發生較大偏移時,我們需要重新開發模型,疊代模型。模型監控團隊應該每日按時郵件發送模型監控報表給相關團隊,特别是開發團隊和業務團隊。

模型監控的ks名額,當模型ks低于0.2時,模型區分好壞客戶能力幾乎沒有作用,需要重新疊代模型。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

模型監控的bad rate名額,當bad rate突然升高時,上司會非常緊張,這意味着大量貸款收不回成本。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

模型監控的PSI名額,當PSI高于0.25時,暗示模型極不穩定,需要重新疊代。

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

總結

基于Python的信用評分卡模型主要流程就為大家介紹到這裡,但實操評分卡模組化中有很多細節,網際網路上對這些細節描述過于草率甚至不正确。例如變量缺失率達到80%-90%就應該直接删除該變量嗎?變量相關性高達0.8就可以去掉嗎?經驗豐富模組化人員需要在數學理論,業務線實際需求,計算機測試結果等多方面找到平衡點,而不是隻從一個角度思考問題。這就像經驗豐富外科醫生并不一定完全遵循教科書的理論。統計學,機器學習,人工智能等領域裡有很多争議地方,并非有完全統一共識。各位在學習時要保持獨立思考能力,這樣才能不斷優化資料科學知識。

基于Python的信用評分卡模型-give me some credit就為大家介紹到這裡了,歡迎各位同學報名<python金融風控評分卡模型和資料分析微專業課>,學習更多相關知識。

https://edu.csdn.net/combo/detail/1927

微信二維碼掃一掃報名

基于Python的信用評分卡模型-give me some credit資料集,AUC 0.93 KS 0.71一、模組化流程三、資料預處理五、變量選擇六、模型開發七、模型驗證八、評分卡誕生

版權聲明:文章來自公衆号(python風控模型),未經許可,不得抄襲。遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。