老王在小区门口开了一家面馆,每天最纠结的问题只有一个:明天到底该备多少斤面条、多少份浇头?备少了,客人来了没得吃,白白损失生意;备多了,剩下的食材只能倒掉,成本全砸在手里。以前老王全凭感觉拍脑袋,直到他开始认真记账,发现周末生意好、雨天客人少、附近学校放假那天特别忙。他把这些规律一点点用在备料上,生意慢慢变好了。其实老王做的事,就是需求预测。所谓销量预测,就是用历史数据和各种影响因素,估计未来一段时间到底能卖出多少货。它听起来高大上,本质却是每一个小店老板都在做的日常决策。本文就用老王的面馆当线索,从基础概念一路讲到数据、算法、评估和落地,带你完整看清零售与电商场景下的销量预测到底是怎么回事。

岗位关联

对 AI 从业者而言,销量预测是 AI+零售与电商中最成熟也最能直接产生营收的应用方向之一。掌握需求预测的完整链路,意味着你能把机器学习、深度学习模型真正嵌入供应链决策,成为业务离不开的“预测专家”。

目录
  1. 可视化演示
  2. 基础概念
  3. 数据与特征
  4. 统计方法
  5. 机器学习
  6. 深度学习
  7. 评估与优化
  8. 落地实战
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

基础概念

老王开店第一天,只准备了一锅牛肉汤,结果中午就卖光了,下午来的客人全被对面面馆抢走。第二天他狠心备了三锅,结果剩了两锅,只能倒掉。他这才明白:预测“明天卖几碗面”不是猜一个数,而是要先弄清楚“预测哪个层的量”——是预测整家店的总量,还是红烧牛肉面这一个单品?是预测明天的销量,还是下个月的总采购量?这正是销量预测的基本概念:明确预测目标、预测层级和时间范围。销量可以按 SKU、店铺、区域、公司逐层汇总,不同层的预测难度不同:单品的波动大,公司总盘子相对稳定。

在 AI 领域,销量预测常被当作一个回归问题:给定历史序列和外部变量,预测未来值。为了让模型理解“销量为什么忽高忽低”,我们会把销量拆解成几个可解释的部分。例如老王发现,每天销量大致等于“日常客流量 × 今天是星期几 × 有没有促销活动 × 一些说不清的随机扰动”。把这种直觉写成公式就是:

所以老王做预测时,第一件事不是套模型,而是想清楚:你要预测的“层级”是单品还是门店?预测的时间窗口是明天还是下季度?层级越小、时间越短,波动越大;层级越高、时间越长,规律越明显。就像老王判断“明天整家店大概 300 碗”比判断“明天番茄鸡蛋面卖 25 碗”要容易得多。基础概念的重要性就在于此——目标定错了,后面再高级的模型也是白费功夫。

Dt=B×St×Pt×εt\displaystyle D_t = B \times S_t \times P_t \times \varepsilon_t
这个公式的意思是:第 t 天的销量 ≈ 日常基准 × 季节系数 × 促销系数 × 随机误差。它告诉我们,预测不仅要找均值,还要捕捉周期性波动和异常事件。
  1. 预测目标 D_t这是第 t 天的实际销量,也就是我们想预测的量。
    DtD_t
  2. 基准需求 B老王在没有节假日、没有促销的普通日子里平均卖出的碗数,代表稳定需求。
    BB
  3. 季节系数 S_t星期几、月份、节假日带来的倍数影响,比如周末是平时的 1.3 倍。
    StS_t
  4. 促销系数 P_t打折、买一送一等活动对销量的放大效果。
    PtP_t
  5. 随机扰动 ε_t突发天气、路人随机进店等因素造成的噪声,提醒我们预测永远不可能 100% 准确。
    εt\varepsilon_t

数据与特征

