Python-应用共形预测实践指南-二-

98 阅读1小时+

Python 应用共形预测实践指南(二)

原文:annas-archive.org/md5/e2fbbdc80efb8a4344d68cd1813dddf8

译者:飞龙

协议:CC BY-NC-SA 4.0

第八章:时间序列和预测的一致性预测

在本章中,我们将探索时间序列和预测中的激动人心的一致性预测领域。一致性预测是生成点预测模型的预测区间(PIs)的强大工具,我们将向您展示如何使用开源库应用这项技术到您的数据中。本章将带您从理解时间序列中不确定性量化(UQ)的基础到预测中一致性预测背后的复杂机制进行一次旅行。

通过本章,您将牢固地理解生成 PIs 的各种方法,并将能够使用一致性预测构建您的 PIs。

在本章中,我们将涵盖以下主要主题:

  • 时间序列和预测问题的 UQ

  • 预测应用中 PI 的概念

  • 生成 PIs 的各种方法

  • 时间序列和预测的一致性预测

到本章结束时,您将能够将所讨论的概念和开源工具应用到您的行业应用中,提供具有明确不确定性界限的稳健预测。这些课程将提高您的预测能力,通过允许您向预测添加置信度度量,使您的模型更具优势。

时间序列和预测问题的 UQ

UQ 不仅仅是时间序列预测中的复杂补充;它是一个基本方面,为预测的本质提供了宝贵的见解。让我们看看为什么它很重要,以及其发展的简要历史。

UQ 的重要性

UQ 是时间序列预测的一个关键组成部分。虽然预测模型可能在平均意义上提供准确的预测,但理解这些预测的不确定性同样至关重要。有几个关键原因说明为什么正确量化不确定性对于实际时间序列预测至关重要:

  • 风险评估:在许多领域,如金融、医疗保健和环境科学,预测与决策紧密相连。理解预测的不确定性有助于评估潜在风险,从而实现明智的决策。

  • 模型置信度:UQ 提供了对每个模型预测的置信度的理解。这可能导致更精细的模型选择,并有助于识别模型可能表现不佳的领域。

  • 资源优化:通过承认不确定性,资源可以更优化地分配。例如,了解供应链管理中需求预测的不确定性可能导致更好的库存管理。

  • 合规性监管:在某些行业中,监管机构可能要求量化预测的不确定性,这强调了系统化 UQ 方法的重要性

在确立了不确定性量化(UQ)的关键作用后,我们现在转向其演变过程。

UQ 的历史

提供可靠的不确定性度量与时间序列预测并行的需求早已被认识到。几十年来,统计和计算方法的发展使得量化不确定性的更复杂方法成为可能。以下是一些重要的历史发展:

  • 早期统计方法:时间序列中 UQ 的根源可以追溯到早期的统计模型。例如,PIs(预测区间)等技术被应用于为预测提供界限。

  • 贝叶斯方法:贝叶斯方法为 UQ 带来了概率视角,允许进行更细致的不确定性描述。贝叶斯预测模型结合先验信念和似然函数来创建后验分布,全面地表示不确定性。

  • 自助法和重采样:如自助法等技术使 UQ 无需强烈的参数假设,使其对更复杂的模型变得可访问。

我们所探讨的历史发展为我们理解时间序列分析中的 UQ 提供了关键的基础。现在,让我们更深入地探讨那些早期统计技术,看看它们是如何使量化预测不确定性的第一步成为可能的。

早期统计方法——时间序列中 UQ 的根源

UQ(不确定性量化)一直是统计分析的关键部分,其在时间序列预测中的作用也并无不同。统计建模的早期阶段为理解预测中的不确定性奠定了基础,并开发了各种技术来为预测提供界限。在这里,我们将探讨这些早期统计方法,并了解它们是如何为现代时间序列分析中的 UQ 理解铺平道路的。

时间序列预测中 UQ 的一个开创性贡献是置信区间的概念:

  • 小样本的 t 分布:在处理小样本量时,t 分布提供了更准确的区间,考虑到由于数据有限而增加的不确定性。

  • 自回归模型的区间估计:为时间序列模型如 ARIMA 开发了特定技术,其中可以推导出参数和预测的置信区间。

除了置信区间,还开发了预测界限来封装与未来观测相关的不确定性。这些界限考虑了模型参数的不确定性和未来误差的随机性:

  • 预测误差方差:通过估计预测误差方差,可以在预测值周围创建界限。

  • 预测误差分解:开发了将预测误差分解为各种组件的技术,从而为不确定性的来源提供了洞察。

虽然这些早期方法具有高度的影响力,但它们通常依赖于对潜在分布和模型结构的强烈假设。这些技术的参数性质使得它们在处理复杂、非线性时间序列数据时不够灵活:

  • 非参数方法:认识到这些局限性导致了非参数方法的发展,这些方法不依赖于特定的分布假设

  • 稳健的统计技术:还努力创造更稳健的统计方法,能够处理异常值和非恒定方差,扩展了早期 UQ 方法的范围

时间序列不确定性量化(UQ)的早期统计方法为该领域的后续进步奠定了基础。这些技术中嵌入的原则,如置信区间和预测界限,仍然是现代 UQ 方法的核心。它们代表了一种经过构建和改进的遗产,导致了当前理解时间序列预测中不确定性的各种方法。

现在,让我们深入探讨一些早期的统计技术,看看它们是如何使预测不确定性的量化迈出第一步的。

现代机器学习方法

前几节探讨了时间序列预测不确定性量化(UQ)的早期统计基础。虽然这些技术具有开创性,但它们在很大程度上依赖于参数假设和简单的模型结构。现代机器学习的兴起使得量化不确定性的方法更加灵活和稳健,克服了传统方法的一些局限性。让我们看看这个领域的关键创新:

  • 现代机器学习方法:随着机器学习的兴起,开发了诸如 dropout 和集成方法等技术来量化不确定性。

  • 符合预测:最近,符合预测已成为 UQ 的一个稳健框架。它提供了一种非参数方法,在温和的假设下保证有效的 PI。

UQ 对于时间序列预测至关重要。它丰富了预测的理解,促进了更好的决策,并符合监管要求。随着时间的推移,UQ 的演变导致了多样化的方法,每种方法在不同的环境中都增加了价值。

本章稍后将探讨的符合预测(conformal prediction)的最近出现代表了该领域的一个重要进步,提供了稳健且普遍适用的不确定性度量。

总结来说,灵活的机器学习技术的出现使得 UQ 有了新的稳健方法,克服了早期统计方法的局限性。这种演变为量化时间序列预测中的不确定性提供了一套多样化的工具箱。

接下来,我们将探讨 PI 背后的概念,这是传达预测不确定性的基础。

预测应用中 PI(预测区间)的概念

PIs 是预测中的关键工具,提供了一系列可能值,其中未来观测值很可能会发生。与只给出一个最佳估计值的点预测不同,PIs 传达了该估计值周围的不确定性。

本节探讨了 PIs 背后的基本概念及其在各个预测应用中的重要性。

定义和构建

PIs 围绕一个预测点构建,以表示未来观测值预期落在其中的范围,并具有给定的置信水平。例如,95%的 PI 意味着在 100 个未来观测值中,有 95 个预期将落在定义的范围内。

PIs 可以采取多种形式,具体取决于生成它们的方法。以下有两个关键的区别因素:

  • 对称与不对称区间:PIs 可以是对称的,即边界与预测点等距,或者是不对称的,反映不同方向上的不同不确定性

  • 参数方法与非参数方法:PIs 可以使用参数方法(例如,假设正态分布)或非参数方法创建,具体取决于数据分布的潜在假设

预测应用的重要性

PIs 在各个预测领域扮演着至关重要的角色,原因如下:

  • 决策制定:PIs 使决策者能够评估风险和机遇——例如,它们允许投资者评估资产的波动性

  • 模型评估:将实际观测值与 PIs 进行比较可以是模型诊断检查的一部分,有助于评估模型在捕捉不确定性方面的充分性

  • 优化运营:在供应链管理中,PIs 可以通过反映需求预测的不确定性来帮助优化库存

  • 传达不确定性:PIs 有效地向非技术利益相关者传达不确定性,促进更细致的讨论和规划

挑战和考虑因素

虽然非常有价值,但构建准确可靠的 PIs 并非没有挑战:

  • 假设敏感性:PIs 可能对关于数据分布的潜在假设敏感,错误的假设可能导致误导性的区间。

  • 覆盖范围与宽度权衡:实现正确的覆盖概率(95%)往往与希望获得狭窄区间的愿望相竞争。较宽的区间可能覆盖所需的观测值百分比,但可能需要提供更多信息。

  • 计算复杂性:一些构建 PIs 的方法可能计算密集,尤其是在大型数据集或复杂模型中。

PIs 是预测应用中不确定性量化(UQ)的核心,提供了对前景的更全面视角。它们支持战略决策,使模型评估成为可能,并促进对不确定性的有效沟通。理解 PIs 的概念和实践对于任何使用预测模型的人来说都是必不可少的,它提供了一种导航和利用预测未来结果固有不确定性的手段。

虽然 PIs 提供了无价的见解,但构建准确且信息丰富的区间并不总是那么简单,正如我们所看到的。然而,几十年的研究产生了各种技术来应对这些挑战。

生成 PIs 的各种方法

PIs 是预测中的基本工具,使从业者能够了解未来观测值可能落在的范围。已经开发出各种方法来生成这些区间,每种方法都有其优点、应用和挑战。本节将探讨创建 PIs 最突出的技术。

参数方法

参数方法对预测误差的分布做出具体假设以推导 PIs。这一类别中的一些标准技术如下:

  • 正态分布假设:通过假设预测误差遵循正态分布,我们可以根据正态分布的标准误差和临界值计算对称的 PIs。

  • 时间序列模型:例如 ARIMA 和指数平滑等模型可以通过对潜在随机过程建模并使用估计的参数来生成预测区间(PIs)。

  • 广义线性模型(GLMs):GLMs 将线性模型扩展到非正态分布,从而允许更灵活地构建 PIs。GLMs 将线性回归扩展到除了正态分布以外的响应变量。GLMs 使我们能够对具有非正态响应的数据进行建模,例如二元、计数或分类结果。与线性模型一样,GLMs 通过链接函数和线性预测器将均值响应与解释变量相关联。然而,响应分布可以是非正态的,通过指数族对数似然函数进行处理。以下是 GLMs 的一些常见示例:

    • 二元分类的逻辑回归(logit 链接,二项分布)

    • 泊松回归用于计数数据(log 链接,泊松分布)

    • 多项式回归用于分类响应(logit 链接,多项分布)

GLMs 估计每个特征的系数,就像普通线性回归一样。然而,通过扩展响应分布和链接函数,它们可以模拟回归式预测所需的非正态过程,目标是非连续的。

它们的灵活性使 GLMs 在构建比标准线性回归更广泛的问题的 PIs 时非常有用。这些区间包含了建模的响应分布。

非参数方法

非参数方法旨在构建 PI,而不对预测误差的分布做出严格假设。这一类别中的一些基本技术如下:

  • 自助法:自助法涉及对观测数据进行重采样并估计预测的分布,从而可以推导出 PI

  • 分位数回归:这种方法直接对响应变量的分位数进行建模,使得在无需特定分布假设的情况下构建 PI 成为可能

  • 经验分位数:使用历史和经验分位数,我们可以构建无需参数假设的 PI

贝叶斯方法

贝叶斯统计框架通过明确建模不同来源的不确定性,提供了一种生成 PI 的概率方法。贝叶斯 PI 构建的两个关键技术如下:

  • 贝叶斯预测模型:贝叶斯模型提供了一个概率框架,该框架捕捉了参数和预测中的不确定性,允许从后验分布中直接计算 PI

  • 蒙特卡洛马尔可夫链(MCMC)采样:MCMC 采样可以用来模拟贝叶斯模型的后验分布,从而能够构建 PI

机器学习方法

现代机器学习模型的灵活性为以数据驱动的方式生成 PI 提供了新的机会。通过利用针对这些高度复杂和非线性模型量身定制的技巧,可以在不严格假设分布的情况下获得有效的 PI。让我们来看看一些机器学习方法:

  • 集成方法:如随机森林和梯度提升机等技术可以通过使用单个集成成员的预测分布来创建 PI

  • 神经网络分位数回归:神经网络可以被训练来预测特定的分位数,这构成了 PI 的基础

  • dropout 作为贝叶斯近似:在深度学习中,dropout 可以近似贝叶斯推理,从而允许进行不确定性量化(UQ)和 PI 构建

一致性预测

作为一种非参数、无分布框架,一致性预测可以与各种建模方法相结合以生成 PI。本章主要讨论使用一致性预测方法为时间序列预测模型生成 PI。

生成预测区间(PIs)是一个多方面的过程,针对不同的数据类型、模型和需求,有多种方法。从传统的统计方法到前沿的机器学习技术以及一致性预测,PI 构建领域丰富多彩。了解这些方法使从业者能够为他们的预测应用选择最合适的方法,在准确性、可解释性、计算效率和其他考虑因素之间取得平衡。无论是严格遵循参数假设还是探索灵活的非参数技术,这些方法都能为预测中固有的不确定性提供有价值的见解。

符合预测,一个用于生成点预测模型 PI 的稳健框架,已被广泛应用于时间序列和预测应用中。许多研究记录了各种符合预测模型在时间序列预测中的演变和流行。

时间序列和预测的符合预测

为时间序列预测创建可靠的 PI 一直是一个长期而复杂的挑战,直到符合预测的出现才得以解决。

这个问题在 2018 年 M4 预测竞赛中被强调,该竞赛要求参与者提供 PI 和点估计。

在题为《M4 竞赛中预测区间的结合》的研究论文中(www.sciencedirect.com/science/article/abs/pii/S0169207019301141),达登商学院的 Yael Grushka-Cockayne 和哈佛商学院的 Victor Richmond R. Jose 仔细审查了 20 个区间提交。他们评估了预测的校准和精度,并衡量了它们在不同时间跨度上的表现。他们的分析得出结论,提交的预测在准确估计不确定性方面是无效的。

集成批量 PI(EnbPIs)

由乔治亚理工学院的研究员陈旭和谢耀撰写的《动态时间序列的符合预测区间》(proceedings.mlr.press/v139/xu21h/xu21h.pdf),是第一篇将符合预测应用于时间序列预测的论文,并在 2021 年的著名会议 ICML 上展出。

EnbPI 是目前时间序列预测中符合预测最流行的实现之一。它已被实现于流行的开源符合预测库,如 MAPIE、Amazon Fortuna 和 PUNCC。

该研究介绍了一种为动态时间序列数据创建不受任何特定分布限制的 PI 的技术。EnbPI 方法包括一个自举集成估计器来制定顺序 PI。与需要数据可交换性的经典符合预测方法不同,EnbPI 不需要数据可交换性,并且专门为时间序列构建。

数据可交换性假设表明,数据集中观测值出现的顺序并不重要。然而,这个假设并不适用于时间序列,其中数据点的顺序至关重要。EnbPI 不依赖于数据可交换性,因此非常适合时间序列分析。

EnbPI 生成的 PI 在强混合随机误差的温和假设下,对于广泛的回归函数和时间序列具有有限样本、近似有效的边缘覆盖。此外,EnbPI 计算效率高,通过不需要数据拆分或训练多个集成估计器来避免过拟合。它还可以按顺序生成任意数量的 PI,非常适合广泛的回归函数。

时间序列数据是动态的,通常是非平稳的,这意味着统计属性会随时间变化。虽然存在各种用于预测时间序列的回归函数,例如使用提升树或神经网络结构的函数,但这些现有方法通常需要帮助构建准确的 PIs。通常,它们只能通过在时间序列的潜在分布上施加限制性假设来创建可靠的区间,这可能只有时是适当或可行的。

下面是构建 EnbPI 预测器的步骤简化版:

  1. 选择 bootstrap 集成估计器:任何 bootstrap 集成估计器都可以与 EnbPI 一起使用。

  2. 训练集成估计器:基础预测模型在从原始训练数据中抽取的不同 bootstrap 样本上多次训练,以生成集成。每个 bootstrap 样本是通过从训练集中有放回地采样创建的。这导致了一个具有略微不同训练数据的模型集成。

  3. 计算残差:对于 t = 1,…,T 中的每个点,使用未使用点t进行训练的集成估计器计算残差。目的是使用样本外误差作为非一致性度量,以指示预测的方差。所有这些样本外误差都被编译成一个单一的数组。

  4. 生成预测:集成估计器为测试数据生成点预测。

  5. 构建 PIs:PIs 是通过使用集成估计器的预测和选定的显著性水平构建的。像许多其他一致性预测方法一样,可以将指定置信水平的分位数应用于在步骤 3中创建的样本外误差分布。然后,使用训练的集成估计器生成的聚合点预测应用分位数值来创建 PIs。

