13.时间序列预测入门到实战: 概率预测:DeepAR 与 N-BEATS / N-HiTS

发布时间:2026/7/22 5:05:17

13.时间序列预测入门到实战: 概率预测:DeepAR 与 N-BEATS / N-HiTS 时间序列预测入门到实战十三· 概率预测DeepAR 与 N-BEATS / N-HiTS本文是「码海寻道」《时间序列预测入门到实战》系列的第 13 篇。前面所有深度模型都在拼一件事点预测的精度——预测出一个数越准越好。但真实业务里一个光秃秃的数往往不够用。这一篇讲两件事概率预测DeepAR给出一个分布而非一个点以及纯 MLP 的强架构N-BEATS / N-HiTS证明不用注意力也能 SOTA还自带可解释。一、为什么点预测不够用“明天用电量 8000” 和 “明天用电量 90% 概率落在 7000~9000”——后者能回答的问题多得多。做容量规划要看最坏情况P90 甚至 P99做安全库存要权衡缺货成本和积压成本做风控要知道尾部风险。这些决策都不是靠一个点估计能做的它们需要不确定性。这就是概率预测模型输出的不是一个值而是一个分布或者一组分位数P10 / P50 / P90。二、DeepAR让 RNN 输出分布DeepARAmazon2017的巧思在于它还是一个自回归 RNN但网络最后吐出的不是一个预测值而是一个概率分布的参数比如高斯分布的均值 μ 和方差 σ。训练目标不是最小化 MSE而是最大化似然——让真实值在预测分布下的概率尽量大预测从分布里采样一步步滚动生成跑很多次得到大量可能的未来轨迹再从这些轨迹里读出任意分位数。最大化似然和 MSE 差在哪MSE 只盯一件事预测那个点离真实值有多近——它根本不关心我有多确定。最大似然多管一件事让整个分布形状去贴合数据。模型不光要把均值 μ 对准真实值还得把方差 σ 调对——数据抖得厉害的时段就把 σ 调大“这儿我没把握区间给宽点”平稳的时段把 σ 调小“这儿我很有信心”。σ 太大太小似然都会惩罚它。于是模型在学预测多少的同时也被逼着学会了该有多不确定——这正是点预测模型永远给不出的东西。为什么要采样一大堆轨迹因为是自回归的每一步都从分布里随机抽一个值当作下一步的输入一路滚到底就得到一条可能的未来。抽的随机性不同滚出的轨迹就不同。跑几百上千次几百条未来轨迹铺开在每个时刻把这些值排个序第 10% / 50% / 90% 位置的值就是 P10 / P50 / P90——用蒙特卡洛的笨办法把不确定性一条条跑出来。DeepAR 还是个全局模型呼应第 6 篇一个模型学所有序列特别适合零售那种成千上万条相似序列的场景也能吃协变量。它是工业界概率预测的经典选择。三、N-BEATS纯 MLP 也能封神N-BEATSICLR 2020反潮流地证明了一件事不用 RNN、不用 CNN、不用注意力纯粹的全连接MLP堆叠也能拿到 SOTA这个简单结构就够强的精神和第 12 篇的 DLinear 一脉相承。它的结构核心是双重残差堆叠一串 block 首尾相接每个 block 同时输出两样东西——backcast对已知历史的重构我理解到的部分从输入里减掉forecast对未来的预测累加起来就是最终结果。一层层把已经解释掉的从输入里剥离剩下的交给下一层。可解释变体更妙把 block 的基函数设计成趋势基和季节基输出就能自动分解成趋势 季节又是第 2 篇的分解思想无处不在。像剥洋葱一样理解它第 1 个 block 说我看懂了历史里这一层规律就把这层从输入里减掉backcast同时按这层规律预测一小部分未来forecast剩下的、它没看懂的残差往下传第 2 个 block 接着啃……每层只负责一层结构预测就是各层 forecast 的累加。这个啃掉一层、传下残差的接力和第 6 篇梯度提升一棵接一棵补残差是同一种智慧——用一串简单模块串行分工拼出复杂能力。区别是这里连历史重构backcast也一起做逼着每层把话说清楚可解释性就是这么来的。四、N-HiTSN-BEATS 的长序列进化AAAI 2023N-HiTSAAAI 2023是 N-BEATS 的直系进化专治长序列预测又快又准。两个关键升级多率采样multi-rate sampling不同 block 用不同的采样率看数据——有的 block 关注低频的趋势有的关注高频的细节各司其职分层插值hierarchical interpolation预测也分层生成低频块画大轮廓、高频块补细节最后插值合成。这套分频治理让 N-HiTS 在长序列上大幅降低计算量精度还常常优于复杂的 Transformer——又一个简单高效打败复杂的例子。五、怎么用概率预测和这些模型neuralforecast里都有现成实现还能直接指定输出分位数# pip install neuralforecastfromneuralforecastimportNeuralForecastfromneuralforecast.modelsimportNHITS,DeepARfromneuralforecast.losses.pytorchimportDistributionLoss nfNeuralForecast(freqh,models[NHITS(h24,input_size168,lossDistributionLoss(distributionNormal,level[80,90])),# 直接要 80%/90% 区间DeepAR(h24,input_size168),# DeepAR 内建概率输出默认即出分位数])nf.fit(df)# df: unique_id / ds / yprednf.predict()# 输出含中位数与各分位数区间参考定位要不确定性就上 DeepAR 这类概率模型要一个强而快、还可解释的深度基线N-BEATS / N-HiTS 非常值得先试——它们常常是性价比最高的选择。小结概率预测给的是分布/分位数而非一个点这是库存、容量、风控等决策的刚需DeepARRNN 输出分布参数最大化似然训练、采样出多条轨迹全局模型 概率预测N-BEATS纯 MLP 双重残差堆叠可解释变体自动分解趋势/季节N-HiTS多率采样 分层插值长序列又快又准是极强的性价比基线。深度学习各大流派讲到这还差最后一块拼图——面向真实业务的模型。下一篇的TFT会把多协变量、已知的未来信息、可解释、概率预测全部揉进一个模型专为生产环境而生。思考题DeepAR 假设预测服从某个分布族比如高斯。如果你的数据是销量非负、常有很多 0、偶尔暴涨高斯分布合适吗该换成什么分布概率预测讲完了。下一篇看集大成者 TFT如何把真实业务的所有诉求装进一个模型。

相关新闻