王元恺作者

教程 | 如何使用 DeepAR 进行时间序列预测?

在 2019 年的 WAIC 上,笔者在 AWS 展台中布置并展示了一个使用 DeepAR 进行时间序列预测的项目,受到了广泛的来自客户、参观者以及同事的关注,其中大部分是被展示项目中真实的电商客户的数据及成果吸引,进行了一定的经验交流。在得到肯定之后,笔者在年前又与部分互联网、旅游行业的业务负责人沟通,发现时间序列预测有着广泛的适用场景,能直接帮助决策者做出有数据支撑的重要决策。


图1 WAIC 中展示的时间序列预测 DEMO

在本篇文章中,会简要介绍时间序列预测的场景、常见的分类及对应算法、DeepAR 算法的优势以及如何使用 DeepAR 算法进行时间序列预测

场景介绍

绝大部分行业场景,尤其是互联网行业,每天都会产生大量的数据。游戏中每时每刻都会产生大量的玩家日志信息;旅游应用中每天有各类酒店各种交通工具的实时价格;涉及供应链和日销量的零售电商,每月都为生产(购进)多少货而发愁;就连生产电子元器件、供电箱等传统生产企业,这些零件每时每刻都会产生大量的数据。而我们称这种不同时间收到的,描述一个或多种特征随着时间发生变化的数据,为时间序列数据(Time Series Data)。

而结合上文中的时间序列数据,我们能够做什么?最显而易见的是,我们可以通过过去产生的时间序列数据,来预测未来。我们可以通过游戏历史的玩家消费时间序列数据,预测该玩家在接下来一周的付费意愿和付费大致金额,从而定制化的推送相关游戏礼包和活动,这通常和传统的用户画像是互补的。

旅游应用中,利用历史数据对未来酒店、机票的价格进行预测,从而为用户推荐最低价的购买点(例如:提示用户五天后购买会更便宜),这一个小功能就足够获取大量忠实用户并实现变现,而北美已经有网站实现了这个功能来预测机票价格。有了每日销量的历史数据,我们可以预测接下来每天的销量范围,从而更有针对性的进货或者推出折扣促销政策,保证商品的供需平衡。

某大型供电箱生产销售企业常常头疼于电箱的维修难,维修贵,如果能利用传感器收集上来的历史数据训练出模型,在电箱故障前提前预警,那不论是维修还是提前更换,成本总比电箱彻底不工作后再去维修要少。

一言以蔽之,时间序列预测就是通过多种维度的数据本身内在与时间的关联特性,其中可能包含季节性、趋势性等等特征,利用历史的数据预测未来的场景,细分场景除了上述所介绍的之外,还有很多很多,由于篇幅关系,这里不做过多的展开介绍。

时序预测分类及算法

时序预测从不同角度看有不同分类。从实现原理的角度,可以分为传统统计学、机器学习(又分非深度学习深度学习)。

按预测步长区分,可以分为单步预测和多步预测,简单来说就是一次预测未来一个时间单元还是一次预测未来多个时间单元的区别。

按输入变量区分,可以分为自回归预测和使用协变量进行预测,区别在于维度中是否含有协变量,例如预测未来销售量时,如果只接受时间和历史销售量数据,则是自回归预测,如果可以接受天气、经济指数、政策事件分类等其他相关变量(称为协变量),则称为使用协变量进行预测。

按输出结果区分,可以分为点预测和概率预测,很多模型只提供了点预测而不提供概率预测,点预测模型后再加蒙特卡洛模拟(或其他转化为概率预测的方式)往往不能准确反映模型输出的预测概念,而在大多数场景下,概率预测更贴近事实情况,对于未来的预测本身就应该是一种概率分布

按目标个数区分,可以分为一元、多元、多重时间序列预测。举例理解,使用历史的销售量预测未来1天的销售量为一元时间序列预测,使用历史的进店人数、销售量、退货量预测未来1天的进店人数、销售量、退货量(预测目标有三个)为多元时间序列预测,使用历史的红烧牛肉面、酸菜牛肉面、海鲜面的销售量预测未来1天的红烧牛肉面、酸菜牛肉面、海鲜面的销售量(预测目标有三种)为多重时间序列预测

这些分类是不同角度下的分类,同一种算法往往只能是分类中的一种,例如传统的统计学算法只适合做自回归预测而不适合协变量预测。

图2 时序预测分类对应关系

时序预测算法有很多很多,在这里只介绍典型的四种算法,并着重介绍 DeepAR 算法。

图3 四种时序预测算法

简单移动平均 SMA 是统计学中易实现的一种算法,他能很有效的体现出数据长期的趋势,但无法反映数据周期性的变化。将自回归(AR)的算子加上移动平均(MA),就是 ARIMA 算法。回归能够反映数据的周期性规律,和移动平均形成互补,从统计学的角度可以很好的预测一元与时间强相关场景下的时间序列,由于原理简单好理解,算法也只是一行数学公式, ARIMA 也常常在时间序列预测时先拿来做第一步实验(baseline)。

