張永建,周晟,沈澄泓,周長星
(1.國網浙江省紹興供電公司, 浙江 紹興312099;2.浙江泛海智行電力科技有限公司,浙江 杭州 310052)
作為外向型城市的紹興,由于近年來受宏觀經濟形勢復雜多變,產業結構調整,中美經貿摩擦升級的影響,經濟增速放緩,全市工業出口增速呈現一定回落的趨勢。去年一月開始的全世界新冠肺炎疫情又使紹興的工業生產和外貿出口出現更明顯的下滑,2020全年的經濟增長大幅度放緩。疫情形勢和經濟環境的不確定性增加了售電量預測的難度。
供電公司的財務部門在每個月的某個時間點需要對未來30天或31天的全行業售電量做出預測,乘以電價得出售電量收入后,為制定“現金流預算計劃”提供參考。紹興作為新二線城市共有高壓用戶幾萬個,其用電量占全行業用電量的80%以上。因此對高壓用戶的用電量進行準確預測,就可以把握全行業的用電量乃至售電量。
(1)
用上述公式先預測出某月的用電量,便可推算出這個月的售電量。此外供電公司通過預測區域內所有外貿企業未來一個月的用電量來判斷外貿企業乃至整個地區經濟的景氣程度。未來一個月電量的預測值是通過預測未來一個月內每天的電量然后累加得到的。
對電量預測的研究由來已久,例如文獻[1]用GRU結合STL分解的方法預測短期電量,獲得一定的精度,文獻[2]用基于集合經驗模式分解的ARIMA模型來預測月電量,效果尚滿意,但是用上述方法做出的預測均未達到供電公司業務需求的預測誤差在2%左右以下的要求,應用起來缺乏實際意義。本文重點研究了用LSTM長短記憶神經網絡來預測短期電量,主要是對數據做了平滑和預處理、對模型進行了細致調參并對春節期間的預測做了特殊處理。 把LSTM模型的預測結果和ARIMA模型以及Facebook的開源模型Prophet的預測結果進行比較,驗算結果表明,只有LSTM模型的預測準確度達到了供電公司制定的標準。
隨著電力行業SG-ERP的建設,電力行業的業務數據增長速度在不斷提升,各種數據已積累多年。從浙電云平臺中抽取紹興2016年至2019年年底的高壓用戶日用電量數據,以及2018年至2020年的全市外貿企業日用電數據,應用算法對多個月的用電量做整月的預測,然后與已知的數據進行對比,判斷預測的準確性。預測時,把整個紹興地區分成若干個區域,然后對各個區域的電量分別做預測,最后匯總成整個紹興地區的總用電量。在計算誤差時,計算匯總而成的整個紹興地區的預測總電量的誤差。通常誤差是指30天的預測電量之和減去這30天實際電量之和,然后除以后者。
在對日電量構成的時間序列進行預測之前,首先要對數據進行平滑處理。平滑處理的目的是把一些極大或極小或異常的日電量值替換成合理的電量值。異常值定義為小于α(0<α<1)倍的日均電量或大于β(β>1)倍的日均電量的電量值,由于日電量可以認為以7天為周期,異常的電量值可以用7天或14天前后的電量來替代。平滑處理的邏輯圖如圖1所示。

圖1 數據平滑邏輯圖Fig.1 Data smoothing logic diagram
在實際應用中,α和β的取值是需要調參的,調參的目標是各區域的平均預測誤差最低。測試結果表明,序列經過平滑后預測的精度要明顯提高。經過調參,α最終取0.65,β取1.3。
本文用三種時間序列預測模型LSTM長短期記憶神經網絡、ARIMA模型、Facebook的先知模型(Prophet)來對多個月份的紹興地區高壓用戶用電量和外貿企業用電量進行預測并比較結果。
RNN循環神經網絡能對時間序列進行預測,它本質上相當于在全連接神經網絡上加入了反饋機制,能對之前的信號進行處理,記住處理之后的狀態,稱之為記憶。RNN循環神經網絡的結構示意圖如圖2所示。

圖2 RNN結構示意圖Fig.2 RNN structure diagram
LSTM長短期記憶神經網絡是在RNN循環神經網絡上改進而來的,于1997年提出[3-10]。LSTM神經網絡是由多個循環單元相互遞歸連接而成的,結構示意圖如3所示。

