基于LSTM栈式自编码多模型荷预测方法及系统与流程

文档序号:23135170发布日期:2020-12-01 13:10阅读:220来源:国知局
基于LSTM栈式自编码多模型荷预测方法及系统与流程

本发明属于负荷预测技术领域,具体涉及基于lstm栈式自编码多模型荷预测方法及系统。



背景技术:

随着智能电网的发展,智能化的终端测量装备已经普及,我国已经安装超过5亿个智能电表。随之而来的是电力数据量和复杂度的指数性增长,有效利用庞大的数据集将获得极大的价值,其中最具有代表性之一的就是利用历史数据对未来负荷进行预测。考虑到目前电动汽车、储热等柔性负荷的增加,无论是在规模上还是复杂度上,都增大了对数据集分析处理的难度,更是对电网的安全稳定运行带来了巨大的挑战。因此,可以说如今的负荷预测已经成为根据多变量时序数据进行预测的问题,如何基于数据挖掘技术有效利用大数据库,提高负荷预测精度是如今的研究热点。在负荷预测中,短期负荷预测受多种灵活变量影响,通过对历史数据进行挖掘,可以有效提高短期负荷预测精度,为电网调度提供重要依据。

数据挖掘涉及人工智能与大数据领域。结合负荷预测而言,利用数据挖掘可以获取历史负荷数据中的内部关系,寻找特征指标,并将这些特征指标构建为训练集,用训练集训练模型,得到泛化的负荷预测模型。短期负荷预测算法主要分为传统统计法和机器学习法。传统统计法有多元线性回归、自回归移动平均、傅里叶展开模型等,该类方法只能处理少量简单且时序性强的数据,面对各种复杂的柔性负荷并不适用。现阶段短期负荷预测主要通过机器学习法:人工神经网络、模糊控制、支持向量机、灰色预测等,此类方法具有很强的自学习能力。bp神经网络算法具有很好的数据拟合能力,能够处理大量数据,但其易于陷入局部最优且无法挖掘负荷内部特征,支持向量机虽然可以解决局部最小值等问题,但其处理大数据性能较差。

随着电动汽车等柔性负荷的发展以及电网智能终端感测设备的进步,负荷预测问题已经大数据化,呈现多变量、高维度、复杂化的特征,针对短期负荷预测影响尤为明显。随着电动汽车的渗透率不断增加,电动汽车充电负荷对短期负荷预测影响愈发明显,常规考虑电动汽车等柔性负荷的影响都是基于时空特性,通过元胞自动机等方法进行土地决策根据区域类型进行预测或是基于出行链进行预测,无论何种方法都十分繁琐,且其预测的充电负荷只能与系统负荷单一叠加,无法进行有效融合。

因此,面对庞大复杂的数据库,为了有效利用多变量时序性数据进行短期负荷预测,综合考虑前人发明的预测方法的优缺点,构建一种新的负荷预测模型方法或系统。



技术实现要素:

发明目的:

本发明在于克服常规预测方法中手动提取影响因子特征造成破坏数据内部隐藏价值的缺陷,提出基于lstm栈式自编码多模型荷预测方法及系统,其目的在于解决无法充分利用多变量时序序列数据的问题,以及从数据挖掘的角度实现考虑电动汽车的短期负荷预测。

技术方案:

基于lstm栈式自编码多模型荷预测方法,该方法包括:

步骤1:获取数据集,对数据集进行预处理;

步骤2:建立电动汽车充电开始时间的概率模型并重构数据集;

步骤3:构建lstm栈式自编码结构并训练;

步骤4:利用xgboost模型预测短期负荷,并进行指标评价。

进一步的,数据集的获取包括采集负荷数据、电价数据、温度、湿度、待测日一周前负荷数据、星期类型、法定节日等,采样周期为15min,按时间序列排列,构建数据集;时间序列分为两列,第一列为年-月-日-小时-时刻,第二列为历史数据值。

进一步的,对数据集进行预处理,对于在时间上有连续性的变量历史负荷数据、温度、湿度,基于格拉布斯准则法判断异常值并清理,采用lagrange三次样条插值补全残缺数据,最后对数据集归一化处理;

格拉布斯准则法如下:

其中,g1,g2分别为判断最小、最大值是否异常;为均值,s为标准差;

若g1,g2分别大于对应的判据g则表示该最小、最大值为异常值;其中,判据g依据格拉布斯的临界值表选取;

考虑到是时序性变量在时间上的连续性,将异常值修正为其前后两值的均值,该方式在数据集上迭代进行,直到无异常值为止;

lagrange完备三次样条插值法如下:

已知函数y=f(x)在区间[a,b]上的值yi=f(xi)(i=0,1,2,…n),其中:a=x0<x1<…<xn-1<xn=b;

插值函数s(x)满足:

s(xi)=yi(i=0,1,2,…n);s(x)在每个小区间[xi,xi+1](i=0,1,2,…n)上均为三次多项式,记作si(x);s(x)在[a,b]上二阶连续可微;

