萬永權(quán) 徐方勤 燕彩蓉 蘇厚勤
1(上海建橋?qū)W院計(jì)算機(jī)科學(xué)與技術(shù)系 上海 201306)2(東華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 上海 201620)
空氣污染一直影響著自然環(huán)境和人類健康,而且從長遠(yuǎn)來看,它還會(huì)加劇對地球的危害。作為一種可靠而有效的污染控制措施,空氣質(zhì)量預(yù)測已成為近年來一個(gè)重要研究領(lǐng)域[1-4]。
傳統(tǒng)方法多采用數(shù)值預(yù)測模型和回歸統(tǒng)計(jì)模型。前者主要依賴于污染物濃度數(shù)據(jù)本身,后者則主要通過分析大量影響污染物濃度的因子,建立這些影響因子與污染物濃度之間的線性或非線性關(guān)系,預(yù)測的準(zhǔn)確度主要依賴于數(shù)學(xué)模型本身[1]。人工神經(jīng)網(wǎng)絡(luò)是使用最廣泛的空氣質(zhì)量預(yù)測模型,通常采用污染物濃度作為主要輸入,然后輸出第二天或下一個(gè)時(shí)間段的平均空氣質(zhì)量指數(shù)AQI(air quality index)[2]。BP神經(jīng)網(wǎng)絡(luò)雖然應(yīng)用廣泛,但存在收斂速度慢和易陷入極小值的缺陷,相關(guān)研究將混沌變量加入遺傳算法來進(jìn)一步提高遺傳算法的全局搜索能力和收斂速度,將混沌遺傳算法優(yōu)化后得到的最優(yōu)解作為BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)重和閾值[3]。為了更準(zhǔn)確地描述和預(yù)測某區(qū)域的空氣質(zhì)量,可以采用多個(gè)站點(diǎn)來收集數(shù)據(jù),并且通過多個(gè)污染物來綜合評估空氣質(zhì)量,預(yù)測其AQI值[4]。隨著物聯(lián)網(wǎng)的發(fā)展,基于大數(shù)據(jù)的空氣質(zhì)量指數(shù)預(yù)測方法成為研究熱點(diǎn),即通過大量歷史數(shù)據(jù),分析空氣質(zhì)量變化規(guī)律,然后結(jié)合實(shí)時(shí)采集的數(shù)據(jù),建立預(yù)測模型[5]。為了進(jìn)一步提高預(yù)測準(zhǔn)確度,一些混合模型或算法被提出,如將BP網(wǎng)絡(luò)和小波分解模型相結(jié)合[6],將差分進(jìn)化算法DE、集成經(jīng)驗(yàn)?zāi)B(tài)分解的改進(jìn)算法CEEMD和極限學(xué)習(xí)機(jī)ELM相結(jié)合[7],采用模糊綜合評估模型[8]。雖然這些混合模型相比單一模型具有更高的精度,但由于污染物濃度受多種因素影響,使用單一污染物濃度數(shù)據(jù)源作為輸入進(jìn)行預(yù)測的效果也會(huì)受到限制,而且數(shù)據(jù)的時(shí)序性在預(yù)測時(shí)也是一個(gè)非常重要的關(guān)系[9-10]。本項(xiàng)目組研究發(fā)現(xiàn)氣象參數(shù)對污染物濃度的變化有較大的影響,而且不同污染物受不同氣象參數(shù)的影響程度也不同[11]。
考慮到空氣污染物受到各方面的影響,而且變化快,所以本文主要研究短期的(每小時(shí))污染物濃度預(yù)測,在建模時(shí)利用序列預(yù)測、相關(guān)性分析和神經(jīng)網(wǎng)絡(luò)模型,采用氣象參數(shù)和各項(xiàng)污染物濃度數(shù)據(jù)作為輸入,以此提高預(yù)測準(zhǔn)確度,在模型訓(xùn)練時(shí)采用更大的數(shù)據(jù)集進(jìn)行模型參數(shù)學(xué)習(xí)。
氣象參數(shù)通過給定時(shí)間內(nèi)大氣狀態(tài)采樣來獲得。主要?dú)庀髤?shù)包括溫度、濕度、風(fēng)向、風(fēng)速、氣壓、太陽輻射、降水等,本文主要分析前5個(gè)。為了分析他們之間的關(guān)系,采集2015年-2016年上海市每天發(fā)布的5個(gè)氣象參數(shù)。給定隨機(jī)變量x和y,它們之間的相關(guān)系數(shù)定義為:
(1)
式中:Cov(x,y)表示x與y的協(xié)方差,V(x)為x的方差,V(y)為y的方差,ρ表示x和y的相關(guān)程度。
ρ取值范圍為[-1,1],ρ≤0表示兩者無關(guān),ρ>0表示兩者相關(guān),當(dāng)ρ>0.3時(shí),可以認(rèn)為兩個(gè)參數(shù)之間存在強(qiáng)相關(guān)。表1列出了5個(gè)氣象參數(shù)之間的相關(guān)系數(shù)。
表1 各氣象參數(shù)之間的相關(guān)關(guān)系
根據(jù)計(jì)算產(chǎn)生的氣象參數(shù)之間的相關(guān)系數(shù),可以在構(gòu)建神經(jīng)網(wǎng)絡(luò)時(shí)選擇合適的輸入,不僅可以減少模型訓(xùn)練的參數(shù),而且也避免了不必要的參數(shù)對預(yù)測結(jié)果產(chǎn)生的負(fù)面影響。
空氣質(zhì)量預(yù)測主要通過空氣污染擴(kuò)散模型測量或計(jì)算大氣污染物濃度。中國大陸的AQI是根據(jù)6個(gè)大氣污染物濃度來計(jì)算,即二氧化硫(SO2)、二氧化氮(NO2)、一氧化碳(CO)、臭氧(O3)、空氣動(dòng)力學(xué)當(dāng)量直徑小于等于2.5微米的顆粒物(PM2.5)、空氣動(dòng)力學(xué)當(dāng)量直徑小于等于10微米的顆粒物(PM10),通過在每個(gè)城市的環(huán)境監(jiān)測站對它們進(jìn)行測量。如空氣質(zhì)量指數(shù)為0~50時(shí),表示空氣質(zhì)量級別為I級,空氣質(zhì)量狀況屬于優(yōu),此時(shí)不存在空氣污染問題,對公眾的健康沒有任何危害。
根據(jù)2015年-2016年上海市某站點(diǎn)監(jiān)測的每天24小時(shí)的污染物狀況和同期氣象參數(shù)數(shù)據(jù),采用SPSS工具提供的“分析-回歸-自動(dòng)線性建?!?,繪制了氣象參數(shù)對污染物濃度的影響,如圖1所示。由此圖可知,風(fēng)速對NO2、PM2.5和PM10的影響最大,濕度對O3和SO2的影響最大,CO主要受溫度和風(fēng)速的影響。然而,空氣壓力對SO2、NO2、PM2.5和PM10的影響最小,風(fēng)向?qū)O和O3的影響最小。風(fēng)向?qū)O和O3的影響最小。
圖1 氣象參數(shù)對污染物濃度的影響程度
根據(jù)氣象參數(shù)和污染物濃度之間的數(shù)據(jù)分析,提出空氣質(zhì)量預(yù)測系統(tǒng)框架,如圖2所示。該框架由3部分組成。第1部分是數(shù)據(jù)生成,包括兩類數(shù)據(jù),污染物濃度數(shù)據(jù)和氣象參數(shù)數(shù)據(jù),它們都需要進(jìn)行預(yù)處理,如歸一化處理、空值填充和異常值檢測。第2部分為模型構(gòu)建與訓(xùn)練,預(yù)測模型是本方法的重點(diǎn),使用歷史數(shù)據(jù)集來訓(xùn)練模型,數(shù)據(jù)集被分成3份:訓(xùn)練集、驗(yàn)證集和測試集。第3部分為模型服務(wù),驗(yàn)證后的模型及其參數(shù)將被保存,并提供在線預(yù)測功能。
圖2 空氣質(zhì)量預(yù)測框架
在此框架下,具體的預(yù)測步驟描述如下:
1) 收集數(shù)據(jù)。5個(gè)氣象參數(shù)數(shù)據(jù)從上海市氣象局官網(wǎng)采集,每天一次;污染物濃度數(shù)據(jù)從監(jiān)測站點(diǎn)獲得,每小時(shí)都能獲取最新的6個(gè)污染物濃度數(shù)據(jù)。所以每條氣象參數(shù)記錄的更新頻率為一天,每條污染物濃度記錄的更新頻率為一小時(shí)。
2) 數(shù)據(jù)預(yù)處理。首先是歸一化處理,若數(shù)據(jù)x被歸一化的結(jié)果為Norm(x),xmin表示該數(shù)據(jù)出現(xiàn)的最小值,xmax表示該數(shù)據(jù)出現(xiàn)的最大值,計(jì)算方法如下:
(2)
當(dāng)出現(xiàn)數(shù)據(jù)空值的情況時(shí),對于污染物濃度數(shù)據(jù),因?yàn)橄嗖钪挥?個(gè)小時(shí),所以直接采用上一個(gè)歷史數(shù)據(jù)進(jìn)行填充;對于氣象數(shù)據(jù),每天的變化比較大,所以采用最近一周的平均值來進(jìn)行填充。
當(dāng)出現(xiàn)數(shù)據(jù)值異常時(shí),如溫度超過50度,這時(shí)將與數(shù)據(jù)出現(xiàn)空值時(shí)采用相同的策略進(jìn)行填充。
3) 數(shù)據(jù)相關(guān)性分析。分析5個(gè)氣象參數(shù)內(nèi)部以及與污染物濃度之間的關(guān)系,發(fā)現(xiàn)參數(shù)之間的強(qiáng)相關(guān)性和弱相關(guān)性。
4) 第一階段神經(jīng)網(wǎng)絡(luò)模型。采用氣象參數(shù)作為輸入。對于隱藏層中的每個(gè)節(jié)點(diǎn),輸出可以表示為:
a(l+1)=f(W(l)a(l)+b(l))
(3)
式中:l代表層數(shù),f是激活函數(shù),選用relu。參數(shù)a(l)、b(l)和W(l)分別表示上一層輸出的激勵(lì)、偏置項(xiàng)和模型第l層的權(quán)重參數(shù)。模型采用relu激活函數(shù)的原因在于:它不會(huì)出現(xiàn)像sigmoid函數(shù)和tanh函數(shù)一樣的梯度消失現(xiàn)象。此外,由于它是線性的,只需要一個(gè)閾值就可以得到激活值,不需要復(fù)雜的運(yùn)算,所以使用relu得到的隨機(jī)梯度下降算法的收斂速度會(huì)比sigmoid和tanh快。
5) 第二階段神經(jīng)網(wǎng)絡(luò)模型。輸入包括:4)的輸出結(jié)果、根據(jù)3)選擇的重要?dú)庀髤?shù),以及需要預(yù)測的污染物濃度的歷史序列。也就是說,不同的污染物濃度預(yù)測,其模型結(jié)構(gòu)相同,但是輸入不同,而且需要學(xué)習(xí)的權(quán)重也不同。輸出為該污染物在下一個(gè)小時(shí)內(nèi)的濃度預(yù)測值。
6) AQI計(jì)算。根據(jù)各污染物濃度預(yù)測值,采用相關(guān)公式,計(jì)算新的AQI值。
本方法通過預(yù)測污染物濃度來預(yù)測AQI值,而不是直接通過模型來預(yù)測AQI值。
根據(jù)預(yù)測框架,預(yù)測模型也分為兩個(gè)神經(jīng)網(wǎng)絡(luò)模型單獨(dú)進(jìn)行,而且不同的污染物濃度的預(yù)測也是獨(dú)立進(jìn)行,最終的輸出結(jié)果是污染物濃度預(yù)測值。為了方便表述,本文提出的預(yù)測方法稱為two-phase neural network (2-NN),采用的相關(guān)模型稱為2-NN模型,見圖3。
圖3 預(yù)測模型結(jié)構(gòu)
模型訓(xùn)練過程中,當(dāng)數(shù)據(jù)學(xué)習(xí)過于徹底時(shí),會(huì)產(chǎn)生噪聲特征,將影響后期的預(yù)測效果,即模型對訓(xùn)練數(shù)據(jù)表現(xiàn)良好,但對未知的數(shù)據(jù)表現(xiàn)則不佳,出現(xiàn)了過擬合現(xiàn)象。
導(dǎo)致過擬合原因包括:1) 數(shù)據(jù)不純,需要重新清理數(shù)據(jù);2) 訓(xùn)練數(shù)據(jù)量太少,或訓(xùn)練數(shù)據(jù)占的比例太小,也可能出現(xiàn)過擬合。解決方法可以有:對數(shù)據(jù)進(jìn)行預(yù)處理;增加訓(xùn)練的數(shù)據(jù)量;采用L2正則化方法;采用Dropout方法。Dropout方法在ImageNet方法中提出,而后在神經(jīng)網(wǎng)絡(luò)中也被廣泛使用。本文在訓(xùn)練模型時(shí)綜合采用以上幾種解決方法來避免模型訓(xùn)練的過擬合現(xiàn)象。
實(shí)驗(yàn)使用兩個(gè)數(shù)據(jù)集,分別為上海市某環(huán)境監(jiān)測站采集的每小時(shí)空氣污染物濃度數(shù)據(jù)和上海市氣象中心發(fā)布的每日氣象參數(shù)數(shù)據(jù)。所有數(shù)據(jù)將通過歸一化、空值填充和異常值檢測等方法進(jìn)行預(yù)處理,使得數(shù)據(jù)盡可能完整,總記錄數(shù)約為17 500條。
數(shù)據(jù)以6∶2∶2劃分為訓(xùn)練集、驗(yàn)證集和測試集。采用均方根誤差RMSE和均方誤差MSE作為預(yù)測準(zhǔn)確度評估,兩者定義如下:
(4)
(5)
通過與本領(lǐng)域相關(guān)的幾個(gè)經(jīng)典方法進(jìn)行比較來評估本文的方法。經(jīng)典方法包括:1) 支持向量機(jī)(SVM),這是一種基于隱式反饋數(shù)據(jù)集的個(gè)性化排序方法,它使用標(biāo)準(zhǔn)的矩陣分解進(jìn)行潛在預(yù)測,實(shí)驗(yàn)采用3種模型,分別為SVR、NuSVR和LinearSVR;2) 神經(jīng)網(wǎng)絡(luò),每個(gè)稀疏和高維的分類特征首先被轉(zhuǎn)換成低維和密集的實(shí)值向量,這些低維密集嵌入向量與連續(xù)特征級聯(lián),然后被送到前向通道中神經(jīng)網(wǎng)絡(luò)的隱藏層,實(shí)驗(yàn)采用3種模型來優(yōu)化,分別為sgd、lbfgs和adam;3) K最近鄰(KNN),這是具有交叉特征列的線性模型,利用加權(quán)平均值實(shí)現(xiàn)KNN回歸算法,實(shí)驗(yàn)分別采用K=2、5、10來進(jìn)行測試;4) 本文方法2-NN。
所有實(shí)驗(yàn)在一臺(tái)具有28核的Linux服務(wù)器中通過Python語言編程完成計(jì)算。該服務(wù)器配置為Inter?Xeon?E5-2407 CPU @ 2.40 GHz處理器,64 GB內(nèi)存。為了進(jìn)行公平的比較,對所有方法使用相同的數(shù)據(jù)。
表2所示為不同方法對6個(gè)污染物濃度的預(yù)測準(zhǔn)確度比較,表中數(shù)據(jù)為實(shí)際測試數(shù)據(jù)的再乘以1/100。從表中可以看出,本文方法相比其他方法具有更高的準(zhǔn)確度。
表2 不同方法對6個(gè)污染物濃度的預(yù)測準(zhǔn)確度比較
圖4所示為采用不同序列長度的污染物濃度數(shù)值對預(yù)測結(jié)果的影響。可以看出,不同污染物濃度對歷史序列的依賴性不同。根據(jù)分析,本文主要采用最近2個(gè)時(shí)間點(diǎn)的序列數(shù)據(jù)作為參考。
圖4 不同序列長度下6個(gè)污染度濃度的RMSE比較
污染物濃度預(yù)測最終是為了預(yù)測空氣質(zhì)量。為了更好地說明本文方法的優(yōu)勢,采用三種方法分別對AQI進(jìn)行預(yù)測,分別為:1) 長短期記憶網(wǎng)絡(luò)(LSTM),一種遞歸神經(jīng)網(wǎng)絡(luò)模型,具有獨(dú)特的結(jié)構(gòu),適合處理預(yù)測更長的時(shí)間間隔;2) BP神經(jīng)網(wǎng)絡(luò)BPNN;3) 本文方法2-NN。
AQI是政府機(jī)構(gòu)用來向公眾傳達(dá)目前空氣污染程度的數(shù)字。隨著AQI值的增大,越來越多的人群可能健康遭受影響。AQI的計(jì)算公式為:
(6)
式中:C表示污染物濃度(記錄或預(yù)測),Clow和Chigh表示污染物濃度的最低和最高值,Ilow和Ihigh是污染物指數(shù)的最低和最高值。Clow、Chigh、Ilow和Ihigh都是常數(shù),由環(huán)境空氣質(zhì)量指數(shù)(AQI)技術(shù)規(guī)定(試行)(HJ 633-2012)。
圖5所示為不同方法在預(yù)測AQI時(shí)的準(zhǔn)確度比較。從中可以看到本文方法比其他兩個(gè)方法的預(yù)測效果更好。
圖5 不同方法的AQI預(yù)測準(zhǔn)確度比較
本文提出了一種空氣質(zhì)量預(yù)測方法。該方法綜合考慮氣象參數(shù)以及污染物濃度之間的相關(guān)關(guān)系,對歷史大數(shù)據(jù)進(jìn)行分析,采用兩級神經(jīng)網(wǎng)絡(luò)模型,根據(jù)預(yù)測的每小時(shí)空氣污染物濃度來計(jì)算空氣質(zhì)量指數(shù)。通過與其他經(jīng)典方法的對比實(shí)驗(yàn)表明,本文方法能夠更準(zhǔn)確地預(yù)測每小時(shí)空氣污染物濃度和AQI值。
影響污染物濃度的因素特別多,除了氣象參數(shù),還有季節(jié)因素、交通狀況等等,為了獲得更準(zhǔn)確地空氣質(zhì)量指數(shù)預(yù)測值,下一步還需要研究更多的數(shù)據(jù),從而發(fā)現(xiàn)更準(zhǔn)確的規(guī)律。