机器学习中常见的评价指标总结(代码片段)

非晚非晚 非晚非晚     2022-12-04     346

关键词:

文章目录

1. 评价指标的种类

评价指标是建立在不同的机器学习任务上的,主要分为三大类:分类、回归和无监督

学习中遇到的分类任务中的评价指标有准确率(Accuracy)、TPR、FPR、Recall、Precision、F-score、MAP、ROC曲线和AUC等,回归任务中的指标有MSE、MAE等。

2. 分类任务的评价指标

2.1 分类任务的一些概念


如上图所示,绿颜色的为GT Box(ground truth box),红颜色的Predict Box。如果要正确检测出图中的猫和狗,那怎么才能算是正确的检测呢?下边的这三个标准都是需要看的:

  1. GT与预测框IoU是否大于阈值
  2. 预测的类别是否正确?
  3. 置信度是否大于阈值?

(1) 交并率(IoU, Intersection over Union)

IoU的作用是评价两个矩形框之间的相似性,在目标检测中是度量两个检测框的交叠程度,它的计算公式如下:
a r e a ( B g t ∩ B p ) a r e a ( B g t ∪ B p ) \\fracarea(B_gt\\cap B_p)area(B_gt\\cup B_p) area(BgtBp)area(BgtBp)

其中 B g t B_gt Bgt表示GT Box, B p B_p Bp表示Predict Box。IOU的计算图示如下。


一般来说,这个IOU> 0.5 就可以被认为一个不错的结果了

(2)NMS

NMS即non maximum suppression,也就是非极大抑制,顾名思义就是抑制不是极大值的元素,搜索局部的极大值。

所谓非极大值抑制:先假设有6个 预测矩形框 ,根据分类器类别分类概率做排序,从小到大分别属于车辆的概率分别为A<B<C<D<E<F,NMS的流程如下:

  1. 最大概率矩形框F开始 ,分别判断A、B、C、D、E与F的重叠度IOU是否大于某个设定的阈值;
  2. 假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。
  3. 从剩下的矩形框A、C、E中,选择概率最大的E,然后判断A、C与E的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。
  4. 重复这个过程,找到所有被保留下来的矩形框。

(3)TP、FP、FN、TN与混淆矩阵

  • 混淆矩阵

混淆矩阵(Confusion Matrix)又被称为错误矩阵,通过它可以直观地观察到算法的效果。它的每一列是样本的预测分类,每一行是样本的真实分类(反过来也可以),顾名思义,它反映了分类结果的混淆程度。

混淆矩阵形式如下。

  • P(Positive):代表1,表示预测为正样本
  • N(Negative):代表0,表示预测为负样本
  • T(True):代表预测正确
  • F(False):代表预测错误

下列Positive和Negative表示模型对样本预测的结果是正样本(正例)还是负样本(负例)。True和False表示预测的结果和真实结果是否相同。

概念解释备注
True positives(TP)预测为 1,预测 正确,即 实际 1IoU>IOU,IOU一般取0.5
False positives(FP)预测为 1,预测 错误,即 实际 0误检
False negatives(FN)预测为 0,预测 错误,即 实际 1漏检
True negatives(TN)预测为 0,预测 正确,即 实际 0一般不会使用

2.2 准确率(Accuracy)

准确率(Accuracy)衡量的是分类正确的比例,它的计算公式简单直接,表示方法如下:
A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy = \\fracTP + TNTP + TN + FP + FN Accuracy=TP+TN+FP+FNTP+TN
表示如下:

虽然准确率可以判断总的正确率,但是在样本不平衡的情况下,并不能作为很好的指标来衡量结果,举个简单例子,比如正样本占90%,负样本占10%,如果我们全部预测为正样本,那么我们的准确率也能高达90%,但是这样的准确率是没有意义的。

2.3 精确率与召回率(Precision , Recall)

  • 精确率(Precision)

精准率(Precision)又叫查准率,它是指被 预测为正样本的检测框中预测正确的占比
P r e c i s i o n = T P T P + F P Precision = \\fracTPTP + FP Precision=TP+FPTP

精准率代表对正样本结果中的预测准确程度,而准确率则代表整体的预测准确程度,既包括正样本,也包括负样本

如上图所示,图中GT共有5只猫待检测,但实际上只检测出来了一只,而且这个检测是正确的。那这种情况下的查准率就是:
P r e c i s i o n = 1 1 = 100 % Precision = \\frac11= 100\\% Precision=11=100%

  • 召回率(Recall)

召回率(Recall)又叫查全率,它是针对原样本而言的,它的含义是在实际为正的样本中被预测为正样本的概率,也就是 被正确检测出来的真实框占所有真实框(gt)的比例
R e c a l l = T P T P + F N Recall = \\fracTPTP + FN Recall=TP+FNTP


