一种污水处理RO膜压差异常数据检测和处理方法

2019-02-26 00:50刘峻清
四川环境 2019年1期
关键词:中位数标准差压差

刘峻清,陶 涛

(同济大学环境科学与工程学院,上海 200092)

1 污水处理中RO膜压差数据异常值的影响

随着社会的进步,污水处理厂的出水不仅被排放到自然水体中,也会被用于很多其他用途,例如作为工业冷却水的来源。这些用途对出水的水质提出了较高的要求,RO膜处理工艺也因此被更广泛地应用在污水处理中。RO膜压差作为关键的运行指标,一直被视为实际运营中的重要参考数据被用以判断RO膜的运行情况及决定是否应当对RO膜进行人工清洗。实际运营中,常使用实时检测系统对膜压差进行实时检测并汇集成数据库,以便运营人员进行分析和判断。

由于实际状况的复杂性,检测到的膜压差数据中常含有很多异常数据,这些异常值的来源很复杂,有些是因为传感器的异常状况造成的异常值,有些则是因数据传输系统的问题而产生。这些异常值对数据的质量造成了明显的影响,不利于运营人员对数据的分析和判断,如何减少异常值对数据的影响一直是研究的热点问题之一。

目前被广泛使用的异常值检测方法是“3σ方法”,该方法假设样本数据服从正态分布,“正常”的数据应当集中在距离均值三倍样本标准差的范围之内,异常值和均值之间的距离则大于三倍样本标准差,故该方法将数值偏离均值超过三倍样本标准差的数据点判定为异常值。显然,该方法存在很大的局限性,实际运行数据的分布情况和正态分布之间有很大差距,同时实际运行中得到的数据还会具有周期性和趋势性等特点,这就导致了“3σ方法”并不适用于实际运行数据的异常值检测。图1为使用“3σ方法”对某污水厂RO膜压差监测数据进行异常值检测的结果,图中虚线为该方法确定的异常值判定标准(样本均值 + 3倍样本标准差),可以明显地看出该方法漏判了许多不显著的异常值(虚线之下)。

虚线表示该方法检测到的异常值判断标准,虚线以上的数据点被判断为异常值图1 “3σ方法”检测到的异常值Fig.1 Anomaly detection with 3σ method

如何处理被判定为异常值的数据点也是关键问题之一,常用的办法是删除异常值,但该方法会导致数据缺失的问题,特别是对异常值较多的样本,过多的数据缺失会严重地影响数据质量。另外一种常见的处理方式是使用样本的某一个统计量来替代所有异常值,例如样本均值或者样本中位数等,但这样的处理方式过于粗糙,忽视了局部样本可能具有的周期性等特点,也不是一个理想的处理方式。

2 S-H-ESD算法介绍

2.1 Grubbs检测和ESD

Grubbs检验[1-2]多被用于检验一组数据中的最大(小)值是否属于离群值(异常值),该检验假设该组数据符合正态分布。Grubbs检验一次只能检验一个异常值(离群值),但实际情况中一组数据常常会有多于一个的异常值。为了解决实际数据集中多个异常值的问题,Rosner[3-4]提出了ESD(Extreme Studentized Deviate test)算法检验数据集中的k个最大值(最小值)是否为异常值。该算法为Grubbs算法的延伸,依次判断前k个最大值(最小值)是否为异常值。该算法的突出优点是参数设定简单,只需指定假设的异常值数量k即可,k的数值最多可以达到总样本数的49.9%。

2.2 LOESS和STL

LOESS[5](Local Weighted Regression)是一种局部加权多项式回归的算法,该方法的核心思想是在欲估点处利用低阶多项式(1阶或2阶)进行加权拟合,权重的计算根据已知数据点和欲估计点间的距离确定。在选定的窗口宽度内,离目标估计点越近的数据点被给予的权重越大,离目标点越远的数据点获得的权重越小。该算法的优势是不需要假设数据点的分布,只需要选择多项式的阶数和窗口宽度即可。

STL[6](Seasonal Decomposition of Time Series by Loess)是一种基于LOESS的时间序列分解算法,该算法将时间序列分解成3个部分,即趋势项(T)、周期项(S)和残余项(R):

Y=T+S+R

该算法主要由两层循环构成:外部循环和嵌套在内的内循环。内循环负责计算趋势项和周期项;外循环负责计算一个稳健(鲁棒)权重,该权重将被使用在下一步 的内循环中以减小瞬态状况和异常值对趋势项和周期项的影响,计算如下:

h=6×median(|Rv|)

