非平稳序列
图5 平稳序列和非平稳序列平稳性检验结果比对(观察法和单位根法)
观察图5的平稳序列可以发现,该序列的自相关图和偏自相关图都是围绕坐标轴上下浮动,存在拖尾现象,其单位根检验统计量为-4.175107明显小于其3个置信度的临界统计值(-3.439740,-2.865684,-2.568977),且P-value为0.000726,接近0,可以拒绝原假设,即该序列不存在单位根,判断是平稳序列。而图5右侧图中,自相关图并未围绕坐标轴上下浮动,且其单位根检验统计量为-3.313199,比99%概率下的临界统计-3.439740值大,且P-value没有明显接近0,不能拒绝原假设,即该序列存在单位根,判断是非平稳序列。
平稳序列可以直接开始建模,如果是非平稳的序列,可以通过差分的方式将其先转化为平稳序列,再进行建模。
ARMA模型建模时通过自相关图和偏自相关图进行模型选型和定阶,其规则如表1所示。
AR(p) | MA(q) | ARMA(p,q) | |
自相关图 | 拖尾 | Q步截尾 | 拖尾(p步收敛) |
偏自相关图 | P步截尾 | 拖尾 | 拖尾(q步收敛) |
表1 ARMA模型选型和定阶规则
选型确定后的定阶可以根据模型的AIC/BIC准则确定,能够弥补自相关图和偏自相关图定阶的主观性。AIC准则全称最小化信息量准则,是衡量统计模型拟合优良性的一种标准,建立在熵的概念上,可以权衡所估计模型的复杂度和此模型拟合数据的优良性。BIC准则是贝叶斯信息准则,在AIC准则的基础上有所改进,AIC和BIC的值都是越小越好。
ARMA模型参数确定后就可以使用时间序列数据进行训练。训练结束后可以对残差进行白噪声检验,来判断所建模型是否提取了原数据的足够信息,白噪声检验也可以借助自相关图和偏自相关图来判断,观察各期滞后是否还有显著的自相关性和偏自相关性。
由于ARMA模型是单变量时间序列模型,一次只能对一个重点区域进行建模,总共997个重点区域,需要为每个区域单独建模,共需建立模型997个,且每个序列的平稳性都不确定,需要单独进行检验,过程比较繁琐。部分区域预测结果如图6所示。
图6 部分区域ARMA模型预测结果
3.2、机器学习模型XGBoost建模流程
XGBoost是一个优化的分布式梯度增强库,旨在实现高效,灵活和便携。它在Gradient Boosting框架下实现机器学习算法。XGBoost提供了并行树提升(也称为GBDT,GBM),可以快速准确地解决许多数据科学问题。使用XGBoost模型处理时间序列预测类问题,需要将其转换成回归问题再进行构建,其具体建模流程如下图所示。
图7 XGBoost模型建模流程图
使用机器学习类的模型进行时间序列预测,不需要进行平稳性检验,直接对训练数据进行相关预处理即可,包括查重、查缺、清洗错误等。
由于需要转换成回归问题,机器学习类模型往往需要通过特征工程,从单一的时序特征中构造适合回归模型的特征集,再基于特征集而非时序特征本身进行模型的训练。一般来说可以提取时间截面特征、统计特征、滑窗特征等,也可以借助一些特征提取工具,例如tsfresh工具包等,将一维时序特征转换成多维截面特征。
训练数据和测试数据都需要通过特征工程提取出特征集,然后把训练特征集输入XGBoost模型,进行训练。这一过程中可以通过调节参数来提高模型的准确率,降低过拟合。
XGBoost模型的调参相对比较复杂,包括三大类参数:通用参数、booster参数以及学习目标参数。通用参数控制在提升(boosting)过程中使用哪种booster,常用的booster有树模型(tree)和线性模型(linear model)。Booster 参数具体取决于使用哪种booster。学习目标参数用于控制学习的场景,例如在回归问题中会使用不同的参数控制排序。除了以上参数还可能有其它参数,在命令行中使用。XGBoost模型的调参通过交叉验证函数CV来实现,通过遍历参数设定值找到最优的迭代次数等。
XGBoost模型的优化主要通过是特征工程和模型调参的迭代来实现,这是一个相对复杂并且需要技巧和时间的过程,需要在实践中摸索经验。
XGBoost模型的构建不需要区分区域,只需把区域当作一维特征输入模型即可,可以进行整体建模。使用XGBoost模型预测部分区域的结果如图8所示。