티스토리 뷰

 개발에 적용할 알고리즘들 간의 차이를 확인하기 위해서는 개발 데이터가 충분히 많아야 한다. 예를 들어 A 분별기가 90.0%의 정확성을 가지고, B 분별기가 90.1%의 정확성을 가진다고 가정한다면, 100개의 개발 데이터를 가지고는 0.1%의 차이를 확인하기 어려울 것이다. 본인이 접한 다른 머신러닝을 활용한 문제들을 놓고 보았을 때, 100개의 개발 데이터는 매우 적은 량이다. 일반적으로 개발 데이터는 1000개에서 10000개 사이의 데이터를 가진다. 10000개의 데이터를 통해서라면 앞에서 언급했던 0.1%의 성능 향상을 확인하기 쉬울 것이다.
(이론상으로는 개발 데이터 상에서 알고리즘들 간의 차이가 통계적으로 큰 차이를 가지는지를 확인해볼 수 있다. 하지만 현업상에서는 이런 관점을 (굳이 논문으로 써내지 않는다면...) 고려하지 않는다. 그리고 본인도 굳이 내부 진행 과정을 측정하기 위해서 통계적 차이를 찾진 않는다.)

 예를 들어 광고나, 웹 검색, 제품 추천과 같이 고도화되고 중요한 작업을 수행하는 사람들이라면 0.01%의 성능을 향상시키기 위해서 노력하곤 한다. 그런 작업들이 곧 회사의 이익에 직접적으로 영향을 미치기 때문이다. 이런 케이스에는 그런 자그마한 향상을 확인하기 위해서 10000개 이상의 개발 데이터를 사용하곤 한다.

 테스트 데이터의 사이즈는 어떻게 정할까? 이것도 역시 시스템의 전체적인 성능 상에서 높은 신뢰성을 줄만큼 많아야 한다. 관찰을 통해서 가장 흔하게 사용하는 방법은 테스트 데이터를 전체 데이터의 30% 만큼 사용하는 것이다. 이런 방법은 100개에서 10000개 사이의 데이터를 학습시키는 일반적인 갯수를 가진 경우에는 잘 동작한다. 하지만 우리가 지금 접하고 있는 빅데이터 시대에서 수백만 개의 데이터들을 활용하는 문제를 접하게 될 경우에는 개발 데이터와 테스트 데이터의 절대적인 숫자가 늘어날지라도, 그 비율은 줄어들게 된다. 그렇기 때문에 개발한 알고리즘의 성능을 확인하는 것을 넘어서서 엄청나게 많은 개발 데이터와 테스트 데이터를 가질 필요는 없다.

< 해당 포스트는 Andrew Ng의 Machine Learning Yearning 중 chapter 7. How large do the dev/test sets need to be? 을 번역한 내용입니다.>

댓글