分类:准确率、召回率、精确率和相关指标

真正例、假正例和假负例用于计算评估模型的几个实用指标。哪些评估指标最有意义,取决于具体模型和具体任务、不同错误分类的代价,以及数据集是平衡的还是不平衡的。

本部分中的所有指标均基于单个固定阈值计算得出,并且会随阈值的变化而变化。很多时候,用户会调整阈值以优化其中某个指标。

准确率

准确性是指所有分类(无论是正类还是负类)正确分类的比例。其数学定义为:

\[\text{Accuracy} = \frac{\text{correct classifications}}{\text{total classifications}} = \frac{TP+TN}{TP+TN+FP+FN}\]

在垃圾邮件分类示例中,准确度衡量的是所有电子邮件正确分类所占的比例

完美的模型没有假正例和假负例,因此准确率为 1.0,即 100%。

由于精度包含混淆矩阵中的所有四种结果(TP、FP、TN、FN),因此在数据集平衡且两个类别中的示例数量相近的情况下,精度可以用作衡量模型质量的粗略指标。因此,它通常是执行通用或未指定任务的通用或未指定模型使用的默认评估指标。

不过,如果数据集不平衡,或者一种错误(假负例或假正例)的代价高于另一种错误(大多数实际应用中都是如此),则最好改为针对其他指标进行优化。

对于严重不均衡的数据集(其中一个类别出现的频率非常低,例如 1%),如果模型 100% 都预测为负类,则准确率得分为 99%,尽管该模型毫无用处。

召回率或真正例率

真正例率 (TPR),即所有实际正例被正确分类为正例的比例,也称为召回率

在数学上,召回率的定义为:

\[\text{Recall (or TPR)} = \frac{\text{correctly classified actual positives}}{\text{all actual positives}} = \frac{TP}{TP+FN}\]

假负例是指被误分类为负例的实际正例,因此会出现在分母中。在垃圾邮件分类示例中,召回率衡量的是被正确分类为垃圾邮件的垃圾邮件电子邮件的比例。因此,召回率的另一个名称是检测概率:它可以回答“此模型检测到垃圾邮件的比例是多少?”这一问题。

假设一个完美的模型,其假正例率为 0,因此召回率 (TPR) 为 1.0,也就是说,检测率为 100%。

在实际正例数量非常少(例如总共 1-2 个样本)的不均衡数据集中,召回率作为指标的意义不大,作用不大。

假正例率

假正例率 (FPR) 是指被错误地归类为正例的所有实际负例所占的比例,也称为误报概率。其数学定义为:

\[\text{FPR} = \frac{\text{incorrectly classified actual negatives}} {\text{all actual negatives}} = \frac{FP}{FP+TN}\]

假正例是被错误分类的实际负例,因此会出现在分母中。在垃圾邮件分类示例中,FPR 用于衡量被错误分类为垃圾邮件的合法电子邮件的比例,或模型的误报率。

完美的模型没有假正例,因此 FPR 为 0.0,也就是说,假警报率为 0%。

在实际负例数量非常少(例如总共 1-2 个示例)的不平衡数据集中,FPR 作为一个指标就没有那么有意义和实用。

精确率

精确率是指模型所有正分类分类中实际正分类的比例。在数学上,其定义为:

\[\text{Precision} = \frac{\text{correctly classified actual positives}} {\text{everything classified as positive}} = \frac{TP}{TP+FP}\]

在垃圾邮件分类示例中,精确率衡量的是被归类为垃圾邮件的电子邮件中实际是垃圾邮件的比例

假设有一个完美的模型,则该模型没有假正例,因此精确率为 1.0。

在实际正例数量非常少(例如总共 1-2 个示例)的不平衡数据集中,精确率作为指标的意义和实用性较低。

随着假正例的减少,精确率会提高;随着假负例的减少,召回率会提高。但正如前面所述,提高分类阈值往往会减少假正例的数量并增加假负例的数量,而降低阈值则会产生相反的效果。因此,精确率和召回率通常呈反函数关系,其中一个提高会反过另一个。

