想象你是一家全球美食节的总评委,面前摆着上百道来自不同菜系的参赛作品。有的菜口味浓烈,盐和香料动辄几十克;有的菜清淡精细,一勺酱油就能改变全局。如果你只记录“这道菜和标准口味差了多少克”,那重口味的川菜厨师永远会因“误差大”而被淘汰——可这并不公平,因为每道菜天生的尺度就不同。这就是时间序列评估遇到的核心难题:不同业务的序列,波动尺度天差地别,电商平台的日订单量动辄上万,冷门品类的销量可能只有个位数。如果只用绝对误差来衡量所有模型,大尺度序列的模型就“天然吃亏”。这时,评委需要一把与菜系本身难度挂钩的“公平尺子”——这正是 MASE 和 sMAPE 诞生的意义。MASE 用“照抄上一期”这个最朴素的预测作为基准,把误差缩放成与基准的倍数关系,让所有序列站在同一条起跑线上;sMAPE 则把误差表达成对称的“双向百分比价差”,直观又好懂,却容易在真实值接近零时“翻车”。

岗位关联

对 AI 从业者而言,掌握 MASE/sMAPE 是模型评估与竞赛排名的基本功——它能帮你跨数据集横向对比模型优劣、读懂竞赛排行榜,并在业务监控中设定合理的预警阈值,直接影响模型上线决策。

目录
  1. 可视化演示
  2. 误差衡量基础
  3. MASE核心原理
  4. sMAPE对称特性
  5. 指标对比选型
  6. 竞赛评估实践
  7. 业务监控落地
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

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

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

误差衡量基础

美食节开幕前,评委们先要定下计分规则:怎么记录“离席差”。台上摆着一盘需要 30 克盐才够味的川菜,和一碟只需 3 克盐的清淡日料,二者标准口味的偏差当然要分开算。总不能用同一杆秤上的克数直接比——那样的话,川菜厨师永远输在起点,因为菜品的天然尺度完全不同。时间序列领域也一样,不同业务的序列波动范围天差地别,直接用绝对误差比较,就等于拿川菜的克数和日料的克数硬碰硬。

最朴素的办法是平均绝对误差(MAE),它把所有时间点上“预测值偏离实际值”的绝对距离取平均。MAE 像评委记录每道菜与标准口味的绝对克数差,计算简单、含义直白。但它的软肋也显而易见:克数差高度依赖菜品自身尺度。同样水平的厨师,做川菜可能偏差 30 克,做日料只偏差 3 克,难道能说做日料的更优秀吗?

于是评委们又想到“百分比偏差”:把误差除以标准口味本身,得到相对变化幅度,这就是平均绝对百分比误差(MAPE)。它乍一看很公平,但有个致命伤:当标准口味本身接近 0 时——比如日料分量极少、或淡季销量几乎为 0——分母趋近 0,百分比会瞬间变成天文数字甚至无穷大。

所以评委们最终发现,只看绝对克数或只看百分比都不够。真正需要的是一把“难度系数尺”——先弄清每道菜最难做的那条基准线是什么,再衡量厨师的相对水平。这正是 MASE 登场的时刻。

MAE=1n∑t=1n∣Yt−Y^t∣\displaystyle \text{MAE} = \frac{1}{n}\sum_{t=1}^{n}\left|Y_t - \hat{Y}_t\right|
  1. 相对误差每个时间点的绝对误差除以当期的实际值 $\left|Y_t\right|$,把“克数差”变成“相对于标准口味的比例”,这是 MAPE 的核心思想。
    ∣Yt−Y^t∣∣Yt∣\displaystyle \frac{\left|Y_t - \hat{Y}_t\right|}{\left|Y_t\right|}
  2. 求平均并转百分比对所有时间点的相对误差取平均,再乘以 $100\%$,得到以百分比呈现的平均误差。注意分母含 $Y_t$,当实际值接近 0 时整个分数会剧烈膨胀。
    MAPE=1n∑t=1n∣Yt−Y^t∣∣Yt∣×100%\displaystyle \text{MAPE} = \frac{1}{n}\sum_{t=1}^{n}\frac{\left|Y_t - \hat{Y}_t\right|}{\left|Y_t\right|} \times 100\%

