Re Reference AI

評価

F1スコアとは

F1 Score / F値

適合率と再現率の調和平均により、両者をバランスよく評価する指標

評価指標分類

ひとことで言うと

適合率再現率のバランスをとってまとめた、モデルの精度を表す指標。

概要

F1スコア(F1 Score, F値)とは、適合率(Precision)と再現率(Recall)の調和平均によって算出される評価指標。 適合率再現率はトレードオフの関係になりやすく、どちらか一方だけを見ていては分類モデルの性能を適切に評価できないため、両者をバランスよく1つの数値にまとめた指標としてF1スコアが広く使われている。 分類タスクだけでなく、情報検索や固有表現抽出等、適合率再現率が定義できる様々なタスクの評価に用いられる。 調和平均を用いることで、適合率再現率のどちらか一方が極端に低い場合にスコアが大きく下がる性質を持ち、単純な相加平均よりも両者のバランスの悪さを反映しやすい。

背景

適合率再現率はどちらか一方を高めようとすると他方が犠牲になりやすく、モデル同士を単一の指標で比較したい場面では両者を統合した指標が必要とされた。 F1スコアは、単純な平均(算術平均)ではなく調和平均を用いることで、バランスの悪い(片方が極端に低い)モデルのスコアを低く抑えるよう設計されている。

アーキテクチャ

F1スコアは、適合率をP、再現率をRとしたとき、F1 = 2 × (P × R) / (P + R)という調和平均の式で計算される。 適合率再現率のどちらか一方が極端に低い場合、F1スコアも低くなる。

ワークフロー

モデルの予測結果と正解ラベルから適合率再現率をそれぞれ算出 → 両者の調和平均をとりF1 = 2 × (P × R) / (P + R)を計算 → 単一のスコアとしてモデル間の比較や閾値の調整に利用。

コード例

scikit-learnでF1スコアを計算する

from sklearn.metrics import f1_score

y_true = [1, 0, 1, 1, 0]
y_pred = [1, 0, 0, 1, 1]

print(f1_score(y_true, y_pred))

利点

  • 適合率再現率のバランスを1つの数値で評価でき、モデル間の比較がしやすい
  • 分類・検索・抽出等、幅広いタスクの評価に応用できる
  • scikit-learn等の主要ライブラリで手軽に計算できる

欠点

  • 適合率再現率を均等に重視するため、タスクによってどちらかを重視したい場合には調整版(Fベータスコア等)が必要になる
  • F1スコア単体では、適合率再現率どちらが低いために値が下がっているのかは分からない
  • クラスが3つ以上の多クラス分類では、マクロ平均・マイクロ平均等の集計方法によって値の意味合いが変わる

比較

  • 適合率F1スコアは、適合率と再現率の調和平均として、両者をバランスよく評価する指標
  • 再現率F1スコアは、適合率と再現率の調和平均として、両者をバランスよく評価する指標

関連用語

適合率再現率NLP

よくある質問

F1スコアが高ければ十分?

適合率再現率のバランスは示せるが、タスクによっては見逃し(偽陰性)と誤検知(偽陽性)のどちらのコストが大きいかが異なるため、目的に応じて適合率再現率も個別に確認することが望ましい。

適合率と再現率のどちらかを重視したい場合は?

F1スコアを一般化したFベータスコアを使うと、ベータの値によって適合率再現率のどちらをどれだけ重視するかを調整できる。

参考文献

関連Zenn記事