李科,黃東晨,陶子彬,熊歡,李浩文,杜業冬
(南瑞集團(國網電力科學研究院)有限公司,江蘇 南京 211106)
風能是一種可大規模商用的綠色可再生能源。由于風力發電具有強烈的間歇性和隨機性,且周期規律不明顯,當風電大規模并入電網時,可能對電網的安全及穩定運行產生不良影響[1]。因此,亟需發展精準的風功率預測技術。
圍繞著短期風功率預測,國內外學者進行了諸多探索。自回歸滑動平均模型(autoregressive moving average model,ARMA)假設當前時刻的值與前一時刻的值及隨機干擾量均有關,具有一定捕捉時序信息的能力,是一種常用于風功率預測的時間序列分析模型[2]。但對于功率波動較大且無明顯周期規律的風電場而言,使用ARMA模型會導致預測結果誤差較大。人工神經網絡(artificial neural network,ANN)[3—4]和支持向量機(support vector machine,SVM)[5]是另外2種經典的風功率預測模型。ANN能夠自適應、自學習,以任意精度逼近任何非線性映射,非常適合描述風功率預測模型復雜與非線性的特點。但ANN訓練時間長,調參過程較為繁瑣,容易出現過擬合的情況[6]。相較而言,SVM有著較強的泛化能力,不易過擬合。然而,當訓練樣本大幅增加時,SVM的性能提升不明顯[7—8]。
近年來,極限梯度提升(extreme gradient boosting,XGBoost)[9]算法由于在Kaggle、KDD等一系列大數據算法競賽中表現優異,引發了大量的關注。XGBoost不僅在算法精度上較傳統算法表現出色,同時也支持并行化運行,減少了模型的訓練時間。此外,XGBoost還具有可移植性強、支持多數主流編程語言、集成了Spark等各類主流大數據平臺等特性[10],這些特性增強了XGBoost的普適性,使得XGBoost在工程化應用方面具有更大的優勢。目前XGBoost已經在光伏發電量預測[11—14]等多個領域有所應用。然而,僅使用單一預測模型存在一定的泛化問題,需要結合組合預測策略[15]。文獻[16]以反向傳播 (back propagation,BP)神經網絡、線性外推和SVM為底層算法,構建一種動態調整權重分配的風電預測集成學習模型,獲得了提高模型整體泛化能力的效果。然而,文中的方法缺少效率層面上的考慮。另外,在工程應用中,不同風電場適用的模型氣象特征輸入不同[17],需要有相應的算法選擇合適的氣象特征作為模型的輸入變量。
綜上所述,文中提出一種結合偏最大信息系數(partial maximal information coefficient,PMIC)特征選擇算法的組合XGBoost短期風功率預測模型。首先,設計基于PMIC的特征選擇算法,對風速、風向等常用氣象特征進行優選;其次,以XGBoost為底層算法構建組合預測模型,實現對短期風功率的預測。算例結果表明,文中方法能有效提高短期風功率預測精度及計算效率,有助于工程化應用。
據已有文獻及現場情況,目前常用氣象特征有:
(1)風速Vh,即風電場與地面相對高度為h米時的平均風速,在文中后續算例中,h的取值范圍為{30,50,70,90,110}。
(2)風向Ddir,即風電場當地的平均風向。
(3)溫度Ttemp,即風電場當地的平均溫度。
(4)濕度Hhum,即風電場當地的平均濕度。
(5)氣壓Ppres,即風電場當地的平均氣壓。
在短期風功率預測問題中,風速是決定風電場輸出功率的主導因素。由于地表粗糙度和大氣熱分層的影響,風速的分布并不完全遵循對數風廓線或指數風廓線,有時還會出現低海拔風速高于高海拔風速的情況。因此,在選擇預測模型的特征輸入時,可以考慮不同高度的風速,這樣能夠更好地表征風電場周圍的大氣特征[18]。
另外,根據文獻[19],風速之外的因素也可能對風電場的功率出力情況造成影響。對于不同風電場,氣象特征對輸出功率的影響程度也不相同。例如,當風電場內風機空間布局密集程度較大時,尾流效應對風電場出力的影響尤其突出[20],此時風向對風功率有較大的影響。因此,需在建立模型前對特征進行選擇。
最大信息系數(maximal information coefficient,MIC)是一種衡量變量間相關性程度的統計量[21],不僅能夠刻畫變量間的線性與非線性關系,還能夠捕獲變量間潛在的非函數關系。其主要思想為:如果2個變量之間具有一定的相關關系,對相應變量的散點圖進行不同方案的網格劃分,計算對應的互信息(mutual information,MI)值并且進行正則化,取這些值中的最大值,則該值為這2個變量的MIC。其中,MI值是衡量變量之間相關性程度的指標。給定變量X={xi},Y={yi},i=1,2,…,n,n為樣本數目,其MI值定義為:
(1)
式中:f(x,y)為X和Y的聯合概率密度;f(x),f(y)分別為X和Y的邊緣概率密度。采用高斯函數對上述概率密度進行估計,至此,可進一步求得MI值。
給定一個有限二元數據集合D={(xi,yi)},i=1,2,…,n,將變量X劃分為x個區間,Y劃分為y個區間,則能夠得到一個x×y的網格劃分G。同樣的x×y規格的網格劃分方案有多種,對每一種方案,計算其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網格G。
將所有劃分方案下的最大MI值進行正則化,并組成特征矩陣M(D)x,y,定義為:
(3)
最大信息系數Imic定義為:
(4)
式中:B(n)為網格劃分x×y的上限值。在文獻[22]中,建議將ε設為0.6,即B(n)=n0.6。
然而,風電場相關氣象特征之間普遍存在一定程度的耦合關系。為此,文中在MIC的基礎上進一步引入偏互信息(partial mutual information,PMI),將MIC改造為PMIC,以消除耦合給特征選擇帶來的不利影響。
設X和Z為多輸入系統中的輸入變量,Y為輸出變量。若X和Z之間具有耦合關系,將導致X和Y之間最大信息系數Imic(X,Y)的計算出現偏差。因此,文中應用條件期望mX(z)和mY(z)分別對X和Y中包含Z的信息剔除,分別記為U,V:
(5)
U=X-mX(Z)
(6)
V=Y-mY(Z)
(7)
式中:f(z)為Z的邊緣概率密度函數。X和Y的PMIC記為:
Ipmic(X,Y)=Imic(U,V)
(8)
文中采用赤池信息量準則(akaike information criterion,AIC)[22]作為變量篩選的結束條件,即:
(9)
式中:ri為根據已選變量計算的Y回歸殘差;p為已選變量個數。隨著變量的篩選,TAIC不斷減小,當TAIC達到最小值時,最優自變量集合篩選完畢。
設輸入變量集為F,輸入變量為Y,最優輸入變量集為S,FS為最大的PMIC值對應的候選變量。PMIC變量選擇算法流程如下:
(1)將S初始化為空集。
(2)計算F中各變量與Y的最大信息系數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是一種以決策樹為基礎的梯度提升算法,計算速度快,模型表現好。給定含有N個樣本和M個氣象特征的訓練樣本集D={(xi,yi)}(i=1,2,…,N,xi∈RM,yi∈R),RM為具有M個維度的實數集。XGBoost算法使用由K個回歸決策樹函數相加構成的集成模型對功率進行回歸預測:
(10)

