赞
踩
XGBoost是梯度分类和回归问题的有效实现。
它既快速又高效,即使在各种预测建模任务上也表现出色,即使不是最好的,也能在数据科学竞赛的获胜者(例如Kaggle的获奖者)中广受青睐。
XGBoost也可以用于时间序列预测,尽管它要求将时间序列数据集首先转换为有监督的学习问题。它还需要使用一种专门的技术来评估模型,称为前向验证,因为使用k倍交叉验证对模型进行评估会导致乐观的结果。
在本教程中,您将发现如何开发XGBoost模型进行时间序列预测。完成本教程后,您将知道:
1、XGBoost是用于分类和回归的梯度提升集成算法的实现。
2、可以使用滑动窗口表示将时间序列数据集转换为监督学习。
3、如何使用XGBoost模型拟合,评估和进行预测,以进行时间序列预测。
教程概述
本教程分为三个部分:他们是:
1、XGBoost集成
2、时间序列数据准备
3、XGBoost用于时间序列预测
XGBoost集成
XGBoost是Extreme Gradient Boosting的缩写,是随机梯度提升机器学习算法的有效实现。随机梯度增强算法(也称为梯度增强机或树增强)是一种功能强大的机器学习技术,可在各种具有挑战性的机器学习问题上表现出色,甚至表现最佳。
它是决策树算法的集合,其中新树修复了那些已经属于模型的树的错误。将添加树,直到无法对模型进行进一步的改进为止。XGBoost提供了随机梯度提升算法的高效实现,并提供了一组模型超参数,这些参数旨在提供对模型训练过程的控制。
XGBoost设计用于表格数据集的分类和回归,尽管它可以用于时间序列预测。
首先,必须安装XGBoost库。您可以使用pip进行安装,如下所示:
sudo pip install xgboost
一旦安装,您可以通过运行以下代码来确认它已成功安装,并且您正在使用现代版本:
- # xgboost
- import xgboost
- print("xgboost", xgboost.__version__)
运行代码,您应该看到以下版本号或更高版本。
xgboost 1.0.1
尽管XGBoost库具有自己的Python API,但我们可以通过XGBRegressor包装器类将XGBoost模型与scikit-learn API结合使用。
可以实例化模型的实例,就像将其用于模型评估的任何其他scikit-learn类一样使用。例如:
- # define model
- model = XGBRegressor()
现在我们已经熟悉了XGBoost,下面让我们看一下如何为监督学习准备时间序列数据集。
时间序列数据准备
时间序列数据可以表述为监督学习。给定时间序列数据集的数字序列,我们可以将数据重组为看起来像监督学习的问题。我们可以通过使用以前的时间步长作为输入变量,并使用下一个时间步长作为输出变量来做到这一点。让我们通过一个例子来具体说明。假设我们有一个时间序列,如下所示:
- 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()
函数自动创建时间序列问题的新框架。
这将是一个有用的工具,因为它将允许我们使用机器学习算法探索时间序列问题的不同框架,以查看可能导致性能更好的模型。
下面的函数将一个时间序列作为具有一个或多个列的NumPy数组时间序列,并将其转换为具有指定数量的输入和输出的监督学习问题。
- # transform a time series dataset into a supervised learning dataset
- def series_to_superv
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。