Xác thực chéo cho mô hình tín dụng

Mô hình hóa Rủi ro Tín dụng bằng Python

Michael Crabtree

Data Scientist, Ford Motor Company

Cơ bản về xác thực chéo

  • Dùng để huấn luyện và kiểm tra mô hình theo cách mô phỏng dữ liệu mới
  • Chia dữ liệu huấn luyện thành nhiều phần để ước tính hiệu năng tương lai
  • Dùng DMatrix, cấu trúc nội bộ tối ưu cho XGBoost
  • Early stopping dừng khi điểm số không cải thiện sau một số vòng lặp
Mô hình hóa Rủi ro Tín dụng bằng Python

Cách hoạt động của xác thực chéo

  • Xử lý các phần của dữ liệu huấn luyện (gọi là fold) và kiểm tra trên phần chưa dùng
  • Cuối cùng kiểm tra trên tập test thực tế

Sơ đồ k-fold cross validation

1 https://scikit-learn.org/stable/modules/cross_validation.html
Mô hình hóa Rủi ro Tín dụng bằng Python

Thiết lập xác thực chéo trong 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' dùng để chỉ bài toán phân loại cho loan_status
  • 'eval_metric':'auc' yêu cầu XGBoost chấm điểm hiệu năng theo AUC
Mô hình hóa Rủi ro Tín dụng bằng Python

Dùng xác thực chéo trong 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() tạo đối tượng đặc biệt cho xgboost, tối ưu cho huấn luyện
Mô hình hóa Rủi ro Tín dụng bằng Python

Kết quả xác thực chéo

  • Tạo một data frame chứa các giá trị từ xác thực chéo

Ví dụ điểm xác thực chéo

Mô hình hóa Rủi ro Tín dụng bằng Python

Chấm điểm xác thực chéo

  • Dùng xác thực chéo và thước đo điểm với hàm cross_val_score() trong 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])
Mô hình hóa Rủi ro Tín dụng bằng Python

Ayo berlatih!

Mô hình hóa Rủi ro Tín dụng bằng Python

Preparing Video For Download...