一种水质预测系统的数据预处理方法

文档序号:6444915阅读:184来源:国知局
专利名称:一种水质预测系统的数据预处理方法
技术领域
本发明涉及数据预处理方法,尤其涉及一种水质预测系统的数据预处理方法。
背景技术
水质预测是水环境规划管理、水污染综合防治等任务顺利进行的不可或缺的基础性工作,具有普遍意义。目前无论在制定区域水污染排放标准或确定各排污口容许排污量, 还是在突发性或连续性排污行为进行评价中,都将涉及到水质的时空变化问题,也需要解决水质的预测问题,因此水质预测工作已经成为环境工作中不可忽视的一项重要课题。水质预测工作的核心是水质模型的建立。但是水质预测模型的预测效果不仅仅依赖于模型本身对现实世界的逼近程度,还十分依赖于干净、准确、简洁的数据。通常在各种数据挖掘和数据预测的过程中,数据预处理要占到60%以上的工作量。在我们的在线水质预警系统中,各种因子的监测数据由分布在济南市区的各个监测站点获得,由于1)暂时性的仪器监测故障或者网络故障,而导致监测数据异常或者数据缺失;2)测试地点环境的变化,导致数据包含了许多非期望的噪声。3)在监测仪器所在的环境中出现了一些偶然事件,例如可能有船或者鱼群经过, 干扰仪器探头的监测结果,由此导致数据超限等异常。这两点直接导致数据在时间轴上的频率不一致,局部测试过于频繁,局部数据缺失,偶尔有异常单点数据出现。在总体冗余、局部缺失、且各种因子的监测频率不一致的数据面前,无论是单因子分析还是多因子分析,都对数据预处理有着很高的要求,既要最大程度上保留原始数据所蕴含的真实信息,又要合理地对数据进行压缩,减轻后续预测分析算法的负担。当前常用的数据预处理的主要方法大致为数据清理、数据集成、数据变换和数据归约。选用何种方法没有统一的标准,只能根据不同类型的分析数据和业务需求,在对数据特性做了充分的理解之后,再选择与其最适配的数据预处理技术。在水质预测相关文献中, 一般会采用如下方法1.对每日的水质数据进行平均,每日的水质数据进行简单平均可以在某种程度上减轻数据噪声和异常值的干扰,但是这种减轻的程度是随机的和不稳定的;2.取每日水质数据的中位数,这样可能会忽略掉该日数据的一些信息,3.使用线性回归和平均值的方法对缺失值进行简单的插补,如果缺失数据过多, 则会降低变量之间的相关关系;4.数据清理,主要是消除数据集中的孤立点,采用平滑来降低数据噪声。总而言之,这些方法经常忽略或者回避了分析数据的内在信息和内在波动趋势, 而将内在信息挖掘、内在波动趋势发现的工作交给纯粹的预测模型,甚至某些数据预处理方法还在某种程度上破坏了原有数据的趋势信息和周期信息。水质数据的波动整体而言是比较缓慢的。

