莊剛強(qiáng),王欣
(中國民用航空飛行學(xué)院計算機(jī)學(xué)院,廣漢 618307)
根據(jù)《2019 年全球機(jī)場&航空公司準(zhǔn)點(diǎn)率報告》顯示,2019 年中國大陸地區(qū)機(jī)場實(shí)際出港航班量達(dá)480.23 萬架次,出港延誤率達(dá)到了24.43%,起飛平均延誤時長達(dá)到28.11 分鐘,由于飛機(jī)延誤問題長期困擾著旅客,不正常航班也成為消費(fèi)者投訴最多的服務(wù)類型。查閱中國民航局“月度消費(fèi)者投訴通報”發(fā)現(xiàn),2019 年1-10 月份航空運(yùn)輸消費(fèi)者投訴類型中,排名前三位的分別為:不正常航班服務(wù)、票務(wù)服務(wù)和行李服務(wù),盡管不同月份投訴件數(shù)和占比有差別,但不正常航班服務(wù)的投訴比例始終在50%左右浮動。因此航班延誤預(yù)測可以對航班動態(tài)的掌握,提前做好相關(guān)應(yīng)急措施,從而減少不利影響。
在目前航班延誤研究分析中,文獻(xiàn)[1]結(jié)合航班數(shù)據(jù)的特點(diǎn)構(gòu)建了基于C4.5 決策樹的航班延誤預(yù)測模型,對國內(nèi)某大型機(jī)場的真實(shí)數(shù)據(jù)集,該研究設(shè)計了大量實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明所提模型正確率接近80%。文獻(xiàn)[2,3]采用支持向量機(jī)回歸方法建立航班到港延誤預(yù)測模型,實(shí)驗(yàn)結(jié)果表明,能夠有效預(yù)測航班延誤。文獻(xiàn)[4]從某個樞紐機(jī)場航班延誤出發(fā),對其關(guān)聯(lián)機(jī)場的銜接航班的延誤影響進(jìn)行分析,提出了基于貝葉斯網(wǎng)絡(luò)的航班延誤傳播模型,實(shí)驗(yàn)表明所提出的方法能有效地分析航班延誤從局部到全局的傳播。文獻(xiàn)[5]針對航班延誤預(yù)測數(shù)據(jù)量大、特征提取困難而傳統(tǒng)算法處理能力有限的問題,提出一種基于雙通道卷積神經(jīng)網(wǎng)絡(luò)(DCNN)的航班延誤預(yù)測模型,實(shí)驗(yàn)結(jié)果表明準(zhǔn)確率達(dá)到92.1%。文獻(xiàn)[6]考慮對機(jī)場中長期航班延誤的預(yù)測需求,以時間序列預(yù)測算法為基礎(chǔ),選擇建立ARIMA模型,實(shí)驗(yàn)結(jié)果表明,模型對機(jī)場中長期航班延誤預(yù)測有良好的效果。文獻(xiàn)[7]介紹了一種新的多層輸入層神經(jīng)網(wǎng)絡(luò)算法,該方法應(yīng)用于預(yù)測在肯尼迪機(jī)場延誤的航班,與傳統(tǒng)的梯度下降反向傳播神經(jīng)網(wǎng)絡(luò)模型進(jìn)行了比較,所提出的模型在預(yù)測誤差(均方根誤差)和訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型所需的時間方面都優(yōu)于傳統(tǒng)的反向傳播方法。
在本次研究中,選擇極限梯度提升算法XGBoost來進(jìn)行航班延誤預(yù)測,基于樹模型的XGBoost 在訓(xùn)練樣本有限、訓(xùn)練時間短、調(diào)參具有獨(dú)特優(yōu)勢。在代價函數(shù)中加入了正則項(xiàng),用于控制模型的復(fù)雜度;支持并行處理和支持用戶自定義目標(biāo)函數(shù)和評估函數(shù),靈活性高;具有缺失值自動處理能力;內(nèi)置交叉驗(yàn)證,可以很方便的獲取最優(yōu)迭代次數(shù)。相比于近年流行的神經(jīng)網(wǎng)絡(luò)能夠更好的處理表格數(shù)據(jù),并具有更強(qiáng)的可解釋性,另外具有易于調(diào)參、輸入數(shù)據(jù)不變等優(yōu)勢。本文首先介紹了XGBoost 算法,然后基于該算法構(gòu)建了航班延誤預(yù)測模型,對模型所用到的實(shí)驗(yàn)數(shù)據(jù)集進(jìn)行預(yù)處理和特征工程。實(shí)驗(yàn)分析部分,為了實(shí)現(xiàn)對原XGBoost模型的改進(jìn),通過網(wǎng)格搜索與交叉驗(yàn)證相結(jié)合的方法實(shí)現(xiàn)模型的參數(shù)優(yōu)化。實(shí)驗(yàn)結(jié)果表明,與GBDT 與隨機(jī)森林兩種預(yù)測模型相比,XGBoost 模型預(yù)測更加準(zhǔn)確,擬合優(yōu)度更好,可以為航班延誤預(yù)測研究提供有價值的參考。
XGBoost 全名叫(eXtreme Gradient Boosting)極端梯度提升,是對梯度提升算法的改進(jìn)。對于XGBoost的預(yù)測模型可以表示為:

其中K 為樹的總個數(shù),fk表示第k 顆樹,表示樣本xi的預(yù)測結(jié)果。
XGBoost 是實(shí)現(xiàn)了模型表現(xiàn)和運(yùn)算速度的平衡算法,它引入了模型的復(fù)雜度來衡量算法的運(yùn)算效率,以此來防止模型過擬合。XGBoost 的目標(biāo)函數(shù)被寫作:傳統(tǒng)的損失函數(shù)+模型復(fù)雜度。

其中i 代表數(shù)據(jù)集中的第i 個樣本,m 表示導(dǎo)入第k 棵樹的數(shù)據(jù)總量,K 表示建立的所有樹的數(shù)目,式子中第一項(xiàng)代表傳統(tǒng)的損失函數(shù),衡量真實(shí)標(biāo)簽yi與預(yù)測值之間的差異,通常是調(diào)節(jié)后的均方誤差RMSE。第二項(xiàng)代表模型的復(fù)雜度,使用樹模型的某種變換Ω 表示,這個變化代表了一個從樹模型的結(jié)構(gòu)來衡量樹模型的復(fù)雜度式子,可以表示如下所示。

其中γ和λ為人工設(shè)置的參數(shù),T 為葉子總數(shù),w為葉子節(jié)點(diǎn)的分值為 w 的 L2 模平方。
航班延誤預(yù)測的大致流程首先對數(shù)據(jù)進(jìn)行預(yù)處理,采用嵌入法對特征進(jìn)行選擇,剔除對模型預(yù)測準(zhǔn)確度用無用的特征,將選擇之后的數(shù)據(jù)集作為最終模型的輸入數(shù)據(jù)集,對數(shù)據(jù)集進(jìn)行劃分為訓(xùn)練集和測試集兩部分,采用網(wǎng)格搜索與交叉驗(yàn)證相結(jié)合的方法實(shí)現(xiàn)模型的參數(shù)優(yōu)化得到最優(yōu)參數(shù)值組合,使用XGBoost算法對訓(xùn)練集進(jìn)行訓(xùn)練生成模型再用測試集進(jìn)行預(yù)測,具體流程如圖1 所示。

