【XGBoost 时间序列预测】XGBoost做时间序列预测

XGBoost是用于分类和回归问题的梯度提升集成方法的一个实现。XGBoost是为表格式数据集的分类和回归问题而设计的,也可以用于时间序列预测。通过使用滑动时间窗口表示,时间序列数据集可以适用于有监督学习。下面我们一起来学习下:

1、xgboost安装:

pip install xgboost

也可以使用scikit-learn API中的XGBRegressor包装类

2、例子讲解

让我们用一个例子来具体学习。设想我们有这样一组时间序列数据:

time measure
1  100
2  110
3  108 
4  115
5  120

我们可以把这个时间序列数据集重新构造成一个有监督学习,用前一个时间步长的值来预测下一个时间步的值。通过这种方式重新组织时间序列数据集,数据将如下所示

x   y
?   100
100  110
110   108
108   115
115  120
120  ?

注意!我们去掉了时间列,并且有几行数据不能用于训练,如第一行和最后一行。

这种表示称为滑动窗口,因为输入和期望输出的窗口随着时间向前移动,为有监督学习模型创建新的“样本”。

可以用pandas库的shift()方法,按照给定的输入输出的长度,把时间序列数据转换为新框架。

我们可以使用此函数为XGBoost准备一个时间序列数据集。

from pandas import DataFrame
df = DataFrame()
df['t'] = [x for x in range(10)]
df['t-1'] = df['t'].shift(1)
print(df)

这个滑动窗口是我们如何将任何时间序列数据集转化为监督学习问题的基础。从这个简单的例子中,我们可以注意到一些事情:

我们可以看到如何将时间序列转换为实值或标记时间序列值的回归或分类监督学习问题。
我们可以看到,一旦以这种方式准备了时间序列数据集,那么只要保留行的顺序,就可以应用任何标准的线性和非线性机器学习算法。
我们可以看到如何增加宽度滑动窗口以包括更多先前的时间步长。
我们可以看到如何在具有多个值的时间序列(即所谓的多元时间序列)上使用滑动窗口方法。
我们将探讨滑动窗口的这些用法中的一些用途,首先从使用它来处理时间序列,每个时间步都有多个观察值,称为多元时间序列。

参考链接:

1、如何在Python中将时间序列转换为监督学习问题

2、时间序列预测作为监督学习

你可能感兴趣的:(数据科学--python)