朱國森,鄭曉亮
(安徽理工大學(xué) 電氣與信息工程學(xué)院,安徽 淮南 232000)
隨著當(dāng)前網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,為了對網(wǎng)絡(luò)流量進(jìn)行有效的控制以及防止網(wǎng)絡(luò)擁塞,需要對網(wǎng)絡(luò)流量有較為準(zhǔn)確的預(yù)測[1]。
當(dāng)前針對網(wǎng)絡(luò)流量的預(yù)測大部分基于網(wǎng)絡(luò)流量本身的預(yù)測。如時(shí)間序列模型的預(yù)測研究,包括短相關(guān)ARIMA模型[2]、長相關(guān)FARIMA模型[3]以及ARMA同其他算法結(jié)合的預(yù)測方法,如神經(jīng)網(wǎng)絡(luò)方法。單一模型已經(jīng)無法滿足現(xiàn)代流量增長的預(yù)測,基于各種優(yōu)化算法的預(yù)測模型如PF優(yōu)化LSTM[4]、改進(jìn)黑洞算法優(yōu)化ESN的預(yù)測研究[5]等,還有利用算法在不同數(shù)據(jù)類型上的優(yōu)勢而得到更好結(jié)果的組合預(yù)測模型、基于小波分解的網(wǎng)絡(luò)流量預(yù)測[6]等。
近年來,隨著人工智能在各行各業(yè)的發(fā)展,相關(guān)技術(shù)已經(jīng)被應(yīng)用于生活的各個(gè)方面,如無人駕駛汽車的開發(fā)等?;诖耍疚幕谌斯ぶ悄軝C(jī)器學(xué)習(xí),也即集成學(xué)習(xí)的角度進(jìn)行網(wǎng)絡(luò)流量的預(yù)測。集成學(xué)習(xí)(EnsembleLearning)分為3種,包括Bagging(Bootstrap Aggregating)、Boosting和Stacking。前兩者是同一個(gè)模型集成的算法,本文采用的是第三種Stacking,它是一種集成不同學(xué)習(xí)模型的算法,在各個(gè)子模型表現(xiàn)較為不錯(cuò)的情況下將其通過一定的方法結(jié)合起來。由于不同的模型是從不同角度對數(shù)據(jù)進(jìn)行分析的,因此,不同模型集成的算法在一定程度上可以改善預(yù)測的表現(xiàn)。
Stacking作為一種新興的算法,在不同領(lǐng)域均有應(yīng)用,并且取得了較為不錯(cuò)的結(jié)果。文獻(xiàn)[7]通過二維向量的Pearson相關(guān)系數(shù)進(jìn)行模型的篩選,選取相關(guān)性較弱的XGBoost,LSTM,SVM以及KNN算法作為集成學(xué)習(xí)初級算法進(jìn)行負(fù)荷的預(yù)測;文獻(xiàn)[8]將Stacking運(yùn)用于電價(jià)的預(yù)測,取得了不錯(cuò)的效果;文獻(xiàn)[9]根據(jù)各個(gè)模型的誤差參數(shù)選取綜合表現(xiàn)最好的3個(gè)作為基層學(xué)習(xí)的初級學(xué)習(xí)器進(jìn)行患者到達(dá)數(shù)量的預(yù)測;文獻(xiàn)[10]通過集成GBDT的方法進(jìn)行公交車輛到達(dá)預(yù)測?;诩蓪W(xué)習(xí)的預(yù)測方法開始在許多方面得以應(yīng)用,為人們提供了神經(jīng)網(wǎng)絡(luò)算法以外的高效學(xué)習(xí)方法,通過集成不同具有較好預(yù)測結(jié)果的模型,使得預(yù)測結(jié)果在原先模型的基礎(chǔ)上進(jìn)一步提高。通過對模型的學(xué)習(xí)及相關(guān)文獻(xiàn)的研究,發(fā)現(xiàn)不同領(lǐng)域的預(yù)測僅是對模型輸入因素的不同選擇,例如電力負(fù)荷預(yù)測要求輸入高低氣溫、電價(jià)等,網(wǎng)絡(luò)流量預(yù)測則需要高低氣溫、天氣情況等因素。單一預(yù)測模型及其改進(jìn)方法已經(jīng)在網(wǎng)絡(luò)流量預(yù)測中大量應(yīng)用,但其準(zhǔn)確率無法與多個(gè)模型從不同角度對數(shù)據(jù)的處理結(jié)果相比。Stacking方法可以將不同模型的優(yōu)勢結(jié)合起來,因此將其用于網(wǎng)絡(luò)流量的預(yù)測。通過Pearson相關(guān)系數(shù)選取相關(guān)性較弱的5個(gè)模型作為初級學(xué)習(xí)器,為了避免可能的過擬合,選擇線性回歸作為次級學(xué)習(xí)器,并且根據(jù)選取流量的地點(diǎn)加入相關(guān)天氣因素。通過與各初級學(xué)習(xí)器以及時(shí)間序列的網(wǎng)絡(luò)流量的比較,證明該方法的可靠性。
決策樹(Decision Tree)在機(jī)器學(xué)習(xí)中是一類較為基礎(chǔ)的分類與回歸方法,本文取其在回歸中的應(yīng)用。決策樹依據(jù)使用算法的不同,可以分為3類,分別是基于CART(Classification And Regression Tree)算法、ID3算法以及C4.5算法構(gòu)建而成。后述兩種算法雖然可以挖掘數(shù)據(jù)的更多信息,但是會(huì)使決策樹的規(guī)模大大增加,因而大部分的決策樹使用的都是CART算法。
決策樹是一種二叉樹型結(jié)構(gòu),它將特征空間劃分成若干單元,每個(gè)單元有一個(gè)不同的輸出,依據(jù)數(shù)據(jù)與該輸出的大小關(guān)系而選擇不同的分支。該輸出即對應(yīng)決策樹的節(jié)點(diǎn),當(dāng)根據(jù)停止條件完成空間劃分時(shí),所有的節(jié)點(diǎn)也就確立了。對于特征空間的劃分采用啟發(fā)式方法,在每一次劃分的時(shí)候都會(huì)對當(dāng)前集合中所有的特征值,根據(jù)平方誤差最小的準(zhǔn)則,選擇最小的一個(gè)作為劃分點(diǎn),也即節(jié)點(diǎn)中的值。
(1)選擇最優(yōu)的(j,s)劃分區(qū)域。
其中:j為第j個(gè)特征變量,s為第j個(gè)特征變量的取值,c1和c2為劃分后兩個(gè)區(qū)域內(nèi)固定的輸出值。
(2)決定輸出值。
劃分區(qū)域之后,決定相應(yīng)的輸出值:
(3)重復(fù)上述步驟,直至滿足結(jié)束條件。
(4)將輸入空間劃分為M個(gè)區(qū)域:R1,R2,…,RM,得到?jīng)Q策樹:
GBDT(Gradient Boosting Decision Tree)是一種提升的決策樹算法,它將許多基分類器通過加法模型組合成一個(gè)效果更好的學(xué)習(xí)器。算法的基分類器采用的是CART決策樹,分類準(zhǔn)則采用均方誤差。GBDT算法的步驟如下:
(1)初始化弱學(xué)習(xí)器。
(1)
當(dāng)GBDT做回歸運(yùn)算,分類準(zhǔn)則為均方誤差時(shí),式(1)可表示為
(2)計(jì)算樣本負(fù)梯度。對m=1,2,…,M,計(jì)算每個(gè)樣本的負(fù)梯度,也就是殘差:
(2)
并且將式(2)得到的結(jié)果作為新的輸入數(shù)據(jù)輸入到下一棵樹中。
(3)計(jì)算最佳擬合值。對葉子區(qū)域j=1,2,…,J,計(jì)算最佳擬合值:
(4)更新強(qiáng)學(xué)習(xí)器。
(5)得到最終的學(xué)習(xí)器。
AdaBoost即Adaptive Boosting,是一種自適應(yīng)增強(qiáng)的學(xué)習(xí)器。在算法運(yùn)行的過程中,會(huì)對每次迭代的過程進(jìn)行判斷,如果預(yù)測的結(jié)果和實(shí)際值接近,就會(huì)降低該值的權(quán)重;如果預(yù)測的結(jié)果和實(shí)際值相差較大,則增加該值的權(quán)重。再基于上次的預(yù)測準(zhǔn)確率確定下一次迭代的基權(quán)重,重復(fù)該過程,最終得到準(zhǔn)確率較高的預(yù)測結(jié)果。
XGBoost是GBDT的一種改進(jìn)方法,相較于GBDT,對損失函數(shù)進(jìn)行了二階泰勒展開,并且在目標(biāo)函數(shù)之外加入了正則項(xiàng)整體求最優(yōu)解,進(jìn)一步減小過擬合的可能。
SVR是一種有監(jiān)督的學(xué)習(xí)器。通過尋求結(jié)構(gòu)化風(fēng)險(xiǎn)最小來提升學(xué)習(xí)機(jī)泛化能力,實(shí)現(xiàn)經(jīng)驗(yàn)風(fēng)險(xiǎn)和置信范圍的最小化,從而達(dá)到在統(tǒng)計(jì)量較少的情況,也能獲得不錯(cuò)結(jié)果的目的。
Stacking是一種分層模型集成框架。第一層由多個(gè)不同的基學(xué)習(xí)器構(gòu)成,在本文中選取的是DT,GBDT,AdaBoost,XGBoost以及SVR,在各個(gè)模型表現(xiàn)均較為不錯(cuò)的情況下將之集成預(yù)測,得到更為不錯(cuò)的結(jié)果;第二層選用Linear Regressor,可以進(jìn)一步避免過擬合。
其具體步驟如下:
(Ⅰ)將數(shù)據(jù)分為訓(xùn)練數(shù)據(jù)和預(yù)測數(shù)據(jù),本文中訓(xùn)練數(shù)據(jù)為前3 092個(gè)數(shù)據(jù),后100個(gè)為預(yù)測數(shù)據(jù)。再將訓(xùn)練數(shù)據(jù)進(jìn)行k折劃分,分為數(shù)據(jù)量相同的k組數(shù)據(jù)。
(Ⅱ)用每個(gè)基學(xué)習(xí)器進(jìn)行k次訓(xùn)練,每次訓(xùn)練時(shí)用k-1份數(shù)據(jù)作為訓(xùn)練樣本,預(yù)測剩下的1份數(shù)據(jù),這樣可以得到k份訓(xùn)練過后的數(shù)據(jù),并且在每次訓(xùn)練的過程中會(huì)對100個(gè)數(shù)據(jù)進(jìn)行預(yù)測。
(Ⅲ)將k份預(yù)測數(shù)據(jù)組合起來,得到新的訓(xùn)練樣本數(shù)據(jù),將得到的k份預(yù)測數(shù)據(jù)取平均值即為新的預(yù)測數(shù)據(jù)。
(Ⅳ)將(Ⅲ)得到的數(shù)據(jù)輸入第二層的Linear Regressor,得到最后的預(yù)測結(jié)果。
整個(gè)過程可用圖1表示。
圖1 Stacking原理圖
在訓(xùn)練過程中,將訓(xùn)練數(shù)據(jù)分為5份,利用其余4份預(yù)測未使用的部分,得到一個(gè)測試集,之后通過拼接將得到的5份訓(xùn)練集組合起來成為新的訓(xùn)練集,將5份得到的預(yù)測集平均得到新的測試集。對5個(gè)選取的模型分別進(jìn)行上述操作,之后再將Train和Test平均作為新的輸入和輸出,輸入到下一層的Linear Regressor,得到最后的結(jié)果。
實(shí)驗(yàn)中的流量數(shù)據(jù)由淮南移動(dòng)公司提供,為淮南高鐵東站2019-04-14—2019-08-24日 1 h 計(jì)的流量數(shù)據(jù)。以往的流量預(yù)測大部分都以流量本身作為預(yù)測對象,以前一段時(shí)間為輸入,預(yù)測下一個(gè)時(shí)間點(diǎn)的流量。在接觸季節(jié)性差分自回歸滑動(dòng)平均模型以后,結(jié)合數(shù)據(jù)的圖形表示,聯(lián)想到可以將單個(gè)一天視為一個(gè)周期。考慮淮南高鐵東站的距離較遠(yuǎn),天氣不理想的時(shí)候可能會(huì)影響旅客的決定,從而影響高鐵東站的流量。同不考慮天氣情況的預(yù)測結(jié)果進(jìn)行對比,驗(yàn)證天氣因素確實(shí)可以影響流量情況。實(shí)驗(yàn)在MATLAB2018a以及Python3.7環(huán)境中進(jìn)行,對于數(shù)據(jù)的處理使用到了EXCEL以及SPSS軟件。具體的步驟如圖2所示。
圖2 Stacking算法圖
為了對模型的實(shí)際效果進(jìn)行驗(yàn)證,使用如下的誤差評價(jià)指標(biāo):
平均絕對誤差(RMAE):
均方誤差(RMSE):
確定系數(shù)(R2):
其中:Y為實(shí)際值,T為預(yù)測值,n為總的數(shù)據(jù)個(gè)數(shù),SAVE為原始數(shù)據(jù)的平均值。
數(shù)據(jù)總量為3 192個(gè),選取前3 092個(gè)作為訓(xùn)練數(shù)據(jù),預(yù)測數(shù)據(jù)。加入最高氣溫、最低氣溫、天氣以及小時(shí)后,將這4者作為輸入,流量作為輸出。在進(jìn)行Stacking操作的時(shí)候,為了避免耗時(shí)過長,將折數(shù)定為5。
在進(jìn)行數(shù)據(jù)收集的時(shí)候,是以Gb為單位的,凌晨時(shí)候的流量較少,顯示為0,但還是有以Kb為單位的少部分流量??紤]后期處理數(shù)據(jù)的時(shí)候可能會(huì)出現(xiàn)Nan的情況,又因?yàn)榱髁繑?shù)據(jù)只到小數(shù)點(diǎn)后兩位,在EXCEL中將顯示為0的數(shù)據(jù)替換為0.01。在實(shí)驗(yàn)過程中引入了最高氣溫、最低氣溫、時(shí)間以及天氣陰晴情況。最高氣溫和最低氣溫分別用實(shí)際的攝氏度表示,將天氣的陰晴情況量綱化,依照下面所示的表1進(jìn)行轉(zhuǎn)換。
表1 天氣量化對照表
圖3所示是調(diào)整過后的所有數(shù)據(jù)展示。
圖3 所有數(shù)據(jù)展示圖
從圖3的最高氣溫以及最低氣溫的波動(dòng)來看流量數(shù)據(jù),當(dāng)前期相對后期溫度較低時(shí),流量相對較高。后期正值暑假,高鐵東站距離市區(qū)較遠(yuǎn),這可能成為人們選擇交通工具的一個(gè)影響因素。
Stacking作為一種集成算法,可以結(jié)合不同的算法。由于不同算法是從不同的解空間對數(shù)據(jù)進(jìn)行分析的,Stacking在一定程度上可以很好地結(jié)合不同模型的優(yōu)勢。但是并非模型越多越好,當(dāng)一個(gè)模型表現(xiàn)較差的時(shí)候,會(huì)使得整體算法的預(yù)測性能降低。通過對Ridge(嶺回歸)以及Lasso算法的測試,兩者結(jié)果成周期性且與實(shí)際相距過大,因此排除了這兩種算法。對其余7個(gè)算法,包括DecisionTree,RandomForest,GBDT,XGBoost,AdaBoost,SVR以及KNN算法分別進(jìn)行實(shí)驗(yàn)之后,顯示7者單獨(dú)預(yù)測的結(jié)果均不錯(cuò)。從模型少而精的角度考慮,將7個(gè)初級學(xué)習(xí)器預(yù)測的結(jié)果同實(shí)際值作差后,利用二維向量的Pearson相關(guān)系數(shù)作為相關(guān)性指標(biāo)。在數(shù)據(jù)處理軟件SPSS中進(jìn)行Pearson相關(guān)系數(shù)的檢驗(yàn),選擇相關(guān)性較弱的5個(gè)模型作為最后的預(yù)測模型。7個(gè)模型的相關(guān)性表現(xiàn)如表2 所示。
表2 各模型Pearson相關(guān)系數(shù)對比表
從表2可以看出:SVR同KNN的相關(guān)性為0.850,XGBOOST與RF的相關(guān)性為0.834,相較于表中其他的相關(guān)性較高,因此將KNN模型以及RF模型排除,選擇剩下的5個(gè)模型作為最后的預(yù)測模型。
為了驗(yàn)證Stacking模型的性能,選取用于初級學(xué)習(xí)器的5個(gè)模型分別作為對比對象,同時(shí)將加入天氣因素的Stacking模型同不考慮天氣因素的Stacking模型進(jìn)行對比,驗(yàn)證天氣對流量數(shù)據(jù)的影響。
Stacking模型在Anaconda中使用Python3.7編程實(shí)現(xiàn)。取SVR預(yù)測結(jié)果與Stacking預(yù)測結(jié)果進(jìn)行對比分析,如圖4所示。
圖4 SVR與Stacking模型對比
從圖4可以看出:數(shù)據(jù)存在一定的周期性,符合高鐵站的旅客情況。高鐵在深夜是禁行的,因此,流量幾乎為0。SVR模型對于原始數(shù)據(jù)的擬合結(jié)果也不錯(cuò),下面通過誤差系數(shù)來進(jìn)行各模型的判別,如表3。
表3 集成模型與基模型誤差對比表
從表3可以看出:無論是在RMAE,RMSE還是擬合優(yōu)度,Stacking模型的結(jié)果都是最優(yōu)秀的,這可以歸因于它利用不同模型相互補(bǔ)足。
再將加入天氣因素的Stacking模型同不考慮天氣因素的Stacking模型進(jìn)行對比,如圖5所示。
圖5 有無天氣因素對比圖
從圖5可以看出:不考慮天氣因素的預(yù)測結(jié)果在一些小的突起方面的表現(xiàn)不如考慮天氣Stacking的預(yù)測結(jié)果,整體的擬合也不如考慮天氣因素的Stacking,從表4中的誤差參數(shù)中也可以很明顯地看出來。
表4 Stacking與時(shí)間序列誤差對比
結(jié)合高鐵站的地理位置,將天氣因素量化后加入預(yù)測。仿真證明:加入天氣因素之后的預(yù)測結(jié)果相較于未加天氣因素的預(yù)測結(jié)果更接近實(shí)際情況。Stacking集成算法作為當(dāng)下流行的算法,很好地結(jié)合了不同算法,并且各取所長,得到了較各基模型更為優(yōu)秀的結(jié)果。通過Pearson相關(guān)系數(shù)的檢驗(yàn),篩選出相關(guān)性較弱且表現(xiàn)較為不錯(cuò)的幾個(gè)模型。通過結(jié)合不同的模型,可以從不同的角度對數(shù)據(jù)進(jìn)行處理,進(jìn)而得到更為準(zhǔn)確的結(jié)果。
參考文獻(xiàn)(References):
[1] 黨小超,閻林.基于多元線性自回歸模型的流量預(yù)測[J].計(jì)算機(jī)工程,2012,38(1):84—86,89
DANG X C,YAN L.Flow Prediction Based on Multiple Linear Autoregressive Model[J].Computer Engineering,2012,38(1):84—86,89(in Chinese)
[2] 黨小超,閻林.基于短相關(guān)ARIMA模型的網(wǎng)絡(luò)流量預(yù)測[J].計(jì)算機(jī)工程,2012,38(13):71—74
DANG X C,YAN L.Network Traffic Prediction Based on Short Correlation ARIMA Model[J].Computer Engineering,2012,38(13):71—74(in Chinese)
[3] 李士寧,閆焱,覃征.基于FARIMA模型的網(wǎng)絡(luò)流量預(yù)測[J].計(jì)算機(jī)工程與應(yīng)用,2006(29):148—150
LI S N,YAN Y,QIN Z.Network Traffic Prediction Based on FARIMA Model[J].Computer Engineering and Application,2006(29):148—150(in Chinese)
[4] 李校林,吳騰.基于PF-LSTM網(wǎng)絡(luò)的高效網(wǎng)絡(luò)流量預(yù)測方法[J].計(jì)算機(jī)應(yīng)用研究,2019,36(12):3833—3836
LIX L,WU T.Efficient Network Traffic Prediction Method Based on PF-LSTM Network[J].Computer Application Research,209,36(12):3833—3836(in Chinese)
[5] 韓瑩,井元偉,金建宇,等.基于改進(jìn)黑洞算法優(yōu)化ESN的網(wǎng)絡(luò)流量短期預(yù)測[J].東北大學(xué)學(xué)報(bào)(自然科學(xué)版),2018,39(3):311—315
HAN Y,JING Y W,JIN J Y,et al.Short-term Network Traffic Prediction Based on ESN Optimization Based on Improved Black Hole Algorithm[J].Journal of Northeast University(Natural Science Edition),2008,39(3):311—315(in Chinese)
[6] 崔兆順.基于小波變換的網(wǎng)絡(luò)流量組合預(yù)測模型[J].計(jì)算機(jī)工程與應(yīng)用,2014,50(10):92—95,100
CUI Z S.Network Traffic Combination Prediction Model Based on Wavelet Transform[J].Computer Engineering and Application,2014,50(10):92—95,100(in Chinese)
[7] 史佳琪,張建華.基于多模型融合Stacking集成學(xué)習(xí)方式的負(fù)荷預(yù)測方法[J].中國電機(jī)工程學(xué)報(bào),2019,39(14):4032—4042
SHI J Q,ZHANG J H.Load Prediction Method Based on Multi-model Stacking Integrated Learning[J].Chinese Journal of Electrical Engineering,209,39(14):4032—4042(in Chinese)
[8] 王曙,潘庭龍.Stacking集成模型在短期電價(jià)預(yù)測中的應(yīng)用[J].中國科技論文,2018,13(20):2373—2377
WANG S,PAN T L.Application of Stacking Integration Model in Short-term Electricity Price Prediction[J].China Science and Technology Paper,2008,13(20):2373—2377(in Chinese)
[9] 李瑤琦,周鑫,高衛(wèi)益,等.基于Stacking集成學(xué)習(xí)的急診患者到達(dá)預(yù)測[J/OL].工業(yè)工程與管理:1—10[2019-12-29].http://kns.cnki.net/kcms/detail/31.1738.T.20190606.1341.004.html
LI Y Q,ZHOU X,GAO W Y,et al.Arrival Prediction of Emergency Patients Based on Stacking Integrated Learning[J/OL].Industrial Engineering and Management:1—10[2019-12-29].http://kns.cnki.net/kcms/detail/31.1738.T.20190606.1341.004.html(in Chinese)
[10] 荊靈玲,解超,王安琪.基于集成學(xué)習(xí)的公交車輛到站時(shí)間預(yù)測模型研究[J].重慶理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2019,33(10):47—53
JING L L,XIE C,WANG A Q.Prediction Model of Bus Arrival Time Based on Integrated Learning[J].Journal of Chongqing University of Technology(Natural Science Edition),2019,33(10):47—53(in Chinese)