Cross-Validation für Kreditmodelle

Kreditrisikomodellierung in Python

Michael Crabtree

Data Scientist, Ford Motor Company

Grundlagen der Cross-Validation

  • Zum Trainieren und Testen wie bei neuen Daten
  • Teilt Trainingsdaten in Teile, um die künftige Performance zu schätzen
  • Verwendet DMatrix, eine für XGBoost optimierte interne Struktur
  • Early Stopping beendet, wenn sich die Metrik nach mehreren Iterationen nicht verbessert
Kreditrisikomodellierung in Python

So funktioniert Cross-Validation

  • Verarbeitet Teile der Trainingsdaten (Folds) und testet gegen ungenutzte Teile
  • Abschließender Test gegen das eigentliche Testset

Diagramm der k-fachen Cross-Validation

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

Cross-Validation in XGBoost einrichten

# 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' gibt Klassifikation für loan_status an
  • 'eval_metric':'auc' weist XGBoost an, die Performance per AUC zu bewerten
Kreditrisikomodellierung in Python

Cross-Validation in XGBoost nutzen

# 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() erstellt ein spezielles, fürs Training optimiertes Objekt für xgboost
Kreditrisikomodellierung in Python

Ergebnisse der Cross-Validation

  • Erstellt ein DataFrame mit den Werten aus der Cross-Validation

Beispiel für Cross-Validation-Scores

Kreditrisikomodellierung in Python

Cross-Validation-Scoring

  • Nutzt Cross-Validation und Metriken mit cross_val_score() 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])
Kreditrisikomodellierung in Python

Lass uns üben!

Kreditrisikomodellierung in Python

Preparing Video For Download...