因此,记为:

进而得:

选取的边界条件为:

s′(a)=y′0,s′(b)=y′n(5)

其中,y0′表示函数f(x)在x0处的导数,yn′表示函数f(x)在xn处的导数;

归一化流程:

对于具有时序性的连续变量,标准化公式为:

其中,x表示实际值,xmin表示样本中最小值,xmax表示样本中最大值,x′表示归一化处理后的值,应使归一化处理后的值在0~1间;

对于离散型变量,规定晴好天气影响因子为1,雾霾多云天气影响因子为0.5,雨雪天气影响因子为0.1,极端天气影响因子为0,规定工作日影响因子为1,休息日影响因子为0。

进一步的,建立电动汽车充电开始时间的概率模型并重构数据集:

从数据时序性角度考虑电动汽车的充电负荷对短期负荷预测的影响;

从电动汽车用户行为角度建立概率模型,以日出行结束时刻作为充电需求开始时刻,拟合电动汽车用户日出行结束时刻概率分布:

其中,t表示日出行结束时刻,σ和μ分别表示电动汽车日出行结束时刻统计数据的标准差和均值;

通过蒙特卡洛法建立电动汽车充电需求的时间概率模型,并在处理后作为时序性输入插入数据集。

进一步的,构建lstm栈式自编码结构并训练:

采用lstm栈式自编码提取数据特征,堆栈的lstm编码层作为隐藏层,

自动编码器由三层组成,分别为输入层、隐藏层和输出层;训练过程包括编码阶段和译码阶段;给定未标记的输入数据集,其中n=1,2,...,n且xn∈rm,两个阶段表示为:

h(x)=f(w1x+b1)(8)

其中,h(x)表示从输入向量x计算得出的隐藏编码向量,是输出层的译码器向量;f为编码函数,g为解码函数,w1和w2分别为编码器和解码器的权矩阵,b1和b2分别为各相位的偏置向量;输入与重构输入或输出之间的差异称为重构误差,在训练期间模型使最小化;

lstm网络模块具有三个门结构:遗忘门、输入门、输出门;采用sigmoid和tanh函数,用σ表示sigmoid函数变化;

遗忘门:

ft=σ(wfxxt+wfhht-1+bf)(10)

当前时刻的输入xt与前一时刻状态记忆单元ct-1、中间输出ht-1共同决定状态记忆单元遗忘部分;

输入门:

it=σ(wixxt+wihht-1+bi)(11)

gt=tanh(wgxxt+wghht-1+bg)(12)

其中,ct-1表示前一时刻状态记忆单元的保留向量;输入xt和中间输出ht-1分别经过sigmoid和tanh函数变化后共同决定状态记忆单元中保留向量;

输出门:

ot=σ(woxxt+wohht-1+bo)(14)

输出ht由更新后的ct与输出ot共同决定;

上式中,ft,it,gt,ot,ht和ct分别为遗忘门、输入门、输入节点、输出门、中间输出和状态记忆单元的状态;wfx,wfh,wix,wih,wgx,wgh,wox和woh分别为相应门与输入xt和中间输出ht-1相乘的矩阵权重;bf,bi,bg,bo分别为相应门的偏置项;表示向量中元素按位相乘;表示矩阵加法;

在python3.7下通过keras库搭建lstm网络,利用adam算法优化。

进一步的,利用xgboost模型预测短期负荷和评价指标:

xgboost模型将lstm栈式自编码提取的特征作为输入序列,xgboost模型采用贪心算法,通过集合方式防止过拟合现象,且泛化能力强;

xgboost模型作为一种提升树模型,实现了多种树模型的集成,这些树模型为cart回归树模型;xgboost模型如下所示:

为第i个样本的模型预测值;k为树的数量;f为树的集合空间;xi表示第i个数据点的特征向量;fk对应第k棵独立的树的结构q和叶子权重w相关状况;

损失函数l:

其中,为预测值和目标值yi之间的训练误差之和;为树的复杂度之和,用于控制模型复杂度的正则项:

其中γ和λ为模型的惩罚系数;w表示叶子权重,t表示叶子结点数量,

损失函数在序列最小化过程中,每一轮加入的增量函数ft(xi)尽可能使损失函数最大程度减小;第t轮的目标函数表示为:

采用二阶泰勒展开的方式近似目标函数;设第j个叶子结点的样本集合为ij={i|q(xi=j)};其中分别为损失函数的一、二阶导数;得:

gj表示叶子结点j所包含样本的一阶偏导数累加之和,是一个常量;hj表示叶子结点j所包含样本的二阶偏导数累加之和,是一个常量,

得:

wj表示叶子结点j的权重,l(t)表示第t轮损失函数,

对w求偏导得到:

将权值代入目标函数得到:

损失函数越小表示模型越好;采用贪心算法对子树划分,每次对已有的叶子增加新划分,计算最大增益:

其中分别表示左、右子树分裂后产生的增益,为不进行子树分裂的增益;