同样是上边有5个待检测的GT,这次得到了50个预测框,其中5个全部预测正确,这种情况下TP=5,漏检FN=0最终的查全率为:

R e c a l l = 5 5 + 0 = 100 % Recall = \\frac55+0=100\\% Recall=5+05=100%

2.4 F1分数

有时候我们需要在精确率与召回率间进行权衡,一种选择是画出精确率-召回率曲线(Precision-Recall Curve),曲线下的面积被称为AP分数(Average precision score);另外一种选择是计算 F β F_β Fβ分数。
F β = ( 1 + β 2 ) ⋅ p r e c i s i o n ⋅ r e c a l l β 2 ⋅ p r e c i s i o n + r e c a l l = ( 1 + β 2 ) P R β 2 P + R F_β=(1+β^2)⋅\\fracprecision⋅recallβ^2⋅precision+recall=\\frac(1+β^2)PRβ^2P+R Fβ=(1+β2)β2precision+recallprecisionrecall=β2P+R(1+β2)PR
当β=1称为F1分数,F1是精确率和召回率的调和均值。F1分数同时考虑了查准率和查全率,让二者同时达到最高,取一个平衡

说明:当 β > 1 β>1 β>1时,召回率的权重高于精确率,相反,当 β < 1 β<1 β<1时精确率的权重高于召回率。

2.5 G分数

G分数是另一种统一精准率和召回率的系统性能评估标准。F分数是准确率和召回率的调和平均数,而G分数被定义为 准确率和召回率的几何平均数

G = p r e c i s i o n ∗ r e c a l l G = \\sqrtprecision*recall G=precisionrecall

2.6 AP和mAP

AP衡量的是学出来的模型在每个类别上的好坏,mAP(Mean Average Precision)衡量的是学出的模型在所有类别上的好坏,得到AP后mAP的计算就变得很简单了,就是取所有AP的平均值。

P-R曲线定义如下:根据学习器的预测结果(一般为一个实值或概率)对测试样本进行排序,将最可能是“正例”的样本排在前面,最不可能是“正例”的排在后面,按此顺序逐个把样本作为“正例”进行预测,每次计算出当前的P值和R值,如下图所示:

下面以3张图片为例,说明AP和mAP的计算过程:


在所有的图片中(当前只有上图一张),待检测的目标的数量 n u m o b = 2 num_ob=2 numob=2,上图中的检测情况如下表所示:

GT idConfidenceOB(IoU=0.5)
10.98True
10.61False

该表中的顺序是按Confidence从高到低排序的,对于一个GT来说,只能有一个检测框为正确的检测


加入第二张图片,此时待检测的目标数量 n u m o b = 3 num_ob=3 numob=3,检测情况如下表所示。

GT idConfidenceOB(IoU=0.5)
10.98True
30.89True
30.66False
10.61False

加入第三张图片后,再加上前两张中的待检测目标,共有 n u m o b = 7 num_ob=7 numob=7个目标需要检测,检测情况如下表所示:

GT idConfidenceOB(IoU=0.5)
10.98True
30.89True
60.88True
70.78True
30.66False
10.61False
40.52True

依次取Confidence的阈值为[0.98, 0.89, 0.88, 0.78, 0.66, 0.61, 0.52],计算对应的查准率和查全率如下表所示:

RankPrecisionRecallConfidence thread
11.00.140.98
21.00.280.89
31.00.420.88
41.00.570.78
50.800.570.66
60.660.570.61
70.710.710.52

以Confidence thread=0.52为例,此时的TP=5,误检FP=2,第一张和第三张两张图片共漏检FN=2,所以

P r e c i s i o n = T P T P + F P = 5 5 + 2 = 0.71 Precision=\\fracTPTP+FP=\\frac55+2=0.71 Precision=TP+FPTP=5+25=0.71
R e c a l l = T P T P + F N = 5 5 + 2 = 0.71 Recall=\\fracTPTP+FN=\\frac55+2=0.71 Recal查看详情

机器学习100天(二十二):022分类模型评价指标-python实现(代码片段)

机器学习100天!今天讲的是:分类模型评价指标-Python实现!《机器学习100天》完整目录:目录打开spyder,首先,导入标准库。importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.metricsimportaccuracy_scorefromsklearn.metricsimportprecision_scorefromsklear 查看详情

机器学习一般线性回归(代码片段)

...归"模型。 0.概述线性回归应该是我们听过次数最多的机器学习算法了。在一般的统计学教科书中,最后都会提到这种方法。因此该算法也算是架起了数理统计与机器学习之间的桥梁。线性回归虽然常见,但是却并不简单。该... 查看详情

