陳呂鵬, 殷林飛, 余濤, 王克英
(1.華南理工大學電力學院,廣州市 510640;2.廣東省綠色能源技術重點實驗室,廣州市 510640;3.廣西大學電氣工程學院,南寧市 530004)
作為電力調度部門重要的日常工作之一,負荷預測可以指導電力生產部門經濟地制定發電計劃和確定電力系統運行方式。精準的負荷預測有利于提高電力系統的安全穩定性,降低發電成本,提高電力企業的整體效益[1]。長久以來,國內外學者對負荷預測的理論和方法進行了大量研究。其中,傳統的時間序列法作為經典負荷預測方法的代表,具有預測模型簡單,預測所需數據量不大的優點[2]。但由于該方法強調時間因素在預測當中所起的作用,而淡化其他外界因素影響,導致預測誤差較大[1]。
20世紀80年代以來,隨著計算機與人工智能技術發展,許多以機器學習為基礎的智能預測算法相繼問世。同時,為了提高電力系統負荷預測的精準度,電力系統專家和學者開始嘗試將智能預測算法運用到電力系統負荷預測之中[3-5],并逐步提出現代負荷預測的理論。現代負荷預測理論主要有:灰色數學理論、專家系統方法、模糊負荷預測以及人工神經網絡等[1]。其中,人工神經網絡(artificial neural network, ANN)及其優化算法被廣泛運用于各種預測之中。ANN具有自學習以及聯想記憶的能力,能夠充分逼近復雜的非線性關系,具有魯棒性和容錯性[6]。因此,對于電力系統負荷預測這類非線性問題,ANN能有效地進行求解[6-9]。但ANN存在訓練速度慢,須人為設置和調整大量超參數的不足。同時,ANN易陷入局部最優解甚至無法收斂到最優解,導致預測失準[7]。隨著深度學習(deep learning)的概念被機器學習專家和學者提出[10-11],深度神經網絡(deep neural network, DNN)及其優化算法開始逐步成為目前深度學習的代表[12]。DNN具有深度學習理論中表征學習的能力[13],可以利用更少的超參數處理復雜模型[14]。同時,DNN采用了預訓練的方法緩解了算法易陷入局部最優的問題[15]。因此,DNN同樣具備負荷預測的能力,也被應用到了負荷預測領域[14]。但是,DNN依然存在訓練速度慢[16],訓練效果取決于人為對超參數的設置和調整的不足[7]。
國內南京大學機器學習與數據挖掘研究所(learning and mining from data, LAMDA)的周志華教授提出了深度森林算法(deep forest),也稱作多粒度級聯森林算法(multi-grained cascade forest, gcForest)。作為一種基于決策樹的集成分類算法,深度森林算法的試驗預測能力可與深度神經網絡算法相媲美[17]。同時,深度森林算法只需設置少量超參數,且在訓練過程中不需要人為調整大量超參數[17]。試驗表明,深度森林算法默認的超參數設置適用于處理不同領域的不同任務。即使不對超參數進行調整,也能取得有效的預測效果[17]。另外,作為一種基于決策樹的方法,深度森林算法從結構上適合于并行訓練,具有表征學習的能力,且在理論分析方面也比深度神經網絡容易[17]。本文將深度森林分類算法嘗試性地引入電力系統短期負荷預測領域,驗證深度森林分類算法的預測能力,并探究其在電力系統短期負荷預測的可行性。
短期負荷預測是電力系統負荷預測的重要組成部分,主要對未來某日內每個時刻的負荷量進行合理的預測[1]。精準的短期負荷預測對于電力調度部門的經濟調度、控制機組調配以及當前正在發展的電力市場都具有極其重要的意義[18]。
影響短期負荷預測精確度的因素主要有天氣突變、季節變化、調度計劃、突發事故以及大型社會活動等。因此,短期負荷預測具有隨機性和不確定性[19]。但負荷在隨機變化過程之中,仍然在年、月、星期和日等不同期限上具有明顯的周期性。因此,短期負荷變化綜合表現為在時間序列上的非平穩隨機過程[20]。
在進行電力系統短期負荷預測之前,應選擇具有代表性和影響度高的歷史數據資料作為預測依據。電力系統短期負荷預測通常采用以下數據進行預測:(1)歷史負荷數據;(2)日期類型數據;(3)天氣情況數據等。
精準負荷預測的核心在于獲取真實可靠的歷史數據和建立有效的負荷預測模型。隨著電力系統信息管理系統的建立以及氣象數據預測精確度的提高,精確獲取電力系統歷史負荷數據以及未來天氣情況已不再困難。因此,建立有效的負荷預測模型成為提高電力系統負荷預測精準度的關鍵[20]。
深度森林算法是在深度學習理論以及深度神經網絡的啟發下,以隨機森林算法(random forest, RF)為基礎的一種有監督機器集成學習算法。作為一種具有一定深度的基于決策樹的預測算法,深度森林算法將預測過程分為2個階段:多粒度掃描階段(multi-grained scanning)和級聯森林階段(cascade forest)。以下將依次對隨機森林算法、多粒度掃描階段和級聯森林階段進行分析。
隨機森林算法是重要的機器集成學習算法之一,其基礎是Breiman在1996年提出的Bagging集成算法[21]和Ho在1998年提出的隨機子空間方法[22]。隨機森林模型是一個由一組決策樹分類器{h(X,Θk),k=1,…,N}組成的集成分類模型。其中參數Θk是與第k棵決策樹獨立同分布的隨機向量,表示該棵決策樹的生長過程;X為待分類樣本。隨機森林算法的具體分類過程如圖1所示。
當向隨機森林模型輸入待分類樣本X后,樣本X

