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

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

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

准确率

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

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

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

理想的模型不会出现假正例和假负例,因此准确率为 1.0 或 100%。

由于准确率纳入了混淆矩阵中的所有四种结果(真阳性、假阳性、真阴性和假阴性),因此在给定平衡的数据集(两个类别中的样本数量相似)的情况下,准确率可以作为模型质量的粗略衡量指标。因此,对于执行通用或未指定任务的通用或未指定模型,它通常是默认的评估指标。

不过,如果数据集不平衡,或者一种错误(FN 或 FP)的代价高于另一种错误(这种情况在大多数实际应用中都会出现),最好优化其他指标之一。

对于严重不平衡的数据集(其中一个类别的出现频率非常低,例如仅占 1%),即使模型 100% 的时间都预测为负类别,其准确率也会达到 99%,但实际上毫无用处。

召回率或真正例率

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

召回在数学上的定义如下:

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

假负例是指实际为正例但被错误分类为负例的样本,因此会出现在分母中。在垃圾邮件分类示例中,召回率衡量的是正确归类为垃圾邮件的垃圾邮件所占的比例。因此,召回率的另一个名称是检测概率:它回答了“此模型检测到的垃圾邮件占垃圾邮件总数的百分比是多少?”这一问题。

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

在实际正例数量非常低的不平衡数据集中,召回率比准确率更有意义,因为它衡量的是模型正确识别所有正例的能力。对于疾病预测等应用,正确识别阳性病例至关重要。假负例的后果通常比假正例更严重。如需查看比较召回率和准确率指标的具体示例,请参阅召回率定义中的注释。

假正例率

假正例率 (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 的得分,但它也可能来自实际上毫无用处的模型。例如,如果某个模型从不预测正例,则其真正例数和假正例数均为 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 个 TP、4 个 TN、2 个 FP 和 1 个 FN。计算精确率。
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) 的危害并不大,因此尝试提高正类别的正确性没有意义。