錢 斌 ,鄭楷洪,陳子鵬,肖 勇,李 森,葉純壯,馬千里*
(1.南方電網(wǎng)科學(xué)研究院有限責(zé)任公司,廣州 510663;2.華南理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,廣州 510006)
時(shí)間序列在諸多領(lǐng)域都有著豐富的應(yīng)用[1-3]。然而由于存在噪聲或傳感器故障等原因,現(xiàn)實(shí)時(shí)間序列不可避免地含有缺失值,這使得現(xiàn)有分析算法的推斷變得尤為困難[4-5]。因此,如何有效地對(duì)缺失數(shù)據(jù)進(jìn)行修復(fù)具有重要的現(xiàn)實(shí)意義。
傳統(tǒng)的時(shí)間序列缺失修復(fù)方法有均值替代、移動(dòng)平均法、空間自回歸、多項(xiàng)式插補(bǔ)、線性插值等[6-8],但是,傳統(tǒng)的統(tǒng)計(jì)方法無法有效提煉缺失數(shù)據(jù)背后蘊(yùn)藏的事件信息,這會(huì)對(duì)缺失修復(fù)效果造成一定影響。針對(duì)傳統(tǒng)缺失修復(fù)方法的不足,文獻(xiàn)[9]提出了基于T2橢圓圖的異常數(shù)據(jù)識(shí)別和基于最小二乘支持向量機(jī)的缺失修復(fù)方法,但該方法以社會(huì)經(jīng)濟(jì)指標(biāo)可信為前提條件,無法從時(shí)間序列自身挖掘規(guī)律。文獻(xiàn)[10]提出了一種基于遺傳優(yōu)化算法的時(shí)間序列缺失修復(fù)方法,該方法考慮時(shí)間序列的歷史信息,借助遺傳算法優(yōu)化多重插補(bǔ)的參數(shù),尋找最優(yōu)的修復(fù)值;但該方法將時(shí)間序列視為線性序列,未考慮時(shí)間序列中的非線性,修復(fù)效果不佳。
由于神經(jīng)網(wǎng)絡(luò)可以較好地建模數(shù)據(jù)中的非線性特性,可以將其應(yīng)用于時(shí)間序列的缺失修復(fù)。文獻(xiàn)[11]提出了自適應(yīng)BP 神經(jīng)網(wǎng)絡(luò)來修復(fù)缺失的時(shí)間序列,但該方法未對(duì)時(shí)間序列中的時(shí)序依賴關(guān)系進(jìn)行有效的建模。因此,文獻(xiàn)[12-13]提出了基于長(zhǎng)短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)[14]的缺失修復(fù)方法,可以有效建模時(shí)間序列的時(shí)序依賴信息;但這些方法需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,無法在含缺失值的情況下進(jìn)行模型訓(xùn)練,而且,不恰當(dāng)?shù)念A(yù)處理方法會(huì)引入較大偏差,從而誤導(dǎo)模型的訓(xùn)練過程,影響后續(xù)的缺失修復(fù)效果。
針對(duì)以上問題,本文提出了基于殘差連接LSTM 網(wǎng)絡(luò)的時(shí)間序列修復(fù)模型,使用長(zhǎng)短期記憶網(wǎng)絡(luò)對(duì)時(shí)間序列中的時(shí)序依賴關(guān)系以及非線性特性進(jìn)行建模;并且,在長(zhǎng)短期記憶網(wǎng)絡(luò)的基礎(chǔ)上,引入殘差連接[15-16],挖掘缺失數(shù)據(jù)和它們最近的非缺失數(shù)據(jù)的潛在關(guān)聯(lián)性,引入殘差連接的具體做法是構(gòu)建一種殘差和單元(Residual Sum Unit,RSU),可以有效聚合歷史信息。本文同時(shí)考慮了單變量輸入和多變量輸入的情況,并且,本文的方法無需對(duì)缺失數(shù)據(jù)進(jìn)行預(yù)填補(bǔ),可以直接在含缺失值的情況下進(jìn)行模型訓(xùn)練。實(shí)驗(yàn)證明,與現(xiàn)有最先進(jìn)的方法相比,基于殘差連接LSTM 網(wǎng)絡(luò)的時(shí)間序列修復(fù)模型可以取得較好的缺失修復(fù)效果。本文的主要貢獻(xiàn)如下:
1)本文提出了基于殘差連接LSTM 網(wǎng)絡(luò)的時(shí)間序列修復(fù)模型,使用長(zhǎng)短期記憶網(wǎng)絡(luò)對(duì)時(shí)間序列中的時(shí)序依賴和非線性特性進(jìn)行建模,同時(shí)構(gòu)建殘差和單元聚合歷史信息,進(jìn)一步提升缺失修復(fù)效果。
2)通過在單變量和多變量數(shù)據(jù)集上定量和定性的實(shí)驗(yàn)分析,本文提出的模型均取得比現(xiàn)有較先進(jìn)方法更好的缺失值修復(fù)效果。此外,本文模型無需進(jìn)行數(shù)據(jù)預(yù)填補(bǔ),可以直接在含缺失值的情況下進(jìn)行訓(xùn)練。
長(zhǎng)短期記憶網(wǎng)絡(luò)是循環(huán)神經(jīng)網(wǎng)絡(luò)的一種變體,能建模時(shí)序數(shù)據(jù)的時(shí)間依賴和非線性特性,是當(dāng)下對(duì)時(shí)序數(shù)據(jù)建模的首選模型。長(zhǎng)短期記憶網(wǎng)絡(luò)由記憶單元組成,通過輸入、輸出和遺忘門來決定流入流出記憶單元的信息多少。長(zhǎng)短期記憶網(wǎng)絡(luò)記憶單元的結(jié)構(gòu)如圖1所示。
圖1 中:xt是時(shí)間步t的輸入數(shù)據(jù),ht是時(shí)間步t長(zhǎng)短期記憶網(wǎng)絡(luò)的隱藏狀態(tài),it、ft、ot分別是長(zhǎng)短期記憶網(wǎng)絡(luò)的輸入門、遺忘門和輸出門,gt是當(dāng)前加入的信息,ct是記憶單元的信息,σ表示sigmoid 激活函數(shù),?是逐元素的乘法,⊕是逐元素的加法。
圖1 長(zhǎng)短期記憶網(wǎng)絡(luò)記憶單元結(jié)構(gòu)Fig.1 Structure of memory unit of LSTM network
給定長(zhǎng)度為T的輸入序列x={x1,x2,…,xT},長(zhǎng)短期記憶網(wǎng)絡(luò)可以將其編碼為一個(gè)隱藏狀態(tài)序列h={h1,h2,…,hT},其中,xt∈Rn,ht∈Rm,t=1,2,…,T。在時(shí)間步t,長(zhǎng)短期記憶網(wǎng)絡(luò)的計(jì)算公式如下:
其中:Wi、Wf、Wo、Wc是由可訓(xùn)練參數(shù)組成的映射矩陣;bi、bf、bo、bc是偏置項(xiàng)。簡(jiǎn)便起見,可以將一個(gè)長(zhǎng)短期記憶網(wǎng)絡(luò)記為函數(shù)FLSTM,在長(zhǎng)短期記憶網(wǎng)絡(luò)的前向傳播過程中,隱藏狀態(tài)的更新公式為:
本文中使用長(zhǎng)短期記憶網(wǎng)絡(luò)來建模時(shí)間序列中的時(shí)序依賴和非線性特性,結(jié)合殘差連接進(jìn)一步挖掘缺失數(shù)據(jù)與最近非缺失數(shù)據(jù)的潛在關(guān)聯(lián),提高網(wǎng)絡(luò)修復(fù)能力?;跉埐钸B接LSTM(ReSidual Imputation Long-Short Term Memory,RSILSTM)網(wǎng)絡(luò)的時(shí)間序列修復(fù)模型如圖2所示。
圖2 RSI-LSTM模型結(jié)構(gòu)Fig.2 Structure of RSI-LSTM model
首先,模型輸入是含缺失值的時(shí)間序列x={x1,x2,…,xT},其中,xt∈Rn(t=1,2,…,T)。接著,使用長(zhǎng)短期記憶網(wǎng)絡(luò),將輸入序列編碼為一個(gè)隱藏狀態(tài)序列h={h1,h2,…,hT},其中,ht∈Rm(t=1,2,…,T)。特別的,在時(shí)間步t,長(zhǎng)短期記憶網(wǎng)絡(luò)可以將輸入xt,編碼為一個(gè)隱藏狀態(tài)ht。
在長(zhǎng)短期記憶網(wǎng)絡(luò)的基礎(chǔ)上,引入殘差連接的具體做法是構(gòu)建一種殘差和單元,用來聚合長(zhǎng)短期記憶網(wǎng)絡(luò)的隱藏狀態(tài)和之前時(shí)刻的殘差信息,有利于挖掘缺失數(shù)據(jù)和它們最近的非缺失數(shù)據(jù)的潛在關(guān)聯(lián)性,提高網(wǎng)絡(luò)修復(fù)能力。在時(shí)間步t,殘差和rt的計(jì)算公式為:
其中:rt∈Rm,ht是時(shí)間步t長(zhǎng)短期記憶網(wǎng)絡(luò)的隱藏狀態(tài),Wr∈Rm×m是由可訓(xùn)練參數(shù)組成的映射矩陣,Wrrt-1代表了之前時(shí)刻的殘差信息。
模型訓(xùn)練的前向傳播分為兩種情況:近似過程和修復(fù)過程。如圖2 所示,虛線表示近似過程,實(shí)線表示修復(fù)過程。如果下一個(gè)時(shí)刻輸入值xt已知,則使用殘差和rt-1乘以一個(gè)映射矩陣Wout得到y(tǒng)t-1,用來近似下一時(shí)刻的輸入值xt,目的是利用序列中未缺失的值來指導(dǎo)網(wǎng)絡(luò)進(jìn)行有效學(xué)習(xí);如果下一個(gè)輸入值xt是缺失值,則用yt-1修復(fù)xt。計(jì)算公式為:
其中,Wout∈Rn×m是由可訓(xùn)練參數(shù)組成的映射矩陣,可以把殘差和rt-1映射到維度n,用于近似或修復(fù)當(dāng)前時(shí)刻的輸入值xt。根據(jù)當(dāng)前的輸入是否為缺失值,可以用一個(gè)統(tǒng)一的形式ut來表示當(dāng)前的輸入值:
其中:?是逐元素的乘法,⊕是逐元素的加法,I{xt}是逐元素的指示函數(shù),指示向量xt每個(gè)維度是否缺失。因此,如果xt已知,則作為網(wǎng)絡(luò)的輸入值;如果xt是缺失值,則使用yt-1修復(fù)xt,作為當(dāng)前時(shí)刻網(wǎng)絡(luò)的輸入值。在長(zhǎng)短期記憶網(wǎng)絡(luò)的前向傳播過程中,可以將隱藏狀態(tài)的更新公式重寫為:
并且,在網(wǎng)絡(luò)訓(xùn)練的反向傳播過程中,如果當(dāng)前時(shí)刻的目標(biāo)值缺失,則該時(shí)刻的損失不可定義。因此,時(shí)刻t損失函數(shù)的計(jì)算方式如下:
其中,I{xt}是逐元素的指示函數(shù),指示向量xt每個(gè)維度是否缺失。如果定義上標(biāo)k表示樣本集合的第k個(gè)樣本k=1,2,…,N,總的訓(xùn)練損失函數(shù)為:
其中:Lreg(||ω||)是對(duì)模型所有參數(shù)ω的二范數(shù)正則項(xiàng);λ是常量,用來調(diào)節(jié)兩個(gè)損失函數(shù)的權(quán)重,在實(shí)驗(yàn)中設(shè)為1E -4。
1)對(duì)原始含缺失值的時(shí)間序列進(jìn)行歸一化處理,將數(shù)據(jù)映射到[0,1]區(qū)間之內(nèi),得到含缺失值的時(shí)間序列x={x1,x2,…,xT},并按照7∶3的比例將樣本集劃分為訓(xùn)練集和測(cè)試集。
2)將時(shí)間序列x逐時(shí)刻輸入LSTM,在時(shí)間步t-1,LSTM將輸入xt-1編碼為隱藏狀態(tài)ht-1。
3)在時(shí)間步t-1,根據(jù)LSTM 的隱藏狀態(tài)ht-1和前一時(shí)刻的殘差和rt-2,計(jì)算殘差和rt-1。
4)如果下一個(gè)時(shí)刻輸入值xt已知,則使用殘差和rt-1乘以一個(gè)映射矩陣Wout得到y(tǒng)t-1,用來近似下一時(shí)刻的輸入值xt;如果下一個(gè)輸入值xt是缺失值,則用yt-1修復(fù)xt。
5)使用隨時(shí)間反向傳播(BackPropagation Through Time,BPTT)算法[17]更新網(wǎng)絡(luò)參數(shù);并且,如果當(dāng)前時(shí)刻的目標(biāo)值缺失,則該時(shí)刻的損失不可定義,不計(jì)算該時(shí)刻的損失。
6)網(wǎng)絡(luò)迭代直到收斂,最后,如果輸入值xt是缺失值,則可以使用上一時(shí)刻的預(yù)測(cè)值yt-1作為xt的修復(fù)值,將整條時(shí)間序列的缺失值修復(fù)完畢,即可得到完整的時(shí)間序列。
本文采用2016年1月1日到2018年6月30日南方某省的區(qū)域日供電量數(shù)據(jù),供電量數(shù)據(jù)計(jì)量單位為天,因此每個(gè)區(qū)域有912 個(gè)時(shí)間點(diǎn)。隨機(jī)抽取10 個(gè)區(qū)域的序列數(shù)據(jù)作為樣本集,作為模型在單變量情況下的輸入。
考慮到氣象因素對(duì)電力數(shù)據(jù)的影響,本文還采用了2012年1 月1 日到2014 年12 月31 日兩個(gè)地區(qū)的電力負(fù)荷數(shù)據(jù)。數(shù)據(jù)集來源于第九屆電工數(shù)學(xué)建模競(jìng)賽A 題,除了地區(qū)電力負(fù)荷數(shù)據(jù),該數(shù)據(jù)集還提供每日的最高溫度、最低溫度、平均溫度、相對(duì)濕度和降雨量5 個(gè)氣象因素?cái)?shù)據(jù)。本文分別抽取每日的6:00、12:00 和18:00 作為原始數(shù)據(jù),因此總的樣本集有6個(gè),分別記為Electric1~Electric6,每個(gè)樣本集中包含1 096個(gè)時(shí)間點(diǎn),每個(gè)時(shí)間點(diǎn)的數(shù)據(jù)為一個(gè)6 維的向量,包含電力負(fù)荷數(shù)據(jù)以及5 個(gè)氣象因素?cái)?shù)據(jù),作為模型在多變量情況下的輸入。
同時(shí),本文還使用了兩個(gè)通用的時(shí)間序列數(shù)據(jù)集Libras和Character Trajectories,數(shù)據(jù)來源于UCI 庫(kù)[18],以進(jìn)一步地進(jìn)行多變量情況下的模型效果驗(yàn)證。
對(duì)于每一個(gè)數(shù)據(jù)集的時(shí)間序列,本文取前70%的序列作為訓(xùn)練集,后30%作為測(cè)試集。接著,為了處理輸入不同量綱的問題,需要對(duì)原始的序列s={s1,s2,…,sT}進(jìn)行歸一化:
其中:xt∈Rn,st∈Rn(t=1,2,…,T),smax和smin分別表示時(shí)間序列的最大值和最小值。并且,對(duì)于現(xiàn)實(shí)缺失數(shù)據(jù),無法獲得對(duì)應(yīng)的真實(shí)值來進(jìn)行算法的性能評(píng)估。因此,在完整的時(shí)間序列的基礎(chǔ)上,以一定的缺失率構(gòu)造含有缺失值的數(shù)據(jù)。將缺失率設(shè)置為10%,讓完整的序列數(shù)據(jù)按10%的概率隨機(jī)缺失,構(gòu)造出含有缺失值的時(shí)間序列,作為模型的輸入;同時(shí),缺失值對(duì)應(yīng)的真實(shí)值將被用于評(píng)估修復(fù)算法的性能。
本文同時(shí)考慮了單變量輸入和多變量輸入兩種情況。在單變量的情況中,使用南方某省的區(qū)域日供電量序列作為模型輸入。在多變量的情況中,使用了兩個(gè)地區(qū)的電力負(fù)荷數(shù)據(jù),結(jié)合氣象數(shù)據(jù)作為模型的多變量輸入;同時(shí),本文還使用了兩個(gè)通用的時(shí)間序列數(shù)據(jù)集(http://archive.ics.uci.edu/ml)來輔助進(jìn)行多變量情況下的模型效果驗(yàn)證。本文采用均方誤差(Mean Squared Error,MSE)作為評(píng)價(jià)指標(biāo):
其中:n代表序列中缺失值的數(shù)量分別代表第i個(gè)缺失值對(duì)應(yīng)的真實(shí)值和修復(fù)值。
對(duì)于區(qū)域日供電量數(shù)據(jù)集,模型的輸入是單變量的,因而將所提出模型(RSI-LSTM)與常用的單變量缺失修復(fù)方法進(jìn)行對(duì)比,對(duì)比方法包括卡爾曼(Kalman)濾波[19]、線性插值(Interpolation)[20]、移動(dòng)平均(Moving Average,MA)[21]和基線模型長(zhǎng)短期記憶(LSTM)網(wǎng)絡(luò)。同時(shí),也將所提出模型與兩種先進(jìn)的缺失修復(fù)方法進(jìn)行對(duì)比,分別是生成對(duì)抗填補(bǔ)網(wǎng)絡(luò)(Generative Adversarial Imputation Net,GAIN)[22]和雙向循環(huán)填補(bǔ)(Bidirectional Recurrent Imputation for Time Series,BRITS)[23]。表1是上述方法的數(shù)據(jù)缺失修復(fù)結(jié)果。
從表1 中可以看出,RSI-LSTM 的修復(fù)性能優(yōu)于GAIN、BRITS[23]、Kalman濾波[19]、Interpolation[20]和MA[21],表現(xiàn)為均方誤差的總體降低,這說明了RSI-LSTM可以更好地建模時(shí)間序列的信息,修復(fù)缺失的時(shí)間序列。同時(shí),RSI-LSTM 相比基線模型LSTM,修復(fù)誤差有一定的降低,進(jìn)一步證明了引入殘差連接的有效性,因?yàn)橐霘埐钸B接有利于挖掘缺失數(shù)據(jù)和它們最近的非缺失數(shù)據(jù)的潛在關(guān)聯(lián)性,提高網(wǎng)絡(luò)的缺失修復(fù)能力。
表1 單變量數(shù)據(jù)集上修復(fù)誤差(MSE)對(duì)比Tab.1 Comparison of imputation error(MSE)on univariate time series datasets
對(duì)于地區(qū)電力負(fù)荷數(shù)據(jù)集以及兩個(gè)時(shí)間序列數(shù)據(jù)集,輸入是多變量的。因此,本文將RSI-LSTM 與4 種近年來最先進(jìn)的修復(fù)方法GAIN[22]、BRITS[23]、基于傅里葉的延遲k最近鄰算法(Fourier-based Laggedk-Nearest Neighbor,F(xiàn)Lk-NN)[24]以及動(dòng)態(tài)缺失值的挖掘(Dynamics mining with missing values,DynaMMo)算法[25]進(jìn)行了對(duì)比實(shí)驗(yàn),這些方法描述如下。
1)GAIN。使用生成對(duì)抗網(wǎng)絡(luò)來進(jìn)行缺失修復(fù),并提出一種提示向量來輔助模型訓(xùn)練,但訓(xùn)練數(shù)據(jù)較少時(shí)訓(xùn)練困難。
2)BRITS。該方法使用雙向循環(huán)神經(jīng)網(wǎng)絡(luò)來進(jìn)行時(shí)間序列的缺失值修復(fù),但在連續(xù)缺失的情況下效果較差。
3)FLk-NN。結(jié)合滯后的k最近鄰方法和傅立葉變換的集成方法,該方法較為復(fù)雜,需要大量的人工選擇的超參數(shù)。
4)DynaMMo。該方法基于期望最大化方法和卡爾曼濾波。它在存在缺失值的情況下學(xué)習(xí)線性動(dòng)力學(xué)系統(tǒng),并對(duì)缺失值進(jìn)行估計(jì)。該方法假設(shè)時(shí)間序列具有潛在的線性動(dòng)力學(xué)特性,然而時(shí)間序列更多地表現(xiàn)為非線性。
表2 是上述模型的修復(fù)結(jié)果??梢钥闯?,RSI-LSTM 的修復(fù)性能明顯優(yōu)于GAIN、BRITS、FLk-NN 以及DynaMMo,修復(fù)效果相比這幾種方法有較大的提升。通過與這4 種近年來最先進(jìn)的方法作對(duì)比,RSI-LSTM 可以取得當(dāng)前最好的結(jié)果;同時(shí),相比基線模型LSTM,RSI-LSTM 的修復(fù)效果也有一定的提升,驗(yàn)證了所提出模型的有效性。
表2 多變量數(shù)據(jù)上修復(fù)誤差(MSE)對(duì)比Tab.2 Comparison of imputation error(MSE)on multivariate time series datasets
更進(jìn)一步地,本文隨機(jī)抽取其中1 個(gè)區(qū)域的電力負(fù)荷數(shù)據(jù)序列,使用上述各種多變量缺失修復(fù)方法對(duì)其進(jìn)行修復(fù),并計(jì)算數(shù)據(jù)序列中缺失時(shí)間點(diǎn)的修復(fù)值和真實(shí)值的絕對(duì)誤差,絕對(duì)誤差在0 附近波動(dòng),偏離0 越遠(yuǎn),說明誤差越大。結(jié)果如圖3所示。由圖3可以看出,對(duì)于電力負(fù)荷數(shù)據(jù)序列絕大多數(shù)的缺失時(shí)間點(diǎn),RSI-LSTM 相比其他方法,可以取得更好的修復(fù)效果。具體地,本文模型的誤差曲線相較其他對(duì)比方法更為平滑,在0附近波動(dòng)較小。
為了能更直觀地展示缺失值修復(fù)效果,隨機(jī)抽取1 個(gè)區(qū)域的日供電量序列,畫出上述各種單變量缺失修復(fù)方法的修復(fù)結(jié)果(由于Interpolation 效果較差,在此不做可視化)。如圖4 所示,對(duì)于絕大多數(shù)的缺失時(shí)間點(diǎn),RSI-LSTM 相比其他方法,可以取得較好的修復(fù)效果,修復(fù)值大多和原始的時(shí)間序列重合;而相比基線模型LSTM,RSI-LSTM 在峰值處可以取得較好的效果。因?yàn)闅埐詈蛦卧梢愿玫赝诰蛉笔?shù)據(jù)和它們最近的非缺失數(shù)據(jù)的潛在關(guān)聯(lián)性,提高網(wǎng)絡(luò)的修復(fù)能力。
圖3 不同模型的絕對(duì)誤差對(duì)比Fig.3 Absolute error comparison of different models
圖4 不同模型的修復(fù)結(jié)果對(duì)比Fig.4 Imputation results comparison of different models
1)RSI-LSTM 使用長(zhǎng)短期記憶網(wǎng)絡(luò)對(duì)時(shí)間序列中的時(shí)間依賴和非線性特性進(jìn)行建模,并且引入殘差連接,挖掘缺失數(shù)據(jù)和它們最近的非缺失數(shù)據(jù)的潛在關(guān)聯(lián)性;同時(shí),該模型可以直接在含缺失值的情況下進(jìn)行模型訓(xùn)練。
2)本文同時(shí)考慮了單變量輸入和多變量輸入兩種情況,實(shí)驗(yàn)結(jié)果證明了該模型對(duì)時(shí)間序列缺失修復(fù)的有效性。
3)目前RSI-LSTM 只是應(yīng)用于時(shí)間序列的缺失值修復(fù)上,以后的研究工作中,將考慮將該模型擴(kuò)展到含缺失數(shù)據(jù)的時(shí)間序列預(yù)測(cè)或分類等問題。