圖1 隨機森林分類過程Fig.1 Classification procedure of random forest
將會進入所有經過訓練產生的決策樹,從而進行分類。各棵決策樹將依據樣本的特征屬性獨自確定樣本X的類型。當所有決策樹得出各自的分類結果之后,隨機森林模型進行匯總投票。獲得票數最高的類別將被確定為樣本X的預測分類類別。因此,隨機森林的分類決策如式(1)所示[23]:
(1)
式中:H(x)為隨機森林分類決策結果;hi為第i個決策樹分類模型;Y為目標變量;I為度量函數;N為決策樹數量。
式(1)體現了隨機森林算法的多數投票決策方式。作為一種基于決策樹的集成算法,隨機森林模型在構造的過程中,構造不同的訓練集對各決策樹進行訓練,從而增加了各分類器之間的差異程度,并使隨機森林算法具有超越單個決策樹算法的分類效果。為體現隨機森林模型的隨機性,訓練集的構造包含2個關鍵過程,如下詳述。
2.1.1隨機選取樣本數據過程
隨機森林算法對原始訓練數據集進行隨機有放回抽樣,構造出樣本容量大小與原始數據集相一致的子數據集。不同子數據集中的樣本可以重復,同1個子數據集中的樣本也可以重復。每個子數據集對應產生1棵決策樹。
2.1.2隨機選取待選特征過程
隨機森林模型中每一棵決策樹的分裂過程只利用了所有的待選特征中的一部分特征。隨機森林算法先從所有的待選特征中隨機選取一定數量的特征,之后再通過決策樹生成算法[24-26],在隨機選取出的特征中選擇最優的特征進行分裂。
隨機森林模型在構造過程中所體現的隨機性和不完整性,解決了單個決策樹分類精度不高,易出現過擬合等問題,提高了算法的泛化能力[27]。
深度森林算法中隨機森林的決策樹一般采用分類回歸決策樹(classification and regression tree, CART)。CART是由Breiman等人提出的一種典型二叉決策樹,能夠有效地處理大數據樣本,解決非線性分類問題。因此,CART適合解決分類機理不明確的分類問題[26]。
決策樹生成算法的核心在于如何選取每個節點上需要進行測試的屬性和如何根據不同的數據度量方法對數據純度進行劃分。CART以基尼(Gini)指數作為屬性度量標準,Gini指數越小,則劃分效果越精確。Gini指數定義如式(2)所示:
(2)
式中:p(i|t)為測試變量t屬于類i的概率;c為樣本的個數。
當kGini=0時,所有的樣例同屬于一類。若屬性滿足一定純度,決策樹生成算法將樣本劃分在左子樹,否則將樣本劃分到右子樹。CART決策樹生成算法根據kGini指數最小的原則來選擇分裂屬性規則。假設訓練集C中的屬性A將C劃分為C1與C2,則給定劃分C的kGini指數為
(3)
決策樹的生長深度受條件限制,不能無限制生長下去。決策樹停止生長的條件如下:(1)節點的數據量小于指定值;(2)Gini指數小于閾值;(3)決策樹的深度達到指定值;(4)所有特征已經使用完畢。
對于序列數據樣本而言,預測算法有效地處理樣本特性,并且把握樣本中各個特征的順序關系,有利于提高預測的精確度[28-29]。為提高深度森林算法中級聯森林階段的預測效果,深度森林算法設置了多粒度掃描階段來對樣本特征進行提取,盡可能地挖掘序列數據特征的順序關系。深度森林算法中多粒度掃描的示意圖如圖2所示。
圖2中假定存在1個未經多粒度掃描的具有200維特征向量的樣本。深度森林算法希望解決二分類問題。其多粒度掃描的具體步驟如下:首先,設置1個50維的向量窗口在原始特征向量上進行滑動取值,步長默認取1,則可獲得151個50維向量;然后,將所得的向量分別經2種不同類型的森林模型進行分類處理,分別得到151個2維的分類向量;最后,再將所有分類向量按順序拼接組成1個604維的特征向量,作為級聯森林的輸入。

