在 LSTM 中预测当前时间步时连接上一个时间步的目标变量

问题描述

给定一组形状为 (n,12,382) where n is the size of the batch 的特征并且目标变量是二元的。我正在尝试训练 LSTM 模型。

问题的障碍在于数据在模型中的表示方式。最初,我有形状为 (1,X,382) where X is in the range of [1,12] 的特征(比如一个样本)。示例:(1,5,382) 手头问题的性质如下:

At (1,382): I'm aware of the target of (1,4,382),(1,3,2,382) and (1,1,382)
At (1,382)
... so on

因此,我的目标是为所有时间步创建一个级联形式的样本,即 (X,y):

[[[f1,f2,f2]]],1                                     # At T1
[[[f1,f2]],[[f1,f3]]],0                       # At T2
[[[f1,f3]],1         # At T3
... up to number of timesteps (12 with Padding)

尽管我看到人们在 LSTM 的每个学习材料中使用滞后特征,但我的问题与时间指数和预测并不完全相关。想法是学习seq并预测下一个seq。

这样做时,我想添加第 383 个特征,即 was_one 包含目标值但直到当前时间步长,而当前时间步长包含填充值(例如 -999)。

示例:

[[[f1,f3,was_one]]],1                                              # was_one = -999 as it the first timestep and that is what we are trying to predict
[[[f1,was_one]],0                       # was_one at T1 = 1,as we kNow while predicting for timestep two what was the value of T1 whereas was_one at T2 = -999
[[[f1,1   # was_one at T1=1,T2=0 and T3 = -999

使用此功能后,我的模型的 AUC 约为 0.72,移除此功能后,它下降到 ~0.65。

问题:

  1. 只是想知道以我展示的滞后形式传递目标是否合法?或者我在某种意义上传递了未来的信息!
  2. was_one 填充 -999 以获得当前时间步长(被预测)的方法是否有效?如果没有,请提出替代方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)