はじめに
Deep learning界隈ではたくさんの評価指標が使われますが,その本質的な意味がわかっていないと,ただ数字を眺めるだけで「高いから良い!/低いから悪い!」になってしまいます.投稿主の勉強も兼ねてこのタイミングでまとめようと思いました.間違い・説明不足等ありましたらコメントください.
AI(Deep learning)の推論を赤,正解(ground truth, GT)を青で表すことにします(図1).
図1:赤:推論;青:正解
推論(inference)のpositive/negativeと正解のpositive/negativeには下図2のような関係になります.
図2:TP, TN, FP, FNの表
- TP (true positive): 正解を正しく推論できた!(赤かつ青)
- TN (true negative): 正解じゃないとこを正しく正解じゃないと推論できた(白)
- FP (false positive): 正解じゃないとこを間違えて正解と推論した!(白かつ赤)
- FN (false negative): 推論が正解を見逃した!(白かつ青)
この投稿ではこの図2のテーブルをもとに話を進めていきます.
Contents list
- Precision, Recall?(適合率と再現率)
- Dice (F値,F-measure)
- まとめ
- 参考文献
Precision, Recall?(適合率と再現率)
Precision(適合率)の定義は次の数式です:
Precision = \frac{TP}{TP+FP}. \tag{1}
分母は推論領域(図1の赤の部分)なので,「推論したとこはどのくらいあってるの?」という指標です.すなわち,でたらめに推論してしまえばFPが増え,Precisionは下がるということになります.
「FPが増えればPrecisionは下がり,無駄な推論をしていなければPrecisionは高い」 という感覚です.
次に,Recall(再現率)の定義は次の数式です:
Recall = \frac{TP}{TP+FN}. \tag{2}
分母は正解領域(図1の青の部分)なので,「正解はどれくらい塗れた?」という指標です.すなわち,でたらめに推論しても正解さえ塗れていればRecallは高くなります.
「見逃し(FN)が多いほどRecallは下がり,少ないほど上がる」 という感覚です.
これらの関係をまとめると次の図のようになります(下図3).左はPrecisionは高いけどRecallは低いケース,右がPrecisionは低いけどRecallは高いケースです.それぞれが偏りのある指標のように見えませんか.
図3:推論と正解の関係2例.
Dice (F値,F-measure)
「Precision, Recallを良いバランスで考えたい」と言って使うのがDiceです.DiceはPrecision, Recallの調和平均です:
Dice = \frac{2}{1/Precision+1/Recall}. \tag{3}
調和平均はしばしば割合の平均として紹介されますが,今回の「Precision, Recallの調和平均」はどのような意味を持つでしょうか.
調和平均は作業効率の平均と言い換えることができます.例えば,
Aさんは1分で卵を2つ割ります.Bさんは1分で卵を5つ割ります.いま二人で10個ずつ割って合計20個割りました.このとき二人の作業効率は?
という問いがあったとき,作業効率は「仕事量÷時間」になります.すなわち,
\begin{align}
二人の作業効率 &= \frac{20 [個]}{10/2 [分]+10/5 [分]}\\ \tag{4}
&= 2.85... [個/分]
\end{align}
となり,二人は約2.9 [個/分]割っていることになります.
話を戻してPrecision, Recallについて同様に「作業効率」として考えると,正解に対して, Precisionは「どれだけ無駄なく塗れたか?」,Recallは「どれだけ隙間なく塗れたか?」という違った角度から見た作業効率を表します. これらの調和平均を取ることがDiceの表す意味になります.
まとめ
Precision, Recall, Diceについてまとめました.それぞれの値から推論・正解の位置関係がイメージできると数字から多くの情報を得ることができると思います.