劉涅煊,楊學良,陶曉峰,黃福興,陸春艷
(國網電力科學研究院有限公司(南瑞集團有限公司),南京 211106)
隨著《關于進一步深化電力體制改革的若干意見(中央〔2015〕9號)》文件的逐步推進,電力系統(tǒng)負荷預測在電力生產部分指定發(fā)電計劃及售電公司參與現(xiàn)貨市場的工作中起關鍵作用。精準的負荷預測有利于提高電網運行的穩(wěn)定性,降低電力成本,提高企業(yè)的整體效益[1]。
國內外研究者已對電力負荷數(shù)據預測的理論及方法進行了大量研究,整體分為兩大類常用方法,一類是基于傳統(tǒng)的時間序列法構建預測模型;另一類方法基于機器學習來實現(xiàn)[2]。前者的代表算法有差分整合移動平均自回歸模型(autoregressive integrated moving average model,ARIMA)及其衍生的各類改進算法[3],它要求時序數(shù)據或其差分數(shù)據是穩(wěn)定的,且在差分運算時提取的是固定周期的信息,這難以符合現(xiàn)實數(shù)據的情況,因此這類方法預測的效果普遍難以令人滿意;后者通常是以神經網絡為代表的機器學習來實現(xiàn)負荷預測,典型的如BP 神經網絡[4—5]、長短記憶神經網絡(long short-term memory,LSTM)[6—7]、卷積神經網絡(convolutional networks,CNN)[8]、隨機森林[9]等以及在此基礎上的各種改進方法,這類算法往往需要較多的專業(yè)背景知識,此外通過特征工程為數(shù)據預測提供非電氣數(shù)據特征,如溫度、濕度、電價、日期等[10],目前這類算法已經成為負荷預測的主流,以此構建模型的預測結果更加準確但需要樣本數(shù)量多、算例要求高、調參過程復雜、參數(shù)對效果影響大[11],因此在實際應用中還難以真正實用化,需要進一步探索更加有效的預測方式。
Prophet 是Facebook 公司于2017 年提出的一種基于時間序列分解和機器學習的新型時間序列預測算法[12]。它被設計用于大規(guī)模數(shù)據預測,具備模型參數(shù)選擇直觀、擬合效率高、缺失值無需人為填充的優(yōu)點,便于使用者簡單、靈活地構建預測模型并獲得較好的預測結果。目前Prophet 算法已被應用于空氣質量預測[13]、產品銷量預測[14],銀行網點備付金預測[15]等多個場景下,體現(xiàn)出較強的適用性和準確性。受前人相關研究的啟發(fā),本文嘗試將Prophet算法引入負荷預測領域,并結合機器學習的方法對其進行改進,提升短期負荷預測的準確性。本文使用電網公司提供的負荷數(shù)據實驗論證本文提出的預測模型的有效性。
Prophet算法本質上按照曲線擬合的思路看待預測的問題,通過觀察歷史數(shù)據,建立了一種可加回歸模型,該模型由有歷史數(shù)據的趨勢項、周期項、節(jié)日項、隨機波動項之和來表示。對于趨勢項,該算法支持自動檢測或人工設置轉變點,實現(xiàn)數(shù)據趨勢的分段擬合;對于周期項,該算法使用傅里葉級數(shù)建模而成;節(jié)日項則是通過人為設置實現(xiàn)對數(shù)據走向產生影響的重大節(jié)日、特殊活動進行建模。綜上,Prophet對時間序列建模如式(1)表示
式中:Di為第i個節(jié)假日前后一段時間;k符合期望為0;方差為v2的正態(tài)分布;v為默認值10,該值越大,則節(jié)日模型對Prophet算法的影響越大,反之則影響越小。若不關心節(jié)日的影響,模型中可不加入此項。
第四項,ε為誤差項或隨機波動項,表征模型中除了趨勢、周期性性變化之外并未考慮到的因素給時間序列帶來的波動,在Prophet 算法的實現(xiàn)中,通過迭代計算符合高斯分布的概率密度函數(shù)對隨機波動項進行估計。本文對原算法中隨機估計的方法進行改進,基于XGBoost 訓練數(shù)據中隨機波動項的潛在規(guī)律預測序列的隨機波動項。
Prophet算法根據訓練數(shù)據對上述幾項分別進行擬合,計算待預測時間點的數(shù)值并疊加獲得對應的預測值。
XGBoost 算法是一種被廣泛認可的集成學習模型,它對梯度提升決策樹改進,對損失函數(shù)進行二階泰勒展開,對目標函數(shù)增加了正則化項,在目標函數(shù)的下降和模型復雜程度之間做出權衡,提升模型效率的同時避免出現(xiàn)過擬合。區(qū)別于其他Boosting算法,XGBoost不僅隨機抽取一定比例的樣本點進行當次學習,而且在每次抽樣的過程中同樣對樣本的特征進行抽樣,將測試數(shù)據的特征輸入模型,得到預測結果。并且XGBoost支持多線程運算,訓練與預測效率高。
本文將XGBoost 用于預測Prophet 算法的隨機波動項,實現(xiàn)步驟如下。
(1)給定數(shù)據集D={ }(xi,yi) ,其中i=1,2,…n,xi∈RP,yi∈R,n為樣本個數(shù),每個樣本有P個特征。假設有K個決策樹,xi為第i個數(shù)據點的特征向量,fk為一棵決策樹,F(xiàn)為決策數(shù)的集合,則模型可以表示為
(6)利用貪婪算法,從一個葉節(jié)點開始迭代地向樹結構添加分支,逐層計算決策樹的參數(shù),使目標函數(shù)達到最小值,利用驗證集檢測模型訓練過程是否達到目標,否則繼續(xù)優(yōu)化參數(shù)直到達到較好效果保存模型。
本文研究的數(shù)據集中,僅包含日凍結數(shù)據及其時間信息,按照表1 的方式從數(shù)據集中提取用于XGBoost模型訓練學習的特征。
表1 XGBoost模型選用的特征Table 1 Features used in XGBoost algorithm
Prophet算法在構建過程中,將時間序列分解為4部分,本文研究對象為專公變用戶的日凍結負荷預測,一方面考慮到大部分工廠的生產線在普通節(jié)假日是不停工的,節(jié)日對用電量的影響不是非常顯著,另一方面為了簡化模型,提升模型的適應性,本文暫不考慮節(jié)日項,將Prophet算法簡化為
y(t)=g(t)+s(t)+ε(t) (12)
從式(12)可以發(fā)現(xiàn),利用歷史時間序列對Prophet 算法訓練,可以得到g(t)和s(t),選取臨近預測序列的一段時間序列作為驗證序列,帶入該驗證序列中的時間點亦可獲得模型在這一段時間的趨勢項和周期項,從驗證序列中減去模型估計得趨勢項和周期項即可得到隨機波動序列
ε(t)=y(t)-g(t)-s(t) (13)
顯然,因為原算法中通過迭代計算符合高斯分布的概率密度函數(shù)來估計隨機波動項難以很好的擬合ε(t)。因此,本文將XGBoost算法引入Prophet預測模型中,期望利用機器學習的方法,挖掘待預測序列前面臨近一段時間的隨機波動項的潛在規(guī)律,生成隨機波動項的預測模型,以此實現(xiàn)隨機波動項的預測,再與Prophet算法預測的趨勢項和周期項疊加,得到最終的預測結果。上述算法架構如圖1所示。
圖1 改進Prophet算法的架構Fig.1 Architecture of the optimized Prophet algorithm
如圖1 所示,待預測序列的隨機波動項替換為XGBoost 算法預測的結果,按照此方式構建預測模型的優(yōu)點在于:①利用XGBoost 高效計算取代原先的迭代計算,提升計算效率;②引入機器學習的方法探索隨機波動序列中潛在規(guī)律,提升模型的可描述性及預測準確性。
本文提出的改進Prophet 日負荷預測模型構建流程如圖2所示。
圖2 基于改進Prophet算法的預測模型Fig.2 Power forecast with optimized Prophet algorithm
(1)利用Prophet 算法對輸入的歷史時間序列進行分解,將序列分解為趨勢項、周期項、隨機波動項3部分;
(2)用原始Prophet 算法對帶預測序列的趨勢項、周期項進行預測;
(3)用Prophet 算法對臨近預測序列的一段驗證序列計算其趨勢項、周期項,用驗證序列的原始數(shù)據減去趨勢項和周期項,得到隨機波動項;
(4)用驗證序列的隨機波動項作為XGBoost算法的輸入,對待預測序列的隨機波動項進行預測;
(5)合并Prophet算法預測得到的趨勢項、周期項,以及XGBoost算法預測得到的隨機波動項,獲得待預測序列的預測結果。
對預測結果采用負荷預測常用的均方根誤差(root mean square error,RMSE)、平均絕對誤差百分比(mean absolute percentage error,MAPE)指標進行評估,尋求最佳參數(shù),各項指標的計算方法如下
式中:Fi為真實值;Ti為預測值。
改進Prophet算法涉及的主要參數(shù)及說明如表2所示。
表2 改進Prophet算法涉及的主要參數(shù)Table 2 Parameters of optimized Prophet algorithm
為驗證本文提出的改進Prophet 負荷預測算法的有效性,本文使用的數(shù)據來自某省電力公司用電信息采集系統(tǒng)提供的部分專變大用戶的每天日凍結負荷電量數(shù)據。時間范圍為2018 年1 月1 日至2021年12月31日,提取用戶樣本總計1 969戶。
采用本文提出的改進Prophet算法,用一例樣本的2018 年1 月1 日 至2021 年7 月31 日 的 日 凍 結 數(shù)據作為訓練序列,對之后10天的日凍結數(shù)據進行短期預測。首先觀察其2018年1月1日至2021年1月1日的日凍結電量曲線如圖3所示。
圖3 日用電量曲線Fig.3 Curve of daily electric consumption
從圖3 看,工業(yè)用戶的用電行為具備一定的周期性變化的特征,以一年/半年為周期的變化尤其明顯,如上圖紅色虛線標注所示。Prophet算法支持人為設置變化點,因此對于該案例,本文設置每年的1月1 日和7 月1 日作為變化點,輔助Prophet 更加精確的識別變化點的位置。用Prophet 算法對訓練序列進行分解并預測未來10天的趨勢項與周期項,如圖4所示。
圖4 Prophet預測的趨勢項和周期項Fig.4 Trend item and seasonal item forecast by Prophet
Prophet算法可以將時間序列分解后,預測得出的趨勢項圖4(a),周期項(包括年、月、周這幾個尺度,如圖4(b)、4(c)、4(d))。對于驗證序列而言,用驗證序列的原始值減去對應時刻的趨勢項和周期項,可獲得對應時刻上的隨機波動項,如圖5所示。
圖5 基于XGBoost預測的隨機波動項Fig.5 Random item forecast by XGBoost
如圖5 所示,在本研究案例中選取的驗證序列為紅色虛線之前的部分(即2021 年6 月1 日至7 月31 日日凍結負荷數(shù)據)即為驗證序列的隨機波動項。利用驗證序列的隨機波動序列及相關特征,預測得到待預測序列的隨機波動項,如圖5 紅色虛線右邊所示。將圖4 中待預測序列的趨勢項、周期項與圖5中隨機波動項合并,即可得到改進Prophet 算法的最終預測結果。改進的Prophet算法中,較重要的一項參數(shù)即XGBoost 算法訓練樣本集的大小,即驗證序列的長度。從圖5 的隨機波動項的曲線來看,沒有明顯的規(guī)律性特征。本文認為,與待預測序列鄰近日期的數(shù)據參考意義較大,數(shù)據之間存在較強的相關性,若選擇的訓練樣本過多,會給XGBoost 算法帶來較多與待預測序列關聯(lián)性不大的數(shù)據,干擾模型對數(shù)據規(guī)律的判斷;若選擇的訓練樣本過少,則XGBoost算法難以學習到足夠的內容,導致模型擬合效果較差。因此,本文研究了驗證序列長度對改進Prophet預測算法效果的影響,從MAPE、RMSE指標入手進行對比,如圖6所示。
圖6中,橫坐標為驗證序列長度,可以看到訓練樣本長度(從30 到360,間隔30)的變化對RMSE(圖6(a))、MAPE(圖6(b))的影響。從曲線上可以很明顯的看出,當驗證序列的長度取60(即60 天的日凍結電量),預測誤差指標均達到最低;驗證樣本長度取30時誤差較大,驗證樣本長度取60以上時,誤差指標的數(shù)值隨著驗證樣本增長而變大,這與本文的推斷結果一致。
圖6 驗證序列長度對預測準確率的影響Fig.6 RMSE and MAPE effected by testing sample length
對于3.2 節(jié)研究的算例,將原始的Prophet 算法預測結果與本文提出的改進方法進行對比,2021年8 月1 日到8 月10 日的用電量真實值和預測值曲線如圖7所示。
圖7 Prophet算法改進前后對比Fig.7 Comparison of original and optimized Prophet
從圖7 可以觀察到,改進后的Prophet 算法預測序列曲線較Prophet原始算法更貼近真實值曲線,誤差明顯比原始的Prophet算法預測結果更小,算法改進前后的MAPE分別為7.12%與4.73%。改進Prophet算法與原始算法預測指標對比如表3所示
表3 改進Prophet算法與原始算法預測指標對比Table 3 Comparison of the optimized and original prophet
從表3 中可以發(fā)現(xiàn),在此應用場景下,改進Prophet算法確實可以有效提升負荷預測的準確性,3 個時段分別比原始的Prophet 算法MAPE提升1.53%、2.5%、1.14%,RMSE顯著低于其他兩種算法的預測結果,改進后的算法對3 個時段預測的RMSE降低幅度達21.77%、30.79%、22.41%,可以認為本文提出的改進Prophet 算法可以較原始的Prophet取得更優(yōu)秀的預測結果。
本文提出了一種適用于日負荷電量短期預測的算法,通過對Prophet 算法進行改進,利用Prophet算法對時間序列分解、預測,并引入XGBoost算法單獨對隨機波動項分量進行預測,對預測的結果進行集成,通過現(xiàn)場實際數(shù)據驗證本文提出的改進算法的有效性。實驗結果表明,通過改進Prophet算法能夠切實有效地提升日負荷電能量短期預測的準確性,平均絕對誤差僅為4.64%,較原始的Prophet 算法的MAPE可降低2.5%,RMSE也可顯著降低。在實驗過程中發(fā)現(xiàn)計算效率較高,具備較高的工程實用價值。下一步將拓展研究范圍,收集更多用戶的分時用電數(shù)據,并且嘗試其他的模型集成方法,實現(xiàn)更精準的負荷數(shù)據預測。D