当前位置: 首 页 > 机器学习 >

如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程

来源:雷锋网 发布日期:2017-05-15

机器学习方法是可以用来解决时间序列预测问题的。...

如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程

雷锋网按:本文作者 Jason Brownlee 为澳大利亚知名机器学习专家,对时间序列预测尤有心得。原文发布于其博客。雷锋网编译。

如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程

 Jason Brownlee

机器学习方法,比如深度学习,是可以用来解决时间序列预测问题的。

但在使用机器学习之前,时间序列问题需要被转化为监督学习问题。从仅仅是一个序列,变成成对的输入、输出序列。

这篇教程里,你将学到如何把单变量、多变量时间序列问题转为机器学习算法能解决的监督学习问题。本教程包含:

  1. 如何创建把时间序列数据集转为监督学习数据集的函数;

  2. 如何让单变量时间序列数据适配机器学习

  3. 如何让多变量时间序列数据适配机器学习

现在我们开始。

时间序列 vs. 监督学习

正式开始前,我们需要更好地理解时间序列和监督学习的数据形式。时间序列是一组按照时间指数排序的数字序列,可被看成是一列有序的值。比如:

如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程

监督学习问题由输入(X)和输出(y)速成,其算法能学习如何根据输入模式预测输出模式。

比如:

如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程

Pandas shift() 函数

对于把时间序列数据转化为监督学习问题,这是一个关键的函数。

给定一个 DataFrame, shift() 函数可被用来创建数据列的副本,然后 push forward (NaN 值组成的行添加到前面)或者 pull back(NaN 值组成的行添加到末尾)。为了给时间序列数据集创建滞后观察(lag observation)列以及预测观察(forecast observation)列,并按照监督学习的格式来,这是必须的操作。

我们来看看一些 shift 函数的实操例子。

我们可以定义一个由 10 个数字序列组成的伪时间序列数据集,该例子中,DataFrame 中的单个一列如下所示:

如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程运行该例子,输出时间序列数据,每个观察要有对应的行指数。

如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程

我们通过在顶端插入新的一行,用一个时间步(time step)把所有的观察降档(shift down)。由于新的一行不含数据,可以用 NaN 来表示“无数据”。

Shift 函数能完成该任务。我们可以把处理过的列插入到原始序列旁边。

如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程

运行该例子,使数据集有了两列。第一列是原始观察,第二列是 shift 过新产生的列。

可看到,把序列向前 shift 一个时间步,产生了一个原始的监督学习问题,虽然  X 、y 的顺序不对。无视行标签的列。由于 NaN 值,第一行需要被抛弃。第二行第二列(输入 X)现实输入值是 0.0,第一列的值是 1 (输出 y)。

如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程

我们能看到,如果在 shift 2、3 ……重复该过程,要如何创建能用来预测输出值 y 的长输出序列(X)。

Shift 操作器可以接受一个负整数值。这起到了通过在末尾插入新的行,来拉起观察的作用。下面是例子:

如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程

运行该例子显示出,新的一列的最后一个值是一个 NaN 值。可以看到,预测列可被作为输入 X,第二行作为输出值  (y)。输入值 0 就可以用来预测输出值 1。

如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程

技术上,在时间序列预测术语里,当前时间是(t),未来是(t+1, t+n) 它们都是预测时间。过去的观察 (t-1, t-n) 被用来做预测。对于一个监督学习问题,在一个有输入、输出模式的时间序列里,我们可以看到如何用正负 shift 来生成新的 DataFrame 。

这不仅可用来解决经典的 X -> y 预测问题, 还可用到输入、输出都是序列的 X -> Y 上。

另外,shift 函数也在所谓的多元时间序列问题上有效。这种情况下,并不是时间序列不只有一组观察,而是多组(举个例子,气温和气压)。所有时间序列中的变量可被向前或向后 shift,来创建多元输入输出序列。更多详情下文会提到。

上一篇:快9倍!Facebook开源机器学习翻译项目fairseq
下一篇:让机器人互相学习:MIT科学家实现知识传输新方式

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 机器还是凶器?机器人"行凶"后,人机如何共

    机器还是凶器?机器人"行凶"后,人机如何共

  • 当 AI 邂逅艺术:机器写诗综述

    当 AI 邂逅艺术:机器写诗综述

  • 专访姚劲波:未来去家里服务的可能是机器人

    专访姚劲波:未来去家里服务的可能是机器人

  • Master以26胜0负完胜顶级围棋手:是AI还是柯

    Master以26胜0负完胜顶级围棋手:是AI还是柯