《武汉工程大学学报》  2021年04期 455-461   出版日期:2021-08-31   ISSN:1674-2869   CN:42-1779/TQ
基于土壤数据广度与深度模型的作物推荐算法


农业大数据是运用大数据理念、技术和方法解决农业或涉农领域数据的采集、存储、计算与应用等一系列问题的技术,是大数据理论和技术在农业上的应用和实践[1]。近年来,深度学习方法在农业领域的应用取得巨大成功,广泛应用于科学施肥、产量预测和经济效益预估[2]等领域。根据土壤信息进行数据挖掘,并在此基础上提出区域性作物的种植建议,不仅可以促进农作物生长从而带来经济效益,还可以改善土壤肥力,促进可持续发展[3]。根据土壤种类、土地的类型,以及土壤养分元素[如:氮(N)、磷(P)、钾(K)、有机质(OM)等]的含量建立模型,分析并且给出精准预测,可以形成科学的种植方案。研究表明,氮、磷、钾在植物根茎的重吸收率分别为63.6%、56.8%、50.7%,是促进作物生长的主要营养元素[4]。现有的作物推荐算法均是基于土壤养分元素等数值域数据来构建模型的[5],这极大地忽略了土壤类型(如:黄绵土、潮土、水稻土等)、地块类型(如:坡地、平地、梯田等)等文本域数据的作用。这些文本域数据是土壤的基本物理性质,可以反应土壤中不同大小直径成土颗粒的组成状况[6]。另外,不同质地土壤的蓄水导水、保温导热、耕性、微生物种类及其活动等性能的差异也能影响作物生长[7]。现有数值型作物推荐算法在农业生产决策领域已取得良好成效。例如,随机森林支持向量机作物推荐算法[8](random forest support vector machine,RFSVM)采用随机森林方法筛选特征最优子集,然后使用支持向量机进行作物推荐。然而中华土壤数据库中土壤数据包含了数值域和文本域数据。多域特性的土壤数据导致现有作物推荐方法无法充分挖掘土壤数据之间的内在关联造成模型精度较低。一般来说,根据所学习数据类型的不同推荐算法[9]可分为学习数值域特征的数值型推荐算法和学习文本域特征的文本型推荐算法。常见数值型推荐算法:深度神经网络(deep neural networks,DNN)[10]、支持向量机(support vector machine,SVM)[11]等应用于土壤作物推荐中虽然可以高效的学习土壤数值域高阶特征组合,然而由于没有考虑土壤文本域数据,这些算法的低阶特征组合能力通常较弱;现有文本型推荐算法如逻辑回归(logistic regression,LR)[12]、因子分解机(factorization machines,FM)[13]等应用于作物推荐可以通过低阶特征组合学习文本特征之间的相关性,但是没有结合数值域特征,从而导致高阶特征组合能力较弱;除此之外,基于独热编码(one-hot encoding)[14]的文本域数据处理方式会导致样本特征非常稀疏,这极大的增加了融合土壤数值域与文本域数据进行推荐的难度。传统推荐算法可以很好地学习文本域特征之间的低阶交叉,深度学习推荐算法在高阶特征交叉上表现良好,结合二者优点的广度与深度模型[15]通过组合数值域与文本域模型联合训练的方法在具有多域特性的数据上表现出较好的性能。但是应用在作物推荐领域还存在以下问题:一是土壤数据存在残缺、重复、不平衡的问题,直接利用这些数据训练推荐模型会降低模型的精度和适用性;二是广度与深度模型采用二分类激活函数进行决策,无法应用于多分类土壤作物推荐。针对上述问题,提出了一种基于土壤数据广度与深度模型的作物推荐算法。首先对残缺、重复和不平衡的土壤数据进行数据预处理,其次将土壤文本域数据经过独热编码转化成稀疏的向量特征。然后对文本域向量特征进行向量嵌入,同时采用广义线性回归[16]进行特征组合来提取文本域特征相关性,并通过深度神经网络对级联的文本域特征和数值域特征进行自动组合提取高阶特征关系;最后改进多分类激活函数并通过联合训练的方式加权得出预测结果。通过逻辑回归与深度神经网络组合的方法训练多域特性的土壤数据从而提高模型的精度。1 SWD作物推荐算法基于土壤数据广度与深度模型(soil width and depth,SWD)的作物推荐算法的网络结构如图1所示,图中N、P、K、OM分别表示土壤数值域数据中氮、磷、钾、有机质的含量。LT、SL、PL分别表示土地类型、土壤类型和历史种植作物的文本域数据。原始多域土壤数据首先在数据增强层进行人工数据预处理并且采用合成少数类过采样技术[17](synthetic minority oversampling technique,SMOTE)对数据进行增强,然后再通过多域数据编码层把增强后的数值域数据经过累计分布函数(cumulative distribution function,CDF)映射到(0,1)进行归一化。文本域数据在独热编码后通过向量嵌入的方法转化成低维稠密的特征向量,该特征向量在多域数据融合层与数值域向量级联。级联向量输入到深度部分,经过1 024,512,256大小的隐藏层,通过数值域数据与文本域数据的特征自动交叉学习高阶的特征组合。在广度部分把LT、ST分别与PT联合形成交叉积,学习文本域特征的相关性。采用联合训练的方式在反向传播的同时作用于这两部分模型,单个模型的权重更新会受到广度部分和深度部分对模型训练误差的共同影响,最后通过Softmax函数实现多分类的作物推荐。1.1 数据处理由于土壤数据具有残缺、重复和不平衡的特性,直接输入会影响模型的性能。对于残缺土壤数据,采取均值补齐的方法进行处理,对于重复土壤数据直接删除,对于不平衡数据,采用一种基于随机过采样算法改进的方案进行处理。由于随机过采样采取简单复制样本的策略来增加少数类样本,这种方式容易产生模型过拟合的问题,即模型学习到的信息过于特殊而不够泛化。针对这一问题,采用SMOTE算法对数据进行处理,其基本思想是对少数类样本进行分析并根据合成新样本添加到数据集中,具体如图2所示。[ b ][ a ][xi][xi][相似距离]图2 数据增强过程图:(a)计算少样本集,(b)取样合成新样本Fig. 2 Diagrams of data enhancement process: (a) small sample set by calculation, (b) synthesizing new sample by sampling算法流程如下:1)对于少数类中每一个样本,以欧氏距离为标准计算它到少数类样本集[Smin]中所有样本的距离,得到其k近邻。2)根据样本不平衡比例设置一个采样比例以确定采样倍率N。对于每一个少数类样本,从其k近邻中随机选择若干个样本,假设选择的近邻为[xn]。3)对于每一个随机选出的近邻[xn],分别与原样本按式(1)构建新的样本。[xnew=x+rand(0,1)·|x-xn|] (1)1.2 广度模型广度部分是广义的线性模型,采用正则化引导方法(follow the regularized leader,FTRL)来优化逻辑回归模型。FTRL是一种在处理凸优化问题上性能非常出色的梯度下降的模型优化方法。逻辑回归模型如式(2)所示:[y=wTx+b] (2)其中[y]是模型的预测值,即作物被推荐种植的概率。[w]是d维权重向量,[w=[w1,…,wd]],表示土壤文本特征与作物关联权重。[x]是土壤文本特征,它是一个d维的向量,[x=[x1,...,xd]]是每个特征对应的向量,d是特征的数量,[b]是模型的偏差。其目标函数如式(3)所示:[y=soft max(ywide)] (3)该目标函数表示预测种植的作物。在推荐算法中文本在计算机中的表示一般采用独热编码的方式。例如,土地的类型、土壤类型、作物种类3个文本特征使用独热编码表示,如表1所示。表1 独热表示示例Tab. 1 One-hot representation example[类型 特征值 独热表示 土壤类型 [“黄绵土”,“水稻土”] [01,10] 土地类型 [“川平地”,“梯田”,“坡地”] [001,010,100] 作物种类 [“水稻”,“小麦”,“玉米”,“黄豆”] [0001,0010,0100,1000] ]独热表示法是特征处理的一种稀疏表示方法,均用0、1矩阵表达计算机中的文本特征。当表示水稻种植在梯田上的水稻土中的独热编码为:[[1,0],[0,1,0],[0,0,0,1]]。广度模型处理土壤数据的文本特征时,采用交叉积变换来提取土壤数据文本域特征之间的相关性。其定义如式(4)所示:[?k(x)=i=1dxck,ii,ck,i∈{0,1}] (4)其中,[?k(x)]表示输入土壤文本特征[x]的交叉积特征,[xck,ii]表示第[i]维土壤文本特征[x]是否参与第[k]个交叉特征的构造,[k]表示第[k]个交叉特征,[d]表示文本特征[x]的维度。[ck,i]是一个布尔型变量,0表示第[i]维土壤文本特征[x]未参与第[k]个交叉特征的构造,1表示参与构造。该公式用于捕获特征与特征之间的相关性。在线性模型中添加非线性项可以提高模型的精度。通过与深度模型的联合训练,经过激活函数输出最终的作物推荐。1.3 深度模型深度部分采用的是AdaGrad[18]优化的深度神经网络。因为深度神经网络模型的输入是连续而稠密的特征,因此需要对土壤数据进行数据编码处理。对于土壤信息的数值型特征,例如土壤中的养分含量:氮、磷、钾、有机质的含量通过分布损失函数进行归一化。而对于土壤类型、地块类型这些文本域特征,因为其高维稀疏的特点,在训练时在多域数据融合层嵌入向量将其转化为稠密的低维向量才能适用于深度学习训练。稠密的低维向量需要连接土壤数值型特征,作为第一个隐藏层的输入。在模型训练阶段会根据最终的损失函数反向传播进行参数更新。嵌入向量被随机初始化并根据最小化最终的损失函数来学习向量参数。这些低维稠密的向量随后在神经网络的前馈通路中被输入到隐藏层中。每个隐藏层如式(5)所示。[a(l+1)=f(w(l)a(l)+b(l))] (5)其中[l]是隐藏层的数量,[f]是激活函数,通常为Relu函数。[a(l)],[b(l)]和[w(l)]分别为[l]层的激活值、偏差和模型权重。深度部分利用神经网络表达能力强的特点进行深层特征交叉来挖掘土壤数值域与文本域数据之间的内在关联,提高模型的精度。1.4 协同训练协同训练采用广度与深度联合训练的方式结合二者各自的优点。广度模块和深度模块的组合依赖于对其输出对数几率的加权求和作为预测值,然后将预测值输入到逻辑损失函数中进行联合训练。联合训练是在训练环节同时优化广度模型与深度模型,广度部分补充深度部分的弱点,通过小批量随机优化技术同时将输出的梯度反向传播到深度和广度两部分实现。在实验中,使用FTRL算法以及正则化来优化广度部分的模型,并使用AdaGrad优化深度部分。联合训练如式(6)所示:[P(Y=1|x)=σ(wTwide[x,?(x)]+wTdeepa(lf)+b)](6)其中,[P]表示预测作物的精确度,[Y]是作物分类标签,[σ(.)]是Softmax函数,[?(x)]是特征[x]的交叉积变换,[b]是偏差项,[wwide]是所有wide模型的权重向量,[wdeep]是最终激活[alf]的权重。1.5 多分类损失函数在广度与深度模型中激活函数采用的是Sigmoid进行二分类推荐。Sigmoid 可以将一个实数映射到 (0,1) 的区间。其损失函数为二分类交叉熵损失函数,如公式(7)所示。[C=-1n[ylna+(1-y)ln(1-a)]] (7)其中[y]表示真实标签的分布,[a]表示训练后的模型的预测标签分布,交叉熵损失函数可以衡量[y]与[a]的相似性。然而由于农业场景下的作物种类众多,导致广度与深度模型不能适用于多分类的作物推荐场景。Softmax激活函数相对于Sigmoid激活函数具有多分类的特性,可以将K维的实数向量压缩(映射)成另一个K维的实数向量,其中向量中的每个元素取值都介于 (0,1) 之间,适用于多分类问题。其损失函数为多类别交叉熵损失函数,如公式(8)所示。[Li=-jti,jlog(pi,j)] (8)[Li]表示第[i]个特征点的交叉熵,[pi,j]表示第[i]个特征点是[j]作物类别的预测概率,[ti,j]表示该特征点的实际作物类别标签。即将所有概率分配给每个特征点单个类别的目标,再将整数目标值转化分类目标值。多类别交叉熵损失函数适用于Softmax激活函数的多分类场景。2 实验部分2.1 数据及实验设置算法基于TensorFlow框架,深度学习服务器中CPU为Intel 6700K,GPU为NAVIDIA GTX1080Ti。数据来源于中国主要农田生态系统的养分循环试验数据库,该数据库源于中国科学院对中国生态系统规律研究,并且对农田生态系统进行长期养分循环实验进而收集并且整理的土壤信息数据库。本文整理了该数据库中的2 512条土壤数据,其中每条数据包括土壤类型、地块类型,土壤中液态氮、速效磷、速效钾、有机质的含量和作物种类。作物种类包含中国中部以及东部常见耕地作物8种:小麦、水稻、玉米、糜子、黄豆、花生、荞麦、谷子。以6∶2∶2的比例将数据集随机分为1 884条数据的训练集、628条数据的验证集和628条数据的测试集。另外使用本课题组采集的112条土壤数据作为泛化实验的测试集。设计了4组实验来验证本文方法的性能。第1组实验比较了不同数据增强方法的性能,第2组进行了消融实验,第3组对比了现有数值型作物推荐方法和经典推荐算法,第4组实验进行了泛化能力的测试。2.2 数据预处理由于实际场景下土壤数据具有残缺、重复和不平衡的特性,因而在实验之前需要对土壤数据进行预处理,否则会影响实验的性能。用SMOTE方法进行数据平衡化处理,将8种常见耕地的实验数据保持在平均的状态。2.3 评价指标推荐算法的评价指标有精确率[P],召回率[R]和[F1]值,具体如式(9)所示。其中[Tp]为准确预测的土壤数据个数,[Fp]为模型识别到的不相关土壤数据个数,[FN]为模型没有检测到的土壤数据个数。[P=TPTP+FP×100%][R=TPTP+FN×100%][F1=2PRP+R×100%] (9)2.4 实验结果与比较为了验证所提算法的性能,分别从以下几方面进行实验:增广数据对比实验、消融实验、现有作物推荐算法对比实验。对比算法分为两类:一类是现有数值型作物推荐算法;另外一类是处理交叉特征能力较强的经典推荐算法,分别是乘积神经网络[19](product-based neural networks,PNN)和深度交叉神经网络[20](deep crossing networks,DEEP CROSS)。1)RFSVM:现有数值型作物推荐算法,利用随机森林筛选特征得到一个最优子集然后采用SVM算法进行作物预测。2)PNN:是一种经典推荐算法,对不同特征域采用内积、外积等多积操作在深度学习框架上提高模型特征交叉的能力从而提高模型的精度。3)DEEP CROSS:是一种经典深度学习推荐模型框架,采用深度多层特征交叉提高模型的精度。2.4.1 增广数据对比实验 分别以中华土壤数据库采集的2 512条原始数据、采用随机过采样技术(oversampling,OS)增强的数据以及用SMOTE方法增强的数据进行对比实验。随机过采样是对较少的类按一定比例进行一定次数的随机抽样,然后将每次随机抽样所得到的数据集叠加。图3为实验数据分布图。[ b ][ a ][ c ]图3 实验数据分布图:(a)原始数据图,(b)随机过采样增强图,(c)SMOTE增强图Fig. 3 Diagrams of experimental data distribution: (a) original data,(b) random oversampling enhancement ,(c) SMOTE enhancement在数据增强前,8种作物的种类分布不平衡并且数据量少,如图3(a)所示。采用随机过采样方法进行增强的数据本质上没有添加新数据,抽取了少数类并且将数据叠加在样本空间的分布不变,但是每个少数类的样本变多了,在图3(b)中从浅红色变成深红色。采用SMOTE方法增强的数据,在样本空间内的分布变多并且更加均衡,适合模型的训练,如图3(c)所示。对样本增强数量与模型准确度实验,实验结果如图4所示。[0 250 500 750 1 000 1 250 1 500Amount][93.092.592.091.591.090.590.0][F1 / %][SWDNO-SWDOS-SWD]图4 不同增强方法本文模型性能图Fig. 4 Model performance diagram of different enhancement methods其中,NO-SWD、OS-SWD、SWD分别表示未增强、随机过采样增强、SMOTE增强后的本文模型。横轴代表作物增强的数量,纵轴表示在增强后数据上本文模型的准确度。从实验结果可以看出,当作物种类的数量在1 300条时趋于稳定并且达到最好的效果,经过随机过采样和SMOTE方法增强后的模型达到91.2%和92.1%。经过随机过采样方法增强的数据在本文模型上提升0.4%,相较于未增强数据,采用SMOTE方法增强的方法提高了1.3%,对预测的精准度的提升更优。这是因为实际土壤数据不平衡的特点会影响模型的精确度和适用性,随机过采样技术会导致严重过拟合效果欠佳,而SMOTE平衡后的数据在模型上有更优的表现。2.4.2 消融实验 以6∶1的比例随机将中华土壤数据库提取的土壤数据分为训练集和测试集,分别在LR、DNN以及本文方法上进行测试。实验结果如表2所示。表2 消融实验结果Tab. 2 Results of ablation experiments[模型 [P] [R] [F1] LRDNN 0.8500.871 0.8410.865 0.8450.867 SWD 0.923 0.913 0.918 ]从实验结果可以看出,本文提出的方法在土壤数据集上的表现达到91.8%,比LR高7.3%,比DNN高5.1%。因为LR依赖人工选择特征和先验信息,无法进行高阶特征组合导致模型精度降低。DNN可以很好地通过特征自动交叉学习高阶的土壤数值域特征关系,但却无法融合土壤文本域信息从而造成模型精度较低。本文方法融合文本域数据与数值域数据进行作物推荐,并且使用联合训练的方法,使Wide部分训练文本特征关系反作用于Deep部分从而提高模型的精度。2.4.3 现有作物推荐算法对比实验 为了验证本文方法的性能,本小节与现有作物推荐算法以及经典推荐模型进行对比,实验结果如表3所示。表3 现有作物推荐算法对比Tab. 3 Comparison of existing croprecommendation algorithms[模型 [P] [R] [F1] RFSVMPNNDEEPCROSS 0.8790.8890.912 0.8610.8790.898 0.8700.8840.905 SWD 0.925 0.916 0.921 ]由表3可以看出,所提模型的精确度比RFSVM提高了5.1%。相比于RFSVM,本文方法融合了多域土壤数据,并且进行数值域与文本域数据间的特征交叉,从而使得模型的精度更高。本文方法分别比PNN、DEEP CROSS高出了1.6%和3.7%。因为本文算法结合了传统推荐算法优秀的低阶特征学习能力和深度学习推荐算法优秀的高阶特征学习能力,因而在土壤数据上的表现优于主流推荐模型。通过RFSVM以及经典深度学习推荐模型进行对比验证本文算法的优越性。首先相比于RFSVM,本文算法引入土壤文本域数据,并且通过挖掘土壤文本域特征之间的相关性提升预测精度。其次,RFSVM属于传统机器学习算法,在高阶特征交叉性能上有所欠缺,而本文通过传统算法与深度神经网络模型结合的方法,可以同时使模型在低阶和高阶的特征交叉上表现优秀。最后本文选取了经典深度学习推荐模型PNN、DEEP CROSS作为对比算法,在本文数据集上进行实验,实验结果表明在多域土壤数据的特征处理上,本文算法表现更佳。2.4.4 不同测试集对比实验 实验以6∶1的比例随机将中华土壤数据库提取的土壤数据分为训练集和测试集1(Test1)以及武汉工程大学采集的土壤数据作为测试集2(Test2)分别在RFSVM以及本文方法进行测试。实验结果如表4所示。表4 不同数据集测试结果Tab. 4 Test results on different data sets[模型 [F1(Test1)] [F1(Test2)] RFSVM 0.868 0.836 SWD 0.915 0.910 ]从测试结果可以看出,RFSVM方法推荐作物种类时的效果在Test1与Test2相差3.2%,而本文方法在Test1与Test2仅相差0.5%。这是因为现有RFSVM方法不能通过多层的特征交叉来提高模型的泛化能力,因此在本课题组采集的数据集上测试表现较差。3 结 论针对常见的推荐模型无法充分地挖掘多域土壤特征以及其特征关系的问题,提出基于土壤数据广度与深度模型的作物推荐算法。1)对土壤数据进行增强,获得更为均衡的土壤数据作为模型的输入;2)融合多域的土壤数据进行作物推荐,同时学习了土壤数值域数据与文本域数据的特征关系,并分析了该关系对作物推荐的作用;3)改进了多分类的激活函数,使二分类推荐模型能应用于土壤作物推荐领域。但是由于推荐任务的单一性,可能造成不能满足复杂的实际推荐场景,在后续的研究中,将综合推荐评估方法以及动态土壤数据进行多任务的推荐。