基于 SARIMA-GARCH-TCN-Attention-XGBoost 的混合时间序列预测模型研究

摘要

针对金融及类金融时间序列中普遍存在的趋势性、季节性、波动聚集、非线性依赖与多源特征交互问题,本文基于项目 SARIMA_GARCH_TCN_Attention_XGBoost 的真实代码、配置文件、样本数据和实验输出,构建一种融合统计计量模型、深度学习模型与机器学习集成模型的混合预测框架。该框架首先利用 SARIMA 模型刻画目标序列的线性自相关与季节项结构,并生成预测值和残差;其次采用 GARCH 模型提取 SARIMA 残差中的条件异方差与波动聚集特征;再次通过 TCN-Attention 模型学习长时序依赖、局部动态模式与关键时间步权重;最后利用 XGBoost 对原始 OHLCV 特征、外生特征、技术指标、SARIMA 输出、GARCH 条件波动率、TCN-Attention 预测值及深度嵌入进行非线性集成,形成最终预测。实验基于项目内置日频 OHLCV 样本,按时间顺序划分训练集、验证集和测试集。结果表明,完整混合模型在测试集上取得 MAE=0.4991、RMSE=0.9671、MAPE=0.7138%、R2=0.8977R^2=0.8977R2=0.8977,相较 SARIMA 与 TCN-Attention 具有明显误差优势。消融实验显示,GARCH 条件波动率特征对完整融合框架具有一定边际贡献,但在当前样本规模下,简化 XGBoost 变体的 RMSE 略优于完整模型,说明复杂混合模型仍需结合样本规模、特征冗余和超参数优化进行稳健检验。本文研究为具有趋势、波动和非线性结构的时间序列预测提供了可复现的组合建模范式。

关键词:时间序列预测;SARIMA;GARCH;TCN;注意力机制;XGBoost;混合模型

1 引言

时间序列预测是金融资产定价、能源负荷调度、交通流量管理和宏观经济监测等领域的基础问题。与一般横截面回归不同,时间序列数据具有严格的时间顺序,且常同时呈现趋势变动、周期波动、短期冲击、波动聚集与非线性耦合等复杂特征。传统统计模型能够提供较强的结构解释能力,但通常依赖线性或弱非线性假设;深度学习模型能够学习复杂时序依赖,但在样本量有限或特征噪声较强时可能出现过拟合;机器学习集成模型具有较强的非线性拟合能力,但若缺少时间序列结构特征输入,其预测结果的经济含义和误差来源不易解释。

为兼顾可解释性、非线性表达能力和预测精度,本文围绕项目中已经实现的 SARIMA-GARCH-TCN-Attention-XGBoost 混合预测流程展开研究。该流程以 SARIMA 提取线性趋势和季节结构,以 GARCH 描述残差波动聚集,以 TCN-Attention 学习深层时序表征,以 XGBoost 完成多源特征融合和残差修正。与单一模型相比,该框架具有如下创新点:第一,将线性趋势建模与非线性残差学习相结合;第二,使用 SARIMA 捕捉季节性和线性自相关结构;第三,使用 GARCH 描述残差波动聚集与异方差特征;第四,使用 TCN 提取长时序依赖和局部时序模式;第五,使用 Attention 强化关键时间步权重分配;第六,使用 XGBoost 对深度模型残差或融合特征进行二次集成修正;第七,构建统计模型、深度学习模型与机器学习模型的多层融合预测框架,并通过对比实验和消融实验验证其有效性。

图1 总体研究技术路线图

在这里插入图片描述

图1给出了本文研究的总体技术路线。论文写作过程以项目真实实现为依据,既描述混合模型理论逻辑,也结合 outputs/results 中已有指标开展实证分析。

2 相关理论基础

2.1 时间序列预测问题定义

设时间序列观测值为 {yt}t=1T\{y_t\}_{t=1}^{T}{yt}t=1T,其中 ttt 为时间索引。一般地,目标序列可表示为系统性部分与随机扰动项之和:

yt=f(t)+εt y_t = f(t) + \varepsilon_t yt=f(t)+εt