python深度学习之路-3.1性能评价指标(代码片段)

...量进行统计的一种表格。其中,真阳性和真阴性表示机器学习模型的回答是正确的,假阳性和假阴性则表示机器学习的模型回答是错的。2.编程实现混淆矩阵使用sklearn.metrics模块中的confusion_matrix()函数对混淆矩 查看详情

机器学习算法中的评价指标(准确率召回率f值rocauc等)

...的可以查阅周志华的西瓜书第二章,写的非常详细~一、机器学习性能评估指标1.准确率(Accurary) 准确率是我们最常见的评价指标,而且很容易理解,就是被分对的样本数除以所有的样本数,通常来说,正确率越高,分类器越... 查看详情

机器学习中的预测评价指标msermsemaemapesmape(代码片段)

...#xff09;最近论文在写关于极限学习机ELM的相关内容,在机器学习中有很重要的一点就是评级指标,这是判断你的算法性能很 查看详情

机器学习分类算法评价指标(代码片段)

一.分类评价指标对机器学习算法的性能进行评估时,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价指标,这就是算法评价指标。分类算法的评价指标一般有准确率,精确率,召回率... 查看详情

机器学习中的评价指标

作者|我的智慧生活来源|咪付在人工智能领域,机器学习的效果需要用各种指标来评价。本文将阐述机器学习中的常用性能评价指标,参考技术A作者|我的智慧生活来源|咪付在人工智能领域,机器学习的效果需要用各种指标来评... 查看详情

机器学习经验总结-神经网络训练失败的一些常见原因

前言在面对模型不收敛的时候,首先要保证训练的次数够多。在训练过程中,loss并不是一直在下降,准确率一直在提升的,会有一些震荡存在。只要总体趋势是在收敛就行。若训练次数够多(一般上千次,上万次,或者几十个ep... 查看详情

评价一个推荐系统的指标详解!(代码片段)

...如何评价一个推荐系统。推荐系统简介推荐系统可以说是机器学习和深度学习应用最广泛的领域&# 查看详情

准确理解机器学习算法的常用评价指标

准确理解机器学习算法的常用评价指标一级目录二级目录三级目录一级目录二级目录三级目录 查看详情

机器学习1-关于回归问题的准确性评价(代码片段)

网址https://book.douban.com/reading/46607817/建立回归器后,需要建立评价回归器拟合效果的指标模型。平均误差(meanabsoluteerror):这是给定数据集的所有数据点的绝对误差平均值均方误差(meansquarederror):给定数据集的所有数据点的误差的平... 查看详情

机器学习第二周-模型评价指标(ii)(代码片段)

Python代码实现一·分类模型  1.sklearn.metrics中包含常用的评价指标:  #准确率accuracy_score(y_true,y_pred,normalize=True,sample_weight=None)   参数:y_true:验证集y_pred:分类器的返回值normalize:默认值为True,返回... 查看详情

r语言︱机器学习模型评价指标+(转)模型出错的四大原因及如何纠错

 R语言︱机器学习模型评价指标+(转)模型出错的四大原因及如何纠错 笔者寄语:机器学习中交叉验证的方式是主要的模型评价方法,交叉验证中用到了哪些指标呢?交叉验证将数据分为训练数据集、测试数据集,然后... 查看详情

生动理解深度学习中常用的各项评价指标含义tpfptnfnrecalliouaccuracy(代码片段)

无论是对于图像领域的分类、分割问题,亦或点云领域的物体分类、场景分割,在评价一个模型的好坏时,经常涉及TP、FP、TN、FN、Recall、IoU、Accuracy。。。等指标进行衡量,那么这些指标是什么意思呢?今天... 查看详情

机器学习之类别不平衡问题——各种评估指标(代码片段)

在二分类问题中,通常假设正负类别相对均衡,然而实际应用中类别不平衡的问题,如100,1000,10000倍的数据偏斜是非常常见的,比如疾病检测中未患病的人数远超患病的人数,产品质量检测中合格产品数量远超不合格产品等。在... 查看详情

metric评价指标-机器翻译指标之bleu(转载)(代码片段)

...f09;,即双语评估替补。所谓替补就是代替人类来评估机器翻译的每一个输出结果。Bleuscore所做的,给定一个机器生成的翻译,自动计算一个分数,衡量机器翻译的好坏。取值范围是[0,1],越接近1,表明翻译质量越好... 查看详情

机器学习sklearn学习总结(代码片段)

Sklearn学习资料推荐:sklearn中文文档机器学习入门必看:使用scikit-learn构建模型的通用模板Python机器学习笔记:常用评估模型指标的用法 Sklean介绍 sklearn是机器学习中一个常用的python第三方模块,里面对一些常用... 查看详情