張永建,周晟,沈澄泓,周長星
(1.國網(wǎng)浙江省紹興供電公司, 浙江 紹興312099;2.浙江泛海智行電力科技有限公司,浙江 杭州 310052)
作為外向型城市的紹興,由于近年來受宏觀經(jīng)濟(jì)形勢復(fù)雜多變,產(chǎn)業(yè)結(jié)構(gòu)調(diào)整,中美經(jīng)貿(mào)摩擦升級(jí)的影響,經(jīng)濟(jì)增速放緩,全市工業(yè)出口增速呈現(xiàn)一定回落的趨勢。去年一月開始的全世界新冠肺炎疫情又使紹興的工業(yè)生產(chǎn)和外貿(mào)出口出現(xiàn)更明顯的下滑,2020全年的經(jīng)濟(jì)增長大幅度放緩。疫情形勢和經(jīng)濟(jì)環(huán)境的不確定性增加了售電量預(yù)測的難度。
供電公司的財(cái)務(wù)部門在每個(gè)月的某個(gè)時(shí)間點(diǎn)需要對(duì)未來30天或31天的全行業(yè)售電量做出預(yù)測,乘以電價(jià)得出售電量收入后,為制定“現(xiàn)金流預(yù)算計(jì)劃”提供參考。紹興作為新二線城市共有高壓用戶幾萬個(gè),其用電量占全行業(yè)用電量的80%以上。因此對(duì)高壓用戶的用電量進(jìn)行準(zhǔn)確預(yù)測,就可以把握全行業(yè)的用電量乃至售電量。
(1)
用上述公式先預(yù)測出某月的用電量,便可推算出這個(gè)月的售電量。此外供電公司通過預(yù)測區(qū)域內(nèi)所有外貿(mào)企業(yè)未來一個(gè)月的用電量來判斷外貿(mào)企業(yè)乃至整個(gè)地區(qū)經(jīng)濟(jì)的景氣程度。未來一個(gè)月電量的預(yù)測值是通過預(yù)測未來一個(gè)月內(nèi)每天的電量然后累加得到的。
對(duì)電量預(yù)測的研究由來已久,例如文獻(xiàn)[1]用GRU結(jié)合STL分解的方法預(yù)測短期電量,獲得一定的精度,文獻(xiàn)[2]用基于集合經(jīng)驗(yàn)?zāi)J椒纸獾腁RIMA模型來預(yù)測月電量,效果尚滿意,但是用上述方法做出的預(yù)測均未達(dá)到供電公司業(yè)務(wù)需求的預(yù)測誤差在2%左右以下的要求,應(yīng)用起來缺乏實(shí)際意義。本文重點(diǎn)研究了用LSTM長短記憶神經(jīng)網(wǎng)絡(luò)來預(yù)測短期電量,主要是對(duì)數(shù)據(jù)做了平滑和預(yù)處理、對(duì)模型進(jìn)行了細(xì)致調(diào)參并對(duì)春節(jié)期間的預(yù)測做了特殊處理。 把LSTM模型的預(yù)測結(jié)果和ARIMA模型以及Facebook的開源模型Prophet的預(yù)測結(jié)果進(jìn)行比較,驗(yàn)算結(jié)果表明,只有LSTM模型的預(yù)測準(zhǔn)確度達(dá)到了供電公司制定的標(biāo)準(zhǔn)。
隨著電力行業(yè)SG-ERP的建設(shè),電力行業(yè)的業(yè)務(wù)數(shù)據(jù)增長速度在不斷提升,各種數(shù)據(jù)已積累多年。從浙電云平臺(tái)中抽取紹興2016年至2019年年底的高壓用戶日用電量數(shù)據(jù),以及2018年至2020年的全市外貿(mào)企業(yè)日用電數(shù)據(jù),應(yīng)用算法對(duì)多個(gè)月的用電量做整月的預(yù)測,然后與已知的數(shù)據(jù)進(jìn)行對(duì)比,判斷預(yù)測的準(zhǔn)確性。預(yù)測時(shí),把整個(gè)紹興地區(qū)分成若干個(gè)區(qū)域,然后對(duì)各個(gè)區(qū)域的電量分別做預(yù)測,最后匯總成整個(gè)紹興地區(qū)的總用電量。在計(jì)算誤差時(shí),計(jì)算匯總而成的整個(gè)紹興地區(qū)的預(yù)測總電量的誤差。通常誤差是指30天的預(yù)測電量之和減去這30天實(shí)際電量之和,然后除以后者。
在對(duì)日電量構(gòu)成的時(shí)間序列進(jìn)行預(yù)測之前,首先要對(duì)數(shù)據(jù)進(jìn)行平滑處理。平滑處理的目的是把一些極大或極小或異常的日電量值替換成合理的電量值。異常值定義為小于α(0<α<1)倍的日均電量或大于β(β>1)倍的日均電量的電量值,由于日電量可以認(rèn)為以7天為周期,異常的電量值可以用7天或14天前后的電量來替代。平滑處理的邏輯圖如圖1所示。
圖1 數(shù)據(jù)平滑邏輯圖Fig.1 Data smoothing logic diagram
在實(shí)際應(yīng)用中,α和β的取值是需要調(diào)參的,調(diào)參的目標(biāo)是各區(qū)域的平均預(yù)測誤差最低。測試結(jié)果表明,序列經(jīng)過平滑后預(yù)測的精度要明顯提高。經(jīng)過調(diào)參,α最終取0.65,β取1.3。
本文用三種時(shí)間序列預(yù)測模型LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)、ARIMA模型、Facebook的先知模型(Prophet)來對(duì)多個(gè)月份的紹興地區(qū)高壓用戶用電量和外貿(mào)企業(yè)用電量進(jìn)行預(yù)測并比較結(jié)果。
RNN循環(huán)神經(jīng)網(wǎng)絡(luò)能對(duì)時(shí)間序列進(jìn)行預(yù)測,它本質(zhì)上相當(dāng)于在全連接神經(jīng)網(wǎng)絡(luò)上加入了反饋機(jī)制,能對(duì)之前的信號(hào)進(jìn)行處理,記住處理之后的狀態(tài),稱之為記憶。RNN循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)示意圖如圖2所示。
圖2 RNN結(jié)構(gòu)示意圖Fig.2 RNN structure diagram
LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)是在RNN循環(huán)神經(jīng)網(wǎng)絡(luò)上改進(jìn)而來的,于1997年提出[3-10]。LSTM神經(jīng)網(wǎng)絡(luò)是由多個(gè)循環(huán)單元相互遞歸連接而成的,結(jié)構(gòu)示意圖如3所示。
圖3 LSTM結(jié)構(gòu)示意圖Fig.3 LSTM structure diagram
LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)的循環(huán)單元內(nèi)部包括三個(gè)門結(jié)構(gòu),分別為遺忘門、輸入門和輸出門。遺忘門的作用是選擇出前一記憶狀態(tài)應(yīng)當(dāng)保留的部分,通常由tanh函數(shù)實(shí)現(xiàn);輸入門可以決定用哪些信息來更新長期記憶狀態(tài),該閥門篩選出有用信息喂入網(wǎng)絡(luò),它通常由Sigmoid函數(shù)實(shí)現(xiàn);最后一個(gè)是輸出閥門,它置于網(wǎng)絡(luò)的輸出之后,可以自動(dòng)提取輸出信息中的重要部分,它也由Sigmoid函數(shù)實(shí)現(xiàn)。
長短期記憶神經(jīng)網(wǎng)絡(luò)的發(fā)明者在他們的論文中已經(jīng)通過實(shí)驗(yàn)驗(yàn)證了LSTM相對(duì)于RNN的優(yōu)越性,主要體現(xiàn)在以下兩點(diǎn):1.LSTM引進(jìn)的三種門控結(jié)構(gòu),可以學(xué)習(xí)到長期記憶信息,解決長時(shí)依賴問題;2.LSTM中的激活函數(shù)是sigmoid函數(shù)與tanh函數(shù)相結(jié)合,在反向傳播求導(dǎo)時(shí)使得梯度幾乎保持為常量,避免了梯度消失或爆炸,大大加快模型收斂速度[11-15]。
本研究使用Python3.7和Keras來實(shí)現(xiàn)LSTM神經(jīng)網(wǎng)絡(luò),并在全行業(yè)高壓用戶的數(shù)據(jù)集上做了大量實(shí)驗(yàn)對(duì)LSTM模型的參數(shù)進(jìn)行調(diào)整。需要調(diào)節(jié)的主要參數(shù)有預(yù)測時(shí)間窗口,即序列長度、隱含層神經(jīng)元數(shù)和上文提到的數(shù)據(jù)平滑的參數(shù)α和β等。
表1 LSTM模型參數(shù)調(diào)整Tab.1 LSTM model parameter adjustment
調(diào)參的結(jié)果是,預(yù)測時(shí)間窗口設(shè)為60天,即用60天的日電量歷史數(shù)據(jù)來預(yù)測未來一天的電量, 第一隱含層和第二隱含層的神經(jīng)元數(shù)分別為10和20,此外每次訓(xùn)練50期(epoch),樣本的批量大小為128,隨機(jī)舍棄50%的神經(jīng)元,損失函數(shù)為均方誤差,優(yōu)化器為rmsprop。由于初始權(quán)重的不同,LSTM神經(jīng)網(wǎng)絡(luò)在同一個(gè)訓(xùn)練集上每次訓(xùn)練的模型會(huì)有所不同,所以把樣本按97%和3%分為訓(xùn)練集和測試集,在訓(xùn)練集上訓(xùn)練10個(gè)模型,選擇在測試集上效果最好的那個(gè)用于預(yù)測。
本次研究也嘗試了在最初的LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)模型中加入新的變量如最高溫度、最低溫度、節(jié)假日標(biāo)簽等,雖然LSTM模型的框架允許加入新的變量或序列[16-18],但實(shí)驗(yàn)結(jié)果表明,加入變量后并不能提高LSTM模型的預(yù)測精度,所以最后只在模型中保留電量這一個(gè)序列用于預(yù)測。
ARIMA模型,差分整合移動(dòng)平均自回歸模型,又稱整合移動(dòng)平均自回歸模型,是時(shí)間序列預(yù)測分析的經(jīng)典方法之一。ARIMA(q,d,q)中,AR是自回歸,p為自回歸項(xiàng)數(shù),MA為移動(dòng)平均,q為移動(dòng)平均項(xiàng)數(shù),d為使之成為平穩(wěn)序列所做的差分次數(shù)(階數(shù))。
(2)
式中,▽d=(1-B)d;φ(B)=1-φ1B-……-φpBp,為平穩(wěn)可逆ARMA(p,q)模型的自回歸系數(shù)多項(xiàng)式;φ(B)=1-θ1B-……-θqBq,為平穩(wěn)可逆ARMA(p,q)模型的移動(dòng)平均系數(shù)多項(xiàng)式。
用Python3.7和statsmodels來實(shí)現(xiàn)ARIMA整合移動(dòng)平均自回歸模型算法,用單位根檢驗(yàn)來判斷序列是否平穩(wěn),對(duì)不穩(wěn)定的序列進(jìn)行差分處理。此外設(shè)p和q的最大值為5,采用自動(dòng)搜索使BIC最小的方法來尋找最優(yōu)模型用于預(yù)測[19-23]。
Prophet是Facebook開源的時(shí)序框架,F(xiàn)acebook表示,Prophet相比現(xiàn)有預(yù)測工具更加人性化,它使用起來非常方便,提供可手動(dòng)調(diào)整的完全自動(dòng)化的預(yù)測,且預(yù)測效果好[24]。
對(duì)于一個(gè)給定的時(shí)間序列y(t),Prophet把它分為3個(gè)部分,趨勢成分g(t)、季節(jié)性成分s(t)、節(jié)假日成分h(t)和不確定成分∈t。即:
y(t)=g(t)+s(t)+h(t)+∈t
(3)
事實(shí)上,它是Generalized Additive Model(GAM)模型的特例,但Prophet只用到了時(shí)間作為擬合的參數(shù)。Prophet模型比ARIMA等模型更靈活、擬合快、不必考慮缺失值的填充問題。用Python3.7和fbprophet軟件包可以較容易地實(shí)現(xiàn)先知模型,而且用先知模型來預(yù)測速度很快。
節(jié)日主要是指具有較長連續(xù)假期的春節(jié)和國慶節(jié)等。每年國慶節(jié)的陽歷日期都相同,而每年春節(jié)的陽歷日期都不同因此預(yù)測變得更加復(fù)雜。
2.4.1 春節(jié)期間的電量預(yù)測
由于春節(jié)的特殊性,春節(jié)對(duì)附近月份電量的影響每年都是不相同的,普通的時(shí)間序列算法都不能準(zhǔn)確地預(yù)測春節(jié)期間的電量[25-26],因此本文采用分段預(yù)測的方法。下圖4繪制了以2017、2018和2019的農(nóng)歷正月初一(春節(jié))為基準(zhǔn)點(diǎn),紹興上虞區(qū)春節(jié)前16天至春節(jié)后28天的用電量??梢郧宄乜吹?,以農(nóng)歷為基準(zhǔn)的春節(jié)期間用電量曲線基本吻合。2019年春節(jié)期間前后共45(16+28+1)天的日用電量可以用前兩年對(duì)應(yīng)農(nóng)歷日期的平均日電量乘以一個(gè)成長因子得出,這個(gè)成長因子可以是不同年份間的春節(jié)前17天至47天的電量之比。45天之外的日用電量仍然用算法如LSTM等來預(yù)測。這45天會(huì)影響春節(jié)附近2-3月的電量預(yù)測,所以必須做好春節(jié)附近各時(shí)間段預(yù)測的銜接。這樣的預(yù)測方法大大提高了春節(jié)期間電量預(yù)測的精度。
圖4 上虞區(qū)春節(jié)期間電量Fig.4 Electricity consumption during Spring Festival in Shangyu County
2.4.2 國慶期間的電量預(yù)測
國慶和春節(jié)的不同之處在于每年國慶大約7天假期的陽歷都是相同的。一般用時(shí)間序列算法來預(yù)測國慶期間的電量通常會(huì)預(yù)測得過高,所以國慶假期的電量可以用和預(yù)測春節(jié)電量相似的方法來估計(jì)。例如,2019年國慶期間的日電量可以用前兩年國慶期間對(duì)應(yīng)日期的平均電量乘以一個(gè)成長因子得到。
對(duì)紹興地區(qū)高壓用戶在2019/1-2019/12時(shí)段內(nèi)共12個(gè)整月的1號(hào)至月末30號(hào)或31號(hào)的電量進(jìn)行預(yù)測。預(yù)測時(shí)同時(shí)應(yīng)用LSTM、ARIMA和Prophet三個(gè)模型,每次都對(duì)8個(gè)區(qū)域的月度電量分別做預(yù)測,適用模型前都對(duì)數(shù)據(jù)做同樣的平滑,最后比較3個(gè)模型的預(yù)測效果。
平均絕對(duì)誤差是8個(gè)區(qū)域預(yù)測誤差的絕對(duì)值的均值,區(qū)域電量匯總誤差是匯總8個(gè)區(qū)域的電量真實(shí)值和預(yù)測值后計(jì)算得到的誤差。由于正負(fù)相抵,區(qū)域電量匯總誤差一般要小于平均絕對(duì)誤差。比較上述3種算法主要看的是表中所示的平均誤差和匯總后平均誤差,前者是12個(gè)平均絕對(duì)誤差的均值,后者是區(qū)域電量匯總誤差的絕對(duì)平均值,它們實(shí)際反映了模型達(dá)到的精度。從表2-4可以看到,整合移動(dòng)平均自回歸模型ARIMA的兩個(gè)誤差指標(biāo)最差,LSTM模型和Prophet模型相比,Prophet模型的平均誤差(3.1%)要小于LSTM(3.5%),但是LSTM的匯總后平均誤差只有2.2%,要明顯小于Prophet的2.6%。 匯總后平均誤差更能代表整個(gè)紹興地區(qū)月度總電量的預(yù)測誤差,因此更為重要,而且2.2%的誤差和供電公司財(cái)務(wù)部門所要求的月度預(yù)測誤差在2%左右以內(nèi)是基本相符的。另外值得注意的是2019春節(jié)期間(2019/2/1-2019/2/28)的區(qū)域電量匯總誤差僅為-0.6%,這是十分令人滿意的結(jié)果。
表2 LSTM模型預(yù)測誤差(高壓用戶電量)Tab.2 Prediction error of LSTM model (high voltage customer electricity consumption)
表3 ARIMA模型預(yù)測誤差(高壓用戶電量)Tab.3 Prediction error of ARIMA model (high voltage customer electricity consumption)
表4 Prophet模型預(yù)測誤差(高壓用戶電量)Tab.4 Prediction error of Prophet model (high voltage customer electricity consumption)
在月度用電量準(zhǔn)確預(yù)測的前提下,月度售電量也能夠較為準(zhǔn)確地預(yù)測[27-30],從而幫助財(cái)務(wù)部門制定出準(zhǔn)確的“現(xiàn)金流預(yù)算計(jì)劃”。
為了進(jìn)一步驗(yàn)證各個(gè)模型的預(yù)測效果,采用和前文基本相同的方法對(duì)2019年6月至2020年5月時(shí)段內(nèi)的12個(gè)整月的電量進(jìn)行30天預(yù)測,預(yù)測區(qū)間為每月21號(hào)開始的30天,結(jié)果表明除了由于疫情原因?qū)е碌?020年1月春節(jié)期間的預(yù)測偏差較大外,LSTM模型對(duì)其余11個(gè)月的預(yù)測結(jié)果都比較準(zhǔn)確。2020年的春節(jié)由于受到疫情的影響,春節(jié)(1/25)后的電量沒有像往常一樣在一個(gè)月內(nèi)緩慢恢復(fù)正常,整個(gè)2月份因?yàn)榛緵]有復(fù)工用電量很低,所以2020/1/21-2020/2/19期間的預(yù)測電量不準(zhǔn)確。
表5-7中去除了2020/1/21-2020/2/19的預(yù)測誤差統(tǒng)計(jì)信息。從數(shù)據(jù)可以看出,LSTM模型的平均誤差和匯總后平均誤差最低。同時(shí)可見,使用在全行業(yè)高壓用戶數(shù)據(jù)集上實(shí)驗(yàn)得到的LSTM模型參數(shù),在外貿(mào)用戶的數(shù)據(jù)集上也獲得了良好的預(yù)測效果。值得注意的是,表4中的LSTM模型的匯總后平均誤差和表1中的高壓用戶預(yù)測的誤差恰好一樣為2.2%,這基本達(dá)到了供電公司期望的精度要求。
表5 LSTM模型預(yù)測誤差(外貿(mào)企業(yè)用戶電量)Tab.5 Prediction error of LSTM model (foreign trade enterprise electricity consumption)
表6 ARIMA模型預(yù)測誤差(外貿(mào)企業(yè)用戶電量)Tab.6 Prediction error of ARIMA model (foreign trade enterprise electricity consumption)
表7 Prophet模型預(yù)測誤差(外貿(mào)企業(yè)用戶電量)Tab.7 Prediction error of Prophet model (foreign trade enterprise electricity consumption)
本文詳細(xì)記述了用長短期記憶神經(jīng)網(wǎng)絡(luò)LSTM、整合移動(dòng)平均自回歸模型ARIMA、先知模型Prophet三種時(shí)間序列算法對(duì)紹興高壓用戶和外貿(mào)用戶的日電量進(jìn)行一個(gè)月的短期預(yù)測,結(jié)果表明在對(duì)原始數(shù)據(jù)進(jìn)行平滑、對(duì)春節(jié)期間的預(yù)測做特殊處理后,經(jīng)過調(diào)參的LSTM模型雖然速度較慢,但預(yù)測精度在兩個(gè)數(shù)據(jù)集上都是最高,達(dá)到了供電公司對(duì)電量預(yù)測精度的一般要求,而整合移動(dòng)平均自回歸模型ARIMA和先知模型Prophet模型的預(yù)測效果較差且不穩(wěn)定。因此建議在電力系統(tǒng)中推廣和應(yīng)用本文提出的改制的LSTM預(yù)測方法。