Градієнтні бустингові дерева з XGBoost

Моделювання кредитного ризику в Python

Michael Crabtree

Data Scientist, Ford Motor Company

Дерева рішень

  • Створює прогнози, подібні до логістичної регресії
  • Але не має структури регресії

Приклад дерева рішень

Моделювання кредитного ризику в Python

Дерева рішень для статусу позики

  • Просте дерево рішень для прогнозу ймовірності дефолту loan_status

Приклад прогнозу дерева рішень

Моделювання кредитного ризику в Python

Вплив дерева рішень

Приклад прогнозу дерева рішень

Позика Факт. статус позики Прогн. статус позики Сума погашення Ціна продажу Прибуток/Збиток
1 0 1 $1,500 $250 -$1,250
2 0 1 $1,200 $250 -$950
Моделювання кредитного ризику в Python

Ліс із дерев

  • XGBoost використовує багато простих дерев (ансамбль)
  • Кожне дерево трохи краще за підкидання монети

Ансамбль прикладів дерев-прогнозистів

Моделювання кредитного ризику в Python

Створення й навчання дерев

  • Частина пакета Python xgboost, тут зветься xgb
  • Навчається методом .fit(), як і логістична регресія
# 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))
Моделювання кредитного ризику в Python

Прогнози дефолту з XGBoost

  • Прогнозує через .predict() і .predict_proba()
    • .predict_proba() повертає значення між 0 і 1
    • .predict() повертає 1 або 0 для 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...])
Моделювання кредитного ризику в Python

Гіперпараметри градієнтних бустингових дерев

  • Гіперпараметри: параметри моделі (налаштування), які не навчаються з даних
  • Поширені гіперпараметри для градієнтних бустингових дерев
    • learning_rate: менші значення роблять кроки обережнішими
    • max_depth: глибина кожного дерева; більше — складніше
xgb.XGBClassifier(learning_rate = 0.2,
                  max_depth = 4)
Моделювання кредитного ризику в Python

Давайте потренуємось!

Моделювання кредитного ризику в Python

Preparing Video For Download...