楊超文 汪宇玲 舒志敏 劉晶晶 謝娜娜
(東華理工大學(xué),江西南昌 330000)
近年來(lái),隨著南昌經(jīng)濟(jì)快速發(fā)展,工業(yè)化和城市化進(jìn)程加快,以PM2.5、PM10為主的空氣污染也愈加嚴(yán)重,為了人民的健康實(shí)現(xiàn)一套對(duì)空氣質(zhì)量精準(zhǔn)預(yù)測(cè)的方案刻不容緩[1]。傳統(tǒng)預(yù)測(cè)空氣質(zhì)量的方法很多,如CAPPS模型、灰色模型、人工神經(jīng)網(wǎng)絡(luò)(BP)等。Boznar等人將神經(jīng)網(wǎng)絡(luò)運(yùn)用在預(yù)測(cè)空氣質(zhì)量上,之后最為經(jīng)典的BP神經(jīng)網(wǎng)絡(luò)通過(guò)Giusepp等人的改進(jìn),進(jìn)一步提高了預(yù)測(cè)結(jié)果的精度,但BP神經(jīng)網(wǎng)絡(luò)較難收斂[2]。后來(lái)Fabio Biancofiore等人通過(guò)改進(jìn)采用遞歸神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)PM10、PM2.5取得了很好的效果,接著Rao等人構(gòu)建了基于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的空氣質(zhì)量預(yù)測(cè)模型,并取得了更高的預(yù)測(cè)精度。然而RNN運(yùn)算過(guò)程中存在梯度消失、記憶時(shí)序數(shù)據(jù)短等問(wèn)題,而長(zhǎng)短期記憶人工神經(jīng)網(wǎng)絡(luò)(LSTM)解決了這些問(wèn)題,應(yīng)用在空氣質(zhì)量預(yù)測(cè)上取得了比RNN更好的結(jié)果[3]。因此,本文采用基于TensorFlow的改進(jìn)LSTM模型來(lái)預(yù)測(cè)南昌市空氣質(zhì)量(AQI)指數(shù)。
空氣質(zhì)量最主要、最常用的衡量指標(biāo)即AQI(空氣質(zhì)量指數(shù)),用來(lái)衡量空氣清潔或者污染的程度,值越小表示空氣質(zhì)量越好,具體等級(jí)劃分見(jiàn)表1。參與空氣質(zhì)量評(píng)價(jià)的主要污染物有六項(xiàng)指標(biāo)分別為PM10、PM2.5、NO2、SO2、O3和CO。
時(shí)間序列預(yù)測(cè)模型在平穩(wěn)數(shù)據(jù)上進(jìn)行研究,如果時(shí)序數(shù)據(jù)非平穩(wěn),則預(yù)測(cè)結(jié)果誤差較大,沒(méi)有研究?jī)r(jià)值,因此,建模前需對(duì)數(shù)據(jù)進(jìn)行平穩(wěn)性檢驗(yàn),ADF(Augmented Dickey-Fuller test)檢驗(yàn)是判斷數(shù)據(jù)平穩(wěn)的有效方法之一,又稱單位根檢驗(yàn)。在自回歸過(guò)程中:yt=byt-1+a+εt,如果滯后項(xiàng)系數(shù)b為1,就稱為單位根。假如單位根存在,自變量和因變量之間就會(huì)具有欺騙性,因?yàn)闅埐钚蛄械娜魏握`差都不會(huì)隨著樣本量增大而衰減,則時(shí)間序列是非平穩(wěn)的。ADF檢驗(yàn)的原假設(shè)和備擇假設(shè)如下:
如果顯著性檢驗(yàn)統(tǒng)計(jì)量P值小于0.05,則拒絕原假設(shè),就認(rèn)為不存在單位根,即時(shí)間序列是平穩(wěn)的。
判斷時(shí)間序列是平穩(wěn)之后,就需要檢驗(yàn)數(shù)據(jù)是否為白噪聲,白噪聲是沒(méi)有研究意義的。白噪聲檢驗(yàn)的原理基于Barlett定理:如果一個(gè)時(shí)間序列是純隨機(jī)的,得到一個(gè)觀察期數(shù)為n的觀察序列,那么該序列的延遲非零期的樣本自相關(guān)系數(shù)將接近服從均值為零,方差為序列觀察期數(shù)倒數(shù)的正態(tài)分布 N(0,1/n),k≠0。白噪聲檢驗(yàn)的原假設(shè)和備擇假設(shè)如下:
表1 空氣質(zhì)量指數(shù)(AQI)分級(jí)示意表Tab.1 Air quality index (AQI) classification table
圖1 LSTM結(jié)構(gòu)示意圖Fig.1 LSTM structure diagram
圖2 添加了Dropout層的LSTM結(jié)構(gòu)圖Fig.2 LSTM structure diagram with dropout layer added
如果顯著性檢驗(yàn)統(tǒng)計(jì)量P值小于0.05,則拒絕原假設(shè),接受備擇假設(shè),即平穩(wěn)時(shí)間序列非白噪聲。
LSTM是一種改進(jìn)的RNN的模型,如圖1所示。LSTM 通過(guò)增加輸入門、遺忘門、輸出門以獲得變化的自循環(huán)權(quán)重,在模型參數(shù)固定的情況下,不同時(shí)刻的積分尺度得以動(dòng)態(tài)改變,從而規(guī)避了梯度消失或爆炸的問(wèn)題[4]。LSTM與RNN的不同就在于存在可以選擇性的保留和舍棄一些不重要的序列和擁有自我衡量機(jī)制,可以更好地記憶長(zhǎng)期序列。
圖1中,f(t),i(t), 和o(t)分別表示了在t時(shí)刻對(duì)應(yīng)的三種門的結(jié)構(gòu)和細(xì)胞狀態(tài); 表示矩陣逐點(diǎn)乘法運(yùn)算; 表示矩陣相加。
LSTM中各參數(shù)具體更新過(guò)程如下:
其中,f(t)為t時(shí)刻遺忘門的輸出;i(t)為t時(shí)刻輸入門的輸出;o(t)為t時(shí)刻輸出門的輸出;Wf、Wi、Wc、Wo和bf、bi、bc、bo分別為遺忘門、輸入門、細(xì)胞狀態(tài)、輸出門對(duì)應(yīng)的系數(shù);σ為sigmoid激活函數(shù);tanh為雙曲正切激活函數(shù)。
TensorFlow是谷歌推出的機(jī)器學(xué)習(xí)系統(tǒng),在深度學(xué)習(xí)基礎(chǔ)架構(gòu)Dist Belief的基礎(chǔ)上推進(jìn)了一步,其模型簡(jiǎn)潔,訓(xùn)練速度快,支持GPU和TPU數(shù)值計(jì)算,是目前主流的用于實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)內(nèi)置架構(gòu)的軟件庫(kù)[5]。
本文空氣質(zhì)量指數(shù)預(yù)測(cè)模型構(gòu)建了多變量單步LSTM輸入數(shù)據(jù)集,該數(shù)據(jù)集構(gòu)建思想為:用n_predictions(時(shí)間步長(zhǎng))個(gè)小時(shí)的各指標(biāo)x1、x2…xn的值xnt-n_predictions來(lái)預(yù)測(cè)后一個(gè)小時(shí)的值為第n個(gè)指標(biāo)在t時(shí)刻的值,t=[n_predictions+1,…,num-1],num為數(shù)據(jù)集的行數(shù)(即總的小時(shí)數(shù)據(jù)的個(gè)數(shù))。這樣輸入數(shù)據(jù)集就是(num+n_predictions-1)*n_predictions*n的三維數(shù)組,輸出數(shù)據(jù)集就是(num+n_predictions-1)*n的二維數(shù)組。
在機(jī)器學(xué)習(xí)中,如果數(shù)據(jù)之間存在奇異樣本數(shù)據(jù),可能導(dǎo)致模型很難收斂并使結(jié)果的誤差變大,為了消除奇異樣本數(shù)據(jù)導(dǎo)致的不良影響以及加快模型收斂速度,需要對(duì)數(shù)據(jù)做歸一化處理。本文采用最大最小標(biāo)準(zhǔn)化方法對(duì)數(shù)據(jù)做歸一化,將數(shù)據(jù)轉(zhuǎn)化為[0,1]之間的值。具體公式如下:
其中,Xnorm為歸一化后的數(shù)據(jù),X為原始數(shù)據(jù),Xmax、Xmin分別為原始數(shù)據(jù)集的最大值和最小值。
堆疊式LSTM模型擁有一個(gè)或多個(gè)隱藏層(LSTM層),各個(gè)層都處理模型中的一部分任務(wù),其中上一層解決完相應(yīng)的任務(wù)后把結(jié)果傳遞到下一層,然后依次傳遞直到傳到最后一層輸出。本文構(gòu)建的堆疊LSTM結(jié)構(gòu)如圖2所示,由2個(gè)LSTM層、Dense層和Dropout層構(gòu)成。LSTM層太少了得出的結(jié)果精度可能不高,太多層會(huì)使模型變得過(guò)于復(fù)雜,模型很難收斂,還會(huì)出現(xiàn)過(guò)擬合現(xiàn)象。Dense層對(duì)高緯信息進(jìn)行降維處理,同時(shí)保留有用信息,最后輸出對(duì)應(yīng)目標(biāo)序列。Dropout層則用來(lái)避免過(guò)擬合問(wèn)題。
將歸一化后的數(shù)據(jù)帶入模型得出的結(jié)果是[0,1]范圍內(nèi)的值,若要準(zhǔn)確的對(duì)模型做出評(píng)價(jià),需要將預(yù)測(cè)到的數(shù)據(jù)進(jìn)行反歸一化,恢復(fù)原來(lái)的量綱,然后與原數(shù)據(jù)按一定的方法進(jìn)行比較,得出評(píng)價(jià)模型的系數(shù)值。
其中,X為原始數(shù)據(jù),Xnorm為歸一化后的數(shù)據(jù),Xmax、Xmin分別為原始數(shù)據(jù)集的最大值和最小值。
采用相關(guān)系數(shù)(Correlation coefficient)、斯皮爾曼等級(jí)相關(guān)(Spearman Rank Correlation)和均方誤差(meansquare error,MSE)來(lái)評(píng)價(jià)模型效果。均方誤差用來(lái)反應(yīng)預(yù)測(cè)值與實(shí)際值的吻合程度,相關(guān)系數(shù)和斯皮爾曼等級(jí)相關(guān)用來(lái)反應(yīng)預(yù)測(cè)值與實(shí)際值之間聯(lián)系的密切程度。計(jì)算公式如下:
表2 AQI、六個(gè)污染物ADF檢驗(yàn)的P1值以及白噪聲的P2值Tab.2 AQI, P1 value of ADF test for six pollutants and P2 value of white noise
圖3 AQI指數(shù)和六個(gè)污染物的相關(guān)性分析熱力圖Fig.3 Thermodynamic diagram of correlation analysis between AQI index and six pollutants
其中R為相關(guān)系數(shù);C為協(xié)方差矩陣;ρ為斯皮爾曼等級(jí)相關(guān);n為等級(jí)個(gè)數(shù);d為二列成對(duì)變量的等級(jí)差數(shù);MSE為均方誤差;y為真實(shí)值;y'為預(yù)測(cè)值;N為y的個(gè)數(shù)。R和ρ越近接近1且MSE的值越小,得出的結(jié)果越好。
3.1.1 數(shù)據(jù)準(zhǔn)備
本文研究的樣本空氣數(shù)據(jù)來(lái)源于中國(guó)環(huán)境監(jiān)測(cè)總站(https://quotsoft.net /air/#archive)發(fā)布的南昌市2020年上半年空氣質(zhì)量歷史小時(shí)數(shù)據(jù),共有4369組樣本數(shù)據(jù),包含影響城市空氣質(zhì)量的六個(gè)指標(biāo)(PM10、PM2.5、NO2、SO2、O3和CO)的濃度以及對(duì)應(yīng)AQI指數(shù)。由于得到的數(shù)據(jù)存在缺失值,因而采用了缺失值上下2個(gè)鄰近點(diǎn)的平均值對(duì)其進(jìn)行填補(bǔ)。之后對(duì)填補(bǔ)完的數(shù)據(jù)進(jìn)行平穩(wěn)性和白噪聲檢驗(yàn),結(jié)果如表2所示,利用Python的adfuller函數(shù)根據(jù)計(jì)算得到每個(gè)指標(biāo)ADF檢驗(yàn)的P1值均小于0.05,可得數(shù)據(jù)是平穩(wěn)的;再用acorr_ljungbox函數(shù)根據(jù)計(jì)算得到每個(gè)指標(biāo)白噪聲檢驗(yàn)的P2值均小于0.05,可得時(shí)間序列數(shù)據(jù)非白噪聲,是能預(yù)測(cè)的。為了減小模型誤差,加快模型收斂速度,使用公式(9)做歸一化處理,將數(shù)據(jù)映射到[0,1],當(dāng)模型的預(yù)測(cè)結(jié)果出來(lái)后,再使用公式(10)對(duì)預(yù)測(cè)值進(jìn)行反歸一得到原始值。
3.1.2 各污染物與AQI的相關(guān)性分析
本文采用python工具中的相關(guān)分析函數(shù)得到各指標(biāo)間的相關(guān)性分析熱力圖,圖3所示,得出AQI與各指標(biāo)都存在一定的相關(guān)性,且AQI指數(shù)與PM10、PM2.5的相關(guān)性最高,可見(jiàn)PM10和PM2.5是污染南昌市空氣的“罪魁禍?zhǔn)住薄R虼?想要有效提升南昌市的空氣質(zhì)量,應(yīng)著重從降低PM10和PM2.5兩種污染物濃度入手。
3.1.3 參數(shù)設(shè)置及預(yù)測(cè)
Sigmoid函數(shù)的輸出范圍在[0,1]之間,在訓(xùn)練過(guò)程中參數(shù)的梯度值為同一符號(hào),更新時(shí)就容易出現(xiàn)zigzag現(xiàn)象,很難找到最優(yōu)值。但tanh函數(shù)的取值范圍在[-1,1]之間,有效的規(guī)避了Sigmoid函數(shù)的問(wèn)題,因此在LSTM層使用tanh函數(shù)作為激活函數(shù)。linear激活函數(shù)具有線性和非飽和的性質(zhì),能加快隨機(jī)梯度下降算法的收斂速度,在Dense層選擇了linear函數(shù)作為激活函數(shù)。隨機(jī)選擇數(shù)據(jù)集的60%作為訓(xùn)練集,剩余40%一半作為驗(yàn)證集,一半作為測(cè)試集。結(jié)合時(shí)序數(shù)據(jù)特征,將模型時(shí)間步長(zhǎng)設(shè)置為5,神經(jīng)元個(gè)數(shù)為128,dropout比率為0.5,批大小(batch size)為128,樣本學(xué)習(xí)周期為200。為了加快運(yùn)行速度,在Tensor Flow環(huán)境中安裝了GPU。
圖5 RNN模型預(yù)測(cè)結(jié)果圖Fig.5 RNN model prediction result chart
表3 LSTM和RNN模型的評(píng)價(jià)參數(shù)表Tab.3 Evaluation parameter table of LSTM and RNN models
對(duì)數(shù)據(jù)進(jìn)行分析并設(shè)置完模型的參數(shù)后,就能將數(shù)據(jù)帶入LSTM空氣質(zhì)量指數(shù)預(yù)測(cè)模型得出預(yù)測(cè)結(jié)果。用改進(jìn)LSTM模型得出的結(jié)果與RNN進(jìn)行對(duì)比,結(jié)果如圖4、圖5所示,LSTM和RNN模型的評(píng)價(jià)參數(shù)見(jiàn)表3。
圖4和圖5中的虛線為原始數(shù)據(jù),實(shí)線是測(cè)試集預(yù)測(cè)結(jié)果。從表3中可得出LSTM模型的均方誤差遠(yuǎn)優(yōu)于RNN模型,兩種模型的相關(guān)系數(shù)和斯皮爾曼等級(jí)相近,但還是高于RNN模型。綜述,LSTM模型的預(yù)測(cè)結(jié)果要優(yōu)于RNN模型。從圖4中可以看出南昌市的空氣質(zhì)量指數(shù)(AQI)在[10,100]之間波動(dòng),求得平均值約為52。對(duì)照表1可知南昌市的空氣質(zhì)量指數(shù)(AQI)平均等級(jí)為良。
空氣質(zhì)量指數(shù)受到六個(gè)非線性因子的影響,普通的線性回歸預(yù)測(cè)對(duì)AQI的分析并不準(zhǔn)確,因此本文采用了基于TensorFlow的LSTM神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型對(duì)AQI做預(yù)測(cè)。LSTM神經(jīng)網(wǎng)絡(luò)能夠避免梯度消失或梯度爆炸的問(wèn)題,具有更好的自我衡量機(jī)制,可解決長(zhǎng)時(shí)依賴問(wèn)題,對(duì)于數(shù)據(jù)量龐大的非線性多變量時(shí)間序列預(yù)測(cè)有著明顯的優(yōu)勢(shì)。本文以南昌市的空氣質(zhì)量數(shù)據(jù)為樣本,評(píng)估在RNN和LSTM兩種神經(jīng)網(wǎng)絡(luò)模型下的預(yù)測(cè)結(jié)果。結(jié)果顯示LSTM模型的均方誤差、相關(guān)系數(shù)和斯皮爾曼等級(jí)均優(yōu)于RNN模型,LSTM對(duì)時(shí)間序列有更好的預(yù)測(cè)效果。