圖3 LSTM結構示意圖Fig.3 LSTM structure diagram
LSTM長短期記憶神經網絡的循環單元內部包括三個門結構,分別為遺忘門、輸入門和輸出門。遺忘門的作用是選擇出前一記憶狀態應當保留的部分,通常由tanh函數實現;輸入門可以決定用哪些信息來更新長期記憶狀態,該閥門篩選出有用信息喂入網絡,它通常由Sigmoid函數實現;最后一個是輸出閥門,它置于網絡的輸出之后,可以自動提取輸出信息中的重要部分,它也由Sigmoid函數實現。
長短期記憶神經網絡的發明者在他們的論文中已經通過實驗驗證了LSTM相對于RNN的優越性,主要體現在以下兩點:1.LSTM引進的三種門控結構,可以學習到長期記憶信息,解決長時依賴問題;2.LSTM中的激活函數是sigmoid函數與tanh函數相結合,在反向傳播求導時使得梯度幾乎保持為常量,避免了梯度消失或爆炸,大大加快模型收斂速度[11-15]。
本研究使用Python3.7和Keras來實現LSTM神經網絡,并在全行業高壓用戶的數據集上做了大量實驗對LSTM模型的參數進行調整。需要調節的主要參數有預測時間窗口,即序列長度、隱含層神經元數和上文提到的數據平滑的參數α和β等。

表1 LSTM模型參數調整Tab.1 LSTM model parameter adjustment
調參的結果是,預測時間窗口設為60天,即用60天的日電量歷史數據來預測未來一天的電量, 第一隱含層和第二隱含層的神經元數分別為10和20,此外每次訓練50期(epoch),樣本的批量大小為128,隨機舍棄50%的神經元,損失函數為均方誤差,優化器為rmsprop。由于初始權重的不同,LSTM神經網絡在同一個訓練集上每次訓練的模型會有所不同,所以把樣本按97%和3%分為訓練集和測試集,在訓練集上訓練10個模型,選擇在測試集上效果最好的那個用于預測。
本次研究也嘗試了在最初的LSTM長短期記憶神經網絡模型中加入新的變量如最高溫度、最低溫度、節假日標簽等,雖然LSTM模型的框架允許加入新的變量或序列[16-18],但實驗結果表明,加入變量后并不能提高LSTM模型的預測精度,所以最后只在模型中保留電量這一個序列用于預測。
ARIMA模型,差分整合移動平均自回歸模型,又稱整合移動平均自回歸模型,是時間序列預測分析的經典方法之一。ARIMA(q,d,q)中,AR是自回歸,p為自回歸項數,MA為移動平均,q為移動平均項數,d為使之成為平穩序列所做的差分次數(階數)。

(2)
式中,▽d=(1-B)d;φ(B)=1-φ1B-……-φpBp,為平穩可逆ARMA(p,q)模型的自回歸系數多項式;φ(B)=1-θ1B-……-θqBq,為平穩可逆ARMA(p,q)模型的移動平均系數多項式。
用Python3.7和statsmodels來實現ARIMA整合移動平均自回歸模型算法,用單位根檢驗來判斷序列是否平穩,對不穩定的序列進行差分處理。此外設p和q的最大值為5,采用自動搜索使BIC最小的方法來尋找最優模型用于預測[19-23]。
Prophet是Facebook開源的時序框架,Facebook表示,Prophet相比現有預測工具更加人性化,它使用起來非常方便,提供可手動調整的完全自動化的預測,且預測效果好[24]。
對于一個給定的時間序列y(t),Prophet把它分為3個部分,趨勢成分g(t)、季節性成分s(t)、節假日成分h(t)和不確定成分∈t。即:
y(t)=g(t)+s(t)+h(t)+∈t
(3)
事實上,它是Generalized Additive Model(GAM)模型的特例,但Prophet只用到了時間作為擬合的參數。Prophet模型比ARIMA等模型更靈活、擬合快、不必考慮缺失值的填充問題。用Python3.7和fbprophet軟件包可以較容易地實現先知模型,而且用先知模型來預測速度很快。
節日主要是指具有較長連續假期的春節和國慶節等。每年國慶節的陽歷日期都相同,而每年春節的陽歷日期都不同因此預測變得更加復雜。
2.4.1 春節期間的電量預測
由于春節的特殊性,春節對附近月份電量的影響每年都是不相同的,普通的時間序列算法都不能準確地預測春節期間的電量[25-26],因此本文采用分段預測的方法。下圖4繪制了以2017、2018和2019的農歷正月初一(春節)為基準點,紹興上虞區春節前16天至春節后28天的用電量。可以清楚地看到,以農歷為基準的春節期間用電量曲線基本吻合。2019年春節期間前后共45(16+28+1)天的日用電量可以用前兩年對應農歷日期的平均日電量乘以一個成長因子得出,這個成長因子可以是不同年份間的春節前17天至47天的電量之比。45天之外的日用電量仍然用算法如LSTM等來預測。這45天會影響春節附近2-3月的電量預測,所以必須做好春節附近各時間段預測的銜接。這樣的預測方法大大提高了春節期間電量預測的精度。

