趙家曉 張宇宇 吳祥軍
(1.上海眾毅工業控制技術有限公司,上海 200023;2.上海城投原水有限公司,上海 200135)
文章針對上海市某地區的用水量進行研究,采用BP 神經網絡的方法進行預測。因城市用水量具有較強周期性,故訓練樣本要求周期比較長,但是近期常住人口的增減和耗水工廠的整治和改革都會對城市用水量產生較大的影響,僅用BP 神經網絡預測短期用水量誤差較大,故增加了誤差校正算法,降低因近期常住人口變化和工業用水量變化引起誤差,提高預測精度。
BP(Back Propagation)是一種按誤差逆傳播算法訓練的多層前饋神經網絡,是目前最廣泛的神經網絡之一,它由大量的節點(或稱“神經元”,或“單元”)和之間相互聯接構成。每個節點代表一種特定的輸出函數,稱為激勵函數(activation function)。算法的特征是利用輸出后的誤差來估計輸出層的直接前導層的誤差,再利用這個誤差估計更前一層誤差,如此一層一層的反向傳播下去,就獲得了所有其他各層的誤差估計。這樣就形成了將輸出層表現出的誤差沿著與輸入傳送相反的方向逐級向網絡的輸入層傳遞的過程。
BP 神經網絡模型采用2018~2019 年的城市用水量數據進行模型訓練,近期人口數量及工業用水量波動會造成預測誤差整體偏高或者偏低,為修正短期波動偏離長期均衡關系的程度,引進誤差校正算法來修正長期靜態模型的不足。
設實際用水量為yiji=1, 2,…,288,j=1,2,…,7,預測用水量為i=1,2,…,288,j=1,2,…,7,權值為wjj=1,2,…,7,BP 神經網絡模型預測值為24 小時每5 分鐘的瞬時流量,i代表0:00,0:05,…,23:55,j代表周一到周日,誤差校正值為:

增加誤差校正算法后的新的預測值為:

城市用水量的歷史值存在很多臟數據,有異常值、缺失值、長時間連續不變值。處理異常值采用整體和局部相結合的方式,針對整體異常值采用箱型圖分析方法剔除異常值,針對局部異常值采用分時間段正態分布圖方法循環剔除。處理連續不變值采用方差為0 的方式進行剔除。由于樣本數據非常大,異常值、缺失值和長時間連續不變值只占樣本的6.21%,故直接刪除處理。
城市用水量具有很強的周期性,并與節假日和氣溫高度相關。
2.2.1 周期性探索
日周期性:工作日每天7~8 時、19~21 時是用水高峰,在下午14~16 時出現一個小低谷,夜間0~4 時出廠水流量最低。周末早高峰比工作日推遲一個小時為8~10 時,周末晚高峰時間段與工作日晚高峰時間段一致,周末午間小低谷時間與工作日午間小低谷時間一致,但是周末午間小低谷的出水量要比工作日偏高。
2.2.2 節假日相關性分析
城市用水量與節假日的Spearman 相關系數為0.53,相關關系顯著。
2.2.3 天氣相關性分析
每日最高氣溫和城市用水量存在很強的正相關關系,Pearson 相關系數為0.775,相關關系顯著。
因各指標間量綱差異很大,為提高模型精度,降低數值較高的指標對模型的影響,故對氣溫指標、量化后的節假日指標、量化后的時間指標、城市用水量指標做歸一化處理,歸一化處理方法為:

式中:min為樣本數據x的最小值,max為樣本數據的最大值。
模型訓練數據為2018~2019 年的城市用水量數據,以天氣、節假日、時間為輸入變量,城市用水量為輸出變量。隨機選取80%的數據作為模型訓練集,20%的數據作為模型測試集。選擇f(x)=1/1+e-x作為模型的激活函數。采用公式確定隱藏層神經元的數目,其中m為輸入層神經元的數目,n為輸出層神經元的數據,α為1 到10 的常數,開始選擇最小的神經元進行測試,依次遞增,經過反復測算,最終確定隱藏層神經元個數為8。
BP 神經網絡模型預測值在0:00~5:00,14:00~16:00 比實際偏大,很有可能是近期工業用水量波動導致,對2019 年11 月份的城市用水量預測誤差分析,BP 神經網絡模型預測結果經過誤差校正算法修正后的平均預測誤差降低了1.02%。
對將近一個月的預測城市用水量誤差分析,得到誤差頻數分布如表1。

表1 預測誤差頻數分布表
由表1 可以看出,預測誤差越大數據占比越小,95.18%的數據預測誤差控制在8%以內,說明經過誤差校正算法修正后的BP 神經網絡模型具有較高的預測精度。