左爽 李文静 陈鹏 徐会杰
关键词:玉米;病虫害治理;方案决策;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 算法不仅能够保证处理不同容量数据集时的精确度,而且通过简化运算量,可以大幅提高运行速度。此外,该算法还能有效应对数据缺失的情况,提高治理效率。