本发明属于数据处理领域,特别涉及一种泵站运行监控数据异常点检测方法。
背景技术:
我国水资源分配在空间上不均匀,为了在各流域之间进行合理的水资源调度,近年来,国家以及各级政府新建了众多的调水工程,如“南水北调”,“引滦入津”,“引滦入唐”、“引黄济青”等。调水工程的运行主要依靠各级泵站逐级提水,因此,泵站高效稳定的工作对调水工程至关重要。随着监测技术的发展,泵站自动化水平逐步提高,目前,在泵站运行过程,大量泵站运行状态信息被采集和存储,如压力、温度、水位等。对泵站运行状态监测数据进行处理分析和挖掘,发现泵站运行中的规律,实现泵站故障预测和预报,将对泵站运行调度起到积极的作用。而对泵站运行状态监测数据进行挖掘前,需要对数据进行预处理,发现和修正异常数据,或者从异常数据中发现泵站运行的特殊状态。
在数据挖掘过程中,常常存在与数据模型或数据一般规律不符合的数据对象,这类与其它数据不一致的数据对象就称为异常数据,它们往往容易被人们所忽略。然而,这些数据对象可能是具有特殊意义的,而且相对于那些普通的数据而言,这类异常的数据往往提供了更多的有用信息,它们往往更具有研究价值。因此,可以看到,不能简单的把异常数据看作是“错误的数据”,并进行简单的处理。对于数据中存在的错误数据,需要开发有效的检测算法,为数据分析提供清洁可靠的数据;但也可以看到,某些异常数据可能包含着某种重要的知识,分析它们能获得到有实际应用意义的知识。
异常检测与其它许多数据挖掘研究的对象不同,它不是研究数据集中的绝大多数对象,而是关注那些数据集合中小部分的对象。这些小部分的异常数据(对象)可能包含着某种重要的信息和知识。因此,异常数据检测和分析是一个较为特殊却很有意义的数据挖掘任务。异常点有多种别名,如噪声、偏离点、例外点、孤立点、离群点等。对于数据集合中的异常点(对象),直观上,它们一般孤立于其它对象存在,因此研究者常使用“孤立点”一词来形象的描述异常点。
异常检测是数据挖掘的一个重要分支。异常点挖掘可以被形式化的描述:给定一个含有n个数据点或对象的集合,发现集合中与其余数据相比显著相异的、异常的或不一致的数据点或对象。所以,异常点挖掘问题可被看作两个子问题:
(1)在给定的数据集合中定义什么样的数据被认为是不一致的;
(2)找到一个有效的方法来挖掘这样的异常点。
异常点挖掘的第一个子问题,即是要解决异常点的定义问题。目前,异常点定义有多种,最具代表性和被广泛接受的是hawkins早在1980年给出的异常点(outlier)的本质性定义:异常是在数据集中与众不同的数据,使人怀疑这些数据并非随机偏差,而是产生于完全不同的机制。另外具有代表性的还有v.barnet等人在1994年在统计学领域给出的异常点直观上的定义:一个异常点(outlier)是这样的数据点,基于某种度量而言,该数据点与数据集中的其他数据有着显著的不同。
常见异常点检测方法包括:统计学的检测方法、基于距离的检测方法、基于密度的检测方法等。基于统计学的方法是最早被提出用来检测数据集合中异常的方法。基于统计的异常检测方法假设所给定的数据集存在一个分布或概率模型(如一个正态分布);然后根据相应模型并通过不一致性测试来发现异常数据。应用这种测试需要了解数据集参数的有关知识(如数据分布情况)、分布参数知识(如均值和方差),以及所预期的异常数据个数。基于距离的异常检测一般根据数据对象的最近邻居来判断其是否为异常点。适合于观测值的分布不符合任何标准分布的情检测方法,并且适合于多维的数据集,因此,其克服了基于统计学的异常点检测方法的两大缺点。基于密度的检测方法在判断一个对象o是否为异常点时,根据对象o周围的数据据点周围密集程度来判断是否为异常点,这个方法的得出的异常的也不够精准,而且不适用于泵站运行监控数据异常点的检测。
技术实现要素:
发明目的:为了克服现有技术中存在的不足,本发明提供了一种大大提高了准确性,检测结果的实用价值更高的泵站运行监控数据异常点检测方法。
发明内容:为解决上述技术问题,本发明提出一种泵站运行监控数据异常点检测方法,包括以下步骤:
步骤1:对泵站运行进行监测,然后采用泵站自动化系统采集的泵站运行状态监测数据;
步骤2:根据步骤1得到的检测数据得到一段时间序列x=<x1=(v1,t1),x2=(v2,t2),…xi=(vi,ti)…,xn=(vn,tn)>,其中,数据点xi=(vi,ti)表示时间序列在ti时刻的观测值为vi,xi表示第i个数据点;根据公式
步骤3:根据公式
步骤4:根据公式t=α×mc+β×nv计算异常阈值t,其中,nv表示点xi的k个近邻点集合<xi-k,xi-k+1,…,xi-1>的标准差,α为整体变化的权重参数,β为局部变化的权重参数;
步骤5:判断xi的累积变化量ac是否大于异常阈值t,如果ac大于t,则xi作为异常点;否则视为正常点。
进一步,所述近邻点选择的数量为15。如果k取值太小,则可能会检出太多异常点,k取值太大,则xi的变化可能被太多的近邻平滑掉,可能检不出异常点。所以这样能够准确的检测出异常点。
进一步,所述近邻点选择当前待检测数据点前面的数据点。xi后面的观测数据可能存在异常,所以选择当前待检测数据点前面的数据点进行异常检测得出的结果更加的准确。
进一步,所述整体变化的权重参数α值为0.5;所述局部变化的权重参数β值为0.5。
进一步,所述权值向量<w1,w2,…,wk>为<1,2,…,k>。
进一步,越接近点xi的近邻点赋予的权值越大。
工作原理:本法提供的方法结合泵站运行监控数据的特点,引入平均变化量、累积变化量统计量,并在其基础上给出了泵站运行监控数据中异常点的定义,提出了泵站运行监控数据异常点检测方法。主要步骤包括:1.计算监测数据的平均变化量;2.针对每个数据点动态计算异常阈值;3.计算每个数据点的累计变化量,累积变化量超出异常阈值的点,即为异常点。异常阈值的计算考虑了时间序列整体变化以及当前点周围的变化情况,既反映了整体的情况也考虑局部情况,。
有益效果:与现有技术相比,本发明提供的方法中异常阈值通过动态计算,不但反映了整体监测数据的变化情况,同时考虑局部变化情况,因此检出的异常更加具有实用价值。同时,本发明提供的方法检测结果的准确性更高,检测的速度更快,计算量小。
附图说明
图1为本发明提供的泵站运行监控数据异常点检测方法的流程图。
具体实施方式
下面结合附图对本发明的技术方案作进一步解释。
如图1所示,本发明提供了一种泵站运行监控数据异常点检测方法,主要包括以下步骤:
步骤110:对泵站运行进行监测,然后采用泵站自动化系统采集的泵站运行状态监测数据,如泵站运行的压力、温度、振动等。
步骤120:根据公式
步骤130:判断标号i的值;如果i大于该组内子序列的总数则结束本组的处理;如果i不大于时间序列中观测点的总数;则进行步骤140;
步骤140:读取当前待处理的数据点xi的信息。
步骤150:读取数据点xi的近邻点,在检测开始前需要确定近邻点的个数k(比如取15),k值由分析人员根据经验进行确定,k取值太小,则可能会检出太多异常点,k取值太大,则xi的变化可能被太多的近邻平滑掉,可能检不出异常点。读取近邻点时,将xi之前的数据作为近邻,即,<xi-k,xi-k+1,…,xi-1>。因为,xi后面的观测数据可能存在异常,为了避免影响就不参加近邻处理。针对xi(i<=k)的点,在没有足够邻近点的情况下,增加其后的k-i+1个点作为邻近点进行处理,即<x1,x2,…,xi-1,xi+1,…,xk+1>为邻近点集。步骤160:根据公式
步骤170:计算xi的异常阈值t。根据公式
步骤180:判断xi的累积变化量ac是否大于异常阈值t,如果ac大于t,则xi作为异常点,则转入步骤190,否则视为正常点,先将i的值加1后,重复步骤130~步骤180。
步骤190:将异常点进行存储后转如步骤130。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。