【机器学习】准确率、精确度、召回率和 F1 定义

news2024/11/15 15:48:00

一、说明

        数据科学家选择目标变量后 - 例如他们希望预测电子表格中的“列”,并完成了转换数据和构建模型的先决条件,最后步骤之一是评估模型的性能。

二、混淆矩阵的模型

2.1 混淆矩阵

        选择性能指标通常取决于要解决的业务问题。假设您的数据集中有 100 个示例,并且您已将每个示例输入模型并收到分类。预测与实际分类可以在称为混淆矩阵的表中绘制。0

Negative (predicted)Positive (predicted)
Negative (actual)980
Positive (actual)11

        上表描述了负输出与正输出。这两个结果是每个示例的“类”。由于只有两个类,因此用于生成混淆矩阵的模型可以描述为二元分类器。 (二元分类器的示例:垃圾邮件检测。所有电子邮件都是垃圾邮件或不是垃圾邮件,就像所有食物都是热狗或不是热狗一样。)

        为了更好地解释该表,您还可以按照真阳性、真阴性、假阳性和假阴性来查看它。

Negative (predicted)Positive (predicted)
Negative (actual)true negativefalse positive
Positive (actual)false negativetrue positive

2.2 混淆矩阵的缺点包括 

  1. 只能评估模型的分类准确性,而不能评估模型的预测概率大小,无法解释模型的输出。

  2. 对于多分类问题,随着类别数的增加,混淆矩阵变得更加复杂,难以解释模型的表现。

  3. 混淆矩阵只能反映出数据集中已经存在的分类情况,无法衡量模型是否能够在未知数据上获得良好的表现。

  4. 对于不平衡数据集,混淆矩阵可能会误导分析者,因为它无法展现出各类别在数据集中的实际分布情况。

        因此,混淆矩阵只是评估分类模型的一种方法,需要结合其他评价指标一起使用,才能更全面地评估模型的性能。

三、准确率

3.1 准确性

        总的来说,我们的模型正确的频率是多少?

        作为一种启发式方法或经验法则,准确性可以立即告诉我们模型是否经过正确训练以及其总体表现如何。但是,它没有提供有关其应用于该问题的详细信息。 使用准确性作为主要性能指标的问题是,当类别严重不平衡时,它的效果并不好。

        让我们使用上面混淆矩阵中的数据集。假设负面交易是正常交易,正面交易是欺诈交易。准确性会告诉您,您在所有课程中 99% 的时间都是正确的。 但我们可以看到,对于欺诈类别(正),您只有 50% 的时间是正确的,这意味着您将亏损。

        天哪,如果你创建了一个硬性规则来预测所有交易都是正常的,那么你 98% 的时间都是对的。但这不是一个非常智能的模型,也不是一个非常智能的评估指标。这就是为什么当你的老板要求你告诉他们“这个模型有多准确?”时,你的答案可能是:“这很复杂。” 为了给出更好的答案,我们需要了解精确率、召回率和 f1 分数。

3.2 Accuracy的缺点如下 

  1. 不适合于不平衡的数据集:在不平衡的数据集中,即某些类别的数据数量明显较少时,使用Accuracy可能会导致误判严重。例如,在一个二分类问题中,若其中一类数据占总数据的90%,那么一个简单的模型总是预测这个类别,Accuracy值会很高,但是模型并没有学到有用的信息。

  2. 忽略了分类间的差异:在某些问题中,不同的分类可能具有不同的重要性,Accuracy无法表达出这些差异。例如,在癌症预测问题中,将正常人误判为患有癌症与将患有癌症的人误判为正常人所带来的影响是非常不同的。

  3. 受到异常值的影响:异常值(outliers)是指那些与其他数据明显不同的数据点,它们可能被视为一种错误或偏离了数据的正常分布。在某些情况下,单个的异常值可以对Accuracy带来很大的影响。

  4. 只是一个简单的指标:Accuracy是一个很简单的指标,它无法告诉我们模型的运行方式或任何有关错误分类的详细信息。其他的指标如precision、recall、F1-score等则可以更好地帮助我们了解不同类型的错误分类情况。

