오늘은 모델학습에 필요한 데이터셋에 대해 확실히 이해해보자.
머신러닝 딥러닝 모델학습을 할 때, 먼저 학습시킬 데이터를 수집한다.
그렇게 모인 데이터셋을 보통 3가지로 split한다.
- train data : 모델을 학습시키기 위한 data
- validation data : 모델학습을 시키고 검증하기 위한 data
- test data : 검증된 모델을 최종 점검하는 data
보통 전체 데이터셋이 10이라면 train : val : test = 6 : 2 : 2로 나누며
경진대회같은경우 Train data와 test data가 따로 주어질때가 있는데,
그럴경우엔 train을 나누어 train : val = 8 : 2 or 7 : 3 비율로 validation data를 따로 만들어준다.
차이점은 무엇일까?
우리 사람을 예로 들어보자.
학창시절, 특히 중고등학생때 중간고사 기말고사를 준비한 경험들이 있을 것이다.
그 때, 우리는 교과서로 이론을 배우고 그 교과서에 있는 연습문제를 풀어봤을 것이다.
그리고나서 시험과 비슷하게 출제되는 기출문제를 풀어봤을 것이다.
여기서 학습시킬 학습모델은 우리(사람)이고
train데이터가 바로 우리의 교과서 이론이고 그 안의 연습문제와 같다고 보면 된다.
test데이터는 잘 학습되었는지 확인하는 기출문제라고 보면 된다.
우리가 교과서안에 기출문제가 있으면 검증할 수 없듯이, 모델이 학습할 때는 test데이터를 절대 사용하면 안된다.
그렇다면 validation데이터는 왜 있는 것일까?
: test데이터로 검증하기 전, train data set으로 학습이 완료된 모델을 미리 검증하기 위한 데이터 셋이다.
부가 설명을 하자면, 우리는 전체 데이터셋에서 test와 Train을 나누었고,
고정된 Test data만을 가지고 모델의 성능을 확인하고, 파인튜닝을하고 또 확인하고 수정하고를 반복하다보면
결국 이 test data만을 위한 튜닝을 하게되어, 이 test data에만 좋은 성능을 보이는 모델이 될 수 있다.
그럼 추후 전혀 다른 데이터 셋을 넣었을 때 예측률이 매우 떨어질 것이다.
비유하자면,
교과서로 방정식이라는 개념을 학습하였고
a 기출문제집만 죽어라파서 그 문제집의 기출유형들만 외워져서 a만을 위한 뇌회로를 만들어졌는데,
b기출문제집을 보았을 때 멘붕이 오는것과 같다.
즉, test data에 과적합(Over fitting)되어 다른 처음보는 data가 들어왔을 때 예측력이 떨어지는 것이다.
그래서 우리는 기출문제(test)로 내 학습능력을 검증하기 전에 모의고사(validation)를 풀어보는 것이다.
test에 과적합을 막기 위해 validation으로 계속 검증하고 파인튜닝하여 수정하고 검증하고 수정하고를 반복하여
validation에 맞게 모델 성능을 향상시켜주어야 한다.
그럼 처음보는 test data가 들어왔을 때, 과적합되지않고 객관적인 예측률을 측정할 수 있다.
정리
Train
- 오직 학습을 위한 데이터 셋.
- 학습 시엔 최적의 피쳐와 최적의 파라미터를 찾는 것을 목표로 한다.
Validation
- train으로 학습이 완료된 모델로 검증하기 위한 데이터 셋.
- test data로 검증하기 전에 이 val data로 검증하여 test의 과적합을 막기 위함
- 학습과정에 어느정도 관여는 하나(파인튜닝을 train과 val에 맞춰서 하기 때문), val데이터 자체가 직접적으로 학습에 관여하진 않음.
- 단, Train데이터의 일부를 떼어서 사용하는 것이기 때문에 그만큼 학습시킬 데이터가 줄어든다.
Test
- 최종적인 모델검증을 위해 사용하는 데이터 셋.
- 파인튜닝이나 학습과정에 쓰이면 안된다.
- 기말고사 하루 전에 풀어보는 파이널 기출문제라고 보면된다.
꼭 이렇게 6 : 2 : 2로 데이터를 쪼개서 학습시키는 것은 아니다.
다양한 방식 중 유명한 K-fold라는 방식도 많이 사용된다.
이는 추후 스크립트에서 다뤄보도록 하겠다.
'AI > ML DL' 카테고리의 다른 글
[머신러닝/딥러닝] 회귀예측 3 - 스태킹 앙상블(Stacking Ensemble) 설명 및 실전코드 (0) | 2023.09.11 |
---|---|
[머신러닝/딥러닝] Stacking Ensemble 스태킹 앙상블 (0) | 2023.09.08 |
[머신러닝] 회귀예측 2 - 평가지표 MSLE , RMSLE (0) | 2023.09.07 |
[머신러닝] 회귀예측 1 - 프로젝트 소개 및 LightGBMRegressor 모델활용 (0) | 2023.09.05 |
MI Scores ( scikit-learn ) (0) | 2023.09.03 |