相关文章推荐

一、自回归LSTM(ARLSTM)

ARLSTM是由 Google Deep-Mind 构建的,用于创建WaveNet(一种生成原始音频序列的模型)。在时间序列的背景下,允许预测具有不同尺度的时间序列,如小时、天或月,同时避免不得不重新训练一个新模型。它的缺点是错误的积累,由于预测和实际值之间总是存在一些差异,在ARLSTM中随着反馈回模型而累积,这意味着后来的预测会比先前的预测有更大的误差。

二、ARLSTM的使用

1、ARLSTM模型类封装

ARLSTM模型主要包括三层,首先第一层位LSTMCell,其具备访问如状态和预测等更细力度的信息,然后是第二层RNN层,训练上一层LSTMCell的结果,最后将输出通过第三层Dense层进行数据预测。下面将该模型封装至AutoRegressive类,该类同样继承自Keras中的Model 类。

class AutoRegressive(Model):
    def __init__(self, units, out_steps):
        super().__init__()
        self.out_steps = out_steps
        self.units = units
        self.lstm_cell = LSTMCell(units)
        self.lstm_rnn = RNN(self.lstm_cell, return_state=True)
        self.dense = Dense(train_df.shape[1])

        由于每轮的预测会继续作为输入反馈至模型中继续生成预测,因此在AutoRegressive类中需要定义一个单独的方法获取之前的预测。

def warmup(self, inputs):
    x, *state = self.lstm_rnn(inputs)
    prediction = self.dense(x)
    return prediction, state

        通过上述两个函数,具备了ARLSTM基本框架以及过去预测获取的能力,最后只需定义call函数,让Keras隐式调用,从而时序循环生成预测。

def call(self, inputs, training=None):
    predictions = []
    prediction, state = self.warmup(inputs)
    predictions.append(prediction)
    for n in range(1, self.out_steps):
        x = prediction
        x, state = self.lstm_cell(x, states=state, training=training)
        prediction = self.dense(x)
        predictions.append(prediction)
    predictions = tf.stack(predictions)
    predictions = tf.transpose(predictions, [1, 0, 2])
    return predictions

2、生成预测与MAE结果比对

AR_LSTM = AutoRegressive(units=32, out_steps=24)
history = compile_and_fit(AR_LSTM, multi_window)
ms_val_performance['AR - LSTM'] = AR_LSTM.evaluate(multi_window.val)
ms_performance['AR - LSTM'] = AR_LSTM.evaluate(multi_window.test, verbose=0)

        通过与历史不同模型比对,可以发现ARLSTM效果最佳。

前一段时间股市有一些大的波动,其实很早就有人说过,股市有风险,投资需谨慎。不过如果能有一个比较适合的模型进行预测就好了。今天我介绍一下,时间序列预测分析。 本人也是深度循环网络的小白,所以也算是与大家共勉了哈。有问题还希望大家多多指正。闲话少说,上代码 首先先读入numpy中的数据准备作为data test_input_array.py # coding: utf-8 from __future_...
Multivariate workload prediction using Vector Autoregressive and Stacked LSTM models 1 摘要: 向量自回归+堆叠LSTM VAR用于过滤多元时间序列之间的线性相互依赖 堆叠LSTM捕获非线性趋势(从VAR模型计算得到的残差) 对比模型:AR-MPL,RNN-GRU、ARIMA-LSTM 文章提出多变量负载预测模型,使用向量自回归模型分析多元时间序列并预测未来的值。 根据VAR模型计算残差并将其作...
时间序列是时间间隔不变的情况下收集的时间点集合。分析这些集合来确定长期趋势,为了预测未来或进行其他形式的分析。但是什么使Time Series不同于常规回归问题呢?有两个原因: 1. 时间序列是与时间有关的。因此线性模型的基础假设:观察值是独立的是不适应这个场景的。 2. 伴随着增加和减少的趋势,大多数时间序列会存在季节性趋势,比如,特定时间的特定变化。例如,如果你看到羊毛夹克随时间变化的销量,你一定会发现冬季的销量会很高。 时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列。 CSDN-Ada助手: 非常感谢您的分享,ARLSTM是一个非常有前景的领域,期待您能够更深入地探索和研究。建议您写一篇关于ARLSTM模型在预测股票价格方面的应用的博客,探讨其效果和优化方法。期待您的精彩分享! 为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall )诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。 时序数据深度学习笔记——DNN(二) qq_42189678: tennsorflow2.10
 
推荐文章