"); //-->
CNN通过卷积层和池化层等操作可以自动提取时间序列数据的特征,从而实现时序预测。在应用CNN进行时序预测时,需要将时间序列数据转化为二维矩阵形式,然后利用卷积和池化等操作进行特征提取和压缩,最后使用全连接层进行预测。相较于传统的时序预测方法,CNN能够自动学习时间序列数据中的复杂模式和规律,同时具有更好的计算效率和预测精度。
2.2.1 WaveNet(2016)Paper:WAVENET: A GENERATIVE MODEL FOR RAW AUDIO
WaveNet是由DeepMind团队在2016年提出的一种用于生成语音的神经网络模型,它的核心思想是利用卷积神经网络来模拟语音信号的波形,并使用残差连接和门控卷积操作来提高模型的表示能力。除了用于语音生成,WaveNet还可以应用于时序预测任务。在时序预测任务中,我们需要预测给定时间序列的下一个时间步的取值。通常情况下,我们可以将时间序列看作是一个一维向量,并将其输入到WaveNet模型中,得到下一个时间步的预测值。
在WaveNet模型的构建中,关键的是对卷积层的设计和参数调整。卷积层的设计可以影响模型的表达能力和泛化能力,参数的调整可以影响模型的预测准确性和鲁棒性。
2.2.2 TCN(2018)Paper:An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling
TCN(Temporal Convolutional Network)是一种基于卷积神经网络的时序预测算法,其设计初衷是为了解决传统RNN(循环神经网络)在处理长序列时存在的梯度消失和计算复杂度高的问题。。相比于传统的RNN等序列模型,TCN利用卷积神经网络的特点,能够在更短的时间内对长期依赖进行建模,并且具有更好的并行计算能力。TCN模型由多个卷积层和残差连接组成,其中每个卷积层的输出会被输入到后续的卷积层中,从而实现对序列数据的逐层抽象和特征提取。TCN还采用了类似于ResNet的残差连接技术,可以有效地减少梯度消失和模型退化等问题,而空洞卷积可以扩大卷积核的感受野,从而提高模型的鲁棒性和准确性。
TCN模型的结构如下图所示:
TCN模型的预测过程包括以下几个步骤:
输出层:将池化层的输出通过一个全连接层进行输出,得到时间序列的预测值。
TCN模型的优点包括:
# 模型构建TCN = TCNModel( input_chunk_length=13, output_chunk_length=12, n_epochs=200, dropout=0.1, dilation_base=2, weight_norm=True, kernel_size=5, num_filters=3, random_state=0,)# 模型训练,无协变量TCN.fit(series=train, val_series=val, verbose=True)# 模型训练,有协变量TCN.fit(series=train, past_covariates=train_month, val_series=val, val_past_covariates=val_month, verbose=True)# 模型推理backtest = TCN.historical_forecasts( series=ts, # past_covariates=month_series, start=0.75, forecast_horizon=10, retrain=False, verbose=True,)# 成果可视化ts.plot(label="actual")backtest.plot(label="backtest (D=10)")plt.legend()plt.show()数据归一化对时序预测影响探究?
原始数据是否按月份生成协变量,是否归一化,对最终时序预测效果影响重大,就本实验场景而言,原始数据为百分制更适用于无归一化&有协变量方式,协变量需根据实际业务表现进行选择。
归一化&无协变量
归一化&有协变量
无归一化&无协变量
无归一化&有协变量
Paper:Probabilistic Forecasting with Temporal Convolutional Neural Network.Code:deepTCN
DeepTCN(Deep Temporal Convolutional Networks)是一种基于深度学习的时序预测模型,它是对传统TCN模型的改进和扩展。DeepTCN模型使用了一组1D卷积层和最大池化层来处理时序数据,并通过堆叠多个这样的卷积-池化层来提取时序数据的不同特征。在DeepTCN模型中,每个卷积层都包含多个1D卷积核和激活函数,并且使用残差连接和批量归一化技术来加速模型的训练。
DeepTCN模型的训练过程通常涉及以下几个步骤:
模型评估:使用测试数据集对训练好的DEEPTCN模型进行评估,并计算模型的性能指标,如平均绝对误差(MAE)、平均绝对百分比误差(MAPE)等。
就本实验场景而言,受原始数据样本限制,输入输出长度和batch_size无法过大调整,从性能角度建议选用大batch_size&短输入输出方式。
# 短输入输出deeptcn = TCNModel( input_chunk_length=13, output_chunk_length=12, kernel_size=2, num_filters=4, dilation_base=2, dropout=0.1, random_state=0, likelihood=GaussianLikelihood(),)# 长输入输出deeptcn = TCNModel( input_chunk_length=60, output_chunk_length=20, kernel_size=2, num_filters=4, dilation_base=2, dropout=0.1, random_state=0, likelihood=GaussianLikelihood(),)# 长输入输出,大batch_sizedeeptcn = TCNModel( batch_size=60, input_chunk_length=60, output_chunk_length=20, kernel_size=2, num_filters=4, dilation_base=2, dropout=0.1, random_state=0, likelihood=GaussianLikelihood(),)# 短输入输出,大batch_sizedeeptcn = TCNModel( batch_size=60, input_chunk_length=13, output_chunk_length=12, kernel_size=2, num_filters=4, dilation_base=2, dropout=0.1, random_state=0, likelihood=GaussianLikelihood(),)
短输入输出
长输入输出
长输入输出,大batch_size
短输入输出,大batch_size
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。