发明内容
本发明的目的是针对目前的在线水质监测系统的水质预测多集中于预测模型、忽视了对原始数据进行预处理的缺陷,提供一种水质预测系统的数据预处理方法。水质预测的数据预处理方法的步骤如下1)各地监测站点向监测数据库中加载水质数据,当任务开始时,用户在网络界面发送用户指令,通过网络服务器将用户指令转换成结构化查询语言指令发送给监测数据库和水质数据库,将监测数据库的数据返回网络服务器;2)从监测数据库和水质数据库中将水质数据以表的形式载入网络服务器内存,每个监测站点的每个水质因子对应着一张表,建立待分析数据的数据结构;3)对水质数据先进行k均值聚类分析,再进行缺失值插补,最后进行奇异谱分析, 降低数据噪声,提取震荡成分和趋势成分。所述的步骤1)为各地监测站点每隔15分钟监测一次水质数据,并存入监测数据库,在监测数据库中根据不同的站点和不同的因子建立实时水质数据表,用户在网络界面发送用户指令,通过网络服务器将用户指令转换成结构化查询语言指令发送给监测数据库和水质数据库,监测数据库和水质数据库执行结构化查询语言指令,将监测数据库中的水质数据发送给网络服务器。所述的步骤2)为在水质数据库中建立站名表和水质因子表,对实时水质数据表、站名表、水质因子表的数据进行操作,获取预测水质数据,并将预测水质数据以二维表的形式存入网络服务器内存中,实时水质数据表中包括的数据有水质数据、因子号、站点号、采样时间数据,站名表中包括的数据有站点号、站点名,水质因子表包括的数据有因子号、因子名,实时水质数据表存储在监测数据库中;而站名表和水质因子表存储在水质数据库中,网络服务器发送的结构化查询语言指令中包含站点名和因子名,根据站点名和因子名从水质数据库的站名表和水质因子表中获得站点号和因子号,在根据站点号和因子号从实时水质数据表中获得实时水质数据表中获取水质数据和采样时间,典型的做法是获取过去50天的水质数据,监测数据库将水质数据发送给网络服务器,网络服务器的内存中构建的一个水质数据内存表来保存水质数据,水质数据内存表为一个二维表的数据结构,一共两列,分别为水质数据,采样时间。所述的步骤3)为数据预处理对水质数据内存表中的水质数据进行操作,经过数据预处理之后,便得到质量高的水质数据,具体步骤分为三步,先进行k均值聚类分析,然后再进行缺失值插补,最后进行奇异谱分析;l)k均值聚类分析先对水质数据内存表中的水质数据列进行筛选,剔除其中偏离数据中心平均值的少数异常值,以每一天为一个群组进行筛选;全部50天的数据筛选完毕之后,更新水质数据内存表数据;如果某一天的水质数据多于10个但少于20个,求取当天的所有水质数据的平均值;若某一天水质数据少于10个,那么丢弃这一天的全部数据; 如果某一天的水质数据多于20个,那么进行k均值聚类分析,先从样本集中随机选出k个点作为k个簇的各自的中心,k由用户根据经验来决定,代表这一天的水质数据可以分成k类;然后分别计算剩下的水质数据到k个簇中心的相异度,相异度= ^(X-W2,χ、y
为簇中的不同水质数据,将水质数据分别划分到相异度最低的簇;根据聚类结果,重新计算 k个簇各自的中心,计算方法是取簇中所有水质数据各自维度的算术平均数;将每一天的全部水质数据按照新的中心重新聚类,直到聚类结果不再变化,得到聚类结果;2)缺失值插补对经过k均值聚类分析之后的水质数据进行检查,如果没有缺失值,那么直接进入第三步;否则就进行插补;3)奇异谱分析对包含50个水质数据的时间序列构建10维的滞后矩阵,再求该滞后矩阵的滞后方差矩阵S,然后根据S的特征值和特征向量对时间序列进行信号重建,从而完成奇异谱分析。本发明相较与现有技术的有益效果是1)以更快的速度从数据库中读取相关水质数据,提高预测的效率;2)给预测模型提供干净、准确、简洁的数据,提高预测的准确性和稳定性。


