吴丽娜 冯 迪 李忠虎
(中国民航信息网络股份有限公司 北京 101318 (民航旅客服务智能化应用技术重点实验室 北京 101318)
未来民航旅客量的变化趋势一直是民航业最受关注的课题,对未来民航旅客量预测的准确与否直接决定了民航业的收益。精准的近期旅客量的预测是民航收益管理员操作的开放舱位的基础,而中远期的民航旅客量预测为航空公司调整运力及航线网络提供有力的支持。本文旨在解决航线粒度的民航旅客量的中长期的预测。
受经济、政策、天气、季节、运力投放等多种因素的影响,民航旅客量预测的准确性受到限制,其预测难度也随之增加。现有旅客量预测常采用以下几类方法,一类是传统的时间序列预测方法,考虑了数据的时间特性,对时间序列曲线进行分析,综合考虑其趋势性和周期性特征,这些模型就被广泛地应用于各种时序预测问题中,并作了很多的改进[1-4],文献[5-6]采用三次指数平滑模型对铁路旅客量,城市交通流量进行了预测,这类时序方法考虑了时间序列的时序特点并对其建模预测。另一类是机器学习方法[7-10],如BP神经网络[7-8]和深度学习[9-10],这些方法对影响未来目标的数据进行特征提取,多角度描述对未来趋势变化的影响,并建立合理的模型。另外还有一些组合方法[11-13],对不同的问题,采用多个模型进行组合,并综合使用,能够获得不错的预测效果。以上方法都只考虑了数据的时间特性,而文献[14-16]将城市划分为区域网络,对深度卷积神经网络(DCNN)进行了改进,有效捕获了交通数据之间的空间依赖关系,并预测城市区域交通流量的变化趋势。
基于时间序列的方法能够捕捉数据的时间信息,而缺少数据的空间信息,而基于机器学习的方法,尤其是采用卷积神经网络的方法能够捕捉数据的空间信息。在民航旅客量预测的问题上,城市(机场)间的空间位置会影响民航旅客的出行路线,进而影响相关城市的旅客量,其空间连通信息会影响民航旅客量预测的准确性。因此本文采用卷积神经网络捕捉城市间的空间信息和近期时序信息,采用三次指数平滑模型建立民航旅客量时间序列的时间信息,获取时间序列的长期趋势和周期信息,最后采用全连接网络将上述两个模型的结果与外部因素进行融合,提高民航旅客量预测的准确性。
本文旨在解决在当前时间点下,利用已知的历史旅客量序列预测未来的旅客量值。问题定义如下,(Xk+1,Xk+2,…,Xk+n)=f(Xt|t=k,k-1,…,0),已知某航线t=0至t=k时刻的旅客量,预测t=k+1至k+n时刻的旅客量。在民航领域,某航线在一段时间内的旅客量构成一个时间序列的曲线,如图1所示。以2个航线在2019年1月至3月内按天的旅客量曲线为例,图1中横坐标为天,纵坐标为旅客量,可见不同航线的时间序列曲线其特点并不相同,趋势性和周期性表现也不一致。民航航线的旅客量序列不仅和时间有关,还和航线的起始到达城市的空间位置相关,一个航线的旅客量的增减会与和该航线相关的其他航线。以图2为例,对到达城市B的旅客量,由A到B的旅客量、A到C城市中转再到B的旅客量、D到B的旅客量组成,这三条航线的旅客量会相互影响,而对于从城市A出发的旅客量,由A到C、A经C中转到B、A直达到B、A到E的旅客量组成,城市A的旅客的出行计划会直接影响这几条航线的旅客量,其中一条航线的旅客量增加会导致其他航线的旅客量减少。因此,要提高航线级旅客量预测的准确性,时序关系和空间关系是建立模型的必要因素。
(a) 航线示例AA
(b) 航线示例BB图1 民航航线旅客量时序曲线图示例
图2 民航航线旅客流空间关系图
(1)
图3 算法总体框架
模型由三部分组成,图3所示的上面部分为所有航线在每个历史时刻的旅客量形成的该时刻的旅客量矩阵,每个历史时刻的旅客量矩阵按时间顺序组成了一个矩阵序列。算法构建两个卷积神经网络结构,一个以预测时刻最近邻的若干个旅客量矩阵为输入,建立邻近性信息的模型;一个以历史上相同周期的旅客量矩阵作为输入,建立周期性信息的模型。图3所示的中间部分为对各个航线分别建立旅客量的时间序列,采用三次指数平滑模型,对各个时间序列进行预测,所有航线的预测结果,仍是一个旅客量矩阵。图3所示的下面部分表示外部因素,包含日期特征和对应城市的天气特征,以上三部分的输出融合在一起进行训练。
本文算法设立两个多层卷积残差网络结构,和多个三次指数平滑模型,并将两个模型的结果与外部因素融合在一起,采用最小化预测值矩阵和真实值矩阵的均方误差来训练模型。
低层卷积网络可以获取航线网络的相邻的空间相关关系,多层卷积可以获取更远距离的空间关系。因此,为了对航线网络的空间关系建模,以不同时刻航线网络的旅客量矩阵作为输入,设计了多层卷积网络,如图3所示。假设当前时刻为t,预测未来t+k时刻的旅客量,本文设计了两组神经网络,一组以邻近预测时刻的旅客量序列(Xc)(0)=[Xt-m,…,Xt-1,Xt]为初始输入,建立邻近时间性质的卷积网络结构,时间跨度为m,一组截取相同周期的旅客量序列(Xp)(0)=[Xt+k-nT,…,Xt+k-2T,Xt+k-T],周期为T,跨度为n。
以邻近性质的卷积网络为例,其过程为(Xc)(c0)∈Rm×N×N为初始输入,通过卷积C1将(Xc)(c0)转换为(Xc)(c1)∈Rm×N×N,其计算过程如下,
(Xc)(c1)=f((Wc)(c1)*(Xc)(c0)+(bc)(c1))
(2)
式中:*表示卷积;(Wc)(c1)和(bc)(c1)是第一层卷积的参数,f(·)是激活函数,在这里使用线性修正单元ReLU函数,即f(x)=max(x,0)。为了保持卷积后的矩阵与输入矩阵大小相同,在下一层卷积的输入矩阵周围填补上零值。为了能够高效学习,并且保证模型预测的准确率不会随着神经网络学习的深度结构而降低,本算法的网络结在第一层卷积之后加入了L个残差单元,残差单元定义如下:
(Xc)(Rl+1)=(Xc)(Rl)+F((Xc)(Rl);(θc)(Rl))
l=1,2,…,L
(3)
式中:(Xc)(Rl)和(Xc)(Rl+1)分别表示第l个残差单元的输入和输出;F(·)表示残差映射;(θc)(Rl)表示第l个残差单元的参数。这里残差单元采用2个(ReLU+卷积)的组合结构。在残差单元之后,加入1个卷积单元,获得该部分的最终输出(Xc)(c2)。
同样方法可获得表示周期性质的卷积网络输出(Xp)(c2)。
将上述两个卷积结构的输出(Xc)(c2)和(Xp)(c2)进行融合,融合的计算公式如下:
(Xcp)(c2)=(Wc)∘ (Xc)(c2)+(Wp)∘ (Xp)(c2)
(4)
式中:∘ 表示哈马达乘积;Wc和Wp是学习参数。
时间序列数据一般有以下两个特点:一是趋势性,二是季节性。三次指数平滑算方法基于一次指数平滑和二次指数平滑算法,可以对同时含有趋势和季节性的时间序列进行预测。已知时间序列(X1,X2,…,Xt,…),一次指数平滑算法计算如下:
(5)
二次指数平滑计算公式如下:
(6)
预测第T期的数值的计算公式为:
(7)
三次指数平滑是在二次指数平滑的基础上再进行一次平滑,其计算公式如下:
(8)
预测第T期的数值的计算公式为:
(9)
三次指数平滑算法可以很好地保存时间序列数据的趋势和季节性信息,因此得到了广泛的研究。
(10)
本文算法定义损失函数为:
(11)
式中:θ表示上述模型中所有的学习参数;λ是正则化项系数。本文采用最小化上述损失函数来训练模型,获得所有学习参数的值。
本文采用的实验数据来源于中国航信2011年至2018年共8年的旅客量数据,本实验选取30个开通机场的城市,构成900个城市对,预测未来14天的旅客量,即预测时间长度k=14。实验中邻近性旅客量的天数m=14,周期T=7天,历史周期数量n=12。实验选取其中80%的数据作为训练数据集,20%的数据作为测试数据集。
本文算法中,卷积神经网络中第一个卷积和残差单元均采用32个卷积核,卷积核大小的范围为{2×2,3×3,4×4},残差单元的个数L的取值范围为(2,4,6,8)。实验中对上述参数组合分别进行训练,选取在测试集上性能最优的模型作为最终模型。实验中最终参数为卷积核大小是3×3,L=6。实验结果采用平均准确率Pavg来评估算法的准确性,定义如下:
(12)
实验对2019年的旅客量进行预测,比较了ARIMA方法、单独使用卷积神经网络、单独使用三次指数平滑,及本文算法的实验效果。图4所示为几个航线的不同预测天的平均预测误差率结果,图中横标是预测的未来14天,纵坐标是对应平均误差率结果,ARIMA表示ARIMA方法的预测结果,CNN表示卷积神经网络结构的预测结果,ES3表示三次指数平滑算法预测的结果。可以看出,ARIMA和三次指数平滑算法随着预测时间的增大,平均相对误差也随之增大,卷积神经网络结构的预测效果并不稳定,而本文提出的算法明显优于前两者,有效地提高了民航旅客量预测的准确性。
(a) 航线1 (b) 航线2
(c) 航线3 (d) 航线4图4 部分航线实验结果
本文针对民航旅客量预测问题,提出了基于空间关系的预测模型,采用卷积神经网络结构对民航航线网络的城市间的空间相关性进行建模,采用三次指数平滑模型对民航旅客量时间序列的趋势性和周期性进行建模,并加入天气特征和日期特征作为外部因素。实验结果表明,本文算法有效地提升了预测准确性。
但是影响民航旅客量变化的因素还有很多,比如突发事件、重大活动等,因此如何量化这些因素对旅客量的影响,并建立新的民航旅客量预测模型,是下一步的研究重点。