圖1 基于XGBoost的航班延誤預(yù)測流程
目前航班延誤的主要原因有4 種:一是由于天氣,自然災(zāi)害等不可抗拒的原因造成的,往往每年的七八月份是航班延誤的高發(fā)季節(jié);二是空管部門為了保證航空安全,采取航班流量控制;三是由于航空公司自身原因造成的;四是由于旅客原因,比如遲到之類。以上這四大原因中,惡劣的氣象條件造成航班延誤的占70%;空中交通管制造成航班延誤的占15%;由旅客自身原因造成航班延誤的占5%;由航空公司本身原因造成的航班延誤占10%左右。
本文研究所用的數(shù)據(jù)是所有數(shù)據(jù)文件均從OST 網(wǎng)站下載,該網(wǎng)站存儲了1987 年至今的航班準(zhǔn)點(diǎn)數(shù)據(jù),本文選取了2018 年一整年的美國航班數(shù)據(jù)作為實(shí)驗(yàn),由于數(shù)據(jù)量過于龐大,篩選了其中由亞特蘭哈茲菲爾德-杰克遜機(jī)場(ATL)為出發(fā)機(jī)場,芝加哥奧黑爾際機(jī)場(ORD)、肯尼迪際機(jī)場(JFK)、洛杉磯際機(jī)場(LAX)、舊金山際機(jī)場(SFO)、西雅圖際機(jī)場或西雅圖∕塔科馬機(jī)場(SEA)為目的地的樣本數(shù)據(jù)23665 條,每條樣本包含了航班日期、航空公司代碼、出發(fā)及目的機(jī)場代碼、計劃出港時間、實(shí)際出港時間、起始機(jī)場距離、計劃到港時間、實(shí)際到港時間等27 個特征。考慮到月份為天氣影響的重要特征,對于航班日期的文本數(shù)據(jù)拆分并轉(zhuǎn)換為年月日的數(shù)值型。
(1)缺失值處理
通過檢查數(shù)據(jù)發(fā)現(xiàn)包含缺失值為計劃進(jìn)出港時間與實(shí)際進(jìn)出港時間相等時,進(jìn)出港延時為空值缺失,因此采用0 填補(bǔ)缺失值,進(jìn)港滑行時間的空值采用中位數(shù)填補(bǔ)。對于其他含有缺失值的樣本,由于占比非常少便直接刪除含有空值的樣本。
(2)數(shù)據(jù)編碼及轉(zhuǎn)換
對于航空公司代碼等非數(shù)值型的數(shù)據(jù)需要進(jìn)行編碼,本次樣本中包含了15 個航空公司,其中有些是廉價航空,不同的航空公司的延誤率是不一樣的,往往廉價航空的延誤率較高。因此航空公司的代碼有序變量需要進(jìn)行編碼,于是將航空公司的延誤率按從小到大的順序進(jìn)行排列,并將樣本中的航空公司代碼替換為1到15 即可。
特征選擇有助于我們發(fā)現(xiàn)感興趣的輸出結(jié)果的特征,如果特征中包含有無關(guān)的特征屬性,就會降低算法的準(zhǔn)確度。嵌入法是一種讓算法決定使用那些特征的方法,即特征選擇和算法訓(xùn)練同時進(jìn)行。先使用XGBoost 模型進(jìn)行訓(xùn)練后,得到各個特征的權(quán)值系數(shù),而權(quán)值系數(shù)往往代表了特征對于模型的某種貢獻(xiàn)程度或者重要性,XGBoost 算法中feature_importance 屬性可以列出各個特征的對樹建立的貢獻(xiàn),在sklearn 中使用SelectFromModel 方法設(shè)定閾值參數(shù),對于低于該閾值的特征則認(rèn)為該特征不重要,本次實(shí)驗(yàn)設(shè)置的閾值為0.0009,最后選擇的特征如表1 所示。
XGBoost 算法是通過在數(shù)據(jù)上構(gòu)建多個弱評估器,然后匯總所有弱評估器的建模結(jié)果的集成算法,算法模型中有多種超參數(shù),為了找到最佳的參數(shù)組合采用了網(wǎng)格搜索交叉驗(yàn)證的方法。網(wǎng)格搜索是指定參數(shù)的一種窮舉搜索方法,將各個參數(shù)可能的取值進(jìn)行排列組合,列出所有可能的組合結(jié)果,然后將各組合用于XGBoost 訓(xùn)練,并使用交叉驗(yàn)證對表現(xiàn)進(jìn)行評估[8]。在擬合函數(shù)嘗試了所有的參數(shù)組合后,返回一個合適的分類器,自動調(diào)整至最佳參數(shù)組合,通過best_params_獲得參數(shù)值。首先根據(jù)網(wǎng)格搜索的原理,將需要的超參數(shù)值設(shè)定區(qū)間范圍,然后不斷地訓(xùn)練模型,通過評分函數(shù)對每個超參數(shù)值進(jìn)行打分并選擇得分最高的參數(shù)值,最后得到所有最優(yōu)參數(shù)組合。在scikit-learn 中使用GridSearchCV 來實(shí)現(xiàn)對參數(shù)的調(diào)整與評估,從而得到最優(yōu)參數(shù)如表2 所示。

