预测序列中的下一个数字 - 数据分析

数据挖掘 机器学习 时间序列 lstm rnn 序列到序列
2022-02-23 02:47:36

我是一个机器学习新手,我正在做一个项目,我得到一个整数序列,所有这些整数都在 0 到 70 的范围内。我的目标是在给定前 5 个整数的情况下预测序列中的下一个整数相同的顺序。关于整数序列本身的信息并不多(例如,如何获得序列等)。

以下是我尝试过的事情。

  1. 首先想到的是使用具有 5 个输入时间步长和一个输出的 LSTM 回归模型(对应于序列中的下一个整数 - 在 Keras 中,这将是 return_sequences=False)。我自己传递了 5 个之前的整数作为输入。这导致模型一直在预测几乎平均值(~30)。
  2. 我尝试了上面(1)中的模型,但输入时间步长更多(比如 100),但仍然没有改进。
  3. 然后我尝试了(1)和(2),但这次使用连续整数之间的差异作为输入,并尝试预测与序列中下一个整数的差异。这样做的结果仍然很糟糕。
  4. 然后,我通过对输入和输出进行单热编码尝试了 LSTM 分类模型,因为我知道序列中的所有整数都在 0 到 70 的范围内。同样,没有任何改进。
  5. 然后我尝试了一个 seq2seq(编码器-解码器)LSTM 模型,编码器中有 5 个输入,解码器中有 5 个输出,正确的输出也被输入解码器(教师强制)。结果还是很糟糕。

此时我开始怀疑我是否可以在给定数据上训练模型,以及给定数据是否只是一堆随机整数。

我寻找统计测试来确定数据是否是随机的,并发现了pandas autocorrelation plot这是根据连续整数之间的差异绘制的图(使用实际整数本身绘制时看起来相似)。

在此处输入图像描述

据我了解,由于这些值非常接近于零,这意味着数据是随机的。是对的吗 ?

我还使用了 statsmodels“plot_acf”,下面是我得到的连续整数之间差异的图。

在此处输入图像描述

我看到当滞后为 1 时存在一些负相关。为什么使用 pandas 的 autocorrelation_plot() 没有显示在图中?

我也尝试建立一个 AR(自动回归)模型,但结果仍然很糟糕。

序列中整数的直方图似乎也表明整数是随机的(所有值的计数大致相同,除了一些更高的整数)。

在此处输入图像描述

我是否在浪费时间尝试构建机器学习模型来预测序列中的下一个整数?

1个回答

有趣的问题。pandas 自相关图表明数据是随机的。

你对源头了解多少?事实上,这个序列是随机的,可信吗?

您是否浏览过数据并绘制了整数外观计数的直方图?它们的出现是一致的还是比其他的更频繁?

我认为您应该尝试的一件事是重新制定您的 LSTM 模型。我不认为这是一个回归问题,即使目标是一个整数。这是一个有 70 个类别的分类问题。尝试以这种方式处理它并使用分类交叉熵损失函数。在这种情况下,约 1.5% 的准确度将代表随机猜测。模型能做得比这更好吗?