最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

Python信貸風控模型:Adaboost,XGBoost,SGD, SVC,隨機森林, KNN預測信貸違約支付|附代

2023-09-04 23:41 作者:拓端tecdat  | 我要投稿

全文鏈接:http://tecdat.cn/?p=26184

最近我們被客戶要求撰寫關于信貸風控模型的研究報告,包括一些圖形和統(tǒng)計輸出。

在此數據集中,我們必須預測信貸的違約支付,并找出哪些變量是違約支付的最強預測因子?以及不同人口統(tǒng)計學變量的類別,拖欠還款的概率如何變化?

有25個變量:

  1. ID:?每個客戶的ID

  2. LIMIT_BAL:?金額

  3. SEX:?性別(1 =男,2 =女)
    4.教育程度:(1 =研究生,2 =本科,3 =高中,4 =其他,5 =未知)
    5.婚姻:?婚姻狀況(1 =已婚,2 =單身,3 =其他)
    6.年齡:
    7.??PAY_0:??2005年9月的還款狀態(tài)(-1 =正常付款,1 =延遲一個月的付款,2 =延遲兩個月的付款,8 =延遲八個月的付款,9 =延遲9個月以上的付款)

  4. PAY_2:??2005年8月的還款狀態(tài)(與上述相同)

  5. PAY_3:?2005年7月的還款狀態(tài)(與上述相同)

  6. PAY_4:??2005年6月的還款狀態(tài)(與上述相同)

  7. PAY_5:??2005年5月的還款狀態(tài)(與上述相同)

  8. PAY_6:?還款狀態(tài)2005年4月?的賬單(與上述相同)

  9. BILL_AMT1:?2005年9月的賬單金額

  10. BILL_AMT2:??2005年8月的賬單金額

  11. BILL_AMT3:?賬單金額2005年7月?的賬單金額

  12. BILL_AMT4:?2005年6月的賬單金額

  13. BILL_AMT5:??2005年5月的賬單金額

  14. BILL_AMT6:?2005年4月

  15. PAY_AMT1??2005年9月,先前支付金額

  16. PAY_AMT2??2005年8月,以前支付的金額

  17. PAY_AMT3:?2005年7月的先前付款

  18. PAY_AMT4:??2005年6月的先前付款

  19. PAY_AMT5:??2005年5月的先前付款

  20. PAY_AMT6:?先前的付款額在2005年4月

  21. default.payment.next.month:?默認付款(1 =是,0 =否)

現在,我們知道了數據集的整體結構。因此,讓我們應用在應用機器學習模型時通常應該執(zhí)行的一些步驟。

第1步:導入

import?numpy?as?npimport?matplotlib.pyplot?as?plt

所有寫入當前目錄的結果都保存為輸出。

dataset?=?pd.read_csv('Card.csv')

現在讓我們看看數據是什么樣的

第2步:數據預處理和清理

dataset.shape

(30000,?25)

意味著有30,000條目包含25列

從上面的輸出中可以明顯看出,任何列中都沒有對象類型不匹配。

#檢查數據中Null項的數量,按列計算。dataset.isnull().sum()

步驟3.數據可視化和探索性數據分析

#?按性別檢查違約者和非違約者的計數數量sns.countplot

從上面的輸出中可以明顯看出,與男性相比,女性的整體拖欠付款更少

可以明顯看出,那些擁有婚姻狀況的人的已婚狀態(tài)人的默認拖欠付款較少。

sns.pairplot

sns.jointplot

男女按年齡分布

g.map(plt.hist,'AGE')

dataset['LIMIT_BAL'].plot.density

步驟4.找到相關性

X.corrwith

從上圖可以看出,最負相關的特征是LIMIT_BAL,但我們不能盲目地刪除此特征,因為根據我的看法,這對預測非常重要。ID無關緊要,并且在預測中沒有任何作用,因此我們稍后將其刪除。

#?繪制熱圖sns.heatmap(corr)

點擊標題查閱往期內容

PYTHON用戶流失數據挖掘:建立邏輯回歸、XGBOOST、隨機森林、決策樹、支持向量機、樸素貝葉斯和KMEANS聚類用戶畫像

左右滑動查看更多

01

02

03

04

步驟5:將數據分割為訓練和測試集

訓練數據集和測試數據集必須相似,通常具有相同的預測變量或變量。它們在變量的觀察值和特定值上有所不同。如果將模型擬合到訓練數據集上,則將隱式地最小化誤差。擬合模型為訓練數據集提供了良好的預測。然后,您可以在測試數據集上測試模型。如果模型在測試數據集上也預測良好,則您將更有信心。因為測試數據集與訓練數據集相似,但模型既不相同也不相同。這意味著該模型在真實意義上轉移了預測或學習。

