如何使用训练/测试正确预测 LSTM 数据?

数据挖掘 神经网络 lstm
2022-02-23 14:20:18

我在这里看到一个悖论。如果我们使用训练/测试拆分并评估我们的测试数据,我们可能会得到一个不错的分数,但任何进一步的预测都不可信,因为模型没有训练测试数据并将其序列包含在内存中。

另一方面,我们可以将 Train 和 Test 序列上的数据作为训练数据进行训练,但是我们无法评估我们的预测,因为我们没有测试参考。

你如何正确预测 LSTM 模型?

3个回答

您寻求增强模型的外部有效性。

最常见的方法是应用k 折交叉验证来验证您的模型是否可以很好地概括未见过的数据。

在 k 折交叉验证中,原始样本被随机划分为 k 个大小相等的子样本。在 k 个子样本中,保留一个子样本作为验证数据用于测试模型,剩余的 k-1 个子样本用作训练数据。然后交叉验证过程重复 k 次,k 个子样本中的每个子样本只使用一次作为验证数据。然后可以对 k 个结果进行平均以产生单个估计。

这将减少模型的方差,并减少其对未见数据的错误。

这种情况在通用建模设置中很常见,不仅适用于 LSTM。

在开发阶段,使用训练数据构建模型,并使用测试数据来估计模型质量。发布此消息后,该模型在整个数据上进行训练,并且此更新后的模型用于预测新数据点。

一般来说,有效的学习就是要使训练误差小,训练和测试误差之间的差距小。
通过测试数据,我们的意思是您的模型以前从未见过的示例。所以你需要开发(验证)集,来微调你的超参数,比如隐藏单元、层数、学习率等。
将训练数据分成训练/开发集,小心测试集必须始终从相同生成生成您的训练/开发集的数据分布。
LSTM 可能会过度拟合您的数据集,从 vanilla RNN 或小型 GRU 开始。
当验证示例的损失停止减少时,使用提前停止来停止训练。