陳興國,徐修穎,陳康揚,楊 光
1.南京郵電大學 江蘇省大數據安全與智能處理重點實驗室,南京210023
2.南京大學 計算機軟件新技術國家重點實驗室,南京210023
隨著我國工農業的迅速發展,人民的生活水平得以提高,對水質的要求也越來越高。但受水土流失、水源污染等因素的影響,地表水成分越來越復雜,處理難度也隨之增大。水質評價是將水質的監測結果與水質標準進行比較,從而判定水質狀況,是水環境安全管理的基礎工作[1]。現階段,我國主要依據《地表水環境質量標準》(GB3838—2002)和《地下水質量標準》(GB14848—2017)進行水質分類評價工作。
有效預測水質水平是實現水源保護的重要手段。最初的水質分類工作是手動完成的,這種方法費時費力,且不利于管理部門進行實時處理。且傳統的單因子評價法過于保守,不能體現真實的水質水平,也無法解決各項水質參數(例如PH 值、溫度等)與水質水平之間復雜的、非線性的因果關系。除了單因子評價法,也有一些學者對水質指數法[2-3]、污染指數法[4]、模糊綜合指數法[5]等方法進行了研究,但是尚未形成統一的評價模式,無法應用于實際工程中。
機器學習是人工智能的一個分支,可以實現自動分類。通過機器學習方法,可以模擬環境變量和水質水平之間的關系。在此之前,已有不少學者將機器學習方法應用到水質分類之中。Walley 等人[6]對樸素貝葉斯、多層感知機以及回歸樹三種機器學習模型進行比較,實驗結論是樸素貝葉斯與多層感知機模型均能達到較好的分類效果,回歸樹模型由于在某一類別表現極差導致其整體性能甚至低于傳統分類方法。2010年,Yan等人[7]首次將自適應神經模糊推理系統(adaptive network-based fuzzy inference system,ANIFS)應用于水質分類,取得了高達89.59%的分類精確率,并證明了該方法優于人工神經網絡(artificial neural network,ANN)模型。Modaresi 和Araghinejad[8]對德國黑蘭平原主要含水層的水質數據進行研究,并指出在支持向量機(support vector machine,SVM)、概率神經網絡(probabilistic neural network,PNN)和K-鄰近算法(K-nearest neighbor,KNN)中SVM 的性能最佳。Park 等人[9]也在評估水體生態狀態的實驗中證實,SVM 比ANN 具有更高的預測精度。2017年,Avila 等人[10]比較分析了一系列水質預測模型,包括簡單模型、多元線性回歸、動態回歸、回歸樹、馬爾可夫鏈、決策樹、隨機森林、多項邏輯回歸、判別分析和貝葉斯網絡模型。
作為傳統機器學習方法的改進,集成學習使用多種學習算法來獲得比單一學習算法更好的預測性能[11-13]。gcForest算法是一種決策樹集成算法[14],與深度神經網絡相比,它具有更少的超參數,并且在任何規模的數據上都表現良好。gcForest 分為兩部分:多粒度掃描和級聯森林結構,前一部分適用于處理高維水質變量。本文只使用級聯森林部分算法,命名為深度級聯森林(deep cascade forest,DCF)。若考慮將弱學習器的最佳組合模塊作為全局優化任務,也可以采用基于演化策略的集成學習方法。為了獲得更好的集成性能,本文提出采用基于協方差自適應調整進化策略算法(covariance matrix adaptation evolution strategy,CMAES)的集成學習方法,構建地表水質分類模型。CMAES 是一種求解連續無約束優化問題的進化算法,核心思想是通過對正態分布協方差矩陣的調整,使種群收斂到全局最優解。CMAES 算法具有收斂速度快、保序、魯棒性強等優點[15-16],且不易早熟,對種群大小也不過分依賴。
本文的主要貢獻包括:(1)對集成學習方法進行簡要概述;(2)提出了基于CMAES 集成學習方法的水質分類模型。
集成學習是機器學習方法中的一種,主要思想是訓練出多個學習器以解決同一個問題。一般來說,集成學習分兩個步驟:首先,生成若干個體學習器;然后,使用某種策略將這些個體學習器組合起來。構建示例如圖1 所示。

