PrecisionとRecallの値の間に出来る差をどのように解釈するか？をマーク模試で考える

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

その他の[Precision, Recall系の記事のまとめページ一覧はこちら](https://qiita.com/dl_from_scratch/items/1b6e0b7a60aa881b1930)。

# PrecisionとRecallで差が出る現象を、マーク模試の回答で解釈してみます

# マーク模試でよくやること

マーク模試でよくやること、
分からない問題は、当てずっぽうで回答すること。
きっと、①が正解になることは少なくて、③か④の正解が多いはず。①は避けて、③か④をマークする方が良い気がする。

# はじめにPrecisionとRecallの定義

まずはじめに、機械学習におけるPrecision, Recallの定義だけ、記載します。

>引用: 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} $$

# PrecisionとRecallの意味

マーク模試の①～④マークを選択する際に、当てずっぽうで回答する方法になぞらえて、機械学習のPrecisionとRecallの意味を解釈してみると、

## 1. 分からない問題の時に、毎回①～④をランダムに回答すると、

①～④の各Recallの値と①～④の各Precisionの値はそれぞれ同程度になり、**PrecisionとRecallの差は小さくなります**。

ランダムに回答することで生じる、多少の回答の偏りによって、PrecisionとRecallの差は小さなばらつきを持ちます。問題数が多くなるほど、ばらつきは小さくなっていきます。

## 2. 分からない問題の時に、当てずっぽうで、毎回④と回答すると、

**④のPrecisionは下がり、④のRecallは上がります**。

**④のPrecisionは、④と回答した問題の中でどれぐらい正解しているか、を表す**ので、当てずっぽうで、毎回④と回答すれば、④と回答した問題の中での誤答が増えて、Precisionが下がります。(④のPrecisionは、④と回答した問題全体を分母にする指標)

**④のRecallは、④が正解となる問題の中でどれぐらい正解しているか、を表す**ので、当てずっぽうで、毎回④と回答すれば、④で正解となる問題が増えて、Recallが上がります。(④のRecallは、④が正解となる問題全体を分母にする指標)

ただ、分からない問題の時に、当てずっぽうで、④に偏って回答しても、全体の正解率＝テストの得点は、ランダムに回答した場合と変わることはありません。

## 3. 分からない問題の時に、当てずっぽうで、毎回①を避けて①とは回答しないようにすると、

**①のPrecisionは上がり、①のRecallは下がります**。

**①のPrecisionは、①と回答した問題の中でどれぐらい正解しているか、を表す**ので、当てずっぽうで、毎回①を避けて回答すれば、分からない問題で①と回答しなくなるので、①と回答した問題の中での誤答は減って、Precisionが上がります。(①のPrecisionは、①と回答した問題全体を分母にする指標)

**①のRecallは、①が正解となる問題の中でどれぐらい正解しているか、を表す**ので、当てずっぽうで、毎回①を避けて回答すれば、正解が①の問題で①と回答しなくなるので、①で正解となる問題が減って、Recallが下がります。(①のRecallは、①が正解となる問題全体を分母にする指標)

ただ、分からない問題の時に、当てずっぽうで、①を避けて回答しても、全体の正解率＝テストの得点は、ランダムに回答した場合と変わることはありません。

## 特定のPrecisionを見るだけでは不十分

前述のように、当てずっぽうで偏って回答しても、全体の正解率＝テストの得点は、変わりませんが(**能力が変わることはない**)、特定のPrecisionやRecallの値は、大きく変わってしまう可能性があります(他を犠牲にすれば、**あるPrecisionやRecallだけを意図的に上げることが出来る**)。

このように、当てずっぽうで偏った回答をされると、必ず本来のPrecisionの値からずれるため、ある特定のPrecisionだけ(①のPrecisionの値だけ等)を見ていては、本来の性能を見誤る可能性があります。(Recallについても同様)

