
在人工智能驱动的时代,“它有多好?”这个问题至关重要。当我们构建一个分类器来诊断疾病或预测结果时,我们本能地会采用准确率——即正确答案的简单百分比——作为其成绩单。然而,这个直观的指标隐藏着一个危险的缺陷。对于许多关键的现实世界问题,尤其是那些涉及罕见事件的问题,高准确率分数可能完全掩盖模型未能履行其最重要功能的真相。这种“准确率悖论”揭示了我们在评估自己所构建的工具时存在的重大知识差距。
本文直面准确率的不足,并为更细致、更诚实地评估分类器性能提供了指南。它解构了真正理解模型行为所需的基本概念,并展示了它们在高风险领域的应用。在接下来的章节中,您将学会超越单一数字,对模型的优缺点提出正确的问题。“原理与机制”部分将剖析准确率为何会失效,并引入一个基于混淆矩阵的更优评估框架,其中包括精确率、召回率和平衡准确率等关键指标。随后,“应用与跨学科联系”部分将阐释这些指标的选择如何在从医学到材料科学等多个学科中产生深远的现实影响。
我们如何衡量成功?当我们构建一台机器来执行任务时,比如分类图像或预测医疗结果,我们渴望得到一张简单的成绩单。一个从0到100的单一数字,告诉我们:“它有多好?”这个分数最自然的选择就是准确率。它诚实、简单,就是机器答对的百分比。这又有什么问题呢?
事实证明,几乎所有方面都有问题。分类器性能的故事,就是发现这一简单想法的深刻不足,并走向更深入、更细致地理解模型“好”的真正含义的旅程。
让我们想象一下,我们正在为医院的重症监护室构建一个筛查脓毒症(一种危及生命的疾病)的系统。脓毒症相对罕见,但及早发现至关重要。假设在一个包含1000名患者的测试集中,有100人确实患有脓毒症,而900人没有。我们花哨的新人工智能模型接受测试,得出以下结果:它正确识别了10名脓毒症患者(真正例),但错过了另外90名(假负例)。对于健康患者,它没有犯任何错误,正确地将所有900人识别为未患脓-毒症(真负例),并且没有产生任何假警报(假正例)。
它的准确率是多少?嗯,它在1000个总案例中做出了 个正确决策。其准确率为 ,即91%。这听起来很棒!一个A-的成绩!
但是,请等一下。让我们考虑一个“平凡”分类器,一段除了对每位患者都盲目预测“无脓毒症”之外什么都不做的代码。它的准确率是多少?对于100名脓毒症患者,它每次都错。对于900名没有脓毒症的患者,它每次都对。它正确的决策总数是900个,共1000个案例。其准确率为90%。
这是一个惊人的发现。我们花了数月时间构建的复杂模型,仅仅比一个什么都不做的模型好一点点。更糟糕的是,这个平凡模型获得了出色的准确率分数,却完全掩盖了它在我们唯一关心的事情上——即找出患病患者——的彻底无用。
这不是侥幸;这是处理不平衡数据集时自然界的一个基本属性。如果一个事件很罕见,你只需每次都赌它不发生,就可以获得非常高的准确率。考虑一个用于预测不良临床事件的分类器,该事件仅在1%的患者中发生。一个总是预测“无事件”的模型将有99%的时间是正确的,尽管它完全没有能力发现事件本身,但其预期准确率仍能达到 。我们在预测核聚变破裂、筛查罕见癌症 以及无数其他领域都看到了这种情况。
事实证明,准确率不是一个公平的裁判。它只听从多数派的意见。在一个99%的案例都是“负例”的数据集中,最终的准确率分数99%取决于你对负例的分类效果。对关键、稀有的正例类别的性能表现被淹没在平均值中。这就是准确率悖论:高准确率可能带来一种危险的、具有误导性的安全感。为了做得更好,我们必须停止要求单一的分数,而应开始审视考试的细节。
为了超越准确率的陷阱,我们必须解构“正确”或“不正确”决策的概念。我们需要一个更详细的记账系统。这个系统被称为混淆矩阵,它与其说是一个矩阵,不如说是一个有四种不同裁决的法庭。
想象一下我们的分类器是一位法官。对于提交给它的每一个案件,它都会给出一个裁决(“正例”或“负例”),我们可以将其与真实情况进行比较。四种可能的结果是:
正确决策的总数是 ,错误的总数是 。准确率就是 。但现在我们清楚地看到了问题所在:准确率将假负例和假正例视为同等重要。在现实世界中,情况很少如此。漏掉一个癌症诊断(FN)通常远比一次虚假警報(FP)的后果更具灾难性。混淆矩阵迫使我们直面不同类型的错误及其截然不同的后果。
借助混淆矩阵的智慧,我们可以创造出新的指标——这些指标不仅仅计算总的胜利次数,而是衡量特定的技能。其中最重要的两个是召回率和精确率。
召回率(Recall),也称为灵敏度(Sensitivity)或真正例率(True Positive Rate, TPR),回答了这样一个问题:在所有真正患有该疾病的人中,我们找出了多大比例?
召回率是“不遺餘力”的指标。对于一个不能承受任何线索溜走的侦探来说,这是一个完美的指标。一个具有100%召回率的模型能捕捉到每一个正例。然而,高召回率的代价通常是大量的虚假警报。为了捕捉到每一个可能的脓毒症病例,你可能不得不降低标准,标记即使是轻微可疑的患者,从而增加你的假正例。
这就引出了它的对应物,精确率(Precision)。精确率回答了这样一个问题:在我们所有发出警报(预测为正例)的次数中,有多大比例是真正的警报?
精确率是“狼来了”的指标。它衡量我们正例预测的可靠性。如果一个模型具有高精确率,你就知道当它发出警报时,很可能是一个真实事件。这在虚假警报成本高昂的情况下至关重要——例如,如果每个正例预测都会触发一个昂贵且有风险的操作。
这两个指标处于一种天然的紧张状态中。这就是著名的精确率-召回率权衡。你几乎总能以牺牲另一个为代价来提高其中一个。通过降低标准,你可以提高召回率,但会降低精确率。通过提高标准,你会提高精确率,但会错过更多案例,从而降低召回率。一个好的分类器能找到一种方法,使两者都达到高值。
因为我们常常希望用一个单一的数字来捕捉这种平衡,我们可以将它们结合起来。最常见的方法是F1分数(F1-score),它是精确率和召au回率的*调和平均数*。
调和平均数有一个很好的特性:它会因极端值而受到惩罚。要获得高的F1分数,分类器必须在精确率和召回率两者上都表现得相当好。一个召回率为100%但精确率只有1%的模型,其F1分数会非常糟糕,而这正是我们想要的。
我们已经看到,准确率是两个类别性能的流行率加权平均值。对于一个流行率为 的正例类别,准确率就是 ,其中 是真正例率(召回率),而 是真负例率()。准确率的问题在于,当 很小时,公式就变成了 准确率 。
如果我们创建一个强制权重相等的指标会怎样?如果我们简单地取正例类别性能和负例类别性能的直接平均值呢?这就得到了平衡准确率(Balanced Accuracy)。
这个简单的改变非常强大。因为它赋予了每个类别平等的发言权,平衡准确率不受类别不平衡的影响。让我们通过一个漂亮的例子来看看。假设我们有两个分类器, 和 ,用于一种罕见的遗传病。 在发现疾病方面非常出色(),但在识别健康人群方面很糟糕()。 则更为平衡()。
如果我们在一个疾病流行率很低(如1%,类似普通人群篩查)的队列上测试它们,分类器 的普通准确率达到95%,而 只有50%。 似乎远胜一筹。但如果我们在一个高流行率(如90%,类似转诊到专科诊所的患者)的队列上测试它们, 的准确率飙升至94%,而 的则降至81%。现在 看起来更好了!关于哪个分类器“更准确”的结论完全取决于我们测试的人群。
现在看看平衡准确率。对于 ,。对于 ,。这个值不会改变。根据这个指标, 始终更好,无论测试人群中的流行率如何。平衡准确率衡量的是分类器内在的技能,与它所测试的环境脱钩。
选择使用平衡准确率是一个有意识的哲学选择。这意味着你已经认定,对少数类的错误与对多数类的错误同等重要。如果你的目标只是最小化错误的总数,那么你应该坚持使用普通准确率。但是,如果像通常情况一样,少数类才是真正关键所在,那么平衡准确率能提供一个更真实的性能图景。
也存在其他“平衡”的指标。G均值(G-mean)()使用几何平均数代替算术平均数,它对某一类别的糟糕性能更为敏感——如果TPR或TNR中任何一个为零,G均值也为零。也许最稳健的单一数字总结是马修斯相关系数 (MCC)。它本质上是真实分类和预测分类之间的相关系数,并将混淆矩阵中的所有四个值都纳入计算。+1分表示完美预测,0表示不比随机猜测好,-1表示完美的反向预测。
我们还有最后一课要学。到目前为止,我们都假设我们测试的数据与我们训练的数据看起来一样。但现实世界是一个狂野、动态的地方。一个被训练来区分猫和狗的模型,某一天可能会看到一张狐狸的照片。这是一个分布外 (OOD) 樣本。它是一個“未知的未知”。
让我们来模拟一下。我们有一个针对罕见疾病(流行率2%)的优秀分类器。它有很高的准确率(98%)和不错的召回率(50%),但它的精确率只有大约50%——一半的警报都是假的。现在,我们部署它。在现实世界中,它开始遇到一种它在训练期间从未见过的新良性病症。这些新病例都是真正的负例,但它们迷惑了分类器,导致分类器开始将其中90%误标为正例。
我们的指标会发生什么变化?大量新的假正例涌入系统。
这是最后一个,令人谦卑的教训。没有单一的指标能讲述完整的故事。准确率会被不平衡所愚弄。平衡准确率无法告诉你你的精确率是否在崩溃。每个指标都是一个不同的镜头,一种不同的工具,用来探查我们创造物的行为。通往智慧的道路不是找到那个完美的指标,而是学会如何阅读所有指标,理解它们的优点和盲点,并提出正确的问题。我们不仅要问“它对吗?”,还要问“它是如何对的,如何错的,它对谁失效,以及当它遇到意想不到的情况时会发生什么?”
一台机器“正确”意味着什么?你可能认为这是一个哲学家的问题,但当我们进入一个算法诊断疾病、发现新材料、驾驶我们汽车的世界时,它变成了我们这个时代最紧迫的实践问题之一。正如我们所看到的,分类器的性能不是一个单一、简单的数字。它是对模型行为的丰富、多方面的描述。这些性能指标——精确率、召auff率、准确率及其同类——的真正美妙之处不在于它们的数学定义,而在于它们如何被应用。它们的应用迫使我们直面我们试图解决的问题的本质,并明确说明我们珍视什么、恐惧什么。选择一个指标就是选择一种哲学,而在许多领域,这是一个关乎生死的选择。
分类的风险在医学领域无处其右。在这里,一个错误不仅仅是一个统计误差;它可能是一场人间悲剧。考虑一下医疗诊断测试可能失败的两种基本方式。它可能漏掉一个存在的疾病(假负例),或者对一个不存在的疾病发出错误警报(假正例)。这两种错误并非生而平等,它们的后果塑造了我们诊断工具的设计理念。
想象一种新药上市,一个安全系统被建立起来,用于扫描电子健康记录,寻找一种罕见但可能致命的过敏反应(如过敏性休克)的迹象。如果系统未能标记出一个真实病例——一个假负例——患者可能会死亡。这是一个不可接受的结果。因此,在设计这样的系统时,公共卫生官员会要求尽可能高的召回率(也称为灵敏度)。他们希望捕捉到每一个潜在的病例,即使这意味着在此过程中标记许多非病例。这些假正例会给必须审查每个标记病例的临床专家小组带来额外工作,但与防止死亡相比,这是很小的代价。在药物安全领域,指导原则是:宁求稳妥,不留遗憾。
现在,让我们换个角度。一个临床基因组学实验室开发了一种尖端的流程来检测de novo突变——即儿童体内出现但未从父母任何一方遗传的微小基因变化。这些突变有时可能是罕见儿科疾病的病因。如果该流程将一个实际上只是良性遗传变异或测序伪迹(假正例)的变异标记为de novo,后果将很严重。家庭可能会承受巨大的焦虑,实验室必须进行昂贵且耗时的验证实验(如Sanger测序)来证伪这一错误发现。在这种情况下,虽然高召回率仍然重要,但精确率——即正例判定中真正正确的比例——变得至关重要。一个高精确率的流程能激发信心,确保宝贵的资源和情感精力都花在真正的发现上,而不是在基因组中追逐幽灵。
召回率和精确率之间的这种张力定义了几乎每个分类问题中的基本权衡。但是,当我们被迫做出选择时会发生什么?考虑开发一种利用血液样本特征进行癌症筛查的新测试。一个团队开发了两个分类器。分类器A“准确率”惊人,能正确识别98%患者的状态。分类器B的整体准确率较低,只有93%。我们应该用哪一个?从表面上看,分类器A似乎更优。
但让我们看得更仔细。这就是短视地关注单一数字可能带来灾难性后果的地方。假设漏诊一个癌症(假负例)会带来巨大的下游成本,无论是在经济上还是在人的生命上,估算为一个假设的250,000美元。而一个假正例,虽然会导致不必要但相对安全的后续结肠镜检查,其成本要低得多,为1200美元。分类器A,尽管准确率高,却是通过非常保守的方式实现的;它的召回率很低,只捕捉到55%的实际癌症病例。分类器B,虽然犯了更多的假正例错误,但敏感得多,能捕捉到92%的癌症病例。当你计算一下,对于一个庞大的人口来说,“更准确”的分类器A的总预期错分成本是天文数字——可能是数亿美元——因为它错过了大量的癌症病例。而“不太准确”的分类器B,通过防止这些灾难性的假负例,其总成本仅为A的一小部分。在这种情况下,分类器B不仅是更好的选择;它是唯一合乎道德的选择。准确率较低的模型,实际上是那个 vastly superior 的模型。这个强有力的例子教给我们一个至关重要的教训:孤立地看,准确率可能是一首塞壬的歌声,引诱我们走向灾难性的决策。“最佳”模型是那个能将犯错的真实成本降至最低的模型。
在处理不平衡数据集时,依赖准确率的危险最为突出,即一个类别比另一个类别常见得多。这在医学领域是常态。大多数人是健康的,大多数组织样本不是癌性的,大多数发烧不是由致命寄生虫引起的。
让我们想象一个自动化显微镜正在分析皮肤样本,以寻找在特定地区发现的寄生虫曼森线虫(Mansonella)的微丝蚴。假设样本中寄生虫的真实流行率为 ,意味着40%的样本是阳性的。一个灵敏度(召回率)为 ,特异度为 的分类器,将实现 的整体准确率——相当不错。但是,如果我们是在筛查一种更为罕见的疾病,其流行率仅为 (1%)呢?一个仅仅对每个样本都预测“阴性”的无用分类器将拥有 的准确率!它完美地“准确”,却完全没有价值,因为它永远不会发现任何一个疾病病例。
这说明了一个基本的数学真理:整体准确率是正例和负例类别上性能的加权平均值,权重就是类别的流行率。
当流行率非常低时,准确率绝大部分由特异度(多数负例类上的性能)主导,几乎没有告诉我们任何关于分类器发现我们真正关心的稀有正例的能力。
为了摆脱多数类的暴政,我们需要更好的指标。其中一个指标是平衡准确率,它只是灵敏度和特异度的平均值。通过给予每个类别的性能同等权重,无论其流行率如何,它为不平衡问题上的分类器效用提供了一个更诚实的评估。另一个更强大的工具是ROC曲线下面积 (AUC-ROC)。ROC曲线不依赖于单一的决策阈值,而是显示了在所有可能的阈值下灵敏度和特异度之间的权衡。这条曲线下的面积给了我们一个单一、稳健的分数,代表模型将一个随机正例样本排在一个随机负例样本之前的概率。AUC为 的模型不比抛硬币好,而AUC为 的模型是完美的分类器。通过总结在整个决策阈值谱上的性能,AUC为模型的判别能力提供了一个更全面、更可靠的画面,尤其是在类别不平衡时。
知道如何衡量性能是一回事;诚实地衡量它是另一回事。在为关键应用开发机器学习模型时,尤其是在像基因组学这样我们有成千上万个特征(基因)但只有几十个样本()的领域,欺骗自己是极其容易的。
一个常见的陷阱是“信息泄露”。想象一下你正在为一名学生准备期末考试。如果你把考试题目本身作为学习材料的一部分,学生很可能会在考试中取得优异成绩。但他真的学会了这个科目吗?当然没有。在一场新的、未见过的考试中,他会惨败。机器学习模型也是如此。如果来自最终“测试”数据的任何信息——即使是像用它来选择最佳特征或调整模型超参数这样简单的事情——泄露到训练过程中,那么得出的性能估计将是极度乐观且完全具有误導性的。为了得到诚实的评估,测试数据必须被保存在一个“保险箱”里,在最终的、单次的评估之前完全不被触碰。像嵌套交叉验证 (NCV) 这样的严格协议正是为此设计的,它在用于模型开发的数据和用于最终性能评估的数据之间建立了一道防火墙,确保报告的性能真实反映了模型在现实世界中的表现。
我们用来评估模型的工具也可以反过来用于内部,作为检查我们数据质量的诊断手段。在大型生物学实验中,样本常常在不同的“批次”中,在不同的日子或用不同的试剂进行处理。这可能会在数据中引入系统性的技术变异,即批次效应,这些效应可能完全淹没我们试图寻找的微妙生物学信号。我们如何知道我们的数据校正方法是否成功地移除了这些效应?一种巧妙的方法是训练一个分类器去做我们不希望它能做到的事:从“校正后”的数据中预测批次标签。如果分类器能够高精度地区分不同批次,这是一个明确的信号,表明仍然存在强大的技术伪影。校正失败了。在这种“对抗性”应用中,高性能标志着问题,而接近随机猜测的性能则表示成功[@problem-d:4542954]。
这种巧妙组合分类器的原则也导致了更稳健的系统。例如,在医学影像分诊中,一个复杂的问题可以分解为一个级联分类器系统。第一阶段模型,为极高的召回率而调整,作为一个敏感但廉价的筛查工具,标记出每一个潜在的异常。只有被这个第一模型标记的病例才会被传递给第二个、计算成本更高且高度精确的模型进行确认。这种多阶段方法平衡了对灵敏度的需求与成本和时间的实际限制,创建了一个高效且有效的工作流程。
我们在医学背景下探讨的原则并不僅限于生物学。它们是评估任何在不确定性下做决策的系统的通用语言。在材料科学领域,研究人员正在使用机器学习来筛选广阔的化学空间,以发现具有理想性能的新型材料。一个候选材料是无聊的“平庸绝缘体”还是具有奇异电子特性的开创性“拓扑绝缘体”?通过在源自量子力学计算的特征上训练分类器,科学家可以比传统方法快得多地预测这些性质。对这些分类器进行严格评估,使用交叉验证等技术,对于确保预测可靠、确保对新材料的探索是由真正的洞察而非统计噪声引导至关重要。
也许这些思想最現代、最深刻的应用在于人工智能研究的最前沿。当今许多最强大的人工智能模型,例如那些解释医学图像或理解语言的模型,首先是在大量未标记数据上以“无监督”方式进行训练的。例如,一个自编码器可能学会压缩然后重建患者组织的图像。它在从未被告知什么是肿瘤的情况下,学习了数据的丰富内部“表示”。但是我们如何知道这个学到的表示是否有用?它是否捕捉到了具有医学意义的结构,还是仅仅是表面的纹理?
答案是一种称为线性探查的技术。在无监督模型训练完成后,其内部表示生成部分(“编码器”)被冻结。然后,在一个少量的标记数据上训练一个非常简单的线性分类器,以从这些冻结的表示中预测临床结果(例如,诊断)。这个简单探查器的性能——通常用AUC-ROC来衡量以处理不平衡问题——告诉我们无监督模型组织数据的好坏程度。如果一个简单的线性分类器可以实现高性能,这意味着复杂的高维输入数据已经被转换到一个新的空间,在这个空间里,临床相关的类别被清晰地分开了。探查器的性能成为衡量主模型所达到的“理解”质量的指标。
从诊所到材料实验室,再到人工智能的前沿,故事都是一样的。衡量分类器的性能不是一个枯燥的会计练习。它是我们将价值观注入算法的过程,是一门迫使我们对不确定性保持诚实的学科,也是一个让我们能够构建不仅强大而且值得信赖的机器的工具包。