老王开始每天记账:卖了多少碗、下雨没有、周末与否、是不是节假日、隔壁奶茶店有没有搞活动。这些记录就是原始数据。不过他很快发现,直接用“昨天的销量”这个数字还不够,因为销量受很多因素影响。于是他把账本变成一张大表格:每一行是某一天,每一列是那天的天气、星期、促销、季节、温度等“特征”。这就是销量预测中的特征工程——从原始数据中提取出对预测有帮助的变量。

特征工程做得好的模型,就像让老王记住所有影响生意的细节;特征工程粗糙的模型,等于让他只凭感觉做决定。常见特征有三类:一是历史销量本身,比如过去 1 天、7 天、28 天的销量;二是日历特征,如星期几、是否是月初、节假日距离;三是外部特征,如天气、气温、竞争者活动。此外,我们还会构造“移动平均”作为平滑特征,用来消除短期随机波动:

数据是预测的地基。老王后来发现,如果账本记错了几天,或者促销日期标错,预测立刻就乱套。所以数据清洗——处理缺失值、异常值、统一口径——往往是整个预测项目中最耗时也最关键的环节。没有好数据,再强的算法也只是“巧妇难为无米之炊”。

MAk=1k∑i=1kxt−i+1\displaystyle MA_k = \frac{1}{k}\sum_{i=1}^{k} x_{t-i+1}
这是过去 k 天销量的平均值,常被当作“近期水平”的特征。k 越大,曲线越平滑,但对突发变化的反应越迟钝。
  1. 移动平均 MA_k过去 k 天销量的平均值,用来代表近期需求水平。
    MAkMA_k
  2. 窗口长度 k老王看最近几天的账本,比如 k=7 表示看一周的平均销量。
    kk
  3. 求和符号 Σ把第 t 天往前数 k 天的销量全部加起来。
    ∑i=1kxt−i+1\sum_{i=1}^{k} x_{t-i+1}
  4. 序列 x每天的真实销量,x_{t} 是今天的销量,x_{t-1} 是昨天,依此类推。
    xt−i+1x_{t-i+1}

统计方法

老王的第一版预测靠的是“上周平均每天卖多少碗”。这个方法计算简单,但有个问题:上周一的销量对预测明天参考价值不大,而前天的销量更有参考价值。于是他开始把注意力放在最近几天上,这就是统计预测中的指数平滑思想。早期的销量预测基本由统计方法主导,它们不依赖复杂外部数据,只靠历史序列本身推断未来。

统计学方法里,移动平均记性很短,指数平滑则更聪明:它认为越是近期的数据,对预测越重要,因此给近期值更高的权重。公式为:

除了指数平滑,ARIMA 还能处理带趋势和季节性的序列,它像是统计方法里的“进阶课”,适合数据平稳且有规律的面馆。不过统计方法也有局限:它很难利用促销、天气这些外部因素。老王很快发现,光靠“昨天卖了 50 碗”可预测不了“明天双十一大促能卖多少”。于是他把目光投向了机器学习。

y^t+1=αyt+(1−α)y^t\displaystyle \hat{y}_{t+1} = \alpha y_t + (1 - \alpha) \hat{y}_t
意思是:明天的预测值 = α 倍的今天实际值 + (1-α) 倍的今天预测值。α 越大,模型越“相信”最新数据;α 越小,模型越“相信”历史平均水平。
  1. 预测值符号带帽子的 y 表示“预测的销量”,不是实际销量。
    y^t+1\hat{y}_{t+1}
  2. 今天实际销量 y_t今天真实卖出的碗数,是最新的信息。
    yty_t
  3. 平滑系数 αα 在 0 到 1 之间,控制模型对近期数据的敏感度。α 接近 1,预测几乎只看今天的销量;α 接近 0,预测几乎等于历史预测值。
    α\alpha
  4. 递归更新明天的预测由今天的实际值和今天的预测值共同决定,也就是说模型会不断“校准”自己。
    (1−α)y^t(1 - \alpha) \hat{y}_t

机器学习