MASE核心原理

MASE 的思路很巧妙:评委不拿“一个绝对标准”来评判菜品,而是拿“这道菜最普通的家常做法”当基准线。比如评判一道麻婆豆腐,先看看最常见的家庭做法能做到什么水平——只要比家常做法好,就算合格;如果连家常做法都不如,那这道菜显然失败了。在时间序列里,“家常做法”就是朴素预测(naive forecast):直接用上一期的观测值当作本期的预测,即 $\hat{Y}_t = Y_{t-1}$。

朴素预测的误差,构成了“家常做法的离席差”。MASE 先计算模型预测的 MAE,再除以朴素预测的 MAE。这样一来,无论川菜需要 30 克盐还是日料只需 3 克盐,每个序列都先跟“自己最简单的那一版”比较,然后再放到同一张评分表上。

读懂 MASE 的数值,只需记住一把尺子:当 MASE < 1,说明模型误差小于朴素基准误差,即真的学到了规律;MASE = 1,表示与“照抄上期”打了个平手,没有进步;MASE > 1,模型还不如“复读机”,很可能数据极度不规则或模型本身出了问题。对于有明显季节性的数据(如月度销售同比),朴素基准要换成“上一年同周期值”,即季节性朴素预测,否则基准会被季节波动污染。

就像川菜和日料各自找到自己的“家常做法”做参照,MASE 让每道菜的难度系数落在同一把尺子上。这是它成为跨数据集评估首选指标的根本原因——公平,来自基准的一致。

MASE=1n∑t=1n∣Yt−Y^t∣1n−1∑t=2n∣Yt−Yt−1∣\displaystyle \text{MASE} = \frac{\displaystyle \frac{1}{n}\sum_{t=1}^{n}\left|Y_t - \hat{Y}_t\right|}{\displaystyle \frac{1}{n-1}\sum_{t=2}^{n}\left|Y_t - Y_{t-1}\right|}
  1. 分子——模型误差分子就是普通 MAE,衡量模型预测值与真实值之间的平均绝对偏离。它带着原始尺度,仿佛那道川菜的 30 克偏差。
    1n∑t=1n∣Yt−Y^t∣\displaystyle \frac{1}{n}\sum_{t=1}^{n}\left|Y_t - \hat{Y}_t\right|
  2. 分母——朴素基准误差用上一期实际值 $Y_{t-1}$ 作为本期预测,计算这种“照抄上期”做法的平均绝对误差。注意求和从 $t=2$ 开始,共 $n-1$ 项,因为第一期没有上一期可供照抄。
    1n−1∑t=2n∣Yt−Yt−1∣\displaystyle \frac{1}{n-1}\sum_{t=2}^{n}\left|Y_t - Y_{t-1}\right|
  3. 除法归一化分子除以分母,得到“模型的误差是家常基准误差的多少倍”。这个倍数没有量纲,与原始数据的尺度完全无关。
    MASE=模型 MAE朴素预测 MAE\displaystyle \text{MASE} = \frac{\text{模型 MAE}}{\text{朴素预测 MAE}}

sMAPE对称特性

消费者比价时习惯看“价差百分比”:商家报价 100 元,市场均价 120 元,价差约 17%;反过来,市场价 100 元、商家报 120 元,价差同样是 17%。sMAPE 就像这把买卖双方都适用的“双向价差尺”,天然具有对称性。它把分母设计成实际值与预测值的绝对值之和,当预测偏高或偏低时,分母会自动伸缩,从而避免了 MAPE 只在分母一侧放实际值的偏见。

