分类问题的评价指标(Precision、Recall、Accuracy、F1-Score、Micro-F1、Macro-F1)以及混淆矩阵、ROC曲线

这篇具有很好参考价值的文章主要介绍了分类问题的评价指标(Precision、Recall、Accuracy、F1-Score、Micro-F1、Macro-F1)以及混淆矩阵、ROC曲线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、四个基本概念 TP、FP、TN、FN

真阳性:预测为正,实际为正。把正样本成功预测为正。 TP——True Positive
假阳性:预测为正,实际为负。把负样本错误预测为正。 FP——False Positive  ——>误报
真阴性:预测为负、实际为负。把负样本成功预测为负。 TN——True Negative
假阴性:预测与负、实际为正。把正样本错误预测为负。 FN——False Negative  ——>漏报
:一致判真假,预测判阴阳
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
1、真阳性:指预测正确,是哪个类就被分到哪个类。对A而言,TP个数为 2;对B而言,TP个数为 2;对C而言,TP个数为 1。

2、假阳性:就是指预测为某个类,但是实际上不是。对A而言,FP个数为 0;对B而言,FP个数为 2;对C而言,FP个数为 2。(因为"3"和"8"都不是B类,但却分给了B,所以为假阳性)

3、假阴性:对A而言,FN个数为 2;对B而言,FN个数为 1;对C而言,FN个数为 1。(因为"3"和"4"分别预测为B和C,但是实际是A,也就是预测为负,实际为正)
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他

二、精确率(precision)、召回率(recall)、准确率(accuracy)

1、精确率(查准率):计算预测出来的某类样本中,有多少是被正确预测的。即表示的是预测为正的样本中有多少是真正的正样本。针对预测样本而言。

2、召回率(查全率):有多少样本被正确的预测出来了,即该类样本有多少被找出来(召回了多少)。即表示的是样本中的正例有多少被预测正确了。针对原先实际样本而言。

