6. 같은 분포의 개발셋과 테스트셋 구성

6. 같은 분포의 개발셋과 테스트셋 구성

시간 규모를 기준으로 지역을 (i) 미국, (ii) 중국, (iii) 인도 및 (iv) 기타 4개 영역로 구분했습니다. 이 4개 지역을 기준으로 고양이 앱 이미지 데이터를 분할하여 보유하고 있습니다. 개발 데이터셋은 미국과 인도 지역 데이터로 만들었고, 테스트 데이터셋은 중국과 기타 지역 데이터로 만들었습니다. 다시 말해서, 개발 데이터셋에 4개 지역 중에서 2개 지역의 데이터를 무작위로 할당했고, 테스트 세트에 다른 두 지역의 데이터를 임의로 할당했습니다.

개발 데이터셋과 테스트 데이터셋을 정의한 다음에, 개발팀은 개발 데이터셋를 이용하여 알고리즘 성능 향상에 집중합니다. 따라서 개발 데이터셋에는 개발팀이 가장 향상하고 싶어 하는 작업을 반영하고 있어야 합니다. 개발팀이 바라는 것은 모든 지역에서 잘 동작하는 고양이 탐지기를 만드는 것이지, 2개 지역에서 잘 작동하는 고양이 탐지기를 만드는것이 아닙니다.

두 번째 문제점은 개발 데이터셋과 테스트 데이터셋이 다른 분포를 갖는다는 점입니다. 이 개발 데이터셋과 테스트 데이터셋으로 만들어진 알고리즘은 개발 데이터셋에서는 잘 작동하지만, 테스트 데이터셋에서는 이상하게 동작하는 현상이 발생할 수 있습니다. 필자는 이런 상황을 경험하면서 엄청난 좌절감과 많은 노력을 허비했습니다. 이런 일이 여러분에게 발생하지 않도록 하십시오.

예를 들어, 개발팀이 테스트 세트가 아닌 개발 세트에서만 잘 동작하는 시스템을 개발했다고 가정합니다. 개발팀이 사용한 개발 세트와 테스트 세트가 같은 데이터 분포에서 만들여졌다면, 무엇이 문제인지 상당히 명확하게 진단할 수 있을 겁니다. 알고리즘이 개발 세트에 너무 과적합 되어 있으며, 이 문제 해결을 위해서는 더 많은 개발 세트를 확보하는 것이라는 결론을 만들 수 있습니다.

그러나 테스트 데이터셋이 아닌 개발 데이타셋에서만 잘 동작하는 시스템의 문제가, 개발 데이터셋와 테스트 데이터세가 다른 데이터 분포에서 발생했다면, 해결책에 대한 진단이 명확하지 않을 것입니다. 여러 가지를 잘못된 상황을 고민해야 한다.

  1. 시스템이 개발 데이터셋에 과적합 된 상태이다.
  2. 테스트 데이터셋이 개발 데이터셋보다 더 어렵다.1 알고리즘이 테스트 데이터셋에서 예상대로 동작할 수는 있지만, 더 이상의 개선이 이루어질 수 없습니다.
  3. 테스트 데이터셋가 반드시 더 어렵운것은 아니다. 단지 다른것이다. 따라서 개발 세트에서 잘 동작하던 알고리즘이 테스트 세트에서는 제대로 동작하지 않을 수 있습니다. 이 경우 개발 세트에서 성능을 향상하기 위한 많은 노력은 무의미한 것이 된다.2

기계 학습 애플리케이션을 만드는 것은 상당히 어렵습니다. 개발 데이터셋과 테스트 데이터셋의 분포가 다른 않는 상황에서, “개발 데이터셋의 성능 향상이 테스트 데이터셋에서도 성능을 높이는가?“에 대한 추가적인 불확실성이 발생합니다. 개발 세트와 테스트 세트 분포가 다르면, 작동하는 상황과 잘 작동하지 않는 상황을 구분하기 어렵습니다. 또한, 무엇을 해야하는지 우선순위를 결정하는 것이 더 어렵워집니다.

써드파티에 대한 벤치마크를 수행할 경우, 그 곳에서는 다른 분포로 만들어진 개발 데이터셋와 테스트 데이터셋 존재할 수 있습니다. 다른 분포를 갖는 개발 데이터셋과 테스트 데이터셋으로 학습한 알고리즘을 같은 분포에서 생성된 개발 세트와 테스트 세트로 학습한 알고리즘과 비교할 때, 더 좋은 성능에 영향을 미치는 요소는 기술이 아니라 행운입니다. 한가지 분포의 데이터 셋으로 학습한 알고리즘이 다른 분포의 데이터에서도 잘 동작하도록 일반화되는 학습 알고리즘을 개발하는 것은 중요한 연구 과제입니다. 그러나 여러분의 목표가 연구를 진행하는 것이 아니라 머신러닝 애플리케이션의 성능을 향상하는 것이라면, 같은 분포를 갖는 개발 세트와 테스트 세트를 사용하는 것이 좋습니다. 이런 방식이 개발 효율성에 도움이 됩니다.

이 문서는 Andrew NG 교수님께서 집필 중인 Machine Learning Yearning의 6장 번역입니다. 원제는 “6. Your dev and test sets should come from the same distribution” 입니다. 원문 Ebook은 http://www.mlyearning.org [↗NW] 에서 내려받을 수 있습니다.


  1. <옮긴이> 어렵다는 말은 성능이 좋기 어렵다는 의미입니다.. 학습 세트는 학습을 위한 데이터로 수집, 크롤링, 데이터 생성 등으로 만들어집니다. 개발 세트는 학습 세트로부터 만들기 때문에 데이터의 경향은 유사합니다. 테스트 데이터는 일반적으로 실제 데이터로 부터 만드는 것이 일반적입니다. 따라서 알고리즘이 결과를 보면 학습/개발 세트보다 좋은 성능이 나오기 어렵습니다.
    [return]
  2. <옮긴이> 데이터가 어려운 것이 아니라, 두 데이터셋의 분포가 달라서 다른 결과는 만드는 상황을 의미합니다. [return]
Last updated on 22 Dec 2018 / Published on 22 Dec 2018
김태완 avatar
작성자: 김태완
1999년 부터 Java, Framework, Middleware, SOA, DB Replication, Cache, CEP, NoSQL, Big Data, Cloud를 키워드로 살아왔습니다. 현재는 빅데이터와 Machine Learning을 중점에 두고 있습니다.
E-mail: taewanme@gmail.com

Powered by http://taewan.kim