时间序列预测中序列长度和批量大小之间的差异

数据挖掘 喀拉斯 张量流 时间序列 预测
2022-02-23 05:09:14

我正在使用 Keras 进行时间序列预测,我正在尝试了解 keras 官方网站上有关时间序列预测的教程,您可以在此处找到 ( https://keras.io/examples/timeseries/timeseries_weather_forecasting/ )。

他们使用一种名为keras.preprocessing.timeseries_dataset_from_array的 keras 方法,它具有以下参数(这里是文档https://www.tensorflow.org/api_docs/python/tf/keras/preprocessing/timeseries_dataset_from_array):

    dataset_train = keras.preprocessing.timeseries_dataset_from_array(
    x_train,
    y_train,
    sequence_length=sequence_length,
    sampling_rate=step,
    batch_size=batch_size,
)

所以我的问题是序列长度和批量大小有什么区别。我认为序列是滑动窗口的大小(x 特征和一个目标 y 值)。但是批量大小是多少?不幸的是,我无法查看此方法的输出

   print(dataset_train) or 
   print(dataset_train.head()) 

没有向我显示数据,我不知道任何其他函数如何查看该方法的输出。

你们有没有人使用过这种方法或一般有序列和批次的经验?我会很感激每一条评论。

1个回答

假设一个 TS data = [ 1, 2, 3, 4, 5, 7, 8, 9, 10 ]
调用带有这些参数的函数
sequence_length=5, sampling_rate=1, sequence_stride=1, shuffle=False, batch_size=2

shuffle, batch_size对 TS 数据的创建没有任何作用。当您对返回的数据集进行迭代时,它将生效。

在这种情况下,我们将有以下数据点,
[ 1, 2, 3, 4, 5 ]
[ 2, 3, 4, 5, 6 ]
[ 3, 4, 5, 6, 7 ]
[ 4, 5, 6, 7, 8 ]
[ 5, 6, 7, 8, 9 ]
[ 6, 7, 8, 9, 10 ]

batch_size
当您在此数据集上进行迭代时,您将在每次迭代中 收到2 条记录。
如果shuffle=True,记录将在批处理之前被打乱。

for batch in dataset:
  inputs, targets = batch

在上面的代码片段中,输入将是一批记录,而不仅仅是一条记录。如果需要,您可能有batch_size=1

targets

与数据中的时间步相对应的目标。它应该与数据具有相同的长度。targets[i] 应该是对应于从索引 i 开始的窗口的目标(参见下面的示例 2)。如果没有目标数据,则传递 None(在这种情况下,数据集只会产生输入数据)

这是一个通用功能。
它不是在某些逻辑上决定目标,即自回归方法它期望提供目标,否则,它只会返回预测变量。