其中,f(t)f(t)f(t) 表示趋势、季节项、外生变量和可解释特征共同形成的确定性或弱随机结构,εt\varepsilon_tεt 表示模型未能解释的随机扰动。对于金融类序列,εt\varepsilon_tεt 常具有尖峰厚尾、波动聚集和条件异方差等特征,因此仅采用均值方程建模往往不足。

在深度学习和机器学习建模中,不同变量量纲差异可能影响参数优化。项目中 TCN-Attention 与 XGBoost 特征均采用训练集拟合的标准化变换:

xt′=xt−μσ x_t' = \frac{x_t - \mu}{\sigma} xt=σxtμ

其中,μ\muμσ\sigmaσ 分别为训练集中变量 xtx_txt 的均值与标准差,xt′x_t'xt 为标准化后的特征。仅使用训练集统计量进行标准化,有助于避免验证集和测试集信息泄露。

表1 符号说明表

符号 含义
yty_tyt ttt 期目标变量
xtx_txt ttt 期输入特征
BBB 滞后算子
d,Dd,Dd,D 非季节差分阶数与季节差分阶数
p,qp,qp,q 非季节 ARMA 阶数或 GARCH 阶数
P,QP,QP,Q SARIMA 季节项阶数
sss 季节周期
ete_tet SARIMA 预测残差
σt2\sigma_t^2σt2 GARCH 条件方差
y^t\hat{y}_ty^t 模型预测值
KKK TCN 卷积核大小
dld_ldl lll 层膨胀系数
hhh 多头注意力头数

2.2 SARIMA 模型

SARIMA 模型在 ARIMA 的基础上引入季节自回归、季节差分和季节移动平均结构,适合描述具有周期性和线性自相关特征的序列。差分算子定义为:

∇dyt=(1−B)dyt \nabla^d y_t = (1-B)^d y_t dyt=(1B)dyt

其中,BBB 为滞后算子,满足 Byt=yt−1By_t=y_{t-1}Byt=yt1ddd 为非季节差分阶数。SARIMA 的一般形式为:

ΦP(Bs)ϕp(B)(1−B)d(1−Bs)Dyt=ΘQ(Bs)θq(B)εt \Phi_P(B^s)\phi_p(B)(1-B)^d(1-B^s)^Dy_t=\Theta_Q(B^s)\theta_q(B)\varepsilon_t ΦP(Bs)ϕp(B)(1B)d(1Bs)Dyt=ΘQ(Bs)θq(B)εt

其中,ϕp(B)\phi_p(B)ϕp(B)θq(B)\theta_q(B)θq(B) 分别为非季节自回归和移动平均多项式,ΦP(Bs)\Phi_P(B^s)ΦP(Bs)ΘQ(Bs)\Theta_Q(B^s)ΘQ(Bs) 分别为季节自回归和季节移动平均多项式,sss 为季节周期。项目配置中 SARIMA 阶数为 order=[1,1,1],季节阶数为 seasonal_order=[1,1,1,12]

SARIMA 预测残差定义为:

et=yt−y^tSARIMA e_t = y_t - \hat{y}_t^{SARIMA} et=yty^tSARIMA

其中,y^tSARIMA\hat{y}_t^{SARIMA}y^tSARIMA 为 SARIMA 对目标变量的拟合或预测值。该残差既可用于诊断线性模型未解释部分,也可作为后续 GARCH 波动建模的输入。

2.3 GARCH 模型

GARCH 模型用于刻画残差序列的条件异方差特征。其基本形式为:

et=σtzt e_t = \sigma_t z_t et=σtzt

σt2=ω+∑i=1qαiet−i2+∑j=1pβjσt−j2 \sigma_t^2 = \omega + \sum_{i=1}^{q}\alpha_i e_{t-i}^2 + \sum_{j=1}^{p}\beta_j\sigma_{t-j}^2 σt2=ω+i=1qαieti2+j=1pβjσtj2

其中,ztz_tzt 为标准化扰动项,ω\omegaω 为常数项,αi\alpha_iαi 表示历史冲击对当前波动的影响,βj\beta_jβj 表示历史条件方差的持续性。项目采用 GARCH(1,1),默认以 sarima_residual 作为建模对象。GARCH 波动率修正项可记为:

v^t=σ^t2 \hat{v}_t = \hat{\sigma}_t^2 v^t=σ^t2

需要指出的是,当前项目实现中 GARCH 输出主要作为 garch_volatility 特征进入 XGBoost 融合层,而不是直接与 SARIMA 预测值线性相加。因此,主结果表中 SARIMA-GARCH 与 SARIMA 的预测指标相同,这一现象来自代码实现逻辑,并非结果缺失。

2.4 TCN 模型

Temporal Convolutional Network 通过因果卷积和膨胀卷积建模时序依赖。第 lll 层 TCN 的因果卷积可表示为:

ht(l)=∑k=0K−1wk(l)xt−dlk(l−1) h_t^{(l)} = \sum_{k=0}^{K-1} w_k^{(l)} x_{t-d_l k}^{(l-1)} ht(l)=k=0K1wk(l)xtdlk(l1)

其中,KKK 为卷积核大小,dld_ldl 为膨胀系数,wk(l)w_k^{(l)}wk(l) 为卷积核参数。因果卷积只使用当前及历史时点信息,避免未来信息泄露。为缓解深层网络退化,项目中的 TCN 模块采用残差连接:

ot=F(xt)+xt o_t = F(x_t) + x_t ot=F(xt)+xt

其中,F(⋅)F(\cdot)F() 表示卷积、激活函数与 Dropout 等非线性变换。当输入通道与输出通道不一致时,代码通过 1×11\times11×1 卷积实现维度匹配。

2.5 Attention 机制

Attention 机制通过动态权重分配识别历史窗口中的关键时间步。给定输入矩阵 XXX,查询、键和值向量定义为:

Q=XWQ,K=XWK,V=XWV Q = XW_Q,\quad K = XW_K,\quad V = XW_V Q=XWQ,K=XWK,V=XWV

缩放点积注意力为:

Attention(Q,K,V)=softmax(QKTdk)V Attention(Q,K,V)=softmax\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V

多头注意力将多个子空间中的注意力结果拼接后映射:

MultiHead(Q,K,V)=Concat(head1,…,headh)WO MultiHead(Q,K,V)=Concat(head_1,\dots,head_h)W_O MultiHead(Q,K,V)=Concat(head1,,headh)WO

其中,headihead_iheadi 为第 iii 个注意力头。项目配置采用 attention_type=self_attentionnum_heads=4,通过 PyTorch MultiheadAttention 实现自注意力加权。

2.6 XGBoost 模型

XGBoost 是基于梯度提升树的集成学习模型,通过逐轮添加回归树拟合损失函数下降方向。第 mmm 轮目标函数为:

L(m)=∑i=1nl(yi,y^i(m−1)+fm(xi))+Ω(fm) \mathcal{L}^{(m)} = \sum_{i=1}^{n} l(y_i,\hat{y}_i^{(m-1)} + f_m(x_i)) + \Omega(f_m) L(m)=i=1nl(yi,y^i(m1)+fm(xi))+Ω(fm)

其中,fm(xi)f_m(x_i)fm(xi) 表示第 mmm 棵树的输出,Ω(fm)\Omega(f_m)Ω(fm) 为复杂度惩罚项:

Ω(f)=γT+12λ∑j=1Twj2 \Omega(f)=\gamma T + \frac{1}{2}\lambda\sum_{j=1}^{T}w_j^2 Ω(f)=γT+21λj=1Twj2

其中,TTT 为叶节点数量,wjw_jwj 为第 jjj 个叶节点权重。项目中 XGBoost 采用 reg:squarederror 目标函数,默认树数量为 500,最大深度为 5,学习率为 0.03。

3 混合预测模型构建

3.1 总体模型框架

本文混合模型将统计计量层、深度特征层和机器学习集成层连接起来。其显式加权形式可表示为:

y^t=λ1y^tSARIMA+λ2y^tGARCH+λ3y^tTCN−Attention+λ4y^tXGBoost \hat{y}_t=\lambda_1\hat{y}_t^{SARIMA}+\lambda_2\hat{y}_t^{GARCH}+\lambda_3\hat{y}_t^{TCN-Attention}+\lambda_4\hat{y}_t^{XGBoost} y^t=λ1y^tSARIMA+λ2y^tGARCH+λ3y^tTCNAttention+λ4y^tXGBoost

