用 LSTM 预测下周峰值流量,MAPE 10%,如何进一步降低误差

解读

面试官真正想考察的不是“把 MAPE 从 10% 降到 5%”的调参技巧,而是“性能测试工程师能否把业务痛点、数据质量、模型局限、系统可观测性、上线风险控制”串成闭环。国内互联网场景下,峰值流量往往受秒杀、红包、短视频热点、政策舆情等突发事件驱动,单纯时序模型容易失效;同时,性能测试团队需要为容量评审、弹性扩缩容、预算申报给出“能拍胸脯”的数字,误差每降低 1%,背后都是真金白银。因此,回答必须体现:①对数据缺陷的洞察;②对业务外生变量的敏感;③对模型—工程一体化的落地经验;④对 SLA 与成本的双重权衡。

知识点

  1. 数据质量与特征工程
    缺失值、采样粒度、节假日、营销活动、版本上线、CDN 节点切换、爬虫流量、灰度放量比例。
  2. 外生变量引入
    把运营排期表、优惠券发放量、Push 下发量、搜索引擎指数、竞品同期活动、天气、疫情政策等转成可量化特征。
  3. 多模型融合
    LSTM 捕捉长周期依赖;XGBoost/LightGBM 捕捉节假日突变;Prophet 捕捉周/年季节性;Transformer 捕捉多头注意力;贝叶斯结构时间序列(BSTS)给出置信区间。
  4. 在线学习 & 滚动窗口
    每周回流最新 7 天数据,动态重训,避免概念漂移。
  5. 异常检测与样本加权
    对历史“黑天鹅”事件(春晚红包、顶流明星官宣)做异常标注,采用 Huber Loss 或样本加权,降低离群点影响。
  6. 评价指标体系
    MAPE 对低流量时段敏感,需同步跟踪 SMAPE、WAPE、RMSE、PINAW(预测区间覆盖率),防止“数字游戏”。
  7. 性能测试视角的闭环
    预测结果→容量评估→HPA 阈值→压测脚本→线上巡检→误差回流,形成“预测-验证-修正”飞轮。

答案

“目前线上 LSTM 单模型 MAPE 10%,我们已经能把大促峰值预测到±8% 以内,但财务和运维希望再压到 5%,我的思路分四步:
第一步,数据补课。拉通运营、市场、算法、运维四方,把未来 14 天的‘确定事件’落库:几点发券、几点 Push、预算曝光量、版本放量比例。对历史同期缺失的分钟级日志,用 CDN 边缘节点带宽反向插值补全,避免 LSTM 因为‘假零值’学到错误模式。
第二步,双塔模型。主塔用堆叠 LSTM+Attention 处理 60 天滚动窗口的分钟级流量;副塔用 LightGBM 处理 200+ 外生特征,输出‘节假日突变系数’;两者在 Log1p 变换后的空间做加权融合,权重按上周滚动 OOS 误差逆方差动态调整。离线回溯 6 个月,MAPE 从 10% 降到 6.2%。
第三步,在线修正。上线后,T-2 天开始每天 6 点、16 点两次滚动推理;同时把实时 Nginx 日志 5min 级 aggregate 回流,如果当天累积误差超过 3%,触发‘小步快跑’重训,20 分钟内完成增量更新。
第四步,误差兜底。预测区间同步输出 95% 置信上限,容量评审直接按上限+10% 冗余申报;若真实流量突破上限 5%,立即触发‘熔断式压测’:在预发环境 1:1 流量回放 1 小时,验证缓存、线程池、DB 连接池是否安全,防止‘预测对了但系统扛不住’。
通过这四步,大促峰值 MAPE 压到 4.7%,财务预算节省 12%,线上零扩容事故。”

拓展思考

  1. 如果下周出现“全网热搜”级突发事件,外生特征表里没有对应字段,模型如何在 30 分钟内自适应?
    可引入“实时搜索指数”作为即席特征,用迁移学习把历史同类事件(如明星官宣、政策发布)的增量模式蒸馏到模型,5 分钟内完成热更新。
  2. 误差降到 3% 后,继续压缩的边际成本指数上升,如何与业务方谈判“可接受误差”?
    把容量成本曲线和预测误差曲线画在同一张图,找到“误差 3%→2% 需多买 800 台容器”的拐点,让业务方在“预算”与“风险”之间签字,避免技术团队无限背锅。
  3. 预测结果直接输入到 K8s HPA,一旦预测偏高会造成资源浪费,如何设计“回退策略”?
    采用“渐进式扩容+快速回缩”:预测峰值前 2 小时开始阶梯式 20%→40%→60% 扩容,同时设置 CPU≥65% 持续 3 分钟才继续升档;峰值过后 5 分钟无流量增长立即触发缩容,保证“多弹少赔”。