基于CNN-SVR城市日负荷预测机制
2022-11-02张功勋姚方曹赟
张功勋, 姚方, 曹赟
(山西大学 电力工程系,山西 太原 030013)
0 引 言
城市短期负荷预测受气温、季节、风速和经济等多方面因素的影响。城市日负荷预测是一个复杂的非线性问题,数据繁杂而冗长,需要以优秀的计算方法做支撑才能得到更好的预测表现。相关学者提出了不少思路解决日负荷预测问题。不乏学者使用自回归综合移动平均(autoregressive integrated moving average, ARIMA)模型来预测。最近的研究集中在现代计算技术上,例如遗传算法[1]和模糊逻辑[2]。机器学习技术也提供了处理复杂问题的有效方法,通过允许建立高性能模型来定义影响电力需求的各种因素的非线性相互依赖性。日负荷预测问题本质上是一个时序问题。基于递归神经网络(recurrent neural network, RNN)及其变体、长短期记忆(long short-term memory, LSTM)和门控递归单元(gated recursive unit, GRU)网络的模型很好地捕捉了每周负载周期,但在吸收可能影响消费的外部因素方面存在问题。不考虑这些因素会导致预测不佳。载荷数据的相邻值的模式可以通过卷积神经网络(convolutional neural network, CNN)有效地提取。研究发现CNN在负荷预测精度方面表现优异。
支持向量机(support vector machines, SVM)在回归预测方面有广泛应用。文献[3]提出序列极限的支持向量回归做短期负荷预测的思路,提出信息熵改进的变精度粗糙集的SVM对降温负荷进行预测。文献[4]以最小二乘法来改进SVM的风机出力预测。文献[5]使用一种支持向量分位数回归算法对短期电力负荷概率密度预测。因此,在对输入数据处理较好的情况下SVM在时序数据预测方面表现优异,搭配其他模型或者改进SVM是常规的处理思路。基于这些特点,本文提出了基于CNN-SVR的神经网络框架。
1 CNN-SVR预测模型
1.1 CNN模型分析
CNN以卷积运算理论为基础,具有参数共享机制和深度结构[6],由池化层、卷积层和全连接层三个部分组成[7]。卷积层用于提取图像中的特征,使用卷积核对其中输入的矩阵数据进行扫描式局部特征的提取,再次利用非线性函数作为激活函数对其中特征信号进行映射。池化层发挥了保持特征和减小特征维度的功能。全连接层一般存在于神经网络结构底部,用来合并提取特征信息。合并的特征送到输出层,经指数函数或逻辑函数输出最终分类标签。
1.2 SVR模型分析
SVR定义了1个常量ε> 0,对于某个点(xi,yi),如果|yi-f(xi)|≤ε,损失忽略;如果|yi-f(xi)|>ε,则相应损失为|yi-f(x)|-ε。SVR分为线性回归和非线性回归,线性回归给定1个数据集为:
P:{(x1,y1),(x2,y2),…,(xm,ym)}
(1)
式中:x∈Rn,y∈R。对于任意的(x1,y1)属于上述数据集P,都存在f(x)=wx+b,使|yi-f(xi)|≤ε(ε>0),则说明f(x)=wx+b是上述数据集P的ε线性回归。对于非线性回归问题使用核函数解决。
CNN提取的特征作为支持向量回归机的输入,将SVR的预测值与真实值对比,对比得到预测损失函数后反向求导,并在反向求导中不断训练优化参数,重复该过程以得到最优参数。SVR表示为:
(2)
(3)
将上式构造转化偶函数,参数求极值后化简得到只含有α的SVR对偶式。
(4)
结合KKT条件和核函数为:
(5)
最后SVR可以表示为:
(6)
出于对试验适用性、线性不可分以及受影响的参数少和便于使用的特点考量,本文使用RBF径向基核函数。
1.3 模型架构
CNN-SVR的模型架构设计如图1所示。
图1 CNN-SVR结构图
输入设置为8×8的数据,Conv1使用10个3×3的卷积核,步长为1,卷积后的数据为6×6。Conv2使用5个1×1的卷积核,步长为1,把上一层卷积结果的数量从10降到5,以此达到降低下一层卷积计算量的目的。第二层卷积后得到5个6×6的数据。Conv3使用20个2×2的卷积核,步长同样设置为1,得到20个5×5的数据。在全连接层中卷积层3的数据转化为二维数据后再作为输入传递给支持向量回归机。
2 算例分析
2.1 影响负荷的主要因素及数据归一化
负荷数据本质上是一个时间序列。时间序列是按时间顺序进行观察的。在现实生活中,人们的日常用电负荷量主要受到温度、风速、空气湿度、降雨量、寒冷度、光照强度和云层覆盖度等诸多因数影响。本文考虑这些因素作为输入变量,所有的影响因素指标均使用当日数据的平均值。不同原始数据的特征范围往往差别巨大,导致训练时出现梯度下降慢、收敛速度慢和精度差的问题。对数据进行归一化之后这类问题就能顺利解决。归一化公式如式(7)所示。
(7)
2.2 模型训练流程
设计CNN-SVR模型预测流程如图2所示。出于对特征梯度和模型收敛的考虑,首先对数据进行归一化处理。再通过Python编码将数据矩阵化,使用训练集对模型进行训练。通过卷积层1实现特征的初步提取,卷积层2实现降维功能并降低模型的运算量,卷积层3实现进一步提取特征。全连接层将卷积特征传递给支持向量机,由于50次训练后误差基本上稳定在较低的状态。最后测试集对模型反复训练50次以确定权重(w)和偏置(b)等参数。输出反归一化后的回归结果。
图2 CNN-SVR模型预测流程图
2.3 模拟结果
本文使用的数据源于东南亚某邦区域负荷调度中心,训练集采用2017年1月到2019年1月9日的负荷数据,测试集使用数据集最后21天的数据。该模型基于jupyter notebook在pytorch框架下进行编程。该模型对包括周日和假日在内的做出了相当好的预测。三个性能指标用于评估模型在测试数据上的性能:均方根误差(RMSE)、决定系数(R2)和平均绝对百分比误差(MAPE),分别在式(8)~式(10)中描述。
(8)
(9)
(10)
为了验证CNN-SVR组合模型在日负荷预测方面的优越性,本文单独设计了SVR模型和CNN模型,并使用同样的数据进行训练和预测,测试主要参考MAPE和RMSE 2个指标。平均绝对误差主要考察测试数据的离散程度,均方根误差主要考察测试结果的准确性。由表1可以看出,CNN-SVR组合模型相比独立的CNN模型和SVR模型在离散度和准确度两方面的表现均更胜一筹。证明了该组合模型更适合城市日负荷的预测。
表1 RMSE和MAPE对比
训练集和测试集均取得了不错的预测效果,为了更直观地感受训练和测试的效果,本文插入了连续两年日负荷训练数据的训练成效和21天日负荷的测试成效,如图3、图4所示。
图3 由训练好的模型对训练集做出的预测
图4 由训练好的模型对测试集做出的预测
3 结束语
本文对于城市电力负荷预测使用CNN和SVR结合的方法在测试中取得了比较理想的试验数据和试验图像。该方法对于工程和理论研究均具有重要的参考意义。