📏 평가지표(Performance Metrics) 완전 정리
“문제를 잘 풀었는지 숫자로 증명하는 방법”
🧭 0. 먼저, 어떤 문제인가요?
- 🎯 분류(Classification) — 스팸/정상, 이탈/유지 등 범주 예측
- 📈 회귀(Regression) — 매출액, 체중 등 연속값 예측
- 🧩 군집(Clustering) — 비슷한 것끼리 묶기
- 🔎 순위/추천(Ranking/Recommender) — 추천 리스트/검색 품질
- ⏰ 시계열(Time-series) — 예측 오차를 기간별로 평가
문제 유형이 다르면 지표도 달라집니다!
🧮 1. 분류 평가 — 혼동행렬부터! (이진분류)
🔷 1-1. 혼동행렬(Confusion Matrix)
| 실제 양성(P) | 실제 음성(N) | |
| 예측 양성 | TP (진양성) | FP (거짓양성) |
| 예측 음성 | FN (거짓음성) | TN (진음성) |
🔹 1-2. 핵심 지표
- 🎯 정확도(Accuracy) = (TP+TN)/(P+N)
- → 불균형 데이터에 취약 ⚠️
- 🔍 정밀도(Precision) = TP/(TP+FP)
- → “양성이라 한 것 중 진짜 비율”
- 🚨 재현율(Recall, Sensitivity) = TP/(TP+FN)
- → “실제 양성 중 잡아낸 비율”
- 🧯 특이도(Specificity) = TN/(TN+FP)
- → “실제 음성 중 음성으로 맞춘 비율”
- ⚖️ F1 = 2·(Precision·Recall)/(Precision+Recall)
- → 정밀도·재현율 균형 지표
- 🎚️ Fβ: 재현율을 β배 더 중요하게
- → β>1이면 재현율 중시, β<1이면 정밀도 중시
- 🎢 ROC-AUC: 모든 임계값에서 TPR vs FPR 곡선 면적
- → 클래스 불균형에 비교적 강함
- 📈 PR-AUC: Precision-Recall 곡선 면적
- → 희소 양성(극불균형) 에 더 적합
- 🧮 Log Loss(=Cross-Entropy): 확률 예측 품질
- → “확률 보정(calibration)”까지 반영
- 🧠 MCC(Matthews Corr. Coef.): -1~1, 불균형에도 견고
- 🧾 Cohen’s κ(카파): 우연 일치 보정 정확도
🧷 1-3. 임계값(Threshold) 선택 팁
- 기본 0.5가 정답이 아님!
- 🪄 Youden’s J(TPR−FPR 최대), F1 최대점, 업무 비용(코스트) 기준 등으로 조정
- 의료/사기탐지처럼 FN 비용이 크면 → 임계값 낮춰 Recall↑
🧯 1-4. 다중분류(Multi-class) 평균 방식
- Macro: 클래스별 지표 평균(클래스 균등 가중)
- Weighted: 샘플 수로 가중 평균(큰 클래스에 영향↑)
- Micro: 전체 TP/FP/FN 합쳐서 계산(샘플 단위)
불균형이면 macro-F1 또는 weighted-F1 권장!
📈 2. 회귀 평가 — 오차를 어떻게 볼까?
| 지표 | 의미/특징 | 해석 포인트 |
| 📏 MAE | 절대오차 평균 | 이상치에 덜 민감, 직관적 |
| 📉 MSE | 제곱오차 평균 | 큰 오차에 더 페널티 |
| 📉 RMSE | √MSE, 단위 동일 | 스케일 큰 오차 민감, 자주 쓰임 |
| 📘 R² | 설명력(0~1+) | 음수도 가능(형편없는 모델) |
| 🧮 Adj. R² | 자유도 보정 R² | 불필요 변수 추가 패널티 |
| 📦 RMSLE | 로그 스케일 오차 | 상대오차에 민감, 0 이슈 적음 |
| 🧊 MedAE | 중앙값 절대오차 | 이상치 강건(robust) |
| 🎯 MAPE | 평균 절대 백분율 오차 | 0 근처 값에 취약(폭주) |
| 🔁 sMAPE | 대칭형 MAPE | 0 근처 완화, 0~200% |
| 🧷 Huber Loss | MAE+MSE 절충 | 이상치 완충(δ 기준) |
| 🎯 Pinball(Quantile) Loss | 분위수 회귀 | 예: P90 예측에 적합 |
지표는 업무 목표와 데이터 분포에 맞춰 선택!
(0 많은 데이터는 RMSLE / sMAPE, 이상치 많으면 MAE/MedAE/Huber)
🧩 3. 군집(Clustering) 평가
내부 지표(라벨 없음)
- 🧭 Silhouette: −1~1, 클수록 군집 분리/응집 좋음
- 🧊 Davies–Bouldin(DBI): 낮을수록 좋음
- 📈 Calinski–Harabasz(CH): 높을수록 좋음
외부 지표(정답 라벨 있음)
- 🧮 ARI(Adjusted Rand Index): 군집-정답 일치(우연 보정)
- 🧷 NMI(Normalized Mutual Info): 정보량 기준 일치도
- 🧼 Purity: 각 군집 내 다수 라벨 비율(단, 군집 수↑에 민감)
🔎 4. 순위/추천(Ranking·Recommender)
- 🎯 Precision@k / Recall@k: 상위 k개 리스트 품질
- 👑 MRR (Mean Reciprocal Rank): 첫 정답의 역순위 평균
- 🏆 MAP (Mean Avg. Precision): 문서별 AP 평균(검색)
- 📚 NDCG@k: 관련성 등급(grade) 반영한 순위 품질
- 📈 Hit Rate@k: 상위 k 안에 하나라도 맞췄나?
추천/검색은 정답의 위치가 중요 → NDCG/MAP이 더 적합!
🔧 5. 보정(Calibration)과 비용(Cost)
- 🎯 Calibration: “0.8라고 하면 실제로 80% 맞느냐”
- 지표: Brier Score(낮을수록 좋음), Calibration Curve
- 💸 Cost-sensitive: FP/FN 비용 다르면 커스텀 비용함수로 최적 임계값 선택
- 📊 Lift/Gain: 마케팅 타깃팅에서 상위 구간 효과
🧪 6. 미니 예시 (이진 분류)
데이터: P=100, N=900 (불균형). 모델 A와 B 비교.
- A: Accuracy 95% (좋아보임) / Recall 20%, Precision 50%, F1=0.29
- B: Accuracy 92% / Recall 60%, Precision 40%, F1=0.48
➡️ 불균형 상황이면 Accuracy보다 F1/PR-AUC/Recall이 중요!
➡️ 실제 업무가 “양성 놓치면 큰일”이면 B 선택이 타당.
🧱 7. 실전 체크리스트 ✅
- ⛳ 업무 목적 먼저: 정밀도 vs 재현율 어느 쪽이 더 중요한가?
- 🎚 임계값 조정으로 F1/Recall/Precision 트레이드오프 최적화
- ⚖ 불균형이면 PR-AUC / F1 / Recall 강조, 샘플링·가중치 활용
- 🧮 다중분류는 macro/weighted/micro 평균방식 명시
- 🧪 회귀는 MAE/RMSE/R² 조합 + 이상치/0 값 고려(RMSLE/sMAPE)
- 🧪 군집·추천은 업무 적합 지표(NDCG/Silhouette 등) 선택
- 🧯 확률 예측은 Calibration 확인(Brier/Calibration curve)
🌈 한 줄 요약
“평가지표는 문제·데이터·비용구조에 맞춰 고르는 전략 도구다.”
불균형=PR-AUC/F1, 확률=LogLoss/Calibration, 회귀=MAE/RMSE,
군집=Silhouette/ARI, 추천=NDCG/MAP ✨