머신러닝 대회를 시작할 때, 평가 지표를 잘 못 잡으면 과적합, 데이터 누수, 신뢰 없고 너무 느린 평가 지표가 되어 버린다.
제대로 된 평가 지표를 잡고 시작하기 위해 반드시 들어가야 하는 기능들이 무엇이 있는지 정리해보자.
1. 데이터 분할 (Data Splitting)
- 전체 데이터를 학습용(train), 검증용(validation), 테스트용(test)으로 나누는 과정
- 학습용 데이터에만 모델을 적합(fit)하고, 검증용·테스트용 데이터로만 평가함으로써 “학습 중 보지 못한” 데이터에서의 성능을 측정
- 분할 없이 전체 데이터를 모두 사용해 학습하면 검증 시에도 이미 학습한 정보를 참조하게 되어 데이터 누수가 발생하고, 실제 성능보다 과도하게 낙관적인 지표가 산출
2. Stratified K-Fold 교차검증 (Cross-Validation, CV)
- 데이터를 K개의 폴드(fold)로 나누어, 각 폴드를 검증용으로 돌아가며 사용하며 모델을 K번 반복 학습·평가하는 기법
- 단일한 홀드아웃(Hold-out) 분할이 우연히 편향된 샘플을 만들 가능성을 줄이고, 다양한 분할에서의 평균 성능을 통해 더 안정적인 모델 평가가 가능
- 단일 분할만 쓸 경우, 특정 분할에 과적합되었는지 알기 어려워 모델이 실제 배포 환경에서 성능 저하를 일으킬 가능성이 높아짐
- 고객 단위·장소 단위 등 그룹이 있거나, 과거→미래 예측처럼 순서가 있는 경우엔 일반 Stratified K-Fold 대신 GroupKFold·TimeSeriesSplit을 써야 함.
- 그리드/랜덤/베이지안 서치 등을 CV 바깥에서 수행하면, “검증 세트”를 하이퍼파라미터 탐색에도 계속 쓰는 꼴이 되어 평가가 편향.
- CV 과정에서도 검증에 사용되지 않은 완전한 “제3의” 데이터셋을 남겨야, 하이퍼파라미터 튜닝이나 모델 선택 과정에서 절대 참조하지 않는 진정한 최종 성능 추정이 가능 ( 누락 시: CV 스코어만 보고 최종 모델을 결정하면, 그 CV 절차에 과도하게 맞춰져 실제 배포 시 성능이 떨어질 수 있음. )
3. 정규화 (Normalization / Scaling)
- 각 특성(feature)의 스케일을 맞추기 위해 평균 0·분산 1, Min-Max 스케일링 등을 적용하는 과정
- 대부분의 ML 알고리즘은 특성 스케일에 민감하기 때문에, 정규화가 없으면 특정 변수에 지나친 가중치가 부여되어 학습이 왜곡될 수 있음
- 정규화를 분할 전 전체 데이터에 적용하면 검증 데이터의 통계 정보가 학습에 유입되어 데이터 누수가 발생하므로, 반드시 학습 세트에만 fit하고 검증·테스트 세트에 transform해야 함.
4. OOF(Out-of-Fold) 예측
- K-폴드 CV 과정에서 각 폴드가 검증(fold) 역할을 할 때, 그 폴드에서 얻은 예측치를 모아 전체 데이터에 대한 “OOF 예측”을 만드는 기법
- OOF 예측은 모델이 직접 학습하지 않은 데이터에 대한 성능을 집계하므로, 단일 분할보다 편향된 성능 추정이 줄어듬.
- OOF 예측 없이 단순 CV 점수만 사용할 경우, 스태킹 앙상블 등 고급 기법에서 외부 검증용 “메타 특징”으로 활용할 수 없으며, 내부 평가가 실제 성능을 과대평가할 수 있음.
- 전통적인 전역(target) 인코딩은 학습 데이터 전체의 레이블 통계를 사용하므로, 반드시 CV 과정 중 각 훈련 폴드 내 OOF 예측으로 통계를 계산하고 검증 폴드에 적용
5. 혼동 행렬 및 클래스별 지표(Precision, Recall, F1 등)
- 분류 모델의 예측 결과를 True Positive, False Positive, True Negative, False Negative 네 가지로 구분해 행렬 형태로 요약한 도구, 이를 바탕으로 계산한 클래스별 Precision·Recall·F1 Score를 함께 확인
- 단일 정확도(accuracy)만으로는 불균형 클래스에서의 성능을 파악하기 어렵기 때문에, 정밀도(precision)와 재현율(recall) 같은 지표를 직접 시각화
- 혼동 행렬 없이 단일 지표만 보는 경우, 특정 클래스에 과적합하거나 오분류 패턴을 놓쳐 모델의 약점을 인지하지 못해 신뢰할 수 없는 평가가 이루어짐.
6. Precision–Recall 곡선 및 PR-AUC
- 다양한 임계값(threshold)에 따른 정밀도와 재현율의 변화를 시각화하고, AUC 면적으로 요약.
- 불균형 문제에서는 ROC AUC보다 PR AUC가 모델 민감도 평가에 더 유용.
7. 균형 정확도(Balanced Accuracy)
- 민감도(TPR)와 특이도(TNR)의 평균으로 정의되며, 클래스 비율에 상관없이 무작위 추측 대비 0.5 기준을 제공하므로, 불균형 상황에서도 전체 성능을 한눈에 파악 가능.
8. Early Stopping 및 모델 체크포인트
- early_stopping_rounds를 설정해 검증 폴드 성능이 하락하기 시작하면 학습을 중단해야 과적합을 막을 수 있음.
- 누락 시: 지정한 최대 트리 수(또는 에포크)까지 무조건 학습해, 검증 폴드에 과도하게 적합될 수 있음.
9. 난수 시드 고정 및 재현성 보장
- 폴드 분할·샘플링·모델 초기화 등 모든 랜덤 요소에 시드를 고정해야, 실험 간 성능 비교가 제대로 이루어짐.
- 누락 시: 실험 반복 시 스코어가 크게 들쭉날쭉해, 안정적인 평가가 불가능
'머신러닝, 딥러닝' 카테고리의 다른 글
| 머신러닝 Task에서 효과적이었던 기법 (0) | 2025.07.15 |
|---|---|
| [논문 정리] Neural Message Passing for Quantum Chemistry(MPNN) (3) | 2025.07.07 |
| [논문 매일 읽기 19일차] Llama 2: Open Foundation and Fine-Tuned Chat Models (0) | 2025.04.29 |
| [논문 매일 읽기 18일차] The Llama 3 Herd of Models (0) | 2025.04.29 |
| [논문 매일 읽기 17일차] (TreeSHAP) From local explanations to global understanding with explainable AI for trees (0) | 2025.04.24 |