我的数据使用哪种 lstm 架构以及我应该做啥数据处理

Posted

技术标签:

【中文标题】我的数据使用哪种 lstm 架构以及我应该做啥数据处理【英文标题】:Which lstm architecture for my data and what data process should I do我的数据使用哪种 lstm 架构以及我应该做什么数据处理 【发布时间】:2019-11-20 11:37:06 【问题描述】:

我正在尝试构建 LSTM 架构来预测患病率(0%-100%)。我的输入是一个尺寸为 4760x10 的数组(每个城镇每个年龄的病人人数,咨询次数.....)我的输出或 y 是发病率。

我是机器学习的新手,我尝试了一些技巧,例如更改优化器、层节点数和 dropout 值,但我的模型没有收敛(最低 mse 为 =616.245)。我还尝试使用“MinMaxScaler”来扩展我的数据。那么你们能否帮我提供一些建议来改变架构或进行一些数据处理以帮助模型收敛。

这是给我 mse=616.245 的 lstm 模型

def build_modelz4():
 model = Sequential()
 model.add(LSTM(10, input_shape=(1, 10), return_sequences=True))
 model.add(LSTM(84, return_sequences= True))  
 model.add(LSTM(84, return_sequences=False))  
 model.add(Dense(1,activation='linear'))
 model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mean_squared_error'] )
 model.summary()
 return model
lstmz4 = build_modelz4()
checkpointer = ModelCheckpoint(filepath="weightslstmz4.hdf5", verbose=1, save_best_only=True)
newsclstmhis = lstmz4.fit(trainX,trainY,epochs=1000,batch_size=221, validation_data=(testX, testY) ,verbose=2, shuffle=False, callbacks=[checkpointer])

请注意,当我使用 ANN 模型时,它收敛于 mse=0.8。所以使用 lstm 它应该收敛 并提前感谢您

【问题讨论】:

你为什么使用 LSTM?你的数据是时间序列数据吗?输入形状为 4760x10,看起来 4760 是人数,10 是特征数。您是否有随时间推移获得的样本? 4760 是每个城镇的周数,预测与实际情况相去甚远 我明白了。使用带有 input_shape=(1, 10) 的 LSTM 没有意义。您将时间步数设置为 1,这意味着您没有使用历史来预测未来。相反,开始将您的数据“切割”成时间序列数据块,例如每个具有 12 个时间步长的样本,然后将 LSTM 拟合到新数据。 @SaTa 请问怎么做? 【参考方案1】:

4760 是 LSTM 的极少数维度。另外,它似乎是一个非常简单的分类模型,尝试使用更简单的算法(如 svm)进行处理,但如果您坚持使用深度学习,请使用带密集层的序列模型而不是比这一层多几层,肯定会给你更好的结果。

【讨论】:

以上是关于我的数据使用哪种 lstm 架构以及我应该做啥数据处理的主要内容,如果未能解决你的问题,请参考以下文章

我应该在 vuex 状态下初始化哪种类型的数据以及何时初始化?

我几乎完成了我的 argparse 任务,已经连续工作了 8 个小时,将提供我到目前为止的代码以及运行时应该做啥[关闭]

我应该转移数据集以将其用于 LSTM 回归吗?

我应该使用这种多类多标签(?)问题的哪种损失函数?

多对多 LSTM PyTorch

最终一致性和实时一致性是什么?在架构设计中,我们应该选择哪种方式?