田 野, 王大鵬, 劉榮權(quán), 鐘佳晨
(1.國電南瑞南京控制系統(tǒng)有限公司, 江蘇 南京 211106;2.國網(wǎng)內(nèi)蒙古東部電力有限公司供電服務(wù)監(jiān)管與支持中心, 內(nèi)蒙古 通遼 028000;3.南京農(nóng)業(yè)大學(xué) 人工智能學(xué)院, 江蘇 南京 210095)
隨著 “雙碳”發(fā)展目標(biāo)的提出,新型電力系統(tǒng)以新能源為主體,在降低碳排放領(lǐng)域有著明顯特征和優(yōu)勢。但由于源荷不確定性以及低碳訴求,電網(wǎng)結(jié)構(gòu)和運(yùn)行模式也面臨新的問題[1-2]。以電力系統(tǒng)消費(fèi)側(cè)為例,能源設(shè)備的電能配置容量由用能比例、用戶需求等因素決定,如不能對其精細(xì)化預(yù)測和控制,很可能出現(xiàn)電力資源浪費(fèi)、用戶體驗(yàn)下降等問題,最終影響系統(tǒng)業(yè)務(wù)的營銷增長[2]。因此,對電能負(fù)荷預(yù)測進(jìn)行研究分析對于優(yōu)化電力負(fù)荷調(diào)度、改進(jìn)電網(wǎng)結(jié)構(gòu)進(jìn)而實(shí)現(xiàn)“雙碳”目標(biāo)具有重要意義。
數(shù)據(jù)驅(qū)動技術(shù)在能源負(fù)荷預(yù)測問題中應(yīng)用廣泛[3-4],從技術(shù)角度可以分為兩類,即傳統(tǒng)方法和現(xiàn)代方法。其中,傳統(tǒng)方法包括回歸分析法[5]、時(shí)間序列法[6]和灰色模型法[7-8]。在相關(guān)研究中,蘇振宇等提出了一種結(jié)合季節(jié)調(diào)節(jié)和Holt-Winters 方法的月度負(fù)荷預(yù)測方法,實(shí)現(xiàn)了較高的預(yù)測精度[9]。李震等提出了一種基于數(shù)據(jù)驅(qū)動線性聚類和自回歸積分滑動平均法進(jìn)行長期電力負(fù)荷預(yù)測的方法,解決了負(fù)荷波動大導(dǎo)致的長期負(fù)荷預(yù)測精度低的問題[10]。
現(xiàn)有方法包括人工神經(jīng)網(wǎng)絡(luò)[11-14]、模糊控制、支持向量機(jī)[15]和組合模型。J.Munkhammar 等使用馬爾科夫鏈混合分配模型(MCM)對澳大利亞住宅用電量進(jìn)行超短期預(yù)測,取得了很好的效果[16]。徐先峰等提出了一種多層Bi-LSTM 的Seq2seq 深度學(xué)習(xí)模型(BL-Seq2seq),實(shí)現(xiàn)了短期用電負(fù)荷預(yù)測[17]。但是,這些方法的局限性在于無法應(yīng)用于數(shù)據(jù)周期較長的場景中。為此,魏明奎等采用BFGS-FA 優(yōu)化的分?jǐn)?shù)階灰色預(yù)測模型對中長期負(fù)荷進(jìn)行預(yù)測。該方法利用BFGS-FA 尋優(yōu)算法對分?jǐn)?shù)階灰色預(yù)測模型進(jìn)行優(yōu)化,最后得到最優(yōu)階數(shù)的分?jǐn)?shù)階灰色預(yù)測模型[18]。
綜上,從現(xiàn)有的應(yīng)用場景來看,絕大多數(shù)對于電力負(fù)荷的預(yù)測方法都是應(yīng)用于短期內(nèi)的電力變化數(shù)據(jù),通常為某一地區(qū)在幾個(gè)月內(nèi)的負(fù)荷數(shù)據(jù)。這樣的數(shù)據(jù)通常周期性較短且變化的幅度較小,在使用現(xiàn)有方法進(jìn)行擬合時(shí)往往能夠獲得不錯(cuò)的效果。但是如果電力數(shù)據(jù)的周期變長,同時(shí)其中峰值低估的變化幅度也變大,則現(xiàn)有的許多方法效果會有所下降。
現(xiàn)有的大多數(shù)方法中使用的核函數(shù)往往是預(yù)先設(shè)定好的,這樣的設(shè)計(jì)依賴于較強(qiáng)的先驗(yàn)知識以及較大的數(shù)據(jù)量,單一的核函數(shù)無法很好地匹配多變的應(yīng)用情況,導(dǎo)致只有與該核函數(shù)預(yù)設(shè)參數(shù)較為匹配的數(shù)據(jù)能夠被很好的擬合。此外,這些方法的可解釋性與操作性門檻較高,進(jìn)一步限制了其大范圍的推廣和使用。
對于周期長、變化幅度大的電能數(shù)據(jù),需要所使用的方法能夠?qū)κ褂玫暮撕瘮?shù)進(jìn)行自適應(yīng)選擇,使其能夠根據(jù)應(yīng)用場景的數(shù)據(jù)特點(diǎn)來進(jìn)行匹配。因此,本文采用基于內(nèi)核時(shí)變回歸模型(Kernel-based Time-varying Regression Model, KTR)[19],該模型將時(shí)間序列視為局部趨勢、季節(jié)性和附加回歸量的加法組合,這三個(gè)分量的系數(shù)都隨時(shí)間變化。其使用核回歸產(chǎn)生時(shí)變系數(shù),用貝葉斯框架合并實(shí)驗(yàn)結(jié)果,從而擬合用電數(shù)據(jù)曲線。實(shí)驗(yàn)結(jié)果與對比分析證明了本文方法在電能負(fù)荷預(yù)測上的可行性以及準(zhǔn)確性方面的明顯優(yōu)勢。
傳統(tǒng)的線性回歸方法通常擬合出一維直線,核回歸則可以將低維的數(shù)據(jù)上升到高維,利用核函數(shù)作為權(quán)重函數(shù)來建立非線性回歸模型。而內(nèi)核時(shí)變回歸模型(Kernel-based Time-varying Regression Model, KTR)[19]則是在核回歸的基礎(chǔ)上,將時(shí)間序列作為自變量參數(shù)從而更好地獲取因變量隨時(shí)間變化的關(guān)系。本文將貝葉斯建模和核回歸的思想結(jié)合在一起,目的是更好地結(jié)合試驗(yàn)結(jié)果對因變量與時(shí)間自變量之間的關(guān)系加以解釋。
基礎(chǔ)的回歸函數(shù)會將預(yù)測值表現(xiàn)為與自變量參數(shù)相關(guān)的收益遞減函數(shù)形式?,F(xiàn)有的方法中較為常見的是用公式(1)來描述電能負(fù)荷預(yù)測:
式中:xt,p是回歸變量,在本文的研究中指不同的測量日期;y^t是電能負(fù)荷的測量值;g是一個(gè)表現(xiàn)時(shí)間序列的過程;f指變化趨勢函數(shù);P是回歸變量的個(gè)數(shù);T是時(shí)間點(diǎn)的個(gè)數(shù)。本文在擬合的過程中需要對函數(shù)f進(jìn)行選擇,使得y^t的可解釋性增強(qiáng),同時(shí)可以分解為不同的驅(qū)動因素。為使公式更加直觀,可將其描述為如下形式:
式中:elt是非周期上的變化趨勢;而est則是周期性的變化趨勢;βt,p是特定節(jié)點(diǎn)的時(shí)間變化系數(shù)。
但是,傳統(tǒng)的方法在應(yīng)對時(shí)間周期過長的數(shù)據(jù)時(shí),因?yàn)橛?jì)算過于冗雜導(dǎo)致效率不高,計(jì)算開銷較大。為此,本文使用KTR 模型對電能進(jìn)行預(yù)測。
KTR 模型是在貝葉斯框架下基于內(nèi)核的時(shí)變回歸模型,其核心在于:將回歸系數(shù)表示為局部潛在變量的加權(quán)和,使用潛在變量來定義模型系數(shù)的平滑時(shí)變表示,而這些平滑表示形式是核平滑[19]。與典型的動態(tài)線性模型相比,KTR 模型有著更少的參數(shù),因此有著更快的計(jì)算速度。
KTR 模型將公式兩邊取對數(shù),可以將其表示為:
以回歸項(xiàng)為例,KTR 模型定義了一個(gè)潛在變量bjp作為第p個(gè)回歸量在時(shí)間tj時(shí)的回歸系數(shù),p= 1,2,…,P,j= 1,2,…,J,tj∈{ }1,2,…,T。對于每個(gè)回歸量,共有J個(gè)潛在變量,可以將bjp視為第p個(gè)回歸量分布在tj處的一個(gè)節(jié)點(diǎn)。因此,第p個(gè)回歸量的回歸系數(shù)就可以表示為J個(gè)局部潛在變量的加權(quán)和,第p個(gè)回歸量的回歸系數(shù)為:
其次,KTR 模型使用基于時(shí)間的權(quán)重函數(shù),本文中使用t和tj距離的加權(quán)函數(shù)可以更好地獲取t和tj時(shí)間點(diǎn)上數(shù)據(jù)的關(guān)系,公式如下:
式中k(·,·)為核函數(shù),分母為標(biāo)準(zhǔn)化節(jié)點(diǎn)的權(quán)值。
根據(jù)實(shí)際數(shù)據(jù)集中的不同,數(shù)據(jù)特征選擇的核函數(shù)不同。對于趨勢和周期性變化,本文所選用的核函數(shù)為:
式中ρ是scale 參數(shù)。
將方程改寫成矩陣形式,即:
式中:B為T×p的系數(shù)矩陣(元素為βt,j);K是T×J的內(nèi)核矩陣(元素為wj(t));b是J×P的節(jié)點(diǎn)矩陣(元素為bjp)。
因此,回歸項(xiàng)的公式為:
式中:Bt=(βt,1,βt,2,…,βt,p)和Xt是回歸或協(xié)變量矩陣的第t行。
同時(shí),在KTR 模型中,局部趨勢、周期性和回歸項(xiàng)的區(qū)別不大,因此都有類似的表達(dá)形式。則對于趨勢部分,有:
對于周期性成分,有:
式中:Xt,seas表示由傅里葉級數(shù)導(dǎo)出的季節(jié)協(xié)變量矩陣第t行。
除了時(shí)變系數(shù)回歸之外,KTR 模型同樣使用貝葉斯框架和可設(shè)置的后驗(yàn)進(jìn)行后驗(yàn)采樣,估計(jì)局部節(jié)點(diǎn)參數(shù)(b、blev和bseas),目的是對擬合結(jié)果的可能性加以數(shù)量化的評價(jià),使得在長期數(shù)據(jù)中進(jìn)行預(yù)測更加精準(zhǔn),避免過擬合的情況發(fā)生。對于趨勢和周期性成分,使用拉普拉斯先驗(yàn)(Laplace Prior)對相鄰節(jié)點(diǎn)建模,即:
式中:初始值b0,lev和bseas可以從均值為0 的拉普拉斯分布中采樣。
而對于回歸,KTR 模型設(shè)計(jì)了一個(gè)兩層的層次結(jié)果來獲得更穩(wěn)健的采樣,即:
式中:上標(biāo)“+”表示折疊的正態(tài)分布(系數(shù)符號的正限制)。
模型訓(xùn)練過程中,先對潛在變量先驗(yàn)進(jìn)行采樣獲得潛在變量采樣,然后使用隨機(jī)變分推斷(Stochastic Variational Inference, SVI)[20]估計(jì)潛在變量后驗(yàn),之后繼續(xù)上述的采樣估計(jì)得到節(jié)點(diǎn)系數(shù)后驗(yàn),最后利用公式(6)~式(8)得到時(shí)變系數(shù)lt、st、rt的估計(jì)值,并最終在測試集上進(jìn)行檢驗(yàn)。
基于內(nèi)核時(shí)變回歸模型的電能預(yù)測主要分為實(shí)驗(yàn)預(yù)處理、超參數(shù)選擇、模型訓(xùn)練三部分,處理步驟如圖1所示。為了避免原始數(shù)據(jù)中的缺失或異常值影響模型訓(xùn)練的精度,首先需要對數(shù)據(jù)進(jìn)行預(yù)處理,該過程包括異常值處理、填充缺失值和對數(shù)化。本文的預(yù)處理步驟為:
圖1 基于KTR 的用電數(shù)據(jù)預(yù)測處理流程
1) 原始數(shù)據(jù)存在因?yàn)橛涗浾`差導(dǎo)致的錯(cuò)誤數(shù)據(jù),會影響整體數(shù)據(jù)趨勢的變化,所以需要將出錯(cuò)的數(shù)據(jù)刪除或置0,防止實(shí)驗(yàn)結(jié)果被錯(cuò)誤的極端數(shù)據(jù)所影響。
2) 由于設(shè)備故障等原因?qū)е碌臄?shù)據(jù)缺失也會影響模型的擬合,在填充缺失數(shù)據(jù)的過程中,本文選擇后項(xiàng)數(shù)據(jù)填充的方法,將數(shù)據(jù)的后一個(gè)應(yīng)用于前列則更能體現(xiàn)數(shù)據(jù)的連續(xù)性。
3) 少數(shù)時(shí)間段的數(shù)據(jù)變化幅度會高于平均變化幅度,使得整體趨勢的預(yù)測受到影響。為了減少該影響,本文對現(xiàn)有的數(shù)據(jù)進(jìn)行對數(shù)化,縮小數(shù)據(jù)的絕對數(shù)值,將后續(xù)復(fù)雜的乘法運(yùn)算轉(zhuǎn)變?yōu)榧臃ㄟ\(yùn)算,降低了運(yùn)算的難度。
在獲取經(jīng)過預(yù)處理的完整數(shù)據(jù)集后,需要進(jìn)行超參數(shù)選擇實(shí)驗(yàn),確定在模型訓(xùn)練中所使用的最優(yōu)參數(shù)。由于本實(shí)驗(yàn)數(shù)據(jù)只有電能負(fù)荷數(shù)據(jù),沒有其他回歸量,因此需要考慮的參數(shù)只有分段數(shù)(level segments)和迭代次數(shù)(steps)。
為了確保獲取參數(shù)的可靠性,本研究使用回溯測試,遞增每次的訓(xùn)練集數(shù)量,同時(shí)測試集數(shù)量保持不變。本文設(shè)定起始窗口天數(shù)為380,每次擴(kuò)展天數(shù)為120,預(yù)測天數(shù)為20。從完整的數(shù)據(jù)集中隨機(jī)選擇一名用戶的用電量數(shù)據(jù)作為實(shí)驗(yàn)數(shù)據(jù),在實(shí)驗(yàn)的過程中,每一代分別計(jì)算SMAPE,并且判斷該值是否為當(dāng)前最優(yōu),最終選定獲取最優(yōu)SMAPE 的參數(shù)作為正式模型訓(xùn)練時(shí)的參數(shù)。確定超參數(shù)之后便獲得了正式訓(xùn)練所需要的分段數(shù)以及迭代次數(shù),將該參數(shù)輸入KTR 模型中,同時(shí)從所有完整數(shù)據(jù)集中隨機(jī)選取10 個(gè)用戶的用電量數(shù)據(jù)分別進(jìn)行訓(xùn)練。對每個(gè)用戶數(shù)據(jù)訓(xùn)練所得到的模型進(jìn)行測試,最終對10 個(gè)用戶的測試SMAPE 值求平均作為預(yù)測結(jié)果。
本 文 的 實(shí) 驗(yàn) 硬 件 環(huán) 境 為 Intel Core i9 -12900K , 4 900 MHz;內(nèi) 存 為32 GB; NVIDIA GeForce RTX 3060 Ti (8 GB)。軟件環(huán)境為Windows 10操作系統(tǒng),編程語言為Python 3.7。
本文使用對稱平均絕對百分比誤差(Symmetric Mean Absolute Percentage Error, SMAPE)作為指標(biāo)來衡量模型預(yù)測的準(zhǔn)確度,SMAPE 的計(jì)算公式如下:
式中:y^i是樣本預(yù)測值;yi是樣本真實(shí)值;n是樣本數(shù)量。SMAPE 越小表示預(yù)測得越準(zhǔn)確。
本文用于實(shí)驗(yàn)測試的數(shù)據(jù)來源于電網(wǎng),包含42 372個(gè)用戶的用電量數(shù)據(jù),電能負(fù)荷數(shù)據(jù)按天統(tǒng)計(jì),范圍從2014 年1 月1 日—2016 年9 月9 日,共1 036 天。數(shù) 據(jù)集 按 照8∶2 劃 分,即80% 作 為 訓(xùn) 練 集, 20% 作 為 測試集。
數(shù)據(jù)存在缺失值過多的情況,圖2 為樣本缺失數(shù)據(jù)示例。由于數(shù)據(jù)具有時(shí)序性,因此本文使用后向填充,使用缺失值后面的第1 個(gè)觀測值進(jìn)行填補(bǔ)。同時(shí),為了避免填充數(shù)據(jù)過多而影響預(yù)測效果,最終選擇以10 為界限,刪除連續(xù)的缺失值數(shù)大于10 的樣本。
為了縮小數(shù)據(jù)的絕對數(shù)值同時(shí)避免偽回歸,消除異方差,讓數(shù)據(jù)更加符合正態(tài)分布,本實(shí)驗(yàn)對數(shù)據(jù)進(jìn)行對數(shù)處理,處理前后效果分別如圖3 和圖4 所示。觀察可知,取對數(shù)后的數(shù)據(jù)波動變小,樣本的異方差程度顯著降低。
圖3 處理前的電能時(shí)間序列圖
圖4 處理后的電能時(shí)間序列圖
由于存在時(shí)間先后的問題,時(shí)間序列數(shù)據(jù)不能簡單地使用交叉驗(yàn)證,會出現(xiàn)一些時(shí)序特征交叉的情況,如用未來的數(shù)據(jù)去預(yù)測過去的數(shù)據(jù)。因此,本文使用基于時(shí)間的交叉驗(yàn)證進(jìn)行超參數(shù)優(yōu)化選擇?;跁r(shí)間序列的交叉驗(yàn)證有擴(kuò)展和滾動兩種窗口,本文選擇擴(kuò)展窗口,即訓(xùn)練開始日期固定,結(jié)束日期向前擴(kuò)展。對于其他參數(shù),本文設(shè)定起始窗口為380(以天為單位),每次擴(kuò)展120,預(yù)測20,基于回溯的超參數(shù)最優(yōu)化選擇如圖5 所示。
圖5 基于回溯的超參數(shù)最優(yōu)化結(jié)果
由于本實(shí)驗(yàn)數(shù)據(jù)只有電能負(fù)荷數(shù)據(jù),沒有其他回歸量,因此本文的KTR 模型的參數(shù)在分段數(shù)(level segments)和迭代次數(shù)(steps)上考慮優(yōu)化。其中,分段數(shù)選擇10、20、30、40,迭代次數(shù)選擇301、601、901、1 201。然后使用回溯測試進(jìn)行超參數(shù)選擇,結(jié)果如表1 所示,表中黑色加粗處為最優(yōu)參數(shù)行。
表1 超參數(shù)選擇結(jié)果
由表1 結(jié)果可以看出,最佳參數(shù)為(30,1 201),此時(shí)的預(yù)測SMAPE 值為10.29%。
使用超參數(shù)優(yōu)化得到的最佳參數(shù)(30,1 201)構(gòu)建KTR 模型;然后使用與上文相同的回溯測試參數(shù)(擴(kuò)展窗口,起始窗口380,每次擴(kuò)展120,預(yù)測20)對時(shí)間序列進(jìn)行交叉驗(yàn)證。本文給出最后一個(gè)模型的擬合效果,如圖6 所示,其中黑點(diǎn)表示原始的電能負(fù)荷數(shù)據(jù),灰色的線是使用KTR 模型擬合得到的曲線,灰色的區(qū)域是置信區(qū)間,表示預(yù)測的上下界,豎著的虛線將數(shù)據(jù)集劃分為訓(xùn)練集和測試集,左側(cè)為訓(xùn)練集,右側(cè)為測試集。經(jīng)實(shí)驗(yàn)計(jì)算可得,總體的電能量數(shù)據(jù)預(yù)測值和原始值的SMAPE 值為8.46%,模型擬合效果較好。
圖6 KTR 模型預(yù)測整體擬合效果
本文將KTR 模型與業(yè)內(nèi)常用的Prophet[21]和SARIMA 模型進(jìn)行了對比。Prophet 是Facebook 開源的基于STL 分解思想的時(shí)序預(yù)測模型,具有速度快、可解釋性強(qiáng)等優(yōu)點(diǎn)。
SARIMA 模型全稱為季節(jié)性差分自回歸滑動平均模型,通過對時(shí)間序列進(jìn)行變換和擬合來建模,對數(shù)據(jù)的平穩(wěn)性有著很高的要求。
實(shí)驗(yàn)使用SMAPE 作為評價(jià)標(biāo)準(zhǔn),隨機(jī)選取10 組樣本,取10 組平均值作為最終的SMAPE。對于每組樣本,訓(xùn)練集和測試集的劃分比例為3∶2,即預(yù)測步長h為100,每個(gè)模型的參數(shù)設(shè)置基本一致。不同模型平均SMAPE 比較結(jié)果如表2 所示。從表2 結(jié)果可以看出,本文模型的預(yù)測精度優(yōu)于其他兩種模型。
表2 模型平均SMAPE 比較 %
本文基于KTR 模型實(shí)現(xiàn)了對電能負(fù)荷時(shí)間序列的預(yù)測,并驗(yàn)證了該模型在電能負(fù)荷預(yù)測的可行性和準(zhǔn)確性。通過基于時(shí)間的交叉驗(yàn)證,本文得到了模型在數(shù)據(jù)集上的最佳參數(shù);然后使用該最佳參數(shù)建立模型,對電能負(fù)荷時(shí)序數(shù)據(jù)進(jìn)行擬合預(yù)測,最終的模型SMAPE 值達(dá)到8.46%,具有較高的預(yù)測精度。此外。將本文模型與Prophet 和SARIMA 模型進(jìn)行對比分析,結(jié)果證明本文模型的預(yù)測精度更佳。最后,通過真實(shí)電能負(fù)荷時(shí)序數(shù)據(jù)的擬合預(yù)測結(jié)果,驗(yàn)證了本文方法在優(yōu)化電力負(fù)荷調(diào)度工作、提升電力服務(wù)質(zhì)量方面是切實(shí)可行的。