郭杰鵬 鐘鴻彬
摘 要 以廣州萬勝圍地鐵站高峰客流量數(shù)據(jù)作為測試樣本,基于Spark平臺(tái)通過ARMA模型進(jìn)行客流量預(yù)測預(yù)測。為廣州的城市軌道交通運(yùn)營作客流量數(shù)據(jù)預(yù)測上的參考指導(dǎo)。
關(guān)鍵詞 城市軌道交通;客流量預(yù)測;ARIMA
引言
城市軌道是一個(gè)城市的經(jīng)濟(jì)與交通大動(dòng)脈,與人們生活與工作息息相關(guān)。如何持續(xù)保持高效率,高可靠,安全的城市軌道交通運(yùn)營成為當(dāng)今的重要議題。城市軌道交通樞紐擁有巨大的乘客吞吐量與巨大的人員流動(dòng)。運(yùn)營方在應(yīng)對(duì)日常安檢、突發(fā)事件應(yīng)急、人流管制與疏散等站點(diǎn)服務(wù)時(shí)都希望有一個(gè)較準(zhǔn)確的客流預(yù)測系統(tǒng)作為工作規(guī)劃與安排,并據(jù)此提前調(diào)配人力物力,更好地為市民服務(wù)。隨著大數(shù)據(jù)、機(jī)器學(xué)習(xí)等技術(shù)的發(fā)展以及原始數(shù)據(jù)的積累,以客流量預(yù)測為核心的交通智能誘導(dǎo)技術(shù)越來越成為未來智能交通的熱點(diǎn)問題之一。
1ARIMA預(yù)測模型
在城市軌道交通客流運(yùn)輸中,由于收到早晚高峰等影響,具有明顯的時(shí)間特性。在分析單日客流時(shí),也需要考慮時(shí)間序列的平穩(wěn)性和季節(jié)性等的影響。假設(shè)把客流進(jìn)站的粒度設(shè)置為20分鐘,按每天正常的運(yùn)營時(shí)間來5:00-24:00算,可以得到57個(gè)進(jìn)站的時(shí)間序列,將此時(shí)間序列與大量的單日的歷史客流同期序列進(jìn)行組合,構(gòu)成一系列時(shí)間序列用于ARIMA模型訓(xùn)練。模型涉及的主要參數(shù)有p(自回歸項(xiàng))、q(移動(dòng)平均項(xiàng)數(shù))和d(平穩(wěn)化時(shí)間序列所做的差分次數(shù))。時(shí)間序列平穩(wěn)是模型建立的基本條件,在AIC和SBC標(biāo)準(zhǔn)的評(píng)判準(zhǔn)則下進(jìn)行大量反復(fù)測試,當(dāng)兩者統(tǒng)計(jì)量均達(dá)到較小時(shí)則表明擬合情況良好可作為預(yù)測計(jì)算的表達(dá)式。
由于ARIMA模型可以用來預(yù)測非平穩(wěn)時(shí)間序列,所以在建立ARIMA模型之前要分析時(shí)間序列樣本的平穩(wěn)性。假如獲取到的時(shí)間序列是非平穩(wěn)時(shí)間序列,這種情況下就需要通過差分運(yùn)算來轉(zhuǎn)化為平穩(wěn)時(shí)間序列。一般情況下,城市軌道交通的客流量數(shù)據(jù){at}是非平穩(wěn)的,需要進(jìn)行差分轉(zhuǎn)化[1]。
由上式可以得出ARIMA模型其實(shí)是ARMA和差分運(yùn)算組合而成的運(yùn)算模型。通過差分運(yùn)算,可以把先把非平穩(wěn)非線性的時(shí)間序列通轉(zhuǎn)換成一系列的平穩(wěn)時(shí)間序列,再通過ARMA模型去進(jìn)行線性預(yù)測。客流序列當(dāng)中的線性規(guī)律也就可以通過ARIMA模型來進(jìn)行預(yù)測。而客流序列變化的非線性規(guī)律包含在ARIMA模型預(yù)測的誤差之中[2]。
2基于Spark的ARIMA模型實(shí)現(xiàn)
2015年由GitHub上開源了用于Spark解決時(shí)間序列問題的Spark-TS庫,包含了豐富的時(shí)間序列模型函數(shù)與數(shù)據(jù)抽象,極大地方便了開發(fā)人員編寫時(shí)間序列相關(guān)問題的解決方案。Spark-TS的核心抽象TimeSeriesRDD,借助該抽象可以實(shí)現(xiàn)時(shí)間序列在Spark上的分布式形式運(yùn)作。ARIMA在spark上的實(shí)現(xiàn)步驟:
輸入?yún)?shù):時(shí)間序列RDD;輸出參數(shù)ARIMA預(yù)測值:forecastResult;
第一步:把采集好的時(shí)間序列數(shù)據(jù)從HDFS上讀取出來并創(chuàng)建RDD數(shù)據(jù)集timeRDD;
第二步:通過timeRDD.slice對(duì)任意兩個(gè)時(shí)間進(jìn)行分片儲(chǔ)存為sliceRDD;
第三步:利用線性算子sliceRDD.fill(“l(fā)inear”)補(bǔ)插缺失的序列值;
第四步:為了使序列不平穩(wěn),初始變量設(shè)置為residuals=0;
第五步:若residuals=0,需要通過AR(1)模型進(jìn)行差分并重新賦值,再去判斷residuals是否為0。如果residuals值為0則繼續(xù)進(jìn)行差分賦值,如果不為0就表示時(shí)間序列已經(jīng)平穩(wěn)進(jìn)入step6
第六步:將上一步的時(shí)間序列保存為數(shù)據(jù)索引tIndex;
第七步:通過調(diào)用ARIMA.autoFit(timeRDD)對(duì)模型進(jìn)行反復(fù)的訓(xùn)練,把訓(xùn)練結(jié)果存為resultRDD,并和tIndex建立對(duì)應(yīng)的映射關(guān)系;
第八步:輸出最終的預(yù)測結(jié)果,forecastResult=tIndex.dateTimeAtLoc(x)[3]。
3預(yù)測結(jié)果
預(yù)測結(jié)果
萬勝圍地鐵站8:00到8:20點(diǎn)內(nèi)的預(yù)測結(jié)果均與真實(shí)情況較為吻合。在實(shí)際運(yùn)營管理過程中,客流狀態(tài)趨勢的分析主要是針對(duì)各個(gè)車站的早、晚高峰時(shí)段,分析的結(jié)果將給輔助決策帶來更重要的影響。
參考文獻(xiàn)
[1] 陳玉寶,曾剛.基于組合預(yù)測方法的民航旅客吞吐量預(yù)測研究[J].中國民航大學(xué)學(xué)報(bào),2014,32(2):59-64.
[2] 杜剛,劉婭楠.季節(jié)性變動(dòng)影響下的上海港即裝下吞吐量預(yù)測[J].華東師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2015(1):234-239.
[3] 周志華.機(jī)器學(xué)習(xí)[M].北京:清華大學(xué)出版社,2016:62.