[kakao x goorm] 모델 성능평가와 일반화 오류 완전 정리
오늘은 머신러닝 모델을 어떻게 평가하고, 학습 데이터에 너무 맞추거나(과적합) 또는 충분히 학습하지 못하는(과소적합) 문제를 어떻게 이해하고 다뤄야 하는지에 대해 배웠다.
이론적으로도 중요하지만, 실무에서는 이 개념들을 제대로 알고 있어야 성능 좋은 모델을 만들 수 있기 때문에 개념부터 실제 적용 방법까지 하나씩 정리해봤다.
1. 데이터 셋 구성의 기본
머신러닝 모델을 개발할 때 가장 먼저 해야 할 일 중 하나가 데이터셋을 적절히 나누는 작업이다.
이 구성이 제대로 되어야 모델이 학습을 잘하고, 과적합 없이 일반화된 성능을 보여줄 수 있다.
Training Set (학습 세트)
- 모델이 패턴을 학습할 수 있도록 제공되는 데이터셋
- 전체 데이터의 약 60~80%를 사용
- 이 데이터를 기반으로 모델의 파라미터가 조정된다
Validation Set (검증 세트)
- 학습 중 모델의 성능을 확인하고, 과적합 여부를 판단하는 데 사용된다
- 하이퍼파라미터 튜닝과 조기 종료(Early Stopping) 판단 등에 활용된다
- 학습 데이터에는 포함되지만 모델 파라미터 학습에는 사용되지 않는다
Test Set (테스트 세트)
- 학습이 완료된 모델을 실제로 평가하기 위해 사용하는 최종 데이터셋
- 학습 및 검증 과정에서는 절대 사용되지 않아야 함
- 실제 서비스 환경에서의 모델 성능을 유추하는 데 쓰인다
2. 검증 방법의 종류
단순히 데이터를 나누는 것만으로는 충분하지 않다.
모델이 얼마나 일반화 성능을 갖고 있는지 확인하기 위해 다양한 검증 전략이 사용된다.
검증 방식 | 설명 | 장점 | 단점 |
Holdout | 데이터를 학습용/테스트용으로 나누어 한 번만 사용 | 빠르고 간단 | 결과의 신뢰도가 낮을 수 있음 |
K-Fold Cross Validation | 전체 데이터를 k개로 나눈 후, 모든 조합을 번갈아 학습/검증 | 모든 데이터를 학습/검증에 활용 | 연산량이 많아짐 |
Stratified Sampling | 클래스 비율을 유지하며 데이터를 나눔 | 불균형 데이터셋에 효과적 | 다중 레이블일 때 구현이 복잡 |
Bootstrap | 데이터에서 중복을 허용한 채 여러 번 샘플링하여 평가 | 적은 데이터로도 성능 추정 가능 | 과적합 가능성 있음 |
3. 모델 성능 평가 지표
모델의 성능을 평가할 때는 단순히 정확도(Accuracy)만을 보는 것이 아니라, 여러 지표들을 상황에 맞게 함께 고려해야 한다.
Confusion Matrix (혼동 행렬)
예측값과 실제값을 조합한 표로, 대부분의 지표들이 이 행렬을 기반으로 계산된다.
실제 / 예측 | Positive | Negative |
Positive | TP (True Positive) | FN (False Negative) |
Negative | FP (False Positive) | TN (True Negative) |
주요 지표 요약
지표 | 의미 | 계산식 |
Accuracy | 전체 예측 중 맞춘 비율 | (TP + TN) / 전체 |
Precision | 양성으로 예측한 것 중 실제 양성의 비율 | TP / (TP + FP) |
Recall | 실제 양성 중 모델이 맞춘 비율 | TP / (TP + FN) |
F1 Score | Precision과 Recall의 조화 평균 | 2 * (P * R) / (P + R) |
AUC / ROC | 민감도와 위양성률 간의 관계를 그래프로 표현 | ROC 아래 면적(AUC)이 클수록 좋은 모델 |
4. 과적합과 과소적합
모델이 학습 데이터에만 치우쳐 성능이 실제 데이터에서 떨어지거나, 반대로 너무 단순해서 기본적인 패턴도 잡지 못하는 상황이 자주 발생한다.
과적합 (Overfitting)
- 학습 데이터에 너무 잘 맞아서 일반화 성능이 떨어지는 경우
- 복잡한 모델, 적은 학습 데이터, 정규화 부족 등이 원인
- 학습 데이터 정확도는 높지만 테스트 데이터 정확도는 낮아짐
해결 방법
- 모델 복잡도 줄이기
- 정규화 (L1, L2)
- 드롭아웃, 조기 종료(Early Stopping)
- 더 많은 학습 데이터 확보
과소적합 (Underfitting)
- 모델이 너무 단순해서 학습 데이터조차 제대로 학습하지 못하는 경우
- 전체적으로 정확도가 낮고, 학습/테스트 모두 성능이 좋지 않다
해결 방법
- 더 복잡한 모델 구조 사용
- 더 많은 특성(feature) 추가
- 학습을 더 오래 진행
5. Bias-Variance Trade-off
모델의 오류는 크게 편향(Bias)과 분산(Variance)으로 나뉜다.
이 둘은 상반되는 개념이며, 항상 균형을 고려해 모델을 구성해야 한다.
- Bias가 높을 때: 모델이 너무 단순해서 패턴을 제대로 학습하지 못함 (Underfitting)
- Variance가 높을 때: 모델이 너무 복잡해서 학습 데이터의 노이즈까지 학습함 (Overfitting)
현실에서는 이 둘 사이에서 일반화 성능이 가장 좋은 지점을 찾는 것이 중요하다.
모델 복잡도를 조절하거나, 규제 기법을 적용하여 이 균형을 조정할 수 있다.
오늘의 회고
지금까지는 모델의 정확도가 높으면 좋은 모델이라고만 생각했지만, 오늘 배운 내용을 통해 정확도 하나만으로는 모델을 평가하기에 부족하다는 걸 확실히 느꼈다.
데이터가 불균형할 때 정확도는 오히려 잘못된 판단을 유도할 수 있다는 점, 그리고 Precision과 Recall의 균형이 중요한 이유도 체감할 수 있었다.
또한 과적합과 과소적합의 개념을 정확히 이해하면서, 실전에서 어떤 증상이 나타났을 때 어떤 문제가 원인인지, 어떤 방향으로 개선해야 할지를 판단할 수 있는 기준이 생긴 것 같다.
다음 회차에서는 하이퍼파라미터 튜닝을 통해 이론을 실제 모델에 적용해보는 과정을 다룰 예정인데, 오늘 배운 개념들이 튼튼한 기초가 되어줄 것 같다.
단순한 이론 암기를 넘어서, 실질적인 문제 해결 능력을 기를 수 있는 기반이 마련된 날이었다.