Walidacja krzyżowa dla modeli kredytowych

Modelowanie ryzyka kredytowego w Pythonie

Michael Crabtree

Data Scientist, Ford Motor Company

Podstawy walidacji krzyżowej

  • Służy do trenowania i testowania modelu w sposób symulujący użycie na nowych danych
  • Dzieli dane treningowe na segmenty, aby oszacować przyszłą wydajność
  • Używa DMatrix, wewnętrznej struktury zoptymalizowanej dla XGBoost
  • Wczesne zatrzymanie przerywa walidację, gdy metryka nie poprawia się przez określoną liczbę iteracji
Modelowanie ryzyka kredytowego w Pythonie

Jak działa walidacja krzyżowa

  • Przetwarza części danych treningowych (tzw. foldy) i testuje na nieużytej części
  • Ostateczne testowanie na rzeczywistym zbiorze testowym

Diagram walidacji krzyżowej k-fold

1 https://scikit-learn.org/stable/modules/cross_validation.html
Modelowanie ryzyka kredytowego w Pythonie

Konfiguracja walidacji krzyżowej w 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' określa klasyfikację dla loan_status
  • 'eval_metric':'auc' nakazuje XGBoost oceniać model przy użyciu AUC
Modelowanie ryzyka kredytowego w Pythonie

Używanie walidacji krzyżowej w 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() tworzy specjalny obiekt dla xgboost zoptymalizowany pod kątem trenowania
Modelowanie ryzyka kredytowego w Pythonie

Wyniki walidacji krzyżowej

  • Tworzy ramkę danych z wynikami walidacji krzyżowej

Przykład wyników walidacji krzyżowej

Modelowanie ryzyka kredytowego w Pythonie

Ocena walidacji krzyżowej

  • Używa walidacji krzyżowej i metryk oceny z funkcją cross_val_score() w 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])
Modelowanie ryzyka kredytowego w Pythonie

Czas na ćwiczenia!

Modelowanie ryzyka kredytowego w Pythonie

Preparing Video For Download...