マイクロ平均とは?計算方法・マクロ平均との違いをわかりやすく解説

マイクロ平均とは?計算方法・マクロ平均との違いをわかりやすく解説

AIの初心者

「マイクロ平均」ってなんですか?平均なのに、普通の平均と違うのでしょうか。

AI専門家

マイクロ平均は、分類モデルの評価で使う考え方だよ。クラスごとの点数を先に平均するのではなく、正解や間違いの数を全体で合計してから評価するんだ。

AIの初心者

全体でまとめて見る、ということですね。AIではどんな場面で使うのですか?

AI専門家

画像分類や文章分類のように、犬・猫・鳥、政治・経済・スポーツなど複数の種類を判定するモデルでよく使うよ。全データに対して、モデルがどれくらい正しく分類できたかを見たいときに役立つんだ。

複数クラスの分類結果を一つに集計してマイクロ平均で評価するイメージ

マイクロ平均とは?全データをまとめて見る評価指標

マイクロ平均とは、機械学習の分類問題で、複数のクラスの結果をまとめてから適合率、再現率、F1値などを計算する方法です。英語では micro average と呼ばれます。

たとえば、犬・猫・鳥を分類するモデルを評価するとします。マイクロ平均では、犬だけ、猫だけ、鳥だけの点数を別々に平均するのではなく、すべての予測結果を一度合計します。そのうえで、全体としてどれだけ正しく分類できたかを計算します。

ここで大切なのは、「平均」という名前が付いていても、クラスごとの点数を単純に足して割る方法ではないことです。マイクロ平均は、先に正解数や誤分類数を全体で集めるため、データ件数の多いクラスの影響を強く受けるという特徴があります。

マイクロ平均で何を計算するのか

分類モデルの評価では、よく次のような指標を使います。

指標 意味
適合率 モデルが「そのクラスだ」と予測したもののうち、実際に正しかった割合
再現率 本来そのクラスであるデータのうち、モデルが正しく見つけられた割合
F1値 適合率と再現率のバランスを見るための調和平均

マイクロ平均では、各クラスで得られた TP、FP、FN を合計してから、これらの指標を計算します。TP は正しく当てた数、FP は誤ってそのクラスだと予測した数、FN は本来そのクラスなのに見逃した数です。

つまり、クラスごとの得意不得意を細かく見るよりも、データ全体に対するモデルの総合的な振る舞いを知るための指標だと考えると理解しやすくなります。

マイクロ平均の計算方法

TP、FP、FNを合計して適合率、再現率、F1値を計算する流れ

マイクロ平均の計算は、次の順番で進めます。

  1. クラスごとに TP、FP、FN を数える
  2. すべてのクラスの TP、FP、FN をそれぞれ合計する
  3. 合計した値を使って、適合率、再現率、F1値を計算する

式で表すと、マイクロ適合率、マイクロ再現率、マイクロF1値は次のようになります。

\(
\mathrm{Micro\ Precision} = \frac{\sum TP}{\sum TP + \sum FP}
\)
\(
\mathrm{Micro\ Recall} = \frac{\sum TP}{\sum TP + \sum FN}
\)
\(
\mathrm{Micro\ F1} = \frac{2 \times \mathrm{Micro\ Precision} \times \mathrm{Micro\ Recall}}{\mathrm{Micro\ Precision} + \mathrm{Micro\ Recall}}
\)

ここで使うのは、各クラスの指標そのものではなく、各クラスで数えた件数の合計です。そのため、件数が多いクラスの結果は、全体のスコアに大きく反映されます。

なお、1つのデータに必ず1つの正解ラベルが付き、モデルも1つだけ予測する単一ラベルの多クラス分類では、マイクロ適合率、マイクロ再現率、マイクロF1値が正解率と同じ値になることがあります。これは、全体で見た正解数と誤分類数の関係が一致しやすいためです。

犬・猫・鳥の分類で見る計算例

犬、猫、鳥のデータ数が異なる分類結果を全体で集計する例

具体例として、犬100枚、猫50枚、鳥10枚の画像を分類するモデルを考えます。モデルが犬を90枚、猫を40枚、鳥を8枚正しく分類できたとします。

全体の正解数だけを見ると、正しく分類できた画像は 90 + 40 + 8 = 138 枚です。全体の画像数は 100 + 50 + 10 = 160 枚なので、単純な全体正解率は 138 / 160 = 0.8625 になります。

この例では、犬のデータが最も多いため、犬の分類結果が全体スコアに強く影響します。鳥は10枚しかないので、鳥の成績が少し悪くても、全体スコアには大きく表れにくくなります。

