劉峻清,陶 濤
(同濟大學環(huán)境科學與工程學院,上海 200092)
隨著社會的進步,污水處理廠的出水不僅被排放到自然水體中,也會被用于很多其他用途,例如作為工業(yè)冷卻水的來源。這些用途對出水的水質提出了較高的要求,RO膜處理工藝也因此被更廣泛地應用在污水處理中。RO膜壓差作為關鍵的運行指標,一直被視為實際運營中的重要參考數(shù)據(jù)被用以判斷RO膜的運行情況及決定是否應當對RO膜進行人工清洗。實際運營中,常使用實時檢測系統(tǒng)對膜壓差進行實時檢測并匯集成數(shù)據(jù)庫,以便運營人員進行分析和判斷。
由于實際狀況的復雜性,檢測到的膜壓差數(shù)據(jù)中常含有很多異常數(shù)據(jù),這些異常值的來源很復雜,有些是因為傳感器的異常狀況造成的異常值,有些則是因數(shù)據(jù)傳輸系統(tǒng)的問題而產生。這些異常值對數(shù)據(jù)的質量造成了明顯的影響,不利于運營人員對數(shù)據(jù)的分析和判斷,如何減少異常值對數(shù)據(jù)的影響一直是研究的熱點問題之一。
目前被廣泛使用的異常值檢測方法是“3σ方法”,該方法假設樣本數(shù)據(jù)服從正態(tài)分布,“正?!钡臄?shù)據(jù)應當集中在距離均值三倍樣本標準差的范圍之內,異常值和均值之間的距離則大于三倍樣本標準差,故該方法將數(shù)值偏離均值超過三倍樣本標準差的數(shù)據(jù)點判定為異常值。顯然,該方法存在很大的局限性,實際運行數(shù)據(jù)的分布情況和正態(tài)分布之間有很大差距,同時實際運行中得到的數(shù)據(jù)還會具有周期性和趨勢性等特點,這就導致了“3σ方法”并不適用于實際運行數(shù)據(jù)的異常值檢測。圖1為使用“3σ方法”對某污水廠RO膜壓差監(jiān)測數(shù)據(jù)進行異常值檢測的結果,圖中虛線為該方法確定的異常值判定標準(樣本均值 + 3倍樣本標準差),可以明顯地看出該方法漏判了許多不顯著的異常值(虛線之下)。
虛線表示該方法檢測到的異常值判斷標準,虛線以上的數(shù)據(jù)點被判斷為異常值圖1 “3σ方法”檢測到的異常值Fig.1 Anomaly detection with 3σ method
如何處理被判定為異常值的數(shù)據(jù)點也是關鍵問題之一,常用的辦法是刪除異常值,但該方法會導致數(shù)據(jù)缺失的問題,特別是對異常值較多的樣本,過多的數(shù)據(jù)缺失會嚴重地影響數(shù)據(jù)質量。另外一種常見的處理方式是使用樣本的某一個統(tǒng)計量來替代所有異常值,例如樣本均值或者樣本中位數(shù)等,但這樣的處理方式過于粗糙,忽視了局部樣本可能具有的周期性等特點,也不是一個理想的處理方式。
2.1 Grubbs檢測和ESD
Grubbs檢驗[1-2]多被用于檢驗一組數(shù)據(jù)中的最大(小)值是否屬于離群值(異常值),該檢驗假設該組數(shù)據(jù)符合正態(tài)分布。Grubbs檢驗一次只能檢驗一個異常值(離群值),但實際情況中一組數(shù)據(jù)常常會有多于一個的異常值。為了解決實際數(shù)據(jù)集中多個異常值的問題,Rosner[3-4]提出了ESD(Extreme Studentized Deviate test)算法檢驗數(shù)據(jù)集中的k個最大值(最小值)是否為異常值。該算法為Grubbs算法的延伸,依次判斷前k個最大值(最小值)是否為異常值。該算法的突出優(yōu)點是參數(shù)設定簡單,只需指定假設的異常值數(shù)量k即可,k的數(shù)值最多可以達到總樣本數(shù)的49.9%。
2.2 LOESS和STL
LOESS[5](Local Weighted Regression)是一種局部加權多項式回歸的算法,該方法的核心思想是在欲估點處利用低階多項式(1階或2階)進行加權擬合,權重的計算根據(jù)已知數(shù)據(jù)點和欲估計點間的距離確定。在選定的窗口寬度內,離目標估計點越近的數(shù)據(jù)點被給予的權重越大,離目標點越遠的數(shù)據(jù)點獲得的權重越小。該算法的優(yōu)勢是不需要假設數(shù)據(jù)點的分布,只需要選擇多項式的階數(shù)和窗口寬度即可。
STL[6](Seasonal Decomposition of Time Series by Loess)是一種基于LOESS的時間序列分解算法,該算法將時間序列分解成3個部分,即趨勢項(T)、周期項(S)和殘余項(R):
Y=T+S+R
該算法主要由兩層循環(huán)構成:外部循環(huán)和嵌套在內的內循環(huán)。內循環(huán)負責計算趨勢項和周期項;外循環(huán)負責計算一個穩(wěn)健(魯棒)權重,該權重將被使用在下一步 的內循環(huán)中以減小瞬態(tài)狀況和異常值對趨勢項和周期項的影響,計算如下:
h=6×median(|Rv|)
ρv=B(|Rv|/h)
2.3 S-ESD和S-H-ESD
由于ESD算法并不能很好的處理具有周期性的數(shù)據(jù),同時由于實際的數(shù)據(jù)并不一定遵循某一類分布,導致ESD對某些數(shù)據(jù)中的異常值的偵測效果并不十分理想。基于以上兩點不足,提出周期ESD算法(Seasonal ESD,S-ESD)[7]。S-ESD算法的基本思路是使用一種改進型的STL算法提取時間序列的殘余項,并在提取到的殘余項上使用ESD算法來識別異常值。這樣的設計可以保證該算法既可以識別全局異常值又可以偵測到局部異常值。改進后的STL時間序列分解算法是使用數(shù)據(jù)的中位數(shù)作為數(shù)據(jù)的“穩(wěn)定趨勢項”。這樣改進的目的是防止引入“假異常值”,即由于時間序列分解而在殘余項上存在的異常值,但其實在實際數(shù)據(jù)集上并不存在。改進后的殘余項計算如下:
RX=X-SX-median(X)
其中x為原始時間序列,SX是STL分解得到的周期項,median(X)是原始時間序列的中位數(shù)。
S-ESD算法的不足之處也很明顯,當數(shù)據(jù)集中有很多異常值時,該算法的效果大打折扣。這是因為當異常值的數(shù)量增多后,ESD算法所依賴的平均值和標準差會受到很大的影響[8],這就導致了ESD算法會漏判很多異常值。針對這樣的缺陷,提出周期混合ESD算法(Seasonal Hybrid ESD,S-H-ESD)。S-H-ESD是在S-ESD的基礎上通過提高算法的魯棒性進而提高算法對異常值的識別能力。改進的措施主要是用更加穩(wěn)健的統(tǒng)計參數(shù)替換原始ESD中使用的易受異常值影響的統(tǒng)計參數(shù),具體方法如下:
-使用中位數(shù)替代原始ESD算法中使用的平均值
-使用絕對中位差(Median Absolute Deviation,MAD)替代標準差[9]:
數(shù)據(jù)集的中位數(shù)比平均值具有更強的魯棒性,理論上可以“容忍”不超過總數(shù)據(jù)量的50%的異常值。因為中位數(shù)來源于該數(shù)值在排序后的數(shù)據(jù)集中的相對位置,使用更大(更小)的數(shù)值替換比中位數(shù)更大(小)的數(shù)值并不會改變中位數(shù)數(shù)值,而相同的替換操作會改變數(shù)據(jù)平均值的數(shù)值,所以使用中位數(shù)代替平均值可以使得ESD算法的魯棒性更強。絕對中位差是各個數(shù)據(jù)與中位數(shù)差值的絕對值的中位數(shù),它的穩(wěn)健性要強于傳統(tǒng)ESD算法中使用的標準差,計算公式如下:
MAD=median(|Xi-median(X)|)
由于在計算中只用到取中位數(shù)的計算,并沒有涉及到求解數(shù)值上的平均值,因此顯然絕對中位差比普通的標準差具有更強的穩(wěn)健性。使用MAD改進后的ESD算法中的統(tǒng)計量計算公式為:
經過以上的改進,S-H-ESD算法比傳統(tǒng)ESD具有更強的穩(wěn)健性(魯棒性),尤其是在具有很多異常值的數(shù)據(jù)集上,算法流程見圖 2。但也應注意到,由于S-H-ESD算法中需要求取數(shù)據(jù)的中位數(shù),所以需要先對數(shù)據(jù)進行排序,故S-H-ESD算法的計算量和相應的耗時都要高于S-ESD算法。
圖2 S-H-ESD算法流程圖Fig.2 Flowchart of S-H-ESD algorithm
本部分將使用S-H-ESD算法對用于實際生產中的污水處理的RO膜壓差數(shù)據(jù)進行異常值檢測和處理,并對結果進行討論。案例數(shù)據(jù)為某污水處理廠三級RO膜系統(tǒng)的第一級壓力差的監(jiān)測數(shù)據(jù),時間范圍為2013年1月1日至2016年12月31日,共4年。該數(shù)據(jù)以天為最小時間單位,每日檢測得到一個膜壓差。該類數(shù)據(jù)的理想狀況應該是數(shù)據(jù)或緩慢或快速地增長,代表因堵塞導致的膜壓差不斷增大,增大到一定程度后在人工清洗的作用下壓力差會重新恢復到較低的水平,之后再繼續(xù)增長,從而形成“增長-清洗-增長”的循環(huán)周期。原始數(shù)據(jù)如圖2所示,從圖中可以明顯地看出該數(shù)據(jù)集中存在很多離群值,這些離群值都是以“毛刺”的形態(tài)出現(xiàn)在圖中,結合該類數(shù)據(jù)的理想狀態(tài)可以判定這些離群值為異常值。這些異常值的來源較復雜,一般是因為傳感器的問題導致數(shù)據(jù)值出現(xiàn)突然的異常,也存在人為因素導致的數(shù)據(jù)異常。值得注意的是,有些異常值偏離理想狀況較明顯,有些異常值則沒有較大的偏離。
圖4中紅色三角形標記點為S-H-ESD算法判定為異常值的數(shù)據(jù)點,通過和圖3的對比可以看出大部分異常值都被準確的識別出,算法對異常值的識別率較高。以傳統(tǒng)“3σ方法”確定的異常值界限(此案例中約為100psi)作為劃分指標,高于此界限的異常值被認為是顯著異常值(即可以被傳統(tǒng)方法識別出),低于此界限則被認為是不顯著異常值(不能夠被“3σ方法”識別出)。其中,對于顯著異常值的識別率達到了 78.6%。對數(shù)值低于100psi的較小異常值也有很好的識別能力,特別是在2014年末處的較多的較小異常值,幾乎全部被識別出。同時,2013年和2014年的較小異常值在數(shù)值上小于2016年度的正常數(shù)值,這樣的不顯著異常值很難被傳統(tǒng)的異常值檢測方法識別出,但該算法可以準確偵測出這些異常值的存在。該算法在正確識別出異常值的同時,也存在識別錯誤的問題,例如存在3個較大的異常值沒有被識別出的情況,即出現(xiàn)“假陰性”問題。同時也應注意到,算法將一些正常的數(shù)據(jù)點標識為了異常值,即出現(xiàn)了“假陽性”的問題,但出現(xiàn)假陽性的數(shù)據(jù)比例占總數(shù)據(jù)量的比重很低,可以忽略不計。
圖3 原始數(shù)據(jù)Fig.3 Raw data
ESD檢測比例k = 0.1,ESD顯著水平 α = 0.05圖4 H-S-ESD算法檢測出的原始數(shù)據(jù)中的異常值(紅色三角點)Fig.4 Anomalies detected (red triangle points) by S-H-ESD in raw data
如何處理被標記出的異常值也是本研究關心的另一個重點問題。實際的操作中,如果只是單純地將異常值刪除,則會增加數(shù)據(jù)的缺失程度,特別是對于異常值較多的數(shù)據(jù),會造成大量的數(shù)據(jù)缺失。同時,刪除被標記出的異常值也會將被誤標記為異常值的正常數(shù)據(jù)(假陽性數(shù)據(jù))一并刪除,因此這樣的處理方式并不適用于所有案例。擬利用原始數(shù)據(jù)在傳統(tǒng)STL算法分解下的趨勢項和周期項在異常值點的加和(T+S)作為異常值的替換值。這樣處理的基本原理是認為非異常值點上STL分解下的殘余項數(shù)值(R)應當較小,可以忽略不計,故用周期項和趨勢項之和作為“理想狀況”下的數(shù)據(jù)值。使用上述異常值替換規(guī)則對圖4中被標記的異常值進行處理,結果如圖5所示。可見在進行一次完整的異常值檢測和替換后,得到了與理想狀況較為相近的數(shù)據(jù)樣式,異常值的數(shù)量明顯減少。
圖5中仍然存在人為可以判斷的異常點,尤其是三個較顯著的異常值點。針對這樣的問題,擬對獲得的數(shù)據(jù)進行第二次異常值檢測-替換操作,因為此時數(shù)據(jù)中的異常值數(shù)量已經明顯減少,故第二次異常值檢測設定參數(shù)K = 0.025。檢測到的異常值和替換后的數(shù)據(jù)如圖6和圖7所示,可見在進行兩次異常值檢測-替換操作后,數(shù)據(jù)中的絕大部分異常值已經被準確檢測和替換,數(shù)據(jù)和理想狀態(tài)已經十分相似。
圖5 經過一次S-H-ESD異常值檢測和替換后的數(shù)據(jù)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異常值檢測和替換后的數(shù)據(jù)Fig.7 Data treated after anomaly detections twice and replaced by S-H-ESD
4.1 S-H-ESD算法對污水處理中的RO膜壓差數(shù)據(jù)中的異常值的識別準確率較高,識別速率也較快,可以作為一種常用的異常值檢測手段處理日常的運行數(shù)據(jù)。但該方法仍然存在漏判(假陰性)的可能性,針對這個問題,可以對同一數(shù)據(jù)多次進行S-H-ESD檢測可以提高總體異常值檢測的準確度,解決單次檢測中可能出現(xiàn)的“假陰性”的問題。同時,由于此方法基于一種普適的數(shù)學算法,并不涉及具體的學科內容,因此該方法不僅適用于污水處理的RO膜壓差數(shù)據(jù),對其他時間序列數(shù)據(jù)都有較好的適用性,例如供水管網的SCADA數(shù)據(jù)和其他水質/水量檢測數(shù)據(jù)等。
4.2 對于被S-H-ESD算法檢測出的異常值,可以使用傳統(tǒng)STL算法中的趨勢項和周期項的和(T+S)做為異常數(shù)據(jù)點的替換值。這樣的處理方式盡可能地降低了異常值處理對樣本數(shù)據(jù)質量的影響,既沒有增加數(shù)據(jù)缺失的程度,也沒有掩蓋數(shù)據(jù)的周期性和趨勢性等特點,最大限度的保證了數(shù)據(jù)的質量,為之后基于監(jiān)測數(shù)據(jù)的分析和判斷、構建“智慧水務”平臺等提供了良好的基礎。