宋飛揚,鐵治欣,2,黃澤華,丁成富
1(浙江理工大學 信息學院,杭州 310018)
2(浙江理工大學科技與藝術學院,紹興 312369)
3(聚光科技(杭州)股份有限公司,杭州 310052)
根據2018年哈爾濱市生態環境狀況公報[1]顯示,2018年空氣質量共超標52天,超標天數中首要污染物為PM2.5的天數共有39 天.PM2.5又稱細顆粒物,由于其粒徑小,活性強且附帶有害物質的特性,會對呼吸道系統和心血管系統造成傷害[2].空氣污染問題不僅與人們的日常生活、身體健康密切相關,還會對城市的招商引資、經濟發展造成較大的影響.因此對大氣中PM2.5濃度的預測有著重要的意義.
空氣質量預測模型主要分為基于大氣運動學的數值預報模型(NWP)與基于機器學習算法的統計模型[3].數值預報模型是從大氣內部物理規律如大氣動力學、熱力學等出發,建立對應的數學物理模型,用數理方法,借助大型計算機的計算能力,建立數值預測空氣污染物濃度的動態分布運輸和擴散模型.例如:JM Xu等[4]基于尺度空氣質量模式系統(CMAQ)提出了CMAQMOS模型,有效糾正了CMAQ 中平均污染物排放清單所導致的系統性預測誤差;Ming-Tung Chuang 等[5]應用結合化學的天氣研究與預測模型(WRF-Chem-MADRID)對美國東南部地區進行預測,結果顯示在O3和PM2.5預測中表現良好.機器學習模型則是利用統計學、概率論以及復雜的算法搭建模型,從已知數據中挖掘數據關系,實現精細化預測.例如王敏、孫寶磊等[6,7]利用BP神經網絡模型對PM2.5濃度進行預測,實驗效果較好;彭斯俊等[8]利用ARIMA模型對于時間序列短期預測有著較高的精度的特點,挖掘序列內部規律,得到了不錯的結果;喻其炳等[9]通過K-means方法篩選相似性高的數據來訓練基于支持向量機的PM2.5濃度預測模型,提升效果明顯.
雖然以上所提PM2.5濃度預測模型各有優點,但是其往往只根據目標站點的污染因子和氣象數據,而忽略了PM2.5的分布也具有區域性[10].針對這種問題,本文提出了一種基于時空特征的KNN-LSTM網絡模型,通過KNN算法選擇目標站點的空間相關信息,利用LSTM 具有時間記憶的特點,從時間和空間兩個維度考慮,實現對PM2.5濃度的預測.同時還利用哈爾濱市多個空氣質量監測站的污染物數據,與BP神經網絡模型和普通的LSTM模型進行實驗對比,結果表明本文所提KNN-LSTM模型能較好預測未來時刻的PM2.5濃度值.
長短時記憶網絡(LSTM)主要是為了解決循環神經網絡(RNN)在長序列訓練過程中梯度消失的問題[11,12].與RNN相比,LSTM增加了3個門控:輸入門、遺忘門、輸出門.門的作用是為了控制之前的隱藏狀態、當前的輸入等信息,確定哪些信息該丟棄、哪些信息該保留.LSTM的模型結構如圖1所示.

圖1 LSTM的模型結構
圖1中Θ代表操作矩陣中對應的元素相乘,+代表進行矩陣的加法.

對于LSTM 當前的輸入xt和上一狀態傳遞的ht-1,通過下面公式得到4個狀態:其中,zf、zi、zo、z分別表示遺忘門控、輸入門控、輸出門控和當前輸入內容,Wxi、Wxf、Wxo、Wxz分別代表輸入層到輸入門、遺忘門、輸出門和細胞狀態的權重矩陣;bi、bf、bo、bz分別為輸入門、遺忘門、輸出門和細胞狀態的偏移量.σ為Sigmoid函數,tanh為雙曲正切函數.LSTM存在兩種傳輸狀態:ct(cell state)和ht(hidden state),其中LSTM 中的ct對應RNN 中的ht.t時刻在LSTM 內部主要進行以下3步,如式(5)、式(6)、式(7)所示.
(1)經過zf控制上一個狀態ct-1哪些需要保留或遺忘.
(2)經過zi對輸入xt選擇記憶.
(3)經過zo控制哪些會作為當前狀態的輸出.

