廖 璐,張亞東,葛曉程,郭 進,禹 倩
(1.西南交通大學信息科學與技術學院,成都 611756; 2.哈德斯菲爾德大學鐵路研究所,英國)
隨著鐵路網絡化的快速發展,旅客出行需求的增長讓鐵路線路的利用率越來越高,列車開行密度越來越大。在保證列車安全運行的前提下,確保準點率是鐵路運輸服務質量的關鍵。
列車按預先設計的運行圖運行,但在實際運行過程中往往會受到如惡劣天氣、設備故障、人為失誤等不確定因素干擾[1-2],造成初始晚點,其次由于晚點傳播效應,初始晚點的晚點效應會延伸至后續列車,進而出現連帶晚點。列車的晚點會延誤旅客和貨物行程,造成直接的經濟損失,嚴重情況下可能引起鐵路運輸網中斷,大大降低鐵路運輸效率,給行車組織工作帶來巨大壓力[3-4]。因此,準確有效地實現鐵路列車晚點時長預測,對列車運行圖優化、列車運行指揮優化和確保鐵路運輸服務質量具有重要意義。
列車晚點是一個一直受學術界關注的問題,國內外學者在列車晚點預測方面做了大量研究。Javad Lessan等[5]通過建立3種不同的貝葉斯網絡結構來識別晚點傳播鏈中變量的關系,以實現晚點預測;Steven Harrod等[6]基于運行計劃中的緩沖時間和補充時間提出一種計算累積晚點的方法以實現晚點預測;Rob M.P. Goverde[7]采用max-plus方法計算由初始晚點引起的連帶晚點,以此預測后續晚點值;隨著鐵路運營信息化的發展,在列車運行信息的全面采集和充分處理的基礎上,通過利用機器學習和深度學習算法在列車晚點預測方面也有一些最新的研究。Luca Oneto等[8]建立了基于淺層和深層學習機的列車晚點預測系統,通過實際運行數據測試表明系統性能更優;Rahul Nair等[9]使用集成模型預測列車晚點,在實際數據集上預測效果提升25%;牟瑋瑋[10]等基于列車實際運行數據,運用隨機森林和人工神經網絡分別建立列車到達晚點的預測模型,實驗結果表明隨機森林預測效果更好;黃平等[11-12]以實際運行數據為基礎,分別建立晚點恢復時間預測的隨機森林模型和基于循環神經網絡的列車晚點時間實時預測模型。曾壹等[13]基于晚點分類方法,采用反向傳播神經網絡預測晚點時長,但網絡受突發事件影響較大。張琦等[14]針對高速鐵路列車連帶晚點,提出一種基于小波神經網絡的列車連帶晚點預測方法,但模型無法實現所有晚點預測。
在總結現有分析方法的基礎上,通過對倫敦至曼徹斯特1H車次實際運行數據進行分析,提出一種基于GBDT(Gradient Boosting Decision Tree,梯度提升樹)的列車晚點時長預測模型,并與其他分析方法進行了比較。根據列車實際運行數據分析驗證表明,基于GBDT的預測模型具有更高的預測精度。
GBDT屬于一種有監督的集成學習算法,可用于分類問題的識別和預測問題的解決[15]。相較于隨機森林、神經網絡算法,能充分考慮每個分類器的權重,同時具有高準確率、高穩定性、低運算時間、算法參數少的特點,目前已應用于醫學[16]、城市交通[17-18]、電力[19]、經濟[20]等方面的預測研究中。
GBDT算法的核心是在第m輪基礎模型中,利用損失函數的負梯度值作為該輪基礎模型損失值的近似,并通過這一近似值構建下一輪基礎模型,使目標函數的求解更為便利。算法的訓練過程如圖1所示。

圖1 GBDT算法訓練過程
GBDT算法操作基本步驟如下。
輸入:數據集T={(x1,y1),(x2,y2),…,(xn,yn)},損失函數L(y,f(x))。
輸出:梯度提升模型F(x)。
初始化(c為使損失函數達到極小值的常數)
(1)
對m=1,2,…,M(M表示迭代次數,即生成的基礎模型的個數)。
(1)對樣本i=1,2,…,n,計算損失函數的負梯度,用作殘差的估計值
(2)
(2)利用數據集(xi,rmi)擬合下一輪基礎模型,得到對應的葉子結點Rmj,j=1,2,…,J,計算每個葉子節點Rmj的最佳擬合值,使損失函數最小
(3)
(3)計算所有葉子節點Rmj對應的cmj之和得到第m輪的基礎模型fm(x)
(4)
結合前m-1輪的基礎模型得到最終強學習器,它表示每一個基礎模型在樣本點xi處的cmj之和
本文列車運行實際數據來自英國西海岸主線(West Coast Main Line,WCML)鐵路,線路全長642 km,全線包含51個車站(倫敦尤斯頓站至曼徹斯特皮卡迪利站)。數據包含84個列車車次的1 024 079條列車運行記錄,時間跨度為2019年3月1日至2019年3月31 日,相同車次的列車承擔相同的運行計劃,從數據中可知各車次列車運行間隔。本文以1H車次旅客快車為研究對象,進行后續分析和建模。當月共包含75 850條1H車次列車運行數據,該車次途經線路上37個車站,部分原始數據如表1所示。