xgboost的泛化能力较强,通过集合的方式防止过拟合,xgboost模型输出预测结果后,选择平均误差,平均相对误差和相对均方误差作为评价指标:

其中,n为预测点个数,x(t)表示t时刻实际观测的负荷值,y(t)表示t时刻负荷预测值;me反映整体预测值平均偏差的情况,值越小偏差越小;mape能够反映相对平均偏离程度,值越小表明模型预测精度越高;rmse反映预测模型的可靠性,值越小则模型越可靠。

基于lstm栈式自编码多模型荷预测系统,该系统包括获取数据集模块,预处理模块,概率模型和重构模块,lstm栈式自编码结构的构建和训练模块,预测模块,指标评价模块;

数据模块,用于获取数据,构建数据集;

预处理模块,用于对数据集进行预处理;

概率模型和重构模块,用于建立电动汽车充电开始时间的概率模型并重构数据集;

构建和训练模块,用于构建lstm栈式自编码结构并训练;

预测模块,用于利用xgboost模型预测短期负荷;

指标评价模块,用于对预测短期负荷进行指标评价。

进一步的,数据模块,获取包括采集负荷数据、电价数据、温度、湿度、待测日一周前负荷数据、星期类型、法定节日等,采样周期为15min,按时间序列排列,构建数据集;时间序列分为两列,第一列为年-月-日-小时-时刻,第二列为历史数据值;

预处理模块,对于在时间上有连续性的变量历史负荷数据、温度、湿度,基于格拉布斯准则法判断异常值并清理,采用lagrange三次样条插值补全残缺数据,最后对数据集归一化处理;

格拉布斯准则法如下:

其中,g1,g2分别为判断最小、最大值是否异常;为均值,s为标准差;

若g1,g2分别大于对应的判据g则表示该最小、最大值为异常值;其中,判据g依据格拉布斯的临界值表选取;

考虑到是时序性变量在时间上的连续性,将异常值修正为其前后两值的均值,该方式在数据集上迭代进行,直到无异常值为止;

lagrange完备三次样条插值法如下:

已知函数y=f(x)在区间[a,b]上的值yi=f(xi)(i=0,1,2,…n),其中:a=x0<x1<…<xn-1<xn=b;

插值函数s(x)满足:

s(xi)=yi(i=0,1,2,…n);s(x)在每个小区间[xi,xi+1](i=0,1,2,…n)上均为三次多项式,记作si(x);s(x)在[a,b]上二阶连续可微;

因此,记为:

进而得:

选取的边界条件为:

s′(a)=y′0,s′(b)=y′n(5)

其中,y0′表示函数f(x)在x0处的导数,yn′表示函数f(x)在xn处的导数;

归一化流程:

对于具有时序性的连续变量,标准化公式为:

其中,x表示实际值,xmin表示样本中最小值,xmax表示样本中最大值,x′表示归一化处理后的值,应使归一化处理后的值在0~1间;

对于离散型变量,规定晴好天气影响因子为1,雾霾多云天气影响因子为0.5,雨雪天气影响因子为0.1,极端天气影响因子为0,规定工作日影响因子为1,休息日影响因子为0。

进一步的,概率模型和重构模块,

从数据时序性角度考虑电动汽车的充电负荷对短期负荷预测的影响;

从电动汽车用户行为角度建立概率模型,以日出行结束时刻作为充电需求开始时刻,拟合电动汽车用户日出行结束时刻概率分布:

其中,t表示日出行结束时刻,σ和μ分别表示电动汽车日出行结束时刻统计数据的标准差和均值;

通过蒙特卡洛法建立电动汽车充电需求的时间概率模型,并在处理后作为时序性输入插入数据集;

构建和训练模块,

采用lstm栈式自编码提取数据特征,堆栈的lstm编码层作为隐藏层,

自动编码器由三层组成,分别为输入层、隐藏层和输出层;训练过程包括编码阶段和译码阶段;给定未标记的输入数据集,其中n=1,2,...,n且xn∈rm,两个阶段表示为:

h(x)=f(w1x+b1)(8)

其中,h(x)表示从输入向量x计算得出的隐藏编码向量,是输出层的译码器向量;f为编码函数,g为解码函数,w1和w2分别为编码器和解码器的权矩阵,b1和b2分别为各相位的偏置向量;输入与重构输入或输出之间的差异称为重构误差,在训练期间模型使最小化;

lstm网络模块具有三个门结构:遗忘门、输入门、输出门;采用sigmoid和tanh函数,用σ表示sigmoid函数变化;

遗忘门:

ft=σ(wfxxt+wfhht-1+bf)(10)

当前时刻的输入xt与前一时刻状态记忆单元ct-1、中间输出ht-1共同决定状态记忆单元遗忘部分;

输入门:

it=σ(wixxt+wihht-1+bi)(11)

gt=tanh(wgxxt+wghht-1+bg)(12)

其中,ct-1表示前一时刻状态记忆单元的保留向量;输入xt和中间输出ht-1分别经过sigmoid和tanh函数变化后共同决定状态记忆单元中保留向量;

