Kaggle 商品销量预测季军方案出炉,应对时间序列问题有何妙招

 

https://baijiahao.baidu.com/s?id=1595331607299762312&wfr=spider&for=pchtml

雷锋网 AI 研习社消息,Kaggle 上 Corporación Favorita 主办的商品销量预测比赛于两个月前落下帷幕,这次比赛的奖金池共计三万美圆,吸引到 1675 支队伍参赛。算法

近日,Private Leaderboard 上的亚军 SoLucky 团队在 arxiv 上发表了一篇论文,阐述了其获胜方案,雷锋网 AI 研习社对论文内容进行编译整理以下:数组

做者参加了在 Kaggle 上举办的 Corporacion Favorita Grocery Sales Forecasting 销量预测比赛,并取得了第二名的成绩。网络

这场比赛是基于时间序列数据的基础机器学习问题,论文中阐明了整体分析和解决方案。架构

做者的方法基于空洞卷积神经网络(dilated convolutional neural network)并进行了改善,来对时间序列进行预测。利用这种技术,在 n 个示例批次中不断迭代,可以快速和准确地对大量时间序列数据进行处理。并发

比赛背景机器学习

Kaggle 等竞赛平台举办的时间序列比赛目前已经成为机器学习流行赛事,这些竞赛有助于推动机器学习顶尖技术的发展,将其用于实际领域。ide

时间序列是不太为人所知的分析领域。因为数据存在着季节性、动态性和周期性的特征,数据序列是非线性的,并存在噪声,所以很难准确进行识别和预测。性能

神经网络在近几年的热度急剧增加,这令人们对预测有了大相径庭的理解。硬件的进步使得咱们可以在必定时间内利用深度神经网络解决问题。目前,深度学习是一个可行的解决方案,利用这项技术,近年来研究者们在基准数据集的分类精度上打破了不少记录。学习

做者在本文中讨论了解决 Corporacion Favorita Grocery Sales Forecasting 商品销量预测问题的方法,描述并分析了将卷积神经网络应用于时间序列数据。

数据集描述

数据被分为两部分——训练数据和测试数据。训练数据用于模型训练,测试数据被分为几部分,分别用于在公共和私人的排行榜上进行模型的准确性评估。这场比赛中,Corporacion Favorita 提供 125,497,040 个训练观察值和 3370,464 个测试观察值。

数据集由按日销售额、商店编号、商品编号和促销信息组成。此外,主办方还提供交易信息、石油价格、商店信息和假期。

该竞赛使用 NWRMSLE(标准化加权均方根对数偏差)做为评价指标。

问题定义

实体店中的采购和销售须要保持平衡。稍微将销售预测过量,店里就会积存许多货物,要是积压了不易储存的商品会更加糟糕。而要是将销量预测太低,设想一下,当顾客把钱都付了,却发现没货,那这家店的口碑将会急剧降低。

此外,随着零售商增长新的门店,那里的顾客又可能存在独特的需求,好比他们想要新的产品,口味随季节而变化,那问题将变得更加复杂,产品市场如何真的很难预知。

在此次比赛中,主办方但愿参赛者创建一个更准确的预测产品销量的模型。做者的目标是创建一个可能应用于实际,并具备最高准确度的销量预测模型。

主要存在以下三种挑战:

噪声数据:尽管组织者尽力准备并提供了大量数据,但其中存在有噪声标签的数据。有些数据(石油价格、假期、交易)与目标没有关联,在以后根本不会使用。

不可见数据:有这样一种状况,在测试集中出现了不可见的数据。因为存在这类不可见的商店/商品数据,模型的行为将不可预测。缘由以下:训练集中不包括销售额为 0 的记录,可是测试集包含全部的商店/商品组合(无论商店此前是否销售该商品)。最后,做者假设这些不可见的组合只是零销售额数据,用 0 来进行替换。

准确度:由于这个实验是严格按照比赛规则进行的,做者尝试了全部可能用来提升预测准确度的方法。

可选方案

下面的这些架构基于神经网络,但在这个比赛中,最终结果不如做者最后使用的 WaveNet 模型,但他们相信这种架构能够提供一种彻底不一样的方法来解决问题,产生出一些有趣的洞见,甚至在其余比赛中超越 WaveNet。

循环神经网络

