样本外误差的自举估计

机器算法验证 引导程序 重采样 样本外
2022-03-12 13:27:51

我知道如何使用引导重采样来查找样本内错误或 R2 的置信区间

# Bootstrap 95% CI for R-Squared
library(boot)
# function to obtain R-Squared from the data 
rsq <- function(formula, data, indices) {
  d <- data[indices,] # allows boot to select sample 
  fit <- lm(formula, data=d)
  return(summary(fit)$r.square)
} 
# bootstrapping with 1000 replications 
results <- boot(data=mtcars, statistic=rsq, 
     R=1000, formula=mpg~wt+disp)

# view results
results 
plot(results)

# get 95% confidence interval 
boot.ci(results, type="bca")

但是如果我想估计样本外错误(有点类似于交叉验证)怎么办?我可以为每个自举样本拟合一个模型,然后使用该模型来预测每个其他自举样本,然后对这些预测的 RMSE 进行平均吗?

3个回答

这需要标准的 Efron-Gong “乐观”引导程序。在 R 中,您可以这样做:

require(rms)
# Allow age to interact with sex and age and BP to have nonlinear effects
# using restricted cubic splines (5 and 4 knots)
f <- ols(y ~ rcs(age,5)*sex + rcs(blood.pressure,4), x=TRUE, y=TRUE)
validate(f, B=300)

这将为您提供自举过拟合校正估计R2、MSE 等指标。获得自举过拟合校正的校准曲线(估计之间的关系^),运行plot(calibrate(f, B=300))

这种类型的 bootstrap 估计最终模型在来自同一“主题流”的新主题上可能的未来表现。一些观察结果被重复、三次等,并且“训练”和“测试”数据集在引导期间重叠。根据 100 次重复 10 倍交叉验证,bootstrap 提供了对未来性能的极具竞争力的估计。

如果我理解这些问题,简短的回答是“不”。样本外错误不在您的样本中,并且您的样本无法进行自举或其他分析工作来计算它。

回答您关于引导程序是否可用于检查具有训练集之外数据的模型的评论:两种可能的解释。

用传统方法在你的训练集上拟合一个模型,然后在训练集上使用引导来检查你的估计器的分布等事情,这会很好,而且绝对是标准的。然后使用来自该训练集的最终模型来针对测试集进行测试。

可以执行一个类似于引导程序过程,其中涉及一个循环:

  • 选择整个样本的一个子集作为你的训练集
  • 将模型拟合到该数据的训练集
  • 将该模型与剩余数据的测试集进行比较,并生成某种测试统计量,说明训练集中的模型与测试集的对比情况。

然后考虑多次这样做的结果。当然,它会让您深入了解训练/测试过程的稳健性。这会让您放心,您获得的特定模型不仅仅是由于您的一次拆分中最终出现在测试集中的可能性。

然而,很难确切地说出为什么,但在我看来,测试/培训部门的想法与引导程序之间存在哲学冲突。也许如果我不认为它是一个引导程序,而只是对训练/测试过程的稳健性测试,那就没问题了......

Bootstrap 既不是样本内测试也不是样本外测试。

考虑引导逻辑: 1. 在原始样本中计算统计量;2. 通过从有放回的样本中抽样构建重样本(该样本被认为是来自同一总体的可能样本) 3. 计算出的相同统计量 4. 重复第 2 步和第 3 步,以及获得的统计量的分布然后用于构建置信区间

现在将其转换为样本外测试的概念,您可以根据原始样本估计预测模型,然后进行样本外测试。样本外样本应该是从同一总体中抽取的原始样本以外的任何样本。

替换重采样为您提供了这样的样本,或者如果您愿意,确实可以提供许多这样的样本。现在,您可以使用原始预测模型中的原始模型估计来预测新重新采样的结果。

您现在可以计算模型拟合统计量,以查看这些预测结果是否预测了原始样本和所有重采样中相似的变异份额。所有结果是否都比较相似,那么过度拟合就没有问题了。重新采样的结果(显着)是否比模型在原始样本中的拟合更差,那么您就有过拟合的证据。

在比较不同的训练模型时,您可以在重采样中选择具有最佳(平均)模型拟合的模型。更高级的策略涉及模型拟合的方差,但在我看来几乎没有添加。

最良好的祝愿