ρv=B(|Rv|/h)

2.3 S-ESD和S-H-ESD

由于ESD算法并不能很好的处理具有周期性的数据,同时由于实际的数据并不一定遵循某一类分布,导致ESD对某些数据中的异常值的侦测效果并不十分理想。基于以上两点不足,提出周期ESD算法(Seasonal ESD,S-ESD)[7]。S-ESD算法的基本思路是使用一种改进型的STL算法提取时间序列的残余项,并在提取到的残余项上使用ESD算法来识别异常值。这样的设计可以保证该算法既可以识别全局异常值又可以侦测到局部异常值。改进后的STL时间序列分解算法是使用数据的中位数作为数据的“稳定趋势项”。这样改进的目的是防止引入“假异常值”,即由于时间序列分解而在残余项上存在的异常值,但其实在实际数据集上并不存在。改进后的残余项计算如下:

RX=X-SX-median(X)

其中x为原始时间序列,SX是STL分解得到的周期项,median(X)是原始时间序列的中位数。

S-ESD算法的不足之处也很明显,当数据集中有很多异常值时,该算法的效果大打折扣。这是因为当异常值的数量增多后,ESD算法所依赖的平均值和标准差会受到很大的影响[8],这就导致了ESD算法会漏判很多异常值。针对这样的缺陷,提出周期混合ESD算法(Seasonal Hybrid ESD,S-H-ESD)。S-H-ESD是在S-ESD的基础上通过提高算法的鲁棒性进而提高算法对异常值的识别能力。改进的措施主要是用更加稳健的统计参数替换原始ESD中使用的易受异常值影响的统计参数,具体方法如下:

-使用中位数替代原始ESD算法中使用的平均值

-使用绝对中位差(Median Absolute Deviation,MAD)替代标准差[9]:

数据集的中位数比平均值具有更强的鲁棒性,理论上可以“容忍”不超过总数据量的50%的异常值。因为中位数来源于该数值在排序后的数据集中的相对位置,使用更大(更小)的数值替换比中位数更大(小)的数值并不会改变中位数数值,而相同的替换操作会改变数据平均值的数值,所以使用中位数代替平均值可以使得ESD算法的鲁棒性更强。绝对中位差是各个数据与中位数差值的绝对值的中位数,它的稳健性要强于传统ESD算法中使用的标准差,计算公式如下:

MAD=median(|Xi-median(X)|)

由于在计算中只用到取中位数的计算,并没有涉及到求解数值上的平均值,因此显然绝对中位差比普通的标准差具有更强的稳健性。使用MAD改进后的ESD算法中的统计量计算公式为:

经过以上的改进,S-H-ESD算法比传统ESD具有更强的稳健性(鲁棒性),尤其是在具有很多异常值的数据集上,算法流程见图 2。但也应注意到,由于S-H-ESD算法中需要求取数据的中位数,所以需要先对数据进行排序,故S-H-ESD算法的计算量和相应的耗时都要高于S-ESD算法。

3 案例分析

图2 S-H-ESD算法流程图Fig.2 Flowchart of S-H-ESD algorithm

本部分将使用S-H-ESD算法对用于实际生产中的污水处理的RO膜压差数据进行异常值检测和处理,并对结果进行讨论。案例数据为某污水处理厂三级RO膜系统的第一级压力差的监测数据,时间范围为2013年1月1日至2016年12月31日,共4年。该数据以天为最小时间单位,每日检测得到一个膜压差。该类数据的理想状况应该是数据或缓慢或快速地增长,代表因堵塞导致的膜压差不断增大,增大到一定程度后在人工清洗的作用下压力差会重新恢复到较低的水平,之后再继续增长,从而形成“增长-清洗-增长”的循环周期。原始数据如图2所示,从图中可以明显地看出该数据集中存在很多离群值,这些离群值都是以“毛刺”的形态出现在图中,结合该类数据的理想状态可以判定这些离群值为异常值。这些异常值的来源较复杂,一般是因为传感器的问题导致数据值出现突然的异常,也存在人为因素导致的数据异常。值得注意的是,有些异常值偏离理想状况较明显,有些异常值则没有较大的偏离。

