【机器学习】超越准确性:精确和召回

本文探讨了准确性之外的分类模型评估指标,包括召回率、精确度及F1分数,解释了这些指标为何在不平衡分类任务中更为重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为分类任务选择正确的指标

您是否相信有人声称完全在他们的头脑中创建一个模型来识别试图以超过99%准确率登机的恐怖分子?嗯,这是模型:简单地标记从美国机场飞来的每个人都不是恐怖分子。鉴于每年美国航班的平均乘客数8亿,而从2000至2017年登上美国航班19名(确认的)恐怖分子,这一模型的准确率达到惊人的99.9999999%!这可能听起来令人印象深刻,但我怀疑美国国土安全部不会很快打电话来购买这款车型。虽然这个解决方案具有几乎完美的准确性,但这个问题的准确性显然不是一个适当的指标!

恐怖主义检测任务是一个不平衡的分类问题:我们需要识别两个类别 - 恐怖分子而非恐怖分子 - 其中一个类别代表绝大多数数据点。当公众中的疾病发病率非常低时,另一种不平衡的分类问题发生在疾病检测中。在这两种情况下,积极的阶级 - 疾病或恐怖主义 - 的数量远远超过负面阶级。这些类型的问题是数据科学中相当常见的例子,当准确性不是评估模型性能的好方法时。

 

直观地说,我们知道在恐怖主义侦查问题中宣布所有数据点都是否定的是没有用,相反,我们应该集中精力确定积极的案例。

我们的直觉告诉我们,我们应该最大化的度量标准在统计中被称为召回,或模型在数据集中查找所有相关案例的能力。

召回的准确定义是真阳性的数量除以真阳性的数量加上假阴性的数量。真正的积极因素是被实际上是正面的模型分类为正面的数据点(意味着它们是正确的),而假阴性是模型识别为负面的数据点,实际上是正面的(不正确的)。

在恐怖主义案件中,真正的积极因素是正确识别的恐怖分子,而假阴性将是模范所标记的个人,而非恐怖分子实际上是恐怖分子。

召回可以被认为是模型能够在数据集中找到所有感兴趣的数据点的能力。

 

你可能会注意到这个等式:如果我们将所有人都标记为恐怖分子,那么我们的回忆就会达到1.0!我们有一个完美的分类器吗?好吧,不完全是。与数据科学中的大多数概念一样,我们选择最大化的指标存在权衡。

在召回的情况下,当我们增加召回时,我们会降低精度。同样,我们直观地知道,将100%乘客标记为恐怖分子的模型可能没用,因为我们必须禁止每个人飞行。统计学为我们提供了表达我们直觉的词汇:这种新模型会受到低精度的影响,或者分类模型只能识别相关数据点的能力。

精确度定义为真阳性的数量除以真阳性的数量加上误报的数量。假阳性是模型错误地标记为实际上是否定的正面的情况,或者在我们的示例中,模型将其归类为非恐怖分子的个体。虽然召回表达了在数据集中查找所有相关实例的能力,但精确度表示我们的模型所说的与实际相关的数据点的比例。

 

现在,我们可以看到,我们的第一个将所有人都标记为非恐怖分子的模型并不是很有用。虽然它具有接近完美的精确度,但它有0精度和0召回,因为没有真正的正面!假设我们稍微修改了模型,并将一个人正确识别为恐怖分子。现在,我们的精确度将是1.0(没有误报)但我们的召回率将非常低,因为我们仍然会有很多误报。如果我们走向另一个极端并将所有乘客归类为恐怖分子,我们将召回1.0 - 我们将抓住每一个恐怖分子 - 但我们的精确度将非常低,我们将拘留许多无辜的人。换句话说,随着我们提高精度,我们减少召回,反之亦然。

 

结合精度和召回

在某些情况下,我们可能知道我们希望以其他指标为代价来最大化召回或精确度。例如,在用于随访检查的患者的初步疾病筛查中,我们可能希望召回接近1.0 - 我们希望找到所有患有该疾病的患者 - 如果以下成本,我们可以接受低精度检查不重要。但是,如果我们想要找到最佳的精度和召回混合,我们可以使用所谓的F1分数来组合这两个指标。

F1得分是精度和召回的调和平均值,在以下等式中考虑这两个指标:

我们使用调和均值而不是简单平均值,因为它会惩罚极值。精度为1.0且召回率为0.0的分类器具有0.5的简单平均值但F1得分为0.F1得分对两个度量给予相等的权重,并且是一般Fβ度量的具体示例,其中β可以调整为更重要的是召回或精确。(还有其他衡量精度和召回率的指标,例如精度和召回的几何平均值,但F1得分是最常用的。)如果我们想要创建一个具有最佳召回和精确平衡的平衡分类模型,然后我们尝试最大化F1得分。

 

可视化精度和召回

我向你抛出了几个新术语,我们将通过一个例子来说明它们在实践中的用法。在我们到达那里之前,我们需要简要地谈谈用于显示精度和召回的两个概念。

首先是混淆矩阵,它有助于快速计算精度和召回,给出模型的预测标签。二元分类的混淆矩阵显示了四种不同的结果:真阳性,假阳性,真阴性和假阴性。实际值构成列,预测值(标签)形成行。行和列的交集显示了四种结果之一。例如,如果我们预测数据点是正数,但实际上是负数,则这是误报。

从混淆矩阵到召回和精确度需要在矩阵中找到相应的值并应用方程式:

