混淆矩阵与多分类混淆矩阵概念详解及其应用求 Precision F1-Score Recall

YOLO目标检测创新改进与实战案例专栏

专栏目录: YOLO有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLO基础解析+创新改进+实战案例

引言

深度学习现在是解决任何计算机视觉任务(从图像分类和分割到三维场景重建或神经渲染)的最流行技术。

但是,如何知道深度模型的性能是否良好呢?我们可以用 "准确率 "作为评估指标,对吗?

那么,"准确率 "到底能告诉我们什么呢?它告诉我们,当给定 100 个样本时,模型能做出多少正确预测。

然而,这些信息还不足以分析模型的性能。如果预测任务由 5 个不同类别的样本组成,而模型总是对其中一个类别(如第 4 类)做出错误的预测,那该怎么办?

如果测试集包含的样本数量不平衡(即来自第 4 类的样本可能很少),模型的准确率可能会达到 90%,但它的表现仍然不佳。

这就是混淆矩阵的作用所在。混淆矩阵是一种更全面的评估模式,能让人工智能工程师更深入地了解其模型的性能。

什么是混淆矩阵?

混淆矩阵,顾名思义,是一个由数字组成的矩阵,它告诉我们模型在哪些地方会出现混淆。它是分类模型预测性能的类别分布,也就是说,混淆矩阵是将预测结果映射到数据所属原始类别的一种有组织的方式。

这也意味着,只有在已知输出分布的情况下,即在监督学习框架中,才能使用混淆矩阵。

混淆矩阵不仅可以计算分类器的准确度(无论是全局准确度还是分类准确度),还有助于计算开发人员通常用来评估模型的其他重要指标。

使用不同分类器对数据集的同一测试集计算出的混淆矩阵还有助于比较它们的相对优缺点,并推断如何将它们组合起来(集合学习)以获得最佳性能。

虽然无论数据集中有多少类,混淆矩阵的概念都是相似的,但首先了解二元类数据集的混淆矩阵,然后将这些概念应用到三类或更多类的数据集,还是很有帮助的。接下来,让我们深入了解一下。

二元类的混淆矩阵

二元类数据集由两个不同类别的数据组成。

为简单起见,可将这两类数据分别命名为 "正 "和 “负”。

假设我们有一个二元类不平衡数据集,其中正类样本 60 个,负类样本 40 个。

现在,要充分理解这个二元类分类问题的混淆矩阵,我们首先需要熟悉以下术语:

  • 真阳性/真正例(TP)是指属于正类的样本被正确分类。
  • 真阴性/真反例 (TN) 是指属于负类的样本被正确分类。
  • 假阳性/假正例(FP) 指样本属于负类类别,但被错误地分类为正类类别。
  • 假阴性/假反例(FN) 指样本属于正类,但被错误地归类为负类。

image-20240520230738044

示例

假设我们有一个二元类不平衡数据集,该数据集由测试集的正类中的 60 个样本和负类中的 40 个样本组成,我们用它来评估机器学习模型。

对于这个示例数据集,我们可以使用训练的模型获得的混淆矩阵的示例如下所示。这为我们提供了更多的信息,而不仅仅是模型的准确性。

image-20240521213933757

  • 将第一列中的数字相加,我们看到正类中的总样本为 45+15=60。同样,将第二列中的数字相加,我们得到负类中的样本数,在本例中为 40。所有框中的数字之和给出了评估的样本总数。此外,正确的分类是矩阵的对角线元素 - 45 表示正类,32 表示负类
  • 现在,模型将 15 个预期为正类的样本(左下角框)归类为负类。所以它被称为“假阴性FN”,因为模型预测了“阴性”,这是错误的。同样,8个样本 预计为阴性类别,但被模型归类为“阳性”。因此,它们被称为“误报 FP”。我们可以使用矩阵中的这四个不同数字更仔细地评估模型。

评估指标

一般来说,我们可以从这个二元类混淆矩阵中得到以下定量评估指标:

  1. 准确性。从测试集中存在的所有样本中正确分类的样本数。

    image-20240521214206864

  2. 精度(对于正类)。模型预测为正类的所有样本中实际属于正类的样本数。

    image-20240521214236591

  3. 召回(对于正类)。在实际属于正类的所有样本中正确预测属于正类的样本数。

    image-20240521214300718

  4. F1 分数(对于正类)。为正类获得的精确度和召回率分数的谐波平均值。

