宋飛揚,鐵治欣,2,黃澤華,丁成富
1(浙江理工大學 信息學院,杭州 310018)
2(浙江理工大學科技與藝術學院,紹興 312369)
3(聚光科技(杭州)股份有限公司,杭州 310052)
根據(jù)2018年哈爾濱市生態(tài)環(huán)境狀況公報[1]顯示,2018年空氣質量共超標52天,超標天數(shù)中首要污染物為PM2.5的天數(shù)共有39 天.PM2.5又稱細顆粒物,由于其粒徑小,活性強且附帶有害物質的特性,會對呼吸道系統(tǒng)和心血管系統(tǒng)造成傷害[2].空氣污染問題不僅與人們的日常生活、身體健康密切相關,還會對城市的招商引資、經(jīng)濟發(fā)展造成較大的影響.因此對大氣中PM2.5濃度的預測有著重要的意義.
空氣質量預測模型主要分為基于大氣運動學的數(shù)值預報模型(NWP)與基于機器學習算法的統(tǒng)計模型[3].數(shù)值預報模型是從大氣內部物理規(guī)律如大氣動力學、熱力學等出發(fā),建立對應的數(shù)學物理模型,用數(shù)理方法,借助大型計算機的計算能力,建立數(shù)值預測空氣污染物濃度的動態(tài)分布運輸和擴散模型.例如:JM Xu等[4]基于尺度空氣質量模式系統(tǒng)(CMAQ)提出了CMAQMOS模型,有效糾正了CMAQ 中平均污染物排放清單所導致的系統(tǒng)性預測誤差;Ming-Tung Chuang 等[5]應用結合化學的天氣研究與預測模型(WRF-Chem-MADRID)對美國東南部地區(qū)進行預測,結果顯示在O3和PM2.5預測中表現(xiàn)良好.機器學習模型則是利用統(tǒng)計學、概率論以及復雜的算法搭建模型,從已知數(shù)據(jù)中挖掘數(shù)據(jù)關系,實現(xiàn)精細化預測.例如王敏、孫寶磊等[6,7]利用BP神經(jīng)網(wǎng)絡模型對PM2.5濃度進行預測,實驗效果較好;彭斯俊等[8]利用ARIMA模型對于時間序列短期預測有著較高的精度的特點,挖掘序列內部規(guī)律,得到了不錯的結果;喻其炳等[9]通過K-means方法篩選相似性高的數(shù)據(jù)來訓練基于支持向量機的PM2.5濃度預測模型,提升效果明顯.
雖然以上所提PM2.5濃度預測模型各有優(yōu)點,但是其往往只根據(jù)目標站點的污染因子和氣象數(shù)據(jù),而忽略了PM2.5的分布也具有區(qū)域性[10].針對這種問題,本文提出了一種基于時空特征的KNN-LSTM網(wǎng)絡模型,通過KNN算法選擇目標站點的空間相關信息,利用LSTM 具有時間記憶的特點,從時間和空間兩個維度考慮,實現(xiàn)對PM2.5濃度的預測.同時還利用哈爾濱市多個空氣質量監(jiān)測站的污染物數(shù)據(jù),與BP神經(jīng)網(wǎng)絡模型和普通的LSTM模型進行實驗對比,結果表明本文所提KNN-LSTM模型能較好預測未來時刻的PM2.5濃度值.
長短時記憶網(wǎng)絡(LSTM)主要是為了解決循環(huán)神經(jīng)網(wǎng)絡(RNN)在長序列訓練過程中梯度消失的問題[11,12].與RNN相比,LSTM增加了3個門控:輸入門、遺忘門、輸出門.門的作用是為了控制之前的隱藏狀態(tài)、當前的輸入等信息,確定哪些信息該丟棄、哪些信息該保留.LSTM的模型結構如圖1所示.
圖1 LSTM的模型結構
圖1中Θ代表操作矩陣中對應的元素相乘,+代表進行矩陣的加法.
對于LSTM 當前的輸入xt和上一狀態(tài)傳遞的ht-1,通過下面公式得到4個狀態(tài):其中,zf、zi、zo、z分別表示遺忘門控、輸入門控、輸出門控和當前輸入內容,Wxi、Wxf、Wxo、Wxz分別代表輸入層到輸入門、遺忘門、輸出門和細胞狀態(tài)的權重矩陣;bi、bf、bo、bz分別為輸入門、遺忘門、輸出門和細胞狀態(tài)的偏移量.σ為Sigmoid函數(shù),tanh為雙曲正切函數(shù).LSTM存在兩種傳輸狀態(tài):ct(cell state)和ht(hidden state),其中LSTM 中的ct對應RNN 中的ht.t時刻在LSTM 內部主要進行以下3步,如式(5)、式(6)、式(7)所示.
(1)經(jīng)過zf控制上一個狀態(tài)ct-1哪些需要保留或遺忘.
(2)經(jīng)過zi對輸入xt選擇記憶.
(3)經(jīng)過zo控制哪些會作為當前狀態(tài)的輸出.
其中,隱藏層到輸出層的權重矩陣記為W'.
KNN算法[13]是一種有監(jiān)督學習的分類算法.其實現(xiàn)較為簡單,訓練速度較快.KNN 用空間中兩個點的距離來度量其相似度,距離越小,相似度越高.通過最鄰近的k個點歸屬的主要類別,來對測試點進行分類.常見的距離度量方式有歐氏距離、馬氏距離、曼哈頓距離等.特征向量Xi、Xj之間的歐氏距離計算公式如下:
其中,k表示特征向量的維度,xi(m)、xj(m)分別為Xi、Xj第m維的值,m的取值范圍為1,2,3,···,k.
1.3.1 基于單站點的LSTM預測模型
本文首先實現(xiàn)了基于LSTM的單站點PM2.5濃度預測模型,該模型是通過目標站點空氣質量六因子(NO2、PM2.5、PM10、SO2、CO、O3)的歷史數(shù)據(jù),來預測當前時刻的PM2.5濃度.若當前時刻為t,其輸入為t-st,t-st+1,···,t-1時刻六因子的小時數(shù)據(jù).輸入的數(shù)據(jù)先后經(jīng)由LSTM層和兩層全連接層(Dense層)后得到PM2.5的濃度預測結果.其中損失函數(shù)采用均方誤差(MSE),計算公式如式(9)所示.模型的優(yōu)化器選用Adam 優(yōu)化器[14].
其中,Xi為PM2.5濃度預測值,Xr為PM2.5濃度真實值,n為訓練集樣本數(shù).
實驗選取均方根誤差(RMSE)和平均絕對誤差(MAE)作為評價指標.計算公式如下:
1.3.2 KNN-LSTM預測模型
對于單站點LSTM模型只考慮時間特征,而沒有充分利用空間相關特征的問題,本文利用KNN算法對鄰近的空間因素進行篩選,作為額外輸入,對其進行修正,構建KNN-LSTM模型以實現(xiàn)對PM2.5濃度更精準的預測.
KNN-LSTM模型主要可分為以下7步,預測模型流程圖如圖2所示.
圖2 KNN-LSTM模型流程圖
(1)數(shù)據(jù)預處理.在原始數(shù)據(jù)使用前,需要對缺失樣本和異常值進行處理.空氣監(jiān)測站對數(shù)據(jù)缺失的部分用-1表示,統(tǒng)計后可知,各因子的缺失部分占總數(shù)據(jù)量均不超過5%.故采用簡單方便的線性插值法進行填充.由于其數(shù)據(jù)的收集都要經(jīng)過一系列嚴格的審核流程,認為其數(shù)據(jù)真實且有效,不對數(shù)據(jù)進行去噪處理.
鑒于檢測站點各個污染因子有著不同的量綱和量級,為了取消由于量綱不同引起的誤差和保證模型的高效性,對數(shù)據(jù)進行max-min 歸一化處理[15],將數(shù)據(jù)轉化到[0,1]的范圍內,并在預測結束后進行數(shù)據(jù)恢復.max-min 歸一化公式如下:
其中,xt為原數(shù)據(jù),x′t為歸一化后的數(shù)據(jù),xmax、xmin分別為數(shù)據(jù)中的最大值與最小值.
(2)采用KNN算法提取目標站點的空間相關特征,令K=1.本文采用歐氏距離來衡量目標監(jiān)測站和附近站點之間的相關程度,距離越小,空間相關性越強.KNN算法的選擇過程如下所示.
1)根據(jù)單站點LSTM模型中的時間步長st構建PM2.5狀態(tài)矩陣.假設其時間步長為st,區(qū)域中共有m個站點,為方便起見,我們將t時刻站點i的時間步狀態(tài)量Xti和t時刻PM2.5狀態(tài)矩陣St定義如(13)、式(14)所示:
其中,xun為編號為u的站點在n時刻的PM2.5濃度值(u=1,2,3,…,m;n=1,2,3,…,t).
2)通過計算目標站點與其他鄰近站點(共m-1個)t時刻時間步狀態(tài)量之間的歐氏距離,并進行從小到大排序,選取前k個對應監(jiān)測站點的PM2.5數(shù)據(jù)作為t時刻目標站點的空間相關因素,記為Xsp:
其中,xisp為t時刻與目標站點第i相關的站點PM2.5濃度值.
(3)根據(jù)目標站點的歷史污染數(shù)據(jù),利用LSTM網(wǎng)絡提取時間特征.輸入仍為目標站點st時間步的空氣質量六因子數(shù)據(jù),t時刻輸入數(shù)據(jù)lstm_inputt如式(16)所示.
將lstm_inputt經(jīng)過LSTM層得到的輸出向量記為lstm_outputt.
圖3 KNN-LSTM網(wǎng)絡結構
(5)將數(shù)據(jù)劃分成訓練集與測試集,用訓練集數(shù)據(jù)進行模型訓練,用測試集數(shù)據(jù)進行驗證,并記錄結果.
(6)令K=K+1,重復步驟(3)~(5),直到K>M為止.其中M為鄰近站點的數(shù)量.
(7)根據(jù)所記錄測試集上評價指標(這里選用RMSE),確定最優(yōu)的K.
為了驗證所提方法的有效性,本文采用哈爾濱市區(qū)11個空氣質量監(jiān)測站4月1日至5月31日兩個月共計1464條小時監(jiān)測數(shù)據(jù)作為實驗數(shù)據(jù).站點名稱及坐標位置見表1.
表1 哈爾濱市空氣質量監(jiān)測站站點位置及其編號
阿城會寧空氣質量監(jiān)測站遠離城區(qū)且與其他監(jiān)測站點距離較遠,根據(jù)各站點PM2.5時間序列的相關性可知:阿城會寧站點與其他站點間的相關性系數(shù)均不超過0.6,而其他站點任意兩站點間的相關性系數(shù)均超過0.7,因此在KNN進行空間站點選取時,忽略阿城會寧站,同時這證明了PM2.5的濃度分布具有區(qū)域性.圖4為部分站點PM2.5數(shù)據(jù)展示,可以明顯看出站點的數(shù)據(jù)的分布具有相似性.
圖4 PM2.5 監(jiān)測數(shù)據(jù)(從上到下分別為站點編號1137A,1129A,1130A,1132A的數(shù)據(jù))
實驗環(huán)境及計算機配置如下:程序設計語言為Python3.6.5;開發(fā)環(huán)境采用Anaconda所自帶的Spyder編輯器;Keras版本為2.2.4;Tensorflow版本為1.13.1;Scikit-Learn版本為0.19.1;計算機處理器為AMD Ryzen 5 2500U,內存為8 GB;操作系統(tǒng)為Window10 x64.
對數(shù)據(jù)進行劃分,其中前1300條數(shù)據(jù)用于訓練,80%為訓練集、20%為驗證集,后152條數(shù)據(jù)作為測試集.LSTM層的時間步長timestep為12,K值選取為2 (具體原因見2.3節(jié)).具體網(wǎng)絡參數(shù)設置如表2所示.
本文通過KNN算法來獲取目標站點的空間特征,由于K值的選擇會影響到選擇相關站點的數(shù)目,進而影響實驗結果.圖5給出了K值選擇與評價指標RMSE變化之間的關系.根據(jù)圖5所示,當K=2時,預測效果最好.故K值選擇為2.
為了驗證本文所提模型的有效性,本文選擇傳統(tǒng)BP神經(jīng)網(wǎng)絡以及傳統(tǒng)LSTM神經(jīng)網(wǎng)絡作為對比實驗,3種模型均在相同的實驗平臺下進行,各個模型預測值與實際值的對比見圖6.
圖6 預測值與實際值的對比圖
本文所有實驗均采取均方根誤差(RMSE)和平均絕對誤差(MAE)作為評價指標.為消除一次實驗的偶然性,每種實驗均進行30次,迭代50次.表3中評價指標數(shù)據(jù)均為30次實驗結果的平均值(結果保留3位小數(shù)).由表可知本文所提KNN-LSTM模型相對于BP神經(jīng)網(wǎng)絡,平均絕對誤差(MAE)、均方根誤差(RMSE)分別降低了19.25%、13.23%;相較于LSTM模型MAE、RMSE分別降低了4.29%、6.99%.可見本文所提KNN-LSTM模型要優(yōu)于BP神經(jīng)網(wǎng)絡和LSTM模型.
表3 各個模型的評價指標
本文使用哈爾濱市國控空氣質量監(jiān)測站空氣質量六因子的小時數(shù)據(jù)進行PM2.5濃度預測.首先對缺失值采用線性插值的方法進行填充,為減少由于量綱造成的誤差,對數(shù)據(jù)進行max-min 歸一化處理.再利用KNN算法為目標站點選取與其空間相關的鄰近站點,得到其空間特征.然后對目標站點搭建LSTM模型,接著將得到的空間特征輸入到LSTM模型中.通過訓練集數(shù)據(jù)進行訓練,再將訓練好的模型用測試集進行評估.通過選取最優(yōu)的K值,確定最終模型.實驗結果表明:本文所提模型的預測結果曲線更為平滑且與真實值更加接近,均方根誤差和絕對平均誤差均為最小,預測效果相較BP神經(jīng)網(wǎng)絡和傳統(tǒng)LSTM神經(jīng)網(wǎng)絡模型更好,可以為PM2.5的預警預報提供一定的參考.
由于數(shù)據(jù)收集的不充分,僅僅利用空氣質量六因子作為輸入數(shù)據(jù)是相對片面的,后續(xù)研究考慮引進更多影響因素以提升模型效果.