输出门:

ot=σ(woxxt+wohht-1+bo)(14)

输出ht由更新后的ct与输出ot共同决定;

上式中,ft,it,gt,ot,ht和ct分别为遗忘门、输入门、输入节点、输出门、中间输出和状态记忆单元的状态;wfx,wfh,wix,wih,wgx,wgh,wox和woh分别为相应门与输入xt和中间输出ht-1相乘的矩阵权重;bf,bi,bg,bo分别为相应门的偏置项;表示向量中元素按位相乘;表示矩阵加法;

在python3.7下通过keras库搭建lstm网络,利用adam算法优化。

进一步的,预测模块,

xgboost模型将lstm栈式自编码提取的特征作为输入序列,xgboost模型采用贪心算法,通过集合方式防止过拟合现象,且泛化能力强;

xgboost模型作为一种提升树模型,实现了多种树模型的集成,这些树模型为cart回归树模型;xgboost模型如下所示:

为第i个样本的模型预测值;k为树的数量;f为树的集合空间;xi表示第i个数据点的特征向量;fk对应第k棵独立的树的结构q和叶子权重w相关状况;

损失函数l:

其中,为预测值和目标值yi之间的训练误差之和;为树的复杂度之和,用于控制模型复杂度的正则项:

其中γ和λ为模型的惩罚系数;w表示叶子权重,t表示叶子结点数量,

损失函数在序列最小化过程中,每一轮加入的增量函数ft(xi)尽可能使损失函数最大程度减小;第t轮的目标函数表示为:

采用二阶泰勒展开的方式近似目标函数;设第j个叶子结点的样本集合为ij={i|q(xi=j)};其中分别为损失函数的一、二阶导数;得:

gj表示叶子结点j所包含样本的一阶偏导数累加之和,是一个常量;hj表示叶子结点j所包含样本的二阶偏导数累加之和,是一个常量,

得:

wj表示叶子结点j的权重,l(t)表示第t轮损失函数,

对w求偏导得到:

将权值代入目标函数得到:

损失函数越小表示模型越好;采用贪心算法对子树划分,每次对已有的叶子增加新划分,计算最大增益:

其中分别表示左、右子树分裂后产生的增益,为不进行子树分裂的增益;

xgboost的泛化能力较强,通过集合的方式防止过拟合,xgboost模型输出预测结果后,选择平均误差,平均相对误差和相对均方误差作为评价指标:

其中,n为预测点个数,x(t)表示t时刻实际观测的负荷值,y(t)表示t时刻负荷预测值;me反映整体预测值平均偏差的情况,值越小偏差越小;mape能够反映相对平均偏离程度,值越小表明模型预测精度越高;rmse反映预测模型的可靠性,值越小则模型越可靠。

优点及效果:

本发明具有以下优点和有益效果:

(1)、基于格拉布斯准则和lagrange完备三次样条插值处理数据集,最大程度保持数据完整性与连续性,对于离散型变量基于人工经验归一化,在对结果不产生较大影响下简化预处理步骤,提高运算速度。构成具有时序特点的数据集,便于lstm网络训练。

(2)、首次从数据时序性角度考虑电动汽车的充电负荷对短期负荷预测的影响。由于电动汽车的充电行为与电价、天气等因素在一定程度上有很强的相关性,本发明提出从电动汽车用户行为角度建立概率模型,以日出行结束时刻作为充电需求开始时刻,通过蒙特卡洛法建立电动汽车充电需求的时间概率模型,并在处理后作为时序性输入插入数据集,实现电动汽车充电负荷与其他影响因子的结合,便于后续模型对包括电动汽车充电负荷在内的各种影响因子深度挖掘,在不失预测精度的前提下,极大简化了预测模型。

(3)、采用lstm栈式自编码提取数据特征,堆栈的lstm层作为隐藏层,既可以充分在时间、变量与变量、变量大小中立体挖掘数据价值,又能深度学习,提取必要的输入特征,实现降维并重构输入序列。本发明所提算法与如今复杂而庞大的多变量时序性数据库十分契合,能够最大程度挖掘并利用数据价值,避免手动提取特征对数据完整性的破坏,为后续xgboost负荷预测模型提高预测精度提供了重要保障。

(4)、采用xgboost模型将lstm栈式自编码提取的特征作为输入序列并预测短期负荷。选择集合方式防止过拟合效应出现,且xgboost泛化能力较强,可以使预测结果更为精确,使预测模型具有很好的泛化性能。选择三种评价指标,能够全面评价模型,避免随机性。

综上所述,本发明首次从数据角度将电动汽车充电负荷转换为温度等具有时序特性的影响因子,简化了考虑电动汽车充电负荷预测的模型。提出的lstm栈式自编码结构能够充分挖掘利用多变量时序性数据集,深度学习数据内部价值,避免手动提取特征破坏数据完整性。xgboost算法通过集合方式防止过拟合效应出现。因此本发明提出的一种基于lstm栈式自编码--xgboost的多模型短期负荷预测方法,契合大数据时代特点,适合处理具有多变量时序性且复杂而庞大的数据集,能有效提高短期负荷预测精度,且具有较好的泛化能力。

