0

所以我的数据看起来像:

year, y, x1, x2, x3, x4
2009, 0.5, 0.4, 0.4, 0.9
2013, nan, 0.4, 0.5, 0.8
2020, 0.8, 0.39, 0.51, 0.7

数据是按年计算的,但每年之间的间隔并不一致。y 的值取决于时间和特征。但在某些情况下,我最需要的 y 丢失了。其他功能也可能会丢失,但大多数情况下它们都在那里。我曾尝试通过df.interpolate()函数输入数据,但值在大多数函数的区间中并不合适。我尝试过 ARIMA、LSTM 等,但他们不考虑输入特征。我也考虑过使用回归技术,但它们不包含数据的时间序列性质。

那么对于这种情况,最好的方法是什么。IE

如何根据输入特征估算时间序列值?

4

4 回答 4

2

有趣的问题,您的问题没有规则或好的答案...

似乎您想从 t+1 开始预测 t+n 个点,其中 t 是您的最后一个已知点。

如果是这样,您需要:

  • 调整您的数据:为了预测 t+1 一个连续的时间序列,您的数据似乎不是定期间隔的。因此,有一种称为 Croston 的方法,可以帮助处理间歇性数据。简单的话,您可以对数据进行分组以减少长 0 数据点(和未知特征)。Pandas 提供了一种很好的方法来重新采样(?)您的数据帧以创建规则间隔的时间序列数据(该方法称为重新采样)

删除未知目标值(带有 nans 的 y)很重要。但是这样做会丢失一些重要信息,因此一种方法是创建两个模型。一种用于数据插补以填充未知值 y。第二个用于预测 y 的未来值。

第一个模型可以表示为 AutoEncoder,其中特征表示当前时间。换句话说,给定 n 个特征预测 y。其中 n 和 y 是从同一时间 t(同一行)获得的。

第二个模型可以预测未来(预测),因此在输入缺失的 y 值后,预测未来 t+n,其中 n 存在 {1 -> +inf}。

另一种处理缺失值的好方法是创建三个模型而不是两个。

首先是上面提到的数据插补。

填充缺失的目标值后,使用新矩阵输入第二个自动编码器。

使用第二个 AE 的隐藏状态作为第三个模型的输入,这样您可能会丢失值,并且 AE 可以使用最佳预测未来来获得这些值的压缩表示。

最佳架构因问题而异。例如,在您的情况下,您可以删除缺失的目标值并获得一个好的最终模型。

一项必要的调整是输入缺失的特征值,但我会在添加一些噪声之前尝试缺失值。如果需要,您可以添加滚动窗口的平均值、中值、最小值或最大值(使用滚动方法 pandas)。

于 2020-07-12T21:17:18.520 回答
1

您是否考虑过混合基于特征和基于时间的方法?例如,您可以对非缺失值进行线性回归训练,并获得用于预测缺失值的特征系数,然后对时间分量进行简单/加权移动平均/ARIMA/LSTM 等。然后为两者的结果分配权重,以得出来自特征和时间序列的预测。

于 2020-06-17T22:29:35.967 回答
1

如果您使用的是 TensorFlow,我相信这个示例与您正在寻找的非常接近。它展示了如何在你的神经网络中包含多个特征。我认为您要查找的部分是一个多元的单步模型:

https://www.tensorflow.org/tutorials/structured_data/time_series#part_2_forecast_a_multivariate_time_series

于 2020-07-10T19:53:48.117 回答
1

您可以将其设为回归问题,使用前导函数创建目标。添加一个变量,用于标识目标变量有多少 [periods_ahead]。然后,您将periods_ahead其用作回归模型的输入特征。这里的缺点是您还需要添加滞后特征或创建时间差异(目标转换)以手动使目标静止,而不是依赖时间序列算法。

于 2020-07-13T18:51:57.040 回答