sMAPE 的公式把每个时间点的绝对误差乘以 2,再除以实际值与预测值的绝对值之和。之所以乘 2,是为了让完全对称的情形下百分比保持在 0%~200% 之间,读起来像“半程价差”。当预测完全准确时分母等于分子,比值为 0;当两者方向相反且绝对值相等时,比值达到最大的 2。

sMAPE 的黑暗面也来自分母:当 $Y_t$ 和 $\hat{Y}_t$ 都接近 0 时,分母趋近 0,整个比值会剧烈震荡甚至趋向无穷。就像“免费品对免费品”根本没法谈折扣率——面对大量零值序列(如间歇性需求、冷门商品销量),sMAPE 会变成一把失灵的秤。此时需要先做零值样本处理,或者干脆换用 MASE。

sMAPE=1n∑t=1n2∣Yt−Y^t∣∣Yt∣+∣Y^t∣×100%\displaystyle \text{sMAPE} = \frac{1}{n}\sum_{t=1}^{n}\frac{2\left|Y_t - \hat{Y}_t\right|}{\left|Y_t\right| + \left|\hat{Y}_t\right|} \times 100\%
  1. 对称分母分母用实际值与预测值的绝对值之和 $\left|Y_t\right| + \left|\hat{Y}_t\right|$。预测偏高时 $\left|\hat{Y}_t\right|$ 变大,分母变大;预测偏低时反之,这就是“对称”的来源。
    ∣Yt∣+∣Y^t∣\displaystyle \left|Y_t\right| + \left|\hat{Y}_t\right|
  2. 双倍误差比例每个时间点的绝对误差乘以 2,再除以对称分母,得到该点的对称百分比偏差。分子为 0 时该点为 0%,分子等于分母时为 100%。
    2∣Yt−Y^t∣∣Yt∣+∣Y^t∣×100%\displaystyle \frac{2\left|Y_t - \hat{Y}_t\right|}{\left|Y_t\right| + \left|\hat{Y}_t\right|} \times 100\%
  3. 求平均对所有时间点取平均,得到的 sMAPE 就是整个序列的“平均双向价差”。
    sMAPE=1n∑t=1n2∣Yt−Y^t∣∣Yt∣+∣Y^t∣×100%\displaystyle \text{sMAPE} = \frac{1}{n}\sum_{t=1}^{n}\frac{2\left|Y_t - \hat{Y}_t\right|}{\left|Y_t\right| + \left|\hat{Y}_t\right|} \times 100\%

指标对比选型

大赛总评委不会只用一把尺子评遍所有菜,而是按评审目的排兵布阵:跨菜系总决赛用“难度系数分”,向赞助商汇报用“好吃程度百分比”,日常巡查用组合巡检表。选指标也一样,关键看你的场景需要什么。

实战选型时只需问自己四个问题:第一,是不是需要把很多尺度不同的序列放在一起横向排名?如果是,MASE 的尺度无关性让它无可替代。第二,汇报对象是不是非技术的业务方?sMAPE 的百分比形式天然亲民。第三,数据里是不是充满接近 0 的值?那要小心 sMAPE 爆雷,MASE 更稳健。第四,是不是想同时兼顾公平性和可解释性?那就把两者加权组合。

就像总评委的“组合巡检表”一样,把难度系数和直观百分比放进同一张表里打分,既能保证不同菜系间的公平,又能让在场所有人都听懂每一分从何而来。选型没有万能解,只有“按场景配权重”这个朴素原则。

