GRU/LSTM 模型 - 训练/测试拆分

数据挖掘 lstm
2022-03-01 01:21:52

我把自己逼到了一个角落,有人可以解释一下吗?

我觉得我错过了一些明显的东西......

如果对于 LSTM,每一层都使用来自 t 和 t-1 的输入进行训练,那么这意味着如果我有一个包含 10 000 个观察值的训练集,那么网络将被训练以获得 10 000 个观察值并产生一个结果是所有这些的函数。如果我在一个包含 1 000 个观察值的测试集上使用它,为什么它会起作用?

或者,如果我想从一次观察中做出预测,这会起作用吗?

在 LSTM 的情况下,训练测试(在上面的玩具示例中)是否应该是 10000 个观测值(即 9000 个旧的“训练”观测值和 1000 个新的“测试”观测值)?

1个回答

LSTM 通常用于序列预测问题,例如,当数据集是时间序列时。

在那种数据集中,您不会以正常(又名随机)的方式拆分数据集,以避免前瞻偏差。正如您所说,我们应该用“旧观察”进行训练并用“新观察”进行测试。

在 LSTM 的情况下,训练测试(在上面的玩具示例中)是否应该是 10000 个观测值(即 9000 个旧的“训练”观测值和 1000 个新的“测试”观测值)?

这句话对我来说有点不清楚。如果您有一个包含 10 000 个观测值的数据集,则可以使用 9000 个旧观测值进行训练并使用 1000 个新观测值进行测试。在任何情况下,训练集都不应该包含测试数据。

下面是一个如何拆分时间序列数据集的示例:我们有从 01-01-2000 到 31-12-2004 的数据,我们可以选择 01-01-2004 作为拆分日期:

  • 训练集:数据从 01-01-2000 到 31-12-2003

  • 测试集:数据从 01-01-2004 到 31-12-2004

在这种情况下,在训练阶段没有使用来自未来的知识,我们可以使用模型来预测测试集中的数据。