(11)

(12)



(13)
式中:ftrou(xi)為第trou輪增加的決策樹函數;Ω(ftrou)為第trou輪對應的正則項,對以上目標函數進行二階泰勒展開,并移除常數項,可得:
(14)
其中:
(15)
(16)
式中:gi,hi分別為損失函數的一、二階導數。
通過對目標函數進行二階泰勒展開,同時用到了一階導數和二階導數,有利于模型在訓練集上更快地收斂。
綜合式(12)和式(14),并定義:
(17)
則有:
(18)
對于一個確定的樹結構qtree,其對應的最優化目標函數值為:
(19)

(20)
式(19)可用于衡量樹結構qtree的質量。通常所有可能的樹結構不可能被完全枚舉出來,故XGBoost采用一種貪心算法,每次在已有的葉子節點中加入分裂。假設IL和IR為分裂后左右子節點的集合,設I=IL∪IR,則分裂后產生的信息增益如下:
(21)
式(21)通常用來評價分割的候選節點。
組合預測能有效綜合多個單一模型的信息,減少單個模型的預測風險,提升算法整體的預測精度[23—24]。由此,文中結合前文闡述的基于PMIC的特征選擇算法,構建以XGBoost為底層算法的組合預測模型。相應的訓練流程如圖1所示。

