일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스
- softeer
- Data Science
- AI Mathematics
- 자바
- 부스트캠프
- 깨끗한 코드
- 파이썬
- 티스토리챌린지
- 데이터과학
- Python
- Boostcamp AI
- 데이터사이언스
- 클린코드
- 문자열
- 코세라
- 오블완
- IBM
- 데이터 사이언스
- Coursera
- 소프티어
- data science methodology
- 클린코드 파이썬
- 알고리즘
- programmers
- Clean Code
- 코테
- string
- Java
- 코딩테스트
- Today
- Total
떼닝로그
평가 지표 - F1 Score (Micro, Macro, Weighted) 본문
일단은 데이콘에 있는 경진대회들만 대상으로 보고 있는데,
리더보드 평가 산식의 종류는 크게 F1-Score(Macro, Weighted), ROC-AUC, Accuracy, LogLoss인 것 같다.
그 중에서도 가장 많이 사용되고 있는 건 Macro F1-Score인 것 같고...
아리까리했던 개념을 오늘 한번 정리해보는 걸로~
F1-Score in Machine Learning
- F1 Score은 기계학습에서 사용하는 평가 지표이다.
- 한 쪽으로 치우쳐진 데이터셋에서 분류 모델이 얼마나 좋은 성능을 가지고 있는가에 대해 평가한다.
- 여기서 나오는 개념은 Accuracy(정확도), Precision(정밀도), Recall(재현율)이다.
Confusion Matrix
- confusion matrix는 accuracy(정확도), precision(정밀도), recall(재현율)을 계산하기 위해 필요한 matrix
- True Positive(TP) : 정답이 Positive일 때 모델이 정답을 맞힌 경우
- True Negative(TN) : 정답이 Negative일 때, 모델이 정답을 맞힌 경우
- False Positive(FP) : 정답이 Negative일 때, 모델이 정답을 맞히지 못한 경우
- False Negative(FN) : 정답이 Positive일 때, 모델이 정답을 맞히지 못한 경우
- 정리하자면, True/False는 모델의 정답 여부를, Positive/Negative는 실제 정답이라고 생각하면 될 것 같다.
Accuracy (정확도)
- 정확도는 모델이 예측한 결과 중 실제 정답의 비율을 보여준다.
- 특정 클래스를 올바르게 예측하는 모델은 높은 정확도를 가질 수 있지만, 다른 클래스에 대한 세부 정보를 포착하지 못할 수 있다.
- 이처럼, 한 클래스가 다른 클래스보다 더 우세할 때 원하는 결과가 나오지 않을 수 있다.
- Accuracy = (TP+TN) / (TP+TN+FP+FN)
Precision (정밀도)
- 모델의 Positive인 예측의 품질에 중점을 두어, 실제로 얼마나 많은 'positive' 예측이 정확했는지 파악한다.
- 스팸 이메일 탐지 등 오탐을 최소화하는 상황에서 사용된다.
- Precision = TP / (TP+FP)
Recall (재현율)
- 정답이 Positive인 것들 중 모델이 실제 Positive를 얼마나 잘 예측하는지를 파악한다.
- 의료 검사 등에서는 높은 recall를 필수로 한다.
- Recall = TP / (TP+FN)
F1-Score by combining Precision and Recall
- f1-score는 정밀도와 재현율을 하나의 지표로 결합함으로써 불균형한 데이터셋에서 모델의 전반적인 성능을 파악할 수 있게 한다.
- F1-Score = 2 * (Precision*Recall) / (Precision+Recall)
Various types of F1-Score
- Micro F1-Score은 클래스 간 샘플 수의 불균형을 고려하여 전체 모델의 성능을 평가한다.
- Macro F1-Score은 클래스 간 중요도를 동일하게 고려함으로써 각 클래스의 F1-Score 평균을 계산한다.
- Weighted F1-Score는 각 클래스 간 샘플 수의 불균형을 고려하여 가중치를 줌으로써 각 클래스의 영향력을 조정한다.
from sklearn.metrics import f1_score
y_true = [0, 1, 2, 2, 2, 2, 1, 0, 2, 1, 0]
y_pred = [0, 0, 2, 2, 1, 2, 1, 0, 1, 2, 1]
f1_per_class = f1_score(y_true, y_pred, average=None)
f1_micro = f1_score(y_true, y_pred, average='micro')
f1_macro = f1_score(y_true, y_pred, average='macro')
f1_weighted = f1_score(y_true, y_pred, average='weighted')
# f1 score per class : [0.66666667 0.28571429 0.66666667]
# micro-average f1 score : 0.5454545454545454
# macro-average f1 score : 0.5396825396825397
# weighted-average f1 score : 0.5627705627705627
참고 : https://www.geeksforgeeks.org/machine-learning/f1-score-in-machine-learning/
https://www.geeksforgeeks.org/machine-learning/confusion-matrix-machine-learning/
'개발로그 > 기타 이론 정리' 카테고리의 다른 글
[Python] " is None " vs " == None " (2) | 2024.11.27 |
---|---|
[CS] 객체 지향 설계의 SOLID 규칙 (OO 5원칙) (2) | 2024.11.08 |
[C#] Virtual(가상) vs Abstract(추상) vs Interface(인터페이스) (4) | 2024.10.08 |
[CS] 객체 지향 프로그래밍의 특징 (2) | 2024.07.05 |
[Python] Python 기술 면접 대비 (2) | 2024.04.24 |