Press "Enter" to skip to content

如何避免被模型准确性误导

二元分类模型度量指标及其正确使用的视觉指南

作者生成的图像:使用Midjourney生成

背景 – 表面简单

用于衡量分类模型性能的度量指标在数学上相当简单明了。然而,我观察到许多建模者和数据科学家在表达这些指标时遇到困难,甚至错误地应用它们。这是一个容易犯的错误,因为这些指标表面上看起来很简单,但根据问题领域的不同,它们的影响可能是深远的。

本文作为一个视觉指南,旨在解释常见的分类模型度量指标。我们将通过定义和使用示例来强调指标被错误地使用的情况。

关于可视化的简要说明

每个可视化由90个主体组成,代表我们可能希望分类的任何事物。蓝色主体表示负样本,红色主体表示正样本。紫色框是模型,它试图预测正样本。框内的任何内容都是模型预测为正的。

搞清楚这一点后,让我们深入了解这些定义。

精确率和召回率

对于许多分类任务来说,精确率和召回率之间存在着一种权衡。通常情况下,优化召回率会导致精确率的降低。但这些术语实际上是什么意思呢?让我们从数学定义开始,然后再转向可视化表示。

精确率 = TP / (TP + FP)

召回率 = TP / (TP + FN)

其中,TP = 真正例的数量,FP = 假正例的数量,FN = 假负例的数量。

让我们关注下面的图表,在图表中有四个正样本。请记住,模型的正预测由图表上的框表示。观察图表,我们可以看到模型正确地预测了所有四个正样本 – 这意味着所有的正样本都在框内。我们可以通过计算框内的正例数量 (TP = 4) 除以总的正例数量 (TP = 4 + FN = 0) 来从图表中计算模型的召回率。

注意,因为框外没有正例,所以FN为0。

作者生成的图像:具有100%召回率和40%精确率的模型的可视化表示。模型由紫色框表示。

精确率可以类似地解释。它只是框内的正例数量 (TP = 4) 除以框内总样本数量 (TP = 4 + FP = 6)。一个简单的计算揭示了模型的精确率只有40%。

你可以观察到,模型可以具有高召回率但低精确率,反之亦然。下面的图表显示了这一点,召回率仅为50%,而精确率为100%。看看你是否能够理解如何得到这些数字。

这里有一个提示可以帮助你,假负例的数量是2,因为框外有两个正样本。

作者生成的图像:具有100%精确率和50%召回率的模型的可视化表示。模型由紫色框表示。

假阳率和真阴率

假阳率(FPR)可能更直观,可能是因为它的名称。然而,让我们以与其他指标相同的方式探讨这个概念。从数学上来说,我们将FPR表示为:

FPR = FP/(FP + TN)

这里,TN代表真阴性(subjects)的数量。

再次检查第一张图片,可以通过观察盒子内的负样本数量(FP=6)除以负样本的总数(FP=6 + TN=80)来确定FPR。对于我们的第一个图像,假阳性率只有7%,而对于第二个图像,它为0%。试着弄清楚为什么是这样。

记住,盒子内的主体是模型预测为阳性的主体。因此,盒子外的负样本是模型识别为阴性的样本。

真阴性率(TNR)可以使用以下公式计算:

TNR = TN/(TN + FP)

注意,TNR始终等于假阳性率的补。

准确率

准确率是在模型性能上随意提及的一个术语,但它实际上是什么意思?让我们从数学定义开始:

准确率 = (TP + TN) / (TP + TN + FP + FN)

使用我们之前应用的相同逻辑,我们可以计算第一张图像的模型准确率为93%,第二张为97%(试着自己推导一下)。这可能在你的脑海中引起了警觉,因为准确率在某些情况下可能是一个具有欺骗性的指标。我们将在下面更详细地探讨这个问题。

正确使用指标

为什么我们要关注这些指标?因为它们为我们提供了评估模型性能的方法。一旦我们理解了这些指标,我们甚至可以确定与模型相关的商业价值。这就是为什么拥有对适当(和不适当)使用的良好直觉非常重要。为了说明这一点,我们将简要探讨分类任务中的两种常见情况,即平衡数据集和不平衡数据集。

不平衡数据集

前面所示的图表是不平衡分类任务的实例。简单地说,不平衡任务中正样本的表示较低,而负样本的表示较高。许多二元分类的商业用例都属于此类,如信用卡欺诈检测、客户流失预测、垃圾邮件过滤等。为不平衡分类选择错误的指标可能会让您对模型的性能产生过于乐观的信念。

不平衡分类的主要问题是真阴性样本数量可能很高,而假阴性样本数量可能很低。为了说明这一点,让我们考虑另一个模型,并在我们的不平衡数据上评估它。我们可以创建一个极端情况,即模型简单地将每个主体预测为阴性。

Image by Author: Visual representation of “non-discriminatory” model predicting negative for every subject on an imbalanced dataset

