基于高光谱数据和SVM方法的土壤盐渍度反演
2018-07-25曹广溥李丙春孜克尔阿不都热合曼王文龙
池 涛,曹广溥*,李丙春,孜克尔·阿不都热合曼,王文龙
1.上海海洋大学 信息学院,上海 201306
2.喀什大学 计算机科学与技术学院,新疆 喀什 844006
土壤盐渍化是一种常见但危害巨大的土壤退化现象,会降低农作物的产量,严重时农作物无法生长而且会破坏当地生态环境。中国领土广泛,不同区域的地质、气候、领海情况不同,造成了中国盐渍土种类丰富,很难定量分析。国内外对盐渍化土壤光谱机理[1-4]和模型反演[5-8]已进行了深入研究,形成了很多研究成果,但这些成果大多体现在定性分析和论文描述中,至今无应用于实际仪器仪表记录。
本研究是基于不同盐度土壤反射光谱数据分析,采用多元线性回归、BP神经网络和支持向量机三种在数据回归领域中使用较广的两种算法,对土壤含盐量进行非线性定量拟合,代码通过MATLAB编程实现。创新点是在PC机中验证机器学习算法在土壤含盐量预测领域的适用性,以便于后期移植到实际的仪器仪表制作中。
1 样本采集与数据处理
1.1 样品的采集
实验以不同区域的土壤为研究对象,一类供试土样采自上海市滨海地区,二类供试土壤采自新疆省喀什区域,随机土样共270个(上海盐土150个,喀什盐土120个)并将每个土样分为两份,一份土样用于含盐量检测,一份用于土壤光谱测定。
1.2 土样含盐量检测
本研究使用重量法检测土壤含盐量,土壤进过筛孔、溶解、去有机质、风干和称重等过程,测得土壤样本含盐量情况如下表:
表1 土壤含盐量样地统计表Table 1 Statistics tables of soil salinity sample plots
1.3 土样光谱测定与处理
土壤光谱测定使用了Field Spec Pro FR(美国Analytical Spectral Devices公司)光谱仪,波长范围为350~2500 nm。在暗室中测定样本光谱,350~1000 nm波段光谱分辨率为3 nm,1000~2500 nm波段光谱分辨率为10 nm,采样间隔都是1 nm。光源使用了1000 W的卤素灯,光谱仪传感器探头放置在土壤样本的正上方,探头接收的样本区域应远小于土壤样本的整体面积,确保探头接受的所有反射光谱都是来自土壤样本的[9]。重复采样土壤样本光谱曲线并取均值作为处理好实验数据供后面实验使用。
在MATLAB中对采集到的光谱曲线进行去噪处理,处理后的光谱曲线如图1。
图1 不同盐渍土光谱反射率Fig.1 Spectral reflectance of different saline soils
两种供试土壤的土壤类型不同,第一类土壤采集自上海临海区域的盐土,土壤中的盐类大多是氯化盐,如NaCl和MgCl2,因为氯化物吸收水分的能力强导致氯化盐土中水分较高,所以该类土壤的光谱反射率会随着盐渍化程度的增加而降低。而第二类供试土壤采集自新疆的喀什戈壁地区,由于天气干燥,土壤含水量极低而出现了盐结晶溢出的现象,这也导致了二类土壤的光谱反射率会随着盐渍度程度增加而增加。
由于光谱波段数量较多,直接对原始数据进行拟合实验会造成实验模型复杂且运行效率低,所以需要采集一些特征值来表征某个土壤样本的整条光谱曲线。本研究选取盐渍土在350 nm、700 nm、1350 nm、1400 nm、1500 nm、1850 nm、2050 nm、2200 nm和2500 nm的光谱反射率曲线值以及土壤表征参数(特征波段斜率):
Xa(350~700 nm),Xb(700~1350 nm),Xc(1350~1400 nm),Xd(1400~1500 nm),Xe(1500~1850 nm),Xf(1850~2050 nm),Xg(2050~2200 nm),Xh(2200~2500 nm)。
通过这种方法简化后的17个参数,不但涵盖了土壤光谱曲线的所有信息,而且可以避免样本少输入数据多而导致的拟合模型不稳定的问题。
2 盐渍化反演模型的构建
2.1 多元线性回归模型
多元线性回归是一种常用的线性拟合方法,适用于自变量数量多的数据回归中,因变量与多个自变量都存在相关性,然后通过回归分析得出因变量与自变量的映射关系。多元线性回归方法是农学数学分析最常用的方法,本研究对土壤光谱数据进行多元线性回归,除去大于0.05大于显著水平的输入变量,得到土壤光谱数据与含盐量的映射方程,拟合公式如下:
2.2 BP神经网络模型
BP神经网络(BPNN)是一种采用了误差逆向传播算法来训练的前馈式神经网络,如果已有神经元之间的权值和阈值正向传播无法达到期望值,则反向传播计算误差大小来修改各节点的权值和阈值,逐步减小代价函数,使预测误差降到预先设定的数值[10]。当误差达到期望或者多次迭代后无法降低误差,则BP网络训练完成,此时的BP网络就是输入与输出之间的映射关系。
本研究中的BP神经网络在MATLAB中实现,分为模型构建、自动训练和结果预测三个过程,通过MATLAB自带神经网络实验箱中的newff、train、sim三个函数来实现。将表征光谱曲线的17个参数作为BP神经网络的17个节点,隐含层的数量在不断实验中确定,输入层为土壤含盐量一个节点。代码实现过程如下:
其中:input是输入的土壤光谱数据;output是土壤含盐量;input_test是测试数据;BPoutput是预测结果。
通过mapminmax函数对输入数据、输出数据和训练样本数据进行归一化,输入层到隐含层使用S型对数函数logsig,隐含层到输出层使用纯线性函数purelin,通过多次实验,选择了收敛效果最好、误差最小的trainlm作为训练函数。训练步数设置为100步,学习速率为0.1,理想误差为0.00004。将土壤光谱数据作为输入数据,土壤含盐量作为输出数据,训练模型,在误差达到理想误差时或是多次迭代后误差不在下降时,模型训练结束,得到的权值阈值矩阵就是BP神经网络模型。训练完成之后,将训练样本导入输出层,计算出预测结果并与实际结果相比较,得出BP神经网络的误差率。
由于BP神经网络模型受训练样本数目影响较大,在小样本实验中,BP神经网络易出现局部误差大、模型不稳定等情况,所以本文对实验进行了2个调整:
(1)从输入的17个节点中挑选出6个权值贡献率最大的节点作为输入节点,减少了输入节点的数量,简化了BP神经网络模型。
(2)加一个BP神经网络模型用于土壤种类的分类,减少了土壤种类对模型精确度的影响。
修改后的模型如图2。
图2 复合BP神经网络模型Fig.2 Compound BPneural network model
2.3 SVM模型
支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的用来解决函数拟合的问题。支持向量机一般用于分类和回归两种情况,本研究中土壤盐渍化反演模型就是使用支持向量机进行回归。在使用支持向量机进行回归时,需要调整的参数是惩罚参数c、不灵敏损失参数ε、核函数类型和核函数参数[11,12]。
控制支持向量机回归的参数主要有惩罚参数c、不灵敏损失参数ε、核函数类型和核函数参数。c越大,表示经验风险越小,即模型越复杂,泛化能力越差;c越小,模型越简单,泛化能力越强,但可能牺牲了模型的拟合能力。ε用于修改支持向量的数量,ε越小,支持向量机数量越大,模型相对来说约复杂。已有学者研究表明,径向基核函数在土壤盐渍化反演模型中效果更好。因此,本研究的选择径向基(RBF)作为核函数,其表达式为:
式中:σ为核函数参数。
代码实现流程如下:
支持向量机输入输出数据初始化、测试样本和训练样本的设置与BP神经网络模型的设置相同,然后通过libsvm-mat的网格参数寻优函数的调用,对惩罚参数c和核函数参数g进行最优值寻找。先进行参数粗略选择,c的搜索范围设置为10-5~1010,g的搜索范围设置为10-5~105,迭代步长设置为1,然后进行参数精细选择,c的搜索范围设置为100~1010,g的搜索范围设置为10-5~100,迭代步长设为0.3。参数选择完成后,再利用回归预测分析的最佳参数进行SVM模型训练。
3 结果与分析
3.1 多元线性回归、BP神经网络和SVM模型对土壤含盐量预测比较
本实验采集盐渍土光谱数据,处理后作为输入数据,并检测土壤含盐量作为输出数据,将这些数据分为训练集和预测集来进行建模。
在多元线性回归实验中,除去大于0.05大于显著水平的输入变量后建立的模型拟合精度为76.8%,效果并不理想,这是因为多元线性回归方法适用于线性数据的拟合,而土壤光谱数据是机理尚不明确的非线性数据,使用线性回归方法处理难免会出现误差较大的情况。图二是BP神经网络收敛过程,经过17步训练,测试集误差达到目标误差以下,为4.036×10-5,但测试集误差下降到5×10-4左右时就会出现反复迭代无法下降的情况,这是因为BP神经网络模型对样本数量要求较高,在小样本实验中,训练集和测试集都会出现数量不够,从而导致模型不稳定、测试集不具有普遍性、部分测试数据误差较大的情况。图三、图四是支持向量机参数模糊、精确选择结果,经过网格寻优得到的最优参数为c=9.849、g=0.0583,模型的拟合精度为99.4119%。从以上实验可以看出,线性回归方法、BP神经网络和支持向量机都可以完成收敛任务,BP神经网络和SVM的误差收敛稳定,训练、预测效果好。
图3 BP神经网络均方差变化曲线Fig.3 Variation curve of BP neural network mean square error
图4 SVM参数模糊选择结果Fig.4 SVM parameter fuzzy selection results
图5 SVM参数精细选择结果Fig.5 SVM parameters precision selection results
3.2 土壤盐渍化预测模型对比
对实验使用的三种模型进行误差分析对比,对比结果如图6。
图6 多模型误差对比Fig.6 Multi-model error comparison
线性回归方法最大相对误差为912.32%,最小相对误差为10.03%,由于个别测试值误差巨大,所以导致平均相对误差达到128.25%,这也说明线性回归方法并不适用于土壤光谱数据这种复杂非线数据的拟合;BP神经网络模型的最大相对误差为444.68%,最小相对误差为2.79%,平均相对误差为67.45%,增加土壤分类功能的复合神经网络模型的最大误差为158.35%,最小误差为0.55%,平均相对误差为32.213%,比较而言,传统的BP神经网络还是有部分预测数据误差较大的情况,百分35.84%的拟合精度也不理想,而改进后的复合BP神经网络模型的拟合精度达到了67.78%,预测精度远远高于传统BP神经网络模型,说土壤种类对土壤光谱数据的影响较大,通过修改模型减少这种影响可以提高预测模型精度;SVM模型的最大相对误差为37.341%,最小相对误差为0.431%,平均相对误差为9.253%,拟合精度明显高于BP神经网络模型,也达到了一个理想的精确度。之所以出现这样的实验现象,是因为BP神经网络模型对训练样本数量要求高,需要对数据进行大量的预先处理,而且在调试过程中需要大量的调整技巧,并不适用与土壤含盐量反演这样的小规模数据实验。支持向量机在这样的小规模数据实验中表现较好,因为支持向量机有着严格的数学理论作基础,会先经过大量计算来求出全局参数最优解,省去了数据预处理的阶段,并且可以有效避免神经网络易出现的局部极值问题,因此支持向量机模型的预测精度会高于多元线性回归模型和BP神经网络模型。
4 结 论
本文以新疆喀什地区和上海沿海地区为研究区,采集了270个土壤样品进行土壤盐渍化预测研究。实验选取了多元线性回归模型、BP神经网络模型和支持向量机模型来预测土壤含盐量,探究这三种模型在土壤含盐量预测中的适用性,结论如下:
(1)多元线性回归方法在预测土壤含盐量时,会出现个别预测结果误差极大,整体预测精度也不高,不适用于复杂非线性数据的拟合实验中;
(2)BP神经网络模型受样本数量影响较大,样本数量不足会导致模型不稳定,所以会出现土壤类型对精度影响大的现象,经过改进后的BP神经网络模型,实际实验中均方误差为32.213%,基本可以完成预测任务;
(3)SVM模型有着严格的数学理论基础,在小样本实验中表现也更好,拟合精度达到99.4119%,在实际实验中均方误差为9.253%,预测结果非常理想。