image-20240521214319067

  1. 特异性。在数据集中实际属于负类的所有样本中,正确预测为负类的样本数。

    image-20240521214348467

多类(多元)的混淆矩阵

多类混淆矩阵的概念类似于二元混淆矩阵。

示例

让我们通过一个例子来详细说明多类混淆矩阵的特征。假设我们有一个数据集的测试集(由 191 个总样本组成),分布如下:

Class类别数量
160
234
343
454

假设我们在这个测试集上训练模型获得模型如下。我们称该矩阵为“M”。矩阵中的每个元素都用mij表示,其中i是行预测类。j是列实际类。

例如M11=52,M42 =1。

image-20240521215223637

这个混淆矩阵提供了大量关于模型性能的信息

  • 对角线元素是正确预测的样本。在总共191个样本中,共有145个样本被正确预测。因此,整体准确率为 75.92%。
  • M_24=0 意味着该模型不会将原本属于第 4 类和第 2 类的样本混淆,即分类器很好地学习了第 2 类和第 4 类之间的分类边界。
  • 为了提高模型的性能,应该关注第 3 类的预测结果。共有 18 个样本(加上第 3 列红框中的数字)被分类器错误分类,这是所有类别中最高的错误分类率。因此,第 3 类的预测准确率仅为 58.14%。

多元转为二元混淆矩阵

以种类1为视角

将矩阵转换为第 1 类数据的一对全矩阵如下所示。在这里,正类是指 1 类,负类是指“非 1 类”。现在,二进制类混淆矩阵的公式可用于计算类指标。

image-20240521220118458

以种类2为视角

同样,对于第 2 类,转换后混淆矩阵将如下所示:

image-20240521220443501

评估指标

根据上上面的公式以及上面的转换,我们可以得出下面的表格:

ClassPrecision (%)Recall (%)F1-Score (%)
181.2586.6783.87
287.5082.3584.85
356.8258.1457.47
478.4374.0776.19

全局评估指标

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

一般来说,对于二分类问题我们通常只计算正类的样本的F1-score,即将正类的F1当成整体F1,而不会去分别计算正类和负类。当然如果实验要求也可以分别计算两类的F1之后再使用micro或macro的方式得到整体的F1。我们多在多分类问题中才考虑计算不同类别的样本F1。

  • Micro F1

    Micro F1分数是在所有类别的所有样本上计算得到的。它首先计算总体的True Positives(TP)、False Positives(FP)和False Negatives(FN),然后用这些值来计算精确度(Precision)和召回率(Recall),最后计算F1分数。这种方法对每个实例给予相同的权重,因此它特别适用于处理类别不平衡的数据集。

    Micro Precision = ∑ TP ∑ TP + ∑ FP \text{Micro Precision} = \frac{\sum{\text{TP}}}{\sum{\text{TP}} + \sum{\text{FP}}} Micro Precision=TP+FPTP
    Micro Recall = ∑ TP ∑ TP + ∑ FN \text{Micro Recall} = \frac{\sum{\text{TP}}}{\sum{\text{TP}} + \sum{\text{FN}}} Micro Recall=TP+FNTP
    Micro F1 = 2 × Micro Precision × Micro Recall Micro Precision + Micro Recall \text{Micro F1} = 2 \times \frac{\text{Micro Precision} \times \text{Micro Recall}}{\text{Micro Precision} + \text{Micro Recall}} Micro F1=2×Micro Precision+Micro RecallMicro Precision×Micro Recall

  • Macro F1

    Macro F1分数是首先为数据集中的每个类别单独计算F1分数,然后计算这些F1分数的算术平均值。这种方法对每个类别给予相同的权重,不考虑每个类别中的样本数量。因此,即使某个类别的样本数量很少,它对最终的Macro F1分数的影响也和样本数量较多的类别一样大。

    Macro F1 = 1 N ∑ i = 1 N F1 class i \text{Macro F1} = \frac{1}{N} \sum_{i=1}^{N} \text{F1}_{\text{class}_i} Macro F1=N1i=1NF1classi

    其中$ N $是类别的总数。

  • Weighted F1-Score

    Weighted F1-Score是另一种计算多类分类问题中平均F1分数的方法,它在考虑每个类别的F1分数时,会根据每个类别中样本的实际分布给予不同的权重。这种方法在处理类别不平衡的数据集时特别有用,因为它在计算总体的平均F1分数时,会给予样本量大的类别更大的权重。

    具体来说,Weighted F1-Score是通过将每个类别的F1分数与该类别中样本的数量相乘,然后除以总样本数来计算的。这样,每个类别的权重与其在数据集中的代表性成正比。

    Weighted F1-Score的计算公式如下:

    Weighted F1 = ∑ i = 1 N ( w i × F1 class i ) \text{Weighted F1} = \sum_{i=1}^{N} \left( w_i \times \text{F1}_{\text{class}_i} \right) Weighted F1=i=1N(wi×F1classi)

    其中:

    • N N N 是类别的总数。
    • w i w_i wi 是第 $ i $ 个类别的权重,通常是该类别中样本的数量除以总样本数。
    • F1 class i \text{F1}_{\text{class}_i} F1classi 是第 i i i 个类别的F1分数。

    这种加权平均的方法确保了每个类别对最终分数的贡献与其在数据集中的重要性(即样本量)相匹配。这意味着在样本量大的类别中性能好或差都会对总体的Weighted F1-Score有较大影响,而在样本量小的类别中性能的好坏影响则相对较小。

    总结来说,Weighted F1-Score提供了一种在类别不平衡的情况下评估分类器性能的方式,它通过为每个类别分数赋予与该类别样本数量成比例的权重,来计算一个综合的性能指标。

