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()。ロジスティック回帰と同様
# ロジスティック回帰モデルを作成
clf_logistic = LogisticRegression()
# ロジスティック回帰を学習
clf_logistic.fit(X_train, np.ravel(y_train))
# 勾配ブースティング木モデルを作成
clf_gbt = xgb.XGBClassifier()
# 勾配ブースティング木を学習
clf_gbt.fit(X_train,np.ravel(y_train))
Pythonで学ぶクレジットリスクモデリング

XGBoost によるデフォルト予測

  • 予測は .predict().predict_proba() の両方で可能
    • .predict_proba()01 の確率を返す
    • .predict()loan_status1 または 0 を返す
# 返済不能の確率を予測
gbt_preds_prob = clf_gbt.predict_proba(X_test)
# loan_status を 1/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で学ぶクレジットリスクモデリング

Passons à la pratique !

Pythonで学ぶクレジットリスクモデリング

Preparing Video For Download...