Re Reference AI

評価

再現率とは

Recall

実際に陽性である事例のうち、モデルが正しく検出できた割合を示す評価指標

評価指標分類

ひとことで言うと

本当に正解であるものの中で、AIが見逃さず答えられた割合を示す指標。

概要

再現率(Recall)とは、実際に「陽性(該当する)」である事例のうち、モデルが正しく陽性として検出できた事例の割合を示す評価指標。 見逃し(偽陰性)をどれだけ抑えられているかを表す指標であり、病気の診断のように、見逃しのコストが大きいタスクで重視される。 適合率(Precision)とはトレードオフの関係になることが多く、両者をバランスよく評価するためF1スコアと組み合わせて使われることも多い。 RAGにおける検索(Retrieval)の評価でも、必要な文書をどれだけ取りこぼさず検索できたかを示す指標として用いられる。 適合率を犠牲にしてでも取りこぼしを避けたい場面(重大な副作用のある薬剤の検出等)では、再現率が重視される評価軸として選ばれる。

背景

分類モデルの性能を、単純な正解率(Accuracy)だけで評価すると、陽性の事例が少ない不均衡なデータセットでは実態を正しく反映しない場合がある。 再現率は、モデルが本来検出すべき陽性事例をどれだけ取りこぼしていないかを測る指標として、こうした場面でも有効な評価軸を提供するために整理された。

アーキテクチャ

再現率は、TP(True Positive, 正しく陽性と判定した数)を、TP+FN(False Negative, 誤って陰性と判定した数)で割った値として計算される(Recall = TP / (TP + FN))。

ワークフロー

モデルの予測結果と正解ラベルを突き合わせて混同行列(TP・FP・FN・TN)を集計 → TPとFNの数からRecall = TP / (TP + FN)を算出 → 算出したRecallを適合率F1スコアと合わせて評価。

コード例

scikit-learnで再現率を計算する

from sklearn.metrics import recall_score

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

print(recall_score(y_true, y_pred))

利点

  • モデルが本来検出すべき陽性事例を、どれだけ取りこぼさず検出できているかを直接示せる
  • 見逃しのコストが大きいタスクで、モデルの実用上の適性を評価しやすい
  • scikit-learn等の主要ライブラリで手軽に計算できる

欠点

  • 再現率だけを高めようとすると、陽性と判定する基準を緩めすぎて誤検知(偽陽性)が増えやすい
  • 適合率と合わせて見なければ、モデル全体の性能を正しく評価できない
  • 陽性事例が極端に少ない不均衡データでは、閾値の設定次第でスコアが不安定になりやすい

比較

  • 適合率適合率と再現率はトレードオフの関係になることが多く、両方を確認する必要がある
  • F1スコアF1スコアは、適合率と再現率の調和平均として、両者をバランスよく評価する指標
  • リランカー検索・リランキングの評価では、必要な文書をどれだけ取りこぼさず検索できたかを示す再現率が重視される

関連用語

適合率F1スコアリランカー

よくある質問

再現率だけを見ればいい?

いいえ。 再現率だけを重視すると誤検知(偽陽性)が増えやすいため、適合率F1スコアと合わせて確認することが一般的。

再現率が重視される代表的な場面は?

病気の診断や重大な副作用の検出等、見逃し(偽陰性)のコストが誤検知(偽陽性)のコストより著しく大きい場面で、再現率が優先的に重視される傾向がある。

参考文献

関連Zenn記事