머신러닝 또는 딥러닝 모델을 개발할 때 가장 기본적으로 요구되는 요소는 해당 모델이 실제 문제를 얼마나 잘 해결하는가입니다. 하지만 "정확하다"는 것을 수치로 표현하려면 적절한 성능 측정 지표가 필요합니다. 단순한 정확도(Accuracy)만으로는 모델의 성능을 판단하기 어려운 경우가 많습니다. 특히 클래스 불균형이 심한 데이터셋에서는 정확도가 높은데도 불구하고 실제로는 쓸모없는 모델일 수 있습니다.
예를 들어 암 환자 진단 모델을 만든다고 가정해봅시다. 전체 환자 중 99%가 건강한 경우, 모든 사람을 "건강함"이라고 예측해도 정확도는 99%입니다. 하지만 암 환자를 놓치는 심각한 문제를 내포하고 있죠. 이럴 때 정밀도(Precision), 재현율(Recall), F1 Score와 같은 지표들이 더 의미 있는 정보를 제공합니다.
1. 혼동 행렬(Confusion Matrix)의 이해
분류 모델의 성능 지표를 설명하기 전에 혼동 행렬의 개념을 이해해야 합니다. 이 행렬은 실제 클래스와 예측 클래스의 조합을 다음과 같이 정리합니다:
실제 Positive 실제 Negative
예측 Positive TP(True Positive) FP(False Positive)
예측 Negative FN(False Negative) TN(True Negative)
이 네 가지 지표를 바탕으로 다양한 성능 측정 지표가 정의됩니다.
2. 정확도 (Accuracy)
정의: 전체 예측 중 맞춘 비율
수식: $\frac{\textbf{(TP+TN)}}{\textbf{(TP+TN+FP+FN)}}$
정확도는 간단하고 직관적인 지표지만 클래스 불균형에서는 유효하지 않을 수 있습니다. 예를 들어 95%가 정상이고 5%가 이상인 경우, 전부 정상이라고 예측해도 정확도는 95%로 나타납니다.
3. 정밀도 (Precision)
정의: 모델이 Positive로 예측한 것 중 실제로 Positive인 비율
수식: $\frac{\textbf{(TP)}}{\textbf{(TP+FP)}}$
정밀도는 잘못된 Positive 예측(FP)을 얼마나 억제하는지를 보여줍니다. 스팸 필터링, 부정거래 탐지 등에서 정밀도가 중요합니다. 잘못된 알림을 최소화해야 할 때 사용됩니다.
예시: 스팸 메일 필터가 100개의 메일 중 20개를 스팸이라고 예측했는데, 그 중 실제로 스팸인 메일이 18개라면 정밀도는 18/20 = 90%입니다.
4. 재현율 (Recall, Sensitivity)
정의: 실제 Positive 중에서 모델이 얼마나 많이 Positive라고 예측했는가
수식: $\frac{\textbf{(TP)}}{\textbf{(TP+FN)}}$
재현율은 놓친 실제 Positive(FN)를 얼마나 줄였는지를 보여줍니다. 의료 진단, 결함 탐지 등에서 재현율이 중요합니다. 가능한 모든 문제를 탐지하고 싶을 때 사용합니다.
예시: 실제 암 환자가 50명인데 그 중 45명을 모델이 암으로 예측했다면 재현율은 45/50 = 90%입니다.
5. F1 Score
정의: 정밀도와 재현율의 조화 평균 (Harmonic Mean)
수식: $2*\frac{\textbf{(Precision*Recall)}}{\textbf{(Precision+Recall)}}$
F1 Score는 정밀도와 재현율 사이의 균형을 보여주는 지표로, 두 값이 모두 높을 때 F1 Score도 높습니다. 특히 정밀도와 재현율 중 어느 하나가 낮을 경우, F1 Score는 민감하게 반응합니다.
예시: 정밀도가 80%, 재현율이 60%이면 F1 Score는 약 68.6%입니다.
클래스 불균형 문제가 있는 경우, 예를 들어 Positive가 매우 적은 상황에서 Accuracy는 높은 반면 F1 Score는 낮게 나올 수 있으며, 이 경우 F1 Score가 모델 성능을 더 정확하게 평가합니다.
6. 클래스 불균형 문제와 지표 선택
클래스가 균형 잡혀 있다면 Accuracy, Precision, Recall, F1 Score 등 대부분의 지표가 유효하게 작동합니다. 하지만 클래스 비율이 95:5처럼 불균형한 경우에는 다음과 같은 이유로 F1 Score와 같은 지표가 더 적절합니다:
- Accuracy는 다수 클래스를 위주로 예측해도 높게 나올 수 있습니다.
- Precision만 높이면 놓치는 경우(FN)가 많아질 수 있습니다.
- Recall만 높이면 불필요한 FP가 많아질 수 있습니다.
- F1 Score는 Precision과 Recall의 균형을 요구하여 더 정밀한 성능 평가가 가능합니다.
7. 다중 클래스(Multi-class) 분류에서의 확장
다중 클래스 문제에서는 클래스마다 Precision, Recall, F1 Score를 계산하고 이를 평균(Macro, Micro, Weighted) 방식으로 통합합니다.
- Macro 평균: 각 클래스의 성능을 동일하게 반영
- Micro 평균: 전체 TP, FP, FN을 기반으로 평균
- Weighted 평균: 각 클래스의 개수에 비례하여 평균
클래스마다 데이터 분포가 다르면 Weighted 평균이 현실적인 평가에 더 적합합니다.
8. 마무리 및 추천 참고자료
다양한 분류 문제에서 정밀도, 재현율, F1 Score 등의 지표는 단순한 정확도보다 훨씬 정교하게 모델 성능을 평가할 수 있도록 도와줍니다. 모델이 적용될 실제 환경과 문제의 특성에 따라 적절한 지표를 선택하는 것이 무엇보다 중요합니다.
추천 참고자료:
- Scikit-learn Metrics 설명: https://scikit-learn.org/stable/modules/model_evaluation.html
- Google Machine Learning Crash Course: Precision & Recall
- Wikipedia - F1 Score: https://en.wikipedia.org/wiki/F1_score
'AI' 카테고리의 다른 글
트랜스포머 아키텍처 완벽 가이드 | Transformer Architecture Guide (0) | 2025.05.08 |
---|---|
RF-DETR 알고리즘 심층 분석 및 DETR, D-FINE과의 비교 (0) | 2025.05.06 |
D-FINE: 객체 탐지의 새 지평을 여는 DETR 기반 알고리즘 (0) | 2025.05.06 |
MLflow 사용법과 예제 - 딥러닝/머신러닝 실험 관리 및 MLOps 모니터링 가이드 (0) | 2025.05.05 |
이미지 분류 모델 - 모델 저장, 추론, 하이퍼파라미터 튜닝까지 (0) | 2025.05.04 |