AI 및 Data Analysis/Deep Learning
[F1 score] Macre vs. Micro vs. Weighted
doraemin_dev
2025. 5. 28. 17:54
- Macro F1
각 클래스별 f1 (𝑓1ₖ)을 먼저 구한 뒤, 단순히 평균을 냅니다.
${Macro-F1} = \frac1K\sum_{k=1}^K f1_k$
→ 클래스 크기(샘플 수)에 상관없이 모든 클래스를 균등하게 다룹니다.
- Micro F1
클래스별 True Positive, False Positive, False Negative 수를 모두 합산한 뒤 f1을 계산합니다.
→ 실제로는 전체 샘플에 대한 f1 이고, 다중 분류에선 accuracy와 같은 값이 됩니다.
- Weighted F1
각 클래스 f1ₖ에 클래스별 샘플 수(지원도, support) 를 곱한 뒤 합, 그리고 전체 샘플 수로 나눕니다.
${Weighted-F1} = \sum_{k=1}^K \frac{n_k}{N} \, f1_k$
→ 클래스 비율을 반영해서, 다수 클래스 성능에 더 큰 비중을 둡니다.
정리:
- 클래스 간 공평한 비교가 필요하면 average='macro'
- 전체 데이터셋에서의 종합 성과(accuracy 비슷)를 보고 싶으면 average='micro'
- 불균형 반영된 전체 성과를 보고 싶으면 average='weighted'
- sklearn 기본 f1_score의 average 기본값은 binary 이므로, 멀티클래스에선 명시가 필요합니다.
예제로 자세한 설명
https://www.kdnuggets.com/2023/01/micro-macro-weighted-averages-f1-score-clearly-explained.html