馬 創,王 堯,李林峰
(重慶郵電大學 a.軟件工程學院;b.通信與信息工程學院,重慶 400065)
水是人類社會生產生活必不可少的資源,水資源相關的環境保護與循環利用至關重要。隨著社會的進步,水體污染對社會的影響也日益明顯,水體被排入大量污染物,對人類的日常生活造成極大的威脅。而水質預測可以為有關部門的干預決策提供重要參考。在許多工業場景中,水質預測也具有重要意義。例如在污水處理工藝中,如果可以通過水質預測提前預知突發的水質超標情況,就能夠為工程人員提供預警,預留時間人為干預,保證污水處理出廠水質達標。
水質預測主要有如下幾種預測方法:通過構建物理模型的方法[1],灰色系統預測法,神經網絡預測法[2],模糊理論預測法[3],以及數理統計預測法等。
顏劍波等人[4]通過分析水質變量之間的規律,建立多元回歸模型,對三門峽斷面水質進行了預測。劉東君等人[5]結合灰色系統預測法與神經網絡,對北京密云水庫的溶解氧進行了預測,通過將混合模型分別于2個原型方法作比較,表明混合模型相比2個原型方法,預測結果更為精確和穩定。姜云超等人[6]綜合運用 BP, SOM 與模糊綜合評價法對黃河水質進行了評價,取得了較理想的結果。榮潔等人[7]提出指數平滑法-馬爾科夫預測模型,將平滑處理后的數據通過馬爾科夫預測模型對合肥湖濱與巢湖裕溪口2個斷面的CODMn、TP、TN濃度進行了預測。RederK等人[8]使用人工神經網絡模型預測水質變化,證實了神經網絡模型是被用于水質預測的可行性。Alizadeh M J和Kavianpour M R[9]使用小波神經網絡對太平洋希洛灣地區的水質進行了預測,證明了小波神經網絡模型相對于其他神經網絡模型的優越性。Azimi S等人[10]結合神經網絡與改進的模糊聚類技術來預測了水質惡化的概率。
文獻中雖然對水質預測方面作了深入的研究,但并未針對原始數據的各項特征對預測任務的影響權重進行評估,而在輸入預測模型的數據維度比較多時,對預測任務貢獻比較小的特征會干擾預測模型,降低預測模型的性能。因此使用遺傳算法來調整各特征維度的權重,使其符合預測模型的特性,提高了預測模型的預測精度,為水質預測提供了一種有價值的解決方案。
源數據來自重慶市某污水廠2016年1月1日至2018年12月31日之間每日采集的進出水水質數據與活性污泥池監測數據,共有1 096條數據。源數據共有21維,主要包含了進出水的5 d需氧量、化學需氧量、酸堿度、總磷、總氮等水質數據與污水處理總量、耗電量、活性污泥濃度等污水處理設備相關數據。本次水質預測中標簽以國家三類水質標準中相關水質的標準為閾值。
在正式使用遺傳算法依據數據優化特征權重向量之前,首先要經過一系列數據預處理。處理流程主要分為數據特征初步選擇、標簽生成、數據標準化處理3個步驟。
為了加快預處理速度,首先依據一般經驗剔除一部分較為明顯地與問題相關性小的特征,本數據在剔除了若干特征后,剩余17維特征。列出部分數據樣例如表1所示。

表1 數據樣例表
初步選擇特征后,需要為數據生成對應標簽。假設使用連續的nd的連續數據來預測下一天的水質情況,則數據將被整合為1 096-n條,17*n維的可用數據。由于本次實驗中特征維數基數較大,n值增長會導致數據維數急劇上升,引發維度災難,從而極大地影響預測模型的性能,所以將此處的n值定為1,使用原數據中的每一條數據預測其后一條(1d后)的水質情況。
據此依據每條數據的總磷、總氮、BOD5、CODcr 4項出水水質結合國家三類水質標準生成其前一條數據的標簽。標簽生成步驟完成后,數據共1 095條,17維。
由數據樣例可以看出原數據中各特征維度的數據尺度差距非常大,如果直接導入預測模型會導致部分特征維度被模型忽略掉。由于沒有關于特征之間權重的可信先驗知識的情況下,將數據進行標準化操作,統一所有特征維度的尺度(方差)至相同,然后通過遺傳算法進行特征權重調整,達到特征選擇的目的。
支持向量機是一種基于統計學習理論的一種新類型的廣義分類器,由于它使結構風險最小化、有較好的泛化能力,在引入核函數后,還能將在低維輸入空間線性不可分的樣本通過映射至高位空間使樣本變得線性可分,被廣泛應用于各種監督學習場景下[11-13]。近年來,不少研究將SVM應用于各類預測分析問題[14],在進行小樣本數據預測時,其預測能力甚至優于BP神經網絡方法和RBF神經網絡。
設樣本(x1,y1),(x2,y2),…,(xk,yk)∈RN×R,其中xi為輸入數據,yi對應標簽,k為數據總數,則其最小化目標函數可表示為
(1)
式中:C為平衡模型經驗風險與模型復雜度的懲罰因子;ζ為非負松弛變量;φ()為受核函數相關的函數;K(xi,xj)=φ(xi)Tφ(xj)。
通過拉格朗日法將上述最優化問題轉化為對偶問題。
(2)
最后可得決策函數
(3)
模型在預測時,輸入數據x,則可通過上式計算得到對應的預測結果。
在數據挖掘機器學習領域中,高維數據通常需要特征選擇降維以避免使模型受到維度災難的影響,這使得特征選擇成為機器學習算法數據預處理步驟中的重要一環。
遺傳算法是一種模擬物種進化模式而來的迭代優化算法。它通過模擬生物種群的變異、繁衍來優化候選解。由于遺傳算法具有全局優化搜索的特點[15],在各個領域都有著廣泛的應用[16-20]。遺傳算法的流程圖如圖1所示。

