羊 釗,陳怡欣,張智杰
(1. 南京航空航天大學 通用航空與飛行學院,江蘇 溧陽 213300; 2. 南京航空航天大學 民航學院,江蘇 南京 211116)
航班作為延誤發(fā)生的載體是研究者們一直以來研究的重要對象[1]。航班延誤的產(chǎn)生機理復雜多樣,與機場網(wǎng)絡[2-3]息息相關,對航班延誤進行提前感知和準確預測,需要綜合考慮多方因素。現(xiàn)有的研究方法可分為兩大類。由于延誤狀態(tài)來源于正常狀態(tài)的跳轉,分析狀態(tài)之間的轉移概率成為此方向的一個切入點。將經(jīng)典數(shù)學分布與航班出發(fā)延誤時間和到達延誤時間相結合[4],能夠模擬出航班延誤產(chǎn)生與消散的過程,進而對其進行預測;采用貝葉斯網(wǎng)絡[5]或將其與前序后序航班的鏈式波相結合[6-7],可以反映出航班間延誤的相互影響,進而調(diào)整航班計劃以減輕延誤。由于機器學習和數(shù)據(jù)挖掘方法可從大量歷史數(shù)據(jù)中直接預測出航班延誤狀態(tài),利用數(shù)據(jù)挖掘規(guī)律成為此方向的另一切入點。將多種與航班延誤相關的特征如自動相關監(jiān)視廣播(ADS-B)特征[8]、惡劣天氣特征[9]、機場交通復雜性(ATC)特征[10]等進行融合,采用KNN[11]、隨機森林[12]、聚類[13]等方法建立由輸入端到輸出端的預測模型。該方法避免了模型對各種信息的完整需求以及延誤產(chǎn)生機理方程的構建等問題。因此,機器學習領域的諸多經(jīng)典模型以及各種改進的深度學習模型[11,14-16]被廣泛應用于航班延誤預測方面。
在航班延誤頻繁發(fā)生的航班過站保障流程中,利用過站航班相關數(shù)據(jù)有助于辨識延誤發(fā)生的源環(huán)節(jié),提高航班保障作業(yè)時的延誤預測精度。然而由于數(shù)據(jù)難以采集利用、多方交織參與作業(yè)、航班特征難以提取等困難,上述提及的兩類研究方法均未對此階段航班延誤問題開展研究。利用概率研究航班延誤的方法中,只將航班的上下游延誤時間分布聯(lián)系起來;利用機器學習模型研究航班延誤的方法中,只將與航班間接相關的特征進行融合,并未考慮航班延誤的來源。
基于上述思想,筆者從新的視角展開對航班延誤預測的研究。首先,根據(jù)航班流程節(jié)點的時間特征統(tǒng)計相鄰前序-后序流程節(jié)點的時間差及標準范圍,處理后作為模型輸入特征;其次,根據(jù)過站航班的地面保障服務流程,構建神經(jīng)網(wǎng)絡拓撲結構,具體來說,每個過站航班的保障節(jié)點被表示為神經(jīng)網(wǎng)絡中的一個節(jié)點,相鄰流程的連接被表示為一條有向邊;最后,構建了兩類航班延誤預測模型,第 1 類包括隨機森林、決策樹、XGBoost 3 種傳統(tǒng)的機器學習模型,第 2 類為 4種圖卷積神經(jīng)網(wǎng)絡模型,包括圖卷積網(wǎng)絡(GCN)、圖注意力網(wǎng)絡(GAT)、GraphSAGE網(wǎng)絡以及集成圖卷積網(wǎng)絡模型。4 種圖卷積神經(jīng)網(wǎng)絡模型將圖神經(jīng)網(wǎng)絡結構與過站航班作業(yè)流程融合,利用圖網(wǎng)絡結構上不同層間多種特征聚合、更新和傳遞的方式,以期提高航班延誤預測的精度。
考慮過站航班流程節(jié)點的先后邏輯,收集并清洗機場內(nèi)航班保障流程的時刻數(shù)據(jù),根據(jù)開艙門時刻與后續(xù)流程節(jié)點是否屬于同一天,將航班數(shù)據(jù)劃分為隔夜航班集合和非隔夜航班集合。在兩類集合中分別計算出每條航班實際起飛時刻與計劃離港時刻的差值集合,將兩類集合分別劃分出延誤航班集合和非延誤航班集合,即隔夜延誤航班集合、隔夜非延誤航班集合、非隔夜延誤航班集合、非隔夜非延誤航班集合。對每個集合計算出航班后續(xù)-前序流程節(jié)點的時間差值,在隔夜非延誤、非隔夜非延誤的航班集合中計算相鄰節(jié)點時間差,作為標準時間段集合。將隔夜延誤、非隔夜延誤航班集合中的節(jié)點差值與標準時間段集合進行對比,得到兩類延誤航班與標準時段集合的距離節(jié)點特征集合,作為后續(xù)模型的輸入特征。
航班過站時一般性過站流程如圖1。
圖1 航班過站流程示意
此流程可分為 3 個部分:①與旅客相關的流程;②與貨物行李相關的流程;③飛機本身需要進行保障的流程。由于目前的技術手段對貨物行李和飛機保障兩部分的流程時刻收集存在困難,因此筆者采用與旅客相關的時刻節(jié)點進行后續(xù)實驗。具體選取上海浦東國際機場2019年6月1日—12月31日內(nèi) 94 262 條過站航班保障流程節(jié)點的時刻數(shù)據(jù),其中延誤航班數(shù)據(jù) 22 270 條,非延誤航班數(shù)據(jù)71 992條。采集的節(jié)點包括計劃進港時刻、實際落地時刻、實際上輪擋時刻、開艙門時刻、關艙門時刻、登機口開啟時刻、登機口關閉時刻、實際撤輪擋時刻、實際開始滑行時刻、實際起飛時刻、計劃離港時刻,如圖2。
圖2 數(shù)據(jù)示意
由于選取的時刻集合存在前后邏輯關系,需要進行數(shù)據(jù)邏輯處理,處理原則為:
1)檢查采集到的各航班時刻的前后關聯(lián),將時刻數(shù)據(jù)中的異常值剔除,如該航班的某一時刻與其余時刻不在同一天,該航班的下一時刻比上一時刻早等。
2)由于存在隔夜起飛情況,根據(jù)每條航班中開艙門時刻和關艙門時刻差值長度,將差值長度超過 400 且開艙門時刻在晚上、關艙門時刻在第二天早上的數(shù)據(jù)歸為隔夜航班集合Tpover,其余數(shù)據(jù)歸為非隔夜航班集合Tpnonover。
3)以各航班的實際落地時刻tal、計劃進港時刻tea、實際起飛時刻tad和計劃離港時刻ted為航班的參照執(zhí)行時刻,優(yōu)先處理與實際落地時刻和實際起飛時刻接近的異常和缺失時刻。將需處理的時刻數(shù)據(jù)分為兩類:一類與該航班實際落地時刻tal或實際起飛時刻tad相關,另一類與該航班前后兩個及以上時刻相關。針對兩類異常值和缺失值,在Tpover和Tpnonover中,利用與其余流程節(jié)點上完好時刻數(shù)據(jù)的關系進行清洗。
筆者用兩類問題節(jié)點舉例說明。
1)第 1 類異常值使用實際開始滑行時刻進行說明,如果第i條航班的實際開始滑行時刻ti-at缺失或異常,重新計算出的第i條航班的實際開始滑行時刻t′i-at如式(1):
(1)
式中:ti-ad為第i條航班的實際起飛時刻;ti-at為第i條航班的實際開始滑行時刻;pnonover和pover分別為非隔夜航班和隔夜航班的航班條數(shù)。
2)第2類異常值使用實際關艙門時刻進行說明,如果第i條航班的實際關艙門時刻ti-cd缺失或異常,重新計算得到的第i條航班的實際關艙門時刻t′i-cd如式(2):
(2)
式中:ti-boff為第i條航班的實際撤輪擋時刻;ti-od為第i條航班的實際開艙門時刻。
將清洗后的所有時刻數(shù)據(jù)作為原始數(shù)據(jù)集合Tp,其中Tp包含Tpover和Tpnonover。
為得到非延誤航班各流程的標準時段,計算Tp中所有航班實際起飛時刻與計劃離港時刻的時間差集合M,如式(3):
(3)
式中:di為第i條航班實際起飛時刻與計劃離港時刻的時間差;ti-ad為第i條航班的實際起飛時刻;ti-ed為第i條航班的計劃離港時刻;tr為機場實際起飛時間和計劃離港時間之間可接受的時間差,tr為常數(shù)。
在Tpover和Tpnonover中,分別劃分延誤航班時刻集合Tdelay和非延誤航班時刻集合Tnon-delay,如式(4):
(4)
基于航班中存在的隔夜和非隔夜起飛情況,分別計算Tdelay和Tnon-delay中航班各前序—后序流程節(jié)點上的時間差值集合δdelay和δnon-delay。選取各時間差的上四分位數(shù)QU和下四分位數(shù)QL的數(shù)據(jù)段為標準時段集合Dstd,選取時間差如表1。
表1 前序—后續(xù)流程節(jié)點時間差數(shù)據(jù)統(tǒng)計
將Dstd與Tdelay中的δdelay進行比較,得到距離集合X如式(5)、式(6):
X={x1,x2,…,xis,…,xpdelay×(m-1)}
(5)
(6)
式中:m為一條航班包含的流程節(jié)點個數(shù)。距離集合X的特征即表1中的第一列特征,隨后將距離集合作為圖卷積神經(jīng)網(wǎng)絡模型的輸入特征。
將航班流程節(jié)點轉化為圖網(wǎng)絡結構,將其細化成模型需要的邊集合、索引集合、節(jié)點特征集合和預測值集合,構建圖卷積神經(jīng)網(wǎng)絡模型。
筆者使用延誤航班各流程節(jié)點構建圖網(wǎng)絡結構G=(V,E),其中,va∈V,V={v1,v2,…,vn}為由va構成的點集合;E={e1,e2,…,epdelay×(m-1)}為(va,vb)構成的邊集合;V、vi分別為G中的節(jié)點集合和第i個流程節(jié)點;E、ei分別為G中的邊集合和第i個邊;pdelay為延誤航班的航班條數(shù),每條航班構成的圖網(wǎng)絡結構中包含m-1條邊。G的鄰接矩陣Aab和度矩陣Dab中的元素Aab、Dab如式(7)、式(8):
(7)
(8)
式中:n為所有延誤航班的總流程節(jié)點個數(shù)。
2.2.1 GCN 層
搭建GCN(graph convolutional networks)卷積層[17]進行圖網(wǎng)絡結構上節(jié)點特征的聚合、更新和傳遞,使用傳播規(guī)則f(·)將圖上特征向下傳遞,傳遞過程如式(9):
X(l+1)=f(X(l),Aab)
(9)
式中:X(l)為第l層的特征;f(·)為圖網(wǎng)絡結構G層間的傳播規(guī)則。
根據(jù)式(10)的卷積定理得到圖卷積過程如式(11);根據(jù)拉普拉斯矩陣的性質L=UΛUT,該公式可進一步改寫為式(12);引入切比雪夫多項式擬合卷積核,對圖卷積公式取一階近似,得到圖卷積公式如式(13);圖神經(jīng)網(wǎng)絡中GCN卷積層之間的傳播過程如式(14):
(10)
(X?Wθ)G=U[(UTWθ)·(UTX)]
(11)
(Wθ?X)G=Wθ(L)X
(12)
(13)
(14)
式中:Wθ為可學習的參數(shù);In為G的自循環(huán);L為G的拉普拉斯矩陣。
2.2.2 GAT 卷積層
GCN卷積層在聚合、更新和傳遞特征時,難以分配不同權重給不同鄰居節(jié)點。搭建GAT(graph attention networks)卷積層[18],通過注意力系數(shù)改進上述缺點。
分別計算vi與多個鄰居節(jié)點之間的注意力權重。vi到每個鄰居節(jié)點vj的相關性系數(shù)eij如式(15);之后計算注意力系數(shù)αij如式(16);把節(jié)點上的時間特征加權求和,得到vi上的新時間特征x′vi如式(16):
eij=a([wxvi‖wxvj]),vj∈Vi
(15)
(16)
(17)
式中:xvi、xvj為vi、vj的輸入特征;w為不同節(jié)點上可學習的參數(shù);a為特征映射函數(shù);f′LeakyReLU(·)為激活函數(shù);x′vi為vi上的新時間特征;eij為vi到每個鄰居節(jié)點vj的相關性系數(shù);αij為vi到每個鄰居節(jié)點vj的注意力系數(shù)。
最后,通過GCN卷積層進行每個流程節(jié)點上時間特征的聚合、更新和傳遞。
2.2.3 GraphSAGE 卷積層
GCN卷積層需要對整個圖結構進行迭代,搭建GraphSAGE(graph sample and aggregate)卷積層[19]。通過鄰居采樣將流程節(jié)點的全圖訓練模式轉化成以各流程節(jié)點為中心的小批量訓練模式,避免相同時間特征多次訓練。
(18)
?vj∈Vi
(19)
(20)
結合文中所述特征和預測任務的特殊性,構建雙層圖卷積神經(jīng)網(wǎng)絡(雙GCN層、雙GAT層、雙GraphSAGE層、單GCN層與單GraphSAGE層相連),每個雙層圖神經(jīng)網(wǎng)絡與兩層全連接神經(jīng)網(wǎng)絡相連,并與一層池化層相接。將節(jié)點導向任務轉化為全局的圖導向任務,構成 4 種不同的圖卷積神經(jīng)網(wǎng)絡(GNN)模型。模型整體架構如圖3。
圖3 航班延誤預測GNN模型結構示意
基于圖卷積神經(jīng)網(wǎng)絡模型驗證文中方法在航班延誤預測任務中的性能。電腦環(huán)境配置為Win 10(64 bit)操作系統(tǒng)、Intel(R) Core(TM) i5-8265U 1.60GHz處理器、16 GB 內(nèi)存、4 GB 顯存。利用 Python 3.7 程序設計語言,基于Pycharm的開發(fā)環(huán)境、Pytorch模型框架實現(xiàn)過站航班延誤預測。
為了使搭建的模型具有較好的性能,針對4種不同的圖卷積神經(jīng)網(wǎng)絡模型,對卷積層神經(jīng)元個數(shù)、全連接層神經(jīng)元個數(shù)、學習率、批訓練數(shù)量、迭代次數(shù)和優(yōu)化器進行參數(shù)設定和比較,選取其中誤差最小的參數(shù)組合,結果設定如表2。
表2 不同航班延誤預測GNN模型參數(shù)設定
選取平均絕對誤差EMA、均方根誤差ERMS和平均絕對百分誤差EMAP共3 個指標以衡量各模型的預測值和真實值的距離。根據(jù)時刻數(shù)據(jù)的數(shù)據(jù)清洗標準,以 2019年數(shù)據(jù)為例,筆者將 3 476 條缺失關鍵數(shù)據(jù)的樣本刪除,最終可用延誤航班樣本為18 794 條。選取決策樹、隨機森林和 XGBoost 作為對比模型,將前 16 500 條延誤航班樣本作為訓練集Xtrain和驗證集Xval,將第16 501條~第18 794 條延誤航班樣本作為測試集Xtest,采用5折交叉驗證的方法進行模型訓練。
將測試集輸入所有模型中,利用三類指標橫向對比經(jīng)典機器學習模型和圖卷積神經(jīng)網(wǎng)絡模型的性能。7 種模型的多種預測誤差如表3。經(jīng)典機器學習模型的預測結果如圖4~圖6,圖卷積神經(jīng)網(wǎng)絡模型的訓練過程和預測結果如圖7。為了驗證模型的有效性,進一步利用2020年6月—12月內(nèi)13 240 條航班中轉流程中的保障節(jié)點數(shù)據(jù)建模分析,在進行數(shù)據(jù)清洗和特征轉換后,比較 7 種模型的預測誤差,結果如表3。
表3 不同航班延誤預測模型誤差
圖4 模型預測結果
通過對比表3和圖4、圖5可知,在經(jīng)典機器學習模型中,隨機森林模型和決策樹模型的預測各有利弊。由于隨機森林模型訓練了多個弱回歸器,按照Bagging的規(guī)則對單棵決策樹的結果進行平均,因此其偏向均值預測,對異常值的挖掘不及決策樹模型敏感,而決策樹模型的預測結果易呈現(xiàn)出高峰和低谷??傮w來看,決策樹模型在測試集上顯示出更好的泛化能力。雖然利用經(jīng)典機器學習模型能夠得到相對較快的預測結果,但是筆者提出的圖卷積神經(jīng)網(wǎng)絡模型的預測平均速度在實際應用場景中仍在可接受范圍內(nèi)。因此,從模型運算速度上來看,筆者提出的圖卷積神經(jīng)網(wǎng)絡模型更實用。相對經(jīng)典機器學習模型,筆者提出的 4 種圖卷積神經(jīng)網(wǎng)絡模型的預測精度更高,利用圖論的思想能更好地捕捉航班中轉流程保障節(jié)點的時刻數(shù)據(jù)中存在的時序和時間關系。在4種圖卷積神經(jīng)網(wǎng)絡中,雖然GCN模型的預測精度較差,但是其在訓練時更容易穩(wěn)定、快速地收斂。將GCN層-GraphSAGE集成搭建的圖卷積神經(jīng)網(wǎng)絡模型預測精度在所有模型中效果最好,但是雙層GraphSAGE模型在驗證集上取得的精度相對GCN-GraphSAGE集成模型來說更好。綜上,在過站航班保障流程提取到的時刻數(shù)據(jù)中,筆者提出的基于圖卷積神經(jīng)網(wǎng)絡的航班延誤預測模型預測誤差更小。
圖5 多種圖卷積神經(jīng)網(wǎng)絡模型訓練及預測結果
筆者使用過站航班保障流程中的時刻數(shù)據(jù),并引入圖卷積神經(jīng)網(wǎng)絡模型以提高預測精度,通過實例驗證得出以下結論:
1)基于過站航班原始特征訓練的對比模型預測精度較差,反映出過站航班保障流程中原始時刻特征與航班延誤時間之間存在非線性或線性關系的概率較小。
2)從非延誤航班中抽取各流程節(jié)點間的標準作業(yè)時段,利用其與標準時段的時間差構建的模型預測精度較好,反映出筆者提出的數(shù)據(jù)清洗方式有利于預測航班延誤的發(fā)生。
3)在過站航班保障流程節(jié)點上聚合鄰居節(jié)點的時間特征能夠更全面的提取流程節(jié)點的時間特征,使所提出的模型在圖級別的預測精度更好。
4)筆者提出的針對過站航班保障流程節(jié)點的航班延誤預測方法優(yōu)勢在于模型的預測精度高且收斂速度在可接受范圍內(nèi),但是該模型對原始數(shù)據(jù)的連貫性和邏輯性要求高,針對原始時刻數(shù)據(jù)需要進行大量邏輯判斷和清洗更正工作。
盡管筆者提出的方法在短期出發(fā)延誤預測方面取得了較優(yōu)的結果,但在這項研究中仍然需要解決幾個局限性。文中采集時刻數(shù)據(jù)人工錄入方式占比較大,存在一定誤差,模型的預測結果中均方根誤差較大,未來針對時刻數(shù)據(jù)如何高效采集仍是需要解決的問題之一。其他相關因素也可能對起飛延誤有影響,因此未來的研究仍然需要確定其他重要變量的影響,如航路的天氣信息、前序機場和后序機場、其他節(jié)點的序列數(shù)據(jù),可以進一步提高延誤預測精度。筆者僅以上海浦東國際機場為例進行模型分析,來自其他機場的數(shù)據(jù)也可用于進一步調(diào)查所提出模型的穩(wěn)健性和適用性。