張銘梁,侯霞
(北京信息科技大學(xué) 計(jì)算機(jī)學(xué)院,北京 100101)
近年來(lái),隨著國(guó)民經(jīng)濟(jì)水平的提高,越來(lái)越多的人選擇乘坐飛機(jī)出行。然而,航班延誤現(xiàn)象廣泛存在,如果可以較為準(zhǔn)確地預(yù)測(cè)航班延誤區(qū)間,就能夠提高乘客的滿意度,為航空公司減少因航班延誤而造成的聲譽(yù)和經(jīng)濟(jì)損失。
目前國(guó)內(nèi)外已有一些航班延誤預(yù)測(cè)研究成果。Kalyani等[1]采用極端梯度提升(extreme gradient boosting,XGBoost)算法進(jìn)行預(yù)測(cè),所使用的數(shù)據(jù)集特征數(shù)量較少,數(shù)據(jù)預(yù)處理方式較為簡(jiǎn)單。Dou[2]采用支持類別特征的分類提升(categorical features gradient boosting,Cat-Boost)模型預(yù)測(cè)航班起飛延誤時(shí)間,預(yù)測(cè)效果優(yōu)于支持向量機(jī)模型(support vector machines,SVM),但是沒(méi)有考慮天氣和飛機(jī)型號(hào)等影響因素。徐海文等[3]采用了深度學(xué)習(xí)模型預(yù)測(cè)航班延誤情況,但是所選擇的天氣數(shù)據(jù)僅有出發(fā)地天氣,不包含目的地天氣情況,而且僅以延誤15 min為界限做二分類預(yù)測(cè)。Liu等[4]使用梯度提升樹(gradient boost decision tree,GBDT)分別進(jìn)行二分類、三分類以及四分類航班延誤預(yù)測(cè),但是由于數(shù)據(jù)不均衡,其多分類(三分類和四分類)預(yù)測(cè)效果較差。王慧等[5]采用深度神經(jīng)網(wǎng)絡(luò)(deep neural networks,DNN)模型預(yù)測(cè)航班是否延誤,但是以Relu作為激活函數(shù),會(huì)導(dǎo)致神經(jīng)元死亡和梯度消失問(wèn)題。宋捷等[6]同樣采用DNN模型預(yù)測(cè)航班延誤情況,但是數(shù)據(jù)集特征數(shù)量較少,數(shù)據(jù)處理方式較為簡(jiǎn)單,而且該模型對(duì)0~15 min區(qū)間的起飛延誤預(yù)測(cè)精度很低。如果可以提升對(duì)該延誤區(qū)間的預(yù)測(cè)精度,那么旅客就可以更加方便、準(zhǔn)確地規(guī)劃自己的行程。
為了解決上述臨界區(qū)間內(nèi)的起飛延誤預(yù)測(cè)準(zhǔn)確率較低且數(shù)據(jù)樣本小、維度低的問(wèn)題,本文基于國(guó)內(nèi)某大型機(jī)場(chǎng)數(shù)據(jù)集進(jìn)行研究,采用XGBoost進(jìn)行延誤與否的二分類預(yù)測(cè),基于二分類結(jié)果使用多層感知機(jī)(multilayer perceptron,MLP)進(jìn)行離港航班延誤時(shí)間區(qū)間的三分類預(yù)測(cè),并通過(guò)實(shí)驗(yàn)對(duì)算法預(yù)測(cè)效果進(jìn)行分析。
中國(guó)民航局在2016年發(fā)布的《民航航班正常統(tǒng)計(jì)辦法》中規(guī)定,超過(guò)預(yù)計(jì)離港時(shí)間15 min的航班被認(rèn)定為離港航班延誤,可見傳統(tǒng)意義上的航班延誤是一個(gè)二分類問(wèn)題。而如果能夠?qū)ρ诱`0~15 min區(qū)間進(jìn)行預(yù)測(cè),就可以讓乘客更好地規(guī)劃自己的時(shí)間。因此,本文將航班延誤定義為三分類問(wèn)題。二分類和三分類的定義如下。
定義1二分類情況下,設(shè)tplan為航班計(jì)劃離港時(shí)間,ttruly為航班實(shí)際離港時(shí)間,離港航班延誤程度D1用于表示離港航班是否延誤。
(1)
式中t=ttruly-tplan。
定義2三分類情況下,離港航班延誤程度D2定義如下:
(2)
式中t和定義1中的含義相同。
本文原始數(shù)據(jù)集包含國(guó)內(nèi)某大型機(jī)場(chǎng)2018年下半年、2019全年以及2020年上半年共30萬(wàn)條航班數(shù)據(jù)和926萬(wàn)條天氣數(shù)據(jù)。其中:航班數(shù)據(jù)包括機(jī)型、預(yù)計(jì)起飛時(shí)間、實(shí)際起飛時(shí)間、航班任務(wù)、目的站、跑道、備降航站、機(jī)場(chǎng)三字碼、開始值機(jī)時(shí)間等字段;天氣數(shù)據(jù)包括天氣發(fā)布時(shí)間、天氣類型、風(fēng)力風(fēng)向、空氣質(zhì)量等字段。
原始數(shù)據(jù)特征數(shù)量眾多,部分特征不會(huì)對(duì)最終預(yù)測(cè)結(jié)果產(chǎn)生正向影響,甚至?xí)蠓档皖A(yù)測(cè)準(zhǔn)確率。因此,人工篩選出航班起飛時(shí)間和到達(dá)時(shí)間、出發(fā)地和目的地天氣情況、機(jī)型等特征,結(jié)果如表1所示。
表1 特征選擇
表中,預(yù)計(jì)起飛年、預(yù)計(jì)起飛月、預(yù)計(jì)起飛日、預(yù)計(jì)起飛時(shí)是由預(yù)計(jì)起飛時(shí)間拆分得到的特征,預(yù)計(jì)到達(dá)年、預(yù)計(jì)到達(dá)月、預(yù)計(jì)到達(dá)日、預(yù)計(jì)到達(dá)時(shí)是由預(yù)計(jì)到達(dá)時(shí)間拆分得到的特征,拆分后時(shí)間特征可以被充分利用。
進(jìn)行特征篩選的目的是降低運(yùn)算維度,提高運(yùn)算效率。但是實(shí)際上,在現(xiàn)有特征中隱含了一些有用特征沒(méi)有顯示出來(lái),因此本文基于已有特征構(gòu)造了一些新特征。其中,起飛延誤程度、離港前序航班延誤時(shí)間和離港到港航班繁忙情況是對(duì)航班是否延誤影響較大的3個(gè)因素,雖然并沒(méi)有出現(xiàn)在原始數(shù)據(jù)集中,但是可以通過(guò)對(duì)相關(guān)數(shù)據(jù)的處理獲得。
1)起飛延誤程度。原始數(shù)據(jù)集中不包含起飛延誤時(shí)間,因此需要使用實(shí)際起飛時(shí)間減去計(jì)劃起飛時(shí)間計(jì)算出起飛延誤時(shí)間。再根據(jù)定義1和定義2,得出二分類和三分類情況下的起飛延誤程度。
2)離港前序航班延誤時(shí)間。民航飛機(jī)調(diào)度問(wèn)題不像公交車、出租車等一般民用資源,一旦航班飛行計(jì)劃發(fā)生變化,會(huì)產(chǎn)生比較明顯的后續(xù)影響。即,前序航班延誤會(huì)極大程度地影響離港航班起飛延誤情況。因此,將每架飛機(jī)的兩個(gè)前序航班的延誤時(shí)間作為新的特征引入。
3)離港到港航班繁忙情況。機(jī)場(chǎng)旅客吞吐量是民用機(jī)場(chǎng)的一個(gè)重要指標(biāo)。如果某一時(shí)間段的吞吐量逼近機(jī)場(chǎng)的吞吐量上限,即離港到港航班繁忙程度過(guò)高,那么這段時(shí)間航班的起飛延誤概率可能會(huì)比較大。因此,引入離港航班繁忙程度和到港航班繁忙程度兩個(gè)新特征,具體定義為:
(3)
(4)
式中:BA為每小時(shí)到港航班繁忙程度;BD為每小時(shí)離港航班繁忙程度;Nnum為每小時(shí)離港到港航班數(shù)量;Anum為每小時(shí)到港航班數(shù)量;Dnum為每小時(shí)離港航班數(shù)量。
本文使用XGBoost和MLP的集成方法,對(duì)離港航班延誤情況進(jìn)行預(yù)測(cè),具體流程如圖1所示。
圖1 本文方法流程
數(shù)據(jù)處理包括使用合成少數(shù)類過(guò)采樣技術(shù)(synthetic minority oversampling technique,SMOTE)進(jìn)行采樣,打亂數(shù)據(jù)順序(shuffle)和歸一化操作。
1)SMOTE操作。在航班運(yùn)營(yíng)時(shí),不延誤航班的架次遠(yuǎn)小于半延誤架次和延誤架次??紤]到數(shù)據(jù)類別不平衡帶來(lái)的影響,需要對(duì)數(shù)據(jù)進(jìn)行采樣。數(shù)據(jù)采樣分為過(guò)采樣和欠采樣。過(guò)采樣的思想是增加少數(shù)類別數(shù)據(jù)的數(shù)量,而欠采樣的思想是減少多數(shù)類別數(shù)據(jù)的數(shù)量。為了避免欠采樣丟失數(shù)據(jù)之間的隱含信息和使用隨機(jī)過(guò)采樣導(dǎo)致過(guò)擬合,本文采用SMOTE處理數(shù)據(jù)類別不均衡問(wèn)題。
首先,對(duì)少數(shù)類中的每一個(gè)樣本x,計(jì)算x到少數(shù)類樣本的歐氏距離,得到k近鄰。然后設(shè)置一個(gè)采樣比例Nrate,在k近鄰中選擇一個(gè)樣本xn,最后根據(jù)式(5)計(jì)算出新的樣本。
xnew=x+rand(0,1)×|x-xn|
(5)
式中:xnew是合成出來(lái)的新樣本;rand(0,1)函數(shù)的作用是產(chǎn)生一個(gè)0~1的隨機(jī)數(shù)。
2)Shuffle操作。由于大多數(shù)數(shù)據(jù)集基于時(shí)間排序,對(duì)后續(xù)拆分測(cè)試集和訓(xùn)練集會(huì)產(chǎn)生一定的影響,從而降低準(zhǔn)確率;因此,在拆分之前需要采用Shuffle操作將數(shù)據(jù)集打亂,避免對(duì)后續(xù)訓(xùn)練產(chǎn)生影響。
3)歸一化操作。由于大多數(shù)真實(shí)數(shù)據(jù)集中特征的量綱、值域不同,如果直接放入模型中進(jìn)行預(yù)測(cè),可能會(huì)大幅降低模型精度;因此,需要將所有數(shù)據(jù)映射到同一尺度,即數(shù)據(jù)歸一化。
XGBoost是對(duì)GBDT算法的一種改進(jìn),其模型可以表示為
(6)
XGBoost的目標(biāo)函數(shù)基于傳統(tǒng)的損失函數(shù),加入了模型復(fù)雜度作為懲罰項(xiàng)來(lái)防止模型過(guò)擬合,具體定義為
(7)
(8)
式中:γ和λ是需要人工設(shè)置的超參數(shù);T和w分別為決策樹各條路徑下預(yù)測(cè)的航班延誤類別總數(shù)和決策樹各條路徑下航班延誤類別的預(yù)測(cè)得分。
MLP是一種人工神經(jīng)網(wǎng)絡(luò),配合激活函數(shù)理論上可以擬合任何曲線,但是如果隱層數(shù)量、隱層單元數(shù)量等超參數(shù)選取不當(dāng),則會(huì)出現(xiàn)模型精度不高或者過(guò)擬合問(wèn)題。
本模型采用的elu激活函數(shù)如式(9)所示,求導(dǎo)之后的表達(dá)式如式(10)所示。elu激活函數(shù)求導(dǎo)之后可以得到x<0區(qū)間的輸出,不會(huì)像Relu激活函數(shù)一樣出現(xiàn)神經(jīng)元死亡和梯度消失等問(wèn)題,有利于反向傳播時(shí)修正權(quán)重和偏置的值。
(9)
(10)
本次實(shí)驗(yàn)使用的CPU型號(hào)為Ryzen5 3500U,內(nèi)存大小為16 GB,深度學(xué)習(xí)框架使用Tensorflow2.1。
經(jīng)過(guò)處理后的二分類訓(xùn)練數(shù)據(jù)為84 832條,測(cè)試數(shù)據(jù)為69 554條;處理后的三分類訓(xùn)練數(shù)據(jù)為87 191條,測(cè)試數(shù)據(jù)為13 911條。
實(shí)驗(yàn)中使用的MLP模型全連接層數(shù)為5層,每層的神經(jīng)元數(shù)量分別為32、16、16、8和4個(gè),均使用elu激活函數(shù);輸出層神經(jīng)元數(shù)量為3,采用Softmax激活函數(shù),如式(11)所示。一維空洞卷積的膨脹率設(shè)置為2。損失函數(shù)采用多分類交叉熵函數(shù),如式(12)所示。梯度下降優(yōu)化算法采用Adam算法。
(11)
(12)
式中:n為樣本數(shù);N為類別數(shù);yij表示第i個(gè)樣本類別是否等于j,若等于則yij取1,否則取0;pij為樣本i等于類別j對(duì)應(yīng)的預(yù)測(cè)概率。
1)曲線下面積(area under the curve,AUC),定義為
(13)
式中:M為正樣本數(shù)量;N為負(fù)樣本數(shù)量;PT為正樣本的預(yù)測(cè)概率;PF為負(fù)樣本的預(yù)測(cè)概率。由于本次實(shí)驗(yàn)討論的是三分類任務(wù),因此將一類視為正樣本,剩下的兩類合并起來(lái)視為負(fù)樣本,即計(jì)算每個(gè)類相對(duì)于其他類的AUC值。AUC取值范圍為[0,1],其值越大則說(shuō)明模型預(yù)測(cè)效果越好。I(PT,PF)的具體定義為
(14)
2)平均準(zhǔn)確率,定義為
(15)
式中:N為類別數(shù)量;Ai為每個(gè)類別的準(zhǔn)確率;i={不延誤,半延誤,延誤}。
使用同樣的數(shù)據(jù)集,對(duì)XGBoost三分類器、MLP三分類器、XGBoost二分類器+XGBoost三分類器、XGBoost二分類器+MLP三分類器(本文模型)、XGBoost二分類器+膨脹卷積+MLP三分類器共5種模型的預(yù)測(cè)效果進(jìn)行了對(duì)比,結(jié)果如表2所示。
表2 模型預(yù)測(cè)結(jié)果對(duì)比
從表2實(shí)驗(yàn)結(jié)果可以看出:本文模型的平均準(zhǔn)確率和半延誤準(zhǔn)確率明顯優(yōu)于其他4種模型;集成模型的AUC值明顯優(yōu)于非集成模型;XGBoost二分類器+XGBoost三分類器集成模型的半延誤準(zhǔn)確率比單獨(dú)使用XGBoost三分類器和單獨(dú)使用MLP三分類器分別降低了3.41%和4.42%,說(shuō)明不恰當(dāng)?shù)厥褂眉煞椒赡軙?huì)大幅降低半延誤預(yù)測(cè)的準(zhǔn)確率;XGBoost+膨脹卷積+MLP集成模型的半延誤準(zhǔn)確率較低,其AUC值也不如本文模型,說(shuō)明半延誤區(qū)間的特征對(duì)一維膨脹卷積操作不敏感,在本文模型中添加一維膨脹卷積進(jìn)行特征提取反而會(huì)對(duì)模型預(yù)測(cè)效果產(chǎn)生負(fù)面影響。
表3為集成模型在加入不同的人工構(gòu)造新特征后的半延誤準(zhǔn)確率對(duì)比。加入前序航班延誤時(shí)間特征后,本文模型半延誤準(zhǔn)確率提升了13.49%;在此基礎(chǔ)上再引入離港到港航班繁忙情況特征后,準(zhǔn)確率又提升了2.68%。這說(shuō)明,前序航班延誤時(shí)間特征和離港到港航班繁忙情況特征相結(jié)合可以有效提高半延誤區(qū)間預(yù)測(cè)的準(zhǔn)確率。在引入上述兩種新特征之后,將“年”和“月”特征合并成“年月”作為新特征引入,發(fā)現(xiàn):XGBoost二分類器+XGBoost三分類器的集成模型半延誤區(qū)間準(zhǔn)確率沒(méi)有明顯變化,原因是樹模型對(duì)此類日期特征簡(jiǎn)單拆分不敏感;但是本文模型半延誤區(qū)間準(zhǔn)確率大幅下降,說(shuō)明本文方法對(duì)此類日期特征的拆分較為敏感,而且日期特征拆分對(duì)半延誤區(qū)間預(yù)測(cè)準(zhǔn)確率起正向作用。
在對(duì)本文模型中的MLP部分調(diào)試訓(xùn)練輪數(shù)(Epoch)時(shí)發(fā)現(xiàn),半延誤區(qū)間預(yù)測(cè)準(zhǔn)確率會(huì)隨著訓(xùn)練輪數(shù)的過(guò)度增加出現(xiàn)過(guò)擬合現(xiàn)象,導(dǎo)致半延誤預(yù)測(cè)準(zhǔn)確率有較為明顯的下降。但是由于不延誤類別在原數(shù)據(jù)集中占比較少,很多數(shù)據(jù)是由少數(shù)類樣本合成技術(shù)生成的,因此不延誤的測(cè)試樣本和訓(xùn)練樣本在空間內(nèi)位置較為集中,使得模型在訓(xùn)練集上過(guò)擬合時(shí)恰好可以擬合大多數(shù)不延誤的測(cè)試樣本,提高不延誤準(zhǔn)確率。經(jīng)過(guò)調(diào)整,將本文模型的Epoch參數(shù)設(shè)置為15。
本文使用XGBoost與MLP相結(jié)合的方法預(yù)測(cè)航班延誤情況。先通過(guò)XGBoost模型將數(shù)據(jù)集打上二分類預(yù)測(cè)標(biāo)簽,然后使用MLP模型對(duì)包含標(biāo)簽的數(shù)據(jù)進(jìn)行三分類預(yù)測(cè)。相較于現(xiàn)在常見的單一模型,該方法預(yù)測(cè)效果更好,可以為民航、空管等部門提供決策支持。
未來(lái)可以考慮使用時(shí)間卷積網(wǎng)絡(luò)(temporal convolutionval network,TCN)模型對(duì)時(shí)間建模,更好地挖掘以時(shí)間為線索的隱含信息,提高模型準(zhǔn)確率。