LoginSignup
15
14

More than 1 year has passed since last update.

機械学習におけるPrecision, Recall, F値の気持ちを解釈してみる

Last updated at Posted at 2020-03-22

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

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

Precision, Recall, F値の定義

機械学習における分類性能指標: Precision, Recall, F値の定義は、

引用: https://qiita.com/conjugate_box/items/e568909df734cf0b200d
参考: https://en.wikipedia.org/wiki/Precision_and_recall#Definition_(classification_context)

真のラベル 予測ラベル 表記
True Positive (TP)
False Negative (FN)
False Positive (FP)
True Negative (TN)

上記の記号を用い,PrecisionとRecallを次で定義する.

$$ Precision=\frac{TP}{TP+FP}, Recall=\frac{TP}{TP+FN} $$

簡単のため以降ではP=Precision, R=Recallとする.
この時,次で定義される値がF値(もしくはF1値)と呼ばれるものになる.

$$ F=2\frac{P∗R}{P+R} $$

Precision, Recall, F値の解釈

どういう意味/どういう違い/どういうニュアンスなのかを、機械学習くんとりんごで解釈してみます。

1. Precisionは、

例えば、機械学習くんがたくさん絵を見た時に、「これはりんごだ」と言った100回を集めてきて、そのうちいったい何回分が正しいりんごの絵だったか=正解だったか、を表しているに等しい。「機械学習くんがたくさん予測してりんごを言い当てようとしてくれるんだけれど、機械学習くんがりんごって言った時にその発言って毎回どれぐらい正しいと思っておけばいいの?」という気持ち。機械学習くんがりんごと言った時にそれが正解である確率。機械学習くんの発言の正しさ、機械学習くんの発言を信頼できる度合い。全体(分母)を機械学習くんがりんごと予測した回数とした時の正解率、母数は機械学習の予測側。

これは、すなわち、機械学習くんの発言の正しさを表し、正しさ=Precisionと名付けているのかと、思います。

Precision=0.9であれば、機械学習くんがりんごって100回言った時、そのうち90回は本当のりんごの絵だ、ということ。

りんごの絵・レモンの絵・ぶどうの絵...のように、複数の識別クラスがある場合は、それぞれのクラスに対して1つずつPrecisionを用意して、りんご発言の正しさ=りんごPrecision・レモンPrecision・ぶどうPrecision...と出来る。

2. Recallは、

例えば、機械学習くんが事前にたくさん絵を見て学習したんだけれど、その記憶力を見るために、正しいりんごの絵を100枚用意して見せた時に、何回分をりんごの絵と回答できるか=正解できるか、を表しているに等しい。「機械学習くんに正しいりんごの絵を見せた時に、果たして毎回どれぐらい正解できるものなのか?」という気持ち。機械学習くんにりんごの絵を見せた時に正解する確率。機械学習くんに「これは何でしょう」とりんごの絵を出題した時の正解できる確率、すなわち、りんご記憶力テストの正答率。機械学習くんの思い出す能力の度合い、機械学習くんの記憶力テストの結果。全体(分母)を正しいりんごの絵の枚数とした時の正解率、母数は真値側。

これは、すなわち、機械学習くんの思い出す能力の高さを表し、思い出す=Recallと名付けているのかと、思います。

Recall=0.9であれば、機械学習くんにりんごの絵を100回見せた時、そのうち90回はりんごと言える(=残り10回はレモンとかぶどうとか言って間違える)、ということ。

これも同様に、りんごの絵・レモンの絵・ぶどうの絵...のように、複数の識別クラスがある場合は、それぞれのクラスに対して1つずつRecallを用意して、りんごに対する記憶力=りんごRecall・レモンRecall・ぶどうRecall...と出来る。

3. F値は、

Precisionの値とRecallの値を1つにまとめて、1つの値で性能を見る用に。PrecisionとRecallは、両方見ておかなくてはいけないが、それを何とか1つの値で見ることで、数十種類を超えるいろいろな機械学習くんが居ても、性能を1つの値で表しておけば、すべてを一覧表に並べて比較・順位付け出来るようになるし、棒グラフも描けるようになるから便利なのだろうと。

これも同様に、複数の識別クラスがある場合は、それぞれのクラスに対して1つずつF値を用意。

参考:表を用いてPrecision, Recallを具体的な数値で計算してみる例

参考:Precisionが大きくRecallが小さい状態の解釈

Precisionが小さくRecallが大きい状態とはどういうことなのか?、Precisionが大きくRecallが小さい状態とはどういうことなのか?、について解釈してみた記事があります。

参照

recall,precisionなど:

Accuracy/Recall/Precisionってややこしくない??:

具体例で考える、Recall / Precisionの使い分け:

【入門者向け】機械学習の分類問題評価指標解説(正解率・適合率・再現率など):

Accuracyだけに頼れない理由:

15
14
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
15
14