머신러닝/딥러닝 모델을 개발할 때 스스로 던질 질문 5가지

WHIT·2025년 4월 24일
0

Data Scientist

목록 보기
18/18

1. Validation data가 있는데 왜 Test data가 필요할까?

Validation set은 직접 학습에는 사용되지 않지만, 하이퍼파라미터 튜닝이나 조기 종료 등의 기준으로 사용되기 때문에 모델 구조나 파라미터 선택에 간접적으로 영향을 미친다.
이 과정에서 과적합이 발생할 수 있으므로, 모델 선택 이후 진짜 일반화 성능을 평가하려면 아예 관여하지 않은 Test set이 반드시 필요하다.

2. 관습적인 Train/Test 분할 비율은 언제나 효율적일까?

일반적으로 딥러닝 모델을 개발할 때는 상당한 양의 데이터를 확보한 경우가 많고, 최근에는 기업에서도 데이터 수집 역량이 커지고 있다.
이처럼 데이터가 수백만 건 이상으로 많은 경우, 전통적인 7:3 또는 8:2 비율로 나누면 학습에 사용되지 못하는 데이터가 지나치게 많아져 효율이 떨어질 수 있다.

따라서, 절대적인 데이터 수가 많다면 절대량으로 Test data를 확보한다. (2-5%만 확보해도 충분한 경우도 있다.) 너무 관습적인 분할 비율에 얽매이기 보다는 상황에 맞추어 조정하면 좋다.

3. Test set이 그렇게 아깝다면, 이를 Validation set처럼 활용하면 안되는 걸까?

안된다. 최종 성능, 즉 Test set의 성능이 높게 나와보이기를 원해서 Test set의 성능을 높이는 방향으로 모델을 튜닝하는 경우가 있는데 이래선 안된다.

이는 결국 Test set을 사실상 Validation처럼 사용하게 되는 셈이고, 일반화 성능에 대한 편향된 추정(biased estimation)을 야기할 수 있다. 이 경우 새로운 데이터에 적용했을 때 예측력이 급격히 떨어지는 문제로 이어질 수 있다.

만약 이상하게 성능이 안나왔다면 일단 팩트대로 성능을 이야기하고, 내가 가진 Test data에 특이점이 있는지 확인을 하고 하나하나 관측치에 대한 에러를 봐야한다. 그렇게 전반적으로 모델이 망가졌는지, 몇 개의 포인트 때문에 수치가 좋지 못했는지 파악할 필요가 있다. 후자라면, 논리적으로 해당 성능을 설명할 수 있다.

4. 학습한 최종 모형을 배포하려고 한다. 시계열 모델에서 최근의 Dynamics를 고려할 수 있는 방법이 있을까?

과거 데이터를 기반으로 실험을 통해 최적의 모델링 방식과 하이퍼파라미터를 도출해두고, 실제 배포 직전에는 전체 데이터를 사용해 모델을 재학습시켜 최근의 데이터 변화(Dynamics)를 반영하는 전략이 존재한다.

모델의 성능을 검증하는 과정에서는 Test data를 학습에 포함하는 것이 금기이지만, 모델 구조와 파라미터가 확정된 후 실제 서비스 환경에 배포하기 전에는 성능 향상을 위해 Test data를 포함한 전 데이터로 재학습하는 경우가 많다.

다만, 이 방식은 머신러닝 기반 모델에 한해서 적용 가능하다.
통계 기반 시계열 모델은 전체 데이터에 기반해 계수를 추정하기 때문에, 재학습 시 모델의 파라미터나 구조적인 추정 결과가 변경될 수 있다. 이로 인해 기존 성능 검증 결과와 달라질 수 있으므로, Test data를 포함한 재학습은 일반적으로 권장되지 않는다.

5. 왜 Train data에서는 클래스 불균형을 맞추는데, Test data는 그대로 둘까?

클래스 불균형을 맞추는 목표는 모델이 소수 클래스도 잘 인식하게 만드는 것이다. 현실 데이터가 1:9처럼 소수 클래스가 매우 적으면, 모델은 다수 클래스에 너무 의존해서 소수 클래스는 무시하게 된다.

  • 1,000개 중 900개가 클래스 0, 100개가 클래스 1이면
  • 아무거나 다 클래스 0으로 예측해도 90% 정확도 → 허무한 모델

따라서, 훈련할 때는 의도적으로 4:6 같은 비율로 맞춰서 소수 클래스의 패턴을 더 잘 학습하고, 소수 클래스에 대한 민감도(Recall)를 높이려고 한다.

반면, Test set은 현실 세계의 분포를 그대로 반영해야, 실제 성능을 객관적으로 평가할 수 있다. Train set은 조정해도 되지만, Test set까지 바꾸면 실제 배포 후 성능을 가늠할 수 없게 된다.

또한, 모델이 소수 클래스를 얼마나 잘 탐지하는지 평가할 때는 현실에서 발생할 확률과 동일한 조건 하에서 성능 지표(예: F1-score, AUC 등)를 보는 것이 더 정확하다.

0개의 댓글