Gradient boosted trees s XGBoost

Credit Risk Modeling in Python

Michael Crabtree

Data Scientist, Ford Motor Company

Rozhodovací stromy

  • Vytváří predikce podobně jako logistická regrese
  • Nemá strukturu regrese

Příklad rozhodovacího stromu

Credit Risk Modeling in Python

Rozhodovací stromy pro stav úvěru

  • Jednoduchý rozhodovací strom pro predikci pravděpodobnosti selhání loan_status

Příklad predikce rozhodovacího stromu

Credit Risk Modeling in Python

Dopad rozhodovacího stromu

Příklad predikce rozhodovacího stromu

Úvěr Skutečný stav Pred. stav Hodnota splacení Prodejní hodnota Zisk/Ztráta
1 0 1 $1,500 $250 -$1,250
2 0 1 $1,200 $250 -$950
Credit Risk Modeling in Python

Les stromů

  • XGBoost využívá mnoho jednoduchých stromů (ensemble)
  • Každý strom je o něco lepší než náhodný tip

Ensemble příkladových stromových prediktorů

Credit Risk Modeling in Python

Vytváření a trénování stromů

  • Součást balíčku xgboost, zde jako xgb
  • Trénuje pomocí .fit() stejně jako logistická regrese
# 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))
Credit Risk Modeling in Python

Predikce selhání s XGBoost

  • Predikuje pomocí .predict() i .predict_proba()
    • .predict_proba() vrací hodnotu mezi 0 a 1
    • .predict() vrací 1 nebo 0 pro loan_status
# Predict probabilities of default
gbt_preds_prob = clf_gbt.predict_proba(X_test)
# Predict loan_status as a 1 or 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...])
Credit Risk Modeling in Python

Hyperparametry gradient boosted trees

  • Hyperparametry: parametry modelu, které nelze naučit z dat
  • Běžné hyperparametry pro gradient boosted trees
    • learning_rate: nižší hodnoty zvyšují konzervativnost
    • max_depth: maximální hloubka stromu, vyšší = složitější
xgb.XGBClassifier(learning_rate = 0.2,
                  max_depth = 4)
Credit Risk Modeling in Python

Lass uns üben!

Credit Risk Modeling in Python

Preparing Video For Download...