어떤 새 상황을 시험하는가
학습 train 자료는 파라미터를 맞추는 데 쓰고, 검증 validation 자료는 모형/학습률/정지 시점/임계값 같은 선택에 쓴다. 시험 test 자료는 선택을 마친 절차를 최종 평가하는 데 남긴다. 이름만 test로 붙였어도 결과를 보고 모형을 고르면 이미 선택에 쓴 자료다. 한번의 최종 평가를 의도한다면 잠금 규칙과 공개 시점을 먼저 정한다.
일반화는 무엇이 새것인지에 따라 의미가 달라진다. 같은 작업의 새로운 프레임, 새 episode, 보지 않은 물체/장소/사람, 미래 날짜는 다른 질문이다. 연속 영상의 이웃 프레임은 배경·자세가 매우 비슷할 수 있으므로 프레임을 무작위로 흩으면 같은 장면을 사실상 양쪽에서 볼 수 있다. 수천 프레임이 있다고 수천 독립 상황을 시험했다고 말하지 않는다.
가상 수집표에 episode A/B는 물체 O1, C는 O2, D는 O3를 사용하고 각 episode에 프레임 3개가 있다고 하자. 새 물체 일반화를 보려면 A/B의 6프레임을 train, C의 3개를 validation, D의 3개를 test로 둘 수 있다. object 그룹은 서로 겹치지 않는다. 대신 학습 물체가 하나, 검증/시험 물체도 각각 하나인 매우 작은 예이므로 넓은 일반화를 입증하지 못한다. 이 표는 분할 원리를 보여 줄 뿐 권장 데이터 규모나 성능 실험이 아니다.
A를 train, B를 test로 두면 episode는 다르지만 O1이 겹쳐 새 물체 질문을 시험하지 못한다. 평가 주장이 새 episode라면 다른 설계가 타당할 수도 있으므로 ‘episode 분리면 모든 누수 해결’이라는 일반 규칙을 만들지 않는다. 날짜/장소/사람까지 함께 달라져 있으면 어느 요인이 결과를 바꿨는지 분리하기도 어렵다. 공식 그룹 교차검증 설명처럼 보지 않은 그룹 평가에서는 같은 그룹이 양쪽에 나타나지 않게 한다.
전처리도 자료에서 배우는 연산이다
데이터 누수는 예측 때 알 수 없는 정보가 모형 구축이나 평가 선택에 들어가는 일이다. 라벨을 입력에 넣는 명백한 경우 외에도 전체 자료의 평균/표준편차로 정규화하는 일이 포함된다. scikit-learn 공식 지침은 먼저 분할하고 학습 부분에만 fit한 뒤 같은 변환을 검증/시험에 적용하도록 설명한다. 결측값 대치·특징 선택·중복 제거 정책도 어느 자료로 정했는지 확인한다.
그림 M11.03-1. 각 칸은 서로 다른 역할/근거다. 아래 방향은 자료/처리의 연결이며 실제 성공을 자동으로 보장하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.
정규화 예로 무차원 train 값이 [0,2], test 값이 [10]이라고 하자. 학습 평균 μ=1, 여기서 n을 학습 값의 개수라 하고 분모 n을 쓰는 모집단 분산 σ²=((0−1)²+(2−1)²)/2=1이라 σ=1이다. z=(x−μ)/σ 변환으로 test10은 9가 된다. 이것이 값이 커 보인다고 test까지 포함해 통계를 다시 계산하는 이유가 되지는 않는다. 학습 범위 밖 입력일 수 있음을 드러내는 결과다.
전체 [0,2,10]으로 계산하면 평균은 4, 분산은(16+4+36)/3=56/3, 표준편차는 약 4.32049다. test10의 z는 약 1.38873으로 달라진다. 목표 y를 쓰지 않았어도 시험 입력의 정보를 전처리에 맞춘 것이므로 해당 평가 정책에서는 누수다. σ=0인 상수 특징은 나눗셈이 정의되지 않으므로 학습 자료에서 정한 제거/별도 scale 정책을 명시해야 한다. ε를 쓴다면 그 값과 이유도 기록한다.
정규화된 숫자만 저장하지 말고 통계를 추정한 train ID/범위·정의·단위와 적용 코드를 보존한다. 검증/시험은 같은 학습 변환을 적용하는 것이지 각자 평균 0/분산 1로 다시 맞추는 것이 아니다. 자료 증강으로 만든 회전/잘라내기 이미지도 원본 그룹을 따라 분할해야 한다. 원본과 거의 같은 증강본을 양쪽에 넣고 평가가 독립이라고 주장하지 않는다.
시간순 분리에서도 창의 경계를 본다
로봇 자료는 한 프레임만 아니라 과거 관측 창과 미래 행동 chunk를 함께 쓸 수 있다. 원시 시각을 먼저 나눠도 만들어진 표본의 창이 경계를 넘으면 같은 원자료가 양쪽에 쓰일 수 있다. 예를 들어 시각t의 표본이 관측[t−2,t]와 목표[t+1,t+2]를 사용한다면, 경계 근처 표본은 입력뿐 아니라 목표가 어느 구간에 속하는지도 검사한다. 기록만 과거순으로 정렬했다고 이 겹침이 없어지지 않는다.
배포에서 현재까지의 관측만 사용할 수 있는데 미래 프레임을 입력 특징으로 넣는 것은 인과적 사용 조건을 위반한다. 반면 미래 행동을 예측할 목표로 사용하는 것 자체가 무조건 누수는 아니다. 입력과 감독 목표의 역할을 구별한다. 필요한 gap/분리 규칙은 관측·목표 창과 자기상관/평가 목적에 맞춰 정하며 만능 숫자로 고정하지 않는다. TimeSeriesSplit 공식 문서의 gap은 이런 시간 분리 설계를 생각하는 자료지만 그 클래스가 그룹 중복이나 모든 창 누수를 자동 검사하는 것은 아니다.
학습곡선은 선택 근거와 한계를 함께 준다
가상 epoch 1/2/3의 train 손실을 1.0/0.4/0.2, validation을 1.0/0.8/1.2라고 하자. 미리 정한 ‘validation 손실 최소’ 규칙이면 epoch 2를 선택한다. 마지막 epoch 3는 train에서 더 좋지만 선택 기준에서는 나쁘다. 이것은 과적합을 의심할 신호이나 작은 validation의 변동·분포 차이·잘못된 평가 모드/전처리도 함께 조사한다. 그래프 하나만으로 원인을 확정하지 않는다.
선택 후 test를 열어 결과를 기록하고 그 결과로 학습률/threshold를 다시 조정했다면 test를 계속 최종 독립 평가라고 부르지 않는다. 새 평가 자료를 두거나 재사용한 선택 절차를 투명하게 보고한다. regularization/자료 증강/early stopping은 검증 선택의 후보이지 시험 자료를 모형에 몰래 섞어도 되는 허가가 아니다.
보고에는 split manifest의 표본/그룹 ID와 원본 해시, 제외/증강/중복 정책, 통계의 train 범위, 선택한 epoch/기준, 시험 공개 시점과 실패 사례를 남긴다. 수치 하나보다 물체/조건별 오류와 독립 그룹 수가 해석에 중요하다. 기존 5.8 학습 파이프라인을 실행하는 선택 심화에서도 이 계약이 선행한다. 아래 활동은 학습 성과를 꾸민 곡선이 아닌 명시된 가상 숫자의 해석이다.