《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于蚁群算法改进One-Class SVM的电力离群用户检测算法研究
基于蚁群算法改进One-Class SVM的电力离群用户检测算法研究
2018智能电网增刊
张 薇1,吕 磊2,朱 敏2
国网冀北电力有限公司经济技术研究院,北京 100038
摘要: 用电采集负荷数据反映了用户的用电特性及用电习惯,通过用电负荷数据分析识别用电离群用户。根据高维用电负荷数据的特点,提出了一种基于改进One-Class SVM算法的电力离群用户检测,同时采用蚁群算法对支持向量机的训练参数进行优化,可以在样本分布不均匀、样本分布未知的环境下有效识别电力离群用户。通过对某市纺织业用户的数据进行实践证明,改进的算法能够有效提高收敛速度,并能有效地识别出离群的用电用户。
中图分类号: TM76
文献标识码: A
DOI:10.16157/j.issn.0258-7998.2018.S1.068
Abstract:
Key words :

0  引言

    近年来,随着用电信息采集系统的推广,部分地区的用电数据采集成功率达到99%以上,大工业用户的96点负荷数据反映了用户的用电特征和用电习惯。在同一个行业里,往往存在几种相同的、相似的用电特性,而一小部分与其他企业用电习惯不同的用户,称之为离群点,离群用户往往意味着用电异常、疑似窃电等情况,因此对于电力离群用户的识别具有重要的业务意义。针对无序数据的离群点检测方法通常包括基于统计的方法、基于距离的方法、基于密度的方法和基于偏离的方法。针对时间序列间的离群点检测方法,近年来的主要研究包括:文献[2]提出了一种基于小波密度估计的数据流离群点检测;文献[3]提出了一种基于粗糙集理论的序列离群点检测方法,利用粗糙集理论中的知识熵和属性重要性等概念来构建3种类型的序列,并通过分析序列中元素的变化情况来检测离群点。在电力领域的离群点检测研究中,文献[4]提出了一种基于集合论估计的电网状态辨识的离群点识别方法,它基于相容性的角度对离群点的性质进行分析,提出不相容离群点和相容离群点的概念,并基于状态估计和集合论估计理论分别识别两类离群点。在使用数据挖掘的技术方案中,文献[1]中NAGI J等人使用GA-SVM (Genetic Support Vector Machines)检测用电异常情况和窃电行为,GA-SVM使用C类SVM进行分类,能够取得较高的准确率,但是存在学习时间过长、需要事先对大量样本进行分类的问题。文献[5]中提出了一种基于高斯核函数改进的电力用户用电数据离群点检测方法。首先通过模糊聚类的方法将用户分类;然后提取每一类用户的用电行为特征量,采用主成分分析法对特征集进行降维;最后利用高斯核函数改进局部离群因子算法,提出高斯核密度局部离群因子。文献文献[6]提出了一种基于SVM的AMI环境下用电异常检测研究方法,使用One-Class SVM无监督机器学习架构对电力用户负荷异常进行检测,但因为未对参数进行优化,同样存在学习时间过长、容易陷入局部最优化的问题。

    本文提出了一种基于蚁群算法优化参数的One-Class SVM分类算法进行用电特征离群用户识别研究,并通过实践分析证明,该算法能够有效识别某个行业中的用电特征离群用户。

1  算法介绍

1.1  SVM简介

    支持向量机(Support Vector Machine,SVM)是VAPNIK V和CORTES C等人于20世纪90年代提出的一种分类算法,它是基于结构风险最小化原则,利用有限样本训练获取具有较高泛化能力的决策函数。根据样本集的特征,支持向量机可分为线性支持向量机和非线性支持向量机。一般情况下,实际问题中的样本是符合高斯分布的非线性样本集。本文专注于对非线性支持向量机的研究。

    设样本集为(xi,yi),i=1,2,…,n,其中n代表样本个数,xi∈Rm是样本的特征向量,yi∈{+1,-1}为样本类别。存在非线性映射x→Φ(x),可以将样本特征向量映射到另一个高维特征空间,并构造最优分类超平面:

zw-gs1-3.gif

其中C为惩罚参数,控制错分样本的惩罚程度。

    引入核函数K(xi,xj)=Φ(xi)·Φ(xj),再用拉格朗日乘子法,将上述最优化问题转化为对偶形式:

zw-gs4-5.gif

