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