机器学习分类指标:精确率、准确率、召回率详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sty945/article/details/83142443

混淆矩阵

在介绍具体的定义之前先了解一些混淆矩阵(confusion matrix):
一种 NxN 表格,用于总结分类模型的预测效果;即标签和模型预测的分类之间的关联。在混淆矩阵中,一个轴表示模型预测的标签,另一个轴表示实际标签。N 表示类别个数。在二元分类问题中,N=2。例如,下面显示了一个二元分类问题的混淆矩阵示例:

- 肿瘤(预测的标签) 非肿瘤(预测的标签)
肿瘤(实际标签) 18 1
非肿瘤(实际标签) 6 452

上面的混淆矩阵显示,在 19 个实际有肿瘤的样本中,该模型正确地将 18 个归类为有肿瘤(18 个正例),错误地将 1 个归类为没有肿瘤(1 个假负例)。同样,在 458 个实际没有肿瘤的样本中,模型归类正确的有 452 个(452 个负例),归类错误的有 6 个(6 个假正例)。

多类别分类问题的混淆矩阵有助于确定出错模式。例如,某个混淆矩阵可以揭示,某个经过训练以识别手写数字的模型往往会将 4 错误地预测为 9,将 7 错误地预测为 1。

  • True Positive(真正, TP):将正类预测为正类数.
  • True Negative(真负 , TN):将负类预测为负类数.
  • False Positive(假正, FP):将负类预测为正类数 → 误报 (Type I error).
  • False Negative(假负 , FN):将正类预测为负类数 → 漏报 (Type II error).

由上,顾名思义可知,假负、假正当然是不是真的,就是和真实情况相反的。真正,真负,就是和真实情况一样的。

准确率

准确率是一个用于评估分类模型的指标。通俗来说,准确率是指我们的模型预测正确的结果所占的比例。正式点说,准确率的定义如下:
Accuracy = Number of correct predictions Total number of predictions \text{Accuracy} = \frac{\text{Number of correct predictions}}{\text{Total number of predictions}}
对于二元分类,也可以根据正类别和负类别按如下方式计算准确率:
Accuracy = T P + T N T P + T N + F P + F N \text{Accuracy} = \frac{TP+TN}{TP+TN+FP+FN}
其中,TP = 真正例,TN = 真负例,FP = 假正例,FN = 假负例。
让我们来试着计算一下以下模型的准确率,该模型将 100 个肿瘤分为恶性 (正类别)或良性(负类别):
在这里插入图片描述

Accuracy = T P + T N T P + T N + F P + F N = 1 + 90 1 + 90 + 1 + 8 = 0.91 \text{Accuracy} = \frac{TP+TN}{TP+TN+FP+FN} = \frac{1+90}{1+90+1+8} = 0.91

准确率为 0.91,即 91%(总共 100 个样本中有 91 个预测正确)。这表示我们的肿瘤分类器在识别恶性肿瘤方面表现得非常出色,对吧?
实际上,只要我们仔细分析一下正类别和负类别,就可以更好地了解我们模型的效果。
在 100 个肿瘤样本中,91 个为良性(90 个 TN 和 1 个 FP),9 个为恶性(1 个 TP 和 8 个 FN)。

在 91 个良性肿瘤中,该模型将 90 个正确识别为良性。这很好。不过,在 9 个恶性肿瘤中,该模型仅将 1 个正确识别为恶性。这是多么可怕的结果!9 个恶性肿瘤中有 8 个未被诊断出来!

虽然 91% 的准确率可能乍一看还不错,但如果另一个肿瘤分类器模型总是预测良性,那么这个模型使用我们的样本进行预测也会实现相同的准确率(100 个中有 91 个预测正确)。换言之,我们的模型与那些没有预测能力来区分恶性肿瘤和良性肿瘤的模型差不多。

所以当使用分类不平衡的数据集(比如正类别标签和负类别标签的数量之间存在明显差异)时,单单准确率一项并不能反映全面情况。

精确率

精确率指标尝试回答以下问题:

  • 在被识别为正类别的样本中,确实为正类别的比例是多少?

精确率的定义如下:
Precision = T P T P + F P \text{Precision} = \frac{TP}{TP+FP}

