scikit-learn 의 model_selection 패키지에 존재하는 train_test_split
모듈을 활용해서 train set / test set 을 손쉽게 분리 할 수 있다.
우리가 답해야 할 질문은 왜 train/test set 을 분리하는가? 이다.
정확히 말하면 train/test 을 train/validation 이라고 말을 할 수 있겠다.
머신러닝 모델에 train 데이터를 100% 학습시킨 이후에 test 데이터에 모델을 적용했을 때 생각보다 성능이 안 나오는 경우가 많다.
이러한 현상을 Overfitting 되었다고 부른다.
이는 모델이 내가 가진 학습 데이터에 너무 과적합하도록 학습한 나머지, 이를 조금이라도 벗어난 케이스에 대해서는 예측율이 현저하게
떨어지는 현상이다. 모든 데이터에 대해서 원하는 결과를 산출해내야 하는 모델에게 이러한 overfitting 은 치명적이기 때문에 이런 현상을 미연에 방지하기 위해서 validation data set 이 존재하는 것이다. validation data set 을 통해서 모델이 과적합 되었는지를 판단해 학습을 종료하는 것 이다.
위의 그래프를 보면 train data set 의 오차율은 계속 하강하는 반면 validation data set 의 오차율은 계속 증가하는 것을 볼 수 있다.
이처럼 overfitting 을 방지하기 위한 test data set 의 중요성에 대해서 알아보았다.
그렇다면, 이를 어떻게 split 할까?
위에서 언급한 sckikit-learn 의 model_selection 패키지를 사용하면 간단하게 해결한다.
Parameters
Returns
[ref]
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html
https://teddylee777.github.io/scikit-learn/train-test-split
https://blog.naver.com/PostView.naver?blogId=siniphia&logNo=221396370872