在深度学习中,对模型的测量和评估至关重要,只有选择与问题相匹配的评估方法,才能够快速地发现在模型选择和训练过程中可能出现的问题,从而迭代地对模型进行优化。

图像分类是计算机视觉中最基础的一个任务,它的目标是将不同的图像划分到不同的类别,实现最小的分类误差,这里我们只考虑单标签分类问题,即每一幅图像都只有唯一的类别。

对于单标签分类任务,其评价指标主要有:

文章目录

  • 1、准确率
  • 2、精确率 & 召回率
  • 3、F1-score
  • 4、混淆矩阵
  • 5、ROC曲线
  • 6、AUC

对于二分类而言:
判断样本是否为正类,只需要神鼎一个概率阈值T,预测概率大于 T 的为正类,小于 T 的为负类,T 默认值是 0.5,如果我们减少阈值 T,更多的样本会被识别为 正类,这样可以提高正类的召回率,但同时也会让更多的负类被错分为正类,如果增加阈值 T,则正类的召回率降低,分类精度提高。

如果多分类而言:
如 ImageNet 分类中的 1000类,那么预测类别就是预测概率最大的那一类。

1、准确率

对于单标签任务而言,每个样本都只有一个正确的类别,预测到该类别就是分类正确,没有预测到的就是分类错误,因此分类最直观的指标就是 Accuracy,即准确率,计算方法如下:

Accuracy=TP+TNTP+FP+TN+FNAccuracy = \frac{TP +TN}{TP +FP +TN +FN}Accuracy=TP+FP+TN+FNTP+TN​

记样本 xix_ixi​ 的类别为 yiy_iyi​ ,类别种类为(0,1,...,N)(0,1,...,N)(0,1,...,N),预测类别函数为 fff ,则 TOP-1 Accuracy 的计算方法如下:

TOP−1Accuracy=∑i=0N−1(f(xi)==yi)NTOP-1 Accuracy = \frac{\sum^{N-1}_{i=0} (f(x_i)==y_i)}{N}TOP−1Accuracy=N∑i=0N−1​(f(xi​)==yi​)​

如果给出预测概率最大的5个预测类别,只要其中包含了真实的类别,则判定预测正确计算出来的指标就是 TOP-5 Accuracy。

import torchdef accuracy(output, target, topk=(1,)):"""Computes the accuracy over the k top predictions for the specified values of k"""maxk        = max(topk)batch_size  = target.size(0)_, pred     = output.topk(maxk, dim=1, largest=True, sorted=True)pred        = pred.t()correct     = pred.eq(target.reshape(1, -1).expand_as(pred))return [correct[:k].reshape(-1).float().sum(0) * 100. / batch_size for k in topk]

2、精确率 & 召回率

如果只考虑正样本的指标,则有两个很常用的指标 – 精确率 & 召回率

  • 正样本精确率 Precision = TP / (TP + FP),表示召回为正样本的样本中,到底有多大比例是真正的正样本;
  • 正样本召回率 Recall = TP / (TP + FN),表示真正的正样本有多大比例被召回;

当然,如果对负样本感兴趣的话,也可以计算对应的精确率和召回率。

通常召回率越高,精确率越低,根据两者对应的值可以绘制 Recall-Precision 曲线,如下图,曲线越靠近右上角说明其性能越好,该性能可以用该曲线与坐标轴包围的面积来定量评估。

3、F1-score

有时我们不仅关注正样本的精确率,也关心其召回率,但又不想用准确率来衡量,一个折中的方法是采用 F1-score。

F1−score=2×Precision⋅RecallPrecision+RecallF1-score = 2 \times \frac{Precision \cdot Recall}{Precision + Recall}F1−score=2×Precision+RecallPrecision⋅Recall​

只有在精确率和召回率都高的情况下, F1-score 才会很高,因此 F1-score是一个平衡性能的指标。

4、混淆矩阵

