sol’s blog

과적합 막는 법 | Regularization, LASSO, Ridge

모델이 데이터를 외워버리는 과적합(Overfitting)을 막기 위한 핵심 원리 — Regularization, LASSO, Ridge를 정리

sol-commits
sol-commits Oct 21, 2025
Callout icon'

요약

  • 과적합
    • 훈련 데이터는 기가 막히게 맞히지만 새 데이터에서 성능이 떨어지는 현상
  • 원인
    • 모델이 너무 복잡하거나, 데이터가 부족하거나
    • 학습을 너무 오래 시키거나, 검증 절차가 허술할 때
  • 해결 핵심
    • 데이터 쪽을 튼튼히, 모델을 단순하게
    • 규제(Regularization)로 복잡도를 벌주기, 검증 절차로 과적합을 조기에 포착
 

과적합

  • 학생 A: 기출문제 정답만 외워서 시험 봄 → 기출은 만점, 새 문제는 망
  • 모델: 훈련셋에선 낮은 오차, 검증/테스트셋에선 높은 오차

증상 체크

  • Train Loss ⬇️⬇️⬇️ 인데 Val/Test Loss ⬆️
  • 일반화 갭(Train 성능 - Val 성능)이 크게 벌어짐
  • 학습 epoch이 늘수록 검증 성능이 다시 나빠짐(뒤집히는 지점 탄생)

원인

  1. 모델이 너무 복잡: 파라미터가 데이터보다 훨씬 많음
  1. 데이터 부족/잡음 많음: 외워버리기 쉬운 환경
  1. 검증 절차 부실: 데이터 누수(leakage), 편향된 분할
  1. 학습 오래/무규제: 끝까지 우겨 맞추다 noise까지 학습

Bias-Variance 트레이드오프

테스트 오차 ≈ 노이즈 + 바이어스² + 분산

Bias = 평균적으로 얼마나 중심(정답)에서 벗어나는가

Variance = 훈련 데이터가 달라질 때 예측이 얼마나 흔들리는가

설명
의미
Low Bias
Low Variance
예측이 정답에 가까움
이상적인 모델
평균적으로 정답과 가깝고 데이터가 바뀌어도 안정적
Low Bias
High Variance
점들이 중심 근처지만 흩어짐
데이터에 따라 결과가 출렁
→ 과적합 경향
High Bias
Low Variance
중심에서 먼 곳에 있음
일관되게 틀림 → 단순 모델(underfitting)
High Bias
High Variance
중심에서 먼 곳에 있고 흩어짐
일관되게 틀리고, 불안정하기까지 함

과적합 진단

  • 데이터 분할 : Train / Validation / Test
  • 교차검증(k-fold) : 데이터를 k개 폴드로 나눠 번갈아 검증
  • 학습곡선/Learning Curve : epoch에 따른 Train/Val 오차 추이
  • 검증 곡선/Validation Curve : 하이퍼파라미터에 따른 Train/Val 성능 비교
  • 데이터 누수 방지 : 스케일링/특징추출은 Train에 맞춰 학습

과적합 방지 기법

A. 데이터 측면 강화

  1. 데이터 더 모으기
  1. 데이터 증강
      • 이미지: 회전/좌우반전/크롭/색상변환
      • 텍스트/오디오: 동의어 치환, 시간 스트레치 등
  1. 노이즈 주입: 입력 x에 작은 잡음 추가 → 과민반응 완화
  1. 라벨 스무딩
    1. 정답 확률을 100%로 못 박지 말고 아주 살짝 퍼뜨려 모델이 덜 확신하게 하기
      • 다중분류에서 정답 1.0을 1−ε, 나머지 클래스를 ε/(K−1) 로 분산

B. 모델 구조를 간단하게

  • 파라미터 축소 : 작은 모델, shallow network, 낮은 차수의 다항식
  • 특징선택/차원축소 : LASSO, PCA 등으로 불필요한 변수 제거
  • 트리 모델 : 최대 깊이 제한, 리프 최소 샘플 수 설정, 가지치기(pruning)
  • KNN : K를 너무 작게 두면 과적합

C. Regularization

최소화:데이터오차+λ×복잡도벌점\text{최소화}: \text{데이터} \text{오차}+λ×\text{복잡도} \text{벌점}
잘 맞추되 복잡하면 벌금을 냄

textlambda\\text{lambda}: 벌금 세기(크면 단순해짐, 너무 크면 과소적합)

  1. Ridge(L2) - 부드럽게 줄이기
    1. minβ(yiyi^)2+λβj2\min_{\beta}∑(y_i−\hat{y_i})^2+λ∑β_j^2
      • 상관된 feature가 많을 때 안정적
      • 베이지안 시각: 가우시안 사전(Gaussian prior)에 해당
  1. LASSO(L1) - 필요 없는 건 0으로
    1. minβ(yiyi^)2+λβj\min_{\beta}∑(y_i−\hat{y_i})^2+λ∑|β_j|
      • 어떤 계수는 정확히 0 → 변수 선택(희소성)
      • 변수가 많고 중요한 것만 고르고 싶을 때
      • 베이지안 시각: 라플라스 사전(Laplace prior)에 해당
  1. Elastic Net - 둘 다 섞자
    1. minβ(yiyi^)2+λ1βj+λ2βj2\min_{\beta}∑(y_i−\hat{y_i})^2+λ_1∑|β_j|+λ_2∑β_j^2
      • LASSO의 선택성 + Ridge의 안정성

D. 학습 과정에서의 규제

  1. Early Stopping
      • 검증 손실(Val loss)이 개선 멈추면 조기 종료
      • 지나친 외우기 방지(L2)와 비슷한 효과를 보이기도 함
  1. Dropout
      • 학습 중 확률 p로 일부 노드(또는 가중치 연결)를 무작위로 0
      • 많은 작은 모델을 앙상블한 효과 → 과적합 감소
  1. BatchNorm/Weight Decay(=L2)
      • BatchNorm 자체가 정규화는 아니지만 학습 안정화로 과적합이 줄어드는 경우 많음
        • 매 미니배치마다 조금씩 다른 평균, 분산 값이 들어감 → 입력에 노이즈를 주는 효과와 같음
      • Weight Decay: 딥러닝에서 L2와 동일 개념

E. 앙상블

  1. Bagging: 다른 부트스트랩 샘플로 여러 모델 → 평균
      • 랜덤 포레스트가 대표적(트리의 앙상블)
  1. Boosting: 이전 모델이 틀린 샘플을 점점 더 잘 맞추도록 가중
      • XGBoost, LightGBM, CatBoost 등
  1. Stacking: 여러 모델의 출력 → 다른 모델이 종합

F. 모델 선택 기준

  • 데이터 적합도(로그우도)와 모델 크기(파라미터 수 k)를 함께 고려
AIC=2k2lnL,BIC=(lnn)k2lnLAIC = 2k - 2\ln L, \quad BIC = (\ln n)k - 2\ln L
 

추천 글

BlogPro logo
Made with BlogPro

태그