キカベン
機械学習でより便利な世の中へ
G検定対策
お問い合わせ
   

なぜAccuracyだけではダメなのか?PrecisionとRecallの違いを説明します

thumb image

目の前に卵が100個あったとします。ほんとうは全部が生の卵のはずですが、手違いでゆで卵が混ざってしまいました。

なので、手触りだけでゆで卵を言い当てたいとします。

この際、ゆで卵をポジティブ(Positive)と呼び、生の卵をネガティブ(Negative)と呼びます。

1. True Positive🔝

まず、卵を一つ取り出して、手のひらに重さを感じ、「これはゆで卵(ポジティブ)です」と予測します。

卵の殻を割ってみると実際にゆで卵(ポジティブ)でした。正解です。

この時、ポジティブと予測し、本当にポジティブだったので真のポジティブ(True Positive)だったと解釈します。

True Positiveを略してTPと呼びます。

2. False Positive🔝

次の卵を取り上げで、「これもポジティブ(ゆで卵)です」と予測します。

しかし、今度は生の卵でした。ハズレです。

今回は、ポジティブと予測したのに、本当はポジティブではなくネガティブだったので偽のポジティブ(False Positive)だったと解釈します。

False Positiveを略してFPと呼びます。

3. True Negative🔝

次の卵は、「ネガティブ(生の卵)」と予測しました。

そして実際に、ネガティブ(生の卵)でした。正解です。

これはネガティブと予測して、実際にネガティブだったので真のネガティブだったと解釈します。

これをTrue NegativeあるいはTNと呼びます。

4. False Negative🔝

今度も、「ネガティブ(生の卵)」と予測しました。

しかし、実際には、ポジティブ(ゆで卵)でした。

今回は、ネガティブと予測したのに、本当はネガティブではなくポジティブだったので偽のネガティブ(False Negative)だったと解釈します。

略してFNと呼びます。

5. Accuracy🔝

Accuracy(正解率)は、卵の予測をした全体の数のうち、正解だったものの割合です。

$\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}$

たとえば、100個の卵のうち、30個のゆで卵を言い当てられ(TP=30)、50個の生の卵を言い当てた(TN=50)とします。

また、5個の生の卵をゆで卵だと予測して不正解で(FP=5)、15個のゆで卵を生の卵だと予測して不正解(FN=15)でした。

よって、Accuracyの計算は以下になります。

$\text{Accuracy} = \frac{30 + 50}{30 + 50 + 5 + 15} = 80\%$

Accuracyは画像分類(Image Classification)でよく使われる評価の値です。もちろん、100%に近いほど評価が高くなります。

6. Precision🔝

Precisionはポジティブと予測した時の正確さを表します。

$ \text{Precision} = \frac{TP}{TP+FP}$

計算すると、約86%でなかなかの正確さですね。

$\text{Precision} = \frac{30}{30+5} \approx 86\%$

Precisionが高いのは、ゆで卵だと予測するときにかなり慎重だったからかもしれません。

実際、15個のゆで卵を生の卵だと勘違いしていました。が、それはPrecisionの計算には入ってきません。

7. Recall🔝

Recallはポジティブのケースをどれだけ漏らさずに引き当てたかを表します。

$\text{Recall} = \frac{TP}{TP+FN}$

計算すると、約67%であまり高くないですね。

$\text{Recall} = \frac{30}{30+15} \approx 67\%$

これは、ゆで卵の予測をする際に慎重すぎで、15個ものゆで卵を見逃していたためです。

8. なぜ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カーブなどがあります。のちのち、解説したいと思いますが、今日はこれまで。



コメントを残す

メールアドレスは公開されません。