其中,隱藏層到輸出層的權重矩陣記為W'.
KNN算法[13]是一種有監督學習的分類算法.其實現較為簡單,訓練速度較快.KNN 用空間中兩個點的距離來度量其相似度,距離越小,相似度越高.通過最鄰近的k個點歸屬的主要類別,來對測試點進行分類.常見的距離度量方式有歐氏距離、馬氏距離、曼哈頓距離等.特征向量Xi、Xj之間的歐氏距離計算公式如下:

其中,k表示特征向量的維度,xi(m)、xj(m)分別為Xi、Xj第m維的值,m的取值范圍為1,2,3,···,k.
1.3.1 基于單站點的LSTM預測模型
本文首先實現了基于LSTM的單站點PM2.5濃度預測模型,該模型是通過目標站點空氣質量六因子(NO2、PM2.5、PM10、SO2、CO、O3)的歷史數據,來預測當前時刻的PM2.5濃度.若當前時刻為t,其輸入為t-st,t-st+1,···,t-1時刻六因子的小時數據.輸入的數據先后經由LSTM層和兩層全連接層(Dense層)后得到PM2.5的濃度預測結果.其中損失函數采用均方誤差(MSE),計算公式如式(9)所示.模型的優化器選用Adam 優化器[14].

其中,Xi為PM2.5濃度預測值,Xr為PM2.5濃度真實值,n為訓練集樣本數.
實驗選取均方根誤差(RMSE)和平均絕對誤差(MAE)作為評價指標.計算公式如下:

1.3.2 KNN-LSTM預測模型
對于單站點LSTM模型只考慮時間特征,而沒有充分利用空間相關特征的問題,本文利用KNN算法對鄰近的空間因素進行篩選,作為額外輸入,對其進行修正,構建KNN-LSTM模型以實現對PM2.5濃度更精準的預測.
KNN-LSTM模型主要可分為以下7步,預測模型流程圖如圖2所示.

圖2 KNN-LSTM模型流程圖
(1)數據預處理.在原始數據使用前,需要對缺失樣本和異常值進行處理.空氣監測站對數據缺失的部分用-1表示,統計后可知,各因子的缺失部分占總數據量均不超過5%.故采用簡單方便的線性插值法進行填充.由于其數據的收集都要經過一系列嚴格的審核流程,認為其數據真實且有效,不對數據進行去噪處理.
鑒于檢測站點各個污染因子有著不同的量綱和量級,為了取消由于量綱不同引起的誤差和保證模型的高效性,對數據進行max-min 歸一化處理[15],將數據轉化到[0,1]的范圍內,并在預測結束后進行數據恢復.max-min 歸一化公式如下:

其中,xt為原數據,x′t為歸一化后的數據,xmax、xmin分別為數據中的最大值與最小值.
(2)采用KNN算法提取目標站點的空間相關特征,令K=1.本文采用歐氏距離來衡量目標監測站和附近站點之間的相關程度,距離越小,空間相關性越強.KNN算法的選擇過程如下所示.
1)根據單站點LSTM模型中的時間步長st構建PM2.5狀態矩陣.假設其時間步長為st,區域中共有m個站點,為方便起見,我們將t時刻站點i的時間步狀態量Xti和t時刻PM2.5狀態矩陣St定義如(13)、式(14)所示:

其中,xun為編號為u的站點在n時刻的PM2.5濃度值(u=1,2,3,…,m;n=1,2,3,…,t).
2)通過計算目標站點與其他鄰近站點(共m-1個)t時刻時間步狀態量之間的歐氏距離,并進行從小到大排序,選取前k個對應監測站點的PM2.5數據作為t時刻目標站點的空間相關因素,記為Xsp:

其中,xisp為t時刻與目標站點第i相關的站點PM2.5濃度值.
(3)根據目標站點的歷史污染數據,利用LSTM網絡提取時間特征.輸入仍為目標站點st時間步的空氣質量六因子數據,t時刻輸入數據lstm_inputt如式(16)所示.

