[ML]헷갈리기 쉬운 검증데이터 vs 테스트데이터:개념부터 실무 적용 tip까지

Oni·2024년 6월 5일
0

ML

목록 보기
5/5

  • 머신러닝을 접해본 사람이라면 학습데이터, 검증데이터, 테스트데이터 이렇게 3종류로 나뉜다는 것을 들어봤을거예요. (이제부터 train, validation, test로 표현을 통일할게요.)
  • 여기서 헷갈리기 쉬운 개념은 validation data와 test data예요.

데이터셋을 어떻게 나눠야할까?

  • 만약 당신이 머신러닝에 대해 '찍먹'해보고 싶은 정도라면, 성능 자체는 그렇게 중요하지 않다면 validation을 아예 생각하지 않아도 머신러닝 프로젝트를 해봤다고 할 수 있어요. train과 test로만 나눠도 '가능'은 해요. 수험생에 비유를 해볼게요
    train data:test data=문제집:수능으로 생각해보면, 열심히 문제집 풀어보고 수능을 바로 볼 수 있는거죠.

  • 그런데 당신이 머신러닝에 진심이라면(ml로 돈을 번다거나🤑) validation data를 잘 활용해야 할거예요. validation data는 모의고사같은거예요. 문제집으로 열심히 학습하고 '나 얼마나 잘하나?' 확인하고 다시 학습방향을 결정하는데 사용되는 용도예요.

  • 그런데 어? 모의고사도 '테스트'아닌가?라는 의문이 들 수 있어요.

  • 맞아요! 일종의 테스트죠. 그런데 좀 다른게 있어요. 'test'라는 단어에 헷갈리지 말고 validation data과 test data의 의미에 집중해야 해요.

  • 예를 들어 내가 캐글이나 데이콘 대회에 나간다고 생각해봅시다. 데이콘 대회에 참여하면 train data를 제공받아요. 그리고 test data에 대한 예측값을 업로드를 해야해요.

  • train과 test로만 나눠서 진행하려면 제공받은 데이터셋으로 모두 학습한뒤 test set에 대한 예측값을 업로드하면 바로 끝이예요. 학습이 잘되었는지 확인할 방법이 없죠. 잘해서 상금을 받고 싶다면 성능 테스트를 해서 모델이 쓸만한지를 확인해야겠죠?
  • 이런 성능 테스트를 할 때 사용하는 데이터셋이 바로 validation data입니다. 내가 제공 받은 train data에서 test set으로 만드는거예요.

즉 validation data의 실질적인 의미는 '테스트'의 목적성을 가지고 있지만 사실 내가 진짜 맞춰야하는 값은 아닌거예요 수능을 위한 모의고사일 뿐이랍니다😎


실무에 적용해서 이해하기&Action

  • 수요예측 실무를 예로 들어 train-validation-test을 이해해봅시다.
  • test data는 '실제 값을 모르는, 내가 수요예측을 해야하는 기간의 예측기간의 데이터'를 의미해요.
  • 수요예측 실무의 경우 캐글대회랑은 어떤 차이가 있을까요?
  • 가장 큰 차이점은 '데이터가 흐른다'는 점입니다. 캐글 대회의 경우 예측기간이 고정되어있지만, 실무의 경우 데이터가 계속 쌓여갑니다. 그게 무슨 의미냐면, 시점의 차이가 생긴다는 뜻입니다.
ex. 예를 들어 오늘이 2024/1/2이라고 해봅시다. 
학습데이터 기간은 ~2024/1/2이고 예측해야할 기간이 2024/1/3 ~ 2024/1/7입니다.  
그런데 하루가 지나서 2024/1/3이 되면? 학습데이터 기간은 ~2024/1/3가 되는거예요. 
  • 데이터 값은 동일한데, 오늘은 test data이고 내일은 train data로 분류될 수 있다는 의미죠.

💡Action Point

  • 예측값을 테이블에 저장할 때 '예측날짜'와 '생성날짜'를 구분하여 저장하는 것이 중요해요😋
  • '2024/1/1'의 판매량은 시간에 따라 test data가 되었다가, validation data가 되었다가, train data가 될 수 있기 때문에 모델링한 날짜 컬럼, 데이터셋 종류 구분 컬럼 (train, validation, test 구분 기호) 등으로 잘 관리하는 것이 중요해요.
  • test data만 담는 테이블과 그동안의 예측값을 담는 로그테이블을 분리하는 것이 좋아요

profile
데이터 분석/엔지니어링/ML에 관한 기록

0개의 댓글