작성
·
508
0
안녕하세요. 강의 내용 중 교차검증에서 질문이 있어 글을 남깁니다.
이전에 Stratified K 폴드는 불균형한 분포도를 가진 레이블 데이터 집합을 위한 K폴드 방식이라고 설명해주시면서
책에도 '왜곡된 레이블 데이터 세트에서는 반드시 Stratified K폴드를 이용해 교차 검증해야 합니다. 사실, 일반적으로 분류에서의 교차 검증은 K폴드가 아니라 Stratified K폴드로 분할돼야 합니다.' 라고 돼있는데
1. 여기서도 '만족 고객보다 불만족 고객이 훨씬 많은 불균형 데이터임에도 XGBClassifier와 LightGBM을 search_space값으로 교차검증할 때, StratifiedKFold가 아닌 KFold로 교차검증을 하는 특별한 이유가 있을까요..?
또, 실제로 제가 기존 소스코드에서 KFold가 아닌 Stratified로 돌렸을 때
2. XGB같은 경우 Stratified K폴드는 0.8456, KFold는 0.8457의 roc_auc값을 갖고, LightGBM 같은 경우 Stratified K폴드는 0.8411, KFold는 0.8446으로 두 모델 모두 KFold로 교차검증을 진행했을 때 더 높은 roc_auc값을 갖는 이유가 무엇인지 알 수 있을까요..?
제가 Stratified KFold와 KFold에 대해 잘못 이해하고 있는 것인지, 이런 경우에는 적용할 필요가 없는 것인지 알고 싶습니다 ㅠㅠ
답변 1
1
안녕하십니까,
1. 네, 말씀하신대로 StratifiedKfold가 맞습니다.
근데 강의에서도 보여드렸듯이 KFold로 나누어도 다행히(?) 학습과 검증 데이터 세트의 타겟값 분포가 거의 동일하여 그냥 Kfold를 사용하였습니다(사실은 초판 책에 K Fold를 적용해서 쭈욱 그렇게 적용했습니다)
Stratified K Fold냐 K Fold냐를 너무 민감하게(?) 적용 기준을 정하실 필요는 없을 것 같습니다. 하지만 정석대로 라면 Stratified Kfold가 맞습니다.
2. 앞에서도 말씀드린대로 Stratified K Fold나 K fold나 데이터 차이가 별로 없고, 모델 성능 결과 역시 roc - auc 로 차이가 거의 없습니다. 너무 의미를 부여하지 않으셨으면 합니다.
감사합니다.
답변 감사합니다!! :)