見出し画像

なぜ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カーブなどがあります。

関連記事

ここから先は

0字

キカベン・読み放題

¥1,000 / 月
初月無料
このメンバーシップの詳細

この記事が気に入ったらチップで応援してみませんか?