目次
背景
機械学習の分類モデルを評価するとき、次のような指標がよく使われる。
- Accuracy
- Precision
- Recall
- False Positive Rate
- F1 Score
数式だけを見ると、それぞれの違いが分かりにくい。
そこでこの記事では、投球をストライクかボールに分類する**アンパイア(審判)**を例に、各指標の意味を整理する。
ここでは、次のように考える。
- positive: ストライク
- negative: ボール
- モデル: 投球をストライクかボールに判定するアンパイア
- 正解ラベル: センサーや人手によって事前に決められた正しい判定
つまり、アンパイアが「ストライク」と判定することをpositive判定として扱う。
前提:野球の判定を二値分類として考える
アンパイアが行う4種類の判定
アンパイアの判定結果は、次の4種類に分けられる。
| - | 実際はストライク | 実際はボール |
|---|---|---|
| ストライクと判定 | True Positive(TP) | False Positive(FP) |
| ボールと判定 | False Negative(FN) | True Negative(TN) |
それぞれを野球の言葉で表すと、次のようになる。
True Positive
実際にストライクだった投球を、ストライクと正しく判定した。
これは正しい判定。
False Positive
実際にはボールだった投球を、ストライクと誤判定した。
打者からすると、ボール球をストライクにされた状態。
False Negative
実際にはストライクだった投球を、ボールと誤判定した。
投手からすると、ストライクを見逃された状態。
True Negative
実際にボールだった投球を、ボールと正しく判定した。
これも正しい判定。
NOTE:
- Positiveの意味はタスクによって変わる
- 本記事ではストライクをpositiveとしている
- ボールをpositiveとして定義すれば、TP、FP、FN、TNの意味も逆になる
100球を判定した例
アンパイアが100球を判定したとする。
実際の投球は、次のように分かれていた。
- 実際のストライク: 40球
- 実際のボール: 60球
アンパイアの判定結果は、次のようになった。
| 実際にストライク | 実際にボール | 合計 | |
|---|---|---|---|
| ストライクと判定 | 36 | 6 | 42 |
| ボールと判定 | 4 | 54 | 58 |
| 合計 | 40 | 60 | 100 |
したがって、それぞれの件数は次のようになる。
- TP: 36
- FP: 6
- FN: 4
- TN: 54
この例を使って、各評価指標を確認する。
基本的な評価指標
Accuracy:全体として何割正しかったか
Accuracyは、すべての判定のうち正しかった割合を表す。
正しい判定は、TPとTNである。
$$ \mathrm{Accuracy}= \frac{TP+TN} {TP+FP+FN+TN} $$
今回の例では、次のようになる。
$$ \mathrm{Accuracy}= \frac{36+54}{100} = 0.9 $$
Accuracyは90%である。
野球の言葉で表すと、次の意味になる。
アンパイアは、ストライクとボールを合わせた全100球のうち、90球を正しく判定した。
Accuracyは、アンパイアの判定全体がどの程度正しかったかを見る指標である。
Accuracy:全体の誤審率
Accuracyが全体の正解率なら、その反対である$1-\mathrm{Accuracy}$は全体の誤り率になる。
$$ 1-\mathrm{Accuracy}= \frac{FP+FN} {TP+FP+FN+TN} $$
今回の例では、誤判定は次の2種類である。
- ボールをストライクとした誤審: 6球
- ストライクをボールとした誤審: 4球
したがって、全体の誤審率は次のようになる。
$$ 1-\mathrm{Accuracy} = \frac{6+4}{100}=0.1 $$
全体の誤審率は10%である。
全100球のうち、10球を誤審した。
ただし、この値だけでは、どのような誤審が多かったのかは分からない。
- ボールをストライクにしたのか
- ストライクをボールにしたのか
この違いを見るには、Precision、Recall、FPRなどを確認する必要がある。
Precision:ストライク判定をどの程度信用できるか
Precisionは、アンパイアがストライクと判定した投球のうち、実際にストライクだった割合を表す。
$$ \mathrm{Precision}=\frac{TP}{TP+FP} $$
今回、アンパイアがストライクと判定したのは42球である。
そのうち、実際にストライクだったのは36球だった。
$$ \mathrm{Precision}=\frac{36}{36+6} \approx 0.857 $$
Precisionは約85.7%である。
野球の言葉で表すと、次の意味になる。
アンパイアが「ストライク」と言ったとき、その判定は約85.7%の確率で正しかった。
Precisionは、ストライクという判定の信頼性を見る指標と考えると分かりやすい。
Precisionが低いアンパイアは、ボール球に対してもストライクと言いやすい。
Precisionで無視されるもの
Precisionの計算には、FNとTNは直接含まれない。
つまり、ボールと判定した投球については見ていない。
Precisionが答えるのは、あくまで次の問いである。
ストライクと判定した投球だけを見たとき、どのくらい正しかったか。
Recall:本当のストライクをどの程度見逃さなかったか
Recallは、実際にストライクだった投球のうち、アンパイアがストライクと判定できた割合を表す。
$$ \mathrm{Recall}=\frac{TP}{TP+FN} $$
今回、実際のストライクは40球だった。
そのうち、36球をストライクと判定できた。
$$ \mathrm{Recall}=\frac{36}{36+4} =0.9 $$
Recallは90%である。
野球の言葉で表すと、次の意味になる。
本当のストライク40球のうち、36球を見逃さずにストライクと判定した。
Recallは、ストライクをどの程度取りこぼさなかったかを見る指標である。
Recallが低いアンパイアは、本当のストライクをボールと判定しやすい。
Recallで無視されるもの
- Recallの計算には、FPとTNは直接含まれない
- そのため、ボール球をどれだけストライクと誤判定したかは、Recallだけでは分からない
- 極端な例として、すべての投球をストライクと判定した場合を考える
- このアンパイアは、本当のストライクを一球も見逃さない
- したがって、Recallは100%になる
- しかし、すべてのボール球もストライクと判定しているため、良いアンパイアとはいえない
- Recallだけでは、ストライク判定を乱発しているかどうかを評価できない
FPR:ボール球をストライクにした割合
False Positive Rateは、実際にはボールだった投球のうち、誤ってストライクと判定した割合を表す。
$$ \mathrm{FPR}=\frac{FP}{FP+TN} $$
今回、実際のボールは60球だった。
そのうち、6球をストライクと誤判定した。
$$ \mathrm{FPR}=\frac{6}{6+54} =0.1 $$
FPRは10%である。
野球の言葉で表すと、次の意味になる。
本当はボールだった60球のうち、10%をストライクと誤審した。
FPRは誤審率の一種だが、全体の誤審率ではない。
分母は全100球ではなく、実際にボールだった60球である。
全体の誤審率とFPRの違い
今回の例では、たまたま次の2つが同じ10%になっている。
$$ 1-\mathrm{Accuracy}=10% $$
$$ \mathrm{FPR}=10% $$
しかし、両者は異なる指標である。
全体の誤審率は次のように計算する。
$$ 1-\mathrm{Accuracy}=\frac{FP+FN}{全投球} $$
FPRは次のように計算する。
$$ \mathrm{FPR}=\frac{FP}{実際のボール} $$
全体の誤審率には、次の両方が含まれる。
- ボールをストライクとした誤審
- ストライクをボールとした誤審
一方、FPRが数えるのは、ボールをストライクにした誤審だけである。
FNR:ストライクをボールとした割合
False Negative Rateは、実際のストライクのうち、誤ってボールと判定した割合を表す。
$$ \mathrm{FNR}=\frac{FN}{TP+FN} $$
今回の例では、次のようになる。
$$ \mathrm{FNR}=\frac{4}{36+4}=0.1 $$
FNRは10%である。
野球の言葉で表すと、次の意味になる。
本当はストライクだった40球のうち、10%をボールと誤審した。
RecallとFNRには、次の関係がある。
$$ \mathrm{FNR}=1-\mathrm{Recall} $$
Recallが90%なら、見逃した割合であるFNRは10%になる。
Specificity:ボールを正しくボールと判定した割合
Specificityは、実際のボールのうち、正しくボールと判定できた割合を表す。
$$ \mathrm{Specificity}=\frac{TN}{FP+TN} $$
今回の例では、次のようになる。
$$ \mathrm{Specificity}=\frac{54}{6+54} =0.9 $$
Specificityは90%である。
野球の言葉で表すと、次の意味になる。
本当のボール60球のうち、90%を正しくボールと判定した。
SpecificityとFPRには、次の関係がある。
$$ \mathrm{FPR}=1-\mathrm{Specificity} $$
指標同士の関係と使い分け
指標を野球の言葉で整理する
| 指標 | 野球での意味 |
|---|---|
| Accuracy | 全投球のうち、ストライク・ボールを正しく判定できた割合 |
| Error Rate | 全投球のうち、誤審した割合 |
| Precision | ストライクと判定した投球のうち、本当にストライクだった割合 |
| Recall | 本当のストライクのうち、ストライクと判定できた割合 |
| F1 | ストライク判定の信頼性と、ストライクの見逃しにくさをまとめた値 |
| FPR | 本当のボールのうち、ストライクと誤審した割合 |
| FNR | 本当のストライクのうち、ボールと誤審した割合 |
| Specificity | 本当のボールのうち、ボールと正しく判定できた割合 |
もう少し短く表すと、次のようになる。
- Accuracy: アンパイアは全体としてどの程度正しいか
- Precision: アンパイアのストライク判定をどの程度信用できるか
- Recall: アンパイアはストライクをどの程度見逃さないか
- F1: ストライク判定の信頼性と見逃しにくさを両立できているか
- FPR: アンパイアはボール球をどの程度ストライクにするか
指標の見方の流れ
以下の流れだと指標が見やすく感じやすい。
- Recall: 誤審を除いて、アンパイアがストライクを見逃さない割合はどのぐらいか
- Precision: アンパイアがストライクと言ったものの精度はどのぐらいか
- FPR: ボール玉に対して間違ってストライクとどのぐらい言うのか
- Accuracy: アンパイアの全判定のうち何割正しかったか
- 1-Accuracy: アンパイアの誤審率はどのぐらいか
- F1: アンパイアのストライクの見逃さない割合と、ストライクの宣告の精度を重視する場合
PrecisionとRecallのトレードオフ
PrecisionとRecallはトレードオフにある。
- Recallを上げたい
- なんでもストライクと言えば上がる
- つまり、アンパイアのストライクゾーンを広げる
- しかし、誤審が増えるのでPrecisionが下がる
- Precisionを上げたい
- 完全にストライクのものをストライク判定する
- つまり、アンパイアのストライクゾーンを狭める
- しかし、本来ストライクだったものを見逃しRecallが下がる
そして、それらを加味したのがF1スコアになっている。
F1:PrecisionとRecallのバランス
F1 Scoreは、PrecisionとRecallの調和平均である。
$$ \mathrm{F1}
2 \frac{ \mathrm{Precision}\cdot\mathrm{Recall} }{ \mathrm{Precision}+\mathrm{Recall} } $$
TP、FP、FNを使うと、次のようにも表せる。
$$ \mathrm{F1}
\frac{2TP}{2TP+FP+FN} $$
今回の100球の例では、次の値だった。
- TP: 36
- FP: 6
- FN: 4
したがって、F1は次のようになる。
$$ \mathrm{F1}
\frac{2\times36}{2\times36+6+4}
\frac{72}{82} \approx 0.878 $$
F1は約87.8%である。
野球の言葉で表すと、次の意味になる。
ストライクと宣告した判定の信頼性と、本当のストライクを見逃さない能力を、一つの値にまとめた。
- Precisionだけを高くしようとすると、明らかなストライクだけを宣告し、それ以外をすべてボールにする方法が考えられる
- しかし、その場合は本当のストライクを見逃すため、Recallが低くなる
- 反対に、Recallだけを高くしようとすると、ほとんどすべての投球をストライクと宣告する方法が考えられ
- しかし、その場合はボール球もストライクにするため、Precisionが低くなる
- F1は、PrecisionとRecallのどちらか一方だけが高い判定を高く評価しにくい
F1で無視されるもの
- F1の計算にはTNが含まれない
- つまり、本当のボールを正しくボールと判定した件数は、F1へ直接反映されない
- そのためF1は、アンパイアとしての全判定を見るというより、ストライクを検出する能力に注目した指標である
F1とAccuracyの違い
AccuracyとF1の最も大きな違いは、TNを評価に含めるかどうかである。
$$ \mathrm{Accuracy}
\frac{TP+TN}{TP+FP+FN+TN} $$
$$ \mathrm{F1}
\frac{2TP}{2TP+FP+FN} $$
AccuracyはTPとTNの両方を正解として数える。
野球の例では、次の両方を評価する。
- ストライクを正しくストライクと判定した
- ボールを正しくボールと判定した
一方、F1はストライクをpositiveとして、次のバランスを見る。
- ストライクと宣告した判定がどの程度正しいか
- 本当のストライクをどの程度見逃さなかったか
今回の100球の例では、次のようになる。
| 指標 | 値 | 見ているもの |
|---|---|---|
| Accuracy | 90.0% | ストライクとボールを含む全判定の正しさ |
| F1 | 約87.8% | ストライク判定の信頼性と見逃しにくさ |
Accuracyを使いやすい場合
- ストライクとボールの件数が極端に偏っていない
- ストライクとボールの両方の正解を評価したい
- FPとFNをおおむね同じ重さの誤りとして扱える
- アンパイアの全判定の正しさを知りたい
F1を使いやすい場合
- ストライクがボールより非常に少ない
- ストライクを検出する能力を重視したい
- PrecisionとRecallの両方を一つの値で比較したい
- 大量のTNによって高いAccuracyが出る問題を避けたい
ただし、F1はFPとFNを実質的に同じ重さで扱う。
ボールをストライクにする誤審を特に避けたいなら、F1だけでなくPrecisionやFPRを確認する。
ストライクの見逃しを特に避けたいなら、RecallやFNRを確認する。
NOTE:
- Accuracyは、アンパイアとして全体的に正しいかを見る
- F1は、ストライク検出器としてPrecisionとRecallを両立できているかを見る
- どちらか一方を常に使うのではなく、評価したい失敗の種類に合わせて選ぶ
指標の見方の流れ
概ね次の順に見ると分かりやすい。
- Recall: 本当のストライクをどの程度見逃していないか
- Precision: ストライクと宣告した判定をどの程度信用できるか
- FPR: 本当のボールをどの程度ストライクと誤審するか
- Accuracy: 全判定のうち何割が正しかったか
- $1-\mathrm{Accuracy}$: 全判定のうち何割を誤審したか
- F1: PrecisionとRecallを一つの値で見たとき、どの程度両立できているか
Accuracyだけでは不十分な場合
Accuracyは全体の正解率を表すため、直感的に理解しやすい。
しかし、ストライクとボールの割合が大きく偏っている場合は注意が必要である。
例えば、100球のうち次の割合だったとする。
- ストライク: 10球
- ボール: 90球
ここで、すべての投球をボールと判定するモデルを考える。
このアンパイアは、90球のボールをすべて正しく判定する。
そのため、Accuracyは90%になる。
$$ \mathrm{Accuracy}=\frac{90}{100}=0.9 $$
しかし、10球のストライクをすべてボールと判定している。
Recallは次のようになる。
$$ \mathrm{Recall}=\frac{0}{0+10}=0 $$
Accuracyは90%だが、ストライクを一球も判定できていない。
この場合、Recallは0であり、一般的な実装上の扱いではF1も0になる。
つまり、二つの指標は次のように評価する。
- Accuracy
- ボール90球を正しく判定したため90%
- F1
- ストライクを一球も検出できていないため0%
このように、クラスの割合が偏っている場合は、Accuracyだけではモデルの問題を見逃す可能性がある。
一方で、F1はTNを評価しないため、ボールを正しくボールと判定する能力も含めて評価したい場合には、F1だけでは不十分である。
判定しきい値と指標の変化
アンパイアは確信度を出力する
実際の分類モデルは、最初からストライクまたはボールを出力するとは限らない。
例えば、アンパイアが次のようなストライクらしさのスコアを出力するとする。
| 投球 | ストライクスコア |
|---|---|
| A | 0.95 |
| B | 0.72 |
| C | 0.51 |
| D | 0.48 |
| E | 0.10 |
このスコアに対して、どこからストライクと判定するかを決める必要がある。
この境界を判定しきい値と呼ぶ。
しきい値を0.5にした場合は、次のように判定する。
$$ \hat{y}=\begin{cases} \mathrm{ストライク} & s(x) \geq 0.5 \\ \mathrm{ボール} & s(x) < 0.5 \end{cases} $$
この場合、A、B、Cはストライク、D、Eはボールになる。
しきい値を下げるとどうなるか
しきい値を0.5から0.3へ下げると、アンパイアはストライクと判定しやすくなる。
野球でいえば、少しでもストライクらしい投球を、積極的にストライクと判定するアンパイアである。
一般に、次のような変化が起きる。
- ストライク判定が増える
- 本当のストライクを見逃しにくくなる
- Recallが上がる
- 一方で、ボール球までストライクにしやすくなる
- FPが増える
- FPRが上がる
つまり、しきい値を下げると、ストライクの見逃しは減りやすいが、ボール球をストライクにする誤審は増えやすい。
しきい値を上げるとどうなるか
しきい値を0.5から0.9へ上げると、アンパイアはストライクと判定しにくくなる。
野球でいえば、明らかにストライクだと確信できる投球だけを、ストライクと判定するアンパイアである。
一般に、次のような変化が起きる。
- ストライク判定が減る
- ボール球をストライクにしにくくなる
- FPが減る
- FPRが下がる
- 一方で、本当のストライクもボールと判定しやすくなる
- FNが増える
- Recallが下がる
つまり、しきい値を上げると、ボール球をストライクにする誤審は減りやすいが、本当のストライクを見逃しやすくなる。
しきい値と指標の関係
同じ評価データに対してしきい値だけを動かした場合、基本的には次の関係になる。
| しきい値 | ストライク判定 | Recall | FPR |
|---|---|---|---|
| 下げる | 増える | 上がるか変わらない | 上がるか変わらない |
| 上げる | 減る | 下がるか変わらない | 下がるか変わらない |
Precisionについては、次のように説明されることが多い。
- しきい値を上げるとPrecisionは上がりやすい
- しきい値を下げるとPrecisionは下がりやすい
これは、確信度の高いストライク判定だけを残すと、誤ったストライク判定が減ると期待できるためである。
ただし、有限の評価データではPrecisionが必ず単調に変化するとは限らない。
しきい値を上げたとき、正しいストライク判定であるTPが多く除外され、スコアの高いFPが残ることもある。
Accuracyも、しきい値に対して必ず一方向に変化するとは限らない。
しきい値の違いを100球で比較する
実際の投球が次のように構成されているとする。
- ストライク: 40球
- ボール: 60球
ストライクを取りやすいアンパイア
しきい値を低く設定した結果、次の判定になったとする。
| 実際にストライク | 実際にボール | |
|---|---|---|
| ストライクと判定 | 39 | 18 |
| ボールと判定 | 1 | 42 |
各指標は次のようになる。
$$ \mathrm{Recall}= \frac{39}{39+1}= 0.975 $$
$$ \mathrm{FPR}=\frac{18}{18+42}=0.3 $$
$$ \mathrm{Precision}=\frac{39}{39+18} \approx 0.684 $$
ストライクの見逃しは少ないが、ボール球までストライクと判定している。
ストライクを取りにくいアンパイア
しきい値を高く設定した結果、次の判定になったとする。
| 実際にストライク | 実際にボール | |
|---|---|---|
| ストライクと判定 | 24 | 2 |
| ボールと判定 | 16 | 58 |
各指標は次のようになる。
$$ \mathrm{Recall}= \frac{24}{24+16} = 0.6 $$
$$ \mathrm{FPR}=\frac{2}{2+58} \approx 0.033 $$
$$ \mathrm{Precision}=\frac{24}{24+2} \approx 0.923 $$
ストライクと判定したときの信頼性は高いが、本当のストライクを多く見逃している。
比較
| 指標 | ストライクを取りやすい | ストライクを取りにくい |
|---|---|---|
| Precision | 約68.4% | 約92.3% |
| Recall | 97.5% | 60.0% |
| FPR | 30.0% | 約3.3% |
| ストライクの見逃し | 少ない | 多い |
| ボールをストライクにする誤審 | 多い | 少ない |
どちらのアンパイアが良いかは、何を重視するかによって変わる。
- ストライクの見逃しを減らしたい
- => Recallを重視する
- ボール球をストライクにしたくない
- => PrecisionやFPRを重視する
- 全体の正解数を増やしたい
- => Accuracyを重視する
Accuracyが最大ならよいのか
しきい値をいくつか試せば、評価データ上でAccuracyが最大になる値を選ぶことができる。
しかし、Accuracyが最大になるしきい値が、必ずしも最適とは限らない。
Accuracyでは、次の誤審をどちらも1件の誤りとして扱う。
- ボールをストライクにする
- ストライクをボールにする
野球では、この2種類を同じ重さの誤審として扱えるかもしれない。
しかし、実際の機械学習システムでは、FPとFNのコストが大きく異なることがある。
例えば、不正利用の検知では、次の2種類の誤りが存在する。
- 正常な利用を不正と判定する
- 本当の不正利用を正常と判定する
どちらをより避けるべきかは、システムの目的によって異なる。
そのため、Accuracyを最大化するだけでなく、許容できるFPやFNを考慮してしきい値を決める必要がある。
しきい値を横断して評価する方法
ROC曲線
しきい値を少しずつ変化させると、RecallとFPRも変化する。
その関係を表すものがROC曲線である。
ROC曲線では、次の値を使う。
- 横軸
- FPR
- 縦軸
- Recall
野球の例では、次の関係を見ることになる。
ボール球をストライクにする割合を増やしたとき、本当のストライクをどの程度多く取れるようになるか。
しきい値を下げれば、ストライクを多く取るようになる。
そのため、一般にRecallは上がるが、FPRも上がる。
ROC曲線は、このトレードオフをしきい値ごとに確認するために使われる。
Precision-Recall曲線
Precision-Recall曲線では、しきい値を変化させたときのPrecisionとRecallの関係を見る。
野球の例では、次の関係になる。
ストライクの見逃しを減らしながら、ストライク判定の信頼性をどこまで維持できるか。
ストライク判定を増やせば、Recallは高くなりやすい。
一方で、ボール球もストライクに含まれるようになるため、Precisionは低下しやすい。
特にpositiveが少ない分類問題では、ROC曲線だけでなくPrecision-Recall曲線も重要になる。
確信度スコアと確率校正
アンパイアがストライクスコア0.9を出したとしても、それが必ず「90%の確率でストライク」という意味になるとは限らない。
例えば、スコアが0.9前後だった投球を100球集めたとする。
そのうち、実際にストライクだった投球が70球しかなければ、モデルは確信しすぎている。
モデルが出したスコアと、実際の正解率の対応を整えることを確率校正と呼ぶ。
確率が適切に校正されていない場合、しきい値を0.9にしても、期待したPrecisionが得られない可能性がある。
また、評価時と実際の試合で投球の分布が変わると、同じしきい値でも性能が変わる可能性がある。
例えば、次のような変化が考えられる。
- 投手が変わる
- 球速の分布が変わる
- 変化球の種類が変わる
- カメラやセンサーが変わる
- 左打者と右打者の割合が変わる
- 評価データに少なかった投球が増える
したがって、評価指標は、使用したデータと判定しきい値をセットで報告する必要がある。
しきい値は目的に合わせて決める
しきい値に唯一の正解はない。
例えば、次のような決め方が考えられる。
ボール球をストライクにしたくない
打者に不利な誤審であるFPを抑えたい場合は、次のような条件でしきい値を選ぶ。
FPRが1%以下になるしきい値の中から、Recallが最も高い値を選ぶ。
ストライクを見逃したくない
投手に不利な誤審であるFNを抑えたい場合は、次のような条件でしきい値を選ぶ。
Recallが99%以上になるしきい値の中から、FPRが最も低い値を選ぶ。
ストライク判定を信用できるようにしたい
ストライクと判定したときの正しさを重視する場合は、次のように決める。
Precisionが99%以上になるしきい値の中から、Recallが最も高い値を選ぶ。
このように、単にAccuracyが最大になる値を選ぶより、システムの要件を条件として定義した方がよい場合がある。
評価時の注意点
しきい値は検証データで決める
しきい値を決めるために使ったデータで、そのまま最終性能を報告すると、性能を過大評価する可能性がある。
データは次のように分ける。
- 学習データ
- モデルを学習する
- 検証データ
- 判定しきい値を決める
- テストデータ
- 最終的な性能を確認する
テストデータの結果を見ながら何度もしきい値を変更すると、テストデータが実質的に検証データになる。
投球の割合を確認する
評価データに含まれるストライクとボールの割合も重要である。
Precisionは、実際のストライクがどの程度出現するかによって変化する。
評価データではストライクとボールが半分ずつでも、実際の運用環境では割合が異なる可能性がある。
その場合、同じモデルと同じしきい値を使っても、Precisionが変化することがある。
件数も確認する
FPRが低くても、ボール球の総数が非常に多ければ、FPの件数は多くなる。
例えば、ボール球が100万件あり、FPRが0.1%だった場合、FPは1,000件発生する。
$$ 1{,}000{,}000 \times 0.001= 1{,}000 $$
割合だけでなく、実際に発生する誤判定の件数も確認する必要がある。
まとめ
AIによるストライク判定を例にすると、各評価指標は次のように理解できる。
- Accuracy
- 全投球のうち、正しく判定できた割合
- $1-\mathrm{Accuracy}$
- 全投球のうち、誤審した割合
- Precision
- ストライクと判定した投球のうち、本当にストライクだった割合
- Recall
- 本当のストライクのうち、ストライクと判定できた割合
- F1
- ストライク判定のPrecisionとRecallを一つにまとめた値
- FPR
- 本当のボールのうち、ストライクと誤審した割合
- FNR
- 本当のストライクのうち、ボールと誤審した割合
特に、次の違いが重要である。
- Precision
- ストライクという判定を基準にする
- Recall
- 本当のストライクを基準にする
- FPR
- 本当のボールを基準にする
- Error Rate
- 全投球を基準にする
- F1
- ストライク判定に関するPrecisionとRecallを基準にし、TNは直接使わない
AccuracyとF1の使い分けは、次のように整理できる。
- Accuracy
- ストライクとボールを含め、アンパイアの全判定の正しさを見たい場合
- F1
- ストライクの検出を重視し、PrecisionとRecallを一つの値で比較したい場合
また、これらの指標はアンパイアに固有の固定値ではない。
ストライクと判定する確信度のしきい値を変えると、TP、FP、FN、TNの数が変わり、Accuracy、Precision、Recall、FPR、F1も変化する。
- しきい値を下げる
- ストライクを取りやすくなり、RecallとFPRが上がる
- しきい値を上げる
- ストライクを取りにくくなり、RecallとFPRが下がる
どのしきい値が適切かは、どちらの誤審を避けたいかによって異なる。
分類モデルを評価するときに重要なのは、Accuracyが高いかどうかだけではない。
何をpositiveと定義し、どの誤りを避け、どのしきい値で判定したのか。
ここまで含めて、初めて評価指標の意味を正しく理解できる。
参考文献
- Precision and recall - Wikipedia
- Receiver operating characteristic - Wikipedia
- The Relationship Between Precision-Recall and ROC Curves
- The Precision-Recall Plot Is More Informative than the ROC Plot When Evaluating Binary Classifiers on Imbalanced Datasets
- On Calibration of Modern Neural Networks
- A Survey on Selective Classification
