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