Gradient boosted trees z XGBoost

Modelowanie ryzyka kredytowego w Pythonie

Michael Crabtree

Data Scientist, Ford Motor Company

Drzewa decyzyjne

  • Tworzy predykcje podobne do regresji logistycznej
  • Nie ma struktury regresji

Przykład drzewa decyzyjnego

Modelowanie ryzyka kredytowego w Pythonie

Drzewa decyzyjne dla statusu kredytu

  • Proste drzewo decyzyjne do przewidywania prawdopodobieństwa niewykonania zobowiązania loan_status

Przykład predykcji drzewa decyzyjnego

Modelowanie ryzyka kredytowego w Pythonie

Wpływ drzewa decyzyjnego

Przykład predykcji drzewa decyzyjnego

Kredyt Rzeczywisty status Pred. status Wartość spłaty Wartość sprzedaży Zysk/Strata
1 0 1 $1,500 $250 -$1,250
2 0 1 $1,200 $250 -$950
Modelowanie ryzyka kredytowego w Pythonie

Las drzew

  • XGBoost używa wielu prostych drzew (ensemble)
  • Każde drzewo jest nieznacznie lepsze niż losowe zgadywanie

Przykład zespołu predyktorów drzewiastych

Modelowanie ryzyka kredytowego w Pythonie

Tworzenie i trenowanie drzew

  • Część pakietu Python xgboost, tutaj jako xgb
  • Trenowanie za pomocą .fit() — tak samo jak w regresji logistycznej
# 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))
Modelowanie ryzyka kredytowego w Pythonie

Przewidywanie niewykonania zobowiązań z XGBoost

  • Przewiduje za pomocą .predict() i .predict_proba()
    • .predict_proba() zwraca wartość między 0 a 1
    • .predict() zwraca 1 lub 0 dla 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...])
Modelowanie ryzyka kredytowego w Pythonie

Hiperparametry gradient boosted trees

  • Hiperparametry: parametry modelu, których nie można nauczyć się z danych
  • Typowe hiperparametry dla gradient boosted trees:
    • learning_rate: mniejsze wartości zwiększają ostrożność każdego kroku
    • max_depth: głębokość drzewa — większa wartość oznacza większą złożoność
xgb.XGBClassifier(learning_rate = 0.2,
                  max_depth = 4)
Modelowanie ryzyka kredytowego w Pythonie

Czas na ćwiczenia!

Modelowanie ryzyka kredytowego w Pythonie

Preparing Video For Download...