Gradient boosted trees met XGBoost

Kredietrisicomodellering in Python

Michael Crabtree

Data Scientist, Ford Motor Company

Beslisbomen

  • Maakt voorspellingen zoals logistische regressie
  • Niet opgebouwd als een regressie

Voorbeeld van een beslisboom

Kredietrisicomodellering in Python

Beslisbomen voor loan status

  • Eenvoudige beslisboom om loan_status (kans op default) te voorspellen

Voorbeeld van voorspelling met beslisboom

Kredietrisicomodellering in Python

Effect van een beslisboom

Voorbeeld van voorspelling met beslisboom

Lening Echte loan status Voorsp. loan status Afbetalingswaarde Verkoopwaarde Winst/Verlies
1 0 1 $1,500 $250 -$1,250
2 0 1 $1,200 $250 -$950
Kredietrisicomodellering in Python

Een bos met bomen

  • XGBoost gebruikt veel eenvoudige bomen (ensemble)
  • Elke boom is net iets beter dan kop of munt

Ensemble van voorbeeld-boomvoorspellers

Kredietrisicomodellering in Python

Bomen maken en trainen

  • Onderdeel van het xgboost-pakket voor Python, hier xgb
  • Trainen met .fit() net als bij logistische regressie
# Maak een logistisch regressiemodel
clf_logistic = LogisticRegression()
# Train de logistische regressie
clf_logistic.fit(X_train, np.ravel(y_train))
# Maak een gradient boosted tree-model
clf_gbt = xgb.XGBClassifier()
# Train de gradient boosted tree
clf_gbt.fit(X_train,np.ravel(y_train))
Kredietrisicomodellering in Python

Default-voorspellingen met XGBoost

  • Voorspelt met zowel .predict() als .predict_proba()
    • .predict_proba() geeft een waarde tussen 0 en 1
    • .predict() geeft 1 of 0 voor loan_status
# Voorspel kansen op default
gbt_preds_prob = clf_gbt.predict_proba(X_test)
# Voorspel loan_status als 1 of 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...])
Kredietrisicomodellering in Python

Hyperparameters van gradient boosted trees

  • Hyperparameters: modelinstellingen die niet uit data te leren zijn
  • Veelgebruikte hyperparameters voor gradient boosted trees
    • learning_rate: kleinere waarden maken elke stap voorzichtiger
    • max_depth: hoe diep elke tree mag gaan; groter is complexer
xgb.XGBClassifier(learning_rate = 0.2,
                  max_depth = 4)
Kredietrisicomodellering in Python

Laten we oefenen!

Kredietrisicomodellering in Python

Preparing Video For Download...