なぜAccuracyだけではダメなのか?PrecisionとRecallの違いを説明します
今回は、正解率(Accuracy)だけでは不足な状況について簡単な例を使って解説します。
目の前に卵が100個あったとします。ほんとうは全部が生の卵のはずですが、手違いでゆで卵が混ざってしまいました。
なので、手触りだけでゆで卵を言い当てたいとします。
この際、ゆで卵をポジティブ(Positive)と呼び、生の卵をネガティブ(Negative)と呼びます。
予測の正確さを測るために、Accuracy以外にもPrecision(適合率)やRecall(再現率)を使う利点を解説します。
True Positive (真陽性)
まず、卵を一つ取り出して、手のひらに重さを感じ、「これはゆで卵(ポジティブ)です」と予測します。
卵の殻を割ってみると実際にゆで卵(ポジティブ)でした。正解です。
この時、ポジティブと予測し、本当にポジティブだったので真のポジティブ(True Positive)だったと解釈します。
True Positiveを略してTPと呼びます。
False Positive (偽陽性)
次の卵を取り上げで、「これもポジティブ(ゆで卵)です」と予測します。
しかし、今度は生の卵でした。ハズレです。
今回は、ポジティブと予測したのに、本当はポジティブではなくネガティブだったので偽のポジティブ(False Positive)だったと解釈します。
False Positiveを略してFPと呼びます。
True Negative (真陰性)
次の卵は、「ネガティブ(生の卵)」と予測しました。
そして実際に、ネガティブ(生の卵)でした。正解です。
これはネガティブと予測して、実際にネガティブだったので真のネガティブだったと解釈します。
これをTrue NegativeあるいはTNと呼びます。
False Negative (偽陰性)
今度も、「ネガティブ(生の卵)」と予測しました。
しかし、実際には、ポジティブ(ゆで卵)でした。
今回は、ネガティブと予測したのに、本当はネガティブではなくポジティブだったので偽のネガティブ(False Negative)だったと解釈します。
略してFNと呼びます。
Accuracy (正解率)
Accuracy(正解率)は、卵の予測をした全体の数のうち、正解だったものの割合です。
$$
Accuracy = \frac{TP+TN}{TP+TN+FP+FN}
$$
たとえば、100個の卵のうち、30個のゆで卵を言い当てられ(TP=30)、50個の生の卵を言い当てた(TN=50)とします。
また、5個の生の卵をゆで卵だと予測して不正解で(FP=5)、15個のゆで卵を生の卵だと予測して不正解(FN=15)でした。
よって、Accuracyの計算は以下になります。
$$
Accuracy = \frac{30+50}{30+50+5+15} = 80%
$$
Accuracyは画像分類(Image Classification)でよく使われる評価の値です。もちろん、100%に近いほど評価が高くなります。
Precision (適合率)
Precisionはポジティブと予測した時の正確さを表します。
$$
Precision = \frac{TP}{TP+FP}
$$
計算すると、約86%でなかなかの正確さですね。
$$
Precision = \frac{30}{30+5} \approx 86\%
$$
Precisionが高いのは、ゆで卵だと予測するときにかなり慎重だったからかもしれません。
実際、15個のゆで卵を生の卵だと勘違いしていました。が、それはPrecisionの計算には入ってきません。
Recall (再現率)
Recallはポジティブのケースをどれだけ漏らさずに引き当てたかを表します。
$$
Recall = \frac{TP}{TP+FN}
$$
計算すると、約67%であまり高くないですね。
$$
Recall = \frac{30}{30+15} \approx 67\%
$$
これは、ゆで卵の予測をする際に慎重すぎで、15個ものゆで卵を見逃していたためです。
なぜAccuracyだけではだめなのか?
なぜAccuracyだけではダメなのでしょうか?
ある特殊な病気の検査の例で考えましょう。この病気は100万人にひとりにしか起こりません。つまり、発生率が0.0001%です。
この場合、仮に検査の結果がつねにネガティブの予測を出したとしても、正解率が99.9999%になります。
つまり、Accuracyは役に立ちません。
ネガティブの予測しかしなければTPが0なのでPrecisionは0%になります。Recallも同様に0%です。
Precisionが高くなるようにモデルを訓練すれば、ポジティブの予測が出た時にTPである割合が高くなります。つまり、検査のポジティブ予測の信頼度が上がるわけです。
しかし、Precisionを高くするために慎重になりすぎて、ポジティブ予測をあまり出さずに本当にポジティブなケースを漏らしてしまいがちになる可能性があります。
そのために、Recallが高くなるようにモデルを訓練すれば漏れが少なくさるでしょう。
ただし、Recallを高くすることだけを狙うと問題が起きます。全てのケースをポジティブと予測してしまえばRecallは100%になるからです。なぜなら、すべての真のポジティブのケースを言い当てたからです。
その反面、本来はネガティブなケースまでポジティブと予測することになるのでPrecisionが0%になってしまいます。
よって、PrecisionとRecallのバランスが大事になります。そのために、F1スコアやROCカーブなどがあります。
関連記事
この記事が気に入ったらチップで応援してみませんか?