需要明确的是,这里的时间序列分类是指预测离散值。在另一种情况下,时间序列分类可以指预测整个时间序列的单个类别(即心脏病与健康心脏)。感谢@mloning 指出这一点。
在预测离散输出时,模型被训练为根据之前的值预测下一个值,这意味着
- 输入是时间戳之前的历史数据
t(在您的场景中,数据不超过week = 201904)
- 输出是时间戳
t + 1(ywhen week = 201905)处的值
如果您想预测未来超过 1 个值,您应该以循环方式执行预测,即:
- 使用数据
t进行预测t + 1
- 将您的预测添加到您的数据中
- 使用最多
t + 1(t + 1您自己的预测在哪里)的数据来预测t + 2
- 等等
你想看多远的未来叫做地平线。您可以随意使用任意大的地平线。当然,由于未来的每一步都是基于猜测而不是实际数据,因此预计您看得越远,您的预测就会变得越糟糕。这很有意义。这就是为什么预测明天的天气比 7 天后的天气更容易的原因。
将数据拆分为训练和测试与普通分类问题没有太大区别。唯一的限制是您的测试数据应该只包含与训练数据相比“未来”的数据。这是一个很好的博客:https ://towardsdatascience.com/time-based-cross-validation-d259b13d42b8
简短的回答:尝试两种方法,看看哪一种效果最好
长答案:
所有这一切都取决于您是否相信每个时间序列代表不同的“过程”或“模式”。可能是单个模型可以对任一时间序列做出良好的预测。也可能是两个时间序列都代表不同的过程,因此,为每个时间序列训练不同的模型可能更明智。
把它想象成天气预报。我可以拥有一堆城市的时间序列数据。我可以为每个城市训练一个特定的模型,但它也可能有助于使用来自所有城市的数据来训练一个模型,以便它可以捕获通用的天气模式。如果突然之间,我需要预测一个我不知道的新城市的天气,这会有所帮助。由于我不知道它,我没有专门用于它的模型,所以我需要重用一个,理想情况下应该足够通用。