(※もし間違った認識をしている点がありましたら、編集リクエスト・コメントなどご指摘お願い致します。)
その他の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)だけを見ていても、性能劣化を見逃す可能性がある。