因此,通過將數據集劃分為訓練和測試子集,我們可以有效地測量訓練后的模型,因為它以前從未看到過測試數據,因此可以防止過度擬合。

我只是將數據集拆分為20%的測試數據,其余80%將用于訓練模型。

?train_test_split(X,?y,?test_size?=?0.2,?random_state?=?0)

步驟6:規(guī)范化數據:特征標準化

對于許多機器學習算法而言,通過標準化(或Z分數標準化)進行特征標準化可能是重要的預處理步驟。

許多算法(例如SVM,K近鄰算法和邏輯回歸)都需要對特征進行規(guī)范化,

min_test?=?X_test.min()range_test?=?(X_test?-?min_test).max()X_test_scaled?=?(X_test?-?min_test)/range_test

步驟7:應用機器學習模型

from?sklearn.ensemble??import?AdaBoostClassifieradaboost?=AdaBoostClassifier()

xgb_classifier.fit(X_train_scaled,?y_train,verbose=True)end=time()train_time_xgb=end-start

應用具有100棵樹和標準熵的隨機森林

classifier?=?RandomForestClassifier(random_state?=?47,?????????????????????????????????????criterion?=?'entropy',n_estimators=100)

svc_model?=?SVC(kernel='rbf',?gamma=0.1,C=100)

knn?=?KNeighborsClassifier(n_neighbors?=?7)

步驟8:分析和比較機器學習模型的訓練時間

Train_Time?=?[????train_time_ada,????train_time_xgb,????train_time_sgd,????train_time_svc,????train_time_g,????train_time_r100,????????train_time_knn]

從上圖可以明顯看出,與其他模型相比,Adaboost和XGboost花費的時間少得多,而其他模型由于SVC花費了最多的時間,原因可能是我們已經將一些關鍵參數傳遞給了SVC。

步驟9.模型優(yōu)化

在每個迭代次數上,隨機搜索的性能均優(yōu)于網格搜索。同樣,隨機搜索似乎比網格搜索更快地收斂到最佳狀態(tài),這意味著迭代次數更少的隨機搜索與迭代次數更多的網格搜索相當。

在高維參數空間中,由于點變得更稀疏,因此在相同的迭代中,網格搜索的性能會下降。同樣常見的是,超參數之一對于找到最佳超參數并不重要,在這種情況下,網格搜索浪費了很多迭代,而隨機搜索卻沒有浪費任何迭代。

現在,我們將使用Randomsearch cv優(yōu)化模型準確性。如上表所示,Adaboost在該數據集中表現最佳。因此,我們將嘗試通過微調adaboost和SVC的超參數來進一步優(yōu)化它們。

參數調整

現在,讓我們看看adaboost的最佳參數是什么

random_search.best_params_

{'random_state':?47,?'n_estimators':?50,?'learning_rate':?0.01}

random_search.best_params_

{'n_estimators':?50,?'min_child_weight':?4,?'max_depth':?3}

random_search.best_params_

{'penalty':?'l2',?'n_jobs':?-1,?'n_iter':?1000,?'loss':?'log',?'alpha':?0.0001}

出色的所有指標參數準確性,F1分數精度,ROC,三個模型adaboost,XGBoost和SGD的召回率現已優(yōu)化。此外,我們還可以嘗試使用其他參數組合來查看是否會有進一步的改進。

ROC曲線圖

????auc?=?metrics.roc_auc_score(y_test,model.predict(X_test_scaled))plt.plot([0,?1],?[0,?1],'r--')

#?計算測試集分數的平均值和標準差test_mean?=?np.mean#?繪制訓練集和測試集的平均準確度得分plt.plot#?繪制訓練集和測試集的準確度。plt.fill_between

驗證曲線的解釋

如果樹的數量在10左右,則該模型存在高偏差。兩個分數非常接近,但是兩個分數都離可接受的水平太遠,因此我認為這是一個高度偏見的問題。換句話說,該模型不適合。

在最大樹數為250的情況下,由于訓練得分為0.82但驗證得分約為0.81,因此模型存在高方差。換句話說,模型過度擬合。同樣,數據點顯示出一種優(yōu)美的曲線。但是,我們的模型使用非常復雜的曲線來盡可能接近每個數據點。因此,具有高方差的模型具有非常低的偏差,因為它幾乎沒有假設數據。實際上,它對數據的適應性太大。

從曲線中可以看出,大約30到40的最大樹可以最好地概括看不見的數據。隨著最大樹的增加,偏差變小,方差變大。我們應該保持兩者之間的平衡。在30到40棵樹的數量之后,訓練得分就開始上升,而驗證得分開始下降,因此我開始遭受過度擬合的困擾。因此,這是為什么30至40之間的任何數量的樹都是一個不錯的選擇的原因。

