모델 검증 — 전체 강의 노트
출처: 데이터 과학 · 모듈 3 — 모델 검증 · Coursera · Park 교수 · 46분
왜 데이터를 분할하나
강의- 목적: 모델이 보지 못한 데이터에서 어떻게 작동하는지 추정 — 유일하게 중요한 지표.
- 실패 모드: 학습 세트만으로 평가하면 모든 모델이 좋아 보인다(나쁜 모델까지 포함).
- 홀드아웃 원칙: 모델 선택과 하이퍼파라미터 조정 등 어떤 결정도 테스트 세트를 최종 평가 전에 보지 말아야 한다.
삼분할
강의- 학습: 모델 파라미터를 적합시킨다.
- 검증: 하이퍼파라미터 조정과 모델 비교에 사용 — 자주 만진다.
- 테스트: 끝에 한 번만 — 실세계 성능 추정.
- 왜 3개: 테스트에서 튜닝하면 또 다른 학습 세트가 되어 일반화를 과대평가하게 된다.
전형적 비율
강의- 70/15/15: 중간 규모(1k–10만 샘플) 기본.
- 80/10/10: 1만–10만 샘플에 학습 세트로 CV를 추가할 때 흔하다.
- 빅데이터 98/1/1: 100만+ 샘플에서는 1%만 해도 1만이라 안정적.
층화 샘플링
강의- 언제: 클래스 불균형이나 희귀 사건이 있을 때.
- 효과: 각 분할에서 클래스 비율을 유지해 검증 세트에 양성이 0개로 들어가는 사고를 막는다.
- 도구: sklearn의 StratifiedKFold 또는 train_test_split(stratify=y).
교차 검증
강의- k-fold: 학습 세트를 k개로 나누고 k-1로 학습, 1로 검증을 순환해 k 점수를 평균.
- k 기준: 5나 10이 표준. 그 이상은 한계 효용이 작다.
- 시계열: 확장 윈도우 또는 롤링 윈도우 — 미래 데이터로 학습하지 말 것.
과적합
강의- 정의: 모델이 신호 대신 노이즈를 외운다.
- 징후: 학습 정확도는 오르지만 검증 정확도는 정체되거나 떨어진다.
- 대책: 데이터 추가, 단순한 모델, L1/L2 정규화, Dropout, Early Stopping, 데이터 증강.
데이터 누출
강의- 전처리 누출: Scaler를 전체 데이터에 fit하면 분포 정보가 새어 든다 — Pipeline 안에서 CV로 처리.
- 타깃 누출: 타깃에서 파생된 특성을 쓰면 비현실적인 고정확도가 나온다.
- 시간 누출: 미래 데이터로 학습해 과거를 예측 — 시계열에서는 롤링 분할 필수.
예제
강의- 설정: 1만 샘플, 이진 분류, 70/15/15 분할.
- 개수: train = 7,000, val = 1,500, test = 1,500.
- 층화: 클래스 비 80/20이면 각 분할도 그 비율을 유지.






