본문 바로가기

딥러닝 & 머신러닝/머신러닝 지식

교차 검증 (Cross Validation) & 훈련/검증/테스트 데이터

# Cross Validation은 무엇이고 어떻게 해야 하나요?

 

모델에 들어가는 데이터를 크게 훈련 데이터, 검증 데이터, 테스트 데이터로 나눌 수 있습니다. 이때 교차 검증이란 훈련 데이터로 모델이 잘 훈련되었는지를 검증 데이터를 사용해 검증하는 방법 중 하나입니다.

 

 

훈련 집합: 모델을 학습시킬 때 사용하는 데이터 집합

검증 집합: 수많은 종류의 학습된 모델이 있을 때, 그 중 최적의 모델(즉 최적 하이퍼 파라미터)을 선택하기 위해 사용하는 데이터 집합

테스트 집합: 검증을 거친 최종 모델의 일반화 성능을 검증할 때 사용하는 데이터 집합

 

보통 훈련 데이터로 모델을 훈련한 후, 검정 데이터를 사용해 모델이 어떻게 검증되나를 지켜보며 그에 따라 모델의 하이퍼 파라미터를 조정하고 모델의 성능을 올립니다. 이때 사용하는 검정 데이터가 한 세트밖에 없다면 검정 데이터로 직접 모델을 훈련하지 않더라도 검정 데이터에 모델이 과적합 될 수 있습니다. 이를 막는 방법이 Cross Validation(교차 검증)입니다.

 

그리고 대표적으로 K-fold 교차 검증이 있습니다. 전체 훈련 데이터를 K개의 그룹으로 묶고, 그중 한 그룹을 검증셋으로 사용합니다. 이때 각각의 모든 데이터 그룹이 적어도 한 번씩은 검증셋으로 사용되어야 합니다. K-fold 교차 검증을 사용함으로써 검정 데이터에 모델이 과적합 되는 것을 막을 수 있습니다. 장점과 단점은 다음과 같습니다.

 

장점: K개의 그룹의 서로 다른 데이터셋을 이용해 모델을 학습시키므로 과적합을 방지할 수 있다.

        학습시 검증용 데이터를 사용해 하이퍼 파라미터를 조정할 수 있다.

 

단점: K번의 반복되는 계산이 필요하기 때문에 시간 복잡도가 증가한다.

 

 K-fold 교차 검증을 한 마디로 요약하자면, “모델의 평가에 사용되는 검정 데이터에 모델이 과적합 되지 않도록 하는 방법”이라고 할 수 있겠습니다.