老王的面馆越开越大,影响生意的因素越来越多:天气预报、商场活动、外卖平台评分、新开的竞争对手……单靠账本上的数列已经不够了。他开始请一位“老师傅”帮忙做判断,这位老师傅能把所有因素综合起来:天气不好扣分,周末加分,大促销大加分,附近工地开工再加分。在 AI 里,这位“老师傅”就是机器学习模型。

机器学习方法输入的是多维特征,输出的是销量预测值。最简单的线性回归假设销量是各特征的加权和;树模型则像一堆“如果……那么……”的规则组合,能处理非线性关系;随机森林和梯度提升树把许多棵树集成起来,通常效果更好。训练模型的目标是让预测值尽量接近真实值,经典的损失函数是均方误差:

机器学习的优势是能吃下大量特征,自动寻找复杂规律。老王发现,只要把天气、节日、促销、历史销量整理好喂给模型,预测准确度立刻超过了他的直觉。而且模型还会告诉他“哪个因素最重要”——就像老师傅点评:促销力度最有影响力,星期几次之,天气排第三。这让老王既能做好预测,也能看清生意背后的驱动逻辑。

L=∑i=1n(yi−y^i)2\displaystyle L = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
这是把所有样本的预测误差平方后相加。平方让大误差被放大,所以模型会特别努力避免“错得离谱”。
  1. 样本编号 i把历史数据分成 n 天,每一天是一个样本。
    ii
  2. 第 i 天实际销量 y_i当天真实卖出多少碗。
    yiy_i
  3. 第 i 天预测销量 \hat{y}_i模型根据特征预测出的销量。
    y^i\hat{y}_i
  4. 平方运算误差取平方,让正负误差不互相抵消,并放大较大偏差。
    (yi−y^i)2(y_i - \hat{y}_i)^2

深度学习

老王的面馆有了一批回头客,他们周一吃牛肉面,周三会改吃素面,如果周五天气不好就点外卖。这种“连着几天都有关系”的模式,用普通模型很难捕捉,因为普通模型看的是“某一天的特征”,而忽略了过去几天销量的先后顺序。这时深度学习里的循环神经网络登场了——它像一个记忆力超群的老伙计,能把过去几天的销量记在脑子里,用来推断明天的情况。

RNN 的短板是时间一长容易忘事,于是出现了 LSTM。LSTM 给记忆加了一道“闸门”,可以选择记住重要信息、忘掉无关信息。它很适合销量预测这种时间序列问题,因为销量往往受近期变化驱动,而不是遥远的某一天。简化的 LSTM 单元更新可以写成:

深度学习还能用 Transformer 的注意力机制,让模型自动关注“历史上哪几天和明天最像”。但优势背后是代价:深度模型需要海量数据、较长的训练时间和更强的算力。老王的账本如果只有三个月,深度学习反而可能不如统计方法。所以他说到底得认清:模型越复杂,对数据的要求也越高,小面馆先用好简单模型,大平台再上深度模型。

ht=σ(Whxt+Uhht−1+bh)\displaystyle h_t = \sigma(W_h x_t + U_h h_{t-1} + b_h)
这是 LSTM 里“隐状态”的更新方式:今天的输出 h_t 由今天的输入 x_t 和昨天的隐状态 h_{t-1} 共同决定,σ 是一个把数值压到 0~1 之间的激活函数。
  1. 当前隐状态 h_t模型对“截至今天的情况”的浓缩记忆,用来预测明天的销量。
    hth_t
  2. 当前输入 x_t今天的特征,如销量、天气、促销等。
    xtx_t
  3. 上一时刻隐状态 h_{t-1}模型对昨天及之前情况的记忆。
    ht−1h_{t-1}
  4. 权矩阵 W_h 和 U_h把输入和记忆映射到输出空间的学习参数,类似老伙计对不同信息的重视程度。
    Whxt+Uhht−1W_h x_t + U_h h_{t-1}
  5. 激活函数 σ把计算结果压缩到 0 到 1 之间,控制记忆保留多少。
    σ(⋅)\sigma(\cdot)

评估与优化