附图说明

图1是基于lstm栈式自编码--xgboost的多模型短期负荷预测方法总体流程图。

图2是lstm栈式自编码结构图。

具体实施方式

下面结合附图对本发明做进一步的说明:

本发明提出基于lstm栈式自编码多模型荷预测方法及系统。首先对数据集数据预处理,实现降噪与归一化。其次构建电动汽车充电开始时间的概率模型,标准化处理使其成为具有时序性的影响因子后,插入数据集。然后构建lstm栈式编码器结构,实现对输入序列的特征提取。最后将重构的输入序列输入xgboost模型,得到预测结果。与常规的短期负荷预测方法比较,本发明能够充分挖掘多变量时序性历史数据,泛化能力强且有效提高短期负荷预测精度。

本发明针对传统短期负荷预测方法无法有效利用原始数据,考虑电动汽车充电负荷模型复杂繁琐,不能准确挖掘多变量高维度数据内部价值等问题,提出一种基于lstm栈式自编码--xgboost的多模型短期负荷预测方法。本发明适用于多维度多变量的电网历史数据样本,兼顾了传统预测的优点与深度学习的特点,有效实现数据内部价值的挖掘,提高短期负荷预测精度。

如图1所示,基于lstm栈式自编码多模型荷预测方法,该方法包括:

步骤1:获取数据集,对数据集进行预处理;

数据集的获取包括采集负荷数据、电价数据、温度、湿度、待测日一周前负荷数据、星期类型、法定节日等,采样周期为15min,按时间序列排列,构建数据集;时间序列分为两列,第一列为年-月-日-小时-时刻,第二列为历史数据值,便于输入序列的提取。

对数据集进行预处理。

对于在时间上有连续性的变量历史负荷数据、温度、湿度,基于格拉布斯准则法判断异常值并清理,采用lagrange三次样条插值补全残缺数据,最后对数据集归一化处理。

格拉布斯准则法如下:

其中,g1,g2分别为判断最小、最大值是否异常;为均值,s为标准差;

若g1,g2分别大于对应的判据g则表示该最小、最大值为异常值;其中,判据g依据格拉布斯的临界值表选取;

考虑到是时序性变量在时间上的连续性,将异常值修正为其前后两值的均值,该方式在数据集上迭代进行,直到无异常值为止;

lagrange完备三次样条插值法如下:

已知函数y=f(x)在区间[a,b]上的值yi=f(xi)(i=0,1,2,…n),其中:a=x0<x1<…<xn-1<xn=b;

插值函数s(x)满足:

s(xi)=yi(i=0,1,2,…n);s(x)在每个小区间[xi,xi+1](i=0,1,2,…n)上均为三次多项式,记作si(x);s(x)在[a,b]上二阶连续可微;

因此,记为:

进而得:

选取的边界条件为:

s′(a)=y′0,s′(b)=y′n(5)

其中,y0′表示函数f(x)在x0处的导数,yn′表示函数f(x)在xn处的导数;

归一化流程:

对于具有时序性的连续变量,标准化公式为:

其中,x表示实际值,xmin表示样本中最小值,xmax表示样本中最大值,x′表示归一化处理后的值,应使归一化处理后的值在0~1间;

对于离散型变量,规定晴好天气影响因子为1,雾霾多云天气影响因子为0.5,雨雪天气影响因子为0.1,极端天气影响因子为0,规定工作日影响因子为1,休息日影响因子为0。

步骤2:建立电动汽车充电开始时间的概率模型并重构数据集;

首次从数据时序性角度考虑电动汽车的充电负荷对短期负荷预测的影响。常规考虑电动汽车等柔性负荷的影响都是基于时空特性,通过元胞自动机等方法进行土地决策根据区域类型进行预测或是基于出行链进行预测,无论何种方法都十分繁琐,且其预测的充电负荷只能与系统负荷单一叠加,无法进行有效融合。由于电动汽车的充电行为与电价、天气等因素在一定程度上有很强的相关性,本发明提出从电动汽车用户行为角度建立概率模型,以日出行结束时刻作为充电需求开始时刻。

利用2017年美国家用车辆调查的数据,拟合分析日出行结束时刻概率曲线,通过蒙特卡洛仿真法,对随机变量构造数学期望,利用足够多的采样计算模拟结果。将得到的待预测日某时刻电动汽车用户行为的概率量化,以简化用户行为与充电负荷间的非线性关系,使其形成具有时序性的序列数据,插入上述数据集。

基于2017年美国家用车辆调查的数据,拟合电动汽车用户日出行结束时刻概率分布:

其中,t表示日出行结束时刻,σ和μ分别表示电动汽车日出行结束时刻统计数据的标准差和均值;

利用蒙特卡洛法模拟得到电动汽车充电开始时间的概率模型。

