微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用神经网络根据先前事件预测时间序列

如何解决使用神经网络根据先前事件预测时间序列

我想看看是否可以使用神经网络解决以下问题:我有一个包含 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 个不同的时间序列。

解决方法

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

首先澄清时间序列模型/框架的大多数深度学习采用以下格式 (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,1) 的输入形状例如,如果您要使用 DA-RNN、LSTM、vanilla Transformer 等模型,请执行此操作。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。