この性質は、全体の処理性能を見たいときには便利です。一方で、鳥のような少数クラスを重要視する場合は、マイクロ平均だけでは不十分です。クラス別の再現率やマクロ平均も合わせて確認する必要があります。

マクロ平均との違い

マイクロ平均とマクロ平均の集計方法の違いを比較する図

マイクロ平均とよく比較されるのがマクロ平均です。どちらも複数クラスの評価に使われますが、計算する順番が違います。

評価方法 計算の考え方 見えやすいこと 注意点
マイクロ平均 全クラスの TP、FP、FN を合計してから指標を計算する データ全体での総合的な性能 少数クラスの悪さが埋もれやすい
マクロ平均 クラスごとに指標を計算し、その値を平均する 各クラスを同じ重みで見た性能 データ数が少ないクラスの結果にも大きく左右される

たとえば、ニュース記事を「政治」「経済」「地域イベント」に分類するモデルがあるとします。政治と経済の記事が多く、地域イベントの記事が少ない場合、マイクロ平均は記事数の多い政治・経済の結果を強く反映します。

一方、マクロ平均では、政治、経済、地域イベントを同じ重みで扱います。そのため、地域イベントの分類が苦手なら、全体件数が少なくてもスコアに表れやすくなります。

どちらが常に正しいというものではありません。全体の処理品質を知りたいならマイクロ平均、クラスごとの公平な性能差を見たいならマクロ平均、というように目的で使い分けます。

マイクロ平均が向いている場面

マイクロ平均は、全体としてどれだけ正しく処理できているかを重視する場面に向いています。たとえば、日々大量の問い合わせをカテゴリ分類するシステムでは、すべての問い合わせに対する総合的な分類性能を確認したいことがあります。

ニュース分類、商品カテゴリ分類、画像分類、ログ分類など、処理件数が多く、全体の運用品質を把握したいタスクでは、マイクロ平均が分かりやすい指標になります。データ件数に比例した見方になるため、実際に多く発生するクラスの改善がスコアに反映されやすいからです。

また、複数ラベル分類のように、1つのデータに複数のラベルが付く問題でもマイクロ平均はよく使われます。ラベルごとの出現数が大きく異なる場合でも、全ラベルの予測結果をまとめて評価できるためです。

マイクロ平均の注意点

少数クラスの問題がマイクロ平均の全体スコアに埋もれる注意点

マイクロ平均の大きな注意点は、少数クラスの失敗が見えにくいことです。データ件数が多いクラスで高い性能を出していると、件数が少ないクラスの性能が低くても、全体スコアは高く見える場合があります。

たとえば、医療診断支援や不正検知のように、発生件数は少ないが見逃しの影響が大きいクラスがあります。このようなタスクでマイクロ平均だけを見ると、重要な少数クラスの再現率が低いことに気づきにくくなります。

そのため、マイクロ平均は「データの偏りを完全に補正する指標」ではありません。むしろ、データ件数の多いクラスを強く反映する指標です。元記事で例に挙げられていたようなデータの偏りがある場面では、全体像をつかむために役立ちますが、少数クラスの評価には別の確認が必要です。

他の指標とあわせて見ると判断しやすい

実務では、マイクロ平均だけでモデルの良し悪しを決めるより、複数の指標を組み合わせて判断するのが一般的です。特に、次のような指標を一緒に見ると、モデルの弱点を発見しやすくなります。

併用したい指標 確認できること
クラス別の適合率・再現率 特定クラスだけ苦手になっていないか
マクロ平均 各クラスを同じ重みで見たときの性能
重み付き平均 クラス件数を重みに入れた平均的な性能
混同行列 どのクラスをどのクラスと間違えているか

たとえば、全体のマイクロF1値が高くても、混同行列を見ると「鳥を猫と間違えやすい」と分かることがあります。このような情報は、データ追加、ラベル設計、特徴量の見直し、モデル改善の優先順位を決める手がかりになります。

まとめ

マイクロ平均は、複数クラスの分類結果を全体で合計し、適合率、再現率、F1値などを計算する評価方法です。クラスごとの点数を平均するのではなく、TP、FP、FN をすべて集めてから計算する点が特徴です。

全体性能を把握しやすく、分類モデルの総合的な評価に役立ちます。一方で、データ件数の多いクラスの影響を受けやすく、少数クラスの問題が見えにくいという弱点もあります。

マイクロ平均を見るときは、マクロ平均、重み付き平均、クラス別指標、混同行列も合わせて確認しましょう。そうすることで、全体として良いモデルなのか、特定のクラスに弱点が残っているのかを判断しやすくなります。

更新履歴

日付 内容
2025年2月1日 初回公開
2026年5月10日 計算式と比較表を補い、少数クラスの見落としに触れる形へ更新