錢亮亮
(安徽財經大學管理科學與工程學院,蚌埠233030)
植物葉形是植物葉片識別的重要特征,在植物葉片識別研究的初級階段就是使用植物葉形作為分類的主要依據。隨著植物分類識別學科的不斷發展,基于植物葉片的識別技術也更加日趨完善。
植物葉片蘊含著大量的種屬信息,2003 年以來,研究人員展開了對葉形特征的提取和葉片圖像識別分類等研究。文獻[1]給出了基于多特征降維的植物葉片識別方法,將葉片高維特征數據降低到低維空間進行分類識別,模型的平均識別準確率達90%左右。文獻[2]在卷積神經網絡研究葉片識別的基礎上,考慮了葉片邊際形狀的影響,提出了基于雙路卷積神經網絡的植物葉片識別模型,在實驗中有效避免了因葉片邊際形狀而造成的識別錯誤。
機器學習是一門涉及統計學、算法學等多領域的交叉學科,它專門研究計算機如何模擬或實現人類的學習,以獲取新的知識或技能,并不斷改善自身的功能。本文將以機器學習中的隨機森林算法應用于植物葉片分類識別領域,以Leaf 數據集為研究對象,對數據進行預處理,構建隨機森林,預測了相應葉片的所屬類別。
早在1966 年,就已經有了決策樹算法的概念。直到1979 年,J.R.Quinlan 才給出了ID3 算法的原型。1993 年,Quinlan 進一步拓展了ID3 算法,改進為C4.5算法,成為機器學習的十大算法之一。ID3 的另一個分支是分類回歸決策樹算法(Classification and Regression Tree,CART)。構造一棵決策樹的關鍵是選擇合適的結點分裂特征。以上三類的選擇指標各有不同,ID3基于信息增益(Information Gain),C4.5 基于信息增益率(Information Gain Ratio),而CART 則是基于基尼指數(Gini Index)。本文僅對主要用于預測的CART 決策樹算法進行介紹。
CART 不同于ID3 和C4.5 的是,CART 分類回歸樹是一種二叉決策樹。CART 不但支持整體預測,也同樣支持局部模式的預測,并有能力從整體中找到模式,或依據模式組合成一個整體。因而,CART 決策樹在預測中的應用十分普遍。CART 以基尼指數作為選擇結點分裂特征的指標,基尼指數越小體現出集合中被選中的樣本分錯的概率越小,即純度越高。假定樣本集合為P,則基尼指數表示為:

pk表示選中的樣本屬于k 類別的概率,(1- pk)表示被分錯的概率。基于特征集A 中的特征a 劃分樣本集合后:

