マクロ・マイクロ平均の使い分け

最終更新: 1 分で読めます このページを編集

マルチクラスやマルチラベルの評価指標では、average 引数で「macro」「micro」「weighted」「samples」などの平均化戦略を選択できます。それぞれの意味を理解し、用途に応じて正しく選択しましょう。


1. 平均化戦略の概要 #

average計算方法特徴
micro全サンプルの TP/FP/FN を合算して計算サンプル数の多いクラスが優先される
macroクラスごとの指標を単純平均すべてのクラスを同じ重みで扱う
weightedクラスごとの指標をサンプル数で重み付け平均クラス不均衡を反映しつつ、極端なクラスの影響を抑える
samplesマルチラベル用。サンプル単位で平均1 サンプルに複数ラベルがある場合に有効

2. Python での指定方法 #

from sklearn.metrics import precision_score, recall_score, f1_score

for avg in ["micro", "macro", "weighted"]:
    f1 = f1_score(y_true, y_pred, average=avg)
    print(avg, f1)

デフォルトでは二値分類は average="binary"、多クラスでは average="weighted"(一部関数は None)になります。希望する平均化戦略を明示的に指定すると安心です。


3. 使い分けの指針 #

  • micro:全体の正解率に近い感覚。大規模データで平均的な性能を素早く確認したいとき。
  • macro:少数派クラスを重視。各クラスを公平に扱いたいとき。
  • weighted:クラス比を反映しつつ、少数派の指標も見たいとき。実務でのバランス指標として使いやすい。
  • samples:マルチラベルでサンプル単位の平均が欲しいとき(例:1 件のニュース記事ごとのタグ一致度)。

4. 注意点とベストプラクティス #

  • Macro 平均だけを見ていると、実際に出現頻度の高いクラスのパフォーマンスが把握しづらい。Macro と Weighted を併用するのがおすすめ。
  • Micro 平均はクラス不均衡で多数派に引きずられやすいため、混同行列やクラス別スコアも必ず確認する。
  • レポートでは平均化戦略を明記し、意思決定者が数字を誤解しないようにする。

まとめ #

  • average パラメータによって指標の意味が大きく変わるため、目的に合わせて使い分ける。
  • Macro はクラス平等、Micro は全体重視、Weighted は実務バランス、Samples はマルチラベル用。
  • 複数の平均化結果を併記し、モデルの性能を多角的に判断しよう。