登录
首页案例分享电力窃漏电用户识别案例
电力窃漏电用户识别案例
2021-03-08
收藏
一、案例综述
案例编号:
102003

案例名称:
电力、热力、燃气及水生产和供应业——电力窃漏电用户识别

作者姓名(或单位、或来源):
朱江

案例所属行业:
D442 电力供应

案例所用软件:
R

案例包含知识点:
拉格朗日插补,神经网络,CART决策树,ROC曲线

案例描述:
目标:防窃漏电,找出可能存在窃漏电的可疑用户做进一步处理
传统方法:定期巡检、定期校验电表、用户举报窃电
缺点:对人依赖性强,目标不明确,工作量大

目前常用方法:利用计量异常报警功能,电能量数据查询功能,进行用户用电情况的在线监督。采集的信息主要有:电量异常、负荷异常、终端报警、主站报警、线损异常等。根据报警事件发生前后客户计量点有关的数据情况(电流、电压、负荷),构建基于指标加权的用电异常分析模型。


缺点:终端误报漏报过多,以致无法高效高速定位。指标权重拍脑门,需要专家的知识和经验,主观性可能会导致不准确。

分析过程:
要剔除不可能存在漏电的大用户,如银行、税务、学校、工商。用电负荷随着时间的变化才有价值,而终端报警存在误报和漏报,而这些数据都能够帮助总结用户窃漏电的行为规律,即通过预处理提炼出描述用户窃漏电特征的相关指标,最终得到建模使用的专家样本数据集,然后开始建模等工作。主要步骤如下:

1.从电力计量自动化系统、营销系统有选择性地抽取部分大用户用电负荷、终端报警及违约窃电处罚信息等原始数据。
2.剔除白名单用户,即不可能存在漏电的用户。描述性和探索性分析正常用户和窃漏电用户的用电特征
3.处理样本缺失值,通过经验构建特征指标,形成专家数据集
4.构建窃漏电用户识别模型
5.模型落地,在线监测用户用电负荷及终端报警,调用模型实现实时诊断。
6.通过对诊断结果的评估,优化或者重构模型

数据预处理:
剔除白名单用户,这里把这些用户归为非居民类别
剔除节假日用电数据,根据业务经验节假日用电量明显偏低(大部分用户为企业用户)

如果直接将缺失值剔除,会严重影响供出电量的计算结果,从而导致日线损率误差很大,故本案例采用拉格朗日插值法对缺失值填补。
拉格朗日插补可以选取缺失值前后5个数据或者和邻近缺失值之间的所有数据,组成一组,使用如下公式:

其中x为缺失值对应的序号,x_i为非缺失值y_i的序号,对全部缺失值依次填补,直到不存在缺失值。

3.数据变换
需要通过新的评价指标来表征窃漏电用户的行为规律,故根据业务经验和专业理论引出三个评价指标:电量趋势下降指标、线损指标、告警类指标
电量趋势下降指标:取统计当天及前后五天共11天的数据,通过线性拟合计算斜率,如果当天的斜率小于前一天的,则计数加1,可以据此计算敏感时期内的总计数。
线损指标:线损率具体查看相关电学知识,取当天及前五天线损均值,当天及后五天线损均值比较,如果增长率大于1%,则记为1,否则为0
告警类指标:取自终端报警次数总和

本案例共包含五个知识点:
1.拉格朗日插值法:使用拉格朗日填补法填补缺失值
2.数据清洗及转换:通过作图在时间维度上查看前后5天内的电量均值变化趋势;计算电量下降趋势指标;计算线损指标
3.数据划分:划分训练样本和测试样本,方便比对模型的有效性
4.神经网络建模:运用较为简单的BP神经网络建立分类模型
5.构建CART决策树模型
6.模型评价:利用ROC曲线在测试集上评价模型

案例执行形式:
单人上机

二、案例知识点:
知识点1:
知识点名称:拉格朗日插值法

知识点所属工作角色:

知识点背景:
处理缺失值的一种插补方式

知识点描述
采用拉格朗日多项式插补公式对缺失值进行插补

知识点关键词:
拉格朗日多项式 缺失值插补

知识点所用软件:
Rstudio

操作目的:
能够自主编程实现拉格朗日插补

知识点素材(包括数据):
missing_data.xls

操作步骤:
1.启动Rstudio
2.使用setwd()函数设置工作目录,将数据文件拷贝至工作目录下
3.加载xlsx包,读取素材文件,.xls格式
4.根据拉格朗日插值法创建拉格朗日插值函数

5.创建自动替换数据框缺失值的函数,找到每个缺失值,并且读取每个缺失值前后五个或者距离上个缺失值之间的数值,采用之前创建的拉格朗日插值函数填补。

6.对读取到的数据应用上一步的函数处理,并且保存
 
处理前后对比如下:
   
操作结果:
数据前后对比如上图
将R代码文件保存为newdata.csv以备后续使用。

知识点小结:
拉格朗日插值法目前现成的函数都是用于拟合多项式,插值填补的话可以自己写函数并且取自己觉得合适的前后数据处理

