brunch

3-6. 데이터 Set의 적절한 비율

by TUGU

아마도 머신러닝을 공부하는 여러분은 주어진 데이터에서 Train, Dev, Test set의 적절한 비율에 대해서 보통 Train : Test를 7:3 정도, 혹은 Train : Dev : Test를 6:2:2 정도의 비율로 나누는 것이 적절하다는 얘기를 많이 들어보았을 것이다. 이는 전통적인 머신러닝 방법론에서 말하는 얘기이다. 대략 10여 년 전만 해도 확보 가능한 데이터의 수가 지금처럼 많지 않았다. 데이터의 수가 100개, 1000개, 10000개 정도의 수준일 때는 이렇게 7:3, 6:2:2의 비율을 유지하며 Test set의 수량도 확보하여 유의미한 Test를 하는 것이 필요하다.


하지만 최근의 딥러닝의 관점에서 보았을 때 이러한 방법론은 더 이상 불필요하다고 볼 수 있다. 학습에 사용할 수 있는 데이터의 양이 수백만 단위로 늘어난다고 해보자. 이럴 때도 과연 6:2:2의 비율로 나눌 필요가 있을까?


image.png?type=w1



데이터의 수가 많으면 최대한 Train에 많이 사용하자


백만 개의 많은 데이터 셋이 확보가 되었을 때는 오히려 극단적으로 Train에 데이터를 많이 사용하는 것이 좋다. 예를 들어 98%를 Train에, 1%,1%씩을 각각 Dev, Test에 사용한다고 했을 때, 1%의 수량은 10,000개이다. 충분히 Test에 사용하기에 많은 양의 데이터이며 데이터의 분포 측면에서도 10,000개 정도면 통계적으로도 여러 가지 분포를 충분히 포함할 수 있을 것이다. 98만 개의 데이터를 Train에 사용함으로써, 모델이 최대한 많은 데이터를 학습하고 파라미터를 최적화 시키는 것이 중요하다.


이러한 관점에서도 Dev set(validation set) 또한 반드시 전체의 20%를 사용할 필요는 없다. Dev set은 Train을 통해 생성된 여러 알고리즘 중에 베스트를 찾아내고 튜닝을 하는 목적으로 사용되는 데이터이다. 따라서 이 여러 알고리즘 간에 차이만 명확히 구별해낼 수 있는 정도의 데이터양이면 무방하다는 것이다.


image.png?type=w1


Test set은 최종적으로 선정된 모델의 성능을 평가하기 위함이다. 모델의 파라미터를 튜닝하기 위한 것이 아니다. 이러한 관점에서 사실은 많은 경우 Test set이라고는 하지만 실제로는 Dev set으로 데이터를 사용하는 경우를 볼 수가 있다. 사실 데이터의 양이 많다면 아예 Test set 자체를 없애고 모든 데이터를 Train과 Dev에 나누어 사용을 해도 잘못되었다고 볼 수는 없다. (물론 추천하는 방법론은 아니지만)


image.png?type=w1


핵심을 마지막으로 정리하자면, 딥러닝과 빅데이터의 시대에 있어서 반드시 전통적인 7:3 방법론을 따를 필요가 없다는 것이다. 데이터가 많다면 Train에 최대한 많은 데이터를 사용하고, 상대적으로 적은 비율을 Dev, Test로 사용하는 것이 훨씬 효율적인 머신러닝의 방법론이라 할 수 있을 것이다.




참조 : 강의 원본 출처 (앤드류 응 교수 딥러닝 강의)

Sizeof Dev and Test Sets (C3W1L06)

https://www.youtube.com/watch?v=_Fe5kKmFieg&index=6&list=PLkDaE6sCZn6E7jZ9sN_xHwSHOdjUxUW_b





keyword
매거진의 이전글3-5. Train/Dev/Test set의 분포