您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

一文搞懂分类算法中常用的评估指标

时间:2020-09-27 13:19:01  来源:  作者:

导读

通常我们在解决某个问题的时候,会设计多种分类算法在训练的时候我们还会调节各种超参以及使用各种trick以获取最优的分类模型,那这时候我们应该如何来衡量这个最优呢?

分类算法的评估指标有很多种,选择使用哪一种评估指标,应该根据实际情况来进行选择,而不能一概而定。

混淆矩阵

我们先来了解一下混淆矩阵,后面的分类评估指标其实都是在这个基础上发展而来,理解了这个,再去学习后面的评估指标就很简单了。

混淆矩阵(confusion matrix):是机器学习领域统计分类问题中常用的可视化工具,从名字上不能看出其实它就是一个矩阵,它主要由两个维度组成实际类别预测类别。矩阵的每一列代表一个类的实例预测,而每一行表示一个实际的类的实例。之所以如此命名,是因为通过这个矩阵可以方便地看出机器是否将两个不同的类混淆了(比如说把一个类错当成了另一个)。下面我们来看一个猫狗分类的实例

一文搞懂分类算法中常用的评估指标

混淆矩阵

上面的表格很简洁的展示了分类模型的预测结果,一共预测了8只猫和5只狗,其中5只猫和3只狗预测正确,3只猫和2只狗预测错误。表格中的对角线元素表示预测正确,对角线之外均表示预测错误,下面我们用专业的术语来描述预测结果:

  • 真正例(True Positives)简称TP: 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数
  • 假正例(False Positives)简称FP:被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数
  • 真负例(True Negatives)简称TN:被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数
  • 假负例(False Negatives)简称FN:被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数

对上面的术语做一个说明帮助大家记忆和理解:
上面中的True和False表示的是样本的真实标签,Positives和Negatives表示的是模型的预测标签。
样本实际的正例数:P=TP+FN
样本实际的负例数:N=TN+FP

分类算法中的评估指标

  1. 正确率(accuracy)

正确率是我们常用的分类指标,计算公式如下

一文搞懂分类算法中常用的评估指标

 

正确率是指分类算法预测正确的样本在总样本中所占的比例,一般来说,正确率越大表示分类算法的效果越好

  1. 错误率(error)

错误率是指分类算法预测错误的样本在总样本中所占的比例,计算公式如下

一文搞懂分类算法中常用的评估指标

 

对于某一个实例来说,分对和分错是一个互斥事件,accuracy+error=1

  1. 召回率(recall)

召回率也被称为灵敏度(sensitivity),指分类正确的正例在正例中所占的比例

一文搞懂分类算法中常用的评估指标

 

  1. 精度(precision)

精度是精确性的度量,表示被分为正例中实际为正例所占的比例

一文搞懂分类算法中常用的评估指标

 

  1. 特异性(specificity)

表示的是所有负例中被分对的比例,衡量了分类器对负例的识别能力

一文搞懂分类算法中常用的评估指标

 

  1. F1-Score

有的时候我们需要结合多个指标来评估算法的效果,而F1-Score就是综合考虑了recallprecision两个指标,因此F1-score也被称为综合分类率。计算公式如下

一文搞懂分类算法中常用的评估指标

 

  1. ROC曲线

ROC曲线是(Receiver Operating Characteristic Curve,受试者工作特征曲线)的简称,是以灵敏度(真阳性率)为纵坐标,以1减去特异性(假阳性率)为横坐标绘制的性能评价曲线。可以将不同模型对同一数据集的ROC曲线绘制在同一笛卡尔坐标系中,ROC曲线越靠近左上角,说明其对应模型越可靠。也可以通过ROC曲线下面的面积(Area Under Curve, AUC)来评价模型,AUC越大,模型越可靠。

一文搞懂分类算法中常用的评估指标

 

  1. PR曲线

PR曲线是Precision Recall Curve的简称,描述的是precision和recall之间的关系,以recall为横坐标,precision为纵坐标绘制的曲线。该曲线的所对应的面积AUC实际上是目标检测中常用的评价指标平均精度(Average Precision, AP)。AP越高,说明模型性能越好。

分类算法中常见的问题

  • 正确率指标能很好的评估分类模型吗?

不一定。例如我们想开发一个地震警报器,当地震要来临时提前发送警报让大家避险。而我们知道,实际上地震发生的次数很少,也许100次中可能只有1次地震,甚至更低,这里为了方便计算。如果此时,我们的预测器将这100次的预测结果都预测为不会发生地震,那我们的预测器的正确率有99%。

虽然,这个预测器的正确率很高,但是实际上它不会产生任何的商业价值,其实也就没任何使用价值。实际上我们需要预测正确的正是那一次的地震。

针对这种情况我们更希望是recall指标尽可能的高,而不是正确率。所以,对于分布不平衡的数据来说并不是正确率越高越好,应该根据实际需求来选择评估指标。

  • 如何绘制ROC曲线?
一文搞懂分类算法中常用的评估指标

 

在现实任务中,我们只是对有限个测试样本进⾏绘制ROC图,此时只能获得有限个(假正例率,真正例率)坐标对,就⽆法获得如(a)的光滑的ROC曲线,就会获得如图(b)的近似的ROC曲线。

