基于Spark的火电大数据挖掘方法与流程

文档序号:18009816发布日期:2019-06-25 23:52阅读:153来源:国知局
基于Spark的火电大数据挖掘方法与流程

本发明属于火电大数据挖掘技术领域,是一种基于spark的火电大数据挖掘方法,该方法适用于火电,风电等相关领域。



背景技术:

火电机组的数据基础良好,上世纪就可由计算机集散控制系统采集用于火电机组控制与设备状态监控的传感器数据。随着信息化的发展,火电机组的数据能够从机组dcs、plc、sis、scada、deh以及其他实时系统收集。大量现场数据可以被分散控制系统(dcs)和数据采集系统(das)实时地采集并存储到数据库中,其中300mw机组dcs的输入输出数据有4000-5000点,600mw的机组有12000点左右,不但运行参数的数据维度和采集频率非常高,而且其相关子系统和特定部件还有独立于机组dcs的数据采集系统,因此火电厂所存储的生产运行数据呈几何级数增长。这些运行数据都具有大容量、多样性、处理速度快和价值高等大数据的明显特征,根据关于大数据的定义,电厂所采集的运行数据可以被认为是大数据。

这些海量的电厂运行数据中隐含着许多对运行优化有应用价值的信息,从其中提取改善火电厂运行的信息或模式,并以此确定最佳的火电厂运行参数调整范围,为运行人员提供机组在不同工况下的最优运行方式与参数控制。数据挖掘能从电厂海量历史数据中挖掘出机组在不同工况下实际运行达到过的最优值。这些最优值相较于机组理论上的最优值,在机组实际运行中更容易达到,更具有实际意义。

很多学者都尝试使用关联规则来寻找机组运行参数之间的联系,从而挖掘出参数最优值。李建强等提出了语言值关联规则挖掘算法将模糊c-均值(fcm)算法应用于数据离散化;牛成林在模糊量化关联规则的基础上提出了改进的增量式模糊数值型关联规则挖掘算法;可是这些数据挖掘算法在处理火电大数据时,由于算法构建的频繁模式树过大,存在火电数据存储与计算的瓶颈。由于传统数据挖掘难以满足处理电厂大数据的性能需求,使用hadoop、spark等大数据技术对火电大数据进行大数据挖掘已经成为研究热点。

目前火电数据挖掘技术已经在许多方面取得一定进展,但依然存在以下几方面问题:

1.燃煤电站不仅在时间上不断存储积累火电机组的运行数据,还在空间上扩展采集设备的数据,从而获得时间与空间两个维度上不同尺度的大容量数据,火电机组数据存储于多个数据库,难以进行有效地利用和数据挖掘。这就造成了火电大数据的多源问题;

2.火电厂不同设备的参数以不同类型、不同编码与命名规则的文件形式存储,彼此之间难以互相辨识及共享参数信息,并且各个机组子系统存在不同类型的文本、图像等信息,致使其不能互为校验和参考,无法达到提高整个火电机组运行参数准确性与一致性的目的,由此造成了火电大数据的异构问题;

3.火电厂信息化程度高,数据采样点多,采样频率高。燃烧系统、汽水系统、电气系统都采集并储存海量数据,火电大数据规模大。火电机组运行过程通常由大量相互关联的变量来体现,变量之间往往存在复杂的相关性,火电大数据纬度高。从而造成数据挖掘算法存在数据存储瓶颈以及计算瓶颈。



技术实现要素:

为解决现有技术中存在的上述问题,本发明提供了一种基于spark的火电大数据挖掘方法。本发明在基于hadoop的spark计算平台上,利用hadoop集群对火电大数据进行分布式存储,并结合spark计算框架对火电大数据进行数据挖掘。本发明利用稳态工况判定、基于外部约束的工况划分以及基于spark的k-means聚类算法对火电大数据进行数据预处理。此外,本发明利用基于目标制导的数据压缩以及基于spark的fp-growth挖掘算法对火电大数据进行知识挖掘。

首先对本发明中出现的技术名词作以下说明:

稳态运行数据:是指发电厂生产过程中机组在特定工况下运行稳定性达到一定的限制条件时,由这些稳定的数据代表该机组在特定工况下的稳态运行数据。

特征属性:发电厂生成过程中所有涉及的测点名称及相应的二次计算得到的参数名称。

连续型属性:属性值为连续值的数据。例如:发电功率为200.5mw,即发电功率为连续型属性。

