仅将保留样本和训练样本拆分一次?

数据挖掘 机器学习 预言 评估 网格搜索
2022-03-07 07:59:01

我有一个与评估样本外预测有关的问题。

对于我的研究,我想调整与支持向量机相关的两个参数,并使用这些优化的参数来尽可能好地预测保留样本。为了评估我的模型,我显然必须将我的数据分成训练样本 (80%) 和保留样本 (20%)。在调整参数时,我也使用 10 倍 CV,但这仅涉及训练样本。

现在我认为我的方法不是超级有效,因为保持样本与训练样本的 20-80 拆分只进行了一次,因此可能太受随机性的影响。不过,我觉得这种方法用的挺多的,比如http://www.sciencedirect.com/science/article/pii/S095741740400096X

在我早期的研究中,我进行了留一法预测,其中我使用了 n-1 个观测值并预测了剩余的观测值(这样每个观测值都被预测一次,使用仅基于其他 n-1 训练的模型)观察)。但是,在我的新项目中这是不可能的,因为我还需要调整参数 n 次,这将需要太多时间,并且意味着我会丢失与这些参数值相关的解释/绘图。

简而言之:我只将训练和保留样本分开一次是一件坏事吗?有人对我目前的方法有任何意见吗?

1个回答

一般来说,将数据分成三组是个好主意:

  • 训练集(60-80% 的数据)
  • 交叉验证集(10-20% 的数据)
  • 测试集(10-20% 的数据)

当您选择仅使用训练集和测试集的模型时,您选择的是在之后的测试集上表现最佳的模型。起初这似乎是合理的,但这通常是对模型泛化误差的过于乐观的估计。这是因为您实际上是在将模型拟合到另一个参数d, 在哪里d是你的测试集。

为了解决这个问题,你可以在你的训练集上训练一个模型,然后选择在你的交叉验证集上表现最好的模型。现在,该模型不再适合测试集,您可以安全地估计测试集上的泛化误差。

听起来您已经在遵循这种方法来选择模型,方法是选择在您的训练集上进行 10 倍交叉验证时表现最佳的模型。在这种情况下,您的测试集上的错误应该是对泛化错误的良好估计。

您还提到,由于训练数据中的异常值,随机性可能会影响您的训练:

...因为保留样本与训练样本的 20-80 拆分只进行了一次,因此可能太受随机性的影响。

在机器学习中,通常假设我们的数据是来自某个未知分布的独立同分布(独立同分布)。平均而言,当我们拆分数据时,我们应该得到代表这种分布的数据点。更好地确保这一点的一种常见做法是在拆分数据之前随机打乱整个数据集。