Cross Validation은 교차 검증이라고 합니다.
- 보통 활용할 데이터가 있으면 Train set으로 모델을 훈련하고 Test set으로 모델을 검증합니다.
- Test set으로만 모델 검증을 진행하면 약점이 존재합니다.
- 고정된 Test Set을 가지고 모델의 성능을 측정하게 된다면 과적합(Overfitting)되어 다른 실제 데이터를 가지고 수행하게 되면 엉망인 결과가 나오게 된다.
- 이를 해결하기 위해 하는 것이 Cross Validation(교차 검증)이다.
'Test set에 과적합 되는 문제'는 test set이 데이터 중 일부분으로 고정되어 있고, 이 일부분의 데이터 셋에 대하여 성능이 잘 나오도록 파라미터를 반복적으로 튜닝하기 때문에 발생합니다.
Cross Validation(교차 검증)은 데이터의 모든 부분을 사용하여 모델을 검증하고, test set을 하나로 고정하지 않는다. 아래 그림을 살펴보자
K-fold CV = 전체 데이터 셋을 k개로 나누고 k번의 평가를 실행한다 -> test set 중복 없이 바꾸어가면서 진행Accuracy의 평균 = (Accuracy1+Accuracy2+...Accuracyk)/k
Accuracy의 평균을 내어 최종적으로 모델의 성능을 평가
보통 5-fold나 10-fold를 많이 사용한다고 함
장점
- 모든 데이터 셋을 평가에 활용 가능 -> 과적합(Overfitting) 방지 / 데이터 편중 방지(k-fold 경우)
- 모든 데이터 셋을 훈련에 활용 가능 -> 정확도 향상 / 데이터 부족에서 오는 과소적합(Underfitting) 방지
- 적은 데이터에 대한 Validation 신뢰성 상승
- 더욱 일반화된 모델 생성이 가능
단점
- 모델 훈련 및 평가 소요시간 증가
- Iteration(반복) 횟수가 많기 때문
- K-Fold Cross Validation(k-겹 교차 검증)
- Stratified k-fold cross validation(계층별 k-겹 교차검증)
- Hold-Out Cross Validation(홀드 아웃 교차 검증)
- Leave-p-Out Cross Validation
- Leave-One-Out Cross Validation
등
다음 글에서는 Cross Validation의 기법들의 대해 소개하겠습니다.
감사합니다.