멀티 클래스 분류 설정에서 마이크로 평균 대 매크로 평균 성능


102

3 클래스로 멀티 클래스 분류 설정을 시도하고 있습니다. 클래스 분포는 대부분의 데이터가 3 개 클래스 중 1 개에 해당하므로 왜곡됩니다. (클래스 레이블은 1,2,3이며, 데이터의 67.28 %가 클래스 레이블 1에, 클래스 2에 11.99 %, 클래스 3에 남아 있음)

이 데이터 세트에서 다중 클래스 분류기를 훈련하고 있으며 다음과 같은 성능을 얻습니다.

                    Precision           Recall           F1-Score
Micro Average       0.731               0.731            0.731
Macro Average       0.679               0.529            0.565

왜 모든 Micro 평균이 있는지 잘 모르겠습니다. 성능이 같고 매크로 평균 성능이 왜 그렇게 낮은 지.


1
평균화하기 전에 개인의 진정한 긍정 등을 볼 수 없습니까? 또한, 매크로 평균 마이크로 평균보다 낮은 경향
oW_

... 있습니까 마이크로 및 매크로 F-조치 텍스트 분류 또는 검색에 특정한, 또는 우리가 서로의 중요성 또는 기타에 refrence를 얻을 수있는 곳 그렇다면 그들은 ..... 어떤 인식이나 분류 문제에 사용할 수 있습니다
이드리스

1
Micro Average Precision이 데이터 세트의 정확도와 같지 않습니까? 내가 이해 한 바에 따르면, Micro Average Precision의 경우 모든 참 긍정의 합을 계산하고 모든 참 긍정의 합과 모든 오탐의 합으로 나눕니다. 따라서 기본적으로 올바르게 식별 된 예측 수를 총 예측 수로 나눕니다. 정확도 계산과 다른 점은 무엇입니까? 왜 정확도 값을 고수하는 대신 일을 더 복잡하게 만드는 새로운 특수 정밀도 항이 필요한가? 평화롭게 잠을 잘 수 있도록 나를 잘못 증명해주세요.
Nico Zettler

1
@NicoZettler 맞습니다. 마이크로 평균 정밀도 및 마이크로 평균 리콜은 각 데이터 포인트가 정확히 하나의 클래스에 할당 될 때의 정확도와 동일합니다. 두 번째 질문과 같이 분류가 다중 레이블링 된 경우 (각 데이터 포인트에 둘 이상의 레이블이 할당 될 수 있음) 및 / 또는 다중 클래스 사례에서 일부 클래스가 제외 된 경우 마이크로 평균 메트릭이 전체 정확도와 다릅니다. scikit-learn.org/stable/modules/…를 참조하십시오 .
Johnson

답변:


144

마이크로 및 매크로 평균 (메트릭에 관계없이)은 약간 다른 것을 계산하므로 해석이 다릅니다. 매크로 평균은 각 클래스에 대해 독립적으로 메트릭을 계산 한 다음 평균을 취하므로 (모든 클래스를 동일하게 처리) 반면, 평균 평균은 모든 클래스의 기여를 집계하여 평균 메트릭을 계산합니다. 다중 클래스 분류 설정에서 클래스 불균형이 의심되는 경우 (예 : 다른 클래스보다 하나의 클래스에 대해 더 많은 예가있을 수 있음) 마이크로 평균이 바람직합니다.

이유를 설명하기 위해 정밀도 를 예로 들어 보겠습니다 . 테스트 할 때 4 개의 클래스와 다음 숫자 가 포함 된 One-vs-All (예제 당 하나의 올바른 클래스 출력 만 있음) 멀티 클래스 분류 시스템이 있다고 가정 해 보겠습니다 .Pr=TP(TP+FP)

  • 클래스 A : 1 TP 및 1 FP
  • 클래스 B : 10 TP 및 90 FP
  • 클래스 C : 1 TP 및 1 FP
  • 클래스 D : 1 TP 및 1 FP

이고 임을 쉽게 알 수 있습니다 .PrA=PrC=PrD=0.5PrB=0.1

  • 매크로 평균은 다음과 같이 계산합니다 :Pr=0.5+0.1+0.5+0.54=0.4
  • 마이크로 평균은Pr=1+10+1+12+100+2+2=0.123

이들은 정밀도에있어 상당히 다른 값입니다. 직관적으로, 거시 평균에서 클래스 A, C 및 D의 "좋은"정밀도 (0.5)는 "정확한"전체 정밀도 (0.4)를 유지하는 데 기여합니다. 이것은 기술적으로 사실이지만 (클래스 전체에서 평균 정밀도는 0.4입니다) 많은 예제가 올바르게 분류되지 않기 때문에 약간 오해의 소지가 있습니다. 이 예제는 주로 클래스 B에 해당하므로 테스트 데이터의 94.3 %를 구성하더라도 평균에 1/4 만 기여합니다. 마이크로 평균은이 클래스 불균형을 적절하게 포착하여 전체 정밀도 평균을 0.123으로 낮 춥니 다 (더 많은 클래스 B (0.1)의 정밀도와 일치).