1.2  One-Class SVM算法介绍

    One-Class问题指的是在分类问题中由于异常样本较难获取而只关注正常样本,可以用One-Class SVM来解决,本文研究的电力离群用户检测即可以用此方法。在One-Class SVM算法中常用的核函数有线性核函数、多项式核函数、高斯径向基(RBF)核函数以及Sigmoid核函数等,本文采用高斯径向基核函数zw-1.2-x1.gif

    One-Class SVM的参数决定了该算法的学习能力和推广能力,对于RBF核函数的One-Class SVM来说,其参数包含惩罚参数C和核参数σ。惩罚参数C是在结构化风险和样本误差之间的折中,其值越大则允许的误差越小;核参数σ与学习样本的输入空间范围和宽度有关,样本输入空间越大,σ取值越大。

2  改进蚁群算法优化One-Class SVM参数

    One-Class SVM算法通常存在参数难以确定的问题,本文采用改进的蚁群算法对参数进行调优。蚁群算法是1992年意大利学者DORIGO M首先提出的一种源于蚂蚁觅食行为的智能仿生蚁群优化算法,该算法具有智能搜索、正反馈、全局优化、鲁棒性强等优点,本文采用蚁群算法优化One-Class SVM参数。

2.1 初始化参数

    首先初始化蚁群算法的迭代次数M、蚁群数量N、全局搜索步长lam和信息素挥发系数等参数Rho。再随机生成每只蚂蚁的初始化位置(C,σ),然后对训练集通过SVM学习得到相应的正确率模型:

     zw-gs6-7.gif

其中precission(i)代表第i只蚂蚁进行SVM训练的准确率。当准确率越大时信息素越大。

2.2  局部和全局搜索

    首先找到信息素最大的蚂蚁并保存信息素信息为T0(bestindex),根据蚂蚁的信息素大小确定每只蚂蚁的下一步转移概率:

zw-gs8.gif

    如果蚂蚁i的转移概率p(i)≥p0,则进行全局搜索。当进行局部搜索时,对蚂蚁的位置进行迭代更新,使用如下规则:记(Coldold)为迭代前的蚂蚁位置,(Cnewnew)为迭代后的蚂蚁位置,(Cbestbest)为迭代前信息素最大的蚂蚁所在的位置,则当Cold<Cbest时,Cnew=Cold+lam;否则,Cnew=Cold-lam。同理,当σoldbest时,σnewold+lam;否则,σnewold-lam。

2.3  更新信息素

    若所有的蚂蚁都完成了一次局部或全局搜索的迭代,根据蚁群算法的规则,需要对每个蚂蚁位置上的信息素进行更新,将信息素挥发因子定义为:

zw-gs9-10.gif

    利用更新后的信息素重复2.2的步骤,直至迭代次数达到设定的最大迭代次数,参数优化完成。找到信息素最大的蚂蚁,并记录下其位置(C,σ),即为One-Class SVM的最优化参数。

    本文的改进蚁群算法优化One-Class SVM的过程如图1所示。

zw-t1.gif

3  实证验证

    本文以某地市电力公司的纺织业用户的用电负荷数据为样本,通过数据选取、数据预处理,利用上述基于蚁群算法优化的改进One-Class SVM算法进行离群用户识别建模,最终通过模型输出电力离群用户。

3.1  数据选取及预处理

    本文选取某地市电力采集系统的纺织业所有用户(共计6 046个)的96点负荷数据,时间跨度为2018年2月1日至5月31日,共3个月,共计54万余条样本数据,94个维度,如表1所示。

zw-b1.gif

3.2  数据预处理

    在做大数据分析时,获取到的原始数据通常不能立即使用,需要进行相应的去重、填补缺失值、归一化处理等数据规范化操作才能使数据正常可用,本文的数据预处理包括缺失值处理、归一化处理和数据降维。

    (1)缺失值处理

    由于数据采集系统在采集的过程中可能存在断电或者其他采集异常等行为,会导致用户96点负荷数据存在缺失值,如若不处理将会对分析结果造成影响。常用的处理缺失值的方法有删除法、均值插补法、多重插补法等,本文采取的方式是均值插补法,即对每一个指标中存在的缺失值用该指标的非缺失样本均值填充。

    (2)归一化处理

    本文的目的是寻找用电曲线特征离群的用户,因此在处理数据时,需要通过归一化消除不同样本之间负荷数据的大小问题,本文按照每个样本对数据进行归一化。处理函数如下:

    zw-gs11.gif