知识点2:
知识点名称:数据清洗及转换

知识点所属工作角色:
数据清洗及转换

知识点背景:
通过业务逻辑按照条件筛选数据,关键点在于按照条件筛选,以及理解业务逻辑,进而计算需要的指标

知识点描述
使用阶跃函数按条件筛选数据
创建函数

知识点关键词:
筛选变量 创建函数

知识点所用软件:
Rstudio

操作目的:
筛选数据
按照业务逻辑生成新指标

知识点素材(包括数据):
用户日用电量.xls

操作步骤:
1.读取数据:用户日用电量.xls
2.进行简单的数据清洗,读取行数
3.通过循环,用自建函数筛选观测,计算日均电量,多日电量斜率,日均线损

4.作日均电量的点线图,注意图形参数的调整,加入回归线,以及原始的电量数据
5.将图形输出到外部设备上,即输出mat.png文件

 

得到图形如上所示
使用上上步计算得到的数据计算电量趋势下降指标、线损指标、并且结合对应的时间以区分
将得到的指标放在数据框内,并且输出到文件pro.csv中
 
得到的文件部分内容如下


操作结果:
生成图形观察日均电量相对于原始电量的变化趋势,从而判断用户是否为可以的窃漏电用户
生成新指标,并且输出新指标的表格

知识点小结:
主要涉及到通过阶跃函数按照业务逻辑筛选观测,按照业务逻辑构建新指标,输出新指标的趋势图以及统计表格

知识点3:
知识点名称:数据划分

知识点所属工作角色:
数据划分

知识点背景:
数据划分是在进行数据清洗和描述性分析后,在建模之前必备的一步,由于很多训练模型很容易出现过拟合的状况,所以需要通过独立于训练数据的测试数据来观察模型实际应用在新数据上的效果。

知识点描述
数据划分

知识点关键词:
数据划分 

知识点所用软件:
Rstudio

操作目的:
对清洗后的数据进行数据划分

知识点素材(包括数据):
model.csv

操作步骤:
1.读取数据,创建符合七三比例的随机数

2.根据创建的随机数生成训练集和测试集,并且写入文件
 
操作结果:
生成两个数据文件,训练数据和测试数据

知识点小结:
本知识点只是对数据进行了简单的分割,分成训练数据和测试数据,有兴趣的同学可以进一步使用交叉验证进行进一步的模型选择

知识点4:
知识点名称:神经网络建模

知识点所属工作角色:
数据挖掘建模

知识点背景:
使用神经网络构建分类模型

知识点描述
神经网络建模

知识点关键词:

知识点所用软件:
Rstudio

操作目的:
熟悉使用BP神经网络建模的基本过程

知识点素材(包括数据):
traindata.csv

操作步骤:
1.读取数据,将预测列转换为因子列
 
2.使用神经网络建模

3.根据模型预测训练集,计算混淆矩阵、准确率
 
4.将预测结果与训练集横向合并并且输出到output.csv文件,将模型输出到nnetmodel.RData文件

操作结果:
得到的混淆矩阵如下

得到的准确率是94.17


知识点小结:

神经网络模型的关键在于参数的选择,而参数涉及到隐层层数,每层节点数,学习率或者衰减率,最大迭代次数等等。而R中一些常见的神经网络的包有自己的计算逻辑也需要进一步了解。

知识点5:
知识点名称:构建CART决策树模型

知识点所属工作角色:
数据挖掘建模

知识点背景:
使用CART决策树构建分类模型

知识点描述
CART决策树

知识点关键词:
CART决策树

知识点所用软件:
Rstudio

操作目的:
熟悉使用cart决策树建模的基本过程

知识点素材(包括数据):
traindata.csv

操作步骤:
1.读取数据,将预测列转换为因子列

2.使用cart决策树建模,总结模型并且画出决策树

 

3.根据模型预测训练集,计算混淆矩阵、准确率

4.将预测结果与训练集横向合并并且输出到output1.csv文件,将模型输出到treemodel.RData文件

操作结果:
得到的混淆矩阵如下
 
得到的准确率是92.72

知识点小结:
决策树只能做比较简单的分类,复杂的分类在精确度要求高的时候需要用到随机森林

知识点6:
知识点名称:模型评价

知识点所属工作角色:
模型评价

知识点背景:
模型评价:利用ROC曲线在测试集上评价模型

知识点描述
模型评价

知识点关键词:
ROC曲线

知识点所用软件:
Rstudio

操作目的:
熟悉使用ROC曲线评价模型

知识点素材(包括数据):
testdata.csv nnetmodel.RData treemodel.RData

操作步骤:
1.读取数据,读取两个模型数据

2.在测试数据集上绘制神经网络模型的ROC曲线

 

3.在测试数据集上绘制决策树的ROC曲线

 

操作结果:
得到的ROC曲线如前所示,可见神经网络ROC曲线下的面积更大,说明神经网络分类模型的分类性能较好

知识点小结:
ROC曲线常用来在测试集上检测用于分类的模型的好坏

数据分析咨询请扫描二维码

客服在线
立即咨询