近年来, 我国经济的高速增长促使着人们追求更高的生活品质, 人们的航空出行需求迅速增长, 给机场带来了不小的压力. 机场的旅客吞吐量是民用机场的主要生产指标, 旅客流量是机场对资源进行高效配置的依据, 是机场进行决策的基本前提. 因此, 客流量的预测对机场的管理和建设有很大的参考意义.
传统的机场客流量预测多为基于线性假设的模型. 如陈玉宝等[1]以首都机场为例采用组合预测方法对旅客吞吐量进行预测. 俞佳立等[2]运用指数平滑法与灰色预测法两者的组合预测模型对管道货运量进行预测分析. 刘夏等[3]基于三亚机场2008–2016年的月度客流量数据, 运用ARMA模型、灰色预测模型、ARMA改进回归模型对客流预测及数据仿真. 由于线性模型对机场流量预测的局限性(交通流量因自由流、阻塞、故障和恢复情况等频繁变化而具有非线性特征), 上述模型的性能和应用都受到限制. 近年来学者们开发出各种机器学习与深度学习的模型应用于交通流预测. 钟颖等[4]把极端样度上升(XGBoost)模型用于路段短时交通流的预测. 周燎等[5]用期望最大化(EM)算法从交通流数据中学习出贝叶斯动态线性模型(DLM)的关键参数, 对下一时刻的车流量进行预测. 朱征宇等[6]建立了支持向量机与卡尔曼滤波组合模型,并将该模型应用于短时交通流量预测. 衡红军等[7]用动态回归ARIMAX模型, 对航站楼内短时段的值机旅客人数进行预测. Ma等[8]将递归神经用于交通速度预测的网络(RNN). Polson和Sokolov[9]提出了一种深度学习架构来捕捉非线性时空效应. Huang等[10]提出了一个由深度信任网络(DBN)和一个多任务回归层组成的预测短期交通流的体系结构.
本文提出的是一种基于注意机制的编码-解码结构时序预测模型(Temporal Attention-based Encoder-Decoder model, TAED), 把基于注意机制的融合双向长短时记忆网络编码-解码模型应用到机场客流量预测. 由于深度神经网络在长时间尺度的预测中存在着淹没前期输入信号的缺点, 因此, 在设计深度学习预测方法时引入注意力机制, 使模型能够根据不同时期输入信号对于输出结果的贡献强度分配不同的关注度, 从而使模型具备处理大时间尺度序列的能力. 同时对于标准的编码解码模型对时间序列数据的特征提取能力弱的问题, 引入了Bi-LSTM, 使模型能够对数据特征进行充分学习, 捕捉不同时间段的隐含特征. 此外, 时间序列数据的多步前向预测比单步预测困难, 而序列-序列学习结构可以很好地解决这一问题. 由于上述优势, TAED模型相对于经典LSTM模型能够更好的捕捉时间序列中的隐含特征, 并且对于前期输入信号有更好的记忆力, 因而具有更好的预测效果.
1 基于时间注意机制的编码解码模型 1.1 本文框架本文提出的基于注意机制的多变量时间序列多步预测框架(如图1). 该框架由Bi-LSTM、LSTM和基于时间注意机制的上下文层3部分组成. Bi-LSTM用于学习任意长度的输入数据的隐藏表示, 从时间序列中提取出深层的时间依赖特征, 然后利用时间注意层构造潜在的空间变量(时间注意上下文向量). LSTM解码器根据生成的潜在空间变量, 对未来的时间序列值进行预测. 图1给出了该框架的图解, 该框架可以端到端对时间序列数据建模.
1.2 编码解码结构
LSTM是一种处理具有时间序列特征数据的长期学习模型[11]. 典型的LSTM包括5个部分:
${i_t} = \sigma ({U^{(i)}}{x_t} + {W^{\left( i \right)}}{h_{t - 1}} + {b_i})$ | (1) |
${f_t} = \sigma ({U^{(f)}}{x_t} + {W^{\left( f \right)}}{h_{t - 1}} + {b_f})$ | (2) |
${o_t} = \sigma ({U^{(o)}}{x_t} + {W^{\left( o \right)}}{h_{t - 1}} + {b_o})$ | (3) |
${\tilde s_t} = \tanh ({U^{(c)}}{x_t} + {W^{\left( c \right)}}{h_{t - 1}} + {b_c})$ | (4) |
${s_t} = {f_t} \odot {s_{t - 1}} + {i_t} \odot {\tilde s_t}$ | (5) |
${h_t} = {o_t} \odot \tanh ({s_t})$ | (6) |
式中, 对于输入的时间序列值在
但传统的LSTM有一个缺点, 它只能学习时间序列数据的前一个上下文, 不能学习同一序列数据的前向上下文. 所以我们用Bi-LSTM作为编码器, 可以同时处理两个不同方向的数据互连的隐藏层: 单向进程使用从
${\vec i_t} = \sigma ({\vec U^{(i)}}{\vec x_t} + {\vec W^{\left( i \right)}}{\vec h_{t - 1}} + {\vec b_i})$ | (7) |
${\vec f_t} = \sigma ({\vec U^{(f)}}{\vec x_t} + {\vec W^{\left( f \right)}}{\vec h_{t - 1}} + {\vec b_f})$ | (8) |
${\vec o_t} = \sigma ({\vec U^{(o)}}{\vec x_t} + {\vec W^{\left( o \right)}}{\vec h_{t - 1}} + {\vec b_o})$ | (9) |
${\overrightarrow {\widetilde {{s_t}}} } = \tanh ({\vec U^{(c)}}{\vec x_t} + {\vec W^{\left( c \right)}}{\vec h_{t - 1}} + {\vec b_c})$ | (10) |
${\vec s_t} = {\vec f_t} \odot {\vec s_{t - 1}} + {\vec i_t} \odot {\overrightarrow {\widetilde {{s_t}}} }$ | (11) |
${\vec h_t} = {\vec o_t} \odot \tanh ({\vec s_t})$ | (12) |
${\overleftarrow{i} _t} = \sigma ({\overleftarrow{U} ^{(i)}}{\overleftarrow{x} _t} + {\overleftarrow{W} ^{\left( i \right)}}{\overleftarrow{h} _{t - 1}} + {\overleftarrow{b} _i})$ | (13) |
${\overleftarrow{f} _t} = \sigma ({\overleftarrow{U} ^{(f)}}{\overleftarrow{x} _t} + {\overleftarrow{W} ^{\left( f \right)}}{\overleftarrow{h} _{t - 1}} + {\overleftarrow{b} _f})$ | (14) |
${\overleftarrow{o} _t} = \sigma ({\overleftarrow{U} ^{(o)}}{\overleftarrow{x} _t} + {\overleftarrow{W} ^{\left( o \right)}}{\overleftarrow{h} _{t - 1}} + {\overleftarrow{b} _o})$ | (15) |
${\overleftarrow{\tilde s} _t} = \tanh ({\overleftarrow{U} ^{(c)}}{\overleftarrow{x} _t} + {\overleftarrow{W} ^{\left( c \right)}}{\overleftarrow{h} _{t - 1}} + {\overleftarrow{b} _c})$ | (16) |
${\overleftarrow{s} _t} = {\overleftarrow{f} _t} \odot {\overleftarrow{s} _{t - 1}} + {\overleftarrow{i} _t} \odot {\overleftarrow{\tilde s} _t}$ | (17) |
${\overleftarrow{h} _t} = {\overleftarrow{o} _t} \odot \tanh ({\overleftarrow{s} _t})$ | (18) |
${h_t} = {\vec h_t} \circ {\overleftarrow{h} _t}$ | (19) |
其中, 箭头表示处理方向,
$p({f_1},{f_2},\cdots,{f_p}|{x_1},{x_2},\cdots,{x_T}) = \prod\limits_{t = 1}^p {p({f_t}|{C_T},{f_1},{f_2},\cdots,{f_{t - 1}})} $ | (20) |
其中,
标准的编码-解码器深度学习结构在编码时必须将所有编码隐含的过去时态信息压缩成一个固定长度的上下文向量
${e_{it}} = {v'}\tanh ({W_s}{s_{i - 1}} + {W_h}{h_t})$ | (21) |
${\alpha _{it}} = \frac{{\exp ({e_{it}})}}{{\displaystyle\sum\nolimits_{k = 1}^T {\exp ({e_{ik}})} }}$ | (22) |
${c_i} = \sum\limits_{t = 1}^T {{\alpha _{it}}{h_t}} $ | (23) |
${f_i} = g({y_{i - 1}},{c_i},{s_{i - 1}})$ | (24) |
其中, 式(21)表示解码器层的隐藏状态与编码器层的隐藏状态之间的软对齐计算. 式(22)表示与输入时间序列帧在时间步上的重要性相对应的注意权重, 用于预测在时间步上的输出值, 该方法使用Softmax函数对长度向量进行归一化, 作为输入时间序列上的注意掩码. 式(23)表示为编码层每一个时间步分配相应的权重. 式(24)表示模型解码后的输出值. 模型通过式(25)进行训练.
${e_t} = {\sum\limits_{t = 1}^T {\left\| {{x_t} - {f_t}} \right\|} ^2}$ | (25) |
数据源于中国民用航空华东地区管理局官网提供的真实生产运行数据, 选取上海虹桥机场2013–2020年每月客流量数据应用本文算法进行分析, 对其进行可视化, 如图2.
一般来说, 机场客流量的总体趋势受到地区经济发展和结构、人口因素及其构成、地面交通情况以及机场的布局和功能定位等多种因素的影响, 此外更小时间维度上又受季节、天气、大型活动(如节假日)等的影响. 观察图2可以发现, 虹桥机场客流量总体上随着年份呈上升趋势, 且每月的客流量随着季节的不同呈现出一定的周期性趋势, 在冬季客流量偏低.
本文所用样本的构造方法如图3. 首先将数据按照时间顺序进行排列, 然后进行归一化处理, 最后使用滑动窗口的形式进行样本划分. 其中, 输出数据(即标签
将所构造的样本划分为训练集与测试集, 样本详细描述见表1.
2.2 实验与结果分析
实验使用基于TensorFlow的Keras框架实现模型搭建, 并将其与标准RNN、LSTM分别在
为对模型进行评价, 实验采用平均绝对百分比误差 (MAPE) 与均方根误差作为指标 (RMSE), 其具体计算公式如下:
$MAPE = \frac{1}{n} \times \sum\limits_{t = 1}^n {\left| {\frac{{{P_t} - {R_t}}}{{{P_t}}}} \right|} \times 100{\text{%}} $ | (26) |
$RMSE = \sqrt {\frac{1}{n} \times \sum\limits_{t = 1}^n {{{({P_t} - {R_t})}^2}} } $ | (27) |
式中,
上述模型在3个数据集上进行实验, 测试结果如图4(a)–图4(c), 误差指标见表2.
通过对图4(a)–图4(c)对比可知: 由于数据集
机场客流量预测对于机场调度安排, 制定运行计划具有重要意义. 由于机场客流量数据具有强时序特征, 而传统方法如LSTM、RNN难以有效提取数据的时间依赖特征. 本文提出一种基于注意力机制的编码解码模型, 并对虹桥机场客流量数据进行仿真实验, 结果表明: 通过对编码解码模型引入注意力机制, 使得模型能够对历史数据特征进行充分提取, 从而在单步预测与多步预测上均表现出较高的精度. 虹桥机场客流量主要受到地区经济发展等各类因素的综合影响, 不同类型的机场客流量影响因素略有差异, 主要包括贸易、人口、资源、环境等, 但不同类型机场的历史数据特征是可以学习的, 因此本文方法对于不同类型的机场客流量预测具有普适性. 同时, 本文未考虑影响机场客流量的相关因素, 今后的工作中, 可以通过引入准点率等相关因素, 从更多维度对客流量进行预测.
[1] |
陈玉宝, 曾刚. 基于组合预测方法的民航旅客吞吐量预测研究—以首都机场为例. 中国民航大学学报, 2014, 32(2): 59-64. DOI:10.3969/j.issn.1674-5590.2014.02.013 |
[2] |
俞佳立, 钱芝网, 王涛. 基于组合预测模型的我国管道货运量的预测分析. 科技与经济, 2017, 30(1): 101-105. |
[3] |
刘夏, 陈磊, 邱钊, 等. 基于不同模型的机场客流量预测. 中国民航大学学报, 2018, 36(3): 31-36, 57. DOI:10.3969/j.issn.1674-5590.2018.03.007 |
[4] |
钟颖, 邵毅明, 吴文文, 等. 基于XGBoost的短时交通流预测模型. 科学技术与工程, 2019, 19(30): 337-342. DOI:10.3969/j.issn.1671-1815.2019.30.050 |
[5] |
周燎, 张武雄, 杨秀梅. 改进贝叶斯动态线性模型在车流量预测中的应用. 电子设计工程, 2018, 26(19): 1-5. DOI:10.3969/j.issn.1674-6236.2018.19.001 |
[6] |
朱征宇, 刘琳, 崔明. 一种结合SVM与卡尔曼滤波的短时交通流预测模型. 计算机科学, 2013, 40(10): 248-251, 278. DOI:10.3969/j.issn.1002-137X.2013.10.052 |
[7] |
衡红军, 任鹏. 基于时间序列的机场短时段值机客流量预测. 计算机仿真, 2020, 37(2): 26-32. DOI:10.3969/j.issn.1006-9348.2020.02.006 |
[8] |
Ma XL, Tao ZM, Wang YH, et al. Long short-term memory neural network for traffic speed prediction using remote microwave sensor data. Transportation Research Part C: Emerging Technologies, 2015, 54: 187-197. DOI:10.1016/j.trc.2015.03.014 |
[9] |
Polson NG, Sokolov VO. Deep learning for short-term traffic flow prediction. Transportation Research Part C: Emerging Technologies, 2017, 79: 1-17. DOI:10.1016/j.trc.2017.02.024 |
[10] |
Huang WH, Song GJ, Hong HK, et al. Deep architecture for traffic flow prediction: Deep belief networks with multitask learning. IEEE Transactions on Intelligent Transportation Systems, 2014, 15(5): 2191-2201. DOI:10.1109/TITS.2014.2311123 |
[11] |
Hochreiter S, Schmidhuber J. Long short-term memory. Neural Computation, 1997, 9(8): 1735-1780. DOI:10.1162/neco.1997.9.8.1735 |
[12] |
Cho K, Van Merriënboer B, Gülcehre C, et al. Learning phrase representations using RNN encoder-decoder for statistical machine translation. Proceedings of 2014 Conference on Empirical Methods in Natural Language Processing. Doha: Association for Computational Linguistics, 2014. 1724–1734.
|