量化过程则将概率大小作为影响因子,结合具体时刻将其整理为时序数据格式后插入数据集。

通过蒙特卡洛法建立电动汽车充电需求的时间概率模型,并在处理后作为时序性输入插入数据集。实现电动汽车充电负荷与其他影响因子的结合,便于后续模型对包括电动汽车充电负荷在内的各种影响因子深度挖掘,在不失预测精度的前提下,极大简化了预测模型。

步骤3:构建lstm栈式自编码结构并训练;

如图2所示,lstm栈式自编码的结构是在自动编码器的传统结构上加以改进,将自动编码器的隐藏层替换为lstm层,目的是结合自动编码器的深度学习优势与lstm网络解决了梯度消失问题,能对时序性强的序列进行分析预测的特点。实现对训练集数据的深度挖掘,特征提取并重构输入序列。

结合自动编码器的深度学习优势与lstm网络解决了梯度消失问题,能对时序性强的序列进行分析预测的特点,采用lstm栈式自编码提取数据特征,堆栈的lstm编码层作为隐藏层。

自动编码器由三层组成,分别为输入层、隐藏层和输出层;训练过程包括编码阶段和译码阶段;给定未标记的输入数据集,其中n=1,2,...,n且xn∈rm,两个阶段表示为:

h(x)=f(w1x+b1)(8)

其中,h(x)表示从输入向量x计算得出的隐藏编码向量,是输出层的译码器向量;f为编码函数,g为解码函数,w1和w2分别为编码器和解码器的权矩阵,b1和b2分别为各相位的偏置向量;输入与重构输入或输出之间的差异称为重构误差,在训练期间模型使最小化;

lstm网络模块具有三个门结构:遗忘门、输入门、输出门;采用sigmoid和tanh函数,用σ表示sigmoid函数变化;

遗忘门:

ft=σ(wfxxt+wfhht-1+bf)(10)

当前时刻的输入xt与前一时刻状态记忆单元ct-1、中间输出ht-1共同决定状态记忆单元遗忘部分;

输入门:

it=σ(wixxt+wihht-1+bi)(11)

gt=tanh(wgxxt+wghht-1+bg)(12)

其中,ct-1表示前一时刻状态记忆单元的保留向量;输入xt和中间输出ht-1分别经过sigmoid和tanh函数变化后共同决定状态记忆单元中保留向量;

输出门:

ot=σ(woxxt+wohht-1+bo)(14)

输出ht由更新后的ct与输出ot共同决定;

上式中,ft,it,gt,ot,ht和ct分别为遗忘门、输入门、输入节点、输出门、中间输出和状态记忆单元的状态;wfx,wfh,wix,wih,wgx,wgh,wox和woh分别为相应门与输入xt和中间输出ht-1相乘的矩阵权重;bf,bi,bg,bo分别为相应门的偏置项;表示向量中元素按位相乘;表示矩阵加法。

在python3.7下通过keras库搭建lstm网络,利用adam算法优化。

根据以上两种模型特点,设置lstm层为自编码的隐藏层,即编码器和译码器为两层lstm,为进行深度学习,将这种结构进行堆栈,虽然增加层数可以增强学习能力,但层数过多又会使网络训练难以收敛,故采取2层堆栈。利用lstm栈式自编码特征提取的结果重构输入序列。

该方法既可以充分在时间、变量与变量、变量大小中立体挖掘数据价值,又能深度学习,提取必要的输入特征,实现降维并重构输入序列。本发明所提算法与如今复杂而庞大的多变量时序性数据库十分契合,能够最大程度挖掘并利用数据价值,避免手动提取特征对数据完整性的破坏,为后续xgboost负荷预测模型提高预测精度提供了重要保障。

步骤4:利用xgboost模型预测短期负荷,并进行指标评价。

利用xgboost模型预测短期负荷和评价指标:

xgboost模型采用贪心算法,通过集合方式防止过拟合现象,且泛化能力强;xgboost模型将lstm栈式自编码提取的特征作为输入序列,可以有效提高短期负荷预测精度与模型泛化性能。选择三种评价指标,能够全面评价模型,避免随机性。

将lstm栈式自编码提取的特征重新构建输入序列,作为xgboost模型的输入。xgboost模型作为一种提升树模型,实现了多种树模型的集成,这些树模型为cart回归树模型;xgboost模型如下所示:

为第i个样本的模型预测值;k为树的数量;f为树的集合空间;xi表示第i个数据点的特征向量;fk对应第k棵独立的树的结构q和叶子权重w相关状况;

损失函数l:

其中,为预测值和目标值yi之间的训练误差之和;为树的复杂度之和,用于控制模型复杂度的正则项:

其中γ和λ为模型的惩罚系数;w表示叶子权重,t表示叶子结点数量,

损失函数在序列最小化过程中,每一轮加入的增量函数ft(xi)尽可能使损失函数最大程度减小;第t轮的目标函数表示为:

采用二阶泰勒展开的方式近似目标函数;设第j个叶子结点的样本集合为ij={i|q(xi=j)};其中分别为损失函数的一、二阶导数;得:

gj表示叶子结点j所包含样本的一阶偏导数累加之和,是一个常量;hj表示叶子结点j所包含样本的二阶偏导数累加之和,是一个常量,

得:

wj表示叶子结点j的权重,l(t)表示第t轮损失函数,

对w求偏导得到:

将权值代入目标函数得到:

损失函数越小表示模型越好;采用贪心算法对子树划分,每次对已有的叶子增加新划分,计算最大增益:

其中分别表示左、右子树分裂后产生的增益,为不进行子树分裂的增益;

xgboost的泛化能力较强,通过集合的方式防止过拟合,xgboost模型输出预测结果后,选择平均误差,平均相对误差和相对均方误差作为评价指标:

其中,n为预测点个数,x(t)表示t时刻实际观测的负荷值,y(t)表示t时刻负荷预测值;me反映整体预测值平均偏差的情况,值越小偏差越小;mape能够反映相对平均偏离程度,值越小表明模型预测精度越高;rmse反映预测模型的可靠性,值越小则模型越可靠。

如图1所示,基于lstm栈式自编码多模型荷预测系统,该系统包括获取数据集模块,预处理模块,概率模型和重构模块,lstm栈式自编码结构的构建和训练模块,预测模块,指标评价模块。

数据模块,用于获取数据,构建数据集。

预处理模块,用于对数据集进行预处理。

概率模型和重构模块,用于建立电动汽车充电开始时间的概率模型并重构数据集。

构建和训练模块,用于构建lstm栈式自编码结构并训练。

预测模块,用于利用xgboost模型预测短期负荷。

指标评价模块,用于对预测短期负荷进行指标评价。

数据模块,获取包括采集负荷数据、电价数据、温度、湿度、待测日一周前负荷数据、星期类型、法定节日等,采样周期为15min,按时间序列排列,构建数据集;时间序列分为两列,第一列为年-月-日-小时-时刻,第二列为历史数据值。

预处理模块,对于在时间上有连续性的变量历史负荷数据、温度、湿度,基于格拉布斯准则法判断异常值并清理,采用lagrange三次样条插值补全残缺数据,最后对数据集归一化处理。

格拉布斯准则法如下:

其中,g1,g2分别为判断最小、最大值是否异常;为均值,s为标准差;

若g1,g2分别大于对应的判据g则表示该最小、最大值为异常值;其中,判据g依据格拉布斯的临界值表选取;

考虑到是时序性变量在时间上的连续性,将异常值修正为其前后两值的均值,该方式在数据集上迭代进行,直到无异常值为止;

lagrange完备三次样条插值法如下:

已知函数y=f(x)在区间[a,b]上的值yi=f(xi)(i=0,1,2,…n),其中:a=x0<x1<…<xn-1<xn=b;

插值函数s(x)满足:

s(xi)=yi(i=0,1,2,…n);s(x)在每个小区间[xi,ht+1](i=0,1,2,…n)上均为三次多项式,记作si(x);s(x)在[a,b]上二阶连续可微;

因此,记为:

进而得:

选取的边界条件为:

s′(a)=y′0,s′(b)=y′n(5)

其中,y0′表示函数f(x)在x0处的导数,yn′表示函数f(x)在xn处的导数;

归一化流程:

对于具有时序性的连续变量,标准化公式为:

其中,x表示实际值,xmin表示样本中最小值,xmax表示样本中最大值,x′表示归一化处理后的值,应使归一化处理后的值在0~1间;

对于离散型变量,规定晴好天气影响因子为1,雾霾多云天气影响因子为0.5,雨雪天气影响因子为0.1,极端天气影响因子为0,规定工作日影响因子为1,休息日影响因子为0。

概率模型和重构模块,

从数据时序性角度考虑电动汽车的充电负荷对短期负荷预测的影响;

从电动汽车用户行为角度建立概率模型,以日出行结束时刻作为充电需求开始时刻,拟合电动汽车用户日出行结束时刻概率分布:

其中,t表示日出行结束时刻,σ和μ分别表示电动汽车日出行结束时刻统计数据的标准差和均值;

通过蒙特卡洛法建立电动汽车充电需求的时间概率模型,并在处理后作为时序性输入插入数据集。

构建和训练模块,

采用lstm栈式自编码提取数据特征,堆栈的lstm编码层作为隐藏层,

自动编码器由三层组成,分别为输入层、隐藏层和输出层;训练过程包括编码阶段和译码阶段;给定未标记的输入数据集,其中n=1,2,...,n且xn∈rm,两个阶段表示为:

h(x)=f(w1x+b1)(8)

其中,h(x)表示从输入向量x计算得出的隐藏编码向量,是输出层的译码器向量;f为编码函数,g为解码函数,w1和w2分别为编码器和解码器的权矩阵,b1和b2分别为各相位的偏置向量;输入与重构输入或输出之间的差异称为重构误差,在训练期间模型使最小化;