绘图过程如下:给定m1个正例和m2个反例,根据模型预测结果(正例的概率)对样例进⾏排序,然后把分类阈值设置为最⼤,即把所有样例都预测为反例,此时真正例率和假正例率都为0,在坐标(0, 0)处标记⼀个点,然后将分类阈值依次设置为每个样例的预测值,即依次将每个样例设置为正例,若前⼀个标记点坐标为(x, y),当前若为真正例,则对应标记点坐标为(x, y+1/m1);若当前为假正例,则对应标记点坐标为(x+1/m2, y),然后⽤线段连接相邻的点。



Tags:分类算法   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
有时可以将机器学习算法视为一个黑匣子,那么我们如何以更直观的方式来解释它们呢?在下图中,给定蓝点和红点,我们可以看到有一个图案。 作为人类,我们可以使用"直觉"将它们分开,并...【详细内容】
2021-04-14  Tags: 分类算法  点击:(275)  评论:(0)  加入收藏
导读通常我们在解决某个问题的时候,会设计多种分类算法在训练的时候我们还会调节各种超参以及使用各种trick以获取最优的分类模型,那这时候我们应该如何来衡量这个最优呢?分类...【详细内容】
2020-09-27  Tags: 分类算法  点击:(95)  评论:(0)  加入收藏
摘要: 本文以knn算法为例简要介绍如何使用分类算法来完成回归任务。关键字: knn算法,回归任务。之前的文章(K近邻(knn)算法是如何完成分类的?)已经介绍了knn算法的思想以及如何使...【详细内容】
2020-06-23  Tags: 分类算法  点击:(116)  评论:(0)  加入收藏
▌简易百科推荐
前言Kafka 中有很多延时操作,比如对于耗时的网络请求(比如 Produce 是等待 ISR 副本复制成功)会被封装成 DelayOperation 进行延迟处理操作,防止阻塞 Kafka请求处理线程。Kafka...【详细内容】
2021-12-27  Java技术那些事    Tags:时间轮   点击:(1)  评论:(0)  加入收藏
博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI在炼丹过程中,为了减少训练所需资源,MLer有时会将大型复杂的大模型“蒸馏”为较小的模型,同时还要保证与压缩前相当的结果。这就...【详细内容】
2021-12-24  量子位    Tags:蒸馏法   点击:(9)  评论:(0)  加入收藏
分稀疏重建和稠密重建两类:稀疏重建:使用RGB相机SLAMOrb-slam,Orb-slam2,orb-slam3:工程地址在: http://webdiis.unizar.es/~raulmur/orbslam/ DSO(Direct Sparse Odometry)因为...【详细内容】
2021-12-23  老师明明可以靠颜值    Tags:算法   点击:(7)  评论:(0)  加入收藏
1. 基本概念希尔排序又叫递减增量排序算法,它是在直接插入排序算法的基础上进行改进而来的,综合来说它的效率肯定是要高于直接插入排序算法的;希尔排序是一种不稳定的排序算法...【详细内容】
2021-12-22  青石野草    Tags:希尔排序   点击:(6)  评论:(0)  加入收藏
ROP是一种技巧,我们对execve函数进行拼凑来进行system /bin/sh。栈迁移的特征是溢出0x10个字符,在本次getshell中,还碰到了如何利用printf函数来进行canary的泄露。ROP+栈迁移...【详细内容】
2021-12-15  星云博创    Tags:栈迁移   点击:(19)  评论:(0)  加入收藏
一、什么是冒泡排序1.1、文字描述冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地...【详细内容】
2021-12-15    晓掌柜丶韶华  Tags:排序算法   点击:(16)  评论:(0)  加入收藏
在了解golang的map之前,我们需要了解哈希这个概念。哈希表,又称散列表(Hash table),是根据键(key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算出一个键值的函数,将...【详细内容】
2021-12-07  一棵梧桐木    Tags:哈希表   点击:(13)  评论:(0)  加入收藏
前面文章在谈论分布式唯一ID生成的时候,有提到雪花算法,这一次,我们详细点讲解,只讲它。SnowFlake算法据国家大气研究中心的查尔斯·奈特称,一般的雪花大约由10^19个水分子...【详细内容】
2021-11-17  小心程序猿QAQ    Tags:雪花算法   点击:(24)  评论:(0)  加入收藏
导读:在大数据时代,对复杂数据结构中的各数据项进行有效的排序和查找的能力非常重要,因为很多现代算法都需要用到它。在为数据恰当选择排序和查找策略时,需要根据数据的规模和类型进行判断。尽管不同策略最终得到的结果完...【详细内容】
2021-11-04  华章科技    Tags:排序算法   点击:(37)  评论:(0)  加入收藏
这是我在网上找的资源的一个总结,会先给出一个我看了觉得还行的关于算法的讲解,再配上实现的代码: Original author: Bill_Hoo Original Address: http://blog.sina.com.cn/s/bl...【详细内容】
2021-11-04  有AI野心的电工和码农    Tags: KMP算法   点击:(36)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条