Ctotal=α×MASE+(1−α)×sMAPE2\displaystyle C_{\text{total}} = \alpha \times \text{MASE} + (1-\alpha) \times \frac{\text{sMAPE}}{2}
  1. MASE 分量$\alpha$ 是 MASE 的权重,表示“跨尺度公平性”在总分中的重要性。$\alpha=1$ 时只看 MASE。
    α×MASE\displaystyle \alpha \times \text{MASE}
  2. sMAPE 分量sMAPE 除以 2,是把 0%~200% 的值域规整到 0%~100%,与 MASE 的“基准倍数”语义更兼容。权重 $1-\alpha$ 衡量“解释直观性”的分量。
    (1−α)×sMAPE2\displaystyle (1-\alpha) \times \frac{\text{sMAPE}}{2}
  3. 加权合成两部分相加得到组合分。调小 $\alpha$ 更重视业务可读性,调大 $\alpha$ 更重视跨序列公平。
    Ctotal=α×MASE+(1−α)×sMAPE2\displaystyle C_{\text{total}} = \alpha \times \text{MASE} + (1-\alpha) \times \frac{\text{sMAPE}}{2}

竞赛评估实践

国际美食节的决赛环节,几十位评委要同时给数百道菜排序。绝对克数显然不可行——每道菜都有自己的“家常基准”,所以大家统一用难度系数分作主排序标准,再辅以直观的百分比防止极端情况。时间序列竞赛也是同样的逻辑:M4 竞赛等大型预测比赛,面对成千上万条尺度各异的序列,必须在提交前把所有序列的误差统一到同一把尺子上。

M4 竞赛的做法就是“逐序列计算 MASE,再取平均”:每条序列先用自己的朴素基准算出 MASE,然后把所有序列的 MASE 做一个算术平均,得到参赛模型的总分。这样排名不会因某条序列恰好波动巨大而扭曲,也不会有大尺度序列靠原始误差“刷分”。

竞赛中 sMAPE 也常被列为主指标,尤其当比赛方需要向赞助商讲述“误差百分比”时。但它需要提前做数据体检:把接近 0 的样本剔除或平滑,否则个别异常点能把总分直接拉爆。更成熟的比赛会同时报告 MASE、sMAPE 和 OWA(二者加权几何平均)等多个指标,形成混合评判,让结果更立体、更难被单一指标的偏科掩盖。

大赛排名的哲学,归根结底是“让每道菜跟自己的家常做法比”。川菜和日料终于能站上同一张领奖台——这就是 MASE 在竞赛中的价值。

MASE‾=1K∑k=1KMASEk\displaystyle \overline{\text{MASE}} = \frac{1}{K}\sum_{k=1}^{K}\text{MASE}_k
  1. 单序列 MASE对第 $k$ 条序列,用它的真实值和模型预测值计算 MASE,记为 $\text{MASE}_k$。每条序列都有自己的朴素基准。
    MASEk\displaystyle \text{MASE}_k
  2. 跨序列平均把所有 $K$ 条序列的 MASE 相加,除以序列总数 $K$,得到模型在整个测试集上的平均缩放误差。
    1K∑k=1KMASEk\displaystyle \frac{1}{K}\sum_{k=1}^{K}\text{MASE}_k

业务监控落地

美食节落幕,餐厅回到日常经营。后厨每天都得巡检:今天的招牌菜有没有比家常做法差?价差百分比好不好看?巡检不能只在赛后算总账,而要天天盯、周周比。业务监控中的模型评估也一样——模型上线只是开始,持续用误差指标盯住它不掉链子,才是真正的考验。

业务监控的核心是把 MASE 变成“滚动体检表”。比如取最近 7 天作为滑动窗口,逐天计算窗口内的 MASE,一旦它超过阈值 $\tau$(常见如 1.0 或 1.5)就触发告警。这相当于说:“最近这周,模型的预测连'照抄上期'都不如了,快去看看是不是概念漂移、数据源断了,还是模型该重新训练。”阈值 $\tau$ 可以根据业务容忍度调整,比如库存补货系统对误差敏感时把阈值收紧到 0.8。

