利用分形计算针对偷盗燃气行为的数据挖掘方法
技术领域
本发明涉及燃气数据处理
技术领域
,特别涉及一种利用分形计算针对偷盗燃气行为的数据挖掘方法。背景技术
燃气的广泛使用给社会生产、人民生活带来了极大的便利,于此同时,各类偷盗气现象层出不穷,不仅给燃气公司造成了巨大的经济损失,也给社会安全埋下了隐患。由于偷盗气行为的隐蔽性和偷盗气方式的不断变化,传统依靠巡检、稽查等方法已经很难及时高效的进行排查。比如在北方的采暖季节时,燃气使用量大,由偷盗行为造成的经济损失是以千万计的。因此,如何利用燃气表具已有的历史数据,分析挖掘出偷盗气的行为,能够给社会建设提供很大的帮助。
发明内容
本发明的目的在于利用燃气表具已有的历史数据,基于分形维分析挖掘出偷盗气行为,提供一种利用分形计算针对偷盗燃气行为的数据挖掘方法。
为了实现上述发明目的,本发明实施例提供了以下技术方案:
一种利用分形计算针对偷盗燃气行为的数据挖掘方法,其特征在于:包括以下步骤:
步骤S1:提取若干燃气表具的数据,对所有数据进行预处理,形成待筛选的数据集S;所述数据集S中的每一个元素具有一只燃气表具的表号;
步骤S2:遍历数据集S中的每一个元素,按照表号分别对每个燃气表具的数据进行线性相关处理,计算其分形曲线;
步骤S3:对分形曲线进行层次性聚类,得出的孤点为偷盗气行为的燃气表具。
提取若干燃气表具的数据,对所有数据进行预处理的步骤,包括:
去除若干燃气表具的数据中有效数据不够和不稳定的数据,形成待筛选的数据集S。
所述按照表号分别对每个燃气表具的数据进行线性相关处理的步骤,包括:
对于每一只燃气表具,按照表号查询每天的最后一条读数,形成燃气表具的读数数据集R1;所述读数数据集R1中每个元素的数据格式为:[当前时间,读数,当日用气量];
去掉读数数据集R1中当日用气量为零的元素;
查询燃气表具的读数起始时间,使用该读数起始时间转换读数数据集R1的元素数据格式为:[当前时间和读数起始时间相差的天数,读数],形成读数数据集R2:
R2={[x1,y2],[x2,y2],...[xj,yj],...[xn,yn]};
其中xj表示j时刻和读数起始时间相差的天数,yj表示j时刻的读数;
根据读数数据集R2计算集合X和集合Y的线性相关系数ρ:
;
其中表示集合X={x1,x2,...xn}的平均数,表示集合Y={y1,y2,...yn}的平均数,表示集合X的标准差,表示集合Y的标准差。
所述计算其分形曲线的步骤,包括:
设定阈值t,将线性相关系数ρ>t的燃气表具从数据集S中剔除,以去除时间和燃气表具读数之间具有强相关性的数据;
对线性相关系数ρ≤t的燃气表具计算其分形维,设定一组时间间隔集合F={f|f,2f,3f,...kf,...mf},其中时间间隔为f,kf为第k个时间间隔的日期,使用时间间隔集合F中的每一个元素计算该燃气表具的用气曲线的长度v;
该燃气表具在任一个时间间隔的日期下,包含了n个直线段,则该时间间隔的时间尺度下的用气曲线长度v为:
;
其中,表示任一个时间间隔的天数,表示该时间间隔的前一个时间间隔的天数,表示任一个时间间隔当天的读数,表示该时间间隔的前一个时间间隔当天的读数;
将每一个时间间隔取对数f=ln(f),将每个时间间隔f对应的用气曲线长度v取对数v=ln(v),绘制f-v的分形曲线。
所述对分形曲线进行层次性聚类,得出的孤点为偷盗气行为的燃气表具的步骤,包括:
将每一只燃气表具的分形曲线定义为p,共有N只燃气表具,形成集合V={v1,v2,…,vN},对集合V进行数据标准化处理:
;
其中为集合V中的元素,max(v)为集合V中的最大值,min(v)为集合V中的最小值;
标准化处理后的所有燃气表具的分形曲线组成集合P={p};
对集合P进行层次性聚类,找出孤立点。
本发明的有益效果:
本发明基于分形维的偷盗燃气监控原理是以时段作为度量的尺子,考察用气量K线的分形曲线,在此基础上,通过基于欧几里得距离的层次性聚类的方式,定位出分形特征比较特别的燃气用户,从而挖掘出偷盗气用户。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍, 应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明数据挖掘方法的流程图;
图2为本发明实施例只有一种用气模式的燃气表具的用气量K线示意图;
图3为本发明实施例用气量K线存在可线性近似为直线段的示意图;
图4(a)为本发明实施例将用气量K线存在的可线性近似的直线段转换为时间尺度的示意图;
图4(b)为本发明实施例以时间间隔表示的时间尺度下计算气曲线长度v的示意图;
图5为实施例某海岸线度量曲线的弯折程度示意图;
图6为本发明实施例f-v的分形曲线示意图;
图7为本发明实施例层次性聚类示意图;
图8(a)为本发明实施例去除用气量为零的元素的一种情况示意图;
图8(b)为本发明实施例去除用气量为零的元素的另一种情况示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性,或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
实施例:
本发明通过下述技术方案实现,如图1所示,一种利用分形计算针对偷盗燃气行为的数据挖掘方法,具体包括以下步骤:
步骤S1:提取若干燃气表具的数据,对所有数据进行预处理,形成待筛选的数据集S;所述数据集S中的每一个元素具有一只燃气表具的表号。
去除若干燃气表具的数据中有效数据不够和不稳定的数据,形成待筛选的数据集S,所述数据集S中的每一个元素具有一只燃气表具的表号。
有效数据不够的情况,主要是因为通信原因造成的数据缺失。比如项目分析周期内至少需要60条以上的数据,如果这60条数据中存在2段以上的线性关系,可参见图3,且最多的一条直线段上至少有30条有效数据,则可以认为是有效数据。所以对于有效数据的选取,是根据实际情况而定的。
燃气表具一天的用气量K线图中可以得到上影线(当天最大读数)、下影线(当天最小读数)、底线(当天第1条读数)、顶线(当天最后1条读数),如果第1条读数<最后1条读数,则为有效数据。
数据不稳定的情况:(1)由于燃气表具字轮是单调递增的,因此不会出现上影线和下影线;(2)同样也不会出现第1条读数>最后1条读数的情况。因此统计每只燃气表具出现的上影线和下影线数量,就可以得出该燃气表具稳定性指标,设置一个阈值(比如阈值为20%),用于去除数据稳定性较低的燃气表具。
步骤S2:遍历数据集S中的每一个元素,按照表号分别对每个燃气表具的数据进行线性相关处理,计算其分形曲线。
对于每一只燃气表具,按照表号查询每天的最后一条读数,形成燃气表具的读数数据集R1;所述读数数据集R1中每个元素的数据格式为:[当前时间,读数,当日用气量]。
假设现共有N只燃气表具,按照第一只燃气表具的表号查询第一只燃气表具每天的最后一条读数,形成第一只燃气表具的读数数据集R1,读数数据集R1是一只燃气表具的数据,N只燃气表具则会形成N个读数数据集R1。
以第一只燃气表具的数据作为举例,第一只燃气表具的读数数据集R1中每个元素的数据格式为:[当前时间,读数,当日用气量]。比如当前时间是2020年6月6日,2020年6月6日的最后一条读数是100方,当日用气量是5方,那么读数数据集R1中的某一元素的格式可以为[2020/06/06,100,5]。然后第二天的当前时间为2020年6月7日,当日的最后一条读数是103方,当日用气量是3方,则读数数据集R1可以为{[2020/06/06,100,5],[2020/06/07,103,3]}。
如果读数数据集R1中有当日用气量为零的元素,则去掉该当日用气量为零的元素。当日用气量为零的情况,本实施例作为举例,可以存在以下的情况:
请参见图8(a),L2段读数为0,但L3段恢复到了正常,因为L3和L1段大致处于统一线性关系中,则认为L2段是出现了意外情况,比如当存在读数干扰或因电量不足无法读数时,L2段读数会为0,但是接触干扰的意外情况后,读数就恢复到了L3段那样正常的读数。由于L2段存在意外的读数情况,所以需要剔除L2段的数据,否则会给后续计算相关系数造成影响。
请参见图8(b),L2段读数为0,但L3和L1段没有处于统一线性关系中,则认为L2段是正常运行过程中用气量为0的情况,但是为后续更好的计算相关系数,也需要将L2段这样用气量为0的数据剔除。
类似于图2中2015-07-02至2015-07-28之间的这段读数是空白缺失的,所以需要将该段时间的元素去掉。
查询燃气表具的读数起始时间,使用该读数起始时间转换读数数据集R1的元素数据格式为:[当前时间和读数起始时间相差的天数,读数],形成读数数据集R2:
R2={[x1,y2],[x2,y2],...[xj,yj],...[xn,yn]},其中xj表示jj时刻和读数起始时间相差的天数,yj表示j时刻的读数。
考虑到每一只燃气表具的起始读数可能不为0,进查询该燃气表具的读数起始时间即可,比如第一只燃气表具的读数起始时间为2020年6月1日,则在当前时间为2020年6月6日转换后的元素数据格式为(5,100)。那么依照时间的推移,可形成读数数据集R2={[x1,y2],[x2,y2],...[xj,yj],...[xn,yn]},若x1表示6月6日的数据,则x2表示6月7日的数据,xj表示j时刻和读数起始时间相差的天数,即xj-x(j-1)=1;yj表示j时刻的读数,但并不是表示从起始时间到j时刻累积的读数,因为起始时间的读数可能不为0。
作为举例:
第一只燃气表具的起始时间为2020年6月1日,在2020年6月6日的读数数据集R2={[5,100]};
在2020年6月7日的读数数据集R2={[5,100],[6,103]};
在2020年6月8日的读数数据集R2={[5,100],[6,103],[7,105]};
以此类推。
由读数数据集R2={[x1,y2],[x2,y2],...[xj,yj],...[xn,yn]}可以得到集合X和集合Y,其中集合X={x1,x2,...xj,...xn},集合Y={y1,y2,...yj,...yn}。根据读数数据集R2计算集合X和集合Y的线性相关系数ρ:
;
其中表示集合X={x1,x2,...xn}的平均数,表示集合Y={y1,y2,...yn}的平均数,表示集合X的标准差,表示集合Y的标准差。
步骤S3:对分形曲线进行层次性聚类,得出的孤点为偷盗气行为的燃气表具。
每只燃气表具都可以得到其对应的读数数据集R2,那么每只燃气表具都可以计算出其对应的线性相关系数ρ,N只燃气数据表则有N个线性相关系数ρ。设定阈值t,将线性相关系数ρ>t的燃气表具从数据集S中剔除,以去除时间和燃气表具读数之间具有强相关性的数据。
对于一个只有一种用气模式的燃气用户来说,请参见图2,其燃气表具的用气量K线为一条可线性近似的、单调递增的曲线。尽管偷盗气的手段有多种,比如接管道进行分流,并绕过计量设备,或在表具中掺杂物破坏计量设备的准确性等多种手段,但无论如何,都会造成用气量K先在某个时间尺度上的显著较低,破坏用气量和时间的线性关系。于此同时,请参见图3,发生偷盗气的时间段本身在某个时间尺度上又形成一个可线性近似的直线段,因此局部和整体具有自相似性,具备了分形维分析的基础。
分形维可以用来度量复杂形体,是对欧几里得空间整数纬度的一种补充,维度的准确定义是豪斯多夫给予的,也称豪斯多夫维。对于任意一个几何目标F,定义:
;
其中u是F的覆盖,|u|是子覆盖的长度。当→0时,豪斯多夫维可以由下述定义的下确界来确定:
;
请参见图5可以度量曲线的复杂弯折程度,简单来说,就是通过分形维可以给复杂几何目标一个维度度量,从分形维的角度来看,一个点是0维,一条直线是1维,复杂海岸线是1.0维。
一条可线性近似的、单调递增的曲线在时间和燃气表具读数之间具有强相关性,代表该燃气用户未偷盗气,因此为剔除强相关性的数据,设定阈值t,将线性相关系数ρ>t的燃气表具从数据集S中剔除,以去除时间和燃气表具读数之间具有强相关性的数据。请参见图4(a)将图3的用气量K线中存在可线性近似的直线段转换为时间尺度的示意图。初始的点(t1,r1)到结束的点(t3,r3)之间为时间尺度1,点(t2,r2)包含了两条直线段,所以点(t2,r2)到点(t1,r1)和点(t2,r2)到点(t3,r3)之间为时间尺度2。
为便于对线性相关系数ρ≤t的燃气表具计算其分形维的说明,将图4(a)中转换的时间尺度拿出来,如图4(b)所示,设定一组时间间隔集合F={f|f,2f,3f,...kf,...mf},其中时间间隔为f,kf为第k个时间间隔的日期,使用时间间隔集合F中的每一个元素计算该燃气表具的用气曲线的长度v。设定图4(b)中点(t1,r1)为第一个时间间隔f,点(t2,r2)为第二个时间间隔2f,点(t3,r3)为第三个时间间隔3f(仅作为示意图,横坐标可以不等比)。
作为举例,假设时间间隔f为2天,那么时间间隔集合F={f|2,4,6,...128},用F中的每一个元素f去计算用气曲线的长度v,现以时间间隔集合F={f|2,4}作为举例,请参见图4(b),点(t1,r1)表示第2天,点(t2,r2)表示第4天,点(t3,r3)表示第6天。
对于时间尺度1的计算,由于时间尺度1很大覆盖了整个读数的时间范围,因此时间尺度1的用气曲线长度v1为:
;
对于时间尺度2的计算,由于时间尺度2包含了两条直线段,因此时间尺度2的用气曲线长度v2为:
;
所以该燃气表具在任一个时间间隔的日期下,若包含了n个直线段,则该时间间隔的时间尺度下的用气曲线长度v为:
;
其中,表示任一个时间间隔的天数,表示该时间间隔的前一个时间间隔的天数,表示任一个时间间隔当天的读数,表示该时间间隔的前一个时间间隔当天的读数。比如,当n=2时,表示点(t2,r2)包含2条直线段,表示t2所在的时间间隔的天数,从图4(b)中可以看出来是4天,表示t1所在的时间间隔的天数,是2天,那么则表示第4天的读数,表示第2天的读数。
然后将每一个时间间隔取对数f=ln(f),将每个时间间隔f对应的用气曲线长度v取对数v=ln(v),绘制f-v的分形曲线,请参见图6。
步骤S3:对分形曲线进行层次性聚类,得出的孤点为偷盗气行为的燃气表具。
将每一只燃气表具的分形曲线定义为p,共有N只燃气表具,形成集合V={v1,v2,…,vN},对集合V进行数据标准化处理:
;
其中为集合V中的元素,max(v)为集合V中的最大值,min(v)为集合V中的最小值;
标准化处理后的所有燃气表具的分形曲线组成集合P={p}。
对集合P进行层次性聚类,找出孤立点为偷盗气行为的燃气表具,请参见图7,燃气表具5和燃气表具3即为本次聚类的孤立点。层次性聚类是表达各个燃气表具的相关性,图7中以虚线为界限,燃气表具2、4、1、6构成一个类,燃气表具5、3构成另一个类,虚线的划线视情况而定。
至此,本领域技术人员认识到,虽然本文已详尽展示和描述了本发明的实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导符合本发明原理的许多其他变形或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变形或修改。