데이터를 떼어 두면 가장 간단하게 테스트의 공정성을 지킬 수 있습니다. 처음에 레코드를 분리해 두고, 피처, 설정, 데이터 준비에 관한 결정은 모두 이 레코드 없이 내린 뒤, 최종 결과를 측정할 때 한 번만 사용합니다.
분할 자체에도 주의가 필요합니다. 거래나 보험금 청구처럼 시간 순서가 있는 데이터를 무작위로 나누면, 모델이 테스트 대상보다 나중에 생긴 레코드로 학습하게 됩니다. 가장 최근 기간을 떼어 두면 모델이 실제 사용에서 마주할 상황에 더 가까운 결과를 얻을 수 있습니다.
홀드아웃 세트는 교차 검증과 어떻게 다른가요?
- 홀드아웃 세트는 한 번 고정한 분할입니다. 간단하고 독립적이지만, 결과는 어떤 레코드가 우연히 그 세트에 들어갔는지에 따라 달라집니다.
- 교차 검증(cross-validation)은 분할을 여러 번 바꿔 가며 결과를 평균합니다. 데이터를 더 충분히 활용하고, 결과가 얼마나 안정적인지 보여줍니다.
- 두 방법은 자주 함께 씁니다. 개발 단계의 선택에는 교차 검증을 쓰고, 그 선택이 전혀 닿지 않은 최종 홀드아웃 세트를 따로 둡니다.
AI 업무에서 홀드아웃 세트는 어디서 문제가 되나요?
한 팀이 레코드의 5분의 1을 홀드아웃으로 떼어 둔 뒤, 스키마가 바뀌자 피처 처리 단계를 전체 데이터셋에 다시 실행합니다. 이제 홀드아웃 레코드는 자신이 포함된 상태로 적합된 변환을 거칩니다. 문서상으로는 분할이 남아 있지만, 홀드아웃은 더 이상 독립적이지 않습니다.
홀드아웃 세트는 학습이 들어간 모든 단계를 이 세트 없이 적합할 때만 쓸모가 있습니다. 그래서 분할의 문제이면서 데이터 누수의 문제이기도 합니다. 어떤 레코드를 떼어 두었는지, 어떤 준비 단계를 어떤 데이터에 실행했는지 기록하는 일은 재현성의 일부입니다. 이 기록이 있으면 데이터가 바뀌어도 같은 평가를 반복할 수 있습니다.