使用 XGBoost 的梯度提升樹

以 Python 進行信用風險建模

Michael Crabtree

Data Scientist, Ford Motor Company

決策樹

  • 產生的預測類似邏輯斯回歸
  • 結構上不是回歸模型

決策樹範例

以 Python 進行信用風險建模

貸款狀態的決策樹

  • 用於預測 loan_status(違約機率)的簡單決策樹

決策樹預測範例

以 Python 進行信用風險建模

決策樹的影響

決策樹預測範例

Loan True loan status Pred. Loan Status Loan payoff value Selling Value Gain/Loss
1 0 1 $1,500 $250 -$1,250
2 0 1 $1,200 $250 -$950
以 Python 進行信用風險建模

樹之森林

  • XGBoost 使用許多簡單樹(整體學習)
  • 每棵樹都只比擲硬幣略好

多個樹模型的整體

以 Python 進行信用風險建模

建立並訓練樹模型

  • xgboost Python 套件的一部分,這裡簡寫為 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() 輸出介於 01
    • .predict() 產生 loan_status10
# 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...