钱 斌 ,郑楷洪,陈子鹏,肖 勇,李 森,叶纯壮,马千里*
(1.南方电网科学研究院有限责任公司,广州 510663;2.华南理工大学计算机科学与工程学院,广州 510006)
时间序列在诸多领域都有着丰富的应用[1-3]。然而由于存在噪声或传感器故障等原因,现实时间序列不可避免地含有缺失值,这使得现有分析算法的推断变得尤为困难[4-5]。因此,如何有效地对缺失数据进行修复具有重要的现实意义。
传统的时间序列缺失修复方法有均值替代、移动平均法、空间自回归、多项式插补、线性插值等[6-8],但是,传统的统计方法无法有效提炼缺失数据背后蕴藏的事件信息,这会对缺失修复效果造成一定影响。针对传统缺失修复方法的不足,文献[9]提出了基于T2椭圆图的异常数据识别和基于最小二乘支持向量机的缺失修复方法,但该方法以社会经济指标可信为前提条件,无法从时间序列自身挖掘规律。文献[10]提出了一种基于遗传优化算法的时间序列缺失修复方法,该方法考虑时间序列的历史信息,借助遗传算法优化多重插补的参数,寻找最优的修复值;但该方法将时间序列视为线性序列,未考虑时间序列中的非线性,修复效果不佳。
由于神经网络可以较好地建模数据中的非线性特性,可以将其应用于时间序列的缺失修复。文献[11]提出了自适应BP 神经网络来修复缺失的时间序列,但该方法未对时间序列中的时序依赖关系进行有效的建模。因此,文献[12-13]提出了基于长短期记忆(Long Short-Term Memory,LSTM)网络[14]的缺失修复方法,可以有效建模时间序列的时序依赖信息;但这些方法需要对数据进行预处理,无法在含缺失值的情况下进行模型训练,而且,不恰当的预处理方法会引入较大偏差,从而误导模型的训练过程,影响后续的缺失修复效果。
针对以上问题,本文提出了基于残差连接LSTM 网络的时间序列修复模型,使用长短期记忆网络对时间序列中的时序依赖关系以及非线性特性进行建模;并且,在长短期记忆网络的基础上,引入残差连接[15-16],挖掘缺失数据和它们最近的非缺失数据的潜在关联性,引入残差连接的具体做法是构建一种残差和单元(Residual Sum Unit,RSU),可以有效聚合历史信息。本文同时考虑了单变量输入和多变量输入的情况,并且,本文的方法无需对缺失数据进行预填补,可以直接在含缺失值的情况下进行模型训练。实验证明,与现有最先进的方法相比,基于残差连接LSTM 网络的时间序列修复模型可以取得较好的缺失修复效果。本文的主要贡献如下:
1)本文提出了基于残差连接LSTM 网络的时间序列修复模型,使用长短期记忆网络对时间序列中的时序依赖和非线性特性进行建模,同时构建残差和单元聚合历史信息,进一步提升缺失修复效果。
2)通过在单变量和多变量数据集上定量和定性的实验分析,本文提出的模型均取得比现有较先进方法更好的缺失值修复效果。此外,本文模型无需进行数据预填补,可以直接在含缺失值的情况下进行训练。
长短期记忆网络是循环神经网络的一种变体,能建模时序数据的时间依赖和非线性特性,是当下对时序数据建模的首选模型。长短期记忆网络由记忆单元组成,通过输入、输出和遗忘门来决定流入流出记忆单元的信息多少。长短期记忆网络记忆单元的结构如图1所示。
图1 中:xt是时间步t的输入数据,ht是时间步t长短期记忆网络的隐藏状态,it、ft、ot分别是长短期记忆网络的输入门、遗忘门和输出门,gt是当前加入的信息,ct是记忆单元的信息,σ表示sigmoid 激活函数,⊗是逐元素的乘法,⊕是逐元素的加法。
图1 长短期记忆网络记忆单元结构Fig.1 Structure of memory unit of LSTM network
给定长度为T的输入序列x={x1,x2,…,xT},长短期记忆网络可以将其编码为一个隐藏状态序列h={h1,h2,…,hT},其中,xt∈Rn,ht∈Rm,t=1,2,…,T。在时间步t,长短期记忆网络的计算公式如下:
其中:Wi、Wf、Wo、Wc是由可训练参数组成的映射矩阵;bi、bf、bo、bc是偏置项。简便起见,可以将一个长短期记忆网络记为函数FLSTM,在长短期记忆网络的前向传播过程中,隐藏状态的更新公式为:
本文中使用长短期记忆网络来建模时间序列中的时序依赖和非线性特性,结合残差连接进一步挖掘缺失数据与最近非缺失数据的潜在关联,提高网络修复能力。基于残差连接LSTM(ReSidual Imputation Long-Short Term Memory,RSILSTM)网络的时间序列修复模型如图2所示。
图2 RSI-LSTM模型结构Fig.2 Structure of RSI-LSTM model
首先,模型输入是含缺失值的时间序列x={x1,x2,…,xT},其中,xt∈Rn(t=1,2,…,T)。接着,使用长短期记忆网络,将输入序列编码为一个隐藏状态序列h={h1,h2,…,hT},其中,ht∈Rm(t=1,2,…,T)。特别的,在时间步t,长短期记忆网络可以将输入xt,编码为一个隐藏状态ht。
在长短期记忆网络的基础上,引入残差连接的具体做法是构建一种残差和单元,用来聚合长短期记忆网络的隐藏状态和之前时刻的残差信息,有利于挖掘缺失数据和它们最近的非缺失数据的潜在关联性,提高网络修复能力。在时间步t,残差和rt的计算公式为:
其中:rt∈Rm,ht是时间步t长短期记忆网络的隐藏状态,Wr∈Rm×m是由可训练参数组成的映射矩阵,Wrrt-1代表了之前时刻的残差信息。
模型训练的前向传播分为两种情况:近似过程和修复过程。如图2 所示,虚线表示近似过程,实线表示修复过程。如果下一个时刻输入值xt已知,则使用残差和rt-1乘以一个映射矩阵Wout得到yt-1,用来近似下一时刻的输入值xt,目的是利用序列中未缺失的值来指导网络进行有效学习;如果下一个输入值xt是缺失值,则用yt-1修复xt。计算公式为:
其中,Wout∈Rn×m是由可训练参数组成的映射矩阵,可以把残差和rt-1映射到维度n,用于近似或修复当前时刻的输入值xt。根据当前的输入是否为缺失值,可以用一个统一的形式ut来表示当前的输入值:
其中:⊗是逐元素的乘法,⊕是逐元素的加法,I{xt}是逐元素的指示函数,指示向量xt每个维度是否缺失。因此,如果xt已知,则作为网络的输入值;如果xt是缺失值,则使用yt-1修复xt,作为当前时刻网络的输入值。在长短期记忆网络的前向传播过程中,可以将隐藏状态的更新公式重写为:
并且,在网络训练的反向传播过程中,如果当前时刻的目标值缺失,则该时刻的损失不可定义。因此,时刻t损失函数的计算方式如下:
其中,I{xt}是逐元素的指示函数,指示向量xt每个维度是否缺失。如果定义上标k表示样本集合的第k个样本k=1,2,…,N,总的训练损失函数为:
其中:Lreg(||ω||)是对模型所有参数ω的二范数正则项;λ是常量,用来调节两个损失函数的权重,在实验中设为1E -4。
1)对原始含缺失值的时间序列进行归一化处理,将数据映射到[0,1]区间之内,得到含缺失值的时间序列x={x1,x2,…,xT},并按照7∶3的比例将样本集划分为训练集和测试集。
2)将时间序列x逐时刻输入LSTM,在时间步t-1,LSTM将输入xt-1编码为隐藏状态ht-1。
3)在时间步t-1,根据LSTM 的隐藏状态ht-1和前一时刻的残差和rt-2,计算残差和rt-1。
4)如果下一个时刻输入值xt已知,则使用残差和rt-1乘以一个映射矩阵Wout得到yt-1,用来近似下一时刻的输入值xt;如果下一个输入值xt是缺失值,则用yt-1修复xt。
5)使用随时间反向传播(BackPropagation Through Time,BPTT)算法[17]更新网络参数;并且,如果当前时刻的目标值缺失,则该时刻的损失不可定义,不计算该时刻的损失。
6)网络迭代直到收敛,最后,如果输入值xt是缺失值,则可以使用上一时刻的预测值yt-1作为xt的修复值,将整条时间序列的缺失值修复完毕,即可得到完整的时间序列。
本文采用2016年1月1日到2018年6月30日南方某省的区域日供电量数据,供电量数据计量单位为天,因此每个区域有912 个时间点。随机抽取10 个区域的序列数据作为样本集,作为模型在单变量情况下的输入。
考虑到气象因素对电力数据的影响,本文还采用了2012年1 月1 日到2014 年12 月31 日两个地区的电力负荷数据。数据集来源于第九届电工数学建模竞赛A 题,除了地区电力负荷数据,该数据集还提供每日的最高温度、最低温度、平均温度、相对湿度和降雨量5 个气象因素数据。本文分别抽取每日的6:00、12:00 和18:00 作为原始数据,因此总的样本集有6个,分别记为Electric1~Electric6,每个样本集中包含1 096个时间点,每个时间点的数据为一个6 维的向量,包含电力负荷数据以及5 个气象因素数据,作为模型在多变量情况下的输入。
同时,本文还使用了两个通用的时间序列数据集Libras和Character Trajectories,数据来源于UCI 库[18],以进一步地进行多变量情况下的模型效果验证。
对于每一个数据集的时间序列,本文取前70%的序列作为训练集,后30%作为测试集。接着,为了处理输入不同量纲的问题,需要对原始的序列s={s1,s2,…,sT}进行归一化:
其中:xt∈Rn,st∈Rn(t=1,2,…,T),smax和smin分别表示时间序列的最大值和最小值。并且,对于现实缺失数据,无法获得对应的真实值来进行算法的性能评估。因此,在完整的时间序列的基础上,以一定的缺失率构造含有缺失值的数据。将缺失率设置为10%,让完整的序列数据按10%的概率随机缺失,构造出含有缺失值的时间序列,作为模型的输入;同时,缺失值对应的真实值将被用于评估修复算法的性能。
本文同时考虑了单变量输入和多变量输入两种情况。在单变量的情况中,使用南方某省的区域日供电量序列作为模型输入。在多变量的情况中,使用了两个地区的电力负荷数据,结合气象数据作为模型的多变量输入;同时,本文还使用了两个通用的时间序列数据集(http://archive.ics.uci.edu/ml)来辅助进行多变量情况下的模型效果验证。本文采用均方误差(Mean Squared Error,MSE)作为评价指标:
其中:n代表序列中缺失值的数量分别代表第i个缺失值对应的真实值和修复值。
对于区域日供电量数据集,模型的输入是单变量的,因而将所提出模型(RSI-LSTM)与常用的单变量缺失修复方法进行对比,对比方法包括卡尔曼(Kalman)滤波[19]、线性插值(Interpolation)[20]、移动平均(Moving Average,MA)[21]和基线模型长短期记忆(LSTM)网络。同时,也将所提出模型与两种先进的缺失修复方法进行对比,分别是生成对抗填补网络(Generative Adversarial Imputation Net,GAIN)[22]和双向循环填补(Bidirectional Recurrent Imputation for Time Series,BRITS)[23]。表1是上述方法的数据缺失修复结果。
从表1 中可以看出,RSI-LSTM 的修复性能优于GAIN、BRITS[23]、Kalman滤波[19]、Interpolation[20]和MA[21],表现为均方误差的总体降低,这说明了RSI-LSTM可以更好地建模时间序列的信息,修复缺失的时间序列。同时,RSI-LSTM 相比基线模型LSTM,修复误差有一定的降低,进一步证明了引入残差连接的有效性,因为引入残差连接有利于挖掘缺失数据和它们最近的非缺失数据的潜在关联性,提高网络的缺失修复能力。
表1 单变量数据集上修复误差(MSE)对比Tab.1 Comparison of imputation error(MSE)on univariate time series datasets
对于地区电力负荷数据集以及两个时间序列数据集,输入是多变量的。因此,本文将RSI-LSTM 与4 种近年来最先进的修复方法GAIN[22]、BRITS[23]、基于傅里叶的延迟k最近邻算法(Fourier-based Laggedk-Nearest Neighbor,FLk-NN)[24]以及动态缺失值的挖掘(Dynamics mining with missing values,DynaMMo)算法[25]进行了对比实验,这些方法描述如下。
1)GAIN。使用生成对抗网络来进行缺失修复,并提出一种提示向量来辅助模型训练,但训练数据较少时训练困难。
2)BRITS。该方法使用双向循环神经网络来进行时间序列的缺失值修复,但在连续缺失的情况下效果较差。
3)FLk-NN。结合滞后的k最近邻方法和傅立叶变换的集成方法,该方法较为复杂,需要大量的人工选择的超参数。
4)DynaMMo。该方法基于期望最大化方法和卡尔曼滤波。它在存在缺失值的情况下学习线性动力学系统,并对缺失值进行估计。该方法假设时间序列具有潜在的线性动力学特性,然而时间序列更多地表现为非线性。
表2 是上述模型的修复结果。可以看出,RSI-LSTM 的修复性能明显优于GAIN、BRITS、FLk-NN 以及DynaMMo,修复效果相比这几种方法有较大的提升。通过与这4 种近年来最先进的方法作对比,RSI-LSTM 可以取得当前最好的结果;同时,相比基线模型LSTM,RSI-LSTM 的修复效果也有一定的提升,验证了所提出模型的有效性。
表2 多变量数据上修复误差(MSE)对比Tab.2 Comparison of imputation error(MSE)on multivariate time series datasets
更进一步地,本文随机抽取其中1 个区域的电力负荷数据序列,使用上述各种多变量缺失修复方法对其进行修复,并计算数据序列中缺失时间点的修复值和真实值的绝对误差,绝对误差在0 附近波动,偏离0 越远,说明误差越大。结果如图3所示。由图3可以看出,对于电力负荷数据序列绝大多数的缺失时间点,RSI-LSTM 相比其他方法,可以取得更好的修复效果。具体地,本文模型的误差曲线相较其他对比方法更为平滑,在0附近波动较小。
为了能更直观地展示缺失值修复效果,随机抽取1 个区域的日供电量序列,画出上述各种单变量缺失修复方法的修复结果(由于Interpolation 效果较差,在此不做可视化)。如图4 所示,对于绝大多数的缺失时间点,RSI-LSTM 相比其他方法,可以取得较好的修复效果,修复值大多和原始的时间序列重合;而相比基线模型LSTM,RSI-LSTM 在峰值处可以取得较好的效果。因为残差和单元可以更好地挖掘缺失数据和它们最近的非缺失数据的潜在关联性,提高网络的修复能力。
图3 不同模型的绝对误差对比Fig.3 Absolute error comparison of different models
图4 不同模型的修复结果对比Fig.4 Imputation results comparison of different models
1)RSI-LSTM 使用长短期记忆网络对时间序列中的时间依赖和非线性特性进行建模,并且引入残差连接,挖掘缺失数据和它们最近的非缺失数据的潜在关联性;同时,该模型可以直接在含缺失值的情况下进行模型训练。
2)本文同时考虑了单变量输入和多变量输入两种情况,实验结果证明了该模型对时间序列缺失修复的有效性。
3)目前RSI-LSTM 只是应用于时间序列的缺失值修复上,以后的研究工作中,将考虑将该模型扩展到含缺失数据的时间序列预测或分类等问题。