高文俊 李 志 閔 星 章玉龍
(安徽繼遠(yuǎn)軟件有限公司 合肥 230088)
隨著計算機(jī)技術(shù)飛速發(fā)展,數(shù)據(jù)規(guī)模和復(fù)雜度指數(shù)級增加,人們越來越依賴于各種應(yīng)用系統(tǒng)。響應(yīng)時間是用戶最能直觀感受到的評價應(yīng)用系統(tǒng)性能的主要指標(biāo)之一。例如,在搜索網(wǎng)站查詢的響應(yīng)時間過長,用戶便會失去耐心而離開;響應(yīng)時間的一般定義是用戶從發(fā)出服務(wù)請求至接受到反饋信息之間的時間間隔[1]。在實(shí)際應(yīng)用中,保證應(yīng)用系統(tǒng)的響應(yīng)時間始終處于用戶可接受的范圍內(nèi)是至關(guān)重要的,而保證的前提則是對響應(yīng)時間進(jìn)行準(zhǔn)確的預(yù)測評估,實(shí)現(xiàn)提前感知并解決問題。
對應(yīng)用系統(tǒng)響應(yīng)時間的預(yù)測,即根據(jù)響應(yīng)時間的歷史序列數(shù)據(jù)預(yù)測未來時間段的序列值,可借鑒常用的時間序列預(yù)測方法和模型。傳統(tǒng)的時間序列預(yù)測方法大多基于統(tǒng)計學(xué)方法,如鄭曉霞等[2]運(yùn)用指數(shù)平滑法對Web服務(wù)的響應(yīng)時間進(jìn)行了動態(tài)預(yù)測;李明等[3]運(yùn)用ARMA模型對深滬股市未來5天的短期指數(shù)進(jìn)行了有效預(yù)報。近年來,神經(jīng)網(wǎng)絡(luò)模型因其可無限逼近任何復(fù)雜函數(shù)的特性也逐漸被應(yīng)用到時序數(shù)據(jù)預(yù)測模型中。2001年,吳微等[4]運(yùn)用BP神經(jīng)網(wǎng)絡(luò)對滬市股票市場的漲跌進(jìn)行了有效預(yù)測;王鑫等[5]基于飛機(jī)故障數(shù)據(jù),引入LSTM神經(jīng)網(wǎng)絡(luò)對故障時間序列進(jìn)行預(yù)測。還有其他一些研究者使用增強(qiáng)學(xué)習(xí)和遺傳算法研究了包括響應(yīng)時間、CPU、網(wǎng)絡(luò)帶寬等的預(yù)測評估[6~8]。
應(yīng)用系統(tǒng)的響應(yīng)時間往往受多種因素影響,其中既包含常規(guī)的線性趨勢又包含復(fù)雜多變的非線性規(guī)律,使用單一模型進(jìn)行擬合難以兩者兼顧。針對這一問題,本文提出一種組合模型ARI?MA-LSTM對應(yīng)用系統(tǒng)的響應(yīng)時間進(jìn)行預(yù)測評估,其中ARIMA模型用以提取響應(yīng)時間序列數(shù)據(jù)的線性趨勢,再通過LSTM模型擬合ARIMA模型殘差中的非線性規(guī)律。實(shí)驗(yàn)結(jié)果表明,所提方法相比于單一模型的擬合性能更好,預(yù)測精度更高。
ARIMA模型(Autoregressive Integrated Moving Average model)由博克思(Box)和詹金斯(Jenkins)于70年代初提出,它的基本思想是時間序列的當(dāng)前時刻值與過去時刻值、隨機(jī)干擾量呈線性關(guān)系,通過找到擬合這種線性關(guān)系的線性函數(shù)即可根據(jù)歷史序列數(shù)據(jù)對未來時刻序列值進(jìn)行預(yù)測。ARI?MA模型本質(zhì)是ARMA模型的轉(zhuǎn)化,其數(shù)學(xué)表達(dá)式為

