Cross-validatie voor kredietmodellen

Kredietrisicomodellering in Python

Michael Crabtree

Data Scientist, Ford Motor Company

Basis van cross-validatie

  • Trainen en testen alsof je het model op nieuwe data toepast
  • Splitst trainingsdata in delen om toekomstige performance te schatten
  • Gebruikt DMatrix, een interne structuur geoptimaliseerd voor XGBoost
  • Early stopping stopt als een metric na een aantal iteraties niet verbetert
Kredietrisicomodellering in Python

Hoe cross-validatie werkt

  • Verwerkt delen van de trainingsdata (folds) en test tegen het ongebruikte deel
  • Tot slot testen op de echte testset

Diagram van k-fold cross-validatie

1 https://scikit-learn.org/stable/modules/cross_validation.html
Kredietrisicomodellering in Python

Cross-validatie instellen in 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' specificeert classificatie voor loan_status
  • 'eval_metric':'auc' laat XGBoost de AUC van het model scoren
Kredietrisicomodellering in Python

Cross-validatie gebruiken in 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() maakt een speciaal object voor xgboost, geoptimaliseerd voor training
Kredietrisicomodellering in Python

De resultaten van cross-validatie

  • Maakt een dataframe met de waarden uit de cross-validatie

Voorbeeld van cross-validatiescores

Kredietrisicomodellering in Python

Scores bij cross-validatie

  • Gebruikt cross-validatie en scoringsmetrics met de cross_val_score()-functie in 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])
Kredietrisicomodellering in Python

Laten we oefenen!

Kredietrisicomodellering in Python

Preparing Video For Download...