一种基于Kmeans和T-LSTM的负荷数据补全方法与流程

文档序号:21644681发布日期:2020-07-29 02:58阅读:403来源:国知局
一种基于Kmeans和T-LSTM的负荷数据补全方法与流程

本发明涉及一种数据补全方法,尤其涉及一种基于kmeans和t-lstm的负荷数据补全方法。



背景技术:

在当前时代背景下,信息产业技术的迅猛发展和多元化的数据获取途径使得各行业机构的数据量激增,例如国网的电力负荷数据拥有极大的数据存量,并且目前仍然以非常迅猛的速度在激增。经验表明这些数据中往往蕴藏着诸多可用的内容,如果能对数据隐含的内容进行更加有效且完备的分析,提取出潜在的数据价值,并进行上层应用是非常有意义的事情。

但是目前数据挖掘领域内的绝大多数理论创新、发展和技术具体实现都是基于理想的、完备的数据集,然而现实终端采集上来的负荷数据因为终端损坏、无通讯等种种原因导致数据都有缺失、不完整,不完整的负荷数据会使得数据挖掘的结果扭曲、无效甚至得出错误的结论。所以对缺失数据的补全处理是数据挖掘过程中尤为重要、不可忽略的环节。

目前数据补全方法有线性补全、差值法补全等,线性补全算法的思想是用缺失点的前一时刻数据和后一时刻数据之和平均得到缺失数据值,这种方法简单但是相比真实值的偏差很大,往往达不到我们的预期效果。而且很多补全算法未对历史负荷数据分类,模型受到负荷数据突变的影响,也会导致误差过大。另外,基于时间序列的lstm(longshorttermmemory)网络是对连续和时间间隔有规律的情况下补全的效果比较好,但是实际情况是缺失数据都是随机的,所以lstm网络数据补全也不能够满足要求。



技术实现要素:

本发明要解决的技术问题和提出的技术任务是对现有技术方案进行完善与改进,提供一种基于kmeans和t-lstm的负荷数据补全方法,以达到对数据准确补全的目的。为此,本发明采取以下技术方案。

一种基于kmeans和t-lstm的负荷数据补全方法,包括以下步骤:

1)构建数据模型;

101)分批获取负荷数据;

102)随机挖出负荷数据中的连续点作为待补全负荷数据;

103)对负荷数据进行kmeans聚类;

104)通过kmeans聚类获得最佳的k种分类方式,根据k种分类方式,将总样本分成k个类别,每一类别对应不同的负荷区间,得到k种分类的负荷区间;

105)计算负荷平均值,并对负荷数据进行归一化处理;

106)根据负荷平均值确定所处的负荷区间,将经归一化处理的负荷数据输入至对应负荷区间的t-lstm神经网络中进行训练,从而获得对应负荷区间的数据模型;k种负荷区间的数据分别训练得到对应的k种数据模型;

2)定时取待补全数据的当天负荷数据;

3)计算当天负荷数据的平均值;

4)根据平均值获取对应的数据模型;

5)将待补全负荷数据输入对应的数据模型中,计算得到补全的完整负荷数据。

作为优选技术手段:构建数据模型时:

在步骤101)中,获取的负荷数据包括某单位的某日和某日前1天以及第七天负荷数据;

在步骤102)中,随机挖出某日的负荷数据中的连续点作为待补全负荷数据;

在步骤105)中,计算某日的负荷平均值,并对某日及其前一天和前第七天的负荷数据归一化处理。

作为优选技术手段:在步骤2)中,定时取待补全数据的当天负荷数据外,还获取待补全的数据前一天及前第七天的负荷数据;

在步骤5)中,除了将待补全负荷数据输入对应的数据模型外,将经归一化处理的前一天及前第七天的负荷数据输入对应的数据模型;数据模型根据当天、前一天、前第七天的负荷数据对进行补全。

作为优选技术手段:步骤104),在进行kmeans聚类时,使用手肘法得到k值。

作为优选技术手段:在步骤1)构建数据模型时,最后还包括校验步骤,将带缺失的数据归一化后输入对应的数据模型,并辅以这个时刻的历史信息,包含昨日和七日前的历史数据,最后得到完整的序列,然后与真实数据对比得到误差,当误差收敛后训练结束,得到最终数据模型并保存。

