唐利濤, 張智勇, 陳 俊, 許林娜, 鐘佳晨, 袁培森
(1. 南方電網廣西電網有限責任公司計量中心, 南寧 530024;2. 南京農業大學 人工智能學院, 南京 210031)
“雙碳”目標的提出, 對智能電網 (smart grid) 的業務智能化提出了新的要求[1]. 新一代智能電網基于現代信息技術與通信技術相結合, 它整合了現代能源技術的高效、智能、安全的電力系統. 此外,該電網架構還能夠通過強大的數據分析和實時監控, 有效提升電力數據分析預測的準確性和可靠性[2].
在電力數據預測分析工作中, 負荷預測是其中的關鍵內容. 負荷預測[3]是指根據電力系統本身的供電決策、天氣因素、運行機制等諸多因素, 在滿足一定精度要求的條件下, 推算出未來某特定時間點的負荷值, 具有很強的時序特點. 合理預測電力負荷, 一方面可以幫助用戶合理用電, 另一方面可以幫助供電方規避效益風險.
目前對于電力負荷的預測研究已初具規模. 楊書強等[4]提出了一種將負荷數據圖像化, 并應用長短期記憶 (long short-term memory, LSTM) 人工神經網絡進行短期電力負荷預測的方法. 王峰[5]應用改進粒子群優化算法建立了短期電力負荷預測模型. 通過水平方向和垂直方向的平滑修正, 對歷史數據的異常負荷點進行識別并修正. 此類研究所遇到的瓶頸問題, 在于兩個方面: 一是因為模型適用性不強, 隨機森林[6]、支持向量機[7]等算法對于短期數據的周期性擬合較好, 但數據的累積效應[8]會使模型效果變差; 二是由于數據集的精度不夠, 大多模擬測試數據集僅對數據進行了慣性增長[9], 與實際生活中用電數據存在偏差, 導致預測結果不能作為精準指標供分配調度.
為克服上述傳統預測模型中的問題, 越來越多的學者考慮在時序數據預測中使用基于注意力機制的算法, 主要包括Transformer[10]和Informer[11]. 但由于這些模型直接使用了自注意力機制, 難以從復雜的時間序列模式中找到可靠的時間依賴, 并且由于自注意力機制特有的二次復雜度問題[12], 會限制模型的稀疏度要求, 影響信息利用率. 針對這些問題, 業內提出了Autoformer 模型[13], 它是時序預測在延長預測時效方面的一大突破. 張濤[14]將Autoformer 和非穩態Transformer 引入了電碳因子序列長時預測領域中, 提出了基于多層級潮流追蹤的區域動態電碳因子計算框架. 李烈[15]使用Autoformer 方法, 對水位進行了長期預測, 以探索其可行性. 研究證明, Autoformer 可以提高預測精度及效率, 理論上也可運用到具有時序特征的電力負荷數據中, 用以彌補實際電力負荷數據預測工作中的不足.
因此, 本文基于Autoformer 模型, 提出一種電力負荷時序數據預測方法. 該方法對負荷數據進行特性分析后, 在Autoformer 架構上進行改進, 實現負荷預測, 提升電力負荷預測的精確性. 在模型優化過程中, 本文以深度分解架構為整體框架, 能夠實現負荷時序數據的深度分解. 同時, 引入自相關機制以增強特征信息的提取能力, 利用網格搜索法進行最佳參數組的尋找, 最終使模型發揮出最好的性能.
本文在Autoformer 模型的基礎上進行改進, 具體的電力負荷時序數據預測分析框架結構如圖1所示, 該框架主要分為5 個部分, 即輸入層、特征提取層、編碼層、解碼層和邏輯回歸層.

