基于PSO与LS-SVM的作物需水量预测
2018-11-01商志根段小汇
商志根,段小汇
(盐城工学院电气工程学院,江苏 盐城 224051)
0 引 言
我国是一个贫水大国,人均水资源约为世界人均水平的1/4,然而我国农业用水约占总供水的80%,其中多用于灌溉。随着我国水资源供需矛盾日益突出,农业灌溉必须走上精细灌溉之路。对作物需水量做出准确预测,并按需灌溉,对农业工程中的节水灌溉具有重要意义[1]。
在农业工程中,通常有2种方法计算作物需水量:基于修正的Penman-FAO公式的估算方法与基于时间序列或回归模型的预测方法。修正的Penman-FAO公式是一种计算作物腾发量的方法,仅需气温、日照时数、水气压和风速等气象资料,是目前普遍应用的公式之一,然而该方法计算精度略低[2]。近年来,国际国内学者提出了基于时间序列、模糊理论、灰色理论与神经网络(Neural Network, NN)等模型的预测方法。张兵等人[3]提出了一种基于L-M算法训练的神经网络的作物需水量预测模型。夏泽豪等人[4]将灰色理论与神经网络相结合,提出一种新的基于灰色神经网络的作物需水量预测模型。孟丽丽等人[5]基于α-加权模糊线性回归模型预测作物需水量。因为神经网络可以逼近连续的非线性曲线,受到相关研究者的广泛关注[6]。但是,神经网络对权重向量初始值敏感,并且是一种大样本分析方法。
支持向量机(Support Vector Machine, SVM)采用结构风险最小化原则,对较少的样本,将样本数据映射到一个高维空间里,进而将数据间的关系用一种确定的方式表达[7]。LS-SVM(Least Squares SVM)是SVM的一种,它将SVM中的不等式约束改为等式约束,将训练集的误差平方和作为经验损失,于是SVM的二次优化问题转化为线性方程组问题。LS-SVM因计算速度快、性能良好而得到广泛的应用[8-16]。文献[11]将经验模式分解与LS-SVM相结合,用于微小通道气液两相流的流型辨识。文献[12]为了给液压机的锻造工艺建模,提出了一种局部LS-SVM。文献[13]利用LS-SVM预测机械加工表面的粗糙度,实验结果表明与NN相比,LS-SVM的预测精度更高。LS-SVM的相关参数对模型性能具有很大影响。近年来,研究者将智能优化算法用于SVM的参数组合寻优[14-16]。文献[14-15]将粒子群优化算法(Particle Swarm Optimization, PSO)[17]优化的LS-SVM分别用于沥青质沉积预测和物流系统的货物运输量预测。文献[16]结合马氏距离,利用PSO优化的LS-SVM实现模拟电路的早期故障诊断。
本文以美国田纳西州大学高原实验室所测的数据[18]为例,以空气湿度、温度、太阳辐射以及风速为输入,利用LS-SVM,构造非负线性组合核函数,将PSO与交叉验证相结合确定模型相关参数,实验表明与神经网络和随机森林(Random Forest, RF)[19-20]相比,LS-SVM可取得更好的预测精度。
1 LS-SVM与PSO
1.1 LS-SVM模型
(1)
其中,φ(·)将原空间映射到高维特征空间,‖w‖2控制模型的复杂度,b为偏置,C可控制训练误差在目标函数中的比重。为得到优化问题(1)的对偶问题,定义Lagrange函数如下:
(2)
其中,乘子αi≥0。Lagrange函数对于参数w、b、e、α的偏导数都应等于0,得到:
(3)
(4)
Cei+αi=0
(5)
φ(xi)Tw+b-yi-ei=0
(6)
将式(3)和式(5)代入式(6),可得到:
(7)
将式(4)和式(7)写成线性方程组形式,并将高维特征空间的内积运算用核函数代替,即K(xi,xj)=φ(xi)Tφ(xj),得到:
(8)
其中,1=[1,…,1]T∈Rl,α=[α1,…,αl]Τ,y=[y1,…,yl]Τ,I为单位矩阵。
核函数对LS-SVM预测模型的性能有重要影响。根据泛函相关理论,满足Mercer条件的函数都可作为核函数,且不同的核函数的非负线性组合仍然满足Mercer条件[21]。常见的核函数有:
其中,d为正整数,σ为正实数。在实际应用中,径向基核函数表现出良好的性能。径向基核函数是典型的局部核,而多项式核函数是典型的全局核[21]。为利用多项式核函数和径向基核函数的优势,以它们的非负线性组合作为本文的核函数:
(9)
其中,0<ρ<1。
1.2 PSO算法
粒子群算法与遗传算法都是基于群体和适配概念的优化算法,不同之处在于PSO算法有记忆粒子最佳位置的能力,同时粒子间的信息共享机制可免去遗传算法的3步操作(选择、交叉、变异),具有收敛速度快、规则简单、易于实现的优点。
(10)
(11)
(12)
1.3 PSO优化LS-SVM参数
PSO算法需优化LS-SVM的4个参数,粒子群算法中的粒子如图1所示。
图1 粒子群算法中的粒子
PSO算法优化LS-SVM参数的过程如下:
Step1初始化PSO。
将t设置为1,设置粒子群规模、粒子取值范围与最大速度vmax、最大进化代数、c1、c2、w,设置迭代结束条件为t达到最大迭代次数,随机产生n个粒子的位置与速度,单个粒子的历史最优解设置为粒子初始位置。
Step2训练LS-SVM模型。
利用训练数据和各粒子对应的参数组合,根据式(8)和式(9),训练各粒子对应的LS-SVM,计算验证集的均方根误差(Root Mean Square Error, RMSE)。RMSEv的计算表达式为:
Step3更新粒子群。
将Step2中的RMSE的倒数作为粒子适应度,更新粒子的历史最优解、粒子群的历史最优解,根据式(10)~式(12)更新粒子群。
Step4检验迭代结束条件。
若满足结束条件,则返回粒子群的当前最优解;否则t=t+1,转至Step2。
预测模型的测试过程为:
Step1训练LS-SVM模型。
将训练集与验证集合并作为新的训练集,利用PSO算法返回的参数,重新训练LS-SVM模型。
Step2计算测试误差。
利用Step1得到的LS-SVM对测试数据进行预测,并计算测试集的RMSE。
2 应用实例
本文所用数据来自美国田纳西州大学高原实验室,所用试验田为肥沃的沙质土壤,其长度为12.20 m,宽度为4.05 m。试验针对的作物为青椒,数据观测时间为1994年5月~6月。在试验中,测量了与青椒需水量息息相关的4个量:太阳净辐射、相对湿度、天气温度和风速,其中太阳净辐射为一天累计值,其余为一天平均值。试验数据共有50个样本,如表1所示。
表1 实验数据
神经网络选用单隐层结构,并利用L-M算法训练模型,学习步长为0.001,最多迭代次数为103,隐层激活函数选择Sigmoid函数,隐层节点数从{1,2,3,4}中选择。随机森林含有100棵分类回归树,叶节点的样本数从{1,2,3,4,5}中选择。粒子群优化算法迭代次数为100,种群有20个粒子,惯性权重w取0.6,c1与c2都取1.7。为简单起见,非负线性组合核函数的d值设为2。LS-SVM的相关参数为σ、ρ和C。σ的取值范围为[0.01,5],C的取值范围为[0.01,104]。
首先将样本1~5作为测试数据,样本6~50作为训练数据,在训练集上利用粒子群算法和9折交叉验证方法确定最小RMSE所对应的参数值,获得样本1~5的测试结果;然后以样本6~10为测试样本,其余样本为训练数据。以此类推,直至获得样本46~50的测试结果。
对于神经网络和LS-SVM而言,在模型训练之前需将数值数据进行归一化处理,以克服数值数据量纲的影响。图2给出了神经网络、随机森林和LS-SVM的预测结果。表2给出了3种模型在测试集上误差统计,其中,MAPEt和MAEt分别指测试集的平均绝对误差率(Mean Absolute Percentage Error)、平均绝对误差(Mean Absolute Error),计算表达式分别为:
图2 模型预测结果
由表2可知,与神经网络和随机森林相比,LS-SVM可获得更小的误差指标,具有更好的预测性能。
表2 预测模型的误差统计
3 结束语
为预测作物需水量,以空气湿度、温度、太阳辐射以及风速为输入,建立LS-SVM预测模型,利用PSO和交叉验证方法确定模型相关参数。与神经网络和随机森林相比,LS-SVM模型可获得更好的预测精度,有助于实施精细灌溉。