Validação cruzada para modelos de crédito

Modelagem de Risco de Crédito em Python

Michael Crabtree

Data Scientist, Ford Motor Company

Noções básicas de validação cruzada

  • Treina e testa o modelo simulando uso em novos dados
  • Divide o treino em partes para estimar desempenho futuro
  • Usa DMatrix, estrutura interna otimizada para XGBoost
  • Early stopping interrompe quando a métrica não melhora após N iterações
Modelagem de Risco de Crédito em Python

Como funciona a validação cruzada

  • Processa partes do treino (chamadas folds) e testa contra a parte não usada
  • Teste final no conjunto de teste real

Diagrama de validação cruzada k-folds

1 https://scikit-learn.org/stable/modules/cross_validation.html
Modelagem de Risco de Crédito em Python

Configurando a validação cruzada no 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' especifica classificação para loan_status
  • 'eval_metric':'auc' faz o XGBoost avaliar desempenho pela AUC
Modelagem de Risco de Crédito em Python

Usando validação cruzada no 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() cria um objeto especial para xgboost otimizado para treino
Modelagem de Risco de Crédito em Python

Resultados da validação cruzada

  • Cria um data frame com os valores da validação cruzada

Exemplo de pontuações de validação cruzada

Modelagem de Risco de Crédito em Python

Pontuação na validação cruzada

  • Usa validação cruzada e métricas de avaliação com a função cross_val_score() do 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])
Modelagem de Risco de Crédito em Python

Vamos praticar!

Modelagem de Risco de Crédito em Python

Preparing Video For Download...