老王现在有很多预测方法:移动平均、指数平滑、线性回归、甚至 LSTM。他该怎么比较谁更准?如果只偶尔看一两天,很容易被运气误导。正确的做法是拿历史数据把预测跑一遍,再对比预测值和真实值的差距。这个差距就是误差。常用的误差指标有平均绝对误差 MAE、均方根误差 RMSE 和平均绝对百分比误差 MAPE。MAPE 特别适合销量预测,因为它以百分比形式给出误差,方便业务理解:预测平均差了 15%,一听就明白。

以 MAPE 为例:

选完指标还要防止模型“死记硬背”。老王如果把同一份账本又当训练又当考试,成绩一定虚高;真正要看的是模型在“没见过的日子”里的表现。这在技术上叫交叉验证——把数据切分成训练集和验证集,反复训练、验证。随后再调整超参数(比如指数平滑的 α、树的深度),直到误差降到最低。预测不是一锤子买卖,还要给出不确定性:误差越大,就应该多留安全余地。老王每次看天气预报会带伞,销量预测也一样,知道误差范围才能让库存有弹性。

MAPE=100%n∑i=1n∣yi−y^iyi∣\displaystyle \text{MAPE} = \frac{100\%}{n}\sum_{i=1}^{n} \left|\frac{y_i - \hat{y}_i}{y_i}\right|
MAPE 计算的是每个样本的“误差 ÷ 实际值”的平均百分比,比如明天实际卖出 100 碗,预测 85 碗,误差就是 15%。
  1. 样本总数 n用来评估的历史天数。
    nn
  2. 实际值 y_i当天真实的销量。
    yiy_i
  3. 预测值 \hat{y}_i模型给出的销量预测。
    y^i\hat{y}_i
  4. 绝对值运算只关心误差大小,不关心方向。
    ∣yi−y^iyi∣\left| \frac{y_i - \hat{y}_i}{y_i} \right|
  5. 乘以 100%把平均误差折算成百分比。
    100%n∑i=1n⋅\frac{100\%}{n}\sum_{i=1}^{n} \cdot

落地实战

模型再准,最终也要变成“明天到底订多少货”的决策。老王不仅要预测最可能的销量,还要回答:如果明天天气突变导致销量低于预测,我该多备多少料才不至于断货?这就要用到安全库存。安全库存是在预测值之上额外保留的一部分缓冲库存,用来吸收预测误差和供应波动。它的简化公式是:

落地过程中还会遇到两个现实难题。第一是冷启动:新开的分店没有历史数据,怎么办?常见做法是参考同商圈、同商场的“兄弟门店”数据,或者先用品类均值兜底,再随着新店营业逐渐切换成自己的数据。第二是反馈闭环:预测模型不能上线后就不管了,每天的实际销量都应该回流到模型里重新训练,让预测越来越贴合变化。老王现在每天打烊后会把当天实际销量记进系统,让“老师傅”不断迭代。这也是为什么业界常说:销量预测不是一次性项目,而是一个持续运转的数据飞轮。

SS=z×σe×L\displaystyle SS = z \times \sigma_e \times \sqrt{L}
安全库存 = 服务水平对应的 z 值 × 预测误差标准差 × 补货周期平方根。服务水平定得越高,z 越大,安全库存越多,断货风险越低。
  1. 安全库存 SS老王在预测需求之外额外多备的食材量。
    SSSS
  2. 服务水平系数 z例如想满足 95% 的顾客需求,z 约等于 1.65。
    zz
  3. 预测误差标准差 σ_e模型预测值与实际销量差值的波动程度。误差波动越大,安全库存越高。
    σe\sigma_e
  4. 补货周期 L从下单到食材到货需要的时间,时间越长,需要覆盖的不确定性越大。
    L\sqrt{L}

AI 应用场景

场景一:连锁超市每日补货计划

阶段:数据与特征 → 机器学习建模 → 决策优化

