首页 > 解决方案 > 使用神经网络根据先前事件预测时间序列

问题描述

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

输入数据与输出数据

神经网络

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

标签: machine-learningneural-networktime-seriesregression

解决方案


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

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

由于这是一个单变量预测问题n_feature_time_series(除非我遗漏了什么)。Nown_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+ 篮球赛事数据才能至少通过深度学习很好地预测这类问题。


推荐阅读