圖2 多粒度掃描過程Fig.2 Procedure of multi-grained scanning
圖2中僅展示了采用1種大小的取值窗口進行多粒度掃描的過程,而在實際運用深度森林算法時,默認會設置多個不同長度的取值窗口。因此,多粒度掃描過程將對應產生多個不同的多粒度特性向量作為級聯森林的輸入。因此,最終變換所得的特征矢量將包括更多的特征。
深度森林算法通過采用多粒度掃描過程,對原始特征數據進行加工處理,使特征數據維度得以拓展。經過處理后的深度森林算法具有了處理樣本特性之間順序關系的能力,增強了后續級聯森林階段。
深度森林算法通過設置級聯森林階段,以體現其深度學習的過程。級聯森林階段的每一級都由多個不同類型的森林模型組成。深度森林算法利用級聯森林階段對數據特性逐層進行處理,加強了算法的表征學習能力,有利于提高預測精準度。
在級聯森林階段中,每一級都從上一級獲取經處理后的特征信息,并利用特征信息產生出新的特征信息傳遞至下一級。除第1級直接采用經多粒度掃描處理后的特征向量作為輸入之外,隨后的每一級都將上一級輸出的特征結果向量與原始輸入特征向量相拼接作為自身的輸入。
深度森林算法中級聯森林階段的示意圖如圖3所示。圖3中,級聯森林采用經圖2中多粒度掃描過程處理后所得的604維特征向量作為輸入。首先,特征向量經過2個不同類型的森林模型分類處理后,得到2個2維類別向量。深度森林理論認為這2個2維類別向量能夠有效地反映樣本的特性,并將其稱為增強特性向量。接著,增強特性向量將與604維的原始特征向量相拼接組成608維的特征向量。然后,將具有增強特征的608維特征向量作為下一級的輸入向量。依此方法直至進行到級聯森林的最后一級。最后,對最后一級產生的類別向量取平均值,再取其中最大值所對應的類別作為樣本的分類結果。

