如何将键值特征(聚合数据)提供给 LSTM?

数据挖掘 机器学习 lstm 大数据 特征工程 预处理
2022-02-14 10:59:35

对于基于 LSTM 的模型,我有以下时间序列聚合输入:

x(0): {y(0,0): {a(0,0), b(0,0)}, y(0,1): {a(0,1), b(0,1)}, ..., y(0,n): {a(0,n), b(0,n)}}
x(1): {y(1,0): {a(1,0), b(1,0)}, y(1,1): {a(1,1), b(1,1)}, ..., y(1,n): {a(1,n), b(1,n)}}
...
x(m): {y(m,0): {a(m,0), b(m,0)}, y(m,1): {a(m,1), b(m,1)}, ..., y(m,n): {a(m,n), b(m,n)}}

其中x(m)是一个时间步长,a(m,n)并且是由可能是b(m,n)的非时间顺序键聚合的特征y(m,n)0...1,000

例子:

0: {90: {4, 4.2}, 91: {6, 0.2}, 92: {1, 0.4}, 93: {12, 11.2}}
1: {103: {1, 0.2}}
2: {100: {3, 0.1}, 101: {0.4, 4}}

其中 90-93、103 和 100-101 是聚合键。

如何将这种输入提供给 LSTM?

另一种方法是使用非聚合数据。在这种情况下,我会得到 LSTM 的正确输入。例子:

汇总输入:

0: {100: {3, 0.1}, 101: {0.4, 4}}

原始输入:

0: 100, 1, 0.05
1: 101, 0.2, 2
2: 100, 1, 0
3: 100, 1, 0.05
4: 101, 0.2, 2

但在这种情况下,聚合将丢失,聚合的全部目的是最小化步数,以便我得到 500 个时间步,而不是例如 40,000 个,这不可能提供给 LSTM。如果您有任何想法,我将不胜感激。

1个回答

在我看来,您可以将时间步长的输入重塑为矩阵 stXtRn×2(假设您只有ab作为特征)并使用卷积 LSTM层:

t=0
X0=[a(0,0)b(0,0)a(0,1)b(0,1)a(0,n)b(0,n)]

t=m
Xm=[a(m,0)b(m,0)a(m,n)b(m,n)]

基本上每个顺序键y是输入矩阵中的一行。您可以将每个矩阵视为您提供给 LSTM 网络的某种图像。
希望对您有所帮助。