Korsvalidering för kreditmodeller

Kreditriskmodellering i Python

Michael Crabtree

Data Scientist, Ford Motor Company

Grunderna i korsvalidering

  • Används för att träna och testa modellen på ett sätt som simulerar användning på ny data
  • Delar upp träningsdata i segment för att uppskatta framtida prestanda
  • Använder DMatrix, en intern struktur optimerad för XGBoost
  • Early stopping stoppar korsvalideringen när ett utvärderingsmått inte förbättrats efter ett antal iterationer
Kreditriskmodellering i Python

Så fungerar korsvalidering

  • Bearbetar delar av träningsdata (kallade folds) och testar mot oanvänd del
  • Slutlig testning mot det faktiska testdatasettet

Diagram över k-folds korsvalidering

1 https://scikit-learn.org/stable/modules/cross_validation.html
Kreditriskmodellering i Python

Konfigurera korsvalidering i XGBoost

# Set the number of folds
n_folds = 2
# Set early stopping number
early_stop = 5
# Set any specific parameters for cross validation
params = {'objective': 'binary:logistic',
          'seed': 99, 'eval_metric':'auc'}
  • 'binary':'logistic' används för att ange klassificering för loan_status
  • 'eval_metric':'auc' instruerar XGBoost att utvärdera modellens prestanda med AUC
Kreditriskmodellering i Python

Använda korsvalidering i XGBoost

# Restructure the train data for xgboost
DTrain = xgb.DMatrix(X_train, label = y_train)
# Perform cross validation
xgb.cv(params, DTrain, num_boost_round = 5, nfold=n_folds,
       early_stopping_rounds=early_stop)
  • DMatrix() skapar ett specialobjekt för xgboost optimerat för träning
Kreditriskmodellering i Python

Resultat från korsvalidering

  • Skapar en dataram med värdena från korsvalideringen

Exempel på korsvalideringspoäng

Kreditriskmodellering i Python

Korsvalideringspoäng

  • Använder korsvalidering och utvärderingsmått med funktionen cross_val_score() i scikit-learn
# Import the module
from sklearn.model_selection import cross_val_score
# Create a gbt model
xg = xgb.XGBClassifier(learning_rate = 0.4, max_depth = 10)
# Use cross valudation and accuracy scores 5 consecutive times
cross_val_score(gbt, X_train, y_train, cv = 5)
array([0.92748092, 0.92575308, 0.93975392, 0.93378608, 0.93336163])
Kreditriskmodellering i Python

Nu kör vi en övning!

Kreditriskmodellering i Python

Preparing Video For Download...