让我们在这种情况下计算每个指标。

  • 准确率:(TP=0 + TN=86)/(TP=0 + TN=86 + FP=0 + FN=4) = 95%
  • 精确率:(TP=0)/(TP=0 + FP=0) = 未定义
  • 召回率:(TP=0) / (TP=0 + FN=4) = 0%
  • FPR:(FP=0) / (FP=0 + TN=86) = 0%
  • TNR:(TN=86) / (TN=86 + FP=0) = 100%

准确率、FPR和TNR的问题应该变得更加明显。当我们处理不平衡数据集时,我们可能会产生一个在部署时表现不佳的高准确率模型。在前面的例子中,该模型无法检测到正样本,但仍然达到了95%的准确率,0%的FPR和完美的TNR。

现在,想象一下将这样的模型部署用于医疗诊断或欺诈检测;很明显,它将是无用甚至危险的。这个极端的例子说明了在处理不平衡数据上使用准确率、FPR和TPR等指标来评估模型性能的问题。

平衡数据集

对于平衡分类问题而言,真负样本的数量显著小于不平衡情况下的数量。

作者提供的图片:在平衡数据集上,预测为负的“非歧视性”模型的可视化表示

如果我们将我们的“非歧视性”模型应用于平衡情况,我们会得到以下结果:

  • 准确率:(TP=0 + TN=45) / (TP=0 + TN=45 + FP=0 + FN=45) = 50%
  • 精确率:(TP=0) / (TP=0 + FP=0) = 未定义
  • 召回率:(TP=0) / (TP=0 + FN=45) = 0%
  • 假正率:(FP=0) / (FP=0 + TN=45) = 0%
  • 真负率:(TN=45) / (TN=45 + FP=0) = 100%

虽然所有其他指标保持不变,但模型的准确率下降到50%,这可能更能反映模型的实际性能。然而,准确率没有精确率和召回率仍然是具有误导性的。

ROC曲线与精确率-召回率曲线

ROC曲线是评估二分类模型性能的常用方法。然而,在处理不平衡数据集时,它们可能提供过于乐观且不完全有意义的结果。

ROC曲线和精确率-召回率曲线的简要概述:我们基本上是为不同的决策阈值绘制分类指标之间的曲线。我们通常使用曲线下面积(或AUC)来表示模型的性能。点击链接了解更多关于ROC曲线和精确率-召回率曲线的内容。

为了说明ROC曲线可以过于乐观,我在Kaggle上使用了一个信用卡欺诈数据集构建了一个分类模型。该数据集包含284,807笔交易,其中492笔是欺诈交易。

注意:根据数据所属的开放数据共享许可证,这些数据可以自由用于商业和非商业目的。

作者提供的图片:不平衡数据集上的ROC曲线

通过检查ROC曲线,我们可能会认为模型的性能比实际情况要好,因为曲线下面积为0.97。正如我们之前看到的,对于不平衡分类问题,假正率可能过于乐观。

作者提供的图片:不平衡数据集上的精确率-召回率曲线

更为可靠的方法是使用精确率-召回率曲线。这提供了对模型性能的更可靠估计。在这里,我们可以看到精确率-召回率曲线下面积(AUC-PR)更为保守,为0.71。

采用一个平衡的数据集,其中欺诈和非欺诈交易的比例为50:50,我们可以看到AUC和AUC-PR更加接近。

作者提供的图片:平衡数据集上的ROC曲线
作者:平衡数据集上的精确率-召回率曲线

生成这些图表的笔记本在我的GitHub仓库中可用。

有多种方法可以提升不平衡数据集上分类模型的性能,我在我的合成数据文章中探索了这些方法。

合成数据能提升机器学习性能吗?

研究合成数据在不平衡数据集上提升模型性能的能力

towardsdatascience.com

结论

理解分类模型度量指标超越了数学公式。您还应该了解如何使用每个度量指标以及它们对平衡和不平衡数据集的影响。作为一个经验法则,基于真负例或假负例计算的度量指标在应用于不平衡数据集时可能过于乐观。我希望这次视觉之旅能给您带来更多的直觉。

我发现这种视觉解释对于向非技术利益相关方阐述方法非常有用。请随意分享或借用这种方法。

在LinkedIn上关注我

订阅VoAGI以获取更多我的见解:

我分享数据科学项目、经验和专业知识,以帮助您的学习之旅。您可以通过以下方式注册VoAGI…

johnadeojo.medium.com

如果您有兴趣将人工智能或数据科学整合到您的业务运营中,我们邀请您安排一次免费的初步咨询:

在线预约 | 数据中心解决方案

发现我们在帮助企业实现雄心勃勃目标方面的专业知识,免费咨询。我们的数据科学家和…

www.data-centric-solutions.com

Leave a Reply

Your email address will not be published. Required fields are marked *