有益效果:本技术方案对采集上来公变负荷数据采用kmeans方法聚类,能够很好的把相似特征的负荷数据归为一类,排出不同特征数据的干扰。再把相同类别的数据输入到t-lstm神经网络中,因为t-lstm设计考虑到负荷缺失数据的缺失规律,有些缺失数据是连续的,有些是不连续的,δt能很好的区分,使神经网络学到间隔信息,更能准确的反映缺失数据的真实负荷值。通过本方法实现准确补全数据,其具有误差小、收敛速度快的优点。

附图说明

图1是本发明的流程图。

图2是本发明的聚类误差平方和与k的关系图。

图3是本发明lstm网络结构图。

图4是本发明的t-lstm结构图。

图5是本发明的数据模型训练图。

图6是本发明的测试流程图

具体实施方式

以下结合说明书附图对本发明的技术方案做进一步的详细说明。

如图1所示,本发明包括以下步骤:

1)构建数据模型;

101)分批获获取某单位的某日和某日前1天以及第七天负荷数据;

102)随机挖出负荷数据中的连续点作为待补全负荷数据;

103)对负荷数据进行kmeans聚类;

104)通过kmeans聚类获得最佳的k种分类方式,根据k种分类方式,将总样本分成k个类别,每一类别对应不同的负荷区间,得到k种分类的负荷区间;

105)计算某日的负荷平均值,并对某日及其前一天和前第七天的负荷数据归一化处理;

106)根据负荷平均值确定所处的负荷区间,将经归一化处理的负荷数据输入至对应负荷区间的t-lstm神经网络中进行训练,从而获得对应负荷区间的数据模型;k种负荷区间的数据分别训练得到对应的k种数据模型;

2)定时取待补全数据的当天负荷数据、待补全的数据前一天及前第七天的负荷数据;

3)计算当天负荷数据的平均值;

4)根据平均值获取对应的数据模型;

5)将待补全负荷数据、将经归一化处理的前一天及前第七天的负荷数据输入对应的数据模型中,计算得到补全的完整负荷数据。

以下就部分步骤做进一步说明:

kmeans聚类:使用手肘法得到k值,因为手肘处的曲率最大,聚类效果最好。

本技术方案采用手肘法确定聚类的k值(聚类个数)。手肘法的核心思想指的是当k小于真实聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故所有样本的聚类误差平方和的下降幅度会很大,而当k到达真实聚类数时,再增加k所得到的聚合程度回报会迅速变小,所以聚类误差平方和的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,也就是说聚类误差平方和和k的关系图是一个手肘的形状,而这个肘部对应的k(曲率最高)值就是数据的真实聚类个数,利用这个特点就确定了k值。

由于不同公变的供电特性不一样,它们的日负荷变化具有自身特点,而且负荷绝对值也相差很大,所以本文提出了利用聚类分析的方法对数据进行分类处理,消除不同供电特性样本之间的干扰。通过kmeans聚类,将总祥本分成多个类别,作为每个数据补全网络的训练样本。具体步骤为:取金华本部4千台公变一天96个负荷值和它的负荷值作为样本的特征,输入到kmeans聚类模型中,画出聚类误差平方和(样本的负荷值离中心点负荷值之差的总和)和k的关系图如图2。观察可知k在3之前下降比较迅速,从3之后开始比较平缓,因此可以拟定kmeans的聚类数量为3(曲率最高)。

t-lstm(变体的长短时记忆网络):使用t-lstm神经网络,考虑到负荷缺失数据的不确定性,有可能是连续多个点缺失的情况,t-lstm能很好的处理这种缺失数据补全的问题。

lstm最早由hochreiter等提出,并由graves进行改进,是针对原生rnn中的梯度爆炸问题以及长期依赖问题提出的改进版的循环神经网络如图3所示。lstm的主要工作就是对rnn网络内部结构进行改造,通过增加一些“门”来实现对记忆时长的控制,比如通过“遗忘门”来过滤一些信息,从而“记住”更长时间的信息。如图3所示。

公式如下:

gt=tanh(wgxt+ught-1+bg)

it=σ(wixt+uiht-1+bi)

ft=σ(wfxt+ufht-1+bf)

ot=σ(woxt+uoht-1+bf)

ct=ft·c{t-1}+it·gt

ht=ot·tanh(ct)

其中,ht,ct∈rh,h是隐层大小,而σ(·)是的sigmoid函数,i,f,o,g分别代表输入门,遗忘门,输出门和单元状态。

