黃 煒 陳 田
(上海電機學院機械學院 上海 200120)
近年來,隨著我國科技工業的高速發展,電能的需求量不斷增大,對于電力負荷預測準確度的要求也在不斷地提高。按照時間跨度的不同,負荷預測主要分為超短期、短期、中期和長期,其中短期負荷預測主要對未來24小時或者數天時間內的用電負荷進行預測[1],它對于發電機的投切、機組的檢修安排、電力營銷等有著重要意義,精準的負荷預測有利于發電設備的充分利用,能有效降低電網的運營成本[2]。
國內外對于負荷預測算法的研究工作有許多,其中具有代表性的算法主要包括:支持向量[3]、隨機森林[4]、卡爾曼濾波法[5]與人工神經網絡[6]等。文獻[7]使用粒子群算法對反向神經網絡進行初始化,并且引入了遺傳算法,優化網絡初始權值,從而提高了模型的性能。文獻[8]將深度信念網絡模型(DBN)與支持向量機(SVR)相結合,使得模型具有更高的準確性。文獻[9-10]探討了BP神經網絡在負荷預測中的應用,文獻[11]使用了模糊神經網絡進行負荷預測。文獻[12]采用了EMD算法對負荷數據進行分解,然后對于分解得到的各個平穩分量建立預測模型,最終在更加平穩的分量中取得了更高的精度。文獻[13]和文獻[14]分別通過改進的果蠅算法和粒子群算法優化BP神經網絡權值和閾值,從而提高預測精度。但是傳統的神經網絡沒有考慮到負荷在時間序列上的關系,所以在一定程度上不能很好地擬合時間序列上的負荷曲線。
長短期記憶網絡((Long Short-term Memory,LSTM)同時兼顧非線性與時序性,被廣泛應用于語音識別、機器翻譯等領域[15]。基于電力負荷在時間序列上的特性,文獻[16]提出用LSTM神經網絡進行負荷預測,最后經實驗表明LSTM的預測精度比其他模型的精度高。文獻[17]使用CNN對負荷數據進行降維,然后將降維后的數據作為LSTM的輸入,這在一定程度上提高了LSTM的預測精度。
鑒于上述模型都無法對預測結果進行誤差修正,本文提出SAE與CEEMDAN-BiLSTM組合的短期電力負荷預測模型,算法首先使用SAE模型學習負荷序列的主要特征,誤差特征主要體現在SAE模型預測過程中所產生的誤差序列中;然后使用CEEMDAN算法將誤差序列分解為數個IMF分量與殘余分量,建立BiLSTM模型學習每個誤差分量的時序特征,將各個分量的BiLSTM模型的預測值相加得到誤差的預測值;最后使兩部分的預測值相加從而達到修正誤差的效果。實驗結果表明:SAE與CEEMDAN-BiLSTM的組合模型具有更好的預測精度,能夠為電力系統的調度和生產計劃提供更加有效的科學依據。
自編碼器(autoencoder,AE)作為棧式自動編碼器(Stacked AutoEncoder,SAE)的基本組成部分,其結構類似于三層神經網絡,是一種無監督學習,主要由輸入的編碼器與輸出的解碼器構成,一般用于數據的降維與去噪,功能類似于主成分分析PCA。如果使用適當的維度和稀疏性約束,會得到比PCA更好的數據投影效果。自編碼器的輸入節點等于輸出節點,通過一個恒等的函數,可以對數據進行重構。
對于輸入的編碼器,其計算公式如下:
y=f(Wx+b1)
(1)
式中:y表示編碼器的輸出;x表示解碼器的輸入;f表示激活函數,一般為Sigmoid函數;W和b1分別表示輸入層到隱藏層的權重與偏置。
對于輸出的解碼器,其計算公式如下:
z=f(WTy+b2)
(2)
式中:z表示解碼器的輸出;WT和b2表示輸入層到隱藏層的權重與偏置。這樣通過調整網絡的參數,可以使最終輸出的z盡可能地接近于自編碼器輸入的x,從而達到重構輸入數據的目的。
自編碼器通過反向傳播的方式使重構的誤差最小,與傳統神經網絡一樣,自編碼器也是通過最小化損失函數來調整網絡結構中的參數,損失函數的公式如下:

(3)

棧式自動編碼器由多個自編碼器堆疊而成,其訓練過程一般分為無監督預訓練階段和有監督訓練階段。在無監督預訓練階段,它可以逐層提取數據的高階特征,逐步降低數據的維度,將復雜的數據轉化為簡單的特征序列。在有監督訓練階段,棧式自動編碼器將無監督訓練過程中得到的特征序列輸入到一個分離器中進行分類。SAE的訓練過程主要分為以下三步,如圖1所示。

圖1 SAE的訓練過程
(1) 首先使用自編碼器訓練從輸入層X到隱藏層H之間的參數,訓練結束后,去除自編碼器的輸出層x,接著將AE1的隱藏層H的輸出作為AE2的輸入,采用相同的辦法訓練自編碼器AE2。
(2) 重復步驟(1),直到初始化所有的自編碼器參數。
(3) 將最后一個自編碼器隱藏層的輸出連接到分離器中,以有監督的方式進行訓練。
CEEMDAN在EEMD分解的過程中添加自適應的白噪聲并且計算唯一的余量信號以獲取IMF分量,可以在較少的實驗次數中對信號進行序列重構,消除了EEMD分解過程產生的殘余信號中由于添加自適應白噪聲所產生的誤差。
定義計算符Ei()表示使用EMD分解產生的第i個IMF分量,CEEMDAN算法的計算步驟如下。
(1) 在k次實驗中,對原始信號xt+δ0ωj進行分解,其中:δ0表示高斯白噪聲的標準差;ωj表示高斯白噪聲。通過EMD分解得到第一個IMF分量并獲取唯一的余量信號r1(t)。
(4)
r1(t)=x(t)-IMF1(t)
(5)
(2) 繼續獲取第二個IMF分量:
(6)
(3) 重復以上步驟,計算第n個余量信號:
rn(t)=rn-1(t)-IMFk(t)
(7)
則第n+1個IMF分量為:
(8)
(4) 重復步驟(3),直到余量信號呈單調趨勢,分解停止原始信號x(t)被分解為:
(9)
式中:N為最終模態分量的個數;r(t)為最終單調的余量信號。


圖2 LSTM結構
LSTM在每個隱藏層內都接收上一時刻的輸出和當前時刻的輸入及當前的隱藏層狀態,并且通過輸入門、遺忘門、輸出門來控制和更新當前隱藏層的狀態,最后將更新結果輸出。計算公式如式(10)-式(15)所示。
ft=σ(Wf·[ht-1,xt]+bf)
(10)
it=σ(Wi·[ht-1,xt]+bi)
(11)
(12)
(13)
ot=σ(Wo·[ht-1,xt]+bo)
(14)
ht=ot*tanh(ct)
(15)
式中:Wf、Wi、Wc和Wo分別表示遺忘門、輸出門、記憶狀態和輸出門的權重矩陣;bf、bi、bc和bo分別表示對應的偏置向量;σ為激活函數Sigmoid;*表示點乘。
首先使用EMD算法將負荷數據分解為數個本征模態函數(IMF)與殘余分量r(t),然后對于每個分量建立BiLSTM模型。BiLSTM是由前向LSTM網絡與后向LSTM網絡構成,其結構如圖3所示。

圖3 BiLSTM結構
BiLSTM神經網絡會基于整個時間序列作出預測,它將隱藏層劃分為前向與后向兩個對立的部分,分別讀取過去與未來時刻的信息。第一層前向LSTM計算當前時刻序列的順序信息,第二層后向LSTM計算相同時刻序列的逆序信息,最后BiLSTM在t時刻的隱藏層狀態由前向隱藏層狀態和后向隱藏層狀態加權得到。其計算公式如下:
(16)
(17)
(18)

現有美國某電力市場2015年的樣本數據集,數據集的采樣周期為30 min。實驗所用特征包括:負荷值、氣象因素、節假日類型和氣溫。實驗數據如表1所示。

表1 實驗數據
部分數據用虛擬編碼模式表示,以{0,1,2}表示{工作日,休息日,節假日}。降雨{有,無}表示為{0,1}。
實驗采用全年數據集6月至8月共計92天的數據作為訓練集,以9月1日至9月11日的數據共計11天的數據作為測試集,以歷史48個時刻點的數據預測未來48個時刻點的負荷數據。
將93天的訓練集轉化為的三維矩陣,三維矩陣的維度信息為:
{D1D2…D92}×{L1L2…L48}×{X1X2…X8}
(19)
式中:{D1D2…D92}表示數據集長度為92天;{L1L2…L48}表示每天所包含的48個時刻的數據;{X1X2…X8}表示數據集的8維特征。
同理,測試集的維度信息為:
{D1D2…D11}×{L1L2…L48}×{X1X2…X8}
(20)
同時BiLSTM與其他機器學習預測方法一樣,對數據的尺度比較敏感,所以這里采用MaxMin的方法對數據進行歸一化處理,將所有數據的值域歸一化到[0,1]范圍內,然后將歸一化的數據傳入到模型中,最后將模型的輸出結果進行反歸一化,計算的公式如下:
(21)

(1) 負荷預測。使用包含氣象因素、工作日類型的訓練集對SAE模型進行有監督訓練,待模型收斂后對訓練集與測試集進行預測,得到測試集的預測值Pb,并且根據下式得到SAE訓練過程中產生的誤差序列Pe:
Pe=Pbtrain-Ttrain
(22)
式中:Pbtrain為訓練集的預測值;Ttrain為訓練集的真實值。

(3) 計算組合模型的預測值。SAE-CEEMDAN-BiLSTM模型的預測結果P為測試集的預測值與誤差的預測值之和,即:
(23)
SAE與CEEMDAN-BiLSTM組合模型的預測流程如圖4所示。

圖4 預測流程
模型的訓練過程采用Adam優化算法。Adam結合了RMSprop善于處理非平穩目標與Adagrad善于處理稀疏梯度的優點,其計算公式如下:
mt=μ*mt-1+(1-μ)*gt
(24)
(25)
(26)
(27)
(28)
式中:gt表示梯度;為平滑指數,主要用于防止分母為零;μ與v表示動量因子;mt與nt是對梯度的一階矩陣估計,可以看作是對期望E|gt|和的估計;與是對mt與nt的修正,這樣就可以對期望進行近似的無偏估計。
模型的評價指標通常采用平均絕對百分誤差(Mean Absolute Percentage Error,MAPE),其計算的公式如下:
(29)

實驗在Ubuntu 18.04系統下利用Pytorch1.10完成,實驗PC的處理器為Inter Core i5- 8300H,內存為16 GB,顯卡為NVIDIA GeForce GTX 1050TI。
在無監督訓練階段,將SAE中的自編碼器基本單元個數設置為3,每個自編碼器輸入節點個數為48,隱藏節點為16,激活函數設置為ReLU,設定學習率η=0.1,最大迭代次數n=40 000。在有監督訓練階段,將分離器的輸出節點設置為48,以梯度下降的方法對網絡參數進行優化。
SAE模型收斂后,將訓練集中的數據按照時間先后順序依次輸入至訓練完畢的模型中,得到訓練集的預測結果Pbtrain,如圖5所示。同時根據式(22)可以求得SAE模型在預測過程中產生的誤差序列Pe,如圖6所示。

圖5 SAE模型的預測結果
設定CEEMDAN算法的總體集成次數為400,加入白噪聲標準差為0.2,利用CEEMDAN算法將Pe分為9個IMF分量與1個殘余分量,實驗仿真結果如圖7所示。

圖7 CEEMDAN分解結果
可以看出,IMF1-IMF4分量的頻率較高且周期性不明顯,可以看作負荷序列的高頻分量。IMF5-IMF7分量的周期性明顯,可以看作負荷序列的周期分量。IMF8、IMF9分量的頻率較低且周期性不明顯,可以看作負荷序列的低頻分量。Residual為序列的殘余分量。
將CEEMDAN算法分解得到的9個IMF分量與1個殘余分量分別建立BiLSTM模型,將前向LSTM與后向LSTM輸入節點設置為1,表示每次讀取一個時刻點的負荷數據,將隱藏層節點設置為12,分別為當前時間點前后12個時刻的誤差信息。將輸出節點設置為1,為第13個時間點的誤差預測值。設置學習率為0.001,同時為BiLSTM網絡的輸出層再加上一層線性全連接層,激活函數設置為tanh。
設定BiLSTM模型的訓練方式為:通過歷史48個時刻點的誤差序列預測未來48個時刻點的誤差序列,因此以6月1日至8月30日的誤差序列作為網絡的輸入,以6月2日至8月31日的誤差序列作為網絡的輸出,以Adam算法訓練網絡。BiLSTM網絡參數如圖8所示,以BiLSTM層的輸入層為例,{91,48,1}={輸入數據集長度為91天,每日包含的48個時刻點,當前時刻的誤差值}。

圖8 BiLSTM網絡結構
將各個IMF分量ci(t)以及殘差分量rn(t)的預測值進行累加得到誤差的預測值,如式(30)所示。
(30)
式中:p(t)為重構后的誤差數據。
實驗首先通過9月2日的48個時刻點的數據預測9月3日48個時刻點的負荷數據。


圖9 9月3日預測曲線
為了進一步驗證本文組合模型的有效性,以同樣的方法對測試集中其余日期的數據進行預測,日均誤差曲線如圖10所示。

圖10 三種模型日誤差對比
圖10中9月4日至5日為雙休日,9月7日為美國勞動節。由圖9與圖10可以看出,SAE-CEEMDAN-BILSTM模型對負荷序列的擬合程度最高,具有很好的預測精度,即使在雙休日、勞動節期間該模型的誤差率也是最低;SAE-BiLSTM模型以BiLSTM作為誤差修正模型也取得了不錯的預測精度,但整體上還是比SAE-CEEMDAN-BILSTM模型的預測精度低;而SAE模型由于沒有進行誤差修正,所以在3種模型中表現最差。取平均絕對百分誤差(MAPE)、最大絕對百分誤差(Max)和最小絕對百分誤差(Min)三種指標進行比較,結果如表2所示。

表2 性能對比(%)
綜合上述實驗結果,可以得出以下結論:
(1) 由圖9、圖10可知SAE模型由于沒有進行誤差修正,所預測精度相對較低,在測試集中平均準確率為93.92%。SAE-BiLSTM模型使用BiLSTM作為誤差修正模型,所以預測精度高于SAE模型,測試集中平均準確率為96.52%。而SAE-CEEMDAN-BILSTM模型所使用的誤差修正模型可以在不同時間尺度上計算誤差序列,提高了預測精度,所以日均準確率在3種模型中最優,測試集中平均準確率達到了97.91%。
(2) 由表2可知,SAE-CEEMDAN-BILSTM模型的三種評價指標均優于其余兩種模型,說明該組合模型的預測效果最好;兩種組合模型的三種評價指標均優于傳統的SAE模型,說明引入誤差修正模型能提高模型的預測精度。
(3) 由圖10可知,SAE-CEEMDAN-BILSTM模型并不是在每一日的預測精度都達到最優,比如在9月10日其預測精度低于SAE-BiLSTM模型,但從總體上看,SAE-CEEMDAN-BILSTM模型相比其他兩種模型具有更好的準確性與穩定性。
本文分析了SAE模型以及CEEMDAN-BILSTM模型的原理,將兩種模型進行組合,提出了SAE與CEEMDAN-BILSTM的組合模型,并且將這種組合模型應用到電力系統負荷預測中。經過多次實驗以及反復驗證,通過對比SAE-BiLSTM模型以及單一的SAE模型可以得出結論:SAE與CEEMDAN-BiLSTM的組合模型應用在電力系統負荷預測具有更好的準確性與穩定性。但隨著預測步長的增加,模型的預測精度可能會隨之降低,下一步將考慮更多影響負荷序列的因素以增加數據集的特征維度。