但根据项目真实代码,最终预测更接近残差修正与非线性特征融合形式:

y^t=y^tSARIMA+r^tGARCH+r^tTCN−Attention+r^tXGBoost \hat{y}_t=\hat{y}_t^{SARIMA}+\hat{r}_t^{GARCH}+\hat{r}_t^{TCN-Attention}+\hat{r}_t^{XGBoost} y^t=y^tSARIMA+r^tGARCH+r^tTCNAttention+r^tXGBoost

进一步可写为:

y^t=FXGB(Xt,y^tSARIMA,et,σ^t,y^tTCN−Attention,HtTCN) \hat{y}_t = F_{XGB}\left( X_t,\hat{y}_t^{SARIMA},e_t,\hat{\sigma}_t, \hat{y}_t^{TCN-Attention},H_t^{TCN} \right) y^t=FXGB(Xt,y^tSARIMA,et,σ^t,y^tTCNAttention,HtTCN)

其中,XtX_tXt 为原始特征、技术指标和人工构造特征,HtTCNH_t^{TCN}HtTCN 为 TCN-Attention 输出的上下文嵌入向量。

图2 SARIMA-GARCH-TCN-Attention-XGBoost 总体模型结构图

在这里插入图片描述

图2表明,本文模型并非简单串联,而是将不同模块输出统一转化为可学习特征,由 XGBoost 完成最终非线性融合。

表2 数据集变量说明表

变量 类型 项目来源 说明
date 时间变量 data/input.csv 日频时间索引
target 连续变量 data/input.csv 预测目标,与 close 相同
open 连续变量 data/input.csv 开盘价类特征
high 连续变量 data/input.csv 最高价类特征
low 连续变量 data/input.csv 最低价类特征
close 连续变量 data/input.csv 收盘价类特征
volume 连续变量 data/input.csv 成交量类特征
macro_feature 连续变量 data/input.csv 外生宏观类特征
target_lag_* 构造变量 utils/feature_engineering.py 目标变量滞后项
rolling_* 构造变量 utils/feature_engineering.py 滚动均值、标准差和极值
MA、EMA、MACD、RSI 构造变量 utils/feature_engineering.py 技术指标
sarima_pred 模型变量 experiments/run_full_pipeline.py SARIMA 拟合及预测值
sarima_residual 模型变量 experiments/run_full_pipeline.py SARIMA 残差
garch_volatility 模型变量 experiments/run_full_pipeline.py GARCH 条件波动率
tcn_attention_pred 模型变量 models/tcn_attention.py TCN-Attention 预测值
tcn_emb_* 模型变量 models/tcn_attention.py TCN-Attention 深度嵌入

3.2 数据预处理

项目默认读取 data/input.csv。数据加载阶段首先识别 datetarget 字段,随后对日期进行解析、排序和去重,对数值列进行前向与后向填充,并使用 IQR 方法裁剪异常值。特征工程阶段构造目标滞后项、滚动统计量、收益率、对数收益率、日期特征以及 OHLCV 技术指标。由于滚动窗口和技术指标需要历史观测,原始 260 条样本经特征工程后保留 240 条有效样本。

图3 数据预处理流程图

读取 data/input.csv

识别 date 与 target

日期解析、升序排序、重复删除

缺失值前向填充与后向填充

IQR 异常值边界计算

异常值裁剪

构造 target_lag_1、2、3、5、10

构造 rolling_mean 与 rolling_std

构造 return_1 与 log_return

构造 year、month、day、dayofweek、quarter

构造 MA、EMA、MACD、RSI、布林带

删除初始空值

输出 240 条有效建模样本

图3展示了项目真实数据处理流程。该流程中的滞后和滚动特征均基于历史观测构造,符合时间序列预测的因果约束。

3.3 SARIMA 线性趋势提取

