在多元输入和多元输出上使用 LSTM

数据挖掘 Python 喀拉斯 时间序列 预测建模 lstm
2022-03-12 01:15:57

我有一个非常小的数据集,只有大约 40 行,其中包含几个类别(大约 20 个)的历史使用数据。我强烈怀疑这些类别以部分零和博弈的方式依赖:如果一个类别的使用量上升,我预计另一个类别的使用量会下降。我的目标是预测所有类别的下一行。

我看过这篇文章,但它没有预测多个变量。我也看过这篇文章,但它仍然是单变量输出(尽管是多个时间步长)和多变量输入。到目前为止,我的方法一直基于 machinelearningmastery 上的典型 LSTM 帖子但它也是一个单输出变量示例,并且使用的许多函数,例如scaler.inverse_transform似乎不能很好地广播。我什至很难缩小我的完整示例以匹配他的!

将 LSTM 扩展到多变量输出的任何提示?keras LSTM 可以原生地做到这一点吗?如果是这样,代码将如何更改?

谢谢你的时间!

1个回答

如果您想预测多个输出(或者换一种说法,一个具有多个特征的输出),您可以简单地更改最后一层的单元数。例如,从您共享的链接中,您可以更改 Dense 层的单位:

model = Sequential()
model.add(LSTM(50, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dense(2))
model.compile(loss='mae', optimizer='adam')

上述模型现在将预测具有 2 个“特征”的输出的下一步。请注意,您的输出现在应该是 num_samplesx2 的形状。