正在加载中...

展开本页目录
算法教程Autoformer-Autoformer

Autoformer-Autoformer

No.147 · 在线教程

Autoformer-Autoformer 模块在当前项目中的实际实现,是一个面向单变量时间序列预测的简化建模流程。系统先从历史目标序列中构造固定长度的滑动窗口监督样本,再利用随机森林回归器学习“历史窗口到下一时刻数值”的映射关系,最后采用递归方式输出未来若干步预测结果。该实现…

Autoformer-Autoformer

1. 方法概述

Autoformer-Autoformer 模块在当前项目中的实际实现,是一个面向单变量时间序列预测的简化建模流程。系统先从历史目标序列中构造固定长度的滑动窗口监督样本,再利用随机森林回归器学习“历史窗口到下一时刻数值”的映射关系,最后采用递归方式输出未来若干步预测结果。该实现保留了“基于历史窗口进行多步预测”的时序建模思想,但并未实现标准 Autoformer 论文中的序列分解、自相关注意力或编码器-解码器 Transformer 结构

设按时间升序整理后的观测序列为

$$ \mathcal{D}=\{(t_i,y_i)\}_{i=1}^{N},\quad t_1<t_2<\cdots<t_N,\quad y_i\in\mathbb{R} \tag{1} $$

其中 \(t_i\) 表示时间戳,\(y_i\) 表示目标变量。程序界面允许原始表中存在额外列,但当前核心计算仅使用时间列与目标列。

2. 问题定义与数据预处理

系统读入数据后,先保留时间列与目标列,删除缺失观测,并按时间列升序排序,得到清洗后的时间序列:

$$ \tilde{\mathcal{D}}=\{(\tilde t_i,\tilde y_i)\}_{i=1}^{\tilde N} \tag{2} $$

设滑动窗口长度为 \(L\),预测步长为 \(H\),测试集比例为 \(\rho\in[0.05,0.5]\)。为了能够构造至少一个训练窗口与一个后续目标值,程序要求

$$ \tilde N \ge L+2 \tag{3} $$

若原始数据还包含外生变量 \(x_i^{(1)},x_i^{(2)},\ldots\),这些变量在当前版本中不会进入核心训练矩阵,因此本模块本质上是基于目标列历史值的单变量预测器

3. 核心数学模型

3.1 滑动窗口监督化

对 \(i=L+1,L+2,\ldots,\tilde N\),定义输入窗口向量与预测目标为

$$ \mathbf{x}_i= \begin{bmatrix} \tilde y_{i-L}\\ \tilde y_{i-L+1}\\ \vdots\\ \tilde y_{i-1} \end{bmatrix} \in\mathbb{R}^{L}, \qquad z_i=\tilde y_i \tag{4} $$

由此得到监督学习样本集

$$ \mathcal{S}=\{(\mathbf{x}_i,z_i)\}_{i=L+1}^{\tilde N} \tag{5} $$

若记 \(M=\tilde N-L\),则监督特征矩阵与标签向量可记为

$$ X\in\mathbb{R}^{M\times L},\qquad \mathbf{z}\in\mathbb{R}^{M} \tag{6} $$

3.2 按时间顺序切分训练集与测试集

系统不会随机打乱样本,而是按时间顺序将监督样本划分为训练集与测试集。令

$$ M_{\text{train}}=\left\lfloor (1-\rho)M \right\rfloor,\qquad M_{\text{test}}=M-M_{\text{train}} \tag{7} $$

则前 \(M_{\text{train}}\) 个窗口样本用于训练,后 \(M_{\text{test}}\) 个窗口样本用于测试。该切分方式与时序预测的因果顺序一致,避免未来信息泄漏到训练阶段。

3.3 随机森林回归映射

程序使用 RandomForestRegressor 对窗口到下一时刻目标值的映射进行拟合。若从经验风险角度表示,其训练目标可写为

$$ \min_{f}\ \sum_{i=1}^{M_{\text{train}}}\big(z_i-f(\mathbf{x}_i)\big)^2 \tag{8} $$

设森林包含 \(B\) 棵回归树,当前实现固定 \(B=300\)。记第 \(b\) 棵树的输出为 \(T_b(\mathbf{x})\),则总体预测函数为

$$ f(\mathbf{x})=\frac{1}{B}\sum_{b=1}^{B}T_b(\mathbf{x}),\qquad B=300 \tag{9} $$

单棵回归树在候选划分 \(s\) 下,通常以最小化左右子节点平方误差和为准则,可表示为