解决的问题:传统人工补货靠店长经验,面对几千个 SKU 顾此失彼,要么库存积压,要么货架缺货。AI 模型按 SKU、门店、日期分别预测销量,结合安全库存模型自动生成采购单,把库存周转率提升 20% 以上。

具体案例:老王面馆连锁化后,总部每天凌晨汇总各门店的销量、天气、促销计划,用梯度提升树预测每个门店、每种浇头的第二天销量,再根据配送周期计算各门店的安全库存,自动生成补货清单。数据从预测系统流到采购系统,几乎不需要人工干预。

场景二:电商大促销量预测

阶段:深度学习序列建模 → 实时特征更新 → 库存准备

解决的问题:双十一、618 这类大促的销量是平时的几十倍,传统统计方法完全失灵。AI 模型利用历史大促曲线、实时流量、加购数据、优惠券发放量,按分钟级粒度预测未来数小时销量,帮助平台提前调配仓配资源。

具体案例:某电商平台在双十一前用 LSTM 模型预测爆款商品的小时级销量,并把预测区间用于仓库波次规划和快递资源预约。大促当天系统每 30 分钟根据实时销量重新预测一遍,成功将爆款商品缺货率降低了 40%。

场景三:新品上市冷启动预测

阶段:迁移学习 → 相似品映射 → 分阶段预测

解决的问题:新品没有历史销量数据,常规预测模型无法启动。AI 平台通过聚类相似 SKU,用成熟品的销售曲线迁移到新品上,并在上市后按周吸收真实数据、滚动修正预测。

具体案例:一款新口味方便面上市前,算法团队找到 20 款口味、价格相近的老品,用它们的平均销售曲线作为先验预测,再结合铺货门店数量和营销预算生成前四周的销量预测;产品上市后,每周把实际销量加入训练集,逐步收敛到该品自身的需求曲线。

Python 演示

python63 行
import randomimport math random.seed(42)  class SalesForecaster:    """Simple exponential smoothing sales forecaster."""     def __init__(self, alpha):        self.alpha = alpha        self.level = None        self.fit_count = 0     def fit(self, sales):        """Fit model by walking through historical sales."""        if not sales:            raise ValueError("sales list is empty")        self.level = sales[0]        self.fit_count = 1        for value in sales[1:]:            self.level = self.alpha * value + (1 - self.alpha) * self.level            self.fit_count += 1        return self     def predict(self, steps):        """Return same level for each future step."""        return [self.level] * steps  def generate_sales(days=60):    """Generate a seasonal daily sales sequence."""    sales = []    for t in range(days):        base = 40 + 12 * math.sin(t / 7.0)        noise = random.uniform(-6, 6)        sales.append(max(1, round(base + noise)))    return sales  def mape(actual, predicted):    """Mean absolute percentage error."""    if len(actual) != len(predicted):        raise ValueError("length mismatch")    total = 0.0    for act, pred in zip(actual, predicted):        if act != 0:            total += abs(act - pred) / act    return total / len(actual) * 100  history = generate_sales(60)halves = len(history) // 2train, test = history[:halves], history[halves:] model = SalesForecaster(alpha=0.3)model.fit(train)preds = model.predict(len(test)) print("训练集最后水平值:", round(model.level, 1))print("测试集前5天真实值:", test[:5])print("测试集前5天预测值:", [round(p, 1) for p in preds[:5]])print("MAPE: {:.2f}%".format(mape(test, preds)))
目的:用简单指数平滑对模拟的日销量数据进行训练和预测,并输出 MAPE 指标。对应正文中统计方法一节的内容,展示最基础的时序预测流程。
  1. random.seed(42)固定随机种子,保证每次运行时生成相同的历史销量,便于复现实验。
  2. sales = []创建空列表,用于存放生成的每日销量序列。
  3. base = 40 + 12 * math.sin(t / 7.0)用正弦函数模拟每周周期性的需求波动。
  4. self.level = self.alpha * value + (1 - self.alpha) * self.level指数平滑的核心更新公式,混合最新销量和历史水平。
  5. self.fit_count += 1记录已训练的天数,方便调试和扩展。
  6. def predict(self, steps)返回未来若干天的预测值,这里简单地把最后一个学习到的水平值重复输出。
  7. train, test = history[:halves], history[halves:]把数据切成训练集和测试集,避免用同一段数据既训练又评估。
  8. model.fit(train)让模型在训练集上学习销量水平。
  9. mape(test, preds)用 MAPE 评估模型在未见过的数据上的预测误差。

