Cross validation สำหรับโมเดลสินเชื่อ

การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

Michael Crabtree

Data Scientist, Ford Motor Company

พื้นฐาน Cross validation

  • ใช้ฝึกและทดสอบโมเดลในลักษณะที่จำลองการใช้งานกับข้อมูลใหม่
  • แบ่งข้อมูลฝึกออกเป็นส่วนต่างๆ เพื่อประเมินประสิทธิภาพในอนาคต
  • ใช้ DMatrix ซึ่งเป็นโครงสร้างภายในที่ได้รับการปรับแต่งสำหรับ XGBoost
  • Early stopping สั่งให้ cross validation หยุดเมื่อค่า scoring metric ไม่ปรับปรุงขึ้นหลังจากหลาย iteration
การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

Cross validation ทำงานอย่างไร

  • ประมวลผลข้อมูลฝึกเป็นส่วนย่อย (เรียกว่า fold) และทดสอบกับส่วนที่เหลือ
  • ทดสอบขั้นสุดท้ายกับชุดทดสอบจริง

แผนภาพ k-folds cross validation

1 https://scikit-learn.org/stable/modules/cross_validation.html
การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

ตั้งค่า Cross validation ใน 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' บอกให้ XGBoost ประเมินประสิทธิภาพโมเดลด้วย AUC
การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

ใช้ Cross validation ใน 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

ผลลัพธ์ของ Cross validation

  • สร้าง data frame จากค่าที่ได้จาก cross validation

ตัวอย่างคะแนน cross validation

การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

การให้คะแนนด้วย Cross validation

  • ใช้ cross validation และ scoring metric ด้วยฟังก์ชัน cross_val_score() ใน 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])
การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

มาฝึกกันเถอะ!

การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python

Preparing Video For Download...