为了展示 EnbPI 的实际应用,我们将使用 Amazon Fortuna (aws-fortuna.readthedocs.io/en/latest/index.html) 并遵循其示例,使用 EnbPI 进行时间序列回归,一种一致性预测方法 (aws-fortuna.readthedocs.io/en/latest/examples/enbpi_ts_regression.html)。您可以在本书的 GitHub 仓库中找到 Jupyter 笔记本,Chapter_08_EnbPI_ipynb.ipynbgithub.com/PacktPublishing/Practical-Guide-to-Applied-Conformal-Prediction/blob/main/Chapter_08_EnbPI.ipynb。让我们开始吧:

  1. 首先,我们将使用pip install安装 Amazon Fortuna:

    !pip install aws-fortuna
    
  2. 我们将使用 scikit-learn 上可用的Bike sharing demand数据集:

    from sklearn.datasets import fetch_openml
    
    bike_sharing = fetch_openml("Bike_Sharing_Demand", version=2, as_frame=True, parser="pandas")
    
  3. 让我们检查数据集标题:

图 8.1 – 自行车共享需求数据集

图 8.1 – 自行车共享需求数据集

数据集包含有关共享单车租赁的信息,包括温度、湿度和风速等附加信息。问题要求预测以租用自行车数量表示的共享单车需求。

  1. 我们可以按星期几和小时分组计算需求,并使用以下图表展示结果:

图 8.2 – 一周内平均每小时自行车需求

图 8.2 – 一周内平均每小时自行车需求

EnbPI 需要数据预取样 – 也就是说,对时间序列进行带替换的随机子集采样,并为每个样本训练一个模型。

  1. 我们可以测试DataFrameBootstrapper类,并查看预取样数据样本的示例。例如,第一个预取样样本看起来是这样的:

图 8.3 – 预取样样本的示例

图 8.3 – 预取样样本的示例

  1. 我们可以检查这个预取样样本中的重复项 – 由于预取样是带替换的,正如预期的那样,我们可以看到在预取样过程中一些对象被重复了:

图 8.4 – 预取样样本中的重复对象

图 8.4 – 预取样样本中的重复对象

  1. 我们现在可以为每个预取样样本训练模型。为了评估一致 PI,我们可以计算覆盖概率,这衡量了落在生成的区间内的测试观察值的百分比,并检查包含点预测的区间比例。

  2. 最终,我们评估了一致区间的维度,在这个没有在线反馈的场景中,EnbPI 假设所有区间都是均匀的。

    包含实际目标的区间百分比是0.95,而一致区间的尺寸是0.4446

使用 EnbPI,我们根据用户定义的 0.95 置信度创建了 PI。与大多数其他 UQ 方法不同,这些方法往往无法满足用户指定的置信水平,一致预测满足用户要求。它始终生成与用户定义的置信水平一致的 PI。

让我们绘制预测图:

图 8.5 – 使用 EnbPI 的预测

图 8.5 – 使用 EnbPI 的预测

EnbPI 模型擅长避免过拟合,确保计算效率,并且可以扩展以顺序产生多个 PI。在实践中,EnbPI 模型根据用户定义的置信水平创建 PI,确保其预测的可靠性。我们提供了使用 Amazon Fortuna 和来自 scikit-learn 的共享单车需求数据集的实用示例,展示了模型准确评估预测区间覆盖概率(PICP)和一致区间大小的能力。

NeuralProphet

NeuralProphet 是一个基于 PyTorch 的预测框架,它将传统方法的可解释性与深度学习模型的可扩展性相结合。它使用标准的深度学习技术进行训练,并为各种预测应用提供准确且可解释的结果。

该框架通过自回归和协变量模块引入局部上下文,这些模块可以设置为经典线性回归或神经网络。这使得 NeuralProphet 能够处理短期预测,同时捕捉变量之间的复杂非线性关系。自回归模块模型化目标变量对其过去值的依赖性,而协变量模块解决其对其他已知变量的依赖性。

NeuralProphet 被设计成用户友好,为初学者提供可靠的默认值和自动超参数,同时允许经验丰富的用户通过可选的模型定制输入领域知识。作为 Facebook Prophet 的继任者,它保留了基础组件,但提高了精度和可扩展性。

NeuralProphet 的基本模型组件包括趋势、季节性、节假日、自回归和协变量模块。这些加性组件可以通过趋势进行缩放以产生乘性效应。每个模块都有其输入和建模过程,但所有模块都必须产生 h 个输出,其中 h 是一次预测到未来的步数。

NeuralProphet 将符合预测技术纳入其预测工作流程,具体采用归纳(分割)符合预测ICP)方法。关键步骤如下:

  1. NeuralProphet 使用这些数据来创建一个初始的预测区间(PI)。

  2. NeuralProphet 通过比较实际的目标变量值与预测输出,评估其预测的准确性。

  3. NeuralProphet 测量其预测中的不确定性。这是一个关键步骤,因为理解这种方差对于生成精确的预测区间是至关重要的。

  4. NeuralProphet 公式化最终的预测区间。此区间提供了一个范围,其中实际的未来值预计将在此范围内,具有预定义的置信水平。

NeuralProphet 将符合预测方法集成到其预测工作流程中,特别是采用 ICP 策略。这种方法能够为模型预测创建统计上稳健的不确定性集或区间,增强其可靠性和置信度。

让我们看看 NeuralProphet 在符合预测框架内用于建立预测区间的两种方法:

  • NeuralProphet为每个实例提供一个单独的输出,作为点估计,基于 50%分位数回归计算。NeuralProphet对象需要至少一个上分位数和下分位数对作为参数来创建置信区间。例如,对于实际值有 90%的概率落在估计区间内,置信水平设置为 0.9,定义两个分位数在 0.05 和 0.95,对应于预测分布的第 5 个和第 95 个分位数。

  • NeuralProphet模型,可以使用conformal_predict方法来生成符合性预测。NeuralProphet使用两种不确定性量化(UQ)的变体——朴素符合性预测和符合性分位数回归CQR),我们在第七章中讨论过。

为了展示NeuralProphet如何使用符合性预测创建置信区间,我们将遵循 github.com/PacktPublis… 中的笔记本,该笔记本基于NeuralProphet教程中的 UQ(neuralprophet.com/how-to-guides/feature-guides/uncertainty_quantification.html)。

该数据集使用旧金山医院电力负荷数据集的电力负荷数据(github.com/ourownstory/neuralprophet-data)。

让我们看看数据集的标题:

图 8.6 – 旧金山医院负荷数据集

图 8.6 – 旧金山医院负荷数据集

NeuralProphet需要以特定格式提供数据,其中包含名为ds的时间列和名为y的时间序列值。

让我们创建一个NeuralProphet对象,指定 0 到 1 之间的数据分割比率:

m = NeuralProphet()
train_df, test_df = m.split_df(df, freq="H", valid_p=1.0 / 16)

默认情况下,NeuralProphet的预测提供单一输出:每个实例的点估计。此估计是从 50%分位数回归中得出的。NeuralProphet对象需要至少一个上分位数和下分位数对作为其参数以建立置信区间。然而,在NeuralProphet模型中,我们可以根据需要定义多个分位数。

例如,假设我们想要使用 90%置信区间来预测医院的电力负荷。我们希望 90%的实际值落在生成的区间内。

我们可以训练一个分位数回归模型来预测三个分位数——第 5 个、第 50 个和第 95 个分位数。第 5 个和第 95 个分位数将提供 90%置信区间的下限和上限。第 50 个分位数将提供中位数预测点:

confidence_lv = 0.9
quantile_list = [round(((1 - confidence_lv) / 2), 2), round((confidence_lv + (1 - confidence_lv) / 2), 2)]
qr_model = NeuralProphet(quantiles=quantile_list)
qr_model.set_plotting_backend("plotly-static")

分位数回归在NeuralProphet中用于生成置信区间。它使用一个称为 pinball loss(也称为分位数损失)的专用损失函数来训练模型。

与简单的误差最小化不同,弹珠损失函数根据分位数不对称地加权误差。对于像 90%这样的上分位数,低估比高估受到更重的惩罚。对于像 10%这样的下分位数,情况正好相反。

这与分位数的内在含义相匹配 – 90%表示我们预计 90%的实际值将低于预测值。因此,实际值超过预测值的误差违反了这一点。

通过在训练过程中最小化不对称的弹珠损失,模型学习到反映实际值根据数据落在上方或下方的适当概率的分位数线。然后上下分位数形成预测区间。

现在,我们可以拟合模型并创建一个包含结果的 DataFrame,预测 30 个周期:

metrics = qr_model.fit(df, freq="H")
future = qr_model.make_future_dataframe(df, periods=30, n_historic_predictions=100)
forecast = qr_model.predict(df=future)

我们可以使用图表来可视化分位数回归的预测区间。实线表示中位数预测,而阴影区域表示下分位数线和上分位数线之间的区间。这代表在指定的置信水平下预期包含实际值的范围:

图 8.7 – 使用分位数回归预测医院电力负荷

图 8.7 – 使用分位数回归预测医院电力负荷

总结来说,分位数回归允许 NeuralProphet 通过训练模型来预测作为区间边界的分位数来生成预测区间(PI)。弹珠损失函数使得基于分位数的不确定性量化(UQ)成为可能。

分位数回归依赖于建模假设,并需要指定感兴趣的分位数。接下来,我们将探讨 NeuralProphet 如何使用符合预测技术产生无分布的预测区间(PI)。

NeuralProphet 中的符合预测

NeuralProphet 采用拆分符合预测方法。这种方法需要保留一个或校准集。为了执行拆分符合预测,数据集必须分为三个集合:训练集、校准集和测试集。使用训练数据集训练的模型建立初始 PI。然后通过比较校准集的目标变量与预测值来评估不确定性。这种量化的不确定性随后被纳入预测值的两端,形成最终的符合预测区间。

NeuralProphet 中,您可以选择基于绝对残差的朴素方法或 CQR 进行符合预测。

使用数据拆分函数添加一个校准集:

train_df, cal_df = m.split_df(train_df, freq="H", valid_p=1.0 / 11)

您可以构建任何您认为合适的 NeuralProphet 模型作为基础模型。符合预测中的校准过程将随后添加到基础模型中,以量化最终估计中的不确定性。我们感兴趣的是了解符合预测如何影响不同的模型。

在我们的例子中,我们将比较简单分位数回归和复杂四层自回归模型在我们的图示中的符合预测结果。

我们将指定 72 小时作为滞后时间,并创建一个简单的分位数回归模型作为基础模型 1。我们还将创建一个四层自回归模型作为基础模型 2:

n_lags = 3 * 24
cp_model1 = NeuralProphet(quantiles=quantile_list)
cp_model1.set_plotting_backend("plotly-static")
cp_model2 = NeuralProphet(
    yearly_seasonality=False,
    weekly_seasonality=False,
    daily_seasonality=False,
    n_lags=n_lags,
    ar_layers=[32, 32, 32, 32],
    learning_rate=0.003,
    quantiles=quantile_list,
)
cp_model2.set_plotting_backend("plotly-static")

在配置模型后,我们必须使用训练集拟合模型。假设您已经将训练数据集进一步分为训练集和验证集。在这种情况下,您可以将两个数据集连接为一个数据集进行训练,或者将训练集和验证集作为两个单独的参数分配。

将配置的 NeuralProphet 模型中的训练子集输入。然后,通过将 H 分配给 freq 参数来配置每小时频率:

set_random_seed(0)
metrics1 = cp_model1.fit(train_df, freq="H")
set_random_seed(0)
metrics2 = cp_model2.fit(train_df, freq="H")

让我们使用拟合的基础模型来预测测试数据集的点预测和分位数回归 PI:

forecast1 = cp_model1.predict(test_df)[n_lags:]
forecast2 = cp_model2.predict(test_df)[n_lags:]

选项 1 – 天真一致性预测

在训练基础模型后,我们可以使用天真模块进行校准过程。步骤如下:

  1. 预测校准集中实例的输出值。

  2. 通过比较校准集中每个观测值的实际值和预测值来计算绝对残差。

  3. 将所有残差按升序排序。

  4. 使用所需置信水平找到绝对残差分布的分位数。

  5. 使用绝对残差的分布的分位数来制作最终的 PIs。

返回到我们的例子,我们需要在预训练模型之上表示校准集的参数值和一致性预测的显著性水平(α):

Method = ""aïve"
alpha–= 1 - confidence_lv

我们现在可以使用预训练模型启用一致性预测。

naïve_forecast1 = cp_model1.conformal_predict(
    test_df,
    calibration_df=cal_df,
    alpha=alpha,
    method=method,
    plotting_backend="plotly-static",
    show_all_PI=naïvee,
)
naive_forecast2 = cp_model2.conformal_predict(
    test_df,
    calibration_df=cal_df,
    alpha=alpha,
    method=method,
    plotting_backend""plotly-static",
    show_all_PI=True,
)

NeuralProphet 可以绘制单侧区间宽度与所选置信水平的关系图:

图 8.8 – 单侧区间宽度与置信水平的关系

图 8.8 – 单侧区间宽度与置信水平的关系

此图展示了 PI 的宽度如何随着不同的置信水平(1-α)而变化。

选项 2 – CQR

CQR 在 CQR 模块中按以下方式运行:

  1. 非一致性分数是校准数据集中的数据点与其最近的预测分位数之间的差异。这些分数提供了对数据与现有分位数回归模型拟合程度的洞察。位于分位数回归区间内的数据点产生负的非一致性分数,而位于区间外的数据点产生正分数。

  2. 非一致性分数随后按顺序组织。

  3. α 值被确定,使得大于 α 的分数中的一部分与错误率相匹配。

  4. α 量调整回归模型的分位数。

根据α的值,CQR 模型可以有两种解释方式。

当单侧 PI 宽度调整值为正时,CQR 超出 QR 间隔。这表明 CQR 认为 QR 间隔过于自信。

另一方面,如果调整值为负,CQR 会缩小 QR 间隔,这表明 QR 间隔可能过于谨慎。

我们可以使用以下代码运行 CQR 选项:

method = "cqr"
cqr_forecast1 = cp_model1.conformal_predict(
    test_df, calibration_df=cal_df, alpha=alpha, method=method, plotting_backend="plotly-static"
)
cqr_forecast2 = cp_model2.conformal_predict(
    test_df, calibration_df=cal_df, alpha=alpha, method=method, plotting_backend="plotly-static"
)

再次,我们可以绘制 PI 来检查这种 CQR 方法如何影响结果:

图 8.9 – 使用分位数回归预测医院电力负荷(CQR 选项)

图 8.9 – 使用分位数回归预测医院电力负荷(CQR 选项)

我们可以看到,NeuralProphet使用cqr选项进行一致性预测,已经产生了优秀的 PI。

现在,让我们学习如何通过比较我们使用的各种不确定性量化方法来评估性能并获得一些见解。

我们使用区间宽度和误覆盖率作为性能指标:

  • interval_width: 这是平均 PI,或q_hat,乘以二,因为它是不变的或非自适应的;这也被称为效率指标

  • miscoverage_rate: 这是在 OOS 测试集上的实际误覆盖错误率;这也被称为有效性指标

让我们评估我们之前训练的模型。根据笔记本中的结果,我们得出以下结论:

  • 分位数回归无法提供所需的覆盖范围

  • 基础模型越复杂,其准确性就越高,因此 CP 区间的区间宽度就越低

  • 对于默认模型,CQR 输出的 PI 宽度比朴素方法窄

使用 Nixtla 进行一致性预测

我们将使用位于 github.com/PacktPublis… 的笔记本来说明如何使用一致性预测为流行的统计和计量经济学模型创建 PI。

