【问题标题】:Predicting time series based on previous events using neural networks使用神经网络基于先前事件预测时间序列
【发布时间】:2021-05-04 10:59:18
【问题描述】:

我想看看以下问题是否可以通过使用神经网络来解决:我有一个包含 1000 多个篮球事件的数据库,其中从第 5 分钟到第 20 分钟每秒记录总得分,以及篮球比赛在哪里都来自同一个联赛。这意味着事件发生在不同的时间段。之后对数据进行插值以具有两个时间步长之间的确切时间差,从而在第 5 分钟和第 20 分钟之间准确获得 300 个点。这可以在这里看到: Time series。最终目标是建立一个模型,该模型可以预测 t=15 到 t=20 之间的 y 值,并将 t=5 和 t=15 之间的 y 值用作输入数据。我想使用包含 1000 个事件的数据库来训练模型。为此,我尝试使用以下网络:

input data vs output data

Neural network

用于训练神经网络模型的输入数据的形状为 (1000,200),输出数据的形状为 (1000,100)。 有人可以为此指导我正确的方向,如果这是解决此类问题的正确方法,可能会给出一些反馈,我发现了一些以前的时间序列问题,但所有这些问题都基于一个大时间序列,而在这种情况我有 1000 个不同的时间序列。

【问题讨论】:

  • 在不了解更多上下文的情况下很难推荐任何东西。例如,这些事件是否同时发生?我也看不出你会在哪里得到你描述的形状的 100 或 200。您可能有输入形状 (1000, 15) 和输出形状 (1000, 5) 之类的东西。虽然正如我所说,我必须了解更多才能知道这是否是个好主意。
  • 赛事为篮球比赛,上半场每秒记录一次。此数据已被插值以每分钟准确获得 20 个数据点,因此从第 5 分钟到第 15 分钟将有 200 个数据点,在第 15 分钟到第 20 分钟之间将有 100 个数据点。

标签: machine-learning neural-network time-series regression


【解决方案1】:

有几种不同的方法可以解决这个问题。基于 cmets,这听起来像是一个单变量/多步时间序列预测,尽管涉及许多不同的事件。

首先澄清大多数时间序列模型/框架的深度学习以(batch_size, n_historical_steps, n_feature_time_series)以下格式获取数据并以(batch_size, n_forecasted_steps, n_targets)格式输出结果。

由于这是一个单变量预测问题n_feature_time_series 将是一个(除非我遗漏了什么)。现在n_historical_steps 是我们经常优化的超参数,因为通常整个时间历史与预测下一次 n 步无关。您可能还想尝试对此进行优化。但是,假设您选择使用完整的时间历史,那么这看起来像(batch_size, 200, 1)。按照这种方法,您可能会得到(batch_size, 100, 1) 的输出形状。然后,您可以使用 1000 的 batch_size 一次输入所有不同的事件(当然假设您有不同的验证/测试集)。这将为您提供(1000, 200, 1) 的输入形状,这就是您可能会这样做的方式例如,如果您要使用 DA-RNN、LSTM、vanilla Transformer 等模型。

还有一些其他模型可以创建可学习的序列 embedding_id,例如 Convolutional Transformer PaperDeep AR。这本质上是一个唯一的序列标识符,将与每个事件相关联,并且模型将学习在每个事件的相同传递中进行预测。

我已经实现了这两种类型的模型,您可以在 Flow Forecast 中使用它们。虽然我目前没有任何关于这类问题的详细教程。我还要说,老实说,鉴于您只有 1000 个 BB 事件(每个事件只有 300 个单变量时间步长)并且在篮球比赛中有许多变量,我怀疑您是否能够以任何真正程度的能力完成这项任务准确性。我猜你可能需要至少 20k+ 篮球赛事数据才能通过深度学习很好地预测这类问题。

【讨论】:

  • 非常感谢!我会深入研究您的提案,同时收集更多数据。
猜你喜欢
  • 2013-02-22
  • 2013-01-15
  • 2014-07-02
  • 2020-09-15
  • 1970-01-01
  • 2014-06-25
  • 1970-01-01
  • 2011-05-12
  • 2015-10-12
相关资源
最近更新 更多