賴祥源,朱勤東*,陳火榮,王 臻,陳佩君
(1.福州大學(xué)空間信息工程研究中心數(shù)據(jù)挖掘與信息共享教育部重點實驗室,福建 福州 350003;2.福州大學(xué)數(shù)字中國研究院,福建 福州 350003;3.福建省漁業(yè)資源監(jiān)測中心,福建 福州 350003)
赤潮的形成是海洋中的生物、物理、化學(xué)等眾多因素綜合作用的結(jié)果[1],赤潮生物的生長繁殖是一個較為復(fù)雜的非線性動力過程,水質(zhì)環(huán)境因子、天氣狀況等都會對其產(chǎn)生影響,同時這些環(huán)境因子之間的關(guān)聯(lián)錯綜復(fù)雜,要對赤潮進行更快速、準確的預(yù)測非常困難。近幾年,許多學(xué)者對赤潮形成的影響因子有進一步的研究,桓清柳等[2]運用相關(guān)性分析的方法研究了深圳近岸海域赤潮變化趨勢,認為氮、磷營養(yǎng)鹽超標是赤潮發(fā)生的主要因素;彭模等[3]運用數(shù)理統(tǒng)計中的相關(guān)性分析方法對江蘇連云港海域的赤潮特征及其與環(huán)境因子的關(guān)聯(lián)性進行分析,結(jié)果表明葉綠素a、溶解氧、海溫等環(huán)境要素與赤潮發(fā)生相關(guān)性顯著;鄭欽華等分析了2012年4—10月三沙灣赤潮監(jiān)控區(qū)的富營養(yǎng)化特征,發(fā)現(xiàn)無機氮是該水域浮游植物生長繁殖的重要因子[4],此類研究大多是從定性的角度進行探討。
近年來,諸多學(xué)者采用各種算法和模型對赤潮進行定量的研究,馬玉梅等[5]構(gòu)建改進的三層BP(Back propagation)神經(jīng)網(wǎng)絡(luò)模型對赤潮災(zāi)害進行監(jiān)測和預(yù)報,但是該實驗的訓(xùn)練樣本個數(shù)只有24個,預(yù)測精度有待提高;張承慧等[6]建立了基于IOWA算子的赤潮LMBP神經(jīng)網(wǎng)絡(luò)組合預(yù)測模型,其預(yù)測精度比單項LMBP神經(jīng)網(wǎng)絡(luò)預(yù)測模型有較大提高,但是納入模型的特征是人為主觀篩選的,具有不確定性;蘇新紅等[7]進一步利用BP神經(jīng)網(wǎng)絡(luò),發(fā)現(xiàn)以氣象因子作為預(yù)測模型自變量是可行的,但是研究海區(qū)較大,模型結(jié)果對實際情況的指導(dǎo)意義不大。
針對上述問題,本文提出一種基于RF(Random forest)特征選擇[8]和XGBoost(eXtreme gradient boosting)算法的赤潮等級預(yù)測方法。在特征選擇時,利用隨機森林算法中基尼指數(shù)對特征的重要程度進行排序,比較不同特征數(shù)下模型準確率的變化情況,進而找到最佳的特征數(shù)M。根據(jù)計算出的特征重要性排名情況,選取前M個特征組成最優(yōu)特征集合,力圖在保證模型精度前提下,能夠減少與赤潮發(fā)生關(guān)聯(lián)較低或不相關(guān)的特征[9]。在模型分類時,利用分類效果更好的XGBoost算法作分類模型,以期能夠進一步提高赤潮等級預(yù)測的準確率。
本文收集整理了寧德三沙灣赤潮監(jiān)控區(qū)(圖1)2005—2019年共計40次赤潮事件的統(tǒng)計調(diào)查數(shù)據(jù)、水質(zhì)數(shù)據(jù)、氣象數(shù)據(jù)。統(tǒng)計調(diào)查數(shù)據(jù)主要包括了赤潮發(fā)生時間、消亡時間、發(fā)生地點、影響面積、赤潮優(yōu)勢種、赤潮生物細胞豐度、經(jīng)濟損失情況、赤潮等級等要素。水質(zhì)監(jiān)測數(shù)據(jù)包括水溫、鹽度、pH、溶解氧、溶解氧飽和度、硝酸鹽-氮、亞硝酸鹽-氮、葉綠素-a、化學(xué)耗氧量等要素。水文氣象觀測數(shù)據(jù)主要包含了氣溫、水深、風(fēng)速、氣壓、光照等要素(本文統(tǒng)計調(diào)查數(shù)據(jù)、水質(zhì)數(shù)據(jù)由福建省漁業(yè)資源監(jiān)測中心提供,水文氣象數(shù)據(jù)由福建省氣象臺提供)。
隨機森林算法是一種基于決策樹所構(gòu)成的Bagging(袋裝)集成算法,算法結(jié)果由票選的方式得到。它解決了決策樹算法性能的瓶頸,對數(shù)據(jù)噪聲和異常值有較好的容忍性[10],而且在維數(shù)較大的數(shù)據(jù)分類問題中體現(xiàn)了良好的穩(wěn)定性。基于此,本文利用隨機森林算法特征重要性值[11](Feature importance)作為參考標準,對赤潮發(fā)生時環(huán)境影響因子進行重要性計算。
特征重要性的計算通常采用的方法有:頻數(shù)統(tǒng)計、基尼(Gini)指數(shù)法[12]和平均精度下降法(Mean decrease accuracy)[13]。因為基尼指數(shù)無需對數(shù)運算,計算相對快速簡單,所以本文通過計算赤潮發(fā)生時相關(guān)影響因子的基尼指數(shù),將各因子的基尼指數(shù)作為特征重要性,并篩選出對赤潮相關(guān)性更強的因素,計算步驟具體如下。
步驟1根據(jù)基尼指數(shù)計算公式可得,第i棵決策樹中,節(jié)點t的Gini指數(shù)為:
(1)
其中K表示特征節(jié)點t處有K個類別,ptk表示節(jié)點t中類別k所占的比例。
那么節(jié)點t分裂前后的Gini指數(shù)變化量為:
ΔG=GIt-GIl-GIr
(2)
式中,GIl和GIr分別表示節(jié)點分裂后兩個新節(jié)點的Gini指數(shù)??紤]到節(jié)點處的樣本數(shù)量較多,本文對節(jié)點的Gini指數(shù)進行加權(quán)處理,權(quán)重就是節(jié)點的樣本數(shù)量n除以總樣本數(shù)量N:
(3)
步驟2加上節(jié)點處權(quán)重后特征Xj在節(jié)點t處的特征重要性為:
(4)
步驟3如果特征Xj在決策樹i中出現(xiàn)的節(jié)點在集合T中,那么Xj在第i棵樹的重要性為:
(5)
步驟4若隨機森林中共有n棵樹,那么Xj在隨機森林中的重要性為:
(6)
最后,把所有求得的重要性做歸一化處理即可得到最終的特征Gini指數(shù):
(7)
XGBoost是由Chen等[14]在2016年提出的一種基于回歸樹的提升算法,是梯度提升決策樹(Gradient boosting decision tree,GBDT)的優(yōu)化。XGBoost算法通過引入正則項來控制模型的復(fù)雜度,可以很好地防止模型過擬合,這就使算法在減少計算量的同時,能夠更快速地求得模型最優(yōu)解。XGBoost目標函數(shù)為:
(8)
(9)
當(dāng)新的決策樹生成時,需要擬合前一次預(yù)測的殘差,生成了s棵決策樹后,目標函數(shù)則相應(yīng)的改為:
(10)
對目標函數(shù)進行泰勒級數(shù)展開可得:
(11)
(12)
將公式(9)代入式(12),整理可得最終目標函數(shù):
(13)
其中:Gj=∑i∈Ijgi,Hj=∑i∈Ijhi,Ij定義為每個葉子上面樣本的集合Ij={i|q(xi)=ji}。
基于上述方法和理論的研究,本文赤潮預(yù)測模型主要分為特征篩選和模型構(gòu)建兩個部分,大致步驟如下。
首先,根據(jù)收集來的赤潮監(jiān)測數(shù)據(jù)進行數(shù)據(jù)清洗,對赤潮監(jiān)測數(shù)據(jù)中部分缺失的數(shù)據(jù),采用缺失處的前一個值和后一個值二者平均值表示。因為“赤潮生物細胞密度”數(shù)據(jù)的量綱較大,本文利用對其采用min-max標準化處理,即對原始數(shù)據(jù)進行線性變換,使得變換后的數(shù)據(jù)落到[0,1]區(qū)間,標準化公式如下:
(14)
式中max為樣本最大值,min為樣本最小值,通過標準化的處理,可以使得模型的計算速度更快,讓不同維度之間的特征在數(shù)值上有一定比較性,進而達到提高模型的效率和準確性的目的。
此外,為便于模型的訓(xùn)練和預(yù)測,本文結(jié)合福建省海洋漁業(yè)廳2014年發(fā)布的《福建省海洋赤潮災(zāi)害應(yīng)急預(yù)案》和國家海洋局2008年發(fā)布的《赤潮災(zāi)害應(yīng)急預(yù)案》中的赤潮災(zāi)害等級劃分,從“赤潮面積”和“赤潮毒性”兩個指標入手,將赤潮等級標簽劃分為五個等級:“輕微”“一般”“較大”“重大”和“特別重大”,各等級對應(yīng)的賦值為“1”“3”“5”“7”“9”。赤潮的監(jiān)測數(shù)據(jù)中有許多非數(shù)值型的特征變量,為方便模型的識別和學(xué)習(xí),本文將非數(shù)值型的特征變量轉(zhuǎn)化為離散數(shù)值型進行表示?!肮庹铡碧卣饔弥怠?”“4”“6”“8”表示“晴”“陰”“雨”“多云”四種天氣情況。最終生成一個m×n的矩陣A:
其中,每一行表示相同時段各特征值的實測值,每一列則用來表示特征值的樣本數(shù)量,用字母n表示,特征的個數(shù)用m表示。
其次,運用隨機森林算法中求解基尼指數(shù)的方法,對采集的數(shù)據(jù)中各特征進行重要性計算,在保證特征的特征重要性的前提下,結(jié)合皮爾遜相關(guān)性分析特征與赤潮等級的相關(guān)性,取平均后得出綜合的特征排序,根據(jù)實驗得出的最佳的特征個數(shù),選取特征綜合排序靠前的特征組成最優(yōu)特征子集。
最后,將篩選的最優(yōu)特征數(shù)據(jù)集按照3∶1的比例劃分為訓(xùn)練集和測試集,用于XGBoost分類模型進行訓(xùn)練和預(yù)測。具體技術(shù)路線如圖2所示。
為了衡量訓(xùn)練后的模型性能,本文選取ROC曲線、AUC值和準確率這三個指標對算法性能進行綜合評價。
ROC(Receiver operating characteristic,接受者工作特征曲線)曲線是以反正類率(False positive rate,F(xiàn)PR)特異度為橫軸,以真正類率(True positive rate,TPR)靈敏度為縱軸的各點的連線[15]。FPR和TPR計算公式如下:
(15)
(16)
式(15)~(16)中TP(True positive)為模型正確分類的正樣本;TN(True negative)為模型正確分類的負樣本;FP (False positive)為模型錯誤分類的正樣本;FN(False negative)為模型錯誤分類的負樣本。準確率(Accuracy)是評價一個模型預(yù)測準確的概率值,計算公式為:
(17)
AUC(Area under curve)被定義為ROC曲線下的面積[16],由于ROC曲線一般都處于y=x這條直線的上方,所以AUC的取值范圍在0.5和1之間。通常情況下,ROC曲線和AUC值都是對于二分類情況而言,因為本文實驗的標簽值(赤潮等級)分為多分類,可通過對標簽值的轉(zhuǎn)化獲取AUC值和ROC曲線,具體方法如下:
1)假設(shè)測試樣本個數(shù)為j,類別個數(shù)為k;
2)訓(xùn)練完成后,計算各測試樣本在各類別下的概率,得到一個[j,k]形狀的概率矩陣P,每一行表示一個測試樣本在各類別下概率值(按類別標簽排序)。
3)將每個測試樣本的標簽轉(zhuǎn)換為類似二進制的形式:“0→100”“1→010”“2→001”,每個位置用來標記是否屬于對應(yīng)的類別,可以獲得一個[j,k]的標簽矩陣L。
將標簽矩陣L和概率矩陣P分別按行展開,轉(zhuǎn)置后形成兩列,得到一個二分類的結(jié)果。
所以,此方法經(jīng)過計算后可以直接得到最終的ROC曲線和對應(yīng)得AUC值,運用AUC值作為評價標準輔助ROC曲線能夠更加直觀地對模型效果予以評價,AUC值越大,則說明當(dāng)前的分類算法性能更好。
2.2.1 實驗1-特征篩選
首先,利用隨機森林的特征重要性函數(shù)對赤潮影響因子進行10次特征重要性計算,結(jié)果如表1所示,為了避免結(jié)果的偶然性,本文將10次的特征重要性取平均值作為特征最終的重要性,降序排列結(jié)果如圖3所示。
表1 赤潮影響因子特征重要性統(tǒng)計表
由圖3可以看出,“赤潮生物細胞密度”的特征重要性最高,為0.149,“光照”環(huán)境條件重要性值最低,僅為0.027,說明“赤潮生物細胞密度”特征對赤潮等級預(yù)測結(jié)果的影響較大,而“光照”特征對赤潮等級預(yù)測結(jié)果的影響很小?!皻鈮骸焙汀鞍?氮”的特征重要性相同,盲目地取舍特征值會影響模型預(yù)測的準確率和可靠性,為進一步對特征進行合理的篩選,本文在隨機森林特征重性結(jié)果的基礎(chǔ)上,利用皮爾遜相關(guān)性分析,對各特征與赤潮等級之間的相關(guān)性進行計算,結(jié)果如圖4所示。
皮爾遜相關(guān)性r變化區(qū)間為[-1,1],當(dāng)r>0表明兩個變量是正相關(guān);r<0表明兩個變量是負相關(guān)。當(dāng)|r|≥0.7時,兩個變量高度相關(guān);0.4≤|r|<0.7,兩個變量中度相關(guān);0.2<|r|<0.4,兩變量低度相關(guān);|r|<0.2,兩變量極弱相關(guān)或不相關(guān)。由圖4可知,“風(fēng)速”“活性磷酸鹽”“硝酸鹽-氮”“亞硝酸鹽-氮”與“赤潮等級”呈負相關(guān),其余特征隨著“赤潮等級”的提升而增大,呈正相關(guān)。硝酸鹽-氮、pH、溶解氧、葉綠素a、赤潮生物細胞密度、化學(xué)耗氧量、鹽度、活性磷酸鹽、亞硝酸鹽-氮、水溫等特征與赤潮等級相關(guān)性達到顯著水平,相關(guān)系數(shù)值較大,可作為赤潮等級預(yù)測的備選特征。由于特征重要性和相關(guān)性為同一量綱,所以將特征的重要性與相關(guān)性值進行求和,得到各特征最終的綜合排名,結(jié)果如表2所示。
表2 特征重要性綜合排序
續(xù)表2
在對模型特征選擇的過程中,過多或過少都不利于模型的學(xué)習(xí)與訓(xùn)練,會影響模型的準確率,為了找到符合模型的特征數(shù)量M,本文選取不同的M值,將模型運行得到的500個AUC值的平均值作為該特征數(shù)量下的AUC值,結(jié)果如圖5所示。
通過比較RF模型在不同M值下AUC值的大小,AUC最大值所對應(yīng)的特征數(shù)則為最佳的M值,由圖5可知,AUC值在特征個數(shù)為5到10之間呈單調(diào)遞增的變化趨勢,當(dāng)特征數(shù)M=10時,AUC值達到最高0.841,特征個數(shù)在10到15區(qū)間,AUC值開始下降,雖然在M=13時的AUC值再次達到峰值,但是只達到了0.816,遠低于M=10時AUC值,所以本文將綜合排名前十的特征作為模型輸入的特征參數(shù),根據(jù)表1可知,選取的特征分別是:“赤潮生物細胞密度”“水溫”“鹽度”“pH”“溶解氧”“化學(xué)耗氧量”“活性磷酸鹽”“葉綠素a”“硝酸鹽-氮”“亞硝酸鹽-氮”,這10個特征綜合排序靠前,說明這些變量對分類結(jié)果影響和貢獻大。
赤潮生物細胞密度在短時間內(nèi)劇烈增長是引發(fā)赤潮暴發(fā)的內(nèi)在因素,也是發(fā)生赤潮的前提,所以赤潮生物量的特征重要性最高,且皮爾遜相關(guān)性具有顯著性,能夠在赤潮的預(yù)測中具有重要的指示性作用。
適宜的水溫和鹽度是維持藻類細胞正常活動的必要條件和能量基礎(chǔ),有研究表明,水溫在一定程度上能夠促進或者抑制赤潮藻類的生長繁殖,而適宜的鹽度不僅能夠平衡赤潮藻類細胞內(nèi)外正常的離子濃度,而且還能促進藻類的光和作用[17],所以將水溫和鹽度特征納入模型的特征集合中具有合理性。此外,葉綠素作為赤潮藻類光合作用的物質(zhì)基礎(chǔ),對赤潮等級預(yù)測具有較高的參考價值。
水體的富營養(yǎng)化通常容易導(dǎo)致赤潮的發(fā)生,而造成海域富營養(yǎng)化的主要原因是活性磷酸鹽和無機氮(硝酸鹽-氮、亞硝酸鹽-氮)等營養(yǎng)鹽濃度較高[18],近海水域中無機氮以硝酸鹽-氮為主體[19],這些元素能夠極大地促進赤潮生物的快速繁殖,是赤潮發(fā)生時較好的參考指標。
在赤潮發(fā)生過程中,赤潮藻類需要進行劇烈的光合作用,將水體中大量的CO2作為原料消耗,導(dǎo)致海水的pH值相應(yīng)的升高,作為產(chǎn)物的O2也隨之升高,當(dāng)產(chǎn)生的氧氣溶于水后,水體溶解氧含量也會明顯升高,但是,當(dāng)赤潮生物大量呼吸或者死亡時,分解產(chǎn)生的二氧化碳使水體pH降低,溶解氧含量隨之降低,所以pH和溶解氧在赤潮的發(fā)展全過程都有密切的關(guān)系,其特征重要性也較高。
化學(xué)耗氧量在赤潮發(fā)生期間也具有明顯的指示作用,有研究表明在赤潮發(fā)生期間,化學(xué)耗氧量明顯升高[20]。所以本文將“化學(xué)耗氧量”特征加入到模型特征集合中具有合理性和科學(xué)性。
此外,本文以XGBoost算法為基準模型[21],對本文提出的方法的效果進行驗證,選取決策樹(Decision tree method ,DTM)、遺傳算法(Genetic algorithms,GA)、序列后向選擇(Sequential backward selection,SBS)三種不同的特征選擇算法進行橫向的對比實驗,通過不同特征維度下不同算法的AUC值比較,取對應(yīng)維度的500個AUC值的平均值作為各算法最終的AUC值,AUC變化曲線(圖6)并對結(jié)果進行精度評價,結(jié)果如表3所示。
表3 不同特征選擇算法基于XGBoost實驗結(jié)果比較
由圖6可知,DTM算法在特征數(shù)量為13時,AUC值達到最大為0.789;GA算法最佳特征數(shù)量為9,AUC最大值為0.823;SBS算法在特征數(shù)量等于5時,AUC達到最大值0.811。結(jié)合表2中各算法準確率來看,RF特征選擇算法準確率達到了85.312%,均高于DTM、GA、SBS三種特征算法;從AUC值大小來看,RF特征選擇算法同樣優(yōu)于其余三種算法;GA算法與RF算法在特征數(shù)量上相近,但是準確率不夠;DTM算法由于特征降維的效果不理想,所以導(dǎo)致在AUC值和準確率上表現(xiàn)均不理想;SBS算法雖然在特征的降維上表現(xiàn)很好,但是特征篩選過多,模型學(xué)習(xí)的信息量不足,容易導(dǎo)致模型出現(xiàn)在訓(xùn)練集數(shù)據(jù)上表現(xiàn)很好、在測試集數(shù)據(jù)中表現(xiàn)很差的過擬合現(xiàn)象發(fā)生,最終影響模型準確率。因此,本文利用RF特征算法加入XGBoost模型的效果總體優(yōu)于DTM、GA、SBS三種算法,驗證了本文采用的特征選擇方法具有科學(xué)性和有效性。
2.2.2 實驗2-赤潮等級預(yù)測
為了檢驗本文構(gòu)建的模型效果,本文選取決策樹(Decision tree model,DTM)、支持向量分類機(Support vector classification,SVC)兩種模型與XGBoost模型做對比實驗,在特征篩選過程中,均采用實驗1提出的RF算法。對上述3個模型分別進行10次實驗取其均值后,得出的結(jié)果數(shù)據(jù)如表3所示,其中TPR為真正類率,F(xiàn)PR為反正類率,Acc表示準確率。由表4可知,本文方法的準確率最高,達到87.3%,AUC值也最高,達到了0.836,真正類率為0.926,反正類率為0.114,可以看出本文提出的方法綜合性能明顯優(yōu)于DTM和SVC分類算法。
表4 不同算法實驗結(jié)果比較
為能夠更加直觀地判斷模型預(yù)測效果,本文根據(jù)表4實驗結(jié)果,對不同算法下的ROC曲線進行繪制如圖7所示,由于本文構(gòu)造的模型是多分類的結(jié)構(gòu),屬于多分類范疇,所以繪制的ROC曲線不如二分類光滑,但是不影響對模型效果的直觀評價,根據(jù)圖7可以看出在三個模型的ROC曲線中都處于y=x這條直線的上方,本文提出的基于隨機森林(RF)特征選擇和XGBoost模型的方法生成的ROC曲線所圍成的面積最大,其次是SVC模型的ROC曲線圍成的面積為0.764,DTM模型的ROC曲線圍成的面積最小為0.719。根據(jù)ROC曲線的規(guī)律可知,XGBoost模型的曲線較DTM與SVC更往坐標的左上角凸,足以說明基于RF特征選擇的XGBoost模型的AUC值更大,即模型的分類效果更佳。
目前用于赤潮等級預(yù)測的數(shù)據(jù)量越來越大,能否更加精準地對赤潮等級進行預(yù)測是當(dāng)下赤潮預(yù)測問題研究的熱點。針對這一問題,本文提出一種基于RF特征選擇和XGBoost模型的赤潮等級預(yù)測方法。以三沙灣赤潮監(jiān)控區(qū)為研究區(qū)域,通過RF算法特征重要性評估結(jié)合雙側(cè)顯著皮爾遜相關(guān)性對特征進行篩選,利用極端梯度提升(XGBoost)算法構(gòu)建赤潮等級分類預(yù)測模型。在特征選擇過程中本文提出的方法比DTM、GA、SBS特征選擇算法準確率更高,能夠達到87.3%,AUC值為0.836,均高于另外三種算法;在模型對赤潮等級預(yù)測過程中,應(yīng)用RF特征選擇的XGBoost模型相比DTM模型和SVC模型在準確率上分別高出7.6%和4.9%,AUC值達到最高為0.836。但是本文赤潮等級預(yù)測的方法在準確率方面也還有待進一步提高,用更高效的方法找到更優(yōu)的特征子集,進而提高模型預(yù)測的準確率,將是今后重點研究方向。