Gradientförstärkta träd med XGBoost

Kreditriskmodellering i Python

Michael Crabtree

Data Scientist, Ford Motor Company

Beslutsträd

  • Skapar prediktioner liknande logistisk regression
  • Struktureras inte som en regression

Exempel på ett beslutsträd

Kreditriskmodellering i Python

Beslutsträd för lånestatus

  • Enkelt beslutsträd för att prediktera sannolikheten för fallissemang i loan_status

Exempel på prediktion med beslutsträd

Kreditriskmodellering i Python

Beslutsträdets påverkan

Exempel på prediktion med beslutsträd

Lån Verklig lånestatus Pred. lånestatus Lånebetalningsvärde Försäljningsvärde Vinst/Förlust
1 0 1 $1 500 $250 -$1 250
2 0 1 $1 200 $250 -$950
Kreditriskmodellering i Python

En skog av träd

  • XGBoost använder många enkla träd (ensemble)
  • Varje träd presterar något bättre än slumpen

Ensemble av exempelträd för prediktion

Kreditriskmodellering i Python

Skapa och träna träd

  • Ingår i Python-paketet xgboost, kallas xgb här
  • Tränas med .fit() precis som den logistiska regressionsmodellen
# 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))
Kreditriskmodellering i Python

Fallissemangsprediktioner med XGBoost

  • Predikterar med både .predict() och .predict_proba()
    • .predict_proba() ger ett värde mellan 0 och 1
    • .predict() ger 1 eller 0 för 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...])
Kreditriskmodellering i Python

Hyperparametrar för gradientförstärkta träd

  • Hyperparametrar: modellparametrar (inställningar) som inte kan läras från data
  • Vanliga hyperparametrar för gradientförstärkta träd
    • learning_rate: lägre värden gör varje steg mer konservativt
    • max_depth: styr hur djupt varje träd kan växa – större värde ger mer komplexitet
xgb.XGBClassifier(learning_rate = 0.2,
                  max_depth = 4)
Kreditriskmodellering i Python

Nu kör vi en övning!

Kreditriskmodellering i Python

Preparing Video For Download...