圖3 級聯森林過程Fig.3 Procedure of cascade forest
在級聯森林階段處理過程中,為了降低過擬合風險,每個森林產生的類別向量均經過k折交叉驗證(k-fold cross validation)產生。每個樣本都將作為訓練數據訓練k-1次,從而產生k-1個類別向量。然后,對其取平均值作為下一級的增強特征向量。深度森林算法默認采用3折交叉驗證。

級聯森林的級數為深度森林模型的深度,深度森林算法在訓練級聯森林時可由算法運算自動確定級聯森林的級數。每當級聯森林訓練層數增加一層后,將會采用驗證集對級聯森林的性能進行測試,如果預測效果沒有提升,則停止產生下一層。與深度神經網絡算法須人為規定模型復雜程度不同,深度森林算法可以自動確定級聯森林的級數,從而調整預測模型的復雜程度。因此,深度森林算法可以適用于不同規模的訓練數據,而不局限于大數據集。
深度森林算法的具體實現步驟如下詳述。
(1)對預測所需數據進行預處理。剔除無效數據,并對缺失數據利用線性插值法進行填補。依據預測算法的需要,劃分出訓練樣本集。
(2)利用訓練樣本集對深度森林算法進行訓練。按照深度森林算法的超參數設置,對多粒度掃描階段和級聯森林階段中的森林模型進行構造,確定級聯森林的級數。
(3)利用預測樣本的特征數據進行預測。預測樣本的特征數據將依次進行多粒度掃描階段以及級聯森林階段處理。深度森林算法將匯總級聯森林的輸出結果,得出預測分類結果。
整體預測過程及整體深度森林算法的實現流程如圖4、5所示。

圖4 深度森林整體預測過程Fig.4 Forecasting procedure of deep forest
本文選取了某地區2012年1月1日—2015 年1月10日的電力負荷值(每15 min采樣1次,每日96個時刻)、氣象因素數據(日最高溫度、日最低溫度、日平均溫度、日相對濕度以及日降雨量)以及日期類型數據(工作日為0,周末為1)對電力系統短期負荷進行了預測,所選數據均來自第九屆“中國電機工程學會杯”全國大學生電工數學建模競賽所提供的標準數據集[31]。取2012年1月1日至2015年1月9日的數據作為歷史數據,對深度森林預測模型進行了訓練,并分別利用了前21天以及前40天的歷史數據預測2015年1月10日當天的負荷量。為評估深度森林算法在短期負荷預測上的能力,本文選取了BP神經網絡(back propagation neural network)[32]、隨機森林算法(random forest, RF)[33]、袋裝分類算法(bagging algorithm)[21]、梯度提升分類算法(gradient boosting algorithm)[34]、k最鄰近分類算法(k-nearest neighbor algorithm)[35]5種算法進行負荷預測,并將預測效果與深度森林算法預測效果進行了比較分析。本文預測算法程序均基于MATLAB語言和Python語言編程,仿真環境為MATLAB R2017a 及Python 2.7。
按照深度森林算法的步驟,首先須對數據進行預處理。目前針對負荷預處理的方法有很多,如數據橫向比較法、數據縱向比較法以及插值法等。本文中采用數據縱向比較法對原始數據進行預處理。其次,根據基于深度森林算法的周期性負荷預測模型的需要,劃分出訓練樣本集。取連續N天的負荷數據、氣象因素數據以及日期類型數據作為訓練輸入數據,次日的實際負荷數據作為訓練輸出。

圖5 深度森林算法流程Fig.5 Flow chart of deep forest algorithm
以利用前21天的數據進行電力系統短期負荷預測為例。取2012年1月1日—2012年1月21日連續21天的歷史負荷、氣象數據及日期類型數據作為訓練輸入,2012年1月22日的實際負荷量作為訓練輸出,并將此作為訓練集中第1個訓練樣本。直至取到2014年12月19日—2015年1月8日連續21天的歷史負荷、氣象數據以及日期類型數據作為訓練輸入,2015年1月9日的實際負荷量作為訓練輸出,并將此作為訓練集中最后1個訓練樣本。
電力負荷變化具有周期特性。因此,構造了一種基于深度森林算法的周期性負荷預測模型,如圖6所示(文中N先后取21和40)。