$$ \min_{s}\left[ \sum_{i\in \mathcal{I}_L(s)}(z_i-\bar z_L)^2+ \sum_{i\in \mathcal{I}_R(s)}(z_i-\bar z_R)^2 \right] \tag{10} $$

其中 \(\mathcal{I}_L(s)\) 与 \(\mathcal{I}_R(s)\) 分别为左右子节点样本集合,\(\bar z_L\) 与 \(\bar z_R\) 为对应节点中的样本均值。程序允许设置 random_state,用于控制森林采样与树构建过程的可复现性。

4. 多步递归预测机制

训练完成后,系统取序列末尾最近 \(L\) 个观测作为初始历史窗口:

$$ \mathbf{h}^{(0)}= \begin{bmatrix} \tilde y_{\tilde N-L+1}\\ \tilde y_{\tilde N-L+2}\\ \vdots\\ \tilde y_{\tilde N} \end{bmatrix} \tag{11} $$

对 \(q=1,2,\ldots,H\),第 \(q\) 步预测采用递归方式生成:

$$ \hat y_{\tilde N+q}=f\!\left(\mathbf{h}^{(q-1)}\right) \tag{12} $$

并将最新预测值压入窗口尾部,得到下一轮历史向量

$$ \mathbf{h}^{(q)}= \begin{bmatrix} h_2^{(q-1)}\\ h_3^{(q-1)}\\ \vdots\\ h_L^{(q-1)}\\ \hat y_{\tilde N+q} \end{bmatrix} \tag{13} $$

若时间列能够推断出稳定频率 \(\Delta t\),则未来时间戳按

$$ \hat t_{\tilde N+q}=\tilde t_{\tilde N}+q\Delta t \tag{14} $$

生成;若频率无法识别,则程序退化为使用连续整数索引。

5. 评价指标与输出结果解释

在测试集阶段,系统对末尾测试样本输出真实值 actual 与预测值 pred,并采用 RMSE 与 MAE 评价模型误差。其定义分别为

$$ \mathrm{RMSE}=\sqrt{\frac{1}{M_{\text{test}}}\sum_{j=1}^{M_{\text{test}}}\left(z_j^{\text{test}}-\hat z_j^{\text{test}}\right)^2} \tag{15} $$

$$ \mathrm{MAE}=\frac{1}{M_{\text{test}}}\sum_{j=1}^{M_{\text{test}}}\left|z_j^{\text{test}}-\hat z_j^{\text{test}}\right| \tag{16} $$

程序将结果导出为 Excel 文件,并包含以下关键工作表:

  • RawData:原始输入数据;
  • SupervisedProcessed:滑动窗口监督化后的特征矩阵;
  • TestPreds:测试集时间、真实值与预测值;
  • Forecast:未来 \(H\) 步递归预测结果;
  • Metrics:RMSE 与 MAE;
  • Params / Parameters:参数配置;
  • TrainingLog:训练样本量与误差摘要;
  • Charts:图表路径索引。

同时,系统还会生成 test_pred_vs_actual.pngforecast.png,分别用于展示测试集拟合效果和未来预测轨迹。

6. 算法流程

按照当前项目实现,Autoformer-Autoformer 模块的计算步骤可归纳为:

  1. 读取 Excel 或 CSV 数据,并选择时间列与目标列;
  2. 删除缺失值,按时间升序整理输入数据;
  3. 设置 lookbackhorizontest_sizerandom_state
  4. 依据长度为 \(L\) 的历史窗口构造监督学习样本;
  5. 按时间顺序划分训练集与测试集;
  6. 训练 RandomForestRegressor(n_estimators=300)
  7. 在测试集上计算 RMSE 与 MAE;
  8. 以末尾 \(L\) 个观测为起点递归生成未来 \(H\) 步预测;
  9. 导出 Excel 结果、测试集对比图、未来预测图和复现脚本。

7. 关键参数说明

表 1 关键参数及含义

参数 含义 当前实现
time_column 时间列名 必选,用于排序与未来时间戳生成
target_column 目标列名 必选,且必须为数值列
lookback 滑动窗口长度 \(L\) 界面范围为 2 至 500,默认 24
horizon 未来预测步数 \(H\) 界面范围为 1 至 200,默认 12
test_size 测试集比例 \(\rho\) 界面范围为 0.05 至 0.5,默认 0.2
random_state 随机种子 可选,用于结果复现
n_estimators 随机森林树数量 代码固定为 300

