neural-network - Keras LSTM 中的面板数据

标签 neural-network keras lstm panel-data

我正在查看面板数据,其结构如下:
D = \{(x^{(k)}_{t},y^{(k)}_{t})\,|\, k=1,\dots,N\, , t=t_0,\dots,t_k \}_{k=1}^{N}
哪里x^{(k)}表示 k 'th 序列,x^{(k)}_{t}表示 k 'th 时间序列值 t ,此外 x^{(k)}_{i,t}i '向量中的第一个条目 x^{(k)}_{t} .即 x^{(k)}_{t}k的特征向量'时间序列 t .子脚本和 super 脚本对于标签数据 y^{(k)}_{t} 的含义相同,但在这里 y^{(k)}_{t} \in \{0,1\} .

简单来说:数据集包含随着时间的推移观察到的个体,对于观察到的每个时间点,记录他是否购买了元素(y\in \{0,1\})。

我想使用带有来自 Keras 的 LSTM 单元的循环神经网络来预测一个人是否会在给定的时间点购买某件商品。我只能找到每个序列都有一个标签值( philipperemy link )的 RNN 示例,而不是我描述的问题中每个序列元素都有一个标签值的示例。

到目前为止,我的方法是创建一个具有维度(样本、时间步长、特征)的张量,但我无法弄清楚如何格式化标签,例如 keras可以将它们与功能相匹配。它应该是这样的 (samples,timesteps,1),其中最后一个维度表示包含标签值 0 或 1 的单个维度。

此外,我遇到的一些方法拆分序列,以便将子序列添加到训练数据中,从而极大地增加了对内存的需求( mlmastery link )。这在我的情况下是不可行的,因为我有多个 GB 的数据,如果我添加子序列,我将无法将它存储在内存中。

我想使用的模型是这样的:

mod = Sequential()
mod.add(LSTM(30,input_dim=116, return_sequences = True))
mod.add(LSTM(10))
mod.add(Dense(2))

有没有人在 keras 中处理面板数据的经验? ?

最佳答案

尝试:

mod = Sequential()
mod.add(LSTM(30, input_shape=(timesteps, features), return_sequences = True))
mod.add(LSTM(10, return_sequences = True))
mod.add(TimeDistributed(Dense(1, activation='sigmoid')))
# In newest Keras version you can change the line above to mod.add(Dense(1, ..))

mod.compile(loss='binary_crossentropy', optimizer='rmsprop')

关于neural-network - Keras LSTM 中的面板数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42694725/

相关文章:

tensorflow - 如何从 tensorflow 中保存的检查点恢复特定范围的变量?

machine-learning - RNN : Back-propagation through time when output is taken only at final timestep

python - 如何计算 Keras 的 Pandas DataFrame 的类权重?

python - Keras - 数组形状与 model.predict() 不匹配

python-3.x - Keras LSTM 层输入形状

python - 如何使用LSTM模型进行多步预测?

python - 无法操作列表

code-generation - 使用机器学习生成代码

machine-learning - 用于多标签分类的神经网络,具有大量类输出仅为零

machine-learning - 无法使用CNN模型获得输出