常见的机器学习相关评价指标

目录

一、Accuracy准确率

二、混淆矩阵 Confusion Matrix

三、Precision(精准度)和Recall(召回率)

四、 Fβ Score

五、PR曲线、ROC曲线

5.1、PR曲线

5.2、ROC曲线

六、AUC

七、回归(Regression)算法指标

6.1、平均绝对误差 MAE

6.2、均方误差 MSE

八、深度学习目标检测相关指标

8.1、IOU交并比

8.2、NMS非极大值抑制

8.3、AP、MAP


在使用机器学习模型的过程中,我们不可避免都会碰到如何评价我们模型到底是好还是坏?或者我们再看别人论文时,总会遇到一些比如:“准确率”、“召回率”之类的东西。博主记性不好总是忘记傻傻的分不清,总是搞混。所以,在这记录下一些常见的评价指标,下图是不同机器学习算法的评价指标:

一、Accuracy准确率

检测时分对的样本数除以所有的样本数。准确率一般被用来评估检测模型的全局准确程度,包含的信息有限,不能完全评价一个模型性能。

二、混淆矩阵 Confusion Matrix

对于一个二分类任务,二分类器的预测结果可分为以下4类:

  • TP: true positive—将正类样本预测为正
  • TN:true negative—将负类样本预测为负
  • FP:false positive—将负类样本预测为正
  • FN:false negative—将正类样本预测为负
 

正样本

负样本
正样本(预测) TP(真阳性) FP(假阳性)
负样本(预测) FN(假阴性) TN(真阴性)

三、Precision(精准度)Recall(召回率)

对于一个样本严重不均衡的数据,比如:邮件,如果我们有1000封邮件,其中正常邮件999个,而垃圾邮件只有1个,那么假设所有的样本都识别为正常邮件,那么此时Accuracy为99.9%。看起来我们的模型不错,但是该模型是没法识别出垃圾邮件的,因为我们训练该模型的目的就是为了能够分类出垃圾邮件,显然这不是我们需要的一种模型的评价指标。当然,在实际模型中,我们会使用该指标来初步判断我们的模型是好是坏。

通过上面的说明,我们知道单单靠准确率是无法准确的衡量我们的模型的,所以这里我们引出了Precision(精准度)Recall(召回率),它们仅适用于二分类问题。我们先来看看其定义:

Precision(精准度)

  • 定义:正确分类的正例个数占分类为正例的实例个数的比例,也称查准率
  • 计算公式Precision=\frac{TP}{TP+FP}

Recall(召回率)

  • 定义:正确分类的正例个数占实际正例个数的比例 也称查全率
  • 计算公式Recall=\frac{TP}{TP+FN}

理想情况下,精确率和召回率两者都越高越好。然而事实上这两者在某些情况下是矛盾的,精确率高时,召回率低;精确率低时,召回率高;关于这个性质通过观察PR曲线不难观察出来。比如在搜索网页时,如果只返回最相关的一个网页,那精确率就是100%,而召回率就很低;如果返回全部网页,那召回率为100%,精确率就很低。因此在不同场合需要根据实际需求判断哪个指标跟重要。

四、 Fβ Score

通常情况下,查准率和召回率是相互影响的,Precision高、Recall 就低;Recall 高、Precision就低。那么有没有一个能够衡量这两个指标的方法呢?所以这里就引出了F1 Score。F1函数是一个常用指标,F1值是精确率和召回率的调和均值,即

                                                  \frac{2}{F_{1}}=\frac{1}{P}+\frac{1}{R}

                                                 F_{1}=\frac{2PR}{P+R}

当然,F值可泛化为对精确率和召回率赋不同权值进行加权调和:

                                                 F_{\beta }=\frac{ \left ( 1 + \beta ^{2} \right ) PR}{\beta ^{2}P+R}

其中,β>1时,查全率更有影响;β=1时,退化为标准的F1;β<1时,查准率更有影响。

五、PR曲线、ROC曲线

5.1、PR曲线

PR曲线以Precision(精准度)为纵坐标,Recall(召回率)为横坐标。如下图所示:

从上图不难发现,precision与Recall的折中(trade off),曲线越靠近右上角性能越好,曲线下的面积叫AP分数,能在一定程度上反应模型的精确率和召回率都很高的比例。但这个值不方便计算,综合考虑精度与召回率一般使用F1函数或者AUC值(因为ROC曲线很容易画,ROC曲线下的面积也比较容易计算)。

一般来说,使用PR曲线评价一个模型的好坏,先看平滑不平滑,在看谁上谁下(同一测试集上),一般来说,上面的比下面的好(红线比黑线好)。

5.2、ROC曲线

在众多的机器学习模型中,很多模型输出的是预测概率,而使用精确率、召回率这类指标进行模型评估时,还需要对预测概率设分类阈值,比如预测概率大于阈值为正例,反之为负例。这使得模型多了一个超参数,并且这超参数会影响模型的泛化能力。

