クレジットモデルの交差検証

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

Michael Crabtree

Data Scientist, Ford Motor Company

交差検証の基本

  • 新規データでの利用を想定して学習と評価を実施
  • 学習データを分割し将来性能を推定
  • XGBoost に最適化された内部構造 DMatrix を使用
  • 早期終了は、一定回数改善がないと検証を停止
Pythonで学ぶクレジットリスクモデリング

交差検証の流れ

  • 学習データの一部を折り(fold)として学習し、未使用部分で検証
  • 最後に実テストセットで評価

k-分割交差検証の図

1 https://scikit-learn.org/stable/modules/cross_validation.html
Pythonで学ぶクレジットリスクモデリング

XGBoost 内での交差検証の設定

# Set the number of folds
n_folds = 2
# Set early stopping number
early_stop = 5
# Set any specific parameters for cross validation
params = {'objective': 'binary:logistic',
          'seed': 99, 'eval_metric':'auc'}
  • 'binary':'logistic'loan_status の分類を指定
  • 'eval_metric':'auc' は AUC で性能を評価
Pythonで学ぶクレジットリスクモデリング

XGBoost 内での交差検証の実行

# Restructure the train data for xgboost
DTrain = xgb.DMatrix(X_train, label = y_train)
# Perform cross validation
xgb.cv(params, DTrain, num_boost_round = 5, nfold=n_folds,
       early_stopping_rounds=early_stop)
  • DMatrix() は学習に最適化された xgboost 用の特別なオブジェクトを作成
Pythonで学ぶクレジットリスクモデリング

交差検証の結果

  • 交差検証の結果をデータフレーム化

交差検証スコアの例

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

交差検証のスコアリング

  • scikit-learn の cross_val_score() で交差検証と評価指標を使用
# Import the module
from sklearn.model_selection import cross_val_score
# Create a gbt model
xg = xgb.XGBClassifier(learning_rate = 0.4, max_depth = 10)
# Use cross valudation and accuracy scores 5 consecutive times
cross_val_score(gbt, X_train, y_train, cv = 5)
array([0.92748092, 0.92575308, 0.93975392, 0.93378608, 0.93336163])
Pythonで学ぶクレジットリスクモデリング

演習に移りましょう!

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

Preparing Video For Download...