赵文清,沈哲吉,李 刚
华北电力大学 控制与计算机工程学院,河北 保定 071003)
配电侧电力用户的窃电、欺诈等一系列欺骗性用电行为所导致的损失统称为非技术性损失NTL(Non-Technical Loss)。非技术性损失对电网的正常运行会产生严重的影响,扰乱地区电网的正常调度,甚至会由于用户私自改接线路而引发安全事故。非技术性损失在实际运行的电网中普遍存在,在某些国家中,非技术性损失约占用电总量的12.5%~25%[1]。在印度、巴西和墨西哥,非技术性损失分别占其全国用电量的26.2%、16.85%和15.83%[2]。我国的非技术性损失相对较低,占全国用电总量的6.42%[2]。 但由于我国电能需求总体庞大,且近年来用电量不断攀升[3],在2016年由非技术性损失所带来的经济损失高达190亿元。因此,研究降低非技术性损失有着非常重要的现实社会意义。
当今电网公司主要通过加强计量设备管理、采用专用计量箱或采用防撬铅封和选择合理电流互感器倍率等方法来降低非技术性损失[4]。但这些方法需要投入额外的人力物力,且不能及时发现非技术性损失。随着电网的智能化程度不断提高,以及远程用电信息采集系统的使用与推广,电网公司可以通过分析远程用电信息采集系统中的数据来降低非技术性损失[5]。但是,目前依然存在一些问题。首先,电网公司中用户用电数据非常庞大。文献[6-7]中指出截至2013年年底,国家电网公司累计安装智能电表1.82亿只,实现用电信息采集1.91亿户。如果一个地区以100万只智能电表来计算,一年积累的数据量就可高达3.18 TB。其次,由于某些因素会使得数据出现缺失和错误,甚至在国外存在一些黑客组织专门针对智能电表发动网络攻击[8]。
为解决非技术性损失检测问题,国内外学者进行了许多研究,提出了各种模型。这些模型可概括性地归为3类:基于统计学的模型、基于专家知识的模型和基于数据驱动的模型。文献[9-10]通过带权最小二乘法和高斯核函数分析用户用电数据,从而判断出可疑的交易信息记录。这种方法的误报率较高,不适合电网的大规模实际应用。为提高模型的准确性,文献[11]基于人工经验规则库,实现对于异常交易记录与异常用户的识别工作。这种模型依赖专家知识规则,因此通用性不高。数据驱动模型具有更好的准确性和通用性,文献[12-13]使用历史数据构建BP神经网络和用户行为分析模型,以实现异常用电模式的检测。文献[13-16]都是对用户交易记录信息进行数据挖掘,得到用户用电数据的特征,以实现异常用电模式的检测,但这些方法难以从大量高维度数据中提取出数据的特征和特征匹配。
为克服上述缺点,本文提出一种基于深度学习的用户异常用电模式检测的模型。利用TensorFlow框架构建深度学习模型,主要由两部分组成,分别是基于长短期记忆(LSTM)的特征提取网络和基于全连接网络(FCN)的多层特征匹配网络。由于用户用电数据主要为时间序列数据,而LSTM网络相对于其他网络(卷积神经网络和自编码网络)更适合处理时间序列数据[17]。在特征提取网络中,通过多个特征提取模块,以实现输入数据的特征提取。在多层特征匹配网络中,通过FCN处理特征序列,以实现用户用电模式的特征匹配,完成用户用电模式的异常检测。
TensorFlow框架是谷歌基于DistBelief研发的人工智能学习系统,具有高度的灵活性和可移植性。目前,TensorFlow框架是主要的深度学习框架之一。本文通过TensorFlow框架建立基于深度学习的用户异常用电模式检测的模型,实现对用户用电数据的异常模式的检测。
LSTM结构通常由一个或者多个长短期记忆块(LSTM block)组成。长短期记忆块结构由四部分组成,分别为输入门、输出门、遗忘门和长短期记忆单元(LSTM cell)。长短期记忆块组成结构如附录中图A1所示。
结构递归神经网络RNN(Recursive Neural Network)是利用多个相似的神经网络结构递归构造更为复杂的深度网络,其结构在2维平面上类似于树结构。附录中图A2为一种结构递归神经网络的示意图。
通常情况下,在递归过程中易发生权重指数级爆炸或消失的问题,使结构递归神经网络难以捕捉数据之间的关联。而基于LSTM的结构递归神经网络能较好地避免上述问题,并且在基因分类和机器翻译等领域取得了不错的成绩[18-19]。
为了更好地完成异常用电模式检测,本文提出一种基于深度学习的用户异常用电模式检测的模型,如图1所示。该模型通过深度学习找出用电数据与用户用电模式之间的关系,分析出异常的用电数据。
图1 基于深度学习的用户异常用电模式检测模型Fig.1 Anomaly power consumption detection model based on deep learning
本文使用的数据源来自于某防窃电公司采集的用户电表数据,数据采集的时间间隔为15 min,数据样本为数据源部分数据。取某电表一天的三相电流数据构成一条样本数据,数据维度为288维。标签数据来自于该公司专家分析与现场稽查的结果。为保证数据的安全性,数据集均经过脱敏处理;为能更接近实际情况,在训练集中降低异常用电数据比例;为测试模型学习异常用电数据特征的能力,在测试集中适当增加异常数据。
由于数据可能出现重复、缺失甚至错误等问题,因此对数据进行预处理。本文所用的预处理方法主要为数据的清洗与归一化处理。数据清洗主要是删除重复信息、填补缺失信息和纠正错误信息等。数据归一化处理如式(1)所示。
(1)
2.3.1 特征提取模块
2.3.2 特征提取网络的结构
在许多实际问题中,模型需要处理高维度数据。一般地,有多种不同的特征以及特征之间的关系隐含在高维度数据中,这些特征和关系能有效地反映数据的特性。从数据中提取的特征以及特征之间的关系越多,将越有利于模型做出准确的判断。而在很多情况下,单一的特征提取模块难以从高维度数据中提取多种特征以及特征之间的关系。
为解决上述问题,本文将输入的高维度数据x划分成为3个大小相同的子数据:x1、x2和x3(xa∩xb=∅;x1∪x2∪x3=x。其中∀(a,b),a≠b;a=1,2,3;b=1,2,3)。针对子数据,利用由10个特征提取模块所构建的结构递归神经网络,实现输入的高维度数据x的特征提取。特征提取网络结构如附录中图A4所示。图中,x(t)为时刻t输入的数据,x(t)被分解为3个子数据x1、x2和x3;FEMi,j表示第j层的第i个特征提取模块;hi,j表示FEMi,j的输出数据;s(t)表示FEM4,1的输出数据,也表示从x(t)中提取得到的特征数据。本文中,h1,j(j=1,2,3)均为64维输出数据,h2,j(j=1,2,3)均为48维输出数据,h3,j(j=1,2,3)均为32维输出数据,FEM4,1输出96维特征数据。
通过如附录中图A4所示的特征提取网络结构,实现从高维度(如2.1节所述,288维)数据x中提取出特征数据。首先,从输入数据x的子集数据(x1、x2和x3)中提取特征;然后,通过多层结构递归的特征提取,逐渐压缩特征数据的维度并维持特征间关系,从而使提取的特征数据具有整体性,能较为完整地反映输入数据特性;最后,FEM4,1输出96维数据s=[s1,s2,…,s96],该96维数据就是所需要的特征数据,从而完成了高维度数据的特征提取。
使用2.3节中特征提取网络所得到的特征数据,实现用户用电模式的特征匹配,进而完成数据类型的标注。为实现该目的,本文利用一个由3层全连接的隐含层组成的神经网络实现用户特征数据的匹配工作。多层特征匹配网络结构如附录中图A5所示。图中,s=[s1,s2,…,s96]表示特征提取网络所得到的96维特征数据;λk表示第k层网络到第k+1层网络的偏置;Lk,n表示第k层隐含层的第n个节点;Output表示输出层。
该特征匹配模型中,输入层输入数据为96维,第1层隐含层输出数据为64维,第2层隐含层输出数据为32维,第3层隐含层输出数据为16维,输出层输出数据为2维,该2维数据为不同标注类型的权值,最终完成分类。
本文使用损失函数来计算当前模型的损失偏差程度。通过损失函数的计算,进行反馈调节,调整各个神经网络的参数设置。本文中所用损失函数如式(2)所示。
fLoss=-mean[yrealln(yclass)]
(2)
其中,yreal表示实际的分类标签;yclass表示分类结果。
对于上述损失函数,本文使用适应性矩阵估计进行优化,得到最小化损失函数值。反馈调节部分由TensorFlow框架完成。
本文使用混淆矩阵[20]对模型的结果进行评价。定义异常用电数据为负类,正常用电数据为正类。分类结果用混淆矩阵表示,如附录中表A1所示,行(Positive/Negative)对应实际所属的类别,列(True/False)表示分类器预测的类别。在混淆矩阵的基础上,可以产生多种模型评价指标。本文使用准确率fMetric1和漏警率fMetric2进行评价,具体定义如下:
(3)
(4)
其中,nTP为将正常数据分类为正常的数目;nTN为将异常数据分类为异常的数目;nFP为将正常数据分类为异常的数目;nFN为将异常数据分类为正常的数目。
准确率是正确识别数目占测试样本的比率,这个指标越高,反映出模型错误识别用电模式为异常的可能性越低。漏警率是模型错误识别异常用电数据占总的异常数据的比率,这个指标越低,反映出模型错误识别用电模式为正常的可能性越低。
为了验证本文所提模型的有效性,与其他非深度学习模型(支持向量机和BP神经网络)进行对比实验。该实验进行5次,取平均值。此外,该模型也与常规的多层LSTM所构成的深度学习模型进行对比实验。该实验进行5次,2个模型运行周期均为15 000。
本文采用的数据集为2.1节中所介绍的数据样本。数据样本包含若干电力用户2个月内的三相电流数据,总计3 863条数据。训练集中异常用电数据有309条,正常数据有3 422条,异常数据占训练集的8.28%。测试集中异常用电数据有51条,正常数据有81条,异常数据占测试集的38.64%。算法运行平台为已经搭建好的TensorFlow深度学习平台。实验平台为一台PC,其中央处理器(CPU)为Intel E3 4核,内存(RAM)为8G,显卡(GPU)为NVIDIA GTX 960。
3.2.1 本文所提模型实验结果
文本所提模型在测试集上的分类结果如下:TP类平均为80.6条,FP类平均为0.4条,TN类平均为46条,FN类平均为5条。由此可得本文所提模型的准确率和漏警率指标如下:模型准确率为95.90%,漏警率为9.80%。
3.2.2 与非深度学习模型的对比
为验证本文所提模型的有效性,与非深度学习模型(支持向量机模型和BP神经网络模型)进行了对比实验。非深度学习模型在测试集上的分类结果如下:非深度学习模型能正确识别TP类数据81条;而对于异常数据,支持向量机模型识别TP类25条,FN类 26条,BP神经网络模型识别TP类17条,FN类34条。
计算各模型的准确率和漏警率,得到评价指标结果如下:本文所提模型的准确率为95.90%,高于支持向量机和BP神经网络的81.06%和87.12%;本文所提模型漏警率为9.80%,低于支持向量机和BP神经网络的50.98%和66.67%。由此说明,本文所提模型相对于支持向量机和BP神经网络具有更好的性能。
3.2.3 与多层LSTM深度学习模型的对比
本文所提模型与常规的多层LSTM模型[17]进行了对比实验。其相应的混淆矩阵对比结果如下:多层LSTM模型识别TP类平均为75.4条,FP类平均为5.6条,TN类平均为45.2条,FN类平均为5.8条;而本文所提模型识别TP类平均为80.6条,FP类平均为0.4条,TN类平均为46条,FN类平均为5条。
计算各模型的准确率和漏警率,得到评价指标结果对比如下:本文所提模型准确率为95.90%,高于多层LSTM模型的91.36%;本文所提模型的漏警率为9.80%,低于多层LSTM模型的11.37%。由此可知,本文所提模型相对于多层LSTM模型具有更好的性能。此外,为了能够体现模型的鲁棒性,记录了2个模型在15 000个训练周期中,在测试集上的准确率,如图2所示。
图2 2个模型的准确率对比Fig.2 Comparison of accuracy between two models
从图2可以看出,本文模型和多层LSTM模型在大约5 000个周期后,2个模型准确率变化程度变小,可认为2个模型生成趋于稳定;在大约5 000个周期后,本文所提模型的准确率比多层LSTM模型高;本文所提模型在大约5 000个周期后,模型准确率变化幅度比多层长短期LSTM小。
综上所述,本文所提模型相对于多层LSTM模型,具有更好的准确性和鲁棒性。
本文提出了一种基于深度学习的用户异常用电模式检测的模型。该模型能从实际的用户数据中检测得到用电模式存在异常的数据。所做工作如下:利用TensorFlow框架,成功构建了一个基于深度学习的用户异常用电模式检测模型;利用多个特征提取模块构建了基于结构递归神经网络的特征提取网络;利用3层全连接神经网络构建了一个数据特征匹配的神经网络。
将本文所提模型与支持向量机和BP神经网络进行对比实验。实验结果说明,本文提出的模型相对于非深度学习模型有更好的性能,能够发现用电模式存在异常的数据,具有更高的准确性。此外,本文所提模型相对于多层LSTM模型具有更好的准确性和鲁棒性。
在后续工作中,将研究如何加快深度学习模型的学习速度,缩减模型生成所需要的时间,更为有效地提取用户用电模式特征和优化特征匹配,以满足实际需求。
致 谢
本文中实验方案的制定和实验数据的测量记录工作是在保定市新源绿网电力科技有限公司的工作人员的大力支持下完成的,在此向他们表示衷心的感谢。
附录见本刊网络版(http:∥www.epae.cn)。