基于Stacking集成学习的蘑菇毒性判别研究
2022-09-16杨冰清
杨冰清,高 珊①
(阜阳师范大学 数学与统计学院,安徽 阜阳 236037)
0 引言
毒蘑菇又称毒菌,属大型真菌类,部分品种的毒性死亡率较高,其中肝毒性鹅膏菌品种中毒病死率高达80%,蘑菇中毒已经成为我国食源性疾病中病死率最高的一类急症[1].目前各级医护人员和广大群众对于蘑菇毒性种类的认识和区别尚没有得到有效的提高,我国也曾多次出现地域性、季节性野生蘑菇中毒致死的事件.对于蘑菇毒性,从根本上提高鉴别能力,预防误食误采,是有待解决的问题.
目前蘑菇毒性判别主要通过外形辨别以及通过生化分析2种手段[2].基于“互联网+”在医学数据上的良好应用,机器学习、神经网络等在多学科领域取得很好的研究成果,从本质上来说对于蘑菇毒性判别问题也就是一个多维数据的非线性分类问题[3].
肖杰文等[4]对蘑菇图像进行图像特征提取,对比LeNet-5、VGGNet-16、AlexNet和ShuffletV2模型,得到ShuffleNetV2参数小、运行速度快且ShuffletNetV2的Top-1和Top-5的准确度最高.刘斌等[5]采用基于贝叶斯分类模型对蘑菇数据的特征学习,从而较为准确地识别蘑菇的毒性,将准确率控制在98.48%.樊哿等[3]建立C-SVM模型通过定步长探索法确定最优参数,并将其和神经网络、决策树等分类器进行性能对比,最终得出该方法准确度高、操作方便和实用性强.
本文根据以往研究学者对蘑菇毒性判别的主要依据和机器学习算法特征重要性排序相结合的方法,筛选出对蘑菇毒性判别有显著影响的特征.将该特征应用于以随机森林算法、梯度提升算法和自适应提升算法为基分类器所构建的Stacking的模型.通过对比准确度,召回率、F1-score和AUC(受试者工作特征曲线下的面积),发现基于Stacking的模型在上述各方面的效果相比较基分类器都有最好的结果.
1 相关算法介绍
1.1 Stacking
Stacking是目前机器学习领域热门研究方向之一,将多个学习器的结合并使用某种规则将每个学习器的结果进行再训练,从而获得比单个学习器更好的结果.其中Stacking是由Worlpert[6]提出的学习框架,是一种集合学习技术,其中包括2个主要工作,一是初级学习器的构建,二是多分类器的融合集成[7].因为多个分类模型往往是不同的算法,所以其框架往往是异构的.其中本文模型的训练和测试过程如图1所示.
图1 本文stacking模型框架
1.2 RandomForest
RandomForest是在以决策树为初级学习器构建Bagging集成的基础上,进一步在决策树训练过程中引入随机属性的方法[8].该算法是将决策树进行集成,最终结果是由若干个决策树进行投票产生,其流程如图2所示.随机森林旨在在控制运算量没有显著提高的情况下,提高最终精度,并且不需要提前进行变量筛选,对共线性不敏感,对缺失数据和非平衡数据更加友好.
图2 随机森林流程框架
1.3 GradientBoost
GradientBoost算法建立在数据优化的基础上,其每次训练都是对之前建立模型的损失函数的梯度下降,即在N次训练中将上轮弱分类器的负梯度作为损失函数下降的方向,在N次循环中,模型的损失函数呈下降趋势,从而达到函数空间的最优解.
1.4 AdaBoost
AdaBoost算法的思想是由一系列加权的弱分类器组合成一个强分类器[9].最初,每个样本具有相等的权重,在N次训练中样本的权重也进行改变,其中错分类样本在下次训练中被赋予更大的权重,相反正确分类的样本前的权重减少,由此将训练的弱分类器组合成一个最优的分类器.Adaboost算法能够反映数据不同方面权重的组合分类器,但是该方法对异常点非常敏感,不适合噪音较多的数据集.
2 主要内容
2.1 蘑菇数据集
数据集来自UCI数据库中的Mushroom数据集,包括8 124条样本和23个特征变量,如表1所示.对数据进行数值化处理,并用众数填充缺失数据,其中class用指标{0,1}表示蘑菇是否有毒[10].
表1 蘑菇特征变量属性
2.2 变量重要性排序
本数据集包含因变量class和其余22个自变量,自变量全为定性变量.通过变量重要性排序,可以筛选出对结果呈现显著影响的变量,使得模型更方便、更高效.本文采用RandomForest特征选择的方法,筛选出重要变量如图3所示.
图3 特征重要性排序
在蘑菇的22个特征中,结合重要性排序和以往学者对蘑菇毒性判断的依据,选择如下5个特征作为模型的输入变量:孢子印颜色、环的数量、菌褶、内菌幕颜色和气味.很多文献均已记载,这5个特征对于区分蘑菇是否有毒具有更明显的作用.其中,新鲜的蘑菇孢子印颜色鲜艳,其中紫色的蘑菇常有剧毒,如毒蝇鹅膏(Amanita muscaria)、毒红菇(Russula emetica)、小毒红菇(Russula fragilis)等[2].王鑫[11]指出,毒蘑菇从形状看来,有菌环、菌托者一般有毒,如鹅膏属,菌柄上同时有菌环和菌托.菌褶剖面为逆两侧形的蘑菇多数有毒,如毒鹅菌的菌褶离生和不等长[5].有毒的蘑菇通常气味怪异,有麻、苦、辣、涩、腥等味道,如毒红菇(Russula emetica)和红褐乳菇(Lactarius rufus)[13].
2.3 评价指标
基于该问题属于分类问题,采用准确率(Accuracy)、召回率(Recall)、综合评价指标F1-score和AUC作为模型衡量的准则,具体公式如下:
在分类任务中经常会使用一些评价指标,上述公式中,TP表示模型预测为正例,但实际为正例的个案数;FP表示模型预测为正例,但实际为负例的个案数;TN表示模型预测为负例,但实际为负例的个案数;FN示模型预测为负例,但实际为正例的个案数[14].
ROC是接收者操作特征曲线.ROC曲线是横坐标为假正类率(False Positive Rate,FPR),即错误分类的负样本个数占负样本总数的比例,纵坐标为真正类率(True Positive Rate,TPR),即正确分类的正样本个数占正样本总数的比例.AUC是ROC曲线下的面积,在基于ROC的标量型度量下,保留了ROC的众多优点[15].AUC越大代表分类器的分类性能越好.
2.4 模型性能对比
将数据进行五折交叉验证,最终结果如表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 不同分类模型性能对比
3 结语
本文将传统分类方法和stacking集成学习的方法做对比,该方法具有更高的准确率,有较强的实用性,能够帮助识别蘑菇毒性,减少每年因蘑菇中毒而致死致病的事故,在一定程度上加快农业智能化发展.本文首先对将预处理后的数据经过变量重要性排名,筛选出对蘑菇毒性有重要影响的变量,并将其和历史研究成果作对比[2],得证气味、孢子颜色、菌褶、内幕菌颜色等确实具有显著影响.综合对比RandomForest、GradientBoost、AdaBoost和Stacking,其中Stacking方法的准确率、召回率、F1-score和AUC都是最高的