一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种水环境监测数据中异常值的检测和修复方法与流程

2022-02-22 18:29:07 来源:中国专利 TAG:


1.本发明涉及水环境监测技术领域,特别是涉及一种水环境监测数据中异常值的检测和修复方法。


背景技术:

2.随着大数据应用的不断深入,数据质量问题已成为影响大数据应用发展的关键问题。水环境监测数据是利用传感器检测的各个水环境指标(水温、ph值、溶解氧、电导率、浊度、氨氮、高锰酸盐指数、总磷、总氮、叶绿素、蓝绿藻等)的时间序列,它们是典型的大数据。由于传感器的故障、数据传输、读取错误等因素影响,导致水环境监测数据中出现异常值,异常值的存在降低了监测数据的数据质量,异常值的及时检测和修复对后期的知识获取、水环境指标预测建模等应用具有重要意义。
3.为了提高数据的可用性,研究者们对大数据采用拟合方法和预测方法进行异常值修复,但水环境监测数据受外界影响(如污染、天气原因等)较大,导致按照长期趋势拟合后的模型误差较大,而水环境监测中的异常值一般包括缺失值,从而导致预测方法失效。异常值修复的前期步骤是异常值检测,传统的异常值检测技术主要基于分类、基于距离、基于聚类、基于统计学、基于信息理论等,但是对特定的应用场景则需要给出更加有针对性的异常值检测方法。


技术实现要素:

