Validación cruzada para modelos de crédito

Modelado del riesgo crediticio en Python

Michael Crabtree

Data Scientist, Ford Motor Company

Bases de la validación cruzada

  • Sirve para entrenar y probar el modelo simulando datos nuevos
  • Divide el entrenamiento en partes para estimar el rendimiento futuro
  • Usa DMatrix, una estructura interna optimizada para XGBoost
  • El early stopping detiene cuando la métrica no mejora tras varias iteraciones
Modelado del riesgo crediticio en Python

Cómo funciona la validación cruzada

  • Procesa partes del entrenamiento (folds) y prueba contra la parte no usada
  • Prueba final contra el conjunto de test real

Diagrama de validación cruzada k-folds

1 https://scikit-learn.org/stable/modules/cross_validation.html
Modelado del riesgo crediticio en Python

Configurar validación cruzada en 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 clasificación para loan_status
  • 'eval_metric':'auc' indica a XGBoost puntuar el modelo con AUC
Modelado del riesgo crediticio en Python

Usar validación cruzada en 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() crea un objeto especial para xgboost optimizado para entrenamiento
Modelado del riesgo crediticio en Python

Resultados de la validación cruzada

  • Crea un data frame con los valores de la validación cruzada

Ejemplo de puntuaciones de validación cruzada

Modelado del riesgo crediticio en Python

Puntuación en validación cruzada

  • Usa validación cruzada y métricas con la función cross_val_score() de 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])
Modelado del riesgo crediticio en Python

¡Vamos a practicar!

Modelado del riesgo crediticio en Python

Preparing Video For Download...