朱祺,楊鵬
(中國電力工程顧問集團(tuán)華東電力設(shè)計院有限公司,上海 200001)
隨著3060碳中和目標(biāo)的提出,光伏發(fā)電作為典型的綠色電源形式,其裝機(jī)容量占整個電力系統(tǒng)總裝機(jī)容量的比重越來越大,在電力系統(tǒng)中所起的作用也愈發(fā)重要。準(zhǔn)確的光伏發(fā)電出力預(yù)測對于保障高比例光伏接入后系統(tǒng)的安全穩(wěn)定與經(jīng)濟(jì)運(yùn)行具有重要意義[1]。
在光伏發(fā)電預(yù)測方面,最初的數(shù)據(jù)挖掘方法比較原始,如靜態(tài)知識和單源挖掘方法,它們不適用于包含大量異構(gòu)和流數(shù)據(jù)的智能電網(wǎng)場景,針對這一問題,學(xué)者們提出了多源挖掘機(jī)制和動態(tài)數(shù)據(jù)挖掘方法。如文獻(xiàn)[2]將馬薩諸塞州東南部分為15個片區(qū),通過分析歷史開源氣象數(shù)據(jù)及光伏電站歷史出力數(shù)據(jù)并構(gòu)建氣象參數(shù)-輸出功率的轉(zhuǎn)化模型,最終實現(xiàn)了預(yù)測時間分辨率為1小時的區(qū)域日前出力預(yù)測。文獻(xiàn)[3]依據(jù)多維參量,包含氣象參數(shù)、經(jīng)緯度以及光伏陣列安裝傾斜角等,對整個歐洲地區(qū)進(jìn)行了片區(qū)劃分并建立了不同片區(qū)的區(qū)域光伏發(fā)電模型,對整個歐洲地區(qū)的光伏出力實現(xiàn)了時間分辨率為1小時的預(yù)測。
相較于低效率、高成本傳統(tǒng)集中式數(shù)據(jù)處理的分析方法,分布式計算更加高效,已被廣泛應(yīng)用于地質(zhì)、氣候和環(huán)境分析、人類基因組計劃、暗能量測量計劃等領(lǐng)域[4]。隨著計算能力的大幅提高和硬件成本的降低,一些新的信息提取方法被提出,機(jī)器學(xué)習(xí)就是其中之一。本文即是通過基于GBDT回歸的光伏電站出力人工智能預(yù)測算法對于光伏電站的出力進(jìn)行預(yù)測,通過準(zhǔn)確度較高的預(yù)測結(jié)果提前預(yù)知光伏電站的未來超短期和短期的出力情況,保證電網(wǎng)的運(yùn)行安全。同時,各類氣象元素與光伏電站出力之間的相關(guān)性數(shù)據(jù)也能為光伏電站的選址提供參考,為光伏電站的選址決策提供數(shù)據(jù)支持。
針對預(yù)測場景的算法有很多種,較為常見的有線性回歸、Bayes、LDA、KNN等。這些算法有的適用于回歸場景,有的適用于分類場景,部分能夠同時被應(yīng)用在兩大類場景中。如文獻(xiàn)[5-8]采用混合k-聚類和主成分分析相結(jié)合的方法,進(jìn)行數(shù)據(jù)降維和估計映射。文獻(xiàn)[9]基3639個用戶電表數(shù)據(jù),利用回歸分析的方法進(jìn)行用戶負(fù)荷分類。
GBDT算法全稱為梯度提升迭代決策樹算法,是機(jī)器學(xué)習(xí)算法中對真實分布擬合的最好的幾種算法之一,其典型特點(diǎn)為既可以用于分類也可以用于回歸。
算法的原理如下[10]:
梯度提升迭代決策樹預(yù)測函數(shù)的表達(dá)式為:
(1)
式中:x為輸入樣本;ht為第t棵回歸樹;ωt為回歸樹參數(shù);ρt為第t棵回歸樹的權(quán)重。
對于N個樣本,預(yù)測函數(shù)的最優(yōu)值為:
(2)
式中:L為損失函數(shù)。
梯度提升迭代決策樹算法的迭代過程如下:
(1)定義
(3)
式中:fi為弱學(xué)習(xí)器。
(2)構(gòu)造基于回歸樹的訓(xùn)練樣本、目標(biāo)函數(shù)分別為:
(4)
L(yi,F(xi))=(yi-F(xi))2
(5)
式中:(yi,xi)∈R×RN。
(3)基于梯度下降方向訓(xùn)練決策樹得到的擬合數(shù)據(jù)為:
(6)
其最佳擬合數(shù)據(jù)為:
(7)
(4)求得梯度下降方向的最佳步長為:
(8)
式中:ρt0為第t棵回歸樹的初始權(quán)重。
(5)求得第t棵回歸樹的弱學(xué)習(xí)器為:
ft=ρ*ht(xi,ω*)
(9)
(6)迭代后的預(yù)測函數(shù)為:
Ft(x)=Ft-1(x)+ft
(10)
若損失函數(shù)滿足誤差收斂條件或得到的回歸樹的t值達(dá)到預(yù)設(shè)值,則迭代終止;若不滿足,則繼續(xù)迭代。
本文所采用的數(shù)據(jù)集為某光伏電站的氣象及出力實測數(shù)據(jù),時間跨度為3年(其中包含1個完整年),數(shù)據(jù)的采樣周期為5分鐘。數(shù)據(jù)的總數(shù)為42969條,特征構(gòu)成如下表所示:
按照人工智能訓(xùn)練、調(diào)節(jié)參數(shù)和測試的習(xí)慣,整個數(shù)據(jù)集需要按照比例進(jìn)行拆分,分別用于訓(xùn)練模型、調(diào)節(jié)模型參數(shù)和測試模型預(yù)測效果。如文獻(xiàn)[11]提到了采用LSTM模型來預(yù)測電力系統(tǒng)負(fù)荷的方法,數(shù)據(jù)集的拆分比例為81%的數(shù)據(jù)用于訓(xùn)練模型,19%的數(shù)據(jù)用于測試模型預(yù)測效果。文獻(xiàn)[12]采用了XGBoost極限梯度提升模型、隨機(jī)森林模型和LSTM模型三種模型融合的方式來進(jìn)行電能表需求預(yù)測,使用最大約之前75%的數(shù)據(jù)預(yù)測約之后25%的結(jié)果。本文采用Holdout交叉驗證[13]方法,將整個數(shù)據(jù)集按照60%、20%和20%進(jìn)行拆分,分別用于訓(xùn)練模型、調(diào)節(jié)模型參數(shù)和測試模型預(yù)測效果,如下表所示:
Holdout交叉驗證方法能夠避免訓(xùn)練完成的模型出現(xiàn)過擬合情況,防止出現(xiàn)模型對訓(xùn)練數(shù)據(jù)擬合較好但是卻沒有辦法對于測試數(shù)據(jù)做出精確預(yù)測的情況。在以上數(shù)據(jù)集拆分基礎(chǔ)上進(jìn)行光伏電站出力預(yù)測算法模型的設(shè)計及后續(xù)的訓(xùn)練、調(diào)節(jié)和測試驗證工作。最終成果為形成光伏電站出力預(yù)測算法模型。
光伏發(fā)電的輸出功率曲線在時域范圍呈現(xiàn)不穩(wěn)定性和波動性,外界的干擾極易造成輸出功率的突變[14]。光伏出力與輻照度及轉(zhuǎn)換率有很強(qiáng)的關(guān)系,影響光伏出力的根本因素只有兩個,包括太陽能電池實際接受的輻照度和電池板面溫度,天氣、濕度、氣溫等都是通過影響上述兩個根本因素,進(jìn)而對光伏出力產(chǎn)生影響的[15]。由于12個特征維度未必每個都會影響光伏電站最終出力,因此在光伏設(shè)備不變的情況下,光伏發(fā)電量主要受到客觀物理因素的影響,可選擇其中關(guān)聯(lián)性較強(qiáng)的因素作為特征進(jìn)行預(yù)測學(xué)習(xí)建模。先計算訓(xùn)練集中每個特征與光伏出力之間的相關(guān)系數(shù),以確保用于GBDT回歸模型訓(xùn)練的特征最符合光伏電站運(yùn)行的實際情況。相關(guān)性分析是對兩個或多個具備相關(guān)性的變量進(jìn)行分析,衡量變量間的密切程度[16]。相關(guān)性一般分為:正相關(guān)、負(fù)相關(guān)和無相關(guān)。Pearson相關(guān)系數(shù)能較好地表示變量的相關(guān)性,當(dāng)Pearson 相關(guān)系數(shù)r 的平方,即相關(guān)判定系數(shù)r2 大于0.3 時,可認(rèn)為兩變量具有強(qiáng)相關(guān)性,支持使用回歸模型進(jìn)行預(yù)測[17]。計算結(jié)果如圖1所示:
圖1 光伏電站特征與出力相關(guān)性分析圖Fig.1 Correlation analysis diagram between characteristics and output of photovoltaic power station
圖中,紅色的代表特征與光伏電站出力之間為正相關(guān)性,綠色的代表特征與光伏電站出力之間為負(fù)相關(guān)性,白色的代表特征與光伏電站出力之前幾乎沒有相關(guān)性,顏色越深則相關(guān)性就越強(qiáng)。根據(jù)相關(guān)性分析的結(jié)果,確定將以下六個特征作為GBDT算法模型的輸入特征:
表3 GBDT算法模型輸入特征表Tab.3 GBDT algorithm model input characteristic table
按照數(shù)據(jù)科學(xué)的標(biāo)準(zhǔn)運(yùn)作流程進(jìn)行預(yù)測算法流程設(shè)計,明確訓(xùn)練數(shù)據(jù)集、交叉驗證數(shù)據(jù)和測試數(shù)據(jù)集的數(shù)據(jù)流向,完整地反映從數(shù)據(jù)輸入到模型訓(xùn)練、參數(shù)調(diào)節(jié)、預(yù)測結(jié)果輸出直至預(yù)測結(jié)果驗證的流程,為通過代碼構(gòu)建算法提供基礎(chǔ)性輸入資料。
本文所采用的數(shù)據(jù)集為多模態(tài)數(shù)據(jù)集[18]。在數(shù)據(jù)層面理解,多模態(tài)數(shù)據(jù)則可被看作多種數(shù)據(jù)類型的組合,如圖片、數(shù)值、文本、符號、音頻、時間序列,或者集合、樹、圖等不同數(shù)據(jù)結(jié)構(gòu)所組成的復(fù)合數(shù)據(jù)形式,乃至來自不同數(shù)據(jù)庫、不同知識庫的各種信息資源的組合[19]。因此,本文在多種氣象數(shù)據(jù)基礎(chǔ)上設(shè)計的機(jī)器學(xué)習(xí)方法應(yīng)該歸類為多模態(tài)機(jī)器學(xué)習(xí)算法。按照多模態(tài)機(jī)器學(xué)習(xí)算法設(shè)計模式進(jìn)行算法流程設(shè)計。
所完成的預(yù)測算法流程圖如下圖所示:
圖2 GBDT回歸算法流程圖Fig.2 GBDT regression algorithm flow chart
采用Python語言按照算法流程圖的設(shè)計進(jìn)行代碼構(gòu)建。將訓(xùn)練集中根據(jù)之前相關(guān)性分析選定的六個特征輸入GBDT算法模型,采用交叉驗證數(shù)據(jù)集對于訓(xùn)練完成的模型進(jìn)行驗證和參數(shù)調(diào)節(jié)[20],運(yùn)用交叉驗證思想的算法求解出來的屬性子集不僅進(jìn)一步降低了訓(xùn)練集合的總決策代價,而且更加有效地降低了測試集合的決策總代價[21]。參數(shù)調(diào)節(jié)過程中通過經(jīng)驗法則防止出現(xiàn)而不會出現(xiàn)梯度消失[22]和梯度爆炸的問題。常用的參數(shù)調(diào)節(jié)方法有手動調(diào)參和自動調(diào)參兩種,手動調(diào)參的方法是通過手動調(diào)整超參數(shù),直到找到一組很好的超參數(shù)值組合,這個過程需要通過手工調(diào)節(jié)進(jìn)行反復(fù)嘗試,從效率角度相對較低,但對于有足夠調(diào)參經(jīng)驗的技術(shù)人員也是經(jīng)常被采用的調(diào)參方法。本文采用網(wǎng)格自動調(diào)參方法,在算法實施過程中設(shè)置所需要調(diào)節(jié)的模型的超參數(shù)和需要嘗試的值的范圍,在算法實施過程中算法將會使用交叉驗證來評估超參數(shù)值的所有可能組合,根據(jù)交叉驗證的結(jié)果選擇使模型預(yù)測效果最為精準(zhǔn)的超參數(shù)組合。
最終,當(dāng)GBDT算法的參數(shù)調(diào)節(jié)至如下表所示時,模型的預(yù)測結(jié)果有較好的表現(xiàn),如下表所示:
表4 GBDT算法參數(shù)表Tab.4 GBDT algorithm parameter table
其中,弱學(xué)習(xí)器的最大迭代次數(shù)太小,模型容易欠擬合,而太大又容易過擬合,一般與學(xué)習(xí)速率結(jié)合考慮,本文中經(jīng)過參數(shù)調(diào)節(jié),當(dāng)弱學(xué)習(xí)器的最大迭代次數(shù)為100并且學(xué)習(xí)速率為0.3的時候,模型的表現(xiàn)最為良好。最大深度一般來說,數(shù)據(jù)少或者特征少的時候可以不管這個值,但是結(jié)合本文的數(shù)據(jù)多特征特點(diǎn),需要限制最大深度防止過擬合,經(jīng)過參數(shù)調(diào)節(jié),當(dāng)最大深度為3的時候,模型的表現(xiàn)最為良好。每個拆分的最小樣本數(shù)限制了模型子樹繼續(xù)劃分的條件,如果某節(jié)點(diǎn)的樣本數(shù)少于這個值,則不會繼續(xù)再嘗試選擇最優(yōu)特征來進(jìn)行劃分。 本文的數(shù)據(jù)樣本總量并不大,因此設(shè)置為2時模型的表現(xiàn)最為良好。葉節(jié)點(diǎn)處所需的最小樣本數(shù)限制了葉子節(jié)點(diǎn)最少的樣本數(shù),如果某葉子節(jié)點(diǎn)數(shù)目小于樣本數(shù),則會和兄弟節(jié)點(diǎn)一起被剪枝,同樣因為本文的數(shù)據(jù)樣本量不大,采用默認(rèn)的值1會使模型表現(xiàn)較為良好。
采用測試數(shù)據(jù)集對于參數(shù)調(diào)節(jié)完畢并已經(jīng)訓(xùn)練完成的模型進(jìn)行預(yù)測及結(jié)果驗證。在驗證指標(biāo)的選擇方面,由于決定預(yù)測模型精確性的評價指標(biāo)較多,采取單一的評價指標(biāo)容易受到計算誤差的影響[23],因此本文采用的驗證指標(biāo)為均方誤差(MSE)[24]及R方值,均方誤差(MSE)能夠判斷參數(shù)估計值與參數(shù)值之差平方的期望值,是衡量平均誤差的一種較方便的方法,通常用來評價數(shù)據(jù)的變化程度,MSE的值越小,說明預(yù)測模型描述實驗數(shù)據(jù)具有更好的精確度。R方值能夠反映因變量的全部變異能通過回歸關(guān)系被自變量解釋的比例,其使用均值作為誤差基準(zhǔn),計算預(yù)測誤差是否大于或者小于均值基準(zhǔn)誤差,R方值為1時代表樣本中預(yù)測值和真實值完全相等,沒有任何誤差,為0時代表樣本的每項預(yù)測值都等于均值,為負(fù)時代表模型的預(yù)測表現(xiàn)不如隨機(jī)采取,處于失效狀態(tài)[25]。
驗證指標(biāo)的輸出結(jié)果及說明如下表所示:
表5 驗證指標(biāo)輸出結(jié)果及說明Tab.5 Verification index output results and description
驗證指標(biāo)顯示模型對于光伏電站出力有較好的預(yù)測效果。采用可視化工具進(jìn)一步驗證模型的預(yù)測效果,選取測試數(shù)據(jù)集中的前100條數(shù)據(jù)及前500條數(shù)據(jù),疊加繪制真實值及預(yù)測值,直觀顯示兩者之間的差異,如下圖所示:
圖3 測試集前100條數(shù)據(jù)預(yù)測值真實值對比曲線圖(藍(lán)色為預(yù)測值,黃色為真實值)Fig.3 Comparison curve of predicted value and real value of the first 100 data in the test set (blue is the predicted value and yellow is the real value)
圖4 測試集前500條數(shù)據(jù)預(yù)測值真實值對比曲線圖(藍(lán)色為預(yù)測值,黃色為真實值)Fig.4 Comparison curve of predicted value and real value of the first 500 data in the test set (blue is the predicted value and yellow is the real value)
兩幅預(yù)測值真實值對比曲線圖驗證指標(biāo)同樣顯示模型對于光伏電站出力有較好的預(yù)測效果。
GBDT算法進(jìn)行訓(xùn)練模型時,不能使用類似于mini-batch的方法,而是需要對樣本進(jìn)行無數(shù)次的遍歷。如果想要提高訓(xùn)練的速度,就必須提前把樣本數(shù)據(jù)加載到內(nèi)存中;但這樣會造成可以輸入的樣本數(shù)據(jù)受限于內(nèi)存的大小。然而在I/O數(shù)量眾多的情況下,算法運(yùn)行速度仍相對較慢。為了使GBDT能夠更加高效地使用更多的樣本,學(xué)者開始考慮引入分布式GBDT。但是相對于分布式GBDT,LightGBM更具優(yōu)越性。本文算法實施過程中所采用的LightGBM是一個實現(xiàn)GBDT的快速、分布式、高性能框架,它的特點(diǎn)是訓(xùn)練時保留所有梯度較大的樣本,而對梯度較小的樣本隨機(jī)采樣,并引入常量系數(shù),抵消采樣對數(shù)據(jù)分布的影響。
其他能源電力行業(yè)在實施GBDT算法時LightGBM框架也是最常用的GBDT框架之一,如文獻(xiàn)[26]提出了基于LightGBM和深度神經(jīng)網(wǎng)絡(luò)(DNN)的配電網(wǎng)在線拓?fù)浔孀R方法。該方法借助LightGBM實現(xiàn)特征選擇,篩選出對配電網(wǎng)拓?fù)浔孀R最有效的少量量測。文獻(xiàn)[27]在基于卷積神經(jīng)網(wǎng)絡(luò)與LightGBM的短期風(fēng)電功率預(yù)測方法時考慮到單一卷積模型在預(yù)測風(fēng)電時的局限性,將LightGBM分類算法集成到模型中,從而提高預(yù)測的準(zhǔn)確性和魯棒性。
(1)GBDT算法對于多維度特征的光伏出力預(yù)測有較好的預(yù)測效果,適用于光伏電站出力預(yù)測場景。由于光伏電站的數(shù)據(jù)各個特征維度之間的測量單位不同,各維度的單位之間存在數(shù)量級差異,與其他基于樹的模型類似,GBDT算法不需要對數(shù)據(jù)進(jìn)行縮放,能夠避免各維度的單位之間存在的數(shù)量級差異對模型的預(yù)測效果產(chǎn)生影響。
(2)通過相關(guān)性分析能夠準(zhǔn)確判斷對光伏電站出力影響較大的特征,從原始數(shù)據(jù)中找出具有物理意義的特征。從而剔除不相關(guān)或者冗余的特征,減少有效特征的個數(shù),減少模型訓(xùn)練的時間,提高模型的精確度。
(3)本文所采用的交叉驗證方法為Holdout交叉驗證法,能夠避免模型訓(xùn)練過擬合[28]的情況。將整個數(shù)據(jù)集以60%、20%和20%的比例分別拆分成訓(xùn)練數(shù)據(jù)集、交叉驗證數(shù)據(jù)集和測試數(shù)據(jù)集是較符合常規(guī)的做法,三個數(shù)據(jù)集之間需要確保完全獨(dú)立沒有重復(fù)。
(4)預(yù)測效果驗證采用指標(biāo)驗證和可視化驗證結(jié)合的方式是較為理想的多角度驗證手段。本文所采用的兩個驗證指標(biāo)包括均方誤差(MSE)及R方值指標(biāo)適用于光伏電站出力預(yù)測場景。
(5)GBDT算法實施過程中,本文所采用的LightGBM是一個實現(xiàn)GBDT算法的快速、分布式、高性能框架,適用于光伏電站出力預(yù)測場景。
(6)本文在GBDT模型超參數(shù)調(diào)節(jié)過程中采用了網(wǎng)格自動調(diào)參方法,在算法實施過程中算法將會使用交叉驗證來評估超參數(shù)值的所有可能組合,根據(jù)交叉驗證的結(jié)果選擇使模型預(yù)測效果最為精準(zhǔn)的超參數(shù)組合。避免了手工調(diào)節(jié)參數(shù)的片面性。
(7)光伏電站出力預(yù)測有超短期、短期,根據(jù)時間周期的不同可以采用不同的機(jī)器學(xué)習(xí)、深度學(xué)習(xí)或者時序預(yù)測算法,可以考慮采用包含本文的GBDT模型在內(nèi)的多種預(yù)測模型融合的方案來適應(yīng)不同的時間周期預(yù)測。