王 輝,張文杰,劉 杰,陳林烽,李澤南
(1.中國民航大學(xué)航空工程學(xué)院,天津 300300;2.天津(濱海)人工智能軍民融合創(chuàng)新中心研究一部,天津 300300)
由空中交通流量增加和機場容量限制等因素導(dǎo)致的航班延誤問題日益嚴(yán)重。對航班延誤實現(xiàn)精準(zhǔn)預(yù)測可為相關(guān)決策部門提供參考,以便及時治理可控延誤,降低航空公司損失,對民航的高效安全運營具有實際意義[1]。目前,國內(nèi)外已有較多學(xué)者對航班延誤預(yù)測問題進(jìn)行研究,曹悅琪等[2]使用Logistic 模型對航班延誤數(shù)量和累積延誤時間進(jìn)行預(yù)測;王語桐等[3]使用支持向量回歸和線性回歸方法對上海浦東國際機場某月進(jìn)港航班數(shù)據(jù)進(jìn)行回歸預(yù)測;孟會芳等[4]基于K-means 聚類技術(shù)對航班延誤模式進(jìn)行時變分析;Kim 等[5]使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN,recurrent neural network)中的長短期記憶網(wǎng)絡(luò)(LSTM,long short term memory network)對單個機場的起飛和到達(dá)航班延誤進(jìn)行有效預(yù)測;文獻(xiàn)[6-7]基于單變量(氣象因子)建立概率統(tǒng)計算法模型,得出航班延誤的預(yù)測值并與實際值對比,進(jìn)而實現(xiàn)了航班延誤預(yù)測;張靜等[8]基于模糊線性回歸模型得出航班延誤的預(yù)測值,對航班延誤的情況進(jìn)行評估。上述研究均只對單一機場起降信息進(jìn)行建模,未考慮機場間延誤的相互影響,對機場間與航班延誤間的關(guān)系研究較少,且以上模型的數(shù)據(jù)集影響因子較少,數(shù)據(jù)集的維度不夠。
綜上,基于國內(nèi)機場收集了大量數(shù)據(jù)并將隨機森林(random forest)與分類回歸決策樹(CART,classification and regression tree)算法相結(jié)合構(gòu)建模型,該預(yù)測模型的核心是隨機森林模型。隨機森林模型是由Breiman[9]于2001 年提出的一種基于分類樹的算法,通過對大量分類樹的匯總提高了模型的預(yù)測精度,可處理高維度數(shù)據(jù),泛化能力好,同時降低模型過擬合的可能性,是取代神經(jīng)網(wǎng)絡(luò)等傳統(tǒng)機器學(xué)習(xí)方法的新模型,目前已應(yīng)用于較多問題的研究中,如農(nóng)業(yè)預(yù)測[10-11],人體信號預(yù)測[12]等。同時,本文數(shù)據(jù)含有國內(nèi)大部分機場的情況與航班進(jìn)出港的詳細(xì)信息,能夠很好地反映出多機場間的聯(lián)系。
航班預(yù)警系統(tǒng)的核心是具備一個或多個能根據(jù)輸入信息準(zhǔn)確預(yù)測延誤情況的模型,模型的準(zhǔn)確率直接影響了系統(tǒng)的準(zhǔn)確率。該模型是基于隨機森林與分類回歸決策樹算法構(gòu)建的航班延誤預(yù)測模型,即隨機森林。隨機森林回歸模型是一種集成算法,本身并不是一種單獨的機器學(xué)習(xí)算法,而是通過在訓(xùn)練集上構(gòu)建多個分類回歸決策樹模型,最后集合所有模型的最終輸出。其基本流程如圖1 所示。
圖1 隨機森林回歸計算流程圖Fig.1 Flow graph of random forest regression calculation
相較于單棵分類回歸決策樹,隨機森林回歸模型解決了決策樹泛化能力弱的缺點,能更有效地運行在大數(shù)據(jù)集上,同時降低了大數(shù)據(jù)集的維度要求(數(shù)據(jù)集無須進(jìn)行降維處理),能獲得較好的預(yù)測準(zhǔn)確率。
隨機森林回歸模型的結(jié)果取決于多棵決策樹的結(jié)果,決策樹的好壞將直接影響森林回歸模型的好壞。要想提高隨機森林回歸模型預(yù)測的準(zhǔn)確率,先要調(diào)節(jié)單棵決策樹的優(yōu)劣。
決策樹(decision tree)是一類機器學(xué)習(xí)算法,因其結(jié)構(gòu)形似一棵樹而得名。一般一棵決策樹包含一個根節(jié)點、若干個內(nèi)部節(jié)點、若干個分支和若干個葉子節(jié)點,其中根節(jié)點一般用于輸入,每個內(nèi)部節(jié)點表示一個屬性上的判斷,每個分支表示一個判斷結(jié)果的輸出,最后每個葉子節(jié)點表示一種分類的結(jié)果,如圖2所示。
圖2 決策樹結(jié)構(gòu)示意圖Fig.2 Schematic diagram of decision tree structure
決策樹采用類似if-else 的條件判斷邏輯進(jìn)行分類,屬于監(jiān)督學(xué)習(xí)(supervised learning)的一種。所謂監(jiān)督學(xué)習(xí)就是用一批帶有一組特征(屬性)和一個分類結(jié)果的樣本進(jìn)行學(xué)習(xí)的方法。簡單來說,就是用分類的結(jié)果和已知的樣本進(jìn)行學(xué)習(xí)。通過對樣本的學(xué)習(xí),可以讓決策樹對新的數(shù)據(jù)進(jìn)行回歸或分類。
分類回歸決策樹算法是由Breiman 等[13]于1984年提出的,既可用于分類也可用于回歸。CART 算法本質(zhì)是對特征向量進(jìn)行二元劃分,即CART 生成的決策樹是一棵二叉樹,能夠?qū)﹄x散量與連續(xù)量進(jìn)行分割。
1.2.1 尋找最優(yōu)切分點
為了對連續(xù)量進(jìn)行if-else 條件判斷,首先要對連續(xù)量進(jìn)行切分處理。
當(dāng)連續(xù)的特征值輸入到?jīng)Q策樹中時,分別為輸入量和輸出量,且為連續(xù)變量,給定的數(shù)據(jù)集
式中:yi為輸入的第i 個真實值;N 為樣本數(shù)量;xi為輸入的第i 個特征向量,即
在進(jìn)行切分前會先枚舉所有特征,對于每個特征按特征值升序排列,根據(jù)均方誤差最小原則選擇其中最優(yōu)的一個作為切分點。均方誤差的計算方法如下
式中:f(xi)為第i 組輸入的預(yù)測值;yi為真實值。可進(jìn)一步表示為
式中:c1和c2為劃分后兩個區(qū)域內(nèi)的固定輸出值;R1和R2為j 和s 將特征空間切分的兩個區(qū)域。
對于某個區(qū)域的輸出值c,根據(jù)均方差最小原則,構(gòu)造的函數(shù)為
對式(6)進(jìn)行求導(dǎo)得
令F′(c)=0,得
對于固定的j 掃描所有切分點s,找出滿足式(9)的s,即
在特征空間遍歷變量j,尋找最優(yōu)j,組成對(j,s)。如圖3 所示,對于計算出來的j 和s 將特征空間切分為兩個區(qū)域,切分的兩個區(qū)域為
圖3 特征切分示意圖Fig.3 Feature segmentation diagram
對切分出來的區(qū)域用同樣的方法重復(fù)以上步驟繼續(xù)進(jìn)行切分,如圖4 所示,經(jīng)過多次切分后,特征空間最終被分成M 個區(qū)域。
圖4 最終切分結(jié)果Fig.4 Final segmentation result
1.2.2 決策樹輸出
將特征空間切分為M 個區(qū)域后,每個區(qū)域都有一個固定輸出值,計算方法如下
生成決策樹,樹的最終預(yù)測值為
式中I 為指示函數(shù),即
當(dāng)隨機森林與分類回歸決策樹算法的航班延誤預(yù)測模型建立完成后,輸入數(shù)據(jù)進(jìn)行模型訓(xùn)練,但所獲得的航班數(shù)據(jù)的數(shù)據(jù)類型并不一致,想要讓模型能處理各種數(shù)據(jù)類型,還需要對航班數(shù)據(jù)進(jìn)行相應(yīng)處理。
本文共收集了372 261 條航班數(shù)據(jù),查詢到的數(shù)據(jù)共有36 個字段,如表1 所示(僅展示部分字段)。
表1 航班數(shù)據(jù)字段Tab.1 Fields of queried flight data
所查詢到的航班數(shù)據(jù)中,既有關(guān)鍵性數(shù)據(jù),如實際起飛和到達(dá)時間,也有和航班延誤關(guān)系不大的數(shù)據(jù),如時區(qū)、ICAOID、機場ICAO 代碼等。為了在有限的計算能力下盡可能地提高模型的契合度,應(yīng)避免將相關(guān)度較低的字段作為模型特征。故先要對收集到的航班數(shù)據(jù)字段進(jìn)行篩選。
2.1.1 主要特征選擇
特征選擇主要依據(jù)特征與預(yù)測值(延誤時間)的相關(guān)程度來進(jìn)行選擇(已省略計算過程),選擇出來的特征有:計劃起飛/到達(dá)時間,實際起飛/到達(dá)時間,航空公司出發(fā)/到達(dá)機場、機型、機齡。
2.1.2 額外特征提取
根據(jù)選擇出來的特征,可提取出更多特征,這些額外的特征在一定程度上與航班的延誤時間有關(guān)。
1)出發(fā)月份
該字段定義為month:int,表示出發(fā)月份,提取方法為將實際出發(fā)時間的時間戳換算成日期時間格式后取其月份,與航班平均延誤時間的關(guān)系如圖5 所示。
圖5 出發(fā)月份與航班平均延誤時間的關(guān)系Fig.5 The curve chart of departure month and the average delay time of flight
2)出發(fā)日期
該字段定義為day:int,表示出發(fā)日期,即該天是一個月中的第幾天,提取方法與月份提取方法類似,與航班平均延誤時間關(guān)系如圖6 所示。
圖6 出發(fā)日期與航班平均延誤時間的關(guān)系Fig.6 The curve chart of departure date and the average delay time of flight
3)起飛時段
該字段定義為hour of take off:int,表示起飛時段,取值為0~23 時,提取方法與月份、日期的提取方法類似,與航班平均延誤時間的關(guān)系如圖7 所示。
圖7 起飛時段與航班平均延誤時間的關(guān)系Fig.7 The curve chart of time period of taking off and the average delay time of flight
4)到達(dá)時段
該字段定義為hour of arrive:int,表示到達(dá)時段,取值為0~23 時,和起飛時段與航班平均延誤時間關(guān)系基本一致。
5)所在星期
該字段定義為weekday:int,表示出發(fā)日所在星期,其與航班平均延誤時間的關(guān)系如圖8 所示。
圖8 所在星期與航班平均延誤時間的關(guān)系Fig.8 The curve chart of the departure week and the average delay time of flight
6)平均起飛延誤時間
該字段定義為delay of take off:int,平均起飛延誤時間是用實際平均起飛時間減計劃平均起飛時間得到的。一般情況下,平均起飛延誤時間越長,平均到達(dá)延誤時間也越長,數(shù)據(jù)中平均起飛延誤時間與平均到達(dá)延誤時間的關(guān)系如圖9 所示,很好地印證了這種情況,兩者呈強線性相關(guān),故將平均起飛延誤時間作為特征之一。
圖9 平均起飛延誤時間和平均到達(dá)延誤的關(guān)系Fig.9 The relationship between average departure delay and arrival delay
原始特征有兩種類別:連續(xù)型特征和離散型特征。而回歸問題是對連續(xù)型特征進(jìn)行回歸的,在選擇(提?。┑奶卣髦?,存在著字符串(string)類型的變量。這就需要對string 這種非數(shù)值型變量運用標(biāo)簽編碼進(jìn)行特殊處理。string 類型特征經(jīng)過標(biāo)簽編碼后,仍是一個離散型特征,不能直接輸入模型,還需要運用獨熱編碼對離散型特征進(jìn)一步處理。
經(jīng)過特征的選擇與處理,使用Scikit-Learn(簡稱sklearn)學(xué)習(xí)庫,最終輸入到模型的數(shù)據(jù)總共16 個字段,如表2 所示,其中:平均到達(dá)延誤時間delay of arrive 為目標(biāo)變量;其他為特征變量。
表2 航班數(shù)據(jù)字段Tab.2 Flight data field
為了對訓(xùn)練模型進(jìn)行測試,需要將收集到的數(shù)據(jù)進(jìn)行分割,一部分作為訓(xùn)練集,另一部分作為測試集,對模型進(jìn)行評估測試,訓(xùn)練集與測試集的比例為3 ∶1。
3.2.1 評估方法
評價指標(biāo)是用來衡量模型好壞程度的標(biāo)準(zhǔn)。模型評價指標(biāo)選用確定系數(shù)R2和平均絕對值誤差eMAE對模型進(jìn)行評估,其中:R2表示模型的擬合程度,取值范圍為[0,1];eMAE表示預(yù)測值與實際值之間的平均誤差,取值范圍為[0,+∞),使用eMAE能有效降低異常數(shù)據(jù)對結(jié)果的影響。R2和eMAE的計算方法如下
使用k 折交叉驗證方法對模型進(jìn)行評估,使用這個方法無需使用train_test_splite 進(jìn)行數(shù)據(jù)分割,直接導(dǎo)入建立好的模型、數(shù)據(jù)集和評判指標(biāo)即可自動進(jìn)行數(shù)據(jù)分割、訓(xùn)練和評估。
k 折交叉驗證原理為將原數(shù)據(jù)集平均分成k 份,依次取一份作為測試集,其他作為訓(xùn)練集,分別計算每個測試集的成績,每個成績包括R2和eMAE,最后將算出的k 個成績,取其平均值即為k 折驗證的最終成績。由于交叉驗證所需時間大約為用train_test_splite手動進(jìn)行數(shù)據(jù)分割、訓(xùn)練、驗證所需時間的k 倍,為了在準(zhǔn)確率和花費時間之間取得平衡,將數(shù)據(jù)集均分為4 份,即4 折交叉驗證,如圖10 所示。
圖10 交叉驗證示意圖Fig.10 Cross-validation diagram
3.2.2 評估結(jié)果
經(jīng)過對模型進(jìn)行4 折交叉驗證,結(jié)果為:模型的R2為0.83,均值eMAE約為10 min。表3 為部分測試集的預(yù)測值與真實值的比較。
表3 部分測試集的預(yù)測值與真實值Tab.3 Predicted and actual values of part of the test set
由于各模型自身存在的優(yōu)勢與缺陷,將使用Logistic 回歸算法、K-近鄰回歸(KNN,k-nearest neighbor)算法和決策樹算法與隨機森林回歸模型進(jìn)行比較,訓(xùn)練集與測試集使用相同的數(shù)據(jù)集。使用以上3 種模型及隨機森林回歸模型評估結(jié)果如表4 所示。
表4 模型比較Tab.4 Comparison of model
由表4 的結(jié)果可以看出,隨機森林回歸模型預(yù)測效果最好。
使用決策樹中的CART 算法建立隨機森林回歸模型,并收集了國內(nèi)一年內(nèi)的部分航班數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),并通過大量的模型訓(xùn)練驗證了模型的有效性,模型的擬合程度R2可達(dá)到0.83。該方法可處理高維度的數(shù)據(jù),泛化能力好,降低了過擬合的可能性,但航班延誤離不開天氣等因素,在下一步的研究中將天氣因素加入其中,進(jìn)一步提高模型的準(zhǔn)確率。