赵 嫚, 李英娜, 李 川, 杨 莉
(1.昆明理工大学 信息工程与自动化学院, 云南 昆明 650500;2.云南省计算机技术应用重点实验室, 云南 昆明 650500;3.云南电网有限责任公司 电力科学研究院, 云南 昆明 650200)
随着电力系统信息化程度的不断提高和配用电数据的快速增长[1],配用电数据逐渐呈现出数据量大、类型多、增长速度快等特征[2]。因此,研究适用于配用电数据挖掘的算法并建立有效的知识发现模型,对配用电业务模式创新和智能电网的发展具有重要意义[3]。
异常数据检测是一项重要的数据挖掘技术,主要是通过挖掘数据集中少量的异常点来获取隐藏其中的有价值的信息[4]。对于智能配电网,利用有效的异常检测方法可以及时检测到影响电能质量的各种异常运行状态[5],找出并消除电能质量的干扰因素,避免电网的非技术性损失(non-technical losses,NTL)[6]。所谓NTL是指由配电网侧电力用户的窃电、欺诈等一系列欺骗性用电行为导致的电能损失[7]。对此,Nagi等[8]提出了一种基于改进支持向量机和专家系统的异常检测模型。张小斐等[9]提出了一种基于图正则化的非线性岭回归用电异常检测模型,并与最小二乘法、岭回归、图正则化岭回归做了对比,验证了所提方法的可靠性和准确性。赵永斌等[10]利用分布式聚类算法准确实现了大规模电力用户用电行为分析。Nizar等[11]利用聚类算法将用户负荷曲线进行聚类分析,得到每类用户的聚类特征曲线,根据负荷曲线与其特征曲线的偏离程度将用户分为正常和异常两类,最后利用极限学习机算法预测新用户是否为异常用户。Angelos等[12]提出了一种基于模糊聚类算法聚类的非技术性损失检测方法。虽然上述文献都对电力异常检测提出了解决方法,但基本上都是依赖于异常数据占比量较大且异常数据已知的情况下进行的用电异常检测。
鉴于以上问题,本文提出了一种基于模糊聚类和孤立森林的用电数据异常检测方法。首先对用电数据进行预处理,利用模糊聚类算法将相同用电行为的用户进行分类,然后利用孤立森林算法对其中某一类的聚类数据进行异常检测分析。并采用ROC曲线对所提方法和局部离群因子算法和聚类算法做了对比试验,以检验本文所提方法的检测准确率。
电力用户每天都有96个负荷数据计量点,其中有少部分用户的负荷数据会出现零值或空值,这会影响对电力用户行为的分析结果。对此,本文采用拉格朗日插值法对这些缺失值进行插补[13]。具体方法如下:
从原始负荷数据集中确定因变量和自变量,并提取缺失值位置前后的5个用电数据,将取出的10个数据组成一组[14],利用公式(1)与公式(2)[15]对全部缺失数据依次进行插补:
(1)
(2)
其中x为缺失负荷数据所对应的下标序号,Ln(x)为缺失负荷数据的插值结果,xi为非缺失负荷数据yi的下标序号,li(x)为拉格朗日多项式。
考虑到原始用电数据每个特征可能占比不同,数值小的可能被数值大的替代造成特征丢失,本文将插补后的数据进行标准化处理,经过处理后的数据介于0到1之间,具体计算公式为
(3)
其中v′为标准化后的负荷数据,v为原始负荷数据,vmax、vmin分别为原始负荷数据在标准化前的最大值和最小值。
基于模糊聚类和孤立森林的异常检测具体架构如图1所示,整个框架包括3个部分:数据预处理、聚类分析、用电异常检测。在对负荷数据进行聚类前,需要对数据进行预处理,将预处理后的数据作为参数输入到模糊聚类算法中进行聚类分析,根据得到的结果,对每个类别的用户进行异常检测,并对检测结果进行分析及模型评价。
图1 用电数据异常检测模型
由于不同类型的用户具有不同的用电行为,而且某一类中的异常用电行为可能与另一类中的正常的用电行为相似。为避免这种情况的发生,提高检测的准确率,本文利用FCM聚类(Fuzzy C-means,模糊C均值聚类)算法先将具有相同用电行为的用户进行分类。FCM算法是一种基于划分的无监督聚类算法,是硬划分C均值算法的改进,主要是根据给定的某种规则将样本数据划分为若干个簇,并遵循“簇内高内聚、簇外低耦合”的准则[16]。其思想是不断地更新聚类中心和隶属度矩阵,并通过不断迭代使结果最终趋于稳定。模糊聚类算法是把样本数据集X划分为c类,并求出每组的聚类中心,使目标函数达到最小。
目标函数定义为
(4)
(5)
其中uij表示xi隶属于聚类中心cj的隶属度,dij=‖xi-cj‖,xi表示第i个样本,cj是第j簇的中心。
利用拉格朗日乘数法将约束条件带到目标函数Jm中,并对所有输入参量uij、cj求导,使公式(4)达到目标函数的最小极值,得到
(6)
(7)
其中,式(6)是类中心cj的迭代公式,式(7)是隶属度矩阵uij的迭代公式,m为模糊加权指数且m≥1;通过不断地迭代更新聚类中心和隶属度矩阵,得到最佳的聚类中心。
由于负荷数据具有高维度、数据量大的特点,若用基于距离或密度的算法进行异常检测则会造成计算量大、运行时间长等问题。因此,本文利用无监督学习算法——孤立森林(Isolation Forest)算法进行用电数据异常检测。孤立森林算法[17]是基于划分和集成学习的异常检测算法,该算法的设计利用了异常数据具有的两个特点:一是相对于正常数据,异常数据数量很少;二是异常数据与正常数据的属性值存在明显的差异。孤立森林算法构建的核心在于建立由隔离树组成的森林。基于此,此算法引入了隔离树和路径长度的定义。
定义1(隔离树) 令T是一棵二叉树,N是T的节点,若N是叶子节点,则称其为外部节点,若N是一个具有两个孩子的节点,则称其为内部节点。
定义2(路径长度) 在一棵隔离树中,从根节点到外部节点所经历边的数目称为路径长度,记为h(d)。
利用孤立森林算法进行异常检测分为两个阶段。第一个为训练阶段,使用训练集的子样本构建隔离树;第二个为测试阶段,即通过隔离树传递测试样本,以获得每个测试样本的异常分数。具体构建过程如下:
ⅰ 从训练数据集中随机选择ψ个点作为子样本,放入一棵孤立树的根节点;
ⅱ 随机制定一个维度,在当前节点数据范围内,随机产生一个切割点p(切割点产生于当前节点数据中指定维度的最大值与最小值之间);
ⅲ 从切割点形成一个超平面,将当前节点数据空间切分为2个子空间,将维度小于p的点放在当前节点的左分支,大于p的点放在当前节点的右分支;
ⅳ 循环执行ⅱ、ⅲ,不断构造新的叶子节点,直到数据无法再继续分割或者分割次数达到log2ψ时,则停止分割。
由于iTree与二叉查找树结构等价,因此外部节点终止的平均高度h(d)等价于二叉查找树中未成功搜索的路径长度,本文采用二叉查找树的分析方法来估计其平均路径长度:
(8)
其中H(i)为调和数,可以被估算为H(i)=lni+γ,γ为欧拉常数,n为叶子节点数,C(n)为给定n时h(d)的平均值,用以标准化h(d)。鉴于C(n)是给定n时h(d)的平均值,可以用其来标准化h(d),则测试数据的异常分数S(d,n)为
(9)
其中E(h(d))为iTree集合中h(d)的平均值。由公式(9)可以看出S对h(d)是单调的,对于S与E(h(d))之间的关系,可以用以下条件进行异常评估:
ⅰ 若E(h(d))→0,S→1,则当前数据是异常点的可能性很高;
ⅱ 若E(h(d))→C(n),S→0.5,则表明全部样本中没有明显的异常值;
ⅲ 若E(h(d))→n-1,S→0,则可以确定此数据为正常数据。
本文数据以云南省某地区3234个用户的用电数据为研究对象。电能计量装置采样间隔为15 min,即每天共有96个用电数据采样点。对用电数据进行数据预处理后得到3186个有效用户数据,其中包含51个异常用户,异常用户总占比为1.73%。
由于初始聚类中心是随机选择,每次结果可能不一样。本文利用聚类有效性函数P′(U:c)确定最佳聚类数,表1所示聚类数为4时P′(U:c)取得最大值,所以本文将电力用户用电数据分为4类。为使结果更加客观,对聚类算法运行10次并取其平均值作为最终的结果。聚类结果如图2所示,纵坐标表示各类别用户归一化后的负荷值,横坐标表示以分钟为单位的负荷数据采样时间。
表1 不同聚类数对应的P′(U:c)
图2 各类聚类中心曲线
利用图2的聚类结果,以其中的第3、4类作为测试数据集对本文提出的方法进行性能评估。分别采用LOF、K-means算法和本文提出的FCM-iForest算法进行异常检测,查找异常数据。为了使结果更加客观,对每一个算法分别进行15次检测并取其平均值。图3和图4给出了聚类结果的第3类和第4类在3种不同算法下的ROC曲线和对应的AUC值。表2给出了不同类别在3种算法下的AUC值。其中AUC为ROC曲线下方的面积,可以通过比较AUC的大小来评估算法的性能。AUC的值为0.5~1.0,AUC越接近于1.0,则说明算法的精确度越高。
图3 第3类ROC曲线 图4 第4类ROC曲线
表2 不同类别在3种算法下的AUC值
从实验结果来看,iForest算法的AUC值整体都高于LOF和K-means算法。从图3可以看出,在横轴的假正例率未达到0.2时,iForest纵轴的真正例率就已经达到92%左右,而LOF的真正例率为70%左右,K-means仅为32%。
通过上述分析可以得出,在相同数据集下,iForest算法相比于LOF、和K-means算法应用于用电数据异常检测上具有更高的查准率和查全率。证明本文所提方法更加适用于用电数据异常点较少的异常检测分析。
本文结合智能配用电背景下用电数据量大、维度高,实际数据集中异常点样本较少且获取成本较高等背景,提出了一种基于模糊聚类和孤立森林的用电数据异常检测方法。利用ROC曲线将局部离群算法和聚类算法与本文所提方法进行对比,实验结果表明本文所提方法更加适用于用电数据异常点较少的情况,且具有较高的查全率和准确率,验证了本文所提方法的可行性。
在本文的基础上,可以考虑扩大实验数据集并综合考虑配用电数据的自身特点,采取合适的智能算法对用电数据进行异常检测,更深入地进行下一阶段的研究。