高豐偉, 田睿, 周浩, 胡潔
南京林業(yè)大學(xué)信息科學(xué)技術(shù)學(xué)院, 江蘇 南京 210037
森林火災(zāi)是一種危害極大的自然災(zāi)害,它以突發(fā)性強、破壞性大、難以處置為特點,對人類的生產(chǎn)生活產(chǎn)生嚴(yán)重影響。在我國,每年森林火災(zāi)平均發(fā)生一萬多次,森林被燒毀的面積達到上百萬公頃。森林火災(zāi)不僅損失大量林木,并且會破壞森林生態(tài)系統(tǒng)平衡,對森林環(huán)境造成不可逆的傷害。因此如果能夠?qū)ι只馂?zāi)的發(fā)生做出預(yù)測,及時地進行預(yù)警,能夠極大地預(yù)防或避免森林火災(zāi)的發(fā)生。
在森林防火預(yù)測研究中,離不開數(shù)據(jù)挖掘。Spark十分擅長處理機器學(xué)習(xí)方面的問題。在使用Spark框架時,可以將迭代計算這種對I/O和CPU消耗巨大的計算操作放進內(nèi)存運行極大地提高了計算效率。MLlib是Spark框架的一部分,是分布式機器學(xué)習(xí)庫。MLlib和Spark中的Spark SQL、Spark Streaming、Graph X等其他Spark子框架可以進行無縫的數(shù)據(jù)共享和相互操作[1-2],方便構(gòu)建機器學(xué)習(xí)在線訓(xùn)練模型,在森林防火預(yù)測研究中的數(shù)據(jù)挖掘起著至關(guān)重要的作用。決策樹算法是一種經(jīng)典的機器學(xué)習(xí)算法,由決策樹算法衍生了數(shù)量繁多的成熟系統(tǒng),這些系統(tǒng)已在語音識別、模式識別、醫(yī)療診斷等領(lǐng)域得到了廣泛的應(yīng)用,并且在森林防火預(yù)測分類研究中也越來越受到重視。
加拿大森林火險氣候指數(shù)系統(tǒng)(以下簡稱FWI系統(tǒng))指標(biāo)體系以大量點火試驗、天氣資料以及火災(zāi)資料為基礎(chǔ),以時滯平衡含水率理論為理論基礎(chǔ),把氣象條件、地理位置、日照時數(shù)與可燃物含水率有機結(jié)合了起來,是全球最常用的火災(zāi)天氣危險等級指數(shù)系統(tǒng)之一。作為全球最常用的火災(zāi)天氣等級系統(tǒng),其應(yīng)用和研究區(qū)域較為廣泛,包括在北美、南美、歐洲、非洲、亞洲等主要國家和地區(qū)都有對應(yīng)研究。FWI系統(tǒng)在20世紀(jì)80年代首次引入我國后,一系列研究表明,F(xiàn)WI系統(tǒng)適合在云南、黑龍江、內(nèi)蒙古自治區(qū)、吉林、四川、新疆和山西應(yīng)用[3]。
通過對阿爾及利亞部分地區(qū)的火災(zāi)發(fā)生情況和監(jiān)測的氣象數(shù)據(jù),基于Spark MLlib使用機器學(xué)習(xí)算法,對氣象數(shù)據(jù)進行數(shù)據(jù)挖掘,以實現(xiàn)對森林火災(zāi)的預(yù)測分類。阿爾及利亞位于非洲北部,也是FWI系統(tǒng)的覆蓋國家之一,其北部地區(qū)為地中海氣候,冬季溫和多雨,夏季炎熱干燥,降雨量相對較少。阿爾及利亞是受世界上森林火災(zāi)影響較大的國家之一,火災(zāi)發(fā)生時段主要集中在夏季,特別是在每日的中午到下午4時這個區(qū)間。根據(jù)相關(guān)記錄顯示,除人為因素外,在阿爾及利亞分布較廣的阿爾法草等植被被認(rèn)為是高度易燃的物種,尤其是在濕度幾乎為零的旱季,它們促進了火災(zāi)的快速蔓延。2008至2017年間,超過320 409 hm2的森林被燒毀,火災(zāi)超過31 513起。2012年,阿爾及利亞記錄了超過5 110起火災(zāi)和燒毀面積達到了99 061 hm2[4-5]。
基于Spark MLlib機器學(xué)習(xí)框架,對阿爾及利亞北部兩地區(qū)森林氣象監(jiān)測數(shù)據(jù)使用決策樹模型進行訓(xùn)練并進行火災(zāi)分類預(yù)測。通過計算氣象數(shù)據(jù)之間相關(guān)性以及根據(jù)氣象因子與FWI系統(tǒng)之間的關(guān)系,對特征變量進行篩選,從而優(yōu)化了決策樹模型,提高了森林火災(zāi)分類預(yù)測的準(zhǔn)確率?;诖?,可為我國的森林火災(zāi)預(yù)測分類研究提供新的思路。
1.1.1 數(shù)據(jù)來源
數(shù)據(jù)來源使用UCI機器學(xué)習(xí)庫中提供的阿爾及利亞森林火災(zāi)數(shù)據(jù)集。數(shù)據(jù)集包括11個特征變量,包括日期、溫度、相對濕度(RH)、風(fēng)速(WS)、降雨量以及FWI系統(tǒng)中6個火險天氣指數(shù)。由于2012年是2007年至2018年記錄的火災(zāi)發(fā)生率最高的一年,因此使用2012年6月至2012年9月監(jiān)測得到的4個氣象因子和6個FWI系統(tǒng)的火險天氣指數(shù)數(shù)據(jù)作為實驗數(shù)據(jù)。
FWI系統(tǒng)與每日14時的溫度、相對濕度、空曠地10 m高的風(fēng)速和地方標(biāo)準(zhǔn)時中午測量的24 h的總降水量這四種氣象因子關(guān)系密切。系統(tǒng)由6個部分組成,前3個指標(biāo)分別代表森林凋落物中不同層的濕度,包括細(xì)小可燃物濕度碼(FFMC)、粗腐殖質(zhì)濕度碼(DMC)和干旱碼(DC)。每天的濕度碼通過當(dāng)天測量的氣象數(shù)據(jù)值以及前一天的濕度碼計算得到。森林可燃物的干燥速率對于不同類型是不同的,伴隨著每天天氣變化,可燃物濕度也發(fā)生變化。系統(tǒng)的后3個指標(biāo)是火災(zāi)行為碼,由3個濕度碼和風(fēng)速生成,分別表示森林中的可燃物的蔓延速度、有效可燃物的數(shù)量和代表火災(zāi)強度的火災(zāi)天氣指標(biāo),即初始蔓延速度(IISI)、累積指數(shù)(BUI)和火險天氣指數(shù)(FWI)[6]。
該數(shù)據(jù)集包含244個實例,包括位于阿爾及利亞東北部的Bejaia地區(qū)和位于阿爾及利亞西北部的Sidi Bel-abbes地區(qū),各122個實例。每個實例中又包含了日期、溫度、相對濕度(RH)、風(fēng)速(WS)降雨量以及FWI系統(tǒng)中6個火險天氣指數(shù),總共2 684個原始數(shù)據(jù)。阿勒頗松(Pinus halepensisMill.)是地中海盆地干旱地區(qū)分布最廣的針葉樹,也是阿爾及利亞北部分布較多的植被,其物種對氣候表現(xiàn)出可塑性生長反應(yīng),尤其對干旱十分敏感,也是阿爾及利亞北部地區(qū)較容易發(fā)生火災(zāi)的植被類型。根據(jù)以上并結(jié)合阿爾及利亞環(huán)境氣候等因素,本次主要選擇溫度、相對濕度(RH)、風(fēng)速(WS)、降雨量為氣象因子進行數(shù)據(jù)挖掘及森林火災(zāi)分類預(yù)測。人為因素同樣是對森林火災(zāi)發(fā)生產(chǎn)生影響的一大因素,但因為本文重點在于研究對已有數(shù)據(jù)進行數(shù)據(jù)挖掘以及數(shù)據(jù)特征之間的相關(guān)性分析,人為因素受當(dāng)?shù)卣呒拔幕戎饔^因素影響較強,因此本次暫不考慮人為因素對預(yù)測的影響。
1.1.2 數(shù)據(jù)清洗
對于阿爾及利亞森林火災(zāi)數(shù)據(jù)集中的數(shù)據(jù)清洗過程包括缺失值處理和異常值處理:
(1)對于缺失的處理:缺失值處理的常用方法主要有刪除記錄、不處理和數(shù)據(jù)插補等,綜合本次森林火災(zāi)數(shù)據(jù)集數(shù)據(jù)樣本規(guī)模分析,刪除記錄和不處理顯然會對最終分析結(jié)果的準(zhǔn)確性和客觀性產(chǎn)生影響[9]。因此,本次采用數(shù)據(jù)插補法對缺失值進行處理。本實驗中的數(shù)據(jù)插補方法選為拉格朗日插值法:
已知n-1次多項式過n個點:
從數(shù)據(jù)樣本中n個點(x1,y1),(x2,y2)···(xn,yn)代入多項式:
求出拉格朗日多項式為:
將缺失值對應(yīng)的x代入公式(2),就能得到缺失值的插補值L(x)。
(2)對于異常值的處理:在FWI系統(tǒng)指數(shù)中,出現(xiàn)指數(shù)值小于零的情況,視為異常情況,本文將該值視為缺失值。利用現(xiàn)有的FWI數(shù)據(jù),采用拉格朗日插值法對其填補。
1.2.1 不同特征參數(shù)的相關(guān)性分析
在相關(guān)性分析中,使用皮爾森相關(guān)系數(shù)(Pearson Correlation Coefficient)是當(dāng)前主流的一種分析方法[10-11]。皮爾森相關(guān)系數(shù)是一種線性相關(guān)系數(shù),描述了兩個變量之間線性相關(guān)的程度,在19世紀(jì)80年代由卡爾·皮爾遜總結(jié)前人的方法演變而來[12]。樣本相關(guān)系數(shù)(樣本皮爾遜系數(shù)),可通過估算樣本中的協(xié)方差和標(biāo)準(zhǔn)差得到,常用r代表,其定義的公式如下:
使用Spark MLlib庫中的Statistics.corr()函數(shù)對數(shù)據(jù)集的11個屬性兩兩進行相關(guān)性分析,得到相關(guān)性系數(shù)熱圖,如圖1所示。相關(guān)性系數(shù)是區(qū)間分布在0.2269-0.994之間。其中DMC指數(shù)和DC指數(shù)的相關(guān)性系數(shù)為0.9610,DMC指數(shù)和BUI指數(shù)的相關(guān)性系數(shù)為0.9946,DMC指數(shù)和FWI指數(shù)相關(guān)性系數(shù)為0.9006,DC指數(shù)和BUI指數(shù)相關(guān)性系數(shù)為0.9826,DC指數(shù)和FWI指數(shù)相關(guān)性系數(shù)為0.8675,ISI指數(shù)和FWI指數(shù)相關(guān)性系數(shù)為0.9382,BUI指數(shù)和FWI指數(shù)相關(guān)性系數(shù)為0.8992。將以上相關(guān)性系數(shù)大于0.8的兩個特征篩選出來。需要說明的是FFMC、DMC 、DC、ISI、BUI和 FWI是根據(jù)地方標(biāo)準(zhǔn)時中午測量的24小時的總降水量、空氣相對濕度、風(fēng)速和24小時降水量計算得出,F(xiàn)WI系統(tǒng)中的火險指數(shù)與溫度、濕度等氣象因子密切相關(guān)。因此在篩選出相關(guān)性系數(shù)大于0.8的特征后,根據(jù)FWI系統(tǒng)中火險天氣指數(shù)的特點,我們剔除了BUI、DMC及FWI三個特征參數(shù),它們之間有較強的相關(guān)性。
圖1 不同特征參數(shù)相關(guān)性分析Fig. 1 Correlation analysis of different characteristic parameters
1.2.2 決策樹模型
決策樹(Decision Tree)是機器學(xué)習(xí)中分類和回歸的常用方法。由于易于解釋,處理分類特征,擴展到多類分類設(shè)置,不需要特征縮放,并且能夠捕獲非線性和特征相互作用,因此決策樹得到了廣泛的使用[13-15]。
對于本文使用數(shù)據(jù)集來說,分類結(jié)果是由發(fā)生火災(zāi)以及不發(fā)生火災(zāi)兩種組成,因此選擇二叉決策樹。決策樹的學(xué)習(xí)主要包括3個步驟:一是特征選擇,二是決策樹的生成,最后是剪枝。
(1)特征選擇。為了提高決策樹學(xué)習(xí)的效率,往往選取的訓(xùn)練數(shù)據(jù)都是具有分類能力的特征。特征選擇的準(zhǔn)則一般為信息增益(或信息增益比、基尼指數(shù)等),衡量信息增益的熵越大,代表著隨機變量的不確定性就越大,信息增益的描述可歸納為公式如下:
g(D,A)為特征A對訓(xùn)練數(shù)據(jù)集D的信息增益,H(D)與H(D|A)分別為集合D的經(jīng)驗熵和特征A給定條件下D的經(jīng)驗條件熵之差。
(a)真實火災(zāi)發(fā)生情況 (b) 預(yù)測火災(zāi)發(fā)生情況
信息增益比的描述可歸納為公式如下:
gR(D,A)為特征A對訓(xùn)練數(shù)據(jù)集D的信息增益比,HA(D)分別為集合D的經(jīng)驗熵和特征A給定條件下D的經(jīng)驗條件熵之比。
基尼指數(shù)可描述為:在分類問題中,假設(shè)有K個類,樣本點屬于第K類的概率為pk,如下公式:
在本實驗中特征選擇標(biāo)準(zhǔn)為基尼指數(shù),由于只存在兩類,因此K=2。
(2)決策樹的生成。主要流程為:從根節(jié)點開始,對節(jié)點計算所有可能的特征的信息增益,選擇信息最大的特征作為幾點特征,由該特征的不同取值建立子節(jié)點,再對子節(jié)點遞歸地調(diào)用以上方法,構(gòu)建決策樹。直至所有特征信息增益均很小或無特征可選時終止。
(3)決策樹的剪枝。對決策樹進行剪枝,以防止對未知測試數(shù)據(jù)的分類出現(xiàn)過擬合的現(xiàn)象。剪枝往往由極小化決策樹整體的損失函數(shù)進行實現(xiàn)。損失函數(shù)定義為:
T為任意子樹,C(T)為對訓(xùn)練數(shù)據(jù)的預(yù)測誤差,在訓(xùn)練,|T|為子樹的葉子節(jié)點個數(shù),Ca(T)為參數(shù)是a時的子樹T的整體損失,參數(shù)a權(quán)衡訓(xùn)練數(shù)據(jù)的擬合程度與模型的復(fù)雜度。
1.2.3 建立訓(xùn)練模型
基于Spark MLlib的決策樹分類模型首先對原始火山數(shù)據(jù)集進行數(shù)據(jù)清洗,對原始數(shù)據(jù)集中的缺失值及異常值進行數(shù)據(jù)處理,處理方法主要為拉格朗日插值和填補。使用case class類定義一個森林?jǐn)?shù)據(jù)類forest,讀取火災(zāi)數(shù)據(jù)集并創(chuàng)建一個forest模式的RDD并轉(zhuǎn)換為DataFrame。創(chuàng)建決策樹模型DecisionTreeClassifier,通過setter的方法來設(shè)置決策樹的參數(shù),下面簡要介紹一下DecisionTreeClassifier模型對象中部分常用的參數(shù)含義。
(1)featurescol:用來設(shè)置特征列名的參數(shù),默認(rèn)值為“features”。
(2)impurity:用來設(shè)置信息增益標(biāo)準(zhǔn)的參數(shù),支持信息增益“entropy”和基尼指數(shù)“gini”,默認(rèn)值為“gini”。
(3)labelcol:用來設(shè)置標(biāo)簽列名的參數(shù),默認(rèn)值為“l(fā)abel”。
(4)maxdepth:設(shè)置樹的最大深度,默認(rèn)值為5。例如,將maxdepth值設(shè)置為0,表示只有一個葉子節(jié)點;將maxdepth值設(shè)置為1,表示有一個根節(jié)點和兩個葉子節(jié)點。
(5)predictioncol:用來設(shè)置預(yù)測列名的參數(shù),默認(rèn)值為“prediction”。
(6)rawpredictioncol:用來設(shè)置原始預(yù)測值(置信度)的列名參數(shù)。
本次實驗需要設(shè)置特征列(featurescol)和待預(yù)測列(labelcol),同時設(shè)置信息增益標(biāo)準(zhǔn)為Gini。
構(gòu)建機器學(xué)習(xí)流水線,使用訓(xùn)練集調(diào)用fit方法對模型進行訓(xùn)練,得到訓(xùn)練模型后使用測試集調(diào)用transform方法對其進行預(yù)測。結(jié)合原始數(shù)據(jù)分類情況分析預(yù)測結(jié)果,并得到錯誤率。Spark MLlib的決策樹分類模型流程圖如圖2所示。
圖2 構(gòu)建決策樹模型流程Fig. 2 Process of constructing decision tree model
將數(shù)據(jù)集隨機分成訓(xùn)練集和測試集,其中訓(xùn)練集占70%,測試集占30%,使用訓(xùn)練集對模型進行訓(xùn)練,得到?jīng)Q策樹模型。使用測試集對模型進行測試,結(jié)果如圖3所示。左側(cè)甘特圖顯示了6月—9月之間阿爾及利亞火災(zāi)發(fā)生天數(shù)情況,右側(cè)甘特圖為預(yù)測6月—9月之間的火災(zāi)發(fā)生天數(shù)??傮w上看,預(yù)測結(jié)果基本一致,個別天數(shù)出現(xiàn)了預(yù)測錯誤。如6月的第21天和7月的第13天都與真實數(shù)據(jù)的分類情況產(chǎn)生了差異。調(diào)用函數(shù)Evaluator(),計算測試數(shù)據(jù)預(yù)測準(zhǔn)確率,并通過程序控制臺打印輸出,預(yù)測準(zhǔn)確率為94.94%(精確小數(shù)點后兩位)。其中測試樣本數(shù)量為40,預(yù)測分類正確數(shù)量為38,有2天的預(yù)測分類結(jié)果與實際出現(xiàn)了不相符的情況。為了提高預(yù)測準(zhǔn)確率,對數(shù)據(jù)集中不同特征參數(shù)的進行研究分析,去除相關(guān)性較高的特征參數(shù),優(yōu)化模型后,再進行預(yù)測。
圖3 原始數(shù)據(jù)分類與預(yù)測分類情況對比Fig. 3 Comparison between original data classification and forecast classification
在原有模型的基礎(chǔ)上,對處理數(shù)據(jù)集階段做出優(yōu)化。即對樣本數(shù)據(jù)中相關(guān)性高的特征進行剔除。通過1.2.1節(jié)分析,本試驗將累積指數(shù)(BUI)指數(shù)、FWI系統(tǒng)中的Duff濕度代碼(DMC)指數(shù)及火災(zāi)天氣指數(shù)(FWI)指數(shù)三個特征參數(shù)進行剔除。使用訓(xùn)練集對模型進行訓(xùn)練,得到?jīng)Q策樹模型。使用測試集對模型進行測試,結(jié)果如圖4所示。
圖4 改進后預(yù)測分類與真實分類情況對比Fig. 4 Comparison between improved prediction classification and real classification
左側(cè)甘特圖顯示了6月—9月之間阿爾及利亞火災(zāi)發(fā)生天數(shù)情況,右側(cè)甘特圖為預(yù)測6月—9月之間的火災(zāi)發(fā)生天數(shù)??傮w上看,預(yù)測結(jié)果基本一致,也出現(xiàn)極個別的預(yù)測錯誤。例如7月的第7天與真實數(shù)據(jù)的分類情況產(chǎn)生了差異。同樣調(diào)用函數(shù)Evaluator(),計算測試數(shù)據(jù)預(yù)測準(zhǔn)確率,并通過程序控制臺打印輸出,預(yù)測準(zhǔn)確率為97.17%(精確小數(shù)點后兩位)。其中測試樣本數(shù)量為34,正確預(yù)測分類數(shù)量為33,出現(xiàn)了1天的預(yù)測結(jié)果與實際不符的情況。相比較剔除相關(guān)性高的特征數(shù)據(jù)前的預(yù)測,準(zhǔn)確率提高了約3%。模型改進前后預(yù)測情況對比見表1。
表1 改進前后預(yù)測準(zhǔn)確率對比Tab. 1 Comparison of prediction accuracy before and after improvement
通過以上結(jié)果可以得出,利用Spark MLlib計算特征參數(shù)相關(guān)性并過濾,對決策樹分類預(yù)測模型起到了優(yōu)化的作用。因此在使用Spark MLlib計算框架時,將多種數(shù)據(jù)挖掘算法進行組合,從而對森林火災(zāi)預(yù)測的準(zhǔn)確性進行了提升。
本文選取阿爾及利亞森林火災(zāi)數(shù)據(jù)作為分析對象,經(jīng)過數(shù)據(jù)清洗將數(shù)據(jù)處理成適合本文研究模型需要的數(shù)據(jù)。利用Spark大數(shù)據(jù)框架,結(jié)合原有數(shù)據(jù)集和森林火災(zāi)分類情況,提出基于Spark的決策樹預(yù)測分類模型,并對森林火災(zāi)數(shù)據(jù)樣本中的特征參數(shù)進行相關(guān)性分析,通過對比不同特征參數(shù)的相關(guān)性系數(shù),以及考慮FWI系統(tǒng)中火險天氣指數(shù)與氣象因子之間的密切關(guān)系,剔除了相關(guān)性較高的一些特征參數(shù),從而優(yōu)化模型。模型優(yōu)化前預(yù)測準(zhǔn)確率達到94.94%,優(yōu)化后,模型預(yù)測準(zhǔn)確率達到97.17%,提高了近3%。
本文創(chuàng)新點在于利用大數(shù)據(jù)運算框架Spark MLlib對阿爾及利亞森林火災(zāi)數(shù)據(jù)進行數(shù)據(jù)挖掘以及分類預(yù)測。將大數(shù)據(jù)技術(shù)與森林火災(zāi)預(yù)測相結(jié)合,為森林火災(zāi)預(yù)測方向提供一個新的思路。本次實驗也存在一些局限性,例如影響森林火災(zāi)發(fā)生的因素除溫濕度等氣象因素外,人為因素也是一重要影響因素。不同地區(qū)的人文文化差異、生產(chǎn)經(jīng)營活動,都會對森林火災(zāi)的發(fā)生產(chǎn)生影響,需要具體問題具體分析。此外,季節(jié)也是影響森林火災(zāi)又一大因素,夏季森林火災(zāi)的發(fā)生次數(shù)明顯高于冬季。在接下來的研究中,需要進一步研究分析特征參數(shù)相關(guān)性方法,進行降維,例如主成分分析(PCA)等,并考慮融合多種數(shù)據(jù)挖掘算法,將季節(jié)性因素的影響也融入研究,使預(yù)測結(jié)果更準(zhǔn)確更全面。