我们将使用 M4 竞赛的小时数据集:

  1. 首先,让我们安装 Nixtla 的statsforecast:

    !pip install git+https://github.com/Nixtla/statsforecast.git
    
  2. 然后,我们必须导入必要的模块,包括特别是 Nixtla 的模块:

    from statsforecast.models import SeasonalExponentialSmoothing, ADIDA, and ARIMA
    
    from statsforecast.utils import ConformalIntervals
    
    import matplotlib.pyplot as plt
    
    from statsforecast.models import (
    
        AutoETS,
    
        HistoricAverage,
    
        Naive,
    
        RandomWalkWithDrift,
    
        SeasonalNaive
    
    )
    
  3. 接下来,我们必须加载训练和测试数据集:

    train = pd.read_csv('https://auto-arima-results.s3.amazonaws.com/M4-Hourly.csv')
    
    test = pd.read_csv('https://auto-arima-results.s3.amazonaws.com/M4-Hourly-test.csv'
    
  4. 让我们看看数据集的结构。类似于NeuralProphetstatsforecast要求列以特定的方式命名:

图 8.10 – M4 竞赛的小时数据集

图 8.10 – M4 竞赛的小时数据集

  1. 我们现在可以训练模型了;我们将只使用数据集的前八个序列来减少总计算时间:

    n_series = 8
    
    uids = train['unique_id'].unique()[:n_series]
    
    train = train.query('unique_id in @uids')test = test.query('unique_id in @uids')
    StatsForecast.plot(train, test, plot_random = False)
    

    我们将得到以下输出:

图 8.11 – M4 竞赛的小时序列

图 8.11 – M4 竞赛的小时序列

  1. 让我们创建一个模型和实例化参数的列表。为了使用这些模型,我们需要从statsforecast.models导入它们,然后实例化它们。鉴于我们处理的是小时数据,我们需要在需要此参数的模型中设置seasonal_length=24

    models = [
    
        AutoETS(season_length=24),
    
        HistoricAverage(),
    
        Naive(),
    
        RandomWalkWithDrift(),
    
        SeasonalNaive(season_length=24)
    
    ]
    

    要实例化一个新的StatsForecast对象,我们需要以下参数:

    • df: 包含训练数据的 DataFrame。

    • models: 在上一步定义的模型列表。

    • freq: 一个表示数据频率的字符串。请参阅 pandas 的可用频率。

    • n_jobs:一个表示并行处理中使用的作业数量的整数。使用-1选择所有核心:

      sf = StatsForecast(
      
          df=train,
      
          models=models,
      
          freq='H',
      
          n_jobs=-1
      
      )
      
  2. 现在,我们已经准备好生成点预测和预测区间。为此,我们将使用预测方法,该方法接受两个参数:

    • h:一个表示预测范围的整数。在这种情况下,我们将预测接下来的 48 小时。

    • level:一个包含预测区间置信水平的浮点数列表。例如,level=[95]意味着值范围应该包含实际未来值,概率为 95%:

      levels = [80, 90, 95, 99] # confidence levels of the prediction intervals
      
      forecasts = sf.forecast(h=48, level=levels)
      
      forecasts = forecasts.reset_index()
      
      forecasts.head()
      
  3. 现在,我们可以绘制预测区间:

    sf.plot(train, test, plot_random = False, models=['SeasonalNaive'], level=levels)
    

    下面是这个的图表:

图 8.12 – 使用季节性朴素基准预测每小时序列

图 8.12 – 使用季节性朴素基准预测每小时序列

多分位数损失和统计模型可以提供预测区间(PIs)。然而,问题是这些(预测区间)未校准,这意味着实际观测值落在区间内的频率与其置信水平不一致。例如,一个校准的 95%预测区间应该在实际重复抽样中有 95%的时间包含实际值。另一方面,一个未校准的 95%预测区间可能只有 80%或 99%的时间包含真实值。在前一种情况下,区间太窄,低估了不确定性;而在后一种情况下,区间太宽,高估了不确定性。

统计方法也经常假设正态性。在这里,我们使用一致性预测校准了统计模型生成的预测区间。一致性预测区间使用交叉验证在点预测模型上生成区间。不需要先验概率,输出是校准良好的。不需要额外的训练,模型被视为黑盒。这种方法与任何模型兼容。Statsforecast现在支持所有可用模型的一致性预测。

StatsForecast可以高效地对不同的时间序列训练多个模型。这些模型可以生成概率预测,产生点预测和预测区间。在这个例子中,我们将使用SimpleExponentialSmoothing和 ADIDA(一个间歇性需求模型),这些模型本身不提供预测区间。因此,使用一致性预测生成预测区间是有意义的。我们还将展示如何使用 ARIMA 提供不假设正态性的预测区间。

要使用这些模型,我们首先需要从statsforecast.models导入它们,然后需要实例化它们,如下所示:

intervals = ConformalIntervals(h=24, n_windows=2)
models = [
   SeasonalExponentialSmoothing(season_length=24,alpha=0.1, prediction_intervals=intervals),
    ADIDA(prediction_intervals=intervals),
    ARIMA(order=(24,0,12), season_length=24, prediction_intervals=intervals),
]
sf = StatsForecast(
    df=train,
    models=models,
    freq='H',
)
levels = [80, 90] # confidence levels of the prediction intervals
forecasts = sf.forecast(h=24, level=levels)

让我们绘制使用一致性预测生成的 ARIMA 预测区间:

图 8.13 – 使用一致性预测生成的 ARIMA 预测区间

图 8.13 – 使用一致性预测生成的 ARIMA 预测区间

本节探讨了在几个流行的开源库中实现一致性预测用于时间序列预测的方法。

Amazon Fortuna 通过其 EnbPI 模块提供了共形预测功能。这使我们能够通过将任何集成模型与自助重采样包装起来来生成非参数 PI。我们看到了 EnbPI 如何利用集成来近似预测分布而不做假设。

Nixtla,一个用于时间序列建模的开源库,包括用于预测任务的共形预测函数。我们考察了其 CP 模块如何将任何底层模型转换为添加共形 PI。Nixtla 还支持在线共形预测以适应区间。

最后,NeuralProphet 本地集成了共形预测和分位数回归来量化不确定性。我们考察了其 ICP 方法,该方法使用校准集来细化初始区间。这在不依赖分布假设的情况下生成了有效的预测区域。

通过整合共形预测,这些库使得鲁棒且易于访问的不确定性量化(UQ)在 Python 中的时间序列预测者中变得可用。实现方式的多样性展示了共形预测作为一个模型无关框架的灵活性,它可以应用于任何预测方法。

摘要

本章教给你如何将共形预测应用于时间序列预测。共形预测是构建点预测模型预测区间(PIs)的一种强大技术。

本章还提供了如何利用开源平台来运用这一方法的见解。

我们从探索时间序列中的不确定性量化开始,深入探讨了预测区间的重要性,并展示了生成它们的各种策略。

共形预测的概念及其在预测场景中的应用是本章的核心。到这一点,你已经拥有了将这些方法应用于现实世界设置的知识,这将为你的预测模型提供精确的不确定性界限。将置信度度量添加到预测中确保了预测的准确性和可靠性。

对于时间序列的共形预测有了扎实的理解之后,我们现在将聚焦于另一个关键应用领域——计算机视觉。

第九章:计算机视觉中的一致性预测

在当今快节奏的世界里,计算机视觉已经超越了仅仅图像识别的范畴,成为众多现实应用中的基本基石。从在繁忙街道上导航的自动驾驶汽车到能够检测疾病早期迹象的医疗成像系统,对可靠且准确的计算机视觉模型的需求从未如此之高。然而,随着这些系统和它们应用的日益复杂,迫切需要一种能力来量化与它们预测相关的不确定性。

介绍一致性预测,这是一个开创性的框架,提供了一种稳健的方法来封装机器学习模型中固有的不确定性。虽然传统的计算机视觉模型通常只产生一个预测,但一致性预测的真正力量在于其提供一系列可能的输出,每个输出都附带一个置信水平。这为从业者提供了一个更明智、更细致的模型预测视角,使得在关键应用中部署更安全、更可靠的模型成为可能。

本章深入探讨了一致性预测与计算机视觉的结合。我们首先阐明在计算机视觉中量化不确定性的必要性,强调其在包括自动驾驶医疗诊断在内的现实场景中的重要性。随着我们进一步探索,我们将揭示现代深度学习模型的阿喀琉斯之踵:它们产生 错误的预测的倾向。

到旅程结束时,你将获得实际操作经验,构建融入一致性预测能力的最先进的计算机视觉分类器。我们将介绍并引导你通过计算机视觉应用中最佳的开放源代码一致性预测库,确保你拥有开始这段旅程所需的所有工具。

在本章中,我们将涵盖以下主要主题:

  • 计算机视觉中的不确定性量化

  • 为什么深度学习会产生错误的预测

  • 计算机视觉问题中量化不确定性的各种方法

  • 计算机视觉中的一致性预测

  • 使用一致性预测构建计算机视觉分类器

计算机视觉中的不确定性量化

作为一个领域,计算机视觉通过自动化曾经仅限于人类视觉和认知的复杂任务,已经改变了众多行业。计算机视觉模型已成为现代技术不可或缺的一部分,无论是检测道路上的行人,识别医学扫描中的潜在肿瘤,还是分析卫星图像进行环境研究。然而,随着对这些模型的依赖性增加,理解和量化与它们预测相关的不确定性的需求也在增长。

为什么不确定性很重要?

在深入探讨机制之前,了解为什么我们需要不确定性量化(UQ)本身是至关重要的。以下是一些原因:

  • 安全和可靠性:在关键应用中,如医学成像或自动驾驶,错误的预测可能带来严重的后果。了解预测的置信水平可以帮助决策,例如是否信任模型的预测或寻求人工干预。

  • 模型改进:不确定性测量可以提供关于模型可能不足的领域的见解,有助于指导数据收集和训练改进。

  • 可信度:知道一个系统承认其局限性,并能向最终用户和利益相关者提供置信区间或不确定性度量,使其更加可信。

在计算机视觉的世界中导航,不可避免地会遇到可能影响模型预测准确性的不确定性。但不确定性的来源是什么,它们可以被管理吗?让我们深入了解计算机视觉中的两种主要类型的不确定性。

计算机视觉中的不确定性类型

计算机视觉中的不确定性可以大致分为两类:

  • 随机不确定性:这种不确定性源于数据中的固有噪声。例如,低光照图像、模糊图像或从不同角度拍摄的图像引入了模型可能难以处理的变异性。随机不确定性通常是不可减少的,这意味着无论模型变得多好,由于观察中的固有噪声,这种不确定性始终存在。

  • 认知不确定性:这种不确定性源于模型本身。它可能是由于训练数据不完整、模型架构选择或优化过程造成的。只要有足够的数据或模型设计的改进,认知不确定性是可以降低的。

在计算机视觉领域,仅仅得到一个预测是不够的。尽管我们的模型很先进,但它们有时可能会过于自信,这可能导致错误的决策。我们如何衡量这些预测的可靠性?这就引入了不确定性量化(Uncertainty Quantification,UQ)的世界。

不确定性量化

现代计算机视觉模型,尤其是深度学习架构,产生的预测往往过于自信。这种误校准可能是误导性的,尤其是在关键应用中。因此,需要的不仅仅是产生预测,还要伴随一个置信度或不确定性的度量。

已经提出了各种方法来量化不确定性,从提供模型参数分布的贝叶斯神经网络,到依赖于不同模型预测变异性集成的集成方法。

然而,正如我们将在后续章节中看到的,符合预测为计算机视觉应用量身定制的不确定性量化提供了一种新颖而严谨的视角。

计算机视觉的不确定性量化并非理论练习,而是构建可靠、安全和值得信赖模型的关键方面。随着计算机视觉系统继续渗透到各个领域,理解和考虑其固有的不确定性将至关重要。

为什么深度学习会产生错误的预测?

ImageNet 大规模视觉识别挑战赛ILSVRC)是一个年度竞赛,研究团队在给定的数据集上评估他们的算法,旨在推动计算机视觉的边界。2012 年是该领域的分水岭,标志着深度学习在计算机视觉领域的主导地位发生了重大转变(www.image-net.org/challenges/LSVRC/2012/)。

在深度学习出现之前,计算机视觉主要依赖于手工设计的特征和传统的机器学习技术。例如尺度不变特征变换SIFT)、方向梯度直方图HOG)和加速鲁棒特征SURF)等算法常用于从图像中提取特征。然后,这些特征会被输入到机器学习分类器,如支持向量机SVM)进行预测。虽然这些方法取得了一定的成功,但在可扩展性和在更复杂的数据集上的性能方面存在重大局限性。

2012 年,由 Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 开发的一个名为 AlexNet 的深度卷积神经网络(en.wikipedia.org/wiki/AlexNet),被提交到 ILSVRC 竞赛中。它实现了 15.3%的顶级错误率,比第二名低 10.8 个百分点,这是一个显著的进步,是性能的逐步提升和质的飞跃。

为什么 AlexNet 具有革命性?

  • 深度架构:与当时其他网络相比,AlexNet 的深度要大得多。它有五个卷积层,后面跟着三个全连接层。这种深度使得它能够从 ImageNet 数据集中学习更复杂和层次化的特征。

  • GPU 训练:该团队利用图形处理单元GPU)来训练网络,这使得处理 ImageNet 数据集中的大量数据并高效训练深度架构成为可能。

  • ReLU 激活:与传统的 tanh 或 sigmoid 激活函数不同,AlexNet 采用了修正线性单元ReLU)激活。这一选择有助于解决梯度消失问题,使得训练更深层的网络成为可能。

  • Dropout:为了防止过拟合,AlexNet 引入了 dropout 技术,在训练过程中随机丢弃神经元子集,迫使网络学习冗余表示。

2012 年的黎明标志着计算机视觉领域的一个变革时刻。在 ImageNet 竞赛中 AlexNet 前所未有的成就的推动下,整个行业转向了深度学习,特别是卷积 神经网络CNNs)。随着我们穿越这场革命的余波,我们将见证研究的指数级增长、广泛的行业采用以及对更多数据和计算能力的不懈追求。

2012 年后 – 深度学习的兴起

2012 年的 ImageNet 竞赛,以 AlexNet 的胜利为标志,成为了计算机视觉领域的一个转折点。这次胜利凸显了深度学习的巨大潜力,特别是卷积神经网络CNNs)。因此,以下情况发生了:

  • 研究热潮:2012 年后,对计算机视觉深度学习的研究爆炸式增长。AlexNet 的变体和改进,如 VGG、GoogLeNet 和 ResNet,迅速开发出来,进一步推动了边界。

  • 行业采用:科技巨头和初创公司开始大量投资深度学习研究和应用,从面部识别系统到增强现实。

  • 数据集和计算资源:深度学习成功推动了更大数据集的创建和更强大计算基础设施的竞赛,进一步加速了创新周期。

2012 年的 ImageNet 竞赛是一个转折点,预示着计算机视觉深度学习时代的到来。AlexNet 的原则和突破为今天我们所看到的从自动驾驶汽车到实时视频分析等后续进步奠定了基础。

深度学习的“校准危机”——2017 年的转折点

自 2012 年 ImageNet 竞赛以来的辉煌上升之后,深度学习在许多领域经历了快速发展和广泛应用。社区连续五年专注于开发架构、优化技术和应用。然而,在这场创新的风暴中,一个重大的担忧却被很大程度上忽视了:深度学习系统产生的预测结果的不准确校准

在实际应用中,自动化系统驱动决策时,分类网络仅仅提供准确结果是不够的。这些系统在医疗保健到金融等各个关键领域发挥着至关重要的作用,任何误判都可能产生重大后果。因此,这些分类网络不仅需要提供精确的结果,还需要具备自我意识,以标记预测中潜在的不确定性或错误。

例如,在医疗诊断工具中,除了正确识别疾病外,系统还应指出其对诊断的置信水平。如果医疗专业人员不确定,可以采取适当的预防措施,例如寻求额外的测试或专家意见。

再举一个例子:一辆配备神经网络以识别道路上行人和各种障碍物的自动驾驶汽车。在这种情况下,汽车的系统不仅需要识别人或障碍物,而且必须准确且实时地做到这一点。任何延迟或误识别都可能导致潜在的危险情况。

此外,这不仅仅是关于检测障碍,还包括理解检测的确定性水平。想象一下这样的场景:自动驾驶汽车的检测网络难以自信地确定前方是否有障碍。如果汽车的系统对物体不确定——可能是由于照明条件差或视线受阻——它应该被编程为更多地依赖来自其其他传感器的数据,例如激光雷达或雷达,以决定是否需要制动,并谨慎行驶,减速或甚至停车。这种精确检测和自我意识其确定性水平的双重要求确保了更安全的导航和决策,尤其是在动态和不可预测的道路环境中。如果您想了解更多关于这个主题的细节,请参阅文章《自动驾驶的风险敏感决策》(uu.diva-portal.org/smash/get/diva2:1698692/FULLTEXT01.pdf)。

准确的置信度估计在增强模型可解释性方面发挥着关键作用。人类天生理解并能够与概率建立联系,这使得它成为衡量预测的一个直观指标。

当模型提供良好的校准置信水平时,它为用户提供了额外的信息层,增强了其可信度。这对于神经网络尤为重要,因为它们的决策过程可能复杂且难以解读。此外,可靠的概率评估可以集成到更广泛的概率模型中,进一步扩大其效用和应用范围。

这种准确性和内省的结合确保了自动化决策系统值得信赖且可靠,有助于增强其在关键应用中的集成信心。

校准误差指的是模型对其预测的置信度与实际预测准确度之间的差异。例如,如果一个模型声称对一组预测有 90%的置信度,人们预期大约 90%的预测是正确的。然而,尽管深度学习模型具有较高的准确率,但它们往往需要赶上其表达的置信度和实际正确性。

快进到今天,尽管与十年前相比,当代神经网络在准确性方面取得了显著进步,但值得注意的是,它们不再保持校准。

直到 2017 年,这个问题的重要性才被带到人工智能社区的关注焦点。一篇关键论文,《现代神经网络的校准》(Guo, 2017),(proceedings.mlr.press/v70/guo17a.html) 发现深度神经网络校准不佳,突显了深度学习系统中固有的校准难题。

这项研究不仅强调了这些系统的严重误校准,而且还揭示了惊人的发现:一些被誉为突破性的最先进技术,如 dropout、权重衰减和批量归一化,反而加剧了误校准问题。

这篇开创性的论文起到了警钟的作用。它促使社区进行反思,敦促研究人员质疑并重新审视他们所倡导的技术。这篇论文是对问题的批判和探索及纠正的邀请。它清晰的表达和深刻的洞察力使它成为该领域任何人的必读之作。

