基于多周期回归树集成的大数据用户用电行为分析系统的制作方法

文档序号:15349900发布日期:2018-09-04 23:12阅读:139来源:国知局

本发明涉及电力营销大数据分析领域,具体地,涉及基于多周期回归树集成的大数据用户用电行为分析系统。



背景技术:

从2009年开始,国网公司提出建设信息化、自动化、数字化、互动化的统一坚强智能电网,涉及了发电、输电、变电、配电、用电和调度六个生产环节。其中配用电部分,随着通信技术、传感器技术、智能终端技术的发展,对更多的用户行为数据实现了远程了高频度的采集。目前国网公司统推的用户用电采集系统已经在多数省份实现了用户日冻结电量(包括峰平谷用电量)、日用电量曲线、功率曲线、电流曲线、电压曲线等众多纬度的数据实时采集功能。通过这些数据对用户用电行为进行分析,一方面可以对电网的安全稳定调度和运行提供数据支撑,另一方面在电力改革后也可以用来提高对用电客户的优质化服务,提升公司效益。由此可见用户用电行为分析对提升智能电网的智能化意义重大。但基于目前的用电采集系统进行海量用户用电行为数据分析面临着以下困难:

1、原有数据库设计无法满足性能需求。目前用电采集系统中数据库设计及系统功能的设计方式是以存储数据和常规用电数据统计功能为主,再加上该系统主要是服务于电力生产,因此无法在系统上直接进行大规模的数据分析。以四川省电力公司为例,目前四川公司投入约2200万台智能终端表计用于数据采集,因此每一天每一个采集信息相关的数据库表就会新增2200万条数据,从2013年开始使用新用采系统后,平均每一张用电数据采集相关的数据表已经存储了300亿条以上的数据,总共有接近pb级别的数据存储。由于其基于oracle的数据库设计的初衷仅是为了满足功能需求,所以对用电采集系统中进行跨天的历史数据关联查询已经需要数十分钟的响应时间,而且会对常规业务功能造成极大的影响。

2、原有数据模型设计过于复杂,且数据导入量巨大,即使使用普通分布式计算框架其效率也无法满足需求。如果采用分布式计算框架提高运算性能,首先需要将原有的oracle数据库内容进行导入,如果使用sqoop工具进行数据导入,如何选取数据库查询语句也极为重要。根据实际经验在跨越5天以上的数据内容导入会有极大的概率无法得到oracle端的响应。同时,原有数据库模型的设计过于复杂,记录了大量冗余或者和用户行为无关的数据,即使在分布式计算框架下,像获取一个用户所有的历史用电信息(通过select*from…whereid=“”),或者通过spark的filter函数,在一个中小规模的大数据平台(10台4路服务器)上也需要15分钟左右的运算时间,如果跨表联合查询,则需要的时间更多。因此必须重新设计数据模型,以为用户用电行为分析服务。

3、用户用电数据质量较低,传统的用电分析里,针对数据的缺失,异常值处理,主要通过均值填充、线性回归等方法填写连续性数值,对离散型数值主要通过逻辑回归进行填充。这类数值填充方法主要针对单一的数据特征进行建模,且模型的表达能力是线性的,这就导致了1)模型表达能力不足,2)没有考虑到其他数据特征的影响。而在用户用电分析领域,用户的不同特征存在着联系,而这些联系对缺失值填充、异常值检测、甚至用户用电行为分析都有着重要作用。因此,如果在数据预处理过程中无法合理的解决缺失值和异常值问题,将会对后续的用户用电行为分析产生影响,导致结果存在严重偏差。

4.随着智能电网的发展,对用电负荷预测等业务越发重要,对预测精度的要求也不断提高。而预测的基础是对用户用电应为的分析,随着智能电网采集数据的暴增,传统的预测和分析算法无法达到高效精确的预测,并且较少的和外部数据进行关联,因此迫切需要一种新的用电行为分析算法。

综上所述,本申请发明人在实现本申请发明技术方案的过程中,发现上述技术至少存在如下技术问题:

在现有技术中,现有的用户用电行为分析存在难度大,难于实现,分析质量和准确性较差的技术问题。



技术实现要素:

本发明提供了基于多周期回归树集成的大数据用户用电行为分析系统,解决了现有的用户用电行为分析存在难度大,难于实现,分析质量和准确性较差的技术问题,实现了对用户用电行为的分析,易于实现,且分析质量和准确性较高的技术效果。

为实现上述发明目的,本申请提供了基于多周期回归树集成的大数据用户用电行为分析系统,所述系统包括:

