时间序列预测可以被构造为一个监督学习问题。通过对时间序列数据的重构,可以针对不同问题使用相关的机器学习算法。本文介绍了如何将时间序列问题重新构造为机器学习中的监督学习问题。
在实际应用过程中,基本上都使用监督学习来解决问题。监督学习:指有输入变量(X)和输出变量(y),使用一种算法来学习从输入到输出的映射函数关系。
Y = f ( X ) Y = f(X) Y=f(X)
之所以被称为监督学习是因为使用的数据是有标签的;算法不断迭代对训练数据进行预测,通过预测标签与真实标签的对比,来更新修正模型参数,以最小化定义的损失函数。当算法达到可接受的性能水平时,学习停止。监督学习问题又可以进一步分为回归问题和分类问题。
时间序列数据可以转化为监督学习问题。给定时间序列数据集的一系列数字,通过重构数据,使其看起来像一个监督学习问题。可以使用前面的时间步(time steps)作为输入变量,下一个时间步作为输出变量。假设有一个时间序列,如下所示:
time, measure
1, 100
2, 110
3, 108
4, 115
5, 120
可以利用前一时间点的值来预测下一时间点的值,将这个时间序列数据集重构为一个监督学习问题。重构时间序列数据如下所示:
X, y
?, 100
100, 110
110, 108
108, 115
115, 120
120, ?
转换的数据集与原始时间序列有如下不同:
使用之前的时间点的值来预测下一个时间点的值骤称为滑动窗口方法(sliding window method),在一些文献中,也称为窗口方法(window method)。在统计学和时间序列分析中,称为滞后或滞后方法(lag method)。包含时间点的个数称为窗口宽度(window width)或延迟大小(size of the lag)。滑动窗口是将时间序列数据转换成监督学习问题的基础。对于上例,要注意:
在时间序列数据集中,根据特征的多少可以分为:
大多数时间序列分析方法,都关注单变量数据,因为它是最容易理解和使用的。多变量数据通常更难处理,因为它很难建模,而且许多经典方法往往表现不好。
对时间序列预测问题,传统的机器学习并不能很好的适用。这可能与复杂的单变量时间序列有关,更可能与多变量时间序列有关,因为它具有额外的复杂性。下面是将滑动窗口方法应用于多变量时间序列的另一个实例。假设有多元时间序列数据集,每个时间步有2个观测值:mesure1、mesure2;假设只关心measure2:
time, measure1, measure2
1, 0.2, 88
2, 0.5, 89
3, 0.7, 87
4, 0.4, 88
5, 1.0, 90
可以将这个时间序列数据集重构为一个窗口宽度为1的有监督学习问题,这意味着要使用measure1和measure2的上一个时间点的值,还有measure1的下一个时间点的值,然后预测measure2的下一个时间点的值,因此也就转化成了有3个输入特征和1个预测输出的监督学习问题:
X1, X2, X3, y
?, ?, 0.2, 88
0.2, 88, 0.5, 89
0.5, 89, 0.7, 87
0.7, 87, 0.4, 88
0.4, 88, 1.0, 90
1.0, 90, ?, ?
像上面的单变量时间序列示例一样,在训练时,需要删除第一行和最后一行。那如果要预测下一个时间点的measure1和measure2呢?在这种情况下,也可以使用滑动窗口方法。使用上面相同的时间序列数据集,在该问题中,以相同的窗口宽度预测measure1和measure2,如下所示:
X1, X2, y1, y2
?, ?, 0.2, 88
0.2, 88, 0.5, 89
0.5, 89, 0.7, 87
0.7, 87, 0.4, 88
0.4, 88, 1.0, 90
1.0, 90, ?, ?
并不是所有的监督学习方法都能在不修改的情况下处理多个输出值的预测,但是一些方法,比如人工神经网络,却没有什么问题。我们可以把预测一个以上的值看作是预测一个序列。在本例中,我们预测了两个不同的输出变量,但是我们可能希望在一个输出变量之前预测多个时间步长。这称为多步预测。
预测的时间步长是很重要的。同样,根据预测所需的时间步数不同,可以将问题划分为:
之前提到的示例都是单步预测。有多种方法可以将多步预测建模为有监督的学习问题。接下来,我们利用滑动窗口方法构建多步预测。考虑相同的单变量时间序列数据集:
time, measure
1, 100
2, 110
3, 108
4, 115
5, 120
将该时间序列构建为两步预测数据集,窗口宽度为1,如下所示:
X1, y1, y2
?, 100, 110
100, 110, 108
110, 108, 115
108, 115, 120
115, 120, ?
120, ?, ?
针对不同的业务需求,需要仔细考虑并进行实验,以找到一个能够获得可接受模型性能的窗口宽度。
调参时的你 ↑
参考:
https://machinelearningmastery.com/convert-time-series-supervised-learning-problem-python/