孟朝霞,蔣 芃,賈宏恩
(1. 山西能源學院 能源與動力工程系;2.太原理工大學 數學學院,太原 036500)
相關部門對我國重點城市的飲用水水源型水庫進行監察和檢測的結果表明,水源型水庫水質達標率不到80%,其中近24%的水庫水質無法滿足Ⅲ類水標準[1]。鑒于此,作為居民飲用水主要來源的水庫水質問題,亟待解決。
現有的水質預測方法均通過相關預測手段,利用水質監測歷史數據,推導求取水庫各指標與待測指標之間的非線性關系,或是通過研究某個水質指標的時間序列,從中找到水質變化的規律,來預測未來水質的變化情況。根據水質預測理論基礎不同,目前常用的水質預測方法主要有5類,分別為:數理統計法、灰色模型預測法、神經網絡模型預測法、水質模擬模型法、混沌理論預測法等[2]。
在數理統計的方法中,應用于水質預測的回歸分析方法效果較好。但也存在一些問題,如:計算量大、適應性差以及只重擬合不重外推等[3]。而灰色模型預測可以彌補回歸分析不中外推缺陷,根據單因素趨勢外推進行水質預測[4]。隨著近年來神經網絡的不斷發展,已經有相關學者對河流中影響水質的指標建立模型,并取得了不錯的預測效果[5-7]。混沌理論預測法著力于“由繁化簡”,將復雜的多重耦合多變量關系轉變為單一單變量關系,從系統總體出發,研究復雜體系的內在發展規律,并以混沌空間模線性回歸模型預測河流水質系統的短期發展變化趨勢[8]。在建立水質預測模型時應多方面考慮水質歷史數據,選取恰當的預測手段。
本次研究的水庫主體,位于中國中部地區,屬黃河水系。其總面積為32.0平方公里,水庫平均深度為6.5米,其中最大深度為19.0米,屬于淤泥底質。其控制的流域面積為5268.0平方公里,水庫容量7.0億立方米,預計灌溉面積為149.2萬畝。該水庫的水質安全與當地人民的生活質量息息相關,本文選取BP神經網絡建立模型,對目標水庫數據進行建模分析,預測未來水庫水質質量。
通過BP神經網絡算法,構建基于BP神經網絡的水庫健康預測模型,實現對評價水庫健康指標的預測,并根據預測值判斷水庫水質健康狀態。
本模型神經網絡拓撲結構如圖1所示,分為輸入層、隱含層以及輸出層[9]。本文采用具有多個輸入神經元、一個輸出神經元且具有雙隱含層的反向傳播拓撲結構建立神經網絡。

