LSTM多阶段预测

时间:2019-02-14 08:13:04

标签: machine-learning keras deep-learning lstm

我遵循一些有关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月的数据,这是否有可能?

0 个答案:

没有答案