Fig.1 Ensemble learning method圖1 集成學習思想
集成學習思想早在文明社會開始時就已經存在了,人們通過組合各種意見來作出最終抉擇。1979年,Dasarathy 和Sheela 首次提出集成學習的概念[17]。20世紀90年代,Hansen 和Salamon提出一種基 于神經網絡的集成模型,他們發現通過一組分類器組合進行預測通常比最佳單一分類器的預測結果更準確[18]。Schapire 等人證明了弱學習器可以被提升為強學習器,并提出Boosting 方法[19]。自此,學者們掀起了集成學習的研究熱潮,越來越多的集成學習算法被提出,比如混合專家模型[20]、堆疊泛化模型[21]、Adaboost 算法[19]、Bagging 算法[22]等。近年來,更是出現了許多新穎的思想和模型。隨機森林算法已被廣泛應用于各種任務,是最成功的集合方法之一。完全隨機森林算法也有很大發展,例如iForest算法[23]適用于處理異常檢測問題,sencForest 算法[24]適用于處理流數據中出現的新類。gcForest 算法是由周志華教授提出的[14]。作為一種高度集成的方法,gcForest可以由許多隨機森林建造。在每一層級聯中,還可以添加其他傳統的機器學習模型和集成模型來提高整體性能。還有許多工作嘗試將隨機森林算法與神經網絡連接起來。Richmond 等人將級聯隨機森林轉換為卷積神經網絡[25],Welbl 利用隨機森林輔助神經網絡初始化[26]。
雖然不斷有研究者提出新的集成學習算法,但是這些算法大都由幾種經典算法改編得到,比如Bagging、Boosting 等。這兩個經典算法效果良好且應用廣泛。
Bagging[22]算法又稱套袋法,是個體學習器之間不存在強依賴關系,可同時生成的并行化方法。Bagging 算法基于自主采樣法,首先采樣出指定個數的采樣集,然后基于每個采樣集訓練出一個基學習器,最后將這些基學習器進行結合。對分類任務進行結合時,通常采用簡單投票法,對回歸任務通常采用簡單平均法。
隨機森林(random forest,RF)算法[27]是Bagging算法的延伸,是最先進的集成學習方法之一。RF 算法與Bagging 算法的主要區別在于特征的隨機選擇。隨機森林算法適用于處理密度估計任務和異常檢測任務[28-30]。由于隨機樹集成可以很好地用于異常檢測,Liu 等人在此基礎上提出iForest 算法[23]。該算法對于每個隨機樹,都可以通過從根節點到包含數據點的葉節點的路徑長度來測量隔離數據點所需的分區數,并對每個隨機樹設置樹的深度限制,減少了不必要的計算。2010年,Liu 等人又提出iForest 算法的變體SCiForest[31],該算法具有分裂選擇標準,在隨機樹構造中通過分裂從組合中得到的超平面來獲得更平滑的決策邊界,并降低陷入次優解的風險。
Boosting[19]算法又稱提升法,是個體學習器之間存在強依賴關系,必須串行生成的序列化方法。其主要思想是將弱分類器提升為強學習器。首先從初始訓練集訓練出一個基學習器,接著根據基學習器的表現對訓練樣本分布進行調整,然后基于調整后的樣本分布訓練下一個基學習器,如此重復進行,直到基學習器數目達到事先指定的值,最后將這些基學習器加權結合。
Boosting 族算法最著名的代表是AdaBoost[19]算法,該算法改變樣本的概率分布,將關注點放在被錯分的樣本上,采用加權投票法改變弱分類器的權重。GentleBoost 是AdaBoost 算法的一種改進算法,最早由Friedman 等人提出[32]。該算法的核心是構建偽響應,使用基學習器擬合偽殘差并計算最佳搜索步長,且該算法比AdaBoost 算法有更快的收斂速度且具有更高的穩定性。LogitBoost 算法也是由Friedman 等人提出[32],該算法采用對數回歸模型為基學習器,學習到的是實數值并通過閾值實現分類。XGBoost[33]是一種疊加樹模型算法,該算法支持使用自定義的損失函數,且利用CPU 的多線程進行并行運算,運行速度快且精度較高。
本文所采用的CMAES 方法是一種基于Boosting集成算法的全局參數優化方法。
進化策略(evolution strategy,ES)[34]是一種模仿生物進化的求解參數優化問題的方法,該算法借助正態分布實現個體突變。根據選擇方法不同,進化策略可分為(μ+λ)-ES 和(μ,λ)-ES 兩種。(μ+λ)-ES采用“1/5 成功法則”調整變異程度,但該方法只能調整一個通用步長;(μ,λ)-ES 基于“變異步長控制”,該方法具有較大隨機波動性且易產生無效突變。針對ES 算法的局限與不足,Ostermeier 等人[35]提出累計步長自適應控制策略(cumulative step length adaptation,CSA),該策略提高了步長控制的效率。在此基礎上,Hansen 等人[35-37]提出一種基于協方差自適應調整的演化策略算法CMAES,該算法使用協方差矩陣描述突變尺度和方向,通過“采樣-選擇重組-更新-再采樣”的循環來收斂到最優解。CMAES 采用擇優截斷選擇策略,算法效率較高且能在一定程度上避免種群過早收斂,在中等規模的復雜優化問題上具有很好的效果,是當前最優秀的進化策略算法之一。
在集成學習中,需要使用組合策略將多個基學習器組合成一個強大的學習器。當基學習器在性能上有很大差異時,往往采用加權平均法進行組合。CMAES 集成學習方法可以學習到基學習器的組合權重。本文的研究重點就在于給定一些基學習器的基礎上,如何采用CMAES 集成學習方法對這些基學習器進行加權。
本文的目標是得到擁有最高F1 值的參數組合,優化目標如式(1)所示:

