在 LSTM 中包含分类特征和序列以进行序列预测的最佳实践?
Posted
技术标签:
【中文标题】在 LSTM 中包含分类特征和序列以进行序列预测的最佳实践?【英文标题】:Best practice to include categorical features along with sequences in LSTM for sequence prediction? 【发布时间】:2021-01-14 21:52:18 【问题描述】:我有一个数据集,其中包含与每个序列相关的序列和分类属性。
为了捕捉不同属性之间的序列变化,包含这些分类属性的最佳做法是什么?
一个例子 df
Sequence | Country | User |
[A,B,D,E,F] USA U1
[B,C,D,E] DE U123
[A,B,F,E,G,H] USA U2456
... ... ....
我想建立一个能够预测序列中下一个事件的 LSTM 模型。
如果我只将序列作为输入,我知道如何构建 LSTM 模型。
但是我怎样才能同时添加属性 Country 和 User 呢?
如果我对序列数据应用一种热编码,我应该将一种热编码的特征向量连接到它吗?
或者这里还有其他最佳做法吗?
【问题讨论】:
【参考方案1】:您可以使用functional model API 并连接分类特征
例如,你有国家作为分类特征,你可以concatenate它使用lstm特征作为Concatenate()([lstm, country])
from keras.models import Model
from tensorflow.keraslayers import Input,Concatenate,Dense,Activation
sequence= Input(shape=(seq_length,), name='sequence')
lstm = LSTM(300, dropout=0.3, recurrent_dropout=0.3)(sequence)
country = Input(shape=(1,))
conc = Concatenate()([lstm, country])
dense_layer = Dense(1)(conc)
x_out= Activation('sigmoid')(dense_layer )
model = Model([sequence, country], x_out)
model.compile(loss='binary_crossentropy', optimizer='adam', metrics['accuracy'])
为了适应模型,假设您已经在sequence
中重新塑造并准备了序列列,并在country
中准备了其他特征(国家)
model.fit([sequence,country], y_train)
【讨论】:
您好,感谢您提供此代码 sn-p,我将如何在此处调用 fit 函数以提供两个不同的输入? 谢谢,Concatenate() 行似乎不起作用,但是,如果我改为使用“concatenate”函数,它似乎可以工作。从 keras.layers 导入连接,conc = concatenate([lstm,country])。与您提供的链接中的示例类似。 你能试试这个Concatenate()([lstm, country])
,让我知道这是否有效吗?我还包括了进口
我自己从事事件预测工作,目前还使用 LSTM。
对我来说,正常和经常性的辍学并没有多大作用。尽管验证错误上升(直到某个点),但我看到验证准确性有所提高,所以让它上升一段时间,看看你是否也是这种情况。我的意思是让你的早期停止耐心值有点大。 (顺便说一句,尝试 0.05-0.3)以上是关于在 LSTM 中包含分类特征和序列以进行序列预测的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章
LSTM回归预测基于matlab LSTM神经网络回归预测含Matlab源码 2227期
LSTM时间序列预测基于matlab深度学习的长短期记忆网络LSTM时间序列预测未来含Matlab源码 2345期
在 keras 中使用 CNN-LSTM 模型进行序列到序列分类