表1 原始數據(部分)
表1中各字段具體含義如下:
(1)TRAIN_ID:當前列車ID;
(2)LOCATION:當前列車經過的車站編號;
(3)HEADCODE:列車車次;
(4)PLATFORM:站臺編號;
(5)ACTUAL_EVENT_DATE_AND_TIME:當前列車活動事件的實際時間;
(6)PLANNED_EVENT_DATE_AND_TIME:當前列車活動事件的計劃時間;
(7)TYPE_OF_EVENT:當前列車活動事件類型,D為出發事件,A為到達事件;
(8)TIMETABLE_VARIATION:與時刻表偏差值,單位為min;
(9)VARIATION_STATUS:偏差狀態,E為早點狀態,L為晚點狀態,空值為準點狀態;
(10)NEXT_REPORT:當前列車運行方向下一車站編號;
(11)TOC:運營公司代碼。
原始數據中通過TIMETABLE_VARIATION和VARIATION_STATUS表示列車當前早晚點情況,如361H40MQ01次列車到達曼徹斯特皮卡迪利站(LOCATION=32000)處晚點3 min。
根據列車運行實際數據,以2 min為間隔統計1H車次列車的晚點時長分布直方圖和核密度圖如圖2所示,該車次列車晚點時長多在20 min以內。以20 min為間隔統計1H車次列車全天的列車數分布如圖3所示,該車次列車運行在早8點至凌晨3點之間;統計全線各車站晚點率如圖4所示,除少數車站外,大部分車站晚點率在0.4以上,表明線路晚點情況比較嚴重。

圖2 1H車次晚點時長分布

圖3 1H車次全天列車數分布

圖4 1H車次車站晚點率
在建模前,對原始數據進行以下預處理工作。
(1)異常值處理:由于異常值會影響模型預測效果,因此將數據中的異常值進行刪除。
(2)重復值處理:重復觀測值會影響預測模型結果的準確性,對數據集進行重復性檢驗,若存在重復觀測,則進行刪除處理。
(3)離散變量處理:原始數據集中的離散變量無法直接用于建模,同時由于數字無法準確還原不同類別信息之間的差異和關聯,因此采用標志方法和數據轉換方法處理離散變量。
(4)標準化:數據標準化的目的是處理不同規模和量綱的數據[21],使其縮放到相同的區間和范圍,以減少規模、特征、分布差異對后續建模的影響。數據標準化公式如下

(6)

鐵路網中列車運行過程可以表示為一系列事件和過程的集合[22]。事件包含列車的到達事件和出發事件,過程包含列車的運行過程和停站過程。事件和過程之間的依賴關系可以用時間事件圖(Timed-event Graphs)來表示。在時間事件圖中,節點表示列車在車站的到達(A)或出發(D)事件,節點的權重表示列車當前事件的早晚點情況,有向弧表示事件的轉移,有向弧權重表示事件之間的運行(停站)時間。以1H01車次和1H02車次為例,建立時間事件圖如圖5所示。

圖5 時間事件圖示例
從圖5可以分析,當列車在車站/觀測點發生晚點時,晚點會產生橫向傳播和縱向傳播。橫向傳播即影響下一趟列車,若晚點不能被運行圖吸收(晚點時間大于運行圖設置的緩沖時間),則下一趟列車同樣發生晚點;縱向傳播即影響本次列車本身,若晚點不能被運行圖吸收(晚點時間大于運行圖設置的補充時間),則列車的下一事件仍然晚點。
考慮第t列車在車站s處的晚點值Dt,s應與列車在車站s-1處的晚點值Dt,s-1以及第t-1列車在車站s處的晚點值Dt-1,s有關,用r表示運行時間的補充時間,h表示列車追蹤的緩沖時間,則晚點值Dt,s可以表示為
Dt,s=max(Dt,s-1-r,Dt-1,s-h,0)
(7)
根據以上分析,列車晚點值Dt,s與Dt,s-1、Dt-1,s、r、h相關,因此本文選取以下變量構成數據特征集。
(1)第s站的偏差值(time_difference)
列車在當前車站的偏差值,正偏差值表示晚點,負偏差值表示早點。
(2)上一趟列車第s站的偏差值(last_tradiff)
前一趟列車在當前車站的偏差值,正偏差值表示晚點,負偏差值表示早點。
(3)列車第s-1站的偏差值(last_locdiff)
列車在前一車站的偏差值,正偏差值表示晚點,負偏差值表示早點。
(4)列車與上一趟列車的計劃運行間隔時間(lasttra_plan_runtime)
(5)列車與上一趟列車的歷史實際運行間隔時間均值(lasttra_actual_runtime)
(6)列車第s-1站至第s站的計劃運行時間(lastloc_plan_runtime)
(7)列車第s-1站至第s站的歷史實際運行時間均值(lastloc_actual_runtime)
(8)到達事件/出發事件標志(A_flag)
重構后的數據特征集每條數據包含8個變量,其中因變量(預測變量)為列車第s站的偏差值。本文按照3∶1的比例將數據特征集劃分為訓練集和測試集,在訓練集上進行參數選擇和構建預測模型,在測試集上進行預測和評估,進而驗證模型在樣本外的表現能力。部分數據特征集如表2所示。

表2 數據特征集(部分)
本文采用Python機器學習庫中sklearn模塊進行建模分析。該模塊中GBDT模型參數主要分為三類:決策樹參數、提升參數、其他參數[23]。部分主要參數如表3所示。

表3 GBDT模型參數
為使預測模型達到最佳的擬合效果,在建立預測模型前,應先進行模型參數調整。本文主要針對模型迭代的學習率(learning_rate)、基礎模型數量(n_estimators)、基礎模型包含最大深度(max_depth)和每個基礎模型包含的最多分割字段數(max_features)四個參數進行調參,其他參數選擇默認參數。在GBDT模型中,較小的learning_rate需要迭代更多的基礎模型,增大計算量;較大的max_depth和max_features會導致模型過擬合,因此常利用交叉驗證法確定合理的參數值。在訓練集上的調參步驟如下。
(1)將learning_rate設置為0.5,采用5重交叉驗證方法對n_estimators進行尋優。
(2)在得到最優n_estimators后,對max_depth和max_features同樣用5重交叉驗證方法尋優。
(3)降低學習率,并按比例增加基礎模型數量,尋找使均方誤差最低的學習率和基礎模型數量組合。各學習率和基礎模型數量組合下的均方誤差值見表4。

表4 各參數組合的均方誤差值
根據實驗結果(表4),本文選擇各參數取值如下:learning_rate=0.05,n_estimators=800,max_depth=5,max_features=5。利用上述參數組合,建立GBDT晚點時長預測模型。
由于GBDT訓練的過程是通過不斷降低偏差來提高最終模型的精度,因此弱分類器一般選擇具有低方差和高偏差的決策樹模型。同時預測模型的因變量是連續的數值型變量,因此選擇平方損失函數作為模型的損失函數。

初始化弱分類器:對式(1)中的平方損失函數直接求導,令導數等于零,得到c。
(8)
因此初始化時,c的取值為所有訓練樣本標簽值的均值。
梯度提升模型中基礎模型數量M=800,對于m=1,2,…,M:
(1) 對樣本i=1,2,…,n,根據式(2)計算損失函數的負梯度值
(9)
(2)利用數據集(xi,rmi)擬合下一輪基礎模型,模型最大深度為5,所包含的最多分割字段數為5。得到第m棵決策樹的葉子節點,并計算各葉子節點的最佳擬合值

(10)
式(10)表示cmj的取值為第m棵樹的第j個葉節點中殘差的均值。
(3)更新

(11)
結合前m-1輪的基礎模型,加入學習率為防止模型過擬合。得到梯度提升模型
FM(x)=FM-1(x)+vfm(x)
(12)
其中,v為學習率。
本文將采用預測連續變量常用的衡量指標均方誤差(MSE)和決定系數(R-square)對模型進行評估。計算公式如下

(13)

(14)

為判斷調參后GBDT模型優劣,采用同樣的數據集構建了集成模型中的隨機森林模型、單一模型中的決策樹模型以及基于默認參數的GBDT模型進行預測結果對比,其中隨機森林模型和決策樹模型均使用交叉驗證法確定了最優參數。調參后GBDT模型預測結果見表5,其余各模型預測結果見圖6,MSE和R-square值如表6所示。

表5 GBDT模型(調參)預測結果

表6 各模型指標對比

圖6 各模型預測結果
針對以上預測結果可以看出:(1)調參后的GBDT預測模型預測精度較高,在允許誤差3min以內預測精度為99.76%;(2)預測結果圖中,決策樹模型和基于默認參數的GBDT模型預測值較真實值偏差較大,隨機森林模型預測效果較好但其點分布較調參后的GBDT模型仍然分散;(3)調參后的GBDT模型均方誤差為0.4685,決定系數值為0.9878,預測效果優于決策樹模型、隨機森林模型和基于默認參數的GBDT模型。因此,調參后的GBDT模型是預測結果最佳的模型。
同時對調參后的GBDT預測模型使用模型內置函數feature_importances提取特征對于模型的重要度,特征重要度如表7所示。結合各特征重要度排序,可以看出影響該車次列車晚點的關鍵因素是列車第n-1站的偏差值,這表明列車在前一站的晚點對本站影響較大。

表7 特征重要度排名
結合列車運行實績數據提出一種基于GBDT的列車晚點預測方法,并對比分析了與決策樹模型、隨機森林模型、默認參數的GBDT模型的預測效果。數據實驗結果表明,調參后的GBDT預測模型具有更好的預測效果,在誤差允許3 min以內的預測精度為99.76%。同時,經過預測模型中特征重要度的排序,識別出影響列車晚點的關鍵因素是列車前一站的晚點偏差值。在后續研究中,可基于列車運行間隔和相似性分析,將預測模型推廣至其他車次和線路。