数据抽取模块,用于从电网用电采集系统中并行抽取相关的用电行为数据,并存储在hdfs文件系统中;

转换模块,用于基于spark计算引擎的数据模型转化算法将hdfs文件系统中的原始数据模型转化为优化后的数据模型;

数据清洗模块,用于将优化后的数据模型中的异常数据进行数据清洗;

数据分析模块,用于对清洗处理后的用户用电行为数据进行大数据分析。

进一步的,用户用电行为数据进行大数据分析,包括:

通过关联分析,选择出并计算出与用户用电行为相关度符合要求的若干数据特征;抽取气象历史数据;得到多种用户用电特征模型;通过以上用电特征模型训练出对应的回归树;将所有回归树的输出集联,构造多周期回归树;基于多周期回归树对用户的用电量进行预测,以及对历史数据中的缺失值进行填补。

进一步的,数据抽取模块具体用于从电网用电采集系统中采用并行方式,以天为单位抽取日测量点能示值曲线表和测量点日冻结电量示值,通过sqoop2执行sql语句导入本地hadoop集群的hdfs上,抽取之后数据格式为:n张以日期为表名,以用户计量点id作为唯一标示,包括当日冻结电量,尖峰平谷4个时间段的电量的表;商业用户除了日冻结电量外,还抽取电能示值曲线模型,包含每天每一个用户id,96个计量点的用户数据。

进一步的,所述系统还包括数据导入任务分配器,用于sqoop任务在执行的时,对数据导入任务进行分配。

进一步的,数据清洗模块具体用于:根据用电数据的数据异常模式,通过py_spark模块,基于python的pandas和numpy数值分析包,实现python代码在spark分布式计算引擎上完成并行化数据清洗。

进一步的,数据清洗步骤包括:

逐条统计每个用户计量点id中电量缺失的总天数,缺失率大于30%的数据直接剔除;

逐条判断每个用户计量点id中用电量历史n天的用电量数据是否为递增,若出现非递增的数据,则标记为nan;

逐条判断每个用户计量点id中用电量历史n天的用电量数据,是否出现陡增和陡降的数据,判断标准为是否超过该用户电压等级下一天可能的最大用电量,若存在则标记为nan;

对不同电压等级的用户分别聚类分析,剔除同一电压等级下中心偏离距离超过阈值的用户。

进一步的,转换模块为重新设计为用电行为分析优化的数据模型,并通过spark计算引擎批量将原始数据模型转化成新数据模型,包括以下模型:

用户日冻结电量模型,包括每一用户每一天的冻结电量;

用户日用电电量模型,包括每一用户每一天使用的电量;

用户周用电量模型,包括用户每一周使用的电量;

用户月用电模型,包括用户每一月使用的电量;

用户季用电模型,包括用户每一季度使用的电量;

用户年用电模型,包括用户每一年使用的电量。

进一步的,若干数据特征包括:峰时耗电率、谷时耗电率、平段耗电率、是否周日、昨日用电量、上周同期用电量、上月同期用电量、日96点用电曲线、是否节假日。

进一步的,气象历史数据包括:最高气温、最低气温、降雨量。

进一步的,用户用电特征模型包括:用户日用电特征模型、用户周用电特征模型、用户休息日用电特征模型、用户工作日用电特征模型、用户周用电特征模型、用户月用电特征模型、用户年用电特征模型、用户春节用电特征模型。

本申请提供的一个或多个技术方案,至少具有如下技术效果或优点:

通过并行化对oracle数据库的数据进行抽取,并采用主动分片的方式,按日抽取用电采集系统中的电量数据,极大的避免了全量抽取或者数据库同步过程中出现了各种连接中段、无响应的问题,提高了数据抽取的成功率和效率。

通过并行化基于spark计算引擎的数据模型转化算法,避免了通过sql语句进行数据操作、查询效率低下的问题,高效的完成了原始数据模型的装换,使得后续数据清洗和数据分析模块可以更加高效的进行分析计算。

通过回归树对缺失数据进行补全,解决了传统数据补全方法补全结果误差较大的问题。与此同时,为了学习用电用户在不同阶段的用电习惯,本申请采用多周期回归树集成的方法(regressiontreebasedensemblemethod)根据用户行为和时间等信息更为准确的填补缺失值。

根据回归树学习出的用户用电模型对数据进行异常检测,解决了一些传统的数据处理过程中根据规则和人工判断异常数据的低效、不准确等问题。同时,并采用并行化计算引擎高效的完成了数据清洗任务,提高了效率。

