胡玉杰,杜景林,董 亞,滕 達(dá)
(南京信息工程大學(xué),江蘇 南京 210044)
降水預(yù)報(bào)是當(dāng)今世界最重要和最復(fù)雜的任務(wù)之一[1]。短期高強(qiáng)度降水可能會(huì)引發(fā)洪水、山體滑坡、泥石流等嚴(yán)重性自然災(zāi)害[2]。在這種情況下,降水預(yù)報(bào)的高精度性會(huì)對(duì)社會(huì)經(jīng)濟(jì)生活具有重要意義。近年來,數(shù)據(jù)挖掘和人工智能被廣泛應(yīng)用于天氣預(yù)測(cè)領(lǐng)域,常見的用于降水預(yù)報(bào)的方法包括KNN、決策樹、神經(jīng)網(wǎng)絡(luò)等[3]。A.Haidar等提出一種新的預(yù)測(cè)方法,首次利用深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)對(duì)澳大利亞東部選定位置進(jìn)行月平均降水進(jìn)行預(yù)報(bào)[4]。文獻(xiàn)[5]將傳統(tǒng)的分類回歸樹(CART)算法與自適應(yīng)綜合采樣(ADASYN)算法相結(jié)合,對(duì)與降水密切相關(guān)的溫度、濕度、太陽輻射、風(fēng)速和蒸發(fā)等氣象要素組成的氣象數(shù)據(jù)進(jìn)行預(yù)報(bào)建模,對(duì)萬隆攝政區(qū)進(jìn)行降雨預(yù)報(bào)。然而,傳統(tǒng)的分類方法在構(gòu)建降雨預(yù)測(cè)模型時(shí)都存在著泛化能力低、精度不足的問題。針對(duì)以上問題,本文提出一種改進(jìn)Adaboost?C4.5算法。該算法集成C4.5決策樹算法,得到最終的強(qiáng)分類器,使預(yù)測(cè)模型的泛化能力增強(qiáng)。在整個(gè)迭代過程中,使用PSO算法來優(yōu)化Adaboost?C4.5弱分類器的權(quán)重以減少權(quán)重大的冗余或無用的弱分類器。使用該模型對(duì)南京市某地面觀測(cè)站進(jìn)行降雨預(yù)報(bào)。實(shí)驗(yàn)結(jié)果表明,本文建立的降水預(yù)報(bào)模型提高和完善了預(yù)報(bào)性能,具有泛化能力強(qiáng)、預(yù)測(cè)精度高等優(yōu)點(diǎn)。
C4.5算法最初是由Ross Quinlan開發(fā)的基于信息增益的算法[6]。與ID3算法不同的是,C4.5決策樹算法能夠處理連續(xù)型屬性和屬性值缺失的數(shù)據(jù),使用信息增益率而不是信息增益作為屬性選擇的度量標(biāo)準(zhǔn)[7]。選擇信息增益率最高的屬性作為給定數(shù)據(jù)集的測(cè)試屬性,創(chuàng)建一個(gè)節(jié)點(diǎn)并用該屬性進(jìn)行標(biāo)記,它的每個(gè)值都會(huì)創(chuàng)建一個(gè)分支,并相應(yīng)地對(duì)樣本進(jìn)行劃分,最后形成初步的決策樹。通過采用后剪枝的方法來降低決策樹的過擬合,提高了算法模型的精度。選擇C4.5決策樹作為弱分類器,主要是由于C4.5決策樹在計(jì)算復(fù)雜度方面比SVM和邏輯回歸算法低,而分類效果也比K近鄰算法好[8]。
C4.5算法的主要思想如下:
設(shè)訓(xùn)練數(shù)據(jù)集D有m個(gè)不同類Ci(i=1,2,…,m),屬性A有n個(gè)不同的值{a1,a2,…,an},若使用屬性A對(duì)數(shù)據(jù)集D進(jìn)行劃分,則會(huì)分成子集{D1,D2,…,Dn}。主要計(jì)算公式如下:
1)數(shù)據(jù)集D的期望信息為:
式中pi為數(shù)據(jù)集D中第i類樣本所占的比例。
2)以屬性A劃分?jǐn)?shù)據(jù)集D所需的期望信息:
3)計(jì)算屬性A的信息增益:
4)由于信息增益傾向于選擇具有更多值的屬性,為了減少信息增益帶來的偏差,C4.5算法引入分裂信息作為懲罰因子,如式(4)所示,然后得到信息增益比,如式(5)所示。
AdaBoost是一種典型的集成算法[9],其核心思想是通過訓(xùn)練多個(gè)弱分類器組合為一個(gè)強(qiáng)分類器來提高分類性能。在初始化時(shí),所有的訓(xùn)練樣本都分配了相同的權(quán)重,然后經(jīng)過T輪訓(xùn)練后,得到T個(gè)弱分類器。每一輪訓(xùn)練結(jié)束后,計(jì)算弱分類器的誤差率,對(duì)分類錯(cuò)誤的樣本賦予較大的權(quán)重,對(duì)分類正確的樣本減少其權(quán)重。這樣,在下一次迭代中,分類器將更加集中學(xué)習(xí)錯(cuò)誤分類的樣本。最后,將所有生成的弱分類器組合成強(qiáng)分類器。本文選取C4.5決策樹算法作為弱分類器,其模型結(jié)構(gòu)如圖1所示。AdaBoost?C4.5算法的具體步驟如下:
圖1 Adaboost?C4.5模型結(jié)構(gòu)
輸入:訓(xùn)練數(shù)據(jù)集S={(x1,y1),(x2,y2),…,(xN,yN)},其中,N表示訓(xùn)練樣本數(shù),xN表示樣本的特征向量,y∈Y={1,0},迭代次數(shù)T,弱分類器ct(xi)。
步驟1:初始化訓(xùn)練樣本的權(quán)重分布,D1=
步驟2:對(duì)于t=1,2,…,T,其中,T表示迭代次數(shù)。
1)根據(jù)權(quán)重分布調(diào)用分類器ct(xi),得到弱分類器ct:X→Y;
4)更新訓(xùn)練樣本的權(quán)重分布,Dt+1=其中,歸一化因子
粒子群算法(PSO)是由James Kenney和Russ Eberhart在1995年提出的[10]。該算法來源于對(duì)鳥類捕食行為的研究,是一種基于迭代的方法,它把每個(gè)解看作是一只鳥,表示一個(gè)粒子。每個(gè)粒子都有一個(gè)自適應(yīng)值,該值代表其自身解決方案的當(dāng)前狀態(tài)。在每次迭代中,每個(gè)粒子根據(jù)全局最優(yōu)解和自身找到的最優(yōu)解來調(diào)整自己的運(yùn)動(dòng)方向和速度,逐步逼近最優(yōu)粒子。
假設(shè)有m個(gè)粒子在N維目標(biāo)空間中尋找最優(yōu)解,空間向量Xi=(xi1,xi2,???,xin)表示粒子群中第i個(gè)粒子的位置,向量Vi=(vi1,vi2,???,vin)表示第i個(gè)粒子的速度,其中,i=1,2,…,m,那么,粒子i當(dāng)前的最佳位置Pi=(pi1,pi2,???,pin),整個(gè)粒子群當(dāng)前的最佳位置Pgbest=(pg1,pg2,???,pgn),第i個(gè)粒子繼續(xù)更新迭代得到如下:
式中:w表示慣性權(quán)重;c1,c2表示加速度因子;分別表示第i個(gè)粒子在第k+1次迭代生成的速度和位置[11]。
PSO算法適用于在連續(xù)性范圍內(nèi)進(jìn)行搜索,可以快速逼近最佳解決方案并實(shí)現(xiàn)參數(shù)的有效優(yōu)化,易于實(shí)現(xiàn),復(fù)雜度低,因此,這里可以用該算法來優(yōu)化Adaboost?C4.5分類器的權(quán)重,提高降雨預(yù)測(cè)模型的準(zhǔn)確性。
通常針對(duì)基本的二分類問題,我們考慮采用經(jīng)典的混淆矩陣來表述分類器模型的性能。以降雨預(yù)報(bào)模型中有雨和無雨兩類為例,該模型的混淆矩陣見表1。
表1 模型預(yù)測(cè)與實(shí)際列聯(lián)表
表1中:TP表示實(shí)際有雨預(yù)測(cè)有雨的數(shù)量;FN表示將有雨預(yù)測(cè)為無雨的數(shù)量;FP表示將無雨預(yù)測(cè)為有雨的數(shù)量;TN表示表示實(shí)際無雨預(yù)測(cè)無雨的數(shù)量。在本文的降雨預(yù)報(bào)模型中,為評(píng)價(jià)晴雨預(yù)報(bào)的性能效果,文中基于混淆矩陣,采用國內(nèi)外通用的降雨預(yù)報(bào)評(píng)價(jià)指標(biāo):準(zhǔn)確率、TS評(píng)分和漏報(bào)率(MAR)[12],其計(jì)算公式分別為:
本文利用PSO算法快速收斂、優(yōu)化精度高的特性,提出一種改進(jìn)的Adaboost?C4.5算法。主要改進(jìn)在于將Adaboost?C4.5分類器的誤差函數(shù)作為適應(yīng)度函數(shù),并用PSO算法優(yōu)化Adaboost?C4.5弱分類器的權(quán)重,以較高的精度將較大的權(quán)重分配給弱分類器,將較小的權(quán)重分配給冗余和無用的弱分類器。當(dāng)弱分類器處于局部最優(yōu)時(shí),可以重新初始化來進(jìn)一步優(yōu)化弱分類器的權(quán)重系數(shù)。根據(jù)改進(jìn)后算法生成的弱分類器,將權(quán)重系數(shù)記為A=(a1,a2,???,an),n表示弱分類器個(gè)數(shù),粒子初始位置和速度分別為xi,vi,可以使用Adaboost?C4.5弱分類器權(quán)重系數(shù)作為粒子的位置分量,將弱分類器的錯(cuò)誤率ei作為粒子的適應(yīng)度值,粒子個(gè)體最優(yōu)位置記為Pi,全局最優(yōu)位置記為Pgbest。優(yōu)化流程圖如圖2所示。
圖2 PSO優(yōu)化Adaboost?C4.5弱分類器權(quán)重流程圖
傳統(tǒng)的自適應(yīng)增強(qiáng)算法集成弱分類器的組合模型,在迭代的過程中,通常,這樣就確定了弱分類器的權(quán)重系數(shù),而這些系數(shù)是不能改變的,因此,就不可避免地產(chǎn)生了一些冗余和無用且權(quán)值較大的弱分類器,這極大地影響了分類器的性能。因此,在采用集成學(xué)習(xí)方法對(duì)多維數(shù)據(jù)集進(jìn)行分類預(yù)測(cè)時(shí),應(yīng)當(dāng)充分考慮到弱分類器的權(quán)重分配問題。基于以上的改進(jìn),把這種算法應(yīng)用于降水預(yù)測(cè)中,其改進(jìn)算法執(zhí)行過程如圖3所示。
圖3 改進(jìn)Adaboost?C4.5算法執(zhí)行流程圖
本文實(shí)驗(yàn)數(shù)據(jù)選取南京市2016—2019年的6—8月某點(diǎn)觀測(cè)站的氣象數(shù)據(jù)資料,任何一條數(shù)據(jù)的氣象要素包括大氣壓強(qiáng)(單位:hPa)、氣溫(單位:℃)、風(fēng)向(單位:(°))、風(fēng)速(單位:m/s)、相對(duì)濕度(單位:%)、每小時(shí)降雨量(單位:mm)。其中,把前5個(gè)氣象要素作為降雨分類預(yù)測(cè)的輸入屬性,把是否降雨作為輸出屬性,數(shù)據(jù)來源于中國氣象數(shù)據(jù)網(wǎng)。部分原始?xì)庀髷?shù)據(jù)如表2所示。
表2 部分原始?xì)庀髷?shù)據(jù)
在獲取數(shù)據(jù)后,屬性可能會(huì)有缺失值,為處理這個(gè)問題,可以使用屬性的平均值來填補(bǔ)缺失值,以獲得更好的準(zhǔn)確性。由于不同的氣象要素通常具有不同的量綱和數(shù)量級(jí)大小,為了讓氣象要素之間具有相同的量綱和數(shù)量級(jí)而能夠相互產(chǎn)生可比性,需要對(duì)樣本數(shù)據(jù)進(jìn)行歸一化處理,通過函數(shù)變換將樣本數(shù)據(jù)的各要素值映射在[0,1]之間,具體歸一化公式[13]如下:
式中:x代表樣本屬性值;xmax和xmin分別代表樣本數(shù)據(jù)中各氣象要素值的最大值和最小值。
本文研究了對(duì)降水等級(jí)的預(yù)測(cè),將上面提出的5個(gè)氣象要素作為輸入,對(duì)降水等級(jí)進(jìn)行分析,按照國家防汛部門對(duì)1 h降雨量等級(jí)的劃分,建立5個(gè)等級(jí)預(yù)報(bào)降雨模型,具體降雨等級(jí)劃分見表3。
表3 1 h降雨量等級(jí)劃分
為了驗(yàn)證本文的改進(jìn)后算法在降水預(yù)報(bào)模型上的先進(jìn)性,在此將本文方法與其他兩種降水預(yù)報(bào)模型作對(duì)比,分別進(jìn)行了降水量等級(jí)預(yù)報(bào)和晴雨預(yù)報(bào),其他兩種降水模型分別是基于C4.5決策樹算法的降水預(yù)報(bào)模型和基于Adaboost?C4.5算法的降水預(yù)報(bào)模型。在實(shí)驗(yàn)中采用10?折交叉驗(yàn)證方法將數(shù)據(jù)集隨機(jī)分為10份,其中,9份作為訓(xùn)練,1份作為測(cè)試,將10次實(shí)驗(yàn)的結(jié)果平均值作為最終的評(píng)價(jià)標(biāo)準(zhǔn)。在實(shí)驗(yàn)之前,設(shè)定實(shí)驗(yàn)基本參數(shù),粒子群規(guī)模N=50,學(xué)習(xí)因子c1=c2=1.494,慣性權(quán)重系數(shù)w=0.729,最大迭代次數(shù)Tmax=50。
首先,選擇利用PSO改進(jìn)后Adaboost?C4.5算法和傳統(tǒng)Adaboost集成C4.5算法在構(gòu)建不同弱分類器個(gè)數(shù)的情況下,比較兩者對(duì)樣本的分類精度,如圖4所示。
圖4 兩種強(qiáng)分類器準(zhǔn)確率對(duì)比
由圖4可以看出,隨著兩者構(gòu)建弱分類器個(gè)數(shù)的增加,線性組合的強(qiáng)分類器對(duì)樣本分類的準(zhǔn)確率也在增加。隨后,慢慢趨于穩(wěn)定,改進(jìn)后的Adaboost?C4.5算法在弱分類器個(gè)數(shù)達(dá)到18~20時(shí)趨于穩(wěn)定,而前者在弱分類器個(gè)數(shù)達(dá)到16時(shí)便出現(xiàn)飽和,在T=18時(shí),改進(jìn)后的Adaboost?C4.5算法比傳統(tǒng)Adaboost?C4.5算法的準(zhǔn)確率高了2.8%。在1 h降雨量等級(jí)預(yù)報(bào)實(shí)驗(yàn)中,固定迭代次數(shù)T=18,計(jì)算三種模型的降水預(yù)報(bào)標(biāo)準(zhǔn)誤差見表4。由表4中可以看出,由于各類樣本所占的比重不同,三種分類器對(duì)不同降水等級(jí)的預(yù)報(bào)效果也不同。三種算法對(duì)0級(jí)和1級(jí)降水表現(xiàn)出很好的性能,對(duì)降雨量大的樣本表現(xiàn)出較差的性能,但改進(jìn)后的算法對(duì)3級(jí)和4級(jí)降水表現(xiàn)出比其他兩種模型更好的性能。
表4 三種模型的降水預(yù)報(bào)標(biāo)準(zhǔn)誤差
為了進(jìn)一步檢驗(yàn)本文提出的降水預(yù)報(bào)模型性能,本文利用三種降水預(yù)報(bào)模型分別進(jìn)行了晴雨預(yù)報(bào)。實(shí)驗(yàn)樣本數(shù)分別為200,400,600,800,1 000,1 200,1 400,1 600,1 800和2 000。固定迭代次數(shù)T,晴雨預(yù)報(bào)的準(zhǔn)確率、TS評(píng)分、漏報(bào)率如圖5~圖7所示。圖5~圖7分別顯示了在不同樣本數(shù)下三種降水預(yù)報(bào)模型的準(zhǔn)確率、TS評(píng)分和漏報(bào)率的變化曲線。其中,在晴雨預(yù)報(bào)中,準(zhǔn)確率、TS評(píng)分越高,漏報(bào)率越低,所反應(yīng)的降水模型性能越好。由圖5可以看出,隨著樣本數(shù)的增加,改進(jìn)后的Adaboost?C4.5分類器的準(zhǔn)確率逐漸穩(wěn)定在86.5%左右,而傳統(tǒng)Adaboost?C4.5分類器在樣本數(shù)達(dá)到1 200以后出現(xiàn)了性能退化的現(xiàn)象,總的來說,隨著樣本數(shù)的增加,改進(jìn)后的Adaboost?C4.5分類器模型在準(zhǔn)確率和TS評(píng)分上總是高于其他兩種分類器模型。由圖7可以看出,改進(jìn)后的Adaboost?C4.5分類器的漏報(bào)率在總體上低于其他兩種分類器模型。當(dāng)樣本數(shù)達(dá)到1 400時(shí),傳統(tǒng)的基于C4.5算法降水模型的漏報(bào)率為35.32%,改進(jìn)后的Adaboost?C4.5算法模型漏報(bào)率僅為25.33%,比前者降低了10.01%。
圖5 三種預(yù)報(bào)方法的準(zhǔn)確率對(duì)比
圖6 三種預(yù)報(bào)方法的TS評(píng)分對(duì)比
圖7 三種預(yù)報(bào)方法的漏報(bào)率對(duì)比
本文提出了一種改進(jìn)的Adaboost?C4.5算法,利用PSO算法來優(yōu)化Adaboost?C4.5弱分類器的權(quán)重,可以有效地減少權(quán)重大的冗余或無用的弱分類器,從而提高強(qiáng)分類器的預(yù)測(cè)精度。在這個(gè)基礎(chǔ)上,應(yīng)用改進(jìn)的算法構(gòu)建降水預(yù)報(bào)模型。實(shí)驗(yàn)結(jié)果表明,本文提出的降水預(yù)報(bào)方法在總體上提高了準(zhǔn)確率、TS評(píng)分和降低了漏報(bào)率,預(yù)報(bào)效果優(yōu)于其他兩種預(yù)報(bào)方法,一定程度上克服了傳統(tǒng)降水預(yù)測(cè)模型泛化能力低、精度不足的問題,具有一定的實(shí)際應(yīng)用價(jià)值。