Křížová validace pro úvěrové modely

Credit Risk Modeling in Python

Michael Crabtree

Data Scientist, Ford Motor Company

Základy křížové validace

  • Slouží k trénování a testování modelu způsobem simulujícím nasazení na nová data
  • Rozděluje trénovací data na části pro odhad budoucího výkonu
  • Využívá DMatrix, interní strukturu optimalizovanou pro XGBoost
  • Předčasné zastavení ukončí křížovou validaci, pokud se metrika nezlepší po daný počet iterací
Credit Risk Modeling in Python

Jak křížová validace funguje

  • Zpracovává části trénovacích dat (tzv. záhyby) a testuje na nepoužité části
  • Závěrečné testování probíhá na skutečné testovací sadě

Diagram křížové validace k-záhybů

1 https://scikit-learn.org/stable/modules/cross_validation.html
Credit Risk Modeling in Python

Nastavení křížové validace v 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' slouží ke specifikaci klasifikace pro loan_status
  • 'eval_metric':'auc' říká XGBoost, aby hodnotil výkon modelu pomocí AUC
Credit Risk Modeling in Python

Použití křížové validace v 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() vytvoří speciální objekt pro xgboost optimalizovaný pro trénování
Credit Risk Modeling in Python

Výsledky křížové validace

  • Vytvoří datový rámec s hodnotami z křížové validace

Příklad skóre křížové validace

Credit Risk Modeling in Python

Skórování křížové validace

  • Používá křížovou validaci a metriky skóre pomocí funkce cross_val_score() v 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])
Credit Risk Modeling in Python

Lass uns üben!

Credit Risk Modeling in Python

Preparing Video For Download...