其中,Xt為序列當(dāng)前時刻值,Xt-j(j=1,2,…,p)是過去p個時刻的序列值,φi(i=1,2,…,p)表示各階自回歸項系數(shù),μt為殘差,θi(i=1,2,…q)表示回歸系數(shù),Θ(L)為q階移動平均系數(shù)多項式,記作ARMA(p,q)。ARMA模型只能處理平穩(wěn)序列,對于非平穩(wěn)序列需通過差分處理轉(zhuǎn)換成平穩(wěn)序列,在ARMA模型的基礎(chǔ)上經(jīng)差分處理過的模型被稱為ARIMA模型,記作ARIMA(p,d,q),其中d為差分階次。
ARIMA模型的建模過程一般分四個步驟:
1)序列平穩(wěn)化處理:一般可通過觀察法觀測或單位根法來檢測時間序列樣本的平穩(wěn)性,若為非平穩(wěn)序列,則需經(jīng)過差分處理以使序列平穩(wěn)化。
2)模型定階:ARIMA(p,d,q)模型有三個參數(shù)需要確定,步驟1)中已確定參數(shù)d,可通過觀察樣本的ACF圖和PACF圖來選取參數(shù)p和q。一般以ACF圖和PACF圖中各自截尾的位置作為p和q的最大值,得到多種參數(shù)組合,再利用BIC信息量準(zhǔn)則從中選擇一組最優(yōu)的模型參數(shù)。
3)模型檢驗(yàn):可通過檢驗(yàn)?zāi)P蜌埐钍欠駷榘自肼曅蛄衼眚?yàn)證該模型是否充分有效。
4)預(yù)測:根據(jù)歷史時間序列數(shù)據(jù)對序列未來時刻值進(jìn)行預(yù)測。
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)因其擬合非線性時間序列的良好性能而被廣泛研究和應(yīng)用,但其在實(shí)際應(yīng)用中會呈現(xiàn)“記憶遺失”特性,即著名的梯度消失問題[9]。為解決這一問題,Hochreiter和Schmidhuber于1997年提出了RNN的改進(jìn)版——LSTM神經(jīng)網(wǎng)絡(luò)模型[10](Long Short-Term Memory)。RNN保存記憶的核心結(jié)構(gòu)“隱藏層”被重新設(shè)計,在原本只有一個狀態(tài)的隱藏層中又添加一個單元狀態(tài)(cell state)來保存長期記憶,并通過一個稱作“門”的結(jié)構(gòu)讓信息選擇式通過。LSTM隱藏層網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。

圖1 LSTM隱藏層網(wǎng)絡(luò)結(jié)構(gòu)圖
圖1中的加粗部分即是添加的單元狀態(tài)C,通過三個控制開關(guān)(三個門)來對C中保存的長期信息進(jìn)行控制。首先,通過“遺忘門”來控制上一時刻的單元狀態(tài)Ct-1有多少信息保留到當(dāng)前時刻Ct,遺忘門的控制計算如式(2)所示。

其中,通過“輸入門”來控制當(dāng)前時刻網(wǎng)絡(luò)的輸入xt有多少保存到單元狀態(tài)Ct,輸入門的控制計算如式(3)所示。

再根據(jù)上一次的輸出和本次輸入來計算當(dāng)前輸入的單元狀態(tài),計算如式(4)所示。

經(jīng)遺忘門操作已過濾掉Ct-1中該被丟棄的信息,經(jīng)輸入門操作獲取了當(dāng)前時刻輸入信息中該被加入進(jìn)來的新信息。至此可以更新當(dāng)前時刻的單元狀態(tài)Ct,計算如式(5)所示。

最后,通過“輸出門”來控制單元狀態(tài)Ct有多少輸出到LSTM的當(dāng)前輸出值ht,輸出門的控制計算和輸出信息計算如式(6)和式(7)所示。

