我遵循一些有关LSTM多步预测的教程来解决我的问题。
我的问题:我的时间序列价格约为3个月(2018年1月至2018年3月),我在数据中假设有季节性影响。因此,由于这种季节性影响,我的时间序列行为发生了变化。
Q1 是否需要应用滑动窗口以防止从太长的序列中学习。例如,每个训练样本都采用前14天的价格来预测未来14天的价格。换句话说,我的输入是(t-1), (t-2), ... , (t-7)
,而我的输出是(t), (t+1), ... , (t+6)
。
第2季度,我读了this post,并认为通过传递整个序列很有趣,让模型利用设置return_sequence=True
和{{ 1}}。但是,我是LSTM的新手,所以我不清楚如何根据此类文章将其应用于模型。
假设我的数据看起来像这样
stateful=True
如果我按照以下方式配置模型
import pandas as pd
import numpy as pd
np.random.seed(40)
df = pd.DataFrame({"Price":list(np.random.choice(range(1000, 1500), 14)) +
list(np.random.choice(range(1500, 2000), 14)) +
list(np.random.choice(range(1800, 2500), 14)) +
list(np.random.choice(range(1200, 1500), 14)) +
list(np.random.choice(range(1500, 2000), 14)) +
list(np.random.choice(range(1800, 2300), 14)) +
list(np.random.choice(range(2500, 3000), 14)) +
list(np.random.choice(range(2400, 2800), 14)) +
list(np.random.choice(range(2600, 3000), 14)) +
list(np.random.choice(range(2300, 2700), 14))},
index=pd.date_range(start="2018-03-25", periods=140))
df["Price"] = df["Price"].astype(float)
scaler = MinMaxScaler(feature_range=(0, 1))
df["Scaled"] = scaler.fit_transform(df["Price"].values.reshape(-1, 1))
为我的问题设置from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
model = Sequential()
model.add(LSTM(no_neuron, input_shape=(no_sample, timestep, no_feature)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
有意义吗?以及如何定义批量大小?
第三季度
在我的设置中,我真的需要预测2018年4月至2018年12月的价格,即使我只有2018年1月至2018年3月的数据,这是否有可能?