【问题标题】:Best practice to include categorical features along with sequences in LSTM for sequence prediction?在 LSTM 中包含分类特征和序列以进行序列预测的最佳实践?
【发布时间】: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 呢?

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

或者这里还有其他最佳做法吗?

【问题讨论】:

    标签: python keras lstm


    【解决方案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)
    猜你喜欢
    • 2019-04-21
    • 2019-03-05
    • 2018-01-05
    • 1970-01-01
    • 2018-09-04
    • 2017-10-03
    • 1970-01-01
    • 2013-08-15
    相关资源
    最近更新 更多