圖1 遺傳算法流程圖
在使用遺傳算法優化SVM模型時,通過選取每個維度的放縮因子組成的向量v=(v1,v2,v3,…,vm)作為種群個體,將訓練集數據以特征權重向量v放縮后數據x′=x×vT供給SVM模型訓練,其在驗證集上的F1分數作為個體適應度。
遺傳算法優化特征權重向量的過程中,是將SVM模型調整得適用于驗證集數據分布的特點,在將優化結果放到測試集上進行驗證時,由于驗證集數據分布不完全與測試集數據分布相同,會因為過擬合而導致模型在測試集上的性能相比于驗證集出現退化。這個退化本身是由于過擬合產生的,可以通過調整遺傳算法的種群大小、迭代次數、變異程度參數來抑制。
綜上所述,采用原始水質數據x、國家三級水質標準訓練基于遺傳算法與SVM的水質預測模型的完整流程如圖2所示。

圖2 預測模型流程圖
本實驗所用硬件為聯想Y500筆記本一臺,CPU型號為I5-3210M,內存8 GB。軟件平臺為python 3.5.3,主要使用了pandas、numpy、sklearn 3個庫。
實驗依據污水廠的1 000余條歷史數據,對廠方感興趣的總磷、總氮、氨氮、BOD5、CODcr 5項出水水質分別進行預測,并與傳統SVM預測的結果進行對比。
由于模型的過擬合問題可以通過加大驗證集數據數量,確保驗證集數據分布貼近實際應用時的情形(測試集)來緩和,所以在數據分段時,將數據按3∶5∶2的比例分為訓練集、驗證集與測試集。
在給定遺傳網絡中種群大小為10,變異范圍為0~0.1的前提下,通過測試觀察驗證集上的適應度與測試集上的適應度隨迭代次數變化情況來確定合適的迭代次數。實驗得到的效果圖如圖3所示。

圖3 遺傳算法適應度曲線
圖3中驗證集的適應度隨著進化代數小幅震蕩提升并在40代左右達到一個穩定值,而對測試集的適應度在第23代左右達到最大值。為了避免實驗的隨機性影響,保守取最佳迭代次數為20。
由于水質除少數情況外,在大部分的時間中都是合乎國家三類水質標準的,數據表現出不平衡的傾向,本次數據依照4個預測目標的標簽平衡情況如表2所示。

表2 正例樣本統計表
類別不平衡的樣本容易導致模型過擬合,還容易出現模型正確率較高而召回率、精確率較低,沒有實用意義。例如數據中有100個正例與900個反例,模型被訓練永遠返回新樣本預測結果為反例,雖然正確率高達90%,但對于實際問題是沒有任何參考價值的。解決類別不平衡問題一般有2大類方法:欠采樣與重采樣。欠采樣通過去除多數類樣本使得正例、反例數目接近,但容易導致樣本數量過少,也容易產生過擬合;重采樣通過重復少數類樣本來平衡正反例數目,但簡單重復原本就較少的少類樣本會使得這部分信息被放大,模型學習到的信息過于‘特殊’。綜合考慮下,通過將sklearn庫中的SVM模型參數中的class_wight參數設置為‘balanced’,運用加權的方式使得多數類與少數類在加權平衡后,對SVM訓練過程中的損失函數起到同樣大的作用,緩解數據本身類別不平衡對模型的影響。
在正式實驗中,使用基于遺傳算法與SVM的水質預測模型與傳統線性SVM模型分別對1 000余條水質數據依照國家三類水質進行預測。其中遺傳算法參數參考之前的測試,取種群大小為10、變異范圍為0~0.1(均勻分布)、迭代次數為20次。兩者的SVM模型部分參數為C=1.0,tol=0.000 1,class_wight=balanced。得到預測的正確率、召回率如表3所示。

表3 預測結果
從表3中可以看出,在水質指標方面,總磷與BOD5兩項水質指標預測指標較好,較為易于預測,總氮與COD相對難以預測一些。在模型對比方面,改進的SVM在所有水質指標預測上均優于傳統SVM,特別在總氮指標預測上,有非常大的提升。說明通過遺傳算法優化特征權重向量以達到一定程度上的特征選擇的做法的確能夠提升分類器的預測性能。
通過在SVM分類模型的基礎上使用遺傳算法進行特征選擇,提升了模型的性能,使得預測模型能夠更加有效地幫助污水廠提前發現問題,保證出廠水質達標。實驗結果表明,在對4項主要水質指標的預測上,正確率能達到76%以上,召回率能達到75%,較為可靠地為技術人員提供參考。但模型的召回率與精準率還有提升空間,依然無法完全代替人工檢測的功能。這些都還有待進一步研究。