Accuracy 

Learn How to Apply AI to Simulations »

四2.3 精确

4.1 精确度模型

        当模型预测为正时,其正确率是多少?

        当误报成本很高时,精确度会有所帮助。因此,我们假设问题涉及皮肤癌的检测。如果我们的模型精度非常低,那么许多患者将被告知他们患有黑色素瘤,这将包括一些误诊。许多额外的测试和压力都处于危险之中。当误报率过高时,那些监测结果的人会在遭受误报轰炸后学会忽略它们。

4.2 以下是Precision的一些缺点 

  1. 非常依赖于数据准确性:Precision需要高度准确的数据才能提供有用的结果。因此,如果数据质量较差,则可能会导致精度不准确。

  2. 忽略了其他指标:Precision只关注正确预测的正样本数量,而忽略了其他重要指标,如召回率、F1得分

五 召回率指标

5.1 召回率

        当假阴性成本很高时,召回会有所帮助。如果我们需要探测来袭核导弹怎么办?假阴性会带来毁灭性的后果。如果搞错了,我们都会死。当漏报频繁发生时,您就会受到想要避免的事情的打击。假阴性是指当您决定忽略黑暗森林中树枝折断的声音时,您就会被熊吃掉。 (假阳性是在帐篷里彻夜不眠,冒着冷汗,听着森林里的每一个脚步声,结果第二天早上才意识到这些声音是花栗鼠发出的。这并不有趣。)如果你有一个模型,错误地让核导弹进入,你会想把它扔掉。如果你的模型因为花栗鼠而让你彻夜难眠,你也会想把它扔掉。如果像大多数人一样,您不想被熊吃掉,也不想整夜担心花栗鼠警报,那么您需要优化评估指标,该指标是精确度和召回率的综合衡量标准。输入 F1 分数...

5.2 召回率缺点

  1. 有遗忘衰减现象:记忆在时间的推移中会遗忘和衰减,因此可能会出现遗忘部分信息或遗忘时间较久的信息的情况。

  2. 容易受到干扰:回忆时,可能会受到其他相关信息(干扰信息)的影响,导致原始信息被改变或者遗漏。

  3. 不准确性:记忆的准确性并不总是好的,有时候回忆出来的信息可能不够准确,或者与真实情况存在相差较大的误差。

  4. 依赖于情境:回忆的效率受到环境的影响,如果回忆时的情境与记忆时的情境不同,可能会影响到回忆效率。

  5. 受个人因素影响:个体回忆的能力不同,有些人可能回忆能力更好,有些人可能会遗忘更多的信息,这些个人因素也会影响到回忆的效果。

六 F1分数模型分析

6.1 F1分数

        F1 是对模型准确性的总体衡量,结合了精确度和召回率,以一种奇怪的方式,加法和乘法只是将两种成分混合在一起形成一个单独的菜。也就是说,良好的 F1 分数意味着误报率和漏报率都较低,因此您可以正确识别真正的威胁,并且不会受到误报的干扰。当 F1 分数为 1 时,该模型被认为是完美的;而当 F1 分数为 0 时,则该模型完全失败。

        请记住:所有模型都是错误的,但有些模型是有用的。也就是说,所有模型都会产生一些误报、一些误报,甚至可能两者都有。虽然您可以调整模型以最大限度地减少其中之一,但您通常会面临权衡,即假阴性的减少会导致假阳性的增加,反之亦然。您需要优化对您的特定问题最有用的性能指标。