將lstm_inputt經過LSTM層得到的輸出向量記為lstm_outputt.

圖3 KNN-LSTM網絡結構
(5)將數據劃分成訓練集與測試集,用訓練集數據進行模型訓練,用測試集數據進行驗證,并記錄結果.
(6)令K=K+1,重復步驟(3)~(5),直到K>M為止.其中M為鄰近站點的數量.
(7)根據所記錄測試集上評價指標(這里選用RMSE),確定最優的K.
為了驗證所提方法的有效性,本文采用哈爾濱市區11個空氣質量監測站4月1日至5月31日兩個月共計1464條小時監測數據作為實驗數據.站點名稱及坐標位置見表1.

表1 哈爾濱市空氣質量監測站站點位置及其編號
阿城會寧空氣質量監測站遠離城區且與其他監測站點距離較遠,根據各站點PM2.5時間序列的相關性可知:阿城會寧站點與其他站點間的相關性系數均不超過0.6,而其他站點任意兩站點間的相關性系數均超過0.7,因此在KNN進行空間站點選取時,忽略阿城會寧站,同時這證明了PM2.5的濃度分布具有區域性.圖4為部分站點PM2.5數據展示,可以明顯看出站點的數據的分布具有相似性.

圖4 PM2.5 監測數據(從上到下分別為站點編號1137A,1129A,1130A,1132A的數據)
實驗環境及計算機配置如下:程序設計語言為Python3.6.5;開發環境采用Anaconda所自帶的Spyder編輯器;Keras版本為2.2.4;Tensorflow版本為1.13.1;Scikit-Learn版本為0.19.1;計算機處理器為AMD Ryzen 5 2500U,內存為8 GB;操作系統為Window10 x64.
對數據進行劃分,其中前1300條數據用于訓練,80%為訓練集、20%為驗證集,后152條數據作為測試集.LSTM層的時間步長timestep為12,K值選取為2 (具體原因見2.3節).具體網絡參數設置如表2所示.
本文通過KNN算法來獲取目標站點的空間特征,由于K值的選擇會影響到選擇相關站點的數目,進而影響實驗結果.圖5給出了K值選擇與評價指標RMSE變化之間的關系.根據圖5所示,當K=2時,預測效果最好.故K值選擇為2.
為了驗證本文所提模型的有效性,本文選擇傳統BP神經網絡以及傳統LSTM神經網絡作為對比實驗,3種模型均在相同的實驗平臺下進行,各個模型預測值與實際值的對比見圖6.

圖6 預測值與實際值的對比圖
本文所有實驗均采取均方根誤差(RMSE)和平均絕對誤差(MAE)作為評價指標.為消除一次實驗的偶然性,每種實驗均進行30次,迭代50次.表3中評價指標數據均為30次實驗結果的平均值(結果保留3位小數).由表可知本文所提KNN-LSTM模型相對于BP神經網絡,平均絕對誤差(MAE)、均方根誤差(RMSE)分別降低了19.25%、13.23%;相較于LSTM模型MAE、RMSE分別降低了4.29%、6.99%.可見本文所提KNN-LSTM模型要優于BP神經網絡和LSTM模型.

表3 各個模型的評價指標
本文使用哈爾濱市國控空氣質量監測站空氣質量六因子的小時數據進行PM2.5濃度預測.首先對缺失值采用線性插值的方法進行填充,為減少由于量綱造成的誤差,對數據進行max-min 歸一化處理.再利用KNN算法為目標站點選取與其空間相關的鄰近站點,得到其空間特征.然后對目標站點搭建LSTM模型,接著將得到的空間特征輸入到LSTM模型中.通過訓練集數據進行訓練,再將訓練好的模型用測試集進行評估.通過選取最優的K值,確定最終模型.實驗結果表明:本文所提模型的預測結果曲線更為平滑且與真實值更加接近,均方根誤差和絕對平均誤差均為最小,預測效果相較BP神經網絡和傳統LSTM神經網絡模型更好,可以為PM2.5的預警預報提供一定的參考.
由于數據收集的不充分,僅僅利用空氣質量六因子作為輸入數據是相對片面的,后續研究考慮引進更多影響因素以提升模型效果.