錢仲文, 陳 浩, 紀德良
(1. 國網(wǎng)浙江省電力有限公司, 杭州 310007; 2. 浙江華云信息科技有限公司, 杭州 310008)
負荷預(yù)測對電力系統(tǒng)的安全運行和電網(wǎng)企業(yè)的經(jīng)濟效益有著重要意義, 一直以來, 短、 中、長期的電力負荷預(yù)測作為供電企業(yè)的重要工作,各類負荷預(yù)測方法和研究層出不窮, 經(jīng)典的預(yù)測方法包括時間序列、 神經(jīng)網(wǎng)絡(luò)、 SVM(支持向量機)、 灰色預(yù)測法等。 主流的電力負荷預(yù)測主要針對地區(qū)性、 行業(yè)性的宏觀負荷數(shù)據(jù), 單個企業(yè)的負荷數(shù)據(jù)由于受企業(yè)生產(chǎn)、 宏觀政策等不確定因素影響, 缺乏周期性規(guī)律, 波動性大, 存在較大的模型預(yù)測誤差。
用電客戶, 尤其是大工業(yè)用戶的月度電力負荷數(shù)據(jù)與用電成本密切相關(guān), 在當前電力改革大背景下, 電網(wǎng)企業(yè)可以利用自身的技術(shù)和數(shù)據(jù)優(yōu)勢, 為大工業(yè)用戶提供月度負荷預(yù)測結(jié)果, 幫助企業(yè)合理選擇計費方式, 降低用電成本, 為客戶提供增值服務(wù)。
本文提出了一種應(yīng)用XGBoost(極端梯度上升)算法[1]進行大工業(yè)用戶月度負荷預(yù)測的模型,通過綜合考慮天氣、 企業(yè)生產(chǎn)情況、 歷史負荷變化等因素, 預(yù)測企業(yè)月度負荷變化趨勢, 為企業(yè)業(yè)擴報裝提供科學(xué)的判斷依據(jù)。
XGBoost 算法原理于2004 年由陳天奇提出[2],是在GBDT(梯度提升決策樹)的基礎(chǔ)上對Boosting 算法的改進, 解決GBDT 算法模型難以并行計算的問題, 實現(xiàn)對模型過擬合問題的有效控制。
GBDT 是一種迭代的決策樹算法, 為便于求解目標函數(shù), GBDT 常用回歸樹生長過程錯誤分類產(chǎn)生的殘差平方作為損失函數(shù), 即通過擬合殘差平方構(gòu)造損失函數(shù)。 隨著樹的生成, 損失函數(shù)不斷下降; 回歸樹生長過程每個分裂節(jié)點劃分時枚舉所有特征值, 選擇使得錯誤分類最少、 損失函數(shù)下降最快的特征值作為劃分點; 每一棵回歸樹學(xué)習(xí)的是之前所有樹的結(jié)論和殘差, 擬合得到一個當前的殘差回歸樹; 最后, 累加所有樹的結(jié)果作為最終結(jié)果。 GBDT 回歸樹生長過程如圖1所示。
圖1 GBDT 回歸樹生長過程
GBDT 回歸樹求取目標函數(shù)最優(yōu)解只對平方損失函數(shù)方便求得, 對于其他的損失函數(shù)變得很復(fù)雜。 以最小平方損失確定分裂節(jié)點的選取, 僅考慮了回歸樹各葉節(jié)點預(yù)測精度, 在追求高精度的同時易造成模型復(fù)雜度提升, 造成回歸樹的生長出現(xiàn)過擬合。
XGBoost 算法模型對GBDT 上述兩個不足進行改進。 XGBoost 算法增加了對樹模型復(fù)雜度的衡量, 在回歸樹生成過程分裂節(jié)點的選取考慮了損失和模型復(fù)雜度[3]兩個因素, 在權(quán)衡模型低損失高復(fù)雜和模型低復(fù)雜高損失后[4], 求取最優(yōu)解,防止一味追求降低損失函數(shù)產(chǎn)生過擬合現(xiàn)象, 且速度快, 準確性高[5], 是有效的集成學(xué)習(xí)算法[6]。XGBoost 回歸樹生長過程如圖2 所示。
圖2 XGBoost 回歸樹生長過程
通過推導(dǎo), 最終的目標函數(shù)可簡化為:
式中: T 為回歸樹葉子數(shù); Gj為所有數(shù)據(jù)在損失函數(shù)上的一階導(dǎo)數(shù); Hj為所有數(shù)據(jù)在損失函數(shù)上的二階導(dǎo)數(shù); γ 為葉節(jié)點個數(shù)代表的復(fù)雜度的懲罰系數(shù); λ 為葉節(jié)點權(quán)重代表的復(fù)雜度的懲罰系數(shù)。
可見, 目標函數(shù)只依賴于每個數(shù)據(jù)點在誤差函數(shù)上的一階導(dǎo)數(shù)和二階導(dǎo)數(shù), 通過二階泰勒展開式[7]的變換, 這樣求解其他損失函數(shù)變得可行。
XGBoost 目標函數(shù)根據(jù)研究的對象不同可進行自行定義, 具體可分為: 針對連續(xù)型研究變量,目標函數(shù)為線性回歸; 針對分類型研究變量, 目標函數(shù)可為邏輯回歸; 針對計數(shù)型研究變量, 目標函數(shù)為泊松回歸。
1.2.1 樣本及數(shù)據(jù)預(yù)處理
本文采用XGBoost 模型對用戶每月最大負荷進行預(yù)測, 選取浙江某地市大工業(yè)用戶近5 年月度最大負荷數(shù)據(jù)及影響負荷因素指標數(shù)據(jù)作為樣本進行訓(xùn)練建模。
由于負荷數(shù)據(jù)的獲取受設(shè)備和人為因素影響可能存在壞數(shù)據(jù)[8], 會影響模型的準確性, 故在建模前需識別和替換負荷異常數(shù)據(jù), 填補缺失數(shù)據(jù); 影響負荷因素指標可能受偶然環(huán)境因素的影響, 需進行識別、 替換、 剔除、 填補操作; 對相關(guān)影響指標與負荷間的關(guān)聯(lián)性進行分析, 與負荷間存在復(fù)雜的非線性關(guān)系指標, 需對指標進行轉(zhuǎn)換; 對分類型影響因素指標進行獨熱編碼處理。處理步驟如下:
(1)負荷數(shù)據(jù)異常識別、 替換: 按用戶采用3σ 法則, 對于超出該用戶歷史5 年月度最大負荷±3σ取值的用±3σ 替代。
(2)負荷數(shù)據(jù)、 相關(guān)影響指標缺失填補: 按用戶采用歷史同期值進行填補。
(3)相關(guān)影響指標受偶然環(huán)境因素作用走勢明顯異常填補: 分別按用戶采用歷史同期值替換。
(4)指標轉(zhuǎn)換: 結(jié)合指標散點圖和關(guān)聯(lián)分析顯著性檢驗, 研究影響指標與負荷間關(guān)系, 并對指標進行相應(yīng)轉(zhuǎn)換。
(5)分類指標處理: 對月份、 行業(yè)類別等分類變量進行獨熱編碼處理。
通過對模型指標數(shù)據(jù)的預(yù)處理, 填補缺失、替換異常、 尋找關(guān)聯(lián)挖掘指標間隱藏規(guī)律, 確保數(shù)據(jù)的完整性、 可用性、 有效性, 有利于提高模型準確性。
1.2.2 輸入輸出量的選擇
以浙江某地區(qū)大工業(yè)戶近5 年每月最大負荷數(shù)據(jù)為研究變量, 作為模型的輸出Y, 選擇關(guān)鍵指標進行建模是模型準確的保證[9]。 本文結(jié)合預(yù)處理結(jié)果, 選擇與月最大負荷關(guān)聯(lián)性較強的影響因素作為輸入變量X, 加入模型中。 具體的影響因素X, 分為以下幾類[10]:
(2)相關(guān)天氣指標: 預(yù)測月溫度、 濕度、 風(fēng)力、天氣類型等的同期、 上期、 預(yù)報的n 個天氣指標B={b1, b2, …, bn}。
(3)用戶基本信息指標: 預(yù)測月用戶當前的戶齡、 行業(yè)、 合同容量、 用電類別等p 個基本信息指標C={c1, c2, …, cp}。
(4)企業(yè)生產(chǎn)情況指標: 預(yù)測月用戶生產(chǎn)計劃、 產(chǎn)值、 注冊資本等q 個生產(chǎn)情況指標D={d1,d2, …, dq}。
(5)行業(yè)整體情況指標: 預(yù)測月反映行業(yè)景氣度的r 個行業(yè)指標E={e1, e2, …, er}。
(6)節(jié)假日指標F={ f1, f2, …, fs}: 預(yù)測月所含節(jié)假日天數(shù)、 是否春節(jié)等s 個節(jié)假日指標。
(7)獨熱編碼變量G={ g1, g2, …, gt}: 基于上述幾類變量中的分類變量產(chǎn)生的獨熱編碼變量, 如天氣指標中的天氣類型; 用戶基本信息指標中的行業(yè)類別、 用電類別等分類指標產(chǎn)生的t個獨熱編碼變量指標。
1.2.3 負荷預(yù)測的XGBoost 模型
在當前的高中語文課堂教學(xué)中還存在很多的問題,部分教師還是習(xí)慣于采用“灌輸式”“照本宣科”的教學(xué)方法來對待學(xué)生,導(dǎo)致課堂氛圍較為枯燥,學(xué)生只能夠通過“死記硬背”的形式來學(xué)習(xí)高中語文知識,根本無法發(fā)揮出語文學(xué)科的育人功能,而在網(wǎng)絡(luò)時代,高中語文教師可以利用多媒體技術(shù),把課本知識用圖片、聲音、視頻的形式展示出來,讓學(xué)生能夠全身心地投入到語文學(xué)習(xí)中去,加深對文章的理解與記憶,師生之間共同構(gòu)建高效、和諧的語文課堂。
將選入模型的影響負荷預(yù)測因素變量轉(zhuǎn)化為稀疏矩陣, 形成XGBoost 建模數(shù)據(jù); 將月最大負荷定義為XGBoost 模型輸出; 定義模型學(xué)習(xí)目標函數(shù)、 回歸樹生成參數(shù)等構(gòu)造負荷預(yù)測的XGBoost 模型[11]。 XGBoost 可根據(jù)研究任務(wù)來確定目標函數(shù)。 本文研究任務(wù)為預(yù)測月度最大負荷, 負荷值屬于連續(xù)屬性變量, 學(xué)習(xí)任務(wù)是對負荷進行回歸預(yù)測, 故可選擇線性模型作為目標函數(shù)。
XGBoost 回歸樹的最大深度、 學(xué)習(xí)率、 迭代次數(shù)等參數(shù)均會影響預(yù)測精度。 通過對XGBoost 各參數(shù)進行交叉驗證測試, 調(diào)整優(yōu)化模型參數(shù)[12],得到模型精度最高的參數(shù)組合。
獲取實例數(shù)據(jù), 分別采用傳統(tǒng)神經(jīng)網(wǎng)絡(luò)、 支持向量機和XGBoost 3 類算法[13]進行模型效果測試, 通過對比分析, 對XGBoost 模型可行性進行驗證。
結(jié)合交叉驗證方法進行模型指標篩選和模型效果評估, 其中80%的樣本數(shù)據(jù)為測試集, 20%的樣本數(shù)據(jù)為驗證集。 為保證3 類算法具有可比性, 每種機器學(xué)習(xí)算法都采用相同的訓(xùn)練集和測試集。 采用MAPE(平均絕對百分比誤差)、 RMSE(均方根誤差)和R2(R 平方值)3 種方法綜合評估模型性能[14]。
其中, MAPE 反映模型預(yù)測準確性, 其值越小, 代表模型預(yù)測準確性越高; RMSE 反映模型的平均誤差情況, 其值越小, 代表誤差越?。?R2反映模型擬合效果, 其值越大, 代表這個模型對數(shù)據(jù)擬合越好。
式中: yi為歷史月最大負荷實際值;為模型預(yù)測值;為最大負荷平均值; n 為驗證集合數(shù)據(jù)樣本個數(shù)。
本文使用數(shù)據(jù)為浙江某地區(qū)部分大工業(yè)用戶近5 年每月最大負荷及其相關(guān)影響因素指標數(shù)據(jù), 表1 為2018 年7 月部分用戶實際月最大負荷數(shù)據(jù)。
表1 部分用戶2018 年7 月最大負荷數(shù)據(jù)
對用戶近5 年月最大負荷數(shù)據(jù)開展建模測試, 抽取前4 年歷史數(shù)據(jù)樣本作為訓(xùn)練集, 最近1 年數(shù)據(jù)樣本作為測試集, 結(jié)合上述數(shù)據(jù)預(yù)處理和變量選取規(guī)則, 采取指標關(guān)聯(lián)分析、 指標變換、 因子降維等多種方法進行指標篩選[15](如圖3 所示)。 經(jīng)過模型多次迭代測試后, 保留預(yù)測誤差最小的指標體系。
圖3 指標篩選流程
針對本文使用的浙江某地區(qū)部分大工業(yè)用戶近5 年每月最大負荷及其相關(guān)影響因素指標數(shù)據(jù), 采用XGBoost 算法, 以Gain(信息增益)指標對變量重要性進行排序, 其中重要性前十的變量如圖4 所示。
圖4 按變量重要性排序
2.2.1 支持向量機模型負荷預(yù)測
針對本實例數(shù)據(jù), 使用徑向機核函數(shù)將原始特征映射到高維線性空間, 尋找變量間線性關(guān)系(見圖5)。
圖5 函數(shù)尋找高維線性空間
經(jīng)測試知設(shè)置懲罰因子Cost 為1 000, 決定數(shù)據(jù)映射到新特征空間分布的Gamma 為0.000 1時模型預(yù)測效果最佳,在測試集上MAPE=18.78%,RMSE=177.43, R2=0.988。
2.2.2 神經(jīng)網(wǎng)絡(luò)模型負荷預(yù)測
針對本實例數(shù)據(jù), 設(shè)置神經(jīng)網(wǎng)絡(luò)隱藏層包含10 個神經(jīng)元, 選取Sigmoid 為激活函數(shù)(見圖6)。 函數(shù)表達式為:
式中: w 為每個輸入的權(quán)重集合; b 為所有輸入的偏置; x 為輸入集合。
通過該激活函數(shù)轉(zhuǎn)化, 將輸入實數(shù)壓縮到0~1 區(qū)間。 通過多次測試, 最終權(quán)值衰減為0.01, 最大迭代次數(shù)為1 000 時, 模型預(yù)測效果最佳, 在測試集上,MAPE=14.37%,RMSE=190.21,R2=0.986。
圖6 Sigmoid 函數(shù)
2.2.3 XGBoost 模型負荷預(yù)測
針對本實例數(shù)據(jù), 采用XGBoost 模型進行預(yù)測時, 根據(jù)研究對象, 定義目標函數(shù)為線性回歸。
通過交叉驗證, 最大深度為7, 學(xué)習(xí)率為0.3,迭代次數(shù)為60 時模型預(yù)測效果最佳。 在測試集上, MAPE=4.5%, RMSE=78.26, R2=0.998。 其交叉迭代誤差如圖7 所示。 3 種機器學(xué)習(xí)算法預(yù)測結(jié)果對比情況見表2。
圖7 交叉驗證迭代的RMSE
表2 3 類算法模型預(yù)測結(jié)果比較
由表2 的輸出結(jié)果可知, XGBoost 輸出的模型性能評估指標相比于支持向量機模型輸出的變化分別是:MAPE 降低14.28%,RMSE 降低99.17,R2提升0.01; 相比于神經(jīng)輸出的變化分別是:MAPE 降低9.87%, RMSE 降低111.95, R2提 升0.012。
相比于支持向量機模型和神經(jīng)網(wǎng)絡(luò)模型,XGBoost 模型的預(yù)測準確性高、 模型平均誤差小、模型數(shù)據(jù)擬合效果好。
綜上所述, XGBoost 模型預(yù)測效果最佳, 故保留XGBoost 算法對該地市大工業(yè)用戶用電負荷進行預(yù)測。
以某氣體有限公司(用戶1)為例, 該用戶合同容量6 060 kVA, 行業(yè)類別為化工業(yè), 2018 年1—7 月的月度最大負荷實際值與預(yù)測值偏差情況如圖8 所示, 相對誤差最大值為2.3%。
圖8 2018 年用戶1 最大負荷預(yù)測值與實際值偏差率
以某化工有限公司(用戶9)為例, 該用戶合同容量10 000 kVA, 行業(yè)類別為化工業(yè), 2018年1—7 月的月度最大負荷實際值與預(yù)測值偏差情況如圖9 所示, 相對誤差最大值為1.8%。
圖9 2018 年用戶9 最大負荷預(yù)測值與實際值偏差率
隨著電力市場化改革和發(fā)展, 大工業(yè)用戶作為電力高價值客戶, 其用電負荷變化越來越受到售電公司的重視, 企業(yè)級負荷預(yù)測的重要性日趨顯著, 并且對預(yù)測的精準度要求也越來越高。 本文基于XGBoost 算法, 對比傳統(tǒng)神經(jīng)網(wǎng)絡(luò)、 支持向量機算法模型, 對浙江某地市化工行業(yè)近5 年月度負荷數(shù)據(jù)進行建模和預(yù)測, 結(jié)果顯示, 采用XGBoost 模型MAPE 控制在5%以內(nèi), 對預(yù)測單個企業(yè)未來一個月的最大負荷數(shù)據(jù)效果較好。 本方法對幫助企業(yè)優(yōu)化用電方式, 降低用電成本有一定的指導(dǎo)和借鑒意義。