目标检测问题混淆矩阵与准确率、召回率等

目标检测问题混淆矩阵与准确率、召回率等

微信公众号:幼儿园的学霸

二分类混淆矩阵

在机器学习和数据科学中,尤其是分类任务中,理解混淆矩阵及其相关指标是非常重要的。这些指标有助于评估模型的性能。下面详细介绍这些概念:

混淆矩阵(Confusion Matrix)

混淆矩阵是一个表格,用来描述分类模型在测试数据集上的表现。它包含以下四个核心元素:

  1. TP(True Positive,真阳性):实际为正类的样本被正确地分类为正类的数量。
  2. TN(True Negative,真阴性):实际为负类的样本被正确地分类为负类的数量。
  3. FP(False Positive,假阳性):实际为负类的样本被错误地分类为正类的数量(也称为Type I错误)。
  4. FN(False Negative,假阴性):实际为正类的样本被错误地分类为负类的数量(也称为Type II错误)。
评价指标

基于混淆矩阵,可以计算出多种评价指标来衡量模型的性能。

  1. 精确率(Precision)

精确率表示在所有被预测为正类的样本中,实际为正类的比例。
Precision = T P T P + F P \text{Precision} = \frac{TP}{TP + FP} Precision=TP+FPTP
精确率主要关注的是预测结果中的正类样本的质量,即在预测为正类的样本中有多少是准确的。
精确率也有称呼为查准率

  1. 召回率(Recall)

召回率表示在所有实际为正类的样本中,被正确预测为正类的比例。
Recall = T P T P + F N \text{Recall} = \frac{TP}{TP + FN} Recall=TP+FNTP
召回率主要关注的是实际正类样本的覆盖情况,即有多少正类样本被正确识别,因此也叫查全率。

  1. 准确率(Accuracy)

准确率表示所有样本中被正确分类的比例。
Accuracy = T P + T N T P + T N + F P + F N   \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} \ Accuracy=TP+TN+FP+FNTP+TN 
准确率衡量的是模型整体的正确性,但在类别不平衡时,准确率可能会比较误导。

综合指标

为了在精确率和召回率之间取得平衡,通常会引入F1-score等综合指标。

