孟 滔
(四川大學錦城學院智能制造學院,四川 成都 611731)
飲水安全越來越受到人們的關注。目前,我國農村在飲水安全上存在著眾多的問題[1],隨著越來越多的工廠建在農村,嚴重污染了農村的自然水源,導致大多數水源都受到了不同程度的污染。并且農村大多數自來水廠規模小,處理原水能力弱。目前農村自來水廠大多采用在線水質監測預警系統對原水和出廠水進行監測,但僅僅監測是不夠的,需要對原水水質進行預測,提前知道原水水質情況,做好相應的應對措施,以降低自來水廠出廠水不達標的情況。
對于水質預測的方法,目前國內外采用主要有人工神經網絡算法[2-4]、貝葉斯網絡算法[5,6]、支持向量回歸SVR算法[7]等。其中,SVR算法比人工神經網絡算法、貝葉斯網絡算法更適用于小樣本數據,并且具有更好的泛化性,特別適用于規模較小的自來水廠進行原水水質預測。使用SVR進行原水水質預測時,需要先建立原水水質預測模型,其中核參數g和懲罰參數C是影響原水水質預測模型預測精度的關鍵。針對這2個參數,傳統方法是使用網格搜索法進行參數尋優,但是其尋優時間特別長。針對這個問題,薛同來、趙冬暉等人[8]提出基于GA優化的SVR水質預測模型,該方法利用遺傳算法對SVR的參數進行尋優,減少了參數尋優的時間;但由于SVR的最佳參數范圍不定,當參數的尋優范圍設置過大時,存在訓練時間過長,當參數的尋優范圍設置過小時,存在預測精度不高的情況。對于SVR參數尋優,柯聲明[9]提出使用粒子群搜索方法優化SVR參數對CODMn進行預測,同樣的由于SVR最佳參數范圍不定,導致訓練時間過長或者預測精度不高。
本文優化現有的粒子群搜索算法對SVR的核參數g和懲罰參數C的尋優范圍。在一個較大的范圍內通過網格搜索算法迅速得到一組最佳參數的粗值,根據得到的粗值減小粒子群搜索算法的尋優范圍。實驗表明,該改進算法比網格搜索算法、遺傳算法、粒子群算法具有更短的訓練時間,而且預測精度和網格搜索算法、遺傳算法、粒子群算法相當。
支持向量回歸SVR是支持向量機SVM中一個重要分支,用于解決預測問題。SVM是由Corters、Vapnik等人[10]在1995年提出的一種監督學習,適用于解決分類問題,后衍生用于解決數據回歸預測問題。其核心思想是基于誤差的結構風險最小化原則,在高維空間找出一條曲線來表示輸入數據與輸出數據之間的關系,通過該曲線的函數式就可以得到想要的預測值。該曲線函數可表示:
f(x)=wT·φ(x)+b
(1)
式中,w表示高維空間中的特征向量;φ(x)表示低維數據到高維空間的非線性映射。
對于公式(1)可構建公式(2)的代價函數:
(2)
式中,C表示懲罰參數,決定預測模型對數據的擬合程度。
對于公式(2)根據結構化風險最小原則和引入拉格朗日函數以及一些拉格朗日因子,得到最終水質預測的擬合函數表達式:
(3)
式中,K(xi,xj)是核函數,本文采用徑向基核函數。
粒子群算法(PSO)是基于對鳥類捕食行為的研究發展而來的,其基本思想是利用群體中的個體對信息的共享從而使得整個群體的運動在問題求解空間中產生從無序到有序的演化過程,從而獲得問題的最優解。將粒子群算法引入到SVR參數尋優當中,比傳統的網格搜索算法具有更快的訓練速度,并且當參數的尋優范圍設置恰當時,其預測精度和網格搜索法基本相當。
傳統的粒子群算法對SVR參數的尋優范圍往往是基于自身經驗來進行設定的。如果參數的尋優范圍設置過小,有可能會使得到的核參數g和懲罰參數C不是最佳的,影響預測精度。如果參數的尋優范圍設置過大,那么就會存在尋優時間過長的問題。如何解決這個參數的設置范圍是解決尋優時間過長的關鍵。
通過傳統網格搜索算法對某水廠耗氧量數據進行回歸訓練,結果如圖1所示。