圖1 組合XGBoost模型訓練流程Fig.1 Training process of combined XGBoost model
(1)對原始特征集執行基于PMIC的特征選擇操作。
(2)根據選擇出的風速高度將相應的數據集分成n個訓練子集{M1,M2,…,Mn}。
(3)利用XGBoost分別對n個訓練子集進行訓練,生成n個子模型X1,X2,…,Xn,利用測試集及均方誤差對每個子模型的預測誤差ei進行評估,計算公式為:
(22)

(4)利用熵權法對各子模型進行權重分配。
相應的預測流程如圖2所示。

圖2 組合XGBoost模型預測流程Fig.2 Forecasting process of combined XGBoost model
(1)對預測集進行包含特征選擇在內的數據預處理工作,并根據風速高度將處理后的預測集分成n個預測子集N1,N2,…,Nn。
(2)利用訓練流程生成的各XGBoost子模型X1,X2,…,Xn及對應權重W1,W2,…,Wn對測試樣本進行計算,得出預測結果。
為充分論證文中所提方法性能,文中采用華東某風電場A、西北某風電場B的實測數據及歷史數值天氣預報數據進行了相關實驗。其中,風電場A的平均風速較小,波動相對穩定;而風電場B則平均風速較大,波動性較強。表1和表2分別為2個風電場數據的數據概況及相關風電機組的主要參數。

表1 風電場A和B的數據概況Table 1 The data overview of wind farms A and B

表2 風電場A和B的風電機組主要參數Table 2 Main parameters of wind turbines in wind farms A and B
訓練階段的輸入為測風塔不同高度的風速數據及風電場當地的平均風向、溫度、濕度及氣壓數據,輸出為實測功率。測試階段的輸入為對應的數值天氣預報數據,輸出為預測功率。對于短期功率預測,后一天的數值天氣預報數據由預報供應商于前一天的6點前發布。
在數據預處理方面,采用文獻[25]中數據預處理方法對訓練集數據進行預處理。
在模型精度評價方面,參考國家電網頒布的《風功率預測功能規范》[26],選用均方根誤差、平均絕對誤差和合格率作為風電場功率預測的精度的評價指標,各指標的具體定義如下。
均方根誤差:
(23)
平均絕對誤差:
(24)
合格率:
(25)
其中:
(26)
式中:Pft為t時刻預測功率值;Pt為t時刻實測功率值;Sop為風電場的額定裝機容量。
為得到2個風電場的最優特征子集,利用PMI對MIC進行改造,構建一種基于PMIC的特征選擇算法,相應的特征選擇過程分別如圖3、圖4所示。對于風電場A而言,當第4個特征被選出來時,TAIC最小,為-86 275。對于風電場B而言,當第5個特征被選出來時,TAIC最小,為-97 553。相應的特征選擇結果如表3所示。

圖3 風電場A對應的特征選擇過程Fig.3 Feature selection process corresponding to wind farm A

圖4 風電場B對應的特征選擇過程Fig.4 Feature selection process corresponding to wind farm B

表3 風電場A和B對應的最優特征子集Table 3 The optimal feature subsets for wind farms A and B
表3中,如文中1.1節所述,V30,V70,V90分別表示30 m,70 m,90 m層高對應的風速特征。在不同高度的風速特征選擇方面,風電場A比風電場B少選了110 m風速,這是由于風電場A風機風輪掃風范圍所限。在其他氣候條件選擇方面,風電場B選擇了風向和溫度,風電場A則只選擇了氣壓,表明不同風電場的輸出功率對氣候條件的敏感程度不同。
為了驗證組合XGBoost模型在解決短期風功率預測問題上的有效性,文中首先將未經特征選擇的單一預測模型ARMA、SVM、BP、XGBoost、結合了PMIC的XGBoost(PMIC-XGBoost)與結合了PMIC的組合XGBoost(PMIC-CXGBoost)作為類比模型同時進行風功率預測,并從訓練效率和模型精度兩方面進行驗證。
以風電場A中的訓練數據為基礎,圖5為不同未經特征選擇的單一預測模型在相同迭代次數下的訓練耗時??梢?,XGBoost模型訓練耗時要遠低于其他模型,展現了其在模型訓練效率方面的優越性。其原因在于,XGBoost在效率上進行了多方面優化,包括基于列存儲塊的并行學習實現、采用緩存感知訪問、外存塊計算等。因此,選擇XGBoost作為底層算法能使組合模型具備更高的計算效率。

