这篇博文主要是对于最近看的文章:Electricity Theft Detection in AMI Using Customers’ Consumption Patterns的一些总结整理。
文章提出了一种基于用户消费模式的策略(CPBETD)来对窃电行为进行监测,保证在监测率(detection rate)高的同时,假阳性(false positive rate)的概率尽可能的低。
策略的主要流程如下:
1.通过社区变压器的测量装置获知整个社区的用电量E
2.通过智能测量装置获知每个用户的用电量
3.如果出现非技术损失(nontechnical loss),换言之就是两个值不一致,那么就可以认定该地区的用户存在窃电行为。
4.对于该地区的每一个用户,用该用户的历史数据训练出对应于该用户的多重支持向量机(Multiclass SVM),用这个训练好的模型来判断从该用户的新电量采样值为正常还是异常。
CPBETD ALGORITHM
Training Phase
1)训练模型预测社区中的线损Etl,利用最小二乘回归以及测量装置测出来的电流和能耗值可以预估线路的电阻和非欧姆损耗,将总的能源损耗与线损做差值,该差值就是非技术损耗NTL。这种预估方法的唯一限制因素就是用于训练的数值必须是正确的,否则训练的模型将不准。我们假设,
为NTL监测的监测率与假阳性率。
2)进行数据的预处理(进行降维以及归一化)
数据向量的大小为24*N,N为每个小时电能消耗量的采样次数。通过将采样值相加的方式来进行数据降维,因为假设采样的时间间隔未知。
3)将数据转换为合适的格式,用k-means聚类算法以及列举的方法将数据分为L类,将含有很少点的类别去掉,假设L’为数据的最终类别数
4)准备数据集来训练模型,将历史数据设置为良性数据集X,异常数据集Y使用函数Y=h(X)来产生,在后面有讲,针对不同的窃电行为会有不同的函数h()。
x含有的数据为24小时中的采样值n,要求E(y)<E(x)
5)训练分类器SVM,SVM设置的种类数为L'+1
6)SVM的参数调整使得SVM的表现有所不同,ROC曲线可以用来判断SVM的表现,我们需要的是高DR和低FPR。我们先给定一个FPR,用和
来表示SVM的最好表现。参数m的计算方法如下:
m表示观察到m次异常数据之后,判断为一次窃电行为。
Application Phase
1)采样社区总用电量与每个用户的用电量,计算线损电量,如果出现以下的不等关系,就说明监测到一次NTL,即监测到一次异常情况。每次进行新的采样的时候会进行如下的比较,记录是否监测到NTL
2)每次新采样值都会进行预处理以及转换为合适的形式参与用于训练的数据库的建立
3)SVM用于确认新一天的采样值(一整天的采样值,格式大小为24*n)是异常数据还是正常数据
THEORETICAL ANALYSIS
收益函数:
qi表示该地区的用电量,qiu表示未计入使用量的用电量,T表示电价。ρ表示检测到窃电行为的可能性,e表示用于减少假阳性的投资,D表示anomaly detection test,F()表示来自于窃电行为的罚款,依据窃电量确定多少。
利润函数:
C()表示发电成本,φ表示窃电保护装置的投资。附上原流程图。
Classification Method
SVM的损失函数如下:
这个具体去看SVM的原理用法。
EVALUATIONS
使用的数据集包含5000个消费者,采样速率为半小时一次采样,采集时长为535天,假设这5000个消费者的历史数据都是正常数据。论文中人为的把采样速率降低为一小时一次采样,因此对于每个消费者的数据大小为535*24。然后基于每一天的采样值用六种函数来产生对应的异常值。
Experiment
1)一分类SVM(具体定义查其他文章)从之前的介绍说过对于每个用户,有对于用户特定的SVM
一分类SVM使用的全是正常的数据,即X中的数据(535个),采用6:1的比例分为训练集和测试集,每七天中随机选择一天作为训练集(458个),其余为测试集(77个)。同时,对于这535个正常数据,得生产他们的异常数据(535*6)作为测试集,因此测试集的大小为3287个,归一化到[-1,1],选用RBF作为SVM的核函数,用网格搜索(grid search)的方法进行核函数γ调参以及每个batch的训练点个数ν,其他参数C=50,e=0.1。不同的γ和v的组合的效果如下(这个图是根据5000个用户的实验结果画出来的):
从Fig.4可以看出用一分类的SVM的鲁棒性并不好,下限很低,不利于应用于所有的用户。
2)多分类SVM
这里先用k-means聚类算法算出良性数据集中的数据应该分为几类,再去确定SVM按照多少类来划分。
从上图可以看出当良性数据集中k=1或2时,轮廓系数足够小,此时说明聚类效果好。因此在SVM中将数据分为k+1类。训练集包括458个正常样本和2748个异常样本,为避免分类因为某类样本数据小出现偏移情况,给正常样本进行数据增强,将其的样本数提升到和异常样本数一致。调参方式和一分类SVM一致。
可以看出此时的SVM的下限提升了许多。效果比一分类会好很多。
3)这里属于测试部分,即测试实验二中的多分类SVM对于新型攻击的效果如何(因为训练集中的异常数据是按照六个函数进行生成的,一定还存在其他的生产办法)
从曲线图来看,平均的曲线依然效果不错,下限也比一分类的SVM高很多,这样的多分类SVM具有很好的鲁棒性。
论文后面还讲了一部分采样率对于模型表现的影响,这部分完全就是对数据的预处理,然后重新走一遍实验流程罢了,就不摆上来记录结果了。结论就是不是采样率越高越好,并且采样率过高,可能课涉及到侵犯隐私的问题。
DIScussion
用户的正常用电也有可能出现不正常的因素,
1.比如开一个派对之类的,它是正常的用电数据,但是和历史数据相比不正常。在这种情况下因为发出警报需要NTL被监测到同时SVM将其分类为异常数据,NTL监测不到的时候,照样不会发出警报,这样可以降低假阳性。
2.可能在开派对的时候,社区内的其他人存在窃电行为。这时候开派对的用户容易被定为怀疑对象。因此设定的FPR和异常次数m起了作用,只有该用户的用电异常次数超过m次,系统才会发出警报。而派对不可能会持续很多天,这样可以降低误报率。
3.用户的用电习惯可能会因为季节性或者是工作日与非工作日而有所不同,因此在进行SVM训练之前进行k-means聚类算法进行良性数据集的分类,从而降低SVM对于不寻常的正常数据的误报。
4.可能收集回来的数据存在一些窃电数据,因此需要在数据收集的时候加大窃电监管,保证数据的可靠性。
5.同时这个模型还可以很好的应对渗透攻击(contamination attack),也即NTL被监测到,但是SVM并不会察觉到异常数据。这种情况下就可以观察用户的用电曲线,通过用电曲线长期的下降速率来确定是否是渗透攻击。
6.模型唯一解决不了的问题就是用户直接将电线接入外部的供电网,这样的话历史数据上看不出来异常,并且SVM也无法检测出异常数据。