세 자료 묶음은 질문이 달라
학습 자료는 모델의 계수를 맞추는 데 쓰고, 검증 자료는 초매개변수를 조정하거나 여러 후보 가운데 하나를 고르는 데 써. 시험 자료는 선택을 모두 끝낸 뒤 딱 한 질문에 답해. 검증 자료에서 내린 결정이 보지 못한 사례에도 통하는가? 시험 점수를 보고 모델이나 특성을 다시 바꾸면 그 순간 시험 자료도 검증 자료가 돼. 여러 번 들여다본 숫자는 더 이상 정직한 일반화 추정치가 아니야.
무작위 분할이 항상 무작위 현실은 아니야
행이 서로 독립이고 시간이 중요하지 않은 문제에서는 무작위 분할이 괜찮아. 범주 비율이 크게 기울었다면 목표값 비율을 각 묶음에 비슷하게 유지하는 층화 분할을 써. 하지만 같은 고객의 여러 거래처럼 행끼리 연결되어 있다면 고객 단위로 묶어 나눠야 해. 한 사람의 기록이 양쪽에 들어가면 모델이 사람을 외운 효과가 검증 점수에 섞여.
시간이 있으면 미래를 뒤에 둬
수요, 해지, 사기처럼 시간에 따라 환경이 바뀌는 문제는 과거로 학습하고 더 최근 기간으로 검증해야 해. 무작위 분할은 미래의 가격, 정책, 사용자 행동을 학습에 섞어 과거를 맞히게 만들 수 있어. 실제 배포가 어느 간격으로 재학습되는지도 반영해 여러 시간 창을 굴려 보면 한 번의 운 좋은 기간에 기대는 일을 줄일 수 있지.
검증 자료도 반복해서 보면 닳아
수십 개 모델을 같은 검증 자료에서 비교하면 모델뿐 아니라 팀의 선택도 그 자료에 맞춰져. 실험 횟수와 결정 근거를 기록하고, 큰 방향을 정한 뒤에는 새 검증 구간으로 확인하는 절차가 필요해. 자료가 작다면 교차검증으로 여러 분할의 평균과 흔들림을 보고, 그래도 최종 시험 자료는 따로 남겨.
시험 자료를 얼려 둬
프로젝트 첫날 시험 행의 식별자와 자료 버전을 저장하고 일상 실험에서는 읽지 마. 자료 정의가 바뀌면 기존 시험 묶음을 몰래 옮기는 대신 새 자료 버전과 새 시험 묶음을 만들어. 마지막 평가 때는 점수 하나만 보지 말고 범주별 오류, 신뢰구간, 기준선과의 차이도 함께 기록해. 시험을 한 번만 본다는 의식이 팀의 희망과 현실을 분리해 줘.
분할 자체도 배포 계약이야
어떤 단위를 묶고 어느 시점을 경계로 삼았는지 코드와 문서에 남겨. 같은 씨앗만 기록해서는 부족해. 원시 자료가 바뀌면 같은 씨앗도 다른 행을 고르거든. 행 식별자, 생성 쿼리, 자료 해시를 함께 보관해야 평가를 다시 만들 수 있어. 그래야 같은 질문을 다시 물을 수 있어. 분할이 곧 평가의 역사야.