6.2 F1分数的缺点包括:

  1. 忽略了实际得分的大小:F1分数只关注模型预测的正例和真实正例之间的比例,而忽略了预测正确的样本个数和总预测样本个数的大小。这意味着在模型评估时,同样的F1分数可能对应着不同数量的正确预测。因此,F1分数不能完整地表示模型的性能。

  2. 不适用于不平衡类别:当不同类别的样本数量相差很大时,F1分数可能会受到影响。如果真实正例数很少,那么即使模型只能正确预测其中一些,F1分数也可能会很高。

  3. 只适合二分类问题:F1分数只能用于二分类问题。当涉及到多类别分类时,需要使用其他指标。

  4. 对于不同的阈值有不同的结果:F1分数的计算基于一个默认的阈值,该阈值不一定适用于所有问题。如果使用不同的阈值,F1分数的结果可能会有所不同,这使得比较不同模型的F1分数结果变得有挑战性。

        因此,在使用F1分数进行模型评估时,需要注意以上的缺点,并结合其他指标来综合评估模型性能。

三、后记

        没有一个完美的模型,用户需要针对模型的优缺点,展开一种自主的分析,这才是最有益的尝试。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/710429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子时钟制作(瑞萨RA)(2)----使用串口进行程序烧写

概述 本篇文章主要介绍如何使用UART串口烧写程序到瑞萨芯片,并以实际项目进行演示。 硬件准备 首先需要准备一个开发板,这里我准备的是芯片型号R7FA2E1A72DFL的开发板: 视频教程 https://www.bilibili.com/video/BV1kX4y1v7tL/ 电子时钟制…

Symbol.for()

示例:Symbol() 和 Symbol.for(‘ ’)的区别 Symbol.for("foo"); // 创建一个 symbol 并放入 symbol 注册表中,键为 "foo" Symbol.for("foo"); // 从 symbol 注册表中读取键为"foo"的 symbolSymbol.for("b…

常见面试题之线程池

1. 说一下线程池的核心参数(线程池的执行原理知道嘛)? 线程池核心参数主要参考ThreadPoolExecutor这个类的7个参数的构造函数 corePoolSize 核心线程数目 maximumPoolSize 最大线程数目 (核心线程救急线程的最大数目) keepAliveTime 生存…

蘑菇车联用城市级落地讲述自动驾驶新故事

作者 | 魏启扬 来源 | 洞见新研社 “如果不能实现自动驾驶,特斯拉将一文不值”。 这是马斯克在接受媒体采访时的公开发言,这句话的语境是,特斯拉是自动驾驶坚实的拥护者,且一直在付诸行动。 可是特斯拉渐进式的单车智能路线&am…

【游戏逆向】探索可靠的线程检查方法

一、关键的线程检查 在对抗外挂和木马的方案中,不可能将所有的检查操作放在主线程中,因此,在方案中总有一个扫描线程或者环境检查线程必须保持工作,而它们也就成了外挂和木马的重要攻击目标,外挂和木马只要搞定了它们…

【高可用架构】聊聊故障和高可用架构设计

在架构设计中,高性能、高可用、可拓展以及安全等等有多种维度去判断架构的设计纬度,但是一般来说我们需要考虑具体的业务场景,去判断采用那种合适的架构方案,但是对于大多数的设计来说,都需要满足高性能、高可用。所以…

专科学历,有机会转行程序员吗?

你好,我是程序员晚枫,昨晚又1对1沟通了一位想转行程序员的朋友。 这位朋友是专科毕业,在电子厂干了2年多,感觉看不到希望,来找我咨询一下有没有转行程序员的可能性 学习计划。 我觉得他的情况和提问很有代表性&…

软件测试综述

概述 在不短不长的7年多研发生涯中,听过无数个软件测试概念:单元测试、功能测试、白盒测试、黑盒测试、自动化测试、契约测试、基准测试、性能测试、集成测试、渗透测试、接口测试、UI测试、端到端测试、E2E测试…… 恰逢在准备系统架构设计师软考高级…

我的创作纪念日-256天

机缘: 没有在csdn进行写作,我就不会认识更多对应领域的博主,并且也认识到了很多不同领域的博主这令我感到非常荣幸,能够加入到csdn。在分享交流的过程种我获得了: 实战项目中的经验分享日常学习过程中的记录通过文章进…

Ubuntu20.04安装arm-linux-gcc 4.3.2 (提供安装包)