图1是水质预测系统原理示意图;
图2是本发明的数据连接示意图;图3是本发明的提取数据示意图;图4是本发明的数据预处理算法流程。
具体实施例方式水质预测的数据预处理方法的步骤如下1)各地监测站点向监测数据库中加载水质数据,当任务开始时,用户在网络界面发送用户指令,通过网络服务器将用户指令转换成结构化查询语言指令发送给监测数据库和水质数据库,将监测数据库的数据返回网络服务器;2)从监测数据库和水质数据库中将水质数据以表的形式载入网络服务器内存,每个监测站点的每个水质因子对应着一张表,建立待分析数据的数据结构;3)对水质数据先进行k均值聚类分析,再进行缺失值插补,最后进行奇异谱分析, 降低数据噪声,提取震荡成分和趋势成分。所述的步骤1)如下所述各地监测站点每隔15分钟监测一次水质数据,并存入监测数据库,在监测数据库中根据不同的站点和不同的因子建立实时水质数据表,用户在网络界面发送用户指令,通过网络服务器将用户指令转换成结构化查询语言指令发送给监测数据库和水质数据库,监测数据库和水质数据库执行结构化查询语言指令,将监测数据库中的水质数据发送给网络服务器。所述的步骤2)如下所述在水质数据库中建立站名表和水质因子表,对实时水质数据表、站名表、水质因子表的数据进行操作,获取预测水质数据,并将预测水质数据以二维表的形式存入网络服务器内存中,实时水质数据表中包括的数据有水质数据、因子号、站点号、采样时间数据,站名表中包括的数据有站点号、站点名,水质因子表包括的数据有因子号、因子名,实时水质数据表存储在监测数据库中;而站名表和水质因子表存储在水质数据库中,网络服务器发送的结构化查询语言指令中包含站点名和因子名,根据站点名和因子名从水质数据库的站名表和水质因子表中获得站点号和因子号,在根据站点号和因子号从实时水质数据表中获得实时水质数据表中获取水质数据和采样时间,典型的做法是获取过去50天的水质数据,监测数据库将水质数据发送给网络服务器,网络服务器的内存中构建的一个水质数据内存表来保存水质数据,水质数据内存表为一个二维表的数据结构,一共两列,分别为水质数据,采样时间。所述的步骤3)如下所述数据预处理对水质数据内存表中的水质数据进行操作,经过数据预处理之后,便得到质量高的水质数据,具体步骤分为三步,先进行k均值聚类分析,然后再进行缺失值插补,最后进行奇异谱分析;l)k均值聚类分析先对水质数据内存表中的水质数据列进行筛选,剔除其中偏离数据中心平均值的少数异常值,以每一天为一个群组进行筛选;全部50天的数据筛选完毕之后,更新水质数据内存表数据;如果某一天的水质数据多于10个但少于20个,求取当天的所有水质数据的平均值;若某一天水质数据少于10个,那么丢弃这一天的全部数据; 如果某一天的水质数据多于20个,那么进行k均值聚类分析,先从样本集中随机选出k个点作为k个簇的各自的中心,k由用户根据经验来决定,代表这一天的水质数据可以分成k 类;然后分别计算剩下的水质数据到k个簇中心的相异度,相异度= ^(X-W2,X、y 为簇中的不同水质数据,将水质数据分别划分到相异度最低的簇;根据聚类结果,重新计算 k个簇各自的中心,计算方法是取簇中所有水质数据各自维度的算术平均数;将每一天的全部水质数据按照新的中心重新聚类,直到聚类结果不再变化,得到聚类结果;2)缺失值插补对经过k均值聚类分析之后的水质数据进行检查,如果没有缺失值,那么直接进入第三步;否则就进行插补,先对水质数据缺失情况进行判断,(a)如果在某个区段仅仅缺失的水质数据等于一个,那么就采用简单均值插补;(b)如果缺失的水质大于一个,那么将采用其他插补方式;对于(a)情况而言,如果某个区段存在一个缺失值,那么取缺失值的前一个数据和后一个数据设为X1, &,若有一个缺失值,设缺失值为a,则a = (Xl+x2)/2 ;对于(b)情况而言,若存在超过一个缺失值,设缺失值分别为y2…,yn,则yi = [(n-i) · Xl+i · x2]/n,其中Yi为第i个缺失值。如果连续缺失值超过5个,那么就说明该水质数据序列质量太差,就不值得挖掘其信息,将该水质数据进行丢弃。3)奇异谱分析对包含50个水质数据的时间序列构建10维的滞后矩阵,再求该滞后矩阵的滞后方差矩阵S,然后根据S的特征值和特征向量对时间序列进行信号重建,从而完成奇异谱分析。该分析对经过缺失值插补后得到的时间序列{XJ,建立时滞矩阵(其中M= 10,N =50)
7个MXM矩阵”
_XM XM+ 1 … XN _
对⑴式做内积运算
1 N-i
S(J) = T--I^'1 ^-/'^m-1
N_J r=J
便得到了如下的滞后方差矩阵,为一
X =
X1 JC-\
X2 X3
X
N-M+1
X
N-M+2
S(M-I) s{M-2) ... S(O)其中S为对称阵且主对角线为同一常数,通过S = E λ Et来求得特征值为A1^A2 Am^O (4)^>^>-->^>0 (5)计算出S的特征值λ 相应的特征向量,时间序列{XJ的SSA展幵为
MXi+J = IalkEkj(6)
k=\(6)式中,i = 1,2,-M0 Ekj为时间EOF,记为T-E0F,aik为时间主分量,记为T-PC
Malk = YjXl^Ekj(7)
7+1实施例本方法已经应用在某水质预测系统上。如图1所示,水质预测系统的工作环境分为两层,一层为Web层,即前台,与用户交互的界面;一层为后台,后台对用户发送的指令操作,并向用户返回预测结果。同时工作流程也分为两部分,一部分是预处理流程,另一部分是预测流程。我们的工作就是预处理流程即对原始水质数据进行数据预处理,并将预处理之后的水质数据传送给下一流程预测流程。以自动预测模式为例只要系统处于运行状态,就通过一个任务管理模块来自动定时启动任务。任务管理模块进行任务管理,可以确定下一个将要执行的任务以及触发该任务的时间,也可以由用户来添加任务或者删除任务,保证了预测任务的可扩展性和可执行性;触发预测任务之后,便开始启动任务。接下来便从数据库中提取数据,进行数据预处理。 数据预处理之后将结果传输给预测流程。其他开发人员可以将他们所开发的预测算法预测出来的结果以趋势图表、或者结合地理信息GIS系统等可视化形式展现在Web界面上。同时对任务管理模块发送更新命令,任务管理模块便开始更新并准备触发下一个待执行的任务。如图2所示,我们的数据库的开发软件版本为Microsoft SQL Server 2005,而数据预处理算法程序的开发语言为C#,开发平台为Microsoft Visual Studio2008。各地监测站点各监测仪器每隔15分钟测一次数据,每测一次数据就将数据存入到数据库服务器中,
8
1
2
3
/K
-O2)
-ι .
/M. /M.
⑴(O)
5 S ·
(0)(1)
S S · __
Il
S具体是存在数据库WQA_M0nData根据不同的站点和不同的因子所建立的表中,该数据库负责保存从各监测站点监测的所有原始数据。服务器分为网络服务器(Web服务器)、数据库服务器。用户在Web界面发送用户指令,通过Web服务器将这些用户指令转换成结构化查询指令(SQL查询指令)发送给数据库服务器。数据库服务器执行这些SQL查询指令,将需要查询到的原始水质数据返回给Web服务器。如图3所示,为程序对数据所进行的操作,实际上就是从数据库服务器中获取相应站点的相应因子在相应时间段的水质数据。需要对3张表实时水质数据表、站名表、水质因子表的数据进行操作,获取预测所需要的原始数据,并将这些原始数据以二维表的形式存入内存中去。其中实时水质数据表所包括的数据有水质数据、因子号、站点号、采样时间等数据。站名表包括站点号、站点名等数据。水质因子表包括因子号和因子名等数据。实时水质数据表存储在数据库WQA_M0nData中;而站名表和水质因子表存储在数据库 WQA中。我们从Web服务器发送的SQL指令中获得站点名和因子名,根据站点名和因子名从站名表和水质因子表中获得站点号和因子号。在根据站点号和因子号从实时水质数据表中获得实时水质数据表中获取水质数据和采样时间,典型的做法是获取过去50天的水质监测数据。将该数据取出来,保存在Web服务器的内存中单独构建的一个水质数据内存表中。该内存表中为一个二维表的数据结构,一共两列,分别为=Hionit0rData(水质数据), samplingTime (采样时间)。该二维表的每一行对应着每次采样的数据,采样数据以时间降序排列,这样第一行数据为最近一次的采样数据。如图4所示,数据预处理对存储在内存中的水质数据进行操作,主要分为三大步骤,第一步进行聚类分析,第二步进行缺失值插补,第三步进行奇异谱分析。具体步骤如下步骤40是初始步骤。步骤41对表中的水质数据进行筛选,剔除其中的异常值,如果数据异常的话,进入步骤42 丢弃该异常数据;在回到步骤41 ;等到数据全部筛选完毕, 进入步骤43,更新内存中的数据表;然后进入步骤44 判断每天的数据是否超过20个,如果是的话,那么就直接进入步骤45进行聚类分析,采用k均值聚类分析算法实施步骤为两阶段反复循环过程算法,结束的条件是不再有数据元素被重新分配。①指定聚类,即指定数据到某一个聚类,使得它与这个聚类中心的距离比它到其他聚类中心的距离要近;② 修改聚类中心。我们在实践中一般将每天的数据分为3类,在操作完聚类分析之后,将聚类之后的数据重新组合成新的时间序列,再进入下一步。对于处理大数据,这个算法是相对可伸缩和高效的,计算的复杂度为O(Nkt),其中N是数据对象的数目,t是迭代的次数。一般来说,k<<N, t<< N;如果每天的数据没有超过20个,那么先进入步骤46判断每天的数据是否超过10个,如果超过10个,那么进入步骤47,取平均值来代替那一天的水质; 如果没有超过10个,那么就认为这段数据不能够很好地代表一天的水质信息,那么就进入步骤48:丢弃这一天的数据。完成步骤48之后,再进入步骤45。步骤45完成之后,我们进入步骤49:判断经过聚类之后的时间序列是否存在缺失数据,①如果没有缺失数据,那么直接进入步骤4d 奇异谱分析,实施步骤可见具体实施方式
的步骤3的幻步奇异谱分析;②如果有数据缺失,那么就先要进行缺失值插补的工作,进入步骤如判断连续缺失数据是否超过5个,如果连续缺失值超过5个,那么就说明该水质数据序列质量太差,就不值得挖掘该水质数据的有效信息,直接进入步骤4b 丢弃该段水质数据;再进入步骤4g 提醒下一流程这段水质数据质量不合格,数据预处理流程结束;同样,如果步骤如判断连续缺失值并没有超过5个,那么就进行步骤如缺失值插补,如果某个区段存在1个缺失值,那么取缺失值的前一个数据和后一个数据设为X1, &,若有一个缺失值,设缺失值为a,则a = (Xl+x2)/2 ;如果存在超过1个缺失值且连续缺失值小于5个,设缺失值分别为y2…,yn, 则Yi= [(n-i) ·Χι+ ·&]/η,其中yi为第i个缺失值;插补工作完成了,我们进入步骤4d: 奇异谱分析。步骤4d完成之后,进入步骤4f,数据预处理流程结束。
权利要求
1.一种水质预测的数据预处理方法,其特征在于它的步骤如下1)各地监测站点向监测数据库中加载水质数据,当任务开始时,用户在网络界面发送用户指令,通过网络服务器将用户指令转换成结构化查询语言指令发送给监测数据库和水质数据库,将监测数据库的数据返回网络服务器;2)从监测数据库和水质数据库中将水质数据以表的形式载入网络服务器内存,每个监测站点的每个水质因子对应着一张表,建立待分析数据的数据结构;3)对水质数据先进行k均值聚类分析,再进行缺失值插补,最后进行奇异谱分析,降低数据噪声,提取震荡成分和趋势成分。
2.根据权利要求1所述的一种水质预测的数据预处理方法,其特征在于所述的步骤1) 为各地监测站点每隔15分钟监测一次水质数据,并存入监测数据库,在监测数据库中根据不同的站点和不同的因子建立实时水质数据表,用户在网络界面发送用户指令,通过网络服务器将用户指令转换成结构化查询语言指令发送给监测数据库和水质数据库,监测数据库和水质数据库执行结构化查询语言指令,将监测数据库中的水质数据发送给网络服务ο
3.根据权利要求1所述的一种水质预测的数据预处理方法,其特征在于所述的步骤2)为在水质数据库中建立站名表和水质因子表,对实时水质数据表、站名表、水质因子表的数据进行操作,获取预测水质数据,并将预测水质数据以二维表的形式存入网络服务器内存中,实时水质数据表中包括的数据有水质数据、因子号、站点号、采样时间数据,站名表中包括的数据有站点号、站点名,水质因子表包括的数据有因子号、因子名,实时水质数据表存储在监测数据库中;而站名表和水质因子表存储在水质数据库中,网络服务器发送的结构化查询语言指令中包含站点名和因子名,根据站点名和因子名从水质数据库的站名表和水质因子表中获得站点号和因子号,在根据站点号和因子号从实时水质数据表中获得实时水质数据表中获取水质数据和采样时间,典型的做法是获取过去50天的水质数据, 监测数据库将水质数据发送给网络服务器,网络服务器的内存中构建的一个水质数据内存表来保存水质数据,水质数据内存表为一个二维表的数据结构,一共两列,分别为水质数据,采样时间。
4.根据权利要求1所述的一种水质预测的数据预处理方法,其特征在于所述的步骤3)为数据预处理对水质数据内存表中的水质数据进行操作,经过数据预处理之后,便得到质量高的水质数据,具体步骤分为三步,先进行k均值聚类分析,然后再进行缺失值插补, 最后进行奇异谱分析;l)k均值聚类分析先对水质数据内存表中的水质数据列进行筛选,剔除其中偏离数据中心平均值的少数异常值,以每一天为一个群组进行筛选;全部50天的数据筛选完毕之后,更新水质数据内存表数据;如果某一天的水质数据多于10个但少于20个, 求取当天的所有水质数据的平均值;若某一天水质数据少于10个,那么丢弃这一天的全部数据;如果某一天的水质数据多于20个,那么进行k均值聚类分析,先从样本集中随机选出k个点作为k个簇的各自的中心,k由用户根据经验来决定,代表这一天的水质数据可以分成k类;然后分别计算剩下的水质数据到k个簇中心的相异度,相异度d(XJ)^-j(x-y)2,x、y为簇中的不同水质数据,将水质数据分别划分到相异度最低的簇;根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有水质数据各自维度的算术平均数;将每一天的全部水质数据按照新的中心重新聚类,直到聚类结果不再变化,得到聚类结果;2)缺失值插补对经过k均值聚类分析之后的水质数据进行检查,如果没有缺失值,那么直接进入第三步;否则就进行均值插补;3)奇异谱分析对包含50个水质数据的时间序列构建10维的滞后矩阵,再求该滞后矩阵的滞后方差矩阵S,然后根据S的特征值和特征向量对时间序列进行信号重建,从而完成奇异谱分析。
全文摘要
本发明公开了一种水质预测系统的数据预处理方法。它的步骤如下1)各地监测站点向监测数据库中加载水质数据,用户在网络界面发送用户指令,通过网络服务器将用户指令转换成结构化查询语言指令发送给监测数据库和水质数据库,将监测数据库的数据返回网络服务器;2)从监测数据库和水质数据库中将水质数据以表的形式载入网络服务器内存,建立待分析数据的数据结构;3)对水质数据先进行k均值聚类分析,再进行缺失值插补,最后进行奇异谱分析,降低数据噪声,提取震荡成分和趋势成分。本发明以更快的速度从数据库中读取相关水质数据,提高预测的效率;给预测模型提供干净、准确、简洁的数据,提高预测的准确性和稳定性。
文档编号G06Q10/04GK102446302SQ20111046018
公开日2012年5月9日 申请日期2011年12月31日 优先权日2011年12月31日
发明者冀海峰, 姚亚, 李海青, 王保良, 黄志尧 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1