虽然 2012 年 ImageNet 竞赛之后的几年以快速进步和无拘无束的乐观为特征,但 2017 年的论文却是一个清算的时刻。它强调了科学中反思的重要性以及不断改进、重新校准和必要时重新思考我们方法的持续需求,以确保我们构建的人工智能系统是准确且可靠校准的。

置信度校准是预测表示实际结果的概率估计的问题。在许多应用中,这对于分类模型至关重要,因为良好的置信度估计可以为建立与用户的信任提供有价值的信息。良好的概率估计可用于模型可解释性,因为人类对概率有自然的认知直觉。

论文《现代神经网络的校准》的作者发现,模型容量增加和缺乏正则化与深度神经网络中观察到的误校准现象密切相关。在过去几年中,模型容量大幅增加,网络拥有数百或数千层,每层有数百个卷积滤波器。最近的研究表明,非常深或宽的模型可以比较小的模型更好地泛化,同时展现出轻松拟合训练集的能力。然而,这种增加的容量可能导致过拟合和误校准。

关于浅层经典神经网络,论文《现代神经网络的校准》提出,传统的(或浅层的)神经网络校准良好。这种信念源于 Niculescu-Mizil 和 R. Caruana 于 2005 年发表的一篇高度引用的论文,题为《使用监督学习预测良好的概率》(www.cs.cornell.edu/~alexn/papers/calibration.icml05.crc.rev3.pdf)。这篇论文在著名的 ICML 会议上发表,自发表以来已有超过 1,570 次引用。其中得出的一个结论是,浅层(经典)神经网络“校准良好”。

然而,关于浅层神经网络校准的结论后来被颠覆了。在一篇 2020 年的研究中,题为《传统神经网络是否校准良好?》(ieeexplore.ieee.org/document/8851962),作者们驳斥了浅层神经网络校准良好的广泛观点。他们的发现显示,传统的浅层网络校准不良,其集成也表现出同样的问题。幸运的是,研究人员还强调,使用我们在前几章中了解到的 Venn-ABERS 一致性预测方法可以显著提高这些网络的校准。

现代深度学习计算机视觉模型的过度自信

为计算机视觉设计的许多深度学习模型主要利用基于卷积的架构。这些架构推动了该领域的发展,实现了前所未有的预测准确性。然而,存在一个意想不到的副作用:这些模型经常产生 过度自信的预测

  • 准确性 versus 质量:深度学习对准确性的不懈追求导致了能够以非凡的精确度正确分类图像的模型。然而,准确性只是模型性能的一个方面。预测质量,包括预测的可靠性和校准等方面,同样至关重要。

  • 过度自信问题:尽管这些模型实现了更高的准确率,但它们在预测中往往过于自信。这意味着当它们犯错时,会以很高的信心做出预测,表明它们坚信错误的预测。

  • 在关键应用中的影响:这种过度自信带来了相当大的风险,尤其是在风险较高的领域。以医疗保健为例:一个分析医学扫描的计算机视觉系统如果做出误诊,并且有很高的信心,可能会导致医疗专业人员采取错误的治疗措施。同样,在自动驾驶汽车中,对道路场景过度自信的误解可能导致危险的操作。

从本质上讲,随着深度学习社区推动准确性的边界,也必须解决这些模型的校准问题。确保它们不仅做出准确的预测,而且适当地衡量这些预测的信心是至关重要的,尤其是在这些模型被用于生命攸关的应用时。

计算机视觉问题中量化不确定性的各种方法

在计算机视觉中量化不确定性对于确保基于视觉的系统可靠性和安全性至关重要,尤其是在部署在关键应用中时。多年来,已经开发出各种方法来处理和量化这种不确定性。以下是一些最显著的方法:

  • 贝叶斯神经网络BNNs):这些神经网络将权重视为概率分布而不是固定值。通过这样做,它们可以为它们的预测提供不确定性度量。在推理期间,通过不同的权重样本进行多次正向传递,产生一个捕获模型不确定性的输出分布。

  • 蒙特卡洛 dropout:蒙特卡洛 dropout 涉及在推理期间执行 dropout。通过多次运行具有 dropout 的网络并平均结果,可以得到一个输出分布,可以用来衡量不确定性。

  • 集成方法:集成方法涉及训练多个模型并汇总它们的预测。模型之间预测的方差可以用作不确定性的代理。这种方法在计算上很昂贵,但通常会导致更稳健的不确定性估计。

  • 深度高斯过程:深度高斯过程将深度学习与高斯过程相结合,提供了一种非参数估计不确定性的方法。它们提供了一种丰富的方式来捕捉复杂的不确定性,但对于大数据集来说可能在计算上具有挑战性。

  • 一致性预测:一致性预测为预测提供了一组可能的输出,每个输出都有一个置信水平。这种基于集合的预测方法旨在保证覆盖范围,这意味着实际结果将以等于置信水平的概率落在预测集合中。

  • 校准技术:虽然不是直接测量不确定性,但校准技术,如 Platt 缩放或温度缩放,确保预测的置信度得分反映了正确性的真实可能性。一个校准良好的模型的预测概率更具可解释性,可以用作不确定性的度量。

一致性预测在不确定性量化中的优越性

量化不确定性是构建稳健和可靠的机器学习模型的基础。多年来,已经出现了几种方法,每种方法都有其优点。然而,一致性预测脱颖而出,成为一个特别有吸引力的框架。让我们来解释一下原因:

  • 无分布框架:一致性预测最显著的特点之一是它不对数据的分布做出任何假设。许多不确定性量化方法基于某些概率假设或依赖于特定的数据分布才能有效运作。相比之下,一致性预测对这些考虑因素保持无偏见,使其具有通用性和广泛适用于各种数据集。

  • 理论保证:一致性预测为它的预测提供了稳健的理论保证。具体来说,它为预测提供了一组潜在的结果,并且每个结果都与一个置信水平相关联。该框架确保实际结果将以与置信水平相对应的概率落在预测集合内。这是一种强大的保证,尤其是在理解预测界限至关重要的关键应用中。

  • 模型独立性:一致性预测的另一个显著优势是其与底层模型的独立性。无论您是在使用简单的线性回归、复杂的深度学习架构还是任何其他模型,一致性预测都可以无缝应用。这种灵活性确保了实践者在寻求量化不确定性时对模型的选择是开放的。

  • 与数据集大小可扩展性:一致性预测对数据集的大小不敏感。无论是处理具有有限条目的小型数据集还是处理包含数百万数据点的庞大数据集,该框架都保持有效和可靠。这种可扩展性在数据可以从稀缺到极其丰富现代应用中特别有益。

虽然存在许多不确定性量化方法,但由于其无分布的特性、稳健的理论基础、模型独立性和可扩展性,一致性预测成为了一种领先的方法。对于寻求一种稳健且可靠的方法来评估其机器学习模型的不确定性的人来说,一致性预测提供了一个有吸引力的选择。

一致性预测在计算机视觉中的应用

在本节中,我们将深入探讨一致性预测在计算机视觉中的多样化应用。由于计算机视觉涵盖了从图像分类到目标检测的广泛问题,它提出了需要精确和可靠机器学习模型的挑战。在我们导航这些应用的过程中,我们将展示一致性预测是如何作为一种稳健的工具来量化与这些模型相关的不确定性的。

通过探索这些实际例子,我们旨在强调理解模型对其预测的置信度的重要性。理解至关重要,尤其是在基于这些预测的决策可能产生重大后果的情况下。具有提供不确定性度量能力的一致预测可以极大地帮助研究人员和实践者根据其模型输出做出明智的决策。这提高了系统的可靠性,并为计算机视觉中更透明和值得信赖的 AI 实现铺平了道路。

使用一致预测的图像分类器的不确定性集

在 2020 年,加州大学伯克利分校的研究人员发表了一篇题为《使用一致预测的图像分类器的不确定性集》(Uncertainty sets for image classifiers using Conformal Prediction)的论文(arxiv.org/abs/2009.14193)。

这是计算机视觉研究人员首次将一致预测应用于计算机视觉问题。论文描述了第一个专门为计算机视觉开发的一致预测方法 RAPS,它是当前图像分类的最新水平。

下面是论文中的关键点:

  • 论文提出了一种名为正则化自适应预测集(RAPS)的新方法,用于生成具有神经网络分类器保证达到所需覆盖水平的稳定预测集。

  • RAPS 通过正则化对不可能类别的噪声概率估计的影响,修改了现有的一致预测算法,以产生更小、更稳定的预测集。

  • RAPS 在 ImageNet 分类中使用 ResNet 和其他 CNN 模型进行评估。它在产生预测集的同时,实现了所需的覆盖水平,并且这些预测集的规模显著减小(比独立 Platt 缩放基线小 5 到 10 倍)。

  • 该方法在覆盖范围上满足理论保证,并被证明在选择固定大小集合时提供最佳性能。

  • RAPS 提供了一种从任何能够可靠量化不确定性和识别复杂测试示例的图像分类器中获取预测集的实用方法。作者建议在医学成像和主动学习等领域应用。

这里是 RAPS 算法工作原理的总结:

  1. 它使用预训练的图像分类器来计算校准集中图像的类别概率估计以及新测试图像的类别概率估计。

  2. 对于校准集中的每张图像,RAPS 计算一致性分数,记为 E j,如下所示:E j = ∑ i=1 k ′    ( ˆ π  (i)(x j) + λ1[i > k reg]). 这是通过将概率估计按降序排列来实现的。然后通过累积这些概率估计来计算分数,从最高开始,一直持续到(包括)图像实际类别的概率估计。计算过程如图 9**.1**所示。

  3. 高λ值起到阻止创建大于 k reg 的集合的威慑作用。

  4. 在归纳一致预测中,模型随后计算在校准集上计算的一致性分数的 1-α分位数。

  5. 输出 k*最高分数的类别,其中测试点的符合性分数 E test 大于或等于 1-α分位数。

下图说明了 RAPS 方法。该图来自 Anastasios N. Angelopoulos 的博客 使用一致预测的图像分类的不确定性集合 (Uncertainty Sets for Image Classifiers using Conformal Prediction):(people.eecs.berkeley.edu/~angelopoulos/blog/posts/conformal-classification/)。

图 9.1 – RAPS 方法的示意图(红线是为了达到精确覆盖率)

图 9.1 – RAPS 方法的示意图(红线是为了达到精确覆盖率)

参数λ和 k reg 由 RAPS 模型在校准集上估计。参数背后的直觉是,高λ值会阻止大于 k reg 的集合。

通过构造,这个预测集以至少 1-α的概率包含真实类别,其中α是期望的错误水平。正则化惩罚允许 RAPS 产生比以前的方法(如 Platt 缩放或未正则化的自适应方法)更小、更稳定的集合。

这种方法允许研究人员使用任何底层分类器,并产生确保满足指定错误率(如 90%)的预测集,同时保持最小的平均大小。其部署的简便性使其成为衡量图像分类器不确定性的有吸引力的自动化方法,这在医疗诊断、自动驾驶和筛选危险在线内容等领域至关重要。

总结来说,RAPS 利用一致预测的思想来保证覆盖率,修改一致分数以实现更小的集合,并使用保留数据正确校准程序。

使用一致预测构建计算机视觉分类器

让我们通过实际应用来说明一致预测在计算机视觉中的应用。我们将使用来自书籍存储库的笔记本,该存储库可在https://github.com/PacktPublishing/Practical-Guide-to-Applied-Conformal-Prediction/blob/main/Chapter_09.ipynb找到。这个笔记本广泛使用了 Anastasios Angelopolous 的 Conformal Prediction 仓库中的笔记本,github.com/aangelopoulos/conformal-prediction

加载数据后,设置问题和定义所需的覆盖率和校准集中的点数:

n_cal = 1000
alpha = 0.1

将 softmax 分数分为校准集和测试数据集,获得校准和测试标签:

idx = np.array([1] * n_cal + [0] * (smx.shape[0]-n_cal)) > 0
np.random.seed(42)
np.random.shuffle(idx)
cal_smx, test_smx = smx[idx,:], smx[~idx,:]
cal_labels, test_labels = labels[idx], labels[~idx]

测试数据集包含 49,000 个点,校准数据集包含 1,000 个点。这两个数据集都包括来自 ImageNet 数据集的图像和可读标签。

朴素符合预测

我们首先将探讨使用符合预测的朴素方法来生成预测集:

  • 为每个校准点计算一个非一致性分数

  • 然后,将评估校准分数的经验分位数。

这与我们之前章节中观察到的归纳符合预测非常相似。我们通过 hinge 损失确定非一致性分数,然后使用这些分数的分布来根据所需的覆盖范围计算分位数。这个过程,包括最终的样本校正公式,与我们的归纳符合预测方法类似:

cal_scores = 1-cal_smx[np.arange(n_cal),cal_labels]
q_level = np.ceil((n_cal+1)*(1-alpha))/n_cal
qhat = np.quantile(cal_scores, q_level, method='higher')

我们可以使用计算得到的非一致性分数的调整分位数来为测试集对象形成预测集:

prediction_sets = test_smx >= (1-qhat)

结果是一个显示预测集合的数组。这个布尔数组根据它持有的布尔值表示 ImageNet 类别。布尔值表示模型选择的类别,其中True表示选择了该类别,而False表示该类别不包括在预测集中。

图 9.2 – 测试集预测集的示意图

图 9.2 – 测试集预测集的示意图

我们可以计算经验覆盖度,它非常接近指定的 90%置信水平:

empirical_coverage = prediction_sets[np.arange(prediction_sets.shape[0]),test_labels].mean()
print(f"The empirical coverage is: {empirical_coverage}")

我们可以查看一些对象和预测集。

图 9.3 – 测试集中的对象,由符合预测的朴素变体产生的预测集标签为“宫殿”

图 9.3 – 测试集中的对象,由符合预测的朴素变体产生的预测集标签为“宫殿”

对于不确定性较高的对象,预测集中包含多个元素。

图 9.4 – 测试集中的对象,由符合预测的朴素变体产生的预测集为[‘慢炖锅’,‘数字时钟’]

图 9.4 – 测试集中的对象,由符合预测的朴素变体产生的预测集为[‘慢炖锅’,‘数字时钟’]

朴素方法存在两个显著问题:

  • 首先,CNN 生成的概率通常需要更准确,导致无法达到预期覆盖率的集合

  • 其次,对于模型缺乏信心的实例,朴素方法必须包含多个类别以达到所需的置信度阈值,从而导致集合过大

温度缩放并不是解决办法,因为它只调整主要类的分数,而校准剩余分数是一项艰巨的任务。有趣的是,即使所有分数都完美校准,朴素方法仍然无法达到覆盖范围。

开发了构建预测集的替代方法来解决这些问题,即自适应预测集APS)和正则化自适应预测集RAPS)。

自适应预测集(APS)

接下来,我们将查看 NeurIPS 焦点论文中描述的 APS,即 具有有效和自适应覆盖的分类(2000)(proceedings.neurips.cc/paper/2020/…

从本质上讲,APS 提出了一种简单的方法。它不是直接使用软化分数,而是根据校准数据集确定一个新的阈值。例如,如果具有 93% 预测概率的集合在校准集上产生 90% 的覆盖率,则采用 93% 的阈值。APS 是 RAPS 的特定实现,与朴素方法不同,它旨在实现精确的覆盖率。

然而,APS 面临一个实际障碍:其集合的平均大小显著较大。深度学习分类器在与排列困境作斗争:对于不太确定的类别,如排名第 10 到 1,000 的类别,它们的分数并不反映准确的概率估计。这些类别的排列很大程度上受到噪声的影响,促使 APS 选择庞大的集合,特别是对于复杂图像。

描述 APS 的代码如下:

# Get scores. calib_X.shape[0] == calib_Y.shape[0] == n
cal_pi = cal_smx.argsort(1)[:, ::-1]
cal_srt = np.take_along_axis(cal_smx, cal_pi, axis=1).cumsum(axis=1)
cal_scores = np.take_along_axis(cal_srt, cal_pi.argsort(axis=1), axis=1)[
    range(n_cal), cal_labels
]
# Get the score quantile
qhat = np.quantile(
    cal_scores, np.ceil((n_cal + 1) * (1 - alpha)) / n_cal, method="higher"
)
test_pi = test_smx.argsort(1)[:, ::-1]
test_srt = np.take_along_axis(test_smx, test_pi, axis=1).cumsum(axis=1)
prediction_sets = np.take_along_axis(test_srt <= qhat, test_pi.argsort(axis=1), axis=1)

让我们更详细地查看代码。它使用 APS 根据指定的分位数阈值生成预测集:

  1. cal_pi = cal_smx.argsort(1)[:, ::-1]: 这对每个实例的 cal_smx 软化分数进行降序排序,并返回排序值的索引。

  2. cal_srt = np.take_along_axis(cal_smx, cal_pi, axis=1).cumsum(axis=1): 对于每一行,它根据 cal_pi 的索引重新排列分数,然后计算沿列的累积和。

  3. cal_scores = np.take_along_axis(cal_srt, cal_pi.argsort(axis=1), axis=1)[range(n_cal), cal_labels]: 此步骤检索与真实标签 (cal_labels) 对应的特定分数。它首先将 cal_pi 的排序顺序反转以获取原始顺序,然后为每个实例选择与真实标签相关的分数。

  • qhat = np.quantile(cal_scores, np.ceil((n_cal + 1) * (1 - alpha)) / n_cal, method="higher"): 基于提供的 alpha 计算分位数值。此值将作为预测阶段的阈值。* test_pi = test_smx.argsort(1)[:, ::-1]: 类似地,对于测试集,它按降序对 test_smx 中的分数进行排序,并返回排序值的索引。* test_srt= np.take_along_axis(test_smx, test_pi, axis=1).cumsum(axis=1): 根据排序索引 test_pi 重新排列测试集分数,并计算累积和。* prediction_sets= np.take_along_axis(test_srt <= qhat, test_pi.argsort(axis=1), axis=1): 对于测试集中的每个实例,它确定哪些分数低于分位数阈值 qhat。然后,布尔数组 (test_srt <= qhat) 使用 test_pi.argsort(axis=1) 重新排列到其原始顺序,从而得到最终预测集,其中 True 条目表示包含在集合中。

本质上,此代码用于校准模型得分以定义一个阈值,然后使用此阈值为新(测试)数据集生成预测集。

我们可以查看一些由 APS 生成的对象和预测集。

图 9.5 – 测试集中的对象

图 9.5 – 测试集中的对象

不幸的是,正如前面提到的并在本例中演示的那样,APS 生成的预测集可能非常庞大。前一个例子生成了一个预测集:

['King Charles Spaniel', 'Rhodesian Ridgeback', 'Afghan Hound', 'Basset Hound', 'Bloodhound', 'Redbone Coonhound', 'Otterhound', 'Weimaraner', 'Irish Terrier', 'Norfolk Terrier', 'Norwich Terrier', 'Australian Terrier', 'Dandie Dinmont Terrier', 'Tibetan Terrier', 'Soft-coated Wheaten Terrier', 'Flat-Coated Retriever', 'Golden Retriever', 'Labrador Retriever', 'Vizsla', 'English Setter', 'Irish Setter', 'Gordon Setter', 'Clumber Spaniel', 'English Springer Spaniel', 'Welsh Springer Spaniel', 'Cocker Spaniels', 'Sussex Spaniel', 'Irish Water Spaniel', 'Briard', 'Bullmastiff', 'Leonberger', 'Newfoundland', 'Chow Chow', 'Miniature Poodle', 'Standard Poodle', 'lion', 'brown bear', 'grasshopper', 'leafhopper', 'doormat', 'handkerchief', 'maze', 'prayer rug', 'tennis ball', 'acorn'].

正则化自适应预测集(RAPS)

现在我们来实际操作 RAPS,它在本章前面的使用一致性预测的图像分类器的置信集部分中简要介绍过。

我们在以下代码块中设置了 RAPS 正则化参数(更大的lam_reg值和更小的k_reg值会导致集合更小)和正则化向量:

lam_reg = 0.01
k_reg = 5
disallow_zero_sets = False
rand = True
reg_vec = np.array(k_reg*[0,] + (smx.shape[1]-k_reg)*[lam_reg,])[None,:]

如前所述,我们计算非一致性得分并获取得分分位数:

cal_pi = cal_smx.argsort(1)[:,::-1];
cal_srt = np.take_along_axis(cal_smx,cal_pi,axis=1)
cal_srt_reg = cal_srt + reg_vec
cal_L = np.where(cal_pi == cal_labels[:,None])[1]
cal_scores = cal_srt_reg.cumsum(axis=1)[np.arange(n_cal),cal_L] - np.random.rand(n_cal)*cal_srt_reg[np.arange(n_cal),cal_L]
qhat = np.quantile(cal_scores, np.ceil((n_cal+1)*(1-alpha))/n_cal, method='higher')

我们可以使用以下代码在测试集上部署预测:

n_test = test_smx.shape[0]
test_pi = test_smx.argsort(1)[:,::-1]
test_srt = np.take_along_axis(test_smx,test_pi,axis=1)
test_srt_reg = test_srt + reg_vec
test_srt_reg_cumsum = test_srt_reg.cumsum(axis=1)
indicators = (test_srt_reg.cumsum(axis=1) - np.random.rand(n_test,1)*test_srt_reg) <= qhat if rand else test_srt_reg.cumsum(axis=1) -test_srt_reg <= qhat
if disallow_zero_sets: indicators[:,0] = True
prediction_sets = np.take_along_axis(indicators,test_pi.argsort(axis=1),axis=1)

让我们查看一些由 RAPS 生成的对象和预测集。

图 9.6 – 测试集中的对象;RAPS 生成的预测集为[‘electric ray’]

图 9.6 – 测试集中的对象;RAPS 生成的预测集为[‘electric ray’]

我们可以看到,对于不确定性较小的对象,RAPS 生成单元素预测集。与 APS 不同,RAPS 对于涉及更多不确定性的对象仍然生成相当节俭的预测集。

图 9.7 – 测试集中的对象;RAPS 生成的预测集为[‘red wolf’,‘coyote’,‘dhole’,‘gray fox’]

图 9.7 – 测试集中的对象;RAPS 生成的预测集为[‘red wolf’,‘coyote’,‘dhole’,‘gray fox’]

让我们总结本章内容。

摘要

在技术快速发展的领域,计算机视觉已经从单纯的图像识别转变为无数现实应用的重要组成部分。随着这些应用跨越多个领域,如自动驾驶汽车和医疗诊断,对计算机视觉模型提供准确和可靠预测的压力不断加大。随着这些模型日益复杂,一个迫切的需求随之而来:量化预测不确定性。

这就是一致性预测发光的地方。与通常只输出单一预测的传统模型不同,一致性预测提供了一系列可能的预测结果,每个结果都附带一个置信度度量。这种新颖的方法使用户能够获得对模型预测的详细视角,这对于精度至关重要的应用来说是无价的。

本章深入探讨了一致性预测与计算机视觉之间的共生关系。我们首先强调了不确定性量化在计算机视觉中的重要性,并引用了其在自动驾驶交通和医学成像等领域的关键作用。进一步地,我们揭示了当代深度学习模型的一个主要改进领域:它们倾向于提供失准的预测。

通过学习本章,您已经获得了制作融合一致性预测能力的尖端计算机视觉分类器的专业知识。此外,您还获得了使用针对计算机视觉定制的顶级开源一致性预测工具的经验,确保您为未来的努力做好了充分准备。

本章的关键成就包括掌握不确定性量化在计算机视觉中的作用,揭示深度学习预测失准的原因,探索测量计算机视觉任务中不确定性的多种策略,理解计算机视觉中一致性预测的基本原理和应用,以及掌握构建由一致性预测驱动的计算机视觉分类器。

在下一章中,我们将探索自然语言处理中的一致性预测世界,了解其重要性,并学习如何利用其力量进行更可靠和自信的预测。

第十章:自然语言处理的一致性预测

自然语言处理NLP)处理人类语言的复杂性,其中不确定性是一个固有的挑战。随着 NLP 模型成为风险敏感和关键应用的核心,确保其可靠性至关重要。一致性预测作为一种有前景的技术,提供了一种量化这些模型预测可信度的方法,尤其是在面对深度学习模型产生的误校准输出时。

在本章中,我们将探索 NLP 一致性预测的世界,了解其重要性,并学习如何利用其力量进行更可靠和自信的预测。

在本章中,我们将涵盖以下主要主题:

  • NLP 的不确定性量化

  • 为什么深度学习会产生误校准的预测

  • 量化 NLP 问题的各种方法

  • NLP 的一致性预测

  • 使用一致性预测构建 NLP 分类器

  • NLP 中用于一致性预测的开源工具

NLP 的不确定性量化

NLP 中的不确定性量化是模型开发和部署中一个基本但常常被忽视的方面。随着 NLP 模型越来越多地集成到关键应用中——从医疗诊断到金融预测——理解和传达其输出置信水平的需求变得至关重要。不确定性量化提供了一个评估预测可靠性的框架,使用户和开发者能够评估模型的决断力和依赖其结果可能存在的潜在风险。本节深入探讨了 NLP 中不确定性量化的重要性、方法和实际考虑,强调了它在构建稳健和可信的语言模型中的关键作用。

我们现在将探讨自然语言处理(NLP)中的不确定性以及量化 NLP 应用中不确定性的益处和挑战。

NLP 中的不确定性是什么?

自然语言处理(NLP)的核心是理解人类语言——一种以其丰富性、模糊性和多样性而闻名的媒介。语言使用中的固有可变性、由上下文驱动的含义以及语言结构不断演变的本质使得 NLP 任务本质上具有不确定性。例如,“银行”一词可能指金融机构或河流的一侧,这取决于上下文。

量化 NLP 中不确定性的益处

在 NLP 中量化不确定性不仅仅是一个理论练习;它具有以下实际益处:

  • 可信度:量化不确定性要么增强对特定预测的信心,要么突出需要谨慎的领域。

  • 性能评估:这通过检查其指标中的不确定性来评估各种模型的有效性。

  • 增强机会:它能够识别模型可以改进的领域,尤其是在主动学习等场景中。

  • 风险管理:通过理解预测的不确定性程度,利益相关者可以做出更明智的决策。例如,一个预测情感的自然语言处理模型可能对一条评论是积极的预测有 80%的确定性。了解这一点后,企业可能会优先处理模型确定性较低的评价。

  • 模型透明度:能够表达其不确定性的模型被认为更加透明和可信。模型的使用者可以更好地理解何时信任模型的输出,何时需要谨慎对待。

  • 模型训练:在训练阶段,理解高不确定性区域可以指导数据收集工作。如果一个模型对特定数据类型不确定,收集更多此类数据可以导致更稳健的训练。

自然语言处理中的不确定性挑战

尽管其重要性不言而喻,但在自然语言处理中管理不确定性具有挑战性。以下是原因之一:

  • 数据稀疏性:许多自然语言处理任务缺乏所有可能的语言变体的代表性数据,导致模型对较少见的数据点不确定。

  • 语言歧义:如前所述,根据上下文,单词可以有多种含义,这导致固有的不确定性。

  • 模型复杂性:深度学习等高级模型有时会像黑盒一样运作,这使得识别不确定性区域变得具有挑战性。

在构建稳健的自然语言处理(NLP)系统中,理解和量化不确定性变得至关重要。随着我们深入本章,我们将探讨一些技术,特别是一致性预测,这些技术提供了一种结构化的方法来直面这些挑战。

理解为什么深度学习会产生失准的预测

在快速发展的自然语言处理领域,深度学习在使机器以人类曾经独占的方式处理和生成语言方面发挥了关键作用。下一节将介绍深度学习的关键概念和里程碑,这些概念和里程碑对自然语言处理产生了重大影响。

自然语言处理中的深度学习简介

深度学习是机器学习的一个子集,它依赖于具有许多层的神经网络(因此称为“深度”)来分析各种数据因素。在自然语言处理的背景下,深度学习已经是一个颠覆性的变革,使机器以前所未有的准确性理解和生成人类语言:

  • 架构演变:这一旅程始于简单的架构,如前馈神经网络和循环神经网络RNNs)。后者能够记住过去的信息,在基于序列的任务(如语言翻译)中特别有影响力。后来,更先进的架构,如长短期记忆LSTM)和Transformer 模型,进一步提升了性能标准。

  • BERT 和 Transformer双向 Transformer 编码器表示BERT)的引入是一个重要的里程碑。BERT 通过分析单词的整个上下文(包括单词的左右两侧)在众多 NLP 任务中实现了最先进的成果。BERT 所基于的 Transformer 架构引入了注意力机制,允许模型关注输入文本的特定部分,就像人类在理解语言时关注特定单词一样。

  • 语言模型和大型语言模型大型语言模型LLMs)如生成预训练 TransformerGPT)及其迭代版本,如 ChatGPT,在 NLP 中设定了新的标准。这些模型拥有数十亿个参数,可以生成类似人类的文本,回答问题,甚至帮助进行创意写作。特别是 ChatGPT,在创建能够进行更自然和连贯交互的对话代理方面产生了重大影响。

  • 迁移学习和微调:这些发展的革命性方面之一是迁移学习的概念。例如 BERT 和 GPT 等模型在庞大的语料库上进行了预训练,并且可以在较小的数据集上针对特定任务进行微调。这种方法使得 NLP 中的深度学习民主化,允许资源有限的团队实现具有竞争力的成果。

随着这些进步,深度学习模型已成为许多现代 NLP 应用的基础,从聊天机器人到搜索引擎。然而,正如我们将在后续章节中探讨的,它们的复杂性和规模引入了挑战,尤其是在校准方面。

NLP 中深度学习预测的挑战

深度学习无疑提高了 NLP 的能力,但也带来了几个挑战和陷阱。在我们探索 NLP 中的深度学习领域时,我们必须意识到这些问题。一些显著挑战包括以下内容:

  • 模型过度自信:深度学习模型,鉴于其拟合复杂模式的能力,往往对其预测过度自信。例如,在情感分析中,一个模型可能会以 60%的置信度预测一段文本为正面,而实际上,由于措辞含糊,实际的置信度应该低得多。

  • 数据分布偏移:NLP 模型通常在特定的数据集上训练,可能没有接触到真实世界输入的全部语言多样性。当面对分布外的数据时,这些模型可能会产生校准不当的预测。

  • 缺乏显式的不确定性建模:传统的深度学习方法本身不建模不确定性。它们优化准确性,通常以可靠的不确定性估计为代价。

  • 复杂性和非线性:深度学习模型的复杂架构,特别是多层和非线性激活,有时会导致不可预测的行为,尤其是在处理边缘情况或罕见的语言结构时。

接下来,让我们探讨校准偏差的影响。

校准偏差的影响

NLP 模型中的校准偏差不仅仅是一个纯粹学术上的问题。在现实世界的应用中,它可能导致基于错误信息的决策、不恰当的信任,甚至可能产生有害的结果,尤其是在医疗保健、金融和法律系统等敏感领域:

  • 决策风险:过于自信的模型可能导致利益相关者基于误导性的自信做出决策,可能造成误解或策略上的缺陷。

  • 信任丧失:如果 NLP 系统频繁表达对错误预测的高度自信,用户可能会对它失去信心。

  • 资源错配:在自动化系统中,校准不当的模型可能会低效地优先处理任务,在人类干预更合适的情况下浪费计算资源。

认识到这些挑战是第一步。随着我们前进,我们将深入研究一致性预测——这是一种针对困扰自然语言处理(NLP)深度学习模型的校准问题的可行解决方案。

量化 NLP 问题不确定性的各种方法

为了解决校准偏差和语言固有的不可预测性的挑战,已经探索了多种量化 NLP 问题不确定性的方法。

现在,我们将探讨贝叶斯方法在不确定性量化中的应用。

贝叶斯不确定性量化方法

贝叶斯方法为建模不确定性提供了一个框架。通过将模型参数视为分布而不是固定值,贝叶斯神经网络提供了与预测相关的不确定性度量。这种概率方法确保模型不仅给出估计,还传达了该估计的置信度或分布。

这些是贝叶斯方法在不确定性量化中的一些例子。

  • 变分推断是一种近似模型参数后验分布的技术,使网络能够输出用于预测的分布。

  • 贝叶斯神经网络BNNs)是具有概率分布权重的神经网络。通过从这些分布中进行采样,BNNs 可以产生一系列输出,反映预测的不确定性。

  • 蒙特卡洛 dropout是一种在推理过程中应用 dropout 的技术。通过多次运行模型并观察输出方差,我们可以了解模型的不确定性。

自助方法和集成技术

自助涉及通过重采样从原始训练数据创建多个数据集。通过在这些数据集上训练不同的模型,我们可以捕捉模型的不确定性。不同重采样之间的方差允许我们更稳健地评估输入数据的变化如何影响预测。

现在,我们将探讨一些自助方法和模型集成的一些例子。

  • Bagging:简称为自助聚合,涉及在不同的自助样本上训练多个模型。模型之间预测的方差提供了一个不确定性的估计。

  • 模型集成:结合多个模型的预测也可以捕捉到不确定性。如果基于相同数据但具有不同架构的模型在预测上意见不一致,这表明更高的不确定性。

分布外(OOD)检测

识别与训练数据显著不同的输入也有助于不确定性估计:

  • 基于似然的方法:这些方法比较新数据点的似然性与训练数据。较低的似然性表示更高的不确定性。

  • 对抗训练:通过训练模型识别对抗性示例,我们可以增强它们识别不确定输入的能力。

考虑到人类语言的固有歧义和细微差别,理解和恰当地运用这些技术在 NLP 中至关重要。每种方法都有其优势和适用场景,因此从业者必须根据他们 NLP 任务的具体情况明智地选择。

NLP 中的正规预测

正规预测是一种灵活且统计上稳健的不确定性量化方法。它是一个无分布框架,可以在不要求模型重新训练或访问有限的 API 的情况下估计机器学习模型的不确定性。正规预测背后的核心思想是输出一个包含正确输出的预测集,其概率由用户指定。正规预测可以帮助量化语言模型预测中的不确定性。

正规预测是一个提供预测有效置信区间的框架,无论底层机器学习模型如何。在 NLP 领域,由于其固有的歧义、上下文敏感性和语言多样性等挑战,正规预测提供了一种结构化的方法来量化不确定性。