离散化:是指将连续型属性转换成离散值。例如:发电功率为200.5mw,离散化后为发电功率为“较高”。

运行工况:是指其由一组状态参数表示,包含环境因素、燃料特性和负荷等不可控参数及相应的机组运行参数。

置信度:是指在已知规则知识特征属性的条件下属于某一目标类的统计比例,在本发明中表示一条规则知识的可信程度。

分布式:研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行并行处理,最后把这些计算结果综合起来得到最终的结果。

关系数据库:是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。火电厂的智能设备存储数据多数使用关系数据库。

关联规则:就是在运行数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构的规则。

rdd:rdd(resilientdistributeddatasets)就是弹性分布式数据集,是分布式内存的一个抽象概念,rdd提供了一种高度受限的共享内存模型,即rdd是只读的记录分区的集合,只能通过在其他rdd执行确定的转换操作而创建,然而这些限制使得实现容错的开销很低。

hadoop:是一个由apache基金会所开发的分布式系统基础架构。

spark:是专为大规模数据处理而设计的快速通用的基于内存计算的计算引擎。

本发明具体采用如下技术方案:

一种基于spark的火电大数据挖掘方法,包括如下步骤:

步骤1:首先对火电厂历史大数据进行参数数据的清洗,包括检查数据一致性,利用邻近数据处理无效值和缺失值;

步骤2:根据协调控制系统投入自动,且重要辅机正常运行的时间节点,利用机组负荷以及主蒸汽压力两个参数在一段时间内的方差与给定机组稳态运行阈值进行比较,将小于该阈值的数据加入机组稳态运行数据集,其他数据直接剔除;

步骤3:负荷和煤质作为外部约束条件,采用基于spark的k-means算法对稳定工况数据进行工况划分。使用基于spark的k-means算法对历史大数据中的负荷和煤质系数进行聚类划分,其聚类结果形式为“煤质=某值属于煤质优”、“负荷=某值属于负荷某区间”,实现对负荷、煤质的区间划分,将不同的负荷区间以及煤质区间组合成若干的具有不同外部条件的工况区间,实现对稳态数据的工况划分,并采用基于spark的k-means算法对各参数分别进行聚类划分,实现数据离散化;

步骤4:定义火电机组性能指标参数,明确挖掘目标,包括稳定性、经济性、环保性3类指标,通过线性组合确定属性相应的权重值,确定优化目标;

步骤5:明确与优化目标有关的参数,对优化目标不相干的参数进行剔除,实现对数据空间的压缩;

步骤6:对各工况数据进行基于spark的fp-growth挖掘算法,得到各工况下强关联规则,从而得到各工况下基于优化目标的最优运行参数,并存入历史知识库。

在所述步骤1中,所述无效值和缺失值的修正采用热卡填充法,热卡填充法在完整数据集中找到一个与改缺失数据样本最相似的数据样本,然后用这个相似数据样本的值来进行填充。

在步骤2中所述特定时间段为15min。

在步骤3中所述基于spark的k-means算法将传统k-means算法与spark分布式内存计算框架相结合处理火电大数据,通过分布式计算的思维,把火电大数据分成多个计算任务,解决单机模式下火电大数据加载和计算的难题。

在步骤4中所述火电机组性能指标的线性组合为l=p1×l1+p2×l2+p3×l3,其中l为机组性能指标,l1为经济性指数,l2为环保性指数,l3为稳定运行性指数,其中参数p1、p2、p3为权重因子,且满足p1+p2+p3=1。

在步骤6中所述基于spark的fp-growth挖掘算法将原始数据集进行分组,并分配给集群中的各节点,每个节点都单独创建fp-tree,最后将各节点的fp-tree结合成整体的fp-tree。

与现有技术相比,本发明具有以下特征和有益效果:

(1)根据火电机组实际运行的特性,对火电大数据进行数据清洗、稳态工况判定,提高数据质量,并排除动态不稳定工况数据对数据挖掘结果的影响,能有效体现机组实际运行状态。对稳态数据进行基于外部约束的工况划分,实现机组实际运行工况的精细划分,能够全面精确的挖掘出符合实际运行工况的参数最优值。

(2)根据优化目标进行参数筛选,压缩数据空间,通过设置经济指标、环境指标和稳定运行指标的权值,满足用户不同的优化需求,明确优化目标。