在参数解释中需要特别指出:虽然上传数据可包含其他数值特征,但当前核心代码仅使用目标列历史值构造滞后变量,因此额外特征不会影响最终预测结果。

8. 论文写作模板

8.1 方法描述模板

可在论文“方法部分”中写为:

“本文采用 Autoformer-Autoformer 模块对时间序列进行预测。为与系统实际实现保持一致,本文将该模块视为一种基于滑动窗口监督化与随机森林回归的简化时序预测方法。首先,对原始时间序列按时间顺序清洗并排序;其次,以长度为 \(L\) 的历史窗口构造监督样本,将前 \(M_{\text{train}}\) 个窗口用于训练、后 \(M_{\text{test}}\) 个窗口用于测试;随后,利用随机森林模型学习历史窗口到下一时刻目标值的映射关系;最后,采用递归方式生成未来 \(H\) 步预测结果,并以 RMSE 和 MAE 评价模型在测试集上的预测性能。该方法能够在较少参数设置下完成短期时序预测,并输出预测结果表、误差指标与可视化图形。”

8.2 结果解释模板

结果部分可写为:该模型在测试集上能够较好跟踪序列的总体变化趋势,RMSE 与 MAE 反映了预测误差的整体水平。若递归步数增加后误差明显累积,应在正文中说明多步滚动预测带来的误差传播效应。

8.3 表格标题模板

表题可写为:简化 Autoformer 时序预测结果与误差指标汇总表。

8.4 图表题注模板

图注可写为:简化 Autoformer 模型的真实值与预测值对比曲线。

8.5 表格示例

建议列名:时间点、真实值、预测值、残差、RMSE、MAE、预测步长。

9. 实现说明与注意事项

  • 该模块适用于具有明确时间顺序的单变量短期预测问题,尤其适合样本量中等、需要快速得到可解释结果的应用场景。
  • 当前实现并非标准 Autoformer 深度学习网络,而是“Autoformer 名称下的简化预测器”;因此论文撰写时不能套用自注意力、序列分解或 Transformer 编码器-解码器公式。
  • 模块采用递归多步预测,随着预测步数增加,前一步误差会向后传递,长期预测时误差累积现象通常更明显。
  • 若数据中存在重要外生变量,当前版本并未将这些变量纳入核心训练流程,可能限制模型对复杂驱动因素的刻画能力。
  • 当时间列频率无法稳定识别时,未来预测结果中的时间索引将退化为整数序号,此时应在论文中说明时间尺度的构造方式。
  • 当样本量较小或 lookback 取值过大时,可用监督样本数会显著减少,容易导致训练不稳定或无法完成建模。
  • 真实计算与导出主链路位于 core/autoformer_calculator.pyui/results_widget.py。前者负责滑窗构造、随机森林训练、测试集预测、递归外推、Excel 导出和图表保存;后者负责结果页展示、自动导出 repro_*.pyrepro_inputs/
  • 实际 results/ 目录下会生成以时间戳命名的结果文件夹或结果文件,复现脚本命名模式为 repro_<safe_app>_<timestamp>.py,复现输出文件命名模式为 <safe_app>_results_<timestamp>_repro.xlsx,输入数据副本放在同级 repro_inputs/ 目录。
  • 当前实现实际导出的 Excel 工作表来自 core/autoformer_calculator.py,包括 RawDataSupervisedProcessedTestPredsForecastMetricsParamsParametersTrainingLogCharts。论文写作时若要描述“输出结果表”,应以上述真实 sheet 名为准。
  • 图表文件由核心模块直接保存到结果目录下,当前固定包含 test_pred_vs_actual.pngforecast.png。其中 Charts 工作表保存的是图名到磁盘路径的索引,而不是图像二进制本身。
  • 若需要和程序完全一致地复现实验,应优先引用 ui/results_widget.py 中的 repro 机制,因为它会把原始输入复制到 repro_inputs/ 并改写为相对路径,避免论文附录中的脚本依赖本机绝对路径。

10. 论文写作建议

论文中建议明确写出:当前模块并非标准 Autoformer,而是“滑动窗口 + 随机森林”的简化预测器。结果部分可重点展示测试集 RMSE/MAE、测试集真实值-预测值对比图和未来 \(H\) 步预测表。若论文中保留 “Autoformer” 名称,最好在方法部分补一句说明其为软件模块名而非原论文模型完整复现。

11. 单篇终审补充

