时间序列分类如何工作?

数据挖掘 机器学习 分类 时间序列
2022-03-09 19:18:10

所以我有这种格式的多个时间序列数据——

id 周 X1 X2 X3 y

1 201901 10. 34.9 52.8 0

1 201902 20. 44.1 12.6 1

1 201903 30. 54.2 84.3 1

1 201904 40. 64.4 77.1 0

2 201901 10. 64.9 62.8 1

2 201902 20. 54.1 22.6 1

2 201903 30. 34.2 54.3 1

2 201904 40. 44.4 17.1 0

我想预测y接下来的两周。我该如何解决这个问题?

我认为的一种方法是在数据集上进行训练,然后测试数据看起来像这样 -

id 周 X1 X2 X3  
1 201905 20. 45.2. 33.2
2 201905 10. 65.2. 23.2

这是进行这种分类的正确方法吗?或者我应该独立训练每个时间序列的模型。

谢谢!

1个回答

需要明确的是,这里的时间序列分类是指预测离散值。在另一种情况下,时间序列分类可以指预测整个时间序列的单个类别(即心脏病与健康心脏)。感谢@mloning 指出这一点。

在预测离散输出时,模型被训练为根据之前的值预测下一个值,这意味着

  • 输入是时间戳之前的历史数据t(在您的场景中,数据不超过week = 201904
  • 输出是时间戳t + 1ywhen week = 201905)处的值

如果您想预测未来超过 1 个值,您应该以循环方式执行预测,即:

  • 使用数据t进行预测t + 1
  • 将您的预测添加到您的数据中
  • 使用最多t + 1t + 1您自己的预测在哪里)的数据来预测t + 2
  • 等等

你想看多远的未来叫做地平线您可以随意使用任意大的地平线。当然,由于未来的每一步都是基于猜测而不是实际数据,因此预计您看得越远,您的预测就会变得越糟糕。这很有意义。这就是为什么预测明天的天气比 7 天后的天气更容易的原因。

将数据拆分为训练和测试与普通分类问题没有太大区别。唯一的限制是您的测试数据应该只包含与训练数据相比“未来”的数据。这是一个很好的博客:https ://towardsdatascience.com/time-based-cross-validation-d259b13d42b8


  • 我应该为每个时间序列独立训练模型吗?

简短的回答:尝试两种方法,看看哪一种效果最好

长答案:

所有这一切都取决于您是否相信每个时间序列代表不同的“过程”或“模式”。可能是单个模型可以对任一时间序列做出良好的预测。也可能是两个时间序列都代表不同的过程,因此,为每个时间序列训练不同的模型可能更明智。

把它想象成天气预报。我可以拥有一堆城市的时间序列数据。我可以为每个城市训练一个特定的模型,但它也可能有助于使用来自所有城市的数据来训练一个模型,以便它可以捕获通用的天气模式。如果突然之间,我需要预测一个我不知道的新城市的天气,这会有所帮助。由于我不知道它,我没有专门用于它的模型,所以我需要重用一个,理想情况下应该足够通用。