lstm网络模块具有三个门结构:遗忘门、输入门、输出门;采用sigmoid和tanh函数,用σ表示sigmoid函数变化;

遗忘门:

ft=σ(wfxxt+wfhht-1+bf)(10)

当前时刻的输入xt与前一时刻状态记忆单元ct-1、中间输出ht-1共同决定状态记忆单元遗忘部分;

输入门:

it=σ(wixxt+wihht-1+bi)(11)

gt=tanh(wgxxt+wghht-1+bg)(12)

其中,ct-1表示前一时刻状态记忆单元的保留向量;输入xt和中间输出ht-1分别经过sigmoid和tanh函数变化后共同决定状态记忆单元中保留向量;

输出门:

ot=σ(woxxt+wohht-1+bo)(14)

输出ht由更新后的ct与输出ot共同决定;

上式中,ft,it,gt,ot,ht和ct分别为遗忘门、输入门、输入节点、输出门、中间输出和状态记忆单元的状态;wfx,wfh,wix,wih,wgx,wgh,wox和woh分别为相应门与输入xt和中间输出ht-1相乘的矩阵权重;bf,bi,bg,bo分别为相应门的偏置项;表示向量中元素按位相乘;表示矩阵加法。

在python3.7下通过keras库搭建lstm网络,利用adam算法优化。

预测模块,

xgboost模型将lstm栈式自编码提取的特征作为输入序列,xgboost模型采用贪心算法,通过集合方式防止过拟合现象,且泛化能力强;

xgboost模型作为一种提升树模型,实现了多种树模型的集成,这些树模型为cart回归树模型;xgboost模型如下所示:

为第i个样本的模型预测值;k为树的数量;f为树的集合空间;xi表示第i个数据点的特征向量;fk对应第k棵独立的树的结构q和叶子权重w相关状况;

损失函数l:

其中,为预测值和目标值yi之间的训练误差之和;为树的复杂度之和,用于控制模型复杂度的正则项:

其中γ和λ为模型的惩罚系数;w表示叶子权重,t表示叶子结点数量,

损失函数在序列最小化过程中,每一轮加入的增量函数ft(xi)尽可能使损失函数最大程度减小;第t轮的目标函数表示为:

采用二阶泰勒展开的方式近似目标函数;设第j个叶子结点的样本集合为ij={i|q(xi=j)};其中分别为损失函数的一、二阶导数;得:

gj表示叶子结点j所包含样本的一阶偏导数累加之和,是一个常量;hj表示叶子结点j所包含样本的二阶偏导数累加之和,是一个常量,

得:

wj表示叶子结点j的权重,l(t)表示第t轮损失函数,

对w求偏导得到:

将权值代入目标函数得到:

损失函数越小表示模型越好;采用贪心算法对子树划分,每次对已有的叶子增加新划分,计算最大增益:

其中分别表示左、右子树分裂后产生的增益,为不进行子树分裂的增益;

xgboost的泛化能力较强,通过集合的方式防止过拟合,xgboost模型输出预测结果后,选择平均误差,平均相对误差和相对均方误差作为评价指标:

其中,n为预测点个数,x(t)表示t时刻实际观测的负荷值,y(t)表示t时刻负荷预测值;me反映整体预测值平均偏差的情况,值越小偏差越小;mape能够反映相对平均偏离程度,值越小表明模型预测精度越高;rmse反映预测模型的可靠性,值越小则模型越可靠。

如图1所示,要预测某区域一日内各时刻共96点负荷值,首先选取部分数据作训练集,并进行预处理,基于格拉布斯准则判断并修正异常值,利用lagrange完备三次样条插值补充缺失值,最后进行连续性变量的公式法归一化、离散型变量的人工经验法归一化,构成具有时序特点的数据集。与此同时基于蒙特卡洛法建立电动汽车充电开始时间的概率模型,并将其结果量化为时序性序列数据,插入上述数据集。将处理好的训练集输入lstm栈式自编码进行特征提取,在python3.7下通过keras库搭建lstm网络,利用adam算法优化,重构输入序列后输入xgboost模型采用贪心算法,进行短期负荷预测并输出结果。为检验模型,选择平均误差(me),平均相对误差(mape)和相对均方误差(rmse)作为评价指标。

如图2所示,该结构图详细展示了lstm栈式自编码的结构,即lstm栈式自编码是由多个lstm自编码块组成的,其隐藏层是每个lstm自编码块的编码层。处理好的训练集是序列数据矩阵,将多变量按时序顺序输入第一个lstm自编码块,深度学习后将其编码层提出作为下一个lstm自编码块的输入,依次类推。将每个lstm自编码块的编码层提出后按序堆叠,构成lstm栈式自编码器,实现对输入数据的深度挖掘,最后将提取的特征重构作为xgboost模型的输入。

应当理解的是,以上的描述与后文的结合附图描述均是示范性的,而非限制性的。本发明的技术特征并不局限于此,任何本领域的技术人员在本发明的领域内,所作的变化或修饰皆涵盖在本发明的专利范围之中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1