业务监控还有一个杀手级应用:多尺度指标准一。同一块监控面板上既有日订单量(万级)又有退货量(个位数),如果直接用 MAE 根本没法画在一张图里。用 MASE 归一化后,所有序列共享同一个阈值维度,一个面板搞定。模型迭代时,新模型和旧模型先在同一个测试集上对比 MASE/sMAPE,下降幅度达到约定标准才允许灰度放量,从源头上拦住“看似更好、实则更差”的回归。

有了这两把尺子,后厨巡检表上不再出现“哪个菜差了多少克”的一锅粥,而是统一的“是否优于家常做法”和“大概差了几个百分点”——管理起来既清晰又高效。

Alertt=1[MASEtwin>τ]\displaystyle \text{Alert}_t = \mathbb{1}\left[\text{MASE}_t^{\text{win}} > \tau\right]
  1. 滑窗 MASE 值$\text{MASE}_t^{\text{win}}$ 表示在时刻 $t$ 基于最近一个滑动窗口(如最近 7 天)计算出的 MASE。窗口滑动让指标随业务变化实时更新。
    MASEtwin\displaystyle \text{MASE}_t^{\text{win}}
  2. 阈值比较与报警$\mathbb{1}[\cdot]$ 是指示函数,条件成立时取 1(触发告警),否则取 0。用 $\tau$ 与滑窗 MASE 比较,即可把连续指标转成 0/1 告警信号。
    1[MASEtwin>τ]\displaystyle \mathbb{1}\left[\text{MASE}_t^{\text{win}} > \tau\right]

AI 应用场景

电商多门店销量预测模型选型

阶段:模型评估与选型

解决的问题:总部要对上千家门店的预测模型统一打分,但门店销量从个位数到数万差异巨大。用 MAE 排名会导致大店模型永远垫底,用 MAPE 又会被淡季零销量门店的无穷大值污染。改用 MASE 后,每家门店都以自己的朴素预测为基准,跨门店排名公平,模型选型不再被尺度绑架。

具体案例:某零售集团用 LightGBM 预测 800 个“SKU-门店”组合的日销量,评估时逐组计算 MASE 再取平均,最终模型 MASE=0.72。相比旧模型在冷门小店上的 MASE 1.3,新模型在大小门店上全面占优,成功上线替换。

Kaggle 电力负荷预测竞赛排名

阶段:竞赛模型调优与提交

解决的问题:电力负荷数据周期性强、节假日可能出现接近 0 的低谷,sMAPE 是竞赛主指标但很容易被零值样本拉爆。参赛者需要先剔除或平滑零值窗口,再辅以 MASE 检查模型是否真的优于朴素基准,避免“排名虚高”。

具体案例:某 Kaggle 竞赛中,一支队伍以 sMAPE=14.2% 进入前 10,但用 MASE 复盘发现模型对尖峰时段的预测竟弱于朴素基准,于是补充高峰时段特征并修正权重,最终 sMAPE 降至 10.8%,排名升入前 3。

工业 IoT 传感器异常监测

阶段:模型监控与告警

解决的问题:温度、振动、转速等传感器量纲不同,无法用统一 MAE 阈值告警。以正常工况下的“朴素变化率”为基准计算 MASE,即可跨传感器设置统一阈值,降低误报率。

具体案例:某风电场的齿轮箱温度预测模型配置了滑窗 MASE 监控,在轴承磨损早期 MASE 从 1.0 升至 2.3,成功触发告警,提前 3 天预警,避免了一次重大停机事故。

Python 演示