常见误区

误区“预测嘛,肯定要用最先进的深度学习模型,LSTM 和 Transformer 比移动平均准多了。”

正解模型精度取决于数据量、数据质量和问题特性。老王的账本只有两三个月、外部特征也少,用 LSTM 很容易过拟合,反而不如指数平滑稳定。复杂模型需要更多数据和更强算力,否则只会把噪声也背下来。选模型应该从简单方法开始,逐步提升复杂度,直到验证集误差不再下降。

为何常见:深度学习在图像和语音任务上表现惊艳,人们容易把这种印象迁移到时序预测上,忽略了销量预测数据量往往很小、噪声很大的现实。

误区“模型算出明天卖 300 碗,那就按 300 碗备货,准准的。”

正解销量预测永远有误差。真正用于库存决策的不应该只有一个均值,还应该包括误差范围或分位数。老王会额外备一些安全库存,预测模型也应该输出“预测区间”——比如 80% 概率落在 260~340 碗之间。只有把不确定性纳入决策,才能平衡缺货和浪费。

为何常见:大多数入门教程只教如何输出一个数值,很少讲预测区间和分位数损失,导致实践者把点预测当成了全部答案。

误区“销量预测就是把昨天的销量乘个系数,明天就出来了。”

正解历史销量确实重要,但促销、节假日、天气、竞品活动等外部因素往往才是销量突变的真正原因。老王知道,如果只看上周平均,绝对预测不了明天店庆的打折活动。现代销量预测系统几乎都会引入日历特征和营销事件特征,把“因果变量”一起喂给模型。

为何常见:初学时先从单变量时间序列入手,容易让人误以为预测只需要一条曲线,实际上商业销量是多因素共同作用的结果。

误区“训练时误差 3%,说明模型已经非常准了,直接上线吧。”

正解模型在训练集上表现好不代表能预测未来,必须用时间上更晚的数据做验证。老王如果拿已经看过的旧账本考试,成绩当然好看;真正重要的是模型在“从未见过的新一天”上的表现。实践上要用时间交叉验证,并且上线后持续监控预测误差,建立反馈闭环。

为何常见:初学者容易混淆“拟合历史”和“预测未来”,忽略了时间序列数据不能随机乱切、必须按时间顺序划分的特点。

面试题

Q1. 在销量预测中,“预测层级”指的是什么?

单选题 · easy

  • A.从单品到店铺再到公司总销量的汇总粒度← 正确答案
  • B.预测模型的隐藏层数量
  • C.数据集的特征维度高低
  • D.算法训练时的轮数多少

答案:A。预测层级指预测对象在不同粒度上的划分,例如单品、门店、公司。层级越小波动越大,越难预测;层级越大规律越稳定。隐藏层数量、特征维度和训练轮数都不是“预测层级”的含义。

Q2. 简单指数平滑中,平滑系数 α 越大意味着什么?

单选题 · mid

  • A.模型越相信历史平均水平
  • B.模型越相信最近的实际销量← 正确答案
  • C.模型完全忽略当前销量
  • D.模型的预测恒等于零

答案:B。α 是给今天实际销量的权重。α 越大,今天的销量在预测中占的比重越高,模型对近期变化越敏感;α 越小,则预测越平滑、越依赖历史水平。因此答案选 B。

Q3. MAPE 指标相对于 MAE 的主要优势是什么?

单选题 · mid

  • A.MAPE 永远不会等于零
  • B.MAPE 以百分比表示误差,便于业务理解← 正确答案
  • C.MAPE 不需要真实销量数据
  • D.MAPE 计算速度一定更快

