李偉民,高仲合
(曲阜師范大學 網(wǎng)絡空間安全學院,山東 曲阜 273165)
混沌現(xiàn)象最早由Lorentz在天氣預報研究中發(fā)現(xiàn),之后很多人對其進行了研究。混沌時間序列預測方法是一種非線性的時間序列預測方法,具有非線性和預測精度高等特點。常用的混沌時間序列預測方法有全局預測法和局域預測法[1]。全局預測法利用過去已有的全部歷史信息對未來值進行預測,具有預測精度低和計算量大等缺點,因此用的較多的方法是局域預測法[2]。文獻[3]提出利用鄰近點下一步預測的平均值作為待預測點的下一步預測值,并提出了一種區(qū)分混沌時間序列與隨機時間序列的方法。局域預測法只利用部分歷史信息,而且局域動力方程的擬合相對容易,計算量較小。本文改進局域線性預測模型中的參數(shù)選取,實驗結(jié)果表明改進后的局域線性模型預測精度較好。
對已獲得的標量時間序列x(n),n=1,2,3,…,N,應用相空間重構(gòu)理論,可以將標量時間序列x(n)重構(gòu)為相空間中的軌跡X(n),公式如下:
式中,n=1+(m-1)τ,2+(m-1)τ…,N;m和τ是相空間重構(gòu)的兩個重要參數(shù),它們決定了重構(gòu)的相空間與混沌系統(tǒng)演化的近似程度。
當重構(gòu)的相空間用于預測時,需找到X(N)的一些鄰近點,N表示x(n)中最后一個值的下標[4]。在X(1)到x(n-1)的N-1個點中利用公式:
找到最近的k個點X(i),dist(i)表示點X(N)第i個點的距離。鄰近點選好之后,可以進行模型的建立與時間序列值的預測。
局域線性預測法是用幾個過去值的線性組合來表示將來值的一種方法,即:
式中,A=[a0,a1,…,am];X′=[1,x(N),x(N-τ),…,x(N-(m-1)τ)]T。它利用已獲得的鄰近點得到一個線性回歸方程,并用最小二乘法對線性組合的參數(shù)A進行求解,解出后即可進行預測。當step=1時,即為一步預測[5,6]。
對未來值的預測,一般利用如下公式:
式中,參數(shù)m和τ是重構(gòu)相空間的參數(shù)。但對于相空間重構(gòu)為最佳值的m和τ,對于預測來說不一定是最佳的,即產(chǎn)生最佳預測效果的參數(shù)mp和τp可以取與m和τ不同的值[2]。
對于參數(shù)m和τ最優(yōu)值的選取,本文提出利用遺傳算法來進行。即利用遺傳算法進行參數(shù)取值空間中最優(yōu)參數(shù)值的搜索,搜索完成后用以下公式預測:
式中,Y=[1,x(N),x(N-τ),x(N-(mp-1)τp)]T;step 取為 1。預測完成后將預測值加入到原序列中繼續(xù)下一步的預測。遺傳算法的適應度函數(shù)應與ε(m,τ)有關,ε(m,τ)的計算如下:
其為參數(shù)取m和τ時的標準預測誤差,t為預測步數(shù)。
本文中取適應度函數(shù)為:
即誤差越小,適應度函數(shù)值越大。
預測流程如圖1所示。
圖1 改進的模型預測流程圖
采用洛倫茲吸引子軌跡為實驗對象,洛倫茲吸引子軌跡的常微分方程組為:
采用龍格-庫塔算法進行積分,積分步長為0.01。取其中的x坐標的時間序列為分析對象,即上文所述的x(n)。一共5 000個數(shù)據(jù)點,用前4 000個點建立模型,后面的點用于評估預測效果[7-9]。
采用傳統(tǒng)的局域線性預測和改進的局域線性預測方法的結(jié)果如下,圖2(a)和(b)分別表示傳統(tǒng)局域線性模型和改進的局域線性模型在預測步數(shù)為50時的預測結(jié)果和誤差,傳統(tǒng)局域線性模型的ε(m,τ)值為0.010 734,改進的局域線性模型的ε(m,τ)值為0.001 754[10]。
圖2 改進的局域線性模型與傳統(tǒng)的局域線性模型預測比較
圖3(a)和(b)分別表示傳統(tǒng)局域線性模型和改進的局域線性模型在預測步數(shù)為100時的預測結(jié)果和誤差,傳統(tǒng)局域線性模型的ε(m,τ)值為0.068 439,改進的局域線性模型的ε(m,τ)值為0.018 721。
圖3 改進的局域線性模型與傳統(tǒng)的局域線性模型預測比較
局域預測法是混沌時間序列預測的一種有效方法,傳統(tǒng)局域線性預測模型中參數(shù)和τ是和相空間重構(gòu)的參數(shù)和τ一樣,改進的局域線性預測模型中參數(shù)經(jīng)過遺傳算法優(yōu)化后使得預測效果有了提升,說明了遺傳算法和重新選取的參數(shù)的有效性。