结合 Bootstrap 和交叉验证

机器算法验证 交叉验证 引导程序 偏最小二乘法
2022-04-02 21:34:43

我正在尝试考虑结合引导程序和交叉验证 (CV) 来获得样本外预测误差及其置信区间的方法。我最初考虑将其应用于偏最小二乘分析,但问题更为笼统。

我已经阅读了一些似乎首先进行引导的论文(即随机重新采样数据),然后使用 CV 运行模型(并重复 B 次),以生成 r^2 值的分布(或用于预测的任何度量)你喜欢的错误)。这对我来说没有意义,因为它违背了 CV 的观点,因为在引导过程中,我认为这会使 36% 的数据重复值。

或者,我认为可以从计算 CV 预测值开始,然后对这些值进行引导重新采样,然后计算最终预测误差统计数据(例如 r^2)并重复以获得 r^2 的分布?但是,我不确定这种最终方法是否合理,因为通常在引导过程中,您首先重新采样数据并运行模型来计算输出。在这种情况下,模型已经运行,并且仅对预测值进行自举重采样以生成分布。

后一种方法是否合理?我一直在努力寻找这方面的论文,这些论文写得相对容易理解……

1个回答

引导程序当然是评估模型内部验证的一种方式。Ewout W. Steyerberg 在他的《临床预测模型》一书中描述了如何使用引导程序来估计乐观校正的性能。程序如下:

  1. 在原始样本中构建模型;从用于构建模型的样本中确定数据的表观性能。
  2. 绘制一个引导样本 (Sample*),并从原始样本中替换
  3. 在 Sample* 中构建模型(Model*),重播在原始样本中完成的每个步骤,尤其是模型规范步骤,例如预测变量的选择。将 bootstrap 性能确定为 Model* 在 Sample* 中的表观性能;
  4. 将 Model* 应用于原始样品,无需任何修改,以确定测试性能;
  5. 计算乐观度(引导性能 - 测试性能)。
  6. 重复步骤 1-5 多次,至少 200 次,以获得乐观的稳定平均估计。
  7. 从表观性能中减去平均乐观估计,以获得乐观校正后的性能。

在该方案中,表观性能取决于模型所源自的样本。在机器学习中,这通常被称为训练错误。如果您正在使用诸如插入符号或 sklearn 之类的流行工具,Frank Harrell 编写了 10 倍重复交叉验证,重复 100 次是此过程的优秀竞争对手

至于预测误差的区间估计,上述过程的结果为乐观提供了一个近似的抽样分布,因此您应该能够从每个乐观引导结果中减去表观性能,然后通过以下方式估计区间取适当的分位数或使用偏差调整的引导置信区间。不过,我会搜索这方面的文献,因为虽然这听起来很合理,但我不确定它在方法上是否合理。