ROC曲线曲线不需要设定这样的阈值,ROC曲线纵坐标是真正率,横坐标是假正率,  ROC(Receiver Operating Characteristic)曲线常用来评价一个二值分类器的优劣,ROC的横轴为false positive rate,FPR,“假正例率”,也就是误判为正确的比例;纵轴是true positive rate,TPR,“真正例率”,也就是正确的判断为正确的比例。

  • 真正类率(True Postive Rate)TPRTPR=\frac{TP}{TP+FN} 在所有的正样本中,分类器预测正确的比例(等于Recall)。
  • 真负类率(True Negative Rate)FPRFPR=\frac{FP}{FP+TN}在所有的负样本中,分类器预测错误的比例。

ROC曲线的全称叫做Receiver Operating Characteristic,常常被用来判别一个分类器的好坏程度。ROC曲线为 FPR 与 TPR 之间的关系曲线,这个组合以 FPR 对 TPR,即是以代价 (costs) 对收益 (benefits),显然收益越高,代价越低,模型的性能就越好。模型的效果越好,整个ROC曲线越往左上角靠,与PR类似如果一个模型ROC曲线完全cover另一个,说明该模型优于另一模型。

另外值得注意的是,AUC的计算方法同时考虑了学习器对于正例和负例的分类能力,在样本不平衡的情况下,依然能够对分类器做出合理的评价。AUC对样本类别是否均衡并不敏感,这也是不均衡样本通常用AUC评价学习器性能的一个原因。

AUC分数是曲线下的面积(Area under curve),越大意味着分类器效果越好。显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

 既然已经这么多评价标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。

六、AUC

AUC是一个模型评价指标,只能用于二分类模型的评价,对于二分类模型,还有很多其他评价指标,比如logloss,accuracy,precision。如果你经常关注数据挖掘比赛,比如kaggle,那你会发现AUC和logloss基本是最常见的模型评价指标。为什么AUC和logloss比accuracy更常用呢?因为很多机器学习的模型对分类问题的预测结果都是概率,如果要计算accuracy,需要先把概率转化成类别,这就需要手动设置一个阈值,如果对一个样本的预测概率高于这个预测,就把这个样本放进一个类别里面,低于这个阈值,放进另一个类别里面。所以这个阈值很大程度上影响了accuracy的计算。使用AUC或者logloss可以避免把预测概率转换成类别。

AUC是Area under curve的首字母缩写。AUC就是ROC曲线下的面积,衡量学习器优劣的一种性能指标。从定义可知,AUC可通过对ROC曲线下各部分的面积求和而得。假定ROC曲线是由坐标为(x1,y1),...,(xm,ym)的点按序连接而形成,则AUC可估算为:

                                              AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_{i})(y_{i}+y_{i+1})

AUC 值为 ROC 曲线所覆盖的区域面积,显然,AUC越大,分类器分类效果越好。

  • AUC = 1,是完美分类器。
  • 0.5 < AUC < 1,优于随机猜测。有预测价值。
  • AUC = 0.5,跟随机猜测一样(例:丢铜板),没有预测价值。
  • AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

AUC的物理意义 AUC的物理意义正样本的预测结果大于负样本的预测结果的概率。所以AUC反应的是分类器对样本的排序能力。另外值得注意的是,AUC对样本类别是否均衡并不敏感,这也是不均衡样本通常用AUC评价分类器性能的一个原因。

怎么计算AUC?

  • 法1:AUC为ROC曲线下的面积,那我们直接计算面积可得。面积为一个个小的梯形面积(曲线)之和。计算的精度与阈值的精度有关 。
  • 法2:根据AUC的物理意义,我们计算正样本预测结果大于负样本预测结果概率。取n1* n0(n1为正样本数,n0为负样本数)个二元组,每个二元组比较正样本和负样本的预测结果,正样本预测结果高于负样本预测结果则为预测正确,预测正确的二元组占总二元组的比率就是最后得到的AUC。时间复杂度为O(N* M)。
  • 法3:我们首先把所有样本按照score排序,依次用rank表示他们,如最大score的样本,rank=n (n=n0+n1,其中n0为负样本个数,n1为正样本个数),其次为n-1。那么对于正样本中rank最大的样本,rank_max,有n1-1个其他正样本比他score小,那么就有(rank_max-1)-(n1-1)个负样本比他score小。其次为(rank_second-1)-(n1-2)。最后我们得到正样本大于负样本的概率为 :

                                                AUC=\frac{\sum rank(score) - \frac{n_{1}*(n_{1}+1)}{2}}{n_{0}*n_{1}}

其中:

n0、n1——负样本和正样本的个数

rank(score)——代表第i条样本的序号。(概率得分从小到大排,排在第rank个位置)。这里是将所有正样本的序号加起来。

本文着重讲解了第三种计算方法,这里也推荐大家在计算AUC时选择这种方法。关于怎么计算,可以参考以下链接,看一遍也就会了。

