准确率与召回率

准确率与召回率1 两个最常见的衡量指标是 准确率 precision 你给出的结果有多少是正确的 和 召回率 recall 正确的结果有多少被你给出了 这两个通常是此消彼长的 tradeoff 很难兼得 很多时候用参数来控制 通过修改参数则能得出一个准确率和召回率的曲线 ROC 这条曲线与 x 和 y 轴围成的面积就是 AUC ROCArea AUC 可以综合衡量一个预测模型的好坏 这

1、两个最常见的衡量指标是“准确率(precision)”(你给出的结果有多少是正确的)和“召回率(recall)”(正确的结果有多少被你给出了)

       这两个通常是此消彼长的(trade off),很难兼得。很多时候用参数来控制,通过修改参数则能得出一个准确率和召回率的曲线(ROC),这条曲线与x和y轴围成的面积就是AUC(ROC  Area)。AUC可以综合衡量一个预测模型的好坏,这一个指标综合了precision和recall两个指标。

但AUC计算很麻烦,有人用简单的F-score来代替。F-score计算方法很简单:

F-score = (2*precision*recall) / (precision+recall)

即使不是算数平均,也不是几何平均。可以理解为几何平均的平方除以算术平均。

不妨举这样一个例子:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下:

准确率 = 700 / (700 + 200 + 100) = 70%

召回率 = 700 / 1400 = 50%

F值 = 70% * 50% * 2 / (70% + 50%) = 58.3%

不妨看看如果把池子里的所有的鲤鱼、虾和鳖都一网打尽,这些指标又有何变化:

准确率 = 1400 / (1400 + 300 + 300) = 70%

召回率 = 1400 / 1400 = 100%

F值 = 70% * 100% * 2 / (70% + 100%) = 82.35%        

由此可见,准确率是评估捕获的成果中目标成果所占得比例;召回率,顾名思义,就是从关注领域中,召回目标类别的比例;而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标。

       当然希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只搜索出了一个结果,且是准确的,那么Precision就是100%,但是Recall就很低;而如果我们把所有结果都返回,那么比如Recall是100%,但是Precision就会很低。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高。如果是做实验研究,可以绘制Precision-Recall曲线来帮助分析。

2、综合评价指标(F-Measure)

P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。

F-Measure是Precision和Recall加权调和平均

准确率与召回率

当参数α=1时,就是最常见的F1,也即

准确率与召回率

可知F1综合了P和R的结果,当F1较高时则能说明试验方法比较有效。

3、E值

E值表示查准率P和查全率R的加权平均值,当其中一个为0时,E值为1,其计算公式:

准确率与召回率

b越大,表示查准率的权重越大。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230568.html原文链接:https://javaforall.net

(0)
上一篇 2026年2月15日 上午11:01
下一篇 2026年2月15日 上午11:22


相关推荐

  • PHP headers_sent() 函数

    PHP headers_sent() 函数

    2021年9月22日
    50
  • python面试题汇总(史上最全)

    python面试题汇总(史上最全)python 面试题对于机器学习算法工程师而言 Python 是不可或缺的语言 它的优美与简洁令人无法自拔 那么你了解过 Python 编程面试题吗 今天我们就来了解一下 1 python 下多线程的限制以及多进程中传递参数的方式 1 python 多线程有个全局解释器锁 globalinterp 这个锁的意思是任一时间只能有一个线程使用解释器 跟单 cpu 跑多个程序一个意思 大家都是轮着用的 这叫 并发 不是 并行 多进程间共享数据 可以使用 multiprocess

    2026年3月18日
    2
  • git push 报错处理 ! [rejected] master -> master (non-fast-forward)

    git push 报错处理 ! [rejected] master -> master (non-fast-forward)

    2021年5月12日
    119
  • Android学习路线(适合学生)

    Android学习路线(适合学生)写在前面 首先我是一名科班大学生 这是我个人觉得较好的学习路线 适合基础也适合进阶 如果您不喜欢直接关闭即可 欢迎指出其中的错误和给我提供一些建议 文中书籍资源有些可以在计算机书籍控中找到先大家先问个问题 现在 Android 前景怎么样 但行好事莫问前程

    2026年3月19日
    2
  • Java中Scanner类的使用方法(小白专属)

    Java中Scanner类的使用方法(小白专属)一、Scanner类简介Java5新引入了java.util.Scanner类,主要用于扫描用户从控制台输入文本的程序。即当用户需要输入数据时,调用java.util包中的Scanner类,Scanner类能获取用户所输入的数据。二、如何使用Scanner类?(按步骤)先导入java.util.Scanner包;创建Scanner类的对象(基本语法)创建一个变量用于接收输入的数据,通过调用Scanner类的对象scanner来调用Scanner类中的next方法(控制台将等待

    2022年7月7日
    23
  • java对象转JSONObject、JSONObject转java对象及String转JSONObject

    java对象转JSONObject、JSONObject转java对象及String转JSONObjectJSONObjectjo=(JSONObject)JSONObject.toJSON(javaBean);Studentstu=(Student)JSONObject.toBean(jo,Student.class);

    2022年4月30日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号