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