焦朋朋,安 玉,2,白紫秀,林 坤,3
(1. 北京建筑大学 北京未来城市设计高精尖创新中心,北京 100044; 2. 北京市市政工程设计研究总院有限公司,北京 100082; 3. 福州市规划设计研究院集团有限公司,福建 福州 350000)
目前已有较多模型方法用于短时交通流预测,主要包括:基于统计分析的方法、非线性理论的方法、仿真的方法、人工智能领域的方法以及组合模型的方法。传统的基于时间序列的研究方法是利用差分自回归移动平均(ARIMA)[1]。随着交通流数据采集设备的升级和计算机计算能力的提升,应用神经网络等复杂的机器学习模型进行高精度的交通流预测成为可能,特别是基于循环神经网络的LSTM模型[2]在短时交通流预测中获得广泛应用。随着研究的深入,模型的预测精度逐渐提高,但模型复杂度也越来越高。
J.WANG等[3]假设在一个预测周期内,交通流仅与前几个周期的交通流相关,运用自回归综合移动平均、卡尔曼滤波和反向传播神经网络的方法,建立新的贝叶斯模型,达到了更好的预测结果;罗文慧等[4]结合卷积神经网络与支持向量回归分类器,达到精准且快速的短时交通流预测的目的;Y .TIAN等[5]针对检测器的缺陷导致的采样不规则和缺少数据的问题,提出了一种基于LSTM的方法,采用多尺度时平法来推断丢失的数据,得到较高预测精度的结果;S .CHENG 等[6]认为在交通流预测时只考虑指定时间段内相邻路段之间的相关性,很难取得稳定的结果,提出了自适应时空K近邻模型,根据自适应空间邻域、时间窗口、时空权重等参数,综合考虑城市交通的空间异质性;廖荣华等[7]使用改进邻近相点选取的混沌时间序列局域法对交通数据进行了分析预测并取得了较高的精度;康军等[8]对预测的不确定性进行定量分析,提出基于高斯过程回归的短时交通流预测方法,可得到预测值的方差估计值以及95%置信区间。
深度学习的兴起再度为交通流预测提供了新的思路。CNN和RNN及其衍生模型均在深度学习[9]中具有广泛的应用,并有突出的效果;王祥雪等[10]在深度学习的理论框架下,构建基于 LSTM-RNN的城市快速路短时交通流预测模型,利用交通流的时空相关性完成时间序列的重构;S .DENG等[11]利用交通流的时空流量关系构造二维图卷积神经网络,将时间序列分析问题转化为图像分析任务,预测结果得到较高的精度;S.GUO[12]针对空间和时间的关联性和异质性,提出3D 图卷积神经网络,捕获流量数据的相关性提高精度。但是,深度学习方法受参数选择影响较大,工作量大,计算时间长;Q. HOU等[13]考虑到交通流的周期性和变异性和单个预测模型的局限性,提出一种自适应的短时交通流混合预测模型,采用ARIMA和非线性小波神经网络(WNN)将两个模型输出进行模糊逻辑分析和组合,对交通流进行预测;与此同时,E. I .VLAHOGIANNI等[14]提出目前在短时交通流预测研究的探索之中,对于模型方法的选择要注重模型的解释力、方法的合理性、提高数据的质量、充分利用交通流数据的时间特性与空间相关性。当前大多数预测方法的主要问题是精度和计算量的矛盾,精度高的预测方法一般计算量大,计算量小的预测方法精度不高,如何在计算量和精度之间取得平衡是一个关键[15]。
针对交通流预测问题中模型复杂度与预测精度的矛盾,笔者提出采用集成学习思想的XGboost方法进行短时交通流预测。集成学习的思想是:一个弱可学习的问题经过多项式时间计算得到强可学习的问题。与神经网络模型[16-17]不同,为提升预测精度XGBoost集成多个CART决策树的弱学习器,每个弱学习器以上一步的预测残差作为逼近目标,加入正则项控制模型的复杂度以防止过拟合提高模型的泛化能力。XGboost方法具有可视化,适用于高维的样本的特点,适用于交通流变化影响因素较多的情况。
采集设备硬件问题、车辆故障、不当的驾驶行为等会造成设备采集到的原始数据出现缺失和错误。因此,为了较好的预测效果需要对原始数据进行适当的缺失数据补全。
流量数据存在异常的0值,占有率数据存在异常的100%,速度数据存在异常的大于80 km/h,此类异常数据类似椒盐噪声。椒盐噪声是数字信号处理与数字图像处理中常见的一种噪声,它是一种随机出现的白点或者黑点,对应交通流数据的异常极大值、极小值。
因此,选取常用的中值滤波预处理椒盐噪声,其特点是将信号中的每个值都替换为其邻域内的中值,即邻域内所有值排序后中间位置的值。中值滤波的优势是仍能保留交通流的变化趋势且减少数据噪声导致的极大值、极小值,对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不被模糊。
XGBoost的原理是构造多个弱学习器,第1个基学习器拟合样本数据,拟合的误差作为第2个基学习器的目标继续拟合,以此类推,最后把所有基学习器累加,类似统计学上的残差逼近,如式(1)。Boosting是减少偏置的模型组合方式,可以达到较高的预测精度。
(1)
从第t-1棵树到第t棵树目标函数为当前预测结果Ft-1(xi)+ft(xi)与yi之间的差距,增加正则化项,得到XGBoost的目标函数,如式(2):
(2)
式中:L[yi,Ft-1(xi)+ft(xi)]为真实值yi与近似函数Ft-1(xi)+ft(xi)的差距;Ω(ft)为正则项,表示树的复杂度,用来避免过拟合,如式(3):
(3)
式中:γ为对整棵树叶节点的正则,目的是用来控制叶节点的个数,削弱每颗树的权重,让后面的树有更大的学习空间;T为每棵树叶子节点数量;λ为控制叶节点维度的正则;ω为叶子节点列向量;ωj为叶子节点j的权值。
对L[yi,Ft-1(xi)+ft(xi)]使用二阶泰勒展开如式(4):
(4)
由于t-1轮的结果是已知的,可以不做考虑,简化后目标函数如式(5):
(5)
进一步将正则化项展开并合并,且从n个样本遍历改至从叶子节点j遍历,如式(6):
(6)
对式(6)求最小值可以得到ωj的最优值和损失函数最小值,如式(7) 、式(8):
(7)
(8)
式(8)可以看作对决策树不纯度的衡量,也是作为树节点分裂的依据,即衡量节点在分裂前后式(6)对应数值的大小用以判断是否需要继续分裂。
综上所述,XGBoost的建树过程、Boosting过程均是以目标函数为基础进行的,一切操作的衡量标准均是最小化目标函数,其采用的算法策略是贪心策略。由于引入了泰勒二阶展开,建树与Boosting的过程仅依赖于损失函数的一阶导数与二阶导数,因此可以支持自定义损失函数。XGBoost优势是将正则项加入到了目标函数中,保证了每次的迭代均对模型的复杂度进行了对冲,有效降低了过拟合发生的可能性,此外支持并行处理、近似算法等,可提高模型的计算效率。
交通流的基本参数直接反映路段的交通状态,笔者将路段的流量作为预测目标进行研究,路段流量是指在第n时段内,通过观测断面的所有车辆数的累计。路段平均速度和平均占有率分别为第n时段内,通过观测断面的所有车辆的平均值,其计算方式如式(9):
(9)
模型数据集的特征包括上下游断面流量、密度和时间占有率等参数,均以固定5 min时间周期进行计算。
为更好分析计算结果,笔者选择平均绝对误差(MAE)、均方误差(MSE)和决定系数(R2)作为模型的性能指标,如式(10)~式(12):
(10)
(11)
(12)
笔者利用XGBoost模型对路段流量进行预测。预测的基本思路是:提取断面过车数据,分析相邻上游断面上一时段的流量、速度及占有率数据,进行断面过车流量预测。具体步骤为:
步骤1将通过微波检测设备得到的海量过车数据,通过统计方法以一定的时间窗格对每个断面统计其过车流量、速度及占有率,构造多维时间序列。
步骤2对每个断面的数据进行中值滤波处理,补全缺失数据并适当降低数据的异常波动。
步骤3将滤波后数据划分为训练集和测试集,训练集输入XGBoost模型进行训练,使用交叉验证的方法调整超参数以建立最优的模型。
步骤4将测试集数据输入模型得到断面流量预测值,与其他短时交通流预测方法的预测值进行对比分析。
选取合肥市一段城市道路的过车数据,数据源自OpenITS的开源数据。合肥示范区位于经济技术开发区黄山路沿线,潮汐交通特征明显。示范区范围包括以下路段:黄山路、香樟大道、天柱路、科学大道、天智路和天湖路。示范区布设有微波交通流检测设备。微波检测数据包括编号、设备类型、设备编号、采集时间、时间占有率等多个字段信息,数据详情如表1。
表1 交通流原始数据统计内容汇总Table 1 Summary of statistical content of original traffic flow data
其中,设备编号DETECT_ID与路网交叉口的对应关系如图1,微波检测设备主要检测主路的4个车道,并实时返回交通流数据。其中,由于采集设备硬件问题、车辆故障、不当的驾驶行为等造成设备采集到的原始数据出现缺失和错误共占比3.7%,且异常数据不存在大段数据缺失问题。
图1 设备编号DETECT_ID的位置示意Fig. 1 Location diagram of device DETECT_ID
将原始数据处理成以5 min为周期的时间序列数据。使用python的pandas库对原始数据计算流量、速度、占有率的时间序列。以1号断面的qt流量数据为预测目标(根据交通流的空间相关性,模型输入选择1号、4号、7号、8号断面上一时段流量qt-1、速度Vt-1、占有率Ot-1数据。选择2016年7月1日—2016年7月5日数据作为训练数据,选择7月6日数据作为测试数据。
利用Scipy库中signal 对原始数据进行中值滤波平滑处理,处理前后时间序列数据对比如图2,可以看出滤波后异常值明显减少,更加能满足模型的需要。
图2 滤波前后数据对比Fig. 2 Data comparison before and after filtering
为判断模型的输入数据时间和1号、4号、7号、8号断面流量、速度、占有率数据之间的相关性,绘制相关系数热力图如图3(特征前数字为卡口编号)。可以看出由于断面间距较小,以5 min为周期的时间序列数据间相关性偏低,可以作为模型的输入。
图3 特征间的相关性Fig. 3 Correlation between features
模型参数是模型内部的配置变量,可以用样本数据估计它的取值,而模型超参数是模型外部的配置,其值不能从样本数据估计得到,需要针对目标问题通过反复试验确定其最优取值。
模型的复杂度受数据规模的影响,模型复杂、数据较少会导致过拟合,模型简单、数据较多会导致欠拟合,都会影响模型的预测效果。XGBoost有较多的超参数,这些超参数可以控制模型的规模,用来表征其复杂程度。
笔者采用交叉验证的方法,确定数据规模对应的模型复杂程度。利用Scikit-learn库包建立模型以及交叉验证,以损失函数为评价指标选择最优超参数取值。其中最小叶子节点权重与决策树最大深度的取值示意如图4。
图4 超参数最佳取值Fig. 4 Best value of super-parameter
除最小叶子节点权重与决策树最大深度外,XGBoost模型也支持正则化项、学习率、特征重采样和样本重采样等。模型利用交叉验证方法确定的超参数取值汇总如表2。
表2 超参数最佳取值汇总Table 2 Summary of super-parameter best value
特征重要度可以反映模型的预测值受其输入特征之间的映射关系,表征不同特征在预测时的重要程度,统计此模型的特征重要度如图5。
图5 特征重要度汇总Fig. 5 Summary of feature importance
从图5中可以看出各项特征均对预测模型造成一定影响,充分利用各项特征能达到提升预测精度的目的,反映出交通流时间序列的时间特性以及空间相关性对预测目标精度的重要性。
为评估中值滤波处理对原始数据的清洗效果,以及对比XGBoost与LSTM对交通流数据空间相关性和时间相关性的利用效果,评估XGBoost与其他交通流预测常用方法的预测水平。
汇总不同方法在是否中值滤波进行训练与预测后,性能指标情况与模型训练时间对比情况如表3。其中XGBoost累积交叉验证确定模型超参数以及训练过程的时间为40.57 s,而确定超参数取值后单次训练的时间仅为0.045 s。神经网络模型的超参数学习率默认为0.01,epochs为50,batch为144。LSTM模型前2层LSTM神经元维数为12、64;第3层全连接层维数64;GRU模型前2层LSTM神经元维数为12、64,第3层全连接层维数为64;SAEs模型隐含层全连接层,维数分别为12、400、400、400;ARIMA模型,自回归项p的取值为3,非季节性差异数d的取值为1,预测方程滞后预测q的取值为1。
根据表3结果分析如下:
1)对比表3中值滤波前后预测精度可以看出:中值滤波处理后原始数据的异常波动有明显降低,使LSTM的预测精度提升3.8%,使XGBoost的预测精度提升5.5%。
表3 滤波前后不同方法性能指标与训练时长对比Table 3 Comparison of performance indexes and training durationof different methods before and after filtering
2)对比XGBoost与其他短时交通流预测方法的训练时间可以看出,在预测精度水平相差不大情况下,XGBoost模型具有较高的计算速度,扣除因交叉验证确定超参数而花费的时间,即训练数据集确定后超参数也即确定,可认为文中模型训练时间相比神经网络模型速度快得多。
3)对比表3可以看出:神经网络相关模型能充分利用交通流数据的周期特性,反映出循环神经网络对时间周期性数据预测的优势。但在利用多个特征的交通流数据时,XGBoost更能充分利用断面上下游的空间相关性,精度比神经网络相关模型高一些,反映出XGBoost能充分利用各个特征的优势,更适用于解决交通流变化利用上下游数据提升预测精度的情况。
在短时交通流预测中,使用中值滤波处理缺失数据与异常数据,可以降低原始时间序列的异常波动,提高预测模型的精度。
相比神经网络模型,XGBoost模型较为简单,可以充分利用交通流的时间特性与空间相关性,将断面的上下游数据作为高维特征,可以达到较高的预测精度,尤其适用于交通流波动时充分利用上游交通流数据进行高精度的预测。
利用相邻4个断面6天的交通流数据进行训练与预测,可以适当反映出XGBoost模型适用于高维特征数据的优势,但未考虑到拥堵状态下下游断面排队车辆的蔓延对上游断面交通流的影响,后续可深入研究。