当我们在谈论一个模型好坏的时候,我们常常会听到准确率(Accuracy)这个词,我们也会听到"如何才能使模型的Accurcy更高".那么是不是准确率最高的模型就一定是最好的模型?

这篇博文会向大家解释准确率并不是衡量模型好坏的唯一指标,同时我也会对其他衡量指标做出一些简单说明。

首先我们先要了解混淆矩阵(Confusion Matrix), 如下图,混淆矩阵经常被用来衡量一个分类模型在测试样本上的性能,本文提到的所有衡量标准都会用到下面混淆矩阵中出现的的四个值

真正例和真反例表示被正确预测的数据,假正例和假反例表示被错误预测的数据,接下来的内容基本都是围绕着四个值展开,因此我们有必要在这里弄清楚这四个值的含义是什么.

TP(True Positive) -被正确预测的正例.表示真实值为正,同时也被正确的预测为正;

TN(True Negative) -被正确预测的反例.表示真实值为反例,也被正确的预测为反例;

FP(False Positive) -表示真实值为负例,被错误的预测为正例;

FN(False Negative)-表示真实值为正例,被错误的预测为反例;

在了解了这四个值之后让我们来计算接下来的Accuracy, Precision, Recall, F1 Score

Accuracy

Accuracy是最直观的衡量模型好坏的指标,它实际上是被正确预测的数据量比上所有参与预测的数据量的值。 正如我开篇提到的,有人会认为如果我们的模型具有很高的Accuracy,那么我们的模型是最好的。

首先要明确只有当我们拥有一个对称数据集时,也就是假阳性和假阴性的值几乎相同时,Accuracy才可以被用来作为一个很好的衡量标准。 因此,我们必须查看其他参数才能完整地评估模型的性能。

Precision and Recall

有人翻译他们为精确率和召回率,我更喜欢用查准率和查全率来翻译这两个词.                        

  • 查准率P就表示在预测结果为正例的样本里,真实情况也为正例所占的比率

适用场景:当反例被错误的预测为正例(假正例)产生的代价很高的时候,适合用查准率,因为高查准率意味着低假正率/假阳性.比如在垃圾邮件检测中,假正例意味着非垃圾邮件(实际为负)被错误的预测为垃圾邮件(预测为正).如果一个垃圾邮件监测系统的查准率不高导致很多非垃圾邮件被归到垃圾邮箱里去,那么邮箱用户可能会丢失或者漏看一些很重要的邮件.

  • 查全率R表示在真实情况为正例的所有样本中,预测结果也为正例的样本所占的比率

使用场景:当正例被错误的预测为反例(假反例)产生很高的代价时,用查全率,因为高查全率意味着低假反率/假阴性.比如说在银行的欺诈检测或医院的病患者检测中,如果将欺诈性交易(实际为正)预测为非欺诈性交易(预测为负),则可能会给银行带来非常严重的损失。再比如以最近的新冠疫情为例,如果一个患病者(实际为正)经过试剂检测被预测为没有患病(预测为负),这样的假反例或者说假阴性产生的风险就非常大.

F1 Score

F1是查准率和查全率的一个加权平均,根据wikipedia给出的解释,F1 Score表达式如下

F1把假反例和假正例都考虑在内,它不像Accuracy这么容易理解,但是F1比Accuracy更适用,尤其是当你的数据集类别分布不均衡时.比如说你的样本中正样本:负样本 = 100:1.

当假正例和假反例造成的代价差不多的时候直接用Accuracy就可以,但是当假正例和假反例产生的代价差别很大的时候,则可以考率更好的度量比如Precision,Recall和F1 Score.

reference : Accuracy, Precision, Recall & F1 Score: Interpretation of Performance Measures

Accuracy, Precision, Recall or F1?

