만약 당신이 머신러닝에 대해 '찍먹'해보고 싶은 정도라면, 성능 자체는 그렇게 중요하지 않다면 validation을 아예 생각하지 않아도 머신러닝 프로젝트를 해봤다고 할 수 있어요. train과 test로만 나눠도 '가능'은 해요. 수험생에 비유를 해볼게요
train data:test data=문제집:수능으로 생각해보면, 열심히 문제집 풀어보고 수능을 바로 볼 수 있는거죠.
그런데 당신이 머신러닝에 진심이라면(ml로 돈을 번다거나🤑) validation data를 잘 활용해야 할거예요. validation data는 모의고사같은거예요. 문제집으로 열심히 학습하고 '나 얼마나 잘하나?' 확인하고 다시 학습방향을 결정하는데 사용되는 용도예요.
그런데 어? 모의고사도 '테스트'아닌가?라는 의문이 들 수 있어요.
맞아요! 일종의 테스트죠. 그런데 좀 다른게 있어요. 'test'라는 단어에 헷갈리지 말고 validation data과 test data의 의미에 집중해야 해요.
예를 들어 내가 캐글이나 데이콘 대회에 나간다고 생각해봅시다. 데이콘 대회에 참여하면 train data를 제공받아요. 그리고 test data에 대한 예측값을 업로드를 해야해요.
즉 validation data의 실질적인 의미는 '테스트'의 목적성을 가지고 있지만 사실 내가 진짜 맞춰야하는 값은 아닌거예요 수능을 위한 모의고사일 뿐이랍니다😎
ex. 예를 들어 오늘이 2024/1/2이라고 해봅시다.
학습데이터 기간은 ~2024/1/2이고 예측해야할 기간이 2024/1/3 ~ 2024/1/7입니다.
그런데 하루가 지나서 2024/1/3이 되면? 학습데이터 기간은 ~2024/1/3가 되는거예요.
💡Action Point
- 예측값을 테이블에 저장할 때 '예측날짜'와 '생성날짜'를 구분하여 저장하는 것이 중요해요😋
- '2024/1/1'의 판매량은 시간에 따라 test data가 되었다가, validation data가 되었다가, train data가 될 수 있기 때문에 모델링한 날짜 컬럼, 데이터셋 종류 구분 컬럼 (train, validation, test 구분 기호) 등으로 잘 관리하는 것이 중요해요.
- test data만 담는 테이블과 그동안의 예측값을 담는 로그테이블을 분리하는 것이 좋아요