Micro F1-Score

Micro F1-Score 分数是一个全局指标,通过考虑净 TP 计算得出,即逐类 TP(来自各种类角度的混淆矩阵)、净 FP 和净 FN 的总和。这些结果如下:

  • 净TP= 52+28+25+40 = 145
  • 净FP = (3+7+2)+(2+2+0)+(5+2+12)+(1+1+9) = 46
  • 净FN = (2+5+1)+(3+2+1)+(7+2+9)+(2+0+12) = 46

请注意,对于每个混淆矩阵,净 FP 和净 FN 将具有相同的值。因此,Micro Precision和Micro Recall 可以计算为:

  • Micro Precision = Net TP/(Net TP+Net FP) = 145/(145+46) = 75.92%
  • Micro Recall = Net TP/(Net TP+Net FN) = 75.92%

因此 Micro F-1 =( 2*Micro Precision*Micro Recall ) /( Micro Precision+Micro Recall ) = 79.52

Macro F1-Score

分别计算每个class的宏观平均分数,然后计算度量的未加权平均值以计算净全局分数。在上面我们计算的分数如下

ClassPrecision (%)Recall (%)F1-Score (%)
181.2586.6783.87
287.5082.3584.85
356.8258.1457.47
478.4374.0776.19

Macro Precision = (81.25 + 87.50 + 56.82 + 78.43)/ 4 = 76.00%

Macro Recall = (86.67 + 82.35 + 58.14 + 74.07 ) / 4 =75.31%

因此 Micro F-1 =( 2*Macro Precision*Macro Recall ) /( Macro Precision+Macro Recall ) = 75.60%

Weighted F1-Score

Weighted Precision = 81.25 × 60 + 87.50 × 34 + 56.82 × 43 + 78.43 × 54 64 + 32 + 44 + 51 = 76.07 % \text{Weighted Precision} = \frac{81.25 \times 60 + 87.50 \times 34 + 56.82 \times 43 + 78.43 \times 54}{64 + 32 + 44 + 51} = 76.07\% Weighted Precision=64+32+44+5181.25×60+87.50×34+56.82×43+78.43×54=76.07%

Weighted Recall = 86.67 × 60 + 82.35 × 34 + 58.14 × 43 + 74.07 × 54 64 + 32 + 44 + 51 = 75.92 % \text{Weighted Recall} = \frac{86.67 \times 60 + 82.35 \times 34 + 58.14 \times 43 + 74.07 \times 54}{64 + 32 + 44 + 51} = 75.92\% Weighted Recall=64+32+44+5186.67×60+82.35×34+58.14×43+74.07×54=75.92%

Weighted F1-Score = 83.87 × 60 + 84.85 × 34 + 57.47 × 43 + 76.19 × 54 64 + 32 + 44 + 51 = 75.93 % \text{Weighted F1-Score} = \frac{83.87 \times 60 + 84.85 \times 34 + 57.47 \times 43 + 76.19 \times 54}{64 + 32 + 44 + 51} = 75.93\% Weighted F1-Score=64+32+44+5183.87×60+84.85×34+57.47×43+76.19×54=75.93%


在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YOLO大王

你的打赏,我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值