圖1 網格搜索法尋優結果
從圖1中可以看出,只有在比較小的范圍內得到的均方誤差MSE才是比較小的,所以如果可以在設置參數尋優時就得到此范圍,那么使用粒子群算法時可以極大地縮短訓練時間,并且得到的預測精度也不會降低。針對以上問題,可以使用傳統網格搜索法在大范圍內使用較大的步長對核參數g和懲罰參數C進行粗尋優,得到的一組最佳的粗值。然后通過適當放大和縮小該組粗值作為粒子群算法的參數尋優范圍,該方法不僅可以減少建立SVR水質預測模型的時間而且不必對不同水質因子重新設置SVR參數的尋優范圍,一樣可以得到最佳的核參數g和懲罰參數C。在使用該方法得到核參數g和懲罰參數C較小范圍內使用網格搜索算法進行回歸訓練,結果如圖2所示,可以看出在比較大的范圍內均方誤差MSE都比較小。
改進粒子群算法具體實現如下:對水質數據進行預處理,異常和缺失數據使用單一插值法;對水質數據劃分為訓練數據和預測數據,并做歸一化處理。
(4)
式中,xmin表示該列中的最小值;xmax表示該列中的最大值;y表示歸一化后的數據。
設定懲罰參數C和核參數g在一個較大的范圍。利用網格搜索法,初步求出(C,g)的粗值。此值作為粒子群算法參數C和g的基準值。根據得到的基準值放大和縮小2倍作為粒子群算法參數C和g的尋優范圍。利用其建立的水質預測模型,對水質進行預測。

圖2 優化后網格搜索法尋優結果
計算機平臺為windows 10(64位)系統,處理器為i5-4210M,內存為16GB。使用軟件仿真平臺為matlab2010b,工具包采用使用較廣泛的LIBSVM進行測試。SVR中核函數選用徑向基核函數(RBF)。其中數據來自某自來水廠連續642組原水數據,該數據每天采集1次,包含4種水質因子數據:氨氮、耗氧量、渾濁度、總大腸菌群。其中,前635組數據作為訓練數據,后7組數據作為預測數據。對這些數據分別采用網格搜索法、遺傳算法(GA-SVR)、粒子群算法(PSO-SVR)、改進粒子群算法(IPSO-SVR)進行對比實驗。
為保證全面對比各個算法的性能,實驗中采用3種評價指標來說明算法的性能。第1個評價指標為均方根誤差(Root Mean Squared Error,RMSE),定義為公式(5);第2個評價指標為平均相對誤差(Mean Relative Error,MRE),定義為公式(6);第3個評價指標為最大相對誤差(Biggest Relative Error,BRE),即相對誤差的最大值。
(5)
(6)
4種算法對4種水質因子訓練時間和預測性能如表1和表2所示。為保證實驗的有效性,表中GA-SVR、PSO-SVR、IPSO-SVR實驗結果取20次的平均值,網格搜索算法的實驗結果取8次的平均值。

表1 訓練時間

表2 4種方法預測性能
分析表1可知,對4種水質因子建立水質預測模型,網格搜索法建立水質預測模型花費的時間比其它3種算法都長,改進后的粒子群算法建立水質預測模型花費的時間最短。
這是因為網格搜索法需要對參數范圍內的所有點進行計算,導致其尋找最佳參數組耗時最長。改進后的粒子群算法因為事先通過網格搜索法進行粗尋優后參數范圍大大減小了,所以其尋找最佳參數組耗時最短。比網格搜索法時間最大大約縮短16.5倍,比遺傳算法時間最大大約縮短6倍,比粒子群算法時間最大大約縮短1.4倍。
分析表2可知,對4種水質因子進行預測,4種方法的性能基本一致,這是因為在相同的參數尋優范圍內,4種方法都能得到較好的參數組建立水質預測模型,這也說明了本文通過網格搜索法縮小參數尋優范圍是可行的。
針對使用粒子群算法建立SVR水質預測模型,其參數范圍設置不確定,導致建立水質預測模型時間過長的問題。本文通過網格搜索算法縮小粒子群算法參數尋優范圍,從而更快地建立水質預測模型。實驗表明,使用該改進算法不僅可以有效地減少建立水質預測模型的時間,并且其預測精度和網格搜索法、遺傳算法、粒子群算法相當。