🔖

正解率、再現率、適合率、F値について

に公開

正解率、再現率、適合率、F値について

内容・対象読者

本文には、以下の評価指標の意味と使用場面について解説しています。

  • 正解率(Accuracy)
  • 再現率(Recall)
  • 適合率(Precision)
  • F値(F-measure)

混同行列

例として、ある医師が患者の診断をしており、病気の陰性(negative)陽性(positive)を判断している状況を考えてください。この医者の優秀さを表すための指標がこれらの値です。

これらの値を正確に理解するために、「医師の判定」と「実際に患者が病気にかかっていたか否か」を4通りの組み合わせで表現してみます。

医師は陽性と判定し、実際に陽性だった場合 (TP: true-positive)
医師は陽性と判定したが、実際には陰性だった場合 (FN: false-positive)
医師は陰性と判定したが、実際には陽性だった場合 (FP: false-negative)
医師は陰性と判定し、実際に陰性だった場合 (TN: true-negative)

これを、以下のような行列形式で書いたものを「混同行列」と呼びます。

正解率(Accuracy)

正解率とは「医者がどの程度正しいことを言っているか」を表す指標です。
具体的には以下のように書きます。

\mathrm{Accuracy} = \frac{\mathrm{TP} + \mathrm{TN}}{\mathrm{TP} + \mathrm{TN} + \mathrm{FP} + \mathrm{FN}}
注意点

この指標は陰性と陽性の割合が極端に違っている場合、ほとんど意味を持ちません。

例えば、99%の患者が元気で、1%の患者だけ重篤な病に侵されている場合を考える。医者は全員の患者に対し「陰性」と判定を下せば「正解率99%の医者」ということになるが、実際には重篤な患者を見過ごしてしまっており、「良い医者」と言うことはできません。

そこで「陽性のものを見逃さない」ことに焦点を当てた指標が登場します。

再現率(Recall)

再現率とは「陽性の患者のうち、陽性と診断された患者の割合」を表す指標です。
具体的には、以下のように書きます。

\mathrm{Recall} = \frac{\mathrm{TP}}{\mathrm{TP} + \mathrm{FN}}
特徴

この指標は「陽性の患者を見逃すこと(false-negative)のコストが高い場面」で重視されます。
つまり、本当に陽性である対象を漏らさず検出することが求められる場面で使われます。

重視される場面の例)

  • 病気のスクリーニング検査
    病気を見逃すと重大な健康被害につながるため、できるだけ多くの患者を陽性と判定し見逃しを減らすことが重要。

  • 製造業の欠陥品検査
    欠陥品を見逃すと品質問題や事故につながるため、欠陥品は可能な限り検出したい。

注意点

再現率を上げると、多くの陽性を検出できますが、その分「偽陽性(false-positive)」も増えやすいです。
例えば、病気の検査で感度を高めると元気な人を陽性と誤判定することが増えます。

適合率(Precision)

適合率とは「医者が陽性と判定した患者のうち、本当に陽性だった患者の割合」を表す指標です。
具体的には、以下のように書きます。

\mathrm{Precision} = \frac{\mathrm{TP}}{\mathrm{TP} + \mathrm{FP}}
特徴

この指標は「陰性の患者を陽性と判定してしまうこと(false-positive)のコストが高い場面」で重視されます。
つまり、陰性のものを陽性と判定しないように検出することが求められる場面で使われます。

重視される場面の例)

  • スパムメール検出
    スパムメールと判定されたメールが実際には重要なメールだった場合、ユーザーにとって大きな損失となるため、誤検知(偽陽性)を減らすことが重要。このため適合率を高めたい。

  • 詐欺検出システム
    正常な取引を誤って詐欺と判定すると顧客に迷惑がかかるため、誤検知を抑えるために適合率を重視する。

注意点

適合率を高めると、陽性と予測したものはほぼ正しくなりますが、陽性を見逃す「偽陰性(false-negative)」が増えやすいです。
例えば、病気の検査で検査を厳しくすると陽性なのに陰性と判定される人が増えます。

F値(F-measure)

この指標は「適合率(Precision)と再現率(Recall)の調和平均」を表す指標です。
適合率と再現率のバランスを評価したい場合に用いられます。
具体的には、以下のように書きます。

\mathrm{F_{1}} = \frac{2}{ \frac{1}{\mathrm{Precision}} + \frac{1}{\mathrm{Recall}} } = \frac{2 \cdot \mathrm{Precision} \cdot \mathrm{Recall}}{\mathrm{Precision} + \mathrm{Recall}}
特徴

この指標は「適合率と再現率のどちらも重要で、バランス良く評価したい場面」で重視されます。
単純にどちらか一方だけを高めるのではなく、両方の性能を総合的に評価できます。

重視される場面の例)

  • 情報検索システム
    検索結果が多すぎてノイズが多いと使いづらく、少なすぎると情報が不足するため、適合率と再現率のバランスが重要。

  • 自然言語処理の分類タスク
    クラス分類の精度を総合的に評価する際に使われることが多い。

注意点

F値(\mathrm{F_{1}}スコア)は適合率と再現率のバランスを示しますが、どちらか一方が極端に低いと小さくなります。
また、\mathrm{F_{1}}スコアは適合率と再現率を同等に重視する場合の指標であり、片方をより重視したい場合は加重平均の\mathrm{F_{\beta}}スコアが使われます。

\mathrm{F_{\beta}} = \frac{1 + \beta^2}{ \frac{1}{\mathrm{Precision}} + \frac{\beta ^ 2}{\mathrm{Recall}} } = \frac{(1 + \beta ^ 2) \cdot \mathrm{Precision} \cdot \mathrm{Recall}}{ \beta ^ 2 \cdot \mathrm{Precision} + \mathrm{Recall}}
GitHubで編集を提案

Discussion