甘露情,劉媛華
(上海理工大學 管理學院,上海 200093)
目前我國的空氣污染日趨嚴峻,眾多地區(qū)頻繁出現(xiàn)了霧霾天氣[1],對人們的健康和生產(chǎn)活動的危害日趨顯著.因空氣污染導致過早死亡的人數(shù)不斷增加,已經(jīng)成為造成中國居民死亡的第四大死因[2].嚴重霧霾天氣導致高速關(guān)閉,航班停飛,影響人們?nèi)粘Ia(chǎn)活動的進行[3].由于空氣質(zhì)量指數(shù)(Air Quality Index,AQI)的評價標準更符合人們對空氣質(zhì)量的真實感受,且治理空氣污染需要長時間的控制才能得到顯著效果,因此對空氣質(zhì)量指數(shù)進行有效的預(yù)測,能短時間內(nèi)減少對人們健康的危害和促進社會的穩(wěn)定,具有重大的現(xiàn)實意義.
目前國內(nèi)外主要采用機器學習的方法對空氣質(zhì)量進行預(yù)測,如Bai 等利用小波分析將污染物歷史時間序列分解成不同尺度,結(jié)合BP 神經(jīng)網(wǎng)絡(luò)模型對每日空氣污染物的濃度進行預(yù)測,結(jié)果表明該模型的預(yù)測性能優(yōu)于mono-BPNN 模型[4].Wang 等提出一種結(jié)合了兩階段分解技術(shù)和通過差分算法優(yōu)化的極限學習機的混合預(yù)測模型,對中國北京和上海的每日AQI 數(shù)據(jù)進行實證研究,實證結(jié)果表明該混合模型的預(yù)測精度更高[5].劉篤晉等利用改進的人工蜂群算法優(yōu)化神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,在空氣質(zhì)量預(yù)測中有很好的應(yīng)用[6].常恬君等建立了Prophet-隨機森林優(yōu)化模型,對上海市空氣質(zhì)量進行分析預(yù)測,預(yù)測結(jié)果表明該模型的預(yù)測精度更高[7].
目前很少有研究關(guān)注空氣質(zhì)量指數(shù)預(yù)測模型的預(yù)測性能受離群點影響較大的問題,并且任何預(yù)測模型都存在誤差,大多數(shù)研究忽視了誤差修正能提高模型的預(yù)測精度.因此,本文首先利用孤立森林算法對空氣質(zhì)量數(shù)據(jù)進行離群點分析,然后選取對離群點泛化性能較強的離群魯棒極限學習機模型(ORELM)對空氣質(zhì)量指數(shù)進行預(yù)測,最后構(gòu)建誤差修正模塊進一步提高模型的預(yù)測性能.
本文對空氣質(zhì)量指數(shù)的預(yù)測研究,首先利用孤立森林算法驗證實驗數(shù)據(jù)中是否存在離群點,然后采用隨機森林算法篩選出最優(yōu)因素子集作為預(yù)測模型的輸入變量,最后構(gòu)建離群魯棒極限學習機預(yù)測模型對AQI 指數(shù)進行預(yù)測,模型相關(guān)理論介紹如下.
離群點指在一個時間序列中遠離一般水平的極端大值和極端小值.由于常常會出現(xiàn)某日空氣質(zhì)量特別好或特別差的情況,則AQI 值極小或極大,因此空氣質(zhì)量指數(shù)數(shù)據(jù)中一般會存在離群點.為驗證本文的空氣質(zhì)量數(shù)據(jù)中是否存在離群點,采用孤立森林算法對其進行分析.
孤立森林(isolation Forest,iForest)是一種無監(jiān)督學習算法,最早由莫納什大學的Liu FT、Ting KM和南京大學的周志華提出[8].在孤立森林中,異常值的定義為分布稀疏且離密度高的群體較遠的點[9].孤立森林的基本思想是采用一個隨機超平面對數(shù)據(jù)集空間進行切割,切割一次產(chǎn)生兩個子空間,然后繼續(xù)采用一個隨機超平面對兩個子空間進行切割,一直循環(huán)下去,直到每個子空間只剩下一個數(shù)據(jù)點[10].由于異常值處于密度較低的區(qū)域,很早就能停止切割,正常的數(shù)據(jù)處于密度較高的區(qū)域,需要進行很多次切割才能停止.
孤立森林算法是一種集成學習算法,由多顆孤立樹(isolation Tree,iTree)組成,每棵孤立樹都具有二叉樹結(jié)構(gòu)[11].其構(gòu)建一顆孤立樹的步驟如下:
(1)從數(shù)據(jù)集中均勻抽取Ψ 個樣本作為孤立樹的訓練樣本.
(2)在訓練樣本中,隨機選擇一個樣本特征,并在該樣本特征的最小值和最大值范圍內(nèi)隨機選擇一個值P作為孤立樹的根節(jié)點.
(3)對樣本進行切割,將小于P的樣本值劃分到根節(jié)點的左邊,大于P值的樣本點劃分到根節(jié)點的右邊.
(4)對切割產(chǎn)生的左右兩個數(shù)據(jù)集重復步驟(2)和步驟(3)操作,直到節(jié)點只有一個數(shù)據(jù)或者達到最大限度樹的高度.
重復上述的操作構(gòu)建N棵孤立樹,利用測試數(shù)據(jù)對孤立森林進行訓練,使每一個樣本點遍歷所有孤立樹,直到達到終止條件,計算樣本點經(jīng)過的路徑長度[12].在這種隨機分割策略下,異常點的路徑通常都較短,最先被分割出來.
空氣質(zhì)量指數(shù)的影響因子較多,利用隨機森林對影響因子進行重要性度量,篩選出最優(yōu)因素子集作為預(yù)測模型的輸入變量,可以減少冗余因子對預(yù)測結(jié)果的影響.
隨機森林算法是由Breiman 等提出,其變量重要性度量可以作為分析特征選擇的工具,且具有很好的魯棒性[13,14].
隨機森林進行特征選擇的主要思想是向一個重要特征中加入噪聲時,預(yù)測的準確率會降低,若是無關(guān)特征則預(yù)測準確率變化不大.具體利用袋外數(shù)據(jù)計算隨機森林中的每個決策樹的袋外數(shù)據(jù)誤差,記原始袋外數(shù)據(jù)誤差為errOOB1;然后改變樣本中某個特征的數(shù)值,保持其他特征數(shù)值不變,得到一個新的隨機森林預(yù)測準確率errOOB2,則該特征的重要性可以由兩個預(yù)測準確率之差來表示.假設(shè)隨機森林中有Ntree棵樹,則特征重要度公式可以表示為:
若袋外誤差準確率降低幅度越大,則該特征對該樣本的影響越大.利用隨機森林算法分析特征重要性的具體步驟如下:
(1)利用Bootstrap 重采樣方法,從原始數(shù)據(jù)集中隨機產(chǎn)生K個訓練集,構(gòu)成K棵決策樹[15];
(2)從m個特征中隨機選取n個特征作為分裂屬性集,并從該屬性集中選擇最好的分裂方式對該節(jié)點進行分裂;
(3)每棵樹都完整生長,不進行任何修剪;
(4)將生成的多顆決策樹組成隨機森林,利用投票的方法得到分類結(jié)果;
(5)利用袋外數(shù)據(jù)誤差計算每個特征的重要性,并對特征進行降序排序;
(6)確定一個刪除比例,將相應(yīng)比例不重要的特征從當前特征變量中剔除,從而得到一個新的特征集;
(7)新的隨機森林由上一步得到的新的特征子集來構(gòu)建,計算特征集中每個特征的重要性,并進行排序;
(8)重復步驟(5)-(7),直到剩下n個特征;
(9)計算以上生成的每個特征集和相應(yīng)建立的隨機森林的袋外數(shù)據(jù)誤差,選擇誤差最低的特征子集.
極限學習機(Extreme Learning Machine,ELM)是一種特殊的單隱含層前饋神經(jīng)網(wǎng)絡(luò),其在訓練過程中隨機生成輸入層與隱含層間的權(quán)值以及隱含層的閾值,并且在整個訓練過程中,權(quán)值和閾值都保持不變,只需要預(yù)先設(shè)置隱含層神經(jīng)元數(shù),就能得到預(yù)測結(jié)果[16].因此該算法結(jié)構(gòu)簡單,訓練速度快.模型表達式可簡化為:
其中,H為模型網(wǎng)絡(luò)結(jié)構(gòu)隱含層的輸出,wi表示第i個隱含層節(jié)點與輸入神經(jīng)元間的權(quán)值,bi為第i個隱含層節(jié)點的閾值,g(x)為隱含層激活函數(shù),βi為第i個隱含層神經(jīng)元與輸出神經(jīng)元間的連接權(quán)值.Q為樣本個數(shù),L為隱含層神經(jīng)元個數(shù),輸出層神經(jīng)元個數(shù)為m.由于wi和bi在 訓練過程中不變,則輸出權(quán)值 β可以通過對式(2)求解最小二乘解來獲得,即:
其中,H+是隱含層的輸出矩陣H的Moore-Penrose 廣義逆.
由于最小二乘法分配給每個輸入數(shù)據(jù)相同的權(quán)重,因此當輸入數(shù)據(jù)集中存在離群點時,這些離群點的影響會被放大,ELM 模型的預(yù)測性能會降低[17].為了解決離群值對模型預(yù)測性能的影響,Zhang和Luo[18]提出了離群魯棒極限學習機(Outlier Robust Extreme Learning Machine,ORELM).ORELM 模型為了不失去稀疏性且能達到最小化凸,其目標函數(shù)變成一個約束凸優(yōu)化問題[19],表達式為:
該約束凸優(yōu)化問題可以由拉格朗日乘數(shù)(Augmented Lagrange Multiplier,ALM)方法來求解,表達式為:
拉格朗日函數(shù)可以通過增廣拉格朗日乘子來求解,新的迭代方式為:
βk+1和ek+1通過以下公式求得:
不論是單一預(yù)測模型還是混合預(yù)測模型都會存在一定的誤差,可以通過一些非線性模型對原預(yù)測模型的誤差進行預(yù)測,進而修正模型的預(yù)測結(jié)果,以達到提高模型預(yù)測性能的目的.誤差修正模塊構(gòu)建的關(guān)鍵是誤差時間序列的預(yù)測及修正模型的選擇.具體步驟如下:
(1)產(chǎn)生誤差時間序列
O(t)為t時刻的模型預(yù)測值,A(t)為在t時刻的真實值,則模型在t時刻的預(yù)測誤差值為:
(2)進行誤差預(yù)測
由于誤差值具有時間序列特征,假設(shè)t時刻的誤差值由前k個時刻的誤差值預(yù)測得到,f[·]是誤差時間序列預(yù)測模型,則t時刻的誤差預(yù)測值可表示為:
由于支持向量機模型是一種基于時間序列的回歸模型,泛化性能強,需要調(diào)節(jié)的參數(shù)少,本文選擇支持向量機模型作為誤差時間序列預(yù)測模型.
(3)進行誤差修正,得到最終預(yù)測值
得到誤差序列預(yù)測值后,大部分誤差修正模型直接將原模型預(yù)測值和誤差預(yù)測值相加得到最終的模型預(yù)測值,忽略簡單相加產(chǎn)生的問題.本文通過建立非線性預(yù)測模型F[·]來得到最終預(yù)測值,可表示為:
其中,非線性預(yù)測模型F[·]是通過極限學習機模型基于數(shù)據(jù)訓練而確定,模型的輸入為誤差時間序列預(yù)測值E f(t)和原模型預(yù)測值O(t),模型的輸出為最終預(yù)測值F(t).
本文選取北京市2013年12月2日到2017年2月28日共1184 組AQI 數(shù)據(jù)和6 種污染物數(shù)據(jù)(PM2.5,PM10,NO2,SO2,CO,O3),以及同時期風速、氣壓、氣溫、降雨量4 種氣象數(shù)據(jù)作為研究對象,數(shù)據(jù)來源于中國環(huán)境監(jiān)測總站和中國氣象局.
利用Python 語言中的isolationForest 包完成對空氣質(zhì)量數(shù)據(jù)集的離群點檢測,將經(jīng)過預(yù)處理的空氣質(zhì)量指數(shù)數(shù)據(jù)作為輸入數(shù)據(jù),使其遍歷每一棵孤立樹,計算其路徑長度,結(jié)果如圖1所示.
如圖1所示,AQI 數(shù)據(jù)中存在一定數(shù)量的離群點,若是將這些離群點都刪除,會影響數(shù)據(jù)集的分布.本文采用對離群點泛化性能較強的離群魯棒極限學習機預(yù)測模型對空氣質(zhì)量指數(shù)進行預(yù)測來減小離群點的影響.
利用隨機森林對影響因素進行重要性排序通過R 語言中的randomForest 程序包來完成,將前一天的空氣污染物數(shù)據(jù)和當天的氣象數(shù)據(jù)作為輸入數(shù)據(jù),當天的AQI 數(shù)據(jù)作為輸出值.其中參數(shù)設(shè)置:決策樹(Ntree)設(shè)置為100 棵,importance=TRUE 表示要計算變量的特征重要性,其他參數(shù)為默認值.因子重要性排序如圖2所示,其中日均風速的重要性最大.依次將重要性最小的因子去掉,將剩下因素子集輸入極限學習機模型中進行預(yù)測,以均方根誤差為評價指標.各因素子集對應(yīng)的均方根誤差如圖3所示.由圖3中可以看出,當不重要的因子刪除時,預(yù)測誤差降低;隨著重要性高的因子刪除,誤差又逐漸提高.當因子數(shù)量為8 個時,均方根誤差達到最低.最終篩選出來的最優(yōu)特征子集為日均風速、NO2、PM10、CO、PM2.5、日均氣壓、日均氣溫及O3.
圖1 離群點檢測結(jié)果
圖2 因素重要性排序
圖3 各因素子集相對應(yīng)的均方根誤差
為了證明本文選擇的離群魯棒極限學習機模型在預(yù)測離群樣本點上的優(yōu)越性,將其與極限學習機模型進行對比實驗,兩個模型的隱含層神經(jīng)元數(shù)量都設(shè)置為50.首先對空氣質(zhì)量數(shù)據(jù)集進行歸一化處理,將其中的1100 組數(shù)據(jù)作為訓練集數(shù)據(jù),剩余的84 組數(shù)據(jù)作為測試集數(shù)據(jù).根據(jù)篩選出來后的最優(yōu)因素子集,將預(yù)測日前一天的NO2、PM10、CO、PM2.5、O3數(shù)據(jù)以及預(yù)測日的日均風速、日均氣壓以及日均氣溫數(shù)據(jù)作為模型的輸入數(shù)據(jù),預(yù)測日當天的AQI 數(shù)據(jù)作為模型的輸出變量.以平均絕對百分誤差(MAPE)、均方根誤差(RMSE)、平均絕對誤差(MAE)作為評價指標,結(jié)果如表1所示.
表1 預(yù)測結(jié)果評價表
由表1所示,離群魯棒極限學習機的3 個誤差值都小于極限學習機,表明ORELM 模型對存在離群點的樣本數(shù)據(jù)泛化性能更強,能有效的提高模型的預(yù)測性能.
為了驗證誤差修正模塊的有效性,將經(jīng)過誤差修正后的預(yù)測結(jié)果與原模型預(yù)測結(jié)果進行比較,預(yù)測結(jié)果對比圖如圖4所示.由圖4可以看出經(jīng)過誤差修正之后的模型擬合能力更強,預(yù)測精度明顯提高.經(jīng)誤差修正后,模型的MAPE、RMSE、MAE 分別為0.1289、18.7728、11.2148,均比原模型預(yù)測誤差低,表明誤差修正模塊能有效的提高模型的預(yù)測性能.
圖4 模型預(yù)測對比圖
空氣污染一般需要長時間的治理才能得到顯著效果,因此,提高空氣質(zhì)量指數(shù)預(yù)測模型的精度,對人們身體健康和社會穩(wěn)定具有重大的研究意義.本文從離群點檢測和誤差修正兩個角度來提高模型的預(yù)測性能.利用孤立森林對空氣質(zhì)量數(shù)據(jù)進行離群點檢測,檢測結(jié)果表明數(shù)據(jù)集中存在一定數(shù)量的離群點,采用對離群點泛化性能更強的離群魯棒極限學習機模型對空氣質(zhì)量進行預(yù)測來消除離群點的影響,并對模型預(yù)測值進行誤差修正.根據(jù)平均絕對百分誤差(MAPE)、均方根誤差(RMSE)、平均絕對誤差(MAE)3 個評價指標,得出離群魯棒極限學習機模型對存在離群點的樣本數(shù)據(jù)泛化性能更強,經(jīng)過誤差修正后,預(yù)測誤差降低,表明誤差修正能有效的提高模型的預(yù)測性能.而對于空氣污染程度不同的城市,該模型是否能對空氣質(zhì)量指數(shù)進行有效的預(yù)測以及更長的預(yù)測時間都是后續(xù)需要進一步研究的內(nèi)容.