(3)引入分布式存储计算的理念,在基于hadoop的spark大数据计算平台上,运用基于spark的k-means算法和基于spark的fp-growth算法对火电大数据进行大数据处理,提高处理火电大数据的能力,解决传统方法难以有效地处理火电大数据的问题,突破传统方法的计算瓶颈。

(4)搭建基于hadoop的spark大数据计算平台,提供了一种解决火电大数据多源异构数据的采集、存储以及计算问题的技术方案。

附图说明

图1为本发明一种基于spark的火电大数据挖掘方法架构图。

图2为本发明一种基于spark的火电大数据挖掘方法流程图。

图3为本发明的基于spark的k-means聚类算法流程图。

图4为本发明的基于spark的fp-growth数据挖掘算法流程图。

具体实施方式

下面结合附图对本发明的技术方案做进一步详细说明。

如图1所示,基于spark的火电大数据挖掘方法在基于hadoop的spark计算平台上进行,平台主要包括:

1.sqoop,是一个用于在hadoop和关系数据库服务器之间传输数据的工具。它用于从火电厂现有的关系数据库(如mysql,oracle)导入数据到基于hadoop的spark计算平台的hadoophdfs中,并从hdfs导出到关系数据库。

2.hdfs,被设计成适合运行在低成本的通用硬件上的分布式文件系统。hdfs是一个高度容错性的系统,适合部署在廉价的机器上。hdfs能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

3.hbase,是一个分布式的、面向列的开源数据库。hbase是一种hadoop数据库,hbase中的所有数据文件都存储在基于hadoop的spark计算平台的hadoophdfs上。

4.hive,是一种数据仓库软件,提供对存储在分布式中的大型数据集的查询和管理。提供了一系列的工具,可用来对数据进行提取/转化/加载(etl)。

5.spark,是一个高效的分布式计算系统。spark是一个用来实现快速而通用的集群计算的平台。扩展了广泛使用的mapreduce计算模型,而且高效地支持更多的计算模式,包括交互式查询和流处理。在处理大规模数据集的时候,速度是非常重要的。spark的一个重要特点就是能够在内存中计算,因而更快。

如图2所示,一种基于spark的火电大数据挖掘方法主要流程,包括如下步骤:

第一,首先在大数据平台上需要使用hive对火电厂历史运行数据集进行数据清洗,真实的数据是不完整的、有噪声的、模糊的数据,无法直接进行数据挖掘。为了提高数据挖掘的结果的有效性和正确性,降低数据挖掘所需要的时间,需要进行数据预处理。数据预处理包含多方面的内容包括检查数据的一致性,无效值和缺失值等,平滑数据集;无效值和缺失值的修正采用热卡填充法,在完整数据集中找到一个与改缺失数据样本最相似的数据样本,然后用这个相似数据样本的值来进行填充。

a)空缺数据的处理

(1)忽略该记录。如果某条记录中的空缺值比例较小且重要性较低时,这种方法的性能比较好。

(2)使用时间顺序上的邻近数据填补空缺值。如果某属性值缺失比例比较小,且重要性较高时,可采用此方法。

(3)使用最可能的值填补空缺值。使用决策树、回归分析或是贝叶斯推理等方法预测某属性空缺值的最可能的取值。该方法利用了当前数据所含的信息来帮助预测空缺值的最可能的取值。

b)判断和剔除异常值

在处理火电大数据的时候,我们常常会遇到个别数据值偏离预期或大量统计数据值结果的情况,如果我们把这些数据值和正常数据值放在一起进行统计,可能会影响数据挖掘的正确性。这里重要的问题是如何判断异常值,然后将其剔除。判断和剔除异常值是数据预处理中的一项重要任务。根据集体属性特征选取异常数据检测的常用方法有:

(1)基于偏差。首先规定样本集的基本属性特征,所有不符合这些特征的样本都是异常样本。

(2)离群点判断。在数据挖掘中,通过聚类分析检测离群点,那些位于集合之外的数据对象被视为离群点,即异常数据。

第二,电厂机组的特性研究需要获得稳态工况下的历史数据。由于电厂机组负荷变化导致历史数据库存在一定量的非稳态运行数据。本方法根据协调控制系统投入自动,且重要辅机正常运行的时间节点,利用机组负荷以及主蒸汽压力两个参数在特定时间段内的方差与给定机组稳态运行阈值进行比较,将小于该阈值的数据加入机组稳态运行数据集,剩余其他数据直接剔除;特定时间段一般为15min。