계산상의 이유로 클래스 평균을 계산 한 다음 매크로 평균을 계산하는 것이 더 편리한 경우가 있습니다. 클래스 불균형이 문제로 알려진 경우 몇 가지 방법이 있습니다. 하나는 거시 평균뿐만 아니라 표준 편차 (3 개 이상의 클래스)를보고하는 것입니다. 다른 하나는 가중 매크로 평균을 계산하는 것입니다. 여기서 평균에 대한 각 클래스 기여는 사용 가능한 상대적 예제 수에 의해 가중됩니다. 위 시나리오에서 다음을 얻습니다.

Prmacromean=0.25·0.5+0.25·0.1+0.25·0.5+0.25·0.5=0.4 Prmacrostdev=0.173

Prmacroweighted=0.0189·0.5+0.943·0.1+0.0189·0.5+0.0189·0.5=0.009+0.094+0.009+0.009=0.123

큰 표준 편차 (0.173)는 이미 0.4 평균이 클래스 간 균일 한 정밀도에 기인하지는 않지만 가중 매크로 평균을 계산하는 것이 더 쉬울 수 있음을 나타냅니다. 본질적으로 마이크로 평균을 계산하는 또 다른 방법입니다 .


10
이 답변은 수식을 나열하는 대신 마이크로 및 매크로가 다르게 동작하는 이유를 이해하는 데 도움이되므로 더 많은지지를 받아야합니다 (원본 콘텐츠 임).
steffen

2
이것이 원래 질문의 다른 매크로 값을 어떻게 설명합니까?
shakedzy

3
응답에서 스케치 된 시나리오를 뒤집 으면 큰 클래스가 작은 클래스보다 성능이 좋으면 미시 평균이 매크로 평균 (질문에보고 된 동작)보다 높을 것으로 예상됩니다. 매크로 값이 다르다는 것은 다른 것들을 측정하기 때문에 (정밀, 리콜 ...) 예상되는 정도입니다. 왜 미시 평균이 모두 같은지 궁금합니다.
pythiest

4
불균형 데이터 세트의 경우 매크로보다 미시 평균이 선호되어야한다는 진술에 동의하지 않습니다. 실제로, F 점수의 경우, 전자가 각 클래스에 대해 동일한 중요성을 부여하기 때문에 매크로가 마이크로보다 선호되는 반면, 후자는 각 샘플에 대해 동일한 중요성을 부여합니다 (샘플 수가 많을수록 최종 점수에 더 많은 영향을 미침) 정확도와 같은 대다수 클래스를 선호합니다). 출처 : 1. cse.iitk.ac.in/users/purushot/papers/macrof1.pdf 2. clips.uantwerpen.be/~vincent/pdf/microaverage.pdf
shahensha

3
"가중 매크로 평균"이 항상 마이크로 평균과 같습니까? Scikit-Learn에서 "가중"의 정의는 약간 다릅니다. "각 레이블에 대한 메트릭을 계산하고 지원에 의해 가중치가 부여 된 평균을 찾습니다 (각 레이블에 대한 실제 인스턴스 수)." F1 점수에 대한 문서 에서.
willk

20

원본 게시물-http: //rushdishams.blogspot.in/2011/08/micro-and-macro-average-of-precision.html


마이크로 평균법에서는 여러 세트에 대해 시스템의 개별 참 긍정, 거짓 긍정 및 거짓 부정을 요약하고 적용하여 통계를 얻습니다.

까다로운, 그러나 나는 이것이 매우 흥미로운 것을 알았습니다. 이러한 평균 정보 검색 및 분류 통계를 얻을 수있는 두 가지 방법이 있습니다.

1. 마이크로 평균법

마이크로 평균법에서는 여러 세트에 대해 시스템의 개별 참 긍정, 거짓 긍정 및 거짓 부정을 요약하고 적용하여 통계를 얻습니다. 예를 들어 데이터 집합의 경우 시스템의

True positive (TP1)  = 12
False positive (FP1) = 9
False negative (FN1) = 3

그러면 정밀도 (P1) 및 리콜 (R1)은 및57.14%=TP1TP1+FP180%=TP1TP1+FN1

다른 데이터 세트의 경우 시스템의

True positive (TP2)  = 50
False positive (FP2) = 23
False negative (FN2) = 9

그러면 정밀도 (P2)와 리콜 (R2)은 68.49와 84.75가됩니다.

이제 마이크로 평균법을 사용한 시스템의 평균 정밀도와 회수율은

Micro-average of precision=TP1+TP2TP1+TP2+FP1+FP2=12+5012+50+9+23=65.96

Micro-average of recall=TP1+TP2TP1+TP2+FN1+FN2=12+5012+50+3+9=83.78

Micro-average F-Score는이 두 수치의 조화 평균입니다.

2. 매크로 평균법

