训练具有多个时间序列的 LSTM 模型

数据挖掘 时间序列 lstm rnn
2021-10-03 21:39:19

我正在预测学校住宅楼内卧室的能源使用情况,其中日期、温度和湿度作为输入特征,使用 7time-steps并预测一天(one-timestep)。

我能够预测一间卧室。该建筑有大约 100 间卧室,所有卧室的布局和占用率都或多或少相同,因此所有这 100 间卧室的数据与第一间卧室的日期范围相同,并且同一天的湿度和温度水平相同。现在我想用 100 间卧室的所有能源数据训练我的模型,以便模型捕获所有 100 个房间的能源模式。

然后,我想预测任何给定卧室(不是特定卧室)的能源使用情况,使用这个模型已经对所有 100 间卧室进行了训练。换句话说,业务问题是“这所住宅学校大楼内卧室的预期能源使用量是多少?

我想知道如何将所有这 100 个房间训练成一个LSTM模型,因为这LSTM是一个时间序列模型,而 100 个房间意味着我有 100 个时间序列。我不能简单地连接所有房间的数据集。

我将如何构建我的数据并在LSTM模型中运行它?

如果有人可以向我展示如何做到这一点,我将不胜感激。

1个回答

正如您所提到的,所有房间都具有相似的属性,因此为所有房间开发一个 LSTM 模型是有意义的。

你必须预处理你的数据,以便你有输入向量 Xi 7 个时间步和 1 个时间步作为标签向量 Yi

Xi=[xi[t6],xi[t5],xi[t4],xi[t3],xi[t2],xi[t1],xi[t]]Yi=[xi[t+1]]

下标在哪里 i 表示 ith 向量。

假设你可以为每个房间生成 100 个向量,你最终会得到一个数据集104输入向量。每个房间的向量数量将取决于您使用的重叠,例如,如果您有每个房间 100 天的数据并且您使用 99 天的重叠(您的窗口在未来一天滑动),您将拥有每个房间有 99 个向量。

要训​​练 LSTM,您可以使用典型的 Mini-batch 训练。确保不传播批次样本的状态i取样i+1为了单独对待它们(在 Keras 中,您将有状态标志设置为 False)