雷锋网:本文作者Jason,是澳大利亚著名的机器学习专家,尤其擅长时间序列预测。最初发布在他的博客上。由雷锋网编译。
杰森
机器学习方法,如深度学习,可用于解决时间序列预测问题。
但在使用机器学习之前,需要将时间序列问题转化为监督学习问题。从只是一个序列到成对的输入和输出序列。
在本教程中,您将学习如何将单变量和多变量时间序列问题转换为机器学习算法可以解决的监督学习问题。本教程包含:
如何创建将时间序列数据集转换为监督学习数据集的函数;
如何使单变量时间序列数据适应机器学习
如何使多元时间序列数据适应机器学习
现在让我们开始吧。
时间序列与监督学习
在开始之前,我们需要更好地理解时间序列和数据形式的监督学习。时间序列是按时间索引排序的数字序列,可以被认为是值的有序列表。例如:
监督学习问题由输入 (X) 和输出 (y) 加速,其中算法学习如何根据输入模式预测输出模式。
例如:
移位()函数
这是将时间序列数据转换为监督学习问题的关键功能。
给定一个,shift()函数可用于创建数据列的副本,然后push(将NaN值的行添加到前面)或拉回(NaN值的行添加到末尾) )。为了以监督学习格式为时间序列数据集创建滞后观察 ( lag ) 和预测观察 ( ) 列,这是必要的。
让我们看一些 shift 函数的实际例子。
我们可以定义一个由 10 个数字序列组成的伪时间序列数据集,在这种情况下,单列如下:
运行该示例会为每个观察输出带有相应行索引的时间序列数据。
我们通过在顶部插入一个新行来将所有观察值向下移动一个时间步长。由于新行不包含数据,NaN 可以用来表示“没有数据”。
Shift 函数执行此操作。我们可以在原始序列旁边插入已处理的列。
运行示例,使数据集有两列。第一列是原始观测值,第二列是移动的新列。
可以看出,将序列向前移动一个时间步会产生一个原始的监督学习问题,尽管 X 和 y 的顺序不正确。忽略行标签的列。由于 NaN 值,需要丢弃第一行。第二行第二列(输入X)实际输入值为0.0,第一列值为1(输出y)。
我们可以看到,如果我们在 shift 2、3… 处重复该过程,我们可以创建一个长输出序列 (X),该序列可用于预测输出值 y。
Shift 运算符可以接受负整数值。这通过在末尾插入新行来充当上拉观察。这是一个例子:
运行示例显示新列的最后一个值是 NaN 值。如您所见,预测的列可以作为输入 Xpython 时间序列模型,第二行作为输出值 (y)。输入值 0 可用于预测输出值 1。
从技术上讲,在时间序列预测术语中,当前时间是 (t),未来是 (t+1, t+n),它们都是预测时间。过去的观察 (t-1, tn) 用于进行预测。对于监督学习问题,在具有输入和输出模式的时间序列中,我们可以看到如何使用正偏移和负偏移来生成新偏移。
这不仅可以用于解决经典的 X -> y 预测问题,还可以用于输入和输出都是序列的 X -> Y。
此外,移位函数对所谓的多变量时间序列问题也很有效。在这种情况下,时间序列并不是只有一组观测值,而是多组(例如,气温和气压)。所有时间序列中的变量都可以向前或向后移动,以创建多元输入-输出序列。更多细节将在下文提及。
功能
给定理想的输入和输出序列长度,我们可以使用此处的 shift() 函数自动生成时间序列问题的框架。
这是一个非常有用的工具。它帮助我们用机器学习算法探索同一时间序列问题的不同框架,找出哪个框架会产生更好的模型。在本节中,我们定义 () ,一个新函数。它可以将单变量和多变量时间序列转换为监督学习数据集。
该函数有四个参数:
该函数返回一个值:
新数据集被创建为一个,每列由变量字数和时间步长命名。这使开发人员能够为各种时间步长序列类型设计预测问题。
当它返回时,你可以决定如何将它的行划分为监督学习的 X 和 y 部分。在这里你可以做你想做的事。该函数是用默认参数定义的,所以如果你只是用你的数据调用它。它将创建一个带有 t-1 的 X 和一个带有 t 的 y。
此功能兼容2和3。完整功能如下,包括注释。
现在我们有了完整的功能,我们可以开始探索如何使用它。
一步单变量预测
在时间序列预测中,通常的做法是使用 t-1) 等滞后观测值作为输入变量来预测当前时间。这称为一步预测。以下示例显示了滞后时间步 (t-1)) 如何预测当前时间步 (t)。
运行示例以输出转换后的时间序列的输出。
如您所见,观察命名为“var1”,输入观察命名为 (t-1),输出时间步命名为 (t)。此外,您可以看到 NaN 值行已自动从 中删除。我们可以使用随机数长度的输入序列重复该示例,例如 3。这可以通过将输入序列的长度指定为参数来完成。例如:
数据 = (, 3)
完整的例子如下:
同样,运行示例会输出转换后的序列。您可以看到输入序列是正确的从左到右的顺序。输出变量在最右边预测。
多步预测或序列预测
还有另一种类型的预测问题,过去的观察被用来预测未来将要执行的序列。这可以称为序列预测或多步预测。通过确定另一个参数,我们可以将时间序列转换为序列预测。例如,我们可以将一个输入序列作为两个过去的观测值,来预测两个未来观测值的序列问题,并进行如下变换:
数据 = (, 2, 2)
完整的例子如下:
运行该示例显示了分别使用 (tn)、(t+n) 作为输入和输出变量以及当前观察值 (t) 作为输出之间的区别。
多元预测
另一种重要的时间序列类型称为多元时间序列。在这一点上,有多个不同的指标()的观察结果,以及我们对预测其中一个或多个指标的兴趣。例如,可能有两组时间序列观测值 obs1 和 obs2,我们想预测其中一个,或两者都预测。我们可以用同样的方式调用 ()。例如:
运行此示例会输出一个新的数据帧,显示两个变量在一个时间步的输入模式,以及两个变量在一个时间步的输出模式。
要看问题的具体内容。该列可以随机分为 X 和 Y 部分,例如,如果当前观察值 var1 也作为输入提供,则将仅预测 var2。
通过确定以上具体的输入输出序列长度,可以轻松完成多元时间序列的预测。下面是一个将一个时间步作为输入,两个时间步作为预测序列的转换示例。
运行示例将显示改造后的尺寸。
建议:尝试使用您自己的数据集并尝试几种不同的框架,看看哪个效果更好。
由浅入深,清华大学邓志东教授的神经网络训练!
本课程将系统介绍人工智能中的神经网络,特别是深度学习的发展现状、基本原理和主要方法。包括:人工智能概述、生物神经系统、人工神经元模型、BP网络、网络、深度卷积神经网络(CNN)、长短期记忆网络(LSTM)和深度强化学习等。重点分析几个典型的CNN模型,结合具体应用案例分析编程实践。
课程将补充最新科研成果和前沿领域的介绍(提供50余篇最具原创性和最新人工神经网络的代表性英文论文python 时间序列模型,包括2016年深度学习最新论文),强调应用解决实际问题的各种理论方法。综合应用。雷锋网推荐!
视频地址:
相关文章:
教你如何实现时间序列预测的特征选择
时间序列预测教程:如何使用预测波士顿武装抢劫的每月数量?
雷锋网版权文章,未经授权禁止转载。有关详细信息,请参阅重印说明。
文章来源:https://www.leiphone.com/news/201705/yN4omFbauq8CdSmU.html
感谢您的来访,获取更多精彩文章请收藏本站。

暂无评论内容