有效性和效率是正规预测的两个基本原则。有效性确保预测区域(或集合)以预定义的概率是正确的,而效率确保这些区域尽可能紧凑。

正规预测在 NLP 中的工作原理

正规预测的机制基于根据其“奇特性”或非一致性得分对预测进行排序。其想法是理解新观察与先前观察相比有多大的不同:

  • 非一致性得分:这个得分衡量了新预测与任何 NLP 任务中先前预测的不同程度。例如,非一致性可能基于文本分类中决策边界的距离。

  • P 值:P 值是基于非一致性得分计算的,表示预测的置信水平。

正规预测在 NLP 中的实际应用

一致性预测不仅仅是一个理论结构;它在自然语言处理中的实际应用范围广泛:

  • 情感分析:在确定文本片段的情感时,一致性预测可以提供一个或一组可能的情感,每个情感都有其置信度水平

  • 命名实体识别:一致性预测可以对每个标记的实体给出置信度分数,而不仅仅是标记实体,这有助于精度至关重要的任务

  • 机器翻译:除了翻译文本之外,一致性预测可以为不同的翻译选择提供置信区间,有助于翻译错误可能产生重大后果的任务

使用一致性预测在自然语言处理中的优势

一致性预测,作为不确定性量化领域的一个相对较新的发展,为自然语言处理带来了新的视角和许多好处。随着我们进入一个对可靠和值得信赖的模型需求不断增长的时代,像一致性预测这样的方法脱颖而出,有望解决自然语言处理中的一些固有问题。让我们深入了解将一致性预测整合到自然语言处理任务中的独特优势:

  • 模型无关性:一致性预测的一个优势是它与任何机器学习模型兼容。一致性预测可以应用于任何统计、机器或深度学习模型。

  • 透明和可解释性:一致性预测不是作为一个黑盒运行。非一致性分数和结果 p 值提供了可解释的不确定性度量。

  • 适应性:一致性预测适用于其应用的数据。它不做强烈的分布假设,因此在处理多样化的语言数据时仍然稳健。

将一致性预测引入自然语言处理工具箱为从业者提供了一个有前景的途径来处理人类语言固有的不确定性。提供有效的和可靠的置信度度量有助于构建更稳健和值得信赖的自然语言处理系统。

这里讨论了应用于自然语言处理任务的一致性预测的一个例子,例如基于评论内容的“正面”和“负面”情感类别标签预标记的 IMDB 电影评论:github.com/M-Soundouss/density_based_conformal_prediction/tree/master/imdb

自然语言处理和大型语言模型的一致性预测是一个新兴且至关重要的研究领域。

该领域的一个显著贡献是 Kumar 等人发表的一篇论文,题为《基于大型语言模型的多选题回答的一致性预测》(arxiv.org/abs/2305.18404)。

本文深入探讨了如何使用一致性预测量化语言模型中的不确定性,从而为大型语言模型的更可靠和可靠的部署铺平道路,特别是在安全至关重要的场景中。

论文的主要焦点是多项选择题回答任务。通过一系列实验,它展示了一致性预测在推导与预测准确度强相关的不确定性估计方面的有效性。

深入实验设置,作者使用了 LLaMA-13B 模型。这个模型拥有 130 亿个参数,在令人惊叹的 1000 亿个标记上进行了训练,为来自MMLU 基准数据集(paperswithcode.com/sota/multi-task-language-understanding-on-mmlu)的 MCQA 问题生成了预测。

实验围绕一个用于训练一致性预测模型的校准集和一个用于测试模型能力的评估集来构建。采用交叉验证方法以确保实验的完整性,确保校准集和评估集是从一致分布中抽取的。

性能指标是多方面的,包括准确度、覆盖率和效率。一个关键的观察结果是,LLaMA-13B 模型的 softmax 输出,尽管平均而言进行了合理的校准,但表现出信心不足和过度自信的倾向,尤其是在概率分布的极端部分。这一观察在诸如形式逻辑和大学化学等主题中尤为明显,这些主题本质上具有更多的模糊性和复杂性,使得它们对 LLM 准确导航变得具有挑战性。

其中一个引人注目的发现是,一致性预测提供的不确定性估计与预测准确度之间存在着强烈的关联。这种关联意味着当模型对其预测表现出更高的不确定性时,它更容易出错。这一见解对于下游应用,如选择性分类,极为宝贵。通过利用这些不确定性估计,可以过滤掉低质量的预测,从而提升整体用户体验。

论文强调了一致性预测作为 LLM 中不确定性量化灯塔的潜力。通过整合这种方法,LLM 可以更加可靠,尤其是在高风险环境中,增强其可信度和扩大其适用范围。

第二篇关键论文是《寻求帮助的机器人:大型语言模型规划者的不确定性对齐》(robot-help.github.io),由普林斯顿大学和 DeepMind 的研究团队发表。

在机器人和人工智能领域,赋予机器人辨别不确定性的能力是一个关键挑战。本文针对这一挑战进行了探讨,特别是针对通过语言指令控制的机器人。语言固有的灵活性为人类提供了自然接口,用于传达任务、上下文信息和意图。它还便于人类在机器人遇到不确定性时提供澄清。

近期进展展示了 LLMs 在规划方面的潜力。这些模型可以解释和响应非结构化语言指令,生成时间扩展的计划。这些 LLMs 的优势在于它们能够利用预训练过程中所获得的广泛知识和丰富上下文,从而提高抽象推理能力。然而,当前 LLMs 的一个显著障碍是它们倾向于“幻觉”。换句话说,它们倾向于生成具有高度自信的输出,虽然看似合理,但可能是不正确的,并且没有基于现实。

这种对输出的过度自信可能是有害的,尤其是在基于 LLM 的机器人规划中。当在现实世界设置中提供通常充满固有或无意模糊性的自然语言指令时,这种情况会进一步加剧。误解此类指令可能导致不希望看到的行为,在极端情况下,甚至可能是不安全的行为。

为了说明,本文提供了一个例子,其中一台被分配加热食物的机器人被指令将碗放入微波炉中。在存在多个碗的情况下,这样的指令变得模糊。此外,如果其中一个碗是金属的,将其放入微波炉中将是危险的。理想情况下,机器人应该识别其不确定性并寻求澄清。虽然基于语言规划的前期工作要么忽视了这种澄清的需要,要么过度依赖广泛的提示,但本文介绍了KNOWNO

KNOWNO 是一个旨在衡量和调整基于 LLM 规划者不确定性的框架。它确保这些规划者了解自己的局限性,并在需要时寻求帮助。KNOWNO 的基础建立在符合预测理论之上,该理论在完成任务时提供统计保证,同时在复杂的多步骤规划设置中最大限度地减少对人类干预的需求。在各种模拟和真实机器人设置中的实验证明了该框架的有效性。这些实验涵盖了具有不同模糊模式的任务,从空间不确定性到数值不确定性,从人类偏好到 Winograd 模式。

本文提出 KNOWNO 作为一种有潜力的轻量级方法来建模不确定性。它能够无缝地补充并扩展基础模型日益增长的能力。通过利用符合预测,LLMs 可以变得更加可靠,尤其是在精度和安全至关重要的场合。

摘要

在本章中,我们探讨了 NLP 领域中固有的不确定性挑战。认识到 NLP 模型在当今关键系统中的关键作用,本章强调了确保这些模型的预测是可信和可靠的的重要性。本章介绍了一致性预测作为解决深度学习模型输出中出现的误校准问题的解决方案,提供了一种稳健地量化预测置信度的方法。在本章中,您获得了对 NLP 中不确定性量化复杂性的洞察,了解了为什么深度学习模型经常产生误校准预测的原因,以及量化 NLP 中不确定性的各种方法。最后,我们深入研究了针对 NLP 任务定制的一致性预测技术。

在本章结束时,您应该对 NLP 中不确定性的挑战、一致性预测的优点和机制,以及如何有效地将此技术应用于 NLP 问题的实用知识有一个全面的理解。

在下一章中,我们将深入探讨不平衡数据的迷人世界,展示一致性预测如何解决处理此类场景中存在的挑战。

第四部分:高级主题

本部分将提供如何使用一致性预测来解决不平衡数据问题的示例,向您介绍可用于多类分类问题的各种一致性预测方法。

本节包含以下章节:

  • 第十一章, 处理不平衡数据

  • 第十二章, 多类一致性预测

第十一章:处理不平衡数据

本章深入探讨了不平衡数据的迷人世界,以及如何使符合预测成为处理此类场景的转折点。

不平衡数据集是机器学习中常见的挑战,往往导致预测偏差和模型表现不佳。本章将为您提供解决这些问题的知识和技能。

我们将了解不平衡数据,并学习为什么它在机器学习应用中构成一个重大挑战。然后,我们将探讨传统上用来解决不平衡数据问题的各种方法。

本章的重点是符合预测在解决不平衡数据问题中的应用。

本章将通过以下主题来展示如何通过符合预测解决不平衡数据问题:

  • 介绍不平衡数据

  • 为什么不平衡数据问题难以解决

  • 解决不平衡数据的方法

  • 如何将符合预测应用于帮助解决不平衡数据问题

加入我们这次启发性的旅程,我们将揭示不平衡数据的复杂性,并通过符合预测发现创新解决方案。

到本章结束时,您将深入了解如何有效地应用符合预测来处理不平衡数据,从而提高机器学习模型的性能和可靠性。

介绍不平衡数据

在机器学习中,我们经常遇到需要更加平衡的数据集。但一个数据集不平衡意味着什么?

一个不平衡的数据集是指不同类别样本分布不均匀的情况。换句话说,某一类别的样本数量显著多于其他类别。这在许多实际应用中很常见。例如,在用于欺诈检测的数据集中,非欺诈交易(多数类别)的数量通常远高于欺诈交易(少数类别)。

想象一个记录罕见疾病实例的医疗数据集。大多数患者将无病,导致大量健康记录的大类别,而受疾病影响的患者比例极小。这种类别分布的不平衡就是我们所说的不平衡数据。

不平衡数据可能导致预测建模中的重大挑战。由于机器学习算法的本质是设计来最小化错误并最大化准确率,当在不平衡数据上训练时,它们往往偏向于多数类别,这通常是以牺牲少数类别的预测准确率为代价的。

在我们的医学示例中,一个简单的模型可能会预测没有人患有疾病,由于健康记录的数量巨大,因此实现了高准确率,但未能识别出少数几个确实患有疾病的病例。这样的模型可能会因为不平衡而误导,导致在现实世界中产生严重的后果。

不平衡数据的性质在各个行业中普遍存在。从金融中的欺诈检测,欺诈交易虽然罕见但至关重要,到气象学中的自然灾害预测,感兴趣的(例如,龙卷风或地震)事件虽然不常见但意义重大,不平衡带来了专业人士必须能够应对的挑战。

认识和理解不平衡数据是有效解决其挑战的第一步。随着我们继续前进,我们将深入探讨为什么这些问题特别难以解决,并探讨处理它们的方法,重点关注符合预测的潜力。

为什么不平衡数据问题难以解决

解决不平衡数据并非易事,原因如下。挑战的核心是传统机器学习算法的性质。这些算法最小化总体错误,并假设类别分布平衡。当面对不平衡数据集时,这就会成为问题,导致对多数类别的明显偏差。

当我们意识到在许多情况下,少数类别的信息更为重要时,这个问题的重要性就变得显而易见了。以欺诈检测或医疗诊断为例。虽然欺诈交易或疾病实例可能很少,但它们的正确识别至关重要。然而,在倾斜数据上训练的模型可能会经常倾向于预测多数类别,表面上达到很高的准确率,但未能实现其核心目标。

更进一步,传统的指标,如准确率,在这里有时并不是我们的朋友。一个只有 2%欺诈交易的数据库可能会让我们产生自满:一个简单地将每笔交易预测为合法的模型会吹嘘 98%的准确率,掩盖了它在检测欺诈方面的彻底失败。

关于这个主题的学术文献迷宫使事情变得更加困难。由于有许多方法和理论,确定哪些真正有效就像在 haystack 中找针一样。经常讨论的方法,如合成少数过采样技术SMOTE),需要经过仔细分析来评估其实际的有效性。

给那些刚开始学习数据科学的人一些建议:用敏锐的眼光看待不平衡分类的领域。并非所有闪光的东西都是金子。虽然寻找一个神奇的解决方案很有吸引力,但有时它关乎重新定义问题。通过转变我们的视角,关注更相关的指标,我们可以找到一条出路,做出明智而有效的决策。

我们现在将探讨一些处理不平衡数据的常见方法。

解决不平衡数据的方法

面对不平衡类别分布的挑战时,我们应该转向何处?虽然该领域的大部分资源建议使用重采样方法,包括欠采样、过采样以及如 SMOTE 等技术,但重要的是要注意,这些建议通常回避了基础理论和实际应用。

在深入探讨不平衡类别的解决方案之前,首先理解其潜在性质是至关重要的。这个问题可能更适合在特定场景中解决,例如异常检测,而不是在传统的分类问题中。

在特定场景中,类别不平衡不是静态的。它可能演变或可能受到对适当标签的需求的影响。例如,考虑一个监控系统网络流量以检测潜在安全威胁的系统。最初,威胁可能很少,导致类别不平衡。然而,随着系统的成熟和更多潜在危害被识别和标记,不平衡可能发生变化,减少或逆转偏差。

解决这种动态不平衡需要自适应方法,这些方法可以在数据特征变化时重新校准,确保模型在其生命周期内保持有效。

当这些挑战不存在时,明智的做法是将重点转向评估指标。我们之前已经检查了如对数损失和 Brier 损失等指标,这些指标在评估模型校准方面至关重要。值得注意的是,使用这些指标与重采样技术可能会对模型的校准产生不利影响。

对于不平衡数据,一个经常提出的补救措施是通过各种重采样技术修改数据集。

重采样方法是用来平衡不平衡数据集中类别分布的技术。这些方法可以大致分为两大类:

  • 过采样:这涉及到增加少数类别的实例数量。方法包括以下几种:

    • 随机过采样:这涉及到复制少数类别的随机记录。

    • SMOTE:SMOTE 通过遵循特定的算法在特征空间中为少数类别创建合成样本。它首先随机选择一个少数类别实例,并找到其 k 个最近的少数类别邻居。SMOTE 从这些邻居中随机选择一个,并计算其特征与所选实例特征之间的差异。然后,它将这个差异乘以 0 到 1 之间的随机数,并将结果加到原始实例的特征上。这个过程生成一个新的、合成的数据点,它位于连接实际实例与其所选邻居的实际线段上,从而有效地创建出对构建更平衡数据集有贡献的合理新实例。

    • 自适应合成(ADASYN)采样:通过遵循它们的密度分布为少数类创建合成实例。对于比容易学习的样本更具学习挑战性的少数样本,会产生额外的合成数据。

  • 欠采样:这涉及到减少多数类的实例数量。方法包括以下几种:

    • 随机欠采样:这涉及到随机消除多数类实例。

    • Tomek 链接:这识别了最近邻类中实例的对,并从这对中移除多数类实例。

    • 聚类中心:这种方法用 k-means 算法的聚类中心替换多数样本的聚类。

    • 邻域清洗规则:这种方法结合了欠采样和编辑最近邻ENN)方法,以去除被 KNN 分类器错误分类的多数类实例以及被错误分类的少数类实例。

  • 结合过采样和欠采样:可以使用技术来同时过采样少数类和欠采样多数类以达到平衡。

  • 集成重采样:这涉及到通过重采样创建多个平衡子集,并通过构建模型集成。

虽然重采样方法可以帮助平衡类分布,但它们并不总是能提高模型性能,特别是在校准方面。在单独的、未受干扰的验证集上评估模型,并考虑其他策略,如选择适当的评估指标,是至关重要的。

尽管像 SMOTE 这样的重采样方法多年来一直被视为潜在解决方案,但并没有证据表明这些方法在广泛的数据库集上都能有效工作。例如,在 Kaggle 竞赛中,SMOTE 从未成功作为获胜方案的一部分被使用。

多年来,重采样方法,尤其是 SMOTE,一直被推崇为解决不平衡数据集挑战的潜在解决方案。然而,对这些方法有效性的深入研究描绘出一幅更为复杂的图景。尽管它们在文献和教程中被广泛提及,但支持它们在多样化数据集上有效性的实证证据却明显不足。这一点在 Kaggle 竞赛的世界中得到了证明,在那里精确度、创新和有效性至关重要。值得注意的是,SMOTE 和类似策略很少,如果不是从未,成为获胜方案的一部分。这不仅仅是一个统计异常或巧合。它强调了深刻的观察:虽然这些方法可能在某些情况下提供表面上的缓解,但它们并不普遍适用或可靠有效。任何追求尖端性能的从业者都应该以健康程度的怀疑态度和彻底的验证来对待重采样方法。

Ruben Van Den Goorbergh、Maarten van Smeden、Dirk Timmerman、Ben Van Calster 的研究论文《使用逻辑回归对类别不平衡纠正对风险预测模型的影响:说明和模拟》探讨了类别不平衡调整对逻辑回归模型性能的影响。研究仔细审查了模型的常规和岭回归惩罚版本,评估这些纠正如何影响它们的歧视能力、校准准确性和分类有效性。