如果模型的预测结果中没有假正例,则模型的精确率为 1.0。

计算上一部分的用于分析肿瘤的机器学习模型的精确率:

真正例 (TP):1 假正例 (FP):1
假负例 (FN):8 真负例 (TN):90

精确率 = T P T P + F P = 1 1 + 1 = 0.5 \text{精确率} = \frac{TP}{TP+FP} = \frac{1}{1+1} = 0.5

该模型的精确率为 0.5,也就是说,该模型在预测恶性肿瘤方面的正确率是 50%。

召回率

召回率尝试回答以下问题:

  • 在所有正类别样本中,被正确识别为正类别的比例是多少?

从数学上讲,召回率的定义如下:

召回率 = T P T P + F N \text{召回率} = \frac{TP}{TP+FN}
注意:如果模型的预测结果中没有假负例,则模型的召回率为 1.0。

让我们来计算一下肿瘤分类器的召回率:

真正例 (TP):1 假正例 (FP):1
假负例 (FN):8 真负例 (TN):90

召回率 = T P T P + F N = 1 1 + 8 = 0.11 \text{召回率} = \frac{TP}{TP+FN} = \frac{1}{1+8} = 0.11

该模型的召回率是 0.11,也就是说,该模型能够正确识别出所有恶性肿瘤的百分比是 11%。

看一张形象的图

在这里插入图片描述

精确率和召回率之间的博弈

要全面评估模型的有效性,必须同时检查精确率和召回率。遗憾的是,精确率和召回率往往是此消彼长的情况。也就是说,提高精确率通常会降低召回率值,反之亦然。请观察下图来了解这一概念,该图显示了电子邮件分类模型做出的 30 项预测。分类阈值右侧的被归类为“垃圾邮件”,左侧的则被归类为“非垃圾邮件”。

图 1. 将电子邮件归类为垃圾邮件或非垃圾邮件。

在这里插入图片描述
我们根据图 1 所示的结果来计算精确率和召回率值:

真正例 (TP):8 假正例 (FP):2
假负例 (FN):3 真负例 (TN):17

精确率指的是被标记为垃圾邮件的电子邮件中正确分类的电子邮件所占的百分比,即图 1 中阈值线右侧的绿点所占的百分比:

Precision = T P T P + F P = 8 8 + 2 = 0.8 \text{Precision} = \frac{TP}{TP + FP} = \frac{8}{8+2} = 0.8

召回率指的是实际垃圾邮件中正确分类的电子邮件所占的百分比,即图 1 中阈值线右侧的绿点所占的百分比:

Recall = T P T P + F N = 8 8 + 3 = 0.73 \text{Recall} = \frac{TP}{TP + FN} = \frac{8}{8 + 3} = 0.73

图 2 显示了提高分类阈值产生的效果。

在这里插入图片描述

假正例数量会减少,但假负例数量会相应地增加。结果,精确率有所提高,而召回率则有所降低:

真正例 (TP):7 假正例 (FP):1
假负例 (FN):4 真负例 (TN):18

Precision = T P T P + F P = 7 7 + 1 = 0.88 \text{Precision} = \frac{TP}{TP + FP} = \frac{7}{7+1} = 0.88

Recall = T P T P + F N = 7 7 + 4 = 0.64 \text{Recall} = \frac{TP}{TP + FN} = \frac{7}{7 + 4} = 0.64

图 3 显示了降低分类阈值(从图 1 中的初始位置开始)产生的效果。

在这里插入图片描述
假正例数量会增加,而假负例数量会减少。结果这一次,精确率有所降低,而召回率则有所提高:

真正例 (TP):9 假正例 (FP):3
假负例 (FN):2 真负例 (TN):16

Precision = T P T P + F P = 9 9 + 3 = 0.75 \text{Precision} = \frac{TP}{TP + FP} = \frac{9}{9+3} = 0.75
Recall = T P T P + F N = 9 9 + 2 = 0.82 \text{Recall} = \frac{TP}{TP + FN} = \frac{9}{9 + 2} = 0.82
我们已根据精确率和召回率指标制定了各种指标

参考链接

google 机器学习实战

机器学习性能评估指标

猜你喜欢

转载自blog.csdn.net/sty945/article/details/83142443