F1score
$ \frac{2 * recall * precision}{recall + precision}
yes, noの二択を当てる確率、この当てた結果、割合の解釈はそう簡単でない。
もし、yes, noの確率が予想できているなら
例えば、打率2割のバッターなら、予想としては 1/5 くらいでヒットがでるモデルを作るのが妥当
1/2 でヒットというモデルから考えるのはだめ。
全部 アウトになると言っておけば、精度は、4/5
なので、
予測が当るということと、precision
めったに起こらないことを当てる、recall
の2つの観点が重要
で、そのprecisionとrecallの調和平均を取って、総合指標にしたのが、F1scroe 割合の平均は調和平均. 行きが40km/hour, 帰りが60km/hourだと、平均速度は48km/hour
recall と precisionのトレードオフは,,どう書いたら分かってない。全然理解してない。
code:f1.py
import numpy as np; import seaborn as sns
ret = []
xx = np.range(0, 1.001, 0.001)
for x in xx:
ret.append( 2 * x * xx / (x + xx))
ret = np.array(ret)
sns.heatmap(ret)
2 * xx[np.newaxis, :] * xx[:, np.newaxis]/ (xx[np.newaxis,:] + xx[:,np.newaxis])
nanは後で処理する(たぶん、よりsmartはある)
でよい。 簡単な数値計算例を手早くかけるようになりたい。
https://gyazo.com/383eec85c0ef3d6e23098852459cda9f