用 NN 预测时间序列:数据集应该改组吗?

机器算法验证 时间序列 机器学习 预测 神经网络 预言
2022-03-21 12:44:59

假设我正在尝试使用神经网络预测时间序列。数据集是从单列时间数据创建的,其中每个模式的输入是[t-n, t-n+1, ... , t]t是时间步长和n嵌入大小,[t+1]是目标(预测系列的“下一步”)。问题来了:如果我使用这样的数据集进行 NN 训练,我应该打乱它吗?改组通常是通过防止 NN 记住模式顺序来避免过度拟合。但是,在时间序列的情况下,模式顺序是否可以成为我不应该剥夺 NN 的一种信息形式?如果涉及到循环神经网络,问题会变得更加严重,每个模式都会循环接收有关前一个模式的信息:如果模式有序,RNN 会受益吗?

2个回答

假设您有一个要学习的时间序列。然后您可以使用前半部分来开发模型,后半部分用于测试。

现在,您将两半分别切割成窗口,并可以将训练集的那些部分打乱。

据我所知,改组实际上不是因为泛化,而是因为优化。如果您不查看它们的总和,而是通过查看总和子集的梯度​​来估计梯度,那么优化函数总和(在这种情况下,每个时间窗口一个损失函数)有时会更有效。查看 Nicolas Le Roux 和 Marc Schmidt 针对该主题最近发表的文章。

如果您使用的是像传统 MLP 这样的非循环神经网络,则不需要对数据集进行洗牌,尤其是在使用批量学习算法的情况下。无论如何,根据我的经验,打乱数据集以获得更快的训练和更清晰的结果是一个好主意。我可以向您推荐 LeCun 等人的“ Efficient BackProp ”,您可以在其中找到有关使用 NN 的一组有用的提示和技巧。