千家信息网

TensorFlow中的自回归模型是怎样的

发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,TensorFlow中的自回归模型是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。关于自回归模型真正酷的一点是它们类似于开环反馈系
千家信息网最后更新 2024年12月13日TensorFlow中的自回归模型是怎样的

TensorFlow中的自回归模型是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

关于自回归模型真正酷的一点是它们类似于开环反馈系统,一种控制系统。这些模型的目标函数埋藏在一些沉重的,几乎荒谬的数学之下,但我终于找到了通过搜索维基百科来构建自回归模型的技巧。通过以下操作可以在下面的等式中总结技巧:将(1)插入(2)以创建表达式(3)。这种转换的结果将截距限制为自回归权重的一定比例。可以使用TensorFlow优化此目标函数。请在此处查看此帖子的笔记本。


下面的代码块显示了如何在此模型的TensorFlow中组合权重和数据。将数据整形为(N,M)输入和输出组合的元组,并将观察结果分成训练和测试数据集。训练数据集被洗牌。在每个时期使用随机微型批次,其中50%的训练观察结果。使用具有非常小的学习速率的梯度下降优化器来防止过度拟合。

hidden_layer_1 = 1
weights1 = tf.Variable(tf.random_normal((X_train.shape[1],hidden_layer_1),stddev=0.01,dtype='float32'))
b1 = tf.Variable(tf.zeros((1,hidden_layer_1),dtype='float32'))
input_X = tf.placeholder('float32',(None,X_train.shape[1]))
input_y = tf.placeholder('float32',(None,1))
predicted_out = tf.add(tf.matmul(input_X,weights1),tf.reduce_sum(b1*weights1))

loss = tf.reduce_sum(tf.square(predicted_out-input_y))
optimizer = tf.train.AdamOptimizer(learning_rate=0.00001).minimize(loss)


使用澳大利亚墨尔本时间序列中的每日最低温度建立自回归模型。该时间序列数据不需要太多预处理,即仅内插nan值。清洁数据集总共有~3500个观测值,其中80%用于训练。


下面显示的自动相关图是通过采用numpy的相关函数创建的,通过采用相关的后半部分。然后使用scipy的signal.detrend函数去除结果。以下图表具有以下滞后的峰值:[170,356,528,720,897,1079,1257,1455,1622]。通过从平均相关性中获取至少两个标准偏差来提取最强的相关性。在下图中,强相关滞后可以看到绿色。


输入数据被子集化以包括排除弱相关滞后。这通过仅选择高度相关的滞后变量来改善输入数据的质量。这些高度相关的滞后观测值被提取为每个目标观测的矩阵。

Snowballed Autoregressive Time Series

当需要提前一段时间做出决定时,时间序列的预测可能更为可取。可以通过对自回归模型中的"滚雪球"预测来创建预测。即使实际时间序列具有恒定的方差,滚雪球时间序列的方差也会随着时间的推移而增加。不合适的模型可能会变得不稳定,并且随着时间的推移会出现变化。然而,这种增加的方差通常是因为滚雪球的时间序列高于或低于时间序列的实际趋势。这似乎是使用开环系统的人为因素,而不是关闭用于电气控制系统的系统。为了测试趋势分量方向的随机性,用1000个小批量训练模型。模型结果保存了最后900个时期,并为每个时期生成了一个滚雪球时间序列


按时间划分的滚雪球时间序列如上图所示。通过检查每个滚雪球时间序列的平均误差是高于还是低于零来测试趋势的随机性。在过去的900,600和300个时期,积极趋势的滚雪球时间序列大约是负面趋势的两倍。按时间划分的平均误差分布如下图所示。

平均值似乎以1为中心,这意味着大多数滚雪球时间序列都过度预测了实际值。分布似乎也略微倾斜。然而,事实证明,对于中等范围的预测,雪球效应并不大。噪声问题的一种可能解决方案是将滚雪球预测中的N平均值。

最后的N个滞后分量被用作自回归模型中的预测因子。当平均整合过去30个时期的最后30个模型时,解释了大约51%的测试数据变化。上面的第二个图显示了与滚雪球时间序列的平均值的标准偏差的r平方。我们可以看到,对于正标准偏差(+ 1,+ 2,+ 3),负平方(-1,-2,-3)的r平方稍微多一点,这表明该模型可能过度预测。

实际观测预测

我们可以预测下一个时间步,而不是预测,给出测试数据集中每个观测值的最后N个值。预测的时间序列如下所示。当平均整合来自TensorFlow优化器的最后30个时期时,解释了测试数据变化的大约58%,比滚雪球预测多7%。有趣的是,"平均值与标准偏差的平均值"表明该模型可能过度预测。

看完上述内容,你们掌握TensorFlow中的自回归模型是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

0