美文网首页
recall,precision,f1分数,可能是最通俗易懂的解

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

作者: 徐卜灵 | 来源:发表于2019-01-03 17:41 被阅读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个正样本。
    怎么计算召回率呢?

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

    • 1000个正例中,预测对的正例是多少呢?990个啊。
    • 原本的所有正例呢? 990个啊。
      那么:
      recall = \frac{990}{990}=100%

    precison:精确率,也叫查准率

    同样是上面的例子

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

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

    • 1000个正例中,预测对的正例是多少呢?990个啊。
    • 预测的所有正例呢?不是把1000个全部预测为正例了吗,就是1000啊
      precison = \frac{990}{1000}=99\%

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

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

    相关文章

      网友评论

          本文标题:recall,precision,f1分数,可能是最通俗易懂的解

          本文链接:https://www.haomeiwen.com/subject/sdhqrqtx.html