楊冰清,高 珊①
(阜陽師范大學 數(shù)學與統(tǒng)計學院,安徽 阜陽 236037)
毒蘑菇又稱毒菌,屬大型真菌類,部分品種的毒性死亡率較高,其中肝毒性鵝膏菌品種中毒病死率高達80%,蘑菇中毒已經(jīng)成為我國食源性疾病中病死率最高的一類急癥[1].目前各級醫(yī)護人員和廣大群眾對于蘑菇毒性種類的認識和區(qū)別尚沒有得到有效的提高,我國也曾多次出現(xiàn)地域性、季節(jié)性野生蘑菇中毒致死的事件.對于蘑菇毒性,從根本上提高鑒別能力,預防誤食誤采,是有待解決的問題.
目前蘑菇毒性判別主要通過外形辨別以及通過生化分析2種手段[2].基于“互聯(lián)網(wǎng)+”在醫(yī)學數(shù)據(jù)上的良好應用,機器學習、神經(jīng)網(wǎng)絡等在多學科領域取得很好的研究成果,從本質上來說對于蘑菇毒性判別問題也就是一個多維數(shù)據(jù)的非線性分類問題[3].
肖杰文等[4]對蘑菇圖像進行圖像特征提取,對比LeNet-5、VGGNet-16、AlexNet和ShuffletV2模型,得到ShuffleNetV2參數(shù)小、運行速度快且ShuffletNetV2的Top-1和Top-5的準確度最高.劉斌等[5]采用基于貝葉斯分類模型對蘑菇數(shù)據(jù)的特征學習,從而較為準確地識別蘑菇的毒性,將準確率控制在98.48%.樊哿等[3]建立C-SVM模型通過定步長探索法確定最優(yōu)參數(shù),并將其和神經(jīng)網(wǎng)絡、決策樹等分類器進行性能對比,最終得出該方法準確度高、操作方便和實用性強.
本文根據(jù)以往研究學者對蘑菇毒性判別的主要依據(jù)和機器學習算法特征重要性排序相結合的方法,篩選出對蘑菇毒性判別有顯著影響的特征.將該特征應用于以隨機森林算法、梯度提升算法和自適應提升算法為基分類器所構建的Stacking的模型.通過對比準確度,召回率、F1-score和AUC(受試者工作特征曲線下的面積),發(fā)現(xiàn)基于Stacking的模型在上述各方面的效果相比較基分類器都有最好的結果.
Stacking是目前機器學習領域熱門研究方向之一,將多個學習器的結合并使用某種規(guī)則將每個學習器的結果進行再訓練,從而獲得比單個學習器更好的結果.其中Stacking是由Worlpert[6]提出的學習框架,是一種集合學習技術,其中包括2個主要工作,一是初級學習器的構建,二是多分類器的融合集成[7].因為多個分類模型往往是不同的算法,所以其框架往往是異構的.其中本文模型的訓練和測試過程如圖1所示.
圖1 本文stacking模型框架
RandomForest是在以決策樹為初級學習器構建Bagging集成的基礎上,進一步在決策樹訓練過程中引入隨機屬性的方法[8].該算法是將決策樹進行集成,最終結果是由若干個決策樹進行投票產(chǎn)生,其流程如圖2所示.隨機森林旨在在控制運算量沒有顯著提高的情況下,提高最終精度,并且不需要提前進行變量篩選,對共線性不敏感,對缺失數(shù)據(jù)和非平衡數(shù)據(jù)更加友好.
圖2 隨機森林流程框架
GradientBoost算法建立在數(shù)據(jù)優(yōu)化的基礎上,其每次訓練都是對之前建立模型的損失函數(shù)的梯度下降,即在N次訓練中將上輪弱分類器的負梯度作為損失函數(shù)下降的方向,在N次循環(huán)中,模型的損失函數(shù)呈下降趨勢,從而達到函數(shù)空間的最優(yōu)解.
AdaBoost算法的思想是由一系列加權的弱分類器組合成一個強分類器[9].最初,每個樣本具有相等的權重,在N次訓練中樣本的權重也進行改變,其中錯分類樣本在下次訓練中被賦予更大的權重,相反正確分類的樣本前的權重減少,由此將訓練的弱分類器組合成一個最優(yōu)的分類器.Adaboost算法能夠反映數(shù)據(jù)不同方面權重的組合分類器,但是該方法對異常點非常敏感,不適合噪音較多的數(shù)據(jù)集.
數(shù)據(jù)集來自UCI數(shù)據(jù)庫中的Mushroom數(shù)據(jù)集,包括8 124條樣本和23個特征變量,如表1所示.對數(shù)據(jù)進行數(shù)值化處理,并用眾數(shù)填充缺失數(shù)據(jù),其中class用指標{0,1}表示蘑菇是否有毒[10].
表1 蘑菇特征變量屬性
本數(shù)據(jù)集包含因變量class和其余22個自變量,自變量全為定性變量.通過變量重要性排序,可以篩選出對結果呈現(xiàn)顯著影響的變量,使得模型更方便、更高效.本文采用RandomForest特征選擇的方法,篩選出重要變量如圖3所示.
圖3 特征重要性排序
在蘑菇的22個特征中,結合重要性排序和以往學者對蘑菇毒性判斷的依據(jù),選擇如下5個特征作為模型的輸入變量:孢子印顏色、環(huán)的數(shù)量、菌褶、內菌幕顏色和氣味.很多文獻均已記載,這5個特征對于區(qū)分蘑菇是否有毒具有更明顯的作用.其中,新鮮的蘑菇孢子印顏色鮮艷,其中紫色的蘑菇常有劇毒,如毒蠅鵝膏(Amanita muscaria)、毒紅菇(Russula emetica)、小毒紅菇(Russula fragilis)等[2].王鑫[11]指出,毒蘑菇從形狀看來,有菌環(huán)、菌托者一般有毒,如鵝膏屬,菌柄上同時有菌環(huán)和菌托.菌褶剖面為逆兩側形的蘑菇多數(shù)有毒,如毒鵝菌的菌褶離生和不等長[5].有毒的蘑菇通常氣味怪異,有麻、苦、辣、澀、腥等味道,如毒紅菇(Russula emetica)和紅褐乳菇(Lactarius rufus)[13].
基于該問題屬于分類問題,采用準確率(Accuracy)、召回率(Recall)、綜合評價指標F1-score和AUC作為模型衡量的準則,具體公式如下:
在分類任務中經(jīng)常會使用一些評價指標,上述公式中,TP表示模型預測為正例,但實際為正例的個案數(shù);FP表示模型預測為正例,但實際為負例的個案數(shù);TN表示模型預測為負例,但實際為負例的個案數(shù);FN示模型預測為負例,但實際為正例的個案數(shù)[14].
ROC是接收者操作特征曲線.ROC曲線是橫坐標為假正類率(False Positive Rate,F(xiàn)PR),即錯誤分類的負樣本個數(shù)占負樣本總數(shù)的比例,縱坐標為真正類率(True Positive Rate,TPR),即正確分類的正樣本個數(shù)占正樣本總數(shù)的比例.AUC是ROC曲線下的面積,在基于ROC的標量型度量下,保留了ROC的眾多優(yōu)點[15].AUC越大代表分類器的分類性能越好.
將數(shù)據(jù)進行五折交叉驗證,最終結果如表2所示,在模型評價標準Accuracy、Recall、F1-Score、AUC中,采用Stacking框架的模型在上述評價標準中均比弱分類器有更好的效果.Stacking、RandomForest、GradientBoost、AdaBoost這些模型的準確率分別是99.59%、97.35%、98.93%、95.73%,Stacking模型相比AdaBoost模型在準確率方面提升4.03%.4種模型在召回率上分別是99.14%、95.71%、98.98%、92.44%,Stacking模型相比較AdaBoost模型在召回率方面提升7.25%.4種模型在F1-score上分別是99.57%,97.21%,98.89%,95.48%,Stacking模型相比AdaBoost模型在F1-score方面提升4.3%.4種模型在AUC上分別是99.57%、97.30%、98.93%、95.66%,Stacking模型相比AdaBoost模型在AUC方面提升4.09%.
表2 不同分類模型性能對比
本文將傳統(tǒng)分類方法和stacking集成學習的方法做對比,該方法具有更高的準確率,有較強的實用性,能夠幫助識別蘑菇毒性,減少每年因蘑菇中毒而致死致病的事故,在一定程度上加快農(nóng)業(yè)智能化發(fā)展.本文首先對將預處理后的數(shù)據(jù)經(jīng)過變量重要性排名,篩選出對蘑菇毒性有重要影響的變量,并將其和歷史研究成果作對比[2],得證氣味、孢子顏色、菌褶、內幕菌顏色等確實具有顯著影響.綜合對比RandomForest、GradientBoost、AdaBoost和Stacking,其中Stacking方法的準確率、召回率、F1-score和AUC都是最高的