TATECHATLAS
◎ 简体中文
数学与模型

使用经验覆盖率和宽度评估预测区间

预测区间旨在包含未来单个观测值,而置信区间针对均值或其他参数,两者不可互换。经验覆盖率是保留数据中落在区间内的比例,宽度是分位数界限之间的距离;一个构造的五值示例给出 80% 覆盖率和平均宽度 1.8。

本文内容

预测区间是一个旨在以给定概率包含未来单个观测值的范围,而置信区间则是用于包含未知参数(如条件均值)的范围。两者不能互换,因为它们回答的问题不同,宽度也不同。经验覆盖率是指落在预测区间内的保留观测值所占的比例,区间宽度是指下限分位数与上限分位数之间的距离。一个小型示例数据,其实现值为 [2,5,8,4,10],区间为 [(1,3),(4,6),(6,7),(3,5),(9,11)],其中四个值落在区间内,一个值落在区间外,因此经验覆盖率为 4/5 = 80%,宽度 [2,2,1,2,2] 的平均值为 1.8。这个构造的样本仅用于说明算术运算,并非校准研究,也不是 scikit-learn 基准。在 scikit-learn 中,分位数回归可以通过在互补分位数水平上拟合单独的模型来生成预测区间,例如 alpha=0.05 和 alpha=0.95 以形成 90% 的区间。scikit-learn 的分位数回归示例表明,5% 和 95% 分位数模型用于定义一个中心区间,而梯度提升分位数示例则展示了使用 GradientBoostingRegressor 设置 loss='quantile' 并将 alpha 设置为 0.05、0.5 和 0.95 的相同思想。资料还表明,必须在保留数据上检查校准,因为训练覆盖率可能接近名义水平,而测试覆盖率可能较低。在梯度提升示例中,训练覆盖率约为 0.903,而测试覆盖率约为 0.796,测试覆盖率的自助法置信区间报告为介于 73.8% 和 84.4% 之间。这一差距说明名义覆盖率不是个体保证,区间宽度在新数据上可能过窄。分位数模型也可能发生交叉,即对于某些输入,下限分位数预测可能超过上限分位数预测,这会破坏区间解释。覆盖率也可能在不同子组之间变化,因此单一的总体覆盖率数字可能掩盖重要细分中的糟糕表现。在选择名义水平时,需决定目标是中心区间(如 90%)还是单侧界限,并记住名义水平是指许多未来观测值上的长期频率,而不是对任何单个案例的承诺。要计算保留覆盖率,请将每个保留观测值与其预测的下限和上限进行比较,并计算观测值位于两者之间的比例。要测量宽度,请从每个案例的上限中减去下限,并使用均值或百分位数进行汇总,同时注意只有在覆盖率保持可接受的情况下, narrower 区间才更好。一个有用的实际比较是查看在保留数据上实际达到的覆盖率水平下的宽度,因为一个过于狭窄且未能达到其名义目标的区间即使看起来高效也没有用。验证必须保持训练和评估分离以避免泄漏,极端水平的分位数估计可能不稳定,因为尾部的信息来自非常少的观测值。主要局限在于小规模保留集上的经验覆盖率具有噪声,分位数交叉和子组变化可能扭曲解释,并且此处的示例数字是假设的,而非执行管道的观测结果。

说明区间预测的对象

预测区间旨在以给定的概率包含未来的单个观测值,而置信区间旨在包含未知参数(如条件均值)。这种区别很重要,因为这两种区间回答的问题不同,宽度通常也不同。预测区间必须同时考虑对基础信号的不确定性以及新观测值围绕该信号的变异性,而均值的置信区间仅反映对估计中心的不确定性。在 scikit-learn 的分位数回归示例中,5% 和 95% 分位数模型用于形成观测值的中心区间,文档将其描述为创建预测区间而非均值的区间。梯度提升分位数示例通过训练单独的分位数回归器并使用 0.05 和 0.95 模型来定义预测的 90% 区间,阐述了同样的观点。示例值 [2,5,8,4,10] 及其区间 [(1,3),(4,6),(6,7),(3,5),(9,11)] 在此仅用于展示检查观测值是否落在预测范围内的算术运算。它们不是关于任何拟合模型的证据。

