劉丹丹
(上海電力大學(xué) 電子與信息工程學(xué)院, 上海 200090)
時間序列就是將不同時間上的某個指標(biāo)的不同數(shù)值按照時間順序排列而成的數(shù)列,是一種現(xiàn)實生活中常見的數(shù)據(jù)形式。研究時間序列的發(fā)展趨勢能夠幫助人們合理規(guī)劃生活需求,如研究某棟大樓的能耗發(fā)展趨勢,可以為樓宇節(jié)能管理提供理論依據(jù);研究金融數(shù)據(jù)時間序列的發(fā)展趨勢,有助于人們把握宏觀市場的運營規(guī)律。各行各業(yè)的運行數(shù)據(jù)幾乎都可以被視為時間序列,因此建立準(zhǔn)確有效的時間序列預(yù)測模型一直是相關(guān)領(lǐng)域的研究熱點。
經(jīng)典的時間序列預(yù)測模型以隨機過程理論和數(shù)理統(tǒng)計學(xué)為理論基礎(chǔ),主要包括自回歸滑動平均模型(Auto-Regressive Moving Average model,ARMA)和自回歸積分滑動平均模型(Auto Regressive Integrated Moving Average model,ARIMA)。這兩種經(jīng)典的時間序列預(yù)測方法在很多領(lǐng)域取得了較好的預(yù)測效果[1-5]。然而,有一些文獻(xiàn)指出,經(jīng)典方法用于線性、平穩(wěn)的時間序列時,預(yù)測精度較高,但不適用于非線性非平穩(wěn)時間序列。因此,近年來,一些研究將機器學(xué)習(xí)算法應(yīng)用于非線性非平穩(wěn)時間序列預(yù)測領(lǐng)域,取得了更好的效果[6-8]。這些方法多利用神經(jīng)網(wǎng)絡(luò)算法、支持向量機(Support Vector Machine,SVM)算法等,建立有效的時間序列預(yù)測模型,其中又以SVM算法效果最為良好,在各個領(lǐng)域都得到了廣泛的驗證[9]。
在實際應(yīng)用中,針對一些非線性非平穩(wěn)時間序列來建立預(yù)測模型時,以SVM為代表的機器學(xué)習(xí)算法仍然難以滿足人們對預(yù)測精度的要求[10]。因此,研究人員提出使用經(jīng)驗?zāi)B(tài)分解法(Empirical Mode Decomposition,EMD)對序列進行預(yù)處理,而后再使用機器學(xué)習(xí)算法,可以獲得更高的預(yù)測精度[11-14]。基于此,本文建立了基于EMD-SVM聯(lián)合算法的時間序列預(yù)測模型,同時針對能耗時間序列的特點,構(gòu)建了模型輸入輸出數(shù)據(jù)集,從而獲得了較好的預(yù)測效果。
EMD方法由HUANG N E等人[15]于1998年提出。該方法在對信號進行分解時無需設(shè)定基函數(shù),完全根據(jù)數(shù)據(jù)自身的時間尺度特征處理信號。因此,EMD方法在理論上適用于任何類型的信號分解,尤其是處理非平穩(wěn)非線性時間序列數(shù)據(jù)。該方法一經(jīng)面世,即在不同工程領(lǐng)域得到了有效的應(yīng)用。EMD方法分解序列的基本步驟如下。
假設(shè)信號x(t),確定該信號的所有極值。在最小值(最大值)之間進行差值計算,得到包絡(luò)smin(t)(smax(t)),且計算包絡(luò)的均值為
(1)
計算本征模函數(shù)(Intrinsic Mode Function,IMF)c1(t)為
c1(t)=x(t)-m1(t)
(2)
根據(jù)IMF的計算結(jié)果迭代殘差r1(t)為
r1(t)=x(t)-c1(t)
(3)
重復(fù)以上步驟,直到分解結(jié)果滿足停止條件。此時,原始序列被分解為多個IMF和一個對應(yīng)殘差。該原始序列可表示為
(4)
這里,殘差rN(t)可以表示為
(5)
由分解過程可知,與短時傅立葉變換、小波分解等方法相比,EMD分解過程較為簡單、直觀。同時,由于這種方法是基于信號序列時間尺度的局部特性進行分解,因此具有自適應(yīng)性。
SVM算法由VAPNIK V[16]提出,是一種機器學(xué)習(xí)方法,已廣泛應(yīng)用于各個領(lǐng)域。當(dāng)SVM應(yīng)用于數(shù)據(jù)建模和預(yù)測時,被稱為支持向量回歸(Support Vector Regression,SVR)。核函數(shù)和優(yōu)化器算法是SVM的兩個重要部分。使用非線性函數(shù)可以將非線性數(shù)據(jù)從原始的特征空間映射至更高維的希爾伯特空間(Hilbert space),并使其線性可分;而優(yōu)化器算法用于解決優(yōu)化問題。SVM算法基于結(jié)構(gòu)風(fēng)險最小化(Structural Risk Minimization,SRM)原理,因此它力求將由訓(xùn)練誤差和置信度之和組成的泛化誤差的上限最小化,優(yōu)于僅將訓(xùn)練誤差最小化的訓(xùn)練模型。
EMD-SVR聯(lián)合算法的基本原理主要包括3個部分:利用EMD算法,將非線性非平穩(wěn)原始數(shù)據(jù)序列分解為各個子序列;針對各個子序列,重構(gòu)數(shù)據(jù)集,建立SVR時間序列預(yù)測模型,計算預(yù)測結(jié)果;計算子序列預(yù)測和,即為原始序列預(yù)測結(jié)果。
(6)
式中:d——步長。
(7)
一般使用均方誤差(Mean Square Error,MSE)及決定系數(shù)R2評價預(yù)測模型的優(yōu)劣。這兩個參數(shù)的總體目標(biāo)為測量預(yù)測值與實際值之間的距離,比如R2越接近于1,同時MSE越小,則證明模型的預(yù)測結(jié)果越精確。 其公式分別為
(8)
R2=
(9)
式中:l——時間序列中的數(shù)據(jù)個數(shù);
f(·)——時間序列的預(yù)測值。
整個算法的完整流程描述如下。
(1) 使用EMD算法將原始時間序列分解為一些子序列。
(2) 對于每個子序列,假設(shè)預(yù)測步長為d,根據(jù)序列特性確定d。如建筑能耗數(shù)據(jù)多以24 h為一個周期,則對于此類序列d可取2~24之間的數(shù)值;
(4) 應(yīng)用SVR算法建立子序列預(yù)測模型,并計算MSE及R2。
(5) 重復(fù)步驟(2)到步驟(4),根據(jù)MSE及R2的計算結(jié)果選取最佳步長d,記錄該子序列的最佳預(yù)測結(jié)果。
(6) 對每個子序列重復(fù)步驟(2)到步驟(5)。
(7) 將各個子序列的預(yù)測結(jié)果之和作為最終預(yù)測結(jié)果。
若序列步長可以確定,則可以省去搜索最佳步長的步驟,大大減小算法的復(fù)雜程度。一般來說,可選擇使MSE較小,而R2更接近1的步長值。同時,選擇步長d時,應(yīng)綜合考量測試集和訓(xùn)練集的預(yù)測精度,在針對訓(xùn)練集預(yù)測精度差異不大的情況下,應(yīng)優(yōu)先選擇針對測試集預(yù)測精度更高的步長值。
將算法應(yīng)用于某幢樓的能耗數(shù)據(jù)。隨機選擇某周工作日的能耗數(shù)據(jù)共120個。使用單位根檢驗法檢驗后,確認(rèn)其為非平穩(wěn)時間序列。經(jīng)過EMD分解后的原始序列與平穩(wěn)子序列如圖1所示。
圖1 EMD算法分解后的子序列示意
對每個子序列建立基于SVR算法的預(yù)測模型。選取步長d為(2,9)之間的整數(shù),根據(jù)MSE及R2的計算結(jié)果選取最優(yōu)步長。同時,對原始序列針對不同步長直接使用SVR算法建立預(yù)測模型,并對比EMD-SVR算法和SVR算法的預(yù)測精度。不同步長時兩種算法的MSE和R2值對比結(jié)果如表1所示。由表1可以看出,選擇任意步長值時EMD-SVR算法針對非平穩(wěn)時間序列的預(yù)測結(jié)果都明顯優(yōu)于SVR算法。此外,綜合EMD-SVR算法對測試集和訓(xùn)練集的預(yù)測結(jié)果可選取步長8作為最優(yōu)步長,選擇該步長的情況下訓(xùn)練集的R2值為0.967 739,測試集的R2值為0.926 781。
表1 不同步長下兩種算法的預(yù)測性能
步長為8時,EMD-SVR算法的能耗序列預(yù)測結(jié)果如圖2所示。其中,序列數(shù)據(jù)總數(shù)為120,算法將預(yù)測序列中第9到第120共112個數(shù)據(jù)。由圖2可以看出,預(yù)測數(shù)據(jù)與原始數(shù)據(jù)非常接近,可以滿足用戶對于預(yù)測精度的要求。
圖2 EMDSVR聯(lián)合算法在數(shù)據(jù)集上的預(yù)測結(jié)果
本文以非線性非平穩(wěn)能耗數(shù)據(jù)時間序列為研究對象,重點研究了EMD-SVR聯(lián)合算法在建立能耗數(shù)據(jù)預(yù)測模型上的應(yīng)用。首先,將能耗數(shù)據(jù)視為時間序列數(shù),使用EMD算法將非平穩(wěn)時間序列分解為不同頻率分量的平穩(wěn)時間子序列;然后,根據(jù)能耗數(shù)據(jù)的特點選擇合適的步長,構(gòu)建適合算法的數(shù)據(jù)集;最后,應(yīng)用SVR算法建立子序列預(yù)測模型,子序列模型預(yù)測結(jié)果之和即為EMD-SVR算法對該時間序列的預(yù)測結(jié)果。從實驗結(jié)果可以看出,預(yù)測非平穩(wěn)時間序列時EMD-SVR算法較SVR算法的精度更高。