圖4 上虞區春節期間電量Fig.4 Electricity consumption during Spring Festival in Shangyu County
2.4.2 國慶期間的電量預測
國慶和春節的不同之處在于每年國慶大約7天假期的陽歷都是相同的。一般用時間序列算法來預測國慶期間的電量通常會預測得過高,所以國慶假期的電量可以用和預測春節電量相似的方法來估計。例如,2019年國慶期間的日電量可以用前兩年國慶期間對應日期的平均電量乘以一個成長因子得到。
對紹興地區高壓用戶在2019/1-2019/12時段內共12個整月的1號至月末30號或31號的電量進行預測。預測時同時應用LSTM、ARIMA和Prophet三個模型,每次都對8個區域的月度電量分別做預測,適用模型前都對數據做同樣的平滑,最后比較3個模型的預測效果。
平均絕對誤差是8個區域預測誤差的絕對值的均值,區域電量匯總誤差是匯總8個區域的電量真實值和預測值后計算得到的誤差。由于正負相抵,區域電量匯總誤差一般要小于平均絕對誤差。比較上述3種算法主要看的是表中所示的平均誤差和匯總后平均誤差,前者是12個平均絕對誤差的均值,后者是區域電量匯總誤差的絕對平均值,它們實際反映了模型達到的精度。從表2-4可以看到,整合移動平均自回歸模型ARIMA的兩個誤差指標最差,LSTM模型和Prophet模型相比,Prophet模型的平均誤差(3.1%)要小于LSTM(3.5%),但是LSTM的匯總后平均誤差只有2.2%,要明顯小于Prophet的2.6%。 匯總后平均誤差更能代表整個紹興地區月度總電量的預測誤差,因此更為重要,而且2.2%的誤差和供電公司財務部門所要求的月度預測誤差在2%左右以內是基本相符的。另外值得注意的是2019春節期間(2019/2/1-2019/2/28)的區域電量匯總誤差僅為-0.6%,這是十分令人滿意的結果。

表2 LSTM模型預測誤差(高壓用戶電量)Tab.2 Prediction error of LSTM model (high voltage customer electricity consumption)

表3 ARIMA模型預測誤差(高壓用戶電量)Tab.3 Prediction error of ARIMA model (high voltage customer electricity consumption)

表4 Prophet模型預測誤差(高壓用戶電量)Tab.4 Prediction error of Prophet model (high voltage customer electricity consumption)
在月度用電量準確預測的前提下,月度售電量也能夠較為準確地預測[27-30],從而幫助財務部門制定出準確的“現金流預算計劃”。
為了進一步驗證各個模型的預測效果,采用和前文基本相同的方法對2019年6月至2020年5月時段內的12個整月的電量進行30天預測,預測區間為每月21號開始的30天,結果表明除了由于疫情原因導致的2020年1月春節期間的預測偏差較大外,LSTM模型對其余11個月的預測結果都比較準確。2020年的春節由于受到疫情的影響,春節(1/25)后的電量沒有像往常一樣在一個月內緩慢恢復正常,整個2月份因為基本沒有復工用電量很低,所以2020/1/21-2020/2/19期間的預測電量不準確。
表5-7中去除了2020/1/21-2020/2/19的預測誤差統計信息。從數據可以看出,LSTM模型的平均誤差和匯總后平均誤差最低。同時可見,使用在全行業高壓用戶數據集上實驗得到的LSTM模型參數,在外貿用戶的數據集上也獲得了良好的預測效果。值得注意的是,表4中的LSTM模型的匯總后平均誤差和表1中的高壓用戶預測的誤差恰好一樣為2.2%,這基本達到了供電公司期望的精度要求。

表5 LSTM模型預測誤差(外貿企業用戶電量)Tab.5 Prediction error of LSTM model (foreign trade enterprise electricity consumption)

表6 ARIMA模型預測誤差(外貿企業用戶電量)Tab.6 Prediction error of ARIMA model (foreign trade enterprise electricity consumption)

表7 Prophet模型預測誤差(外貿企業用戶電量)Tab.7 Prediction error of Prophet model (foreign trade enterprise electricity consumption)
本文詳細記述了用長短期記憶神經網絡LSTM、整合移動平均自回歸模型ARIMA、先知模型Prophet三種時間序列算法對紹興高壓用戶和外貿用戶的日電量進行一個月的短期預測,結果表明在對原始數據進行平滑、對春節期間的預測做特殊處理后,經過調參的LSTM模型雖然速度較慢,但預測精度在兩個數據集上都是最高,達到了供電公司對電量預測精度的一般要求,而整合移動平均自回歸模型ARIMA和先知模型Prophet模型的預測效果較差且不穩定。因此建議在電力系統中推廣和應用本文提出的改制的LSTM預測方法。