python52 行
"""评估指标 MASE / sMAPE 的最小实现。"""import numpy as np  def mae(actual, pred):    """平均绝对误差"""    return float(np.mean(np.abs(actual - pred)))  def mase(actual, pred, seasonal_period=1):    """以朴素预测为基准的缩放误差。"""    n = len(actual)    if seasonal_period > 1 and n > seasonal_period:        bench = np.abs(            actual[seasonal_period:] - actual[:-seasonal_period]        )    else:        bench = np.abs(actual[1:] - actual[:-1])    baseline = float(np.mean(bench)) if len(bench) else 1.0    return mae(actual, pred) / baseline  def smape(actual, pred):    """对称平均绝对百分比误差,分母加极小量防除零。"""    denom = np.abs(actual) + np.abs(pred)    denom = np.where(denom == 0, 1e-10, denom)    return float(np.mean(2.0 * np.abs(actual - pred) / denom))  def main():    rng = np.random.default_rng(42)    t = np.arange(60)    # 两条尺度相差 100 倍的序列    big = 10.0 * np.sin(t / 5.0) + rng.normal(0, 0.6, 60)    small = 0.1 * np.sin(t / 5.0) + rng.normal(0, 0.006, 60)    # 简单预测: 在真实值上叠加噪声    pb = big + rng.normal(0, 0.9, 60)    ps = small + rng.normal(0, 0.009, 60)     for name, act, pred in [        ("大尺度序列", big, pb),        ("小尺度序列", small, ps),    ]:        print(            f"{name}: MAE={mae(act, pred):.4f} "            f"MASE={mase(act, pred):.4f} "            f"sMAPE={smape(act, pred):.2%}"        )  if __name__ == "__main__":    main()
目的:在同一份数据上同时计算 MAE、MASE、sMAPE,直观展示绝对误差受尺度影响巨大、而归一化指标(MASE)与对称百分比(sMAPE)在两条不同尺度序列上保持相近量级,印证“归一化后可比”的核心结论。
  1. bench = np.abs(actual[1:] - actual[:-1])计算朴素基准误差:用相邻两期真实值之差近似“照抄上期”的平均离席差。
  2. seasonal_period > 1 and n > seasonal_period判断是否使用季节性朴素基准,对应“上一年同周期值”的思路。
  3. denom = np.where(denom == 0, 1e-10, denom)给 sMAPE 分母加极小值,防止实际值与预测值同时为 0 时除零崩溃。
  4. big = 10.0 * np.sin(t / 5.0) + rng.normal(0, 0.6, 60)构造尺度为 10 的大序列;small 尺度仅 0.1,相差 100 倍。
  5. return float(np.mean(2.0 * np.abs(actual - pred) / denom))逐点计算双向价差后取平均,得到 sMAPE。
  6. return mae(actual, pred) / baseline模型 MAE 除以朴素基准 MAE,完成 MASE 的归一化缩放。
  7. for name, act, pred in [...]依次对大小两条序列打印指标,对比结果即可看到 MAE 差一个数量级、而 MASE 和 sMAPE 同量级。

常见误区

误区我一直以为 sMAPE 和 MAPE 一样,最高就是 100%,超过 100% 肯定是代码写错了。

正解sMAPE 的公式是 $2|Y-F|/(|Y|+|F|)$,当实际值和预测值一正一负且绝对值相等时,比值正好为 2,也就是 200%。所以 sMAPE 天然是 0%~200% 的指标。如果用 100% 当阈值做监控,会漏掉超过一半的异常情况。它只是“长得很像百分比”,并不真是严格意义的误差百分率。

为何常见:名称里带"percent",结构又和 MAPE 高度相似,初学者很自然会以为上限同为 100%。

误区模型调参时看到 MASE 从 1.2 降到 0.9,就认为模型一定变好了很多。

正解MASE 的基准是“照抄上期”,0.9 表示模型比复读机好 10%,这是相对进步的度量,但并不能说明绝对精度有多高。如果序列本身噪声极大,即使 MASE=0.5,预测结果也可能完全不可用。正确的用法是:MASE 用于横向对比与排名,绝对精度要结合业务指标(如业务容忍的绝对误差范围)一起评估。

为何常见:MASE 提供了“可跨尺度比较”的便利,容易让人误以为这个数值本身就等价于精度高低。

误区既然叫“对称平均绝对百分比误差”,那么预测比实际高 10% 和低 10% 的惩罚应该一模一样。

