본문 바로가기
AI 및 데이터 분석

머신러닝(ML) 모델 평가를 위한 데이터 분할과 평가 방법

by riML 2023. 12. 3.

1. 훈련, 검증, 테스트 세트의 중요성과 방법

모델을 평가하고 일반화하기 위해서는 항상 가용한 데이터를 훈련, 검증, 테스트 세트로 나누는 것이 중요합니다. 훈련 세트에서 모델을 훈련하고, 검증 세트에서 모델을 평가한 뒤, 최종적으로 테스트 세트에서 모델을 테스트합니다. 이렇게 나누는 이유는 모델의 설정을 튜닝하고 과대적합을 방지하기 위함입니다.

만약 훈련 세트와 테스트 세트만 사용한다면 어떨까요? 훈련 세트에서 훈련하고 테스트 세트에서 평가하는 것으로 충분할 것 같습니다. 그러나 이렇게 하지 않는 이유는 모델을 조정하기 위해 항상 모델을 튜닝해야하기 때문입니다. 이러한 튜닝들은 네트워크의 가중치와 구분되어 하이퍼파라미터라고 불립니다. 이러한 하이퍼파라미터들을 효과적으로 선택하기 위해서는 검증 세트에서 모델의 성능을 평가하여 튜닝을 수행해야 합니다.

그리고 이러한 튜닝을 수행할 때마다 검증 데이터에 관한 정보가 모델로 새게 됩니다. 이는 정보 누설의 개념으로 이어지며 검증 데이터로 모델을 평가한 결과를 기반으로 모델의 설정을 다시 튜닝하면 검증 데이터에 과대적합될 수 있습니다.

이러한 현상을 방지하기 위해서는 최종적으로는 테스트 세트를 사용해야 합니다. 테스트 세트는 모델을 출시할 때 한 번만 사용되며, 가능한 제품 환경과 유사한 데이터로 구성되어야 합니다. 모델의 설정을 튜닝하는 모든 단계 이후에는 테스트 세트를 사용하여 모델을 최종적으로 평가하게 됩니다.

데이터를 훈련, 검증, 테스트 세트로 나누는 것은 중요하지만, 데이터가 적을 때는 다양한 평가 방법이 필요합니다. 대표적인 방법으로는 단순 홀드아웃 검증, K-겹 교차 검증, 그리고 셔플링을 활용한 반복 K-겹 교차 검증 등이 있습니다.

2. 단순 홀드아웃 검증

단순 홀드아웃 검증은 가용한 데이터를 훈련 세트, 검증 세트, 테스트 세트로 나누어 모델을 평가하는 기본적인 방법입니다. 먼저, 일정량의 데이터를 테스트 세트로 분리하고 나머지를 훈련 세트로 활용합니다. 그 후, 훈련 세트에서 모델을 학습하고 검증 세트를 사용하여 모델의 성능을 평가합니다. 이 평가를 기반으로 모델의 하이퍼파라미터를 조정하거나 다른 실험을 수행할 수 있습니다. 마지막으로 테스트 세트를 사용하여 모델의 최종 성능을 평가합니다.

그러나 이 방법은 데이터가 적은 경우 훈련 세트와 검증 세트의 샘플이 부족해 전체 데이터를 통계적으로 대표하지 못할 수 있습니다.  이러한 문제에 대한 대안으로 K-겹 교차 검증과 반복 K-겹 교차 검증을 활용합니다. 

3. K-겹 교차 검증

K-겹 교차 검증은 동일한 크기를 가진 K개의 데이터 폴드로 나누어 각 폴드를 한 번씩 검증 세트로 활용하는 평가 방법입니다. 각 시행에서 나머지 K-1개의 폴드로 모델을 훈련하고, 이를 K번 반복하여 K개의 평가 점수를 얻습니다. 이렇게 얻은 점수를 평균하여 최종 모델 성능을 평가합니다.

K-겹 교차 검증은 데이터 분할에 따라 모델의 성능 편차가 큰 경우 유용합니다. 또한, 홀드아웃 검증과 유사하게 모델 튜닝에 별도의 검증 세트를 사용하여 모델의 일반화 성능을 더 신뢰할 수 있게 평가할 수 있습니다. 데이터를 효과적으로 활용하여 모델의 일반화 성능을 높이는 데 기여합니다.

4. 셔플링을 활용한 반복 K-겹 교차 검증

이 방법은 주로 가용 데이터가 적고 정확한 모델 평가가 필요한 경우에 활용됩니다. 이 방법은 기존 K-겹 교차 검증을 여러 번 반복하는데, 각 시행 전에 데이터를 무작위로 섞습니다. 최종 점수는 각 K-겹 교차 검증에서 얻은 점수의 평균입니다. 이를 통해 모델이 각 폴드에서 학습할 때 발생하는 특정 패턴에 의한 영향을 줄이고 일반화 성능을 높일 수 있습니다. 다만, 이 방법은 여러 번의 모델 훈련과 평가를 수행하므로 계산 비용이 증가합니다.

5. 모델 평가 시 고려해야 할 사항

데이터 섞기 : 모델을 훈련 및 평가하기 전에 데이터를 무작위로 섞는 것이 중요합니다. 예를 들어, 숫자 이미지를 분류하는 문제에서 샘플이 클래스 순서대로 정렬되어 있다면, 처음 80%를 훈련 세트로 나머지를 테스트 세트로 나누면 훈련 세트에는 0~7의 클래스만, 테스트 세트에는 8~9의 클래스만 남을 수 있습니다. 이를 방지하기 위해 데이터를 무작위로 섞어야 합니다.

미래 정보 누설 : 미래를 예측하려는 경우 훈련 데이터와 테스트 데이터를 무작위로 섞어서는 안 됩니다. 무작위 섞기는 미래의 정보가 테스트 데이터로 누설될 수 있기 때문입니다. 미래 정보가 훈련 데이터에 없어야 합니다.

중복 데이터 확인 : 데이터 세트에서 동일한 데이터가 두 번 이상 나타나면 훈련 데이터와 검증 데이터 사이에 중복이 발생할 수 있습니다. 이로 인해 모델이 훈련 데이터로 검증되는 최악의 경우가 될 수 있으므로 중복 여부를 꼭 확인해야 합니다.