任利強(qiáng) 張立民 王海鵬 郭 強(qiáng)
(海軍航空大學(xué)信息融合研究所 煙臺 264001)
短期負(fù)荷預(yù)測(short-term load forecasting,STLF)是電力系統(tǒng)負(fù)荷預(yù)測的重要組成部分,也是智能電網(wǎng)建設(shè)的基本環(huán)節(jié)之一[1]。STLF的主要應(yīng)用是為機(jī)組組合和經(jīng)濟(jì)調(diào)度提供負(fù)荷預(yù)測[2]。例如,如果預(yù)先知道負(fù)荷需求,便可以用盡可能低的成本運(yùn)行發(fā)電機(jī),從而提高發(fā)電廠的經(jīng)濟(jì)效益。STLF的第二個應(yīng)用是電力系統(tǒng)的安全評估。此外,短期負(fù)荷預(yù)測結(jié)果有助于實(shí)現(xiàn)節(jié)能減排和環(huán)境保護(hù)的目標(biāo)。
目前,STLF方法可分為經(jīng)典方法、人工智能方法和機(jī)器學(xué)習(xí)方法三類。經(jīng)典預(yù)測方法基于數(shù)學(xué)模型,包括時間序列方法、回歸分析方法等[3],經(jīng)典預(yù)測法是一種簡單的線性方法,對于具有非線性特性的電力負(fù)荷預(yù)測精度不夠。人工智能方法主要有神經(jīng)網(wǎng)絡(luò)、極限學(xué)習(xí)機(jī)等,文獻(xiàn)[4]提出一種利用主成分分析法簡化BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的短期電力負(fù)荷預(yù)測方法,該方法具有較快的學(xué)習(xí)速度。機(jī)器學(xué)習(xí)方法主要有支持向量機(jī)、隨機(jī)森林等,文獻(xiàn)[5]提出一種利用小波變異果蠅算法優(yōu)化支持向量機(jī)模型參數(shù)的短期負(fù)荷預(yù)測方法,預(yù)測精度得到了明顯提高;文獻(xiàn)[6]基于Spark平臺對隨機(jī)森林算法進(jìn)行并行化處理,該算法在短期電力負(fù)荷預(yù)測時間上具有明顯的優(yōu)勢,但無法保證預(yù)測的精度。隨著智能電網(wǎng)的發(fā)展,電網(wǎng)中可獲取的數(shù)據(jù)類型和數(shù)據(jù)量迅速增漲。上述方法在處理大規(guī)模、復(fù)雜多樣的數(shù)據(jù)時不能兼顧預(yù)測速度和精度,具有一定的局限性。近年來,新提出的極限梯度提升(XGBoost)機(jī)器學(xué)習(xí)算法計算速度快、準(zhǔn)確性高。目前,在生物醫(yī)學(xué)工程和經(jīng)濟(jì)金融等領(lǐng)域都有良好的性能[7~8]。文獻(xiàn)[9]使用XGBoost算法建立短期電力負(fù)荷預(yù)測模型,預(yù)測精度和速度均有明顯地提高。然而,該文獻(xiàn)未考慮實(shí)際應(yīng)用對象,直接將XGBoost算法應(yīng)用于短期電力負(fù)荷預(yù)測,且對負(fù)荷樣本集的預(yù)處理工作研究較少,預(yù)測精度有待進(jìn)一步提高。
針對上述問題,提出一種基于優(yōu)化K-means聚類的改進(jìn)XGBoost短期電力負(fù)荷預(yù)測方法。采用改進(jìn)模擬退火遺傳(Improved Simulated Annealing and Genetic Algorithm,IGASA)算 法 優(yōu) 化 的K-means算法對電力負(fù)荷樣本進(jìn)行分類,并利用改進(jìn)的XGBoost(Improved Extreme Gradient Boosting,IXGBoost)算法對不同類別的負(fù)荷樣本建立短期電力負(fù)荷組合預(yù)測模型。使用某市實(shí)測電力負(fù)荷數(shù)據(jù)進(jìn)行負(fù)荷預(yù)測實(shí)驗(yàn),以檢驗(yàn)本文方法的有效性和準(zhǔn)確性。
相似屬性因素下負(fù)荷曲線具有相似性,為了進(jìn)一步提高負(fù)荷預(yù)測的準(zhǔn)確性,利用K-means算法對電力負(fù)荷樣本進(jìn)行聚類分析。由于K-means算法隨機(jī)地選擇初始聚類中心,容易陷入局部最優(yōu)解,影響聚類質(zhì)量[10]。因此,采用IGASA算法搜索K-means的全局最優(yōu)初始聚類中心點(diǎn)。
K-means算法根據(jù)聚類的個數(shù)c隨機(jī)地選擇c個樣本點(diǎn)作為初始聚類中心,通過計算剩余樣本和聚類中心的距離,將樣本劃分到距離其最近的類中,之后根據(jù)聚類的結(jié)果更新聚類的中心點(diǎn)[12]。
K-means的目標(biāo)函數(shù)定義如下:
式中,xi是第i個樣本點(diǎn),cj是第j個聚類的中心,d(xi,cj)是樣本點(diǎn)xi到其聚類中心cj的距離。
聚類中心的計算公式為
式中,c*j是更新后的第j個聚類的中心,nj是第j個聚類中的樣本數(shù)。
K-means算法通過不斷地迭代計算d(xi,cj)和cj,使得目標(biāo)函數(shù)值趨向于最小。
遺傳算法(Genetic Algorithm,GA)是一種結(jié)合生物進(jìn)化與隨機(jī)交換理論的自適應(yīng)搜索全局最優(yōu)解的群體智能優(yōu)化算法[12]。模擬退火(Simulated Annealing,SA)是一種通過模擬高溫物體退火過程,并利用Metropolis接受準(zhǔn)則避免算法陷入局部最優(yōu)陷阱的優(yōu)化算法[13]。GA具有全局搜索能力強(qiáng)的特點(diǎn),但其局部搜索能力弱,易于陷入局部最優(yōu)解;SA局部搜索能力強(qiáng),能夠避免陷入局部最優(yōu)的解,但其全局搜索能力差[14]。IGASA方法結(jié)合了GA和SA各自的優(yōu)勢,不僅可以克服遺傳算法易于陷入局部最優(yōu)的缺點(diǎn),而且能加快算法收斂到全局最優(yōu)解的時間。
2.2.1 算法步驟
IGASA優(yōu)化K-means聚類中心算法具體步驟如下。
1)初始化參數(shù)。
假設(shè)將m維負(fù)荷樣本聚類為c類,首先初始化種群大小為n=10,種群中個體染色體的長度為c×m,設(shè)置最大進(jìn)化的代數(shù)gmax=100,退火溫度T0=100,終止溫度Tend=1,冷卻系數(shù)α=0.95。
2)定義適應(yīng)度函數(shù)。
隨機(jī)產(chǎn)生c個聚類中心并生成初始種群,計算種群中個體的適應(yīng)度值,其中,適應(yīng)度函數(shù)定義如下:
式中,J為式(1)定義的K-means聚類算法的目標(biāo)函數(shù),Jmax為算法定義的目標(biāo)函數(shù)最大值,T為當(dāng)前溫度。
該適應(yīng)度函數(shù)可使種群中個體之間的差異(適應(yīng)度值的差異)隨退火溫度的減小而降低,從而增加溫度降低時選擇適應(yīng)度較小個體的概率,確保了種群中個體的多樣性,有效地提高了算法從局部最優(yōu)中跳出的能力。
3)初始化進(jìn)化代數(shù)g=1。
4)通過選擇、交叉和變異操作,更新個體的染色體。
使用輪盤選擇方式對個體進(jìn)行選擇,將適應(yīng)度高的個體保留,適應(yīng)度低的個體丟棄,使種群進(jìn)化向適應(yīng)度高的方向發(fā)展[15]。隨機(jī)地對選擇的個體進(jìn)行組隊(duì),以式(4)定義的交叉概率Pc對個體進(jìn)行自適應(yīng)的交叉操作,接著以式(5)定義的變異概率Pm對個體進(jìn)行自適應(yīng)的變異操作。
式(4)和式(5)中,fmax和favg分別是群體中的最大適應(yīng)度值和平均適應(yīng)度值,f′是交叉時較大適應(yīng)度個體的適應(yīng)度值。
上述自適應(yīng)交叉變異策略可使Pc和Pm隨著適應(yīng)度值的變化而變化,即適應(yīng)度值較高的個體具有較低的Pc和Pm,從而將該個體得以保留,而適應(yīng)度值較低的個體具有較高的Pc和Pm。該自適應(yīng)方法確保了GA算法的收斂特性和種群的多樣性。
5)生成新的種群,計算新種群中子代個體適應(yīng)度值。
6)對新種群的個體進(jìn)行模擬退火操作。若新種群子代中第i個個體適應(yīng)度值fi′大于父代中第i個個體的適應(yīng)度值fi,則用子代個體替換父代個體;否則,以Metropolis規(guī)則,即式(6)定義的概率P接受子代個體,丟棄舊的個體。
7)循環(huán)。若g<gmax,則g=g+1,轉(zhuǎn)到步驟4);否則,轉(zhuǎn)到步驟8)。
8)若Ti<Tend,則算法結(jié)束,輸出全局最優(yōu)解;否則,進(jìn)行降溫處理,Ti+1=αTi,轉(zhuǎn)到步驟3),α為冷卻系數(shù)。
2.2.2 算法流程
IGASA優(yōu)化K-means聚類中心算法詳細(xì)流程如圖1所示。
圖1 基于IGASA優(yōu)化K-means聚類算法流程圖
XGBoost(extreme gradient boosting)是一種基于梯度提升回歸樹的改進(jìn)算法[16]。該算法不僅具有傳統(tǒng)Boosting算法精度高的優(yōu)點(diǎn),而且能夠高效地處理稀疏數(shù)據(jù),靈活地實(shí)現(xiàn)分布式并行計算。因此,XGBoost算法適用于大規(guī)模數(shù)據(jù)集。此外,XGBoost在損失函數(shù)中加入了正則項(xiàng),用以控制模型的復(fù)雜度和降低模型的方差,使學(xué)習(xí)到的模型更簡單,防止了過度擬合風(fēng)險。XGBoost在確保一定計算速度的情況下提高了算法精度。
XGBoost算法通過建立一系列決策樹并為每個葉節(jié)點(diǎn)分配一個量化權(quán)重來實(shí)現(xiàn)對目標(biāo)變量的估計。對于具有n個樣本和m個特征的給定數(shù)據(jù)集,假設(shè)XGBoost模型有K個決策樹,則電力負(fù)荷預(yù)測模型為
式中,q(xi)表示將xi映射到對應(yīng)葉子節(jié)點(diǎn)的第k個決策樹的結(jié)構(gòu)函數(shù),ω是葉子結(jié)點(diǎn)的量化權(quán)重向量(即葉子分?jǐn)?shù)),T是樹中葉子節(jié)點(diǎn)的數(shù)量。
XGBoost算法在損失函數(shù)中加入正則化項(xiàng),同時考慮了模型的準(zhǔn)確性和復(fù)雜性。通過最小化公式(9)的損失函數(shù)來學(xué)習(xí)預(yù)測模型。
考慮到電網(wǎng)短期負(fù)荷變化特點(diǎn)和負(fù)荷預(yù)測中極值點(diǎn)預(yù)測誤差較大,可以用極大和極小值負(fù)荷來修正負(fù)荷的預(yù)測值。具體而言,根據(jù)電網(wǎng)負(fù)荷需求特點(diǎn),當(dāng)前負(fù)荷需求與前一天的負(fù)荷需求具有極大相似性和繼承性,此外,前一天負(fù)荷需求的極大與極小值對當(dāng)前負(fù)荷的預(yù)測具有指導(dǎo)作用。因此,本文在XGBoost原有損失函數(shù)的基礎(chǔ)上引入式(10)懲罰函數(shù),構(gòu)建改進(jìn)XGBoost(improved extreme gradientboosting)電力負(fù)荷預(yù)測模型:
式中,yi,min和yi,max是負(fù)荷對應(yīng)的前一天的極大和極小值負(fù)荷,α1和α2是調(diào)節(jié)懲罰函數(shù)效應(yīng)的系數(shù)。根據(jù)式(11),如果,的值小于1。此外,通過適當(dāng)?shù)卣{(diào)整參數(shù)α1和α2,當(dāng)在區(qū)間(yi,min,yi,max)內(nèi),p的值可以被忽略。在區(qū)間(yi,min,yi,max)外時,p變得非常大。在此,設(shè)置α1和α2的值分別為2和0.0001。
IXGBoost算法通過最小化式(11)增加懲罰項(xiàng)的損失函數(shù)來學(xué)習(xí)負(fù)荷預(yù)測模型。
基于上述IXGBoost算法訓(xùn)練短期電力負(fù)荷預(yù)測模型。
采用IXGBoost算法進(jìn)行短期負(fù)荷預(yù)測,具體流程如圖2所示。
具體步驟如下。
1)數(shù)據(jù)采集及預(yù)處理。電力負(fù)荷受歷史負(fù)荷、氣象因素、日期類型等多種因素影響。本文采集歷史負(fù)荷因素,包括前一天負(fù)荷、前一天負(fù)荷極值;氣象因素,包括濕度、溫度、風(fēng)速、降雨量、氣壓;日期類型因素,包括小時、星期、月份、節(jié)假日等數(shù)據(jù)集進(jìn)行負(fù)荷預(yù)測。根據(jù)文獻(xiàn)[17],歷史負(fù)荷和氣象因素具有持續(xù)性效應(yīng),選擇與這些因素較相關(guān)的前四個時刻值以及日期類型,總計32維電力負(fù)荷屬性特征進(jìn)行負(fù)荷預(yù)測。
式中,X是電力負(fù)荷屬性特征集;xi是第i個屬性特征矩陣;m=32是屬性特征的數(shù)量。
為了避免由于數(shù)據(jù)采集誤差、設(shè)備的故障和干擾噪聲等因素引起的樣本數(shù)據(jù)缺失或者異常,在預(yù)測前對數(shù)據(jù)集進(jìn)行預(yù)處理[18]。本文利用最近臨插補(bǔ)法對采集到的原始數(shù)據(jù)集中缺失和異常的數(shù)據(jù)點(diǎn)進(jìn)行填補(bǔ)和糾正。
由于各屬性的物理單位不同,不同屬性的數(shù)值相差較大,影響預(yù)測結(jié)果的精度。因此,對數(shù)據(jù)集進(jìn)行如下歸一化處理:
式中,xi為原始數(shù)據(jù);x′為歸一化后的數(shù)據(jù),其取值范圍是[0,1]。
2)特征選擇。負(fù)荷預(yù)測中使用過多的特征變量會增加模型的復(fù)雜度和訓(xùn)練時間,從而影響預(yù)測結(jié)果的準(zhǔn)確性。因此,參考文獻(xiàn)[19]使用最大相關(guān)最小冗余(maximum relevance minimum redundancy,MRMR)算法對步驟1)采集到的負(fù)荷屬性特征進(jìn)行選擇,以減少數(shù)據(jù)中的冗余信息,提高預(yù)測精度。
3)負(fù)荷樣本聚類。根據(jù)第二節(jié),利用IGASA優(yōu)化的K-means聚類算法對負(fù)荷樣本進(jìn)行聚類分析,將相似特征屬性的負(fù)荷樣本劃分為一類。
4)建立IXGBoost負(fù)荷預(yù)測模型。采用IXGBoost算法對每個類別的電力負(fù)荷樣本集建立負(fù)荷預(yù)測模型,得到組合預(yù)測模型。
5)負(fù)荷預(yù)測結(jié)果反歸一化處理。根據(jù)式(14)對該預(yù)測結(jié)果進(jìn)行反歸一化處理:
式中,y′i是i時刻的預(yù)測值;yi是i時刻反歸一化的預(yù)測值;N是預(yù)測樣本數(shù)量。
圖2 短期電力負(fù)荷預(yù)測流程圖
本文數(shù)據(jù)集來源于某市2013-2017年實(shí)測電力負(fù)荷數(shù)據(jù)和相應(yīng)時間的氣象數(shù)據(jù),數(shù)據(jù)的采樣間隔為1小時。實(shí)驗(yàn)選取2013年至2016年數(shù)據(jù)為訓(xùn)練集,對35012個樣本進(jìn)行分析,建立電力負(fù)荷預(yù)測模型,對應(yīng)預(yù)測模型每次輸出未來一天24小時的負(fù)荷值。選取2017年數(shù)據(jù)為測試集,以測試模型的預(yù)測性能。本文經(jīng)特征選擇后的輸入變量如表1所示。
表1 輸入變量描述
采用平均絕對百分比誤差(MAPE)和平均絕對誤差(MAE)作為誤差評估標(biāo)準(zhǔn)來分析預(yù)測結(jié)果的準(zhǔn)確性。
式中,Yi表示真實(shí)值,表示預(yù)測值,n為預(yù)測時間點(diǎn)數(shù)。MAPE越小,預(yù)測結(jié)果越準(zhǔn)確。
采用交叉驗(yàn)證算法確定K-means算法的聚類個數(shù)c=4,利用IGASA優(yōu)化的K-means算法對訓(xùn)練樣本進(jìn)行聚類分析,聚類劃分結(jié)果如表2所示。
表2 聚類結(jié)果
為了測試IXGBoost模型的預(yù)測效果,在相同實(shí)驗(yàn)條件下,采用梯度提升回歸樹(GBRT)模型和傳統(tǒng)XGBoost模型作為對比進(jìn)行電力負(fù)荷預(yù)測,選取該市2017年2個具有代表性的日期進(jìn)行實(shí)驗(yàn)分析。圖3顯示了上述各模型的負(fù)荷預(yù)測結(jié)果。
圖3 不同模型預(yù)測結(jié)果對比
從圖3可觀察到,當(dāng)電力負(fù)荷的變化較平緩時,如圖3(a)的09:00-14:00與圖3(b)中的07:00-14:00,三種模型的預(yù)測曲線和實(shí)際負(fù)荷曲線較為接近。然而,在電力負(fù)荷波動較大的極值點(diǎn)附近,如圖3(a)的16:00-22:00與圖3(b)中的0:00-06:00、16:00-21:00,GBRT和XGBoost模型的負(fù)荷預(yù)測值與實(shí)際負(fù)荷值相差較大,而IXGBoost模型的預(yù)測結(jié)果更接近實(shí)際負(fù)荷值。
表3 不同模型預(yù)測結(jié)果誤差對比
表3顯示了上述各模型的預(yù)測誤差,從對比結(jié)果可以看出,與GBRT模型相比,XGBoost模型具有較小的預(yù)測誤差。IXGBoost在傳統(tǒng)XGBoost損失函數(shù)中加入懲罰項(xiàng),提高了模型在負(fù)荷波動較大的極值點(diǎn)附近的預(yù)測性能。預(yù)測誤差結(jié)果表明,與XGBoost和GBRT模型相比,IXGBoost模型具有較高的預(yù)測精度。
分別采用聚類IXGBoost(KM+IXGBoost,方法1)、GA優(yōu)化聚類IXGBoost(GA+KM+IXGBoost,方法2)和IGASA優(yōu)化聚類IXGBoost(IGASA+KM+IXGBoost,方法3)進(jìn)行電力負(fù)荷預(yù)測。上述三種法方法預(yù)測結(jié)果的曲線如圖4所示,預(yù)測結(jié)果的誤差見表4。
圖4 不同預(yù)測模型結(jié)果對比
從圖4可看出,在電力負(fù)荷變化不明顯期間,如圖4(a)的09:00-13:00與圖4(b)的07:00-15:00,三種方法負(fù)荷預(yù)測結(jié)果都可以較好地擬合實(shí)測負(fù)荷的變化趨勢。但在電力負(fù)荷變化比較劇烈的時期,如圖4(a)的15:00-21:00與圖4(b)中的16:00-21:00,方法3比方法1和方法2具有更好的預(yù)測性能。此外,從圖4與表4能夠看出,方法2的負(fù)荷預(yù)測準(zhǔn)確度高于方法1。這是因?yàn)榕c方法2相比,方法1隨機(jī)地選擇K-means的初始聚類中心。方法3相較于方法2不僅改進(jìn)了遺傳算法的適應(yīng)度函數(shù)和交叉變異算子,而且引入模擬退火算法克服了遺傳算法易陷入局部最優(yōu)的缺點(diǎn),使算法快速收斂到全局最優(yōu)解。實(shí)際預(yù)測結(jié)果表明方法3具有較低的預(yù)測誤差。
表4 不同模型預(yù)測結(jié)果誤差對比
利用方法3預(yù)測該市2017年小時用電負(fù)荷(以12月為例),結(jié)果如圖5所示。對2017全年電力負(fù)荷預(yù)測誤差進(jìn)一步分析,MAPE為1.93%,MAE為34.13MW,結(jié)果表明本文提出的方法可以有效、準(zhǔn)確地預(yù)測短期電力負(fù)荷的變化規(guī)律,能滿足實(shí)際應(yīng)用需求。
圖5 12月份電力負(fù)荷預(yù)測值與實(shí)測值對比
本文以電網(wǎng)實(shí)測大數(shù)據(jù)為基礎(chǔ),提出一種基于優(yōu)化K-means聚類的IXGBoost短期電力負(fù)荷預(yù)測方法。該方法采用改進(jìn)適應(yīng)度函數(shù)和交叉變異算子的模擬退火算法優(yōu)化K-means的初始聚類中心,有效解決了遺傳算法局部尋優(yōu)的問題,使算法快速收斂到K-means全局最優(yōu)初始聚類中心。基于K-means聚類結(jié)果,利用改進(jìn)XGBoost算法建立電力負(fù)荷組合預(yù)測模型,并根據(jù)不同的屬性特征使用不同的預(yù)測模型,提高了電力負(fù)荷預(yù)測模型的準(zhǔn)確度。實(shí)驗(yàn)結(jié)果證明了本文方法在短期電力負(fù)荷預(yù)測實(shí)際應(yīng)用中的有效性和準(zhǔn)確性。