11.1 图题与表题对齐建议

  • RawData 表可写为:表X Autoformer 原始时间序列数据预览。
  • Supervised 表可写为:表X Autoformer 滑动窗口监督样本构造结果。
  • Processed 表可写为:表X Autoformer 处理后监督样本表。
  • TestPreds 表可写为:表X Autoformer 测试集真实值与预测值对照。
  • Forecast 表可写为:表X Autoformer 未来预测结果。
  • Metrics 表可写为:表X Autoformer 测试误差指标汇总。
  • ParamsParameters 表可写为:表X Autoformer 参数设置与滑窗配置。
  • TrainingLog 表可写为:表X Autoformer 训练与测试阶段记录。
  • Charts 表可写为:表X Autoformer 图表索引与路径。
  • Charts 中的 test_pred_vs_actual 建议写为:图X 测试集真实值与预测值对比图。
  • Charts 中的 forecast 建议写为:图X Autoformer 未来预测曲线。

11.2 终审说明

  • 当前实现不是标准 Transformer/Autoformer 网络,而是滑动窗口加随机森林回归器。正文不能写自注意力分解结构、编码器-解码器堆叠或频域自相关机制。
  • SupervisedProcessed 在当前实现中都来自同一份处理后监督样本,论文里可把前者解释为“监督化滑窗结果”,但不要再虚构额外特征工程步骤。
  • TrainingLog 不是逐 epoch 的深度学习损失历史,而是当前简化流程下的阶段记录表;正文不要写成“神经网络训练曲线”。
  • Charts 只包含 test_pred_vs_actual.pngforecast.png 两类图,因此结果部分应聚焦“测试拟合”和“未来外推”,而不是宣称存在训练损失下降图。

11.3 全量强化补充

本篇终审补充绑定的真实算法目录为 具体的算法3/深度学习与时序网络/Autoformer-Autoformer,本次采用的代表性结果目录为 具体的算法3/深度学习与时序网络/Autoformer-Autoformer/results/manual_sample_data_forward_20260322。这里不是时间戳单目录,而是“主结果 + repro 再生产物”并存的手动样例验证目录。

该目录里实际存在两份工作簿:

  • autoformer_sample_data_forward.xlsx
  • Autoformer-Autoformer_results_20260322_105801_repro.xlsx

两者实测工作表一致,均包含:

  • RawData
  • Supervised
  • Processed
  • TestPreds
  • Forecast
  • Metrics
  • Params
  • Parameters
  • TrainingLog
  • Charts

因此这篇文档应明确区分:autoformer_sample_data_forward.xlsx 是手动样例正向运行的主结果,Autoformer-Autoformer_results_20260322_105801_repro.xlsx 是同目录内由 repro 脚本重新生成的工作簿。两者虽然结构一致,但不能被写成同一个导出文件。

当前目录中的真实图文件分成两套:

  • autoformer_sample_data_forward_plots/test_pred_vs_actual.png
  • autoformer_sample_data_forward_plots/forecast.png
  • Autoformer-Autoformer_results_20260322_105801_repro_plots/test_pred_vs_actual.png
  • Autoformer-Autoformer_results_20260322_105801_repro_plots/forecast.png

这说明当前目录确实同时保留了主结果图和 repro 再生产物图。论文或软件说明如果引用图片,应明确对应哪一套,而不是把两套图混成单轮输出。

复现实物方面,该目录实际包含:

  • 具体的算法3/深度学习与时序网络/Autoformer-Autoformer/results/manual_sample_data_forward_20260322/repro_Autoformer-Autoformer_20260322_105801.py
  • 具体的算法3/深度学习与时序网络/Autoformer-Autoformer/results/manual_sample_data_forward_20260322/repro_inputs/sample_data.csv

脚本中明确写成 INPUT_FILE = 'repro_inputs/sample_data.csv'OUTPUT_FILE = 'Autoformer-Autoformer_results_20260322_105801_repro.xlsx'。因此这一轮的真实复现口径已经是“结果目录内部输入副本 + 固定 repro 输出文件名”,而不是依赖原始外部 CSV 路径。

11. 软件实现核查补充(2026-07)

  • 当前主结果目录应写作 具体的算法3/深度学习与时序网络/Autoformer-Autoformer/results/manual_sample_data_forward_20260322
  • 正文应围绕 ParametersRawDataProcessedTestPredsTrainingLogMetricsCharts 来写。
  • 图证应对应 test_pred_vs_actual.pngforecast.png,并把主结果和 repro 再生产物区分开。
  • 复现脚本应按 repro_Autoformer-Autoformer_20260322_105801.py + repro_inputs/sample_data.csv 的口径说明。