正解事实并非如此。当预测值大于实际值时,分母中 $\left|\hat{Y}_t\right|$ 被预测值拉大,整体惩罚幅度会被压低;当预测值小于实际值时,分母相对更小,同一比例偏差的惩罚偏大。sMAPE 只是比 MAPE 更对称,并非严格的数学对称。若需要严格对称,可改用对数型误差或调整分母的加权方案。

为何常见:“对称”的字面意思太有迷惑性,而大多数教程只字未提分母项如何随预测方向变化。

误区MASE 公式里写的是 $|Y_t - Y_{t-1}|$,那数据只要有缺失、时间间隔不均匀,MASE 就算不了。

正解朴素基准可以推广为“最近的可用观测值”,或季节性场景下的“上一年同周期值”。关键原则是:分母必须是你所能想到的最简单预测的误差,且与分子保持同一个误差尺度。只要基准定义清晰,非均匀间隔序列同样可以计算 MASE,只是分母要按业务规则调整。

为何常见:教科书公式写的是 $t-1$,容易让学生把“朴素基准”这个抽象概念绑定到一个具体的下标上。

误区把所有序列拼接成一个长向量,算一个总 MAE 再除以总基准 MAE,就得到了平均 MASE。

正解正确做法是逐条序列先算各自的 MASE,再对 MASE 列表取算术平均。如果拼接计算,长序列会隐式获得更高权重,短序列和冷门序列的贡献被稀释,排名自然失真。竞赛评估(如 M4)正是采用“逐序列 MASE 再平均”的协议。

为何常见:“反正都是平均误差,分母分子各自加总也一样”符合直觉,但忽略了不同序列长度和波动幅度带来的权重大小差异。

面试题

Q1. MASE 分母中的基准误差来自哪个预测方法?

单选题 · easy

  • A.历史均值的绝对误差
  • B.朴素预测的绝对误差← 正确答案
  • C.上一期的实际取值
  • D.随机游走的步长方差

答案:B。MASE 的分母是“朴素预测”的误差,即用上一期观测值直接当作本期预测时产生的平均绝对误差。选项 B 正确。A 是均值预测,C 是朴素预测的取值本身而非误差,D 与 MASE 定义无关。就像评判一道菜要和“家常做法”比,而不是和随意定的标准比。

Q2. 某模型在测试集上的 MASE=0.8,这意味着与朴素基准相比?

单选题 · easy

  • A.预测误差比基准少 20%← 正确答案
  • B.预测误差比基准多 20%
  • C.预测值与实际差值 0.8
  • D.预测准确率达到 80%

答案:A。MASE = 模型误差 / 基准误差 = 0.8,说明模型误差是基准误差的 80%,也就是比“照抄上期”的复读机好了 20%。注意 C 选项混淆了“缩放倍数”和“绝对差值”,MASE 是无量纲的倍数,并不是数值型误差本身。

Q3. sMAPE 的取值范围是多少?

单选题 · mid

  • A.0%~100%,与 MAPE 相同
  • B.0%~200%,对称时达到上限← 正确答案
  • C.0%~∞,误差越大值越大
  • D.0%~50%,经典折扣定义

答案:B。sMAPE 的比值部分是 $2|Y-F|/(|Y|+|F|)$。当实际值与预测值方向相反且绝对值相等时,比值为 2,即 200%。因此范围是 0%~200%,不是 MAPE 的 100%,也没有上界无限的特性。这个知识点常被用来检验是否真正理解了公式,而非只看名字。

Q4. 以下哪项是 MASE 最核心的优势?

单选题 · mid

  • A.无上界更便于排序比较
  • B.百分比形式直观好理解
  • C.跨尺度序列误差可比← 正确答案
  • D.对任意数据都能计算

答案:C。MASE 用各序列自己的朴素基准做分母,把绝对误差缩放为无单位的倍数关系,因此不同尺度序列可以横向比较。A 不算优势,B 是 sMAPE 的特点,D 过于绝对,遇到极短序列时 MASE 基准本身方差很大,并不总能可靠计算。

