Перекрёстная проверка для кредитных моделей

Моделирование кредитного риска на Python

Michael Crabtree

Data Scientist, Ford Motor Company

Основы перекрёстной проверки

  • Используется для обучения и тестирования модели в условиях, имитирующих работу с новыми данными
  • Разбивает обучающие данные на части для оценки будущей производительности
  • Использует DMatrix — внутреннюю структуру, оптимизированную для XGBoost
  • Ранняя остановка прерывает перекрёстную проверку, если метрика не улучшается за заданное число итераций
Моделирование кредитного риска на Python

Как работает перекрёстная проверка

  • Обрабатывает части обучающих данных (фолды) и проверяет их на оставшейся части
  • Финальное тестирование — на реальной тестовой выборке

Схема k-фолдовой перекрёстной проверки

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...