圖6 基于深度森林算法的周期性負荷的預測模型Fig.6 Forecasting model of periodic load based on deep forest
本文各算法預測性能采用平均絕對百分比誤差指標(mean absolute percentage error, MAPE)和最大相對誤差進行評估。MAPE和最大相對誤差的計算公式如式(4)、(5)所示:
(4)
(5)
總共統計96個時刻的絕對百分比誤差,分別取平均值δ和最大值ε對算法性能進行評估。δ、ε越小說明算法的預測效果越精確。
文獻[17]中介紹了深度森林算法的一大優勢在于其無須大量設置超參數和調參。采用默認的超參數設置即可應對規模類型不盡相同的預測任務。因此,本文試驗對深度森林算法采用默認的超參數設置。具體超參數設置見表1。
利用訓練樣本集對深度森林預測模型進行訓練,并對2015年1月10日當天96個時刻的負荷量進行了直接預測。不同分類算法利用前21天和前40天的歷史數據的負荷預測的結果如圖7、8所示。
從圖7中可以看出深度森林算法的負荷預測曲線變化趨勢與當天實際負荷量的變化相一致,并且能夠有效地預測當天負荷峰谷值以及出現的時間,而其他分類算法均無法有效地預測負荷量的具體值以及負荷的變化趨勢。同時,從圖8可以看出,在增加訓練樣本的特征數量之后,雖然其他算法的預測準確度有所提高,但它們的預測精度依然低于深度森林算法。這進一步說明了采用默認的超參數設置的深度森林算法可處理不同規模的訓練數據樣本集。

表1 深度森林算法中超參數的設置Table 1 Hyper-parameter setting of deep forest

圖7 利用前21天的數據負荷預測結果Fig.7 Results of load forecasting based on data of the previous 21 days

圖8 利用前40天的數據負荷預測結果Fig.8 Results of load forecasting based on data of the previous 40 days
各個預測算法的負荷預測誤差統計數據見表2。

表2 各算法預測誤差Table 2 Forecasting error of algorithms
從表2中可以看出,深度森林算法在所有試驗算法之中,擁有最低的預測誤差,展示了有效的電力系統短期負荷預測能力。
本文將深度森林算法引入電力系統短期負荷預測領域。選取了某地區的真實負荷數據、氣象數據以及日期負荷數據,分別利用了前21天的數據和前40天的數據對深度森林模型進行訓練,并運用深度森林算法進行電力系統短期負荷預測。試驗中將深度森林算法與其他算法在短期負荷預測領域的性能進行了對比,驗證了深度森林算法對電力系統短期負荷預測的有效性。該算法在文中的理論分析和試驗分析中體現了以下特點和優勢:
(1)深度森林算法受深度神經網絡等深度學習理論的啟發,設立多粒度掃描以及級聯森林2個階段。該算法具有處理表征關系的能力和逐層加強表征學習的能力。深度森林算法作為基于決策樹的集成算法,不僅克服了深度神經網絡超參數確定難度大的問題,而且在理論分析方面也比深度神經網絡容易。
(2)采用了某地區的真實負荷值、天氣數據以及日期負荷數據,檢驗了深度森林算法的短期負荷預測能力。作為分類算法,深度森林算法能夠有效地預測負荷的具體值以及負荷的變化趨勢,并在所有進行試驗的算法之中,具有較低的預測誤差。
(3)在深度森林算法保持超參數設置不變的情況下,試驗驗證了深度森林算法在不同的數據規模下均具有有效的短期負荷預測能力。同時,相較于其他分類算法,深度森林算法利用小規模預測樣本即可達到較高的負荷預測精準度。因此,深度森林算法能夠有效地處理規模不同的數據集,挖掘電力系統的各數據之間關系,提高短期負荷預測效果。