CMAES 使用正態分布N(m,σC)在n維空間進行采樣,其中m是正態分布的均值,σ是搜索步長,C是正態分布的協方差矩陣。在CMAES 算法的采樣操作中,每一次迭代,依據正態分布產生λ個解,采樣公式如式(2)所示:

其中,~表示服從相同分布;g是迭代次數;B是正交矩陣;B的列是矩陣C的單位特征向量;D是對角矩陣,其對角元素是矩陣C的特征值的平方根;I是單位矩陣。
接著對新產生的解計算對應的目標值函數f(xi),并對其進行排序,排序如式(3)所示:

其中,下標i:λ表示在λ個樣本中排第i位。采用截斷選擇,取前個解用于參數更新。
均值即所選擇的μ個解的加權最大似然估計,計算方法如式(4)所示:

CMAES 算法默認使用累積式步長調整(CSA)方法,其原理是相繼搜索方向應是共軛的。如果相繼搜索方向之間正相關,則表明步長太小,應該增大;如果相繼搜索方向之間負相關,則表明步長太大,應該減小。
先對步長進化路徑Pσ更新,更新方法見式(5):

步長的更新方法如式(6)所示:

其中,dσ是阻尼系數,近似為1;E||N(0,I)||是正態分布隨機向量范數期望長度。
正態分布協方差矩陣C的更新結合了Rank-μupdate 和Rank-1-update。先更新協方差矩陣進化路徑Pc,如式(7)所示:

Rank-μ-update 使用μ個樣本相對于均值m的偏差,更新方法如式(8)所示:

Rank-1-update 使用相鄰兩代均值的偏差,并使用參數P對均值偏差進行記憶,更新方法如式(9)所示:

正態分布協方差矩陣對偏差進行建模,最終更新方法如式(10)所示:

