Крос-валідація для кредитних моделей

Моделювання кредитного ризику в Python

Michael Crabtree

Data Scientist, Ford Motor Company

Основи крос-валідації

  • Використовується для тренування й тестування моделі так, щоб імітувати роботу на нових даних
  • Ділить тренувальні дані на частини, щоб оцінити майбутню якість
  • Використовує DMatrix, внутрішню структуру, оптимізовану для XGBoost
  • Раннє зупинення наказує крос-валідації зупинитися, якщо метрика не покращується певну кількість ітерацій
Моделювання кредитного ризику в Python

Як працює крос-валідація

  • Послідовно обробляє частини тренувальних даних (фолди) та тестує на невикористаній частині
  • Підсумкове тестування на реальному тестовому наборі

Схема k-fold крос-валідації

1 https://scikit-learn.org/stable/modules/cross_validation.html
Моделювання кредитного ризику в Python

Налаштування крос-валідації в 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' задає класифікацію для loan_status
  • 'eval_metric':'auc' наказує XGBoost оцінювати продуктивність моделі за AUC
Моделювання кредитного ризику в Python

Використання крос-валідації в 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() створює спеціальний об'єкт для xgboost, оптимізований для тренування
Моделювання кредитного ризику в Python

Результати крос-валідації

  • Створює датафрейм зі значеннями крос-валідації

Приклад оцінок крос-валідації

Моделювання кредитного ризику в Python

Оцінювання за крос-валідацією

  • Використовує крос-валідацію й метрики оцінювання через функцію cross_val_score() у 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])
Моделювання кредитного ризику в Python

Давайте потренуємось!

Моделювання кредитного ризику в Python

Preparing Video For Download...