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