表1 特征字段解釋說明

表2 最優(yōu)參數(shù)值
將處理后的數(shù)據(jù)樣本劃分為70%為訓(xùn)練樣本集,30%劃分為測試樣本集。使用構(gòu)建的模型對訓(xùn)練樣本集進(jìn)行訓(xùn)練,對測試集進(jìn)行預(yù)測得到R-Squared 為0.9805106,平均絕對誤差為4.09 分鐘,均方根誤差為6.77 分鐘。得到最后真實(shí)值與預(yù)測值的對比如圖2所示。

圖2 基于XGBoost的航班延誤預(yù)測
最后采用相同的樣本數(shù)據(jù)集使用了GBDT 算法、隨機(jī)森林算法預(yù)測,并通過R-Squared、平均絕對誤差(MAE)以及均方根誤差(RMSE)與本文的XGBoost 算法進(jìn)行對比如表3。其中R-Squared 越接近1,代表預(yù)測值越接近真實(shí)值;MAE 值能更好地反映預(yù)測值誤差的實(shí)際情況,RMSE 是用來衡量觀測值同真實(shí)值之間的偏差。結(jié)果顯示本文的XGBoost 算法模型的RMSE 為6.77 最小,說明XGBoost 預(yù)測值偏差最小,預(yù)測精度最高。

表3 算法結(jié)果的對比
本文提出了基于XGBoost 集成算法的航班延誤預(yù)測模型,首先分析了航班延誤預(yù)測的影響因素,對美國的亞特蘭哈茲菲爾德-杰克遜機(jī)場(ATL)飛往芝加哥奧黑爾際機(jī)場(ORD)等五大國際機(jī)場2018 年全年的航班數(shù)據(jù)進(jìn)行預(yù)處理和特征工程,采用網(wǎng)格搜索與交叉驗(yàn)證相結(jié)合的方法實(shí)現(xiàn)模型的參數(shù)優(yōu)化,通過隨機(jī)抽樣把數(shù)據(jù)分為訓(xùn)練集與測試集,最后在測試集上進(jìn)行預(yù)測,結(jié)果顯示R-Squared 為0.9805106,平均絕對誤差(MAE)為 4.09 分鐘,均方根誤差(RMSE)為 6.77分鐘。相比于GBDT、隨機(jī)森林算法,改進(jìn)的XGBoost算法在R-Squared、MAE、RMSE 指標(biāo)方面均優(yōu)于比較算法,表現(xiàn)出較高的預(yù)測精度。考慮到對航班延誤的影響因素眾多,本文的模型還有較大優(yōu)化空間,例如對于數(shù)據(jù)集中加入天氣的詳細(xì)數(shù)據(jù),法定節(jié)假日信息等特征以及增加航班數(shù)據(jù)樣本量來進(jìn)一步提高算法模型預(yù)測精度。