본문 바로가기
AI & Data

[Machine Learning] Train Test Size

by Henry Cho 2022. 7. 27.
728x90

Train Test Size


포스트 난이도: HOO_Senior

 

[Notice] 포스트 난이도에 대한 설명

안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다

whoishoo.tistory.com


# Train Test Size

ML(Machine learning)을 돌리기 위해서 설정해줘야 하는 초기 설정 값들이 있다. 앞선 포스트에서 다룬 Learning rate나 Epoch가 이에 해당하며, Momentum이나 Seed도 해당된다. (Momentum과 Seed는 다음 포스트를 통해서 이야기를 나눠보도록 하자.) 이번 포스트에서 다루는 Test size 또는 Train test size 또한 ML 과정에서 기본적으로 설정해줘야 하는 값 중에 하나이다. 이러한 설정 값들은 Note 작성에 있어 처음에 선언해주는 것이 추후에 여러 번 ML 과정을 시도할 때 수정하기가 용이하다.

 

Train test size 또는 Test size는 머신러닝을 통해 얻은 학습 결과를 테스트 해보는 시험지와 같은 역할을 담당한다. 테스트용 데이터가 별도로 존재할 수도 있지만 전체 데이터에서 일부를 테스트 데이터로 지정해서 테스트를 하기도 한다. 이때 필요한 것이 Test size를 지정하여 테스트에 사용되는 데이터는 머신러닝을 통해 훈련하는 과정에서 사용되지 않는다. 한마디로 Test size에 포함되는 데이터는 모의고사 시험지라고 생각하면 된다.


# 적정한 Test size의 크기

 

머신러닝(Machine learning)을 돌리기 위해서는  Train data와 Test data를 나눠줘야 한다. 이때 고민이 되는 것이 얼마큼의 비중으로 데이터를 나눠서 학습을 하는 것인가이다. 사실 테스트 데이터와 트레이닝 데이터를 나눠주는데 절대적인 정답이 없다. 왜냐하면 각 프로젝트마다 요구하는 조건이 다르며, 데이터의 양이나 종류 자체도 다르기 때문이다. 그렇다 보니 정답이 정해져 있는 수학 문제와 같이 머신러닝의 트레이닝과 테스트 데이터의 비중을 특정하게 정할 수가 없다.

 

HOO = {
    'epochs': 20,
    'batch_size': 32,
    'learning_rate': 1e-3,
    'momentum': 0.9,
    'test_size': 0.05,
    'seed': 1
}

 

하지만 신속한 최적의 값을 찾기 위해서 시도해볼만한 값들이 있다. 필자의 경우에는 데이터의 양을 우선적으로 고려한다. 데이터의 양이 많을 경우에는 트레이닝 데이터를 95%로 잡고 테스팅 데이터를 5%로만 잡아도 충분하다. 왜냐하면 데이터 양 자체가 많기 때문에 5%라고만 해도 테스트를 통해 검증할만한 데이터양이 충분하기 때문이다. 하지만 반대로 데이터 양이 많지 않을 경우에는 30%까지 테스트 데이터로 지정을 해야 할 수도 있다. 예를 들어서 공부를 한 학생의 학습능력을 검증한다고 했을 때 전체 문제가 1만 개의 문제가 있다고 가정한다면 5%만 잡아도 500문제에 해당한다. 반면에 전체 문제가 겨우 100문제만 있다면 5%에 해당하는 5문제로는 학생의 학습 능력을 검증하는데 의문이 생길 수 있다. 이와 마찬가지로 머신러닝 또한 테스트 데이터를 통해서 학습 능력을 검증하는데 의문점이 생기지 않게 하기 위해서는 데이터 양을 고려해서 테스트 데이터 양을 지정해줘야 한다.


 

728x90

댓글