周期性需求预测

周期性需求预测


首页 » 资源 » 此处

就供应链而言,周期预测是指传统的需求预测,即根据周期(通常是一天、一周或一月)来计算相应的值。虽然我们通常建议在适用时使用概率需求预测,但在某些情况下,执行周期预测也是可以的。Lokad 的周期预测模式旨在生成每日时序预测。

一般语法

预测引擎提供了专门用于每日周期预测的功能。语法如下:

// 'T' is of type [Id, *]
table T = forecast.periodic(
  hierarchy: H1, H2, H3, H4
  category: C1, C2, C3, C4
  horizon: 56 // number vector in days
  present: (max(Orders.Date) by 1) + 1
  demandDate: Orders.Date
  demandValue: Orders.Quantity
  censoredDemandDate: OOS.Date)

show table "Periodic" with Id, T.ForecastDate, T.Mean, T.Sigma

预测引擎返回的表 T 的类型不是 [Id, Date, *],而是 [Id, *] 。这是 Envision 施加的一项规定,因为日期存在于“日”或“周”表中,在执行期间不能动态引入。

horizon 参数是一个数值向量(或正好是一个标量),可以为每个项目都定义此参数。水平线以天为单位表示。预测引擎与水平线不存在任何依赖关系:使用较长的水平线对早期预测没有任何影响。水平线仅用于截断预测和控制结果的详细程度。

其他参数与我们以前在概率需求预测中介绍过的对应部分相同。

预测引擎返回的每日值 T.Mean 为分数,可能小于1。深入地来看,预测引擎使用概率预测模型来预测每日平均值。

每个每日值也与 T.Sigma 相关联,后者表示预测方差平方根的估计。方差是作为二阶中心矩来获取的,而后者则是按照从预测引擎计算得出的概率预测模式类似的方式导出。

均方误差

由 Lokad 计算的每日周期预测针对均方误差 (MSE) 进行了优化,预测引擎将 MSE 作为损失函数使用。直观地说,通过这个损失函数,预测值应当是平衡的:大部分过度预测值应与低于预测的值相当。

值得注意的是,使用 MSE 作为损失可能为需求预测生成分数值。举个例子,对于周转较慢的货品,预计的每日需求值可能介于 0 和 1 之间。

预测引擎生成平均每日预测,这不能与中位数每日预测相混淆。尽管中位数预测也进行了均衡,但略有不同:均衡的中位数预测有 50% 的几率高于或低于未来需求,而平均预测则有 50% 的质量高于或低于未来需求。

何时使用每日预测值

周期性每日预测对于间歇性需求或不稳定的需求的使用效果不佳。这种限制是周期性每日预测本质的直接后果,而不是预测引擎本身的限制所导致的直接后果。实际上,按照设计,每日平均值并不能传达多少关于需求不确定性本身的信息。但不知何故,同样由预测引擎返回的估计方差并未减轻多少这个问题,减轻的程度很轻微。

因此,根据经验,如果输入时序平均每天没有 10 个左右的单位,那么建议不要使用周期预测模式。低于 10 个单位时,原生概率预测方法总能提供卓越的运营结果。