1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

性能の見方を考える:Precisionだけを見ていれば良いのか? 全体の正解率(Accuracy)だけを見ていれば良いのか? について

Last updated at Posted at 2020-03-24

(※もし間違った認識をしている点がありましたら、編集リクエスト・コメントなどご指摘お願い致します。)

その他のPrecision, Recall系の記事のまとめページ一覧はこちら

Precisionだけを見ていれば良いのか?

性能が実は悪い時

例えば、りんごカテゴリの識別性能を見るために、りんごのPrecisionの値だけを見ていると、性能を見積り間違える可能性がある。Precisionは高いのに、Recallが低い場合は、その機械学習の性能は実は悪い、ということになる。

以下の例は、りんごの絵を見せても確実にりんごでないとなかなかりんごと言わない機械学習くんのケースで、かつ、テストデータにりんごでないレモンやぶどうなどの絵がかなりたくさん偏って含まれているケース。この時、りんごのPrecisionは90/(90+10)=0.9、りんごのRecallは90/(90+90)=0.5、りんごでない時のPrecisionは10000/(90+10000)=0.991..、正誤合わせた全体の正解率(Accuracy)は(90+10000)/(90+90+10+10000)=0.990..、F値は2・0.9・0.5/(0.9+0.5)=0.643..、となり、どのPrecisionを見ていても0.9以上と良い性能に見えてしまう。たとえ、全体の正解率を見ていても0.9以上と良い性能に見える。

  予測=りんご 予測=りんごでない
真値=りんご TP=90回 FN=90回
真値=他の物 FP=10回 TN=10000回

表にPrecisionとRecallを合わせて書き加えれば、

  予測=りんご 予測=りんごでない (Recall)
真値=りんご TP=90回 FN=90回 0.5
真値=他の物 FP=10回 TN=10000回 0.999..
(Precision) 0.9 0.991.. F値=0.643..

特殊なケース:データセットが均等の時

特殊なケースとして、テスト時に使うデータセットが均等=各カテゴリの個数がおおむね同じであれば、Precisionの値だけを見ていても性能劣化に気付くことが出来る。

以下の例は、前記と同様に、りんごの絵を見せても確実にりんごでないとなかなかりんごと言わない機械学習くんのケースで、かつ、各カテゴリの個数が180個ずつとなるようにテストデータを用意したケース。この時、りんごのPrecisionは90/(90+10)=0.9、りんごのRecallは90/(90+90)=0.5、りんごでない時のPrecisionは170/(90+170)=0.654..、正誤合わせた全体の正解率(Accuracy)は(90+170)/(90+90+10+170)=0.722..、F値は2・0.9・0.5/(0.9+0.5)=0.643..、となり、りんごでない時のPrecisionが0.654..に低下して性能劣化に気付くことが出来る。

  予測=りんご 予測=りんごでない (Recall)
真値=りんご TP=90回 FN=90回 0.5
真値=他の物 FP=10回 TN=170回 0.9444..
(Precision) 0.9 0.654.. F値=0.643..

カテゴリが3種類以上の時

識別するカテゴリが3種類以上の多数ある時には、Precisionの値だけを見て性能劣化に気づけるのか。例えば、5種類のカテゴリを識別する場合、データセットを均等にして各カテゴリの個数が180個ずつとなるように表を作ると、

  予測=りんご 予測=レモン 予測=ぶどう 予測=メロン 予測=みかん (Recall)
真値=りんご 90回 20回 30回 10回 30回 0.5
真値=レモン 2回 170回 1回 4回 3回 0.944..
真値=ぶどう 1回 3回 173回 2回 1回 0.961..
真値=メロン 4回 2回 4回 167回 3回 0.928..
真値=みかん 3回 1回 3回 2回 171回 0.95
(Precision) 0.9 0.867.. 0.820.. 0.903.. 0.822..

5種類のカテゴリすべてのPrecisionだけを見ると、りんご以外のPrecisionが0.8辺りまでやや低下しているものがあるが、低下量が少なすぎて分からない可能性がある模様。カテゴリ数が多ければ多いほどPrecisionの低下量は希釈されて、Precisionがあまり低下しなくなり、たとえすべてのカテゴリのPrecisionを見ていても、性能劣化に気づきにくくなっていく。たとえデータセットが均等であっても、Precisionの値だけを見ていては性能劣化に気づけない模様。また、全体の正解率(Accuracy)は0.857..となり、全体の正解率でも性能劣化に気づきにくい。

すべてのカテゴリのPrecisionとすべてのカテゴリのRecallを見る

前記の表を見ると、明らかに値が低いのはりんごのRecall=0.5のみで、性能劣化に気づくには、毎回すべてのカテゴリのPrecisionとすべてのカテゴリのRecallをチェックしなくてはならないことになる。

性能劣化に気づくには:

  • すべてのカテゴリのPrecisionとRecallの値を、小さい順に並べてグラフにしたり。
  • すべてのカテゴリのPrecisionとRecallの中で、最も小さくなる値を見たり。

性能劣化を見逃す可能性がある見方:

  • Precisionの値だけを見ていては、性能劣化を見逃す可能性がある。
  • 一部のカテゴリだけのPrecision・Recallを見ていても、性能劣化を見逃す可能性がある。
  • 全体の正解率(Accuracy)だけを見ていても、性能劣化を見逃す可能性がある。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?