# 当てずっぽうで偏った回答をすると、必ずPrecisionとRecallの間に差が出る

しかし、前述の「2.～」と「3.～」の節で具体的に挙げたPrecisionとRecallの値の動きのように、**当てずっぽうで偏った回答をして、Precisionが上がると、対になるRecallは、少なくとも同じように上がることはなく、Recallは変わらないか、下がる方向に動き、必ずPrecisionとRecallの間で差が出るようになります**。(逆にRecallが上がると、対になるPrecisionは、少なくとも同じように上がることはなく、Precisionは変わらないか、下がる方向に動き、同様に差が出る)

PrecisionとRecallの差を見れば、当てずっぽうで偏って回答していることが分かる、と言えます。PrecisionとRecallの差を見ることは、変に偏って回答してくるような、当てずっぽうな回答者をあぶりだす対策として利用できます。

# PrecisionとRecallの間で出た差をどのように解釈するか？

更に、より極端に偏って④ばかりを回答したり・より極端に①を避けて①と回答しなかったりと、**より偏って回答をすればする程、PrecisionとRecallの間の差は、大きくなっていく**傾向があります。

そのため、**PrecisionとRecallの間で出た差は、当てずっぽうな回答者が、どれぐらい強く偏って回答しているかを表している**、と解釈することが出来ます。
(※注: 前述のマーク模試の回答(①～④マークを選択する)問題では、正解値に偏りはなく正解は①～④で均等に配分されており、回答の性能(正解率)も①～④で違いが生じるはずはなく均等になるため、特にこのような場合は、回答の偏りだけがPrecisionとRecallの差に影響を与え、特に上記のような解釈が出来る点に留意。PrecisionとRecallの間で、どれぐらい差が大きく出るかは、回答の偏りの度合い・正解値の偏りの度合い・回答の性能(正解率)によって変わります。)

この時、PrecisionとRecallが併記された性能結果の表の見方は、
Precisionに比べてRecallが下がっているカテゴリーは、当てずっぽうで、よくこのカテゴリーばかりを好んで回答する傾向があることを示し、PrecisionとRecallの差の分だけ、当てずっぽうでこのカテゴリーを回答しやすいことを示しています。

Recallに比べてPrecisionが下がっているカテゴリーは、当てずっぽうで、よくこのカテゴリーではないと回答する傾向・このカテゴリーを避けて回答する傾向があることを示し、PrecisionとRecallの差の分だけ、当てずっぽうでこのカテゴリへの回答を避けていることを示しています。

# 注意：マーク模試と機械学習の違い

マーク模試の場合は、①～④はただの選択肢で、①,②,③,④には分類カテゴリの意味はないので、特に①と回答した中での正解率、②と回答した中での正解率…とはしない(する意味がない)のですが、

機械学習の場合では、物体を①,②,③,④のカテゴリに分類する識別問題の形になり、①＝りんご、②＝レモン…のように、①～④には意味があるので、①＝りんごの正解率、②＝レモンの正解率…とする点で、マーク模試と機械学習の問題には違いがあります。

マーク模試の場合は、①～④に意味はないので、全問題の正解率＝模試の得点を見れば良いのですが、機械学習の場合では、①～④に識別するので、それぞれの性能(①の識別性能、②の識別性能…)が見たいとなり、前述のように、当てずっぽうで、偏って④ばかりが選ばれると、④の識別性能を示すPrecisionやRecallの値が、直感の予想とは異なる振舞いをする現象が発生します。

# 参考：Precision, Recall, F値の解釈

別途、Precision, Recall, F値とは、どういう意味/違い/ニュアンスなのかを、機械学習くんとりんごで解釈してみた記事があります。

https://qiita.com/dl_from_scratch/items/4efdf647b397d794cd67

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

https://qiita.com/dl_from_scratch/items/e6f615b7b50833e2fd4a

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

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

https://qiita.com/dl_from_scratch/items/309f98c11156b4ab6b52