用于显示分类模型性能的另一种主要可视化技术是接收器操作特性(ROC)曲线。不要让复杂的名字吓跑你!这个想法相对简单:ROC曲线显示了随着我们改变模型中识别阳性的阈值,召回与精确关系的变化。阈值表示在正类中考虑数据点的值。如果我们有一个识别疾病的模型,我们的模型可能会为每个患者输出0到1之间的分数,我们可以在此范围内设置一个阈值,用于将患者标记为患有疾病(阳性标签)。通过改变阈值,我们可以尝试实现正确的精确度与召回平衡。

ROC曲线绘制了y轴上的真实阳性率与x轴上的假阳性率。真正的正率(TPR)是召回率,误报率(FPR)是误报的概率。这两个都可以从混淆矩阵中计算出来:

典型的ROC曲线如下所示:

接收器工作特性曲线(来源

黑色对角线表示随机分类器,红色和蓝色曲线表示两种不同的分类模型。对于给定的模型,我们只能停留在一条曲线上,但我们可以通过调整我们对阳性案例进行分类的阈值来沿着曲线移动。通常,当我们降低阈值时,我们沿曲线向右和向上移动。阈值为1.0时,我们将位于图的左下方,因为我们没有将数据点识别为正数,导致没有真正的正数且没有误报(TPR = FPR = 0)。随着我们降低阈值,我们将更多数据点识别为正数,从而产生更多真实阳性,但也会产生更多误报(TPR和FPR增加)。最终,在0.0的阈值处,我们将所有数据点识别为正数,并发现自己位于ROC曲线的右上角(TPR = FPR = 1.0)。

最后,我们可以通过计算曲线下面积面积(AUC)来量化模型的ROC曲线,该指标介于0和1之间,数字越大表示分类性能越好。在上图中,蓝色曲线的AUC将大于红色曲线的AUC,这意味着蓝色模型更好地实现了精度和召回的混合。随机分类器(黑线)达到0.5的AUC。

 

概括

我们已经介绍了一些术语,这些术语本身并不困难,但哪种结合起来可能有点压倒性!让我们快速回顾一下,然后通过一个例子来深入了解我们学到的新想法。

二元分类的四个结果

  • 真正的积极因素:标记为积极的数据点实际上是积极的
  • 误报:标记为正数的数据点实际上是负数
  • 真阴性:标记为负数的数据点实际上是负数
  • 假阴性:标记为阴性且实际为阳性的数据点

召回和精确指标

  • 回想一下:分类模型识别所有相关实例的能力
  • 精度:分类模型仅返回相关实例的能力
  • F1得分:使用调和平均值组合召回和精确度的单一指标

可视化召回和精确度

  • 混淆矩阵:显示分类问题的实际和预测标签
  • 接收器工作特性(ROC)曲线:绘制真阳性率(TPR)与假阳性率(FPR)的关系,作为模型分类阳性的阈值的函数
  • 曲线下面积(AUC):用于基于ROC曲线下面积计算分类模型的整体性能的度量

 

示例应用

我们的任务是诊断100名患有50%普通人群疾病的患者。我们将假设一个黑盒模型,我们在其中输入有关患者的信息并获得0到1之间的分数。我们可以改变将患者标记为阳性(有疾病)的阈值,以最大化分类器性能。我们将以0.1为增量评估从0.0到1.0的阈值,在每一步计算ROC曲线上的精度,召回率,F1和位置。以下是每个阈值的分类结果:

每个阈值的模型结果

我们将在0.5的阈值下进行召回,精确度,真阳性率和假阳性率的一个样本计算。首先我们制作混淆矩阵:

阈值混淆矩阵为0.5

我们可以使用矩阵中的数字来计算召回率,精确度和F1分数:

然后我们计算真阳性和假阳性率以找到ROC曲线的y和x坐标。

为了制作整个ROC曲线,我们在每个阈值处执行此过程。正如您可能认为的那样,这非常繁琐,所以我们不是手工操作,而是使用像Python这样的语言来为我们做!带有计算结果的Jupyter笔记本在GitHub 上供任何人查看实现。最终的ROC曲线如下所示,阈值高于点。

在这里,我们可以看到所有概念汇集在一起​​!在1.0的阈值时,我们没有将患者归类为患有疾病,因此召回和精确度为0.0。随着阈值降低,召回增加,因为我们识别出患有该疾病的更多患者。然而,随着我们的回忆增加,我们的精确度会下降,因为除了增加真实的积极因素外,我们还会增加误报。在0.0的阈值,我们的回忆是完美的 - 我们发现所有患有这种疾病的患者 - 但我们的精确度很低,因为我们有很多误报。我们可以通过更改阈值并选择最大化F1分数的阈值来移动给定模型的曲线。要改变整个曲线,我们需要构建一个不同的模型。

每个阈值的最终模型统计数据如下:

基于F1得分,总体最佳模型发生在0.5的阈值处。如果我们想要更大程度地强调精度或召回,我们可以选择在这些措施上表现最佳的相应模型。

 

结论

我们倾向于使用准确性,因为每个人都知道它的含义,而不是因为它是完成任务的最佳工具!尽管回忆和精确度等更适合的指标看起来很陌生,但我们已经直观地了解为什么它们能够更好地解决一些问题,例如不平衡的分类任务。统计数据为我们提供了计算这些指标的正式定义和方程式。数据科学是为了知道用于工作的正确工具,在开发分类模型时,我们通常需要超越准确性。了解召回,精确度,F1和ROC曲线使我们能够评估分类模型,并且应该让我们怀疑只关注模型准确性的人,特别是对于不平衡问题。正如我们所看到的,准确性并未对几个关键问题提供有用的评估,但现在我们知道如何使用更智能的指标!

 

原文:https://towardsdatascience.com/beyond-accuracy-precision-and-recall-3da06bea9f6c

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值