时间:2024-08-31
严 莉,张 凯,徐 浩,韩圣亚,刘珅岐,史玉良
(1. 国网山东省电力公司信息通信公司,山东济南 250013;2. 山东大学软件学院,山东济南 250101)
异常检测指出从预期正常数据中检测出扭曲或偏差的数据[1,3],这些数据通常被称为异常值. 异常检测已被用于许多重要领域,如视频监控、网络入侵检测、信用欺诈检测、电力行业和医疗保健.
对于电力行业,随着电力系统信息化水平的提高,各种电力设备和系统需要处理大量数据[4]. 然而,需要处理的事件信息类型多样,难以从数据中提取有用信息[5]. 此外,由于各种通信故障[6]、设备故障[7]、电网波动[8]和用户行为异常等原因,出现了大量的异常数据.这些异常数据往往包含电网信息中的重要信息,对电力数据的准确性和完整性有着重要影响. 因此,基于大规模电力数据,研究异常检测算法,分析、识别、处理异常信息,对电力行业挖掘事件信息和智能电网的分析具有重要意义[9,10].
目前,传统数据异常检测方法主要依靠数据专家、业务专家等人力进行排查[11,12]. 随着各行业及各专业数据化建设规模的逐渐扩大,依靠传统方法对海量、实时、异构的数据异常检测方法渐显不足. 主要问题在于人工成本大、时间周期长,依赖专家经验无法并发批量工作,人工治理还会引发错漏现象等,无法快速、准确、低成本地满足业务数据的使用需求;同时缺乏异构数据环境下数据拓扑关系高效管理的手段,无法实现复杂逻辑数据管理智能化及数据脉络关系可视化和清晰化,与真正实现“追根溯源”式的数据核查理念还存在一定的差距.
近年来,随着数据科学的进步以及人工智能技术的发展,提出了一些基于数据挖掘和智能优化算法的异常检测方法[13,14]. Wang 等人[13]采用不同的聚类算法,根据电表收集的平均损失、线路损耗变化效率和电流表开路记录来检测10个kV 非技术损失,最后对各种聚类算法的检测效果进行了分析和比较. 基于异常用户用电的差异行为特征和正常用户,Buzau等人[14]使用长期和短期的记忆网络和多层感知器混合的深度神经网络来进行异常检测,它们比其他分类器具有更高的精度. 针对考虑时序数据的关联性方面,Chahla等人[15]提出了一种基于长短期记忆的异常检测方法,用于从单变量时间序列数据中进行不和谐搜索,然后根据观测的数据预测误差,最后通过统计策略进行异常检测.Barua 等人[16]提出了一个基于层次时空记忆(Hierarchical Temporal Memory,HTM)的新型神经认知启发架构,用于利用微相位测量单元数据进行智能电网的实时异常检测. 其关键的技术思想是,HTM 学习连续数据的稀疏性和关联性的时间表示,这对于实时的异常检测非常有用. Rouzbahani 等人[17]提出了一种用于智能电网ETD 的集合深度卷积神经网络(EDCNN)算法. 该算法首先采用随机下采样技术来处理不平衡数据,然后利用深度卷积神经网络(DCNN)来挖掘数据之间的相互依赖性,最后,通过嵌入一个投票机制来实现窃电检测. 这些方法虽然取得了不错的检测效果,但是可能会忽略掉特定用户的某些重要信息.
针对上述问题,本文提出了一种基于图注意力和Transformer 的异常检测模型. 该模型首先根据数据中台中收集的电力数据构建一个异构信息网络;然后采用图卷积网络(Graph Convdutional Netword,GCN)和非负矩阵分解(Non-Negathe Matrix Factorization,NNMF)相结合的方法进行相似性分组;最后采用图注意力机制和Transformer 相结合的方式进行分组异常检测.
近年来,随着信息技术的不断发展,异常用电行为检测方法受到了越来越多的关注. 异常用电行为检测方法主要分为基于统计模型的检测方法、基于分类的检测方法和基于聚类的检测方法.
基于统计模型的检测方法主要结合用户历史的用电数据、配电网电压、电流、电源等网络状态数据和网络拓扑,建立异常用电检测的统计模型. Lo 等人[18]基于电网系统中各节点电压和功率等,使用加权最小二乘法来估计系统状态,并建立异常检测的系统目标函数. 该方法的检测精度高,错误检测率低. 然而,该方法的取决于配网的拓扑和参数,而配网的拓扑和参数并不是恒常的. 大多数用户难以进行数据篡改,实现数据协调及异常检测.
基于分类的方法是利用电力消耗数据的特征对正常和异常进行分类. 例如,张承智等人[19]采用实值深度置信网络的检测模型,利用萤火虫算法求解局部最优,最后通过分类检测异常. Wang 等人[20]提出了一个名为LSTM-VE 的多分类异常检测框架,它使用聚类结合可视化的方法对正常数据进行粗略标记,然后使用正常数据训练长短期记忆神经网络(Long Short-Term Memory,LSTM)进行半监督异常检测. Adil 等人[21]将LSTM 和随机下采样Boost(RUSBoost)技术相结合实现窃电检测. 该技术首先使用数据归一化和数据插值对数据进行预处理,预处理后的数据被进一步交给LSTM模块进行特征提取,最后,精炼的特征被传递给RUSBoost 模块进行分类. Buzau 等人[14]使用长期和短期记忆网络和多层感知器混合深度神经网络进行,它们比其他分类器具有更高的精度. Khaledian 等人[23]提出了一个使用无监督的堆叠集合学习算法(隔离森林、KMeans 和LoOP)对异常数据进行检测和分类的工具,以检测异常用电量. Long 等人[22]从无监督学习的角度提出了一种多特征融合算法,构建了用电模式的特征分类模型,实现用电异常检测. 考虑到时序数据间的相互关联性问题,Mishra 等人[24]提出了一种基于注意力的双向长短期记忆网络,用于时间序列数据的异常检测,它有助于为顺序数据中的实例分配最佳权重.Homayouni 等人[25]提出了一种基于LSTM-Autoencoder的方法,可以检测多元时间序列数据中的异常,而且还提出了一种基于自动自相关的窗口方法来调整网络输入大小,从而提高约束发现的正确性和性能. 这些方法虽然取得了不错的检测效果,但是可能会忽略掉特定用户的某些重要信息.
该方法主要通过一种特定的算法,根据其特征将数据集划分为不同的子数据集. Wang 等人[13]使用不同的聚类算法检测10kV 非技术损失,并比较各种算法的检测效果. Passos Júnior 等人[26]使用一种最优路径森林聚类方法进行检测. Matús 等人[27]首先通过对离散时间序列进行聚类来缩小大型数据集中的潜在异常客户,然后使用统计方法SH-ESD 分析选定的配置文件以计算最终的异常分数. 针对传统时间序列检测算法的不足,曾惟如等人[28]对时间序列内在模式关系进行学习,建立预测模型,通过比较预测值和真实值的偏离程度来判断数据是否异常. 周伯阳等人[29]提出了一种基于多尺度低秩的电力无线网异常流量检测器,然后采用改进的递归特征选取和聚焦分类算法实现异常数据的检测. Peng 等人[30]提出了一种基于聚类和局部离群因子的离群检测方法. 该方法首先用k-means 分析负荷曲线;然后,选择那些负荷曲线远离聚类中心的客户作为离群点候选人;最后,利用检测方法来计算离群值候选人的异常度.
针对上述讨论的异常检测方法,本文提出的模型不仅通过相似性分组来捕获特定用户的信息,而且还考虑序列数据之间的关联关系,从而提高检测性能.
本文的目的是根据历史用电数据进行异常检测,即判断是否存在异常,具体流程如图1 所示. 首先,根据历史用电数据构建一个异构信息网络;然后,考虑到构建一个全局模型可能会忽略掉个别用户的重要信息,采用GCN 和NNMF 相结合的方法进行相似性分组,挖掘出具有相似性用电行为的群体;最后,采用图注意力机制和Transformer 相结合的方式进行分组异常检测.
图1 异常检测模型
一个异构信息网络是一个图G=(V,E,A,X),其中V∈Rn表示的是图G的节点,n表示的是节点的数量;E是图G的边;A∈Rn×n为G的邻接矩阵;对于Vvi,vj∈V,如果eij∈E,则Aij=1,否则Aij=0;X∈Rn×m表示的是节点的属性信息,m是属性信息的维数.
GCN 可以通过卷积和聚合算子[16]从邻居节点上学习每个节点的低维嵌入向量. 各层的卷积操作如下:
其中,Hi表示的是第i层的输出,同时它也是第l+1层的输入,̂=A+I,I表示的是偏差矩阵;̂表示的对角矩阵;Wi是第i层的参数集合;δ(·)表示的是一个激活函数.
在实际用电行为检测模型构建过程中,Hi+1比Hi包含更多的高级语义信息,然而却忽略了许多低级语义信息. 对于图,由于低级语义信息可以反映图的局部结构信息,因此低级语义信息在最终嵌入中也起着重要的作用. 此外,如果输入的尺寸较大,GCN 中产生了更多的参数,容易出现过拟合现象.
因此,本文在使用GCN 进行相似性学习过程中,i-1 层的输出没有直接进行拼接,而是通过NNMF 将Hi(i=0,1,2,…,i-1)分解为2 个低维矩阵,如下所示:
其中,Hi∈Rn×Li,Ui∈Rn×d,Vi∈Rd×Li,Li是第i 层的输出维度,d是非负矩阵分解方法的输出维度,Ui是Hi的低维维度的表示向量. 因此,第i+1层的输出表示为
其中||表示拼接操作.
通过GCN 输出节点的低维表示向量,然后将低维表示向量输入一个具有单个隐藏层的多层感知机(MultiLayer Perceptron,MLP)中. 通过MLP 的输出结果Z进行相似性分组,即
其中,Z∈Rn×k.
在这一部分中,本文对不同组分别进行用电行为表示学习. 基于历史用电行为数据,利用Transformer机制对用电行为数据进行上下文信息学习,实现过程如下所示:
其中,LN(·)=Layer Normalization(·)表示的是层归一化方法,FFN(·)=Feed Forward Networks(·)表示的是一层前馈网络.
利用Transformer 获得上下文信息向量,并结合第3.1节获得的相似用电行为组的相似性矩阵,采用图注意力网络捕获用户行为之间的相互依赖关系,从而实现用户行为表示学习.
假设图中包含N个节点,每个节点的特征向量为Hi,维度F,如下所示:
对节点特征向量H进行线性变换,可以得到新的特征向量δ'i,如下所示:
其中,W∈RF'×F为线性变换的矩阵,F'表示的是变换矩阵的维度.
引入图注意力网络,把节点i,j的特征向量δ'i,δ'j拼接在一起,然后和一个2F'维的向量a计算内积. 激活函数采用LeakyRelu函数,公式如下:
其中,σ表示的是激活函数.
最后,为了实现异常检测,将图注意力输出的向量输入softmax层进行异常检测,检测结果为
其中,Wy和是可以学习的参数向量.
本文采用交叉熵函数来计算模型的损失,计算公式如下:
其中,N表示样本数量;yi表示异常检测结果;y'i表示真实数据.
算法1 描述了异常检测模型的整体过程. 第2 行batch_size表示训练批次大小;第4行至第8行表示的是使用GCN 和NNMF 相结合的方法来实现相似性学习;第9 行至第11 行表示使用Transformer 和图注意力网络来共同捕获数据间的相互关联关系,从而获得用户的综合表示向量;第12行至第16行表示通过softmax函数进行异常检测,并通过交叉熵函数来计算损失,最终返回检测结果y.
算法1 基于图注意力和Transformer的异常检测输入:输入数据样本X={x1,x2,…,xn},标签Label={0,1}//0表示异常,1表示正常输出:y 1. Input data preprocess//数据预处理2. Initialize Wi,Wo,W Q i ,W K i ,W V i //初始化参数和偏置3. For in range(batch_size)//训练批次大小4. #Similarity Learning//相似性学习5. G=(V,E,A,X)6. Hi=GCN(X)7. H'i=NNMF(Hi)8. Z=MLP(H'i)9. #User Representation Learning//用户表示学习10. τ=Transformer(X)11. H͂'i=GAT(τ⊙Hi)12. 根据式(17)进行异常检测,得到y//异常检测13. Loss=-1 N ×∑i=1 N ( )yi log( )y'i +( )1-yi log( )1-y'i 14. END FOR 15. END FOR 16. RETURN y
为了验证本文提出的模型的有效性,选用从中国某省级电网公司的用电信息采集系统中获取的2019年6 月至2019 年12 月这6 个月内某地区996 个用户(包括126 个异常用户,870 个正常用户)的用电数据,每小时采集一次,每天采集24 个时间点的数据. 经过统计分析发现,2019 年9 月1 日到2019 年9 月14 日期间,共有115 个用电异常用户,占全部异常用户的91.3%. 为了更加高效地训练异常检测模型,本文选取2019年9月1日到2019 年9 月14 日共334 656 条用电数据作为本文模型的验证数据. 在这里要说明的是,本文将每一个时间点采取的数据都作为一条用电数据. 此外,从中国气象数据服务中心网站上获取了相应城市相应时间的天气数据.
实验环境如表1所示.
表1 实验环境
为了验证模型的预测性能,本文选用Accuracy,F1,AUROC和AUPRC作为评价指标.
由表2 可知,相较于基线模型,本文所提出的模型在所有指标上都取得了最高的分数. 在所有基线方法中,SVM 和LR 模型分别在Accuary 和F1 指标上取得最高的分数,而BiGRU 在AUROC 与AUPRC 取得了最高的分数. 由于数据集中正负样本占比差异较大,因此F1,AUROC与AUPRC更能反映出模型在异常用电行为识别任务上的性能表现. 综合来看,在所有的基线方法中,BiGRU 的综合性能是最好的. 这是因为BiGRU 相较于其他基线方法可以更好地捕获存在于序列数据中的上下文信息,从而达到了比较好的预测效果.
表2 不同检测方法的性能比较
对于Accuary 指标,本文所提出的模型相较于最好的基线模型——SVM 模型的性能提升约为3.1%;对于F1 指标,与次优模型相比,本文模型提升幅度为19%;对于AUROC 和AUPRC 指标,本模型相较于BiGRU 模型的提升程度分别为17.2%和19.2%.
从以上结果可以看出,本文模型的综合性能要好于其他的基线模型. 这是因为本文模型首先将用户间的关联信息进行了提取,并使用Transformer 将用户的用电序列数据中的时序依赖使用自注意力机制进行高效的挖掘,对用户本身的用电行为进行高效的表示学习,最后将Transformer 学习出的用户表示与相似性分组信息结合,使用GAT 网络来学习用户的用电行为模式. 上述的实验结果验证了本文所提出模型的有效性.
图2 展示了本文所提出的模型的损失变化曲线.从图2(a)中可以看出,随着训练的进行,模型在训练集上的损失与测试集上的损失逐渐变大,模型的过拟合现象加重. 为了解决这一问题,本文使用了提前停止策略来监督模型的训练过程,其结果如图2(b)所示. 使用该策略后,可以在模型过拟合现象即将加重之前停止训练,并保存训练期间的最好参数,这大大地提高了模型的泛化能力.
图2 异常用电行为检测模型损失变化曲线
为了研究模型的参数敏感性,探索模型在不同的超参数组合下的异常行为识别性能,本文进行了超参数搜索实验. 结果如图3所示,其中d=dmodel(d表示模型的嵌入维度). 从图中的结果可以看出,当d>64 时,模型的性能提升幅度较为有限. 为了平衡模型的复杂度与性能,本文将嵌入维度d设定为64.
图3 参数变化对模型的影响
为了进一步验证所提模型的性能,本文进行了消融实验. 本文所提模型的变体如下.
(1)Without Similarity Learning. 该变体没有考虑相似性信息学习.
(2)Without User Representation Learning. 该变体没有考虑到使用Transformer进行用户表示学习.
(3)Without GAT. 该变体没有使用图注意力网络(GAT)来捕获相似性向量与用户表示向量间的相互依赖关系.
图4 描述了本文所提模型变体之间的比较情况.图4(a)展示的是模型在Accuracy 和F1 指标上的性能比较,图4(b)展示的是模型在AUROC 和AUPRC 上的性能比较. 从图4可以得出,本文提出的模型性能要优于模型的变体. 同时,这也说明了所提模型中的每一部分对异常检测都是有意义的.
图4 本文所提模型的变体在不同评价指标上的性能比较
为提高异常检测的性能,本文提出了一种基于GAT 和Transformer 的复合模型用于异常检测. 该模型首先根据数据中台中收集的电力数据(主要包括用户ID、电能表ID、用户类型、电流、电压、功率等数据)构建一个异构信息网络;然后采用GCN 与NNMF 相结合的方法进行相似性学习,并使用GAT 和Transformer 共同学习用户的异常用电行为模式. 实验结果证明:相较于基线模型,本文所提出的复合模型能够更好地建模用户的用电行为模式,能够利用用户自身的用电行为信息与用户群组间的相似性信息来进行高效的表示学习,从而取得更好的识别性能.
此外,模型结果的可解释性以及如何对模型进行进一步优化和改进,从而提高预测精度,将是本课题组或笔者后续的研究方向.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!