选择名义水平

名义水平是目标长期覆盖概率,例如由 0.05 和 0.95 分位数形成的中心区间的 90%。选择它取决于决策问题,而不仅仅是数据。中心区间在希望限制大多数未来观测值时很常见,而当只有上限或下限重要时,单侧界限可能更合适。scikit-learn 的梯度提升分位数示例明确指出,alpha=0.05 和 alpha=0.95 的模型产生 90% 覆盖区间,因为 95% 减去 5% 等于 90%。分位数回归示例同样使用 0.05 和 0.95 来定义中心 90% 区间,并识别该中心区域之外的观测值。关键的警告是名义覆盖率不是个体保证。90% 的区间并不意味着任何特定观测值都有 90% 的概率落在计算出的范围内,这种说法会覆盖模型的假设和校准。示例样本使用的名义目标未被声明为拟合模型的属性;其中的 80% 经验覆盖率只是对一个微小构造集中的四个内部和一个外部进行计数的结果。

计算保留覆盖率

保留覆盖率是先前未见过的观测值中落在预测的下限和上限之间的比例。要计算它,请将每个保留观测值与其对应的区间进行比较,统计观测值大于或等于下限且小于或等于上限的案例数,然后除以保留案例数。梯度提升分位数示例直接使用 coverage_fraction 函数实现了这个思想,该函数返回两个比较条件的逻辑与的均值。在该示例中,训练覆盖率报告为约 0.903,而测试覆盖率报告为约 0.796,测试覆盖率的自助法置信区间报告为介于 73.8% 和 84.4% 之间。这些数字表明,校准在训练数据上可能看起来很好,但在保留数据上仍然过于乐观。示例样本遵循相同的计数逻辑:五个值中有四个落在其区间内,因此经验覆盖率为 4/5,即 80%。该计算仅是定义的演示,而非模型评估结果。

测量区间宽度

区间宽度通常测量为每个案例的上限分位数与下限分位数之间的差异。可以使用均值宽度或宽度的高百分位数等汇总统计来比较方法,但宽度应与覆盖率一起评判,而非单独评判。只有在保留数据上仍能实现可接受的覆盖率时, narrower 区间才更好。在示例样本中,宽度为 [2,2,1,2,2],平均宽度为 1.8。该数字直接从五个区间对计算得出,与任何模型拟合无关。scikit-learn 示例没有以相同方式报告单一宽度数字,但它们确实表明 0.05 和 0.95 预测之间的距离定义了预测区间,并且该距离可能随输入变化,特别是在异方差噪声下。分位数回归示例指出,随着噪声方差增加,5% 和 95% 分位数之间的区间随着 x 的增加而变宽。这种行为是为什么如果区间宽度在输入空间中变化很大,单一平均宽度可能具有误导性的一个原因。

分析五个观测值

示例样本包含五个实现值 [2,5,8,4,10] 和五个对应的区间 [(1,3),(4,6),(6,7),(3,5),(9,11)]。逐一检查每个案例:第一个值 2 在 (1,3) 内;第二个值 5 在 (4,6) 内;第三个值 8 在 (6,7) 外;第四个值 4 在 (3,5) 内;第五个值 10 在 (9,11) 内。这样得到四个在内,一个在外,因此经验覆盖率为 4/5 = 0.80,即 80%。宽度分别为 3 减 1 等于 2,6 减 4 等于 2,7 减 6 等于 1,5 减 3 等于 2,11 减 9 等于 2,因此宽度列表为 [2,2,1,2,2],平均宽度为 1.8。这是一个完全构造的示例,因此应将其视为定义检查,而非关于真实模型或数据集的声明。它还显示了为什么单一覆盖率数字可能掩盖细节:五个观测值中有一个缺失使结果变化了 20 个百分点,对于如此小的样本来说这是一个巨大的波动。

在有用覆盖率下比较宽度

