F1 スコアは、Precision(適合率)と Recall(再現率)の調和平均であり、両者を 1 つの数値に統合した指標です。不均衡データや、誤検知と見逃しの両方を最小化したい場面で最も頻繁に使われます。この記事では F1 スコアの数学的な意味から実践的な使い方まで解説します。
F1 スコアとは何か
F1 スコアは 2 × Precision × Recall / (Precision + Recall) で計算されます。これは Precision と Recall の調和平均です。算術平均ではなく調和平均を使う理由は、片方の値が極端に低い場合にそれを強く反映させるためです。
なぜ算術平均ではなく調和平均なのか
具体例で理解しましょう。Precision = 0.99、Recall = 0.01 のモデルを考えます。算術平均は (0.99 + 0.01) / 2 = 0.50 となり、一見「まあまあ」に見えます。しかし F1(調和平均)は 2 × 0.99 × 0.01 / (0.99 + 0.01) ≈ 0.02 となり、Recall の致命的な低さを正しく反映します。
F-beta スコア — Precision と Recall の重みを変える
F-beta スコアは F1 の一般化で、β の値で Precision と Recall の重みを調整できます。β = 1 が F1(両者を同等に重視)、β = 0.5 が F0.5(Precision を重視)、β = 2 が F2(Recall を重視)です。がん検診のように見逃しが致命的な場合は F2 を、スパムフィルターのように誤検知を避けたい場合は F0.5 を使います。
多クラス分類での F1
- 1
Macro F1
各クラスの F1 スコアを算出し、その単純平均を取ります。すべてのクラスを等しく扱うため、少数クラスの性能が反映されます。クラス間の公平性を重視する場合に適しています。
- 2
Micro F1
全クラスの TP・FP・FN を合算してから F1 を計算します。多数クラスの影響が大きく、全体的な正解率に近い値になります。クラス間のサンプル数の差が大きい場合に注意が必要です。
- 3
Weighted F1
各クラスの F1 をそのクラスのサンプル数で重み付け平均します。クラスの分布を考慮した「全体の性能」を評価したい場合に最適です。Qast のリーダーボードではこの方式が使われています。
F1 が最適なユースケース
F1 スコアは、不均衡データで Accuracy が信頼できないとき、Precision と Recall の両立が求められるとき、モデルの総合的な分類力を 1 つの数値で比較したいときに最適です。特にクラスの偏りがあるデータでは、Accuracy よりも F1 の方が実態に即した評価を提供します。
F1 の限界
F1 スコアには注意すべき限界もあります。まず TN(真陰性)を考慮しないため、陰性クラスの正確な識別力を評価できません。また、クラスの分布が変化するとスコアも変動するため、異なるデータセット間での単純比較には注意が必要です。閾値非依存の評価には AUC-ROC がより適しています。
Qast のリーダーボードでの F1 の読み方
Qast は不均衡データを自動検出し、偏りがある場合は F1 スコアをデフォルトのソート指標に設定します。リーダーボードの F1 カラムには Weighted F1 が表示され、各クラスの重要度を反映した総合評価が一目で確認できます。Macro F1 はモデル詳細ページで確認できます。
Precision と Recall の重みが異なるなら F-beta を検討しましょう。見逃しが深刻なら β = 2(F2)、誤検知が深刻なら β = 0.5(F0.5)が適切です。