论文分析了随机欠采样和 SMOTE 等技术,利用蒙特卡洛模拟和针对卵巢癌诊断的真实世界案例研究。

有趣的是,尽管这些纠正方法一致导致模型校准不准确(对落入少数类别的可能性高估明显),但它们并不一定增强了通过接收者操作特征曲线下的面积来衡量的歧视能力。然而,它们确实提高了分类指标,如敏感性和特异性。仅通过调整概率阈值就可以实现类似的分类结果。

论文认为,类别不平衡纠正技术可能会损害预测模型的性能,特别是在校准方面。研究确定,结果的不平衡并不一定构成问题,而试图纠正这种不平衡可能会降低模型的性能。

论文的研究结果表明,类别不平衡本身并不固有地存在问题,而纠正它的努力可能会无意中降低模型性能。

在数据科学中,区分预测和分类至关重要。分类往往要求做出过早的决定,将预测与决策过程合并,可能会忽视实际决策者的考虑。这在决策成本转移或数据采样标准改变时尤其如此。另一方面,预测保持中立,作为任何决策者的工具。

在他的文章《分类与预测》(www.fharrell.com/post/classification/)中,Frank Harell 认为,分类可能导致草率的决策,其在机器学习中的应用有时是误导性的。另一方面,概率建模量化了潜在的模式,通常更紧密地与项目的核心目标相一致。

当结果明确时,分类最为合适,预测者提供几乎确定的预测结果。然而,许多机器学习爱好者倾向于使用分类器,忽视了深深植根于统计学中的概率思维的丰富性。一个例子是将逻辑回归频繁误分类为仅仅是一种分类工具,而实际上它提供了丰富的概率估计。

认为二元决策需要二元分类是一种误解。通常,决策可能是收集更多数据或采取分阶段的方法。例如,医生可能会根据不断发展的症状选择渐进式治疗,而不是一开始就做出二元决策。

考虑一个高清晰度场景,例如光学字符识别。在这里,结果主要是确定性的,机器学习分类器表现卓越。然而,当存在内在变异性时,例如在预测疾病结果时,概率估计变得至关重要。它们本质上提供了误差范围,帮助决策者理解相关的风险。

在不平衡场景中,分类器也存在挑战。例如,在一个绝大多数为非疾病患者的数据集中,一个简单的分类器可能会将所有人标记为非疾病,从而实现高准确率,但在实际检测中却失败了。解决这种不平衡通常涉及诸如子采样等实践,这可能导致更多问题。相比之下,逻辑回归可以通过为不同的数据集或流行度重新校准来优雅地处理这种情况。

准确性指标的选取也是至关重要的。选择简单的准确性度量可能会导致误导性的模型。相反,应该关注更细微且统计上可靠的准确性评分规则。

总之,虽然分类器可能适用于具有高清晰度结果的确定性场景,但对于大多数具有内在变异性及细微差别的现实世界情况,基于概率的模型,如逻辑回归,更为合适、灵活且具有洞察力。

重采样方法的问题在于它们破坏了校准,这对于决策至关重要;重采样技术并没有增加任何新信息。SMOTE 论文被广泛接受,并获得了超过 25K 次的引用,这是非常不幸的,特别是考虑到该论文已经 20 年历史,仅使用了几个数据集,并使用了一些弱分类器,如 C4.5(决策树分类器)、Ripper(基于规则的算法)和朴素贝叶斯分类器。

该论文还关注了不适当的指标,仅关注曲线下面积AUC)和 ROC 凸包,而没有考虑测量分类器校准的指标。因此,该论文未能报告 SMOTE 对校准产生的负面影响。

在下一节中,我们将探讨有效应对机器学习中不平衡数据集挑战的策略。

解决不平衡数据的方法

解决不平衡数据的问题不仅仅是实现平衡的类别分布;它涉及到理解问题的细微差别,并采取涵盖模型性能所有方面的整体方法。让我们来探讨这些方法:

  • 理解问题:第一步是对问题有深入的理解。重要的是要辨别数据不平衡的原因。是因为数据的性质,还是由于数据收集中的某些外部因素或偏差?识别根本原因可以为最有效的策略提供见解。

  • 优先考虑校准:一个经常被忽视的关键方面是校准。模型提供反映真实可能性的概率估计的能力至关重要,尤其是在基于这些概率做出决策时。确保模型校准良好通常比单纯的类别分离更为关键。

  • 超越 ROC AUC 的指标:虽然接收者操作特征曲线下的面积(ROC AUC)是一个流行的指标,但仅仅依赖它可能会误导,尤其是在数据不平衡的数据集中。纳入能够捕捉校准本质的指标至关重要。例如,预期校准误差(ECE)、对数损失和 Brier 分数等指标,我们在前面的章节中已经探讨过,它们提供了对模型性能的更全面理解。

  • 重采样技术:尽管过采样、欠采样和 SMOTE 等技术被宣传为潜在解决方案,但理解它们的含义至关重要。虽然它们可能平衡类分布,但它们不一定总是改善或维持模型的校准。因此,任何重采样都应该谨慎进行,并且结果模型应该在未接触的验证集上严格评估。

  • 成本敏感学习:另一种方法是给少数类和多数类的误分类分配不同的成本。通过这样做,算法在训练过程中内在地给予少数类更多权重,旨在减少更昂贵的错误。

  • 阈值调整:通过调整决策阈值(对于二分类通常为默认值 0.5)来远离,可以在少数类中表现更好。这关乎于在精确度和召回率之间找到平衡,当现实世界中假阳性与假阴性的成本不同时,这种技术尤其有效。

最终目标是通过构建能够区分类别并提供校准可靠概率估计的有效模型。强调理解、校准和正确指标的多方面方法是解决数据不平衡问题的途径。

接下来,我们将探讨如何将符合性预测应用于帮助解决数据不平衡问题,并探讨其增强数据分析的潜力。

通过应用符合性预测解决数据不平衡问题

符合性预测是一种可以应用于处理数据不平衡问题的技术。以下是它可以用作的一些方式:

  • 优雅地处理不平衡数据集:一致性预测可以优雅地处理大型不平衡数据集。它严格定义了所需的相似度水平,消除了任何歧义。它可以处理严重不平衡的数据集,其比例为 1:100 到 1:1000,而无需过采样或欠采样。

  • 局部聚类一致性预测LCCP):LCCP 在一致性预测框架内采用双层分区方法。最初,它根据类别分类将不平衡的训练数据集分割成子集。然后,它进一步使用聚类技术将多数类别的示例进一步分割成子集。LCCP 的目标是在提高预测过程效率的同时,为其预测提供可靠的置信水平。

  • 蒙德里安一致性预测MCP):这可以处理不平衡数据集。它根据各自标签对数据进行分类,并为每个类别分配一个独特的显著性水平,确保在不同类别之间保持预测的有效性。

  • 非一致性评分:一致性预测的核心是非一致性度量,它根据新观察结果相对于训练数据“奇怪”的程度进行排名。这个度量可以适应不平衡数据集,为少数类赋予更多权重,确保模型对与该类相关的模式更加敏感。

  • 具有有效性的校准:一致性预测保证如果我们声称一个预测区间具有 95%的置信水平,那么在长期来看,它将包含实际结果 95%的时间。这种内置校准,即使在不平衡数据集中也能保持,确保预测区间或集合真正反映了模型的不确定性。

  • 与底层模型的灵活性:一致性预测并不局限于特定的机器学习算法。这意味着,即使在处理不平衡数据的情况下,从业者也可以选择表现最佳的基模型(基于树的算法、神经网络或线性模型),然后应用一致性框架以获得可靠的预测。

  • 透明性和可解释性:一致性预测框架的透明性质允许简单的解释。这种透明性对于不平衡数据集来说非常有价值,使利益相关者能够理解为什么做出特定的预测,以及模型对这些预测的确定性。

  • 适应变化的分布:不平衡数据的一个挑战是少数类的分布可能会随时间变化。由于它强调根据新观察的非一致性进行排名,一致性预测可以适应这些变化,确保即使底层数据分布演变,预测仍然保持校准。

一致性预测提供了一种框架,可以适应以各种方式处理不平衡数据集,为机器学习中这个常见问题提供潜在解决方案。虽然分类现在很常见,但最终目标是实现明智的决策,这需要即使在有偏的类别数据中也能提供可靠的概率估计。

使用 Venn-Abers 预测器解决不平衡数据

在机器学习不断发展的世界中,解决分类问题已经变得很常见。从区分猫和狗到更复杂的挑战,分类的真正目的不仅仅是标记;它还在于促进明智的决策。为此,仅仅类别标签是不够的。我们需要良好的类别概率校准。

大多数数据科学家,尤其是在他们职业生涯早期的人,倾向于使用标准指标如准确率、精确率和召回率来评估分类模型。虽然这些指标对于更直接的任务很有洞察力,但它们对于更复杂、更现实的问题可能会产生误导。分类的真正本质在于校准,这是入门课程中经常被忽视的一个方面。

对于从事关键应用(从金融到医疗保健)的专业人士来说,分类器的校准至关重要。分类问题的关键在于做出明智的决策。这些决策围绕着各种场景的概率,每种场景都有潜在的成本和收益。

以银行业为例。如果一个模型仅仅预测一个潜在客户不会违约,它需要为决策提供更多深度,尤其是在涉及大量资金的情况下。所需的是一个提供各种结果良好校准概率的模型,以便对风险和回报进行细致的评价。

然而,出现了一个重大挑战:许多机器学习模型本身并不产生类别概率。即使它们能产生,这些概率也常常被校准不当,导致错误的决策。这在关键领域尤其令人担忧。例如,由于概率校准不当而误解障碍物的自动驾驶汽车可能导致事故。

那么,如何才能实现更好的校准呢?经典方法,如 Platt 的缩放法(en.wikipedia.org/wiki/Platt_scaling)和等调回归(en.wikipedia.org/wiki/Isotonic_regression),是早期的解决方案。然而,这些方法存在局限性,通常根源于限制性假设,这阻碍了它们在多样化数据集上的有效性。

进入Venn-Abers 预测器,这是分类器校准中的希望灯塔。Venn-Abers 预测器,符合性预测框架的一个子集,承诺了一种更稳健的校准方法。与传统的不同,它们不依赖于过于简化的假设,并提供了适用于当今复杂数据集的更通用的校准工具。

从本质上讲,如果你想在 2022 年及以后充分利用机器学习分类器的潜力,Venn-Abers 和更广泛的符合性预测框架值得探索。它们可能是解锁良好校准、可靠的机器学习模型的关键。

Venn-Abers 预测器在机器学习中脱颖而出,为测试数据标签提供概率驱动预测。使它们与众不同的地方在于它们内置的校准保证。这种保证建立在数据观察通常独立来源于一致分布的典型前提之上。

Venn-Abers 方法的核心灵感来源于等调回归。它精炼了 Zadrozny 和 Elkan 开创的概率预测校准方法。与 Platt 的缩放器、等调回归等技术相比,Venn-Abers 预测器配备了固有的数学证明,确保其无偏有效性。

Venn-Abers 预测器的一个有趣特性是它们能够为类别 1标签生成双重概率预测。这种双重输出捕捉了预测不确定性的范围。因此,这些预测器提供了校准预测并揭示了与每个预测相关的内在置信度。这使得它们成为增强基于概率预测校准的无价工具。以下是方法:

  • 真实生活的概率区间:Venn-Abers 预测器在提供校准概率区间方面表现出色。这确保了它们产生的概率真正代表了事件的实际可能性,消除了过度自信或低估的陷阱。

  • 跨模型的通用性:Venn-Abers 校准的美丽之处在于其适应性。无论你是在处理决策树、随机森林,甚至是 XGBoost 模型,Venn-Abers 都可以重新校准它们,微调过于雄心勃勃和过于谨慎的模型以提高其准确性。

  • 具有有效区间的增强决策支持:预测器不仅停留在标签上。对于每一次预测,尤其是来自通常复杂的模型(如随机森林和 XGBoost)的预测,Venn-Abers 提供概率区间。这个区间的跨度是预测可靠性的晴雨表。

Venn-Abers 预测器对于那些在处理不平衡数据问题中航行的人来说是一盏灯塔。它们精炼了各种机器学习模型的预测准确性,并为用户提供可信的概率区间,使决策更加明智和自信。

为了说明不平衡数据问题中的各种问题,我们将使用以下笔记本:https://github.com/PacktPublishing/Practical-Guide-to-Applied-Conformal-Prediction/blob/main/Chapter_11.ipynb

本笔记本将探讨处理不平衡类别问题的各种方法,并将符合性预测应用于校准类别概率。

我们将使用 Kaggle 的信用卡欺诈检测数据集:www.kaggle.com/datasets/ml…

该数据集包含 2013 年 9 月欧洲持卡人的信用卡交易数据。交易发生在两天内,共有 492 笔欺诈交易,占 284,807 笔交易中的 0.17%。数据集高度不平衡,正类(欺诈交易)占所有交易的 0.17%。

该数据集包含由 PCA 变换得到的数值特征;由于保密性和隐私问题,原始特征已被保留。

特征V1V2、... V28是使用 PCA 获得的主成分:

  • 唯一保留的原始特征是TimeAmount

  • 特征Time包含每个交易相对于数据集中第一个交易的时间(以秒为单位)

  • 特征Amount是交易金额

  • label类是需要预测的因变量(标记为 1 的欺诈交易)

我们将使用各种分类器,包括 XGBoost、LightGBM、CatBoost、随机森林和逻辑回归等流行分类器。

信用卡欺诈检测笔记本的关键见解

在我们对信用卡欺诈检测数据集的探索中,我们发现了几个关键见解,这些见解可以重塑我们对不平衡数据的处理方法:

  • 拥抱简单性:最有效的策略通常是保持数据不变。与复杂的重采样技术相比,简约的方法有时可以产生更优的结果。

  • 重新审视不平衡:与其将不平衡数据视为需要直接解决的困境,不如理解不平衡并不总是根本问题。追求的目标不应该是平衡天平,而应该从数据中提取有意义的见解,无论分布如何。

  • 稳健性度量指标的力量:度量指标的选择可以决定你的分析成败。通过采用一套全面的度量指标,你可以准确定义问题并为实际解决方案铺平道路。

  • 校准的核心作用:在校准现实世界的决策场景中,特别是在关键应用中,校准是不可协商的。准确的概率估计至关重要,确保决策基于可靠的数据。

  • 重采样的双刃剑:虽然重采样方法可能看起来很有希望,但它们通常会损害模型的校准。我们的分析表明,这些技术可能会降低校准指标,如 ECE、对数损失和 Brier 分数。

  • 一致性预测 作为灯塔:在处理不平衡数据带来的挑战和重采样的潜在陷阱时,一致性预测成为一线希望。它提供了一种可靠的方法来校准概率,确保即使在重采样之后,数据仍然有利于明智的决策。

通过内化这些见解,我们可以以更精细的视角来处理不平衡数据集,优先考虑有意义的分析而非表面的修复。

摘要

在机器学习中,不平衡数据集的挑战往往导致预测偏差和模型结果受损。本章深入探讨了这类数据集的复杂性,并通过一致性预测,一种处理这些场景的突破性方法,照亮了前进的道路。

传统方法,如重采样技术以及度量标准,如 ROC AUC,往往无法有效解决不平衡问题。此外,它们有时甚至会导致结果更加偏斜。另一方面,一致性预测作为一种稳健的解决方案,提供了校准和可靠的概率估计。

这些方法的实际应用通过 Kaggle 的信用卡欺诈检测数据集进行说明,这是一个固有的不平衡数据集。这种探索强调了理解数据、使用稳健的度量标准以及一致性预测的变革潜力。

从本质上讲,尽管不平衡数据带来挑战,但从业者可以使用如一致性预测等正确工具,朝着校准和有洞察力的预测方向前进。

在本书的下一章中,我们将深入探讨多类一致性预测的迷人世界。本章将向您介绍各种可以有效地应用于多类分类问题的一致性预测方法。

第十二章:多类一致性预测

欢迎来到本书的最后一章,我们将深入探讨多类一致性预测的迷人世界。本章将向您介绍各种可以有效地应用于多类分类问题的一致性预测方法。

我们将探讨多类分类的概念,这是机器学习(ML)中的一种常见场景,其中实例可以属于许多类别之一。理解这个问题是有效应用一致性预测技术的第一步。

接下来,我们将研究用于评估多类分类问题的度量标准。这些度量标准为我们模型的性能提供了定量衡量,理解它们对于有效模型评估和选择至关重要。

最后,我们将学习如何将一致性预测应用于多类分类问题。本节将提供实用的见解和技术,可以直接应用于你的工业应用。

到本章结束时,你将掌握在多类分类中的宝贵技能和知识,并学会如何有效地将这些方法应用于这些问题。那么,让我们深入其中,开始我们的多类一致性预测之旅!

在本章中,我们将涵盖以下主要主题:

  • 多类分类问题

  • 多类分类问题的度量标准

  • 如何将一致性预测应用于多类分类问题

