Keras 时间序列:在 LSTM 中包含静态和动态变量的建议



我正在研究一个与银行相关的用例,我需要预测客户的储蓄账户余额。我既有过去 12 个月的时间相关数据,也有静态数据。

与时间相关的数据,例如每月的储蓄账户余额、定期存款余额、共同基金余额、完成的贷方 txn、完成的借方 txn 等。

静态数据包括年龄、性别、地区、职业、婚姻状况等。

我正在尝试使用 LSTM 预测未来 3 个月的储蓄账户余额,但 rmse 很差。请在下面找到我目前正在使用的 LSTM 架构以及 python 代码:网络架构

# Model Development
main_input = Input(shape=(X_train_dynamic.shape[1], X_train_dynamic.shape[2]))
encoded1 = LSTM(10,return_sequences=True,activation='tanh')(main_input)
encoded = LSTM(10,activation='tanh')(encoded1)
auxiliary_input = Input(shape=(X_train_static.shape[1],))
output_auxiliary = Dense(10, activation='tanh')(auxiliary_input)
x = concatenate([encoded, output_auxiliary])
decoded = RepeatVector(y_train.shape[1])(x)
#decoded = RepeatVector(y_train.shape[1])(encoded)
main_output = LSTM(1, return_sequences=True,activation='tanh')(decoded)   # return_sequences=True gives Many to Many relationship
model = Model(inputs=[main_input,auxiliary_input], outputs=[main_output])
#model = Model(inputs=[main_input, auxiliary_input], outputs=[main_output])
model.compile(optimizer='adam', loss='mean_squared_error')
history = model.fit([X_train_dynamic, X_train_static], [y_train],
validation_data=([X_test_dynamic, X_test_static], y_test), 
epochs=50, batch_size=128)

对于这种架构,我没有得到很好的结果,如果之后有合理的成功机会,我愿意尝试新事物。我无法分享确切的数据集,但很乐意提供任何其他可能有帮助的东西。

如果您在测试/验证数据上只得到较差的结果,那么在为层添加 dropout 图层或正则化参数时是值得的。但是,如果问题本身与训练数据有关,那么可以应用一些减少偏差的技术。

最新更新