머신러닝에서는 일반적으로 전체 데이터를 training set와 test set으로 나누는 과정을 거칩니다.
전체 데이터를 학습하지 않고 데이터를 나눠 학습하는 이유는 무엇일까요?
이유는 간단합니다. 모델이 overfitting(과적합)되는 것을 막고 머신러닝 알고리즘의 성능을 평가하기 위해서입니다.
train set와 달리 test set은 모델 학습에 사용하지 않습니다. 대신 새로운 데이터에 대한 결과를 예측하기 위한 용도로 사용합니다.
overfitting은 쉽게 말해 모델이 train data를 과도하게 학습한 것을 의미합니다.
위 그림을 보면 epoch이 증가하면서 training data의 손실 함수(loss function)는 계속해서 떨어지지만 validation data의 손실 함수는 어느 기점을 기준으로 증가하게 됩니다. 이렇게 모델이 train set를 과도하게 학습하게 되면 새로운 데이터를 넣었을 때 제대로 된 결과를 예측하지 못합니다. 모델이 train data를 모두 암기해버려서 새로운 데이터 들어왔을 때 예측에 대한 정확도가 떨어지게 되는 것입니다.
* Train dataset: 모델의 학습에 사용
* Test dataset: 모델의 성능 평가에 사용
이제 데이터를 train data와 test data로 나누는 이유는 알겠습니다. 그렇다면 validation dataset은 무엇일까요?
validation set도 test set과 동일하게 모델의 성능 평가를 위해 사용합니다. 이 둘의 가장 큰 차이점은 모델 성능에 대한 관여 여부에 있습니다.
validation set은 train set에서 데이터를 추가적으로 분리한 것인데요, 학습을 완료한 모델의 성능을 중간 점검하기 위해 사용한다고 생각하면 됩니다. test set으로 모델을 돌리기 전에 먼저 validation set으로 정확도를 특정합니다. 만약 validation set에 대한 성능이 좋지 않게 나온다면 모델을 튜닝하며 모델의 성능을 높일 수 있습니다. 이러한 과정을 거치면 train set에 대한 over fitting을 막고 test set에 대한 성능을 가늠해 볼 수 있습니다.
즉, validation set은 training 과정에 관여를 하며, training이 된 여러 가지 모델 중 성능이 가장 좋은 것은 선택할 수 있도록 해줍니다. 반면 test set은 모델의 학습에 일절 관여하지 않습니다. 오로지 모델의 성능을 평가하기 위한 용도로만 사용됩니다.
하지만 전체 data set의 크기가 작다면 validation set을 분리하는 것보다 cross-validation을 하는 것이 대안이 될 수 있습니다. cross-validation은 train set을 k-fold 방식으로 분리해서 모든 데이터를 training과 validation 과정에 사용할 수 있도록 하는 방법입니다.
지금까지 데이터를 Train set, Validation set, Test set으로 나누는 이유와 각 data set의 역할에 대해 알아보았습니다.
reference
https://machinelearningmastery.com/train-test-split-for-evaluating-machine-learning-algorithms
'AI' 카테고리의 다른 글
Generalization, Normalization, Standardization (0) | 2022.08.12 |
---|---|
binary & multinomial (0) | 2022.08.08 |
분류(classification), 군집화(clustering), 회귀(regression) (0) | 2022.07.17 |
Machine Learning 알고리즘의 분류(지도학습, 비지도학습, 강화학습) (0) | 2022.07.17 |
머신러닝(Machine Learning)이란? (0) | 2022.07.16 |
댓글