CMAES 算法的核心思想是通過對協方差矩陣C的調整來處理變量之間的依賴關系。若未滿足停止條件,則不斷重復進行采樣操作和高斯分布更新;反之則停止循環,輸出算法的最優值及最優參數組合。參數學習的過程如算法1 所示。
算法1基于CMAES 的集成學習方法

中國國家環境監測中心(CNEMC)設有148個自動水質監測站,監測各種水質參數。這些監測站幾乎覆蓋了包括松花江、遼河、海河、淮河、黃河、長江、珠江、太湖、巢湖、滇池、錢塘江、閩江在內的中國所有主要河流流域。本次實驗中,使用從2012年到2018年,十大流域每周監測到的真實水質特征數據進行研究,共有33 612 條樣本。實驗采用4個特征構建水質分類模型,分別是:酸堿度(pH 值)、溶解氧(DO)、高錳酸鹽指數(CODMn)和氨氮(NH3H)。4 項特征數值分布如表1 所示。

Table 1 Feature distribution表1 特征分布
為了使所有特征對模型參數的調整產生相同程度的影響,本文對特征數據進行Z-Score 標準化操作。Z-Score標準化操作的定義如式(11)所示:

其中,x是特征值;μ是數據平均值;σ是數據標準差。通過標準化處理后,各項特征數據的平均值均為0,標準差均為1。處理后的數據分布如圖2 所示。
在機器學習建模過程中,通常把數據集劃分為訓練集和測試集。由于水質數據比一般數據更為復雜,本文將原始數據集的20%作為測試集,將剩余數據分為訓練集和驗證集。訓練集用于擬合模型,驗證集提供對訓練集上擬合模型的無偏估計,同時調整模型的超參數,并使用測試集評估模型。
本文使用5 倍交叉驗證來評估模型性能,步驟如下:
(1)將數據集隨機打亂;
(2)將數據集拆分為5 組數據,每組數據的數據分布與原數據集保持一致;

Fig.2 Standardized processed data distribution圖2 標準化處理后的數據分布
(3)對于每組數據,將該組數據作為驗證集,剩余組數據作為訓練集,在訓練集上擬合模型并在驗證集上進行評估,保留評估分數并丟棄模型;
(4)總結模型的技能。
《地表水環境質量標準》(GB3838—2002)根據地表水保護目標和水域環境功能,將水質分為5個等級,從好到壞依次為I、II、III、IV、V。每個水質類別對應的功能如下:
I:主要適用于源頭水、國家自然保護區。
II:主要適用于集中式生活飲用水地表水源地一級保護區、珍稀水生生物棲息地、魚蝦類產卵場、仔稚幼魚的索餌場等。
III:主要適用于集中式生活飲用水地表水源地二級保護區、魚蝦類越冬場、洄游通道、水產養殖區等漁業水域及游泳區。
IV:主要適用于一般工業用水區及人體非直接接觸的娛樂用水區。
V:主要適用于農業用水區及一般景觀要求水域。
而劣Ⅴ類水,則是指污染程度已經超過Ⅴ類的水。
經統計,實驗數據集中6個級別的樣本分布非常不平衡,由于準確率(Acc)對數據分布的變化十分敏感,因此不適合作為評價模型好壞的唯一指標。Acc的計算方式如式(12)所示:

其中,T是分類正確的樣本個數;N為樣本總個數;K是類的個數;Acci指的是類i中各種分類結果的準確率值。
不同類別分布比例如圖3 所示。
為了對模型進行較為全面的評估,本文引入F1值作為模型評估標準。F1 值是以每個類別為基礎進行定義的,包括精確率(precision)和召回率(recall)兩個概念。精確率是指預測結果屬于某一類的個體,實際屬于該類的比例;召回率是指被正確預測為某個類別的個體數量與數據集中該類別個體總量的比例。F1 值將精確率與召回率結合起來作為分類有效性的度量,且二者對數據分布的變化均不敏感。具體計算方法如式(13)、式(14)、式(15)所示:

Fig.3 Distribution ratio of different categories圖3 不同類別分布比例

