拓端tecdat|R语言基于递归神经网络RNN的温度时间序列预测

发布时间:2021-08-02 22:48 来源:https://blog.51cto.com/tecdat/ 阅读:135 作者:拓端小助手 栏目: Mysql 欢迎投稿:712375056

lookback —是输入数据应该包括多少个时间步。

现在让我们在温度预测任务上尝试相同的方法。

 

添加层并没有很大的帮助,因此此时您可能会看到网络容量增加带来的收益递减。

编写一个生成器函数,该函数将获取当前的浮点数据数组,并生成来自最近的过去以及将来的目标温度的成批数据。由于数据集中的样本是高度冗余的(样本 N 和样本 N  + 1将具有大多数相同的时间步长),因此显式分配每个样本会很浪费。相反,您将使用原始数据即时生成样本。

 

 

为了在Keras中将递归层堆叠在一起,所有中间层都应返回其完整的输出序列(3D张量),而不是最后一个时间步的输出。

min_index 和 max_index —data 数组中的索引, 用于定义从中提取时间步长。保留一部分数据用于验证和另一部分用于测试。

尝试在循环层的顶部使用更大的紧密连接的回归变量:即,更大的密集层,甚至一叠密集层。

ggplot(data, aes(x = 1:nrow(data), y = `degC`)) + geom_line()

通常,通过增加层中的单元数或添加更多层来增加网络容量。递归层堆叠是构建功能更强大的递归网络的经典方法:例如,当前为Google Translate算法提供动力的是七个大型LSTM层的堆叠。

更进一步

为了提高温度预测问题的性能,您可以尝试其他许多方法:

delay —目标应该在未来多少步。

双向RNN利用此思想来改进按时间顺序排列的RNN的性能。

model_sequential() %>% bidirectional( layer_gru(units = 32), input_shape = list(NULL, dim(data)[[-1]]) model %>% fit_generator( train_gen, steps_per_epoch = 500, epochs = 40,

这和常规的layer_gru一样好 。原因很容易理解:所有预测能力都必须来自网络中按时间顺序排列的部分,因为众所周知,按时间顺序排列的部分在此任务上的表现严重不足,在这种情况下,最近的样本比过去的样本重要得多。

Yarin Gal使用Keras进行了研究,并帮助将这种模型直接构建到Keras循环层中。Keras中的每个循环图层都有两个与dropout相关的参数:  dropout,一个浮点数,用于指定图层输入单元的dropout率;以及 recurrent_dropout,用于指定循环单元的dropout率。由于使用丢失dropout进行正则化的网络始终需要更长的时间才能完全收敛,因此您需要两倍的时间训练网络。

steps = 6 —观测将在每小时一个数据点进行采样。

首先,您需要做两件事:

lookback = 1440 —观察将追溯到10天。

基准模型

免责声明:本站发布的内容(图片、视频和文字)以原创、来自本网站内容采集于网络互联网转载等其它媒体和分享为主,内容观点不代表本网站立场,如侵犯了原作者的版权,请告知一经查实,将立刻删除涉嫌侵权内容,联系我们QQ:712375056,同时欢迎投稿传递力量。