結論

因此,我們已經看到,調整后的Adaboost的準確性約為82.95%,并且在所有其他性能指標(例如F1分數,Precision,ROC和Recall)中也取得了不錯的成績。

此外,我們還可以通過使用Randomsearch或Gridsearch進行模型優(yōu)化,以找到合適的參數以提高模型的準確性。

我認為,如果對這三個模型進行了適當的調整,它們的性能都會更好。

本文摘選?《?Python信貸風控模型:Adaboost,XGBoost,SGD, GBOOST, SVC,隨機森林, KNN預測信貸違約支付?》?,點擊“閱讀原文”獲取全文完整資料。

點擊標題查閱往期內容

Python進行多輸出(多因變量)回歸:集成學習梯度提升決策樹GRADIENT BOOSTING,GBR回歸訓練和預測可視化
Python對商店數據進行l(wèi)stm和xgboost銷售量時間序列建模預測分析
PYTHON集成機器學習:用ADABOOST、決策樹、邏輯回歸集成模型分類和回歸和網格搜索超參數優(yōu)化
R語言集成模型:提升樹boosting、隨機森林、約束最小二乘法加權平均模型融合分析時間序列數據
Python對商店數據進行l(wèi)stm和xgboost銷售量時間序列建模預測分析
R語言用主成分PCA、?邏輯回歸、決策樹、隨機森林分析心臟病數據并高維可視化
R語言基于樹的方法:決策樹,隨機森林,Bagging,增強樹
R語言用邏輯回歸、決策樹和隨機森林對信貸數據集進行分類預測
spss modeler用決策樹神經網絡預測ST的股票
R語言中使用線性模型、回歸決策樹自動組合特征因子水平
R語言中自編基尼系數的CART回歸決策樹的實現
R語言用rle,svm和rpart決策樹進行時間序列預測
python在Scikit-learn中用決策樹和隨機森林預測NBA獲勝者
python中使用scikit-learn和pandas決策樹進行iris鳶尾花數據分類建模和交叉驗證
R語言里的非線性模型:多項式回歸、局部樣條、平滑樣條、 廣義相加模型GAM分析
R語言用標準最小二乘OLS,廣義相加模型GAM?,樣條函數進行邏輯回歸LOGISTIC分類
R語言ISLR工資數據進行多項式回歸和樣條回歸分析
R語言中的多項式回歸、局部回歸、核平滑和平滑樣條回歸模型
R語言用泊松Poisson回歸、GAM樣條曲線模型預測騎自行車者的數量
R語言分位數回歸、GAM樣條曲線、指數平滑和SARIMA對電力負荷時間序列預測R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態(tài)可視化
如何用R語言在機器學習中建立集成模型?
R語言ARMA-EGARCH模型、集成預測算法對SPX實際波動率進行預測在python 深度學習Keras中計算神經網絡集成模型R語言ARIMA集成模型預測時間序列分析R語言基于Bagging分類的邏輯回歸(Logistic Regression)、決策樹、森林分析心臟病患者
R語言基于樹的方法:決策樹,隨機森林,Bagging,增強樹
R語言基于Bootstrap的線性回歸預測置信區(qū)間估計方法
R語言使用bootstrap和增量法計算廣義線性模型(GLM)預測置信區(qū)間
R語言樣條曲線、決策樹、Adaboost、梯度提升(GBM)算法進行回歸、分類和動態(tài)可視化
Python對商店數據進行l(wèi)stm和xgboost銷售量時間序列建模預測分析
R語言隨機森林RandomForest、邏輯回歸Logisitc預測心臟病數據和可視化分析
R語言用主成分PCA、?邏輯回歸、決策樹、隨機森林分析心臟病數據并高維可視化
Matlab建立SVM,KNN和樸素貝葉斯模型分類繪制ROC曲線
matlab使用分位數隨機森林(QRF)回歸樹檢測異常值


Python信貸風控模型:Adaboost,XGBoost,SGD, SVC,隨機森林, KNN預測信貸違約支付|附代的評論 (共 條)

分享到微博請遵守國家法律
砀山县| 富锦市| 北碚区| 万全县| 三都| 潍坊市| 乃东县| 小金县| 朝阳县| 南陵县| 龙州县| 思南县| 奇台县| 怀安县| 平泉县| 仲巴县| 剑川县| 聂拉木县| 通道| 融水| 惠来县| 甘德县| 苗栗市| 城市| 翁牛特旗| 扎兰屯市| 民和| 当涂县| 桐柏县| 湘阴县| 灌云县| 台安县| 田东县| 荆州市| 枝江市| 锡林郭勒盟| 凤翔县| 泰安市| 永济市| 遂川县| 旅游|