4.为解决以上问题,本发明提供一种水环境监测数据中异常值的检测和修复方法,针对水环境监测数据不依赖任何模型进行异常值修复,采用短期环比法对异常值进行检测,基于子序列相似性对异常值进修复,使修复后的数据具有更好的平滑性,数据的短期趋势更加明显,数据质量得到有效提高。
5.本发明是采用下述技术方案实现的:
6.一种水环境监测数据中异常值的检测和修复方法,包括以下步骤:
7.(1)利用滑动窗口对水环境监测数据进行短期环比来检测异常值;
8.(2)将水环境监测数据进行动态分割划分为各个子序列;
9.(3)针对异常值所在子序列,分别计算和其他子序列的相似性并选取相似性最大的子序列;
10.(4)根据最相似子序列中相应位置数据的变化趋势修复所述异常值。
11.在其中一个实施例中,所述步骤(1)中检测异常值的方法具体为:对时间序列v上的每个监测值vi,与k-最近邻居窗口大小逐一计算差值,并记录差值超过阈值ε的点数量countnum,当所有比较结束后,即可以根据countnum值是否大于τ,检验vi是否为异常值,如果vi是异常值则将其位置记录下来;其中v为水环境监测数据v=(v1,v2,

,vn),其中点vi(1≤i≤n)为ti时刻对应的监测值,表示点vi的k-最近邻居窗口,若在中存在或者则判定vi为异常值,其中ε为差值阈值,τ为数量阈值。
12.在其中一个实施例中,所述步骤(2)中将水环境监测数据进行动态分割划分为各个子序列具体为:基于最大距离阈值对序列进行动态划分,首先设置一个标志变量flag,flag值为1代表子序列处于上升状态、值为-1代表处于下降状态、值为0代表处于稳定状态;根据数据序列的初始走势给flag赋初值;然后对每个监测数据vi做如下操作,计算与前一个数据的差分值ei=v
i-v
i-1
,并计算子序列到目前为止的最大距离,当最大距离不超过阈值时,如果ei与flag的符号相反则将flag设为0,当最大距离大于阈值时,则根据flag及ei的值判断子序列曲线的总体走势和变动情况,从而划分保存子序列,最后为划分下一个子序列进行初始化操作。
13.在其中一个实施例中,所述步骤(3)中计算和其他子序列的相似性的形状距离计算公式如式(1)所示:
[0014][0015]
其中,v1,v2为两个时间序列,m
1x
,m
2x
分别为时间序列v1,v2第x个点的模式,取值范围为{-3,-2,-1,0,1,2,3},分别代表{加速下降,水平下降,减速下降,不变,减速上升,水平上升,加速上升}六个模式;a
1x
,a
2x
分别为时间序列v1,v2第x个点的振幅改变量(即a
x
=v
x 1-v
x
,);
[0016]
由式(1)可知,形状距离值越小,则两个时间序列的相似性越大,因此取d(vi,vj)的倒数作为子序列的相似度,如式(2)所示;对于子序列规模不一致的情况,可以采用滚动的方式将短序列分别与长序列中各个等长片段进行相似性计算,并将得到的最大相似度作为两个子序列的最终相似度;
[0017]
sim(vi,vj)=1/d(vi,vj)
ꢀꢀ
(2)。
[0018]
在其中一个实施例中,所述步骤(4)中异常值的修复方法为:根据最相似子序列vj中对应值的变化趋势,对异常值vi进行修复,即vi=v
i-1
(v
j-v
j-1
)。
[0019]
与现有技术相比本发明的有益效果为:本发明针对水环境监测数据中异常值的修复问题,首先利用滑动窗口对水环境监测数据进行短期环比来检测异常值,然后通过对水环境监测数据进行动态分割得到多个子序列,并在子序列相似性比较的基础上对异常值进行修复;经过选取某水站的水环境监测数据进行实验,实验结果表明,本发明方法优于目前常用的预测修复法和拟合修复法,修复后的数据更加平滑、短期趋势更加明显,能有效提高监测数据的数据质量。
附图说明
[0020]
图1为ph值数据集对应的曲线;
[0021]
图2为溶解氧数据集对应的曲线;
[0022]
图3为ph值异常值检测方法的执行结果;
[0023]
图4为溶解氧异常值检测方法的执行结果;
[0024]
图5为ph值数据集对异常值的修复结果;
[0025]
图6为溶解氧数据集对异常值的修复结果;
[0026]
图7为ph值数据集各种方法修复结果对比效果;
[0027]
图8为溶解氧数据集各种方法修复结果对比效果。
具体实施方式
[0028]
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施例的限制。
[0029]
由于水环境的监测指标主要有水温、ph值、溶解氧、电导率、浊度、氨氮、高锰酸盐指数、总磷、总氮、叶绿素、蓝绿藻等,水环境是动态变化的,这些指标的监测值也会随着时间的发展而不断变化,在线监测过程中传感器会按照固定时间间隔返回相应指标的监测值,因此会得到各个指标的离散的时间序列数据。按照监测的水环境指标不同,可以分别得到各个指标的时间序列。
[0030]
定义1水环境监测数据是某水环境指标监测值的时间序列,记为v=(v1,v2,

,vn),其中vi(1≤i≤n)代表ti时刻对应的监测值。
[0031]
水环境对外界影响较敏感,一般情况下各指标的监测值有上下起伏属于正常现象,但是在时间间隔较小的情况下相邻监测值应该比较接近,即使水环境受外界影响导致某时刻的监测值相对前值出现大幅上升或下降,但是其后续监测值也比较接近,因此,不能以监测值上升或下降的幅度来判定异常值。异常值是毛刺点,异常值的特点是明显偏离其他的邻近监测值,即异常值远大于(或小于)一定时间段内的其他邻近值。根据上述分析,将水环境监测数据中的异常值定义为:在某监测值的k-近邻时间窗口内,如果该值和其他监测值的差值大于某阈值的数量超过了一定数量(或者差值小于负的阈值的数量超过了一定数量),则该值为异常值。
[0032]
定义2水环境监测数据中的异常值给定水环境监测数据v=(v1,v2,

,vn),其中点vi(1≤i≤n)代表ti时刻对应的监测值。时刻对应的监测值。表示点vi的k-最近邻居窗口中,若在中存在或者则判定vi为异常值,其中ε为差值阈值,τ为数量阈值。
[0033]
在上述定义中,k-最近邻居采用的是双向时间窗口,这样可以避免将水环境指标受外界因素影响变化较大情况下的监测值误判为异常值,因为这种监测值和前驱时间窗口的监测值差距较大,但是与后驱时间窗口的监测值却比较接近。要想判断某监测值vi是否为异常值,最近邻居窗口大小k、差值阈值ε、数量阈值τ的设定是判断的重要依据。因此,针对不同的水环境监测指标,可以选择不同的k,ε,τ值,满足各种水环境监测指标的异常值检测目的。
[0034]
水环境监测数据的异常值修复,本质上是采取某种方法找到和异常值所在位置的真实值最接近的一个值,并用此值替换原序列中的异常值,从而得到修复后的数据序列。
[0035]
定义3水环境监测数据的修复序列给定水环境监测数据v=(v1,v2,

,vn),其中点
vi(1≤i≤n)为ti时刻对应的监测值。若vi为异常值,根据某方法对vi修复后的修复值为vi′
,则序列v=(v1,v2,

,vi′


,vn)为水环境监测数据的修复序列,其中vi′
应尽量接近vi的真实值。
[0036]
根据上述解决水环境监测数据的异常值修复问题的思路,本发明提供一种水环境监测数据中异常值的检测和修复方法,包括以下步骤:
[0037]
(1)利用滑动窗口对水环境监测数据进行短期环比来检测异常值;
[0038]
根据前述给出的水环境监测数据异常值定义,在k,ε,τ值给定的情况下,可以通过滑动窗口的方式,对时间序列v上的每个监测值vi,与k-最近邻居窗口大小逐一计算差值,并记录差值超过阈值ε的点数量countnum,当所有比较结束后,即可以根据countnum值是否大于τ,检验vi是否为异常值,如果vi是异常值则将其位置记录下来。
[0039]
(2)将水环境监测数据进行动态分割划分为各个子序列;
[0040]
根据异常值修复的目的,如何使修复值更加接近该监测指标当时的真实值是一个关键问题。通过观察水环境监测数据的特征,发现不同时间段子序列的数据变化曲线具有很高的相似性,因此如果找到和异常值所在子序列相似性最大的子序列,则根据最相似子序列中对应值的变化趋势就可以对异常值进行修复,从而使修复值尽量接近真实值。通过以上分析,修复水环境监测数据的异常值需要以下三个步骤:首先将水环境监测数据划分为各个子序列;然后针对异常值所在子序列,分别计算和其他子序列的相似性并选取相似性最大的子序列;最后根据最相似子序列中相应位置数据的变化趋势修复该异常值。
[0041]
水环境监测数据中,较短时间范围的数据片段具有明显的规律性,一般处于上升、下降或者相对稳定状态,但是这些数据片段的规模不固定,因此对数据序列进行划分时,不能采用固定大小的划分方法,而需要根据数据的变化特点进行动态划分。本发明基于最大距离阈值对序列进行动态划分,即认为数据片段的最大距离小于阈值时数据处于稳定状态,持续上升(下降)的数据片段则不受阈值的限制(最大距离超过阈值也不进行分割),使每条子序列曲线的变化规律为上升、下降或者相对稳定。动态划分方法不仅能减少子序列的数量,也会使每个子序列的变化趋势更加明显。
[0042]
为了表示子序列的走势,可以设置一个标志变量flag,flag值为1代表子序列处于上升状态、值为-1代表处于下降状态、值为0代表处于稳定状态。利用相邻数据的差分值(v
i-v
i-1
)和当前的flag值,即可知道数据序列的走势是否发生改变,结合最大距离阈值可以实现对子序列的动态划分。因此,水环境监测数据的动态划分步骤如下:首先根据数据序列的初始走势给flag赋初值;然后对每个监测数据vi做如下操作,计算与前一个数据的差分值ei=v
i-v
i-1
,并计算子序列到目前为止的最大距离,当最大距离不超过阈值时,如果ei与flag的符号相反则将flag设为0,当最大距离大于阈值时,则根据flag及ei的值判断子序列曲线的总体走势和变动情况,从而划分保存子序列,最后为划分下一个子序列进行初始化操作。为了避免异常值的影响,划分子序列时忽略异常值,从而使异常值包含到某个子序列中。
[0043]
(3)针对异常值所在子序列,分别计算和其他子序列的相似性并选取相似性最大的子序列;
[0044]
步骤(2)可以将水环境监测数据划分成多个子序列片段,这些划分后的子序列之间可以进行相似性比较,为异常值的修复奠定基础。由于子序列的相似性为曲线相似性,即
要求子序列之间不仅要形状相似(变化趋势相似)而且要距离最近,不能简单采用欧式距离度量子序列相似性,欧式距离不能辨别形状相似性、不能反映趋势动态变化幅度的相似性。本发明采用形状距离算法对子序列相似性进行度量,形状距离算法的原理是采用各个点的模式距离和振幅改变量距离的乘积和作为两个子序列之间的距离,形状距离计算公式如式(1)所示。其中,v1,v2为两个时间序列,m
1x
,m
2x
分别为时间序列v1,v2第x个点的模式,取值范围为{-3,-2,-1,0,1,2,3},分别代表{加速下降,水平下降,减速下降,不变,减速上升,水平上升,加速上升}六个模式;a
1x
,a
2x
分别为时间序列v1,v2第x个点的振幅改变量(即a
x
=v
x 1-v
x
,)。
[0045][0046]
由式(1)可知,形状距离值越小,则两个时间序列的相似性越大,因此我们取d(vi,vj)的倒数作为子序列的相似度,如式(2)所示。对于子序列规模不一致的情况,可以采用滚动的方式将短序列分别与长序列中各个等长片段进行相似性计算,并将得到的最大相似度作为两个子序列的最终相似度。
[0047]
sim(vi,vj)=1/d(vi,vj)
ꢀꢀꢀꢀ
(2)
[0048]
(4)根据最相似子序列中相应位置数据的变化趋势修复所述异常值。
[0049]
水环境监测数据的异常值修复是根据相似性最大的子序列中进行的,因此对异常值vi进行修复时,需要先找到vi所在的子序列vi,然后根据步骤(3)的子序列相似性计算方法,分别计算出和其他子序列的相似度,并选出相似度最大的子序列vj。由于只有总体走势相同的子序列才会有较高的相似度,而步骤(2)中划分子序列时已经存储了子序列的走势,计算相似度时可以只计算和vi走势一样的子序列。最后根据子序列vj中对应值的变化趋势,对异常值vi进行修复,即vi=v
i-1
(v
j-v
j-1
)。
[0050]
实施例1
[0051]
为验证本发明提出的水环境监测数据异常值的检测和修复方法的有效性,选取某水站的水环境监测数据进行实验,并对异常值修复结果进行分析和讨论。
[0052]
1.数据准备
[0053]
选择在线监测的ph值和溶解氧(单位为mg/l)两种不同的水质要素进行算法验证,采用的是该水站2018-2019年的在线监测数据,数据的时间间隔为1天,图1、图2为两组数据集对应的曲线。从图1、图2可知,ph值和溶解氧的时间序列数据集曲线总体趋势平滑,但是也存在一些明显可疑的异常点(缺失值和离群点等),这些异常点如果不能及时进行修复,就会对后期的数据分析产生严重影响。
[0054]
2.结果评估
[0055]
首先,针对两组数据集对异常值检测算法进行评估,由于ph值和溶解氧的数据特点不同,执行异常值检测算法时设定的最近邻居窗口大小k、差值阈值ε、数量阈值τ也有所区别。
[0056]
经过多次实验对比分析,异常值检测算法的最终k,ε,τ值设置如下:ph值数据集中k=3,ε=0.5,τ=4,溶解氧数据集中k=3,ε=0.9,τ=3。在上述参数设置下,在ph值数据集中检测到11个异常值,在溶解氧数据集中检测到21个异常值,该方法在异常值检测过程中出现不存在fp(falsepositive,正常被误检为异常)和fn(falsenegative,异常被误检为正
常)数据。图3、图4给出了异常值检测算法的执行结果,圆点表示的数据点即异常点,从图中可以看出这些点明显偏离其邻居节点。检测结果表明,本发明给出的异常值检测算法能成功从水环境监测数据集中检测出明显偏离邻居节点(即与众不同)的离群值,同时最大程度保留了水环境变化引起的数据波动,方便后期的数据分析。
[0057]
然后,针对两组数据集分别对异常值的修复算法进行评估。在子序列划分阶段,ph值数据集设定的最大距离阈值为划分为101个子序列,溶解氧数据集设定的最大距离阈值为划分为104个子序列,且划分的子序列规模比较适中,说明给出的子序列划分方法有效。在利用子序列相似性对异常值进行修复阶段,异常值所在子序列都可以找到相似性最大的子序列,对异常值的修复效果如图5、图6所示,从图5、图6可以看出修复后的曲线变得比较平滑,没有明显偏离邻居节点的节点,说明基于子序列相似性对数据进行修复的方法可行,本发明的异常值修复方法具有较好的有效性。
[0058]
3.异常值修复方法对比实验
[0059]
为了进一步验证本文异常值修复方法的有效性,将本发明方法与基于预测和基于拟合的异常值修复方法在实验数据集上进行比较,三种方法的修复结果如图7、图8所示。从图7、图8可以看出:基于预测方法得到的修复数据集和原始数据集存在一定偏差,尤其是原始缺失值的预测结果远远偏离原始曲线,说明预测方法受缺失值影响显著;基于拟合方法得到的修复数据相对原始曲线则存在多处凸起,原因在于拟合多项式反映的只是原始数据的长期趋势,具体拟合值和原始数据差距较大;本发明方法得到的修复数据集和原始数据集大部分区域重合,异常值所在区域则变得更加平滑,数据的短期趋势也更加明显。对比实验表明基于预测和基于拟合的异常值修复方法均无法适用水环境监测数据,本发明修复方法在保留水环境监测数据原始特征的基础上能有效提高水环境监测数据的数据质量。
[0060]
4.结论
[0061]
针对水环境监测数据中存在的异常值,利用短期环比方法检测异常值,根据子序列相似性对异常值进行修复,实验结果表明提出的异常值修复方法优于目前常用的预测修复法和拟合修复法。
[0062]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0063]
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献