通过多维度,内外部数据结合的方式进行用户用电行为分析,对单个用户使用多周期回归树集成的方法(regressiontreebasedensemblemethod)学习用户用电行为模型。并有一定的在线学习能力,能够根据当前用户用电特征更新模型的参数。同时,基于协同过滤的思想,本申请对用户进行关联分析,从而寻找出用电行为相似的用户、用电模式存在关联的用户,进而能够对用户用电行为进行分析、对异常用电行为进行预测、预警。

附图说明

此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定;

图1是本申请中数据导入任务分配示意图;

图2是本申请中井下取样装置的结构示意图。

具体实施方式

本发明提供了基于多周期回归树集成的大数据用户用电行为分析系统,解决了现有的用户用电行为分析存在难度大,难于实现,分析质量和准确性较差的技术问题,实现了对用户用电行为的分析,易于实现,且分析质量和准确性较高的技术效果。

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在相互不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述范围内的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

本发明所采用的技术方案主要是:

数据抽取模块:从电网用电采集系统中采用并行方式,以天为单位抽取日测量点能示值曲线表(e_mp_read_curve)和测量点日冻结电量示值(e_mp_day_read),通过sqoop2执行sql语句导入本地hadoop集群的hdfs上,抽取之后数据格式为(假设n为用采数据库中开始记录用电量数据的总天数):n张以日期为表名,以用户计量点id作为唯一标示(主键),包括当日冻结电量,尖峰平谷4个时间段的电量的表(尖峰时段7、8、9三个月为每日18:00-21:00点;高峰时段:8:00-11:00点和18:00-23:00点;平时段为:7:00-8:00点;11:00-18:00点;低谷时段:23:00-7:00点)。数据抽取后的模型为表1所示。

表1

商业用户除了日冻结电量外,还可以抽取电能示值曲线模型,包含每天每一个用户id,96(一天24小时,每15分钟计量一次)个计量点的用户数据如表2所示。

表2

由于sqoop任务在执行的时候会分解为mapreduce任务分解、mapreduce任务执行、远程数据库数据传输、数据本地重新导入hive等步骤,为线性任务,一次任务完成时间较长,在网络带宽一定的情况下,只有远程数据库数据传输这一步骤并行化时间效率提升较低外,其它几个步骤全部可以并行完成。数据导入模块实现了一个数据导入任务分配器,如图1所示。

数据清洗模块:根据用电数据特有的数据异常模式,通过py_spark模块,基于python的pandas和numpy数值分析包,实现了python代码在spark分布式计算引擎上完成并行化数据清洗。包括如下4个步骤:

逐条统计每个用户计量点id中电量缺失的总天数,缺失率大于30%的数据直接剔除。

逐条判断每个用户计量点id中用电量历史n天的用电量数据是否为递增,若出现非递增的数据,则标记为nan。

逐条判断每个用户计量点id中用电量历史n天的用电量数据,是否出现陡增和陡降的数据,判断标准为是否超过该用户电压等级下一天可能的最大用电量,若存在则标记为nan。

对不同电压等级的用户分别聚类分析,剔除同一电压等级下中心偏离距离较大的用户。

转换模快:重新设计为用电行为分析优化的数据模型,并通过spark计算引擎批量将原始数据模型转化成新数据模型,主要包括以下模型:

用户日冻结电量模型,包含每一用户每一天的冻结电量

用户日用电电量模型,包含每一用户每一天使用的电量

用户周用电量模型,包含用户每一周使用的电量

用户月用电模型,包含用户每一月使用的电量

用户季用电模型,包含用户每一季度使用的电量

用户年用电模型,包含用户每一年使用的电量

数据分析模块:通过关联分析以及行业经验选,择出并计算出与用户用电行为相关度较高的若干数据特征,如峰时耗电率、谷时耗电率、平段耗电率、是否周日、昨日用电量、上周同期用电量、上月同期用电量、日96点用电曲线(如果存在96点曲线数据)、是否节假日等,再抽取气象历史数据,如最高气温、最低气温、降雨量等。得到是用户日用电特征模型、用户周用电特征模型、用户休息日用电特征模型、用户工作日用电特征模型、用户周用电特征模型、用户月用电特征模型、用户年用电特征模型、用户春节用电特征模型等。通过以上用电特征模型训练出对应的回归树,包括日回归树、周回归树、工作日回归树。将所有回归树的输出用boosting的方式集联,即构造出了多周期回归树。用以对用户的用电量进行预测,以及对历史数据中的缺失值进行填补。