圖1 神經網絡拓撲結構
選取水庫2018—2020年內共35個月的水庫健康指標,根據特征指標的相關性分析,決定每種預測指標的輸入神經元個數。根據預測誤差最小化原則分別測試50-150個隱含層神經元個數,選擇每種預測指標模型的最優隱含層個數[10]。輸出層神經元個數為1。
為達到模型最佳的泛化程度,本文利用已有水庫指標數據集對模型中BP神經網絡部分進行初始權重參數的調整以及神經網絡拓撲結構的訓練。建立模型之后,需要將數據集進行劃分,驗證模型的泛化能力以及模型對水庫水質預測能力。因此,本模型將數據的20%作為測試集、80%作為訓練集,不斷完善本模型BPNN部分的神經網絡拓撲結構[11]。
針對本模型需要預測的水質指標,本文使用Spearman等級相關系數對數據所給特征進行相關性分析,以此找出各個特征之間的相關性關系。
為防止小量綱數據被大量綱數據被淹沒,神經網絡在訓練模型之前,都會對數據進行歸一化處理,以解決所分析數據之間的可比性問題[13]。模型將原始數據的量綱進行歸一化處理后,更有利于訓練出適用于運勢數據的合適的神經網絡模型,從而解決問題。
由于水庫所提供的相關水庫健康指標數據量綱不同,故在進行訓練之前需要數據歸一化處理。本模型采用min-max標準化數據歸一化的方法,處理指令如下:
x_scaler=MinMaxScaler(feature_range=(-1,1))
y_scaler=MinMaxScaler(feature_range=(-1,1))
面對已經獲得的沒有線性關系的數據,我們選擇具有較好自適應能力和記憶功能的BP神經網絡模型來解決實際問題[14]。BP神經網絡采用的學習方法為最速下降法,數據經過正向傳播后再經過反向傳播不斷調整神經節點之間的權重(權值)和偏置(閾值),從而得到網絡的最小誤差平方和。BPNN模型拓撲結構訓練其本質上為優化問題,通過優化找到滿足條件的最小誤差。
為保證BPNN模型的預測精度,本文利用PYCHARM軟件編程建立雙隱含層BP神經網絡,采用sklearn中MLPRegressor函數建立回歸模型,以觀測值與預測值之間的均方誤差(mean squared error,MSE)作為神經網絡模型的預測性能函數,以此作為訓練的一部分對BPNN模型糾正,以實現對水庫水質指數變化規律的預測。
根據數據所給特征,將所有特征均作為預測水質指標的因變量是不恰當的,相關性不高的特征組合會對模型預測結果造成過擬合影響。在訓練模型之前進行相關性分析,計算每兩個特征之間相關系數并找出與各水質預測指標相關性較大的特征組合。本文將Spearman等級相關系數引入BPNN模型中,優化特征組合,防止模型過擬合現象,進而提高CORR-BPNN模型的擬合程度,提高模型預測精度。
為尋找預測目標與其余特征之間的相互關系,模型更好擬合,我們引用Spearman等級相關系數。兩個變量的相關系數絕對值越接近1,兩變量之間相關性越強,相關系數與相關程度如表1所示。

表1 |r|的取值與相關程度
計算相關系數公式如下:
(1)
其中d為X和Y之間的等級差。通過PYCHARM程序編寫,計算特征之間的Spearman等級相關系數,找到預測目標相關性較好的特征組合。
本文構造CORR-BPMM水庫水質模型,其預測準確性采取均方根誤差(RMSE)、平均絕對誤差(MAE)和平均相對誤差(MRE)進行評價。公式如下:
(2)
(3)
(4)

本文構建BPNN水庫水質預測模型,實現對水庫水質的預測預警。對于未知分布規律的數據,在構建BPNN模型之前,本文通過PYCHARM編寫程序計算Spearman上等級相關系數,可視化相關系數熱力分析圖。
各BPNN模型中輸入神經元個數由等級相關系數決定,輸出層神經元個數均為1,輸出數據即為水質指標預測值。未來可根據規劃指標值預測水庫監管指標的指標值。BPNN模型具體計算流程如圖2所示。

圖2 BPNN模型計算流程
(1)根據所給數據,采用Spearman計算各特征之間的等級相關系數,計算過程如下:
首先對兩個變量(X,Y)的數據進行排序,記排序以后的數據位置為(X′,Y′),(X′,Y′)的值就成為秩次,秩次的差值為公式(1)中的di,n為變量中數據的個數,根據公式計算最終得到Spearman等級相關系數。具體操作由PYCHARM編程實現,并生成相關系數熱力圖。
(2)建立BPNN模型的參數設定如下,模型采用SKlearn中的MLPRegressor模型,BPNN模型一程序表達式為:
隱含層每層節點數為100,110:hidden_layer_sizes=(100,110)
激活函數:activation='relu'
權重優化算法:solver='lbfgs'
正則化項系數:alpha=0.0001
學習率:learning_rate='constant',learning_rate_init=0.001
迭代次數:max_iter=25000
優化算法停止條件:tol=1e-4;
(3)BPNN模型二程序表達式為:
隱含層每層節點數為100,110:hidden_layer_sizes=(100,110)
激活函數:activation='relu'
權重優化算法:solver='lbfgs'
正則化項系數:alpha=0.0001
學習率:learning_rate='constant',learning_rate_init=0.001
迭代次數:max_iter=200
優化算法停止條件:tol=1e-4;
(4)BPNN模型三程序表達式為:
隱含層每層節點數為100,100:hidden_layer_sizes=(100,100)
激活函數:activation='relu'
權重優化算法:solver='lbfgs'
正則化項系數:alpha=0.0001
學習率:learning_rate='constant',learning_rate_init=0.001
迭代次數:max_iter=200
優化算法停止條件:tol=1e-4
(5)利用BPNN神經網絡算法擬合每一個預測指標模型的神經網絡拓撲結構中的權值參數,到達預測值與觀測值之間的最小誤差。
(6)輸出各模型預測結果
BPNN水庫水質預測模型包括兩個階段:計算各特征之間的相關性系數,決定各預測指標特征變量;建立各預測指標的BP神經網絡,訓練并擬合BP神經網絡拓撲結構,輸出預測指標值,從而完成水質指標預測任務。
本文將山西某水庫所給數據帶入Spearman等級相關系數模型,計算相關系數,計算結果如圖3所示。

