返回列表

3rd Place Solution

389. M5 Forecasting - Uncertainty | m5-forecasting-uncertainty

开始: 2020-03-03 结束: 2020-06-30 销量与需求预测 数据算法赛
第三名解决方案

第三名解决方案

作者:Ouranos
发布时间:2020-07-14

编辑

最终,我们(与我的同事 Costas Voglis)合著的论文已被 IJF 发表。预印本可以在此处下载

致谢

我要感谢主办方举办了如此大规模的杰出竞赛。我还需要提到,我参与 M5 竞赛是由我的雇主(位于希腊雅典的 Nodalpoint Systems)指派并赞助的。由于其他事务,包括在 Topcoder 举办的 SpaceNet 6 挑战赛中获得第三名(团队 SatShipAI),我直到 5 月初,也就是比赛开始两个多月后,才得以参与 M5 的两个赛道(准确性和不确定性)。

背景

我和同事 Costas Voglis 组建了一个团队参加 M5 准确性赛道,最终获得了第 21 名。出于某些原因,我们更倾向于单独参加不确定性赛道,此前我们已经确认这并不违反比赛条款。Costas 本人在不确定性赛道中最终获得了第 26 名。

解决方案

我的解决方案是对我在团队 Nodalpoints 提交给 M5 准确性赛道的贡献的延伸;换句话说,我的解决方案的起点是团队 Nodalpoints 提交给 M5 准确性赛道的预测结果中我自己的部分

起初尝试用经典的 RNN 方法解决这个竞赛时遭遇了许多失败,可能是由于结果的层次结构特性,我意识到如果继续把它当作时间序列问题处理,我不会得到好的结果,我应该将其视为/转换为回归问题(正如论坛中几个帖子建议的那样)。

所有必要的代码现在都可以在 GitHub 仓库 中找到。

准确性建模:

每个商店一个 lightgbm 模型(共 10 个商店),使用总共 70 个特征和所有可用数据,每个商店训练不同的轮数(700-1600)。
3 个 keras 模型(带有分类嵌入),架构几乎相似,仅使用 19 个特征在最后 17*28=476 天的数据上进行训练。
• 集成,加权几何平均:
((Lgbm ** 3) * KerasSimpleAverageOf3Models) ** (1/4)
关键点:Keras 模型在最后一天的预测上失败了(异常值——见下文注释),可能是由于那天的 NBA 总决赛(而且我只用了 1 年的数据进行训练——主要是为了加速)。对于那一天,我只保留了 Lightgbm 的预测(没有集成)。

(注:从 sales_train_evaluation.csv 文件来看,过去 2 年(28*26 天)的平均日销售额为 1.25,标准差为 0.22。Keras 最后一天的平均预测值是 3.9,距离平均值超过 6 个西格玛,因此是一个异常值。)

Sales per day chart

这个 M5 准确性解决方案是回归问题的结果。但还有一个未被挖掘的维度:对于每个项目,我们得到了 28 天的预测;这些回归预测可以利用这实际上是一个时间序列问题的事实,通过简单的指数加权平均(按行)来受益:

同比赛其他方案