我可以使用列车和测试数据进行推测吗



有趣的是,我在stackoverflow和其他网站上都看到了很多不同的答案:

在处理我的训练数据集时,我使用决策树模型估算某一列的缺失值。这是我的问题。使用所有可用数据(训练和测试)来建立插补模型(而不是预测)公平吗?或者在这样做时我可以只接触训练集吗?此外,一旦我开始处理我的测试集,我是否必须只使用我的测试集中的数据,使用与训练集中相同的插补模型进行插补,或者我是否可以使用所有可用的数据来重新训练我的插补模型?

我想,只要我不接触我的测试集进行预测模型训练,就可以把其余的数据用于计算之类的事情。但也许这会打破一条基本规则。想法?

在对训练集进行任何处理时,不要使用测试集中的任何信息@马克西姆和链接到的答案是正确的,但我想补充一下答案。

推测试图从不完整的数据中推断出缺失条目的可能值。我认为将缺失的值视为测量误差的一种形式是有帮助的(有关这方面的有用演示,请参阅本文)。因此,有理由相信缺失与底层数据生成过程有关。这个过程正是你试图用你的模型复制的(当然,这是不完美的)。

如果你想让你的模型很好地概括——我们都不要!——那么,最好确保对训练集所做的任何处理都只取决于该集中包含的数据中的信息。

我甚至建议您考虑三个部分:测试、培训和验证集。验证集是从训练集中进一步挑选出来的,用于测试模型对"自身"的拟合(在超参数的调整中)。在某种程度上,这就是交叉验证程序在sklearn和其他管道中所做的事情。在这种情况下,我通常在CV分割后进行插补,而不是在完整的训练集上,因为我试图根据模型"知道"的数据(而保留数据是未知/未来数据的代理)来评估模型。但请注意,我并没有看到这一建议像在测试和训练集之间保持一堵完整的墙一样一致。

我同意交叉验证的答案:

训练集和测试集之间的划分是为了复制您拥有过去的信息并正在构建模型的情况您将在未来未知信息上测试

预处理数据的方式可能会影响模型性能,在某些情况下会产生显著影响。测试数据是您不知道的样本的代理。如果你知道未来的所有数据,你会以不同的方式进行插补吗?如果是,那么使用测试数据就是作弊。如果没有,则无论如何都不需要测试数据。因此,在建立模型之前,最好不要接触测试数据。

将数据拆分为训练集和测试集背后的理念是有机会通过新的(ish)数据验证模型,对吧?因此,通过在训练集和测试集上使用相同的估算器,您在某种程度上破坏了测试数据,这可能会导致过度拟合。您可以使用相同的方法来估算两个集合(在您的情况下,是决策树)上的缺失数据,但是,您应该实例化两个不同的模型,并将每个模型与自己的相关数据相匹配。

相关内容

  • 没有找到相关文章

最新更新