マルチクラス分類設定でのマイクロ平均とマクロ平均のパフォーマンス


102

3つのクラスでマルチクラス分類設定を試しています。クラス分布は歪んでおり、ほとんどのデータは3つのクラスのうち1つに分類されます。(クラスラベルは1,2,3で、データの67.28%がクラスラベル1に含まれ、11.99%のデータがクラス2にあり、クラス3に残ります)

このデータセットでマルチクラス分類器をトレーニングしており、次のパフォーマンスが得られています。

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

なぜすべてのマイクロ平均がわからないのか パフォーマンスは同等であり、マクロ平均パフォーマンスが非常に低い理由でもあります。


1
平均化する前に個々の真陽性などを見ることはできませんか?また、マクロ平均はミクロ平均より低い傾向があります
oW_

マイクロおよびマクロFメジャーは、テキストの分類または検索に固有のものであるか、または認識または分類の問題に使用できます.....もしそうであれば、それぞれまたはその他の参考資料の重要性を得ることができます...
idrees

1
マイクロ平均精度は、データセットの精度と同じではありませんか?私が理解していることから、マイクロ平均精度では、すべての真陽性の合計を計算し、それをすべての真陽性の合計とすべての偽陽性の合計で除算します。したがって、基本的には、正しく識別された予測の数を予測の総数で除算します。それは精度計算とどこが違うのですか?なぜ正確な値に固執するのではなく、物事をより複雑にする新しい特別な精度の用語が必要なのですか?私が平和に眠れるように、間違っていることを証明してください。
ニコゼットラー

1
@NicoZettlerあなたは正しいです。マイクロ平均精度とマイクロ平均再現率は、各データポイントが正確に1つのクラスに割り当てられたときの精度と同じです。2番目の質問については、分類にマルチラベルが付けられている場合(各データポイントに複数のラベルが割り当てられている場合)および/またはいくつかのクラスがマルチクラスの場合に除外されている場合、マイクロ平均メトリックは全体的な精度とは異なります。scikit-learn.org/stable/modules/…を参照してください。
ジョンソン

回答:


144

ミクロ平均とマクロ平均(どのようなメトリックでも)はわずかに異なるものを計算するため、それらの解釈は異なります。マクロ平均は、各クラスのメトリックを個別に計算してから平均を取得します(したがって、すべてのクラスを同等に処理します)。一方、マイクロ平均は、すべてのクラスの寄与を集約して平均メトリックを計算します。複数クラスの分類設定では、クラスの不均衡が疑われる場合(つまり、1つのクラスの例が他のクラスよりも多くなる可能性がある場合)、ミクロ平均が好ましいです。

理由を説明するために、たとえば精度取り上げます。テストすると、4つのクラスと次の番号を持つOne-vs-All(例ごとに正しいクラス出力は1つだけ)マルチクラス分類システムがあると想像してください。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)を支配する精度とほぼ一致します)。

計算上の理由から、クラス平均を計算してからマクロ平均する方が便利な場合があります。クラスの不均衡が問題であることがわかっている場合、いくつかの方法があります。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
この答えは、式をリストするだけでなく(元のコンテンツである)、マイクロとマクロの動作が異なる理由を理解するのに役立つため、より多くの賛成に値します。
ステフェン

2
これは元の質問のさまざまなマクロ値をどのように説明しますか?
-shakedzy

3
返信でスケッチしたシナリオを反転すると、小さなクラスよりも大きなクラスのパフォーマンスが優れている場合、マクロ平均よりもマイクロ平均が高いことが予想されます(質問で報告されている動作です)。マクロ値が異なることは、予想されることは多かれ少なかれです。なぜなら、さまざまなものを測定しているからです(精度、再現率など)。なぜマイクロ平均がすべて同じなのかが問題だと思います。
最も悲惨な

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スコアのドキュメントから。
ウィルク

20

元の投稿-http://rushdishams.blogspot.in/2011/08/micro-and-macro-average-of-precision.html


ミクロ平均法では、異なるセットのシステムの個々の真陽性、偽陽性、および偽陰性を合計し、それらを適用して統計を取得します。

トリッキーですが、これは非常に興味深いことがわかりました。このような情報の取得と分類の平均統計を取得できる方法は2つあります。

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

