本發(fā)明涉及云環(huán)境下服務(wù)性能優(yōu)化技術(shù)領(lǐng)域,尤其涉及一種云環(huán)境下非平穩(wěn)型應(yīng)用用戶并發(fā)量的預(yù)測系統(tǒng)及方法。
背景技術(shù):
隨著云應(yīng)用服務(wù)系統(tǒng)的復(fù)雜化及其運行環(huán)境的開放化、動態(tài)化和難控化,云應(yīng)用服務(wù)系統(tǒng)在不同的時間點承載的并發(fā)量有著顯著的差異,并往往呈現(xiàn)出沿著某種規(guī)律的非平穩(wěn)的趨勢。應(yīng)用用戶并發(fā)量是指應(yīng)用在單位時間內(nèi)的用戶請求數(shù)。云應(yīng)用服務(wù)系統(tǒng)通過監(jiān)測應(yīng)用用戶并發(fā)量,分析和預(yù)測歷史應(yīng)用用戶并發(fā)量,執(zhí)行適合的保障服務(wù)性能資源調(diào)整策略,達到保障云服務(wù)系統(tǒng)的穩(wěn)定性和有效性的目的。因此,準(zhǔn)確實時的應(yīng)用用戶并發(fā)量預(yù)測既是判斷并發(fā)量異常與否的依據(jù),也是動態(tài)資源配置的基礎(chǔ)。傳統(tǒng)的應(yīng)用用戶并發(fā)量預(yù)測多將應(yīng)用用戶并發(fā)量看作成平穩(wěn)時間序列,采用AR等線性模型進行預(yù)測,簡單但精度較差。近年來,基于神經(jīng)網(wǎng)絡(luò)的非線性預(yù)測理論和方法得到廣泛應(yīng)用,提高了預(yù)測精度,但神經(jīng)網(wǎng)絡(luò)固有的缺陷阻礙了它的進一步發(fā)展。
在云應(yīng)用服務(wù)系統(tǒng)中,通過觸發(fā)模塊判斷是否需要執(zhí)行云資源性能優(yōu)化過程:如果當(dāng)前周期應(yīng)用的實際并發(fā)量與預(yù)測并發(fā)量的差值的絕對值大于閾值,則觸發(fā)性能優(yōu)化過程;否則,不觸發(fā)性能優(yōu)化過程。因此,盡可能準(zhǔn)確地預(yù)測云應(yīng)用用戶并發(fā)量有助于提高云資源性能優(yōu)化過程的效率。在這個過程中,建立并發(fā)量預(yù)測模型是云應(yīng)用系統(tǒng)性能優(yōu)化的關(guān)鍵。但由于云環(huán)境的復(fù)雜性,應(yīng)用所處理的業(yè)務(wù)大多屬于非平穩(wěn)型并發(fā)業(yè)務(wù),即應(yīng)用用戶并發(fā)量不在一定數(shù)值上下內(nèi)平穩(wěn)變化的業(yè)務(wù),其包括趨勢性并發(fā)業(yè)務(wù)與周期性并發(fā)業(yè)務(wù)。趨勢性并發(fā)業(yè)務(wù)是指應(yīng)用用戶并發(fā)量在一段時間內(nèi)具有遞增或遞減趨勢的業(yè)務(wù)。周期性并發(fā)業(yè)務(wù)是指應(yīng)用用戶并發(fā)量在一段時間內(nèi)周期性變化的業(yè)務(wù)。
為了構(gòu)建并發(fā)量預(yù)測模型,現(xiàn)有技術(shù)中大多采用時間序列分析、人工神經(jīng)網(wǎng)絡(luò)以及卡爾曼濾波等方法,主要有:依賴連續(xù)并發(fā)量信息的測量和捕獲,采用多種線性時間序列模型對并發(fā)量進行短期的預(yù)測;基于人工神經(jīng)網(wǎng)絡(luò)的BP預(yù)測算法,應(yīng)用人工智能技術(shù)預(yù)測并發(fā)量;基于濾波理論的預(yù)測算法PAA,應(yīng)用電子或動力學(xué)的濾波理論預(yù)測并發(fā)量;等等。然而,現(xiàn)有的研究都集中在預(yù)測的算法上,企圖建立一個通用的預(yù)測算法以適應(yīng)各種應(yīng)用,這勢必導(dǎo)致算法的通用性提高而準(zhǔn)確性降低。而并發(fā)量本身沒有一個特定的非線性模式,不同的應(yīng)用,由于性質(zhì)的差異,需要相對應(yīng)的、適合的預(yù)測方法進行并發(fā)量預(yù)測。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)的缺陷,本發(fā)明提供一種云環(huán)境下非平穩(wěn)型應(yīng)用用戶并發(fā)量的預(yù)測系統(tǒng)及方法,針對云環(huán)境下非平穩(wěn)型業(yè)務(wù)的趨勢性與周期性應(yīng)用用戶并發(fā)量的特點,利用不同的預(yù)測方法構(gòu)造了預(yù)測模型,對含有兩種性質(zhì)的并發(fā)量進行預(yù)測,能自動識別趨勢性和周期性并分發(fā)量序列的特征,并能自動計算出序列的周期數(shù),且無需人工干預(yù),能自行完成預(yù)測過程,同時能有效提高非平穩(wěn)型業(yè)務(wù)并發(fā)量預(yù)測的準(zhǔn)確性。
一方面,本發(fā)明提供一種云環(huán)境下非平穩(wěn)型應(yīng)用用戶并發(fā)量的預(yù)測系統(tǒng),包括歷史數(shù)據(jù)獲取模塊、非平穩(wěn)型業(yè)務(wù)判定模塊和應(yīng)用用戶并發(fā)量預(yù)測模塊;
所述歷史數(shù)據(jù)獲取模塊用于通過連接存儲應(yīng)用用戶并發(fā)量的數(shù)據(jù)庫,將云環(huán)境下一段時間內(nèi)用戶并發(fā)量按照一定的時間間隔從數(shù)據(jù)庫中獲取到系統(tǒng)緩存當(dāng)中,為非平穩(wěn)型判定模塊提供有效的用戶并發(fā)量歷史數(shù)據(jù)時間序列;
所述非平穩(wěn)型業(yè)務(wù)判定模塊用于通過分析從歷史數(shù)據(jù)獲取模塊得到的用戶并發(fā)量歷史數(shù)據(jù)時間序列,來識別產(chǎn)生該用戶并發(fā)量歷史數(shù)據(jù)時間序列的業(yè)務(wù)是否屬于非平穩(wěn)型業(yè)務(wù),包括:趨勢性識別模塊和周期性識別模塊;
所述趨勢性識別模塊用于利用時間序列自相關(guān)系數(shù)趨勢識別法,識別用戶并發(fā)量歷史數(shù)據(jù)時間序列是否具有趨勢性;所述時間序列自相關(guān)系數(shù)趨勢識別法是一種利用自相關(guān)系數(shù)與T分布相結(jié)合,對時間序列的自相關(guān)系數(shù)與零值的差異性進行檢測,從而分析時間序列的趨勢性的方法;
所述周期性識別模塊用于利用時間序列功率譜周期識別法,識別用戶并發(fā)量歷史數(shù)據(jù)時間序列是否具有周期性,并計算周期性用戶并發(fā)量歷史數(shù)據(jù)時間序列的周期數(shù);所述時間序列功率譜周期識別法是利用周期圖法計算時間序列的功率譜,并對時間序列的功率譜進行奇異值檢測分析,從而識別出時間序列的周期性,并計算具有周期性的時間序列的周期數(shù);
所述應(yīng)用用戶并發(fā)量預(yù)測模塊用于利用經(jīng)過所述非平穩(wěn)型業(yè)務(wù)判定模塊判定后的非平穩(wěn)型業(yè)務(wù)的應(yīng)用用戶并發(fā)量歷史數(shù)據(jù)時間序列,建立相應(yīng)的云環(huán)境下應(yīng)用用戶并發(fā)量預(yù)測模型,并利用該模型預(yù)測得到未來一段時間內(nèi)的應(yīng)用用戶并發(fā)量時間序列,包括趨勢性并發(fā)量預(yù)測模塊和周期性并發(fā)量預(yù)測模塊;
所述趨勢性并發(fā)量預(yù)測模塊用于對趨勢性并發(fā)量時間序列進行預(yù)測;
所述周期性并發(fā)量預(yù)測模塊用于從周期性識別模塊獲取周期數(shù),然后進行周期性并發(fā)量時間序列的預(yù)測;
所述云環(huán)境下應(yīng)用用戶并發(fā)量預(yù)測模型是一種無需任何參數(shù)針對趨勢性時間序列與周期性時間序列的預(yù)測模型。
另一方面,本發(fā)明還提供一種云環(huán)境下非平穩(wěn)型應(yīng)用用戶并發(fā)量的預(yù)測方法,采用所述的云環(huán)境下非平穩(wěn)型應(yīng)用用戶并發(fā)量的預(yù)測系統(tǒng)實現(xiàn),包括以下步驟:
步驟1:從數(shù)據(jù)庫服務(wù)器獲取用戶并發(fā)量歷史數(shù)據(jù)時間序列S;
從數(shù)據(jù)庫服務(wù)器獲取用戶并發(fā)量歷史數(shù)據(jù)時間序列S,如下式所示;
其中,coni為ti時間的并發(fā)量,時間ti滿足ti<ti+1,n為并發(fā)量總個數(shù);
步驟2、計算自相關(guān)系數(shù)序列;
將用戶并發(fā)量序列按延遲步長為k的間隔可化分為n-k個二元組:<conl,conl+k>、…、<coni,coni+k>、…、<conn-k,conn>,其延遲步長為k的自相關(guān)系數(shù)ρk為:
其中,為并發(fā)量時間序列中前n-k項的平均值,為并發(fā)量時間序列中前n-k項向后平移k項的所有值的平均值;γ(i,i+k)為自協(xié)方差函數(shù);
用戶并發(fā)量自相關(guān)系數(shù)序列由各延遲步長下自相關(guān)系數(shù)組成,為其中,Pm為用戶并發(fā)量自相關(guān)系數(shù)序列,k=1,2,…,例,m為最大延遲步長;
步驟3、計算功率譜序列;
用戶并發(fā)量功率譜序列由各頻率下時間序列的功率譜組成,為其中,Q為用戶并發(fā)量功率譜序列,為頻率為v時并發(fā)量序列的功率譜,其中,F(xiàn)v為用戶并發(fā)量序列的離散傅里葉變換,v=1,2,…,n,Wn為旋轉(zhuǎn)因子,j為虛數(shù)單位;
步驟4、對用戶并發(fā)量歷史數(shù)據(jù)時間序列進行業(yè)務(wù)性質(zhì)識別,具體包括:
步驟4.1、進行趨勢性識別,識別方法為:
步驟4.1.1、利用t分布推斷出并發(fā)量自相關(guān)系數(shù)序列Pm與零值發(fā)生差異的錯誤概率Pρ;
步驟4.1.2、判斷錯誤概率Pρ與趨勢性判定閾值Ps的關(guān)系,若Pρ>Ps,表示自相關(guān)系數(shù)序列Pm與零差異性不顯著,該用戶并發(fā)量歷史數(shù)據(jù)時間序列無趨勢性,執(zhí)行步驟4.2;若Pρ<Ps,表示自相關(guān)系數(shù)序列Pm與零差異性顯著,該用戶并發(fā)量歷史數(shù)據(jù)時間序列含有趨勢性,執(zhí)行步驟5,進行趨勢性并發(fā)量的預(yù)測;
步驟4.2、進行周期性識別,識別方法為:
步驟4.2.1、確定功率譜序列Q的相鄰數(shù)據(jù)變化序列H,為
其中,為向上取整符號;
步驟4.2.2、根據(jù)3σ準(zhǔn)則,判斷頻率為v時并發(fā)量序列的功率譜的奇異性,μc為相鄰數(shù)據(jù)變化序列H的平均值,σc為相鄰數(shù)據(jù)變化序列H的標(biāo)準(zhǔn)差,若hv-μc>3σc,為奇異值,則用戶并發(fā)量歷史數(shù)據(jù)時間序列含有周期性,執(zhí)行步驟4.3;否則,為非奇異值,用戶并發(fā)量歷史數(shù)據(jù)時間序列不含周期性,則步驟終止;
步驟4.3、計算用戶并發(fā)量歷史數(shù)據(jù)時間序列的周期數(shù)nperiod,其中,v。為周期峰對應(yīng)的頻率;然后執(zhí)行步驟5,進行周期性并發(fā)量的預(yù)測;
步驟5、進行趨勢性并發(fā)量預(yù)測,具體方法為:
步驟5.1、進行基于線性回歸的數(shù)據(jù)擬合,采用線性回歸的方法對趨勢性應(yīng)用并發(fā)量序列進行擬合,得到訓(xùn)練完成的線性回歸模型fw(x)和原始數(shù)據(jù)與線性回歸模型擬合后的殘差數(shù)據(jù)序列,進而將原始序列與擬合序列的殘差作為平穩(wěn)型序列進行分析;
步驟5.2、進行基于ARMA(Auto-Regressive and Moving Average,自回歸滑動平均)的殘差擬合,實現(xiàn)對殘差數(shù)據(jù)序列的分析和建模,得到的ARMA(p,q)模型有p+q+2個未知參數(shù),即θ1,θ2,…,θq、μ和p是自回歸階數(shù),q是移動平均階數(shù),是p階自相關(guān)系數(shù),θ1,θ2,…,θq是q階移動平均系數(shù),μ是移動位移值,是隨機干擾項的方差值,其中,p和q需要進行預(yù)設(shè);
步驟5.3、進行基于Ljung-Box檢驗的二次殘差驗證;
采用Ljung-Box檢驗進行驗證,Ljung-Box檢驗則是基于一系列滯后階數(shù),對二次殘差是否屬于高斯白噪聲進行驗證,二次殘差是指擬合ARMA后得到的殘差序列,判斷序列總體的相關(guān)性是否存在,驗證的本質(zhì)是確定建立的ARMA模型是否有效,如果相關(guān)性不存在代表ARMA模型有效,則執(zhí)行步驟5.4,反之,相關(guān)性存在代表ARMA模型無效,則重新訓(xùn)練ARMA模型,返回步驟5.2;
步驟5.4、基于訓(xùn)練完成的線性回歸模型和ARMA模型進行趨勢性應(yīng)用用戶并發(fā)量的預(yù)測;
步驟6、進行周期性并發(fā)量預(yù)測,具體方法如下:
步驟6.1、初始化粒子群的最大粒子數(shù)、最大迭代次數(shù)以及粒子的位置和速度;
步驟6.2、采用5折交叉驗證法訓(xùn)練支持向量機模型,將并發(fā)量歷史時間序列分為5個數(shù)據(jù)包,其中4個數(shù)據(jù)包用于訓(xùn)練,1個數(shù)據(jù)包用于測試訓(xùn)練結(jié)果;
步驟6.3、利用預(yù)測準(zhǔn)確率fCP作為適應(yīng)度評價標(biāo)準(zhǔn)評價粒子適應(yīng)度,預(yù)測準(zhǔn)確率fCP為其中,為并發(fā)量預(yù)測值,和分別為指定的并發(fā)量歷史數(shù)據(jù)coni可接受的準(zhǔn)確區(qū)間的上界和下界,coni為并發(fā)量歷史值,PL為預(yù)測的容錯度;
步驟6.4、更新局部最優(yōu)解與全局最優(yōu)解,并將結(jié)果記錄在局部最優(yōu)解向量pi與全局最優(yōu)解向量pg中;
步驟6.5、判斷更新迭代是否達到終止條件,迭代的終止條件為最大迭代次數(shù),如果最大迭代次數(shù)尚未達到,則更新粒子的位置和速度后,返回步驟6.4,進入下一個迭代循環(huán),繼續(xù)查找支持向量機參數(shù)的最優(yōu)解;如果達到最大迭代次數(shù),則迭代終止,粒子群優(yōu)化結(jié)束,得到支持向量機的懲罰因子C與核參數(shù)γ的最優(yōu)解,執(zhí)行步驟6.6;
步驟6.6、進行支持向量機預(yù)測,利用從粒子群優(yōu)化算法中得到的懲罰因子C與核參數(shù)γ的最優(yōu)解作用于支持向量機,并利用并發(fā)量歷史數(shù)據(jù)時間序列訓(xùn)練支持向量機模型,然后利用訓(xùn)練結(jié)果及輸入的預(yù)測時間序列的時間標(biāo)識,通過重建訓(xùn)練預(yù)測出周期性應(yīng)用用戶并發(fā)量數(shù)據(jù)。
進一步地,所述步驟5.1中數(shù)據(jù)擬合的過程如下:
步驟5.1.1、設(shè)置進行線性回歸擬合的目標(biāo)函數(shù)為fw(ti)=wTti,fw(ti)表示ti時刻對應(yīng)的擬合應(yīng)用用戶并發(fā)量,w為損失函數(shù)參數(shù);
步驟5.1.2、設(shè)置進行線性回歸的損失函數(shù)為了(w)表示真實應(yīng)用用戶并發(fā)量與擬合應(yīng)用用戶并發(fā)量的誤差平方和;
步驟5.1.3、采用梯度下降法進行損失函數(shù)中的參數(shù)優(yōu)化求解,得到損失函數(shù)參數(shù)w的更新公式為:其中,α為學(xué)習(xí)速率,j為w更新的標(biāo)號,j=0,1,…,limit,limit為梯度下降的迭代次數(shù);設(shè)置參數(shù)更新閾值ε,參數(shù)更新直到前后兩次絕對值小于參數(shù)更新閾值ε或者更新迭代次數(shù)達到了設(shè)置的迭代次數(shù)limit。
進一步地,所述步驟5.3判斷序列總體的相關(guān)性是否存在的具體方法為:
步驟5.3.1、Ljung-Box檢驗的原假設(shè)H0為:原本的數(shù)據(jù)都是獨立的,即總體的相關(guān)系數(shù)為0,能觀察到的某些相關(guān)僅僅產(chǎn)生于隨機抽樣的誤差,即其中,h是指定延遲期數(shù),根據(jù)二次殘差的自相關(guān)圖人為設(shè)定其取值的數(shù)值;Ljung-Box檢驗的備擇假設(shè)Ha為:原本的數(shù)據(jù)不是獨立的,即至少存在某個其中,k≤h;
步驟5.3.2、構(gòu)造統(tǒng)計量R為其中,u是用戶并發(fā)量時間序列二次殘差序列中元素的個數(shù),其數(shù)值上和n相等,是二次殘差序列k階滯后的相關(guān)系數(shù),該統(tǒng)計量服從自由度為h的卡方分布,給定顯著性水平α,則拒絕域是若接受原假設(shè)HO,則認(rèn)為原序列不存在相關(guān)性,否則認(rèn)為原序列存在相關(guān)性。
進一步地,所述步驟5.4中趨勢性應(yīng)用用戶并發(fā)量的預(yù)測方法,具體步驟如下:
步驟5.4.1、基于訓(xùn)練完成的線性回歸模型,得到下一段時間tn+1,tn+2,…,tl的預(yù)測并發(fā)量為pre_conn+1,pre_conn+2,…,pre_conl,1表示預(yù)測并發(fā)量時間點的個數(shù),同時也是預(yù)測并發(fā)量的個數(shù);
步驟5.4.2、基于訓(xùn)練完成的ARMA模型,得到下一段時間tn+1,tn+2,…,tl的預(yù)測殘差為pre_biasn+1,pre_biasn+2,…,pre_biasl;
步驟5.4.3、下一段時間tn+1,tn+2,…,tm的預(yù)測趨勢性應(yīng)用用戶并發(fā)量為pre_conn+1+pre_biasn+1,pre_conn+2+pre_biasn+2,…,pre_conm+pre_biasm。
由上述技術(shù)方案可知,本發(fā)明的有益效果在于:本發(fā)明提供的一種云環(huán)境下非平穩(wěn)型應(yīng)用用戶并發(fā)量的預(yù)測系統(tǒng)及方法,針對云環(huán)境下非平穩(wěn)型業(yè)務(wù)的趨勢性與周期性應(yīng)用用戶并發(fā)量的特點,利用不同的預(yù)測方法構(gòu)造了預(yù)測模型,對含有兩種性質(zhì)的并發(fā)量進行預(yù)測,提高了非平穩(wěn)型業(yè)務(wù)并發(fā)量預(yù)測的準(zhǔn)確性;并發(fā)量序列趨勢性判定方法,本方法通過自相關(guān)系數(shù)與T分布結(jié)合分析,可以自動的識別趨勢性并分發(fā)量序列的特征;并發(fā)量序列周期性判定方法,本方法通過周期圖法計算出的功率譜序列與3口準(zhǔn)則結(jié)合分析,可以自動的識別周期性并發(fā)量的特征,并可以自動的計算出序列的周期數(shù),解決了人工干預(yù)計算周期的問題;趨勢性并發(fā)量序列預(yù)測方法,采用線性回歸的方法對趨勢型應(yīng)用并發(fā)量序列進行擬合,并與ARMA算法結(jié)合,使擬合序列與殘差擬合序列共同構(gòu)造出預(yù)測序列,這種方法對具有趨勢性的序列具有優(yōu)秀的預(yù)測效果,且無需人工干預(yù),自行完成預(yù)測過程;周期性并發(fā)量序列預(yù)測方法,利用粒子群優(yōu)化的支持向量機對已知周期的并發(fā)量序列進行預(yù)測,能夠精準(zhǔn)的識別周期特征,尤其是對有趨勢變化的周期性序列較其他預(yù)測方法有較好的預(yù)測效果,且無需人工干預(yù),自行完成預(yù)測過程。
附圖說明
圖1為本發(fā)明實施例提供的云環(huán)境下非平穩(wěn)型應(yīng)用用戶并發(fā)量的預(yù)測系統(tǒng)的結(jié)構(gòu)框圖;
圖2為本發(fā)明實施例提供的云環(huán)境下應(yīng)用用戶并發(fā)量預(yù)測模型的結(jié)構(gòu)框圖;
圖3為本發(fā)明實施例提供的云環(huán)境下非平穩(wěn)型應(yīng)用用戶并發(fā)量的預(yù)測方法的流程圖;
圖4為本發(fā)明實施例提供的周期性應(yīng)用用戶并發(fā)量的預(yù)測流程圖;
圖5為本發(fā)明實施例提供的趨勢性應(yīng)用用戶并發(fā)量預(yù)測流程圖。
具體實施方式
下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式作進一步詳細描述。以下實施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。
如圖1所示,一種云環(huán)境下非平穩(wěn)型應(yīng)用用戶并發(fā)量的預(yù)測系統(tǒng),包括歷史數(shù)據(jù)獲取模塊、非平穩(wěn)型業(yè)務(wù)判定模塊和應(yīng)用用戶并發(fā)量預(yù)測模塊。
歷史數(shù)據(jù)獲取模塊用于通過連接存儲應(yīng)用用戶并發(fā)量的數(shù)據(jù)庫,將云環(huán)境下一段時間內(nèi)用戶并發(fā)量按照一定的時間間隔從數(shù)據(jù)庫中獲取到系統(tǒng)緩存當(dāng)中,為非平穩(wěn)型判定模塊提供有效的用戶并發(fā)量歷史數(shù)據(jù)時間序列。
非平穩(wěn)型業(yè)務(wù)判定模塊用于通過分析從歷史數(shù)據(jù)獲取模塊得到的用戶并發(fā)量歷史數(shù)據(jù)時間序列,來識別產(chǎn)生該用戶并發(fā)量歷史數(shù)據(jù)時間序列的業(yè)務(wù)是否屬于非平穩(wěn)型業(yè)務(wù),包括:趨勢性識別模塊和周期性識別模塊,應(yīng)用用戶并發(fā)量預(yù)測模塊提供算法選擇依據(jù)及必要數(shù)據(jù)。
趨勢性識別模塊用于利用時間序列自相關(guān)系數(shù)趨勢識別法,識別用戶并發(fā)量歷史數(shù)據(jù)時間序列是否具有趨勢性。時間序列自相關(guān)系數(shù)趨勢識別法是一種利用自相關(guān)系數(shù)與T分布相結(jié)合,對時間序列的自相關(guān)系數(shù)與零值的差異性進行檢測,從而識別時間序列的趨勢性的方法。
周期性識別模塊用于利用時間序列功率譜周期識別法,識別用戶并發(fā)量歷史數(shù)據(jù)時間序列是否具有周期性,并計算周期性用戶并發(fā)量歷史數(shù)據(jù)時間序列的周期數(shù)。時間序列功率譜周期識別法是利用周期圖法計算時間序列的功率譜,并對時間序列的功率譜進行奇異值檢測分析,從而識別出時間序列的周期性,并計算具有周期性的時間序列的周期數(shù)。
應(yīng)用用戶并發(fā)量預(yù)測模塊用于利用經(jīng)過非平穩(wěn)型業(yè)務(wù)判定模塊判定后的非平穩(wěn)型業(yè)務(wù)的應(yīng)用用戶并發(fā)量歷史數(shù)據(jù)時間序列,建立相應(yīng)的云環(huán)境下應(yīng)用用戶并發(fā)量預(yù)測模型,并利用該模型預(yù)測得到未來一段時間內(nèi)的應(yīng)用用戶并發(fā)量時間序列,包括趨勢性并發(fā)量預(yù)測模塊和周期性并發(fā)量預(yù)測模塊。
趨勢性并發(fā)量預(yù)測模塊用于對趨勢性并發(fā)量時間序列進行預(yù)測,周期性并發(fā)量預(yù)測模塊用于從周期性識別模塊獲取周期數(shù),然后進行周期性并發(fā)量時間序列的預(yù)測。
云環(huán)境下應(yīng)用用戶并發(fā)量預(yù)測模型是一種無需任何參數(shù)針對趨勢性時間序列與周期性時間序列的預(yù)測模型,模型結(jié)構(gòu)如圖2所示,采取分別預(yù)測的方式,趨勢性并發(fā)量利用粒子群優(yōu)化的支持向量機進行預(yù)測,周期性并發(fā)量利用基于線性回歸與ARMA的方法進行預(yù)測。
采用上述的預(yù)測系統(tǒng)進行云環(huán)境下非平穩(wěn)型應(yīng)用用戶并發(fā)量預(yù)測的方法,如圖3所示,具體包括以下步驟。
步驟1、獲取用戶并發(fā)量歷史數(shù)據(jù)。
從數(shù)據(jù)庫服務(wù)器獲取用戶并發(fā)量歷史數(shù)據(jù)時間序列,本實施方案中,從數(shù)據(jù)庫服務(wù)器獲取2016年3月5日-2016年3月7日間每天9:00-10:15的并發(fā)量數(shù)據(jù),這些并發(fā)量數(shù)據(jù)以30秒為時間間隔記錄,此用戶并發(fā)量歷史數(shù)據(jù)時間序列是一個按照時間順序排列的時間與并發(fā)量的二元組的集合,即用戶并發(fā)量時間序列為
其中,coni為ti時間的并發(fā)量,時間ti滿足ti<ti+1,n為并發(fā)量總個數(shù),本實施例中的并發(fā)量總個數(shù)為450。
為了減小并發(fā)量個別噪聲對特征分析造成的影響,coni的取值為時間步長內(nèi)的平均并發(fā)量,即其中,ri為ti-1至ti時間內(nèi)云服務(wù)的用戶請求數(shù)。
步驟2、計算自相關(guān)系數(shù)序列。
由步驟1可知,con1、con2、…、coni、…、conn是過去450個時間點對應(yīng)的用戶并發(fā)量,將這個序列按延遲步長為1的間隔可化分為n-1即449個二元組:<con1,con2>、<con2,con3>、…、<coni,coni+1>、…、<con449,con450>,其延遲步長為1的自相關(guān)系數(shù)為:
其中,為并發(fā)量時間序列中前n-k項的平均值,為并發(fā)量時間序列中前n-k項向后平移k項的所有值的平均值;γ(i,i+k)為自協(xié)方差函數(shù);
自相關(guān)系數(shù)的含義不同于兩個變量間的相關(guān)系數(shù),并發(fā)量自相關(guān)系數(shù)ρ1用來度量并發(fā)量時間序列上一時間段并發(fā)量觀測值與下一時間段并發(fā)量觀測值之間的關(guān)系,從定量的角度來研究上一時間段對下一時間段并發(fā)量觀測值的影響程度的大小。自相關(guān)系數(shù)的延遲步長是組成二元組的兩個數(shù)值在序列中的間隔數(shù),如果延遲步長為k,則組成的二元組為<coni,coni+k>,由此可知,并發(fā)量時間序列可被劃分出n-k個二元組,這樣可以得到并發(fā)量的自相關(guān)系數(shù)序列。
用戶并發(fā)量自相關(guān)系數(shù)序列是一個由各延遲步長下自相關(guān)系數(shù)組成的序列其中,ρk為并發(fā)量時間序列在延遲步長為k下的自相關(guān)系數(shù):
其中,k=1,2,…,m,m為最大延遲步長,一般情況下為向上取整符號,本實施例中,最大延遲步長m取值150。
步驟3、計算功率譜序列。
并發(fā)量功率譜序列是一個由各頻率下時間序列的功率譜組成的序列其中,為頻率為v時并發(fā)量序列的功率譜:
其中,F(xiàn)v為用戶并發(fā)量序列的離散傅里葉變換,v=1,2,…,n,Wn為旋轉(zhuǎn)因子,j為虛數(shù)單位。
步驟4、對用戶并發(fā)量歷史數(shù)據(jù)時間序列進行業(yè)務(wù)性質(zhì)識別,具體包括:
步驟4.1、進行趨勢性識別,識別方法為:
步驟4.1.1、利用t分布推斷出并發(fā)量自相關(guān)系數(shù)序列Pm與零值發(fā)生差異的錯誤概率Pρ;
步驟4.1.2、判斷錯誤概率Pρ與趨勢性判定閾值Ps的關(guān)系,若Pρ>Ps,表示自相關(guān)系數(shù)序列Pm與零差異性不顯著,該用戶并發(fā)量歷史數(shù)據(jù)時間序列無趨勢性,執(zhí)行步驟4.2;若Pρ<Ps,表示自相關(guān)系數(shù)序列Pm與零差異性顯著,該用戶并發(fā)量歷史數(shù)據(jù)時間序列含有趨勢性,執(zhí)行步驟5,進行趨勢性并發(fā)量的預(yù)測;
趨勢性判定閾值Ps可調(diào)節(jié)趨勢性判定的標(biāo)準(zhǔn),Ps值越大,用戶并發(fā)量歷史數(shù)據(jù)時間序列越容易被判定為具有趨勢性,反之,則具有較強趨勢性的序列才能被判定為具有趨勢性。本實施例中,Ps=0.05;
步驟4.2、進行周期性識別,識別方法為:
步驟4.2.1、確定功率譜序列Q的相鄰數(shù)據(jù)變化序列H,為
其中,由于當(dāng)v=1時,頻率為v時并發(fā)量序列的功率譜的值可能會出現(xiàn)突出峰值,當(dāng)時間序列為趨勢性時這個峰值尤為突出,但這個峰值表示整個時間序列只有一個周期,因此這個值不能代表序列的周期性,所以在識別突出峰值時不考慮v=1時的功率譜;
步驟4.2.2、用μc代表相鄰數(shù)據(jù)變化序列H的平均值,用σc代表相鄰數(shù)據(jù)變化序列H的標(biāo)準(zhǔn)差,則根據(jù)3σ準(zhǔn)則,判斷頻率為v時并發(fā)量序列的功率譜的奇異性,若hv-μc>3σc,為奇異值,則用戶并發(fā)量歷史數(shù)據(jù)時間序列含有周期性,執(zhí)行步驟4.3;否則,為非奇異值,用戶并發(fā)量歷史數(shù)據(jù)時間序列不含周期性,則步驟終止;
步驟4.3、計算用戶并發(fā)量歷史數(shù)據(jù)時間序列的周期數(shù),然后執(zhí)行步驟6,進行周期性并發(fā)量的預(yù)測;
如果用戶并發(fā)量歷史數(shù)據(jù)時間序列含有周期性,則計算其周期數(shù)nperiod,并發(fā)量序列周期數(shù)為并發(fā)量序列在一個周期內(nèi)的數(shù)值個數(shù):
其中,vs為周期峰對應(yīng)的頻率,周期峰即在功率譜序列中突出大的一個功率譜數(shù)值。
步驟5、進行趨勢性并發(fā)量預(yù)測,如圖4所示,具體方法為:
步驟5.1、進行基于線性回歸的數(shù)據(jù)擬合,采用線性回歸的方法對趨勢性應(yīng)用并發(fā)量序列進行擬合,得到訓(xùn)練完成的線性回歸模型fw(x)和原始數(shù)據(jù)與線性回歸模型擬合后的殘差數(shù)據(jù)序列,進而將原始序列與擬合序列的殘差作為平穩(wěn)型序列進行分析,擬合過程如下:
步驟5.1.1、設(shè)置進行線性回歸擬合的目標(biāo)函數(shù)為fw(ti)=wTti,fw(ti)表示ti時刻對應(yīng)的擬合應(yīng)用用戶并發(fā)量,w為損失函數(shù)參數(shù);本實施例中,w初始化設(shè)置為一個各元素為0的向量[0,0];
步驟5.1.2、設(shè)置進行線性回歸的損失函數(shù)為了(w)表示真實應(yīng)用用戶并發(fā)量與擬合應(yīng)用用戶并發(fā)量的誤差平方和;
步驟5.1.3、采用梯度下降法進行損失函數(shù)中的參數(shù)優(yōu)化求解,得到損失函數(shù)參數(shù)w的更新公式為:其中,α為學(xué)習(xí)速率,j為w更新的標(biāo)號,j=0,1,…,limit,limit為梯度下降的迭代次數(shù);設(shè)置參數(shù)更新閾值ε,參數(shù)更新直到前后兩次絕對值小于參數(shù)更新閾值ε或者更新迭代次數(shù)達到了設(shè)置的迭代次數(shù)limit;本實施例中,limit=200,ε=10-3;
通過線性回歸對原始數(shù)據(jù)訓(xùn)練完成之后,會得到兩部分內(nèi)容,一部分是訓(xùn)練完成的線性回歸模型fw(x),另一部分是原始數(shù)據(jù)與線性回歸模型擬合后的殘差數(shù)據(jù)序列;
步驟5.2、進行基于ARMA的殘差擬合;
在得到殘差應(yīng)用用戶并發(fā)量數(shù)據(jù)之后,基于殘差應(yīng)用用戶并發(fā)量數(shù)據(jù)的特點,采用ARMA算法(Auto-Regressive and Moving Average,自回歸滑動平均)實現(xiàn)對殘差數(shù)據(jù)序列的分析和建模;
對于ARMA(p,q)模型,有p+q+2個未知參數(shù),即θ1、θ2、…、θq、μ和p是自回歸階數(shù),q是移動平均階數(shù),是p階自相關(guān)系數(shù),θ1,θ2,…,θq是q階移動平均系數(shù),μ是移動位移值,是隨機干擾項的方差值,其中,p和q需要進行預(yù)設(shè),它們共同決定模型的擬合效果;本實施例中,p=4,q=1,即ARMA(p,q)模型由7個未知參數(shù);
步驟5.3、進行基于Ljung-Box檢驗的二次殘差驗證;
采用Ljung-Box檢驗進行驗證,Ljung-Box檢驗則是基于一系列滯后階數(shù),對二次殘差是否屬于高斯白噪聲進行驗證,二次殘差是指擬合ARMA后得到的殘差序列,判斷序列總體的相關(guān)性或者說隨機性是否存在,驗證的本質(zhì)是確定建立的ARMA模型是否有效,具體方法為:
步驟5.3.1、Ljung-Box檢驗的原假設(shè)H0為:原本的數(shù)據(jù)都是獨立的,即總體的相關(guān)系數(shù)為0,能觀察到的某些相關(guān)僅僅產(chǎn)生于隨機抽樣的誤差,即其中h是指定延遲期數(shù),根據(jù)二次殘差的自相關(guān)圖人為設(shè)定其取值的數(shù)值,本實施例中,h=10;Ljung-Box檢驗的備擇假設(shè)Ha為:原本的數(shù)據(jù)不是獨立的,即至少存在某個其中,k≤h;
步驟5.3.2、構(gòu)造統(tǒng)計量R為:其中,u是用戶并發(fā)量時間序列二次殘差序列中元素的個數(shù),其數(shù)值上和n相等,是二次殘差序列k階滯后的相關(guān)系數(shù),該統(tǒng)計量R服從自由度為h的卡方分布,給定顯著性水平α,則拒絕域是接受原假設(shè)意味著認(rèn)為原序列是白噪聲序列,相關(guān)性不存在,ARMA模型有效,則執(zhí)行步驟5.4,否則認(rèn)為序列存在相關(guān)性,ARMA模型無效,則返回步驟5.2,重新訓(xùn)練ARMA模型;
經(jīng)過以上步驟,可以驗證ARMA模型是否充分提取了殘差中信息,并能夠?qū)埐钸M行精確的預(yù)測,若經(jīng)過ARMA模型得到的二次殘差不屬于高斯白噪聲,說明需要返回步驟5.2進行ARMA模型的重建;
步驟5.4、進行基于訓(xùn)練模型的預(yù)測;
通過對線性回歸模型和ARMA的訓(xùn)練,能夠分別得到兩個模型:線性回歸模型對原始應(yīng)用用戶并發(fā)量數(shù)據(jù)的趨勢進行擬合,進而對未來下一段時間的應(yīng)用用戶并發(fā)量進行預(yù)測,ARMA模型對基于線性回歸擬合后的殘差數(shù)據(jù)進行擬合,進而對未來下一段時間的殘差趨勢進行預(yù)測;因此,趨勢性應(yīng)用用戶并發(fā)量的預(yù)測包括兩部分的預(yù)測結(jié)果之和,具體步驟如下:
步驟5.4.1、基于訓(xùn)練完成的線性回歸模型,得到下一段時間tn+1,tn+2,…,tl的預(yù)測并發(fā)量為pre_conn+1,pre_conn+2,…,pre_conl,l表示預(yù)測并發(fā)量時間點的個數(shù),同時也是預(yù)測并發(fā)量的個數(shù),本實施例中嗎,1=50;
步驟5.4.2、基于訓(xùn)練完成的ARMA模型,得到下一段時間tn+1,tn+2,…,tm的預(yù)測殘差為pre_biasn+1,pre_biasn+2,…,pre_biasm;
步驟5.4.3、下一段時間tn+1,tn+2,…,tm的預(yù)測趨勢性應(yīng)用用戶并發(fā)量為pre_conn+1+pre_biasn+1,pre_conn+2+pre_biasn+2,…,pre_conm+pre_biasm。
步驟6、進行周期性并發(fā)量預(yù)測,如圖5所示,具體方法如下:
步驟6.1、初始化粒子群的最大粒子數(shù)、最大迭代次數(shù)以及粒子的位置和速度,本實施例中,每個粒子都包含2個元素,即支持向量機的懲罰因子C和核參數(shù)γ,一般情況下懲罰因子C的取值范圍為[10-5,105],γ的取值范圍為[0,10],由于這兩個參數(shù)的合適范圍不是預(yù)知的,所以查找先從這兩個寬泛的范圍開始,并在查找過程中逐漸縮小查找范圍,一方面能減少計算量,另一方面能保證全局最優(yōu)解的覆蓋廣度以及局部最優(yōu)解的精確度;
步驟6.2、采用5折交叉驗證法訓(xùn)練支持向量機模型,將并發(fā)量歷史時間序列分為5個數(shù)據(jù)包,其中4個數(shù)據(jù)包用于訓(xùn)練,1個數(shù)據(jù)包用于測試訓(xùn)練結(jié)果;
支持向量機模型是一種基于統(tǒng)計學(xué)理論的監(jiān)督學(xué)習(xí)模型,支持向量機的核心思想是將輸入空間Rn非線性的映射到一個高維空間D上,從而將低維特征空間的非線性回歸問題轉(zhuǎn)化為高維特征空間的現(xiàn)行回歸問題,假設(shè)給定的訓(xùn)練數(shù)據(jù)集為其中xi∈Rn,di∈D,N為數(shù)據(jù)個數(shù),則支持向量機的回歸函數(shù)f(xi)可表示為:
其中,w是權(quán)重向量,標(biāo)識從輸入空間Rn映射到目標(biāo)空間D的非線性函數(shù),<,>是內(nèi)積符號,b為偏差。權(quán)重向量w與偏差b需要從給定數(shù)據(jù)中訓(xùn)練得出。為了訓(xùn)練w與b,可將問題轉(zhuǎn)換為一個二次規(guī)劃問題:
其中,C為懲罰因子,為一個正常數(shù),其作用為權(quán)衡模型的復(fù)雜性和誤差的關(guān)系;ξi與為引入的松弛變量,可以減小誤差,可以擴大輸入空間到高維特征空間的距離,以此來提高泛化能力;ε為ε不敏感損失函數(shù),這個函數(shù)決定著它可以使其忽略實際值在某個范圍內(nèi)的誤差,確保全局最小值的存在。
為了將輸入空間映射到高維特征空間,需要引入一個核函數(shù)k(xi,xj):
支持向量機的核函數(shù)需要滿足Mercer定理,此函數(shù)完成了對輸入樣本xi從低維特征空間向高維特征空間的非線性映射,xj為輸入樣本xi在高維特種空間的表達。這樣就可以將輸入樣本與輸出變量的關(guān)系在高維特征空間中表示為一個線性映射。也正是由于核函數(shù)的作用,支持向量機能夠適用于非線性關(guān)系的學(xué)習(xí)問題。根據(jù)對偶原則,支持向量機的對偶問題可以被表達為:
其中,αi與兩個對偶的拉格朗日乘數(shù),則最終的最優(yōu)化回歸函數(shù)可表示為:
步驟6.3、利用預(yù)測準(zhǔn)確率fCP作為適應(yīng)度評價標(biāo)準(zhǔn)評價粒子適應(yīng)度,預(yù)測準(zhǔn)確率fCP為:
其中,為并發(fā)量預(yù)測值,和分別為指定的并發(fā)量歷史數(shù)據(jù)coni可接受的準(zhǔn)確區(qū)間的上界和下界,coni為并發(fā)量歷史值,PL為預(yù)測的容錯度,本實施例中容錯度取5%;
粒子群中的每一個粒子需要被此標(biāo)準(zhǔn)重復(fù)的評價,因此可以從迭代過程中得出粒子的適應(yīng)度向量,即由粒子在迭代過程中的最優(yōu)解組成的向量;
步驟6.4、更新局部最優(yōu)解與全局最優(yōu)解,并將結(jié)果記錄在局部最優(yōu)解向量pi與全局最優(yōu)解向量pg中;
在粒子群每次迭代過程中,每個粒子都會得到一個適應(yīng)度數(shù)值,將此數(shù)值與該粒子的最優(yōu)解相比較,如果適應(yīng)度優(yōu)于粒子的最優(yōu)解,則更新此粒子的最優(yōu)解為粒子的當(dāng)前狀態(tài),此最優(yōu)解為則為粒子的局部最優(yōu)解;再將此局部最優(yōu)解與全局最優(yōu)解相比較,如果適應(yīng)度優(yōu)于全局最優(yōu)解則更新全局最優(yōu)解為當(dāng)前粒子狀態(tài)。全局最優(yōu)解是所有粒子中適應(yīng)度最優(yōu)的解向量。通過迭代評價,可以得到目前為止粒子的局部最優(yōu)解與粒子群的全局最優(yōu)解,這兩個值將被更新到局部最優(yōu)解向量pi與全局最優(yōu)解向量pg中記錄下來;
步驟6.5、判斷更新迭代是否達到終止條件,迭代的終止條件為最大迭代次數(shù),如果最大迭代次數(shù)尚未達到,則更新粒子的位置和速度后,返回步驟6.4,進入下一個迭代循環(huán),繼續(xù)查找支持向量機參數(shù)的最優(yōu)解;如果達到最大迭代次數(shù),則迭代終止,粒子群優(yōu)化結(jié)束,得到支持向量機的懲罰因子C與核參數(shù)γ的最優(yōu)解,執(zhí)行步驟6.6;本實施例中,最大迭代次數(shù)為100次;
步驟6.6、進行支持向量機預(yù)測,利用從粒子群優(yōu)化算法中得到的懲罰因子C與核參數(shù)γ的最優(yōu)解作用于支持向量機,并利用并發(fā)量歷史數(shù)據(jù)時間序列訓(xùn)練支持向量機模型(原理見步驟6.2),然后利用訓(xùn)練結(jié)果及輸入的預(yù)測時間序列標(biāo)識,通過重建訓(xùn)練預(yù)測出并發(fā)量數(shù)據(jù);所述預(yù)測時間序列的時間標(biāo)識是由所要預(yù)測的并發(fā)量對應(yīng)的時間點組成,即{tn+1,tn+2,…,tn+l},1為預(yù)測序列的長度,起始時間點為用戶并發(fā)量歷史數(shù)據(jù)時間序列最后一個時間點的下一時間點,各時間點的時間間隔與用戶并發(fā)量歷史數(shù)據(jù)時間序列的時間間隔相同。
本實施例提供的一種云環(huán)境下非平穩(wěn)型應(yīng)用用戶并發(fā)量的預(yù)測系統(tǒng)及方法,針對云環(huán)境下非平穩(wěn)型業(yè)務(wù)的趨勢性與周期性應(yīng)用用戶并發(fā)量的特點,利用不同的預(yù)測方法構(gòu)造了預(yù)測模型,對含有兩種性質(zhì)的并發(fā)量進行預(yù)測,提高了非平穩(wěn)型業(yè)務(wù)并發(fā)量預(yù)測的準(zhǔn)確性;并發(fā)量序列趨勢性判定方法,本方法通過自相關(guān)系數(shù)與T分布結(jié)合分析,可以自動的識別趨勢性并分發(fā)量序列的特征;并發(fā)量序列周期性判定方法,本方法通過周期圖法計算出的功率譜序列與3σ準(zhǔn)則結(jié)合分析,可以自動的識別周期性并發(fā)量的特征,并可以自動的計算出序列的周期數(shù),解決了人工干預(yù)計算周期的問題;趨勢性并發(fā)量序列預(yù)測方法,采用線性回歸的方法對趨勢型應(yīng)用并發(fā)量序列進行擬合,并與ARMA算法結(jié)合,使擬合序列與殘差擬合序列共同構(gòu)造出預(yù)測序列,這種方法對具有趨勢性的序列具有優(yōu)秀的預(yù)測效果,且無需人工干預(yù),自行完成預(yù)測過程;周期性并發(fā)量序列預(yù)測方法,利用粒子群優(yōu)化的支持向量機對已知周期的并發(fā)量序列進行預(yù)測,能夠精準(zhǔn)的識別周期特征,尤其是對有趨勢變化的周期性序列較其他預(yù)測方法有較好的預(yù)測效果,且無需人工干預(yù),自行完成預(yù)測過程。
最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明權(quán)利要求所限定的范圍。