Árboles potenciados (XGBoost)

Modelado del riesgo crediticio en Python

Michael Crabtree

Data Scientist, Ford Motor Company

Árboles de decisión

  • Crea predicciones similares a la regresión logística
  • No está estructurado como una regresión

Ejemplo de un árbol de decisión

Modelado del riesgo crediticio en Python

Árboles para el estado del préstamo

  • Árbol de decisión simple para predecir la prob. de impago (loan_status)

Ejemplo de predicción con árbol de decisión

Modelado del riesgo crediticio en Python

Impacto del árbol de decisión

Ejemplo de predicción con árbol de decisión

Préstamo Estado real Estado pred. Valor al cobrar Valor de venta Gan./Pérd.
1 0 1 $1,500 $250 -$1,250
2 0 1 $1,200 $250 -$950
Modelado del riesgo crediticio en Python

Un bosque de árboles

  • XGBoost usa muchos árboles simples (ensamble)
  • Cada árbol rinde apenas mejor que lanzar una moneda

Conjunto de predictores tipo árbol

Modelado del riesgo crediticio en Python

Crear y entrenar árboles

  • Parte del paquete de Python xgboost, aquí llamado xgb
  • Entrena con .fit() igual que la regresión logística
# Crear un modelo de regresión logística
clf_logistic = LogisticRegression()
# Entrenar la regresión logística
clf_logistic.fit(X_train, np.ravel(y_train))
# Crear un modelo de árboles potenciados
clf_gbt = xgb.XGBClassifier()
# Entrenar el árbol potenciado
clf_gbt.fit(X_train,np.ravel(y_train))
Modelado del riesgo crediticio en Python

Predicciones de impago con XGBoost

  • Predice con .predict() y .predict_proba()
    • .predict_proba() da un valor entre 0 y 1
    • .predict() da 1 o 0 para loan_status
# Predecir probabilidades de impago
gbt_preds_prob = clf_gbt.predict_proba(X_test)
# Predecir loan_status como 1 o 0
gbt_preds = clf_gbt.predict(X_test)
# gbt_preds_prob
array([[0.059, 0.940], [0.121, 0.989]])
# gbt_preds
array([1, 1, 0...])
Modelado del riesgo crediticio en Python

Hiperparámetros de árboles potenciados

  • Hiperparámetros: ajustes del modelo que no se aprenden de los datos
  • Hiperparámetros comunes en árboles potenciados
    • learning_rate: valores bajos hacen cada paso más conservador
    • max_depth: profundidad máxima de cada árbol; más grande = más complejo
xgb.XGBClassifier(learning_rate = 0.2,
                  max_depth = 4)
Modelado del riesgo crediticio en Python

¡Vamos a practicar!

Modelado del riesgo crediticio en Python

Preparing Video For Download...