recall,precision,f1分数,可能是最通俗易懂的解

2019-01-03  本文已影响0人  徐卜灵

分类的常用指标有:
accuracy:准确率
recall:召回率
precison:精确率
f1score:f1分数,是recall和precison的调和均值。

准确率什么情况下失效?

在正负样本不均衡的情况下,accuracy这个指标有很大的缺陷。
如:正样本990个,负样本10个。
将所有样本都预测为正样本,则 accuracy =\frac{990}{990+100}=99\%
虽然准确率很高,但模型并没有什么用。
这时可以用召回率和精确率来评估。
recall\_score = \frac{990}{990}=100\%
precison\_socre = \frac{990}{990+10}=99\%
\frac{2}{f_1}=\frac{1}{recall\_score}+\frac{1}{precsion\_score}
f_1 = 99.5\%
这样好像也没有什么用处哦?
原因是关注正样本还是负样本。
默认是关注正样本,而此时的正样本太多,就算混入几个副样本也无伤大雅。
但大部分情况下是那10个才叫“正样本”,比如异常检测里,990个正常,10个异常,我们可能会更关注那10个异常。这10个异常叫做正样本。
此时就有 10 个正样本,990个负样本。
此时的准确率是多少呢?accuracy =\frac{990}{990+100}=99\%,仍有这么高。
在看一下Recall和Precision
recall\_score =\frac{0}{10}=0\%
precison\_score = \frac{0}{0}=0\%
所以说,这个模型一点用都没有啊。

几个指标的通俗说明

recall:召回率,也叫查全率。其实就是

在上面的例子中,原本正样本990个负样本10个。预测结果为:1000个正样本。
怎么计算召回率呢?

召回率 = 预测对的所有正例 / 原本的所有正例

precison:精确率,也叫查准率

同样是上面的例子

精确率 = 预测“对”的所有正例 / 预测的所有正例

注意,分子上有个“对”字。

当然查的越全越好,查的越准也越好。但一般情况下,这两个值是“此消彼长”的关系。所以就要有Fscore了,Fscore是R、P的调和均值,也是越大越好。一般用F1_score,公式如下:

\frac{2}{f_1}=\frac{1}{recall\_score}+\frac{1}{precsion\_score}
自己计算就好了。
python中可以直接调用函数。

上一篇下一篇

猜你喜欢

热点阅读