과적합의 시각화: Train/Test 분할과 U자형 오차 곡선
요약
과적합(Overfitting)의 개념과 이를 방지하기 위한 Train/Test 분할의 중요성을 설명합니다. 모델의 복잡도에 따른 훈련 오차와 테스트 오차의 U자형 변화를 시각적으로 이해하고 대응 방법을 제시합니다.
핵심 포인트
- 훈련 오차만으로는 모델의 성능을 판단할 수 없음
- 테스트 오차가 급증하는 지점이 과적합의 신호
- 과적합 방지를 위해 규제, 데이터 증강, 교차 검증 활용
- 훈련 오차와 테스트 오차 사이의 간격(Gap) 관리가 핵심
공부한 데이터는 완벽하게 맞히지만 새로운 데이터에서는 실패하는 모델은 정답지를 통째로 외워버린 학생과 같으며, 아무런 가치가 없습니다. 이것이 바로 과적합 (Overfitting)이며, Train/Test 분할 (train/test split)은 이를 잡아내는 방법입니다. 여기 인터랙티브하게 구현된 U자형 곡선이 있습니다.
🎯 복잡도 슬라이더를 조절해 보세요: https://dev48v.infy.uk/ml/day8-overfitting.html
원칙 (The discipline)
const [train, test] = split(shuffle(data), 0.8); // 테스트 세트를 따로 격리함
const model = fit(train); // 오직 훈련 세트(train)로만 학습
const testErr = error(model, test); // 정직한 수치
훈련 오차(Train error)가 기만적인 이유
복잡도를 추가하면 (더 높은 다항식 차수, 더 많은 파라미터), 훈련 오차 (training error)는 항상 감소합니다. 결국 노이즈 (noise)를 포함한 모든 점을 곡선이 통과하게 될 때 오차는 0에 수렴합니다. 따라서 훈련 점수만으로는 모델을 결코 판단할 수 없습니다.
테스트 오차(Test error)는 U자형입니다
- 너무 단순함 → 두 오차 모두 높음 (과소적합 (underfit)).
- 딱 적당함 → 두 오차 모두 낮음 (최적의 지점).
- 너무 복잡함 → 훈련 오차는 매우 낮지만, 테스트 오차 (test error)가 급증함 (과적합 (overfit) — 노이즈를 암기함).
데모의 차수 (degree)를 11로 조절하여, 테스트 오차가 폭발하는 동안 곡선이 모든 훈련 데이터 포인트를 통과하며 요동치는 모습을 관찰해 보세요. 결정적인 신호는 낮은 훈련 오차와 높은 테스트 오차 사이의 간격 (GAP)입니다.
대응 방법 (편향-분산, bias-variance)
더 단순한 모델 · 더 많은 데이터 · 규제 (regularization, 큰 가중치에 페널티 부여) · 조기 종료 (early stopping) · 복잡도를 선택하기 위한 교차 검증 (cross-validation). 이러한 트레이드오프 (tradeoff)를 관리하는 것이 실무적인 머신러닝 (ML)의 핵심입니다.
요점 (The takeaway)
데이터를 분할하고, 테스트 세트를 신뢰하며, U자의 바닥 지점에 머무르세요. 직접 확인해 보세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기