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