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

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

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

准确率

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

\[\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 测量被错误分类为垃圾邮件的合法电子邮件所占的比例或模型的假警报率。

完美的模型不会产生假正例,因此其假正例率为 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) 没有特别大的危害,因此尝试提高正例分类的正确性没有意义。