Overfitting(오버피팅)

조은별·2025년 5월 10일
post-thumbnail

오버피팅(Overfitting)과 일반화 성능 정리

이 문서는 머신러닝 강의를 실습하면서 정리한 오버피팅(Overfitting) 개념과,
이를 이해하고 극복하기 위한 바이어스-베리언스 트레이드오프,
그리고 실제 모델 학습 시 나타나는 현상에 대한 내용


1. 오버피팅이란?

  • 현재 학습한 데이터에서는 매우 높은 정확도를 보이지만,
    새로운 데이터에서는 예측 성능이 급격히 떨어지는 현상을 말한다.
  • 모델이 학습 데이터의 노이즈나 특이값까지 과하게 학습해버리는 것이 원인

→ 즉, 모델이 너무 복잡해서 지나치게 훈련 데이터에 최적화되어 있는 상태


2. 언더피팅 vs 오버피팅

  • 언더피팅(Underfitting): 너무 단순한 모델 → 학습 자체를 충분히 못함
  • 오버피팅(Overfitting): 너무 복잡한 모델 → 훈련 데이터에는 잘 맞지만 새로운 데이터에는 성능 저하

3. 바이어스와 베리언스 개념

바이어스 (Bias)

  • 예측값과 실제값 사이의 차이
  • 너무 단순한 모델은 바이어스가 큼 (언더피팅의 원인)

베리언스 (Variance)

  • 훈련 데이터 변화에 따른 예측값의 변화 정도
  • 너무 복잡한 모델은 베리언스가 큼 (오버피팅의 원인)

→ 모델의 목적은 낮은 바이어스와 낮은 베리언스를 동시에 달성하는 것


4. 시각화 예시로 이해하는 바이어스-베리언스

  • 바이어스가 높으면 전체적으로 예측이 실제값과 멂
  • 베리언스가 높으면 예측값의 분산이 큼

모델 학습에서는 이 둘 간의 균형을 조절해야 한다.


5. 오버피팅의 발생 원인 및 해결 전략

주요 원인

  • 지나치게 복잡한 모델 구조
  • 학습 데이터 부족
  • 에폭 수 과다 (너무 많이 학습)
  • 입력 특성이 너무 많음

해결 방법

  • Regularization (정규화): 계수값을 줄여 모델을 단순화
  • Dropout (딥러닝): 일부 뉴런을 무작위로 끔 → 과적합 방지
  • Early Stopping: 검증 정확도가 떨어지기 시작하면 학습 종료
  • Cross Validation: 검증 성능 기준으로 모델 선정
  • Feature Selection: 중요한 특성만 사용

6. 계수값 줄이기 → 모델 단순화

  • 계수(세타, θ)를 줄이면 복잡한 경계가 부드러워짐
  • 이는 베리언스를 줄이고, 과적합을 완화하는 효과를 준다.
# 예: 릿지 회귀를 통한 정규화
from sklearn.linear_model import Ridge
model = Ridge(alpha=1.0)

7. 과적합 학습곡선의 전형적 패턴

  • 훈련 정확도는 계속 증가하지만,
  • 검증 정확도는 일정 시점 이후 오히려 하락하는 현상이 나타남

→ 이 지점을 기준으로 Early Stopping을 적용할 수 있음


8. Dropout의 효과 (딥러닝)

  • 학습 시 일부 뉴런을 랜덤하게 끔
  • 다양한 서브 모델들이 학습되는 효과 발생
  • 개별 뉴런이 전체 모델에 과하게 의존하지 않도록 조절

결과적으로 일반화 성능 향상 및 오버피팅 완화에 효과적임


9. 정리

항목설명
오버피팅학습 데이터엔 잘 맞지만 새 데이터엔 성능 저하
언더피팅모델이 너무 단순해서 학습이 충분히 안 됨
바이어스예측이 실제와 얼마나 먼지
베리언스예측값이 얼마나 요동치는지
해결 전략정규화, Dropout, Early Stopping, Cross Validation 등

10. 느낀 점

오버피팅은 단순히 "많이 학습하면 좋다"는 생각이 틀릴 수 있다는 점을 알려준다.
특히 바이어스와 베리언스의 개념을 통해
모델이 얼마나 복잡해야 적절한지를 데이터 기반으로 판단하는 감각이 중요하다고 느꼈다.
앞으로 모델 학습 시 반드시 학습곡선과 검증 정확도를 함께 살펴야겠다는 생각이 들었다.


profile
기록과 회고를 통해 성장하는 데이터, AI 엔지니어 지망생입니다.

0개의 댓글