如果我们想知道类别之间相互误分的情况,查看是否有特定的类别相互混淆,就可以用混淆矩阵画出分类的详细预测结果。对于包含多个类别的任务,混淆矩阵很清晰地反映了各类别之间的错分概率。

如图,对于一个包含11个类别的分类任务,其混淆矩阵为 11x11 的矩阵,其中第 i 行第 j 列的元素表示第 i 类目标被分为第 j 类的概率。可以看出,越好的分类器对角线上的值越大。

5、ROC曲线

准确率、精确率、召回率 和 F1-score 都是单一的数值指标,如果想观察分类算法在不同的参数下的表现,此时可以使用一条曲线,及 ROC(Receiver Operating Characteristic)曲线。

ROC 曲线可以用评价一个分类器在不同阈值下的表现。在 ROC 曲线中,每个点的

  • 横坐标是 FPR(False Position Rate)
  • 纵坐标是TPR(True position Rate)

其描绘了分类器在 True Position 和 False Position 之间的平衡。TPR 和 FPR 的计算如下:

  • TPN = TP / (TP + FN):表示分类器预测的正类中实际正实例占所有正实例的比例;
  • FPN = FP / (FP + TN):表示分类器预测的正类中实际负实例占所有负实例的比例,FPR越大,预测正类中的实际负类越多。

ROC 曲线有四个关键点:

  • (0,0)点:FPR=TPR=0,表示分类器预测所有的样本都为负样本;
  • (1,1)点:FPR=TPR=1,表示分类器预测所有的样本都为正样本;
  • (0,1)点:FPR=0,TPR=1,此时FN=0且FP=0,表示最优分类器,所有的样本都被正确分类;
  • (1,0)点:FPR=1,TPR=0,此时TP=0且TN=0,表示最差分类器,有所得样本都被错误分类;

ROC 曲线有一个很好的特征:当测试集中的正负样本比例分布变化时,ROC曲线能够保持不变,即它对正负样本不均衡问题不敏感。例如:负样本的数量增加到原来的10倍,TPR不受影响,FPR 的各项也呈比例地增加,本身并不会有太大的变化,所以对不均衡样本问题,通常选择ROC曲线作为评价标准。

ROC 曲线越接近左上角,表示该分类器的性能越好,若一个分类器的ROC曲线完全包住了另一个分类器ROC曲线,那么可以判断前者的性能更好。

如果想通过两条ROC曲线来定量评估两个分类器的性能,就可以使用 AUC指标。

6、AUC

AUC(Area Under Curve) 为ROC曲线下的面积,这个面积的数值不会大于1。它的含义是一个概率,即随机挑选一个正样本 及 一个负样本,AUC 表征的是分类器对正样本给出的预测值 高于 负样本给出的预测值的概率。

当然,前提是正样本的预测值的确应该高于负样本。

不同 AUC 值表示不同的含义:

  • AUC=1:在任何阈值下分类器都可以 100% 识别所有类别,这是理想的分类器,基本不存在;
  • AUC=0.5:相当于随机预测,此时分类器不可用;
  • 0.5<AUC<1:优于随机预测,这也是实际作用中大部分分类器所处的状态;
  • AUC<0.5:总是比随机预测更差;

AUC 作为一个评价标准,常和 ROC 曲线一起使用,因为 ROC曲并不能清晰地说明那个分类器的效果更好,而 AUC值的大小直接量化评估了分类器的性能。