参考链接:AUC的计算方法

为什么说 ROC 和AUC都能应用于非均衡的分类问题?

ROC曲线只与横坐标 (FPR) 和 纵坐标 (TPR) 有关系 。我们可以发现TPR只是正样本中预测正确的概率,而FPR只是负样本中预测错误的概率,和正负样本的比例没有关系。因此 ROC 的值与实际的正负样本比例无关,因此既可以用于均衡问题,也可以用于非均衡问题。而 AUC 的几何意义为ROC曲线下的面积,因此也和实际的正负样本比例无关。

七、回归(Regression)算法指标

6.1、平均绝对误差 MAE

平均绝对误差MAE(Mean Absolute Error)又被称为 L1范数损失。

                                             MAE(y,\hat{y})=\frac{1}{m}\sum_{i=1}^{m}\left | y_{i}-\hat{y}_{i} \right |

MAE虽能较好衡量回归模型的好坏,但是绝对值的存在导致函数不光滑,在某些点上不能求导,可以考虑将绝对值改为残差的平方,这就是均方误差。

6.2、均方误差 MSE

均方误差MSE(Mean Squared Error)又被称为 L2范数损失 。

                                             MSE(y,\hat{y})=\frac{1}{m}\sum_{i=1}^{m}\left ( y,\hat{y} \right )^{2}

八、深度学习目标检测相关指标

8.1、IOU交并比

IoU 的全称为交并比(Intersection over Union),IoU 计算的是 “预测的边框” 和 “真实的边框” 的交集和并集的比值。IoU是一种简单的评估指标,其可以用于评估任何输出为bounding box的模型算法的性能。

计算公式:

 

8.2、NMS非极大值抑制

非极大值抑制(Non-Maximum Suppression,NMS)是检测算法中经典后处理步骤,对检测最终性能影响至关重要。这是因为原始检测算法通常会预测出大量的检测框,其中产生大量的错误、重叠的和不准的样本,需要通过大量的算法计算来过滤这些样本。如果处理不好,就会大大降低算法的性能,所以利用一个有效的算法来消除多余检测框以获得最佳的预测就显得特别重要。

NMS算法的本质是搜索局部极大值。在目标检测中,NMS算法主要是利用木匾检测框和对应的置信度分数,设置一定的阈值来删除重叠度较大的边界框。

NMS算法一般是为了去掉模型预测后的多余框,其一般设有一个nms_threshold=0.5,具体的实现思路如下:

  1. 选取这类box中scores最大的哪一个,记为box_best,并保留它
  2. 计算box_best与其余的box的IOU
  3. 如果其IOU>0.5了,那么就舍弃这个box(由于可能这两个box表示同一目标,所以保留分数高的哪一个)
  4. 从最后剩余的boxes中,再找出最大scores的哪一个,如此循环往复

下面为python实现的NMS算法:

def nms(bbox_list,thresh):
    '''
    非极大值抑制
    :param bbox_list:方框集合,分别为x0,y0,x1,y1,conf
    :param thresh: iou阈值
    :return:
    '''
    x0 = bbox_list[:,0]
    y0 = bbox_list[:,1]
    x1 = bbox_list[:,2]
    y1 = bbox_list[:,3]
    conf=bbox_list[:,4]

    areas=(x1-x0+1)*(y1-y0+1)
    order=conf.argsort()[::-1]
    keep=[]
    while order.size>0:
        i=order[0]
        keep.append(i)

        xx1=np.maximum(x0[i],x0[order[1:]])
        yy1=np.maximum(y0[i],y0[order[1:]])
        xx2=np.minimum(x1[i],x1[order[1:]])
        yy2=np.minimum(y1[i],y1[order[1:]])

        w=np.maximum(xx2-xx1+1,0)
        h=np.maximum(yy2-yy1+1,0)

        inter=w*h
        over=inter/(areas[i]+areas[order[1:]]-inter)
        inds=np.where(over<=thresh)[0]
        order=order[inds+1]

    return keep

8.3、AP、MAP

AP(Average Precision,平均精度)是基于准确率和召回率来计算的。前面我们已经了解了这两个概念了,这里就不多说了。AP表示不同召回率上的的准确率的平均值。

所以,这里我们又引出了另外一个概念MAP(Mean Average Precision,MAP)。MAP表示是把每个类别的AP都算了一遍,再取平均值。

因此,AP是针对单个类别的,mAP是针对所有类别的。

在机器视觉目标检测领域,AP和mAP分界线并不明显,只要IoU > 0.5的检测框都可以叫做AP0.5,这时AP和mAP表达都是多类检测的精度,关注点在检测框的精度上。

参考链接:

机器学习分类模型评价指标详述

机器学习评价指标

机器学习评估指标

PR、ROC、AUC全击破

PR曲线,ROC曲线,AUC指标等,Accuracy vs Precision

图像处理的交并比(IoU)

猜你喜欢

转载自blog.csdn.net/wxplol/article/details/93471838