SARIMA 模块位于 models/sarima_model.py,通过 statsmodels.tsa.statespace.SARIMAX 实现。模型在训练集目标序列上拟合,并对验证集和测试集进行预测。输出字段包括 sarima_predsarima_residual。若模型拟合失败,代码以朴素预测作为兜底,保证实验流程稳定。

图4 SARIMA-GARCH 建模流程图

在这里插入图片描述

图4说明 SARIMA 提供线性趋势提取和残差构造功能,是后续 GARCH 与集成层的重要输入来源。

3.4 GARCH 波动特征建模

GARCH 模块位于 models/garch_model.py。项目默认使用 SARIMA 残差作为输入,配置为 GARCH(1,1),均值项为 Constant,波动项为 GARCH,误差分布为 normal。模型输出 garch_volatility,并在最终 XGBoost 融合中作为风险波动特征使用。当 GARCH 拟合失败时,程序以滚动标准差作为替代波动率输出。

3.5 TCN-Attention 非线性特征学习

TCN-Attention 模块位于 models/tcn_attention.py。模型输入为除 datetarget 外的数值特征,采用长度为 30 的滑动窗口。TCN 隐藏通道为 [32,64,64],卷积核大小为 3,Dropout 为 0.2。Attention 层使用 4 头自注意力,输出预测值、注意力权重和 64 维上下文嵌入。

图5 TCN-Attention 特征提取流程图

在这里插入图片描述

图5显示 TCN-Attention 既产生直接预测值,也产生深度嵌入特征。后者被拼接进 XGBoost 特征集合,用于增强非线性表达能力。

3.6 XGBoost 残差修正

XGBoost 集成模块位于 models/xgboost_ensemble.py。该模块将原始数值特征、技术指标、SARIMA 输出、GARCH 条件波动率、TCN-Attention 预测和嵌入进行拼接,并训练 XGBRegressor 输出 xgboost_final_pred。项目日志显示,最终 XGBoost 使用 104 个特征。

图6 XGBoost 残差集成预测流程图

在这里插入图片描述

图6表明,XGBoost 在本文框架中承担残差修正和非线性特征融合功能。

3.7 模型训练与预测流程

完整流程由 experiments/run_full_pipeline.py 实现。训练过程中使用时间顺序划分,避免随机打乱造成未来信息泄露。TCN-Attention 采用均方误差损失函数:

LMSE=1n∑i=1n(yi−y^i)2 \mathcal{L}_{MSE} = \frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 LMSE=n1i=1n(yiy^i)2

图7 模型训练与预测流程图

读取 configs/config.yaml

固定随机种子 seed=42

加载并清洗数据

特征工程

按 70%、15%、15% 划分样本

训练 SARIMA 并保存 intermediate_sarima.csv

训练 GARCH 并保存 intermediate_garch.csv

训练 TCN-Attention 并保存 attention_weights 与 tcn_embeddings

训练 XGBoost 集成模型

生成 predictions.csv

计算 metrics.csv 与 metrics.json

生成消融实验结果

输出论文分析所需表格

图7概括了项目的端到端训练与预测流程。本文直接读取已有输出结果进行分析,没有重新训练大型模型,也没有编造实验数值。

4 实验设计

4.1 实验环境

项目基于 Python 实现,主要依赖包括 numpypandasmatplotlibscikit-learnstatsmodelsarchxgboosttorchpyyamltqdmoptunaseaborn。根据 outputs/logs/full_pipeline.log,完整流程在 CPU 上完成 TCN-Attention 训练,并成功生成预测结果、评价指标、消融实验结果和模型检查点。

4.2 数据集说明

原始数据文件为 data/input.csv,包含 260 条日频样本,日期范围为 2020-01-01 至 2020-09-16。经特征工程删除初始空值后,有效样本为 240 条,日期范围为 2020-01-21 至 2020-09-16。有效样本中目标变量最小值为 47.7892,最大值为 73.7052,均值为 59.6364。样本按时间顺序划分为训练集 168 条、验证集 36 条和测试集 36 条。

4.3 参数设置

表3 模型参数设置表