循环神经网络(RNN)能够将当前节点的输出做为下一个节点的输入,能够以下描述:相较于其余深度学习算法,RNN 已经被普遍用于预测时间序列问题,并被定位为预测此类数据数组问题的最早进的方法。

这些网络的效率能够经过重复的链接来解释,这些链接容许网络访问之前的时间序列值的整个历史。

能够将 RNN 当作同一个网络的多个副本,每一个副本会传递消息给后续副本。因为自身属性,RNN 与序列和列表密切相关。在过去的几年中,将 RNN 应用于时间序列预测问题上已经取得了惊人的成果。

其中具备象征意义的是 LSTMs,这是一种很是特殊的 RNN,在许多任务上,它比标准 RNN 的表现要好得多。

GRU 架构也能够做为解决当前问题的方法,它们与 LSTMs 类似,结构更简。

做者的方法

基于 WaveNet CNN 网络并作了一些额外的扩展和修改。

近年来,深度学习技术的发展促使研究人员探索出各类时间序列预测方法,其中就有 WaveNet。WaveNet 是一个生成模型,这意味着模型能够针对一些条件输入生成实值数据(real-valued data)序列。

该架构背后的核心思想是空洞因果卷积(dilated causal convolutions)。因为没有循环链接和跳跃步骤,空洞卷积训练起来比 RNN 要快。

目前,因果卷积存在的问题之一是:为了增大感觉野,须要用到多层卷积或者或不少大滤波器。

空洞卷积不存在这些问题,它使用上采样滤波器代替特征映射(feature maps)。换句话说,空洞卷积容许只增长核的视野在层间维持特征映射的大小,另外,能够用更少的参数捕获输入的全局视图。

为了可以产生 16 天的预测值,做者对模型进行了修改。由于训练使用的是下一步预测值,错误会持续累积。为了解决这个问题,他们使用 sequence to sequence 方法,编码器和解码器不会共享参数。解码器将会在产生长序列时处理累积的噪声。这里还用了亚当优化器更新网络权重。数据是经过小批次产生的,随机采样 128 个序列。

因为整个数据集大约包含 17 万序列 x 365 天,因此在每次训练迭代中都能向模型输入不一样的数据。考虑到这一点,该模型能很好地处理过拟合问题。

在训练过程当中,学习率衰减系数设置为 0.0005。做者将过去 16 天的训练数据作成一个集合,并将其用于验证。销售量的变化和促销信息能够用来生成的季度和年度模型。

在最后若干个上千或上万的的小批次中,模型会稍微出现过拟合,因此结果会有一点波动。

为了解决过拟合问题,平滑短时间波动,着重于长期的动态性和周期性趋势,做者用到移动平均法(Moving average)。在 5000 次小批量迭代以后,模型开始预测,以后每过 2000 次迭代产生预测。在特定的迭代以后,以下图所示,5 个模型的平均性能优于单个模型。为了将模型准确性进一步提升,最终,做者使用指数移动平均法(exponential moving average),利用局部交叉验证(local cross-validation)计算出平滑因子(smooth factor)。

该模型有很好的捕获时间序列数据规律的能力,所以不少特性都没有被使用。其中一些是单位产品销售额和促销信息。

总结

企业面临一个明显的问题——市场是不可预测的。任何销售预测,不管你的分析条件多么严谨,均可能是彻底错误的。若是市场情况保持相对不变,一种可靠的预测方法就是使用历史数据。做者的经验代表,卷积神经网络很是善于处理历史数据,捕捉季节性的趋势、周期和无规律的趋势,以下图所示。

他们描述了一种使用 CNN WaveNet 的方法,这是一个 sequence to sequence 架构,在销售预测方面,它是解决时间序列预测问题的有效方法(以下图)。

在将来,须要对层数更多的 CNN 进行更深刻的研究,以完成更复杂的任务。为了训练更深的网络,须要大量的数据。在将来,对不一样类型和领域的数据进行分析多是另外一个有趣的方向。此外,将不一样技术融合起来也能得到至关的准确性。

比赛地址:https://www.kaggle.com/c/favorita-grocery-sales-forecasting

论文地址:https://arxiv.org/pdf/1803.04037.pdf

雷锋网 AI 研习社编译整理。

本文由百家号做者上传并发布,百家号仅提供信息发布平台。文章仅表明做者我的观点,不表明百度立场。未经做者许可,不得转载。

相关文章
相关标签/搜索