- Micro vs Macro Average2022년 08월 18일
- sue991
- 작성자
- 2022.08.18.:58
인공지능 모델을 평가하는 대표적인 평가방법 중 하나는 F1-score이다.
F1-score란 precision과 recall의 조화평균이다.
$$ F1 Score = 2* \frac {Precision*Recall}{Precision+Recall}$$
sklearn의 classification report 모듈을 사용한다면 내가만든 모델의 결과를 쉽게 확인할 수 있다.
>>> from sklearn.metrics import classification_report >>> y_true = [0, 1, 2, 2, 2] >>> y_pred = [0, 0, 2, 2, 1] >>> target_names = ['class 0', 'class 1', 'class 2'] >>> print(classification_report(y_true, y_pred, target_names=target_names)) precision recall f1-score support class 0 0.50 1.00 0.67 1 class 1 0.00 0.00 0.00 1 class 2 1.00 0.67 0.80 3 accuracy 0.60 5 macro avg 0.50 0.56 0.49 5 weighted avg 0.70 0.60 0.61 5
이때,
precision, recall, f1 score
는 점수,support
는 개수,accuracy
는 평균인 것은 알겠다. 그런데,macro avg
와weighted avg
는 처음보는 사람이 있을 것이다.인공지능에서 분류(classification) task에서는 데이터 불균형(Data-imbalanced) 문제가 있을 가능성이 크다.
다시말해, 각 클래스 마다 데이터의 개수 차이가 많이 나는 것이다. 따라서 단순히 각 데이터마다의 정확도를 따져 평균을 구하는 것과, 각 class 별 정확도를 구한 것의 평균을 내는 것에는 큰 차이가 있을 것이다.Macro Average
macro average는 각 클래스마다 개수를 고려하지 않고, 모든 클래스의 평균의 평균을 내는 방법이다.
즉 위 결과에서 각 클래스 별 f1-score의 평균을 내는 것이다.
$$ macro avg = \frac {0.67 + 0.00 + 0.80}{3} = 0.49 $$이 결과는 최종 평가점수에 데이터 불균형 문제를 전혀 반영하지 않고 있다.
따라서 데이터 불균형 문제가 심할수록 그 점을 반영하지 못하기 때문에 평가 점수의 신뢰성이 낮을 가능성이 크다.Micro Average
micro average는 각 class의 평균이 아닌 모든 데이터의 평균을 내는 방법이다.
따라서 각 데이터가 잘 맞췄나를 보는 것이다. 따라서 위 결과에서는accuracy
와 같다고 할 수 있다.정리하자면 데이터 불균형 문제가 심한 데이터일 수록 macro보다는 micro average를 이용하는 것이 더 바람직하다고 볼 수 있다.
더 자세한 내용은 아래 블로그 참조:
Micro, Macro & Weighted Averages of F1 Score, Clearly Explained다음글이전글이전 글이 없습니다.댓글