赵 辉,杨 赛,岳有军,王红君
(1.天津理工大学天津市复杂系统控制理论与应用重点实验室,天津 300384;2.天津农学院工程技术学院,天津 300392)
随着中国经济社会的发展,用电需求量不断增加,提高负荷预测准确性显得更加重要。负荷预测精度越高,用电设备的利用率越高,越能减少能源浪费。短期负荷预测是负荷预测的重要组成部分,它对于经济调度,市场交易,最优潮流以及电力系统安全稳定运行有着重要意义[1]。
长期以来,中外专家学者对提高负荷预测精度进行了大量的探索与实验,提出了不同的预测方法,如最小二乘法、回归分析法、灰色系统理论、支持向量机[2]、人工神经网络[3]、组合预测等方法。由于负荷数据的非平稳性,目前大多数学者在进行负荷预测之前都会对数据进行预处理,让数据的平稳性增强,提高模型预测精度。文献[4]采用极点对称模态分解对历史数据进行分解,通过计算样本熵对分解后的序列进行重构,降低了序列的非平稳性,提高了预测精度;文献[5]提出了一种基于小波分解和灰色神经网络模型结合单位根检验(augmented Dickey-Fuller,ADF)的短期负荷预测方法,来提高负荷预测的准确性;由于短期负荷预测不仅与历史负荷数据有关,同时还会受到日期类型、大型节假日、温度等外界因素的影响,因此文献[6]将历史负荷数据、气象信息、日期信息构造特征图作为输入,利用卷积神经网络对特征进行提取,通过双向门控循环单元、全连接神经网络的混合模型得到预测结果;文献[7]提出了一种聚类和前馈神经网络组合的混合模型,预测短期公共汽车的负荷。通过仿真实验与其他不同的聚类模型预测结果进行对比,表明该模型具有较好的鲁棒性,预测精度更高。
支持向量机是基于统计学理论提出的,建立在结构风险最小原理基础上。支持向量机的出现有效地解决了传统神经网络中结果容易陷入局部极小值、过拟合等问题,其中支持向量回归(support vector regression,SVR)是支持向量机在函数回归领域的应用。文献[8]采用最小二乘法来改进支持向量机算法,简化了计算的复杂度,不仅加快了计算速度,精度也有所提高。可见支持向量机在提高数据预测精度方面具有优势,但对输入数据要求很高,通常需要搭配其他算法联合使用,存在计算速度慢、占用内存大等问题[9];文献[10]提出了一种支持向量机的大坝变形预测模型,然后通过改进的灰狼算法对其优化,预测精度有所提高。表明支持向量机对时序数据具有不错的预测精度,但是存在一些弊端,只适用于样本数量少的情况;近年来,深度学习在预测方向应用广泛,其思想主要来自对人工神经网络的研究。深度学习具有逼近复杂函数功能的能力,并且可以准确地提高负荷预测的精度。文献[11]提出了一种带注意力机制的卷积神经网络-门控循环单元(convolutional neural network-gated recurrent unit,CNN-GRU)负荷预测模型。其中GRU网络是长短期记忆网络(long short-term memory,LSTM)的一种变体,其简化了LSTM的结构参数,只包含更新门和重置门,与LSTM模型相比收敛速度更快。该模型将负荷数据作为输入,通过CNN网络的卷积层可充分提取数据的隐含特征,提高了预测准确度。
针对上述问题以及不同模型的优势,可以将神经网络算法和支持向量机进行结合,利用神经网络对输入数据的特征进行提取,再通过支持向量机对提取的特征进行预测,这样不仅降低了模型训练的难度,同时也提高了预测精度[12-14]。
因此,现提出一种基于小波分解的卷积神经网络和支持向量回归机的短期负荷预测组合模型。将输入的负荷数据、日期、天气因素进行划分,分别输入不同的预测模型,最后通过CNN的全连接层进行拼接输出到SVR模型中,获得最终的预测结果。通过与传统方法以及输入不划分的模型进行对比,证明方法的预测效率和精度。
小波变换是继承了傅里叶变换局部化思想的一种新的变换分析方法,克服了窗口大小不随频率变化的缺点。其主要特点是通过变换能突出某些问题的特征,对时间和空间的频率进行局部分析,通过伸缩平移运算对信号进行逐步细分。该方法被广泛应用在信号处理、图像处理、语音处理等领域[15]。
小波是函数空间L2(R)中满足下述条件的一个函数或者信号ψ(x),表达式为
(1)
将小波函数ψ(x)经过平移伸缩变换得
(2)
式(2)中:a、b均为常数,且a>0,其中a为伸缩因子,b为平移因子。
对信号f(x)的连续小波变换为
(3)
其逆变换为
(4)
对信号f(x)的离散小波变换为
(5)
其逆变换为
(6)
式(6)中:N是一个与信号无关的常数。
由于负荷历史数据是一种离散的时间序列数据,采用离散小波分解算法对非平稳的离散数据进行分解,由于分解后的序列长度不同,需要重构得到长度相同且频率不同的序列。选用部分历史负荷数据进行离散小波分解重构后结果如图1所示。
图1 小波分解与重构结果Fig.1 Wavelet decomposition and reconstruction results
卷积神经网络是1989年由纽约大学Lecun提出的一种专门用来处理具有类似网格结构的数据的神经网络,例如时间序列数据和图像数据等。卷积神经网络可以看作是传统神经网络的改进,都采用了层级网络结构。其本质是一种从输入到输出的映射,能够学习大量的映射关系。CNN网络主要由输入层、卷积层、池化层和输出层构成,其中输入层主要是对原始数据进行预处理,包括去均值、归一化。卷积计算层有两个重要的操作:局部关联和窗口滑动。池化层位于两个卷积层中间,用于压缩数据,减小过拟合。全连接层在CNN网络的尾部,将池化层的输出数据进行拼接。CNN网络最主要的优势在于权值共享的特殊结构,降低了网络的复杂性,对高维数据的处理无压力。同时CNN也避免了传统神经网络反向传播梯度损失过快的缺点[16]。CNN结构如图2所示。
图2 CNN结构Fig.2 CNN structure
支持向量机(support vector machines,SVM)是基于统计学理论提出的,建立在结构风险最小原理基础上的,利用有限的样本信息在学习精度和学习时间方面达到最佳,得到最好的泛化能力[17]。当把SVM用于回归问题时就产生了支持向量回归(support vector regression,SVR)。SVR寻求的最优超平面是使样本离超平面的总方差最小。非线性SVR的基本思想是通过事先确定的非线性映射,将输入向量映射到一个高维特征空间中并在高维空间中进行线性回归,得到在原空间非线性回归的效果[18]。其推导过程如下。
假设给定样本D={(x1,y1),(x2,y2),…,(xm,ym)},yi∈R,希望通过学习得到一个形如f(x)=ωTx+b的回归模型,使得f(x)与y尽可能地接近,其中ω和b是待定的模型参数。于是,SVR问题可以表示为
(7)
式(7)中:C为正则化常数;l∈为不敏感损失函数,表达式为
(8)
(9)
(10)
(11)
(12)
(13)
C=αi+μi
(14)
(15)
将式(12)~式(15)代入式(11)中,即得到SVR的对偶问题,表达式为
(16)
(17)
通过求解上述问题,SVR的决策函数可表示为
(18)
式(18)中:k(x,xi)=φ(xi)Tφ(xj)为核函数。
结合上述模型的原理及优势,提出了一种基于小波分解的卷积神经网络支持向量回归机的负荷预测模型。由于短期负荷预测的最大特点是具有明显的周期性,主要包括3个方面:①不同日之间24 h整体变化规律具有相似性;②不同周,同一星期类型日的相似性;③工作日相似性,休息日相似性。
因此选择相近负荷与相似负荷作为历史负荷数据,其中相似负荷取值为预测负荷点前7 d同一时刻的负荷值;相近负荷为预测点前一天的负荷值。
本文模型预测具体步骤如下。
步骤一收集原始负荷数据以及对应的每日最高温度、最低温度、平均湿度、降雨量等辅助天气因素。
步骤二对收集到的数据进行预处理,进行小波分解重构。
步骤三将重构后的数据进行特征构造,其中将负荷数据构造成相似日负荷数据和相近日负荷数据,将不同的天气因素进行Pearson相关性分析,构造天气特征输入。
步骤四对数据集进行划分,搭建预测模型,将负荷数据与天气数据分为两部分分别输入到不同的模型中进行训练,最后通过SVR模型得到预测结果。将数据分为两部分训练有利于模型更好地学习各自的特征,提高预测精度。
步骤五计算平均绝对误差和均方根误差来判断预测结果的合理性。
输入划分的CNN-SVR模型预测流程,如图3所示。
图3 模型整体预测流程Fig.3 Model overall forecasting process
采用电工数学建模竞赛提供的数据集,该数据集中包含了2009—2015年的负荷历史数据和2012—2015年的日最高温度、最低温度、平均湿度、降雨量等辅助天气信息。以2012年1月1日—12月31日的负荷数据和同期的天气因素作为训练集,对2013年1月1日的负荷值进行预测。编程环境为python3.6。
选取2012年1月1—3日连续3 d的负荷数据画出负荷曲线,如图4所示,根据2012年一整年的负荷数据画出负荷曲线,如图5所示。
由图4和图5可知,负荷数据与年、月、日、节假日有很大的相关性,同时在连续的时间内会有相似的波动性。
图4 连续3 d负荷变化曲线Fig.4 Load change curve for three consecutive days
图5 2012年全年的负荷变化曲线Fig.5 Load change curve for the whole year of 2012
为使模型训练方便,此次实验采用数据归一化处理的方法,将数据转换到[-1,1]范围内,加快训练速度,归一化公式为
(19)
Pearson相关系数是用来衡量变量间相关性的一种统计学方法,其相关性大小由r决定,r的计算公式为
(20)
其中相关系数r的取值范围为[-1,1]。相关性强度如表1所示。
由于负荷预测结果不仅与历史负荷数据有关,同时还受到最高温度、最低温度、平均温度、平均湿度、降雨量等气象因素影响。因此对同期的辅助因素进行了相关性分析,分析结果如表2所示。
表1 |r|的相关性强度Table 1 |r|correlation strength
表2 气象因素与负荷数据的相关性Table 2 Correlation between meteorological factors and load data
由表2可知,最高温度、最低温度、平均温度与负荷数据具有中等程度的相关性,而平均湿度和降雨量与负荷数据具有极弱的相关性。因此为了保证预测结果的准确性,把以上气象因素均作为输入数据对模型进行训练。
基于Keras深度学习框架来进行仿真实验,通过对CNN模型、SVR模型、划分输入的CNN-SVR模型和不划分输入的CNN-SVR模型进行训练,对未来一天的负荷值进行预测,验证本文模型的优势。其中SVR模型负荷预测的仿真结果如图6所示。
由图6可以看出,SVR模型的预测值曲线与真实值曲线有很大的偏差,预测效果很差。
CNN模型负荷预测结果如图7所示。
图6 SVR模型负荷预测结果Fig.6 SVR model load forecast results
图7 CNN模型负荷预测结果Fig.7 CNN model load prediction results
由图7可以看出,CNN模型的预测曲线与真实值曲线有较小的偏差,大部分的点预测值和真实值重合,预测效果比SVR模型有了很大的提高。
输入数据不划分和划分的CNN-SVR模型负荷预测结果如图8和图9所示。由图8和图9可以看出,输入数据划分的CNN-SVR模型预测效果要比输入数据不划分的CNN-SVR模型预测效果有所改善。不同模型负荷预测结果对比如图10所示。
图8 输入不分的CNN-SVR模型预测结果Fig.8 The prediction results of the CNN-SVR model without distinction of input
图9 划分输入的CNN-SVR模型预测结果Fig.9 The prediction results of the CNN-SVR model divided into the input
为了更清楚地比较这几种预测模型的预测精度,选取了平均绝对百分比误差(mean absolute percentage error,MAPE)和均方根误差(root mean squared error,RMSE)作为模型预测结果的评价指标。其计算公式为
(21)
(22)
经计算,得到本文模型和对比模型的MAPE和RMSE,如表3所示。
表3 不同模型误差对比Table 3 Error comparison of different models
由表3可以看出,SVR模型的MAPE和RMSE值均高于其他模型,所以SVR模型的预测效果不好,精度最低;而CNN模型的预测误差比SVR模型低很多,主要因为SVR模型主要通过公式求解模型权重,当训练数据较多时难以运行,因此导致预测精度不高,而CNN模型成功地避免了这一问题,在输入数据较多的情况,预测结果更准确;输入数据不划分的CNN-SVR模型与单一的CNN模型相比,MAPE降低了5.73%,RMSE降低了4.82%,预测精度更高,由图8可以看出,SVR的加入降低了模型的过拟合;同时,可以看出本文模型输入数据划分的CNN-SVR模型MAPE和RMSE的值均最低,与不划分的模型相比分别降低了48.65%、37.83%,预测效果更好。主要因为输入数据既包含了负荷数据,也包含了天气数据,而负荷数据具有时间关联性,天气特征数据则没有时间关联性,因此将两部分输入数据分别输入两个模型中,不仅提高了模型的学习能力,也提高了训练速度。
提出了一种考虑天气因素,输入数据划分的小波分解CNN-SVR的短期负荷预测模型,并与SVR模型、CNN模型和输入不划分的CNN-SVR模型预测结果进行对比,得出以下结论。
(1)小波分解与重构对原始负荷数据进行预处理,有效地降低了原始负荷数据的随机性和非平稳性,为负荷预测提供了保障。
(2)考虑到相似负荷数据和相近负荷数据对负荷预测的重要性,将相似负荷和相近负荷作为模型的输入负荷数据,可以有效提高预测精度。
(3)考虑到天气因素对负荷预测的重要影响,将天气数据作为输入的一部分,采用CNN和BP两个模型对负荷数据和天气数据进行训练,最后通过卷积神经网络的全连接层将两部分数据进行拼接,输出到SVR模型中,得到最终预测结果。预测精度得到提高。