이 방법은 간단합니다. 다른 세트에서 시스템의 정밀도와 리콜의 평균을 취하십시오. 예를 들어, 주어진 예제에 대한 거시 평균 정밀도와 시스템의 리콜은

매크로 평균 리콜=R1+R2Macro-average precision=P1+P22=57.14+68.492=62.82 Macro-average recall=R1+R22=80+84.752=82.25

거시 평균 F- 점수는이 두 수치의 조화 평균 일뿐입니다.

적합성 매크로 평균 방법은 시스템이 전체 데이터 세트에서 어떻게 수행되는지 알고 싶을 때 사용할 수 있습니다. 이 평균에 대한 구체적인 결정을 내리지 않아야합니다.

반면, 마이크로 평균은 데이터 집합의 크기가 다양 할 때 유용한 측정 방법이 될 수 있습니다.


21
블로그 게시물에 크레딧을 제공해야 합니까?
xiaohan2012

3
예 @ xiaohan2012, 그는 대답을 복사하여 붙여 넣었습니다.
Manuel G

이것은 스택 오버플로에 대한 첫 번째 대답이었습니다.이 작업을 수행하는 방법을 잘 모르겠습니다. 편집을 제안 할 수 있습니까? 받아들입니다. 감사합니다
라훌 레디 Vemireddy

여기서 F1 점수는 일반적으로 사용되는 매크로 평균 F1 점수 ( scikit 에서 구현 되거나이 백서 에서 설명 된 것과 동일)와 반드시 같을 필요는 없습니다 . 일반적으로 F1 점수는 각 클래스 / 세트에 대해 개별적으로 계산 된 다음 평균이 다른 F1 점수에서 계산됩니다 (여기서는 반대 방식으로 수행됨). 먼저 매크로 평균 정밀도 / 호출을 계산 한 다음 F1 점수 ).
Milania

11

다중 등급 설정에서 마이크로 평균 정밀도와 리콜은 항상 동일합니다.

P=cTPccTPc+cFPcR=cTPccTPc+cFNc
여기서 c는 클래스 레이블입니다.

다중 클래스 설정에서 모든 잘못된 인스턴스 를 계산 하므로

cFPc=cFNc

즉, P = R입니다. 즉, 모든 단일 거짓 예측은 클래스에 대해 False Positive가되고 모든 단일 부정은 클래스에 대한 False Negative가됩니다. 이진 분류 사례를 이진 분류로 취급하고 마이크로 평균 정밀도를 계산하고 다시 호출하면 동일합니다.

Rahul의 대답은 이진 정밀도의 평균을 구하고 여러 데이터 세트에서 리콜하는 경우입니다. 이 경우 미세 평균 정밀도와 리콜이 다릅니다.


2

그렇게되어야합니다. 내 연구에서도 같은 결과를 얻었습니다. 처음에는 이상해 보였다. 그러나 다중 클래스 단일 레이블 분류기의 결과를 미세 평균화하는 동안 정밀도와 회수율은 동일해야합니다. 오 분류 c1 = c2 (c1과 c2가 2 개의 다른 클래스)를 고려하면 오 분류는 c2와 관련하여 위양성 (fp)이고 c1과 관련하여 위음성 (fn)이기 때문입니다. 모든 클래스에 대해 fn과 fp를 합하면 한 클래스에 대해 각 오 분류를 fp로 계산하고 다른 클래스에 대해 fn을 계산하므로 동일한 수를 얻습니다.


0

나는 매크로 평균이 마이크로 평균보다 낮은 이유는 피티 에스트의 대답에 의해 잘 설명되어 있다고 생각합니다 (클래스를 지배하면 더 나은 예측을하므로 마이크로 평균 증가).

그러나 정밀, 리콜 및 F1 점수에 대해 마이크로 평균이 동일하다는 사실은 이러한 메트릭의 평균을 평균화하면 전체 정확도가 높아지기 때문입니다 (마이크로 평균은 모든 클래스를 양수로 간주하므로). Precision과 Recall이 같으면 F1 점수는 Precision / Recall과 같습니다.

"가중 매크로 평균"이 항상 "마이크로 평균"과 같은지에 대한 질문은 무엇입니까? 나는 다른 no로 실험을했습니다. 클래스와 다른 클래스의 불균형으로 인해 필요하지는 않습니다.

이 진술은 우리가 동일한 데이터 세트의 모든 클래스를 고려하고 있다고 가정하여 만들어졌습니다 (Rahul Reddy Vemireddy의 답변과 대조)


0

Macro F1 Score의 장점은 모든 데이터 포인트에 동일한 가중치를 부여한다는 것입니다. 예를 들어 F1 micro가 서로 다른 레이블의 모든 리콜 및 프리 세션의 합계를 독립적으로 취하므로 클래스 불균형이 있다고 생각하십시오. T1 = 90 %, T2 = 80 %, T3 = 5와 같이 F1 Micro는 모든 클래스에 동일한 가중치를 부여하며 클래스 로그 분포의 편차에 영향을받지 않습니다. 로그 손실은 클래스의 작은 편차를 페널티합니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.