科技俱乐部菌|DeepAR 进行时间序列预测,使用

在2019年的WAIC(世界人工智能大会)上 , 笔者在AWS展台中布置并展示了一个使用DeepAR进行时间序列预测的项目 , 受到了广泛的来自客户、参观者以及同事的关注 , 其中大部分是被展示项目中真实的电商客户的数据及成果吸引 , 进行了一定的经验交流 。 在得到肯定之后 , 笔者在年前又与部分互联网、旅游行业的业务负责人沟通 , 发现时间序列预测有着广泛的适用场景 , 能直接帮助决策者做出有数据支撑的重要决策 。
科技俱乐部菌|DeepAR 进行时间序列预测,使用
文章图片
图1WAIC中展示的时间序列预测DEMO
在本篇博客中 , 会简要介绍时间序列预测的场景、常见的分类及对应算法、DeepAR算法的优势以及如何使用DeepAR算法进行时间序列预测 。
场景介绍
绝大部分行业场景 , 尤其是互联网行业 , 每天都会产生大量的数据 。 游戏中每时每刻都会产生大量的玩家日志信息;旅游应用中每天有各类酒店各种交通工具的实时价格;涉及供应链和日销量的零售电商 , 每月都为生产(购进)多少货而发愁;就连生产电子元器件、供电箱等传统生产企业 , 这些零件每时每刻都会产生大量的数据 。 而我们称这种不同时间收到的 , 描述一个或多种特征随着时间发生变化的数据 , 为时间序列数据(TimeSeriesData) 。
而结合上文中的时间序列数据 , 我们能够做什么?最显而易见的是 , 我们可以通过过去产生的时间序列数据 , 来预测未来 。 我们可以通过游戏历史的玩家消费时间序列数据 , 预测该玩家在接下来一周的付费意愿和付费大致金额 , 从而定制化的推送相关游戏礼包和活动 , 这通常和传统的用户画像是互补的 。 旅游应用中 , 利用历史数据对未来酒店、机票的价格进行预测 , 从而为用户推荐最低价的购买点(例如:提示用户五天后购买会更便宜) , 这一个小功能就足够获取大量忠实用户并实现变现 , 而北美已经有网站实现了这个功能来预测机票价格 。 有了每日销量的历史数据 , 我们可以预测接下来每天的销量范围 , 从而更有针对性的进货或者推出折扣促销政策 , 保证商品的供需平衡 。 某大型供电箱生产销售企业常常头疼于电箱的维修难 , 维修贵 , 如果能利用传感器收集上来的历史数据训练出模型 , 在电箱故障前提前预警 , 那不论是维修还是提前更换 , 成本总比电箱彻底不工作后再去维修要少 。
一言以蔽之 , 时间序列预测就是通过多种维度的数据本身内在与时间的关联特性 , 其中可能包含季节性、趋势性等等特征 , 利用历史的数据预测未来的场景 , 细分场景除了上述所介绍的之外 , 还有很多很多 , 由于篇幅关系 , 这里不做过多的展开介绍 。
时序预测分类及算法
时序预测从不同角度看有不同分类 , 从实现原理的角度 , 可以分为传统统计学 , 机器学习(又分非深度学习和深度学习) 。 按预测步长区分 , 可以分为单步预测和多步预测 , 简单来说就是一次预测未来一个时间单元还是一次预测未来多个时间单元的区别 。 按输入变量区分 , 可以分为自回归预测和使用协变量进行预测 , 区别在于维度中是否含有协变量 , 例如预测未来销售量时 , 如果只接受时间和历史销售量数据 , 则是自回归预测 , 如果可以接受天气、经济指数、政策事件分类等其他相关变量(称为协变量) , 则称为使用协变量进行预测 。 按输出结果区分 , 可以分为点预测和概率预测 , 很多模型只提供了点预测而不提供概率预测 , 点预测模型后再加蒙特卡洛模拟(或其他转化为概率预测的方式)往往不能准确反映模型输出的预测概念 , 而在大多数场景下 , 概率预测更贴近事实情况 , 对于未来的预测本身就应该是一种概率分布 。 按目标个数区分 , 可以分为一元、多元、多重时间序列预测 。 举例理解 , 使用历史的销售量预测未来1天的销售量为一元时间序列预测 , 使用历史的进店人数、销售量、退货量预测未来1天的进店人数、销售量、退货量(预测目标有三个)为多元时间序列预测 , 使用历史的红烧牛肉面、酸菜牛肉面、海鲜面的销售量预测未来1天的红烧牛肉面、酸菜牛肉面、海鲜面的销售量(预测目标有三种)为多重时间序列预测 。 这些分类是不同角度下的分类 , 同一种算法往往只能是分类中的一种 , 例如传统的统计学算法只适合做自回归预测而不适合协变量预测 。