楊超,冉啟武,羅德虎,豆旺
(陜西理工大學電氣工程學院,漢中 723001)
隨著我國電力市場體系穩(wěn)步有序推進,多元化的競爭格局已初具雛形,市場化發(fā)售電量已大幅度增加,在資源優(yōu)化配置中市場占據(jù)的作用日益增大。電價作為電力市場中不可或缺的重要因素,對電價的準確預測不僅可以對市場參與者提供指導,還可以了解電力市場的運轉(zhuǎn)狀況,為電力監(jiān)管部門提供客觀依據(jù)[1-2]。因此,電力系統(tǒng)中電價預測對電力系統(tǒng)的正常運行起到重要的作用。
目前,國內(nèi)外對電力市場中電價預測的方法主要有統(tǒng)計學方法和機器學習方法。統(tǒng)計學方法主要包括差分整合移動平均自回歸ARIMA(autoregressive integrated moving average)模型[3]、廣義自回歸條件異方差GARCH(generalized auto regressive conditional heteroscedasticity)[4]等。但是傳統(tǒng)的統(tǒng)計學方法在處理非線性問題或波動較大的時間序列時性能表現(xiàn)較差。隨著人工智能和大數(shù)據(jù)技術(shù)的發(fā)展,機器學習方法被大量應(yīng)用在電價預測的研究中。機器學習方法主要包括支持向量機SVM(support vector machine)[5]、隨機森林RF(random forest)[6]、循環(huán)神 經(jīng)網(wǎng)絡(luò)RNN(recurrent neural network)[7]、長短期記憶LSTM(long short-term memory)網(wǎng)絡(luò)[8]、門控循環(huán)單元GRU(gated recurrent unit)網(wǎng)絡(luò)[9]等。但是單一的機器學習模型往往由于模型的局限性,難以反映數(shù)據(jù)的變化趨勢,無法對電價進行更加準確的預測,所以國內(nèi)外學者往往通過將多種模型進行組合來對電價進行預測。組合多種模型可以充分發(fā)揮單一模型優(yōu)勢,故組合預測模型預測準確性往往高于單一預測模型[10]。
卷積神經(jīng)網(wǎng)絡(luò)CNN(convolutional neural network)被廣泛應(yīng)用于自然語言處理和計算機視覺,但在處理非線性電價序列時表現(xiàn)欠佳,故常用CNN模型和RNN 模型結(jié)合來對時間序列進行預測。但是鑒于數(shù)據(jù)量龐大時,使用RNN 會存在梯度消失或梯度爆炸等問題,故Hochreiter等[11]提出了LSTM以解決上述問題。文獻[12]通過引入風荷載比特征,利用LSTM對丹麥電力市場進行預測,雖然引入了風荷載比特征可以提高模型的精確度,但是在處理影響因素過多、特征量較大的電價序列時,單一的LSTM 模型就會產(chǎn)生過擬合現(xiàn)象而影響精確度。為提高預測電價模型的準確性,文獻[13]將CNN 和LSTM結(jié)合,提出了一種CNN-LSTM預測模型,先利用CNN 提取特征向量,再將特征輸入進LSTM 進行訓練并預測,得到最終預測結(jié)果,有效地避免了上述過擬合的問題。但是因為LSTM 參數(shù)較多、訓練時間較長,故Bahdanan[14]在2014 年提出了GRU。GRU 是LSTM 的一種變形,GRU 結(jié)構(gòu)相比LSTM 做了簡化,訓練速度相對更快。文獻[15]利用GRU 模型并引入注意力機制以突出關(guān)鍵性的輸入特征,在計負荷和不計負荷兩種情況下對多種算法模型分別進行分析,驗證了該模型在預測精度和訓練時間上都優(yōu)于LSTM,但是單向GRU 捕獲序列中的信息時能力弱于雙向門控循環(huán)單元BIGRU(bidirectional gated recurrent unit)。文獻[16-17]都采用了BIGRU,先利用CNN進行特征提取,然后將特征向量構(gòu)建成時序并輸入到BIGRU或BIGRU-全連接神經(jīng)網(wǎng)絡(luò)模型中訓練,得到最終預測結(jié)果,通過對比實驗驗證了BIGRU比GRU更具優(yōu)勢。
綜上所述,本文提出了一種基于注意力機制的CNN-BIGRU模型,對西班牙電力市場中電價進行預測。該模型通過對電價影響因素的引入,例如上周期的電價、負荷、能源價格、天氣、溫度等,訓練大量歷史數(shù)據(jù),提取和映射輸入輸出間的內(nèi)在關(guān)系[18],最終得到精確的預測結(jié)果。在本文預測電價實驗中,首先對原始電價數(shù)據(jù)進行數(shù)據(jù)預處理,利用由一維卷積層和池化層搭建的CNN進行特征提??;其次,將CNN提取的特征向量構(gòu)建成時間序列并輸入到BIGRU,利用BIGRU 在處理時間序列方面的優(yōu)勢進行數(shù)據(jù)訓練;然后,尋找輸入數(shù)據(jù)中與預測量之間有強相關(guān)的變量并賦予合理的權(quán)值,采用注意力機制對BIGRU每個時間步的輸出進行加權(quán)求和;最后在全連接層利用激活函數(shù)計算輸出最終預測值。將本文所提模型與其他多種模型進行比較,實驗結(jié)果驗證了本文模型具有更好的精確度和穩(wěn)定性。
CNN借助卷積運算的特性,可以對數(shù)據(jù)進行特征提取[19-20],并且模型采用權(quán)值共享能大幅度減少訓練時間,降低錯誤率。CNN 主要由卷積層、池化層和全連接層組成,其結(jié)構(gòu)如圖1所示。
圖1 CNN 結(jié)構(gòu)Fig.1 Structure of CNN
卷積層是CNN的核心,主要是對數(shù)據(jù)進行特征提取,以實現(xiàn)局部連接和權(quán)值共享,其核心是進行卷積運算。池化層的主要作用是減小卷積核的尺寸,減少參數(shù)以防止過擬合,對運算進行降維處理,主要有平均池化、最大池化和隨機池化。全連接層是將經(jīng)過卷積和池化后的數(shù)據(jù)映射在CNN 的隱層特征空間,以進行維度轉(zhuǎn)換,最終輸出一維向量。全連接層主要采用sigmoid激活函數(shù)。
LSTM 解決了RNN 無法處理長期依賴問題,通過引入自循環(huán),解決了梯度消失的問題。相比于RNN,LSTM主要在其隱含層做出了改進,通過門機制改變隱含層中的神經(jīng)元。GRU 作為LSTM 的一種變形,在結(jié)構(gòu)上進行了簡化,將LSTM的三個門機制優(yōu)化成GRU 的兩個門機制,減少了訓練時間,同時保證了預測精度[21]。
GRU 模型包括更新門和重置門,其結(jié)構(gòu)如圖2所示。更新門用于控制前一時刻的狀態(tài)信息保留到當前狀態(tài)的程度,重置門決定是否要結(jié)合當前狀態(tài)與先前的信息[22]。更新門和重置門的輸入都是由當前時間步xt和上一個隱藏狀態(tài)時間步ht-1共同決定,輸出由全連接層通過sigmoid 函數(shù)計算得到。重置門有助于捕獲時間序列中的短期依賴關(guān)系,更新門有助于捕獲時間序列中的長期依賴關(guān)系。GRU內(nèi)部的數(shù)學關(guān)系可表示為
圖2 GRU 結(jié)構(gòu)Fig.2 Structure of GRU
式中:xt為輸入;zt為更新門;rt為重置門;ht-1為之前的隱藏層狀態(tài);ht為此層的輸出;為當前候選集狀態(tài);σ 為sigmoid函數(shù);tanh為雙曲正切函數(shù);W(z)、W(r)、W、U(z)、U(r)、U為訓練參數(shù)矩陣。
BIGRU由一個正向GRU和一個反向GRU共同組成,使信息可以雙向傳播。BIGRU的輸出受前向狀態(tài)和后向狀態(tài)共同影響,相比單向GRU更能反映過去和未來時刻對當前的影響[23]。BIGRU 結(jié)構(gòu)如圖3所示,其中xt-1、xt、xt+1為輸入,ht-1、ht、ht+1為由正向GRU和反向GRU共同作用的隱藏狀態(tài)。
圖3 BIGRU 結(jié)構(gòu)Fig.3 Structure of BIGRU
注意力機制是通過模擬人腦對外界信息注意力的分配而提出的一種資源分配機制。人腦的注意力會根據(jù)對某些事物的關(guān)注程度而產(chǎn)生不同的注意程度,在需要被注意力高度集中的信息分配更多注意力,在不重要的信息上產(chǎn)生更少的注意力,以此讓人腦獲取更多有用的信息,減少無用信息,實現(xiàn)資源合理分配利用[14]。
注意力機制對重要強相關(guān)的數(shù)據(jù)賦予較高的權(quán)重值,以突出強相關(guān)因素對實驗結(jié)果的影響;對弱相關(guān)或者無關(guān)的數(shù)據(jù)賦予較小的權(quán)重值甚至忽略,以減少無關(guān)信息對模型的影響,提高模型的準確性。注意力機制是由傳統(tǒng)編碼-解碼框架衍生而來。但傳統(tǒng)的編碼-解碼模型具有局限性,即在編碼和解碼之間的唯一聯(lián)系是固定長度的語義向量。注意力機制結(jié)構(gòu)如圖4所示。
圖4 注意力機制結(jié)構(gòu)Fig.4 Structure of Attention mechanism
圖4中,x1、x2、x3、xn為輸入值,為經(jīng)過BIGRU 運算后的輸出值,at,1、at,2、at,3、at,n為注意力機制分配概率分布值,yt、yn為最終的輸出值。
實驗通過收集西班牙電力市場中歷史電價數(shù)據(jù),對歷史電價序列進行特征提取來學習其潛在的變化規(guī)律并預測出未來電價的變化趨勢。對于龐大的數(shù)據(jù)集,人工提取歷史電價中特征的工程量過大,并且人工特征提取會破壞歷史電價的時序性和潛在規(guī)律,無法準確提取重要信息作為特征值。因此,本文借助CNN的優(yōu)勢,充分利用CNN的一維卷積層優(yōu)勢對原始數(shù)據(jù)進行特征提取,不僅節(jié)省了時間,還提高了模型預測的準確性。然后將提取的特征向量構(gòu)建成時間序列輸入至BIGRU,利用GRU在處理時間序列方向的優(yōu)勢建模訓練,發(fā)掘歷史電價序列中的變化規(guī)律。由于影響電價變化的因素太多,故引入注意力機制,通過對特征重要程度的大小來賦予不同的權(quán)重值,保留或突出重要信息,減少或者丟棄無關(guān)信息,以便提高預測模型的精確度。采用注意力機制對BIGRU 每個時間步的輸出進行加權(quán)求和。最后在全連接層通過sigmoid 激活函數(shù)計算輸出最終預測值。
基于注意力機制的CNN-BIGRU預測電價的模型結(jié)構(gòu)如圖5所示。
圖5 基于注意力機制的CNN-BIGRU 模型結(jié)構(gòu)Fig.5 Structure of CNN-BIGRU model based on Attention mechanism
具體算法步驟如下。
步驟1輸入層對原始數(shù)據(jù)進行預處理,對數(shù)據(jù)中的異常值和空缺值處理后,對其余數(shù)據(jù)進行歸一化,將處理后的數(shù)據(jù)作為預測模型的輸入。設(shè)序列長度等于n的輸入數(shù)據(jù)為X=[x1,x2,x3,…,xn]T。
步驟2CNN 層對電價序列進行特征提取,首先利用一維卷積層(Conv1D)對歷史電價序列的特征進行提?。蝗缓罄米畲蟪鼗姆绞竭^濾信息,防止過擬合風險;最后通過sigmoid 激活函數(shù)得到CNN 層的輸出。設(shè)CNN 層的輸出長度為i,則其輸出Hc=[Hc1,…,Hci-1,Hci]T可表示為
卷積層輸出C可表示為
其中
式中:?表示卷積運算;P為池化層的輸出;W1、W2為權(quán)重值;b、b1為偏置向量。
步驟3BIGRU 層對經(jīng)過CNN 提取的特征進行訓練。GRU的具體計算方法見第1.2節(jié)。BIGRU層在t時刻的輸出ht可表示為
式中,BIGRU()表示經(jīng)過BIGRU層運算。
步驟4注意力機制層的輸入是經(jīng)過BIGRU層計算得到的輸出向量ht,通過注意力機制可以得到不同輸入特征向量的權(quán)重。注意力機制的權(quán)重計算方法如下。
相似度計算公式為
權(quán)值歸一化計算公式為
加權(quán)求和計算公式為
式中:V、W3、U1為權(quán)重參數(shù);et為t時刻注意力機制的概率分布值;at為t時刻BIGRU隱藏層輸出值對應(yīng)注意力機制的權(quán)重;st為t時刻注意力機制輸出值。
步驟5全連接層通過sigmoid 激活函數(shù)計算出預測值。設(shè)t時刻的預測值為yt,可表示為
式中:yt為t時刻預測值;w0為權(quán)重矩陣;b0為偏置向量。
步驟6輸出層是將本文模型訓練所得的數(shù)據(jù)進行反歸一化并最終輸出預測值Ypredict。設(shè)預測步長為m,則Ypredict=[y1,y2,…,ym]T。
損失函數(shù)用來判斷模型的預測值和真實值之間的差距。模型的性能通??梢酝ㄟ^損失函數(shù)來評價,損失函數(shù)值越小則模型性能越好。本文基于注意力機制的CNN-BIGRU預測模型的損失函數(shù)選用均方誤差MSE(mean squared error),其計算公式為
式中:Loss為損失函數(shù);n為樣本個數(shù);yi為第i個采樣點的實際值;為第i個采樣點的預測值。
本文實驗的硬件平臺使用Intel(R)Xeon(R)Platinum 8358P 處理器 和NVIDIA RTX 3080顯卡。本文所提出基于注意力機制的CNN-BIGRU模型由Tensorflow2.9、Keras、Scikit-learn 等框架搭建,使用python3.8編寫。
數(shù)據(jù)集選取西班牙電力市場2015 年1 月1 日—2018年12月31日共4 a的歷史電價數(shù)據(jù)[24],每日采樣24 次數(shù)據(jù),時間間隔為1 h,將訓練集、測試集和驗證集按照8∶1∶1進行劃分。
電價的波動是多因素共同影響形成的結(jié)果,例如歷史電價、負荷、能源價格、假期、氣溫、氣壓、降水濕度等因素,本文通過皮爾遜相關(guān)系數(shù)計算并給出相關(guān)性大于0.25 的影響因素。電價相關(guān)性分析如表1 所示。利用皮爾遜相關(guān)系數(shù)計算出各外部影響因素對電價的影響程度。皮爾遜相關(guān)系數(shù)是一種衡量向量相似度的指標,其取值范圍為[-1,1],其中0 代表無相關(guān)性,正值代表正相關(guān),負值代表負相關(guān)。通常情況下,(0.5,1.0]代表強相關(guān)性,(0,0.5)代表弱相關(guān)性。皮爾遜相關(guān)系數(shù)的數(shù)學表達式為
表1 電價相關(guān)性分析Tab.1 Correlation analysis of electricity price
式中:R為皮爾遜相關(guān)系數(shù);xi和yi為兩個變量;和為兩個變量的均值。
由于同一地區(qū)電價變化具有周期性,故本文給出了西班牙2016年5月—2017年5月的電價曲線,如圖6 所示。由圖6 可知,西班牙電力市場的電價序列具有非線性特點,且電價大約在第240 天(即2017年1月)達到最高。
圖6 西班牙市場年電價曲線Fig.6 Curve of annual electricity price on Spanish market
通常用直接刪除、平均值補全、K 最近鄰法KNN(K-nearest neighbor)[25]對原始數(shù)據(jù)集中的個別異常值、缺失值進行處理,以更好學習歷史電價序列中的潛在規(guī)律和提高預測的準確性。為了將數(shù)據(jù)映射在[-1,1],消除異常樣本對預測結(jié)果產(chǎn)生的不良影響,降低訓練結(jié)果的誤差,需要對數(shù)據(jù)進行歸一化。歸一化常用方法有min-max 歸一化和Zscore 歸一化。由于min-max 歸一化在性能上優(yōu)于Z-score 歸一化,故本文采用min-max 歸一化,其數(shù)學表達式為
式中:x為歸一化后的數(shù)據(jù);x1為原始數(shù)據(jù);xmin和xmax分別為樣本數(shù)據(jù)的最小值和最大值。
本文選用均方誤差根RMSE(root mean squared error)、平均絕對百分比誤差MAPE(mean absolute percentage error)和平均絕對誤差MAE(mean absolute error)作為算法的評價指標,模型的RMSE、MAPE、MAE 越小代表預測結(jié)果越準確。3 種評價指標的數(shù)學表達式分別為
式中:N為樣本數(shù)量;yi為歷史電價實際值;為電價預測值。
本文實驗采用滑動窗口處理,滑動窗口寬度對預測結(jié)果的精確度存在一定影響?;瑒哟翱趯挾冗^小可能會導致模型無法捕捉到長期依賴關(guān)系,從而影響預測精度;而滑動窗口寬度過大可能會使模型過于依賴歷史信息,導致對未來的預測結(jié)果不準確。本文將時間步設(shè)置為4,滑動窗口寬度分別設(shè)置為24的倍數(shù)進行對比分析。由對滑動窗口進行尋優(yōu)實驗可知,當時間步為4 時,將窗口寬度設(shè)置為24,本文模型的評價指標最小、預測結(jié)果最優(yōu)。首先利用滑動窗口處理截取前24 h 的歷史電價序列,從而對下一個時刻的電價進行預測;然后滑動到下一個新窗口,不斷重復此過程進行迭代;最后通過不斷迭代得到未來72 h 的電價預測值。需要說明的是,原始電價序列限定在指定的長度。
表2 為不同滑動窗口寬度情況下本文所提模型在測試集上的評價指標對比。
為驗證本文所提出模型引入注意力機制后的優(yōu)越性,將去除注意力機制的本文模型記作CNNBIGRU,對是否引入注意力機制進行對比,實驗結(jié)果如圖7和表3所示。
表3 是否引入注意力機制的評價指標對比Tab.3 Comparison of evaluation indicators with and without the introduction of Attention mechanism
圖7 是否引入注意力機制對比Fig.7 Comparison of electricity price with and without the introduction of Attention mechanism
由圖7 可知,本文所提模型的預測電價曲線與真實電價曲線更接近,而CNN-BIGRU 模型的預測精度明顯低于本文所提模型。表3 為是否引入注意力機制的評價指標對比。對比分析可知,本文模型比CNN-BIGRU 的RMSE、MAPE、MAE 分別減少了14.155%、7.962%、6.058%。結(jié)果表明,注意力機制對電價的影響因素的權(quán)重進行自適應(yīng)調(diào)整能有效提高模型的預測精度。
為驗證本文模型采用CNN 進行特征提取對預測精度的影響,將去除CNN 的本文所提模型記作BIGRU-Attention,兩者進行對比,實驗結(jié)果如圖8和表4所示。
表4 是否采用CNN 的評價指標對比Tab.4 Comparison of evaluation indicators with and without the use of CNN
圖8 是否采用CNN 對比Fig.8 Comparison of electricity price with and without of the use of CNN
由圖8 可知,本文模型的預測電價曲線與真實電價曲線更接近,而BIGRU-Attention的預測精度低于本文所提模型。表4 為是否采用CNN 的評價指標對比。對比分析可知,本文模型比BIGRU-Attention 的RMSE、MAPE、MAE 分別減少了11.385%、14.793%、16.910%,驗證了CNN 特征提取功能的重要性。
為驗證本文模型采用雙向GRU 的優(yōu)越性,將本文模型中的雙向GRU 改為單向GRU,記作CNNGRU-Attention,兩者進行對比,實驗結(jié)果如圖9 和表5所示。
表5 是否采用雙向GRU 的評價指標對比Tab.5 Comparison of evaluation indicators with and without the use of BIGRU
圖9 是否采用雙向GRU 對比Fig.9 Comparison of electricity price with and without the use of BIGRU
由圖9 可知,本文模型的預測電價曲線與真實電價曲線更接近,而CNN-GRU-Attention 的預測精度略低于本文模型。表5 為是否采用雙向GRU 的評價指標對比。對比分析可知,本文模型比CNNGRU-Attention 的RMSE、MAPE、MAE 分別減少了0.202%、1.370%、1.322%。結(jié)果表明,相比于單向GRU,雙向GRU 更能挖掘和學習數(shù)據(jù)序列中的規(guī)律,但是其學習能力有限。
為進一步驗證本文模型的優(yōu)越性,將本文模型與ARIMA、CNN-LSTM、支持向量回歸SVR(support vector regression)、多層感知機MLP(Multilayer Perceptron)模型進行對比,實驗結(jié)果如圖10 和表6所示。
表6 不同模型的評價指標對比Tab.6 Comparison of evaluation indicators among different models
圖10 不同模型對比Fig.10 Comparison among different models
由圖10 可知,相比于其他模型,本文模型的預測電價曲線與真實電價曲線更接近,對歷史電價有更強的學習能力。表6 為不同模型的評價指標對比,可以看出,本文模型的RMSE、MAPE、MAE均低于其他模型,并且本文模型比ARIMA 模型的RMSE、MAPE、MAE分別減少了31.875%、16.280%、19.379%。上述實驗結(jié)果進一步驗證了本文模型的精確性。
為了提高電價預測的精確度,本文提出了一種基于注意力機制的CNN-BIGRU 預測電價模型,將本文模型與多種模型進行對比分析,驗證了本文模型的精確性。主要結(jié)論如下。
(1)針對龐大的數(shù)據(jù)集,利用CNN模型對特征進行提取,充分挖掘電價序列的特征,提高預測模型的精確度,避免了因人工提取特征導致的失誤。
(2)采用BIGRU模型進行訓練,使得信息可以雙向傳遞,更好地學習電價序列的變化規(guī)律,以提高預測模型的精確度。
(3)引入注意力機制對影響電價變化的因素的權(quán)重進行合理設(shè)置,從而進一步提高了預測模型的精確度。
后續(xù)研究可以從考慮電力市場中的政策變化、用戶行為等因素來進一步提高預測的精確度。