摘要时间序列预测是数据挖掘与机器学习领域的重要课题。单一模型往往难以兼顾泛化能力与预测精度而集成学习通过组合多个弱学习器可以显著提升性能。本文介绍一种基于Adaboost算法增强的随机森林回归模型RF-Adaboost用于多变量时间序列的单步预测。文章将简述研究背景、核心功能、算法步骤、技术路线、关键公式与参数设置并给出运行环境及应用场景。代码基于MATLAB实现已在公开数据集上验证有效性。一、研究背景在实际工程与商业场景中如股票价格、电力负荷、交通流量、环境监测等数据往往以时间序列形式存在。准确预测未来趋势对于决策支持至关重要。传统方法ARIMA、指数平滑等线性模型难以捕捉非线性模式。机器学习方法支持向量回归SVR、人工神经网络ANN等具有一定非线性拟合能力但容易过拟合或调参复杂。集成学习方法随机森林Random Forest, RF通过多棵决策树投票/平均具有抗过拟合、可解释性好的优点AdaboostAdaptive Boosting通过迭代调整样本权重聚焦难例进一步提升精度。将Adaboost与随机森林结合RF-Adaboost既保留随机森林的稳定性又利用Boosting的纠错能力适用于中小规模时间序列预测任务。二、主要功能本代码实现以下核心功能数据预处理读取Excel表格数据。采用滑动窗口构造监督学习样本用过去n_in个时刻的多维特征预测未来n_out个时刻的目标值本代码为单步预测。自动控制生成样本数量num_samples及滑动步长scroll_window。训练/测试集划分按指定比例默认80%划分训练集与测试集。数据归一化使用mapminmax函数将输入和输出特征线性缩放到 [0,1] 区间消除量纲影响。Adaboost增强的随机森林回归迭代训练K个随机森林弱回归器。每轮迭代根据上一轮预测误差更新样本权重。计算每个弱回归器的权重最后加权组合得到强预测器。结果反归一化与误差评估将预测值还原至原始量纲。计算多项评估指标MAE、MAPE、MSE、RMSE、R²、RPD。可视化输出绘制训练集/测试集真实值与预测值对比图。绘制测试集预测误差曲线。三、算法步骤RF-Adaboost 的具体实现流程如下3.1 数据整理输入原始多变量时间序列矩阵X每列为一个特征。设定时间步长n_in3即用第t-2, t-1, t时刻的所有特征预测第t1时刻的目标变量。通过滑动窗口生成num_samples个样本每个样本的输入形状为(n_in * or_dim)输出为标量。3.2 初始化训练样本数M测试样本数N。样本权重向量D初始化为均匀分布D(1, j) 1/M。弱回归器个数K 10随机森林参数树的数量n_trees 50每棵树的随机特征数n_layer 30。3.3 迭代训练弱回归器对于第i轮i 1..K根据当前样本权重分布D(i, :)训练随机森林模型注本代码未显式使用权重进行重采样实际使用时需修改regRF_train支持样本权重默认代码仅按原始数据训练权重的调整仅用于后续弱学习器权重计算。对训练集预测得到预测值t_sim1(i, :)计算绝对误差Error(i, j)。更新样本权重若|Error(i, j)| 0.02则增大该样本权重D(i1, j) D(i, j) * 1.1否则权重不变。计算弱学习器权重weight(i) 0.5 / exp( |sum_{j:误差0.02} D(i, j)| )其中分母中的weight(i)实际为误差大于阈值的样本权重和。归一化D(i1, :)使其总和为1。3.4 构建强预测器将所有弱学习器的权重归一化weight weight / sum(weight)。强预测器输出为各弱学习器预测值的加权和T_sim Σ_i weight(i) * t_sim_i3.5 后处理与评估将预测值反归一化至原始量纲。计算训练集与测试集上的误差指标并绘图。四、技术路线下图展示了本模型的完整技术路线原始时间序列滑动窗口构造样本划分训练集/测试集归一化初始化样本权重D迭代i1..K训练随机森林弱学习器预测并计算误差更新样本权重D计算弱学习器权重加权组合强预测器反归一化误差指标计算与可视化五、公式原理Adaboost回归的变种较多本代码采用类似Adaboost.R2的机制但进行了简化。5.1 样本权重更新设第i个弱学习器在训练样本j上的绝对误差为e_ij | y_j - f_i(x_j) |。设定一个误差容忍阈值θ 0.02归一化后的误差界限。则样本权重更新规则为D i 1 ( j ) { D i ( j ) × β , if e i j θ D i ( j ) , otherwise D_{i1}(j) \begin{cases} D_i(j) \times \beta, \text{if } e_ij \theta \\ D_i(j), \text{otherwise} \end{cases}Di1​(j){Di​(j)×β,Di​(j),​ifei​jθotherwise​其中β 1.1为放大因子。随后归一化D i 1 ( j ) ← D i 1 ( j ) ∑ j 1 M D i 1 ( j ) D_{i1}(j) \leftarrow \frac{D_{i1}(j)}{\sum_{j1}^{M} D_{i1}(j)}Di1​(j)←∑j1M​Di1​(j)Di1​(j)​5.2 弱学习器权重计算首先计算加权误差率ε i ∑ j : e i j θ D i ( j ) ∑ j 1 M D i ( j ) \varepsilon_i \frac{\sum_{j: e_ij \theta} D_i(j)}{\sum_{j1}^{M} D_i(j)}εi​∑j1M​Di​(j)∑j:ei​jθ​Di​(j)​由于D_i已经归一化分母为1故ε_i即为误差超过阈值的样本权重和。然后弱学习器权重为α i 0.5 exp ⁡ ( ∣ ε i ∣ ) \alpha_i \frac{0.5}{\exp(|\varepsilon_i|)}αi​exp(∣εi​∣)0.5​该函数使得误差率越高α_i越小指数衰减但始终为正。最后将所有α_i归一化得到最终集成权重。5.3 强预测器输出F ( x ) ∑ i 1 K α i ⋅ f i ( x ) ∑ i 1 K α i F(x) \frac{\sum_{i1}^{K} \alpha_i \cdot f_i(x)}{\sum_{i1}^{K} \alpha_i}F(x)∑i1K​αi​∑i1K​αi​⋅fi​(x)​即为加权平均。六、参数设定参数名取值说明n_in3输入历史时刻数n_out1预测未来时刻数单步num_samples500生成的样本总数scroll_window1滑动窗口步长num_size0.8训练集比例n_trees50随机森林中决策树的数量n_layer30每棵树随机选择的特征数K10弱回归器个数迭代次数误差阈值0.02用于判定样本是否“难例”权重放大因子1.1难例权重增加倍数这些参数可根据实际数据集规模与特性进行调节。例如对于噪声较大的数据可增大n_trees和K或调高误差阈值。七、运行环境软件MATLAB R2018b 及以上版本推荐依赖工具箱随机森林回归函数regRF_train.m,regRF_predict.m可从 Random Forest for MATLAB 获取。基础函数calc_error.m计算MAE, MAPE等指标需自行实现或包含在工程中。操作系统Windows / Linux / macOS数据格式Excel 文件.xlsx第一行为变量名或直接为数值矩阵。执行前请确保所有自定义函数位于 MATLAB 搜索路径中并且已安装必要的读取 Excel 的支持包。八、应用场景RF-Adaboost 模型适用于以下典型场景金融时间序列预测股票收盘价、基金净值、汇率等短期趋势预测。电力负荷预测基于历史功率、温度、湿度等特征预测未来1-6小时的负荷。环境监测PM2.5、空气质量指数AQI的短期预测。工业过程控制设备传感器数据振动、电流的异常趋势预警。交通流预测根据过去几个时间点的车流量预测下一时段的路段通行时间。本模型对中等规模数据几百到几千样本效果较好且由于集成随机森林对噪声和缺失值有一定鲁棒性。若数据具有强周期性建议先进行差分或季节分解。总结本文详细介绍了基于Adaboost增强的随机森林回归模型RF-Adaboost的MATLAB实现。该模型通过Boosting框架迭代更新样本权重聚焦于难以预测的样本从而提升整体回归精度。代码结构清晰包含数据预处理、模型训练、加权集成、误差评估与可视化全套流程。读者可根据实际需求修改参数、替换数据集快速应用于自己的时间序列预测任务。