【附代码】图像分类 — 测评指标相关推荐

  1. 目标检测模型的评估指标mAP详解(附代码)

    https://zhuanlan.zhihu.com/p/37910324 对于使用机器学习解决的大多数常见问题,通常有多种可用的模型.每个模型都有自己的独特之处,并随因素变化而表现不同. 每个模型在 ...

  2. 聚类的外部指标(Purity, ARI, NMI, ACC) 和内部指标(NCC,Entropy,Compactness,Silhouette Index),附代码 (Python 和 Matlab)

    聚类性能评估的外部指标和内部指标,附代码 (Python 和 Matlab) 文章目录 聚类性能评估的外部指标和内部指标,附代码 (Python 和 Matlab) 1 外部指标 1.1 Purity ...

  3. 【图像分类】卷积神经网络之AlexNet网络模型实现花卉图像识别(附代码和数据集,PyTorch框架)

    写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌. 在上一篇博文中我们对AlexNet网络模型的结构 ...

  4. python稳健性检验_风控模型6大核心指标(附代码)

    欢迎各位同学学习python金融风控评分卡模型和数据分析微专业课 在我们开发完信用分模型后,经常需要计算如下的一些指标:●      区分度的指标:○      AUC○      KS○       ...

  5. 神秘指标一出现,市场立马就变天 | 用Python计算成交量集中度(附代码)【邢不行】

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助 01 某神秘指标 有这么一个神秘指标,虽然15年来只 ...

  6. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

  7. ERP软件测评指标及评定细则(一)(转)

    ERP软件测评指标及评定细则(一)(转载) Manufacturing Information EngineeringApplication Software Testing Specificatio ...

  8. 深度学习掩膜_交叉新趋势|采用神经网络与深度学习来预报降水、温度等案例(附代码/数据/文献)...

    欢迎订阅微信公众号:『气象学家』 阅读建议 随着人工智能的发展,拥有了越来越丰富的应用场景,气象行业也不例外,在突破传统预报方法的情况下,神经网络与深度学习来预报气象要素也取得了不错的效果,下面就给出 ...

  9. 独家 | 手把手教TensorFlow(附代码)

    上一期我们发布了"一文读懂TensorFlow(附代码.学习资料)",带领大家对TensorFlow进行了全面了解,并分享了入门所需的网站.图书.视频等资料,本期文章就来带你一步步 ...

最新文章

  1. PCB 3D模型与渲染
  2. 库克笑了,说要给股东多分红:换了M1后Mac销售额增长70%,iPhone也增长66%
  3. 预测大盘最准确的指标_上证指数11月23日走势预测
  4. hdu 1042 N!(大数)
  5. asp.net写入日志到文本文件
  6. MTK 驱动开发(35)---待机功耗分析流程
  7. 如何更换 Mac 登录画面的背景桌面?
  8. matlab车牌识别图像调整程序,matlab完整车牌识别程序,包括报告及图像
  9. 两台电脑怎么互传文件?用它就能搞定!
  10. 天牛须和贪心算法_天牛须搜索算法(BAS)
  11. OASIS协议标准文档的解读_第一部分
  12. 瑞萨单片机iap串口升级boot程序与app程序合并的工程构建-学习记录
  13. 微信小程序(四) 节点查询 | wx.createSelectorQuery
  14. 5G笔记| 概述:5G网络架构(NSA/SA组网)、无线资源控制RRC、语音通话
  15. 数字孪生与3D可视化
  16. 那些你可能用得上的在线办公神器(二)
  17. python emf转gif_将EMF/WMF文件转换为PNG/JPG
  18. Java经典面试:完美世界java开发待遇
  19. 小皮助手(电脑玩手机游戏) v1.0.0.2 官方版
  20. java 提高篇_【Java入门提高篇】Day16 Java异常处理(上)

热门文章

  1. 数据分析04-朴素贝叶斯
  2. 网络变压器 原理、功能、解决辐射发射问题的应用
  3. Andrew NG 《machine learning》week 2,class3 —Computing Parameter Analytically
  4. 梯度下降算法与Normal equation
  5. 计算机图形学在线作业,电子科大16秋《计算机图形学》在线作业1答案
  6. 【加固服务器】修改默认ssh端口
  7. ASP.NET MVC 5-开始MVC5之旅
  8. Day7 牛客 回文素数
  9. 无为第一中2021高考成绩查询,2017无为多个中学发布高考成绩喜报!
  10. html 中圆角怎么写,css圆角边框代码怎么写?(代码示例)