第三,火电机组实际运行中存在一些外部条件,不同外界条件造成机组运行的工况不同。不同工况下,火电机组运行参数的最优值之间的差异很大。如果不对机组运行工况进行区分,而盲目进行运行指导,很难取得满意的效果。负荷和煤质都是影响机组运行的重要外部条件。本发明把负荷和煤质作为外部约束条件,在大数据平台上采用基于spark的k-means算法对稳定工况数据进行工况划分。由于历史数据中记录的煤质化验数据延时很大,不能实时反映煤质状况,因此定义相对煤质系数为负荷/总燃料量,该煤质系数能一定程度上反映煤的做功能力。使用基于spark的k-means算法对历史大数据中的负荷和煤质系数进行聚类划分,其聚类结果形式为“煤质=某值属于煤质优”、“负荷=某值属于负荷某区间”,实现对负荷、煤质的区间划分。本发明将不同的负荷区间以及煤质区间组合成若干的具有不同外部条件的工况区间,实现对稳态数据的工况划分,并在大数据平台上采用基于spark的k-means算法对各参数分别进行聚类划分,实现数据离散化;图3是基于spark的k-means聚类算法的流程图,基于spark的k-means算法的具体步骤如下:

step1.从hdfs中提取火电大数据并创建rdd。通过创建rdd,将数据向量化并cache入缓存。

step2.随机生成k个初始聚类中心。

step3.使用“map”的思想,在各个工作节点计算各数据对象到聚类中心的距离并归类。

step4.通过“reduce”的思想,将各工种节点的输出结果合并,得到全局结果并更新聚类中心。

step5.判定是否聚类收敛或者到达迭代次数,否则重复第3、4步。

step6.结束。

第四,定义火电机组性能指标参数,包括稳定性、经济性、环保性3类指标,通过线性组合确定目标属性相应的权重值。所述火电机组性能指标的线性组合为l=p1×l1+p2×l2+p3×l3,其中l为机组性能指标,l1为经济性指数,l2为环保性指数,l3为稳定运行性指数,其中参数p1、p2、p3为权重因子,且满足p1+p2+p3=1。

第五,明确与经济性、环保性以及稳定运行关系密切的参数。与经济性关系密切的参数主要有主汽压力、主汽流量和空预器入口烟温等,与环保性关系密切的参数主要有氮氧化物、二氧化硫等。设置经济指标、环境指标和稳定运行指标的权值,确定优化目标;明确与优化目标有关的参数,对优化目标不相干的参数进行剔除,实现对数据空间的压缩;

第六,在基于hadoop的spark计算平台上,设置最小支持度和最小置信度,使用基于spark的fp-growth算法对各工况离散数据进行挖掘,并设置评价标准为优、良、中、及格以及差。图4为基于spark的fp-growth数据挖掘算法流程图,具体步骤如下:

step1.从hdfs中提取各工况下经过数据预处理的火电大数据并创建rdd。通过创建rdd,将数据向量化并cache入缓存,将存储火电事务数据集的rdd记为trans。

step2.并行计算频繁项的支持度。通过第一组map和reduce并行计算每个项的支持度,并根据支持度对项集进行降序排列,删除不满足最小支持度的项,把排列好的列表记为f_list。

step3.数据分组。首先,根据f_list将各事务数据集中不满足最小支持度的项删除,并将各事务内的项按f_list的顺序重新排列。然后根据pfp算法分组策略将f_list分成q组,其中分组策略是将f_list列表中(k*g_size+1)到(k+1)*g_size(k为0~q-1之间的整数)之间的项划分到第k组[22]。根据分组结果,将各事务的数据进行分组,结果记为g_list,存储格式[13]为:

<组号group_id,list(<事务1划分到该组的部分,事务1的支持度>,……,<事务n划分到该组的部分,事务n的支持度>)

step4.并行挖掘频繁项集。各工作节点通过第二组map和reduce并行计算完成各组的挖掘任务。首先mapper读取g_list,完成分组任务,根据g_list将各事务划分到各组。各工作节点独自完成自己节点上的挖掘任务,每个组建立本组的fp-tree,并对本组的fp-tree进行挖掘,得到本组的频繁模式。

step5.聚合。通过第三组map和reduce,将第4步中得到的各组频繁模式聚合一起,得到各工况下参数之间的强关联规则的全局结果。

使用基于spark的fp-growth挖掘算法对各工况数据进行关联规则挖掘,得到各工况下强关联规则,从而得到各工况下基于优化目标的最优运行参数,并存入历史知识库。

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