左爽 李文靜 陳鵬 徐會杰
關鍵詞:玉米;病蟲害治理;方案決策;C4.5 算法
中圖分類號:TP399 文獻標識碼:A 文章編號:1006-8228(2023)11-120-04
0 引言
玉米是我國當前種植面積最大的糧食作物[1]。玉米病蟲害的治理,傳統方案分為人工篩選和機器決策。當病蟲害的種類、數量或感染面積呈現不規則的區域性分布時,傳統方法無法實現對病田網格的精細化管理,導致治理效果差、成本大幅提高[2-3]。運用基于深度學習的決策樹算法,將病田細分為N*N 塊單元格,經過提取單元格內的玉米生長周期、病蟲代數、玉米品種等特征后,進行訓練,對病田感染情況做出分類,同時基于單元格細化方案,進一步精確匹配農藥品種與農藥噴灑量[4-5]。相比傳統方法,可以顯著降低治理成本、提高防治效果。
針對傳統C4.5 算法在玉米病蟲害治理方案選擇中面臨大容量數據集時表現出精確度低、時效性差等問題[6],本文基于C4.5 算法提出一種改進的決策算法。該算法利用K-means++算法對測試數據集進行離散化處理,在構建包含六種常見玉米病蟲害數據集的過程中,生成二個以上的聚類中心來處理連續性數值,并以標簽值出現的概率作為權重,生成測試集缺失值。目標函數值選用F1-Score 值和AUC 值,從而對測試集和聚類中心數量進行優化迭代。最終采用投票方式選擇最優解進行治理方案的決策。在不同容量的數據集中,該算法保證了選擇治理方案的精確度和高效性,特別是當測試集出現缺失值時,其表現優異。
1 C4.5 算法原理
C4.5 算法的核心原理是針對輸入的樣本信息,采用信息增益率(GainRatio)最高的特征與標簽值作為子樹節點,構建決策樹,并將測試集樣本與決策樹進行匹配,返回最終解決方案。訓練集樣本出現缺失值時,會抽出缺失值樣本進行信息增益率計算,在特征節點選取完成后,將含有缺失值的樣本按特征概率分配權重,劃分進子樹中。
設S 為訓練樣本集,它包括n 個類別的樣本,樣本特征的標簽值用Ci 表示,以下列出C4.5 算法的主要數學計算公式。
選取Ration 最大的特征作為子樹節點,并選取特征標簽值作為下一級子樹節點。重復以上步驟,直到決策樹構建完成。
2 改進C4.5 算法
2.1 數據集制作
數據集樣本取自2021 年7、8 月采集于河南省洛陽市宜陽縣李王屯村等地的玉米葉片數據,針對缺少的病蟲害樣本,采用中國農技推廣信息服務平臺發布的部分數據進行補充。最終數據集共包括多個玉米品種針對玉米薊馬、黏蟲等病蟲害的6000 多條治理方案。數據集按照60%、20%、20% 的比例分為初次訓練集、迭代訓練集、測試數據集三組,保存為csv 文件。
2.2 數據預處理算法改進
C4.5 算法中傳統的離散化處理方式是對屬性值進行升序排序,挑選信息增益最大的點作為二分點,不僅包含大量耗時的對數運算,而且面對不同周期以及藥物需求不同的病蟲害時,無法滿足對精確度的要求。在這里,本文保留缺失值并基于K-means++聚類算法對數據值進行離散化處理[7]。具體步驟為:
步驟1 隨機選取一個樣本的標簽值作為第一個聚類中心M0;
步驟2 計算所有標簽值與第一個聚類中心的距離,并取距離最大的標簽值作為第二個聚類中心點M1;
步驟3 計算所有標簽值與距離最近的聚類中心的距離,并取距離最大的標簽值作為下一個聚類中心點M2;
步驟4 重復步驟3,直至所有初始中心點篩選完畢;
步驟5 用生成的K 個聚類中心點替代K-means算法隨機生成的初始中心點。
2.3 測試集缺失值處理改進
在測試集具有缺失值時,C4.5 算法采用當前特征出現頻率最高的標簽值對缺失值進行補充,會出現最終分類結果會趨向特定結果的問題。參考C4.5 算法對于訓練集缺失值的處理方式,本文采用標簽出現的概率作為權重,將缺失值補充至訓練集中,并采用投票方式選取最優解。其填補缺失值原理如下:
2.4 基于梯度的訓練集優化
由于初次訓練集可能無法全面地反映整個數據集的特征和規律,導致訓練算法出現過擬合現象。為提高訓練算法效果,本文將數據集分為初次訓練集、迭代訓練集、測試數據集三組,并每次從迭代數據集中抽選x 條樣本對初次訓練集進行替換,如果AUC 值更高則進行保存。在此基礎上,算法不斷調整聚類中心的數量,以提高算法的聚類效果。其部分實現偽代碼如下:
3 試驗與結果分析
3.1 評價指標
本文通過F1-Score 值、AUC 值兩個指標對算法進行綜合評價,其中F1-Score 值是精確率與召回率的調和平均數,AUC 值是ROC(以FPR 假陽率為X 軸坐標,TPR 真陽率為Y 軸坐標)曲線下的面積。公式如下:
其中,TP、TN 為預測為正例、負例時,算法預測正確的數量,FP、FN 為預測為正例、負例時,算法預測錯誤的數量。
3.2 檢測效果對比與分析
本文選取C4.5 算法、改進C4.5 算法、CART 算法對1000 條數據集進行檢測,分別計算3 種算法的F1-Score 值評價指標值(如表1 所示),并作如下分析:
⑴ C4.5 算法采用的悲觀剪枝方法,用遞歸的方式從底向上針對每一個非葉子節點,評估用一個最佳葉子節點去代替這棵子樹是否有益。該算法通過訓練數據集上的錯誤分類數量來估算未知樣本上的錯誤率,所以該算法在數據集容量較小的情況下F1-Score 值與改進C4.5 算法相近,但高于CART 算法。
⑵ CART 算法采用二分遞歸分割的技術,采用GINI 值作為分裂節點的依據,運用一種“基于代價復雜度的剪枝”方法進行后剪枝,故而在低樣本量的情況下,該算法受限于樣本數據過少,導致其決策的準確度降低,在判斷病蟲害的F1-Score 值上明顯低于改進C4.5 算法。
⑶ 由表1 可知在針對銹病的治理方案時三種算法的準確率發生明顯下降,處于70%-72% 區間中,這可能與數據集中關于銹病的特征值不夠,算法難以匹配檢測目標有關。
⑷ 在針對黏蟲的治理方案時,改進C4.5 算法的F1-Score 值明顯高于C4.5 算法和CART 算法。這是因為在對不完整的黏蟲樣本數據(即缺失值)處理時,改進C4.5 算法對訓練集缺失值數據進行按權分配生成,并采用投票方式選取最優解。CART 算法此時F1-Score值最低,是由于若采用代理特征分裂(surrogatesplits)的方式進行處理,會造成計算量過大且提升有限的問題,故此時CART 算法未對缺失值進行處理。
3.3 性能對比與分析
為綜合評價算法優劣,選擇測試集中玉米蚜的部分數據(100 條)進行低數據情況下的檢測,檢測完成后,三種算法的檢測結果及性能指標如表2 所示。
AUC 值是衡量算法分類性能的重要指標。低數據量的情況下:從整體決策的精確度來看,改進C4.5算法的準確性最高,匹配各種治理方案的AUC 值指標達到了0.7308。結合AUC 值來看,改進C4.5 算法整體的決策正確率相比其他兩種算法要高。
為了增強可信度,選擇測試集中的部分數據(5000 條)進行高數據量情況下的檢測。
由表3 可知,當TPR=0.03 時,三種算法開始出現明顯區別,且傳統C4.5 算法AUC 值明顯小于改進C4.5算法與CART 算法。且改進C4.5 算法的AUC 值為0.9584,可知該算法在大數量上的預測效果較為優異。
將兩次測量數據匯總并記錄運行時間,如表4所示。
由表4 可知改進C4.5 算法在高數據量條件下時間為21.79s,相比原C4.5 算法的40.35s 具有明顯提升。
4 結論
針對傳統病蟲害治理決策的C4.5 算法存在的精確度不足、大數據量處理效率低以及測試數據值缺失問題,本文提出了一種改進C4.5 算法。該算法采用K-means++算法對數據進行離散化處理,并對訓練集缺失值數據進行按權分配并生成,參考遺傳算法對訓練集與聚類中心點進行優化處理。實驗結果表明,改進C4.5 算法在處理小數據量時,其F1-Score 值相較于CART 算法和C4.5 算法分別提高了5.53% 和3.33%。同時,相較于C4.5 算法,該算法的運行時間提高了2.92s。處理高容量數據集時,該算法的AUC 值指標相對于CART 算法和C4.5 算法分別提高了0.0426 和0.1011。由此可見,改進的C4.5 算法不僅能夠保證處理不同容量數據集時的精確度,而且通過簡化運算量,可以大幅提高運行速度。此外,該算法還能有效應對數據缺失的情況,提高治理效率。