1. 문제 상황 개요 & 맥락 정리
- 주어진 상황
- Train dataset 대비 test set이 현실(world) 상황과 유사해지고자, 더 많은 노이즈·증강(augmentation)이 들어가서 test set의 볼륨이 크고 난이도가 높음.
- *Class imbalance(불균형 데이터)**가 존재. → metric 특정 클래스에 대해 잘 예측 못함
- Train 셋에 대해 augmentation을 많이 적용하여 학습을 진행.
- 모델 평가를 해보니, **validation metric(accuracy, recall, precision, F1 등)**이 오히려 train metric보다 더 높음. 심지어 class별/전체적으로 매우 높은 점수(거의 1에 근접).
- 이로 인해 “무언가 이상하다”라는 느낌이 있음.
- 핵심 의문점
- 왜 validation 성능이 train 성능보다 높을까?
- 왜 이렇게 “너무 좋은” 결과가 나오는 걸까?
- 실제 **test set(현실 상황)**에서는 좋은 성능이 보장될까?
2. 추정 가능한 원인별 분석
- Validation Set에 대한 데이터 누수(Data Leakage) 가능성
- 데이터가 섞였을 가능성: 예를 들어, train 데이터셋과 validation 데이터셋이 완전히 분리되지 않고 일부가 겹치거나, 동일하거나, 매우 유사한 샘플(혹은 augmentation 결과)이 중복되어 있을 수 있음.
- 이 경우 모델이 validation 시에, 사실상 이미 봤거나 거의 유사한 데이터를 보고 있어서 성능이 비정상적으로 높아진다.
- Validation Set 자체가 매우 쉽거나, Train Set보다 단순한 분포
- 실제로 validation 데이터는 augmentation이 덜 된 상태이며, noise도 적거나, 오히려 label이 명확해서 모델이 쉽게 예측할 수도 있음.
- 혹은 validation 데이터 양이 너무 적어서 편향(bias)이 생겨 평균적으로 성능이 높게 나오고 있을 수도 있음.
- Train 데이터에 과도한/부적절한 Augmentation
- Train 데이터에 현실적이지 않은 augmentation을 과도하게 적용하여, 학습 과정에서 모델이 불필요하게 복잡한 분포를 학습했을 수 있음.
- 반대로 실제로는 “기존 train 데이터(원본)”에 비해 validation/test 데이터가 더 간단한 형태일 경우, 아이러니하게 validation 성능이 더 높게 나올 수 있음.
- Class Imbalance와 잘못된 Sampling 전략
- 클래스 불균형을 해소하기 위해 Oversampling/Undersampling/Augmentation을 했는데, 잘못된 방식으로 이뤄져서 train 분포와 validation 분포 간에 큰 차이가 생겼을 수 있음.
- 그 결과 validation에서는 특정 클래스가 거의 완벽히 맞춰져서 점수가 급격히 좋아지는 현상이 발생.
- 평가 지표 계산 과정에서 실수
- 예: threshold 설정 문제, macro vs micro vs weighted average 사용 시 착오, 또는 metrics 계산 스크립트 에러.
- 혹은 Label 인코딩/디코딩 과정에서 오류가 있는 경우.
3. 구체적인 해결 방법 & 점검 사항
3.1 데이터 누수(Data Leakage) 점검
- Train/Validation 분리 로직 재확인
- 중복 샘플이 있는지 파일명, ID 등을 기준으로 확인.
- Shuffling 과정을 잘못 했거나, 데이터셋을 쪼개는 시점에서 문제가 없었는지 확인.
- Augmentation 결과 중복 체크
- Augmentation 과정에서 validation에 들어가야 할 샘플이 train에 들어간 건 아닌지, 혹은 그 반대는 아닌지 점검.
3.2 Validation 세트 구성 재점검
- Validation 세트 분포(클래스 비율, 난이도, 샘플 수 등) 점검
- 실제 test 환경과 유사한 분포인지, 너무 작은 샘플 수가 아닌지 확인.
- 너무 작은 validation 세트라면, K-fold cross-validation 등 다양한 방법을 시도.
- Augmentation/Noise 수준
- Validation 세트가 현실보다 훨씬 “깔끔”하고 “난이도가 낮은” 샘플로만 구성되어 있는 건 아닌지 확인.
- 혹은 Train 세트가 너무 과도하게 augment되어 있어서, 정작 Validation이 ‘상대적으로 쉽게’ 느껴지는 효과가 있는지 확인.