馬 創(chuàng),王 堯,李林峰
(重慶郵電大學(xué) a.軟件工程學(xué)院;b.通信與信息工程學(xué)院,重慶 400065)
水是人類社會生產(chǎn)生活必不可少的資源,水資源相關(guān)的環(huán)境保護(hù)與循環(huán)利用至關(guān)重要。隨著社會的進(jìn)步,水體污染對社會的影響也日益明顯,水體被排入大量污染物,對人類的日常生活造成極大的威脅。而水質(zhì)預(yù)測可以為有關(guān)部門的干預(yù)決策提供重要參考。在許多工業(yè)場景中,水質(zhì)預(yù)測也具有重要意義。例如在污水處理工藝中,如果可以通過水質(zhì)預(yù)測提前預(yù)知突發(fā)的水質(zhì)超標(biāo)情況,就能夠為工程人員提供預(yù)警,預(yù)留時間人為干預(yù),保證污水處理出廠水質(zhì)達(dá)標(biāo)。
水質(zhì)預(yù)測主要有如下幾種預(yù)測方法:通過構(gòu)建物理模型的方法[1],灰色系統(tǒng)預(yù)測法,神經(jīng)網(wǎng)絡(luò)預(yù)測法[2],模糊理論預(yù)測法[3],以及數(shù)理統(tǒng)計預(yù)測法等。
顏劍波等人[4]通過分析水質(zhì)變量之間的規(guī)律,建立多元回歸模型,對三門峽斷面水質(zhì)進(jìn)行了預(yù)測。劉東君等人[5]結(jié)合灰色系統(tǒng)預(yù)測法與神經(jīng)網(wǎng)絡(luò),對北京密云水庫的溶解氧進(jìn)行了預(yù)測,通過將混合模型分別于2個原型方法作比較,表明混合模型相比2個原型方法,預(yù)測結(jié)果更為精確和穩(wěn)定。姜云超等人[6]綜合運用 BP, SOM 與模糊綜合評價法對黃河水質(zhì)進(jìn)行了評價,取得了較理想的結(jié)果。榮潔等人[7]提出指數(shù)平滑法-馬爾科夫預(yù)測模型,將平滑處理后的數(shù)據(jù)通過馬爾科夫預(yù)測模型對合肥湖濱與巢湖裕溪口2個斷面的CODMn、TP、TN濃度進(jìn)行了預(yù)測。RederK等人[8]使用人工神經(jīng)網(wǎng)絡(luò)模型預(yù)測水質(zhì)變化,證實了神經(jīng)網(wǎng)絡(luò)模型是被用于水質(zhì)預(yù)測的可行性。Alizadeh M J和Kavianpour M R[9]使用小波神經(jīng)網(wǎng)絡(luò)對太平洋希洛灣地區(qū)的水質(zhì)進(jìn)行了預(yù)測,證明了小波神經(jīng)網(wǎng)絡(luò)模型相對于其他神經(jīng)網(wǎng)絡(luò)模型的優(yōu)越性。Azimi S等人[10]結(jié)合神經(jīng)網(wǎng)絡(luò)與改進(jìn)的模糊聚類技術(shù)來預(yù)測了水質(zhì)惡化的概率。
文獻(xiàn)中雖然對水質(zhì)預(yù)測方面作了深入的研究,但并未針對原始數(shù)據(jù)的各項特征對預(yù)測任務(wù)的影響權(quán)重進(jìn)行評估,而在輸入預(yù)測模型的數(shù)據(jù)維度比較多時,對預(yù)測任務(wù)貢獻(xiàn)比較小的特征會干擾預(yù)測模型,降低預(yù)測模型的性能。因此使用遺傳算法來調(diào)整各特征維度的權(quán)重,使其符合預(yù)測模型的特性,提高了預(yù)測模型的預(yù)測精度,為水質(zhì)預(yù)測提供了一種有價值的解決方案。
源數(shù)據(jù)來自重慶市某污水廠2016年1月1日至2018年12月31日之間每日采集的進(jìn)出水水質(zhì)數(shù)據(jù)與活性污泥池監(jiān)測數(shù)據(jù),共有1 096條數(shù)據(jù)。源數(shù)據(jù)共有21維,主要包含了進(jìn)出水的5 d需氧量、化學(xué)需氧量、酸堿度、總磷、總氮等水質(zhì)數(shù)據(jù)與污水處理總量、耗電量、活性污泥濃度等污水處理設(shè)備相關(guān)數(shù)據(jù)。本次水質(zhì)預(yù)測中標(biāo)簽以國家三類水質(zhì)標(biāo)準(zhǔn)中相關(guān)水質(zhì)的標(biāo)準(zhǔn)為閾值。
在正式使用遺傳算法依據(jù)數(shù)據(jù)優(yōu)化特征權(quán)重向量之前,首先要經(jīng)過一系列數(shù)據(jù)預(yù)處理。處理流程主要分為數(shù)據(jù)特征初步選擇、標(biāo)簽生成、數(shù)據(jù)標(biāo)準(zhǔn)化處理3個步驟。
為了加快預(yù)處理速度,首先依據(jù)一般經(jīng)驗剔除一部分較為明顯地與問題相關(guān)性小的特征,本數(shù)據(jù)在剔除了若干特征后,剩余17維特征。列出部分?jǐn)?shù)據(jù)樣例如表1所示。
表1 數(shù)據(jù)樣例表
初步選擇特征后,需要為數(shù)據(jù)生成對應(yīng)標(biāo)簽。假設(shè)使用連續(xù)的nd的連續(xù)數(shù)據(jù)來預(yù)測下一天的水質(zhì)情況,則數(shù)據(jù)將被整合為1 096-n條,17*n維的可用數(shù)據(jù)。由于本次實驗中特征維數(shù)基數(shù)較大,n值增長會導(dǎo)致數(shù)據(jù)維數(shù)急劇上升,引發(fā)維度災(zāi)難,從而極大地影響預(yù)測模型的性能,所以將此處的n值定為1,使用原數(shù)據(jù)中的每一條數(shù)據(jù)預(yù)測其后一條(1d后)的水質(zhì)情況。
據(jù)此依據(jù)每條數(shù)據(jù)的總磷、總氮、BOD5、CODcr 4項出水水質(zhì)結(jié)合國家三類水質(zhì)標(biāo)準(zhǔn)生成其前一條數(shù)據(jù)的標(biāo)簽。標(biāo)簽生成步驟完成后,數(shù)據(jù)共1 095條,17維。
由數(shù)據(jù)樣例可以看出原數(shù)據(jù)中各特征維度的數(shù)據(jù)尺度差距非常大,如果直接導(dǎo)入預(yù)測模型會導(dǎo)致部分特征維度被模型忽略掉。由于沒有關(guān)于特征之間權(quán)重的可信先驗知識的情況下,將數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化操作,統(tǒng)一所有特征維度的尺度(方差)至相同,然后通過遺傳算法進(jìn)行特征權(quán)重調(diào)整,達(dá)到特征選擇的目的。
支持向量機是一種基于統(tǒng)計學(xué)習(xí)理論的一種新類型的廣義分類器,由于它使結(jié)構(gòu)風(fēng)險最小化、有較好的泛化能力,在引入核函數(shù)后,還能將在低維輸入空間線性不可分的樣本通過映射至高位空間使樣本變得線性可分,被廣泛應(yīng)用于各種監(jiān)督學(xué)習(xí)場景下[11-13]。近年來,不少研究將SVM應(yīng)用于各類預(yù)測分析問題[14],在進(jìn)行小樣本數(shù)據(jù)預(yù)測時,其預(yù)測能力甚至優(yōu)于BP神經(jīng)網(wǎng)絡(luò)方法和RBF神經(jīng)網(wǎng)絡(luò)。
設(shè)樣本(x1,y1),(x2,y2),…,(xk,yk)∈RN×R,其中xi為輸入數(shù)據(jù),yi對應(yīng)標(biāo)簽,k為數(shù)據(jù)總數(shù),則其最小化目標(biāo)函數(shù)可表示為
(1)
式中:C為平衡模型經(jīng)驗風(fēng)險與模型復(fù)雜度的懲罰因子;ζ為非負(fù)松弛變量;φ()為受核函數(shù)相關(guān)的函數(shù);K(xi,xj)=φ(xi)Tφ(xj)。
通過拉格朗日法將上述最優(yōu)化問題轉(zhuǎn)化為對偶問題。
(2)
最后可得決策函數(shù)
(3)
模型在預(yù)測時,輸入數(shù)據(jù)x,則可通過上式計算得到對應(yīng)的預(yù)測結(jié)果。
在數(shù)據(jù)挖掘機器學(xué)習(xí)領(lǐng)域中,高維數(shù)據(jù)通常需要特征選擇降維以避免使模型受到維度災(zāi)難的影響,這使得特征選擇成為機器學(xué)習(xí)算法數(shù)據(jù)預(yù)處理步驟中的重要一環(huán)。
遺傳算法是一種模擬物種進(jìn)化模式而來的迭代優(yōu)化算法。它通過模擬生物種群的變異、繁衍來優(yōu)化候選解。由于遺傳算法具有全局優(yōu)化搜索的特點[15],在各個領(lǐng)域都有著廣泛的應(yīng)用[16-20]。遺傳算法的流程圖如圖1所示。
圖1 遺傳算法流程圖
在使用遺傳算法優(yōu)化SVM模型時,通過選取每個維度的放縮因子組成的向量v=(v1,v2,v3,…,vm)作為種群個體,將訓(xùn)練集數(shù)據(jù)以特征權(quán)重向量v放縮后數(shù)據(jù)x′=x×vT供給SVM模型訓(xùn)練,其在驗證集上的F1分?jǐn)?shù)作為個體適應(yīng)度。
遺傳算法優(yōu)化特征權(quán)重向量的過程中,是將SVM模型調(diào)整得適用于驗證集數(shù)據(jù)分布的特點,在將優(yōu)化結(jié)果放到測試集上進(jìn)行驗證時,由于驗證集數(shù)據(jù)分布不完全與測試集數(shù)據(jù)分布相同,會因為過擬合而導(dǎo)致模型在測試集上的性能相比于驗證集出現(xiàn)退化。這個退化本身是由于過擬合產(chǎn)生的,可以通過調(diào)整遺傳算法的種群大小、迭代次數(shù)、變異程度參數(shù)來抑制。
綜上所述,采用原始水質(zhì)數(shù)據(jù)x、國家三級水質(zhì)標(biāo)準(zhǔn)訓(xùn)練基于遺傳算法與SVM的水質(zhì)預(yù)測模型的完整流程如圖2所示。
圖2 預(yù)測模型流程圖
本實驗所用硬件為聯(lián)想Y500筆記本一臺,CPU型號為I5-3210M,內(nèi)存8 GB。軟件平臺為python 3.5.3,主要使用了pandas、numpy、sklearn 3個庫。
實驗依據(jù)污水廠的1 000余條歷史數(shù)據(jù),對廠方感興趣的總磷、總氮、氨氮、BOD5、CODcr 5項出水水質(zhì)分別進(jìn)行預(yù)測,并與傳統(tǒng)SVM預(yù)測的結(jié)果進(jìn)行對比。
由于模型的過擬合問題可以通過加大驗證集數(shù)據(jù)數(shù)量,確保驗證集數(shù)據(jù)分布貼近實際應(yīng)用時的情形(測試集)來緩和,所以在數(shù)據(jù)分段時,將數(shù)據(jù)按3∶5∶2的比例分為訓(xùn)練集、驗證集與測試集。
在給定遺傳網(wǎng)絡(luò)中種群大小為10,變異范圍為0~0.1的前提下,通過測試觀察驗證集上的適應(yīng)度與測試集上的適應(yīng)度隨迭代次數(shù)變化情況來確定合適的迭代次數(shù)。實驗得到的效果圖如圖3所示。
圖3 遺傳算法適應(yīng)度曲線
圖3中驗證集的適應(yīng)度隨著進(jìn)化代數(shù)小幅震蕩提升并在40代左右達(dá)到一個穩(wěn)定值,而對測試集的適應(yīng)度在第23代左右達(dá)到最大值。為了避免實驗的隨機性影響,保守取最佳迭代次數(shù)為20。
由于水質(zhì)除少數(shù)情況外,在大部分的時間中都是合乎國家三類水質(zhì)標(biāo)準(zhǔn)的,數(shù)據(jù)表現(xiàn)出不平衡的傾向,本次數(shù)據(jù)依照4個預(yù)測目標(biāo)的標(biāo)簽平衡情況如表2所示。
表2 正例樣本統(tǒng)計表
類別不平衡的樣本容易導(dǎo)致模型過擬合,還容易出現(xiàn)模型正確率較高而召回率、精確率較低,沒有實用意義。例如數(shù)據(jù)中有100個正例與900個反例,模型被訓(xùn)練永遠(yuǎn)返回新樣本預(yù)測結(jié)果為反例,雖然正確率高達(dá)90%,但對于實際問題是沒有任何參考價值的。解決類別不平衡問題一般有2大類方法:欠采樣與重采樣。欠采樣通過去除多數(shù)類樣本使得正例、反例數(shù)目接近,但容易導(dǎo)致樣本數(shù)量過少,也容易產(chǎn)生過擬合;重采樣通過重復(fù)少數(shù)類樣本來平衡正反例數(shù)目,但簡單重復(fù)原本就較少的少類樣本會使得這部分信息被放大,模型學(xué)習(xí)到的信息過于‘特殊’。綜合考慮下,通過將sklearn庫中的SVM模型參數(shù)中的class_wight參數(shù)設(shè)置為‘balanced’,運用加權(quán)的方式使得多數(shù)類與少數(shù)類在加權(quán)平衡后,對SVM訓(xùn)練過程中的損失函數(shù)起到同樣大的作用,緩解數(shù)據(jù)本身類別不平衡對模型的影響。
在正式實驗中,使用基于遺傳算法與SVM的水質(zhì)預(yù)測模型與傳統(tǒng)線性SVM模型分別對1 000余條水質(zhì)數(shù)據(jù)依照國家三類水質(zhì)進(jìn)行預(yù)測。其中遺傳算法參數(shù)參考之前的測試,取種群大小為10、變異范圍為0~0.1(均勻分布)、迭代次數(shù)為20次。兩者的SVM模型部分參數(shù)為C=1.0,tol=0.000 1,class_wight=balanced。得到預(yù)測的正確率、召回率如表3所示。
表3 預(yù)測結(jié)果
從表3中可以看出,在水質(zhì)指標(biāo)方面,總磷與BOD5兩項水質(zhì)指標(biāo)預(yù)測指標(biāo)較好,較為易于預(yù)測,總氮與COD相對難以預(yù)測一些。在模型對比方面,改進(jìn)的SVM在所有水質(zhì)指標(biāo)預(yù)測上均優(yōu)于傳統(tǒng)SVM,特別在總氮指標(biāo)預(yù)測上,有非常大的提升。說明通過遺傳算法優(yōu)化特征權(quán)重向量以達(dá)到一定程度上的特征選擇的做法的確能夠提升分類器的預(yù)測性能。
通過在SVM分類模型的基礎(chǔ)上使用遺傳算法進(jìn)行特征選擇,提升了模型的性能,使得預(yù)測模型能夠更加有效地幫助污水廠提前發(fā)現(xiàn)問題,保證出廠水質(zhì)達(dá)標(biāo)。實驗結(jié)果表明,在對4項主要水質(zhì)指標(biāo)的預(yù)測上,正確率能達(dá)到76%以上,召回率能達(dá)到75%,較為可靠地為技術(shù)人員提供參考。但模型的召回率與精準(zhǔn)率還有提升空間,依然無法完全代替人工檢測的功能。這些都還有待進(jìn)一步研究。