F1-score是精确率和召回率的调和平均数,例如,模型A的recall高,precision低,模型B相反,那怎么综合比较模型A和B的性能呢,用这个可以作为综合评价指标。
F1-score = 2 × Precision × Recall Precision + Recall \text{F1-score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F1-score=2×Precision+RecallPrecision×Recall
F1-score在精确率和召回率之间取得了平衡,对于处理类别不平衡的数据集非常有用。

例子

假设有一个二分类模型,其混淆矩阵如下:

预测为正类预测为负类
实际为正类TP = 50FN = 10
实际为负类FP = 5TN = 100

根据上面的数据,可以计算出:

  • 精确率:
    Precision = 50 50 + 5 = 0.91 \text{Precision} = \frac{50}{50 + 5} = 0.91 Precision=50+550=0.91

  • 召回率:
    Recall = 50 50 + 10 = 0.83 \text{Recall} = \frac{50}{50 + 10} = 0.83 Recall=50+1050=0.83

  • 准确率:
    Accuracy = 50 + 100 50 + 100 + 5 + 10 = 0.93 \text{Accuracy} = \frac{50 + 100}{50 + 100 + 5 + 10} = 0.93 Accuracy=50+100+5+1050+100=0.93

  • F1-score
    F1-score = 2 × 0.91 × 0.83 0.91 + 0.83 = 0.87 \text{F1-score} = 2 \times \frac{0.91 \times 0.83}{0.91 + 0.83} = 0.87 F1-score=2×0.91+0.830.91×0.83=0.87

这些指标可以帮助我们全面地评估模型的性能,从不同的角度分析模型的优缺点,并指导模型的改进和优化。

多分类混淆矩阵

对于多分类任务也可以使用混淆矩阵。多分类任务的混淆矩阵与二分类的混淆矩阵类似,但它的维度更大,因为它需要处理多个类别之间的分类情况。

多分类混淆矩阵

多分类混淆矩阵是一个 ( N * N ) 的矩阵,其中( N )是类别的数量。矩阵中的每个元素 ( M[i]\[j] ) 表示实际类别为 ( i ) 而被预测为类别 ( j ) 的样本数。

例如,假设我们有一个三分类任务,类别为 A、B 和 C。对应的混淆矩阵可能如下所示:

预测为A预测为B预测为C
实际为A5021
实际为B10455
实际为C0347
计算指标

基于多分类混淆矩阵,我们可以计算多种性能指标:

  1. 精确率(Precision)

精确率可以针对每个类分别计算,然后求平均。类别 ( i ) 的精确率计算公式为:
Precision _ i = M [ i ] [ i ] ∑ k = 1 N M [ k ] [ i ] \text{Precision}\_i = \frac{M[i][i]}{\sum_{k=1}^{N} M[k][i]} Precision_i=k=1NM[k][i]M[i][i]
即预测为类别 ( i ) 的样本中,实际为类别 ( i ) 的比例。

  1. 召回率(Recall)

召回率也可以针对每个类别计算,然后求平均。类别( i )的召回率计算公式为:
Recall _ i = M [ i ] [ i ] ∑ k = 1 N M [ i ] [ k ] \text{Recall}\_i = \frac{M[i][i]}{\sum_{k=1}^{N} M[i][k]} Recall_i=k=1NM[i][k]M[i][i]

即实际为类别( i )的样本中,被正确预测为类别 ( i ) 的比例。

  1. 准确率(Accuracy)

准确率计算公式为:
Accuracy = ∑ i = 1 N M [ i ] [ i ] ∑ i = 1 N ∑ j = 1 N M [ i ] [ j ] \text{Accuracy} = \frac{\sum_{i=1}^{N} M[i][i]}{\sum_{i=1}^{N} \sum_{j=1}^{N} M[i][j]} Accuracy=i=1Nj=1NM[i][j]i=1NM[i][i]
即所有被正确分类的样本占总样本数的比例。

  1. F1-score

F1-score 也可以针对每个类别计算,然后求平均。类别 ( i )F1-score计算公式为:
F1-score i = 2 × Precision i × Recall i Precision i + Recall i \text{F1-score}_i = 2 \times \frac{\text{Precision}_i \times \text{Recall}_i}{\text{Precision}_i + \text{Recall}_i} F1-scorei=2×Precisioni+RecalliPrecisioni×Recalli

宏平均和微平均

对于多分类任务,有两种常用的方式来计算总体的精确率、召回率和 F1-score:宏平均(Macro Average)和微平均(Micro Average)。

  1. 宏平均(Macro Average)

宏平均是先计算每个类别的指标,然后对所有类别的指标取平均值。
Macro Precision = 1 N ∑ i = 1 N Precision i Macro Recall = 1 N ∑ i = 1 N Recall i Macro F1-score = 1 N ∑ i = 1 N F1-score i \text{Macro Precision} = \frac{1}{N} \sum_{i=1}^{N} \text{Precision}_i \\ \text{Macro Recall} = \frac{1}{N} \sum_{i=1}^{N} \text{Recall}_i \\ \text{Macro F1-score} = \frac{1}{N} \sum_{i=1}^{N} \text{F1-score}_i Macro Precision=N1i=1NPrecisioniMacro Recall=N1i=1NRecalliMacro F1-score=N1i=1NF1-scorei

  1. 微平均(Micro Average)

微平均是先汇总所有类别的 TP、FP 和 FN,然后计算总体的精确率、召回率和 F1-score

Micro Precision = ∑ i = 1 N TP i ∑ i = 1 N ( TP i + FP i ) Micro Recall = ∑ i = 1 N TP i ∑ i = 1 N ( TP i + FN i ) Micro F1-score = 2 × Micro Precision × Micro Recall Micro Precision + Micro Recall \text{Micro Precision} = \frac{\sum_{i=1}^{N} \text{TP}_i}{\sum_{i=1}^{N} (\text{TP}_i + \text{FP}_i)} \\ \text{Micro Recall} = \frac{\sum_{i=1}^{N} \text{TP}_i}{\sum_{i=1}^{N} (\text{TP}_i + \text{FN}_i)} \\ \text{Micro F1-score} = 2 \times \frac{\text{Micro Precision} \times \text{Micro Recall}}{\text{Micro Precision} + \text{Micro Recall}} Micro Precision=i=1N(TPi+FPi)i=1NTPiMicro Recall=i=1N(TPi+FNi)i=1NTPiMicro F1-score=2×Micro Precision+Micro RecallMicro Precision×Micro Recall

示例代码

以下是一个使用 scikit-learn 库计算和可视化多分类混淆矩阵的示例代码:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
from sklearn.metrics import precision_score, recall_score, f1_score

# 假设有一些真实标签和预测标签
y_true = np.array([0, 1, 2, 2, 0, 1, 0, 1, 2, 1])
y_pred = np.array([0, 2, 2, 2, 0, 0, 0, 1, 2, 1])

# 计算混淆矩阵
cm = confusion_matrix(y_true, y_pred)

# 可视化混淆矩阵
disp = ConfusionMatrixDisplay(confusion_matrix=cm)
disp.plot()
plt.show()

# 计算宏平均和微平均的指标
macro_precision = precision_score(y_true, y_pred, average='macro')
macro_recall = recall_score(y_true, y_pred, average='macro')
macro_f1 = f1_score(y_true, y_pred, average='macro')

micro_precision = precision_score(y_true, y_pred, average='micro')
micro_recall = recall_score(y_true, y_pred, average='micro')
micro_f1 = f1_score(y_true, y_pred, average='micro')

print(f"Macro Precision: {macro_precision}")
print(f"Macro Recall: {macro_recall}")
print(f"Macro F1-score: {macro_f1}")
print(f"Micro Precision: {micro_precision}")
print(f"Micro Recall: {micro_recall}")
print(f"Micro F1-score: {micro_f1}")

通过这些方法和工具,可以有效地评估多分类模型的性能,理解模型在各个类别上的表现,并进一步优化模型。

F1 score的计算

F1-measure值是一种统计量,是Precision和Recall统计量加权调和平均的一个评价标准。

F β = ( β 2 + 1 ) P R β 2 ⋅ P + R (4) F_{\beta}=\frac{\left(\beta^{2}+1\right) P R}{\beta^{2} \cdot P+R} \tag{4} Fβ=β2P+R(β2+1)PR(4)

A more general F score, F β F_\beta Fβ ​, that uses a positive real factor β \beta β where β \beta β is chosen such that recall is considered β \beta β times as important as precision。

F 1 F_1 F1​定义为调和均值,此时 β = 1 \beta=1 β=1:
2 F 1 = 1 P + 1 R (5) \frac{2}{F_{1}}=\frac{1}{P}+\frac{1}{R} \tag{5} F12=P1+R1(5)

调整下也就是
F 1 = 2 P R P + R = 2 T P 2 T P + F P + F N (6) F_{1}=\frac{2 P R}{P+R}=\frac{2 T P}{2 T P+F P+F N}\tag{6} F1=P+R2PR=2TP+FP+FN2TP(6)

当参数 β = 1 \beta =1 β=1时,式(6)就是最常见的F1-Measure形式。
F1分数认为召回率和正确率同等重要,F2分数认为召回率的重要程度是正确率的2倍,而F0.5分数认为召回率的重要程度是正确率的一半。比较常用的是F1分数(F1 Score),是统计学中用来衡量二分类模型精确度的一种指标。

当有些情况下,我们认为Precision更重要,那就调整 β \beta β的值小于1;如果我们认为Recall更加重要,那就调整 β \beta β的值大于1。
一般来说,当F-Score或F1-score较高时,说明结果较理想。

参考资料

1.FP、FN、TP、TN、精确率(Precision)、召回率(Recall)、准确率(Accuracy)等评价指标介绍
2.准确率、精确率、召回率、F1-measure

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值