신용 모델을 위한 교차 검증

Python을 활용한 신용 위험 모델링

Michael Crabtree

Data Scientist, Ford Motor Company

교차 검증의 기초

  • 새로운 데이터에 모델을 사용하는 상황을 시뮬레이션하여 모델을 훈련하고 테스트하는 데 사용됩니다
  • 훈련 데이터를 여러 조각으로 나누어 향후 성능을 추정합니다
  • XGBoost에 최적화된 내부 구조인 DMatrix를 사용합니다
  • 조기 종료(Early stopping)는 평가 지표가 여러 번의 반복에서도 개선되지 않을 경우 교차 검증을 중단하도록 지정합니다
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'는 XGBoost가 모델의 성능을 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...