ㅇ과적합(Overfitting): 머신러닝 또는 딥러닝 모델이 학습 데이터(training data)에 지나치게 적응하여, 새로운 데이터(테스트 데이터 또는 실제 환경)에서 일반화 성능이 저하되는 현상
즉, 모델이 훈련 데이터의 패턴뿐만 아니라 노이즈(noise)나 특이한 패턴까지 학습하여 새로운 데이터에 대해 잘 예측하지 못하는 문제가 발생한다
[과적합 원인]
- 훈련 데이터 부족
데이터 샘플 수가 적을수록 모델이 특정한 데이터 패턴만 학습하여 일반화 능력이 떨어짐
- 모델 복잡도 과다
모델이 너무 복잡하면(예: 뉴럴 네트워크의 계층 수가 많거나, 너무 많은 매개변수 사용) 불필요한 패턴까지 학습하게 됨
- 훈련 데이터의 노이즈 학습
훈련 데이터에 포함된 노이즈까지 학습하여 테스트 데이터에서는 성능이 낮아짐
- 훈련과 테스트 데이터의 분포 차이
실제 환경과 훈련 데이터의 분포가 다르면 모델이 특정 패턴에 맞춰져 일반화가 어려움
[과적합 징후 - 판단하는 대표적인 방법들]
1) 훈련 데이터 성능과 테스트 데이터 성능 차이
훈련 데이터에서 매우 높은 정확도를 보이지만, 테스트 데이터에서는 성능이 크게 저하될 경우 과적합을 의심할 수 있음
2) Loss 값 비교
훈련 데이터에 대한 손실(Loss)은 줄어드는데, 검증 데이터(validation set)의 손실이 일정 수준 이상 증가하면 과적합 가능성이 높음
3) 모델이 지나치게 복잡한 경우
불필요하게 많은 매개변수를 포함한 모델은 과적합 가능성이 큼
[과적합을 방지하는 대표적인 방법]
ㅇ 더 많은 데이터 확보(Data Augmentation)
학습 데이터를 늘리거나, 데이터 증강(data augmentation)을 통해 다양한 샘플을 추가하면 모델이 보다 일반화됨
ㅇ 정규화(Regularization) 기법 사용
- L1, L2 정규화: 모델의 가중치(weight)가 과도하게 커지는 것을 방지하여 복잡도를 줄임
- Dropout: 뉴럴 네트워크에서 일부 뉴런을 랜덤하게 제외하여 특정 뉴런의 의존도를 줄임
[데이터베이스] 표준화 명세서와 정규화 과정
1. 데이터 표준화 명세서 예시 (명명 규칙)테이블 명: 복수형 사용 (students, subjects, professors, enrollments)컬럼 명: 소문자 및 스네이크 케이스 사용 (student_id, course_code, professor_id 등)데이터 타입: 일관
claremont.tistory.com
ㅇ 적절한 모델 선택
너무 복잡한 모델을 사용하지 않고, 데이터 크기에 적합한 모델을 선택하는 것이 중요함
ㅇ 훈련 조기 종료(Early Stopping)
검증 데이터의 성능이 일정 이상 감소하기 시작하면 학습을 조기에 종료하여 과적합을 방지
ㅇ 교차 검증(Cross Validation)
데이터를 여러 개의 부분으로 나누어 서로 다른 부분에서 학습 및 평가를 반복하여 모델 성능을 검증
ㅇ Feature Selection(특징 선택)
너무 많은 특징(feature)을 포함하면 모델이 불필요한 정보를 학습할 가능성이 높아지므로, 중요한 특징만 선택하여 학습
(과적합의 실제 사례)
- 이미지 분류 모델에서의 과적합
훈련 데이터에서 특정 배경이나 색상 패턴을 학습한 모델이 새로운 이미지에서 예측 성능이 떨어지는 경우
- 자연어 처리(NLP)에서의 과적합
특정 문장 구조나 단어 빈도를 학습하여 새로운 문장에서는 일반화되지 않는 경우
- 주식 예측 모델에서의 과적합
특정 시장 패턴을 학습했지만, 새로운 경제 환경에서는 예측 성능이 낮아지는 경우
과적합은 머신러닝과 딥러닝 모델에서 자주 발생하는 문제이며, 일반화 성능을 저하시켜 실전에서 성능이 기대보다 낮아지는 원인이 된다. 이를 방지하기 위해 데이터 증강, 정규화, 적절한 모델 선택, 조기 종료 등 다양한 기법을 적용할 수 있다. 적절한 하이퍼파라미터 튜닝과 검증 방법을 통해 과적합을 방지하는 것이 중요하다.
+ "과소적합은 과적합의 반대이다"
과소적합(Underfitting): 머신러닝 모델이 훈련 데이터(training data)를 충분히 학습하지 못하여, 훈련 데이터와 테스트 데이터 모두에서 성능이 낮은 상태
즉, 모델이 데이터의 패턴을 제대로 학습하지 못해서 일반화 성능이 떨어지는 문제
'인공지능 > 머신러닝' 카테고리의 다른 글
[머신러닝] kNN(k-Nearest Neighbors, k-최근접 이웃) 알고리즘 (0) | 2025.02.17 |
---|---|
[머신러닝] scikit-learn 라이브러리(머신러닝의 기초와 근간) (1) | 2025.01.02 |
[머신러닝] Gradient Boosting Regressor Model(학습 데이터 수가 적을 때 유용) (0) | 2024.11.22 |