长短期记忆算法 LSTM 是在循环神经网络 RNN 的基础上,引出了遗忘门和记忆门,从而可以在长期训练的过程中筛选出我们需要的内容。在时间序列预测中,LSTM 对于一元预测场景的效果还是不错的。

DeepAR 是一个自回归循环神经网络,使用递归神经网络 (RNN) 结合自回归 AR 来预测标量(一维)时间序列。在很多应用中,会有跨一组具有代表性单元的多个相似时间序列。DeepAR 会结合多个相似的时间序列,例如是不同方便面口味的销量数据,通过深度递归神经网络学习不同时间序列内部的关联特性,使用多元或多重的目标个数来提升整体的预测准确度。

DeepAR 最后产生一个可选时间跨度的多步预测结果,单时间节点的预测为概率预测,默认输出P10,P50和P90三个值。这里的P10指的是概率分布,即10%的可能性会小于P10这个值。通过给出概率预测,我们既可以综合三个值给出一个值预测,也可以使用P10 – P90的区间做出相应的决策。有关 DeepAR 数学运算背景的更多信息,请参阅DeepAR:概率性预测与自回归递归网络。

DeepAR 算法优势

时间序列预测在真正去做的时候,难免会遇到关于数据的问题,例如无法完整收集所有影响因素的数据,影响因素在未来具有不确定性,有时只有很少甚至没有历史数据。数据往往是卡住大多数时序预测工作负载最大的问题。

DeepAR 能够在一定程度上减轻对数据的要求。作为一种监督学习算法,DeepAR 直接在模型内部补充缺省值。在导入数据的过程中,我们不需要人为的扫描数据寻找缺省值,不需要为如何填补缺省值大费周章,DeepAR 模型内部会解决这一问题。

利用 DeepAR,可以将时间序列与多个分组关联,可以处理统计学难以处理的非线性问题和规模问题,可以在几乎没有历史数据的情况下执行冷启动时间序列预测,只需要有类似的事件序列相支持。例如,我有历史方便面的销售数据若干,现在新上市了一款自热米饭,只有几天的数据,依然可以使用 DeepAR 结合历史方便面的数据预测自热米饭的未来销售走势。这也是算法的一大亮点。

联合多重时间序列本身是一件挑战性十足的事,数据样本的不均衡导致了不同时间序列对于模型的影响程度是不同的。拿商品销售为例,销售数量多一个数量级,商品数量就少一个数量级,每个月卖10个的商品如果有100,000种,每个月卖100个的商品就只有10,000种,每个月卖1000个的商品就只有1000种。

这种不均衡样本导致输入值的量级差异,商品A每天销售数百个,商品B每天销售数万个,两个商品共同训练时商品A的信息会被忽略掉,因为相对于B而言,A对神经网络参数的影响太低。但是,A时间序列中隐含的信息是有价值的,数百个销售额仍然能够反映季节性和趋势性的变化。

图4 多重时间序列联合的问题

而对于这种样本量级差异的解决方法,需要对商品销售量进行缩放,对应到神经网络中,即输入到神经网络前除以v, 输出后乘以v。如何选择为每一个商品选择对应的v是一个挑战,实践发现使用商品的历史销量均值是一个不错的选择。

图5 多重时间序列联合一个可行方案

在 DeepAR 中这些问题的方案都包含在了算法内部,从而省去了前期大量的数据规整和清洗工作。这也就使得从使用的角度上,DeepAR 的上手难度并不高。并且,在 Amazon SageMaker 和 Amazon Forecast 这两个服务中,都可以快速方便的直接调用现成实现好的算法,输入自己的数据进行训练。

DeepAR 使用

如果您是一个刚上手机器学习的小白, Amazon Forecast 是一项完全托管的服务,可以使用包含 DeepAR 在内的机器学习算法来提供高度准确的预测,您可以手动指定算法或让服务根据预测效果自己选择。Amazon Forecast 以 Amazon.com 使用的相同技术为基础,利用机器学习将时间序列数据与其他变量相结合,以获得预测结果。

使用 Amazon Forecast 无需具备任何机器学习经验。您只需要提供历史数据,以及您认为可能会影响预测结果的任何其他数据。训练、超参数调整、模型部署这些过程全部是服务自动执行,数个小时后就可以利用生成好的终端节点进行预测。Amazon Forecast 也能够在模型上线后持续迭代并优化您的模型。

如果您想要动手来自行训练,更多的定制化和手动处理数据,控制训练过程,以及自定义部署流程,Amazon SageMaker是更好的选择。Amazon SageMaker 是一项完全托管的服务,可以帮助开发人员和数据科学家快速构建、训练和部署机器学习 (ML) 模型。

