在 LSTM 中包含分类特征和序列以进行序列预测的最佳实践?

Best practice to include categorical features along with sequences in LSTM for sequence prediction?

我有一个数据集,其中包含序列和与每个序列关联的分类属性。

为了捕获不同属性之间的序列变化,包含这些分类属性的最佳做法是什么?

一个例子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?

如果我对序列数据应用一种热编码,我应该将一种热编码的特征向量连接到它吗?

或者这里还有其他最佳实践吗?

您可以使用 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)