吳麗珍, 孔 純, 陳 偉
(蘭州理工大學 電氣工程與信息工程學院, 甘肅 蘭州 730050)
電力系統(tǒng)負荷預(yù)測是從已知的電力系統(tǒng)數(shù)據(jù)、經(jīng)濟狀況、氣象變化、人口數(shù)量等多種情況出發(fā),通過對歷史數(shù)據(jù)的提取分析,研究事物之間的內(nèi)在聯(lián)系和變化規(guī)律,從而對未來負荷的變化作出預(yù)先的估計和推測[1].短期負荷預(yù)測是電力系統(tǒng)運行、規(guī)劃、調(diào)度的基礎(chǔ).精準的短期負荷預(yù)測有助于電力系統(tǒng)規(guī)劃、控制、運行,合理地安排發(fā)電廠發(fā)電機組的啟停,確定電廠冷、熱備用容量,有效降低發(fā)電成本,提高經(jīng)濟效益和社會效益[2].要實現(xiàn)精準的短期負荷預(yù)測需要精準的預(yù)測模型,精準的預(yù)測模型來源于海量的精準數(shù)據(jù).隨著各種配電智能終端在電力系統(tǒng)中的廣泛應(yīng)用,以及社會智能化、信息化水平不斷的提高,產(chǎn)生了龐大且多樣的電力數(shù)據(jù)和豐富的天氣、溫度、地理等數(shù)據(jù),這些數(shù)據(jù)構(gòu)成了短期負荷預(yù)測的數(shù)據(jù)來源[3],數(shù)據(jù)呈現(xiàn)“4V”特征[4],即數(shù)據(jù)量大(volume)、數(shù)據(jù)格式多樣(variety)、數(shù)據(jù)處理速度快(velocity)和數(shù)據(jù)價值密度低(value).在如此海量的數(shù)據(jù)中常常存在著大量重復(fù)記錄、錯誤記錄和不完整記錄的數(shù)據(jù),這些數(shù)據(jù)將對負荷預(yù)測產(chǎn)生不良后果.如何從海量數(shù)據(jù)中提取有效數(shù)據(jù),并快速處理這些數(shù)據(jù),是大數(shù)據(jù)背景下負荷預(yù)測的關(guān)鍵問題[5].為了從海量數(shù)據(jù)中提取有效數(shù)據(jù),需在計算之前對數(shù)據(jù)進行清洗.近年來,數(shù)據(jù)清洗技術(shù)獲得了廣泛關(guān)注.Nascimento等[6]利用近鄰排序算法(sorting neighbor algorithm,SNM)對文中數(shù)據(jù)進行清理,通過分析數(shù)據(jù)集關(guān)鍵屬性,對不同屬性進行排序以檢測重復(fù)數(shù)據(jù),但其檢測精度和計算成本受其觀測窗口的影響.莫文雄等[7]基于隨機矩陣理論對擾動數(shù)據(jù)進行檢測,通過比較擾動事件觀測矩陣與隨機矩陣在互相關(guān)譜分布上的差異,以確定擾動源的類型及其所在區(qū)域,該方法可用于異常數(shù)據(jù)監(jiān)測.
此外,有關(guān)電力負荷預(yù)測數(shù)據(jù)處理的研究也不斷發(fā)展,涌現(xiàn)出多種電力負荷預(yù)測的理論和方法.基于歷史數(shù)據(jù)確定多種變量之間關(guān)系的回歸分析法[8]、研究隨時間變化動態(tài)電力數(shù)據(jù)的時間序列法[9]、針對電力系統(tǒng)建立模糊推理系統(tǒng)來進行負荷預(yù)測[10]以及數(shù)據(jù)驅(qū)動的人工神經(jīng)網(wǎng)絡(luò)負荷預(yù)測[11]等.以上所述方法雖然針對某些特定情況的負荷預(yù)測十分有效,但是對于海量且復(fù)雜的大數(shù)據(jù)情況有一定的局限性,不適于現(xiàn)今配電網(wǎng)短期負荷預(yù)測.
為此,本文在MapReduce并行編程框架下,提出基于小批量隨機梯度下降法算法的線性回歸模型.利用大數(shù)據(jù)分析與處理技術(shù)從海量的數(shù)據(jù)中挖掘出負荷變化的規(guī)律,結(jié)合基于自適應(yīng)近鄰排序算法(adaptive sorting neighbor algorithm,ASNM)和K均值聚類的數(shù)據(jù)清理技術(shù)對數(shù)據(jù)進行預(yù)處理.在Hadoop大數(shù)據(jù)平臺上,利用基于MapReduce并行計算框架,建立基于小批量隨機梯度下降法算法的線性回歸模型,并通過顯著性檢驗方法檢驗該數(shù)據(jù)集在負荷預(yù)測中的顯著性.最后,基于以上方法建立短期負荷預(yù)測模型,并應(yīng)用在甘肅武威某區(qū)域配電網(wǎng)短期負荷預(yù)測系統(tǒng)中.實驗結(jié)果表明,所提短期負荷預(yù)測模型滿足負荷預(yù)測的要求,并且極大地提高了負荷計算的速度,縮短了負荷預(yù)測時間.
某個傳感器檢測到擾動記錄的數(shù)據(jù),可能會被下游變電站電能檢測裝置重復(fù)記錄,傳感器故障會造成該節(jié)點記錄數(shù)據(jù)的缺失,智能終端在非正常狀態(tài)下工作則帶來異常數(shù)據(jù).重復(fù)數(shù)據(jù)、不完整數(shù)據(jù)和異常數(shù)據(jù)會對實驗分析結(jié)果造成巨大影響[12].為了減少重復(fù)數(shù)據(jù)的計算,減少異常數(shù)據(jù)帶來的干擾,很有必要對數(shù)據(jù)進行清理.此外,負荷預(yù)測數(shù)據(jù)類型復(fù)雜多樣,數(shù)據(jù)種類繁多,有像電壓、電流、功率這樣的浮點型數(shù)據(jù),還有像天氣狀況、居民消費水平等無法直接計算的數(shù)據(jù)[13],因此,需要對這些數(shù)據(jù)進行初始化.
自適應(yīng)近鄰排序算法(ASNM)是一種適用于并行計算模型MapReduce的重復(fù)數(shù)據(jù)檢測算法,其步驟如圖1所示.
圖1 ASNM算法步驟示意圖Fig.1 Illustration of procedures for ASNM
從圖1可以看出,該算法可分成兩步實現(xiàn),其步驟如下:
Step1:自適應(yīng)記錄簇劃分.同一擾動源引起的觀測數(shù)據(jù)會在極短的時間內(nèi)被多個傳感器檢測記錄,不同的擾動事件其擾動發(fā)生的時刻也不同,因此可以將擾動發(fā)生的時刻作為擾動時間的關(guān)鍵屬性,以事件記錄的時間間隔作為事件的相似距離,距離函數(shù)為
d(Ri,Rj)=|Ti-Tj|
(1)
式中:Ri和Rj分別為第i條和j條擾動記錄;Ti和Tj分別為第i條和j條擾動事件的時間.當事件相似距離小于距離閾值φ時,可將這兩條記錄劃分至同一簇.
Step2:簇內(nèi)重復(fù)數(shù)據(jù)融合.在同一時間段內(nèi)也可能發(fā)生不同類型或者不同空間的擾動,這些擾動不屬于重復(fù)記錄的數(shù)據(jù),因此要將它們區(qū)分開來,具體判斷函數(shù)為
(2)
式中:Fi和Fj分別表示事件i和事件j的類型;Wi和Wj分別表示事件i和事件j的檢測子站;0表示Ri和Rj不是重復(fù)記錄的數(shù)據(jù);1表示Ri和Rj是重復(fù)記錄的數(shù)據(jù),需要進行數(shù)據(jù)清理.
異常數(shù)據(jù)和不完整數(shù)據(jù)的特征值與有效數(shù)據(jù)的特征值有較大差異,因此能利用K均值聚類算法對有效數(shù)據(jù)、異常數(shù)據(jù)和不完整數(shù)據(jù)的特征向量進行劃分.基于K均值聚類算法的數(shù)據(jù)檢測方法的具體步驟如下:
Step1: 建立時空觀測矩陣.智能終端依據(jù)時間序列和空間分布記錄觀測數(shù)據(jù),建立時空觀測矩陣:
(3)
式中:xk(n)為第k個傳感器在n時段內(nèi)收集的數(shù)據(jù).
Step2: 初始化聚類中心.本文涉及到3種數(shù)據(jù)分別是有效數(shù)據(jù)、異常數(shù)據(jù)和不完整數(shù)據(jù)(將不完整數(shù)據(jù)缺失部分補0),因此需要初始化3個聚類中心c={c1,c2,c3},每一個聚類中心包含k個傳感器收集數(shù)據(jù),每個聚類中心cj所在集合記為Gj.
Step3: 將每個待聚類數(shù)據(jù)放入聚類集合中.計算帶聚類數(shù)據(jù)x(n)到聚類質(zhì)心的歐式距離:
(4)
Step4: 更新聚類中心.根據(jù)每個聚類集合中包含的所有數(shù)據(jù)點,更新聚類中心使得每個數(shù)據(jù)點到新中心的幾何均距最小,即
(5)
Step5: 每當有一個數(shù)據(jù)輸入,就重復(fù)Step3到Step5,直至輸入最后一個數(shù)據(jù),跳出循環(huán),完成K均值聚類.
完成聚類后,所有數(shù)據(jù)會被分成3類(有效數(shù)據(jù)、異常數(shù)據(jù)和不完整數(shù)據(jù)),可以直接將異常數(shù)據(jù)和不完整數(shù)據(jù)剔除,因為數(shù)據(jù)量足夠大,且異常數(shù)據(jù)和不完整數(shù)據(jù)占總數(shù)據(jù)量比例很小,剔除這些數(shù)據(jù)不會對負荷預(yù)測的準確性造成影響.
多元回歸分析研究的目的是找出因變量Y與多個變量X=[x1,x2,…,xn]之間的定量關(guān)系,利用最小二乘法[14]找出相關(guān)因素之間的線性關(guān)系.
多元線性回歸模型是計算所有影響因素與其權(quán)重之積的總和再加上一個常數(shù)偏差,其模型為
(6)
多元線性回歸模型用向量表示為
(7)
式中:θT為權(quán)重因子向量,θT=[θ0,θ1,θ2,…,θn];X為變量矩陣,在此表示影響因子向量,X=[1,x1,x2,…,xn].
(8)
為找到使得損失函數(shù)最小的θ值,需對均方差MSE(θ)求導,令其導數(shù)為0:
θMSE(θ)=0
(9)
從而求得多元線性回歸方程的正規(guī)方程:
(10)
梯度下降法是尋找最優(yōu)解問題的通用優(yōu)化算法[15-16].梯度下降的主要思想是通過迭代微調(diào)參數(shù)最小化損失函數(shù).
傳統(tǒng)的梯度下降法在于進行每一次迭代的過程都要遍歷整個數(shù)據(jù)集,當數(shù)據(jù)量過大時,傳統(tǒng)梯度下降的計算速度就變得很慢.此外,當目標函數(shù)存在多個局部最小值時,傳統(tǒng)的梯度下降算法很容易陷入局部最小值.
圖2 小批量隨機梯度下降流程圖Fig.2 Flow chart of mini-batch stochastic gradient descent
小批量隨機梯度下降法的求解步驟如下:
Step1: 對式(8)中每個θi分別求偏導,得到梯度向量的損失方程為
(11)
θ(n+1)=θ(n)-ηθMSE(θ(n))
(12)
其中:η為學習率,決定了每次迭代的步長.
Step3: 根據(jù)式(12)的迭代式,隨機選取一小批實例數(shù)據(jù)(k個樣本)進行迭代計算,并更新一次梯度和權(quán)值.
2.3.1F檢驗
在電力負荷預(yù)測的線性回歸分析中,F檢驗的目的是檢驗因變量y與自變量x1,x2,…,xp之間是否存在線性關(guān)系[17].檢驗統(tǒng)計量為
(13)
對給定的顯著水平α,根據(jù)第一自由度p和第二自由度(n-p-1)查表可以得到拒絕域的臨界值Fα(p,n-p-1).再與計算所得到的F檢驗值比較,若F≤Fα(p,n-p-1),則認為y與X無顯著的線性關(guān)系;若F>Fα(p,n-p-1),則y可以用x1,x2,…,xp線性擬合.
2.3.2T檢驗
在電力負荷預(yù)測中,不是所有的數(shù)據(jù)都與負荷有較強的線性關(guān)系,因此在負荷預(yù)測過程中要剔除那些與負荷相關(guān)性不強的數(shù)據(jù)[18].T檢測法就是針對每個自變量xi檢驗它的總體參數(shù)θi是否顯著為零,以判斷該特征數(shù)據(jù)與負荷相關(guān)性的強弱.其檢驗統(tǒng)計量為
(14)
在實際負荷預(yù)測中,通常設(shè)定一個衡量顯著性的閾值,一般取0.05,再將所有特征放入模型進行訓練,計算每個特征的p值,p值若比選定的顯著性閾值小,則選擇該特征;若p值比選定的顯著性閾值大,則認為該特征與負荷模型不存在強相關(guān)性,并將該特征移除利用剩下的特征進行新一輪的擬合,若還存在p值高于閾值的特征則繼續(xù)移除,直到滿足條件.
Hadoop是Apache軟件基金會下的開源分布式計算平臺,具有良好的通用性,適用于構(gòu)建智能電網(wǎng)大數(shù)據(jù)平臺[19].根據(jù)電力負荷數(shù)據(jù)量大、數(shù)據(jù)類型復(fù)雜多樣的特點,需搭建基于Hadoop生態(tài)體系的分布式電力大數(shù)據(jù)計算分析平臺.Hadoop的核心是利用分布式文件系統(tǒng)(hadoop distributed file system,HDFS)作為大數(shù)據(jù)的存儲框架,利用分布式并行計算框架MapReduce作為數(shù)據(jù)處理框架[20].本文實驗在Ubuntu 16.04系統(tǒng)上搭建大數(shù)據(jù)平臺,Hadoop版本為2.7.1,使用Hadoop平臺上的分布式計算框架MapReduce、分布式文件系統(tǒng)HDFS和資源調(diào)度管理框架(yet another resource negotiator,YARN)[21].
MapReduce計算原理如圖3所示,先從分布式文件系統(tǒng)(HDFS)中取出以固定大小的塊為基本單位存儲數(shù)據(jù),通過Map程序?qū)?shù)據(jù)切割成不相關(guān)的分片,分配給多臺計算機實現(xiàn)分布式計算,Map任務(wù)輸出的〈key,value〉鍵值對,再通過Shuffle過程歸并鍵值對送給Reduce任務(wù),最終輸出另一批〈key,value〉鍵值對存入HDFS中.
圖3 MapReduce計算原理圖Fig.3 Schematic diagram for MapReduce calculation
在Map過程中,將來自矩陣XT的元素xij,標識成n條〈key,value〉的形式,其中key=(i,1),value=(‘x’,j,xij);將來自(Xθ-y)矩陣的元素記為ei1,將其標識成1條〈key,value〉形式,key=(1,k),value=(‘e’,i,ei1).通過key把計算結(jié)果歸為一類,通過value區(qū)分元素是來自哪個矩陣以及確定其具體位置.在Shuffle過程相同key的value會被整合到同一列表中,形成〈key,list(value)〉對,再傳遞給Reduce.經(jīng)過Reduce階段最終輸出的是〈key,value〉,其中key=(i,j)表示輸出矩陣元素的位置,value表示元素的值,這樣就完成了矩陣乘法的MapReduce過程.矩陣加減和矩陣數(shù)乘的Map階段生成的〈key,value〉鍵值對,key用來標識矩陣元素的位置,value則為對應(yīng)元素位置的值,Shuffle過程將具有相同key的value整合到同一列表,最后通過Reduce過程將相同位置元素進行加減或數(shù)乘.
本文采用的評價指標有絕對誤差、相對誤差、平均絕對百分誤差和均方根誤差.
(1) 絕對誤差(absolute error,AE)是負荷實際值與預(yù)測值之差:
(15)
(2) 相對誤差(relative error,RE)是絕對誤差與實際值之比:
(16)
(3) 平均絕對百分誤差(mean absolute percentage error,MAPE)能準確地反映預(yù)測誤差的大小:
(17)
(4) 均方根誤差(root mean square error,RMSE)是預(yù)測值與觀測值之差的樣本標準差:
(18)
實驗采用甘肅省武威市某配電網(wǎng)的實際運行數(shù)據(jù)作為算例.首先對負荷預(yù)測數(shù)據(jù)進行重復(fù)數(shù)據(jù)檢測實驗,然后對數(shù)據(jù)進行異常數(shù)據(jù)和不完整數(shù)據(jù)的清理,再組成負荷預(yù)測數(shù)據(jù)集.負荷預(yù)測數(shù)據(jù)集包含1 480條記錄作為訓練集,用于建立負荷預(yù)測模型,另外1 186條數(shù)據(jù)作為測試集,用于驗證負荷預(yù)測模型的準確性.訓練集和測試集中每條記錄都包含8條屬性,將每條數(shù)據(jù)信息都存入影響因子矩陣Xi(x1,x2,x3,x4,x5,x6,x7),x1表示系統(tǒng)相電壓,x2表示相電壓畸變率,x3表示系統(tǒng)相電流,x4表示相電流畸變率,x5表示負載相電流,x6表示補償電流,x7表示功率因數(shù);Yi=y,y表示負荷功率.
4.2.1數(shù)據(jù)清洗實驗結(jié)果分析
利用自適應(yīng)近鄰排序(ASNM)算法對甘肅省武威市某配電網(wǎng)2018-08-01到2018-08-21的電力數(shù)據(jù)進行重復(fù)數(shù)據(jù)檢測.圖4為重復(fù)數(shù)據(jù)檢測的實驗結(jié)果.實驗結(jié)果表明,自適應(yīng)近鄰排序算法能有效地檢驗出重復(fù)數(shù)據(jù),且該數(shù)據(jù)集的重復(fù)數(shù)據(jù)占總體數(shù)據(jù)的4.7%~24.7%.
圖4 重復(fù)數(shù)據(jù)檢驗實驗結(jié)果Fig.4 Tested results of repeated data verification
利用K均值算法對完成重復(fù)數(shù)據(jù)檢測后的數(shù)據(jù)進行處理,以分離出異常數(shù)據(jù)和不完整數(shù)據(jù).圖5為K均值算法聚類結(jié)果.實驗結(jié)果表明,K均值聚類算法能有效地從數(shù)據(jù)集中分離出異常數(shù)據(jù)和不完整數(shù)據(jù).
圖5 利用K均值聚類分離數(shù)據(jù)Fig.5 Separating data by K-means clustering
4.2.2負荷預(yù)測結(jié)果分析
基于MapReduce分布式并行計算框架的小批量隨機梯度下降算法和傳統(tǒng)梯度下降算法的運算速度對比結(jié)果如圖6所示.
從圖6可以看出,基于MapReduce分布式并行計算框架的小批量隨機梯度下降算法相對于傳統(tǒng)梯度下降算法,在數(shù)據(jù)量小于40 MB時計算速度甚至不如傳統(tǒng)梯度下降算法.其原因是:當數(shù)據(jù)量較小時,如果訓練數(shù)據(jù)樣本量小于其分批處理閾值k,小批量隨機梯度下降法就變成了傳統(tǒng)的梯度下降法,且并行計算各個主機之間的通信和數(shù)據(jù)交換需要消耗帶寬,這樣反而降低了運算速度.但當數(shù)據(jù)量較大時,并行小批量隨機梯度下降算法所消耗的運算時間遠小于傳統(tǒng)算法,且這種差距會隨著數(shù)據(jù)量的增大變得越發(fā)明顯.
圖6 并行小批量隨機梯度和傳統(tǒng)梯度下降算法運行時間對比Fig.6 Comparison of running time between parallel mini-batch SGD algorithm and traditional gradient descent algorithm
將完成數(shù)據(jù)清洗工作負荷的數(shù)據(jù)存入分布式文件系統(tǒng)(HDFS),利用分布式并行框架MapReduce對小批量隨機梯度下降算法并行化處理,完成計算,得出負荷預(yù)測模型(表1).
表1 負荷預(yù)測模型分析Tab.1 Model analysis of load forecasting
表1中相關(guān)系數(shù)為每一個變量對應(yīng)的權(quán)重因子θi,常采用標準誤差來衡量相關(guān)系數(shù)的可靠性.標準誤差計算公式為
(19)
式中:X代表變量矩陣;diag()為求取方陣對角線元素函數(shù).根據(jù)式(19)求取的標準誤差如表1 所列,可知在該數(shù)據(jù)集下利用小批量隨機梯度下降算法獲得相關(guān)系數(shù)的標準誤差較小,利用該方法獲得的相關(guān)系數(shù)可靠性較高.再借助T檢驗來確定自變量顯著性,設(shè)定顯著性閾值為0.05,計算每個特征的p值,根據(jù)負荷預(yù)測結(jié)果,p>|t|的有x2、x5、x7,說明負荷預(yù)測的結(jié)果與相電壓畸變率x2(%)、負載相電流x5(A)和功率因數(shù)x7沒有顯著的線性關(guān)系,因此需要將這3個特征從訓練模型中刪去,重新進行擬合.重新擬合的結(jié)果如表2所列.
表2 剔除無關(guān)特征后的負荷預(yù)測模型分析Tab.2 Model analysis load forecasting after eliminating irrelevant features
重新擬合后,通過T檢驗,所有特征均具有顯著性.再通過F檢驗驗證該數(shù)據(jù)能否線性表征負荷模型,計算獲得F檢驗的值為135 826,遠大于表3所查的極限值,所以負荷預(yù)測模型在該特征數(shù)據(jù)下存在顯著的線性關(guān)系.最終,得到負荷預(yù)測的模型為
表3 F檢驗臨界值(α=0.05)Tab.3 F test threshold (α=0.05)
y=-1.634 6+0.007 1x1+
0.210 1x3-0.000 9x4+
0.017 7x6
(20)
根據(jù)1 186條測試數(shù)據(jù)集,利用式(20)預(yù)測模型獲得的負荷曲線與實際運行的負荷曲線進行對比,結(jié)果如圖7所示.
圖7 模型預(yù)測的運行負荷與實際運行負荷對比曲線Fig.7 Comparison curve between the load predicted by the model and the actual operating load
從圖7可以看出,預(yù)測模型得出的負荷預(yù)測曲線與電力系統(tǒng)實際運行負荷曲線擬合較好,預(yù)測結(jié)果與實際值偏差較小.
為了更清楚地展示每個預(yù)測點相對于實際誤差的大小,對1 186條測試數(shù)據(jù)逐點繪制的絕對百分誤差曲線如圖8所示.該負荷預(yù)測模型的最大相對誤差為8.246%,平均絕對百分誤差(MAPE)為2.043%,均方根誤差(RMSE)為3 112.62,該模型預(yù)測能準確捕捉負荷變化規(guī)律,快速預(yù)測負荷變化趨勢,負荷預(yù)測結(jié)果精準.
本文針對大數(shù)據(jù)背景下負荷預(yù)測計算速度慢和預(yù)測不精確的問題,提出了在大數(shù)據(jù)平臺上利用小批量隨機梯度下降法建立負荷預(yù)測回歸模型,并在計算之前對數(shù)據(jù)進行數(shù)據(jù)預(yù)處理和數(shù)據(jù)清洗工作.實驗結(jié)果表明,采用所提的自適應(yīng)近鄰排序算法能夠有效地檢測出重復(fù)數(shù)據(jù);采用所提的K均值聚類方法能夠有效地剔除異常數(shù)據(jù)和記錄不完整數(shù)據(jù).采用所提的基于大數(shù)據(jù)平臺和MapReduce并行編程框架的小批量隨機梯度下降算法建立的短期負荷預(yù)測模型進行實際配電網(wǎng)負荷預(yù)測,其平均絕對百分誤差(MAPE)為2.043%,均方根誤差(RMSE)為3 112.62,表明該方法能快速、高效地處理大批數(shù)據(jù),建立精確的短期負荷預(yù)測模型.