{wf,uf,bf},{wi,ui,bi},{wo,uo,bo},{wc,uc,bc}分别是是各个部分的网络参数。更具体地说,输入门i调节新值数据馈入单元的程度,遗忘门f调节忘记历史的程度,输出门o决定不同部分的权重来计算输出。

但是针对带缺失的数据,我们的输入是不连续的,时间间隔是不规律的,lstm网络不能有很好的处理效果,因此本技术方案采用考虑了时间间隔的t-lstm网络,如图4所示:在输入层增加了δt,其它参数不改变,使网络学到时间间隔信息。

t-lstm中相比lstm改进的的部分如下:

g(δt)=1/log(e+δt)

ht=ot·tanh(ct)

其中δt即为当前输入的时间间隔△t,,输入门、输出门和遗忘门的定义与lstm一致,区别在于细胞状态的更新。相比于lstm,t-lstm不光考虑了当前输入的具体值而且考虑了这个输入的间隔,解决了带缺失的时间序列中间隔不一致的问题。在每一个t-lstm单元中输入上一个时刻的细胞状态ct-1和隐层状态ht-1以及当前的输入值xt和时间间隔δt得到这个单元的细胞状态ct和隐层状态ht并继续传递给下一个t-lstm单元。

求待补全负荷数据的平均值:为了判断待补全数据的属于哪一类的负荷区间。

数据模型训练:

如图5所示,为提高准确性,在步骤1)构建数据模型时,最后还包括校验步骤,将带缺失的数据归一化后输入对应的数据模型,并辅以这个时刻的历史信息,包含昨日和七日前的历史数据,最后得到完整的序列,然后与真实数据对比得到误差,当误差收敛后训练结束,得到最终数据模型并保存。其完整的模型训练流程为:抽取数据作为训练数据集,数据处理后,经过kmeans聚类得到n种负荷数据和负荷区间,将带缺失的数据归一化后用t-lstm编码,得到temporalcontext,随后输到以lstm作为单元的解码器中,并辅以这个时刻的历史信息,包含昨日和七日前的历史数据,最后得到解码后完整的序列,然后与真实数据对比得到误差,当误差收敛后训练结束,得到k个模型并保存。

以下以金华本部数据为例进行数据模型训练说明:

1.准备金华本部5千台2018年11月到2019年5月总共8个月的公变负荷数据。

2.对训练数据集进行处理,主要是挖出连续缺失点作为待补全数据和求出待补全天的负荷的平均值。

3.把处理好的训练数据输入到输入到kmeans进行聚类,得到k种分类。

4.把k种分类数据加前1天和前第7天负荷数据归一化后输入到t-lstm网络中进行编码处理得到temporalcontext

5.将得到的temporalcontext输入到lstm解码器中,然后与真实数据对比得到误差

6.如果误差未收敛,继续训练

7.当误差收敛后训练结束,得到k个模型并保存。

在得到k个模型的基础上,以金华本部数据为例进行数据补全的流程说明:

数据集来源于金华去年11月开始221天的数据,共有174个用户,每天有96个负荷点。我们手动挖去了大约1%的点的数据(近似于真实数据缺失率),并且是连续5个点全部缺失,这样更接近于真实情况的缺失。

具体步骤如下:

1.准备金华本部2018年11月开始221天的数据,共有174个公变用户,每天有96个负荷数据。

2.分批采集待补全的数据和前一天以及前第7天的负荷数据。

3.人为挖出待补全的连续5个点作为验证,求待补全日数据平均值。

4.判断该负荷平均值属于哪一类负荷区间。

5.数据归一化

5.再用哪一类训练好的模型加上缺失值这一时刻的历史信息,包含前一日和前第七日的历史数据,最后得出补全的负荷数据

将补全的负荷数据与原数据计算,得到测试数据的平均绝对误差和平均绝对百分比误差。数据如表一所示。

左边为通过本方法得到的结果,右边为线性模型(通过上一点和后一个点之和再平均得到缺失数据值)得到的结果,其中mae为平均绝对误差,mape为平均绝对百分比误差。可以看出本方法效果均好于线性模型并且在负荷值比较大的情况下百分比误差在10%左右。

表一:测试结果

以上图1-6所示的一种基于kmeans和t-lstm的负荷数据补全方法是本发明的具体实施例,已经体现出本发明实质性特点和进步,可根据实际的使用需要,在本发明的启示下,对其进行形状、结构等方面的等同修改,均在本方案的保护范围之列。

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