多类分类问题

在机器学习中,分类问题是普遍存在的。它们涉及为实例预测一个离散的类别标签输出。虽然二元分类——预测两种可能结果之一——是一种常见场景,但许多现实世界的问题需要预测超过两个类别。这就是多类分类发挥作用的地方。

多类分类是一个实例可以属于许多类别之一的问题。例如,考虑一个设计用于将新闻文章分类到主题的机器学习模型。这些文章可以被分类到如体育政治科技健康等类别。每个这些类别代表一个类别,由于有超过两个类别,这是一个多类分类问题。

需要注意的是,在多类分类中,每个实例恰好属于一个类别。如果每个实例可以属于多个类别,那么它将是一个多标签分类问题,这属于不同类型的问题。

多类分类问题是机器学习中的基本问题,它们需要与二元分类问题略有不同的方法。让我们更深入地探讨多类分类的复杂性。

多类分类算法

几种机器学习算法可以直接处理多类分类问题。这些包括但不限于以下:

  • 决策树:如分类与回归树(CARTs)之类的决策树算法可以自然地处理多分类。

  • 朴素贝叶斯:朴素贝叶斯将每个类别视为一个单独的一对多二分类问题,并选择概率最高的结果。

  • 然后,可以使用softmax激活函数来计算每个类别的概率分布。

许多机器学习算法天生是为两个类别之间的二分类设计的。为了将这些模型扩展到具有两个以上类别的多分类问题,必须采用特殊策略。两种常见的方法是“一对多”和“一对一”。

接下来,我们将更详细地探讨这些一对多和一对一策略,包括如何将二分类结果汇总以做出最终的多分类预测。我们还将讨论使用适用于具有两个以上类别的问题的专用性能指标来评估多分类分类器。

一对多和一对一策略

对于不原生支持多分类的算法,可以使用以下策略,如一对多(也称为一对余)和一对一:

  • 一对一策略:对于具有n个类别的难题,将训练n个独立的二分类模型。每个模型被训练以区分一个类别的实例与其他所有类别的实例。所有n个模型都应用于一个新实例,并且给出最高置信度分数的模型确定实例的类别。

  • 一对一策略:在这种策略中,为每一对类别训练一个二分类模型。对于n个类别,这将产生n(n-1)/2个模型。每个模型的决策都会对投票方案做出贡献,并且获得最多投票的类别被选为实例的最终类别。例如,对于 4 个类别的难题,将构建 4*3/2=6 个二进制模型,每个类别一对。每个模型对其预测的类别投一票,所有模型中投票最多的类别被选为最终预测。因此,如果有四个类别,如果三个模型预测类别 A,两个预测类别 B,一个预测类别 C,则由于它获得了最多的投票,类别 A 将被选中。这样,每个模型的决策都会对投票方案做出贡献,以确定整体预测的类别。

以下部分将讨论用于评估多分类问题的指标。理解这些指标对于评估我们模型的性能以及就模型选择和优化做出明智决策至关重要。

多分类问题的指标

在多类分类领域,评估模型性能与开发模型一样重要。有效的评估依赖于利用正确的指标,这些指标可以准确衡量多类分类模型的性能并提供改进的见解。本节揭示了评估多类分类模型性能所必需的各种指标,为选择和采用适合您特定用例的正确指标提供了坚实的基础。

混淆矩阵

评估多类分类模型的基本指标之一是混淆矩阵。它提供了一个算法性能的可视化,通常是监督学习SL)算法。混淆矩阵的每一行代表实际类别的实例,每一列代表预测类别的实例。它是理解模型性能(超越整体准确率)的重要工具,可以深入了解分类错误。

精确率

精确率(或阳性预测值;简称PPV)是一个衡量指标,它检查模型做出的所有正预测中真正正预测的数量。高精确率表明假正率低。对于多类分类问题,每个类别的精确率分别计算,可以平均以了解整体性能。

召回率

召回率(或灵敏度真正正率;简称TPR)衡量实际正例中真正正预测的数量。对于识别所有实际正例至关重要的问题,这是一个关键指标。与精确率一样,召回率对每个类别进行计算,可以平均以进行整体性能评估。

F1 分数

F1 分数是精确率和召回率的调和平均数,平衡了这两个指标。在处理不平衡数据集时尤其有用,它提供了一个超越准确率的模型性能的更全面视角。

宏观和微观平均指标

在多类分类问题中,对精确率、召回率和 F1 分数等指标进行平均,通常称为宏观和微观平均,可以以多种方式完成:

  • 宏观平均为每个类别独立计算指标,然后取平均值,对待所有类别同等对待

  • 微观平均将所有类别的贡献汇总起来计算平均指标

曲线下面积(AUC-ROC)

另一个重要的指标是受试者工作特征曲线下面积AUC-ROC)。虽然它主要用于二元分类问题,但可以通过考虑每个类别与其他类别的关系来扩展到多类分类。

对数损失及其在衡量多类模型校准中的应用

对数损失,也称为 逻辑损失交叉熵损失,是分类问题(包括多类分类)中常用的损失函数。它通过衡量预测的不确定性来量化分类模型的性能。对数损失对错误分类施加惩罚;对自信错误的预测的惩罚更高。

数学表示

从数学上讲,多类分类的对数损失可以表示如下:

− 1/N ∑(i=1 to N) ∑(j=1 to M) y_ij log(p_ij)

在这里,以下适用:

  • N 是观察的数量

  • M 是类别的数量。

  • y_ij 是一个二进制指示符,表示类 j 是否是观察 i 的正确分类。

  • p_ij 是观察 i 属于类 j 的预测概率。

使用对数损失来衡量校准

一个校准良好的模型是指其预测概率可靠地反映了预测结果的真正可能性。在多类分类中,校准意味着如果模型预测一个类别的概率为 p,那么该类别应该在大约 p 百分比的所有实例中发生,这些实例被预测为具有概率 p

对数损失和校准

对数损失是评估多类分类模型校准的适当指标,因为它直接比较了预测概率(预测的置信度)与实际类别。一个校准良好的模型将具有较低的对数损失,因为实际类别的预测概率将更高。

如何使用对数损失评估校准
  • 预测概率:使用您的多类分类模型预测验证数据集中每个观察的每个类别的概率

  • 计算对数损失:使用之前显示的公式计算对数损失

  • 解释结果:较低的对数损失值表示校准更好,因为它表明预测概率更接近实际类别

评估您的多类分类模型的对数损失可以为您提供有关模型校准的见解。具有较低对数损失的模型校准更好,提供更可靠的预测概率估计。理解和使用对数损失作为衡量校准的指标对于确保您的多类分类模型在现实世界应用中表现最佳至关重要。

Brier 分数及其在衡量多类模型校准中的应用

Brier 分数,或二次损失,是另一个用于评估分类模型性能的流行指标,包括多类分类问题。它量化了预测概率与实际类别之间的差异,对校准良好的模型赋予较低的分值。

数学表示

对于多类分类,Brier 分数的计算如下:

1/N ∑(i=1 to N) ∑(j=1 to M) (p_ij − o_ij)²

在这里,以下适用:

  • N是观察值的数量。

  • M是类别的数量。

  • y_ij 是一个二元指示器,表示类别 j 是否是观察 i 的正确分类。

  • p_ij 是预测观察 i 属于类别 j 的概率。

使用 Brier 分数来衡量校准

Brier 分数是一种有效的指标,用于评估多类模型的校准情况,因为它在预测概率与实际结果之间存在较大差异时对模型进行更多惩罚。一个校准良好的模型将具有较低的 Brier 分数,因为其预测概率将更接近实际结果。

如何使用 Brier 分数评估校准

Brier 分数提供了一种定量评估多类分类器预测概率校准程度的方法。评估校准对于确保在实际部署中的可靠性至关重要。

要使用 Brier 分数,主要有三个步骤:

  1. 预测概率:使用你的多类分类模型来估计验证数据集中每个观察值的每个类别的概率。

  2. 计算 Brier 分数:使用提供的公式计算 Brier 分数。

  3. 解释结果:较低的 Brier 分数表示校准更好。它表明模型的预测概率与实际结果更一致,从而使模型更可靠。

从本质上讲,使用 Brier 分数来评估你的多类模型的校准有助于确保模型概率估计的可靠性。较低的 Brier 分数,反映了预测概率与实际概率之间差异较小,表明模型校准良好,增强了模型在实际应用中的可信度。理解并利用 Brier 分数作为校准指标对于优化实际场景中多类分类模型的性能至关重要。

理解和运用适当的指标对于评估和改进多类分类模型至关重要。对这些指标有深入的了解可以让我们进行更细致的分析,为开发稳健且高效的多类分类模型以及确保其在实际场景中的成功部署铺平道路。

一致性预测如何应用于多类分类问题

一致性预测是一个强大的框架,可以应用于多类分类问题。它提供了一种带有确定性度量的预测方法,这在处理多个类别时尤其有用。

在前面的章节中,我们已经探讨了在多类分类的背景下,一致性预测是如何为给定实例的每个类别分配一个p值的。

p 值代表了对该类别的预测置信水平。p 值越高,模型对该实例属于该类别的信心就越强。

将共形预测应用于多类分类的步骤如下:

  1. 校准:将一部分训练数据,称为校准集,留出。模型在剩余数据上训练。

  2. 预测:对于每个类别,模型预测类别得分。一致性得分,它衡量预测与校准集中实际结果的一致性,被计算出来。

  3. p 值计算:对于一个新的实例,模型为每个类别计算一个非一致性得分。然后,每个类别的 p 值被计算为校准集中具有更高非一致性得分的实例比例。

  4. 输出:模型输出预测的类别标签及其 p 值。类别按其 p 值排序,为每个预测提供了置信度度量。

将共形预测应用于多类分类问题提供了几个好处:

  • 置信度度量:共形预测为每个预测提供了一个置信度度量(p 值),这在决策过程中非常有用

  • 有效性:共形预测提供了有效性的理论保证,这意味着预测的错误率将接近用户设定的显著性水平

  • 效率:共形预测在计算上效率高,可以应用于大型数据集

  • 通用性:共形预测可以与任何机器学习算法一起使用,使其成为多类分类问题的多功能工具

下一个部分将探讨如何将 Venn-ABERS 预测器应用于多类分类问题。

使用归纳和交叉 Venn-ABERS 预测器进行多类概率分类

Venn-ABERS 是由 Vladimir Vovk、Ivan Petej 和 Valentina Fedorova 开发的一种共形预测方法(带有和没有有效性保证的大规模概率预测器papers.nips.cc/paper/2015/hash/a9a1d5317a33ae8cef33961c34144f84-Abstract.html),以解决像 Platt 缩放和等调回归这样的经典校准器的局限性。它无论数据分布、数据集大小或底层分类模型如何,都保证了数学有效性。

Venn-ABERS 预测器通过拟合等调回归两次来工作,假设每个测试对象都可以具有标签 0 和标签 1。这为每个测试对象产生两个概率,p0p1,代表该对象属于类别 1 的概率。这些概率为类别 1 的概率创建了一个预测区间,并提供了数学保证,即实际概率落在这个区间内。

Venn-ABERS 预测是一个多预测因子,区间(p0, p1)的宽度包含了关于分类置信度的宝贵信息。在关键情况下,Venn-ABERS 预测器输出准确且校准良好的概率,并通过扩大(p0, p1)区间发出“警报”。这个警报表明决策过程应考虑增加的不确定性。

这些概率可以通过p = p1 / (1 - p0 + p1)组合成一个单一值,用于实际决策目的。这个类别 1 的联合概率p可以用于决策任务。

Valery Manokhin 的研究论文《使用归纳和交叉 Venn-Abers 预测器的多类概率分类》,介绍了一种将 Venn-ABERS 预测器应用于多类分类的方法。您可以通过以下链接访问该论文:proceedings.mlr.press/v60/manokhi…

实验结果表明,所提出的多类预测器在准确性方面优于未校准和现有的经典校准方法,这表明在多类概率分类方面可能取得了实质性的进步。

对于渴望采用这种技术的实践者和研究人员,GitHub 上有一个快速 Venn-ABERS 预测器的 Python 实现,用于二元分类(github.com/valeman/Multi-class-probabilistic-classification)。这个教育资源提供了亲身体验实现细节和利用 Venn-ABERS 预测器在现实世界机器学习场景中的实际优势的机会。

提出的使用归纳交叉-Venn-ABERS 预测器IVAPsCVAPs)进行多类概率估计的方法,基于将多类分类器转换为二元分类器。在此方法中,二元分类器被训练以区分每个类别与其他所有类别的组合。

例如,在一个有三个类别 A、B 和 C 的三类问题中,训练了三个二元分类器:一个用于区分 A 和(B 或 C),一个用于区分 B 和(A 或 C),一个用于区分 C 和(A 或 B)。然后使用 IVAP 来估计给定测试实例每个类别的概率。IVAP 计算一个类别的概率为将实例分类为属于该类别的二元分类器的比例。

转换成对分类得分和成对类概率的公式使用了论文《具有概率输出的成对神经网络分类器》中介绍的方法(proceedings.neurips.cc/paper_files/paper/1994/file/210f760a89db30aa72ca258a3483cc7f-Paper.pdf)。

具体来说,如果 rij 是从相应的二元模型中得到的类 j 上类 i 的分数,则类 i 的估计概率按以下方式计算。

关键思想是首先使用专门的二元分类器计算每对类之间的成对概率。然后,可以将这些成对概率组合起来,估计所有类别的归一化概率分布:

p i PKPD =  1 ___________ ∑ j:j≠i n   1 _ r ij − (k − 2)

这提供了一种将成对二元分类结果转换为适合多类评估和校准的类概率估计的原则性方法。

在计算概率(这种技术被称为 PKPD 方法)之后,对这些值进行归一化是至关重要的,以确保它们的总和为 1。这些成对概率可以通过对成对分类分数/概率应用 IVAPs 和 CVAPs 来获得,这些分数/概率用于校准底层分类模型产生的分类分数。

简而言之,PKPD 方法有助于将二元比较(成对概率)中的概率转换为多类概率。然后,计算出的多类概率被用来将测试对象分类为 k 个可能类别之一。这种分类使得可以计算指标,这些指标可以与各种校准算法的性能进行比较。

现在,让我们通过一个现实世界的例子来了解如何将一致性预测应用于多类分类问题。以下是一个代码示例,展示了这一应用。

让我们分析来自 Chapter_12.ipynb 笔记本(代码可以在本书的 GitHub 仓库github.com/PacktPublishing/Practical-Guide-to-Applied-Conformal-Prediction/blob/main/Chapter_12.ipynb)的代码。该笔记本演示了一致性预测在多类分类问题中的应用。

多类分类的一般步骤如下:

  1. 数据准备

    1. 加载数据集。

    2. 将数据集划分为特征 (X) 和目标 (y)。

    3. 将数据分为训练集和测试集。

  2. 模型训练

    1. 在训练数据上训练一个分类模型。

    2. 使用训练好的模型在测试数据上进行预测。

  3. 应用 一致性预测

    1. 将一致性预测应用于训练好的模型。

    2. 获取预测的置信度和可信度度量。

  4. 评估

    1. 使用适当的指标评估模型。

    2. 比较校准模型与原始模型的性能。

  5. 使用 evaluate_model_performance 函数评估不同模型和校准方法的性能。

  6. 它训练模型,进行预测,并使用各种指标(如准确率、对数损失和 Brier 损失)来评估性能。

  • 校准

    1. 不同的校准方法,如 Platt、等调和其他方法,被应用于模型中。

    2. 校准模型的预测被评估以分析性能改进。* evaluate_model_performance 函数应用于每个模型。* 每个模型和校准方法的成果被存储,可以进行分析以确定表现最佳的模型和校准方法。

让我们接下来总结本章内容。

摘要

在本书的最后一章,我们探索了多类一致性预测这个迷人的领域。我们首先理解了多类分类的概念,这是机器学习中一个普遍的场景,其中实例可以属于许多类别之一。这种理解对于有效地应用一致性预测技术至关重要。

我们接着深入探讨了用于评估多类分类问题的指标。这些指标定量地衡量我们模型的表现,对于有效的模型评估和选择至关重要。

最后,我们学习了如何将一致性预测应用于多类分类问题。本节提供了可以直接应用于您工业应用的实用见解和技术。

到本章结束时,你应该已经获得了在多类分类以及如何有效地将这些问题应用于一致性预测方面的宝贵技能和知识。这些知识将在你作为数据科学家、机器学习工程师或研究人员的旅程中证明是无价的。

我们涵盖了不同的主要主题,包括多类分类问题,我们探讨了多类分类及其在机器学习中的重要性。我们还讨论了多类分类和多标签分类问题的区别。然后我们研究了用于评估多类分类问题的指标。理解这些指标对于评估我们模型的表现和做出关于模型选择和优化的明智决策至关重要。最后,我们学习了如何将一致性预测应用于多类分类问题。本节提供了可以直接应用于您工业应用的实用见解和技术。

本章标志着我们进入一致性预测旅程的结束。我们希望你所获得的知识和技能将在你未来在机器学习领域的努力中大有裨益。祝您学习愉快!