1. 引言
随着电商数据维度快速增长,利用统计学、集成学习与深度学习[1]技术挖掘销售时间序列趋势,已成为提升零售决策效率的关键。从传统统计方法向现代集成学习范式及深度学习方法的演进,拓展了时序预测在电商领域的应用边界。面对非线性、高波动的销量数据,依据预测周期选择适配算法[2]是提升决策质量的核心。零售预测具备多粒度特征:管理层关注门店、品类聚合需求以支撑补货与资源配置[3],一线运营则依赖SKU级精细化预测,应对长尾、缺货与促销带来的库存波动[4]。因此,在同一体系下对比聚合序列与SKU细粒度序列的预测效果,对模型选型至关重要。
过往研究中,统计模型长期占据主导。SARIMA模型[5]可解析季节性与平稳性;Prophet [6]采用可分解结构,在趋势突变与节假日效应建模中优势显著。但下沉至SKU级后,销量常呈现零膨胀、间歇性需求[7],外生因素影响更为突出,传统模型的线性与平稳性假设面临挑战。为刻画非线性交互关系,集成学习与深度学习成为重要补充:XGBoost [8]可融合多类外部特征并刻画变量交互,在高噪声、稀疏数据下效率更高;深度学习模型N-BEATS [9]通过残差结构提升长序列建模能力,但深度模型通常依赖充足样本[10],在SKU级稀疏场景下的稳定性仍需验证。
现有研究较少在统一框架下系统对比统计、集成学习与深度学习模型在不同预测跨度与粒度下的性能差异,对“跨度–粒度–稀疏度”耦合影响的量化仍不足[11]。基于此,本文在M5数据集[12]上对SARIMA、Prophet、N-BEATS (深度学习)与XGBoost (集成学习)开展实证:设置店铺级与SKU级任务,店铺级比较7/14/28天窗口下的精度与适应性;SKU级按稀疏度分层,评估间歇性需求下的中长期误差。通过对比各模型在波动、趋势与稀疏峰值捕捉上的差异,明确其适用边界,为零售销量预测的模型选型提供量化依据。
2. 方法
2.1. 数据来源与预处理
本研究采用M5 Forecasting数据集(Walmart零售日销量),包含3个州(CA/TX/WI)共10家门店、3049个SKU的日销量序列以及对应的日历信息与历史价格信息。为保证实验一致性,我们以门店CA_1为核心研究对象,并构建两类预测任务:
(1) 店铺级预测:聚合全店SKU销量,预测窗口设定为
。(2) SKU级预测:从CA_1门店随机抽取150个SKU (覆盖FOODS/HOUSEHOLD/HOBBIES),仅在
下进行多步预测,并按历史总销量三分位分为High/Medium/Low三组(每组50个)。
为避免信息泄露并与多步预测对齐,本文采用时间顺序切分。设全序列长度为
。对每次回测,使用训练集
、验证集
与测试集
,其中测试窗口长度为
,验证窗口长度为
。店铺级采用单次切分
,
,
,SKU级采用3次滚动回测。第
次回测(
)的测试区间为
,其中
以固定步长Δ向后滚动。
为了保证实验的针对性并控制计算复杂度,本文选取了加利福尼亚州1号门店(CA_1)的数据作为核心研究对象。本研究针对电商销量数据的特性,构建了两类特征系统:
(1) 时间日历特征(Calendar Features)
零售销量具有较强的周期性,本文从日期字段中提取并编码了以下特征:基础时间特征,包括年份、月份、日期、星期;周末标识,通过构建布尔变量以捕捉周末购物高峰效应;特殊事件特征,对节假日进行分类编码,并引入相关变量,以刻画食品券发放对食品类商品销量的拉动作用。
(2) 价格特征(Price Features)
价格是影响销量的最敏感因子,我们构建了相对价格特征,以反映当前价格与历史均价的差异。
价格变动率:
,该特征能有效捕捉促销打折(负值)对销量的非线性刺激作用。
2.2. 模型介绍与参数设置
本研究选取了四种具有代表性的预测模型,分别覆盖了经典统计学、工业界广义加性模型、前沿深度学习以及集成集成学习范式。
SARIMA
SARIMA适用于具有趋势和季节性的单变量序列。针对M5数据集中显著的“周”循环特性(
),记为
。对序列
做常规差分与季节差分:
(1)
其中
为滞后算子,
为白噪声;
为季节AR/MA多项式。参数通过极大似然估计,并以信息准则辅助选择阶数。
Prophet
Prophet采用广义加性模型(GAM)将时间序列分解为趋势、季节与节假日三部分:
(2)
其中
为分段趋势项(含变点)。
为季节项,
为节假日/事件项。季节性用傅里叶级数表示:
(3)
为周期长度(如周周期),
为傅里叶阶数。节假日效应可表示为指示变量的线性组合:
(4)
其中
为节假日/事件指示向量,
为对应权重系数。
N-BEATS
N-BEATS是一种基于全连接网络的端到端预测模型,不依赖RNN,而用堆叠残差块逐步分解序列并生成预测。模型由多个Stack组成,每个Stack含若干Block。对第l个Block:
(1) 特征编码(Feature Encoding)。输入是回望窗口的历史数据
(初始为
)。通过4层全连接层(FC)和ReLU激活函数提取非线性特征:
(5)
(2) 基函数展开系数(Expansion Coefficients)。网络的最后层输出两个投射向量——“向后系数”
和“向前系数”
:
(6)
(3) 波形合成与分解(Synthesis)。这是N-BEATS的核心。系数与预设的基函数
相乘,生成拟合曲线:
(7)
(4) 双向残差传递(Doubly Residual)
最终模型输出为所有Block的forecast累加:
(8)
这种机制允许第一个Stack专注于捕捉宏观趋势,后续Stack专注于捕捉高频细节。
XGBoost
XGBoost在本研究中作为集成学习的代表,不同于上述端到端的时序模型,XGBoost采用了“特征工程 + 监督回归”的范式。通过逐轮叠加回归树来拟合残差,从而形成强预测器。其基本形式为加法模型:
(9)
二其中
为输入特征,
表示第
棵回归树,
为所有树模型空间。
XGBoost以目标函数最小化为训练准则,将数据拟合误差与模型复杂度进行联合约束:
(10)
其中
为损失函数(回归任务常用平方误差或绝对误差),
为叶节点数,
为叶节点权重,
与
分别控制树结构与叶权重的正则化强度。训练过程中采用二阶泰勒展开近似损失并进行贪心分裂,从而在保证精度的同时提升计算效率。
2.3. 多步预测策略与模型参数
为保证基准模型比较的公平性与可重复性,本文对所有模型采用统一的超参数调优流程:基于滚动时间验证集,使用Optuna的TPE采样器进行贝叶斯优化;门店级以MAPE,SKU级以RMSSE作为目标函数。对每个预测跨度
分别调优,以避免不同跨度下误差分布差异影响结论。门店级与SKU级实验使用一致的搜索空间设置,在控制计算成本的前提下尽量保证不同规模门店之间的可比性。各模型搜索空间如下。SARIMA的非季节部分的自回归阶数p、滑动平均阶数q均取{0, 1, 2},差分阶数d取{0, 1};季节部分的自回归阶数P、滑动平均阶数Q取{0, 1, 2},季节差分阶数D取{0, 1},季节周期固定为m = 7 (日度数据),趋势项在“无趋势/常数/线性”中自动选择。Prophet:变化点先验尺度{0.001, 0.01, 0.05, 0.5},季节性先验尺度{0.01, 0.1, 1.0, 10.0},节假日先验尺度{0.01, 0.1, 10.0};节假日效应使用统一节假日表,并以日期哑变量输入。N-BEATS的历史销量与日历/价格等外生特征拼接后经线性投影输入;模型堆叠层数取值{2, 4, 6}, 每个堆叠block数固定为1,隐藏宽度{128, 256, 512};学习率[4 × 10−5, 4 × 10−3],batchsize{32, 64, 128};最多训练50轮,早停耐心10;输入窗口长度按实验统一设为H的若干倍,并以验证集MAPE/RMSSE最小化选取配置。XGBoost:最大深度{3, 5, 7, 9},学习率{0.01, 0.05, 0.1, 0.3},基学习器数{100, 300, 500, 1000};样本/特征采样比例均为{0.6, 0.8, 1.0},最小叶子节点权重取{1, 3, 5},L2正则[0, 1.0];采用早停,耐心50。
上述设置在门店级与SKU级实验中保持一致,并对每个H独立寻优;文中所有指标均基于该流程得到的最优超参数计算。
3. 模型结果与分析
3.1. 店铺级销量预测
本节以M5数据集中的典型门店CA_1 (加利福尼亚州1号店)为例,展示了SARIMA、Prophet、N-BEATS和XGBoost四种模型在7天(短期)、14天(中期)和28天(长期)预测窗口下的可视化结果与量化评估。下面将展示四个模型在不同时间跨度下的预测曲线对比。图中灰色区域为历史训练数据,浅灰色阴影区域为预测窗口,黑色虚线代表真实销量,彩色实线代表模型预测值。图1~3分别展示了各模型在7天、14天及28天窗口下的预测表现:
图1~3显示,7/14天窗口波动强且存在短期突变,28天窗口周度季节性更稳定。总体上XGBoost在三种跨度下误差最低,兼顾突变响应与周期稳定性;SARIMA在28天场景下表现接近并优于N-BEATS;Prophet因平滑假设对峰值刻画偏弱。本文还记录了四个模型在训练过程中的评估指标,结果如表1所示。
综合分析M5数据集上不同预测窗口的(7天、14天、28天)上的销量预测结果,XGBoost凭借对滞后特征的高效利用,在兼顾短期突发波动的灵敏度与长期周期变化的稳定性上表现突出,在各预测步长中均取得了相对最低的MAPE (4.47%~6.12%),整体性能在本次实验中更具优势。随着预测窗口从7天扩展至28天,数据特征从以不规则震荡为主逐渐转向以规律的周度季节性为主,各模型的整体精度也呈现出逐步提升的趋势。在此过程中,传统统计模型SARIMA展现出较好的长周期适应性,在28天预测场景下精度逼近甚至反超了深度学习模型N‑BEATS。尽管N‑BEATS在处理大规模同质化数据时通常表现优异,但在本研究采用的M5数据集上,传统ARIMA模型展现出了更强的鲁棒性。这主要归因于ARIMA对单变量序列的独立建模方式,减少了不同商品间噪声的负迁移影响;在M5数据集呈现高度稀疏和随机波动的特点时,结构相对简单的统计模型遵循“均值回归”原则,一定程度上避免了深度学习模型过度拟合噪声的倾向;同时,统计方法的差分机制在处理非线性数据趋势外推时,表现往往优于未经过度
Figure 1. Comparison of predicted vs. actual results for each model in the 7-day forecast window
图1. 7天预测窗口中各模型预测结果与实际结果对比图
Figure 2. Comparison of predicted vs. actual results for each model in the 14-day forecast window
图2. 14天预测窗口中各模型预测结果与实际结果对比图
Figure 3. Comparison of predicted vs. actual results for each model in the 28-day forecast window
图3. 28天预测窗口中各模型预测结果与实际结果对比图
Table 1. Summary of model evaluation indicators
表1. 模型评估指标汇总表
预测窗口 |
评价指标 |
SARIMA |
Prophet |
N-BEATS |
XGBOOST |
7-Day |
MAE |
404.41 |
459.41 |
348.14 |
299.69 |
RMSE |
507.16 |
540.45 |
413.51 |
374.21 |
MAPE (%) |
8.18 |
9.26 |
7.39 |
6.12 |
14-Day |
MAE |
388.04 |
455.9 |
325.85 |
251.74 |
RMSE |
464.53 |
517.85 |
374.44 |
311.01 |
MAPE (%) |
7.85 |
9.25 |
7.09 |
5.15 |
28-Day |
MAE |
271.77 |
332.77 |
306.79 |
210.41 |
RMSE |
359.03 |
412.78 |
383.07 |
264.14 |
MAPE (%) |
5.61 |
6.85 |
6.42 |
4.47 |
调优的深度学习模型。相比之下,Prophet由于其平滑假设带来的结构刚性,较难刻画销量的微观波动与极值,在各时间跨度下的表现整体上不及其他模型。
3.2. SKU级销量预测
为进一步验证模型在细分场景下的适应性,本节从CA_1店铺的3000余个SKU中随机抽取150个样本,按销量水平分层后开展SKU级销量预测实验,重点分析模型在不同稀疏度数据下的性能差异。这150个SKU覆盖所有三大品类FOODS、HOUSEHOLD、HOBBIES。基于总销量,进行三分位分层,分为High、Medium、Low三组,每组50个SKU。各组的SKU稀疏度如表2所示。
由表2可见,从High到Low组,平均日销量急剧下降(26.8→1.1),零销售占比显著上升(14.8%→79.6%),平均需求间隔从1.18天延长至5.89天。Low组呈现典型的间歇性需求特征(大量零值 + 偶发峰值),这对模型处理零膨胀与非连续突变的能力提出了更高要求。
Table 2. Comparison of the sparsity indicators of the three sets of sales data
表2. 三组销量数据稀疏度指标对比
销量组 |
SKU数量 |
平均日销量 |
零销售占比 |
平均需求间隔 |
High |
50 |
26.8 |
14.8% |
1.18 |
Medium |
50 |
9.2 |
42.5% |
2.14 |
Low |
50 |
1.1 |
79.6% |
5.89 |
店铺级聚合后零值少且更关注相对误差,故以MAPE为主;而SKU级零值多使MAPE不稳定,改用更稳健的RMSSE并辅以MAE/RMSE,同时为控制计算成本采用3次滚动回测(每次预测未来28天并留28天验证用于早停与调参),最终报告三次结果的均值±标准差。RMSSE的scale由训练集上
计算。各销量组的主要结果如表3所示。
Table 3. Average performance statistics table of each sales group for 3 consecutive rolling tests
表3. 各销量组3次滚动回测平均性能统计表
销量组 |
模型 |
MAE |
RMSE |
RMSSE |
High |
XGBoost |
18.4 ± 2.1 |
28.7 ± 3.4 |
0.758 ± 0.104 |
N-BEATS |
19.8 ± 2.6 |
30.9 ± 4.1 |
0.792 ± 0.108 |
Prophet |
22.6 ± 3.0 |
35.2 ± 4.7 |
0.908 ± 0.132 |
SARIMA |
23.8 ± 3.3 |
37.1 ± 5.0 |
0.955 ± 0.140 |
Medium |
XGBoost |
6.8 ± 1.4 |
11.2 ± 2.3 |
0.862 ± 0.162 |
N-BEATS |
7.4 ± 1.7 |
12.6 ± 2.8 |
0.918 ± 0.178 |
Prophet |
8.9 ± 2.0 |
15.1 ± 3.5 |
1.142 ± 0.212 |
SARIMA |
9.4 ± 2.2 |
16.3 ± 3.9 |
1.208 ± 0.228 |
Low |
XGBoost |
0.92 ± 0.31 |
2.1 ± 0.7 |
1.178 ± 0.332 |
N-BEATS |
1.12 ± 0.41 |
2.6 ± 0.9 |
1.348 ± 0.368 |
Prophet |
1.38 ± 0.48 |
3.3 ± 1.1 |
1.712 ± 0.418 |
SARIMA |
1.48 ± 0.52 |
3.6 ± 1.2 |
1.865 ± 0.445 |
Average |
XGBoost |
8.7 ± 1.5 |
14.0 ± 2.4 |
0.933 ± 0.288 |
N-BEATS |
9.5 ± 1.8 |
15.4 ± 2.9 |
1.019 ± 0.312 |
Prophet |
11.0 ± 2.3 |
17.9 ± 3.8 |
1.254 ± 0.378 |
SARIMA |
11.6 ± 2.5 |
19.0 ± 4.1 |
1.343 ± 0.402 |
表3的3次滚动回测结果显示,随着SKU销量从High降至Low,四类模型的MAE、RMSE与RMSSE整体上升,表明零膨胀与间歇性增强显著提升预测难度。
High组(日均26.8、零占比14.8%)序列更连续规律,XGBoost获最低RMSSE (0.758 ± 0.104),N-BEATS (0.792 ± 0.108)紧随其后,Prophet (0.908 ± 0.132)与SARIMA (0.955 ± 0.140)相对落后;Medium组(日均9.2、零占比42.5%)稀疏度上升,模型分化加剧,XGBoost仍最优(0.862 ± 0.162),N-BEATS (0.918 ± 0.178)与统计模型(Prophet 1.142 ± 0.212、SARIMA 1.208 ± 0.228)差距拉大;在Low组(日均1.1、零占比79.6%、需求间隔5.89天)高度间歇场景下,XGBoost (1.178 ± 0.332)较N-BEATS (1.348 ± 0.368)提升约12.6%,并大幅领先Prophet (1.712 ± 0.418)与SARIMA (1.865 ± 0.445),体现树模型在处理大量零值与非线性特征交互时的鲁棒性,而传统统计模型受线性/加性假设限制,难以适配“长零 + 峰值”形态。三组加权平均下,XGBoost以RMSSE (0.933 ± 0.288)排名第一,N-BEATS (1.019 ± 0.312)第二,Prophet (1.254 ± 0.378)与SARIMA (1.343 ± 0.402)随后。结论:在SKU级尤其稀疏零膨胀场景中,梯度提升树方法更稳定准确。随后本文还选取了High与Low组进行了特征消融证明时间日历特征与价格特征的重要性,结果如表4所示。
Table 4. Ablation experiments on price and calendar features
表4. 价格特征与时间日历特征消融实验
销量组 |
模型 |
配置 |
MAE |
RMSE |
RMSSE |
相对完整特征恶化% (RMSSE) |
High |
XGBoost |
完整特征 |
18.4 |
28.7 |
0.758 |
- |
XGBoost |
无价格特征 |
20.2 |
31.6 |
0.832 |
(+9.8%) |
XGBoost |
无日历特征 |
19.5 |
30.4 |
0.802 |
(+5.8%) |
XGBoost |
仅单变量 |
21.3 |
33.2 |
0.878 |
(+15.8%) |
N-BEATS |
完整特征 |
19.8 |
30.9 |
0.792 |
- |
N-BEATS |
无价格特征 |
21.1 |
32.9 |
0.845 |
(+6.7%) |
N-BEATS |
无日历特征 |
20.5 |
32.0 |
0.822 |
(+3.8%) |
N-BEATS |
仅单变量 |
21.6 |
33.7 |
0.868 |
(+9.6%) |
Low |
XGBoost |
完整特征 |
0.92 |
2.1 |
1.178 |
- |
XGBoost |
无价格特征 |
1.26 |
2.9 |
1.512 |
(+28.4%) |
XGBoost |
无日历特征 |
1.08 |
2.5 |
1.342 |
(+13.9%) |
XGBoost |
仅单变量 |
1.48 |
3.4 |
1.712 |
(+45.3%) |
N-BEATS |
完整特征 |
1.12 |
2.6 |
1.348 |
- |
N-BEATS |
无价格特征 |
1.24 |
2.9 |
1.492 |
(+10.7%) |
N-BEATS |
无日历特征 |
1.18 |
2.8 |
1.412 |
(+4.7%) |
N-BEATS |
仅单变量 |
1.29 |
3.1 |
1.548 |
(+14.8%) |
消融实验表明外生特征对SKU级预测精度贡献显著,且在间歇性最强的Low组作用最大。去除价格特征后,XGBoost在Low组RMSSE恶化28.4% (High组仅9.8%),说明低销量SKU的需求峰值更依赖促销价格驱动;去除日历特征的影响次之,体现周末/节假日对需求节奏的规律性作用。在仅使用单变量历史序列时,两类模型在Low组退化最明显(XGBoost-45.3%, N-BEATS-14.8%),凸显稀疏场景下特征工程对弥补有效样本不足的重要性。在28天预测任务中,模型表现随销量下降而分化:High组序列较平稳,N-BEATS与XGBoost差距较小;Medium组稀疏度上升后,XGBoost优势开始扩大;Low组高度零膨胀与偶发峰值主导时,XGBoost更能利用树分裂捕捉非线性促销交互并控制误差,显著优于其他模型。Prophet、SARIMA等统计模型在Low组受限,主要因线性/加性假设难以适配“长零 + 峰值”的非连续需求模式。
3.3. 深度学习模型在店铺级和SKU级预测表现的进一步讨论
本实验中,以N-BEATS为代表的深度学习模型整体不及XGBoost,店铺级长期预测被SARIMA反超,SKU级中低销量组随数据稀疏度上升差距扩大,根本原因是零售需求序列的数据生成特性,与各模型归纳偏置、特征利用方式及有效样本规模匹配度不足。
店铺级序列兼具稳定周周期与促销、节假日等引发的短时结构性突变(急跌–反弹)。N-BEATS依赖基函数分解与端到端全局拟合,擅长连续规则趋势/周期外推,但对非周期冲击项易出现相位滞后与幅度低估,正则化会弱化局部尖峰;XGBoost借助显式滞后、日历等强特征,通过树分裂捕捉突变更精准。预测跨度拉长后,误差由稳定季节性主导,SARIMA以简洁季节差分结构高效外推周周期,参数少、估计方差低,长期预测更稳定。
SKU级叠加零膨胀与间歇性需求,大量零值背景夹杂少量促销峰值,导致信噪比低、有效非零样本稀缺。深度学习模型需同时学习需求发生判别、幅度估计及与价格/事件的交互,数据效率要求高,易低估峰值或拟合不稳定;XGBoost可自然表达阈值效应与高阶交互,在稀疏场景更稳健。
所以在“强周期 + 局部突变”且样本有限、或高稀疏间歇需求的零售序列中,树模型与传统统计模型更高效稳定;扩充样本并采用零膨胀损失、注意力架构、跨SKU预训练等策略,深度学习模型仍有提升空间。
4. 总结
本研究证实了XGBoost在零售销量预测中的综合优势。在店铺级聚合预测中,XGBoost在各时间窗口下误差最低,整体优于SARIMA、擅长平滑的Prophet与深度模型N-BEATS。在SKU级预测中,随着数据稀疏度和间歇性增加,模型性能分化显著:传统统计模型SARIMA难以应对零膨胀数据,N-BEATS受限于样本规模泛化性下降,而XGBoost凭借对稀疏特征和非线性交互的高效利用,展现出最佳鲁棒性。在资源有限的中小零售企业中,XGBoost结合简单特征工程即可获得较好效果,优先采用XGBoost更为稳妥;在具备更强端到端建模需求或可进一步扩充训练数据的场景下,N-BEATS可作为重要的深度学习备选方案,为后续模型优化与实际部署提供参考。
NOTES
*通讯作者。