圖1 改進Autoformer 的電力負荷數據預測處理框架Fig. 1 Improving Autoformer’s framework structure for power load data processing and analysis
在圖1 中, 輸入層將歷史電力負荷數據輸入到模型中, 負荷序列在經過數據預處理后以集合的形式表示. 在輸入層數據進入編碼器-解碼器部分之前, 序列信息特征要在訓練神經網絡部分進行充分學習[16].
在特征提取層中, 對負荷數據進行有針對性的特征提取. 具體是利用編碼器對負荷序列進行編碼,得到序列特征; 同時對負荷序列的周期性信息進行提取和卷積操作, 得到趨勢特征[17].
編碼層中, 對輸入的負荷數據結合提取到的序列特征和趨勢進行漸進式序列分解, 尋找更可靠的周期依賴, 將負荷時序數據分解成季節項和趨勢項, 作為解碼層的輸入.
在解碼層中進行季節項的漸進式序列分解[18]和周期依賴的尋找, 最后結合編碼層輸出的趨勢項得到未來負荷值的變化趨勢, 從而得到解碼層的輸出.
邏輯回歸層由判斷結構組成. 當解碼層將數據解碼后, 判斷解碼層數是否與設定一致, 若小于則會繼續進入下一層解碼層進行新的序列分解和預測, 直到解碼層數滿足要求, 將解碼器的輸出作為預測結果并重新映射為下一時刻用電負荷的預測概率[19].
Autoformer 是一個編碼器-解碼器框架的模型. 編碼器和解碼器兩部分通過序列分解的輸入與輸出進行相關性連接, 自相關機制和序列分解作為兩個獨立的模塊嵌入到編碼器和解碼器中. 其模型架構如圖2 所示.

圖2 基于Autoformer 模型的負荷預測架構Fig. 2 Load forecasting architecture based on the Autoformer model
如圖2, 模型分為編碼器和解碼器兩部分. 編碼器主要關注負荷周期項, 它的輸入是前I時間步,即輸入的負荷時間序列. 在自相關機制的控制下, 經過編碼器的初步序列分解, 初始輸入的時間序列被分解為負荷趨勢項和負荷周期項送入解碼器. 所以解碼器的輸入有兩部分, 即負荷趨勢項和負荷周期項 (在本文場景下, 也可使用負荷季節項), 分別反映長期趨勢和周期性, 具體計算公式如式(1)—(2)所示.
式(1)中:χ代表輸入時間序列, 對其進行滑動平均 ( A vgPool )[20]處理得到趨勢項χt, P adding 操作[21]用來保持序列長度不變.
式(2)中: 輸入的原時間序列減去經式(1)處理得到的趨勢項之后就得到周期項χs.
送入解碼器的負荷季節項和負荷趨勢項經過自相關機制的控制進行進一步的序列分解. 解碼器分為多個解碼層, 每個解碼層取時序數據的一段完整數據而不是離散的數據點進行層層序列分解, 實現漸進式的預測, 使預測更可靠也更準確.
解碼器包括兩個部分, 一個是對編碼器輸出的趨勢項使用累加操作, 逐步從預測的隱變量中提取趨勢信息; 另一個是對編碼器輸出的季節項使用堆疊自相關機制, 進行依賴挖掘并聚合相似子過程.以第1 個解碼層χlde為例, 假設有M個解碼層, 由于解碼層中主要對輸入時間序列和編碼層輸出進行操作, 因此將第一層解碼層表示為χlde=Decoder(χld-e1,χNen) . Decoder 表示該表達式為解碼層操作, 內部細節如下:
式(3)中: AC 代表自相關機制處理; SD 代表序列分解操作;代表第一次解碼的輸入時間序列;則是在解碼層中解碼出來的趨勢信息.
Autoformer 基于序列周期性的自相關機制 (Auto-Correlation), 即對輸入向量的每個位置的局部區域進行卷積操作, 按照選定的時延對一段時間內的數據選取相似的子過程, 對離散時間過程得到自相關. 自相關系數的計算如式(4)所示.
式(4)中:Rχχ(τ) 為自相關系數, 表示χt和它的t延遲χt-τ之間的相似性;L代表對數據進行延遲操作的次數. 而式(4)表示對于時間序列進行平移, 度量平移前后的時間序列的相似性, 相似性高的平移序列對應的平移量就是潛在的周期. 但是為了提高計算效率, Autoformer 中用快速傅里葉變換[22]計算自相關系數, 具體計算過程如式(5)—(6)所示.
式(5)中:χt為輸入的初始時序;F代表傅里葉變換,F?則是共軛操作;f代表頻率, 與2π 相乘得到角頻率結果;F和F?分別對趨勢項進行積分得到的結果相乘, 可以將時序轉為頻域Sχχ.
式(6)中:F-1為傅里葉逆變換, 對式 (5) 得到的結果進行一次傅里葉逆變換得到自相關系數, 這種方法可以降低自相關求解的計算復雜度至O(LlogL) .
在負荷預測的任務中, 通過對負荷歷史數據和季節特性等參考數據進行特征提取, 可以為模型提供重要的輸入特征. 針對復雜的負荷數據, 特征提取階段的目標是盡可能挖掘豐富的特征信息, 以覆蓋多種影響因素.
在負荷數據送入編碼器之前, 為了可以提取更多的特征信息, 本文在Autoformer 模型架構中加入特征提取層, 特征提取層主要從序列特征和趨勢特征進行提取和融合. 特征提取層框架如圖3 所示.