模块 参数 当前取值
数据划分 train_ratio 0.70
数据划分 val_ratio 0.15
数据划分 test_ratio 0.15
异常值处理 outlier_method IQR
SARIMA order (1,1,1)
SARIMA seasonal_order (1,1,1,12)
SARIMA maxiter 200
GARCH p, q 1, 1
GARCH mean, vol, dist Constant, GARCH, normal
TCN-Attention sequence_length 30
TCN-Attention hidden_channels [32,64,64]
TCN-Attention kernel_size 3
TCN-Attention dropout 0.2
TCN-Attention num_heads 4
TCN-Attention epochs 100
TCN-Attention early_stopping_patience 15
XGBoost n_estimators 500
XGBoost learning_rate 0.03
XGBoost max_depth 5
XGBoost subsample 0.8
XGBoost colsample_bytree 0.8

4.4 对比模型

表4 对比模型说明表

模型 项目实现方式 对比目的
SARIMA models/sarima_model.py 检验线性季节统计模型基线
SARIMA-GARCH SARIMA 输出与 GARCH 波动特征分析 检验波动特征的辅助作用
TCN 当前代码中与 TCN-Attention 使用同一预测输出 检验深度时序模型表现
TCN-Attention TCN 编码后接自注意力层 检验注意力加权预测能力
XGBoost 主流程最终集成输出,消融中另有简化变体 检验树模型非线性融合能力
SARIMA-GARCH-TCN-Attention-XGBoost 全特征融合模型 检验混合框架整体预测效果

4.5 评价指标

本文采用 MAE、RMSE、MAPE、R2R^2R2 等指标评价模型。MAE 定义为:

MAE=1n∑i=1n∣yi−y^i∣ MAE = \frac{1}{n}\sum_{i=1}^{n}|y_i-\hat{y}_i| MAE=n1i=1nyiy^i

RMSE 定义为:

RMSE=1n∑i=1n(yi−y^i)2 RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2} RMSE=n1i=1n(yiy^i)2

MAPE 定义为:

MAPE=100%n∑i=1n∣yi−y^iyi∣ MAPE = \frac{100\%}{n}\sum_{i=1}^{n}\left|\frac{y_i-\hat{y}_i}{y_i}\right| MAPE=n100%i=1n yiyiy^i

R2R^2R2 定义为:

R2=1−∑i=1n(yi−y^i)2∑i=1n(yi−yˉ)2 R^2 = 1 - \frac{\sum_{i=1}^{n}(y_i-\hat{y}_i)^2}{\sum_{i=1}^{n}(y_i-\bar{y})^2} R2=1i=1n(yiyˉ)2i=1n(yiy^i)2

表5 评价指标说明表

指标 含义 判断标准
MAE 平均绝对误差 越小越好
MSE 均方误差 越小越好
RMSE 均方根误差 越小越好
MAPE 平均绝对百分比误差 越小越好
SMAPE 对称平均绝对百分比误差 越小越好
R2R^2R2 拟合优度 越大越好
Directional Accuracy 相邻变化方向判断准确率 越大越好

5 实验结果与分析

5.1 预测结果对比

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

表6 实验结果对比表

模型 MAE RMSE MAPE(%) R2R^2R2 Directional Accuracy
SARIMA 2.5477 3.0873 3.8881 -0.0421 0.5143
SARIMA-GARCH 2.5477 3.0873 3.8881 -0.0421 0.5143
TCN 1.5835 1.9326 2.3818 0.5916 0.6000
TCN-Attention 1.5835 1.9326 2.3818 0.5916 0.6000
XGBoost 0.4991 0.9671 0.7138 0.8977 0.9143
SARIMA-GARCH-TCN-Attention-XGBoost 0.4991 0.9671 0.7138 0.8977 0.9143

表6结果来自 outputs/results/metrics.csv。完整混合模型相较 SARIMA 的 RMSE 降低约 68.68%,相较 TCN-Attention 的 RMSE 降低约 49.96%;MAE 相较 SARIMA 降低约 80.41%,相较 TCN-Attention 降低约 68.48%。这表明单一线性统计模型难以充分拟合该样本后段的非线性波动,而深度时序特征和树模型融合显著改善预测精度。

5.2 误差指标分析

