N-BEATS(Neural Basis Expansion Analysis for Time Series Forecasting)是一种基于深度学习的时间序列预测方法。其核心思想是通过使用基展开(Basis Expansion)来捕捉时间序列的各种模式,并利用深度神经网络进行预测。下面详细解释 N-BEATS 中使用基展开的原理,并通过具体数据举例说明其应用。
N-BEATS 和基展开原理
基展开(Basis Expansion)
基展开是一种数学技术,它通过将原始数据投影到一组基函数上,以捕捉数据的不同特征。对于时间序列数据,这些基函数可以是多项式、傅里叶级数等。
在 N-BEATS 中,基展开用于将时间序列分解为多个子序列,每个子序列由一组基函数表示。具体来说,N-BEATS 通过一个多层神经网络来学习这些基函数,并使用这些基函数来拟合和预测时间序列。
模型结构
N-BEATS 模型由多个堆叠的前馈神经网络(Fully Connected Neural Networks)组成,每个神经网络称为一个 Block。每个 Block 包含两个主要部分:
- 趋势模型(Trend Model):用于捕捉长期趋势。
- 季节性模型(Seasonal Model):用于捕捉周期性变化。
每个 Block 接收时间序列的输入,并输出两个部分:
- 预测部分:当前 Block 对未来时间序列的预测。
- 残差部分:当前 Block 未能捕捉的部分,这部分将传递给下一个 Block 进行进一步拟合。
通过这种堆叠的结构,N-BEATS 可以逐步捕捉时间序列的复杂模式,从而提高预测精度。
具体数据举例
假设我们有一个电商平台过去24个月的月度销售数据(单位:千元),如下:
- 2019年1月:100
- 2019年2月:120
- 2019年3月:130
- 2019年4月:150
- 2019年5月:170
- 2019年6月:180
- 2019年7月:190
- 2019年8月:200
- 2019年9月:220
- 2019年10月:230
- 2019年11月:240
- 2019年12月:260
- 2020年1月:130
- 2020年2月:140
- 2020年3月:160
- 2020年4月:180
- 2020年5月:170
- 2020年6月:190
- 2020年7月:200
- 2020年8月:210
- 2020年9月:220
- 2020年10月:230
- 2020年11月:240
- 2020年12月:260
我们希望预测2021年的月度销售数据。
使用 N-BEATS 进行预测
-
输入数据:将过去24个月的销售数据输入 N-BEATS 模型。
-
基展开和预测:
- 第一个 Block:学习时间序列的基础模式,例如线性趋势和季节性模式。输出预测部分和残差部分。
- 第二个 Block:接收第一个 Block 的残差部分,并进一步拟合更细节的模式,输出新的预测部分和残差部分。
- 依次类推,直到最后一个 Block。
-
汇总预测结果:将每个 Block 的预测部分汇总,得到最终的预测结果。
假设模型预测的2021年1月至12月的销售数据如下:
- 2021年1月:135
- 2021年2月:145
- 2021年3月:165
- 2021年4月:185
- 2021年5月:175
- 2021年6月:195
- 2021年7月:205
- 2021年8月:215
- 2021年9月:225
- 2021年10月:235
- 2021年11月:245
- 2021年12月:265
总结
N-BEATS 通过基展开技术,将时间序列分解为趋势和季节性等基础模式,并使用深度神经网络逐步拟合这些模式,从而实现高精度的时间序列预测。其堆叠的 Block 结构能够逐步捕捉时间序列的复杂特征,使得 N-BEATS 成为处理多种时间序列预测任务的强大工具。