Árvores impulsionadas (Gradient Boosting) com XGBoost

Modelagem de Risco de Crédito em Python

Michael Crabtree

Data Scientist, Ford Motor Company

Árvores de decisão

  • Gera previsões parecidas com regressão logística
  • Não é estruturada como uma regressão

Exemplo de uma árvore de decisão

Modelagem de Risco de Crédito em Python

Árvores para status do empréstimo

  • Árvore simples para prever probabilidade de default em loan_status

Exemplo de previsão com árvore de decisão

Modelagem de Risco de Crédito em Python

Impacto da árvore de decisão

Exemplo de previsão com árvore de decisão

Empréstimo Status real Status previsto Valor de quitação Valor de venda Ganho/Perda
1 0 1 $1.500 $250 -$1.250
2 0 1 $1.200 $250 -$950
Modelagem de Risco de Crédito em Python

Uma floresta de árvores

  • XGBoost usa muitas árvores simples (ensemble)
  • Cada árvore é só um pouco melhor que cara ou coroa

Conjunto de preditores em árvore

Modelagem de Risco de Crédito em Python

Criando e treinando árvores

  • Parte do pacote Python xgboost, chamado aqui de xgb
  • Treina com .fit() como no modelo de regressão logística
# Create a logistic regression model
clf_logistic = LogisticRegression()
# Train the logistic regression
clf_logistic.fit(X_train, np.ravel(y_train))
# Create a gradient boosted tree model
clf_gbt = xgb.XGBClassifier()
# Train the gradient boosted tree
clf_gbt.fit(X_train,np.ravel(y_train))
Modelagem de Risco de Crédito em Python

Previsões de default com XGBoost

  • Faz previsões com .predict() e .predict_proba()
    • .predict_proba() retorna valor entre 0 e 1
    • .predict() retorna 1 ou 0 para loan_status
# Prever probabilidades de inadimplência
gbt_preds_prob = clf_gbt.predict_proba(X_test)
# Prever loan_status como 1 ou 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...])
Modelagem de Risco de Crédito em Python

Hiperparâmetros de gradient boosted trees

  • Hiperparâmetros: configurações do modelo que não são aprendidas dos dados
  • Hiperparâmetros comuns em gradient boosted trees
    • learning_rate: menor torna cada passo mais conservador
    • max_depth: profundidade máxima de cada árvore; maior = mais complexa
xgb.XGBClassifier(learning_rate = 0.2,
                  max_depth = 4)
Modelagem de Risco de Crédito em Python

Vamos praticar!

Modelagem de Risco de Crédito em Python

Preparing Video For Download...