假设我们的数据集包含我们想要预测。观察次数为。在以下两种情况下,我对正确的交叉验证有疑问:
我想添加变量,它等于 10 个最近观察值的平均值(该指标并不重要)。在这个扩展数据集上,我想进行线性回归。CV的正确方法是什么(kfold for)?
- 使用整个数据集添加,然后进行“正常”kfold 交叉验证?在这种情况下,有关测试集的一些信息将包含在训练部分中,因此会出现错误偏差。
- 仅使用训练数据在每个折叠中分别添加但接下来的问题是如何在测试集中添加,应该只使用测试集吗?由于测试数据集中的案例数量,变量可能存在偏差。
建立了两个模型(例如:随机森林和梯度提升机),现在想要对这两个模型进行线性混合。模型中的哪些预测应该作为预测变量?一种解决方案是:
- 将数据集拆分为训练/测试(800/200),使用训练数据集构建这两个模型并混合这些概率并在测试数据集上测试最终预测。对测试数据集中的不同折叠重复 5 次。
我相信这个解决方案可能并不完美,因为随机森林往往会过度拟合训练数据集。我觉得混合概率而不是来自训练数据集会更好。为了克服这一点,可以执行以下操作: - 将数据集拆分为训练/测试 (800/200)。然后在训练数据集上做 kfold CV 并用作预测器 out of bag 估计(因此拆分为 640/160)。这是更耗时的解决方案,但应该更可靠。缺点是,如果我们想对 k=5 进行 kfold 交叉验证,那么在输入混合的模型中,我们将在训练数据集中有 16/25 的示例。
- 将数据集拆分为训练/测试(800/200),使用训练数据集构建这两个模型并混合这些概率并在测试数据集上测试最终预测。对测试数据集中的不同折叠重复 5 次。
我坚信这两种情况都是众所周知的,但我想知道这方面的最新技术水平。