在式(2)~式(7)中,Wf、Wi、Wc、Wo為各控制門的權(quán)重矩陣,bf、bi、bc、bo為各控制門的偏置項;σ和tanh分別是激活函數(shù)sigmoid和tanh函數(shù),描述各控制門允許多少信息量通過。
LSTM模型的建模過程分為以下幾個步驟:
1)輸入數(shù)據(jù)預(yù)處理
首先,將輸入數(shù)據(jù)按時間窗的大小轉(zhuǎn)換成二維矩陣形式;其次,對輸入數(shù)據(jù)做歸一化處理,本文采用z-score標(biāo)準(zhǔn)化指標(biāo)對輸入數(shù)據(jù)歸一化。
2)初始化LSTM模型
LSTM模型的初始化包含很多事項,其中激活函數(shù)的選取和采用何種措施來避免過擬合現(xiàn)象直接影響了模型的最終結(jié)果。本文選取具有梯度穩(wěn)定性的ReLU函數(shù)作為LSTM網(wǎng)絡(luò)的激活函數(shù);選擇均方誤差MSE函數(shù)作為模型訓(xùn)練的損失函數(shù),并對損失函數(shù)進(jìn)行L2正則化處理,通過L2正則化限制模型權(quán)重的大小來有效防止過擬合現(xiàn)象的發(fā)生。
3)梯度訓(xùn)練確定權(quán)值
梯度訓(xùn)練的優(yōu)化算法有很多,如隨機(jī)梯度下降[11]、AdaGrad[12]、RMSProp[13]等。本文采用對學(xué)習(xí)率具有動態(tài)約束功能的Adam(Adaptive Moment Es?timation)算法[14]對學(xué)習(xí)率進(jìn)行優(yōu)化。Adam算法融合了AdaGrad和RMSProp算法的優(yōu)勢,能夠動態(tài)計算并調(diào)整不同參數(shù)的學(xué)習(xí)率。
4)訓(xùn)練輸出并反歸一化
訓(xùn)練模型得到的輸出值并不是最終結(jié)果,需將其反歸一化處理以得到模型的實(shí)際預(yù)測結(jié)果值。
應(yīng)用系統(tǒng)響應(yīng)時間的變化規(guī)律復(fù)雜多變,其中既含有線性趨勢,又包含非線性規(guī)律,僅使用單一模型進(jìn)行預(yù)測難以完全擬合。本文基于這樣的思想構(gòu)建組合模型,響應(yīng)時間的歷史數(shù)據(jù)首先經(jīng)過ARIMA模型過濾掉序列數(shù)據(jù)中的線性趨勢,那么非線性規(guī)律則包含在ARIMA模型的殘差中;再將殘差輸入LSTM模型以提取其中的非線性規(guī)律;最后,將ARIMA模型的預(yù)測結(jié)果與LSTM模型的預(yù)測結(jié)果相疊加得到最終的預(yù)測結(jié)果。組合模型的流程框架如圖2所示。

圖2 ARIMA-LSTM組合模型流程圖
上圖所示組合模型流程的數(shù)學(xué)描述如下。假設(shè)序列數(shù)據(jù)yt可由式(8)表示:

其中,Lt描述序列數(shù)據(jù)中的線性成分,Nt代表序列數(shù)據(jù)中的非線性成分。則組合模型建模的流程為
1)先利用ARIMA模型對序列數(shù)據(jù)建模,獲取其線性成分的預(yù)測值。非線性成分則包含在殘差中。其數(shù)學(xué)表達(dá)如下:

其中,et表示包含非線性成分的殘差,為ARI?MA模型的預(yù)測值。
2)得到殘差et后,利用LSTM模型對其建模,獲取非線性成分的預(yù)測值,其數(shù)學(xué)表達(dá)如下:

其中,f(·)為LSTM模型建立的關(guān)系函數(shù),εt是隨機(jī)誤差。
3)最后,將和相加得到最終預(yù)測結(jié)果,即:

值得注意的是,為了保證LSTM模型對ARIMA模型殘差的預(yù)測精度,本文采取迭代預(yù)測方法,即對每下一時刻序列值的預(yù)測都在經(jīng)上一時刻預(yù)測值變更后的新模型上進(jìn)行預(yù)測,而不是使用測試數(shù)據(jù)預(yù)測未來每個時刻的序列值。
為了驗(yàn)證所提組合模型的有效性,本節(jié)結(jié)合一個應(yīng)用系統(tǒng)的響應(yīng)時間預(yù)測實(shí)例進(jìn)行實(shí)驗(yàn)論證。實(shí)驗(yàn)數(shù)據(jù)來源于對國家電網(wǎng)網(wǎng)絡(luò)大學(xué)平臺的響應(yīng)時間監(jiān)測數(shù)據(jù),數(shù)據(jù)集的時間覆蓋范圍為2018-06-01~2018-06-10,采集頻率為5min,每天有288個數(shù)據(jù),10天共有2880個。由于受偶然因素影響(包括斷網(wǎng)或服務(wù)器故障),原始數(shù)據(jù)可能存在異常值,這會對時間序列的預(yù)測產(chǎn)生誤導(dǎo)。為了降低這些異常值對預(yù)測過程的影響,本文采用經(jīng)典的箱線圖法來識別異常值,并將超過1.5倍四分位數(shù)差之和與第3四分位數(shù)的序列值作為異常點(diǎn)去除。對于被剔除異常值的個別時刻上的數(shù)據(jù)缺失,采取將該時刻前后鄰接的兩個時刻序列值的平均值作為填充值。觀察數(shù)據(jù)集會發(fā)現(xiàn),數(shù)據(jù)在每天下午的6點(diǎn)到12點(diǎn)的波動性很大,這與人們一般在下班后上網(wǎng)絡(luò)大學(xué)平臺進(jìn)行學(xué)習(xí)的習(xí)性相符。因此將最后一天下午6點(diǎn)到12點(diǎn)的共72個數(shù)據(jù)作為測試集,其余共2808個數(shù)據(jù)作為訓(xùn)練集。
本文采用三種具有代表性的評測誤差標(biāo)準(zhǔn)來評估預(yù)測的精確度,分別是均方根誤差(RMSE)、平均絕對百分比誤差(MAPE)和平均絕對偏差(MAE),它們的數(shù)學(xué)表達(dá)如下:

其中,F(xiàn)i表示第i個預(yù)測值,Ri是第i個真實(shí)值,n是序列長度(樣本點(diǎn)個數(shù))。RMSE、MAPE以及MAE的值越小表明模型的預(yù)測誤差越小,精度越高,則模型的擬合能力越好。
4.3.1 響應(yīng)時間預(yù)測的ARIMA模型建立
圖3為監(jiān)測數(shù)據(jù)的時間序列圖,其中圖3(a)為經(jīng)預(yù)處理后的原始數(shù)據(jù)圖,從中可看出,數(shù)據(jù)具有一定的周期性,且為非平穩(wěn)序列。圖3(b)為經(jīng)一階差分處理后的序列圖,從中可看出序列數(shù)據(jù)已基本平穩(wěn)化,經(jīng)ADF校驗(yàn)表明數(shù)據(jù)確已達(dá)到平穩(wěn)條件,因此設(shè)定模型參數(shù)d=1。

