李坤奇,孟潤泉,李鳳蓮
(太原理工大學(xué) a.電氣與動力工程學(xué)院,b.信息與計算機(jī)學(xué)院,太原 030024)
在碳中和與新能源占比不斷提升的背景下,發(fā)電側(cè)和用電側(cè)的峰谷差逐年增大[1],居民用電短期負(fù)荷預(yù)測問題有著較高的研究價值。高效準(zhǔn)確的負(fù)荷預(yù)測有助于電力系統(tǒng)調(diào)度工作的穩(wěn)定性和經(jīng)濟(jì)性[2],提升用電效率,減少能源浪費。在對居民用電負(fù)荷進(jìn)行預(yù)測時,傳統(tǒng)方法是基于居民區(qū)整體的負(fù)荷數(shù)據(jù)進(jìn)行預(yù)測[3]。但隨著智能電表的普及,用戶用電行為的數(shù)據(jù)精度更高、粒度更細(xì)、特征更多?;谟脩魧用娴纳疃葦?shù)據(jù)挖掘可以使預(yù)測模型學(xué)習(xí)到更多規(guī)律,有助于進(jìn)一步提升負(fù)荷預(yù)測精度[4]。
對用戶進(jìn)行聚類分析有助于提升負(fù)荷預(yù)測精度。如文獻(xiàn)[4-5]在建立預(yù)測模型前,根據(jù)用戶的用電行為特性,采用K-means聚類算法對用戶進(jìn)行聚類分析,驗證了聚類分析在負(fù)荷預(yù)測任務(wù)中的可行性和有效性,有助于負(fù)荷預(yù)測模型學(xué)習(xí)到不同用戶群的用電趨勢信息。已有方法通常是對用電數(shù)據(jù)采用聚類分析得到用戶群信息后,針對每個用戶群分別建立預(yù)測模型,導(dǎo)致預(yù)測模型數(shù)量偏多,且各模型只能學(xué)習(xí)到相應(yīng)用戶群的用電信息,無法學(xué)習(xí)到其他用戶群的用電信息,因此也無法獲取不同用戶群用電規(guī)律之間的潛在聯(lián)系。另外,K-means[6]以及層次聚類算法等為常用的時間序列聚類算法。K-means算法簡潔高效,但算法性能易受初始聚類中心的影響。BIRCH算法屬于層次聚類算法,其性能不受初始聚類中心影響,通過生成一棵具有層次結(jié)構(gòu)的聚類特征樹,聚類結(jié)果有更好的可解釋性,且性能更優(yōu),靈活性更強(qiáng)[7]。因此,為克服已有方法缺陷,本文提出了一種基于BIRCH(balanced iterative reducing and clustering using hierarchies)聚類算法融合單預(yù)測模型的居民用電短期負(fù)荷預(yù)測方法,首先采用BIRCH聚類算法進(jìn)行用戶用電量的聚類分析,以得到多個具有不同用電習(xí)慣的用戶群,挖掘不同用戶群的用電規(guī)律之間的潛在聯(lián)系,構(gòu)建可更精確反映用戶用電特性的多特征時間序列用電數(shù)據(jù),為后續(xù)預(yù)測模型構(gòu)建提供更優(yōu)質(zhì)的特征屬性數(shù)據(jù),并有助于降低預(yù)測模型數(shù)量。
在居民用電負(fù)荷預(yù)測模型構(gòu)建方面,目前用于短期負(fù)荷預(yù)測的方法主要包括指數(shù)平滑法[8]和多元線性回歸[9]等統(tǒng)計方法,以及分類和回歸(classification and regression tree,CART)決策樹、支持向量機(jī)(support vector machine,SVM)[10]、人工神經(jīng)網(wǎng)絡(luò)(artificial neural network,ANN)和深度學(xué)習(xí)等機(jī)器學(xué)習(xí)方法。統(tǒng)計方法采用傳統(tǒng)的統(tǒng)計學(xué)思想,預(yù)測模型有較好的解釋性,但模型較為簡潔,在數(shù)據(jù)量較大的情況下無法充分利用數(shù)據(jù)中的非線性信息[11]。CART決策樹算法采用自頂向下遞歸結(jié)構(gòu)建樹,較適合高維數(shù)據(jù),但模型性能易偏向多值屬性數(shù)據(jù),且忽略了屬性之間的相關(guān)性。SVM能較好地處理非線性問題,且泛化性能較好,但存在對大規(guī)模訓(xùn)練樣本較難實施缺陷。人工神經(jīng)網(wǎng)絡(luò)及基于神經(jīng)網(wǎng)絡(luò)的各種深度學(xué)習(xí)模型,在非線性數(shù)據(jù)量較大的情況下,性能更優(yōu),近年來在負(fù)荷預(yù)測領(lǐng)域應(yīng)用廣泛。
作為深度學(xué)習(xí)常用結(jié)構(gòu),CNN(convolutional neural network)是包含卷積計算的神經(jīng)網(wǎng)絡(luò),可高效實現(xiàn)輸入特征的提取,被廣泛應(yīng)用于圖像識別、語音識別及居民用電量負(fù)荷預(yù)測等領(lǐng)域[12]。在居民用電預(yù)測領(lǐng)域,CNN在提取高維特征和壓縮時間窗上有較好效果。如文獻(xiàn)[13]在構(gòu)建負(fù)荷預(yù)測模型之前,采用CNN網(wǎng)絡(luò)預(yù)先對輸入數(shù)據(jù)進(jìn)行處理,取得了較高的預(yù)測精度。另一種常用結(jié)構(gòu)是RNN(recurrent neural network),由于RNN在網(wǎng)絡(luò)中引入了循環(huán)結(jié)構(gòu),因此能更好地學(xué)習(xí)動態(tài)時間序列數(shù)據(jù)的時序特性,預(yù)測精度更高[14]。GRU(gated recurrent unit)[15]和LSTM(long-short term memory)[16]是RNN的兩種改進(jìn)模型,由于添加了門結(jié)構(gòu),從而能更有效地挖掘時間序列包含的潛在規(guī)律。如文獻(xiàn)[17]將LSTM應(yīng)用于單個居民用戶的短期負(fù)荷預(yù)測,取得了較高的預(yù)測精度。
針對上述研究現(xiàn)狀,本文提出了一種BIRCH聚類算法融合CNN-GRU預(yù)測模型的居民用電短期負(fù)荷預(yù)測方法(簡寫為BIRCH-CNN-GRU).所提出方法,首先基于BIRCH聚類算法對用戶用電數(shù)據(jù)進(jìn)行聚類分析,以構(gòu)建包含用戶群負(fù)荷數(shù)據(jù)的多特征時間序列數(shù)據(jù)集,接著進(jìn)行CNN-GRU預(yù)測模型訓(xùn)練,最后,基于居民用電公共數(shù)據(jù)集進(jìn)行預(yù)測性能分析,驗證了本文方法的有效性。
(1)
圖1給出了本文提出的一種新型的居民用電短期負(fù)荷預(yù)測方法設(shè)計框架。
(2)
聚合后的負(fù)荷信息可以由式(3)表示:
(3)
基于聚合結(jié)果,將多個用戶群的負(fù)荷數(shù)據(jù)、融合時間以及氣候等特征信息,得到多特征時間序列數(shù)據(jù)集,用于后續(xù)預(yù)測模型訓(xùn)練及性能測試。
相比于傳統(tǒng)方法,本方法的優(yōu)勢在于:由于輸入數(shù)據(jù)中不僅有總負(fù)荷曲線,也有不同用戶群的負(fù)荷曲線。預(yù)測模型不僅可以學(xué)習(xí)到不同用戶群的用電規(guī)律,而且可以學(xué)習(xí)到不同用戶群用電趨勢之間的潛在聯(lián)系,因此預(yù)測精度更高,擬合速度較快,使得訓(xùn)練模型的時效性更高。
圖1 BIRCH-CNN-GRU預(yù)測方法Fig.1 Methodology of BIRCH-CNN-GRU forecasting method
除了歷史負(fù)荷數(shù)據(jù)外,居民用戶的用電行為與時間因素、氣候因素也有較強(qiáng)相關(guān)性[8]。季節(jié)、時刻、節(jié)假日等因素會顯著影響居民的用電行為,因此本方法采用月、日、星期、時刻、以及是否為節(jié)假日等5個時間變量。氣候因素的變化會影響居民用電需求。本方法選取與用電負(fù)荷相關(guān)性較高的平均溫度、平均濕度等兩個氣候變量。
綜上所述,本方法構(gòu)建了包含時間變量、氣候變量以及負(fù)荷變量3種特征的居民用電數(shù)據(jù)集,具體如表1所示。
表1 多特征時間序列用電數(shù)據(jù)集結(jié)構(gòu)Table 1 Multivariate time series dataset
本文提出的BIRCH-CNN-GRU負(fù)荷預(yù)測方法融合了BIRCH聚類算法,以及CNN-GRU預(yù)測模型。其中BIRCH聚類算法用于對居民用電量進(jìn)行聚類分析,對聚類分析后的用戶群用電量進(jìn)一步融合時間以及氣候信息以得到居民用戶群用電數(shù)據(jù)特征,將用戶群用電特征數(shù)據(jù)劃分為訓(xùn)練集、驗證集及測試集,其中訓(xùn)練集用于構(gòu)建CNN-GRU預(yù)測模型,驗證集用于對模型性能進(jìn)行驗證及優(yōu)化,并用測試集對模型性能進(jìn)行評估。
為了提高預(yù)測性能,本文采用BIRCH聚類算法結(jié)合最優(yōu)輪廓系數(shù)準(zhǔn)則尋優(yōu)得到最佳居民用電用戶群數(shù)量。尋優(yōu)時,將居民用電用戶群數(shù)量設(shè)置為一個動態(tài)尋優(yōu)范圍,此處設(shè)置為[2,10],則BIRCH聚類算法分別運行9次,得到9組聚類結(jié)果,其中的最優(yōu)輪廓系數(shù)對應(yīng)的聚類數(shù)即為最佳居民用電用戶群數(shù)量。
聚類分析的具體步驟如下所示:
2) 歸一化。對平均日負(fù)荷用電量進(jìn)行歸一化,以準(zhǔn)確提取用戶的日內(nèi)用電趨勢,避免不同用戶的用電總量差異對聚類結(jié)果產(chǎn)生影響。歸一化公式如式(4)所示。
(4)
3) 根據(jù)實際情況,設(shè)定聚類數(shù)目k的參數(shù)空間。對每一個聚類數(shù)目k,采用BIRCH聚類算法對數(shù)據(jù)集進(jìn)行聚類分析,得出每一個聚類數(shù)目對應(yīng)的聚類結(jié)果。
其中,BIRCH聚類算法特征樹的每個節(jié)點由包含3個元素的聚類特征(cluster feature,CF)表示,如式(5)所示。
(5)
式中:Nnodes為簇內(nèi)樣本點的數(shù)量,對應(yīng)本文為同一用戶群用戶數(shù)量。xn為樣本點的表征向量,對應(yīng)本文為用戶n歸一化后的平均日負(fù)荷用電量。LS為簇內(nèi)所有點的代數(shù)和,SS為簇內(nèi)所有點的平方和。
4) 求各聚類結(jié)果的輪廓系數(shù)。輪廓系數(shù)S用于衡量聚類的效果,以確定最優(yōu)聚類數(shù)。輪廓系數(shù)的計算方式如式(6)所示。
(6)
式中:Nnodes為樣本點的總數(shù);a(i)用于量化簇內(nèi)的凝聚度,即樣本i到簇內(nèi)各樣本點距離的均值;b(i)用于量化簇間分離度,即樣本i到其他簇樣本點距離的均值。Ninside為樣本pi所在簇的樣本點個數(shù),pj為樣本pi所在簇的其他樣本點;Noutside為樣本pi所在簇外的樣本個數(shù),qj為樣本pi所在簇外的樣本點。
5) 采用最大輪廓系數(shù)對應(yīng)的聚類數(shù)目k和聚類結(jié)果作為最優(yōu)類簇數(shù)M和最終聚類結(jié)果,每個用戶歸屬于一個用戶群。輪廓系數(shù)越大,聚類效果越好,以本文實際應(yīng)用為例,更大的輪廓系數(shù)代表用戶群內(nèi)用戶的用電習(xí)慣更加相似,不同用戶群的用戶用電習(xí)慣更加不同。
6) 每個用戶群內(nèi),用戶的歷史負(fù)荷數(shù)據(jù)相加,匯總得到每個用戶群的歷史負(fù)荷用電量。
為了對多特征時間序列用戶群數(shù)據(jù)進(jìn)行充分學(xué)習(xí),本文進(jìn)一步提出了CNN-GRU居民用電量預(yù)測模型。模型結(jié)構(gòu)主要包括CNN層、GRU層和全連接層,整體網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
模型中每層描述如下:
圖2 CNN-GRU網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 CNN-GRU architecture
1) CNN層。本模型的CNN層包含一個卷積層和一個池化層。卷積層用于挖掘各用戶群負(fù)荷數(shù)據(jù)與氣候和時間等變量之間的潛在關(guān)系,并提取高維特征。以M表示用戶群數(shù)量,則表征居民用電信息的輸入數(shù)據(jù)包含(8+M)個時間序列,每個時間序列包含48個時刻的歷史數(shù)據(jù),因此單個輸入樣本為(8+M)×48的矩陣。卷積層通過U個卷積核,將居民用電信息映射為U個時間序列,輸出U×48的矩陣至池化層。之后池化層通過最大值池化將居民用電信息映射為U×24的矩陣,從而在保留有效信息的同時,壓縮時間序列的長度,減少后續(xù)GRU網(wǎng)絡(luò)的訓(xùn)練時間。
2) GRU層。本模型搭建了雙層GRU結(jié)構(gòu),以充分學(xué)習(xí)居民用電負(fù)荷數(shù)據(jù)的時序特性?;贑NN層輸出的U×24的用電信息矩陣,由第一層GRU提取時序特性,并傳遞相同格式的用電信息矩陣至第二層GRU,第二層GRU再進(jìn)一步提取時序信息后,由最后一步神經(jīng)元輸出U×1格式的表征居民用電信息的向量至全連接層。
GRU單元的基本結(jié)構(gòu)如圖3所示,數(shù)學(xué)描述如式(7)所示。在圖3中,箭頭所指方向為數(shù)據(jù)流動方向。
(7)
圖3和式(7)中,×為矩陣的數(shù)乘,σ為激活函數(shù)Sigmoid函數(shù),tanh為激活函數(shù),“1-”表示該鏈路向前傳播的數(shù)據(jù)為1-zt.zt和rt為更新門和重置門的輸出,xt為輸入,ht-1為上一隱藏層的輸出,ht為隱藏層的輸出。
圖3 GRU網(wǎng)絡(luò)基本單元Fig.3 GRU basic unit structure
3) 全連接層。包含V個神經(jīng)元的全連接層對GRU網(wǎng)絡(luò)提取的居民用電信息做進(jìn)一步非線性映射,最后由包含單個神經(jīng)元的輸出層輸出負(fù)荷預(yù)測結(jié)果。全連接層及輸出層的計算公式如式(8)所示。
y=W1×V·σ(WV×U·hU×1+bV×1)+b1×1.
(8)
式中:y為居民用電負(fù)荷預(yù)測值,hU×1為GRU網(wǎng)絡(luò)輸出的表征居民用電信息的向量,WV×U和bV×1為全連接層的權(quán)重矩陣和偏置向量,W1×V和b1×1為輸出層的權(quán)重矩陣和偏置。
為驗證所提負(fù)荷預(yù)測方法的可行性與精確性,本文選取愛爾蘭能源管理委員會(commission for energy regulation,CER)發(fā)布的公開數(shù)據(jù)集進(jìn)行實例驗證[18],選取了數(shù)據(jù)集中3 639戶居民,自2009年8月1日至2010年12月31日,共17個月的數(shù)據(jù)。數(shù)據(jù)集被劃分為訓(xùn)練集、驗證集和測試集。其中訓(xùn)練集為2009年8月1日至2010年7月31日負(fù)荷數(shù)據(jù),共365 天的數(shù)據(jù),隨機(jī)取80%得到,剩余20%數(shù)據(jù)作為驗證集;測試集為2010年8月1日至2010年12月31日共153天的負(fù)荷數(shù)據(jù)。負(fù)荷數(shù)據(jù)采樣粒度為30 min.
本文使用訓(xùn)練集對BIRCH-CNN-GRU 預(yù)測方法所用模型進(jìn)行訓(xùn)練,建立居民用電短期負(fù)荷預(yù)測模型,采用測試集對構(gòu)建的模型性能進(jìn)行測試及評價。每個輸入樣本的時間窗長度為24 h,相應(yīng)的輸出樣本為1 h后的總負(fù)荷值。
同時,將預(yù)測結(jié)果與相同條件下ANN、CNN、CNN-GRU在訓(xùn)練時間與預(yù)測精度維度等方面進(jìn)行比較,以驗證模型效果。其中ANN模型由3層全連接層構(gòu)成,CNN模型由3層CNN單元和2層全連接層構(gòu)成,CNN-GRU模型采用2.2節(jié)所提出的思路搭建,其中卷積層卷積核數(shù)U、GRU每層神經(jīng)元數(shù)W、全連接層神經(jīng)元數(shù)V分別設(shè)置為128、32、32.
本文實驗環(huán)境采用Intel i5-8265U處理器,Intel UHD Graphics 620顯卡。采用Python3.6作為編程語言,深度學(xué)習(xí)架構(gòu)基于Tensorflow框架以及Scikit-learn機(jī)器學(xué)習(xí)庫,繪圖工具采用Matplotlib繪圖庫。
為了評估所提出方法的預(yù)測性能,以平均絕對百分比誤差MAPE、均方根誤差RMSE為評價指標(biāo)。計算方法如式(9)-(10)所示。
(9)
(10)
式中:n為測試樣本個數(shù);Xact(i)和Xpred(i)分別為第i時刻的用電負(fù)荷電量真實值和預(yù)測值。
對3 639戶居民的平均日負(fù)荷用電量進(jìn)行BIRCH聚類分析,當(dāng)聚類數(shù)增大時,輪廓系數(shù)的變化趨勢如圖4所示。當(dāng)聚類類別數(shù)為2和3時輪廓系數(shù)較大,即聚類效果較好。為保留更多的用戶用電信息,我們設(shè)定聚類類別數(shù)為3,并根據(jù)聚類結(jié)果將3 639戶居民數(shù)據(jù)劃分為3類,得到3個用戶群的用戶數(shù)分別為1 163、2 274、202個。各用戶群的平均負(fù)荷曲線如圖5所示??梢钥闯?,不同用戶群的用電模式有明顯區(qū)別。
圖4 不同聚類類別數(shù)的輪廓系數(shù)結(jié)果Fig.4 Silhouette scores of different cluster number
表2為各模型在2010年8月到12月連續(xù)5個月的日負(fù)荷預(yù)測結(jié)果。本文所提方法的MAPE和RMSE分別為2.932 1%和78.973 9 kWh.通過比較本文提出的BIRCH-CNN-GRU方法與ANN模型、CNN模型、CNN-GRU模型的預(yù)測結(jié)果,可知本文所提方法在2項精度指標(biāo)上都有明顯優(yōu)勢,MAPE平均值分別降低了24.33%,18.01%,16.74%,RMSE分別降低了20.53%,12.43%,16.73%.
圖5 2010年9月1日至3日各用戶群平均負(fù)荷曲線Fig.5 Average load curve of each user-group from September 1 to 3, 2010
表2 負(fù)荷預(yù)測結(jié)果對比Table 2 Prediction performance comparison over test data
為了更直觀顯示本文所提出模型及對照組模型的預(yù)測效果,以2010年9月1日為例繪制實際負(fù)荷曲線及預(yù)測負(fù)荷曲線的對比圖如圖6所示。可以看出,與其他幾種對比模型相比,本文方法預(yù)測負(fù)荷曲線與實際負(fù)荷曲線更接近。
圖6 2010年9月1日預(yù)測結(jié)果Fig.6 Prediction results on September 1, 2010
此外,繪制前150個時期(Epoch)的訓(xùn)練過程中的誤差下降曲線,縱軸為RMSE,橫軸為時期,如圖7所示??梢钥闯?,相比于其他3種方法,BIRCH-CNN-GRU方法的收斂速度更快,即子用戶群的用電趨勢信息有助于提升模型擬合速度。
圖7 模型訓(xùn)練過程中的誤差變化趨勢分析Fig.7 Error variation trend analysis during model training
本文提出了一種BIRCH聚類算法融合CNN-GRU預(yù)測模型的居民用電短期負(fù)荷預(yù)測方法。所提出方法可以更充分地利用智能電表提供的歷史負(fù)荷數(shù)據(jù),有更高的預(yù)測精度?;趯嶋H數(shù)據(jù)集的算例顯示,本方法相比于ANN、CNN、CNN-GRU等方法,在預(yù)測精度層面有明顯優(yōu)勢。未來主要從以下兩個方向展開研究為:
1) 本文只考慮了單點預(yù)測和單步預(yù)測。但是在自動化調(diào)度過程中,概率預(yù)測和多步預(yù)測可以為自動化調(diào)度策略提供更多的依據(jù)。因此未來的工作將探索基于本方法的概率預(yù)測和多步預(yù)測。
2) 本方法目前只考慮了用戶的負(fù)荷特征,沒有考慮用戶的其他特征。由于智能電表收集的信息越來越多樣化,下一步將研究更多的用戶信息加入到特征集中,并對預(yù)測模型性能進(jìn)行進(jìn)一步改進(jìn)優(yōu)化,以進(jìn)一步提升負(fù)荷預(yù)測精度。