Validasi silang untuk model kredit

Pemodelan Risiko Kredit dengan Python

Michael Crabtree

Data Scientist, Ford Motor Company

Dasar validasi silang

  • Melatih dan menguji model dengan cara yang meniru penggunaan pada data baru
  • Membagi data latih menjadi beberapa bagian untuk memperkirakan kinerja ke depan
  • Menggunakan DMatrix, struktur internal yang dioptimalkan untuk XGBoost
  • Early stopping menghentikan validasi silang saat metrik tidak membaik setelah beberapa iterasi
Pemodelan Risiko Kredit dengan Python

Cara kerja validasi silang

  • Memproses bagian data latih (disebut fold) dan menguji terhadap bagian yang tidak dipakai
  • Uji akhir pada test set sesungguhnya

Diagram validasi silang k-fold

1 https://scikit-learn.org/stable/modules/cross_validation.html
Pemodelan Risiko Kredit dengan Python

Menyiapkan validasi silang di 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' digunakan untuk klasifikasi loan_status
  • 'eval_metric':'auc' memberi tahu XGBoost menilai kinerja model dengan AUC
Pemodelan Risiko Kredit dengan Python

Menggunakan validasi silang di 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() membuat objek khusus untuk xgboost yang dioptimalkan untuk pelatihan
Pemodelan Risiko Kredit dengan Python

Hasil validasi silang

  • Membuat data frame berisi nilai dari validasi silang

Contoh skor validasi silang

Pemodelan Risiko Kredit dengan Python

Skoring validasi silang

  • Menggunakan validasi silang dan metrik penilaian dengan fungsi cross_val_score() di scikit-learn
# 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])
Pemodelan Risiko Kredit dengan Python

Ayo berlatih!

Pemodelan Risiko Kredit dengan Python

Preparing Video For Download...