圖3 監(jiān)測數(shù)據(jù)的時間序列圖
然后根據(jù)ACF圖和PACF圖對模型參數(shù)p和q進(jìn)行初判斷,圖4(a)和圖4(b)分別展示了序列數(shù)據(jù)的ACF圖和PACF圖。從圖4(a)和圖4(b)中可看出,ACF圖在滯后1階之后截尾,而PACF圖在3階后截尾,則ARIMA模型參數(shù)q的最大值設(shè)為1,參數(shù)p的最大值設(shè)為3,適合的模型參數(shù)組合共有8種,既(p,d,q)=(0,1,0)、(0,1,1)、(0,1,2)、(0,1,3)、(1,1,0)、(1,1,1)、(1,1,2)、(1,1,3)。再分別計算各模型組合的BIC值,計算結(jié)果為參數(shù)組合(1,1,2)的BIC值最小,為171.15,則選擇(1,1,2)參數(shù)組合構(gòu)建ARIMA模型,并對響應(yīng)時間數(shù)據(jù)的測試集進(jìn)行預(yù)測。
4.3.2 LSTM預(yù)測ARIMA殘差的參數(shù)設(shè)置
實(shí)驗(yàn)平臺采用Keras框架,根據(jù)經(jīng)驗(yàn)和多次殘差實(shí)驗(yàn)對比,確定LSTM模型的參數(shù)進(jìn)行如下設(shè)置。輸入神經(jīng)元個數(shù)為4,隱藏層設(shè)置為具有300個神經(jīng)元的單隱藏層,迭代次數(shù)epochs為2000,batch_size為50。為進(jìn)一步防止過擬合現(xiàn)象的發(fā)生,模型訓(xùn)練中用到了dropout技術(shù)[15]。本實(shí)驗(yàn)?zāi)P偷膩G失率設(shè)置為0.1,即每輪權(quán)值更新時選擇10%的節(jié)點(diǎn)丟棄。損失函數(shù)為均方誤差MSE,激活函數(shù)為Relu,優(yōu)化器參數(shù)為rmsprop。

圖4 序列數(shù)據(jù)的自相關(guān)分析和偏自相關(guān)分析
4.3.3 不同模型預(yù)測結(jié)果對比
為直觀地看出各算法預(yù)測結(jié)果的優(yōu)劣,圖5給出了不同模型的預(yù)測結(jié)果圖。其中橫坐標(biāo)“time”表示從2016-06-10下午6點(diǎn)到下午12點(diǎn)(共6個小時,72個時間點(diǎn),每個時間點(diǎn)的間隔為5min)的時間節(jié)點(diǎn),縱坐標(biāo)為對應(yīng)每個時間點(diǎn)的響應(yīng)時間值。從圖5中可看出,ARIMA算法預(yù)測結(jié)果的滯后性較大,且隨著時間推移,如時間點(diǎn)54以后,算法的擬合性驟降。BP模型的表現(xiàn)優(yōu)于ARIMA算法,但擬合性還是LSTM模型和ARIMA-LSTM組合模型相對更優(yōu),這也從側(cè)面說明了LSTM模型在單預(yù)測模型中的突出表現(xiàn)。而與單模型LSTM相比,組合模型ARIMA-LSTMA的擬合性相對更好,預(yù)測精度更高。
表1給出了各模型預(yù)測結(jié)果的RMSE、MAPE和MAE值對比,從表1可看出,BP模型與ARIMA模型的預(yù)測精度相近。LSTM模型在各指標(biāo)上的值均低于BP模型和ARIMA模型,且差值較大,可見LSTM模型在時序預(yù)測方面的表現(xiàn)優(yōu)于前兩個模型。而ARIMA-LSTM組合模型在RMSE和MAE上的值明顯低于LSTM模型,在MAPE上的值也比LSTM模型略低,可見組合模型ARIMA-LSTM的預(yù)測精度高于LSTM模型。整體來看,所提組合模型ARIMA-LSTM的預(yù)測精度最高,性能最優(yōu)。

圖5 不同模型的預(yù)測結(jié)果對比

表1 不同模型預(yù)測結(jié)果的比較
本文提出一種基于ARIMA-LSTM組合模型的應(yīng)用系統(tǒng)響應(yīng)時間預(yù)測方法。該方法利用ARIMA模型提取響應(yīng)時間序列數(shù)據(jù)中的線性成分,再通過LSTM模型擬合ARIMA模型殘差以捕獲序列數(shù)據(jù)中的非線性成分,最后集成得到最終預(yù)測結(jié)果。以國家電網(wǎng)網(wǎng)絡(luò)大學(xué)平臺中打開首頁的響應(yīng)時間預(yù)測實(shí)例進(jìn)行了實(shí)證研究,實(shí)驗(yàn)結(jié)果表明,相比于經(jīng)典的BP、ARIMA以及LSTM單一模型,所提組合模型ARIMA-LSTM的預(yù)測精度更高,擬合性更優(yōu),所提模型可行且有效。