李科,黃東晨,陶子彬,熊歡,李浩文,杜業(yè)冬
(南瑞集團(國網(wǎng)電力科學研究院)有限公司,江蘇 南京 211106)
風能是一種可大規(guī)模商用的綠色可再生能源。由于風力發(fā)電具有強烈的間歇性和隨機性,且周期規(guī)律不明顯,當風電大規(guī)模并入電網(wǎng)時,可能對電網(wǎng)的安全及穩(wěn)定運行產(chǎn)生不良影響[1]。因此,亟需發(fā)展精準的風功率預(yù)測技術(shù)。
圍繞著短期風功率預(yù)測,國內(nèi)外學者進行了諸多探索。自回歸滑動平均模型(autoregressive moving average model,ARMA)假設(shè)當前時刻的值與前一時刻的值及隨機干擾量均有關(guān),具有一定捕捉時序信息的能力,是一種常用于風功率預(yù)測的時間序列分析模型[2]。但對于功率波動較大且無明顯周期規(guī)律的風電場而言,使用ARMA模型會導(dǎo)致預(yù)測結(jié)果誤差較大。人工神經(jīng)網(wǎng)絡(luò)(artificial neural network,ANN)[3—4]和支持向量機(support vector machine,SVM)[5]是另外2種經(jīng)典的風功率預(yù)測模型。ANN能夠自適應(yīng)、自學習,以任意精度逼近任何非線性映射,非常適合描述風功率預(yù)測模型復(fù)雜與非線性的特點。但ANN訓練時間長,調(diào)參過程較為繁瑣,容易出現(xiàn)過擬合的情況[6]。相較而言,SVM有著較強的泛化能力,不易過擬合。然而,當訓練樣本大幅增加時,SVM的性能提升不明顯[7—8]。
近年來,極限梯度提升(extreme gradient boosting,XGBoost)[9]算法由于在Kaggle、KDD等一系列大數(shù)據(jù)算法競賽中表現(xiàn)優(yōu)異,引發(fā)了大量的關(guān)注。XGBoost不僅在算法精度上較傳統(tǒng)算法表現(xiàn)出色,同時也支持并行化運行,減少了模型的訓練時間。此外,XGBoost還具有可移植性強、支持多數(shù)主流編程語言、集成了Spark等各類主流大數(shù)據(jù)平臺等特性[10],這些特性增強了XGBoost的普適性,使得XGBoost在工程化應(yīng)用方面具有更大的優(yōu)勢。目前XGBoost已經(jīng)在光伏發(fā)電量預(yù)測[11—14]等多個領(lǐng)域有所應(yīng)用。然而,僅使用單一預(yù)測模型存在一定的泛化問題,需要結(jié)合組合預(yù)測策略[15]。文獻[16]以反向傳播 (back propagation,BP)神經(jīng)網(wǎng)絡(luò)、線性外推和SVM為底層算法,構(gòu)建一種動態(tài)調(diào)整權(quán)重分配的風電預(yù)測集成學習模型,獲得了提高模型整體泛化能力的效果。然而,文中的方法缺少效率層面上的考慮。另外,在工程應(yīng)用中,不同風電場適用的模型氣象特征輸入不同[17],需要有相應(yīng)的算法選擇合適的氣象特征作為模型的輸入變量。
綜上所述,文中提出一種結(jié)合偏最大信息系數(shù)(partial maximal information coefficient,PMIC)特征選擇算法的組合XGBoost短期風功率預(yù)測模型。首先,設(shè)計基于PMIC的特征選擇算法,對風速、風向等常用氣象特征進行優(yōu)選;其次,以XGBoost為底層算法構(gòu)建組合預(yù)測模型,實現(xiàn)對短期風功率的預(yù)測。算例結(jié)果表明,文中方法能有效提高短期風功率預(yù)測精度及計算效率,有助于工程化應(yīng)用。
據(jù)已有文獻及現(xiàn)場情況,目前常用氣象特征有:
(1)風速Vh,即風電場與地面相對高度為h米時的平均風速,在文中后續(xù)算例中,h的取值范圍為{30,50,70,90,110}。
(2)風向Ddir,即風電場當?shù)氐钠骄L向。
(3)溫度Ttemp,即風電場當?shù)氐钠骄鶞囟取?/p>
(4)濕度Hhum,即風電場當?shù)氐钠骄鶟穸取?/p>
(5)氣壓Ppres,即風電場當?shù)氐钠骄鶜鈮骸?/p>
在短期風功率預(yù)測問題中,風速是決定風電場輸出功率的主導(dǎo)因素。由于地表粗糙度和大氣熱分層的影響,風速的分布并不完全遵循對數(shù)風廓線或指數(shù)風廓線,有時還會出現(xiàn)低海拔風速高于高海拔風速的情況。因此,在選擇預(yù)測模型的特征輸入時,可以考慮不同高度的風速,這樣能夠更好地表征風電場周圍的大氣特征[18]。
另外,根據(jù)文獻[19],風速之外的因素也可能對風電場的功率出力情況造成影響。對于不同風電場,氣象特征對輸出功率的影響程度也不相同。例如,當風電場內(nèi)風機空間布局密集程度較大時,尾流效應(yīng)對風電場出力的影響尤其突出[20],此時風向?qū)︼L功率有較大的影響。因此,需在建立模型前對特征進行選擇。
最大信息系數(shù)(maximal information coefficient,MIC)是一種衡量變量間相關(guān)性程度的統(tǒng)計量[21],不僅能夠刻畫變量間的線性與非線性關(guān)系,還能夠捕獲變量間潛在的非函數(shù)關(guān)系。其主要思想為:如果2個變量之間具有一定的相關(guān)關(guān)系,對相應(yīng)變量的散點圖進行不同方案的網(wǎng)格劃分,計算對應(yīng)的互信息(mutual information,MI)值并且進行正則化,取這些值中的最大值,則該值為這2個變量的MIC。其中,MI值是衡量變量之間相關(guān)性程度的指標。給定變量X={xi},Y={yi},i=1,2,…,n,n為樣本數(shù)目,其MI值定義為:
(1)
式中:f(x,y)為X和Y的聯(lián)合概率密度;f(x),f(y)分別為X和Y的邊緣概率密度。采用高斯函數(shù)對上述概率密度進行估計,至此,可進一步求得MI值。
給定一個有限二元數(shù)據(jù)集合D={(xi,yi)},i=1,2,…,n,將變量X劃分為x個區(qū)間,Y劃分為y個區(qū)間,則能夠得到一個x×y的網(wǎng)格劃分G。同樣的x×y規(guī)格的網(wǎng)格劃分方案有多種,對每一種方案,計算其MI值,取不同劃分方案下Imi(X,Y)的最大值作為劃分G的MI值。至此,定義集合D在劃分G下的最大MI值為:
I*(D,x,y)=maxGI(D|G)
(2)
式中:D|G為集合D在G上的概率分布;I(D|G)為在該概率分布下的MI值;maxG為遍歷所有可能的x×y網(wǎng)格G。
將所有劃分方案下的最大MI值進行正則化,并組成特征矩陣M(D)x,y,定義為:
(3)
最大信息系數(shù)Imic定義為:
(4)
式中:B(n)為網(wǎng)格劃分x×y的上限值。在文獻[22]中,建議將ε設(shè)為0.6,即B(n)=n0.6。
然而,風電場相關(guān)氣象特征之間普遍存在一定程度的耦合關(guān)系。為此,文中在MIC的基礎(chǔ)上進一步引入偏互信息(partial mutual information,PMI),將MIC改造為PMIC,以消除耦合給特征選擇帶來的不利影響。
設(shè)X和Z為多輸入系統(tǒng)中的輸入變量,Y為輸出變量。若X和Z之間具有耦合關(guān)系,將導(dǎo)致X和Y之間最大信息系數(shù)Imic(X,Y)的計算出現(xiàn)偏差。因此,文中應(yīng)用條件期望mX(z)和mY(z)分別對X和Y中包含Z的信息剔除,分別記為U,V:
(5)
U=X-mX(Z)
(6)
V=Y-mY(Z)
(7)
式中:f(z)為Z的邊緣概率密度函數(shù)。X和Y的PMIC記為:
Ipmic(X,Y)=Imic(U,V)
(8)
文中采用赤池信息量準則(akaike information criterion,AIC)[22]作為變量篩選的結(jié)束條件,即:
(9)
式中:ri為根據(jù)已選變量計算的Y回歸殘差;p為已選變量個數(shù)。隨著變量的篩選,TAIC不斷減小,當TAIC達到最小值時,最優(yōu)自變量集合篩選完畢。
設(shè)輸入變量集為F,輸入變量為Y,最優(yōu)輸入變量集為S,F(xiàn)S為最大的PMIC值對應(yīng)的候選變量。PMIC變量選擇算法流程如下:
(1)將S初始化為空集。
(2)計算F中各變量與Y的最大信息系數(shù)Imic(Fi,Y)。
(3)選擇使IMIC(Fi,Y)值最大的FS。
(4)計算TAIC值,并將FS移入S。
(5)若F≠φ,計算V=Y-mY(S);對于每一個Fj∈F,計算U=Fj-mFj(S)。
(6)選擇使Imic(U,V)值最大的FS。
(7)更新TAIC值,若TAIC減小,則將FS移入S,返回步驟(5),否則終止篩選。
XGBoost是一種以決策樹為基礎(chǔ)的梯度提升算法,計算速度快,模型表現(xiàn)好。給定含有N個樣本和M個氣象特征的訓練樣本集D={(xi,yi)}(i=1,2,…,N,xi∈RM,yi∈R),RM為具有M個維度的實數(shù)集。XGBoost算法使用由K個回歸決策樹函數(shù)相加構(gòu)成的集成模型對功率進行回歸預(yù)測:
(10)
(11)
(12)
(13)
式中:ftrou(xi)為第trou輪增加的決策樹函數(shù);Ω(ftrou)為第trou輪對應(yīng)的正則項,對以上目標函數(shù)進行二階泰勒展開,并移除常數(shù)項,可得:
(14)
其中:
(15)
(16)
式中:gi,hi分別為損失函數(shù)的一、二階導(dǎo)數(shù)。
通過對目標函數(shù)進行二階泰勒展開,同時用到了一階導(dǎo)數(shù)和二階導(dǎo)數(shù),有利于模型在訓練集上更快地收斂。
綜合式(12)和式(14),并定義:
(17)
則有:
(18)
對于一個確定的樹結(jié)構(gòu)qtree,其對應(yīng)的最優(yōu)化目標函數(shù)值為:
(19)
(20)
式(19)可用于衡量樹結(jié)構(gòu)qtree的質(zhì)量。通常所有可能的樹結(jié)構(gòu)不可能被完全枚舉出來,故XGBoost采用一種貪心算法,每次在已有的葉子節(jié)點中加入分裂。假設(shè)IL和IR為分裂后左右子節(jié)點的集合,設(shè)I=IL∪IR,則分裂后產(chǎn)生的信息增益如下:
(21)
式(21)通常用來評價分割的候選節(jié)點。
組合預(yù)測能有效綜合多個單一模型的信息,減少單個模型的預(yù)測風險,提升算法整體的預(yù)測精度[23—24]。由此,文中結(jié)合前文闡述的基于PMIC的特征選擇算法,構(gòu)建以XGBoost為底層算法的組合預(yù)測模型。相應(yīng)的訓練流程如圖1所示。
圖1 組合XGBoost模型訓練流程Fig.1 Training process of combined XGBoost model
(1)對原始特征集執(zhí)行基于PMIC的特征選擇操作。
(2)根據(jù)選擇出的風速高度將相應(yīng)的數(shù)據(jù)集分成n個訓練子集{M1,M2,…,Mn}。
(3)利用XGBoost分別對n個訓練子集進行訓練,生成n個子模型X1,X2,…,Xn,利用測試集及均方誤差對每個子模型的預(yù)測誤差ei進行評估,計算公式為:
(22)
(4)利用熵權(quán)法對各子模型進行權(quán)重分配。
相應(yīng)的預(yù)測流程如圖2所示。
圖2 組合XGBoost模型預(yù)測流程Fig.2 Forecasting process of combined XGBoost model
(1)對預(yù)測集進行包含特征選擇在內(nèi)的數(shù)據(jù)預(yù)處理工作,并根據(jù)風速高度將處理后的預(yù)測集分成n個預(yù)測子集N1,N2,…,Nn。
(2)利用訓練流程生成的各XGBoost子模型X1,X2,…,Xn及對應(yīng)權(quán)重W1,W2,…,Wn對測試樣本進行計算,得出預(yù)測結(jié)果。
為充分論證文中所提方法性能,文中采用華東某風電場A、西北某風電場B的實測數(shù)據(jù)及歷史數(shù)值天氣預(yù)報數(shù)據(jù)進行了相關(guān)實驗。其中,風電場A的平均風速較小,波動相對穩(wěn)定;而風電場B則平均風速較大,波動性較強。表1和表2分別為2個風電場數(shù)據(jù)的數(shù)據(jù)概況及相關(guān)風電機組的主要參數(shù)。
表1 風電場A和B的數(shù)據(jù)概況Table 1 The data overview of wind farms A and B
表2 風電場A和B的風電機組主要參數(shù)Table 2 Main parameters of wind turbines in wind farms A and B
訓練階段的輸入為測風塔不同高度的風速數(shù)據(jù)及風電場當?shù)氐钠骄L向、溫度、濕度及氣壓數(shù)據(jù),輸出為實測功率。測試階段的輸入為對應(yīng)的數(shù)值天氣預(yù)報數(shù)據(jù),輸出為預(yù)測功率。對于短期功率預(yù)測,后一天的數(shù)值天氣預(yù)報數(shù)據(jù)由預(yù)報供應(yīng)商于前一天的6點前發(fā)布。
在數(shù)據(jù)預(yù)處理方面,采用文獻[25]中數(shù)據(jù)預(yù)處理方法對訓練集數(shù)據(jù)進行預(yù)處理。
在模型精度評價方面,參考國家電網(wǎng)頒布的《風功率預(yù)測功能規(guī)范》[26],選用均方根誤差、平均絕對誤差和合格率作為風電場功率預(yù)測的精度的評價指標,各指標的具體定義如下。
均方根誤差:
(23)
平均絕對誤差:
(24)
合格率:
(25)
其中:
(26)
式中:Pft為t時刻預(yù)測功率值;Pt為t時刻實測功率值;Sop為風電場的額定裝機容量。
為得到2個風電場的最優(yōu)特征子集,利用PMI對MIC進行改造,構(gòu)建一種基于PMIC的特征選擇算法,相應(yīng)的特征選擇過程分別如圖3、圖4所示。對于風電場A而言,當?shù)?個特征被選出來時,TAIC最小,為-86 275。對于風電場B而言,當?shù)?個特征被選出來時,TAIC最小,為-97 553。相應(yīng)的特征選擇結(jié)果如表3所示。
圖3 風電場A對應(yīng)的特征選擇過程Fig.3 Feature selection process corresponding to wind farm A
圖4 風電場B對應(yīng)的特征選擇過程Fig.4 Feature selection process corresponding to wind farm B
表3 風電場A和B對應(yīng)的最優(yōu)特征子集Table 3 The optimal feature subsets for wind farms A and B
表3中,如文中1.1節(jié)所述,V30,V70,V90分別表示30 m,70 m,90 m層高對應(yīng)的風速特征。在不同高度的風速特征選擇方面,風電場A比風電場B少選了110 m風速,這是由于風電場A風機風輪掃風范圍所限。在其他氣候條件選擇方面,風電場B選擇了風向和溫度,風電場A則只選擇了氣壓,表明不同風電場的輸出功率對氣候條件的敏感程度不同。
為了驗證組合XGBoost模型在解決短期風功率預(yù)測問題上的有效性,文中首先將未經(jīng)特征選擇的單一預(yù)測模型ARMA、SVM、BP、XGBoost、結(jié)合了PMIC的XGBoost(PMIC-XGBoost)與結(jié)合了PMIC的組合XGBoost(PMIC-CXGBoost)作為類比模型同時進行風功率預(yù)測,并從訓練效率和模型精度兩方面進行驗證。
以風電場A中的訓練數(shù)據(jù)為基礎(chǔ),圖5為不同未經(jīng)特征選擇的單一預(yù)測模型在相同迭代次數(shù)下的訓練耗時??梢?,XGBoost模型訓練耗時要遠低于其他模型,展現(xiàn)了其在模型訓練效率方面的優(yōu)越性。其原因在于,XGBoost在效率上進行了多方面優(yōu)化,包括基于列存儲塊的并行學習實現(xiàn)、采用緩存感知訪問、外存塊計算等。因此,選擇XGBoost作為底層算法能使組合模型具備更高的計算效率。
圖5 模型訓練耗時與迭代次數(shù)的關(guān)系Fig.5 Relationship between model training time and number of iterations
表4為不同模型對于風電場A和風電場B的預(yù)測結(jié)果??梢姡L電場A具有遠低于風電場B的均方根誤差和平均絕對誤差,同時也有更高的合格率,表明平均風速小,波動相對穩(wěn)定的風電場的輸出功率更好預(yù)測。當由風電場A切換到風電場B時,ARMA、SVM、BP的預(yù)測效果均急劇下降,而基于XGBoost模型,即XGBoost,PMIC-XGBoost,PMIC-CXGBoost仍能有10%左右的均方根誤差及7%以下的平均絕對誤差,合格率則均在87%上。統(tǒng)計結(jié)果表明,XGBoost在模型精度方面相較其他單一預(yù)測模型更加優(yōu)越且穩(wěn)定,這是因為XGBoost的設(shè)計同時考慮了學習能力與泛化能力。在學習能力方面,XGBoost是一種由若干決策樹組成的集成學習模型,決策樹的個數(shù)理論上可以任意大,意味著XGBoost可以更靈活地對訓練樣本進行擬合,從樣本中學習更加豐富的信息。另外,XGBoost針對目標函數(shù)進行二階泰勒展開,在對一階導(dǎo)數(shù)進行保留的同時加入二階導(dǎo)數(shù),能夠使模型在訓練集上更容易收斂。在泛化能力方面,XGBoost 算法在正則項上對單顆樹中葉節(jié)點的數(shù)量及葉節(jié)點的權(quán)重均進行了控制,避免模型出現(xiàn)過擬合,進而提升模型在訓練集外的泛化能力。
表4 不同模型的預(yù)測結(jié)果Table 4 The forecasting results of different models %
比較單一XGBoost和PMIC-XGBoost:對于風電場A,PMIC-XGBoost的均方根誤差和平均絕對誤差相較單一XGBoost分別下降了1.39%和1.27%,合格率提升了1.65%;對于風電場B,PMIC-XGBoost的均方根誤差和平均絕對誤差也相較單一XGBoost分別下降了1.67%和1.16%,合格率提升了1.43%。該結(jié)果驗證了基于PMIC的特征選擇算法的有效性。
比較PMIC-XGBoost和PMIC-CXGBoost:無論是風電場A還是風電場B,PMIC-CXGBoost模型整體的均方根誤差、平均絕對誤差都要小于PMIC-XGBoost,其合格率也高于PMIC-XGBoost。其中,風電場A的均方根誤差和平均絕對誤差分別相較PMIC-XGBoost低了1.69%和1.84%,合格率相較高了2.44%;風電場B的均方根誤差和平均絕對誤差分別相較PMIC-XGBoost低了1.84%和2.1%,合格率相較高了2.61%。該結(jié)果表明,引入組合預(yù)測的思想后,預(yù)測效果有了進一步的提升。
表5比較了文中組合預(yù)測方法PMIC-CXGBoost與其他相近組合預(yù)測方法的性能,類比模型為文獻[16]中的集成學習預(yù)測模型,底層算法的迭代次數(shù)設(shè)為300。文獻[16]中的模型也將不同高度的風速作為模型的輸入,底層算法則采用了BP神經(jīng)網(wǎng)絡(luò)、線性外推和線性SVM,對應(yīng)風電場A和風電場B。與文獻[16]中的集成學習預(yù)測模型相比,文中所提組合XGBoost不僅具有更優(yōu)的精度,也具備更短的訓練時間。
表5 文中組合預(yù)測方法PMIC-CXGBoost和文獻[16]中的預(yù)測方法的對比Table 5 Comparison of the proposed combination forecasting method PMIC-CXGBoost and the forecasting method in reference 16
圖6和圖7分別為文中方法在2個風電場中風功率預(yù)測值和實測值的比較??梢钥闯?,文中方法能很好地預(yù)測實測序列的變化趨勢。
圖6 風電場A中組合XGBoost預(yù)測值與實測值的比較Fig.6 Comparison of forecasting and measured values of combined XGBoost in wind farm A
圖7 風電場B中組合XGBoost預(yù)測值與實測值的比較Fig.7 Comparison of forecasting and measured values of combined XGBoost in wind farm B
針對當前短期風功率預(yù)測中存在的精度以及工程化應(yīng)用問題,文中提出一種將PMIC特征選擇與組合XGBoost相結(jié)合的預(yù)測模型。一方面,引入PMI對MIC進行改造,使相關(guān)特征選擇算法不僅能得到對風功率影響程度較大的氣象特征,也有利于消除變量間的耦合關(guān)系。另一方面,為兼顧算法的精度和效率,減少單個模型的預(yù)測風險,采用XGBoost作為底層算法構(gòu)建組合預(yù)測模型。將2個具有較大差異的風電場作為算例進行驗證,實驗結(jié)果表明,結(jié)合了PMIC特征選擇的組合XGBoost模型不僅在精度方面效果理想,在計算效率方面,也較相近組合預(yù)測模型有更好的效果,便于工程化應(yīng)用。
在下一步工作中,將考慮將誤差修正技術(shù)引入組合XGBoost預(yù)測模型中,使得算法整體上具備更好的反饋能力,以進一步提升短期風功率的預(yù)測精度。