Macro, macro는 기본적으로 실제 대비 예측을 어떻게 헀는지 평가를 위한 지표들로,
Macro는 라벨끼리 모아서 성능을 평가한 후, n개의 라벨이 얻은 예측값(T or P)를 계산 라벨별 메트릭(P, R, F1, A)을 평균 낸 것Micro는 라벨을 구분하지 않고 전체 예측한 값(T or P)를 모두 모아서 메트릭(P, R, F1, A)로 계산한 것Label-wise 평가는 라벨로만 예측한 값에 대해 메트릭(P, R, F1,A)를 계산한것문장: "John Smith lives in New York"
토큰: ["John", "Smith", "lives", "in", "New", "York"]
라벨: ["B-PERSON", "I-PERSON", "O", "O", "B-LOCATION", "I-LOCATION"]
예측: ["B-PERSON", "I-PERSON", "O", "O", "B-LOCATION", "I-LOCATION"]
실제: ["B-PERSON", "I-PERSON", "O", "O", "B-LOCATION", "I-LOCATION"]
→ 모든 엔티티 토큰(B-PERSON, I-PERSON, B-LOCATION, I-LOCATION)을 합쳐서 전체적으로 TP/FP/FN을 계산
Micro Precision = 전체 TP / (전체 TP + 전체 FP)
Micro Recall = 전체 TP / (전체 TP + 전체 FN)
Micro F1 = 2 × (Micro Precision × Micro Recall) / (Micro Precision + Micro Recall)
정의: 각 클래스별로 계산한 후 평균
토큰 예시:
문장: "John Smith lives in New York"
토큰: ["John", "Smith", "lives", "in", "New", "York"]
라벨: ["B-PERSON", "I-PERSON", "O", "O", "B-LOCATION", "I-LOCATION"]
예측: ["B-PERSON", "I-PERSON", "O", "O", "B-LOCATION", "I-LOCATION"]
실제: ["B-PERSON", "I-PERSON", "O", "O", "B-LOCATION", "I-LOCATION"]
→ 각 라벨별로 개별 계산:
B-PERSON: TP=1, FP=0, FN=0 → F1=1.0
I-PERSON: TP=1, FP=0, FN=0 → F1=1.0
B-LOCATION: TP=1, FP=0, FN=0 → F1=1.0
I-LOCATION: TP=1, FP=0, FN=0 → F1=1.0
O: TP=2, FP=0, FN=0 → F1=1.0
→ Macro F1 = (1.0 + 1.0 + 1.0 + 1.0 + 1.0) / 5 = 1.0
계산 방식: 클래스별 Precision/Recall/F1의 평균
특징:
용도: 클래스 불균형 상황에서 공정한 평가
공식:
Macro Precision = (P1 + P2 + ... + Pn) / n
Macro Recall = (R1 + R2 + ... + Rn) / n
Macro F1 = (F1_1 + F1_2 + ... + F1_n) / n