序列分解模块(Series Decomp)的实现
序列分解模块在 Autoformer 中用于将时间序列分解为趋势和季节性部分。以下是这一模块的具体实现步骤和原理:
分解原理
时间序列的分解通常包括将其分解为以下几个部分:
- 趋势(Trend):表示时间序列的长期方向性变化。
- 季节性(Seasonality):表示时间序列的周期性波动。
- 残差(Residual):表示时间序列中不规则或噪音部分。
这些部分可以通过多种方法进行分解,常见的方法包括移动平均法和傅里叶变换等。
实现步骤
-
趋势提取:
- 使用移动平均或低通滤波器来提取时间序列的趋势部分。
- 趋势部分通常表示为一个平滑的曲线,反映数据的长期变化方向。
-
季节性提取:
- 使用傅里叶变换或其他周期性分解方法来提取季节性成分。
- 季节性成分反映数据中重复的周期性波动。
-
残差计算:
- 残差部分通过从原始时间序列中减去趋势和季节性成分得到。
- 残差部分包含了数据中无法通过趋势和季节性成分解释的变化。
具体实现
趋势提取
使用移动平均法来提取趋势部分,具体步骤如下:
- 选择一个窗口大小 W W W,例如 12(表示月度数据中的一年)。
- 计算移动平均:
T t = 1 W ∑ i = 0 W − 1 X t − i T_t = \frac{1}{W} \sum_{i=0}^{W-1} X_{t-i} Tt=W1i=0∑W−1Xt−i
其中