圖5 模型訓練耗時與迭代次數的關系Fig.5 Relationship between model training time and number of iterations
表4為不同模型對于風電場A和風電場B的預測結果。可見,風電場A具有遠低于風電場B的均方根誤差和平均絕對誤差,同時也有更高的合格率,表明平均風速小,波動相對穩定的風電場的輸出功率更好預測。當由風電場A切換到風電場B時,ARMA、SVM、BP的預測效果均急劇下降,而基于XGBoost模型,即XGBoost,PMIC-XGBoost,PMIC-CXGBoost仍能有10%左右的均方根誤差及7%以下的平均絕對誤差,合格率則均在87%上。統計結果表明,XGBoost在模型精度方面相較其他單一預測模型更加優越且穩定,這是因為XGBoost的設計同時考慮了學習能力與泛化能力。在學習能力方面,XGBoost是一種由若干決策樹組成的集成學習模型,決策樹的個數理論上可以任意大,意味著XGBoost可以更靈活地對訓練樣本進行擬合,從樣本中學習更加豐富的信息。另外,XGBoost針對目標函數進行二階泰勒展開,在對一階導數進行保留的同時加入二階導數,能夠使模型在訓練集上更容易收斂。在泛化能力方面,XGBoost 算法在正則項上對單顆樹中葉節點的數量及葉節點的權重均進行了控制,避免模型出現過擬合,進而提升模型在訓練集外的泛化能力。

表4 不同模型的預測結果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%。該結果驗證了基于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%。該結果表明,引入組合預測的思想后,預測效果有了進一步的提升。
表5比較了文中組合預測方法PMIC-CXGBoost與其他相近組合預測方法的性能,類比模型為文獻[16]中的集成學習預測模型,底層算法的迭代次數設為300。文獻[16]中的模型也將不同高度的風速作為模型的輸入,底層算法則采用了BP神經網絡、線性外推和線性SVM,對應風電場A和風電場B。與文獻[16]中的集成學習預測模型相比,文中所提組合XGBoost不僅具有更優的精度,也具備更短的訓練時間。

表5 文中組合預測方法PMIC-CXGBoost和文獻[16]中的預測方法的對比Table 5 Comparison of the proposed combination forecasting method PMIC-CXGBoost and the forecasting method in reference 16
圖6和圖7分別為文中方法在2個風電場中風功率預測值和實測值的比較??梢钥闯觯闹蟹椒芎芎玫仡A測實測序列的變化趨勢。

圖6 風電場A中組合XGBoost預測值與實測值的比較Fig.6 Comparison of forecasting and measured values of combined XGBoost in wind farm A

圖7 風電場B中組合XGBoost預測值與實測值的比較Fig.7 Comparison of forecasting and measured values of combined XGBoost in wind farm B
針對當前短期風功率預測中存在的精度以及工程化應用問題,文中提出一種將PMIC特征選擇與組合XGBoost相結合的預測模型。一方面,引入PMI對MIC進行改造,使相關特征選擇算法不僅能得到對風功率影響程度較大的氣象特征,也有利于消除變量間的耦合關系。另一方面,為兼顧算法的精度和效率,減少單個模型的預測風險,采用XGBoost作為底層算法構建組合預測模型。將2個具有較大差異的風電場作為算例進行驗證,實驗結果表明,結合了PMIC特征選擇的組合XGBoost模型不僅在精度方面效果理想,在計算效率方面,也較相近組合預測模型有更好的效果,便于工程化應用。
在下一步工作中,將考慮將誤差修正技術引入組合XGBoost預測模型中,使得算法整體上具備更好的反饋能力,以進一步提升短期風功率的預測精度。