机器学习--如何理解Accuracy, Precision, Recall, F1 score的更多相关文章

  1. 机器学习基础梳理—(accuracy,precision,recall浅谈)

    一.TP TN FP FN TP:标签为正例,预测为正例(P),即预测正确(T) TN:标签为负例,预测为负例(N),即预测正确(T) FP:标签为负例,预测为正例(P),即预测错误(F) FN:标签 ...

  2. Precision,Recall,F1的计算

    Precision又叫查准率,Recall又叫查全率.这两个指标共同衡量才能评价模型输出结果. TP: 预测为1(Positive),实际也为1(Truth-预测对了) TN: 预测为0(Negati ...

  3. 机器学习:评价分类结果(F1 Score)

    一.基础 疑问1:具体使用算法时,怎么通过精准率和召回率判断算法优劣? 根据具体使用场景而定: 例1:股票预测,未来该股票是升还是降?业务要求更精准的找到能够上升的股票:此情况下,模型精准率越高越优. ...

  4. BERT模型在多类别文本分类时的precision, recall, f1值的计算

    BERT预训练模型在诸多NLP任务中都取得最优的结果.在处理文本分类问题时,即可以直接用BERT模型作为文本分类的模型,也可以将BERT模型的最后层输出的结果作为word embedding导入到我们 ...

  5. 目标检测的评价标准mAP, Precision, Recall, Accuracy

    目录 metrics 评价方法 TP , FP , TN , FN 概念 计算流程 Accuracy , Precision ,Recall Average Precision PR曲线 AP计算 A ...

  6. Classification week6: precision & recall 笔记

    华盛顿大学 machine learning :classification  笔记 第6周 precision & recall 1.accuracy 局限性 我们习惯用 accuracy ...

  7. 机器学习中的 precision、recall、accuracy、F1 Score

    1. 四个概念定义:TP.FP.TN.FN 先看四个概念定义: - TP,True Positive - FP,False Positive - TN,True Negative - FN,False ...

  8. 【tf.keras】实现 F1 score、precision、recall 等 metric

    tf.keras.metric 里面竟然没有实现 F1 score.recall.precision 等指标,一开始觉得真不可思议.但这是有原因的,这些指标在 batch-wise 上计算都没有意义, ...

  9. 评价指标整理:Precision, Recall, F-score, TPR, FPR, TNR, FNR, AUC, Accuracy

    针对二分类的结果,对模型进行评估,通常有以下几种方法: Precision.Recall.F-score(F1-measure)TPR.FPR.TNR.FNR.AUCAccuracy   真实结果 1 ...

随机推荐

  1. Linux文件/proc/net/tcp分析

    本文转载自Linux文件/proc/net/tcp分析 导语 /proc/net/tcp文件提供了tcp的连接信息,是由net/ipv4/tcp_ipv4.c中的tcp4_seq_show()实现信息 ...

  2. java实现压缩文件

    原文链接:https://www.cnblogs.com/zeng1994/p/7862288.html

  3. TorchVision 预训练模型进行推断

    torchvision.models 里包含了许多模型,用于解决不同的视觉任务:图像分类.语义分割.物体检测.实例分割.人体关键点检测和视频分类. 本文将介绍 torchvision 中模型的入门使用 ...

  4. Java基本概念:继承

    一.简介 描述: 现实世界中的继承无处不在.比如:动物细分有哺乳动物.爬行动物等,哺乳动物细分有灵长目.鲸目等. 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模. 继承是类和类之间的一种关 ...

  5. mysql 单表下的字段操作

    如下只介绍单表的添加.更新.删除.查询表结构操作,查询数据操作范围太大用单独的篇幅来讲解: 查看表结构 desc test_tb; Insert 插入数据 插入 = 添加 为表中指定的字段插入数据 C ...

  6. Java 集合(List、Set、Map 等)相关问答归纳再整理

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  7. 【免费开源】基于Vue和Quasar的crudapi前端SPA项目实战—环境搭建 (一)

    背景介绍和环境搭建 背景 crudapi增删改查接口系统的后台Java API服务已经全部可用,需要一套后台管理UI,主要用户为开发人员或者对计算机有一定了解的工作人员,通过UI配置元数据和处理业务数 ...

  8. 关于IO

    前言 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口.IO指 ...

  9. C# 应用 - 封装类访问 Postgresql 数据库

    引入库类 连接数据库 访问数据库 1)增删改数据库 2)查数据库 数据转换 事务 1. 引入库类 引入 Npgsql.dll using Npgsql; using NpgsqlTypes; 2. 连 ...

  10. Android R 新特性分析及适配指南

    Android R(Android 11 API 30)于2020年9月9日正式发布,随国内各终端厂商在售Android设备的版本更新升级,应用软件对Android R 版本的兼容适配已迫在眉睫. 对 ...