实际比较要问的是,区间是否足够狭窄以有用,同时仍实现保留数据上实际观察到的覆盖率。过于狭窄的区间可能看起来高效但未能达到其覆盖率目标,而非常宽的区间可能轻松达到覆盖率但提供的指导很少。梯度提升分位数示例通过展示调优模型改善了区间形状但测试覆盖率仍低于名义 90%,且测试覆盖率的自助法区间介于 73.8% 和 84.4% 之间,说明了这种权衡。这意味着即使训练覆盖率接近 90%,该区间在保留数据上也不能可靠地达到其名义目标。在比较方法时,更具信息量的是在同一保留集上同时报告覆盖率和宽度,并检查达到的覆盖率是否可接受用于预期用途。示例样本太小,无法支持有意义的宽度与覆盖率比较,但它确实展示了基本思想:平均宽度为 1.8,经验覆盖率为 80%,因此任何关于区间良好的声明都应针对名义目标和更大的保留集进行判断。

检查验证和泄漏

覆盖率和宽度必须在未用于拟合分位数模型的数据上进行评估,因为使用训练集可能使校准看起来比实际更好。如果相同的观测值同时影响拟合的分位数曲线和评估,或者评估使用了在预测时不可用的信息,就可能发生泄漏。梯度提升分位数示例分离了训练和测试数据,并为每个报告了不同的覆盖率值,这是检查校准的正确结构。它还对 0.05 分位数模型使用了交叉验证调优,并报告说调优模型改善了 90% 区间,但仍发现测试覆盖率低于名义水平。分位数回归示例在比较 QuantileRegressor 和 LinearRegression 时,同样使用交叉验证评估了样本外性能。需要注意的点是,极端水平的分位数估计可能不稳定,因为它们依赖于相对较少的观测值,如果评估未与训练适当分离,这种不稳定性可能会放大。示例样本不涉及拟合或泄漏,但它仍然显示了为什么小规模保留集会产生波动的覆盖率估计。

解释校准局限

此处的校准是指保留观测值中落在预测区间内的比例在平均意义上接近名义水平。在一个数据集上的良好校准并不能保证在另一个数据集上也良好,平均校准可能掩盖子组之间或输入空间区域之间的差异。梯度提升分位数示例报告训练覆盖率接近 0.903,测试覆盖率接近 0.796,并明确指出估计的区间过窄,无法覆盖 90% 的测试点。它还报告了测试覆盖率的自助法置信区间介于 73.8% 和 84.4% 之间,这量化了保留估计的不确定性。还有两个进一步的局限值得说明。首先,分位数预测可能发生交叉,因此对于某些输入,下限预测可能超过上限预测,这会破坏区间解释。其次,覆盖率可能在子组之间变化,因此单一的总体覆盖率数字可能无法反映最重要位置的性能。示例样本不显示交叉或子组分析,但它确实表明经验覆盖率只是有限集合中的一个比例,不应被视为精确的长期保证。

检查清单

  • 确认该区间是用于未来观测值还是均值参数,然后再解释覆盖率。
  • 验证下限和上限分位数预测是从单独模型或保持顺序的方法计算得出的。
  • 检查覆盖率是否在保留数据上计算,而不是在用于拟合分位数模型的训练集上计算。
  • 检查分位数预测是否对任何输入发生交叉,这将使区间语义无效。
  • 审查覆盖率在有意义的子组之间是否稳定,而不仅仅依赖于单一的总体比例。
  • 将五值示例仅视为算术说明,而非模型质量或 scikit-learn 性能的证据。

五值示例是为说明而构造的,不构成校准研究或基准结果。从小规模保留集计算的经验覆盖率和宽度具有噪声,如果作为精确估计呈现可能会产生误导。名义覆盖率描述的是许多未来观测值上的长期频率,而不是对任何单个观测值的保证。分位数模型可能发生交叉,覆盖率可能在子组之间变化,因此单一的总体数字可能掩盖特定细分中的糟糕表现。scikit-learn 摘录描述了方法并显示了示例覆盖率数字,但那里的具体测试集覆盖率值来自该示例的合成设置和建模选择,而非分位数回归的普遍性质。极端分位数是从相对较少的观测值中估计的,可能不稳定。此回答仅使用所提供的主要来源和指定的示例数字;不添加执行的测试或观测到的检索结果。

参考来源

  1. scikit-learn: prediction intervals ↗
  2. scikit-learn: quantile regression ↗
返回顶部 ↑