본문 바로가기
C.W.K.
Stream
Lesson 03 of 07 · published

Overfitting과 Underfitting

~26 min · overfitting, underfitting, diagnostics

Level 0Scout
0 XP0/48 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

두 실패는 겉모양이 달라

과대적합은 모델이 학습 자료의 일반 패턴뿐 아니라 우연과 잡음까지 외운 상태야. 학습 오차는 아주 낮지만 검증 오차가 훨씬 높아. 과소적합은 모델이나 표현이 실제 구조를 담기에 부족한 상태라 학습 오차와 검증 오차가 둘 다 높고 서로 비슷해. 검증 점수 하나만 보면 둘을 구분할 수 없으니 같은 축에 학습과 검증 곡선을 그려야 해.

먼저 자료와 평가 경계를 의심해

큰 학습·검증 차이가 항상 모델 용량 때문은 아니야. 학습과 검증 기간의 분포가 다르거나, 중복 집단 분할이 깨졌거나, 전처리가 두 경로에서 다를 수 있어. 반대로 둘 다 좋은데 실제 운영이 나쁘다면 누출을 의심해야 하고. 모델 처방 전에 자료 분할, 지표, 파이프라인을 확인하지 않으면 잘못된 실패를 고치게 돼.

과대적합에 맞는 손잡이

자료를 더 모으고, 규제를 강화하고, 모델 깊이나 특성 수를 줄이며, 학습을 일찍 멈추는 방법이 있어. 부스팅에서는 독립 검증 집합의 점수가 더 나아지지 않을 때 early stopping을 쓰는 게 효과적이야. 신경망의 dropout도 분산을 낮추는 방식이지. 단, 같은 검증 자료를 반복해서 보며 중단과 설정을 고르면 그 자료 자체에 맞춰질 수 있어.

과소적합에 맞는 손잡이

모델 용량을 키우고, 도메인에 맞는 특성과 상호작용을 만들고, 지나친 규제를 줄여. 목표값이나 입력의 변환이 잘못되어 선형 관계가 보이지 않는지도 확인해. 자료만 더 추가해도 학습 오차가 높은 채 멈춘다면 표현이나 모델을 바꾸지 않는 한 큰 효과가 없을 수 있어.

학습 곡선은 자료의 가치를 보여줘

학습 자료 크기를 조금씩 늘리며 학습과 검증 오차를 그려. 두 오차가 계속 내려가고 검증도 개선된다면 자료 추가가 도움이 될 가능성이 커. 학습은 좋아지는데 검증이 평평하고 간격이 크다면 규제나 단순화가 필요해. 둘이 높은 곳에서 만나 평평하다면 용량과 특성을 고쳐야 해.

복잡도 곡선도 함께 봐

나무 깊이, 규제 강도, 학습 반복 수처럼 모델 복잡도를 바꾸며 두 점수를 그리면 어느 지점부터 학습만 좋아지고 검증은 나빠지는지 보여. 최고점 하나보다 주변의 평평한 구간을 선택해야 자료가 조금 달라져도 안정적이야. 폴드별 흔들림이 크다면 우선 어느 집단이나 기간이 원인인지 조사해.

한 번에 손잡이 하나만 돌려

자료 추가, 특성 변경, 규제 강화, 모델 교체를 동시에 하면 무엇이 효과였는지 알 수 없어. 현재 실패 모양에서 가장 가능성 높은 가설 하나를 고르고 같은 분할과 지표에서 실험해. 결과와 예상이 어긋나면 그 차이가 다음 진단의 자료가 돼. 과대적합과 과소적합은 딱지가 아니라 다음 실험을 고르는 언어야.

Code

학습 곡선으로 진단하기·python
from sklearn.model_selection import learning_curve
import numpy as np

sizes, train_scores, val_scores = learning_curve(
    pipe, X, y, cv=5, scoring="average_precision",
    train_sizes=np.linspace(0.1, 1.0, 8), n_jobs=-1
)
print("train mean:", train_scores.mean(axis=1))
print("val mean:  ", val_scores.mean(axis=1))
부스팅 모델을 위한 조기 종료·python
import lightgbm as lgb

model = lgb.LGBMClassifier(n_estimators=2000, learning_rate=0.03)
model.fit(
    X_tr, y_tr, eval_set=[(X_val, y_val)],
    callbacks=[lgb.early_stopping(50)]
)

External links

Exercise

현재 가장 좋은 모델의 학습 곡선을 그려. 모양을 근거로 자료 추가, 용량 증가, 규제 강화 가운데 기대 효과가 가장 큰 하나만 고르고 다음 실험으로 실행해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.