SARIMA 的 R2R^2R2 为 -0.0421,说明其测试集解释能力不足;TCN-Attention 的 R2R^2R2 提升至 0.5916,反映深度模型能够捕捉部分非线性结构;完整混合模型的 R2R^2R2 达到 0.8977,显示多源特征集成对于测试集目标波动具有较强解释能力。方向准确率方面,完整模型达到 0.9143,明显高于 SARIMA 的 0.5143 和 TCN-Attention 的 0.6000。

图8 误差分解与性能评价流程图

测试集真实值与预测值

计算预测误差

绝对误差

平方误差

相对百分比误差

方向变化误差

MAE 分析

RMSE 与 MSE 分析

MAPE 与 SMAPE 分析

Directional Accuracy 分析

模型平均偏差判断

大误差敏感性判断

相对误差稳定性判断

趋势方向预测判断

综合性能评价

图8说明本文从平均误差、大误差敏感性、相对误差和方向预测能力四个角度评价模型,而非仅罗列单一指标。

5.3 消融实验

消融实验由 experiments/ablation_study.py 实现。该脚本在同一数据划分下构造不同特征剔除方案,并重新训练 XGBoost 变体,以识别 SARIMA、GARCH、TCN-Attention 等模块对最终预测的边际影响。

图9 消融实验设计流程图

完整特征集合

完整混合模型

移除 SARIMA、GARCH、TCN 高层特征

移除 GARCH 条件波动率

保留 SARIMA 与 TCN-Attention 特征

XGBoost 基准变体

SARIMA-TCN-Attention-XGBoost 变体

统计与深度特征融合变体

测试集评价

比较 MAE、RMSE、MAPE、R2

识别模块边际贡献

表7 消融实验表

模型 MAE RMSE MAPE(%) R2R^2R2 Directional Accuracy
SARIMA 2.5477 3.0873 3.8881 -0.0421 0.5143
SARIMA-GARCH 2.5477 3.0873 3.8881 -0.0421 0.5143
TCN 1.5835 1.9326 2.3818 0.5916 0.6000
TCN-Attention 1.5835 1.9326 2.3818 0.5916 0.6000
XGBoost 0.4937 0.9661 0.7057 0.8980 0.9143
SARIMA-TCN-Attention-XGBoost 0.4994 0.9726 0.7146 0.8966 0.9429
SARIMA-GARCH-TCN-Attention-XGBoost 0.4991 0.9671 0.7138 0.8977 0.9143

表7显示,完整模型相较移除 GARCH 的 SARIMA-TCN-Attention-XGBoost 变体,RMSE 降低 0.0055,说明 GARCH 条件波动率特征具有一定增益。然而,消融脚本中的简化 XGBoost 变体 RMSE 为 0.9661,略低于完整模型的 0.9671,表明在当前样本量和特征结构下,原始价格类特征已经具有较强解释能力,额外统计和深度特征可能带来轻微冗余。

5.4 稳健性分析

项目通过固定随机种子、时间顺序划分、训练集标准化和模块兜底机制增强实验稳健性。outputs/logs/full_pipeline.log 显示完整流程两次运行均成功完成,样本划分保持为训练集 168 条、验证集 36 条、测试集 36 条。

表8 稳健性分析表

稳健性维度 项目实现 当前结论 后续建议
时间顺序划分 按 70%、15%、15% 切分 降低未来信息泄露风险 增加滚动窗口回测
随机性控制 seed=42 结果具备可复现基础 多随机种子重复实验
异常值处理 IQR 裁剪 降低极端值干扰 比较不裁剪与 z-score 方案
标准化策略 仅用训练集拟合 scaler 减少标准化泄露 扩展尺度敏感性分析
模型兜底 SARIMA、GARCH 失败时使用替代输出 提高流程稳定性 正式投稿时补充收敛诊断
消融检验 移除 GARCH 和高层特征 识别模块边际贡献 扩展多数据集检验

图10 稳健性分析流程图

稳健性检验目标

时间切分一致性

随机种子一致性

异常值处理一致性

标准化无泄露

消融结果一致性

检查 train、val、test 样本量

检查 seed=42

检查 IQR 裁剪配置

