数据为非 IID 时的数据分区参考(交叉验证、训练/验证/测试集构建)

机器算法验证 交叉验证 预测模型 参考 独立同居 空间相关
2022-04-14 21:16:29

考虑一个我们对训练回归或分类函数感兴趣的预测设置f带输入XRk和目标Y,并评估其对新数据的预期泛化性能。例如,在回归设置中,我们可能想要估计我们的模型的平均绝对误差 (MAE) 或均方根误差 (RMSE) 将在看不见的数据上,我们通常通过评估我们的模型对持有的预测的预测来做到这一点——出测试集。

许多标准教科书(例如,统计学习要素的第 7 章,模型评估和选择)在我们处理来自联合分布的独立同分布样本的情况下讨论数据分区和交叉验证F(X,Y). 在这种情况下,构建测试集很简单:我们取一个简单的随机样本并将其称为我们的测试集。

是否有任何标准参考来讨论当数据不是独立同分布时应如何修改模型评估策略?我已经看到特定于特定设置的讨论(例如,空间数据的数据分区是关于空间数据的),但我想知道是否有涵盖多个设置的一般参考。

示例包括:

  • 空间数据:模型可能更容易泛化到地理上接近训练集的点,如果我们有兴趣估计模型泛化到远离训练集的点的能力,我们需要考虑这一点在我们的数据分区/测试集构建中
  • 具有自然离散组或层次结构的数据:例如,如果我们正在处理患者和医院,“我的模型如何推广到包含在训练集中的医院中的新患者”的问题不同于“我的模型如何模型推广到新医院”,我们应该相应地构建我们的测试集;我们甚至可能想要回答这两个问题,我们可以使用两个不同的测试集(一个针对被保留的患者,另一个针对被保留的医院)
  • 类似地,如果处理面板数据(例如随着时间的推移观察个体),问题“我的模型在预测已经观察到的个体时如何K次?”的答案可能与“我的模型对以前从未观察到的个体的第一次预测如何?”有不同的答案。
  • 时间序列数据:在某些时间序列上下文中(见https://stats.stackexchange.com/a/195438/9330的例外情况),我们希望构建我们的测试集,以便它们覆盖一个完全“在未来”相对于训练集
  • 更复杂的现实世界示例可能涉及相对于简单 iid 情况的多个“复杂性”:例如,我们可能正在处理时空数据,它也可能具有层次结构或组结构

是否有任何教科书或论文讨论实际问题中的交叉验证或测试集构建,其方式足以涵盖上述所有示例(可能更多)?

有关的:

1个回答

这实际上归结为两个经验法则:

  1. 拆分数据时,请忽略要预测的内容。如果你想推广到新医院,而不是同一家医院的新病人,在做 CV 时一次漏掉一家医院——不要一次漏掉一名病人,因为这只会测试你推广到病人的能力。同一家医院。
  2. 在进行交叉验证时,将您的测试数据拆分成可以被认为是近似独立的折叠。例如,对于时间序列数据,您希望一次省略一次运行/“块”观察。如果您有一个从 1900 年到 2000 年的时间序列并且想要使用 10 次折叠,那么第一次折叠应该是前 10 年,第二次应该是接下来的 10 年,依此类推。这里的想法是,即使时间序列不是独立的,我们也可以认为 10 年足以让大部分相关性消失,尤其是当我们比较已经可以处理时间序列结构的模型时我们的数据。如果我们将每一年分配给随机折叠,模型很容易通过假设 2020 年看起来与 2021 年和 2019 年相同来“作弊”,但很难从 2010 年预测 2020 年。

一些相关论文:

https://onlinelibrary.wiley.com/doi/abs/10.1111/ecog.02881

https://www.sciencedirect.com/science/article/pii/S0020025511006773

https://www.tandfonline.com/doi/full/10.1080/00949655.2020.1783262

你也可以查看 Sperrorest R 包。