⁡​​⁢‬‌​⁢‌⁡‍⁣⁤‬‌⁡⁢⁢‍⁡⁤​⁣‬‌‬‍⁤​⁤‌⁣⁤​⁤⁢‍⁢⁤‬⁣‬​‌Ubuntu20.04安装arm-linux-gcc 4.3.2 - 飞书云文档 (feishu.cn) CSDN编辑太丑了 转移阵地了

Google Colab:云端的Python编程神器

Google Colab,全名Google Colaboratory,是Google Research团队开发的一款云端编程工具,它允许任何人通过浏览器编写和执行Python代码。Colab尤其适合机器学习、数据分析和教育目的。它是一种托管式Jupyter笔记本服务,用户无需设置…

SQL-每日一题【185.部门工资前三高的员工】

题目 表: Employee 表: Department 公司的主管们感兴趣的是公司每个部门中谁赚的钱最多。一个部门的 高收入者 是指一个员工的工资在该部门的 不同 工资中 排名前三 。 编写一个SQL查询,找出每个部门中 收入高的员工 。 以 任意顺序 返回结果表。 查询结果格式如…

Python基础语法第二章、变量和运算符

目录 一、常量和表达式 二、变量和类型 2.1变量是什么 2.2变量的语法 2.2.1定义变量 2.2.2使用变量 2.3变量的类型 2.3.1整数 2.3.2浮点数(小数) 2.3.3字符串 2.3.4布尔 2.3.5其他 2.4动态类型 4.1为什么要有这么多类型? 2.4.2动态类型特性 三、注释 3.1注释…

IT人,别人公司与自家差距到底有多大?

年底,是IT人最心酸的时候。辛辛苦苦了一年,别人家的公司员工人手一台 iPhone14Pro,自家可能连个年会都不开!想想就气人 不能笑饱就气饱,省下一顿当赚到 - 1 - 形象 别人公司的IT男帅气又有(发)型 然,我们…

7.3 SpringBoot整合MyBatis分页插件github.pageHelper:实现图书列表API

文章目录 前言一、自己实现分页第一步,count 查询 总记录数(totalCount),计算总页数(totalPages)第二步,limit 查询 指定页数据 二、不考虑分页的查询图书列表MapperBookServiceImplBookListPar…

Redis缓存穿透击穿以及雪崩

5、Reids缓存问题与解决 5.1、背景 Redis作为一种内存性数据库,当查询的数据在redis缓存中时就不需要在到真实的数据库中去查,加快了查询速度和保护了真实数据库的安全,但是同时也引入了一些新的问题,比如查询的数据不在内存和数…

一个人也可以是【大厂】,三年程序员的生活规划心路分享!

自从工作之后,我就经常思考以下这些问题: 还有多久退休?明天可以退休吗?地球什么时候爆炸?我什么时候可以暴富辞职?我真的需要这份工作吗? 要问是从什么时候开始有这些问题的,大概…

Linux环境搭建(一)— 实现ssh连接

Linux环境搭建 一 安装虚拟机1.账号记录,密码root2.权限问题 二 安装ssh1.出错2.误删文件3.安装ifconfig4.安装ssh5.重装ssh6.VI环境不好用7.开放端口8.ssh文件下没有密钥文件9.无法安装ssh 三 连接ssh 写在前面: 使用的是VMware,Ubuntu环境 …

利用这个css属性,你也能轻松实现一个新手引导库

相信大家或多或少都在各种网站上使用过新手引导,当网站提供的功能有点复杂时,这是一个对新手非常友好的功能,可以跟随新手引导一步一步了解网站的各种功能,我们要做的只是点击下一步或者上一步,网站就能滚动到指定位置…

被中文乱码折磨的我在此总结一下编码相关知识

本文大致介绍了三个问题: 常见的字符编码以及他们是如何编码从而被计算机识别的?为什么会有这些字符编码和他们被创建的背景和顺序?常见的乱码问题应该如何防止以及如何解决? 常见的字符编码 ASCII,GB2312&#xff…