陈朔, 陈小龙, 张婷, 王艳龙, 张照, 王双
(1.国网安徽省电力有限公司合肥供电公司, 安徽,合肥 230000;2.国网安徽省电力有限公司肥西县供电公司, 安徽,合肥 231299;3.安徽明生恒卓科技有限公司, 安徽,合肥 230001)
随着电力建设规模的不断扩大,智能电网覆盖的范围也在持续增大,电网系统中的各项电力运行数据也随之增多[1]。当电网系统中出现问题,如变电站设备故障、电表保险熔断、输电线路中断等[2],智能电网中的电表数据会随之发生异常。因此,对智能电网能源大数据中心中的电表数据进行持续实时的监控和异常检测,可以及时发现电网中出现的异常或事故,避免因故障处理不及时导致的更严重的电量损失和设备损坏[3]。因此,对能源大数据中心的数据进行异常检测对智能电网来说有着重大的经济和安全价值。
异常检测一直是数据分析中的热门领域,现阶段对时间序列进行异常检测的算法主要可以分为时间序列分解法、分类和回归树、ARIMA、指数平滑法和神经网络这几种[4]。ZENG等[5]利用分解法将图像分为正常部分和残差部分来检测医学图像中的异常区域。PANAGIOTIS等[6]利用决策树和机器学习算法设计了一种基于异常的智能电网入侵检测系统。YAACOB等[7]利用ARIMA技术进行异常检测来查找网络中的潜在攻击。ANDRYUKHIN等[8]使用基于指数平滑的模型来对工业网络中的异常行为进行检测。WANG等[9]采用基于LSTM的功耗预测和异常检测方法来识别异常功率消耗数据。由于智能电网中数据量庞大,这些算法不能同时满足速度和准确率的双重需求。
基于此,本文设计了一种基于云计算平台的能源大数据中心的数据异常检测方法,利用云计算架构,实现对智能电网能源大数据中心中超大数据量的存储和计算。此外,根据用电数据随季节变化的特征,采用STL分解法将电表数据进行分解,再利用分解后的残差数据进行异常分析,完成对能源大数据中心异常数据的检测。
云计算是一种基于互联网的,通过网络互联异构和按需为个人用户或企业用户提供取用的计算方式[10]。云计算是一种新兴的IT服务交付方式,它具有超大规模、通用性、高可扩展性、廉价性、高可靠性和按需服务等特点[11]。因此,它可以为用户提供更加方便快捷的使用体验和更加低廉的服务成本。云计算的应用场景目前也已增多,IDC云、企业云、云存储系统、开发测试云、协作云等已经被广泛应用[12]。
云计算架构通常分为服务和管理两部分[13]。服务部分为用户提供各种基于云的服务,包括软件服务、平台服务和基础架构服务。管理部分则以管理层为主,它可以对云计算中心进行及时有效的管理,确保整个云计算中心运行的稳定和安全。
Robert B Cleveland提出的A Seasonal-Trend Decomposition Procedure Based on Loess,即STL是一种专门用来处理时间序列数据的分解算法,其原理是以鲁棒局部加权回归作为平滑方法,将某个时间序列Y=(T,X)分解为3个分量,即趋势分量Q、周期分量C和残余分量R。其中:T={t1,…,tn},tn表示第n个时间节点;X={x1,…,xn},xn表示第n个时间节点对应数据。
Y=Q+C+R
(1)
其中,趋势分量可以显示时间序列中低频的变化率,周期分量可以显示频率周期性变化,残余分量顾名思义则为时间序列去除趋势分量和周期分量后的分量。
STL时间序列分解算法主要分为两部分,分别为内循环和外循环。在内循环阶段需要对时间序列Y进行Loess平滑,得到趋势分量Q和周期分量C。在外循环部分则为残余分量的获取。
(2)
其中,xFarthest表示区间内距离xi最远的点。
通过该区域内所有时间点,对xi进行线性回归得到平滑直线y′=a+bt,则时间点ti处的平滑值为yi。
对于时间序列Y,在确定区间大小为sc以后,可以得到子序列,通过对子序列进行平滑,即可得到周期子序列C′,对其进行低通滤波得到低频分量L,则周期分量C=C′-L。接着计算:
Q′=Y-C
(3)
对Q′进行区间大小为sq的平滑,得到趋势分量Q。则残余分量R=Y-Q-C。
图1为本文提出的智能电网云计算平台整体框架。它分为显示云层、分析计算云层、数据云层、基础设施云层和管理云层。其中,显示云层提供软件服务,用户可以通过该层发布命令,并获得反馈。分析计算云层和数据云层提供平台服务,庞大的计算任务在该层完成。基础设施云层提供基础架构服务,它为云计算提供硬件和软件支撑。管理云层提供账号、安全、运维、服务、计费等方面的管理,对整个智能电网云计算平台进行高效的管理,保证整个平台的稳定运行。
图1 智能电网云计算平台整体框架
由于智能电网能源大数据中心中的电表数据来源广泛,又经过了长时间的传输,所以会存在数据缺失和格式不一致的问题,因此,在进行数据分解之前,需要对数据进行预处理。本文采用牛顿插值法对缺失数据进行补全,再采用min-max标准化函数对所有格式不一致的数据进行标准化操作。
设时间序列T={t1,…,tn}对应的原始数据集为X={x1,…,xn}={f(t1),…,f(tn)},假设(ti,xi)数据缺失,则:
P(ti)=f(t1)+(ti-t1)f[t2,t1]+(ti-t1)(ti-t2)f[t3,t2,t1]+…+(ti-t1)(ti-t2)…(ti-tn-1)f[tn-1,…,t2,t1]
(4)
R(ti)=(ti-t1)(ti-t2)…(ti-tn)f[tn-1,…,t2,t1]
(5)
P(ti)=f(t1)+(ti-t1)f[t2,t1]+(ti-t1)(ti-t2)f[t3,t2,t1]+…+(ti-t1)(ti-t2)…(ti-tn-1)f[tn-1,…,t2,t1]
(6)
其中,f[ti,tj]为f(t)在点ti、tj处的一阶差商,P(ti)为牛顿插值逼近函数,R(ti)为余项函数。
(7)
完成预处理之后的数据集为Y={y1,…,yn}。
能源大数据中心中的电表数据具备明显的昼夜周期特征和趋势变化率,因此通过STL时序分解法去除数据中的趋势分量和周期分量,可以较为明显轻松地找到异常数据,降低异常数据引起的故障报错等问题。
对预处理后的数据集采用1.2中提到的STL时序分解法,得到残余分量R,对R进行ESD检验。其步骤如下。
(1) 计算残余分量序列数据R的中位数M。
(2) 计算M的绝对中位数误差mad。
(3) 计算R中每个数据点的统计量:
(8)
(4) 统计S中最大的数,若该数大于阈值σ则将其认为为异常点,从时序数据集中将其去除。
(5) 迭代执行步骤(1)~步骤(4)。
本文实验数据选自国家电网安徽省某变电站采集的2020年变压器数据,其中70%的数据作为训练集,剩下30%作为测试集。为验证算法的可行性,如图2、图3分别为改变参数sc和sq观察算法的检测准确率。
图2 参数sc对算法精度的影响
图3 参数sq对算法精度的影响
为验证算法的性能,图4通过将本文的算法与ARIMA,回归树做对比,通过准确率,召回率来衡量本文的算法优越性。
准确率公式为
(9)
召回率公式为
(10)
其中,TP表示真正的异常值被区分,FP表示非异常值被分为异常值,FN表示真正的异常值未被区分,TN表示非异常值未被分为异常值。
图4 3个算法评估指标
为了避免因故障处理不及时导致的电量损失和设备损坏,需要对能源大数据中心中的数据进行异常检测。本文设计了一种基于能源大数据中心的数据异常检测方法,方法利用云计算架构,实现了对能源大数据中心中超大数据量的存储和计算。采用STL分解法将电表数据进行分解,再利用分解后的残差数据进行异常分析,完成对智能电网能源大数据中心中异常数据的检测。并通过实验验证了该方法的准确性。