圖3 特征提取層框架Fig. 3 Feature extraction layer framework
對于序列特征, 設計了不同的編碼器對輸入的負荷序列的負荷值以及采集時間進行編碼. 首先對負荷序列采用值編碼器進行特征映射[23], 另外, 對負荷時序數據中的時間信息也單獨采用了時間編碼器對時間進行編碼, 最后得到的負荷時間序列項處理如式(7)所示.
式(7)中:Ei表示負荷序列的值編碼器, 從負荷時序Xi中取一段歷史負荷序列進行映射;Ti表示時間編碼器, 提取時間信息, 包括月、日、小時、分鐘.
對于趨勢特征, 首先選取負荷時序數據中過去h個時刻的負荷序列, 在過去h天、h周、h月在t時刻的負荷值, 分別整理成序列集合. 這些序列集合就構成了數據的趨勢信息, 可以反映較長一段時間的負荷數據變化趨勢及周期性等. 將它們構成趨勢矩陣T, 再對這個趨勢矩陣進行卷積操作提取負荷序列的趨勢特征.
得到序列特征和趨勢特征后, 將兩類特征進行融合作為特征提取層的輸出結果, 融合的過程如式(8)所示.
式(8)中: concat()是常用的連接兩個或多個數組的函數,Xt是趨勢特征,Xs是序列特征,Xoutput是特征提取的結果.
實驗平臺為Windows10 操作系統, CPU 為AMD Ryzen 5 Gfx 2.10 GHz, 內存16 GB. 本文模型采用PyTorch 1.11.0 和Python 3.10 實現.
使用UCI (University of California Irvine) Tetouan 電力負荷數據集(https://archive.ics.uci.edu/dataset/849/power+consumption+of+tetouan+city). 該數據集包含2017 年1 月1 日0:00 到12 月30 日23:50 的Tetouan 地區電力負荷數據, 每10 min 記錄一次負荷值, 共有52 416 個采樣點. 數據集有9 個屬性, 分別為datetime、temperature、humidity、wind speed、general diffuse flows、diffuse flows、zone 1 power consumption、zone 2 power consumption、zone 3 power consumption. 該數據集包含了Tetouan 地區3 個區的電力負荷數據, 本文中使用其中zone 1 的負荷值作為實驗對象, 數據集按8∶2 劃分為訓練集和驗證集.
針對處理異常值, 本文采用拉格朗日插值法對異常值處的值進行估計和填補, 計算如式(9)所示.
式(9)中:yi表示不同樣本點處的因變量;li(x) 是拉格朗日基本多項式, 計算如式(10)所示.
式(10)中:xi和xj表示不同樣本點處的自變量.
針對數據歸一化, 本文采用的歸一化方式是Transformer 中常見的StandardScaler 法進行特征歸一化, 如式(11)所示.
式(11)中:xi表示負荷的某個特征值,和s分別代表特征值的均值和方差,yi則是特征值經過標準化之后的標準值.
本文的預測結果采用均方誤差 (mean square error, MSE)、平均絕對誤差 (mean absolute error,MAE) 和決定系數作為評價指標.
決定系數R2是用來反映模型擬合效果的一種指標, 表示自變量對因變量變化情況的解釋能力,如式(12)所示, 一般R2的值越接近1 表示效果越好.
均方誤差MSE 用于計算預測值和真實值之間差平方的平均值, MSE 的值越小代表模型的預測表現越好, 其計算公式如式(13)所示.
平均絕對誤差MAE 用于計算真實值與預測值之間絕對差的平均值, MAE 的值越小代表模型的預測表現越好, 其計算公式如式(14)所示.
式(12)—(14)中:yi代表第i個樣本數據項的真實值,代表使用模型得到的相應的預測值.
本文使用數據集的周負荷特性如圖4 所示. 由圖4 可知, 一周內每天的電力負荷值變化趨勢一致,負荷峰值均出現在工作日, 谷值均出現在周末, 體現出明顯的周期性; 且一周內工作日的用電負荷值顯著高于周末, 符合負荷特性中的時空性關系.
3.5.1 特征提取層結果分析
由于預測中主要考慮負荷值和采集時間兩個特征, 因此加入特征提取層對輸入負荷時序的序列特征和趨勢特征進行提取和融合. 加入特征提取層與不加特征提取層的模型MAE 值、MSE 值和決定系數值如圖5 所示.
由圖5(a)可知, 加入特征提取層后, 模型在預測進程中的決定系數有所增加, 由圖5(b)可知, 在加入特征提取層后, 模型的MAE 值及MSE 值均呈下降趨勢. 因此, 加入特征提取層自動從數據中提取特征, 可以使得模型更好地理解數據的規律. 在數據本身可能包含許多不必要的信息的情況下, 自動去除這些無關信息, 使得模型的精度得到提升.
3.5.2 參數優化結果分析
針對本文模型而言, 所需要優化的參數有學習率η、批量大小λ、編碼層數α和解碼層數β, 下面的結果是對上述參數的尋優結果.
(1) 編碼層數及解碼層數結果分析
Autoformer 編碼層數和解碼層數都直接影響著模型的深度和表達能力, 超參數α和β一般選在5 以內. 對編碼層數α進行最優值探尋, 固定解碼層數β為1, 在此條件下, 編碼層數在1—5 時, 模型在預測中的MAE 和MSE 表現如圖6 所示.

圖6 不同編碼層數下模型預測誤差Fig. 6 Model prediction error with different number of coding layers
由圖6 可知, 隨著α的增加, 模型在訓練集上的MAE 值及MSE 值變化趨勢一致, 當α為3 時,MAE 值及MSE 值同時達到最低. 因此, 本文選α值為3.
對參數β的尋優, 設定α為3,β值在1—5 時, 模型在預測中的MAE 和MSE 結果如圖7 所示.

圖7 不同解碼層數下模型預測誤差Fig. 7 Model prediction error under different decoding layers
由圖7 可知, 隨著β的增加, 模型在訓練集上的MAE 值及MSE 值變化趨勢一致, 當β為2 時,MAE 值及MSE 值同時達到最低. 因此, 本文選β值為2.
綜上, 模型選擇設置編碼器層數為3、解碼器層數為2 進行后續實驗.
(2) 學習率結果分析
首先將編碼層數設置為3, 解碼層數設置為2, 在此條件下進行最優學習率η的尋找.η的范圍設置為 1×10-5~1×10-1, 步長為10 倍. 模型在不同學習率預測下的MAE 和MSE 表現如圖8 所示.

圖8 不同學習率下模型預測誤差Fig. 8 Model prediction error under different decoding learning rate
由圖8 可知, 隨著η的增加, 模型的MAE 值及MSE 值的變化趨勢一致, 當η為 1×10-3時, 模型的MAE 和MSE 的值同時達到最低. 因此選取 1×10-3作為模型的學習率進行后續實驗.
(3) 批量大小結果分析
批量大小的搜索范圍設置在16 ~ 64 之間, 步長設置為16. 不同大小的批量下, 模型在預測中的MAE 和MSE 表現如圖9 所示.

圖9 不同批量大小下模型預測誤差Fig. 9 Model prediction error under different decoding batch sizes
由圖9 可知, 在編碼層數、解碼層數和學習率都最優的條件下, 隨著λ的變化, 模型的預測誤差變化已經非常小, MAE 值及MSE 值的變化趨勢一致, 當λ為32 時, 模型的MAE 和MSE 值達到最低.
(4) 優化器結果分析
本文模型的參數優化對比了Adam 優化器、Adagrad 優化器和RMSprop 優化器. 在不同優化器下, 本文模型的預測結果的MAE 和MSE 如圖10 所示.

圖10 不同優化器下模型預測誤差Fig. 10 Model prediction error under different optimizers
由圖10 可知, 在最優編碼層數解碼層數、最優學習率和最優批量大小的條件下, 不同優化器對模型的誤差均有不同程度的改善, 當優化器選擇Adam 優化器時, 模型的MAE 和MSE 值最低. 因此,選取Adam 優化器作為模型的參數優化器進行后續預測.
綜上所述, 尋找到的最優超參數為0.000 1 的學習率、3 層編碼器層、2 層解碼器層、32 的批量大小, 此時分類準確率達到92.15%, 利用Adam 優化器自適應地調整參數.
3.5.3 預測實驗結果
(1) 損失率收斂結果分析
本文迭代輪數設為10 次, 模型在訓練集和驗證集上的損失率如圖11 所示. 圖11 (a) 為訓練集上的損失率, 隨著迭代次數的增加整體呈下降趨勢; 圖11 (b) 為驗證集上損失率隨迭代次數的變化趨勢, 整體也是下降的, 雖然在迭代次數到達6 時出現了損失率上升的情況, 但在此之后依然呈現平穩下降趨勢.

圖11 訓練集及驗證集上損失率隨迭代次數的變化Fig. 11 Loss rate on the training and validation sets for different number of iterations
圖11 中, 驗證集的損失率通常比訓練集的損失率高, 這是因為模型在訓練過程中可能會出現過擬合的情況, 但是如果驗證集的損失率一直上升, 則說明模型出現了過擬合現象, 需要及時調整參數或者增加數據量. 綜上, 本文模型在損失率上表現較好, 沒有出現過擬合等情況, 保證了負荷預測結果的可信度.
(2) 預測時長變化的結果分析
為分析本文模型在不同時長的負荷預測中的能力, 本文對樣本電力負荷進行以天和周為周期的負荷預測, 預測結果如圖12 所示.

圖12 負荷預測結果擬合示例Fig. 12 Example of fitting load forecast results
圖12 (a)是2017 年12 月30 日00:00—23:50 該區域的負荷真實值以及2017 年12 月30 日00:00 至2018 年1 月1 日23:50 的負荷預測值. 由圖12 (a)可知, 在一天的預測周期內, 真實值和預測值擬合程度較好, 負荷的峰值和谷值出現在一天中的同一時間段內.
圖12(b)展示了2017 年12 月24—30 日該區域的負荷真實值以及2017 年12 月24 日至2018 年1 月7 日的負荷預測值. 由圖12(b)可知, 本文模型在一周內的預測效果表現良好, 每天的峰值和谷值出現在同一段時間內.
綜上, 本文模型在預測中得到的預測值整體趨勢與真實值一致, 并且負荷峰值和谷值的出現均在同一時間段內, 具有較優的擬合效果和穩定性.
(3) 本文模型與其他模型預測結果對比
為了對比本文模型的預測性能, 將本文模型與同樣基于注意力機制的Transformer 和Informer 進行對比. 為了滿足預測效果的要求, 同時減少模型的時耗, 將預測時長設定為一周, 對比結果見表1.

表1 本文模型與其他模型預測效果對比Tab. 1 Comparison of prediction performance with other models
在平均絕對誤差上, 本文模型的平均絕對誤差控制在0.251 2, 相比Informer 和Transformer 模型分別降低了13.40%和27.17%. 在均方誤差上, 本文模型的均方誤差控制在0.191 5, 相比Informer 和Transformer 模型分別降低了19.80%和25.24%. 在決定系數上, 本文模型的決定系數達到了0.982 3,分別比Informer 和Transformer 高出了2.18%和6.20%.
綜上, 本文使用的改進Autoformer 負荷預測模型在MAE、MSE 和決定系數3 項指標上均得到了顯著的改善, 表明本文方法在預測準確性和模型穩定性方面表現出色.
本文在Autoformer 結構基礎上, 加入特征提取層提取負荷數據的序列特征和趨勢特征, 尋找更可靠的周期性. 在UCI 提供的負荷數據集上, 相比于所對比的其他模型, 本文方法有最佳的MAE、MSE 和決定系數指標, 在電力系統負荷預測方面具有較好的有效性. 此外, 本文方法在不同的預測時長下均具有有效的負荷預測精度.