李任坤,何元清
(中國民用航空飛行學(xué)院計算機(jī)學(xué)院,廣漢 618307)
《2020年上半年全球機(jī)場和航空公司準(zhǔn)點率報告》指出,因新冠肺炎疫情席卷全球,各機(jī)場航班量較之以前呈現(xiàn)大幅縮減,2020年上半年各大機(jī)場實際排班航班量約970萬架次,同比下降46.63%。準(zhǔn)點率排名前三的國家依次是日本、中國和俄羅斯,分別為91.64%、88.36%和87.85%。航班延誤問題不僅打亂乘客的時間規(guī)劃,給公司帶來許多負(fù)面影響,還會影響后續(xù)的航班時間規(guī)劃。所以對航班延誤時間進(jìn)行預(yù)測可以預(yù)告機(jī)場和乘客提前采取相應(yīng)措施以減少或者避免后續(xù)影響,從而盡可能的減少航班延誤所帶來的損失。
目前在航班延誤預(yù)測領(lǐng)域,國內(nèi)外研究人員已進(jìn)行了深入探索。文獻(xiàn)[1]以XGBoost回歸算法為切入點,利用數(shù)據(jù)清洗加網(wǎng)格搜索結(jié)合交叉驗證的方法實現(xiàn)航班延誤預(yù)測模型的優(yōu)化。文獻(xiàn)[2]詳細(xì)介紹了GBDT模型的來源,該算法核心是通過學(xué)習(xí)之前決策樹的殘差來擬合當(dāng)前決策樹。文獻(xiàn)[3]介紹了一種新興的深度機(jī)器學(xué)習(xí)優(yōu)化算法,極限梯度提升(XGBoost)算法能適應(yīng)復(fù)雜的非線性關(guān)系,模型具有更佳的并行計算能力,能夠有效地解決過擬合問題。文獻(xiàn)[4]提出一種基于XGBoost模型升級的LightGBM模型,利用leaf-wise分裂策略,對已有的葉子結(jié)點進(jìn)行對比,從中選擇分類收益最大節(jié)點完成分裂,極大減少了模型的訓(xùn)練時間。文獻(xiàn)[5]使用了一種新型的Boosting算法CatBoost,創(chuàng)新性地在數(shù)據(jù)挖掘過程中選擇IV值分析進(jìn)行特征選擇,有效去除了冗余特征。
本次實驗通過分析BST網(wǎng)站上公開的航班數(shù)據(jù),利用CatBoost算法對比不同特征對航班的影響程度,選擇對航班延誤影響因素較高的特征用以精準(zhǔn)預(yù)測航班延誤。本文先簡單介紹了CatBoost算法的原理,然后梳理了航班延誤預(yù)測的總體流程。①數(shù)據(jù)處理部分利用數(shù)據(jù)清洗和特征選擇輸出最優(yōu)樣本集。②數(shù)據(jù)分析部分通過網(wǎng)格搜索及交叉驗證方法并結(jié)合訓(xùn)練得到航班預(yù)測優(yōu)化模型。③使用類似算法LightGBM和XGBoost對同樣數(shù)據(jù)集進(jìn)行預(yù)測結(jié)果比對,可以看出,CatBoost算法的延誤預(yù)測精確度更高,時間更短,可以有效預(yù)測航班延誤。
CatBoost是一種能夠很好地處理類別型特征的梯度提升算法庫,作為GBDT框架的一種改進(jìn)實現(xiàn),其有著參數(shù)少、能夠匹配類別型變量以及準(zhǔn)確性較高的優(yōu)點,可以高效且合理地處理類別型特征。
1.1.1 類別型特征
CatBoost算法為了更好地選擇GBDT已有特征中存在的類別型特征,對以前的目標(biāo)變量統(tǒng)計法(Greedy Target-based Statistics)進(jìn)行了改進(jìn),通過添加先驗分布項,使得數(shù)據(jù)分布免受噪聲和低頻的影響,公式示例如下:
為了避免回歸錯誤造成過擬合問題,Cat?Boost對已有葉子的節(jié)點值進(jìn)行計算,規(guī)避了多個數(shù)據(jù)集排列直接進(jìn)行計算。
1.1.2 梯度提升(Gradient Boosting)
梯度提升是利用不可重復(fù)的迭代變量,不斷循環(huán)添加子模型,同時確保損失函數(shù)逐漸減小。
假設(shè)f()為子模型,復(fù)合模型為
設(shè)損失函數(shù)為[ ]F(),,進(jìn)行迭代后添加全新子模型,隨著影響因子次高變量的梯度比前一次小,損失函數(shù)不斷減小。
作為GBDT的一種,CatBoost采用了完全對稱樹作為基模型,開創(chuàng)性地加入了自動轉(zhuǎn)換算法,將類別型通過計算轉(zhuǎn)換為數(shù)值型特征,達(dá)到高效處理類別型特征的目的。除此之外,Cat?Boost還解決了梯度偏差(Gradient Bias)和預(yù)測偏移(Prediction Shift)可能存在的問題,從而減少過擬合的發(fā)生,體現(xiàn)了本算法在提升準(zhǔn)確性和加強(qiáng)泛化方面有明顯改善。
本文對預(yù)測實驗進(jìn)行了流程搭建,如圖1所示:第一步通過數(shù)據(jù)清洗對初始數(shù)據(jù)進(jìn)行處理,利用嵌入算法篩選出有利于模型預(yù)測準(zhǔn)確度的特征,獲取合適的樣本集后,將樣本特征隨機(jī)分為測試樣本集和訓(xùn)練樣本集,通過網(wǎng)格搜索和交叉驗證的方法組合出最優(yōu)參數(shù)解,再使用CatBoost算法對訓(xùn)練樣本集進(jìn)行訓(xùn)練獲得預(yù)測模型,最后將最優(yōu)參數(shù)組合帶入模型中得到航班延誤預(yù)測結(jié)果。
圖1 基于CatBoost的航班延誤預(yù)測流程
本文研究選取的是2019年全年的美國航班數(shù)據(jù)作為實驗,但因數(shù)據(jù)量巨大且考慮大型機(jī)場因自身原因造成的延誤可能性較小,篩選了由亞特蘭大哈茲菲爾德-杰克遜機(jī)場為出發(fā)機(jī)場,洛杉磯國際機(jī)場、西雅圖際機(jī)場或西雅圖塔科馬機(jī)場、芝加哥奧黑爾際機(jī)場、肯尼迪國際機(jī)場、舊金山國際機(jī)場為目的地的樣本數(shù)據(jù)38849條,每條樣本包含了計劃到港時間、起始機(jī)場距離、航班日期、航空公司代碼、始發(fā)機(jī)場代碼、目的機(jī)場代碼、原定出發(fā)時間、實際出發(fā)時間、實際到達(dá)時間等27個特征。因不同月份的天氣對預(yù)測相當(dāng)重要,故使用數(shù)值型的年月日作為航班日期的特征表達(dá)。
2.1.1 數(shù)據(jù)補(bǔ)齊處理
數(shù)據(jù)集出現(xiàn)空值將影響實驗結(jié)果,需要一定的值去填充空值,從而使數(shù)據(jù)完備化。通?;诮y(tǒng)計學(xué)原理,根據(jù)初始數(shù)據(jù)集中其余對象取值的分布情況來對一個缺失值進(jìn)行填充,在本實驗中,對于較高比例樣本存在缺失的情況,首先將樣本進(jìn)行分類,然后以該類中樣本的均值來插補(bǔ)缺失值,較少比例樣本則直接去除空值樣本。
2.1.2 數(shù)值型處理
本文中因航空公司代碼為非數(shù)值型,無法有效進(jìn)行數(shù)據(jù)處理,需轉(zhuǎn)換為數(shù)值型,本實驗采用15個航空公司的樣本數(shù)據(jù),將航空公司按延誤率高低進(jìn)行排序,并使用1~15的數(shù)值代替航空公式代碼。
選取對航班預(yù)測結(jié)果有用的特征至關(guān)重要,無用的特征會對預(yù)測準(zhǔn)確度造成影響。先使用CatBoost模型進(jìn)行訓(xùn)練,獲得每個特征的權(quán)值系數(shù),權(quán)值系數(shù)越高就表明了特征對模型的重要性或者程度越高,本實驗在sklearn中使用Se?lectFromModel設(shè)置的閾值參數(shù)為0.001,低于該閾值的特征則認(rèn)為對模型不重要進(jìn)行剔除,最后特征選擇字段如表1所示。
表1 特征字段解釋說明
CatBoost算法是通過在數(shù)據(jù)上構(gòu)建多棵決策樹,匯總所有決策樹模擬結(jié)果的新型預(yù)測算法,本實驗中,為得到最優(yōu)參數(shù)組合,將參數(shù)可能存在的取值進(jìn)行依次列舉,得到組合結(jié)果后生成“網(wǎng)格”,然后將各網(wǎng)格結(jié)果帶入CatBoost算法進(jìn)行訓(xùn)練,最后利用交叉驗證評估測試集中的數(shù)據(jù)。通過評分函數(shù)得到評分最高的參數(shù)值,最后得到所有參數(shù)組合中的最優(yōu)參數(shù)組合。下一步調(diào)整和評估參數(shù),本文使用了Grid?SearchCV來完成,從而得到最優(yōu)參數(shù)組合如表2所示。
表2 最優(yōu)參數(shù)組合
將前面經(jīng)過處理后的數(shù)據(jù)集進(jìn)行劃分,20%的數(shù)據(jù)作為測試樣本集,剩余80%作為訓(xùn)練樣本集,并通過CatBoost算法對訓(xùn)練樣本進(jìn)行訓(xùn)練得到預(yù)測模型后,帶入測試集得到預(yù)測結(jié)果R-Squared為0.9897624,平均絕對誤差(MAE)為3.08分鐘,訓(xùn)練時間為106 ms。最后使用LightGBM算法、XGBoost算法對相同的數(shù)據(jù)集進(jìn)行類比預(yù)測,對比結(jié)果見表3。其中RSquared代表方差,值越趨近1,表示預(yù)測越準(zhǔn)確;MAE值體現(xiàn)了預(yù)測值偏向真實值的差值;訓(xùn)練時間與算f法的運行速度成反比:時間越短說明運行速度越快。通過實驗結(jié)果可以發(fā)現(xiàn),使用CatBoost算法進(jìn)行預(yù)測,結(jié)果精度更高,訓(xùn)練時間更短。
表3 三種算法預(yù)測結(jié)果對比
本文在航班受多種影響因素導(dǎo)致延誤的大背景下,使用了一種新型Boosting算法CatBoost進(jìn)行航班延誤預(yù)測,取得了良好效果。首先對美國的亞特蘭大哈茲菲爾德-杰克遜機(jī)場、肯尼迪國際機(jī)場等五大國際機(jī)場在2019年全年的航班數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗,提取出對航班預(yù)測影響較大的關(guān)鍵類別型特征,并采用網(wǎng)格搜索和交叉驗證方法得到最優(yōu)參數(shù)組合,帶入數(shù)據(jù)訓(xùn)練獲取的預(yù)測模型中,通過實驗分析,CatBoost算法的R-Squared為0.9897624,MAE為3.08分鐘、訓(xùn)練時間為0.106 s,相比于LightGBM、XGBoost算法,CatBoost在回歸指標(biāo)方面都具有明顯優(yōu)勢,表現(xiàn)出更高的預(yù)測精度和更短的預(yù)測時間。然而,由于現(xiàn)實中導(dǎo)致航班延誤的原因相當(dāng)復(fù)雜,本文在特征選擇和參數(shù)調(diào)整上還有待進(jìn)一步優(yōu)化,比如將天氣、空管控流、電子故障等因素列入特征樣本中,從而更趨近現(xiàn)實情況以提升預(yù)測準(zhǔn)確性。