发明内容
基于此,有必要针对上述技术问题,提供一种提高异常用电数据识别准确度的用户用电数据异常检测方法、装置、计算机设备和存储介质。
一种用户用电数据异常检测方法,所述方法包括:
获取用户的历史用电数据和当前时刻的真实用电数据;
将所述历史用电数据输入到训练好的异常检测模型,确定所述历史用户数据的第一玻尔兹曼分布特征,根据所述第一玻尔兹曼分布特征输出当前时刻的预测用电数据;
根据所述预测用电数据和所述真实用电数据进行计算,得到预测用电数据和真实用电数据之间的距离;
当所述距离大于预设阈值时,将所述真实用电数据标记为异常用电数据。
在其中一个实施例中,获取时序化的各行业用电量数据和对应的标注的所属数据标签;
将所述时序化的各行业用电量数据和数据标签作为异常检测模型的输入值,得到参数化的玻尔兹曼分布;
根据所述参数化的玻尔兹曼分布和所属的数据标签,训练得到所述异常检测模型;其中,模型训练目标使正常标签的用电数据的玻尔兹曼分布特征和异常标签的用电数据的玻尔兹曼分布特征距离相异且远离。
在其中一个实施例中,将所述时序化的各行业用电量数据和数据标签作为异常检测模型的输入值,得到参数化的玻尔兹曼分布,包括:
根据所述数据标签和时序化的各行业用电数据,得到二值隐式表达;
根据所述二值隐式表达计算得到实值隐式表达;
根据所述二值隐式表达和所述实值隐式表达,得到参数化的玻尔兹曼分布。
在其中一个实施例中,根据所述参数化的玻尔兹曼分布和所属的数据标签,训练得到所述异常检测模型,包括:
通过神经网络结合所述参数化的玻尔兹曼分布中的正常标签的用电数据、异常标签的用电数据进行训练,得到损失函数;
将所述损失函数和均方误差项作为目标函数,在预设迭代次数内对进行求偏导直至迭代次数等于预设迭代次数,其中,均方误差项包括正常标签的用电数据和异常标签的用电数据;
当所述均方误差项的导数达到最小值时,获得训练好的所述异常检测模型。
在其中一个实施例中,所述方法还包括:
从所述时序的用电量数据中得到最大值和最小值;
基于所述最大值和所述最小值,对所述时序的用电量数据中的每个数据进行归一化计算,获得归一化数据,其中所述归一化计算为将所述时序的用电量数据中的每个数据减去所述最小值,再除以所述最大值和所述最小值之间的差值。
在其中一个实施例中,在获得归一化数据之后,还包括:
对所述归一化数据中的误差数据进行删除,并对剩余的数据进行部分标注,得到所述数据标签。
在其中一个实施例中,所述方法还包括:当所述距离不大于所述预设阈值时,将所述真实用电数据标记为正常用电数据,并将所述正常用电数据存储于所述模型中。
一种用户用电数据异常检测装置,所述装置包括:
用电数据获取模块,用于获取用户的历史用电数据和当前时刻的真实用电数据;
用电数据预测模块,用于将所述历史用电数据输入到训练好的异常检测模型,确定所述历史用户数据的第一玻尔兹曼分布特征,根据所述第一玻尔兹曼分布特征输出当前时刻的预测用电数据;
距离计算模块,用于根据所述预测用电数据和所述真实用电数据进行计算,得到预测用电数据和真实用电数据之间的距离;
用电数据标记模块,用于当所述距离大于预设阈值时,将所述真实用电数据标记为异常用电数据。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取用户的历史用电数据和当前时刻的真实用电数据;
将所述历史用电数据输入到训练好的异常检测模型,确定所述历史用户数据的第一玻尔兹曼分布特征,根据所述第一玻尔兹曼分布特征输出当前时刻的预测用电数据;
根据所述预测用电数据和所述真实用电数据进行计算,得到预测用电数据和真实用电数据之间的距离;
当所述距离大于预设阈值时,将所述真实用电数据标记为异常用电数据。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取用户的历史用电数据和当前时刻的真实用电数据;
将所述历史用电数据输入到训练好的异常检测模型,确定所述历史用户数据的第一玻尔兹曼分布特征,根据所述第一玻尔兹曼分布特征输出当前时刻的预测用电数据;
根据所述预测用电数据和所述真实用电数据进行计算,得到预测用电数据和真实用电数据之间的距离;
当所述距离大于预设阈值时,将所述真实用电数据标记为异常用电数据。
上述用户用电数据异常检测方法、装置、计算机设备和存储介质,大量各行业用电量数据在输入到模型中时,各行业用电数据服从参数化玻尔兹曼分布,具有各自的统计特征。在测试数据过程中,根据模型输出结果与输入数据的接近程度,判定接近程度越高的为正常用电数据,接近程度越低的为异常用电数据。此处接近程度即通过距离得以确定。例如根据上一时刻的历史用电数据结合异常检测模型预测得到的当前时刻的预测用电数据,与当前时刻的真实用电数据进行计算,得到的欧式距离。当欧式距离大于预设阈值时,将真实用电数据标记为异常用电数据。从而使本申请统计得到的各行业的用电数据保留各自特性,在识别异常用电数据时更为准确,可提高异常用电数据识别的准确性。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的用户用电数据异常检测方法,可以应用于如图1所示的应用环境中。终端10可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。
终端10获取用户的历史用电数据和当前时刻的真实用电数据,并将历史用电数据输入到终端10训练好的异常检测模型中,经异常检测模型处理后,获得当前时刻的预测用电数据。之后由终端10再计算预测用电数据和真实用电数据的距离,并根据二者之间的距离与预设阈值进行比较,从而在真实用电数据为异常时对真实用电数据进行标记。
在一个实施例中,如图2所示,提供了一种用户用电数据异常检测方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤S202,获取用户的历史用电数据和当前时刻的真实用电数据。
其中,用户的历史用电数据是单个的历史用电数据,也可以是连续多个的历史用电数据。当前时刻的真实用电数据是在当前时刻采集获得的真实的用户用电数据。
步骤S204,将历史用电数据输入到训练好的异常检测模型,确定历史用户数据的第一玻尔兹曼分布特征,根据第一玻尔兹曼分布特征输出当前时刻的预测用电数据。
其中,异常检测模型为半监督的时序离散变分自编码器模型,为了使每个行业或产业都服从其各自的统计特征,参数化的玻尔兹曼分布统计了不同行业/产业的用电特性,因此在变分自编码器模型的训练过程中,使输入的时序化的各行业用电数据服从参数化的玻尔兹曼分布,从而使各行业/产业的用电数据拥有各自的考量标准。
具体地,历史用电数据输入到训练好的异常检测模型后,可以由异常检测模型的编码器对历史用电数据进行编码,得到第一玻尔兹曼分布特征。在获得第一玻尔兹曼分布特征之后,可以由异常检测模型的解码器对第一玻尔兹曼分布特征进行解码,并输出得到当前时刻的预测用电数据。
步骤S206,根据预测用电数据和真实用电数据进行计算,得到预测用电数据和真实用电数据之间的距离。
其中,观察预测用电数据和真实用电数据之间的距离可以是欧式距离、余弦距离等,其他任何能用于观测两个数据之间差异程度的距离均可采用。
具体地,计算预测用电数据和真实用电数据之间欧式距离的公式如下:
Distance=||Pret-Truet||2,
其中,Pret是t时刻的预测用电数据,该t时刻的预测用电数据是根据t-1时刻的历史用电数据输入异常检测模型得到的,Truet是t时刻的真实用电数据。
步骤S208,校验距离是否大于预设阈值,当距离大于预设阈值时,执行步骤S210,将真实用电数据标记为异常用电数据。当距离不大于预设阈值时,执行步骤S212,将真实用电数据标记为正常用电数据,并将正常用电数据存储于模型中。
其中,预设阈值可以人为根据经验值设置。
具体地,由于输出的预测用电数据是通过训练好的异常检测模型获得的,理论上该预测用电数据为准确值,因此当预测用电数据和真实用电数据之间的距离大于预设阈值时,说明该当前时刻的真实用电数据为异常用电数据,因此将真实用电数据标记为异常用电数据。当预测用电数据和真实用电数据之间的距离不大于预设阈值时,说明该当前时刻的真实用电数据为正常用电数据,因此将正常用电数据存储于模型中。
上述用户用电数据异常检测方法中,大量各行业用电量数据在输入到模型中时,各行业用电数据服从参数化玻尔兹曼分布,具有各自的统计特征。在测试数据过程中,最后根据模型输出结果与输入数据的接近程度,判定接近程度越高的为正常用电数据,接近程度越低的为异常用电数据。此处接近程度即通过距离得以确定。例如根据上一时刻的历史用电数据结合异常检测模型预测得到的当前时刻的预测用电数据,与当前时刻的真实用电数据进行计算,得到的欧式距离。当欧式距离大于预设阈值时,将真实用电数据标记为异常用电数据。从而使本申请统计得到的各行业的用电数据保留各自特性,在识别异常用电数据时更为准确。
在一个实施例中,用户用电数据异常检测方法,还包括:
获取时序化的各行业用电量数据和对应的标注的所属数据标签;将时序化的各行业用电量数据和数据标签作为异常检测模型的输入值,得到参数化的玻尔兹曼分布;根据参数化的玻尔兹曼分布和所属的数据标签,训练得到异常检测模型;其中,模型训练目标使正常标签的用电数据的玻尔兹曼分布特征和异常标签的用电数据的玻尔兹曼分布特征距离相异且远离。
其中,获取时序化的各行业用电数据,是指按数据产生的时间顺序连续获得各行业的用电数据。数据标签包括正常标签和异常标签,正常标签用来标记正常的用电数据,异常标签用来标记异常的用电数据,可以为二值形式,例如正常标签为0,异常标签为1。
异常检测模型的输入值包括各行业用电量数据和对应的数据标签,异常检测模型获得这些输入值后,通过编码器编码将得到参数化的玻尔兹曼分布,参数化的玻尔兹曼分布,具有各行业/产业用电的统计特征。
模型训练的目的是为了使在同一个参数化的玻尔兹曼分布中,即同一个行业/产业中,正常标签的用电数据的玻尔兹曼分布特征和异常标签的用电数据的玻尔兹曼分布特征距离相异且远离,表现在异常检测模型的目标函数中:
其中,L为神经网络新的目标函数,log(p(x))为损失函数,
为均方误差,将该均方误差项作为正则化项,y为数据标签仅有二值形式0和1,y为0则正常标签,y为1则异常标签。当数据标签为异常标签时,output-x的值比较小,通过均方误差“放大”异常用电数据,从而使异常用电数据和正常用电数据之间的距离尽可能大。
本实施例中,通过训练好的模型能使正常标签的用电数据的玻尔兹曼分布特征,和异常标签的用电数据的玻尔兹曼分布特征距离相异且远离,有利于使异常用电数据和正常用电数据之间的距离尽可能被放大,进而更易于识别异常用电数据。
在一个实施例中,基于异常检测模型,将时序化的各行业用电量数据和数据标签作为异常检测模型的输入值,得到参数化的玻尔兹曼分布,包括:
根据数据标签和时序化的各行业用电数据,得到二值隐式表达;根据二值隐式表达计算得到实值隐式表达;根据二值隐式表达和实值隐式表达,得到参数化的玻尔兹曼分布。
具体地,引入时间片信息后的异常检测模型为:
q(ht,zt|xt,yt,ht-1)=r(ht|zt)q(zt|xt,yt,ht-1),
其中,t为时间片信息,h表示实值隐式表达,z表示二值隐式表达,q(zt|xt,yt,ht-1)为一般的变分自编码器的编码器,为和上述等式左边的式子作出区分,称为原编码器;r(ht|zt)为推理后的后验概率,是加入到原编码器中的神经网络部分;q=(ht,zt|xt,yt,ht-1)为近似后验概率,是整个模型中的编码器部分。
此外,上式中r(ht|zt)的具体计算如下:
在没有引入时间片信息之前,半监督的时序离散变分自编码器模型的推理模型为:
q(h1,z1|x,y)=r(h1|z1)q(z1|x,y),
该推理模型中:
其中,
表示对下标为i的
连乘,例如当i为2时,则r(h
1|z
1)
当i为3时,则
依此类推。
对于原编码器q(zt|xt,yt,ht-1)部分,亦可以用神经网络的形式表示,具体如下:
q(zt|xt,yt,ht-1)=sigmoid(f(xt,ht-1)+yTW),
其中,sigmoid表示激活函数,f(xt,ht-1)表示神经网络函数,yTW中的上标T表示转置,W为权值矩阵。
进一步地,半监督的时序离散变分自编码器模型的先验分布可以表示为:
p(ht,zt)=r(ht|zt)p(zt),
其中,参数化的玻尔兹曼分布,其形式可以表示为
b表示偏置,Z表示配分函数。
本实施例中,通过输入数据标签、时序化的各行业用电数据,获得二值隐式表达和实值隐式表达,从而可以获得参数化的玻尔兹曼分布,获得参数化的玻尔兹曼分布即获得参数化的玻尔兹曼分布。
在一个实施例中,根据参数化的玻尔兹曼分布和所属的数据标签,训练得到异常检测模型,包括:
根据所述参数化的玻尔兹曼分布和所属的数据标签,训练得到所述异常检测模型,包括:
通过神经网络结合所述参数化的玻尔兹曼分布中的正常标签的用电数据、异常标签的用电数据进行训练,得到损失函数;将所述损失函数和均方误差项作为目标函数,在预设迭代次数内对进行求偏导直至迭代次数等于预设迭代次数,其中,均方误差项包括正常标签的用电数据和异常标签的用电数据;当所述均方误差项的导数达到最小值时,获得训练好的所述异常检测模型。
其中,预设迭代次数在模型开始训练前即可人为根据经验设定。
异常检测模型的目标函数为:
其中,L为神经网络新的目标函数,log(p(x))为损失函数,
为均方误差,x为时序化的各行业用电量数据,y为标签,根据标签属性可将y的值设为1或0。对异常检测模型训练的过程中,可设定迭代次数对L求偏导,在预设迭代次数内不断对L求偏导,直至达到预设迭代次数,在这一预设迭代次数内,当L’达到使均方误差项最小时,即可以认为训练达到最优,异常检测模型已被训练好。
本实施例中,通过神经网络训练异常检测模型,使均方误差项的导数在预设迭代次数内,得到其导数的最小值,从而得到训练好的异常检测模型。
在一个实施例中,用户用电数据异常检测方法,还包括:
从时序的用电量数据中得到最大值和最小值;基于最大值和最小值,对时序的用电量数据中的每个数据进行归一化计算,获得归一化数据,其中归一化计算为将时序的用电量数据中的每个数据减去最小值,再除以最大值和最小值之间的差值。
其中,首先对数据进行归一化,求出时序化的用电数据data中的最大值max和最小值min,然后对每一个数据减去min后除以max和min的差,即(data-min)/(max-min),由此将数据归一化至区间[0,1],以便后续模型的处理,然后例如以7天为单位将数据划分为数据块,并将天气状况、季节、节假日信息使用Transformer网络进行编码,编码为向量形式,然后按照通道维度进行拼接(例如,将天气、季节、节假日编码为三个n*1的向量,那么拼接为n*3的向量)、作为附加的异常检测数据。标注出正常的用电数据和部分异常的用电数据,将这些标注数据作为训练样本。
本实施例中,通过对时序的用电量数据进行归一化计算,从而得到归一化数据,便于异常检测模型对数据进行处理。
在一个实施例中,在获得归一化数据之后,还包括:
对归一化数据中的误差数据进行删除,并对剩余的数据进行部分标注,得到数据标签。
其中,误差数据是指在同一行业/产业得到的归一化数据中,将明显离群的数据视为误差数据,并将这些误差数据进行删除,使剩下的数据尽可能为正常用电数据,这一过程可以看作是简单的数据预处理过程。之后再对剩余的数据进行部分标注,这些剩余的数据包括正常用电数据和异常用电数据,针对这些数据进行部分标注,得到数据标签(异常标签和正常标签)。
应该理解的是,虽然上述实施例涉及的各流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述实施例涉及的各流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图3所示,提供了一种异常用电数据装置,包括:用电数据获取模块302、用电数据预测模块304、距离计算模块306和用电数据标记模块308,其中:
用电数据获取模块302,用于获取用户的历史用电数据和当前时刻的真实用电数据;
用电数据预测模块304,用于将历史用电数据输入到训练好的异常检测模型,确定历史用户数据的第一玻尔兹曼分布特征,根据第一玻尔兹曼分布特征输出当前时刻的预测用电数据;
距离计算模块306,用于根据预测用电数据和真实用电数据进行计算,得到预测用电数据和真实用电数据之间的距离;
用电数据标记模块308,用于当距离大于预设阈值时,将真实用电数据标记为异常用电数据。
在一个实施例中,异常用电数据装置,还包括:标签数据获取模块、参数化的玻尔兹曼分布获取模块、异常检测模型训练模块,其中:
标签数据获取模块,用于获取时序化的各行业用电量数据和对应的标注的所属数据标签;
参数化的玻尔兹曼分布获取模块,用于将时序化的各行业用电量数据和数据标签作为异常检测模型的输入值,得到参数化的玻尔兹曼分布;
异常检测模型训练模块,用于根据参数化的玻尔兹曼分布和所属的数据标签,训练得到异常检测模型;其中,模型训练目标使正常标签的用电数据的玻尔兹曼分布特征和异常标签的用电数据的玻尔兹曼分布特征距离相异且远离。
在一个实施例中,参数化的玻尔兹曼分布获取模块,包括:二值隐式表达获取模块、实值隐式表达获取模块、参数化的玻尔兹曼分布获取子模块,其中:
二值隐式表达获取模块,用于根据数据标签和时序化的各行业用电数据,得到二值隐式表达;
实值隐式表达获取模块,用于根据二值隐式表达计算得到实值隐式表达;
参数化的玻尔兹曼分布获取子模块,用于根据二值隐式表达和实值隐式表达,得到参数化的玻尔兹曼分布。
在一个实施例中,异常检测模型训练模块,包括:先验玻尔兹曼分布获取模块、模型参数调整模块,其中:
损失函数获取模块,用于通过神经网络结合所述参数化的玻尔兹曼分布中的正常标签的用电数据、异常标签的用电数据进行训练,得到损失函数;
迭代模块,用于将所述损失函数和均方误差项作为目标函数,在预设迭代次数内对进行求偏导直至迭代次数等于预设迭代次数,其中,均方误差项包括正常标签的用电数据和异常标签的用电数据;
模型获取模块,用于当所述均方误差项的导数达到最小值时,获得训练好的所述异常检测模型。
在一个实施例中,用户用电数据异常检测装置,还包括:
最值获取模块,用于从时序的用电量数据中得到最大值和最小值。
归一计算模块,用于对时序的用电量数据中的每个数据进行归一化计算,获得归一化数据,其中归一化计算为将时序的用电量数据中的每个数据减去最小值,再除以最大值和最小值之间的差值。
在一个实施例中,用户用电数据异常检测装置,还包括:数据标签获取模块,用于对归一化数据中的误差数据进行删除,并对剩余的数据进行部分标注,得到数据标签。
关于异常用电数据装置的具体限定可以参见上文中对于用户用电数据异常检测方法的限定,在此不再赘述。上述异常用电数据装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种用户用电数据异常检测方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。