Amazon SageMaker 完全消除了机器学习过程中每个步骤的繁重工作,让开发高质量模型变得更加轻松。Amazon SageMaker覆盖了从数据打标签到最终模型部署一整套的步骤支持和现成的容器化方法,使得开发人员和数据科学家可以专注于他们所擅长的业务以及科学研究之中。

DeepAR 作为 SageMaker 内建的算法,可以通过数行代码调用,就可以直接开始模型训练。SageMaker 也提供了数个 DeepAR 相关示例,可以在初期仿照示例笔记本处理自己的业务数据并生成模型,降低学习曲线

在 SageMaker 上启用一个笔记本实例, DeepAR的示例笔记本在 Jupyter 的示例中可以找到:


点击 Use,进入示例笔记本:

图6 SageMaker 中使用 DeepAR

使用内置算法DeepAR,我们需要设置容器的名称 forecasting-deepar:

图7 设置容器名称

数据预处理,按照文档中的数据格式要求进行数据预处理,设置时间序列的跨度,预测跨度,起始终止时间,并切分训练和测试数据集:

图8 数据预处理

SageMaker 中使用的是封装好的 DeepAR 模型容器,我们只需要在笔记本中指定相关的命令参数和训练参数,就可以开始训练。相面给出了一个示例定义:

图9 训练参数定义

模型训练完成后,可以定义预测方法类,并一步调用 API 执行部署:

图10 定义推理方式并部署

这样我们就训练好了一个 DeepAR 用于预测电力供应的模型,可以在笔记本中继续尝试去预测接下来的几组数据并与历史数据进行比对。我们在实际使用SageMaker的过程中,可以先简单跑一遍示例代码,再逐步替换其中的数据、和改写数据预处理的代码。当您对相关代码掌握后,可以尝试独立来编写其他流程的代码,自定义在每一个步骤中实现业务的需求。

最后,我希望通过这篇博客能够给您一些时间序列预测的指导,DeepAR 作为时间序列预测中一个亮点十足的算法,能够帮助您短时间内取得不错的准确率Amazon Forecast 和 Amazon SageMaker 都能在不同阶段给到您支持。

关于作者


王元恺:负责基于AWS的云计算方案的架构设计,同时致力于AWS云服务在国内和全球的应用和推广。毕业于上海交通大学,毕业后直接加入AWS中国。对前沿技术如计算机视觉自然语言处理及其应用有着深入的研究与热情。在大规模全球同服游戏、Serverless无服务器架构以及人工智能等领域有着广泛的设计与实践经验。



Amazon SageMaker 1000元大礼包

现在,企业开发者可以免费领取 1000 元服务抵扣券,轻松上手Amazon SageMaker,除了本文介绍的内容外,还有更多应用实例等你体验。

扫描二维码,立即领取。

工程时间序列预测
1
相关数据
Amazon机构

亚马逊(英语:Amazon.com Inc.,NASDAQ:AMZN)是一家总部位于美国西雅图的跨国电子商务企业,业务起始于线上书店,不久之后商品走向多元化。目前是全球最大的互联网线上零售商之一,也是美国《财富》杂志2016年评选的全球最大500家公司的排行榜中的第44名。

https://www.amazon.com/
相关技术
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

学习曲线技术

在机器学习领域,学习曲线通常是表现学习准确率随着训练次数/时长/数据量的增长而变化的曲线

概率分布技术

概率分布(probability distribution)或简称分布,是概率论的一个概念。广义地,它指称随机变量的概率性质--当我们说概率空间中的两个随机变量具有同样的分布(或同分布)时,我们是无法用概率来区别它们的。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

云计算技术

云计算(英语:cloud computing),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

生成模型技术

在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。 它给观测值和标注数据序列指定一个联合概率分布。 在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。

协变量技术

协变量:在实验的设计中,协变量是一个独立变量(解释变量),不为实验者所操纵,但仍影响实验结果。 协变量(covariate)在心理学、行为科学中,是指与因变量有线性相关并在探讨自变量与因变量关系时通过统计技术加以控制的变量。常用的协变量包括因变量的前测分数、人口统计学指标以及与因变量明显不同的个人特征等。

遗忘门技术

LSTM或GRU中特有的机制

时间序列预测技术

时间序列预测法其实是一种回归预测方法,属于定量预测,其基本原理是;一方面承认事物发展的延续性,运用过去时间序列的数据进行统计分析,推测出事物的发展趋势;另一方面充分考虑到偶然因素影响而产生的随机性,为了消除随机波动的影响,利用历史数据进行统计分析,并对数据进行适当处理,进行趋势预测。

Jupyter技术

Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等 。

时序预测技术

时序预测(时间序列预测)是预测时间序列未来值(以及不确定性的边界)的任务。

用户画像技术

用户画像(persona)的概念最早由交互设计之父Alan Cooper提出:“Personas are a concrete representation of target users.” 是指真实用户的虚拟代表,是建立在一系列属性数据之上的目标用户模型。

暂无评论
暂无评论~