GRU结合STL分解的短期电量预测方法
2020-11-17李晋国周绍景李红娇
李晋国, 周绍景, 李红娇
(上海电力大学 计算机科学与技术学院, 上海 200090)
目前,电动汽车、分布式发电以及其他电力相关技术的应用已得到迅速发展。作为智能城市的重要组成部分,智能电网使用了许多智能设备和先进的管理系统。智能电网比传统的电网更高效,更可靠[1]。准确的短期电量预测对电力调度和电力系统安全等非常有利,可以充分优化电力系统的资源分配,并减少新能源并网等造成的影响[2]。
针对短期电量预测,研究者提出了许多基于统计的方法,有一些成功的方法可以达到良好的精度,如差分整合移动平均自回归模型等[3]。但是,这些基于统计的方法通常采取时间序列分布或函数的形式,无法完全捕获复杂的非线性关系。近年来,人工神经网络由于具有捕获非线性关系的能力而被广泛使用,还可以解决电力系统管理领域中的分类和回归问题。在人工神经网络体系中,循环神经网络(Recurrent Neural Network,RNN)[4]被认为是序列建模的新起点,但是传统的循环神经网络在训练阶段存在梯度消失的问题,会导致网络中先前神经元的权重无法更新,最终导致网络训练失败。因此,RNN的变体——长短期记忆网络[5]和门控循环单元(Gated Recurrent Unit,GRU)[6]被提出来解决这一梯度消失问题,并且事实证明它们非常有效。文献[7]使用最小二乘法支持向量机对中长期的电力负荷进行预测,文献[8]提出了基于粒子群优化算法的BP神经网络负荷预测方法。上述两种方法都使用了改进的粒子群算法优化机器学习或神经网络模型的最优参数或权值和阈值,以提高预测精度。其缺点在于,使用粒子群算法需要消耗大量的时间和资源来搜索最优的参数。
本文提出了一种短期电量预测方法。该方法基于组合网络,使用STL(Seasonal-Trend decomposition procedure based on Less)[9]分解方法将原始电量数据分解为3个部分,减少了不同部分之间的干扰影响;设计并使用了GlobalGRU层和LocalGRU,以确保更好地捕获全局和局部非线性相关性;为了提高预测方法的鲁棒性,利用线性自回归模型来获取电量数据的线性相关性,并与GRU网络并行计算。评估实验结果表明,该方法可以进行有效的时间序列预测。
1 短期电量预测方法
本文提出的短期电量预测方法的整体结构如图1所示。该方法由STL分解和两个并行的GRU组成,其中GRU网络由GlobalGRU和LocalGRU组合而成。STL将原始数据分解成趋势、周期、残差3个分量,分别将其输入到预测模块中。其中,GlobalGRU层用于捕获长期全局依赖,LocalGRU层用于捕获短期局部依赖,使用全连接层合并两部分的结果。另外,自回归模型用于捕获电量的线性相关关系,并且与GRU网络并行计算,以提高预测模块的鲁棒性和准确性。最后,预测模块将GRU网络和自回归模型的预测结果进行汇总,并生成最终的预测结果。
图1 短期电量预测方法的整体架构
1.1 预测方式
电量数据可以看作一个时间序列x=
根据已知的
图2 滑动窗口预测方法
同理,可以使用
1.2 时间序列分解
由于电量具有很大的波动性和不稳定性,很难直接对原始数据进行预测,因此数据的分析和处理至关重要。
STL是一个迭代的非参数回归过程,是将鲁棒局部加权回归作为平滑方法的时间序列分解方法。具体地说,通过原始时间序列的Loess回归(局部回归)分解出周期性分量,从其余部分中分解出趋势,最后的部分表示周期性和趋势拟合的残差。
STL分解将电量数据的时间序列分解为趋势、周期和残差3个部分,目的是减少不同部分之间的相互影响,分别对不同的部分进行预测可以使预测结果更加准确。原始数据及STL分解后的分量如图3所示。
图3 原始数据及STL分解后的分量
将这些被分解的时间序列数据输入到下一阶段的预测模块中,由预测模块输出各分量的预测结果,对3个分量的预测结果进行线性求和,就可以得到完整的预测序列。
1.3 预测模块
预测模块包括两个部分:深度神经网络部分由GlobalGRU和LocalGRU组成,GlobalGRU层用于捕获全局依赖性,LocalGRU层用于捕获局部依赖性;线性回归部分使用自回归模型。
1.3.1 GlobalGRU
考虑到在长序列中经典RNN存在梯度消失问题,本文使用GRU网络作为该层的主要结构。GRU的结构模型如图4所示。
图4 GRU的结构模型
该模型基于长短期记忆网络LSTM,由更新门zt和重置门rt组成,单元的隐状态和输出被组合为一个状态参数S。与长短期记忆网络相比,门的数量从LSTM中的3个变为2个,随着训练参数的减少,网络的训练速度也将提高。GRU的计算公式为
zt=σ(Wz·[ht-1,xt])
(1)
rt=σ(Wr·[ht-1,xt])
(2)
(3)
(4)
式中:σ——Sigmoid函数;
Wz,Wr,W——权重矩阵;
ht——网络中t时刻的隐状态;
xt——t时刻的输入数据;
1.3.2 LocalGRU
文献[10]提出了一种LocalRNN方法。该方法可以在长序列建模中获得局部依赖信息。图5为传统RNN与LocalRNN操作之间的区别。
图5 传统RNN与LocalRNN的操作区别
1.3.3 自回归模型
由于神经网络的非线性特性,所以输出的规模对输入的规模并不敏感。为了解决这一问题,本文将线性和非线性分量组合在一起,以获得最终的预测结果。使用经典的自回归模型来获取原始数据的线性特征为
(5)
式中:WAR,bAR——参数矩阵和偏置项。
最终的预测结果由深度神经网络部分和自回归部分组成:
(6)
2 实验评估
2.1 实验数据与设定
采用来自上海某区的真实数据集对本文方法进行评估,并将结果与常用的时间序列预测方法进行比较,包括支持向量机(Support Vector Machine,SVM)和GRU。采样点的所有时间间隔均为1日,所有数据在输入预测模型前均使用Min-Max归一化,将其缩放至0~1。
在实验中,电量数据集分为训练集(80%)、验证集(10%)和测试集(10%)。使用滑动窗口预测方法将分解后的数据进一步划分为模型所需的数据,使用长度为T的电量序列作为模型各部分的输入数据,并输出时间T+h的电量预测值。
在神经网络模型中,使用Adam方法作为优化器,使用均方误差(MSE)作为损失函数。对于GRU和本文方法,从{64,128,256}中选择隐藏层维度,从{3,5,7}中选择网络层总数。根据验证集的性能从同一组值中选择学习率,最终结果取最优参数下多次实验的平均值。对于SVM,使用网格搜索自动找到其最佳参数。
所有方法均基于Python 3.6实现,深度学习方法使用PyTorch 1.3.0框架实现,SVM使用Scikit-learn框架实现。所有实验均使用配备Intel Core i9-9900K CPU,NVIDIA RTX2080 GPU,32 GB RAM的计算机进行。
选用3种评估标准作为性能指标,分别为平均绝对误差(MAE)、均方根误差(RMSE)、平均绝对百分比误差(MAPE)。各指标的值越低,表示预测效果越好。对于滑动窗口预测模型,设置历史数据长度={15,25,35},并预测未来{3,5,10}个时间步。这意味着使用15~35日的历史数据来预测未来第3日、第5日或第10日的电量值,并且选出表现最优的参数设置。
2.2 实验结果与分析
在测试集中,上述参数和方法的评估结果如表1所示。
表1 实验评估结果
表1中的每一列显示了在不同条件下不同方法的结果。
由表1可以看出,与使用普通机器学习方法的SVM模型相比,使用了深度学习思想的GRU和本文方法在多个评价指标下均取得了更低的误差值,说明它们比SVM拥有更准确的预测能力。究其原因在于,深度学习可以学习到时间序列中的复杂非线性依赖关系,可以比传统方法更好地解决复杂的预测任务。
此外,各预测方法在测试集上的预测结果如图6所示。
由图6可知,与传统的GRU相比,本文提出的方法可以更好地适应序列的局部变化。例如,在一些用电高峰和低谷,LocalGRU模块很好地捕获了局部依赖性,预测到电量序列在短时间内的突然变化,提高了预测精度。GlobalGRU模块使得本文方法不仅能在局部范围内捕捉电量变化,在整体上也能保持准确的预测效果,比其他方法更拟合于原始值。
图6 各预测方法在测试集上的预测结果
表2为不同历史数据长度与预测范围下的预测模型误差。
由表2可以看出,使用历史数据长度为15日的数据进行训练时,模型预测效果较差,说明数据量过少使得预测模型无法获得充足的信息进行预测。当历史数据长度为35日时,相较于25日的预测效果提升不够明显,这表明25日的历史数据长度包含了预测未来所需的足够信息。此外,过长的序列也会增加预测模型训练过程中的资源消耗。因此,本文使用历史数据长度为25日的数据进行预测,并且在多个预测窗口大小都取得较好的预测效果。
表2 不同历史长度与预测范围下的预测模型误差
3 结 语
电量预测不仅可以提高电力系统的可靠性,而且可以降低生产成本,因此,实现高效的能源管理具有重要意义。本文提出了一种结合STL分解和GRU网络的新型短期电量预测方法。首先,该方法通过STL将原始电量序列分解为多个分量;然后,使用GlobalGRU和LocalGRU分别预测不同分量,并使用自回归模型提高了预测结果的鲁棒性;最后,在真实数据集上的评估实验表明,该方案比SVM模型和纯GRU模型具有更高的预测精度,可以捕获局部和全局相关性。