图4中红色三角形标记点为S-H-ESD算法判定为异常值的数据点,通过和图3的对比可以看出大部分异常值都被准确的识别出,算法对异常值的识别率较高。以传统“3σ方法”确定的异常值界限(此案例中约为100psi)作为划分指标,高于此界限的异常值被认为是显著异常值(即可以被传统方法识别出),低于此界限则被认为是不显著异常值(不能够被“3σ方法”识别出)。其中,对于显著异常值的识别率达到了 78.6%。对数值低于100psi的较小异常值也有很好的识别能力,特别是在2014年末处的较多的较小异常值,几乎全部被识别出。同时,2013年和2014年的较小异常值在数值上小于2016年度的正常数值,这样的不显著异常值很难被传统的异常值检测方法识别出,但该算法可以准确侦测出这些异常值的存在。该算法在正确识别出异常值的同时,也存在识别错误的问题,例如存在3个较大的异常值没有被识别出的情况,即出现“假阴性”问题。同时也应注意到,算法将一些正常的数据点标识为了异常值,即出现了“假阳性”的问题,但出现假阳性的数据比例占总数据量的比重很低,可以忽略不计。

图3 原始数据Fig.3 Raw data

ESD检测比例k = 0.1,ESD显著水平 α = 0.05图4 H-S-ESD算法检测出的原始数据中的异常值(红色三角点)Fig.4 Anomalies detected (red triangle points) by S-H-ESD in raw data

如何处理被标记出的异常值也是本研究关心的另一个重点问题。实际的操作中,如果只是单纯地将异常值删除,则会增加数据的缺失程度,特别是对于异常值较多的数据,会造成大量的数据缺失。同时,删除被标记出的异常值也会将被误标记为异常值的正常数据(假阳性数据)一并删除,因此这样的处理方式并不适用于所有案例。拟利用原始数据在传统STL算法分解下的趋势项和周期项在异常值点的加和(T+S)作为异常值的替换值。这样处理的基本原理是认为非异常值点上STL分解下的残余项数值(R)应当较小,可以忽略不计,故用周期项和趋势项之和作为“理想状况”下的数据值。使用上述异常值替换规则对图4中被标记的异常值进行处理,结果如图5所示。可见在进行一次完整的异常值检测和替换后,得到了与理想状况较为相近的数据样式,异常值的数量明显减少。

图5中仍然存在人为可以判断的异常点,尤其是三个较显著的异常值点。针对这样的问题,拟对获得的数据进行第二次异常值检测-替换操作,因为此时数据中的异常值数量已经明显减少,故第二次异常值检测设定参数K = 0.025。检测到的异常值和替换后的数据如图6和图7所示,可见在进行两次异常值检测-替换操作后,数据中的绝大部分异常值已经被准确检测和替换,数据和理想状态已经十分相似。

图5 经过一次S-H-ESD异常值检测和替换后的数据Fig.5 Data treated after first anomaly detection and replaced by S-H-ESD

ESD检测比例k = 0.025,ESD显著水平 α= 0.05图6 经过第二次S-H-ESD检测的异常值(红色三角点)Fig.6 Anomalies detected (red triangle point) by second S-H-ESD

图7 经过两次S-H-ESD异常值检测和替换后的数据Fig.7 Data treated after anomaly detections twice and replaced by S-H-ESD

4 结 论

4.1 S-H-ESD算法对污水处理中的RO膜压差数据中的异常值的识别准确率较高,识别速率也较快,可以作为一种常用的异常值检测手段处理日常的运行数据。但该方法仍然存在漏判(假阴性)的可能性,针对这个问题,可以对同一数据多次进行S-H-ESD检测可以提高总体异常值检测的准确度,解决单次检测中可能出现的“假阴性”的问题。同时,由于此方法基于一种普适的数学算法,并不涉及具体的学科内容,因此该方法不仅适用于污水处理的RO膜压差数据,对其他时间序列数据都有较好的适用性,例如供水管网的SCADA数据和其他水质/水量检测数据等。

4.2 对于被S-H-ESD算法检测出的异常值,可以使用传统STL算法中的趋势项和周期项的和(T+S)做为异常数据点的替换值。这样的处理方式尽可能地降低了异常值处理对样本数据质量的影响,既没有增加数据缺失的程度,也没有掩盖数据的周期性和趋势性等特点,最大限度的保证了数据的质量,为之后基于监测数据的分析和判断、构建“智慧水务”平台等提供了良好的基础。

猜你喜欢
中位数标准差压差
燃气过滤器滤网流阻特性及压差评价
荣威混动e550高压电池组电芯压差过大
在线处理脱丁烷塔压差高
浅析标准差及其在工程统计中的运用
中位数计算公式及数学性质的新认识
更 正
浅析滤纸透气度与初始压差的关系
导学案不能沦落为“习题单”:以“中位数和众数”的导学案为例
医学科技论文中有效数字的确定
谈数据的变化对方差、标准差的影响