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{벌점}
잘 맞추되 복잡하면 벌금을 냄

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

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

추천 글

BlogPro logo