其中Pi表示P 中特征a 取值為i 的樣本子集。計算以每一個特征取值作為劃分點,樣本集合P 劃分后的子集純度Gini(P,aj)(aj表示特征a 的所有取值),從所有的Gini(P,aj)中篩選出最小的劃分,這個劃分點就是特征a 對樣本集合P 的最優劃分點。
隨機森林是基于Bagging 有放回地從樣本集中重采樣選出一定樣本的將決策樹作為基分類器的集成學習算法。重復v 步采樣,得到v 個決策樹分類器。將數據放入分類器中,并根據投票機制選出最終投票結果。分類問題一般由決策樹投票確定最終分類,而回歸問題一般由其平均值作為最終結果。
隨機森林的構造過程如下:
(1)假設有N 個樣本,有放回的隨機選擇N 個樣本。選擇好的N 個樣本用于訓練一個決策樹,作為決策樹根結點的樣本。
(2)當每個樣本有M 個特征時,在決策樹的每個結點分裂時,隨機從M 個特征中選擇m 個特征,且m< (3)決策樹形成過程中,每個結點按照(2)來分裂,直到其無法繼續分裂為止(樣本子集為空或者歸于同一類)。 (4)重復(1)、(2)、(3),構造v 棵決策樹,各個決策樹相互獨立,形成了隨機森林。 本實驗的數據來源于UCI 數據集中的Leaf 數據集,樣本總數有340 個,共16 列,實驗數據無缺省值(N/A),噪聲程度小。 模型的輸入信息為偏心距(Eccentricity)、縱橫比(Aspect Ratio)、延伸率(Elongation)、堅固性(Solidity)、隨機凸性(Stochastic Convexity)、等周因子(Isoperimetric Factor)、最大壓痕深度(Maximal Indentation Depth)、淺色(Lobedness)、平均強度(Average Intensity)、平均對比度(Average Contrast)、平滑度(Smoothness)、第三時刻(Third Moment)、均勻性(Uniformity)以及熵(Entropy)。模型的輸出信息是葉片識別分類的類別結果(Class),即1-36(包括1 和36)之間的某一整數。 本實驗的編程環境是Anaconda 3,編程語言是Python 3。 由于Leaf 數據集中的原始數據并無缺省值,且均已作量化處理,故僅需作簡單預處理即可。本實驗首先將實驗數據以Excel 軟件打開;其次,刪除對實驗無影響的樣品編號(Specimen Number)列,再將類別(Class)列轉移至最后一列,便于模型的構建及求解;最后利用Python 編寫str_column_to_float()函數,將輸入數據的數據類型轉換為浮點型。預處理后的部分數據如表1 所示。 本實驗利用Python 機器學習Scikit-Learn 包中的sklearn.ensemble.RandomForestClassifier 模塊,建立了隨機森林模型。 部分參數設置如下: max_depth:決策樹的最大深度,設置為10 min_size:子樹的最小規模,設置為1 n_estimators:決策樹的個數,設置為200 random_state:控制模型的隨機狀態,設置為37 test_size:測試集占數據集的比率,設置為0.3 cv(Cross Validation):交叉驗證的折數,設置為8 表1 預處理后的葉片識別實驗數據 (1)實驗模型的縱向評估 精確率(Precision Rate)、召回率(Recall Rate)和F1值(F1-Measure)可以作為有效衡量分類模型優劣的指標。精確率表示分類模型中真正的正樣本在預測的正樣本中所占的比例;而召回率表示正樣本中被預測正確的比例,F1 則是精確率與召回率的調和平均值。假設TP、FP、TN 和FN 分別表示真正類、假正類、真負類和假負類樣本的個數,F1 的度量一般用Fβ表示,精確率以P 表示,召回率用R 表示,則其計算公式如下: 其中β 為權重因子。當β=1 時,精確率與召回率的權重是一致的,即為F1。 表2 利用測試集給出了基于以上三類指標的部分葉片類別的分類報告,分類報告表明:該模型加權后的精確率、召回率和F1 分別為82%、77%和77%,模型的可靠性較高。 表2 分類報告 混淆矩陣(Confusion Matrix,也稱誤差矩陣)也是衡量分類模型準確度中最基本、最直觀、比較簡單的方法。本實驗中圖1 通過matplotlib 可視化的方法,將數據前30 個類別的混淆矩陣顯示出來。根據可視化的結果,對角線處的值大且數據集中于對角線處,說明分類準確率較高。 (2)實驗模型的橫向評估 均方根誤差(RMSE,又稱標準偏差)是觀測值與真實值偏差的平方和觀測次數n 比值的平方根。實際實驗中,觀測次數n 是個有限值,且真值只能用最佳值來替代,均方根誤差對某一組測量的特大或特小誤差反應異常靈敏,因而均方根誤差能夠很好地反映出測量的精度。RMSE 的計算公式如下: RMSE 值越小,說明測量精度越高。本實驗中將分別利用四種機器學習算法對測試數據進行回歸預測,計算并對比分析它們的RMSE 值,以達到模型準確性評估的目的。結果如表3 所示。 圖1 混淆矩陣 表3 回歸預測模型的RMSE 值 表3 第四項RF Regression 的RMSE 值最小,表示隨機森林模型預測的準確性明顯優于其他三種算法。 (3)特征重要性度量 本實驗利用RandomForestClassifier.feature_importances_方法,將14 個輸入的特征信息進行重要性度量排序,并根據排名前九的特征信息繪制出波長圖(WaveLength Figure)如圖2 所示。 由圖2 可以看出,排名前三的特征有偏心距(Eccentricity)、縱橫比(Aspect Ratio)、熵(Entropy),它們對葉片識別分類的影響最大。因此,在葉片識別分類的過程,要重點關注葉片的這些指標。 圖2 重要特征波長圖 本文將隨機森林算法應用于植物葉片識別領域,選擇來自于UCI 數據集中的Leaf 數據,對數據預處理并構建隨機森林進行預測分析,然后利用精確率、召回率等指標驗證了模型的可靠性,最后對特征重要性進行排序并分析了重要特征對實驗的影響。本文的特征數量較少,結點分裂時特征選取的隨機性較差,仍具有一定的局限性,改進后的模型還可結合卷積神經網絡等方法應用于植物葉片識別領域,效果會更好。2 基于隨機森林的植物葉片識別實驗
2.1 數據預處理
2.2 實驗建模

2.3 實驗結果分析






3 結語