在许多行业中,准确预测未来序列的能力至关重要:财务,供应链和制造只是其中的几个例子。 几十年来,经典的时间序列技术已经完成了这项任务,但现在深度学习方法 – 类似于计算机视觉和自动翻译中使用的方法 – 具备彻底革新时间序列预测的潜力。
由于它们适用于许多现实问题 – 例如欺诈检测,垃圾邮件过滤,财务和医疗诊断——以及它们产生可操作结果的能力,近年来深度学习神经网络已经引起了很多关注。 一般来说,对于单变量时间序列预测场景(其中时间序列由在相等时间增量上顺序记录的单个观察量组成),深度学习方法已经被研发并投入应用。他们经常表现得比简单、经典的预测方法更糟糕的情况,经典方法包括指数平滑(ETS)和自回归整合移动平均(ARIMA)。 这导致了一种普遍的误解,即深度学习模型在时间序列预测场景中是无效的,并且许多数据科学家想知道是否真的有必要在他们的时间序列工具包中额外添加一类方法 – 例如卷积神经网络(CNN)或递归神经网络(RNN)。
在这篇文章中,我将讨论数据科学家在构建时间序列预测解决方案时,可能仍然需要考虑使用深度学习的一些实际原因。
深度学习神经网络:一些基本概念
机器学习的目标是为了找到特征,训练一个模型,该模型能将输入数据(例如图片,时间序列或音频)转换为给定输出(例如图片描述字母,价格,语音转录文本)。 深度学习是机器学习算法的一个子集,它学习通过将输入数据表示为向量并通过一系列巧妙的线性代数运算将它们转换为给定输出来提取特征。
然后,数据科学家使用称为损失函数的方程来评估输出是否符合预期。 该过程的目标是使用每个训练输入的损失函数的结果来指导模型提取特征,这些将在下一次计算中带来更低的损失函数值。
该过程已用于对大量信息进行聚类和分类——例如,数百万个卫星图像,来自YouTube的数千个视频和音频,来自Twitter的历史、文字和情绪数据等等。
深度学习神经网络有三个主要的内在功能:
1.他们可以学习从输入到输出的任意映射
2.它们支持多重输入和输出
3.它们可以自动提取贯穿长序列的输入数据中的模式
由于这三个特征,当数据科学家处理更复杂但仍然非常常见的问题(如时间序列预测)时,深度学习神经网络可以提供很多帮助。
以下是数据科学家应该考虑将深度学习添加到时间序列工具包中的三个原因。
理由#1:深度学习神经网络能够自动从原始数据和不完整数据中学习和提取特征
时间序列是一种衡量事物如何随时间变化的数据。 在时间序列中, 时间不仅是一种度量,而是主轴。 这个额外的维度代表着它既是时间序列数据的机会,也是约束,因为它提供了附加的信息源,但由于需要对数据进行专门处理,因此时间序列问题更具挑战性。 此外,这种时间结构可以携带数据科学家需要处理的其他信息,如趋势和季节性因素,以便使他们的时间序列更容易用任何类型的经典预测方法进行建模。
通过直接消除对大规模特征工程过程、数据尺度缩放过程的需求,以及通过差分使数据保持平稳性,神经网络可用于时间序列预测问题。
在现实世界的时间序列场景中——例如,天气预报,空气质量和交通流量预测,以及如地理传感器这种串流物联网设备的预测场景中, 不规则时间结构,缺失值,严重噪声和多个变量之间复杂的相互关系目前限制了经典预测方法的能力。 这些技术通常依赖于干净,完整的数据集以便很好地执行:缺失值,异常值和其他不完美的特征通常是不受模型支持的。
说到更多人工的和完美的数据集,经典预测方法基于这样的假设:数据集的变量之间存在线性关系,以及固定的时间依赖性,默认情况下,这种假设排除了探索更复杂的(有时是更有趣的)变量之间关系的机会。 数据科学家在为经典分析准备数据时必须做出主观判断 – 比如引入滞后时长,用于消除趋势 – 这种工作不仅耗时,并且在数据加工过程中引入了人类偏见。 相反,神经网络对输入数据和映射函数中的噪声具有鲁棒性,甚至可以支持在存在缺失值的情况下进行学习和预测。
卷积神经网络(CNN)是一类神经网络,已被证明在图像识别和分类等领域非常有效。 除了为机器人和自动驾驶汽车提供视觉能力外,CNN还成功识别了面部,物体和交通标志。 CNN的名字来自“卷积”运算符。 在CNN的情况下卷积的主要目的是从输入图像中提取特征。 卷积通过使用小方块输入数据学习图像特征来保持像素之间的空间关系。 换句话说,该模型学习如何从原始数据中自动提取对正在解决的问题直接有用的特征。 这被称为“表示学习”,并且CNN以这样的方式实现这一点:无论特征如何如何在数据中出现都能够被提取到,这些特征有所谓的“变换”或“扭曲”不变性。
CNN学习和自动从原始输入数据中提取特征的能力,可以应用于时间序列预测问题。 可以将一样本视为一维图像,CNN模型可以读取该一维图像并将其提炼出最相关的元素。 CNN的这种能力已被证明对时间序列分类任务有很大影响,例如使用无线传感器强度数据预测建筑物内主体的位置,和物体的室内运动预测。
理由2:深度学习支持多种输入和输出
在真实世界里,时间序列预测具有挑战性是由某几种原因引起的,例如具有多个输入变量,需要预测多个时间步骤,以及需要对多个实际的观测站执行相同类型的预测。 深度学习算法具备处理具有噪音的、复杂因果性的多个输入变量的能力,为应用于时间序列预测问题带来好处。 具体而言,神经网络可以配置为在映射函数中支持任意多但固定数量的输入和输出。 这意味着神经网络可以直接支持多变量输入,为多变量预测提供直接支持。 顾名思义,单变量时间序列是一个具有单个时变变量的数据序列。 例如,如果我们想要预测特定位置的下一个能耗值:在单变量时间序列场景中,我们的数据集将基于两个变量:时间值和历史能耗观测值。
多变量时间序列具有多个时变变量。 每个变量不仅取决于其过去的值,还取决于其他变量。 此依赖关系用于预测未来值。 让我们再考虑上面的例子。 现在假设我们的数据集包括天气数据,例如温度值,湿度,风速,云覆盖率百分比等,以及过去四年的能耗值。 在这种情况下,需要考虑多个变量来给出最佳预测能耗值。 像这样的系列属于多变量时间序列的范畴。
使用神经网络,可以指定任意数量的输出值,为需要多变量预测甚至多步预测方法的更复杂的时间序列场景提供直接支持。 使用深度学习方法进行多步预测有两种主要方法:1)直接法,其中开发了单独的模型来对每个目标给出多步提前预测 ; 2)递归法,其中开发单个模型以进行单步预测,并且递归地使用模型,其中先前预测被用作输入以预测随后的值。
递归方法在预测短时连续的未来数据是有意义的,而直接方法可能更适合预测连续未来或几天内不连续的未来值, 例如,空气污染预测问题是这样的,或者预期运输预测也属于这类情况,它预测客户的需求,然后自动对产品进行运输。
使用深度学习算法进行时间序列预测的关键是多输入数据的选择。 我们可以考虑三个主要的数据来源,它们可以用作输入并映射到目标变量的未来值,它们是:1)单变量数据,例如来自正在预测的目标变量的历史观察 2)多变量数据,例如来自其他变量的历史观测(例如,在空气污染预测问题的情况下的天气和预测目标变量); 3)元数据,例如关于预测的日期或时间的数据。 可以从所有数据块中提取数据,提供丰富的数据集,用于学习从输入到目标预测未来值的映射。
理由3:深度学习网络擅长提取跨越长序列输入数据中的模式
深度学习是一个活跃的研究领域,CNN并不是用于时间序列和顺序数据的唯一一类神经网络架构。 递归神经网络(RNN)是在20世纪80年代创建的,但最近越来越受欢迎,增加了GPU的计算能力。 它们对序列数据特别有用,因为每个神经元(Neuron)或单元(Unit)可以使用其内部存储器来维护有关先前输入的信息。 RNN具有循环结构,这种结构允许在读入数据时跨越神经元传送信息进行循环。
然而,简单的循环网络存在不能捕获序列中的长期依赖性的基本问题。 这是RNN在实践中褪色一段时间的主要原因,直到神经网络引入了长短时记忆(LSTM)单元实现了一些很好的结果才改变了现状。 将LSTM添加到网络就像添加一个可以从输入的最开始记住上下文的记忆单元。
LSTM神经网络是具有内部上下文状态单元的特定类型的RNN,其充当长期或短期记忆单元。 LSTM网络的输出由这些单元的状态调制。 当我们需要预测神经网络依赖于输入的全部历史上下文,而不是仅仅是依赖于前一时刻的输入时,LSTM这一特性变得非常重要。 这类神经网络提供了对序列型数据样本的原生支持。在数据中加入“序列”,给预测函数带来了新维度。 网络可以学到输入序列到输出的映射函数,而不是仅将输入数值映射到输出数值。 当我们需要了解LSTM网络如何工作时,视频处理的例子非常有效:在电影中,当前帧中发生的事情在很大程度上取决于前一帧中的内容。 在一段时间内,LSTM网络试图了解要保留什么信息,以及保持多少比例的现在/过去的信息,这使得它与其他类型的神经网络相比更加强大。
此功能可用于任何时间序列预测上下文,其中自动学习数据的时间依赖性非常有用。 在最简单的情况下,网络从序列中每次利用一个样本点,并且可以了解哪些先前样本点是重要的,以及它们如何与预测相关。 该模型既学习从输入到输出的映射,又从输入序列中学习哪些上下文对映射有用,并可根据需要动态更改上下文。 毫不奇怪,这种方法经常被用于金融行业,以建立一些预测汇率的模型,这些模型基于过去可能影响货币变动的数据表现和价格模式,能够用来预测未来的价格表现和模式。
另一方面,数据科学家也要注意这类神经网络方法存在的缺点。这类方法往往需要大量数据,模型需要超参数调整,还要经历多轮优化迭代。
结论
深度学习神经网络是强大的引擎,能够从输入到输出的任意映射中学习,支持多个输入和输出,并自动提取跨越长时序输入数据的模式。 当处理涉及大量数据的复杂时序列预问题、涉及复杂关系的多个变量,甚至是多步时间序列预测任务时,这组特性使神经网络成为非常有用的工具。 人们已经投入不少时间精力研究用神经网络进行时序预测,产出了还不错的结果。 对于时间序列预测应用深度学习方法最有希望的领域可能是使用CNN,LSTM和混合模型。
有用的资源
最近工具和技术的改进意味着深度学习等技术现在被用于解决常见问题,包括预测,文本挖掘,语言理解和个性化。 以下是一些涉及深度学习的有用资源和演示: