朱穎婷,張 軍,曹先彬,楊立鵬
(1.中國鐵道科學(xué)研究院集團有限公司 電子計算技術(shù)研究所, 北京 100081;2.北京航空航天大學(xué) 電子信息工程學(xué)院, 北京 100191;3.北京理工大學(xué) 前沿交叉科學(xué)研究院, 北京 100081)
鐵路12306售票系統(tǒng)是全球服務(wù)規(guī)模最大的客票系統(tǒng),截至目前已平穩(wěn)運行近10年。在所有鐵路售票渠道中,其售票量占比接近90%,極大方便了旅客出行購票。為了保證售票系統(tǒng)平穩(wěn)運行,12306運營團隊在超級高峰期和一般高峰期采取差異化的運維策略。在春運、國慶節(jié)等超級高峰期將余票查詢請求轉(zhuǎn)至第三方云服務(wù)廠商處理,借助第三方云服務(wù)廠商的軟硬件資源,為12306自有數(shù)據(jù)中心緩解80%以上的訪問壓力。在清明節(jié)、五一勞動節(jié)、周末等一般高峰期,目前主要通過實時監(jiān)控訂單量、流量等核心業(yè)務(wù)指標(biāo)的波動變化,根據(jù)業(yè)務(wù)經(jīng)驗判斷系統(tǒng)是否出現(xiàn)異常情況,再及時優(yōu)化系統(tǒng)硬件配置、運行參數(shù)等。實時監(jiān)控的方式要求技術(shù)人員能夠及時、快速響應(yīng)突發(fā)情況,若處理異常情況稍不及時,可能影響用戶正常購票。因此,需要研究一種離線預(yù)估訂單量和網(wǎng)絡(luò)流量(點擊次數(shù))的方法,從而可提前較多時間準(zhǔn)備系統(tǒng)運維應(yīng)急預(yù)案。
以2019年4月至5月的訂單量和系統(tǒng)所有業(yè)務(wù)的流量為例,對訂單量和網(wǎng)絡(luò)流量(即點擊次數(shù))分別進行最大最小歸一化,得到訂單量時序趨勢,見圖1。由圖1可知,訂單量和網(wǎng)絡(luò)流量的趨勢基本一致,在清明節(jié)后、五一勞動節(jié)前后兩者同時趨于階段性峰值;結(jié)束假期后,兩者同步趨于階段性低值。在一般性高峰期,訂單量和網(wǎng)絡(luò)流量具有明顯的正相關(guān)關(guān)系,對12306售票系統(tǒng)網(wǎng)絡(luò)流量的預(yù)測基本等價于對訂單量的預(yù)測。但由于流量數(shù)據(jù)管理起步較晚、存儲條件有限、缺少超級高峰期流量數(shù)據(jù)等原因,目前僅基于歷史流量數(shù)據(jù)對未來流量進行預(yù)估,難以保證預(yù)估結(jié)果的準(zhǔn)確性和可靠性。
圖1 訂單量和網(wǎng)絡(luò)流量時序趨勢對比
考慮到2020年新冠肺炎疫情對鐵路旅客出行有較大影響,本文僅以2015年至2019年的鐵路客票訂單量為研究對象。2015年至2019年鐵路客票訂單量的時序圖見圖2,可以看到受我國節(jié)假日安排、高速鐵路網(wǎng)絡(luò)迅速發(fā)展和鐵路運能持續(xù)提升等因素的影響,12306售票系統(tǒng)的訂單量在不同年份的相同月份訂單量出現(xiàn)相似的波峰波谷,且訂單量呈整體上升趨勢,具有明顯的周期性、季節(jié)性和趨勢性特征。
圖2 2015年至2019年互聯(lián)網(wǎng)訂單量時序趨勢
針對這類走勢的時間序列,傳統(tǒng)的時間序列預(yù)測算法有移動平均、ARIMA(Autoregressive Integrated Moving Average)、指數(shù)平滑和決策樹模型[1-4],但這類算法往往只考慮近期數(shù)值對未來數(shù)值的影響,容易忽略過去較長的歷史數(shù)值和近期數(shù)值之間的關(guān)系。近年來隨著深度學(xué)習(xí)技術(shù)的發(fā)展,涌現(xiàn)出多種以深度學(xué)習(xí)算法為基礎(chǔ)的時間序列預(yù)測算法。由于LSTM[5](Long Short-term Memory)模型可兼顧過去較長時期和近期數(shù)值對未來的影響,在醫(yī)學(xué)、金融等領(lǐng)域被廣泛研究和應(yīng)用[6-7],通過優(yōu)化模型結(jié)構(gòu)、特征和參數(shù),和ARIMA等傳統(tǒng)方法組合應(yīng)用[8-9]、多種深度學(xué)習(xí)模型綜合應(yīng)用[10]等方式,可以進一步提升預(yù)測結(jié)果。單純的LSTM預(yù)測模型和多種深度學(xué)習(xí)模型組合預(yù)測的方法,其預(yù)測效果受所選擇的特征和參數(shù)影響較大,類似鐵路旅客出行這種存在明顯季節(jié)性、周期性和趨勢性特征的數(shù)據(jù),不可能使用固定規(guī)則的特征。LSTM和ARIMA組合應(yīng)用的方式,往往也取決于訓(xùn)練樣本數(shù)據(jù)的平穩(wěn)性,如果周期和趨勢特征過于復(fù)雜,將大大增加模型的計算量。
在優(yōu)化模型結(jié)構(gòu)、特征和參數(shù),以及多種方法組合預(yù)測都難以提升預(yù)測效果的情況下,模型融合是一種提升預(yù)測效果的簡便方式。針對預(yù)測問題,常用的模型融合方法有加權(quán)求和、Bagging、Stacking、Blending和Boosting等方式[11-12]。加權(quán)平均方法對不同模型的預(yù)測結(jié)果賦予不同權(quán)值,對各模型的預(yù)測結(jié)果進行加權(quán)求和;Bagging方法采用有放回的方式進行抽樣,用抽樣的樣本建立子模型進行訓(xùn)練;Stacking方法采取k-折交叉驗證方式先訓(xùn)練第一層模型,得到預(yù)測結(jié)果,對第一層模型的預(yù)測結(jié)果拼接后訓(xùn)練第二層模型,得到最終預(yù)測結(jié)果;Blending和Stacking的預(yù)測流程基本相同,區(qū)別在于訓(xùn)練第一層模型時,Blending未采用k-折交叉驗證;Boosting將不同基模型串聯(lián)起來集成學(xué)習(xí)、順序運行,下層模型的訓(xùn)練依賴于上層模型的計算結(jié)果。針對時間序列預(yù)測問題,若簡單采用傳統(tǒng)Bagging、Stacking和Blending的方式,會使用時間靠后的序列預(yù)測靠前的序列,這有悖于事物發(fā)展的自然規(guī)律,預(yù)測結(jié)果必然存在較大的不確定性、不可靠性和不可解釋性。
本文通過分析鐵路客票歷史訂單量的長短期趨勢、周期性等特征,充分利用LSTM可兼顧長短期數(shù)據(jù)特征的優(yōu)勢,并借鑒傳統(tǒng)Stacking和Blending模型融合方法的思想,提出了一種基于多步LSTM模型融合的鐵路客票訂單量預(yù)測方法。該方法將訓(xùn)練模型分為兩層,首先在第一層模型根據(jù)訂單量的周期性特征構(gòu)建多個LSTM預(yù)測模型,并采用貝葉斯優(yōu)化方法得到最優(yōu)候選參數(shù)集合,通過驗證集篩選后進一步得到最優(yōu)參數(shù)集合;再在第二層模型對第一層模型的預(yù)測結(jié)果進行融合,進一步提升預(yù)測精度和穩(wěn)定性。
鐵路客票訂單量在2015年至2019年每周各天的走勢見圖3。由圖3可知,周一至周日的訂單量存在規(guī)律性的波峰和波谷,在近5年內(nèi)走勢幾乎一致,且逐年穩(wěn)步增長,說明鐵路客票訂單量呈現(xiàn)7 d一個小周期和每年一個大周期的變化規(guī)律。
圖3 2015—2019年周一至周日鐵路客票訂單量走勢
根據(jù)輸入的訂單時序數(shù)據(jù),構(gòu)造一個包含第d天和前第r天內(nèi)的訂單量的矩陣D為
D=[yd-r,yd-r+1,…,yi,…,yd]
式中:yd為某一天d的訂單量;yd-1、yd-2、…、yi、…、yd-r分別為第d-1、d-2、…、i、…、d-r天的訂單量,是第d天訂單量的特征。
yd和yi的皮爾森相關(guān)系數(shù)ρi為
d-r≤i≤d
(1)
式中:E(yd)、E(yi)分別為第d天訂單量、前第i天訂單量的均值。
yd和其前70 d內(nèi)每日訂單量的皮爾森相關(guān)系數(shù)見圖4。由圖4可知,除每隔6、7 d外,日期越小,其訂單量和yd的相關(guān)性就越??;每隔7 d,相關(guān)性較前2天有所上升,之后再慣性下降。
圖4 相關(guān)性分析
選擇相關(guān)系數(shù)超過0.8的歷史訂單量作為主要特征,再結(jié)合訂單量以7 d為一個小周期波動的特性,以{y1,y2,…,yb}作為數(shù)據(jù)集,預(yù)測某天的訂單量yd,需要參考的歷史日期最長為49 d,即b≤49。
為了提高模型的訓(xùn)練速度和預(yù)測精度,首先對數(shù)據(jù)集進行歸一化。很多研究學(xué)者在處理類似問題時,往往將訓(xùn)練集和測試集當(dāng)成一個整體進行歸一化操作[15],但在實際工程應(yīng)用中,測試集屬于還未發(fā)生的數(shù)據(jù),不可能像理論研究中一樣對全體數(shù)據(jù)集進行歸一化處理。因此,本文采用線性歸一化方法,將原始數(shù)值等比例縮放至[0,1]區(qū)間,對訓(xùn)練集和測試集分別進行歸一化處理,首先將訓(xùn)練集中的最大值、最小值和待預(yù)測日期的輸入變量集進行合并,再對待預(yù)測日期的輸入變量集進行歸一化。
(2)
(3)
基于多步LSTM模型融合的訂單量預(yù)測框架即根據(jù)不同數(shù)量的特征變量,首先構(gòu)造若干個LSTM模型作為第一層預(yù)測模型,再在第二層模型對第一層模型的預(yù)測結(jié)果進行融合,預(yù)測流程見圖5。
圖5 預(yù)測框架
(1)首先將數(shù)據(jù)劃分為訓(xùn)練集、驗證集和測試集,并按照1.2節(jié)中的方法將訓(xùn)練集和驗證集進行整體歸一化得到訓(xùn)練集{y1,y2,…,yn}、驗證集{yn+1,yn+2,…,yn+m},再對測試集進行歸一化得到{t1,t2,…,tl}。
(2)根據(jù)鐵路客票訂單量周期特征構(gòu)建多步LSTM模型,并采用貝葉斯優(yōu)化算法計算最優(yōu)候選超參數(shù)集合。
(3)根據(jù)候選超參數(shù)在驗證集上的預(yù)測效果,選擇最優(yōu)超參數(shù)集合,并對LSTM模型預(yù)測結(jié)果進行融合,從而進一步提升預(yù)測效果。
(4)在測試集驗證預(yù)測效果,若效果不及預(yù)期,則調(diào)整時間窗口b值,再次訓(xùn)練模型。
分別以待預(yù)測日期的前21、28、35、42、49 d訂單量作為特征(look_back分別為21、28、35、42、49),構(gòu)造5個由LSTM層、dropout層和dense(全連接)層構(gòu)成的3層結(jié)構(gòu)LSTM預(yù)測模型,以look_back=21為例,LSTM預(yù)測模型的結(jié)構(gòu)見圖6。由于訓(xùn)練集數(shù)據(jù)較少,為了防止過擬合,采用dropout方法在學(xué)習(xí)過程中隨機刪除神經(jīng)元。圖中“?”表示dropout層。深色標(biāo)出的神經(jīng)元表示在訓(xùn)練過程中會被刪除,被刪除的神經(jīng)元將不再參與數(shù)據(jù)的傳遞。剩余的神經(jīng)元pn-21、pn-19、…、pn-1傳遞給dense層,對數(shù)據(jù)進行整理計算后最終得到預(yù)測結(jié)果pn。
圖6 LSTM預(yù)測模型結(jié)構(gòu)示意圖
訓(xùn)練深度學(xué)習(xí)模型一般都比較耗時,本文采用貝葉斯優(yōu)化方法求解LSTM模型的最優(yōu)超參數(shù)。貝葉斯優(yōu)化[13-14]通過基于目標(biāo)函數(shù)的過去評估結(jié)果建立替代函數(shù),來找到最小化目標(biāo)函數(shù)的值。貝葉斯優(yōu)化方法和網(wǎng)格搜索與隨機搜索的不同之處在于,它在嘗試下一組超參數(shù)時,會參考之前的評估結(jié)果,并不斷更新替代函數(shù),通過推斷過去的結(jié)果來逼近最優(yōu)參數(shù),可以提高尋找最優(yōu)參數(shù)的計算速度。貝葉斯優(yōu)化的大體思路如下[7-8]:首先生成一個初始候選解集合,然后根據(jù)這些點尋找下一個有可能是極值的點,將該點加入集合中,重復(fù)這一步驟,直至迭代終止。最后從這些點中找出極值點作為問題的解。
平均絕對百分比誤差(Mean Absolute Percentage Error,MAPE)是評價預(yù)測效果的指標(biāo)之一,以q為樣本數(shù),yi為實際值,MAPE的預(yù)測值PMAPE為
(4)
以PMAPE為優(yōu)化目標(biāo),對不同look_back值下的LSTM模型,采用貝葉斯優(yōu)化方法迭代計算T次,分別得到LSTM模型的候選參數(shù)集合Λ1={λ1,1,λ1,2,…,λ1,k}、Λ2={λ2,1,λ2,2,…,λ2,k}、…、Λ5={λ5,1,λ5,2,…,λ5,k}。其中,k為按照PMAPE從小到大排序,取前k個PMAPE值對應(yīng)的超參數(shù)集合。
在使用貝葉斯優(yōu)化方法求解最優(yōu)參數(shù)時,需要選擇PMAPE最小值對應(yīng)的超參數(shù)集合,但在訓(xùn)練模型過程中發(fā)現(xiàn)這樣非常容易導(dǎo)致過擬合[13-14]。取前幾個較小PMAPE對應(yīng)的超參數(shù)集合,分別在驗證集上訓(xùn)練模型,選擇最小PMAPE對應(yīng)的最小超參數(shù)集合作為LSTM模型的最優(yōu)超參數(shù)集合。LSTM模型參數(shù)包括隱藏層尺寸s、dropout層中刪除神經(jīng)元的比例a、批處理數(shù)據(jù)個數(shù)s和訓(xùn)練次數(shù)e;以b=21為例,λ1,k是一個候選超參數(shù)集合,λ1,k={s1,k,a1,k,s1,k,e1,k}。
基于文獻[7-8]中的貝葉斯優(yōu)化算法,本文的LSTM模型參數(shù)尋優(yōu)過程如下:
Step1輸入一組超參數(shù),并根據(jù)特征分析結(jié)果、訓(xùn)練集長度和業(yè)務(wù)經(jīng)驗等確定超參數(shù)的搜索范圍,以look_back=21為例,隱藏層尺寸s的搜索范圍為[1,100],刪除神經(jīng)元比例a的搜索范圍為[1,50],批處理數(shù)據(jù)個數(shù)s的搜索范圍為[2,50],訓(xùn)練次數(shù)e的搜索范圍為[50,200]。
Step2構(gòu)造替代函數(shù),該函數(shù)包含LSTM預(yù)測模型的完整訓(xùn)練過程。
Step3以PMAPE為評價指標(biāo),構(gòu)造目標(biāo)函數(shù),在優(yōu)化過程中記錄并輸出PMAPE。
Step4迭代T次順序計算Step1~Step3,選擇前k個較小PMAPE對應(yīng)的超參數(shù)集合。
(1)驗證集預(yù)測結(jié)果融合
以5個不同b值為例,用驗證集{yn+1,yn+2,…,yn+m}及其預(yù)測結(jié)果{p1,n+1,p1,n+2,…,p1,n+m},…,{p5,n+1,p5,n+2,…,p5,n+m}構(gòu)造第二層模型的訓(xùn)練數(shù)據(jù)集T,分別采用兩種方式對進行融合,從而進一步提升LSTM模型的預(yù)測效果。
(5)
(6)
在訓(xùn)練模型時,由于將訓(xùn)練集、驗證集和測試集按照年份劃分,線性回歸模型難以捕捉到訓(xùn)練數(shù)據(jù)的長期周期特征,需要按照訂單量的年增長規(guī)律對預(yù)測結(jié)果進行調(diào)整。其中θ為訂單量年增長均值,可根據(jù)歷年訂單量增長趨勢統(tǒng)計得到。β1、…、β5為自變量系數(shù),ε1、ε2、…、εm為誤差項。
針對加權(quán)平均和LightGBM采用網(wǎng)格搜索方法可得到最優(yōu)超參數(shù),由于其計算方法較簡單,本文不再贅述。
(2)驗證測試集預(yù)測效果及特征調(diào)優(yōu)
以2015年至2019年鐵路客票訂單量為實驗數(shù)據(jù),其中2015年至2017年的數(shù)據(jù)為訓(xùn)練集、2018年的數(shù)據(jù)為驗證集、2019年的數(shù)據(jù)為測試集,在時間窗口b為21、28、35、42、49時分別迭代執(zhí)行100次貝葉斯優(yōu)化算法,選擇MAPE值最小的前10個超參數(shù)集合,對比分析不同b下的LSTM預(yù)測效果,以及在第二層模型中不同融合方式下的預(yù)測效果。
根據(jù)2.2節(jié)的參數(shù)尋優(yōu)過程,再在驗證集上執(zhí)行LSTM模型后選擇最優(yōu)超參數(shù),經(jīng)過進一步篩選計算,得到最優(yōu)參數(shù)見表1。
表1 LSTM模型最優(yōu)參數(shù)
由于LSTM模型中包含dropout層,在計算過程中隨機刪除神經(jīng)元,導(dǎo)致多次預(yù)測結(jié)果可能存在一定的差異性。針對不同時間窗口b,分別對測試集進行50輪預(yù)測,每輪計算的MAPE值見圖7;并計算MAPE均值和方差,結(jié)果見表2。
表2 LSTM模型預(yù)測MAPE分析
由表2可見,由于b的取值以一個星期為間隔,且和待預(yù)測日期的訂單量存在較強的相關(guān)性,在上述不同b值下的LSTM預(yù)測模型均能達(dá)到較高的預(yù)測精度,其誤差范圍均不超過0.06,且預(yù)測準(zhǔn)確度比較平穩(wěn)。當(dāng)b=42時,MAPE均值為0.048,預(yù)測精度最高;其次為b=49時,MAPE均值為0.050。
由于訓(xùn)練集和測試集數(shù)據(jù)年份跨度較大,但LSTM模型的預(yù)測精度仍然達(dá)到較高水平,說明本文的特征提取及參數(shù)優(yōu)化方法具有較高的有效性。盡管使用貝葉斯優(yōu)化方法求解最優(yōu)參數(shù)較為耗時,但若已發(fā)生的訂單數(shù)據(jù)依然呈現(xiàn)圖3中的趨勢特征,則可繼續(xù)使用表1中的參數(shù)值,而不需要再次執(zhí)行LSTM模型的調(diào)參方法。
根據(jù)2.3節(jié)中的3類融合方法,對3.1節(jié)中LSTM模型的50輪預(yù)測結(jié)果分別進行二次融合,計算不同方法下的MAPE,每輪預(yù)測的MAPE值見圖8;計算MAPE均值和方差,結(jié)果見表3。
圖8 模型融合MAPE分析
表3 模型融合MAPE分析
可以看出,無論采用哪種模型融合預(yù)測幾個后,MAPE方差都明顯減小,預(yù)測結(jié)果的穩(wěn)定性得到較大改善;加權(quán)平均融合方法的平均MAPE小于所有b下LSTM模型的平均MAPE,預(yù)測精度最高;而采用線性回歸和LightGBM模型融合LSTM的預(yù)測結(jié)果后,其預(yù)測精度反而稍低于b=42時的預(yù)測精度。
在這3種融合方法中,加權(quán)平均的計算流程最簡單。這說明當(dāng)對訂單量特征提取得比較準(zhǔn)確時,簡單的模型反而可能得到更高的預(yù)測精度和計算效率。
采用加權(quán)平均模型融合后預(yù)測值和實際訂單量的走勢對比見圖9。由圖9可以看到,預(yù)測值和實際值走勢幾乎保持一致,本文的預(yù)測方法幾乎完全捕捉到了訂單量的所有周期性和季節(jié)性特征。但是,從圖9中也能看出,當(dāng)訂單量處于波峰位置時,部分預(yù)測值稍低于實際值;當(dāng)訂單量處于波谷位置時,部分預(yù)測值稍大于實際值。
圖9 加權(quán)平均模型融合預(yù)測效果
為維護12306售票系統(tǒng)平穩(wěn)運行,技術(shù)人員需要實時監(jiān)控系統(tǒng)訂單量、流量等核心指標(biāo)變化。提前預(yù)估12306售票系統(tǒng)訂單量數(shù)值及其變化規(guī)律,可以為技術(shù)人員準(zhǔn)備應(yīng)急預(yù)案提供決策依據(jù)。
(1)分析了近5年的鐵路客票訂單量的分布特征,根據(jù)訂單量的周期性特征,設(shè)計了一種多步LSTM模型融合的預(yù)測方法,并達(dá)到了較高的預(yù)測精度,其平均絕對百分比誤差不超過5%。
(2)通過對比加權(quán)平均、線性回歸和LightGBM模型融合的預(yù)測效果,發(fā)現(xiàn)預(yù)測穩(wěn)定性均有明顯提高;但最簡單的加權(quán)平均融合方法的預(yù)測精度反而高于其他兩種方法,并較第一層的LSTM模型預(yù)測精度有明顯提高。
結(jié)果表明,在特征選取合理、參數(shù)優(yōu)化可靠的情況下,簡單的計算方法就足以提供高效、準(zhǔn)確的預(yù)測結(jié)果,這為開展實際工作也帶來了一些新的思路。