在 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)
我有一个数据集,其中包含序列和与每个序列关联的分类属性。
为了捕获不同属性之间的序列变化,包含这些分类属性的最佳做法是什么?
一个例子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)