3、准确率:正类和负类预测准确的比例。在正例较少负例较多的不平衡分类问题(疾病;恐怖分子)中,存在着如果把所有数据全部预测为负例,准确率依然会很高的问题,所以引入召回率。
  根据多分类结果,可以根据样本的预测结果是否正确来形成混淆矩阵。
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
(1)加权准确率(Weighted Accuracy,WA
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
(2)非加权准确率(Unweighted Accuracy,UA
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他

精确率precision = TP / (TP + FP)
召回率recall = TP / (TP + FN)
准确率accuracy = (TP + TN) / (TP+ FP + TN + FN)
F1 Score = 2P*R/(P+R),其中P和R分别为 precision 和recall

:精确率和召回率分别对应着从主客观两个不同的维度来看TP,也就是对正例的预测效果。它们其实就是分母不同,一个分母是预测为正的样本数,另一个是原来样本中所有的正样本数。
(1)Precision的分母是 (TP+FP),表示的是所有预测为正的例子数。所以Precision代表的是在所有预测为正的例子中,实际上真的为正的比例。预测这个动作代表的是主观,所以Precision表示的是主观上针对正例的预测效果好不好。

(2)Recall的分母是 (TP+FN),表示的是所有实际为正的例子数。所以Recall代表的是在所有实际为正的例子中,预测对了的比例。实际上有多少正例是一个客观存在的事实,所以Recall表示的是客观上针对正例的预测效果好不好。

4、举例计算
(1)某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。
  :可以把上述例子看成分类预测问题,对于鲤鱼来说,TP真阳性为700,FP假阳性为300,FN假阴性为700。
   Precison = TP/(TP+FP) = 700(700+300) = 70%
   Recall = TP/(TP+FN) = 700/(700+700) = 50%

(2)改变上述例子:把池子里所有的鲤鱼、虾和鳖都一网打尽,再观察这些指标的变化。
  :TP为1400,有1400条鲤鱼被预测出来;FP为600,有600个生物不是鲤鱼类,却被归类到鲤鱼;FN为0,鲤鱼都被归类到鲤鱼类去了,并没有归到其他类。
   Precision = TP/(TP+FP) = 1400/(1400+600) = 70%
   Recall = TP/(TP+FN) = 1400/(1400) = 100%

总结:预测时当然希望Precision和Recall都保持一个较高的水准,但事实上这两者在某些情况下是有矛盾的。比如在极端情况下,倘若只搜索出了一个结果,且是正确的,那么Precision就是100%,但是Recall就很低;而如果把所有结果都返回,那么比如Recall是100%,但是Precision就会很低。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高,此时可以引出另一个评价指标 F1-Score(F-Measure)。

三、F1-Score(F1分数)

   F1分数(F1 Score)是统计学中用来衡量二分类模型精确度的一种指标,它同时兼顾了分类模型的精确率和召回率。F1分数可以看作是模型精确率和召回率的一种加权平均,它的最大值是1,最小值是0。

   数学定义F1-Score又称为平衡F分数(BalancedScore),它被定义为精确率和召回率的调和平均数。
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
   更一般的,定义Fβ分数为:
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
除了F1分数之外,F0.5分数和F2分数,在统计学中也得到了大量应用,其中,F2分数中,召回率的权重高于精确率,而F0.5分数中,精确率的权重高于召回率。

:推导F-score理解其精髓
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
从上式子可以看出F-score只和 FP/TP 、FN/TP 两个东西有关。结合前面所述:
FP/TP影响的是主观判断上TP够不够分量,也就是主观上TP这个值到底够不够大;
FN/TP影响的是客观判断上TP够不够分量,也就是客观上TP这个值到底够不够大;
故而做极限假设,看一下F-score什么时候等于0,什么时候等于1:
(1)F-score = 0 (实际上是无限趋近于0)
   主观上TP很小 or 客观上TP很小
   即 FP 或 FN 远大于TP,这里做极限假设可以知道F-score趋近于0
(2)F-score = 1
   主观上和客观上来说TP都很大,也就是FP和FN都等于0(下限)。

总结:直觉上来说TP越大越好,但是这里的大肯定是一个相对的概念,而F-score 就是分别从两个角度,主观(Predicted)和客观(Actual)上去综合的分析TP够不够大。这也就是平常看到的结论 F-score的值 只有在 Precision 和 Recall 都大的时候 才会大。

四、宏平均 Macro-F1 、微平均 Micro-F1、加权平均 Weighted avg

  在一个多标签分类任务中,可以对每个“类”计算F1,显然需要把所有类的F1合并起来考虑。这里有两种合并方式:
(1)第一种计算出所有类别总的Precision和Recall,然后计算F1。
例如依照最上面的表格来计算:Precison=5/(5+4)=0.556,Recall=5/(5+4)=0.556,然后带入F1的公式求出F1,这种方式被称为Micro-F1微平均

(2)第二种方式是计算出每一个类的Precison和Recall后计算F1,最后将F1平均。
例如上式A类:P=2/(2+0)=1.0,R=2/(2+2)=0.5,F1=(210.5)/1+0.5=0.667。同理求出B类C类的F1,最后求平均值,这种方式叫做Macro-F1宏平均
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
:微平均 Micro-F1 主要应用在样本数据分布均衡的数据集上,而宏平均Macro-F1 主要应用在样本数据分布不均衡的数据集上,因为它在分类结果中更能照顾小规模样本的权重。

举例计算
  使用 sklearn.metric.classification_report 工具对模型的测试结果进行评价时,会有如下输出结果(support是数据量):
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
(1)宏平均 macro avg:对每个类别的 精准、召回和F1 加和求平均。
  macro avg = (P_no+P_yes)/2=(0.24+0.73)/2 = 0.48

(2)微平均 micro avg:不区分样本类别,计算整体的 精准、召回和F1
  micro avg = (P_nosupport_no+P_yessupport_yes)/(support_no+support_yes)=(0.247535+0.73)/(7535+22462)=0.45

(3)加权平均 weighted avg:是对宏平均的一种改进,考虑了每个类别样本数量在总样本中占比。
  weighted avg =P_no*(support_no/support_all)+ P_yes*(support_yes/support_all =0.24*(7525/29997)+0.73*(22462/29997)=0.61

五、混淆矩阵(Confusion Matrix)

  在机器学习领域,混淆矩阵又称为可能性表格或错误矩阵。它是一种特定的矩阵,用来呈现算法性能的可视化效果,通常是监督学习(非监督学习通常用匹配矩阵:matching matrix)。其每一列代表预测值,每一行代表的是实际的类别。这个名字来源于它可以非常容易的表明多个类别是否有混淆(也就是一个class被预测成另一个class)。一个二分类(正和反)问题的混淆矩阵如下图所示:
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
  在n分类模型中,使用n行n列的矩阵形式来表示精度,纵列代表n个分类,在每行中的n个数据代表分别预测在每个类别的个数,完美的预测应该是一个列序数=行中有数据的索引数的一条斜线。
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
实例
  假设有一个用来对猫(cats)、狗(dogs)、兔子(rabbits)进行分类的系统,混淆矩阵就是为了进一步分析性能而对该算法测试结果做出的总结。假设总共有 27 只动物:8只猫, 6条狗, 13只兔子。结果的混淆矩阵如下图所示:
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
  在这个混淆矩阵中,实际有 8只猫,但是系统将其中3只预测成了狗;对于 6条狗,其中有 1条被预测成了兔子,2条被预测成了猫。从混淆矩阵中我们可以看出系统对于区分猫和狗存在一些问题,但是区分兔子和其他动物的效果还是不错的。所有正确的预测结果都在主对角线上,所以从混淆矩阵中可以很方便直观的看出哪里有错误,因为他们呈现在对角线外面。

:在预测分析中,混淆表格(有时候也称为混淆矩阵),是由false positives,falsenegatives,true positives和true negatives组成的两行两列的表格。它允许我们做出更多的分析,而不仅仅是局限在正确率。准确率对于分类器的性能分析来说,并不是一个很好地衡量指标,因为如果数据集不平衡(每一类的数据样本数量相差太大),很可能会出现误导性的结果。例如,如果在一个数据集中有95只猫,但是只有5条狗,那么某些分类器很可能偏向于将所有的样本预测成猫。整体准确率为95%,但是实际上该分类器对猫的识别率是100%,而对狗的识别率是0%。

六、ROC 曲线和 AUC(Area Under the Curve,曲线下面积)

  ROC曲线展示了当改变在模型中识别为正例的阈值时,召回率和精度的关系会如何变化。计算公式如下:
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
TPR = TP / (TP + FN) TPR 是召回率
FPR = FP / (FP + TN) FPR 是反例被报告为正例的概率

一个典型的 ROC 曲线如下:
分类问题的评价指标,机器学习,Python学习,学习笔记,机器学习,scikit-learn,经验分享,其他
  黑色对角线表示随机分类器,红色和蓝色曲线表示两种不同的分类模型。对于给定的模型,只能对应一条曲线,但是可以通过调整对正例进行分类的阈值来沿着曲线移动。通常,当降低阈值时,会沿着曲线向右和向上移动。

  在阈值为 1.0 的情况下,将位于图的左下方,因为没有将任何数据点识别为正例,这导致没有真正例,也没有假正例(TPR = FPR = 0)。当降低阈值时,将更多的数据点识别为正例,导致更多的真正例,但也有更多的假正例 ( TPR 和 FPR 增加)。最终,在阈值 0.0 处,将所有数据点识别为正,并发现位于 ROC 曲线的右上角 ( TPR = FPR = 1.0 )。

  最后,可以通过计算曲线下面积 ( AUC ) 来量化模型的 ROC 曲线,这是一个介于 0 和 1 之间的度量,数值越大,表示分类性能越好。在上图中,蓝色曲线的 AUC 将大于红色曲线的 AUC,这意味着蓝色模型在实现准确度和召回率的权衡方面更好。随机分类器 (黑线) 实现 0.5 的 AUC。

参考资料:
https://zhuanlan.zhihu.com/p/161703182
https://blog.csdn.net/vesper305/article/details/44927047
https://blog.csdn.net/sinat_28576553/article/details/80258619
https://blog.csdn.net/duan19920101/article/details/121726392
https://blog.csdn.net/weixin_43090631/article/details/107208216文章来源地址https://www.toymoban.com/news/detail-804335.html

到了这里,关于分类问题的评价指标(Precision、Recall、Accuracy、F1-Score、Micro-F1、Macro-F1)以及混淆矩阵、ROC曲线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python 中,sklearn包下的f1_score、precision、recall使用方法,Accuracy、Precision、Recall和F1-score公式,TP、FP、TN、FN的概念

    目录 1.sklearn.metrics.f1_score 2.sklearn.metrics.precision_score 3.sklearn.metrics.recall_score 4.Accuracy,、Precision、 Recall和F1-score公式​​​​​​​ 5.TP、FP、TN、FN的概念 重要参数说明: y_true: 一维数组,或标签指示数组/稀疏矩阵 (真实值) y_pred: 一维数组,或标签指示数组/稀疏矩阵 (

    2023年04月24日
    浏览(33)
  • YOLO 模型的评估指标——IOU、Precision、Recall、F1-score、mAP

    YOLO是最先进的目标检测模型之一。目标检测问题相比分类问题要更加复杂,因为目标检测不仅要把类别预测正确,还要预测出这个类别具体在哪个位置。 我将目标识别的评估指标总结为两部分,一部分为预测框的预测指标,另一部分为分类预测指标。 预测框的准确率用IOU来

    2024年02月04日
    浏览(38)
  • 机器学习系列(二)——评价指标Precision和Recall

    Precision 和 Recall 是常考的知识点,就其区别做一个详细总结 1. Precision  中文翻译 “精确率”,“查准率”。 “查准率”这个名字更能反应其特性,就是 该指标关注准确性。  计算公式如下: 这里TP,FP的概念来自统计学中的混淆矩阵,TP指 “预测为正(Positive), 预测正确(

    2024年02月16日
    浏览(31)
  • 分类模型评估(混淆矩阵, precision, recall, f1-score)的原理和Python实现

    当我们已经获取到一个分类模型的预测值,可以通过不同指标来进行评估。 往往衡量二分类模型是基于以下的混淆矩阵概念: True Positive:真实值为正、预测值为正(真阳性) False Positive:真实值为负、预测值为正(假阳性) False Negative:真实值为正、预测值为负(假阴性)

    2024年02月04日
    浏览(38)
  • python:多分类-计算混淆矩阵confusion_matrix、precision、recall、f1-score分数

    多分类,计算混淆矩阵confusion_matrix,以及accuracy、precision、recall、f1-score分数。 1)使用sklearn计算并画出 混淆矩阵(confusion_matrix) ; 2)使用sklearn计算 accuracy(accuracy_score) ; 3)使用sklearn计算多分类的 precision、recall、f1-score分数 。以及计算每个类别的precision、recall、f1-

    2024年02月06日
    浏览(32)
  • 基于sklearn计算precision、recall等分类指标

    在前面的文章中,我们已经介绍了分类指标Precision,Recall,F1-Score的定义和计算公式:详解分类指标Precision,Recall,F1-Score 我们可以知道, 精度(precision)、查全率(recall)、F1的计算,是针对于二分类器来定义的。他们的计算,只与y_true和y_pred有关,要求y_true和y_pred中只含有0和

    2024年02月16日
    浏览(27)
  • 【计算机视觉 | 目标检测】术语理解3:Precision、Recall、F1-score、mAP、IoU 和 AP

    在图像目标检测中,常用的评估指标包括以下几项: 精确率(Precision):也称为查准率,表示被分类为正类别的样本中真正为正类别的比例。计算公式为:Precision = TP / (TP + FP),其中TP是真正例(模型正确预测为正类别的样本数),FP是假正例(模型错误预测为正类别的样本数

    2024年02月13日
    浏览(35)
  • YOLO等目标检测模型的非极大值抑制NMS和评价指标(Acc, Precision, Recall, AP, mAP, RoI)、YOLOv5中mAP@0.5与mAP@0.5:0.95的含义

    YOLOv5正负样本定义 yolov5输出有3个预测分支,每个分支的每个网格有3个anchor与之对应。 没有采用IOU最大的匹配方法,而是通过计算该bounding-box和当前层的anchor的宽高比,如果最大比例大于4(设定阈值),则比例过大,则说明匹配度不高,将该bbox过滤,在当前层认为是背景

    2024年02月03日
    浏览(37)
  • 目标检测评估指标mAP:从Precision,Recall,到AP50-95

    True Positive 满足以下三个条件被看做是TP         1. 置信度大于阈值(类别有阈值,IoU判断这个bouding box是否合适也有阈值)         2. 预测类型与标签类型相匹配(类别预测对了)         3. 预测的Bouding Box和Ground Truth的IoU大于阈值(框 打对了)。 当存在多个满足条件的预

    2024年02月09日
    浏览(33)
  • YOLOv8性能评估指标->mAP、Precision、Recall、FPS、IoU

    开始讲解之前推荐一下我的专栏,本专栏的内容支持(分类、检测、分割、追踪、关键点检测),专栏目前为限时折扣, 欢迎大家订阅本专栏,本专栏每周更新3-5篇最新机制,更有包含我所有改进的文件和交流群提供给大家。   专栏目录: YOLOv8改进有效系列目录 | 包含卷积、主

    2024年02月03日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包