如何确定我的数据拆分是否适合我的数据大小?

数据挖掘 深度学习 神经网络 数据集
2021-09-23 09:22:32

我目前有一个模型,它有一个相当大的数据集(50ishMB),并且在 80:20 的分割中表现得很好。但是,当我尝试将其更改为 50:50 分割时,该模型的性能比 80:20 分割高 28%。请注意,这是一个时间序列问题。

由于我已经评估了该模型在该数据拆分中的表现更好,是否可以继续使用它,还是应该继续使用 80:20 拆分?为什么?

2个回答

分配更多示例进行训练可以让您的模型暴露于数据中更多类型的隐藏模式,并可能学习更好的表示。在分配更多示例进行测试的同时,您可以更好地准确评估这些数据模式。最终,这是您做出的项目特定权衡。

注意事项

  • 对于特定的训练模型,评估是否需要精确,或者可以是范围近似?如果是后者,那么cross validation让我们最好地使用所有数据来学习和评估。

  • 模型是使用经典的还是深度学习的?后一种技术通常需要更多的数据,因此我更倾向于 99:1 的训练/测试拆分,而不是典型的 70:30 或 80:20 拆分。

  • 问题域是简单还是极其困难?即:是否存在子模式、许多边缘案例、许多类要学习的高度人类分歧?您可以绘制图表learning curves以查看您的模型对不同数据量的学习效果如何。一旦达到稳定状态,您就可以分配多余的数据进行评估。

  • 获得高质量和有代表性的标记数据有多昂贵?如果便宜,可以考虑创建ship-gates(单元测试等效)数据集来捕获各种数据场景。

  • 数据是否严重不平衡、非常嘈杂或非常重复?如果是这样,我会在随机拆分上应用更智能的拆分技术,例如stratified sampling,imbalance handling等。


分配更多数据用于训练是很常见的。我会将在您的 50:50 数据拆分中感知到的改进性能简单地归因于由于学习示例较少而产生的过度拟合模型较少。

通常不建议使用50:50分割。人们通常会保留更多的数据用于训练,而保留更少的数据用于测试/验证。

你拥有的训练数据越多,模型就越能捕捉到不同的数据场景,你拥有的测试数据越多,你的训练模型就会得到更好的评估。所以这是两者之间的权衡,最终你必须决定你更喜欢哪一个。

既然你提到你有一个大数据集,那么与你有一个小数据集相比,选择50:50不会有那么大的问题。但是您仍然会丢失一些数据模式,这反过来会降低您的模型的泛化性,因此请记住这一点!

这种权衡的可能解决方案是cross-validation(最好是nested cross-validation)。这样,即使您的训练数据较少,您的模型也会以最佳方式使用所有这些数据。

干杯!