陳思勤,胡 濤,沈玉華,曹 陽,李 婧
(1.華能國際電力股份有限公司 上海石洞第二電廠,上海 200942; 2. 上海電力大學(xué) 自動化工程學(xué)院,上海 200090)
隨著經(jīng)濟(jì)的快速增長,電力需求明顯增大〔1〕。我國的能源結(jié)構(gòu)決定了火力發(fā)電仍然是最主要的發(fā)電方式〔2〕。由于國家大力發(fā)展綠色經(jīng)濟(jì),開始實施“發(fā)控結(jié)合”政策,要求電廠控制耗煤量的同時保證發(fā)電計劃按時完成。但是發(fā)電計劃往往存在滯后性,不能及時為電廠提供參考,所以火電廠發(fā)電量預(yù)測逐漸成為研究熱點之一。
火電廠發(fā)電量預(yù)測大致可以分為長期(年度)、中期(月度)、短期(日度)和超短期(時分)預(yù)測〔3〕。近些年來,很多學(xué)者嘗試對火電廠發(fā)電量數(shù)據(jù)進(jìn)行深入研究。文獻(xiàn)〔1〕根據(jù)傳統(tǒng)發(fā)電模式對月度發(fā)電計劃采用平均分配的方法計算,一定程度上兼顧節(jié)能與經(jīng)濟(jì)效益〔4〕。文獻(xiàn)〔2〕將極限學(xué)習(xí)機(jī)算法和遞歸預(yù)測相結(jié)合,建立火電企業(yè)短期日發(fā)電量預(yù)測模型,提高了預(yù)測精度和泛化能力〔5〕。文獻(xiàn)〔3〕采用具有動態(tài)平滑系數(shù)和參數(shù)的動態(tài)三次指數(shù)平滑法對火電廠月發(fā)電量進(jìn)行預(yù)測,證明該模型具有良好的精度和較高的實用性〔6〕。雖然已經(jīng)取得一定成果,但是仍然存在發(fā)電量數(shù)據(jù)影響因素難以分析、時間序列算法參數(shù)難以設(shè)置和預(yù)測周期短等問題,導(dǎo)致真正適用于火電廠發(fā)電量預(yù)測的方法較少。
針對上海某火電廠實際發(fā)電量數(shù)據(jù)進(jìn)行深入分析與研究,首先對原始數(shù)據(jù)中異常值、缺失值和非數(shù)值型值做數(shù)據(jù)預(yù)處理工作;再考慮影響發(fā)電量的因素,并利用最大互信息系數(shù)(MIC)特征選擇方法篩選影響因素〔7〕;最后采用極端梯度上升(XGBoost)算法建立火電廠發(fā)電量預(yù)測模型,得到了較高的精度,為火電廠安排月度檢修計劃、運行方式和發(fā)電計劃等提供了參考意義。
隨著大數(shù)據(jù)時代的到來,各行各業(yè)的數(shù)據(jù)量劇增,相應(yīng)的數(shù)據(jù)維度也明顯增加。在實際生產(chǎn)過程中,數(shù)據(jù)是雜亂無章的,往往不能直接進(jìn)行分析,數(shù)據(jù)預(yù)處理工作變得尤為重要。數(shù)據(jù)預(yù)處理工作包括:數(shù)據(jù)收集、異常值處理、數(shù)據(jù)類型轉(zhuǎn)換等〔8〕。
收集上海某火電廠數(shù)據(jù)庫中與發(fā)電量相關(guān)的歷史數(shù)據(jù),對數(shù)據(jù)中存在的較多空缺值、負(fù)值、無效值和重復(fù)值進(jìn)行清洗。其中,空缺值填補為0,負(fù)值替換為平均值,無效值和重復(fù)值直接剔除,不僅減少了異常數(shù)據(jù)對特征選擇的影響,還保證了數(shù)據(jù)的完整性和全面性。數(shù)據(jù)類型眾多,有連續(xù)型、離散型、數(shù)值型、定序型等,需要通過重新編碼的方式將數(shù)據(jù)類型統(tǒng)一為數(shù)值型。
最大互信息系數(shù)(MIC)最早由Reshef等人于2011年提出〔9〕,用來解決兩個線性或非線性變量之間的關(guān)聯(lián)程度,受異常值影響較小,并有較低的復(fù)雜度和較高的魯棒性,被其他研究者廣泛使用于機(jī)器學(xué)習(xí)的特征選擇當(dāng)中。
給定某一自變量X={x1,x2,x3,…,xn}和因變量Y={y1,y2,y3,…,yn},n為樣本數(shù)量,則X和Y兩個變量之間的互信息定義為〔10〕:
(1)
式中:p(x,y)代表X和Y的聯(lián)合概率密度函數(shù);p(x),p(y)分別為X和Y的邊緣概率密度函數(shù)。
將兩種變量X和Y組成一個按順序排列的集合Q={xi,yi},i=1,2,3,…,n,定義一個將自變量X劃分為a段,將因變量Y劃分為b段的網(wǎng)格S,通過統(tǒng)計落在網(wǎng)格中散點的頻率計算出p(x,y),p(x),p(y),在網(wǎng)格內(nèi)部計算得到互信息I(X,Y)。由于網(wǎng)格劃分的方式不唯一,所以需要選取互信息值最大的網(wǎng)格(a×b)劃分方式〔11〕。劃分網(wǎng)格S下Q的最大互信息值為〔12〕:
MI(Q,a,b)=maxI(X,Y)
(2)
將互信息值進(jìn)行歸一化組成特征矩陣M(Q)a,b:
(3)
最大互信息系數(shù)的計算公式為:
MIC(Q)=maxab
(4)
式中:B(n)為網(wǎng)格劃分(a×b)的上限值,一般給出B(n)=n0.6。
電廠給定一個多變量數(shù)據(jù)集L={l1,l2,l3,…,lm,k},m為特征變量個數(shù),k為目標(biāo)變量,可以用MIC(li,k)計算得到特征變量與目標(biāo)變量之間的相關(guān)性,MIC(li,k)越大說明兩者相關(guān)性越強(qiáng),MIC(li,k)越小說明兩者相關(guān)性越弱,MIC(li,k)等于0說明兩者不相關(guān)。也可以用MIC(li,lj)計算得到兩個特征變量之間共線性,當(dāng)MIC(li,lj)很大時,選擇其中任意變量作為特征變量均可〔13〕。
極端梯度提升(XGBoost)是Tianqi Chen等人于2016年提出的一個分布式梯度增強(qiáng)庫〔14〕,是機(jī)器學(xué)習(xí)領(lǐng)域最近幾年比較火熱的一種十分強(qiáng)大的集成學(xué)習(xí)方法。XGBoost是梯度提升決策樹(GBDT)的高效實現(xiàn),是加法模型和前向優(yōu)化算法,能夠自動利用CPU的多線程進(jìn)行并行計算,同時在算法上加以改進(jìn)提高了精度和模型的泛化能力,防止模型過擬合。
給定樣本個數(shù)為n,樣本特征數(shù)為m的一組數(shù)據(jù)集D:D=(xi,yi)(|D|=n,xi∈Rm,yi∈R)。
XGBoost利用前向分布算法,學(xué)習(xí)后的加法模型為:
(5)
定義目標(biāo)函數(shù)和正則化項:
(6)
(7)
式中:T表示決策樹的葉子節(jié)點個數(shù);ω表示每棵決策樹的葉子節(jié)點輸出分?jǐn)?shù);γ和λ為決策樹葉子的懲罰系數(shù)。
XGBoost是前向分布算法,通過貪心算法迭代尋找局部最優(yōu)解:
(8)
式中:ft(xi)為本次迭代的決策樹。
每一次迭代尋找使損失函數(shù)降低最大的決策樹,因此將目標(biāo)函數(shù)改寫為:
(9)
(10)
與正則化項相加可得:
(11)
定義q函數(shù)將輸入x映射到某個葉子節(jié)點上,則ft(x)=ωq(x),并定義每個葉子節(jié)點j的樣本集合為Ij={i|q(xi)=j},則目標(biāo)函數(shù)表示為:
(12)
式中:Gj=∑i∈Ijgi、Hj=∑i∈Ijhi。
對使目標(biāo)函數(shù)最小的葉節(jié)點輸出分?jǐn)?shù)ω求導(dǎo),并代入損失函數(shù)中,優(yōu)化后的目標(biāo)函數(shù)為:
我們知道,無論什么樣的學(xué)校,每個班都會有差生、優(yōu)生,但是無論面對的是差生還是優(yōu)生,教師都應(yīng)當(dāng)去愛護(hù)他們。和諧的師生關(guān)系是促進(jìn)教學(xué)活動的順利開展的重要條件。如教師每一個默許的點頭、會心的微笑、優(yōu)美的動作、親切的撫摸,都能使學(xué)生感受到愛的鼓舞。教學(xué)過程也是情感交流的過程,很多學(xué)生往往出于對某一位老師的喜愛,而喜歡這位老師所教的的一門課程。教師對學(xué)生表現(xiàn)出愛心,關(guān)懷學(xué)生,尊重學(xué)生,那么學(xué)生就會以一顆純真的愛心回報教師。
(13)
上式越小代表預(yù)測模型越好,XGBoost采用貪心算法,每次嘗試分裂一個葉節(jié)點,計算分裂后的增益,選擇最大增益確定樹結(jié)構(gòu):
(14)
Gain值越大,說明分裂后能使目標(biāo)函數(shù)減小的越多,模型越好。
對XGboost模型構(gòu)造主要是對參數(shù)進(jìn)行調(diào)整,XGboost的參數(shù)主要分為通用參數(shù)、提升參數(shù)和學(xué)習(xí)任務(wù)參數(shù)。通用參數(shù)可以設(shè)置XGboost的整體功能,提升參數(shù)可以選擇每一步的上升類型(樹或者回歸),學(xué)習(xí)任務(wù)參數(shù)用來控制理想的優(yōu)化目標(biāo)和每一步結(jié)果的度量方法〔15〕。
通用參數(shù):booster選擇gbtree,silent輸入0,其余參數(shù)自動指定,無需設(shè)置。
提升參數(shù)具體設(shè)置情況見表1所示:
表1 提升參數(shù)設(shè)置
學(xué)習(xí)目標(biāo)參數(shù):objective選擇回歸學(xué)習(xí)目標(biāo)reg:linear,eval_metric設(shè)置為均方根誤差(root mean squared error,RMSE)和平均絕對百分比誤差(mean absolute percentage error,MAPE)對預(yù)測性能進(jìn)行評價,計算公式為:
(15)
(16)
式中:dpi為火電廠發(fā)電量預(yù)測值;dri為火電廠發(fā)電量實際值。
基于MIC和XGBoost的火電廠發(fā)電量預(yù)測模型流程如圖1所示:
圖1 基于MIC和XGBoost的火電廠發(fā)電量預(yù)測模型流程圖
對上海某火電廠發(fā)電量和其影響因素數(shù)據(jù)進(jìn)行研究,收集從2014年1月1日至2020年12月31日共計2 557組數(shù)據(jù),根據(jù)電廠實際情況,正式的電網(wǎng)調(diào)度發(fā)電計劃單一般在一個半月左右下達(dá),所以需要對90天的火電廠發(fā)電量進(jìn)行預(yù)測,將2 467組數(shù)據(jù)定為訓(xùn)練集,90組數(shù)據(jù)定為測試集,數(shù)據(jù)中特征變量有年、月、日、節(jié)假日、天氣狀況、日最高溫度、日最低溫度、濕度、日均風(fēng)速、耗煤量、廠存量、平均熱值、平均灰分、平均揮發(fā)分、平均硫分、平均水分、磨煤機(jī)A-F投運方式、電除塵運行狀況、干排渣運行情況、平均耗煤率、平均負(fù)荷率、經(jīng)濟(jì)煤種量和平均混煤煤價。原始數(shù)據(jù)見表2所示。
表2 原始數(shù)據(jù)集
由原始數(shù)據(jù)可以看出,其中有很多非數(shù)值型數(shù)據(jù),無法直接作為特征變量輸入模型中,故需要進(jìn)行數(shù)據(jù)預(yù)處理工作,將所有數(shù)據(jù)統(tǒng)一為數(shù)值型,具體操作見表3所示。
表3 數(shù)據(jù)預(yù)處理
由于數(shù)據(jù)涉及30個變量,將所有可能影響發(fā)電量變化的因子輸入預(yù)測模型中很容易造成信息重復(fù)或特征無效等問題,輸入數(shù)據(jù)過多或者存在共線性都會對模型精度產(chǎn)生重要影響,采用MIC對特征變量進(jìn)行排序并篩選,結(jié)果如圖2所示。
圖2 特征排序圖
由圖2可得,磨煤機(jī)A運行方式和年份對發(fā)電量沒有影響,MIC值越大,說明變量對目標(biāo)值影響越大〔16〕。選取MIC值大于0.1的7個變量作為輸入特征變量,包括:耗煤量、日最高溫度、日最低溫度、平均混煤價格、平均熱值、平均負(fù)荷率和經(jīng)濟(jì)煤種量。利用XGBoost算法得到火電廠90天發(fā)電量的預(yù)測值,并與隨機(jī)森林算法進(jìn)行比較,預(yù)測結(jié)果對比如圖3、預(yù)測相對誤差如圖4、預(yù)測性能評價見表4所示。
圖3 預(yù)測結(jié)果對比圖
圖4 預(yù)測相對誤差圖
表4 預(yù)測性能評價表
由圖和表可得,采用XGBoost算法比隨機(jī)森林預(yù)測效果精度更高,更加接近火電廠發(fā)電量真實值,為了驗證XGBoost算法的性能優(yōu)勢,對預(yù)測結(jié)果進(jìn)行評價,XGBoost模型的RMSE和MAPE分別為136.79和0.052 %。提高火電廠發(fā)電量的預(yù)測精度,不僅可以提前通過預(yù)測發(fā)電量得出預(yù)計的購煤量,有利于采購計劃的實施,而且可以根據(jù)國家出臺的控煤政策靈活調(diào)整耗煤量,大力發(fā)展綠色經(jīng)濟(jì),對追求少耗煤多發(fā)電的電廠具有一定的指導(dǎo)意義。
4.1火電廠發(fā)電量數(shù)據(jù)復(fù)雜多變,為了建立良好的發(fā)電量數(shù)據(jù)庫,采取數(shù)據(jù)收集、異常值處理、數(shù)據(jù)類型轉(zhuǎn)換等數(shù)據(jù)預(yù)處理工作,減少無用數(shù)據(jù)對模型的影響。
4.2為了避免特征維度過高對模型復(fù)雜度的影響,采用最大互信息關(guān)系方法進(jìn)行特征重要性排序和特征選擇,得到較好的輸入變量。
4.3采用XGBoost算法和隨機(jī)森林算法建立發(fā)電量預(yù)測模型,通過對比得出,XGBoost算法的RMSE和MAPE評價指標(biāo)比隨機(jī)森林分別小347.05和0.072個百分點,具有更高的預(yù)測精度。