マイクロ平均Fスコアは、これら2つの数値の調和平均になります。

2.マクロ平均法

この方法は簡単です。異なるセットでシステムの精度とリコールの平均を取得するだけです。たとえば、与えられた例のシステムのマクロ平均精度と再現率は次のとおりです。

Macro-average precision=P1+P22=57.14+68.492=62.82 Macro-average recall=R1+R22=80+84.752=82.25

マクロ平均Fスコアは、単にこれら2つの数値の調和平均になります。

適合性マクロ平均法は、データセット全体でシステムがどのように実行されるかを知りたい場合に使用できます。この平均で特定の決定を行うべきではありません。

一方、データセットのサイズが異なる場合、ミクロ平均は有用な指標となります。


21
このブログ投稿を信用すべきですか?
xiaohan2012

3
うん@ xiaohan2012、彼は答えをコピーペーストしただけです。
マヌエルG

これはスタックオーバーフローに関する最初の回答でしたが、これをどのように行うかはよくわかりませんでした。編集を提案してもらえますか。受け入れます。おかげで
ラーフル・レディVemireddy

ここでのF1スコアは、一般的に使用されるマクロ平均化されたF1スコアと必ずしも同じではないことに注意してください(scikitでの実装や、このペーパーでの説明など)。通常、F1スコアはクラス/セットごとに個別に計算され、その後、異なるF1スコアから平均が計算されます(ここでは、逆の方法で実行されます。最初にマクロ平均精度/リコールを計算し、次にF1スコアを計算します)。
ミラニア

11

マルチクラス設定では、マイクロ平均精度とリコールは常に同じです。

P=cTPccTPc+cFPcR=cTPccTPc+cFNc
cはクラスラベルです。

マルチクラス設定ではすべての偽インスタンスをカウントするため、

cFPc=cFNc

したがって、P = Rです。つまり、すべての単一のFalse PredictionはクラスのFalse Positiveになり、すべてのSingle NegativeはクラスのFalse Negativeになります。バイナリ分類ケースをバイクラス分類として扱い、マイクロ平均精度を計算し、それらが同じになることを思い出す場合。

Rahulによる答えは、複数のデータセットからのバイナリ精度とリコールを平均化する場合です。その場合、ミクロ平均の精度と再現率は異なります。


2

それはそうあるべきです。私の研究でも同じ結果が得られました。最初は奇妙に思えた。ただし、マルチクラスの単一ラベル分類器の結果を微平均化する間、精度と再現率は同じでなければなりません。これは、誤分類c1 = c2(c1とc2は2つの異なるクラス)を考慮すると、誤分類はc2に関しては偽陽性(fp)であり、c1に関しては偽陰性(fn)であるためです。すべてのクラスのfnとfpを合計すると、1つのクラスに関しては各誤分類をfpとして、別のクラスに関してはfnをカウントしているため、同じ数値が得られます。


0

マクロ平均がミクロ平均よりも低い理由は、pythiestの答えでよく説明されていると思います(クラスの方が予測が優れているため、ミクロ平均が増加します)。

ただし、Precision、Recall、およびF1スコアのミクロ平均が等しいという事実は、これらのメトリックのミクロ平均が全​​体の精度をもたらすためです(micro avgはすべてのクラスを正と見なします)。PrecisionとRecallが等しい場合、F1スコアはちょうどprecision / recallと等しいことに注意してください。

「加重マクロ平均」が常に「マイクロ平均」に等しくなるかどうかという質問についてはどうでしょうか?私は別の番号でいくつかの実験を行いました。クラスと異なるクラスの不均衡と、これは必ずしも必要ではないことが判明しました。

これらのステートメントは、同じデータセットのすべてのクラスを検討しているという前提で作成されています(Rahul Reddy Vemireddyの答えとは対照的に)


0

マクロF1スコアを使用する利点は、すべてのデータポイントに等しい重みを与えることです。たとえば、F1マイクロが異なるラベルのすべてのRecallおよびPresessionの合計を個別に取得することを考えてみましょう。 T1 = 90%、T2 = 80%、T3 = 5の場合、F1 Microはすべてのクラスに等しい重みを与え、クラスの分布の偏差の影響を受けません。対数損失はクラスの小さな偏差にペナルティを科します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.