答案:B。MAPE 是百分比误差,可以直接说“平均偏差 15%”,业务人员一听就懂。MAE 是绝对值,受销量量纲影响,不同商品之间难以横向比较。MAPE 需要真实销量数据,计算速度也没有必然优势。

Q4. 下列哪些因素可以作为销量预测的外部特征?

多选题 · mid

  • A.是否为节假日← 正确答案
  • B.当天天气情况← 正确答案
  • C.促销活动力度← 正确答案
  • D.模型权重初始值

答案:ABC。节假日、天气、促销都是影响真实销量的外部特征。模型权重初始值是训练过程的内部参数,不属于业务特征。外部特征要能反映“需求为什么会变化”,从而帮助模型学习销量波动的原因。

Q5. 销量预测的“冷启动”问题通常发生在什么场景?

单选题 · easy

  • A.新品上市或新店开业且无历史数据← 正确答案
  • B.模型训练速度太慢
  • C.数据量太多导致内存不足
  • D.预测结果与真实值完全一致

答案:A。冷启动指缺少历史数据时无法训练预测模型,比如新品、新店、新渠道。常用解决思路是参考相似品的销售曲线或先用品类均值兜底。训练慢、内存不足属于工程问题,与冷启动无关。

Q6. 关于销量预测中的交叉验证,下列说法正确的有?

多选题 · hard

  • A.必须按时间顺序切分训练集和验证集← 正确答案
  • B.可以随机打乱数据后任意划分
  • C.验证集必须是时间上晚于训练集的数据← 正确答案
  • D.交叉验证能完全消除预测误差

答案:AC。时间序列数据有先后依赖关系,随机打乱划分会让模型“偷看未来”,所以必须按时间顺序切分。交叉验证只能帮助评估和调参,无法消除预测误差本身。因此选 A 和 C。

Q7. LSTM 相比于传统 RNN 的核心优势是什么?

单选题 · mid

  • A.不再需要输入特征
  • B.通过门控机制缓解长期记忆丢失← 正确答案
  • C.训练速度一定更快
  • D.完全不依赖历史数据

答案:B。LSTM 通过输入门、遗忘门和输出门控制信息流动,能更好地保存长期依赖。传统 RNN 在序列过长时容易梯度消失,忘记早期信息。LSTM 仍然需要输入特征、依赖历史数据,且训练并不一定更快。

Q8. 为了应对需求预测中的不确定性,可以采取哪些措施?

多选题 · hard

  • A.计算预测区间而不是单一值← 正确答案
  • B.设置合理的安全库存← 正确答案
  • C.每日用实际销量反馈更新模型← 正确答案
  • D.删除所有历史异常数据

答案:ABC。预测区间能表达可能范围,安全库存用于吸收误差冲击,每日反馈更新让模型适应变化。删除异常数据可能丢掉真实业务信号,不是应对不确定性的合理手段。因此选 A、B、C。

Q9. 移动平均预测的主要缺点是什么?

单选题 · easy

  • A.计算过程非常复杂
  • B.对近期突发变化反应比较迟钝← 正确答案
  • C.不需要历史数据就能预测
  • D.预测误差一定是负值

答案:B。移动平均把若干天的销量简单平均,某一天的突发波动会被摊平,导致预测调整慢。它需要历史数据,计算也简单,误差方向不确定。因此“反应迟钝”是最主要缺点。

Q10. 在销量预测项目中,特征工程常用的做法包括哪些?

多选题 · mid

  • A.构造滞后特征,如前一天销量← 正确答案
  • B.加入星期几、节假日等日历特征← 正确答案
  • C.把促销力度转化成数值变量← 正确答案
  • D.用随机数替代缺失值

答案:ABC。滞后特征、日历特征和促销变量都能提升预测效果。用随机数替代缺失值会引入噪声,合理的做法是填充前值、均值或者单独标记缺失状态。因此选 A、B、C。