其中x是某一样本,i是代表该样本对应的第x个变量,min(x)表示该用户这一天的最小负荷,max(x)表示该用户这一天的最大负荷。

    (3)数据降维

    本文数据采集的是96点负荷数据,维度太高对输入模型的干扰较大,因此本文将数据处理为24小时的负荷数据。

3.3  蚁群算法获取最优One-Class SVM参数

    在蚁群算法中,设置初始化参数:迭代次数M=50,蚁群数量N=20,信息素挥发系数Rho=0.1,步长lam=0.03,蚂蚁的初始化位置(C,σ)为随机生成的范围均为(0,1)。期间进行One-Class SVM训练的样本为6 046个用户的用电负荷数据。最终得到最优的(C,σ)为(0.057,0.378)。

3.4  One-Class SVM异常点检测

    本文选用的核函数为高斯径向基函数,惩罚系数和核函数分别取蚁群算法训练得到的最优参数的One-Class SVM模型对样本数据集进行异常点检测,在6 046个样本中共检测出异常点344个,正常点5 702个。对所有样本数据采用主成分分析(PCA)降至三维后,进行可视化,可得所有异常负荷点和正常负荷点的分布图,如图2所示。

zw-t2.gif

    在电量负荷曲线的表现上,离群用户与正常用户的差异很大,如图3所示。正常用户的负荷用电高峰出现在上午9点至下午17点范围内,而离群用户的负荷高峰出现在下午18点至凌晨2点这个范围内,特征差异明显,通过对识别出来的离群用户进行调研,这部分用户属于多用电量较大且对电费敏感,在晚上进行生产的用户。

zw-t3.gif

4  结论

    本文通过基于蚁群算法改进One-Class SVM模型对电力离群用户进行识别,实践证明,该改进的算法具有收敛速度快、运行效果好、能较快得到全局最优解等特点,具有良好的实践效果,能有效识别出用电特征离群的用户。

参考文献

[1] NAGI J, YAP K S, TIONG S K, et al. Detection of abnormalities and electricity theft using genetic support vector Machines[C].TENCON 2008-2008 IEEE Region 10 Conference.IEEE,2008:1-6.

[2] 刘耀宗,张宏,孟锦,等.基于小波密度估计的数据流离群点检测[J].计算机工程,2013,39(2):178-181.

[3] 江峰,杜军威,葛艳,等.基于粗糙集理论的序列离群点检测[J].电子学报,2011(2):345-350.

[4] 周宁慧,王彬,王治华,等.基于集合论估计的电网状态辨识 (四)离群点识别[J].电力系统自动化,2016,40(8):22-28,50.

[5] 孙毅,李世豪,崔灿,等.基于高斯核函数改进的电力用户用电数据离群点检测方法[J].电网技术,2018,42(5):1595-1606.

[6] 简富俊,曹敏,王磊,等.基于SVM的AMI环境下用电异常检测研[J]. 电测与仪表,2014(6):64-69.

[7] 张玲,刘波.基于残差统计的时间序列加性离群点检测算法研究[J].电子技术应用,2015,41(9):85-87,91.

[8] 孙毅,李世豪,崔灿,等.基于高斯核函数改进的电力用户用电数据离群点检测方法[J].电网技术,2018,42(5):1595-1606.

[9] 李权,周兴社.一种新的多变量时间序列数据异常检测方法[J].时间频率学报,2011,34(2):154-158.

[10] 周勇.时间序列时序关联规则挖掘研究[D].成都:西南财经大学,2008. 

[11] 苏卫星,朱云龙,胡琨元,等.基于模型的过程工业时间序列异常值检测方法[J].仪器仪表学报,2012(9):2080-2087.

[12] 皇甫堪,陈建文,楼生强.现代数字信号处理[M].北京:电子工业出版社,2003.

[13] 薛安荣,鞠时光,何伟华,等.局部离群点挖掘算法研究[J]. 计算机学报,2007(8):1455-1463.



作者信息:

张  薇1,吕  磊2,朱  敏2

(1.中国电力科学研究院有限公司,北京 100192;2.国网四川省电力公司眉山供电公司,四川 眉山 620020)

此内容为AET网站原创,未经授权禁止转载。