检查训练集 scaler 拟合

检查 ablation_metrics.csv

稳健性结论

图10展示了本文稳健性分析的主要依据。由于当前项目仅包含一个样本文件,正式投稿前仍需补充更多数据集和滚动回测。

5.5 模型复杂度分析

表9 模型复杂度对比表

模型 主要复杂度来源 当前项目规模 复杂度特征
SARIMA 差分阶数、季节阶数、迭代次数 (1,1,1)(1,1,1,12) 可解释性强,非线性能力弱
GARCH 条件方差阶数与分布假设 GARCH(1,1) 适合波动聚集建模
TCN 窗口长度、通道数、卷积核 30 窗口、3 层通道 能并行学习长依赖
Attention 注意力头数、隐藏维度 4 头自注意力 强化关键时间步但增加参数
XGBoost 树数量、深度、特征维度 500 棵树、104 特征 非线性融合能力强
完整混合模型 多阶段训练与特征拼接 统计层、深度层、集成层 精度较高但调参成本较大

项目保存的 XGBoost 特征重要性表明,closehighopenlow 四个 OHLC 特征累计重要性约为 0.9706,TCN 嵌入特征累计重要性约为 0.0264,garch_volatility 的重要性约为 0.0010。这说明当前样本中价格状态变量仍是主导预测信息,深度嵌入和波动特征主要提供辅助增益。

5.6 结果讨论

图11 模型预测结果分析逻辑图

优于 SARIMA

优于 TCN-Attention

略弱于简化 XGBoost 消融变体

实验指标

完整模型是否优于单一模型

线性统计模型不足

集成融合有效

存在特征冗余或小样本约束

保留 SARIMA 解释功能

保留 XGBoost 融合层

加强特征筛选与正则化

扩展多样本滚动检验

综合结论

图11说明,完整混合模型相较 SARIMA 和 TCN-Attention 有明显优势,但未在当前消融实验中显著超过简化 XGBoost 变体。因此,本文结论强调混合框架的有效性和可解释性,同时保留对小样本复杂模型的审慎判断。

表10 模型优缺点分析表

模型 优点 局限
SARIMA 可解释性强,适合线性和季节结构 对非线性和结构突变敏感
GARCH 能刻画波动聚集和条件异方差 主要解释波动而非均值预测
TCN 并行训练效率较高,可学习长依赖 小样本下可能过拟合
Attention 能突出关键时间步 参数增加,解释需结合权重分析
XGBoost 非线性融合能力强,对特征交互敏感 对时序结构依赖人工特征输入
完整混合模型 统计、深度与集成模型互补 模型链条长,调参和解释成本较高

6 结论与展望

本文基于 SARIMA_GARCH_TCN_Attention_XGBoost 项目的真实代码和实验结果,构建并分析了 SARIMA-GARCH-TCN-Attention-XGBoost 混合时间序列预测模型。研究表明,SARIMA 能够提供线性趋势和季节结构刻画,GARCH 能够提取残差条件波动信息,TCN-Attention 能够学习非线性时序依赖,XGBoost 能够在多源特征空间中完成非线性融合。测试集结果显示,完整混合模型达到 MAE=0.4991、RMSE=0.9671、MAPE=0.7138%、R2=0.8977R^2=0.8977R2=0.8977,相较 SARIMA 与 TCN-Attention 显著降低预测误差。

与此同时,消融实验也表明,在当前 240 条有效样本和现有参数设定下,完整混合模型相较简化 XGBoost 变体并未取得显著优势,说明复杂模型可能受到样本规模、特征冗余和超参数设置影响。未来研究可从五个方向展开:第一,扩展更长时间跨度和更多市场或业务场景数据;第二,引入滚动窗口回测和多随机种子实验;第三,对 SARIMA 阶数、GARCH 分布假设、TCN 通道结构和 XGBoost 参数进行系统优化;第四,结合 SHAP 值、注意力权重和残差诊断提升解释能力;第五,引入 Diebold-Mariano 检验等统计显著性检验,提高模型比较的严谨性。

如需要源码,请联系作者,在评论区下留言,制作不易,请各位看官老爷点个赞和收藏
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