[MLY 번역] 7. 디벨롭셋(dev set)과 테스트셋(test set)은 얼마나 커야 할까?
[MLY 번역]
Andrew ng의 Machine Learning Yearning을 번역한 글입니다. 중간중간 실험가능한 내용이 있을 경우 c++ 혹은 tensorflow를 이용한 실험과 함께 업로드할 예정입니다. 일주일에 2회, 회당 5개씩 업로드될 예정입니다.
번역: 안현진,정주안
디벨롭셋(development set)은 여러분의 학습 알고리즘을 구성하는 변수들을 개선하는데 쓰이기 때문에, 여러분이 시도하는 알고리즘간의 차이를 느낄 수 있을 정도로 충분히 많아야 합니다. 예를 들어, 만약 분류기 A는 90.0%의 분류 정확도를 가지고 분류기 B는 90.1%의 분류 정확도를 가진다고 합시다. 이런 상황에서는 100개의 디벨롭셋으로는 0.1%의 차이를 감지해낼 수 없겠죠. 제가 봐왔던 다른 머신러닝 문제들과 비교했을 때, 100개의 디벨롭셋은 작다고 할 수 있습니다. 일반적으로 디벨롭셋의 사이즈는 1000개에서 10000개 정도입니다. 10000개의 디벨롭셋을 가지고 진행한다면 0.1%만 개선했을 때도 그 사실을 알아차리기 쉬울 것입니다.
영향력이 크면서 이미 많은 발전이 이루어진 분야들에선 -예를 들어 광고, 웹 검색 그리고 제품 추천과 같은- 단 0.01%라도 더 정확하게 구분하려고 노력하는 팀들을 많이 봐왔습니다. 작은 차이지만 회사의 이익과 직결되는 부분이기 때문인데요. 이런 경우에는 아주 작은 개선이라도 이끌어내기 위해 10000개 보다 더 많은 디벨롭셋을 구성할 것입니다.
이론적으로 그렇다는 것이지, 실제로는 대부분의 팀들이 이런 개선사항에는 신경쓰지도 않습니다. (그분들이 학술 연구 논문을 쓰는게 아니라면 말이죠) 또한 저는 보통 작은 진행사항을 평가하기 위해 통계적으로 중요한 실험들을 찾지 않습니다.
그렇다면 테스트셋의 사이즈는 어떨까요? 우선 여러분의 시스템 전반적인 퍼포먼스에 대한 높은 신뢰를 위해, 충분히 큰 규모의 테스트셋을 구성해야 합니다. 많은 사람들이 쓰는 방법중 하나는 여러분이 가진 전체 데이터 중 30%를 테스트셋으로 구성하는 것입니다. 비교적 적은 규모(100–10000개 정도)의 데이터를 가지고 활용할 때는 괜찮은 방식입니다. 하지만, 수많은 데이터가 넘쳐나는 빅데이터 시대에는, 가끔 우리가 가지는 머신러닝 문제에 수십억개의 예제를 활용하기도 합니다. 이런 상황에서 디벨롭셋과 테스트셋으로 할당된크기는 점점 그 비율이 작아지고 있습니다. 디벨롭셋/테스트셋에 할당될 데이터의 절대적인 갯수는 늘어난다 하더라도 말이죠. 여러분의 알고리즘 퍼포먼스를 평가하기 위해 필요한 정도를 넘어서는 과도한 디벨롭/테스트셋을 구성할 필요가 없습니다.