混同行列の総合評価でF値ってよく出現しますよね。
p
をprecision(適合率), r
をrecall(再現率)としたとき、F
値は、
F = \frac{2pr}{p+r} = \frac{2}{\frac{1}{p} + \frac{1}{r}}
で定義されます。p, r
が動くときどんな挙動を示すのでしょうか?
描画
python
を使って描画してみます:
## set libraries
import numpy as np
import seaborn as sns
## 値の計算
F = np.array([2 / (1/r+1/p) for p in np.arange(0, 1, 0.1) for r in np.arange(0, 1, 0.1)]).reshape(10, 10)
## 描画
sns.heatmap(F)
→縦軸、横軸の目盛が0, 1, .., 9なのはご愛嬌。本来は0.0, 0.1, .., 0.9にして欲しいですが、取り敢えず概観みたいだけなので放っておきますw
気づくこと
-
p
orr
が0の時はF
の定義から値自体が0
(青枠部分)
-
p
とr
の和が一定でも、p
orr
のどちらかが高くないとF値は下がる、つまりp
とr
のトレードオフを考えた場合、p
とr
の両方がバランス良くないとF値は下がりがち- 青枠部分は
p+r
が一定のラインですが、端っこにいくと色が黒く、つまり0
に近く、真ん中辺りは比較的オレンジっぽく値が高いですね。 - 実務で言えば、適合率、再現率の両者ともに良くないと使い物にならないよね、っていう場合に使ったらいいってことですかね。
- 青枠部分は