其中,TP(true positive)指的是正確分類為本類的樣本個數;FP(false positive)指的是錯將其他類預測為本類的樣本個數;FN(false negative)指的是錯將本類預測為其他類的樣本個數。
為了將F1 值應用于多分類問題,本文使用Fβ值作為評估標準。Fβ值的定義如式(16)所示:

其中,K指的是類的個數;βi指的是類i中的樣本數量占樣本總數量的比例;F1i指的是類i中各種分類結果的F1 值。
本文首先選取邏輯回歸(logistic regression,LR)、線性判別分析(linear discriminant analysis,LDA)、支持向量機(SVM)、決策樹(decision tree,DT)、完全隨機樹(completely-random tree,CRT)、樸素貝葉斯(naive Bayes,NB)、K-鄰近算法(KNN)、隨機森林(RF)、完全隨機樹林(completely-random tree forest,CRTF)、深度級聯森林(DCF)10種模型訓練出基學習器,然后采用CMAES集成學習方法將10種算法集成。所有模型參數與單獨使用時保持相同。CMAES集成學習方法對10 種基學習器的集成權重如表2 所示。

Table 2 Ensemble weights of CMAES ensemble learning method on 10 basic learners表2 CMAES集成學習方法對10種基學習器的集成權重

Table 3 Acc of train set表3 訓練集上的準確率 %
各個模型在每個類的Acc和F1 值的實驗結果如表3~表8 所示,結果皆用百分比表示。
各個模型在訓練集、驗證集和測試集的綜合表現如表9 所示。
結果顯示:包括隨機森林、完全隨機森林、深度級聯森林和CMAES 集成學習方法在內的集成模型在預測準確率Acc和Fβ值方面表現更好。高度集成模型(深度級聯森林和CMAES 集成學習方法)的表現優于其他模型。

Table 4 F1 of train set表4 訓練集上的F1 值 %

Table 5 Acc of validation set表5 驗證集上的準確率 %

Table 6 F1 of validation set表6 驗證集上的F1 值 %

Table 7 Acc of test set表7 測試集上的準確率 %

Table 8 F1 of test set表8 測試集上的F1 值 %

Table 9 Comprehensive performance表9 綜合表現 %
具體來說:在傳統機器學習模型中,LR 和LDA模型不能有效預測級別Ⅴ,而級別Ⅴ表示水質很差,正確預測該級別十分重要,因此這兩個模型最不適合用于水質預測。LR、LDA 和SVM 模型不能較好預測級別I,導致這些模型整體性能不佳。在所有傳統的機器學習模型中,DT 模型在所有水質級別的預測性能都較為穩定。在集成模型中,隨機森林有效避免了決策樹對訓練集的過度擬合問題,并且能夠在高維數據上很好地工作。本案例研究中的數據維數較低(只有4個水質變量),因此隨機森林的結果與單一決策樹沒有顯著差異。結合決策樹和隨機森林,深度級聯森林實現了更高的集成與級聯結構,該模型將繼續訓練,直到性能不再提高,使模型適用于不同規模的訓練數據。CMAES 集成學習方法在測試集上的Fβ值達到97.70%,準確率Acc達到97.42%,均為最高值,且CMAES 的自適應過程使該集成學習模型不易陷入局部最優。綜上所述,CMAES 集成學習方法的表現最佳,優于其他模型。
本文首先提出水質分類的重要性,指明傳統手動分類方法的局限性,并對前人所進行的機器學習方法在水質分類上的應用工作進行了總結。接著指出集成學習方法比單一學習算法有更好的預測性能,并對集成學習方法進行簡要概述。在此基礎上,本文提出一種基于CMAES 算法的集成學習方法,對LR、SVM、DCF 等十種模型進行集成。實驗結果顯示,集成學習方法大都優于傳統機器學習方法,且CMAES 集成學習方法的分類效果最佳。接下來的工作安排主要分為兩點:(1)探索一種能自動預測水質特征變化的有效算法;(2)使用深度學習算法預測未來幾年的水質狀況。