时间序列预测01:如何将时间序列预测转化为监督学习问题

时间序列预测可以被构造为一个监督学习问题。通过对时间序列数据的重构,可以针对不同问题使用相关的机器学习算法。本文介绍了如何将时间序列问题重新构造为机器学习中的监督学习问题。


【时间序列预测/分类】 全系列45篇由浅入深的博文汇总:传送门


文章目录

  • 【时间序列预测/分类】 全系列45篇由浅入深的博文汇总:[传送门](https://blog.csdn.net/weixin_39653948/article/details/105571760)
  • 1. 监督学习(Supervised Machine Learning)
  • 2. 滑动窗口(Sliding Window)
  • 3. 多变量滑动窗口
  • 4. 具有多个步骤的滑动窗口


1. 监督学习(Supervised Machine Learning)

在实际应用过程中,基本上都使用监督学习来解决问题。监督学习:指有输入变量(X)和输出变量(y),使用一种算法来学习从输入到输出的映射函数关系。
Y = f ( X ) Y = f(X) Y=f(X)

之所以被称为监督学习是因为使用的数据是有标签的;算法不断迭代对训练数据进行预测,通过预测标签与真实标签的对比,来更新修正模型参数,以最小化定义的损失函数。当算法达到可接受的性能水平时,学习停止。监督学习问题又可以进一步分为回归问题和分类问题。

  • 分类(Classification):常见的如手写数字识别、猫狗大战、鸢尾花识别、cifar-10…输出是离散的值;
  • 回归(Regression):常见的如房价预测、股票价格预测、发电量预测…输出是连续的值。

2. 滑动窗口(Sliding Window)

时间序列数据可以转化为监督学习问题。给定时间序列数据集的一系列数字,通过重构数据,使其看起来像一个监督学习问题。可以使用前面的时间步(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, 	?

转换的数据集与原始时间序列有如下不同:

  • 在监督学习问题中,上一个时间步是输入(X),下一个时间步是输出(y);
  • 观测值之间的顺序是保持不变的,并且在使用该数据集训练监督学习模型时也必须继续保持不变
  • 观察第一行,因为没有可以预测序列中第一个值的前一个值,所以将删除这一行,在训练时并不使用;
  • 观察最后一行,因为原时间序列中最后一个值的下一个值不知道,所以也将删除这一行,在训练时不使用。

使用之前的时间点的值来预测下一个时间点的值骤称为滑动窗口方法(sliding window method),在一些文献中,也称为窗口方法(window method)。在统计学和时间序列分析中,称为滞后或滞后方法(lag method)。包含时间点的个数称为窗口宽度(window width)延迟大小(size of the lag)。滑动窗口是将时间序列数据转换成监督学习问题的基础。对于上例,要注意:

  • 一旦以这种方式重构好了时间序列数据集,只要保留行的顺序,就可以应用任何标准的线性和非线性机器学习算法;
  • 针对不同的问题,可以尝试增加滑动窗口的宽度,以包括更多时间点的值;
  • 滑动窗口方法也可以用于具有多个变量(对于上例,可以理解为有多列不同特征Xi)的时间序列,即多变量时间序列预测问题;

3. 多变量滑动窗口

在时间序列数据集中,根据特征的多少可以分为:

  • 单变量时间序列(Univariate Time Series):这些数据集每次只观察到一个变量(特征),例如降雨量预测问题中,只通过湿度来预测。上节中的示例是单变量时间序列数据集。
  • 多变量时间序列(Multivariate Time Series):这些数据集每次观测两个或多个变量(feature)。例如通过温度、湿度、光照度、风速、风向、气压等特征来预测降雨量。

大多数时间序列分析方法,都关注单变量数据,因为它是最容易理解和使用的。多变量数据通常更难处理,因为它很难建模,而且许多经典方法往往表现不好。

对时间序列预测问题,传统的机器学习并不能很好的适用。这可能与复杂的单变量时间序列有关,更可能与多变量时间序列有关,因为它具有额外的复杂性。下面是将滑动窗口方法应用于多变量时间序列的另一个实例。假设有多元时间序列数据集,每个时间步有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,    ?,  ?

并不是所有的监督学习方法都能在不修改的情况下处理多个输出值的预测,但是一些方法,比如人工神经网络,却没有什么问题。我们可以把预测一个以上的值看作是预测一个序列。在本例中,我们预测了两个不同的输出变量,但是我们可能希望在一个输出变量之前预测多个时间步长。这称为多步预测

4. 具有多个步骤的滑动窗口

预测的时间步长是很重要的。同样,根据预测所需的时间步数不同,可以将问题划分为:

  • 单步预测(One-step Forecast):预测下一个时间步(t + 1)的值。
  • 多步预测(Multi-step Forecast):预测两个或两个以上时间步的值。

之前提到的示例都是单步预测。有多种方法可以将多步预测建模为有监督的学习问题。接下来,我们利用滑动窗口方法构建多步预测。考虑相同的单变量时间序列数据集:

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,   ?,  ?

针对不同的业务需求,需要仔细考虑并进行实验,以找到一个能够获得可接受模型性能的窗口宽度。
时间序列预测01:如何将时间序列预测转化为监督学习问题_第1张图片
调参时的你 ↑


参考:
https://machinelearningmastery.com/convert-time-series-supervised-learning-problem-python/

你可能感兴趣的:(时间序列处理(Time,Series),人工智能,机器学习,深度学习,时间序列预测,算法)