[machine-learning] 데이터 집합을 교육 및 유효성 검사 집합으로 나누는 방법에 대한 규칙이 있습니까?

데이터를 교육 및 유효성 검사 세트로 가장 잘 나누는 방법에 대한 규칙이 있습니까? 50/50 분할도 권장됩니까? 또는 검증 데이터와 비교하여 더 많은 학습 데이터를 갖는 명백한 이점이 있습니까 (또는 그 반대)? 아니면이 선택이 응용 프로그램에 따라 크게 달라 집니까?

나는 주로 교육 및 검증 데이터의 80 % / 20 %를 사용했지만 원칙적인 이유없이이 부서를 선택했습니다. 기계 학습에 더 많은 경험이있는 사람이 저에게 조언 해 줄 수 있습니까?



답변

두 가지 경쟁 문제가 있습니다. 훈련 데이터가 적을수록 모수 추정값이 더 큰 차이를 보입니다. 테스트 데이터가 적을수록 성능 통계는 더 큰 차이를 갖습니다. 광범위하게 말하면 분산이 너무 크지 않도록 데이터를 나누는 것에 관심을 가져야합니다. 이는 분산이 아닌 각 범주의 절대 인스턴스 수와 더 관련이 있습니다.

총 100 개의 인스턴스가있는 경우 단일 스플릿이 예상치 못한 만족스러운 분산을 제공하지 않으므로 교차 유효성 검사가 중단 될 수 있습니다. 100,000 개의 인스턴스가있는 경우 실제로 80:20 분할 또는 90:10 분할을 선택하는지 여부는 중요하지 않습니다 (실제로 계산량이 많은 경우 더 적은 훈련 데이터를 사용하도록 선택할 수 있음).

교차 검증이 아닌 적절한 보류 검정 데이터를 수행하기에 충분한 데이터가 있다고 가정하면 다음은 분산을 처리하는 유용한 방법입니다.

  1. 데이터를 교육 및 테스트로 나눕니다 (80/20은 실제로 좋은 출발점입니다)
  2. 분할 교육 훈련 및 검증에 데이터를 (다시, 80/20 공정한 분할이다).
  3. 훈련 데이터의 무작위 선택 서브 샘플링, 분류기 훈련 및 검증 세트의 성능 기록
  4. 다른 양의 훈련 데이터로 일련의 런을 시도하십시오. 임의의 20 %를 무작위로 10 번 샘플링하고 검증 데이터의 성능을 관찰 한 다음 40 %, 60 %, 80 %로 동일하게 수행하십시오. 데이터가 많을수록 성능은 향상되지만 다른 임의 샘플에 대한 분산은 감소해야합니다.
  5. 테스트 데이터의 크기로 인해 분산을 처리하려면 동일한 절차를 반대로 수행하십시오. 모든 교육 데이터를 학습 한 다음 유효성 검사 데이터의 백분율을 여러 번 무작위로 샘플링 하고 성능을 관찰하십시오. 이제 유효성 검사 데이터의 작은 샘플에 대한 평균 성능이 모든 유효성 검사 데이터의 성능과 거의 동일하지만 테스트 샘플 수가 적을수록 편차가 훨씬 더 큽니다.

답변

80/20이 흔히 파레토 (Pareto) 원칙 이라고하는 매우 일반적으로 발생하는 비율이라는 사실에 놀랄 것 입니다. 해당 비율을 사용하면 일반적으로 안전한 내기입니다.

그러나 사용하는 교육 / 검증 방법에 따라 비율이 변경 될 수 있습니다. 예를 들어 10 배 교차 검증을 사용하는 경우 각 접기마다 10 %의 검증 세트로 끝납니다.

훈련 세트와 검증 세트 사이의 적절한 비율이 무엇인지에 대한 연구가 있습니다 .

검증 세트를 위해 예약 된 패턴의 비율은 자유 조정 가능한 매개 변수 수의 제곱근에 반비례해야합니다.

결론적으로 그들은 공식을 지정합니다.

검증 세트 (v) 대 트레이닝 세트 (t) 크기 비율 v / t는 ln (N / h-max)와 같이 스케일링됩니다. 여기서 N은 인식기 패밀리 수이고 h-max는 해당 패밀리의 가장 복잡한 것입니다.

복잡성이 의미하는 바는 다음과 같습니다.

인식기의 각각의 패밀리는 VC- 치수 , 설명 길이, 조정 가능한 파라미터의 수, 또는 다른 복잡성 척도 와 관련 될 수도 있고 그렇지 않을 수도있는 복잡성을 특징 으로한다.

첫 번째 경험 법칙을 사용하면 (즉, 유효성 검사 세트는 사용 가능한 조정 가능한 매개 변수 수의 제곱근에 반비례해야 함) 32 개의 조정 가능한 매개 변수가있는 경우 32의 제곱근이 ~ 5.65이면 분수는 1 / 5.65 또는 0.177 (v / t). 대략 17.7 %는 검증 용으로, 82.3 %는 교육용으로 예약해야합니다.


답변

작년에 저는 Andrew Ng의 온라인 머신 러닝 과정을 수강했습니다. 그의 추천은 다음과 같습니다.

훈련 : 60 %

교차 검증 : 20 %

테스트 : 20 %


답변

글쎄, 당신은 한 가지 더 생각해야합니다.

1,000,000 개의 예제와 같이 실제로 큰 데이터 세트가있는 경우 10 % = 100,000 개의 예제는 모델이 제대로 작동한다고 말할 필요가 없기 때문에 분할 80/10/10이 불필요 할 수 있습니다.

99 / 0.5 / 0.5이면 충분합니다. 5,000 개의 예제가 데이터의 대부분의 분산을 나타낼 수 있고 테스트 및 개발에서 5,000 개의 예제를 기반으로 모델이 잘 작동한다는 것을 쉽게 알 수 있습니다.


답변

데이터가 적다고 가정하면 70 %, 80 % 및 90 %를 시도하고 더 나은 결과를 제공하는 테스트하는 것이 좋습니다. 90 %의 경우 10 % 테스트의 경우 정확도가 떨어질 가능성이 있습니다.


답변

아마도 63.2 % / 36.8 %가 합리적인 선택입니다. 그 이유는 전체 표본 크기 n 이 있고 초기 n 에서 교체 (통계 부트 스트랩에서와 같이 재 샘플링) n 사례 를 무작위로 표본 추출하려는 경우 개별 사례가 https://stats.stackexchange.com/a/88993/16263에 설명 된 것처럼 n 이 너무 작지 않은 경우 재 샘플은 약 0.632 가됩니다.

n = 250 의 표본의 경우, 개별 표본이 4 자리로 다시 표본 추출 될 확률은 0.6329입니다. n = 20000 인 표본의 경우 확률은 0.6321입니다.


답변

그것은 모두 데이터에 달려 있습니다. 상당한 양의 데이터가있는 경우 위에서 언급 한대로 80/20을 선택하는 것이 좋습니다. 그러나 50/50 분할로 교차 검증을하지 않으면 훨씬 더 도움이되고 훈련 데이터에 과적 합하는 모델을 만들지 못할 수 있습니다.