作者:Jason Brownlee
翻译:wwl
校对:王雨桐
本文约3300字,建议阅读10分钟
本文介绍了如何用XGBoost做时间序列预测,包括将时间序列转化为有监督学习的预测问题,使用前向验证来做模型评估,并给出了可操作的代码示例。
针对分类和回归问题,XGBoost是梯度提升算法的一种高效实现。
它兼顾了速度和效率,且在很多预测模型任务中表现优异,在数据科学比赛中广受赢家偏爱,如Kaggle。
XGBoost也可以用于时间序列预测,尽管要先把时间序列数据集转换成适用于有监督学习的形式。它还需要使用一种专门的技术来评估模型,称为前向推进验证,因为模型评估使用了k-折叠交叉,这会产生有正偏差的结果。
在本文中,你将会了解到如何开发应用于时间序列预测的XGBoost模型。
完成本教程后,你将知道:
XGBoost是用于分类和回归问题的梯度提升集成方法的一个实现。
通过使用滑动时间窗口表示,时间序列数据集可以适用于有监督学习。
在时间序列预测问题上,如何使用XGBoost模型进行拟合、评估、预测。
让我们开始吧!
教程概览
本教程分为三个部分,分别是:
一、XGBoost集成
二、时间序列数据准备
三、时间序列预测上的XGBoost
一、XGBoost集成
XGBoost是Extreme GradientBoosting的缩写,是一种高效的随机梯度提升的实现。
随机梯度提升算法(或者叫gradient boosting machines ortree boosting)是一种强大的机器学习技术,在很多有挑战的机器学习问题上,表现的非常好甚至是最好。
Tree boosting has been shown to give state-of-the-art results onmany standard classification benchmarks.
— XGBoost:A Scalable Tree Boosting System, 2016.
https://arxiv.org/abs/1603.02754
它是一个决策树算法的集成,其中新树可以对模型中已有树的结果进行修正。我们可以不断增加决策树,直到达到满意的效果。
XGBoost是随机梯度提升算法的一种高效实现,它可以通过一系列模型超参数在整个训练过程中控制模型。
The mostimportant factor behind the success of XGBoost is its scalability in allscenarios. The system runs more than ten times faster than existing popularsolutions on a single machine and scales to billions of examples in distributedor memory-limited settings.
— XGBoost: A Scalable TreeBoosting System, 2016.
https://arxiv.org/abs/1603.02754
XGBoost是为表格式数据集的分类和回归问题而设计的,也可以用于时间序列预测。
想获得更多有关GDBT和XGBoost实现,请看以下教程:
《机器学习中梯度提升算法的简要概括》
链接:https://machinelearningmastery.com/gentle-introduction-gradient-boosting-algorithm-machine-learning/
首先,XGBoost需要安装,你可以用pip安装,如下:
安装后,可以通过以下代码确认是否成功安装以及安装的版本:
执行以上代码,会看到如下的版本号,也有可能版本号更高:
虽然XGBoost库有自己的python接口,你也可以使用scikit-learn API中的XGBRegressor包装类。
模型的一个实例可以被实例化并像任何其他scikit-learn类一样用于模型评估。例如:
现在我