您可以亲自试用:

指标中的 NaN 是什么意思?

除以 0 时会显示 NaN(非数字),这可能会发生在任何这些指标中。例如,当 TP 和 FP 均为 0 时,精度公式在分母中的值为 0,因此结果为 NaN。虽然在某些情况下,NaN 可以表示完美性能,可以替换为得分 1.0,但它也可能来自实际上无用的模型。例如,如果模型从不预测正例,则其 TP 和 FP 均为 0,因此计算其精确率会导致 NaN。

指标的选择和权衡

在评估模型和选择阈值时,您选择优先处理的指标取决于特定问题的费用、收益和风险。在垃圾邮件分类示例中,通常最好优先考虑召回率(抓取所有垃圾邮件)或准确率(尝试确保被标记为垃圾邮件的电子邮件实际上是垃圾邮件),或者在达到某个最低准确性水平的情况下,兼顾这两者。

指标 指南
准确率

作为平衡数据集的模型训练进度/收敛情况的粗略指标。

对于模型效果,请仅与其他指标搭配使用。

避免使用不平衡的数据集。考虑使用其他指标。

召回率
(真正例率)
在假负例比假正例开销更高时使用。
假正例率 在假正例比假负例开销更高时使用。
精确率 当正例预测的准确性非常重要时,请使用此方法。

(可选,高级)F1 得分

F1 得分是精确率和召回率的调和平均数(一种平均值)。

在数学上,它可按下式计算:

\[\text{F1}=2*\frac{\text{precision * recall}}{\text{precision + recall}} = \frac{2\text{TP}}{2\text{TP + FP + FN}}\]

该指标在精确率和召回率的重要性之间进行了平衡,对于类别不平衡的数据集,该指标优于准确率。如果精确率和召回率的完美分数均为 1.0,则 F1 的完美分数也是 1.0。更广泛地说,当精确率和召回率的值接近时,F1 也会接近它们的值。当精确率和召回率相差很大时,F1 将与较差的指标相似。

练习:检查您的理解情况

模型输出 5 个 TP、6 个 TN、3 个 FP 和 2 个 FN。计算召回率。
0.714
召回率的计算公式为 \(\frac{TP}{TP+FN}=\frac{5}{7}\)。
0.455
召回率是指在所有实际正例中,预测正确的正例所占的比率,而非所有正确分类所占的比率。召回率的公式为 \(\frac{TP}{TP+FN}\)。
0.625
召回率会考虑所有实际正例,而不是所有正例分类。召回率的公式为 \(\frac{TP}{TP+FN}\)
模型输出 3 个真正例、4 个假负例、2 个假正例和 1 个假负例。计算精确度。
0.6
精确率的计算公式为: \(\frac{TP}{TP+FP}=\frac{3}{5}\)。
0.75
精确率考虑的是所有正例分类,而不是所有实际正例。精度公式为 \(\frac{TP}{TP+FP}\)。
0.429
精确率会考虑所有正分类,而非所有正确的分类。精确度的公式为 \(\frac{TP}{TP+FP}\)
您将构建一个二元分类器,用于检查昆虫捕获器的照片,以确定是否存在危险的入侵物种。如果模型检测到该物种,系统会通知值班的昆虫学家(昆虫科学家)。及早发现这种昆虫对于防止虫害至关重要。误报(假正例)很容易处理:昆虫学家发现照片被错误分类,并将其标记为误报。假设准确率水平在可接受的范围内,此模型应该针对哪个指标进行优化?
召回率
在这种情况下,误报 (FP) 的成本较低,而假负例的成本非常高,因此,最大限度地提高召回率(即检测概率)是明智之举。
假正例率 (FPR)
在这种情况下,误报 (FP) 的成本较低。冒着遗漏实际正例的风险并尽量减少此类预测是没有意义的。
精确率
在这种情况下,误报 (FP) 没有特别大的危害,因此尝试提高正例分类的正确性没有意义。