3、传统时序预测方法:ARIMA、指数平滑、Prophet等经典模型及其局限性
在进入Transformer架构之前,有必要系统梳理传统时序预测方法的核心思想、适用边界与根本缺陷。时序预测的本质是从历史观测中提取可泛化的时间依赖关系,而ARIMA、指数平滑(Exponential Smoothing, ETS)与Prophet分别代表了统计建模、状态空间平滑与分解式回归三条经典技术路线。理解它们的建模假设与失效场景,是理解Transformer为何能在长序列、多变量、非线性场景中胜出的关键前提。
3.1 ARIMA:线性自回归的经典范式
核心原理
ARIMA(Autoregressive Integrated Moving Average)由自回归(AR)、差分(I)和移动平均(MA)三部分组成。其数学表达为:
ARIMA(p,d,q):
AR(p): y_t = c + φ₁y_{t-1} + ... + φ_p y_{t-p} + ε_t
I(d): 对y_t做d阶差分,使其平稳
MA(q): y_t = c + ε_t + θ₁ε_{t-1} + ... + θ_q ε_{t-q}
联合形式: (1-φ₁B-...-φ_pB^p)(1-B)^d y_t = (1+θ₁B+...+θ_qB^q)ε_t
其中B为滞后算子,B^k y_t = y_{t-k}
ARIMA的核心假设是:经过d阶差分后,序列变为平稳过程,且当前值与过去p个观测值和q个随机误差项呈线性关系。模型识别依赖ACF(自相关函数)和PACF(偏自相关函数)的截尾/拖尾特征。
建模流程与判断方法
- 平稳性检验:使用ADF检验或KPSS检验,若p值>0.05则需差分。
- 定阶:观察差分后序列的ACF/PACF图,或使用AIC/BIC准则在(p,q)网格中搜索。
- 参数估计:采用极大似然估计或最小二乘法。
- 残差诊断:Ljung-Box检验残差是否为白噪声,若p值<0.05说明信息未提取干净。
案例拆解:某零售门店周销量预测
某连锁超市收集了某门店过去156周的周销量数据(约3年),目标预测未来4周销量。初始ACF图显示缓慢衰减,ADF检验p=0.32(非平稳)。对数据做一阶差分后,ADF p=0.01(平稳),ACF在滞后1阶截尾,PACF在滞后1阶截尾,初步判定ARIMA(1,1,1)。使用AIC比较(0,1,1)、(1,1,0)、(1,1,1),最终选择AIC最小的ARIMA(1,1,1)。残差Ljung-Box p=0.42,通过白噪声检验。预测结果MAPE=12.3%。但第157周恰逢国庆促销,实际销量比预测高38%,模型完全未捕捉到节假日效应——这是ARIMA缺乏外生变量支持的结构性缺陷。
常见误区与总结
- 误区1:认为差分次数越多越好。过度差分会导致信息丢失,且增加模型方差。
- 误区2:忽略季节性。ARIMA只能处理非季节性平稳序列,季节性需用SARIMA扩展。
- 误区3:将ARIMA用于长周期预测(如预测未来50步),误差会随步长平方增长。
3.2 指数平滑(ETS):状态空间框架下的加权平均
核心原理
指数平滑的核心思想是“近期数据比远期数据包含更多未来信息”,因此赋予近期观测值指数衰减的权重。其基本形式为:
简单指数平滑(SES):
ŷ_{t+1|t} = α·y_t + (1-α)·ŷ_{t|t-1}
其中α∈(0,1)为平滑参数
Holt线性趋势模型:
水平: l_t = α·y_t + (1-α)(l_{t-1} + b_{t-1})
趋势: b_t = β·(l_t - l_{t-1}) + (1-β)·b_{t-1}
预测: ŷ_{t+h|t} = l_t + h·b_t
Holt-Winters季节性模型(加法):
水平: l_t = α(y_t - s_{t-m}) + (1-α)(l_{t-1}+b_{t-1})
趋势: b_t = β(l_t - l_{t-1}) + (1-β)b_{t-1}
季节: s_t = γ(y_t - l_{t-1} - b_{t-1}) + (1-γ)s_{t-m}
预测: ŷ_{t+h|t} = l_t + h·b_t + s_{t+h-m(k+1)}
ETS模型通过状态空间框架统一了误差类型(加法/乘法)、趋势类型(无/加法/阻尼)和季节类型(无/加法/乘法),共30种组合。模型选择通常基于AICc准则。
操作流程与实战场景
| 步骤 | 操作内容 | 关键输出 |
|---|---|---|
| 1. 可视化 | 绘制时间序列图,观察趋势、季节性和波动幅度 | 初步判断趋势/季节类型 |
| 2. 分解 | 使用STL或经典分解,分离趋势-季节-残差 | 确认季节周期长度m |
| 3. 模型选择 | 遍历ETS组合,比较AICc | 最优ETS模型 |
| 4. 残差检验 | 检查残差ACF和Ljung-Box | 残差白噪声确认 |
| 5. 预测与评估 | 滚动预测,计算MAPE/RMSE | 预测区间与精度 |
实战案例:某电商平台日订单量预测
某电商平台有365天日订单数据,明显呈现周季节性(周末高、工作日低)和缓慢上升趋势。使用Holt-Winters加法季节模型(m=7),α=0.35,β=0.02,γ=0.28。训练集为前300天,测试集为后65天。模型在测试集上MAPE=8.7%,表现良好。但第320天平台推出“双11”预热活动,订单量突增200%,模型预测完全失效。原因在于ETS假设季节模式是固定不变的,无法适应突发事件引起的模式突变。
常见误区与总结
- 误区1:α、β、γ手动随意设置。应通过优化算法(如L-BFGS)最小化SSE来估计。
- 误区2:忽略阻尼趋势。当趋势随时间衰减时,使用阻尼趋势(φ<1)可显著提升长期预测精度。
- 误区3:将ETS用于多变量场景。ETS本质是单变量模型,无法利用其他相关序列的信息。
3.3 Prophet:分解式回归的实用主义
核心原理
Prophet由Facebook于2017年开源,其核心思想是将时间序列分解为四个可解释的组成部分:
y(t) = g(t) + s(t) + h(t) + ε_t
其中:
g(t): 趋势项,支持线性或逻辑斯蒂增长,自动检测变点
s(t): 季节性项,使用傅里叶级数拟合(年/周/日)
h(t): 节假日效应,用户自定义日期列表
ε_t: 误差项,假设服从正态分布
Prophet的优势在于:对缺失值不敏感、自动处理异常值、支持自定义节假日、趋势变点自动检测。其拟合采用Stan概率编程框架,提供完整的预测区间。
建模流程与参数配置
- 数据准备:需要两列——
ds(日期)和y(数值)。 - 趋势设置:选择
growth='linear'或'logistic',设置changepoint_prior_scale控制变点灵活性。 - 季节性设置:
yearly_seasonality、weekly_seasonality、daily_seasonality可设为auto或指定傅里叶阶数。 - 节假日设置:传入
holidaysDataFrame,包含holiday、ds、lower_window、upper_window。 - 交叉验证:使用
cross_validation函数评估不同horizon下的误差。
风险提示:Prophet的“黑箱”陷阱
Prophet虽然提供了可解释的分解组件,但其变点检测和傅里叶阶数选择对结果影响极大。若changepoint_prior_scale设置过大(如0.5),模型会过度拟合历史波动;若过小(如0.001),则无法捕捉趋势变化。此外,Prophet对长周期季节性(如3年周期)支持较弱,因为傅里叶级数需要足够阶数才能拟合复杂周期。
案例拆解:某App日活跃用户(DAU)预测
某社交App有2年DAU数据,呈现明显周季节性和缓慢增长趋势。使用Prophet默认参数(线性趋势、周季节性、年季节性),MAPE=5.2%。但第700天App上线新功能导致DAU跳升15%,Prophet的变点检测在默认参数下未能及时识别该变点,预测持续低估。将changepoint_prior_scale从0.05调至0.2后,模型在第710天左右捕捉到变点,但代价是训练集拟合误差上升20%。这体现了Prophet在“敏感度”与“过拟合”之间的权衡困境。
3.4 传统方法的共性局限与Transformer的切入点
局限一:长期依赖建模能力不足
ARIMA和ETS的预测公式中,远期预测依赖于递归迭代,误差逐级累积。例如ARIMA(1,1,1)预测h步后的方差为σ²(1+h),随h线性增长。而Transformer通过自注意力机制,可以直接建立任意两个时间步之间的依赖关系,路径长度为O(1),从根本上解决了梯度消失和误差累积问题。
局限二:多变量交互需要手工建模
传统方法处理多变量时序时,要么拆分为多个单变量模型(忽略变量间相关性),要么使用VAR(向量自回归)但受限于线性假设。Transformer的注意力头可以自动学习不同变量之间的交互模式,无需人工设计交互项。
局限三:非线性模式表达能力弱
ARIMA和ETS本质是线性模型,Prophet虽然能拟合非线性趋势,但季节性部分仍为傅里叶级数的线性组合。Transformer的前馈网络和注意力机制具备万能逼近能力,可以拟合任意复杂的非线性映射。
局限四:分布漂移适应性差
传统模型一旦训练完成,参数固定,当数据分布发生漂移(如疫情导致消费行为改变)时,需要人工介入重新训练。Transformer结合在线学习或增量训练策略,可以更灵活地适应分布变化。
| 对比维度 | ARIMA | ETS | Prophet | Transformer |
|---|---|---|---|---|
| 模型类型 | 线性统计 | 状态空间 | 分解回归 | 深度注意力 |
| 长期依赖 | 弱(误差累积) | 弱 | 中 | 强(O(1)路径) |
| 多变量支持 | 需扩展VAR | 不支持 | 不支持 | 原生支持 |
| 非线性能力 | 弱 | 弱 | 中 | 强 |
| 可解释性 | 高 | 高 | 高 | 低-中 |
| 训练效率 | 快 | 快 | 快 | 慢(需GPU) |
| 数据需求 | 中(需平稳) | 中 | 低(容忍缺失) | 大(需大量数据) |
总结复盘:从传统方法到Transformer的思维转变
传统方法的核心思维是“先假设后验证”——先假设线性、平稳、固定季节模式,再通过统计检验验证假设。而Transformer的核心思维是“数据驱动”——通过大量数据自动学习时间依赖结构。这种转变的代价是:需要更多数据、更强算力、更复杂的调参。因此,在实际项目中,若数据量小于1000个时间步且模式相对规则,传统方法仍具竞争力;当数据量充足且存在复杂交互、长程依赖或非线性模式时,Transformer的优势才真正显现。