神经网络多步时间序列预测方法解析
1. 引言
人工神经网络(ANNs)在时间序列预测领域极具潜力。其模型自由的特性以及对线性和非线性时间序列的建模能力,让预测者受益颇多。在进行多步预测时,有三种主要方法可供选择:
-
联合法(Joint Method)
:使用单个网络对所有预测期进行预测。
-
独立法(Independent Method)
:为每个预测期分别构建专用网络进行预测。
-
迭代法(Iterative Method)
:使用单步预测模型迭代生成多步预测。
独立法的优势在于为每个预测期专门构建模型,不同预测期的模型在滞后项、线性/非线性特征以及估计参数等方面可能存在显著差异。联合法的优势则是可以在不同预测期之间共享参数,基于更高的自由度可能得到更准确的参数估计。
2. 背景
2.1 神经网络在时间序列预测中的应用
前馈人工神经网络在时间序列预测领域有广泛应用,它能建模任意线性和非线性函数,且无需太多先验假设。然而,其灵活性也导致应用方法存在较大差异,研究结果不一致,许多文章在使用神经网络进行预测时缺乏严谨性。
2.2 神经网络用于时间序列预测的特点
- 非线性建模能力 :能处理线性和非线性时间序列,这在实际数据中非常重要,例如M - 3竞赛数据集中约25%的序列存在非线性特征。
- 模型自由 :无需事先确定函数模型形式,可同时进行参数估计和函数逼近,但这也使得评估多个模型时,确定合适的参数数量变得困难。
- 参数密集 :与传统模型相比,神经网络往往需要更多参数。轻微改变网络架构可能导致参数数量大幅增加,容易出现数据不足以准确估计参数的情况。
2.3 多步预测方法
-
迭代法
:使用单步预测模型迭代生成多步预测。例如,对于有两个滞后项的预测模型:
- (y_{t + 1} = f(x_t, x_{t - 1}))
- (y_{t + 2} = f(y_{t + 1}, x_t))
-
(y_{t + 3} = f(y_{t + 2}, y_{t + 1}))
该方法常用于短期预测,但存在早期误差传播到未来预测的问题,在较长预测期可能效果不佳。
-
独立法
:为每个预测期创建独立模型。例如,预测三步的模型为:
- (y_{t + 1} = f(x_i | i = t ) + e_{t + 1})
- (y_{t + 2} = g(x_i | i = t) + e_{t + 2})
-
(y_{t + 3} = h(x_i | i = t) + e_{t + 3})
此方法避免了误差传播,且每个预测期的模型可根据具体情况定制。
-
联合法
:创建单个模型同时对所有预测期进行预测。例如,预测三步的模型为:
((y_{t + 1}, y_{t + 2}, y_{t + 3}) = f(x_i | i \leq t ) + e)
该方法通过合并不同预测期的误差来估计参数,参数在不同预测期之间共享。虽然通常具有更高的参数估计自由度,但对参数的“微调”能力较弱。
3. 研究设计
3.1 数据与数据准备
研究使用了M3竞赛中756个季度序列的子集。选择季度数据是因为实际中常需要预测未来四个季度的数据,且通常使用最后四个滞后项作为模型的自变量。
数据准备步骤如下:
1.
去季节化
:使用四个周期的中心移动平均计算季度季节性指数,将每个数据点除以相应的季度指数得到去季节化数据。公式为:(des_t=\frac{x_t}{Q_t})
2.
去趋势化
:对去季节化的样本内数据使用简单线性回归模型计算趋势成分,从去季节化数据中减去趋势成分。公式为:(det_t = des_t - T_t)
3.
归一化
:将去季节化、去趋势化的数据减去样本内均值并除以样本内标准差。公式为:(norm_t=\frac{det_t - \mu_t}{\sigma_t})
去除了一些可能影响结果的序列,最终剩下149个序列用于研究。
3.2 神经网络方法
使用Matlab v6和Netlab工具包创建和训练前馈神经网络。网络使用“mlp”函数,输出层采用线性激活函数。隐藏层节点使用双曲正切激活函数并带有偏置。
网络架构表示为“AxBxC”,其中A为输入节点数,B为隐藏节点数,C为输出节点数。独立法每个预测期的网络架构为AxBx1,联合法的网络架构为AxBx4。A取值为1 - 4,B取值为0 - A。
所有网络架构训练30次,使用“keep - the - best”(KTB)启发式方法基于SSE保留最佳网络参数。使用广义交叉验证(GCV)指标选择模型,公式为:(GCV=\frac{RSS}{1-\frac{mc}{T}}^2)
3.3 误差度量
使用未转换的原始数据序列的保留样本绝对百分比误差(APE)评估预测方法。先将网络输出按相反顺序应用去季节化、去趋势化和归一化的逆操作调整预测值,然后计算APE。
3.4 实验设计
主要实验可总结为公式:(APE = f(M, S, H, L)),其中M为方法(独立法或联合法),S为数据序列(1 - 149),H为预测期(1 - 4),L为模型滞后。
同时,将这两种方法与迭代法和考虑季节性和趋势的朴素法进行比较,并提供模型中使用的输入数量和参数数量的统计信息。
4. 结果
4.1 联合法和独立法的比较
通过配对t检验评估联合法和独立法的整体性能。结果表明,联合法的平均绝对百分比误差显著较大,总体上独立法更优。
按数据大小(样本内数据少于30个为小数据集,多于30个为大数据集)和预测期分类比较,发现预测期为1 - 2时独立法更优,预测期为4时联合法更优。对于大数据集,方法选择的影响更为显著。
按预测期和模型滞后分类比较,同样显示预测期为1时独立法始终优于联合法,预测期大于1且模型滞后较大时,两种方法差异不明显。
| 预测期 | 小数据集(独立法 - 联合法)均值 | 大数据集(独立法 - 联合法)均值 | 总体(独立法 - 联合法)均值 |
|---|---|---|---|
| 1 | -1.30% | -0.62% | -0.97% |
| 2 | -0.52% | -0.15% | -0.34% |
| 3 | 0.33% | -0.05% | 0.15% |
| 4 | 0.75% | 0.20% | 0.51% |
| 总体 | -0.29% | -0.22% | -0.25% |
4.2 与朴素法和迭代法的比较
与朴素法比较,独立法平均优于朴素法约1.21%。与迭代法比较,独立法在大多数情况下表现与迭代法相当或更优。
4.3 联合法和独立法的模型特征分析
- 线性/非线性模型选择 :独立法选择线性模型的频率更高,约30%的模型为非线性,与M3竞赛数据集中约25%的序列存在非线性特征相符。
- 滞后项选择 :独立法选择包含少量滞后项的简单模型的频率更高。
- 参数估计自由度 :联合法通常具有更多参数,但基于自由度计算,其参数可能更准确地被估计。公式为:(df = 估计值数量 - 参数数量)
5. 讨论
研究发现,短期预测时独立法更优,长期预测时联合法更优。这可能是因为短期预测问题相对简单,使用独立法的简单模型能更好地泛化到保留样本;而长期预测问题更复杂,需要联合法的复杂模型。
研究结果与Hill等人(1994)的研究不一致,可能是由于数据准备过程中去除了可能影响结果的序列。对于联合法,模型滞后可能比独立法和迭代法更重要,需要更频繁地重新校准模型。
独立法始终表现与朴素法和迭代法相当或更优,支持了使用神经网络进行时间序列预测。但不能认为单一方法在所有情况下都最优,应根据具体情况选择合适的方法。
建议在实际应用中,考虑所有方法,理想情况下使用所有方法创建多个模型,并通过验证集选择最佳模型。对于小数据集或计算时间有限的情况,可参考研究结果选择合适的方法。
以下是方法选择的推荐总结:
|预测期|推荐方法|
| ---- | ---- |
|1|独立法|
|2|独立法|
|3|独立法或联合法|
|4|联合法|
本研究局限于M3竞赛的季度序列,预测期限于四个步骤,结果可能不适用于更长的预测期或其他数据集。未来可进行更多应用研究,使用模拟时间序列研究独立法和联合法。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([开始]):::startend --> B(数据准备):::process
B --> B1(去季节化):::process
B --> B2(去趋势化):::process
B --> B3(归一化):::process
B1 --> B4(去除异常序列):::process
B2 --> B4
B3 --> B4
B4 --> C(神经网络训练):::process
C --> C1(独立法训练):::process
C --> C2(联合法训练):::process
C1 --> D(模型选择):::process
C2 --> D
D --> E(预测):::process
E --> F(误差评估):::process
F --> G{预测期 <= 4?}:::decision
G -->|是| H(根据推荐选择方法):::process
G -->|否| I(进一步研究):::process
H --> J([结束]):::startend
I --> J
神经网络多步时间序列预测方法解析
6. 技术点深入分析
6.1 联合法和独立法的参数估计优势
联合法在参数估计上具有独特优势。从自由度的角度来看,以预测四个周期为例,独立法为每个预测期构建独立网络,每个网络的自由度为 (n - 6)((n) 为样本内数据点数);而联合法使用单个网络同时预测四个周期,其自由度为 (3n - 12)。当 (n > 3) 时,联合法的自由度更大,意味着参数估计可能更准确。
然而,联合法也存在不足。添加隐藏节点时,联合法增加的参数数量比独立法多。例如,在特定架构下,独立法增加一个隐藏节点增加五个参数,而联合法增加八个参数。这在预测更多周期时可能导致参数过多,增加过拟合的风险。
6.2 非线性建模能力的应用
神经网络的非线性建模能力在实际应用中至关重要。M - 3 竞赛数据集中约 25% 的序列存在非线性特征,这表明线性模型可能无法很好地拟合这些数据。在使用神经网络进行预测时,不能仅仅根据线性滞后相关性来排除某个滞后项的非线性影响。
独立法在处理非线性问题时,每个预测期的模型可以根据具体情况灵活调整,更好地捕捉非线性特征。联合法虽然也能处理非线性问题,但由于参数共享,可能在某些情况下无法像独立法那样精准地适应每个预测期的非线性特征。
7. 操作步骤总结
7.1 数据准备操作流程
-
去季节化
:
- 计算四个周期的中心移动平均,得到季度季节性指数 (Q_t)。
- 使用公式 (des_t=\frac{x_t}{Q_t}) 计算去季节化数据 (des_t)。
-
去趋势化
:
- 对去季节化的样本内数据进行简单线性回归,得到趋势成分 (T_t)。
- 使用公式 (det_t = des_t - T_t) 计算去趋势化数据 (det_t)。
-
归一化
:
- 计算样本内数据的均值 (\mu_t) 和标准差 (\sigma_t)。
- 使用公式 (norm_t=\frac{det_t - \mu_t}{\sigma_t}) 计算归一化数据 (norm_t)。
-
异常序列处理
:
-
检查归一化数据,去除满足以下条件的序列:
- 样本内或保留样本中值大于 4 的序列。
- 保留样本中均值显著不为零((\alpha = 0.01))的序列。
- 保留样本中趋势大于 1 的序列。
-
检查归一化数据,去除满足以下条件的序列:
7.2 神经网络训练与模型选择操作流程
-
网络架构设置
:
- 独立法:考虑架构 (AxBx1),其中 (A \in {1..4}),(B \in {0..A})。
- 联合法:考虑架构 (AxBx4),其中 (A \in {1..4}),(B \in {0..A})。
- 根据启发式方法限制隐藏节点数量,确保每个参数至少有三个数据点。
-
网络训练
:
- 每个网络架构训练 30 次,使用“scg”选项的“netopt”函数进行训练。
- 若训练过程中收敛缓慢,在 2000 次迭代后停止训练。
-
参数选择
:
- 使用“keep - the - best”(KTB)启发式方法基于 SSE 保留最佳网络参数。
- 使用广义交叉验证(GCV)指标选择模型,公式为 (GCV=\frac{RSS}{1-\frac{mc}{T}}^2),其中 (RSS) 为 SSE 的平方根,(m) 为模型参数数量,(T) 为样本内数据点数,(c = 2.0)。
8. 总结与展望
8.1 研究总结
本研究深入比较了神经网络多步时间序列预测的联合法和独立法。通过对 M3 竞赛季度数据的分析,发现独立法在短期预测(预测期为 1 - 2)中表现更优,而联合法在长期预测(预测期为 4)中具有优势。独立法始终表现与朴素法和迭代法相当或更优,支持了神经网络在时间序列预测中的应用。
研究还分析了两种方法的模型特征,包括线性/非线性模型选择、滞后项选择和参数估计自由度。结果表明,独立法更倾向于选择简单的线性模型和少量滞后项,而联合法虽然参数更多,但基于自由度计算可能更准确地估计参数。
8.2 未来展望
本研究存在一定局限性,仅针对 M3 竞赛的季度序列,预测期限于四个步骤。未来的研究可以扩展到更长的预测期和其他类型的数据集,以验证研究结果的普遍性。
可以进行更多的应用研究,使用模拟时间序列深入研究独立法和联合法的性能。通过模拟不同特征的时间序列,可以更好地理解两种方法在不同情况下的优势和劣势,为实际应用提供更准确的指导。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([开始]):::startend --> B(数据准备):::process
B --> C(模型训练):::process
C --> D{预测期 <= 4?}:::decision
D -->|是| E(按推荐选方法):::process
D -->|否| F(进一步研究):::process
E --> G(预测):::process
F --> G
G --> H(评估结果):::process
H --> I([结束]):::startend
在实际应用中,应根据具体情况综合考虑所有方法,理想情况下使用所有方法创建多个模型,并通过验证集选择最佳模型。对于小数据集或计算时间有限的情况,可以参考本研究的结果选择合适的方法。
超级会员免费看
2万+

被折叠的 条评论
为什么被折叠?



