构建分类或回归模型时,通常会将数据拆分为训练数据集和测试数据集。测试数据是整体数据的随机选择子集。
完成训练后,丢弃测试数据,并将构建的模型应用于新的未知数据。
但在时间序列的情况下,这是行不通的:您不能只是随机选择测试数据集的任何数据子集,因为数据是有序的。测试数据集必须由后来对数据的观察组成,而训练数据集由对数据的早期观察组成。
例如,假设您有一年中 11 个月的数据,并且您想要预测 12 月的值。您将使用 1 月到 9 月的数据训练您的模型,然后使用 10 月和 11 月的数据对其进行测试。
但是在您成功训练模型后,您将如何处理测试数据?
一方面,使用由 1 月至 9 月数据构建的模型来预测 12 月的值是没有意义的。这样的模型将错过 10 月和 11 月发生的任何重要趋势。
另一方面,如果将 10 月和 11 月的数据带回模型中,模型的参数会发生变化,因此我们不再确定是否会获得与训练模型时相同的准确度只有一月至九月的数据。
这里似乎有一个两难境地。
那么,当使用机器学习模型,尤其是像神经网络这样的非参数模型进行时间序列预测时,如何解决这个问题呢?他们是将测试数据合并到模型中还是丢弃它?