劉 瑾,趙 晶,馮瑛敏,周 超,姜美君,章 輝
(1.國網(wǎng)天津電力經(jīng)濟(jì)技術(shù)研究院,天津 300171;2.南開大學(xué),天津市光電傳感器與傳感網(wǎng)絡(luò)技術(shù)重點(diǎn)實(shí)驗(yàn)室 天津 300350)
電力物聯(lián)網(wǎng)日益受到全球技術(shù)人員的關(guān)注,是電力領(lǐng)域人與人、人與物和物與物的連接網(wǎng)絡(luò),延伸和擴(kuò)展了信息交換的用戶端[1]。作為電力物聯(lián)網(wǎng)的一項(xiàng)重要應(yīng)用,監(jiān)控系統(tǒng)在電力生產(chǎn)實(shí)踐中占據(jù)了越來越重要的地位[2],傳統(tǒng)電力監(jiān)控系統(tǒng)存在的問題通常集中于可連接的監(jiān)測點(diǎn)數(shù)量少、監(jiān)測數(shù)據(jù)類型單一、缺乏數(shù)據(jù)處理功能和不具備及時預(yù)警功能等[3]。
隨著萬物互聯(lián)時代的到來,未來電力物聯(lián)網(wǎng)的數(shù)據(jù)傳輸量將會出現(xiàn)井噴式增長[4],電力物聯(lián)網(wǎng)監(jiān)控系統(tǒng)的監(jiān)測點(diǎn)規(guī)?;⒍嗑S化、智能化的需求越來越迫切。電力物聯(lián)網(wǎng)為了實(shí)現(xiàn)泛在物聯(lián),具有連接節(jié)點(diǎn)數(shù)量多、監(jiān)測點(diǎn)分布廣和采集的數(shù)據(jù)類型多的特點(diǎn)[5]。如何實(shí)現(xiàn)海量傳感器監(jiān)測數(shù)據(jù)的預(yù)測功能是未來解決電力物聯(lián)網(wǎng)部署的關(guān)鍵性問題[6-7]。由于配電網(wǎng)拓?fù)浣Y(jié)構(gòu)及運(yùn)行環(huán)境復(fù)雜,部件種類繁多,容易受到設(shè)備故障、惡劣環(huán)境等因素的影響[8]。如何及時預(yù)測超負(fù)荷用電并制定有效的用電方案,指引企業(yè)合理調(diào)整用電負(fù)荷,保護(hù)用戶安全用電、提升電網(wǎng)穩(wěn)定性和安全性,是當(dāng)前智能電網(wǎng)用電研究的重點(diǎn)[9-11]。
本文提出了一種基于極致梯度提升樹和輕量梯度提升機(jī)(XGBoost-LightGBM)的交叉用電負(fù)荷預(yù)測方案,能夠?qū)崿F(xiàn)在線臺區(qū)用電分析,實(shí)時預(yù)測未來時刻臺區(qū)用電情況,當(dāng)臺區(qū)即將發(fā)生超負(fù)荷用電或者當(dāng)前臺區(qū)發(fā)生大規(guī)模停電時,提前向指揮平臺發(fā)出預(yù)警,為用電的優(yōu)化調(diào)度提供支持,提高電網(wǎng)運(yùn)行可靠性。
梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)是一類機(jī)器學(xué)習(xí)算法,其在預(yù)測和分類問題上的良好性能受到工業(yè)界的關(guān)注[12-15]。該算法由多棵決策樹組成,利用損失函數(shù)的負(fù)梯度在當(dāng)前模型的值作為提升樹中殘差的近似值來擬合回歸決策樹[16]。GBDT 算法的一般步驟為:
1)輸入n個訓(xùn)練樣本X,并設(shè)置相關(guān)參數(shù),迭代次數(shù)為N,F(xiàn)為所有樹組成的函數(shù)空間,fk為單決策樹模型,初始值f0=0,GBDT 算法表達(dá)式為:
式中:xi為第i個樣本的特征向量;K為弱回歸樹的數(shù)量;fk(xi)為第k棵弱回歸樹的輸出值;為第i個樣本的最終預(yù)測值。
2)定義GBDT 算法的目標(biāo)函數(shù)為:
式中:Ω 為決策樹的復(fù)雜程度;n為樣本總數(shù);l為損失函數(shù);yi為第i個樣本的真值。
復(fù)雜度由正則項(xiàng)定義:
式中:T為葉子的節(jié)點(diǎn)數(shù);wj為葉子節(jié)點(diǎn)對應(yīng)的向量值;κ為樹的葉節(jié)點(diǎn)分裂所需的最小損失減小量;λ為懲罰項(xiàng)系數(shù)。
3)根據(jù)GBDT 算法的加法結(jié)構(gòu),
式中:Gi=∑gi,Hi=∑hi,gi和hi分別為損失函數(shù)的一階和二階導(dǎo)數(shù)。
令Objt的一階導(dǎo)數(shù)為0,可求得葉子節(jié)點(diǎn)的最優(yōu)值
此時的目標(biāo)函數(shù)值為:
4)通過貪心策略生成新的決策樹,使目標(biāo)函數(shù)值最小,并求得葉子節(jié)點(diǎn)對應(yīng)最優(yōu)預(yù)測值,將新生成的決策樹ft(x)添加到模型中,可得:
5)不斷迭代,直到N次迭代結(jié)束,輸出由N個決策樹構(gòu)成的GBDT 算法。
GBDT 算法有較多的有效實(shí)現(xiàn),如XGBoost 算法和LightGBM 算法,均屬于GBDT 的集成學(xué)習(xí)算法[17]。
XGBoost 是基于GBDT 的改進(jìn)算法,使用多線程并行性改進(jìn)算法以提高準(zhǔn)確性,適用于分類和回歸問題[18-20]。XGBoost 的基本原理與GBDT 相同,區(qū)別在于GBDT 使用損失函數(shù)的一階導(dǎo)數(shù),而XGBoost 使用一階和二階導(dǎo)數(shù)執(zhí)行損失函數(shù)的二階泰勒展開。
XGBoost 算法的損失函數(shù)為:
式中:y為當(dāng)前樣本x對應(yīng)的真值;f(x)為樣本x的預(yù)測值;l(y,f(x))為損失函數(shù);fm為第m棵分類樹模型;Ω(fm)為正則化項(xiàng),用來反映算法的復(fù)雜程度;φ為需要求解的模型參數(shù)。
使用泰勒展開式來逼近函數(shù)fm(xi),式(10)變換為式(11),其中:
目標(biāo)函數(shù)中的正則化項(xiàng)為:
式中:γ為在樹的葉節(jié)點(diǎn)進(jìn)一步分裂所需的最小損失減小量,表征每一個葉子的復(fù)雜程度;w為葉子節(jié)點(diǎn)的值。
LightGBM 算法是一種改進(jìn)的梯度提升決策樹框架[21-23]。它的基本思想是通過M棵弱回歸樹線性組合為強(qiáng)回歸樹,如式(15)所示:
式中:F(x)為最終的輸出值;fm(x)為第m棵弱回歸樹的輸出值。
LightGBM 算法的主要改進(jìn)包括直方圖算法和帶深度限制的葉子生長(Leaf-wise)策略。直方圖算法將連續(xù)數(shù)據(jù)離散劃分為P個整數(shù),并構(gòu)造一個寬度為P個數(shù)的直方圖。遍歷時將離散化的值作為索引在直方圖中累積,進(jìn)而搜索出最優(yōu)的決策樹分割點(diǎn)。在LightGBM 中,葉節(jié)點(diǎn)的直方圖可直接從父節(jié)點(diǎn)的直方圖和兄弟節(jié)點(diǎn)的直方圖獲得,該策略加快了算法的計(jì)算速度。
帶深度限制的Leaf-wise 策略是指在每次分裂時,找到最大增益的葉子進(jìn)行分裂并循環(huán)下去。通過樹的深度以及葉子數(shù)限制,減小模型的復(fù)雜度,防止出現(xiàn)過擬合。LightGBM 的Leaf-wise 每次從當(dāng)前葉子中找到具有最大分割增益的葉子,然后進(jìn)行分割,依此類推。因此Leaf-wise 可減少錯誤,并在相同數(shù)量的分割時獲得更好的準(zhǔn)確性。Leaf-wise的缺點(diǎn)是可能會產(chǎn)生較深的決策樹,從而導(dǎo)致過擬合。因此,LightGBM 在Leaf-wise 之上增加了最大深度限制,以防止過擬合并確保高效率。
通過直方圖算法和帶深度限制的葉子生長策略,LightGBM 算法減少了內(nèi)存的占用,訓(xùn)練時間僅為XGBoost 的1/10,并且準(zhǔn)確率有所提升,適合處理用電負(fù)荷預(yù)測這類數(shù)據(jù)量較大的問題。
在LightGBM 算法和XGBoost 算法的基礎(chǔ)上,本文提出了一種基于XGBoost 和LightGBM 交叉的方案,算法交叉融合過程如圖1,分別用LightGBM和XGBoost 對初始輸入特征進(jìn)行五折交叉驗(yàn)證,同時將驗(yàn)證過程中計(jì)算的驗(yàn)證集結(jié)果保留,當(dāng)作下一輪的輸入特征??紤]到2 種算法的決策樹生長策略不同,將XGBoost 得到的特征n+1 放入LightGBM中重新訓(xùn)練,然后LightGBM 得到的特征n+2 放入XGBoost 中重新訓(xùn)練。最后將重新計(jì)算后得出得結(jié)果進(jìn)行加權(quán)融合。
圖1 XGBoost和LightGBM交叉過程Fig.1 Model fusion process between XGBoost&LightGBM
如圖1 所示,通過XGBoost 和LightGBM 特征的有序交叉,可有效融合二者決策樹的生長優(yōu)勢。XGBoost 和LightGBM 主要不同點(diǎn)在于決策樹的生長策略。XGBoost 采用的是帶深度限制的levelwise 生長策略。level-wise 能夠同時分裂同一層的葉子,可以進(jìn)行多線程優(yōu)化,且不容易過擬合。但不加區(qū)分地對待同一層葉子,會帶來很多不必要的算力開銷,很多葉子的分裂增益較低,沒必要進(jìn)行搜索和分裂。LightGBM 采用leaf-wise 生長策略,每次從當(dāng)前所有葉子中找到分裂增益最大的一個葉子,進(jìn)行分裂,如此循環(huán),但會生長出比較深的決策樹,產(chǎn)生過擬合。本文提出將XGBoost 和LightGBM 特征進(jìn)行有序交叉,既在分裂部分同一層的葉子,又分裂部分增益大的葉子,限制了葉子的深度,可有效規(guī)避XGBoost 的算法效率問題和LightGBM 的過擬合問題。
為了獲得更準(zhǔn)確的估計(jì),使用交叉驗(yàn)證來訓(xùn)練和測試數(shù)據(jù)集的每個子集中的模型,原始樣本被隨機(jī)分為a個大小相等的子集。對于a個子集,將單個子集作為驗(yàn)證數(shù)據(jù)以測試模型,其余(a-1)個子集用作訓(xùn)練數(shù)據(jù)。然后,將交叉驗(yàn)證過程重復(fù)a次,每個子集都恰好使用一次作為驗(yàn)證數(shù)據(jù)。
在本文中,將數(shù)據(jù)集隨機(jī)分為5 個大小相等的獨(dú)立子集。如圖2 在驗(yàn)證的每個步驟中,保留1 個子集(數(shù)據(jù)集的20%)作為驗(yàn)證數(shù)據(jù)集,以測試所提出方法的性能,而其余4 個子集(數(shù)據(jù)集的80%)用作訓(xùn)練數(shù)據(jù)集。重復(fù)上述過程五次,直到使用了每個子集,并計(jì)算5 個測試子集的平均值,最終結(jié)果是該算法在5 次交叉驗(yàn)證中的總體性能。將該驗(yàn)證過程中計(jì)算的驗(yàn)證集結(jié)果予以保留,作為下一輪的輸入特征。
圖2 交叉驗(yàn)證過程Fig.2 Cross-validation process
均方根誤差通常用來衡量觀測值與真值之間的偏差,因此在工程測量中廣泛采用[24]。為了評價算法的優(yōu)劣,本文采用均方根誤差(Root Mean Square Error,RMSE)作為評判標(biāo)準(zhǔn),其值ERMS通常為:
式中:N為測試樣本總數(shù);f(zi)為算法輸出的第i個時刻預(yù)測值。
圖3 為基于XGBoost-LightGBM 交叉的用電預(yù)測流程圖,通過獲取臺區(qū)用戶的用電量數(shù)據(jù),并對異常缺失數(shù)據(jù)和多個數(shù)據(jù)集進(jìn)行預(yù)處理,然后進(jìn)行算法迭代,算法流程如下:
圖3 用電監(jiān)控預(yù)警流程Fig.3 Power distribution monitoring and alarm process
1)從智能融合終端存儲數(shù)據(jù)庫里獲取用戶歷史用電情況和實(shí)時用電情況(每30 min 采樣獲取1次實(shí)時用電數(shù)據(jù))作為輸入上傳至機(jī)器學(xué)習(xí)算法模塊中,并進(jìn)行數(shù)據(jù)篩選后得到訓(xùn)練樣本TrainData 和測試樣本TestData。后續(xù)可根據(jù)TestData 與預(yù)測結(jié)果的殘差分析進(jìn)行預(yù)測精度的評估。
2)對TrainData 和TestData 進(jìn)行時序特征構(gòu)造。
3)將TrainData 分割為訓(xùn)練集Train 和驗(yàn)證集Val。
4)使用LightGBM 預(yù)測Val,并通過網(wǎng)格搜索法尋找最優(yōu)參數(shù)組合,保存最優(yōu)模型LightGBM_1。
5)使用XGBoost 預(yù)測Val,并通過網(wǎng)格搜索法尋找最優(yōu)參數(shù)組合,保存最優(yōu)模型XGBoost_1。
6)將TestData 輸入到XGBoost_1 模型和LightGBM_1 模型分別進(jìn)行5 折交叉驗(yàn)證,得到輸出結(jié)果特征n1和特征n2。
7)將特征n1合并到TrainData 最后一列,得到TrainData_1。使用TrainData_1 作為新的訓(xùn)練集,重復(fù)步驟(4),得到最優(yōu)模型LightGBM_2。
8)將特征n2合并到TrainData 最后一列,得到TrainData_2。使用TrainData_2 作為新的訓(xùn)練集,重復(fù)步驟(5),得到最優(yōu)模型XGBoost_2。
9)將TestData 和特征n1輸入進(jìn)LightGBM_2 模型,TestData 和特征n2輸入進(jìn)XGBoost_2 模型,分別進(jìn)行5 折交叉驗(yàn)證,得到輸出結(jié)果result_1 和輸出結(jié)果result_2。
10)將result_1 和result_2 按照1:1 的比例融合,得到最終結(jié)果result(result 表示的是未來時刻用戶的用電量),輸出為未來時刻用電量的預(yù)測結(jié)果。
若預(yù)測結(jié)果不在正常配電范圍內(nèi)則發(fā)出預(yù)警信息,當(dāng)用電量大于正常配電范圍最大值,則發(fā)出即將超負(fù)荷用電報(bào)警信息;當(dāng)用電量小于正常配電范圍最小值,則發(fā)出即將大規(guī)模停電報(bào)警信息。
本文使用的數(shù)據(jù)記錄了某區(qū)域某年1 月至12月的用電量,其中用電量每半個小時采集1 次,數(shù)據(jù)如表1 所示。
表1 初始數(shù)據(jù)Table 1 Initial data kWh
首先是預(yù)處理這些數(shù)據(jù),主要執(zhí)行數(shù)據(jù)清理和缺失值處理。數(shù)據(jù)清理主要是去除噪聲數(shù)據(jù),缺失值處理主要是填充缺失數(shù)據(jù)。
4.1.1 數(shù)據(jù)清理
首先,去除一些異常數(shù)據(jù),例如用電量低,用電量突變,遠(yuǎn)離平均值的數(shù)據(jù)。這些數(shù)據(jù)屬于異常情況的數(shù)據(jù),例如傳感器采集錯誤、線路故障等,因此將其刪除。
4.1.2 缺失值處理
由于設(shè)備,線路或數(shù)據(jù)本身之類的問題,數(shù)據(jù)中可能存在大量缺失值。這將使算法預(yù)測不準(zhǔn)確。因此,缺失值必須得到補(bǔ)充。這里使用的補(bǔ)充方法是:如果某些部分嚴(yán)重缺少數(shù)據(jù)并且丟失值的比例在一天中超過50%,則直接丟棄一整天的數(shù)據(jù);如果某些部分中缺失少量的值,并且一天數(shù)據(jù)相對完整,則將其使用平均值進(jìn)行填充。
隨后是基于數(shù)據(jù)集的分析,探索各種因素對用電負(fù)荷的影響,選擇合適的向量構(gòu)造特征。本文使用距離分析方法中的皮爾遜相關(guān)性來估算社區(qū)用電數(shù)據(jù)與其他數(shù)據(jù)之間的相關(guān)性。式(17)是計(jì)算2個維向量x和y中的Pearson 相關(guān)系數(shù)的公式[25]:
式中:xb和yb分別為向量x和向量y在位置b上的值;和分別為向量x和向量y中所有值的平均值。
皮爾遜相關(guān)系數(shù)Rxy是一個介于[-1,1]之間的實(shí)數(shù)。Rxy>0 則這2 個變量是正相關(guān)的,否則它們是負(fù)相關(guān)的。較大的 |Rxy|表明x和y之間的相關(guān)性越高。部分特征的皮爾遜相關(guān)系數(shù)如表2 所示。表2 中P為當(dāng)前時段用電量,其中P為當(dāng)前時段的用電量,Second,Minute 和Hour 分別為當(dāng)前時段的秒、分和時的時間特征,LP為上一時段采集的電量信息,LPD為當(dāng)前時段與上一時段用電量的差值。
表2 皮爾遜相關(guān)系數(shù)Table 2 Pearson correlation coefficient
由表2 中可知用電量P與上一時段用電量LP呈強(qiáng)相關(guān)性,因此我們對LP進(jìn)行下一步特征構(gòu)造。
接著對原始變量進(jìn)行特征構(gòu)造,選擇合適的輸入特征變量對模型預(yù)測結(jié)果的優(yōu)劣有極大的影響,根據(jù)特征之間的相關(guān)性,本文選取臺區(qū)前幾個時刻的時段用電量構(gòu)造滑動窗口特征,包括前10 個時段的用電量、10 個時段用電量的統(tǒng)計(jì)數(shù)據(jù)(最大值,最小值,標(biāo)準(zhǔn)差,中位數(shù))以及后9 個時段與第一個時段的用電量差值dc,差值dc為:
式中:pc為第c個時段的用電量;p1為第1 個時段的用電量;Z為選取的時段總數(shù)。
LightGBM 和XGBoost 都包括多個參數(shù),稱之為超參數(shù)。超參數(shù)對LightGBM 和XGBoost 算法的性能有重大影響。它們通常是手動設(shè)置的,然后在連續(xù)的反復(fù)試驗(yàn)過程中進(jìn)行調(diào)整。在算法參數(shù)設(shè)置中,本文使用網(wǎng)格搜索的方法,即設(shè)置特定參數(shù)的范圍和參數(shù)搜索的步長,連續(xù)迭代,并根據(jù)分?jǐn)?shù)獲得最佳結(jié)果。使用網(wǎng)格搜索法以調(diào)整LightGBM 和XGBoost 算法的超參數(shù),調(diào)整的超參數(shù)包括:num_leaves(每棵樹的葉子數(shù))、max_depth(樹的最大深度)、n_estimators(樹的棵數(shù))和learning_rate(學(xué)習(xí)率),其余參數(shù)均使用默認(rèn)參數(shù)。表3 顯示了訓(xùn)練過程中算法的參數(shù)設(shè)置,均為無量綱參數(shù)。表3 中的斜杠表示無此參數(shù)。
表3 算法參數(shù)Table 3 Model parameters
為了驗(yàn)證算法的精度,分別使用XGBoost、LightGBM,傳統(tǒng)隨機(jī)森林(RandomForest)以 及XGBoost-LightGBM 交叉算法來預(yù)測臺區(qū)用電量。為了體現(xiàn)算法的公平性,本文算法模型和對比算法模型均已經(jīng)過調(diào)參,達(dá)到了最優(yōu)效果。圖4 是4 種算法的仿真對比結(jié)果,展示了4 種算法擬合10 月20 日這一天的用電情況。由圖4 中可以看出4 種算法的用電量都與真值變化趨勢一致,具有較高的準(zhǔn)確性,說明構(gòu)造的特征對算法有較大增益。
圖4 算法用電量預(yù)測結(jié)果Fig.4 Power consumption prediction results with different algorithms
圖5 是4 種算法預(yù)測結(jié)果與10 月20 日這一天的用電量絕對誤差對比結(jié)果,由圖5 中可看出,RandomForest 算法與XGBoost 算法、LightGBM 算法以及本文提出的交叉算法相比誤差更大,說明本文提出的算法較傳統(tǒng)算法有較大提升。
圖5 算法預(yù)測結(jié)果絕對誤差分析Fig.5 Absolute error analysis of prediction results with different algorithms
為了驗(yàn)證算法的交叉次數(shù)是否最優(yōu),本文將不同交叉次數(shù)對結(jié)果的影響進(jìn)行了對比驗(yàn)證,結(jié)果如圖6 所示。從圖6 中可見,交叉次數(shù)的增加并不會提升模型的精度,這是因?yàn)槊恳淮谓徊娴慕Y(jié)果都存在一個額外的誤差,多次交叉會出現(xiàn)誤差累積,影響預(yù)測精度。基于上述分析,為了避免誤差積累,本文對算法進(jìn)行1 次交叉。
圖6 算法交叉次數(shù)累計(jì)絕對誤差分析Fig.6 Analysis of cumulative absolute error of algorithm crossover times
表4 計(jì)算了4 種算法在10 月19 日16∶00 到11 月9 日11∶30 共1 000 個時間點(diǎn)的均方根誤差。由表4 中可以得出,本文提出的XGBoost-LightGBM交叉算法優(yōu)于LightGBM 和XGBoost 的單一算法,同時較傳統(tǒng)隨機(jī)森林算法有較大的提升。
表4 算法結(jié)果比較Table 4 Algorithm result comparison
圖7 是本文提出的交叉算法預(yù)測出的臺區(qū)用電量與實(shí)際用電量的比較,由圖7 中可以看出本文提出的算法具有較高的準(zhǔn)確性。并且當(dāng)用電量高于臺區(qū)超負(fù)荷用電閾值時,將會自動上報(bào)系統(tǒng)為用電的優(yōu)化調(diào)度提供支持,從而提高電網(wǎng)運(yùn)行可靠性。
圖7 用電量仿真結(jié)果Fig.7 Electricity consumption simulation results
本文提出了一種基于XGBoost-LightGBM 交叉算法的用電預(yù)測方案。經(jīng)實(shí)際外場實(shí)驗(yàn)表明,本文提出的用電負(fù)荷預(yù)測算法魯棒性好,準(zhǔn)確性高,相較于傳統(tǒng)算法和XGBoost、LightGBM 等單一算法有更高的準(zhǔn)確性,在發(fā)生超負(fù)荷用電或者當(dāng)前臺區(qū)發(fā)生大規(guī)模停電時,能夠及時發(fā)出預(yù)警,具有較強(qiáng)的實(shí)用性。