圖3 各特征指標相關系數熱力圖
根據相關系數確定溶解氧、五日生化需氧量、氣溫相關性系數均>0.5,具有中高度相關性;總磷、水位、氯化物、電導率相關性系數>0.5,具有中高度相關性;總硬度、硝酸鹽、電導率、葉綠素相關性系數均>0.5,具有中高度相關性。故我們以溶解氧、總磷、總硬度作為水質預測的三個指標,分別建立BPNN模型一、二、三。
將數據標準化后,按照80%、20%的比例劃分數據,建立訓練集以及測試集用于測試、訓練擬合BPNN網絡拓撲結構。
當神經網絡各隱含層神經元個數為100、110時,模型的擬合效果較好,精確度較高,模型預測性能良好,BPNN模型對水質指標溶解氧的預測值與觀測值走勢如圖4所示。

圖4 溶解氧預測值與觀測值走勢圖
當神經網絡各隱含層神經元個數為100、110時,模型的擬合效果較好,精確度較高,模型預測性能良好,BPNN模型對水質指標總磷的預測值與觀測值走勢如圖5所示。

圖5 總磷預測值與觀測值走勢圖
當神經網絡各隱含層神經元個數為100、100時,模型的擬合效果較好,精確度較高,模型預測性能良好,BPNN模型對水質指標總硬度的預測值與觀測值走勢如圖6所示。

圖6 總硬度預測值與觀測值走勢圖
由圖3-圖5可知,本文構建的BPNN模型對與水質指標(溶解氧、總磷、總硬度)的預測值與觀測值的重合度是較高的,各指標的發展趨勢與走向也基本一致,但偶有偏差,BPNN模型對水庫各水質指標的預測較為理想。
本文采用3種評價指標來評定BPNN模型效能,分別為:RMSE、MAE和MRE。BPNN水質預測模型預測結果的誤差分析見表2。

表2 BPNN模型預測結果誤差分析
由表2可知,溶解氧、總磷預測值的RMSE值均小于0.17,總硬度預測值的RMSE值小于0.08;溶解氧、總磷預測值的MAE值均小于0.15,總硬度預測值的MAE值小于0.07;溶解氧、總磷預測值的MSE值均小于0.03,總硬度預測值的MSE值小于0.006。3項評價指標參數RMSE、MAE、MSE的計算結果均表明本文構建的BPNN模型對于水庫各預測指標的預測結果均是理想的,是符合水質預測的要求,可以對山西某水庫水質進行有效預測。
本文通過山西某水庫2018—2020年的水質指標建立水質評價模型,選取3個指標建立BPNN模型。三個BPNN模型輸入層神經元個數均為三個,輸出層神經元個數均為一個,建立隱含層為兩層的BP神經網絡模型,對水質指標進行預測。經過數據驗證,模型結果良好、預測結果與真實值的相對誤差也在允許的范圍內且可以作為較為精確的預測結果進行未來的水質預警工作。出于讓模型精度更高的目的考慮,建議在后期使用該模型時,增加訓練數據,以提高模型精度。相比于BP神經網絡無法預測水質變化原因的缺點來看,其預測精度高、模型建立簡單、適應性強的優點已經足夠專業人員為未來干預水庫水質做出策略。受數據可獲取性限制,本文預測指標只考慮了溶解氧、總磷、總硬度指標,關于水庫健康預警模型還需日后數據更加完善時加以研究。