传统的用电分析里,针对数据的缺失,异常值处理,主要通过均值填充、线性回归等方法填写连续性数值,对离散型数值主要通过逻辑回归进行填充。这类数值填充方法主要针对单一的数据特征进行建模,且模型的表达能力是线性的,这就导致了:1)模型表达能力不足,2)没有考虑到其他数据特征的影响。而在用户用电分析领域,用户的不同特征存在着联系,而这些联系对缺失值填充、异常值检测、甚至用户用电行为分析都有着重要作用。因此,如果在数据预处理过程中无法合理的解决缺失值和异常值问题,将会对后续的用户用电行为分析产生影响,导致结果存在严重偏差。为了解决这些问题,本发明采用回归树为数据处理的核心模型。在多周期下建立多棵回归树,最后通过集成方法(ensemble)对多棵回归树的输出结果进行集联,构建用户用电行为模型。集成回归树有着以下优势:1)能够依据建树算法自动的依次寻找影响用户用电行为最大的特征,免去使用者需要进行特征关联性分析的过程。2)相比线性模型,回归树有着非线性表示。3)通过集成方法将多周期回归树集联,能够给出更准确的用户用电量分析结果。

回归树的数据输入为:日冻结电量就是每天一个用户的所有电量,所以这个值是递增的。同时也记录了尖峰平谷四个费率下的用电量,也就是峰谷电价。峰:9:00—12:00;17:00—22:00,计8h。平:8:00—9:00;12:00—17:00;22:00—23:00,计7h。谷:23:00—次日8:00,计9h。夏季(7,8月)18:00—21:00为尖。

可以建立日冻结电量表,分别为id,数据日期,采集时间,日总电量,尖,峰,平,谷时段电量,其它数据可以忽略。

日测量点总电能示值曲线表结构为:id,数据日期,采集时间,连续96个字段(每15分钟记一次用电量),目前只有大型商业用户采集了96点数据。普通居民用户只有日冻结电量。

数据转换后的模型如表3所示。

表3

在用户用电过程中,存在着若干明显的强周期行为。本发明设定了以下几种常规周期:日,工作日(星期一~星期五),周末(星期六~星期日),周(星期一~星期日),月,季,年。同时,还考虑到国家法定节假日带来的影响,针对节假日放假时间设定了若干节假日周期。然后,我们针对每个周期,针对每个用户单独训练一颗回归树,回归树的输出是该周期的用电量。再通过回归树集联的方式得出针对需要分析的周期用户用电量的最终输出结果。

集成回归树模型举例如图2所示。

图例表示为针对某用户春节用电的用电量预测,可以见得,集成回归树模型在进行用电预测时,考虑到了多周期,甚至国家法定假日对用电带来的影响,计算结果是针对多周期因素综合的结果。单独的多周期回归树由系统进行在线维护更新。根据周期的不同,更新频率也有所不一。集成方法包含线性集联和神经网络集联两种形式,方法的参数需根据历史用电数据训练得到。建树算法如下所示:

输入:训练数据集d={(x1,y1),(x2,y2),...,(xn,yn)},xn为每一个用户用电模型的特征向量,yn为用电量的值。

输出:回归树y;

y为连续变量,将输入划分为m个区域(r1,r2,r3,…,rm),每个区域的输出值分别为c1,c2,c3,…,cm

针对训练数据集中的特征空间,递归将每个维度划分为两个区域r1,r2,且决定每个区域的输出值,构建二叉决策树:

1.选择最优切分特征j与切分点s,求解:

遍历特征j,对固定的切分特征j扫描切分点s;

其中y为目标输出值(即标签),c1,c2分别为r1,r2区间内的输出最小值;

2.用选好的(j,s)对进行该特征的维度划分为两个区域,决定每个区域的输出值:

r1(j,s)={x|x(j)≤s},r2(j,s)={x|x(j)>s}

其中为所在区域的输出均值;

3.继续对两个划分好的区域执行步骤1,2,直至不能继续划分

4.最后将输出空间分为m个区域r1r2……rm,生成树:

为了防止过拟合现象,单棵回归树也可用迭代决策树(gradientboostingdecisiontree)进行替代,迭代决策树由多棵树组成,每棵树的结果累加起来作为最终的输出。由于构建回归树的过程会逐步计算特征在每个区域的取值,对某个特征的缺失值补全则可直接将寻找到目标特征在回归树中的位置,将该节点的输出取值填补至缺失位。同时,为了检查异常数据,我们也可以将数据带入回归树,根据当前数据每个特征的取值和回归树中每层节点取值的差异来判断该数据是否存在异常情况。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1