劉中祥,王欣
(中國民用航空飛行學(xué)院計算機(jī)學(xué)院,廣漢 618307)
依據(jù)2017年民航行業(yè)發(fā)展統(tǒng)計公報,國內(nèi)的客運航空公司完成航班403.9萬班次,其中正常航班289.5萬班次,平均正常航班率僅為71.67%。航班延誤問題不可避免且會帶來很多負(fù)面影響,不僅會對打亂旅客個人的時間安排,還會影響機(jī)場后續(xù)航班的安排以及航空公司的運營和形象。因此,預(yù)測航班的延誤時間,就可以提前采取措施以減少或避免上述情況的發(fā)生,從而大幅度減少延誤所帶來的問題和影響。
關(guān)于航班延誤預(yù)測的問題,國內(nèi)外學(xué)者已展開了相關(guān)的研究。文獻(xiàn)[1]從延誤鏈?zhǔn)讲暗慕嵌瘸霭l(fā),提出了基于貝葉斯網(wǎng)絡(luò)的延誤傳播模型,可以預(yù)測下游航班的離港時間和延誤情況;文獻(xiàn)[3]通過相空間重構(gòu)理論發(fā)現(xiàn)到港時間序列存在混沌特性,對其進(jìn)行相空間重構(gòu),比較不同算法,證明差分進(jìn)化算法能很好地進(jìn)行航班延誤預(yù)測;文獻(xiàn)[4]將數(shù)據(jù)挖掘中隱馬爾可夫模型和指數(shù)平滑預(yù)測方法應(yīng)用在延誤預(yù)測中;文獻(xiàn)[5]提出了基于決策樹算法的航班到港延誤預(yù)測,結(jié)果表明基于C4.5決策樹的預(yù)測模型正確率趨近于80%。
本文將結(jié)合BST網(wǎng)站上提供的數(shù)據(jù),通過分析各個特征項對航班延誤的影響,確定與航班延誤時間相關(guān)的特征因素,通過運用隨機(jī)森林回歸算法,得到航班到港的延誤預(yù)測時間。由于美國國內(nèi)航班線路的復(fù)雜性,為簡化分析,最后選取美國國內(nèi)機(jī)場排名前十的洛杉磯國際機(jī)場(LAX)和舊金山國際機(jī)場(SFO)之間來回往返的航班作為研究對象。最后實驗結(jié)果顯示航班延誤預(yù)測的平均絕對誤差為10.56分鐘。
隨機(jī)森林算法經(jīng)過Bootstrap重采樣對原始數(shù)據(jù)集進(jìn)行采樣,對每組樣本建立一個CART決策樹模型。然后,將多棵樹組合最終形成隨機(jī)森林,森林中每棵樹的預(yù)測結(jié)果通過相應(yīng)的投票策略得到最終的預(yù)測結(jié)果。
分類與回歸樹(Classification And Regression Tree,CART)是由Breiman等人提出的決策樹學(xué)習(xí)方法。當(dāng)用作分類時,CART算法選擇基尼指數(shù)為最優(yōu)特征;當(dāng)進(jìn)行回歸預(yù)測時,以誤差平方和為原則選取最優(yōu)的二分切點。在訓(xùn)練集所在的輸入空間里,遞歸地將每個區(qū)域劃分為兩個子區(qū)域并確定每個子區(qū)域上的輸出值。
算法的實現(xiàn)步驟:
(1)選取最優(yōu)的切分變量j與切分點s,按照以下方式:
c1,c2分別為左右子區(qū)域輸出的平均值,可通過遍歷每個變量的值找出最優(yōu)的切分點。
(2)通過確定的切分點來劃分區(qū)域并求出對應(yīng)的輸出值;
(3)遞歸的調(diào)用步驟1和步驟2,直到滿足停止條件;
(4)輸入空間劃分為N個區(qū)域R1,R2,…,RN,生成最終的決策樹。
隨機(jī)森林(Random Forest,RF)是一種基于Bagging的集成學(xué)習(xí)方法,可以用來做分類問題或者回歸問題。該算法指的是通過多棵決策樹構(gòu)建組合模型對樣本進(jìn)行分析預(yù)測,每個決策樹模型都會有一個預(yù)測值,將每棵樹的預(yù)測值匯總,最終會提升模型的預(yù)測效果?;貧w預(yù)測會將每棵樹的預(yù)測值取平均,得到最終的預(yù)測值。
隨機(jī)森林的構(gòu)建流程如下:
1. 從訓(xùn)練集D中通過Bootstrap重采樣方法選出N個樣本;
2. 從眾多屬性中隨機(jī)選取K個屬性;
3. 選擇最佳分割屬性;
4. 建立CART決策樹。
End
上述算法流程中,在每棵決策樹的分裂過程中,不需要剪枝。最后構(gòu)造的模型如圖1所示。
圖1隨機(jī)森林估計模型
本文研究中所用到的數(shù)據(jù)來自于美國交通統(tǒng)計局(The Bureau of Transportation Statistics,BTS)網(wǎng)上公布的航班數(shù)據(jù)。據(jù)BTS的解釋,網(wǎng)上公布的航班數(shù)據(jù)包含了美國國內(nèi)客運量數(shù)量超過1%的航空公司,以及自愿公開的兩家航空公司的直飛航班數(shù)據(jù)。本文實驗中所采用的數(shù)據(jù)為2017年美國全年的航班數(shù)據(jù),其中包含了109個特征項,共計5674621個數(shù)據(jù)項。對于每一條航班數(shù)據(jù),其中包括:航班號、航空公司代碼、起飛機(jī)場代碼、降落機(jī)場代碼、計劃和實際起飛時間、計劃和實際降落時間、計劃和實際飛行時間、飛機(jī)在機(jī)場的推出推進(jìn)時間、航班延誤原因及其他相關(guān)信息。
(1)月份因素
圖2展示的是2017年各個月份中延誤航班班次數(shù)與非延誤航班班次數(shù)之間的比值。從中可以觀察到,9月、10月和11月中的延誤比例明顯比其他月份低。因此,我們將Month字段作為考察變量。
(2)星期因素
圖3展示的是2017年全年一周七天中延誤航班班次數(shù)與非延誤航班班次數(shù)之間的比值。圖中的數(shù)字1到7代表的是星期一到星期天。從中可以發(fā)現(xiàn),星期一、星期四和星期五中的延誤比例比另外三天高。因此,我們將DayOfWeek字段作為考察變量。
圖2月份因素與航班延誤關(guān)系統(tǒng)計圖
圖3星期因素與航班延誤關(guān)系統(tǒng)計圖
(3)航班時間因素
圖4展示的是2017年全年中一天24小時各個時間段(一個小時為一個時間段)中延誤航班班次數(shù)與非延誤航班班次數(shù)之間的比值。從中可以觀察到,早上5點那一段時間的航班延誤比值全天中最低,之后的時間比值升高到下午6點到達(dá)峰值,然后延誤比值下降。我們發(fā)現(xiàn)DayOfWeek字段與航班延誤的規(guī)律性較強(qiáng)。鑒于此,我們將DayOfWeek字段作為考察變量。
圖4航班時間因素與航班延誤關(guān)系統(tǒng)計圖
(4)航空公司因素
圖5展示的是2017年美國12個航空公司全年的延誤航班班次數(shù)與非延誤航班班次數(shù)之間的比值。從中可以觀察到,B6(JetBlue Airways,捷藍(lán)航空)和 VX(Virgin America Airways維珍美國航空)的航班延誤比值明顯比其他航空公司高,這兩家航空公司在美國同屬于廉價航空。從中可以看出Carrier字段與航班延誤的規(guī)律性較強(qiáng)。鑒于此,我們將Carrier字段作為考察變量。
圖5航空公司因素與航班延誤關(guān)系統(tǒng)計圖
(5)航線ID因素
圖6展示的是2017年在舊金山國際機(jī)場和洛杉磯國際機(jī)場往返航班的延誤班次與非延誤班次的比值。在這兩地機(jī)場往返的航線共計6條,其中19805航線的班次只有15個班次。故不考慮該航線的延誤狀況,觀察其他5條航線的延誤比值,發(fā)現(xiàn)19977和19790航線的比值明顯比其他三條航線要低。故我們將AirlineID字段作為考察變量。
圖6航線因素與航班延誤關(guān)系統(tǒng)計圖
(1)數(shù)據(jù)的處理
為了簡化分析,只考慮在洛杉磯國際機(jī)場和舊金山國際機(jī)場來回往返的航班。篩選之后的數(shù)據(jù)共有31350條。
檢查數(shù)據(jù),發(fā)現(xiàn)數(shù)據(jù)中ArrDel15字段共有1075個值為空,缺失率僅為3.43%,為研究方便,可以將這部分?jǐn)?shù)據(jù)移除。
去除后各字段的基本統(tǒng)計量如表1。
表1字段基本統(tǒng)計量
通過2.2小節(jié)的分析,起飛時間段這個因素在航班延誤中所占的比重比較大。另外,DepTimeBlk字段的數(shù)據(jù)內(nèi)容是一個時間段,為方便運算將該字段內(nèi)容進(jìn)行轉(zhuǎn)化。值的解釋含義不變,僅將時間區(qū)間簡化為數(shù)字。舉例:0800-0859簡化為8。
此外,航空公司這個要素在航班延誤中也較為重要,對于Carrier這個字段也要進(jìn)行相應(yīng)的數(shù)字化。篩選數(shù)據(jù)發(fā)現(xiàn),在舊金山國際機(jī)場和洛杉磯國際機(jī)場之間執(zhí)行飛行任務(wù)的有6家航空公司。因此,數(shù)值化的結(jié)果就是將這六家航空公司按照航班延誤比值從小到大進(jìn)行排序,相應(yīng)的轉(zhuǎn)化為1到6。
AirlineID字段的值為五位數(shù)的數(shù)字組成,該數(shù)字僅代表某條航線,其數(shù)值對于最終的延誤預(yù)測效果沒有意義。因此,按照六條航線的航班延誤比值從小到大進(jìn)行排名。五位數(shù)的航線ID轉(zhuǎn)化為數(shù)字。
(2)數(shù)據(jù)的結(jié)構(gòu)
篩選處理過后航班延誤的數(shù)據(jù)結(jié)構(gòu)及各字段的解釋如表2。
表2字段示例及解釋說明
原始數(shù)據(jù)經(jīng)過上述小結(jié)的加工處理后,選取80%的隨機(jī)數(shù)據(jù)作為訓(xùn)練集,剩下20%的數(shù)據(jù)集作為測試集。并選取字段 ArrTimeBlk,、AirlineID、Month、Dayof-Month、DayOfWeek、holiday、CarrierNum、DepTimeBlk、DepDelay作為特征項,ArrDelay字段作為目標(biāo)變量。構(gòu)建隨機(jī)森林回歸模型,應(yīng)用網(wǎng)格搜索來進(jìn)行參數(shù)調(diào)優(yōu)并進(jìn)行10折交叉驗證(基于Python的scikit-learn工具包),得到的模型如下:
RandomForestRegressor(n_estimators=240,criterion='mse', min_samples_split=20, min_weight_fraction_leaf=0.0,min_samples_leaf=1,max_features='auto',max_depth=None, max_leaf_nodes=None, min_impurity_split=None,min_impurity_decrease=0.0,oob_score=False,bootstrap=True,n_jobs=None,verbose=0,random_state=15,warm_start=False)
得到的平均絕對誤差為10.56分鐘,R2評分為0.91。
之后,用支持向量回歸(SVR)算法和嶺回歸(Ridge)算法進(jìn)行航班延誤的預(yù)測。采用相同數(shù)據(jù)集,同樣應(yīng)用網(wǎng)格搜索進(jìn)行參數(shù)調(diào)優(yōu)并進(jìn)行10折交叉驗證。預(yù)測結(jié)果與隨機(jī)森林進(jìn)行對比分析,結(jié)果如表3。
表3三種算法模型對比表
通過比較嶺回歸、支持向量機(jī)以及隨機(jī)森林三種算法的R-squared和平均絕對誤差,最終顯示隨機(jī)森林回歸的預(yù)測效果較好。
對航班延誤預(yù)測的研究具有重要的意義,能夠提高機(jī)場的運轉(zhuǎn)效率,提升航空公司的形象,減少成本。本文是基于美國網(wǎng)上公開的航班數(shù)據(jù),事先分析各個因素與航班延誤的相關(guān)性來確定特征項,將計劃起飛/到達(dá)時間段以及航線ID數(shù)字化,然后運用機(jī)器學(xué)習(xí)中相關(guān)方法,預(yù)測航班的延誤時間。研究結(jié)果顯示,航班延誤的時間和實際延誤時間的平均絕對誤差為10.56分鐘。然而考慮到航班延誤的成因十分復(fù)雜,本文最后提出的模型仍然具有優(yōu)化的空間,例如可以增加天氣數(shù)據(jù)、飛機(jī)載客量、飛機(jī)機(jī)型、空中飛行時間、美國公共節(jié)假日等更多的特征項。還可以考慮加入往年的航班數(shù)據(jù),增加數(shù)據(jù)量,以提高預(yù)測精度。