Q5. 当实际值和预测值都极接近 0 时,sMAPE 会出现什么情况?

单选题 · mid

  • A.分母趋近于零导致指标不稳← 正确答案
  • B.分子趋近于零导致结果偏小
  • C.结果仍然保持为零
  • D.结果直接判定为无穷大

答案:A。sMAPE 的分母是 $|Y|+|F|$,当两者都接近 0 时分母趋近 0,比值可能震荡、爆炸或得到无穷大。实际工程中常提前用极小值防护或剔除零值样本。这就像“免费品对免费品”没法算折扣率,而不是折扣率天然为 0。

Q6. 对具有明显季节性的月度销售数据,MASE 的朴素基准应使用哪种预测?

单选题 · mid

  • A.上一个月观测值
  • B.上一年同月观测值← 正确答案
  • C.过去一年均值
  • D.线性趋势外推值

答案:B。当序列存在明显季节性,“照抄上期”会被季节波动严重干扰。此时应使用季节性朴素预测——用上一年同周期值作为本期预测,即 $\hat{Y}_t = Y_{t-12}$。这是 MASE 在季节数据上的标准改进,保证基准与模型处于同样的“难度”下。

Q7. 某序列上模型预测的 MAE=3.0,朴素基准的 MAE=5.0,则 MASE 为?

单选题 · hard

  • A.0.6,模型优于基准← 正确答案
  • B.1.67,模型差于基准
  • C.3.0,相当于模型误差
  • D.5.0,相当于基准误差

答案:A。MASE = 模型 MAE / 基准 MAE = 3.0 / 5.0 = 0.6。MASE < 1 代表模型比“照抄上期”少了 40% 的误差。注意分子是模型误差,分母是基准误差,不能颠倒。这道题直接考察定义的记忆和计算。

Q8. 以下哪些场景应优先选择 MASE?(多选)

多选题 · mid

  • A.需要跨多尺度序列公平对比← 正确答案
  • B.需要给业务方讲百分比误差
  • C.序列中包含大量接近零的值← 正确答案
  • D.希望评估对异常点更鲁棒← 正确答案

答案:ACD。MASE 尺度无关,适合跨序列对比(A);对接近 0 的值不会像 MAPE/sMAPE 那样分母爆炸(C);以绝对误差为基础,对异常点相对鲁棒(D)。B 是 sMAPE 的优势,因为业务方更习惯听百分比。

Q9. 关于 sMAPE 的说法,以下哪些是正确的?(多选)

多选题 · hard

  • A.分子分母同时趋零时会不稳定← 正确答案
  • B.取值范围上限是 200% 而非 100%← 正确答案
  • C.对偏高与偏低的惩罚完全对等
  • D.竞赛中完全不能用于模型排名

答案:AB。A 描述的是零值分母问题,正确;B 是正确的值域认识。C 是常见误区——sMAPE 因分母含预测值,偏高和偏低的惩罚并不完全对等。D 太绝对,sMAPE 常被用作竞赛主指标,只是需要预处理零值样本。

Q10. 关于 MASE 与 sMAPE 的组合使用,以下说法正确的有哪些?(多选)

多选题 · easy

  • A.MASE 担当跨序列排名主指标← 正确答案
  • B.sMAPE 帮助业务理解误差大小← 正确答案
  • C.MASE=2 表示误差是基准两倍← 正确答案
  • D.sMAPE 的值永远小于等于 50%

答案:ABC。A、B 描述了两把尺子的典型分工:MASE 保证排名公平,sMAPE 提供直观解释。C 是 MASE 的基本语义,MASE=2 即模型误差是朴素基准误差的 2 倍,说明模型不如“照抄上期”。D 错误,sMAPE 上限是 200%,超过 50% 在预测方向相反时完全可能。