학습 및 테스트 세트: 데이터 분할

이전 모듈에서는 데이터 세트를 다음과 같은 두 개의 하위 집합으로 나누는 개념을 소개했습니다.

  • 학습 세트 - 모델을 학습시키기 위한 하위 세트
  • 테스트 세트 - 학습된 모델을 테스트하기 위한 하위 집합입니다.

단일 데이터 세트를 다음과 같이 슬라이싱하는 방법을 상상할 수 있습니다.

두 부분으로 분할된 가로 막대: 80% 는 학습 세트, 20% 는 테스트 세트

그림 1. 데이터 세트 하나를 학습 세트와 테스트 세트로 분할

테스트 세트가 다음 두 가지 조건을 충족하는지 확인합니다.

  • 통계적으로 유의미한 결과를 얻을 수 있을 정도로 커야 합니다.
  • 데이터 세트를 전체적으로 나타내야 합니다. 즉, 학습 세트와 특성이 다른 테스트 세트를 선택하지 마세요.

테스트 세트가 위의 두 조건을 충족한다고 가정하면 새 데이터에 잘 일반화되는 모델을 만드는 것이 목표입니다. 테스트 세트는 새 데이터의 프록시 역할을 합니다. 다음 그림을 예로 들어 보겠습니다. 학습 데이터에 대해 학습된 모델은 매우 간단합니다. 이 모델은 완벽하지 않습니다. 몇 가지 예측이 틀렸습니다. 그러나 테스트 데이터 측면에서 이 모델은 학습 데이터의 경우와 거의 동일한 성능을 발휘합니다. 즉, 이 간단한 모델은 학습 데이터에 과적합되지 않습니다.

두 모델: 하나는 학습 데이터로 실행되고 다른 하나는 테스트 데이터로 실행됩니다.  모델은 주황색 점과 파란색 점을 나누는 선으로 매우 단순합니다.  학습 데이터의 손실은 테스트 데이터의 손실과 비슷합니다.

그림 2. 테스트 데이터를 기준으로 학습된 모델의 검증

테스트 데이터로 학습하지 마세요. 평가 측정항목에서 놀라울 정도로 좋은 결과가 나온다면 실수로 테스트 세트를 학습하고 있다는 의미일 수 있습니다. 예를 들어 정확성이 높다면 테스트 데이터가 학습 세트로 유출되었을 수 있습니다.

예를 들어 제목, 이메일 본문, 보낸 사람의 이메일 주소를 특성으로 사용하여 이메일이 스팸인지 예측하는 모델을 생각해 보겠습니다. 데이터를 80:20으로 분할하여 학습 및 테스트 세트에 분배합니다. 학습 후 모델은 학습 세트와 테스트 세트 모두에서 99% 의 정밀도를 얻습니다. 테스트 세트의 정밀도가 떨어질 것으로 예상되므로 데이터를 다시 살펴보고 테스트 세트의 예 중 다수가 학습 세트의 예와 중복된다는 것을 발견했습니다. 데이터를 분할하기 전에 입력 데이터베이스에서 동일한 스팸 이메일에 대한 중복 항목을 스크러빙하지 않았습니다. 의도치 않게 일부 테스트 데이터를 학습시켰으며 그 결과 모델이 새 데이터로 얼마나 잘 일반화되는지를 더 이상 정확하게 측정할 수 없습니다.