基于优化FOA-BPNN模型的脱贫时间预测

2018-12-29 00:52朱容波张静静李媛丽海梦婕王德军
关键词:果蝇步长准确率

朱容波,张静静,李媛丽,海梦婕,王德军

(中南民族大学 计算机科学学院,武汉430074)

二十世纪中期以来,国际社会和各国政府致力于解决贫困问题.中国政府和人民经过多年探索实践找到一条具有中国特色的减贫道路——精准扶贫战略思想[1].目前,精准扶贫的相关研究主要集中在理论层面的定性分析以及运用信息技术对精准扶贫工作进行管理[2, 3].缺乏对脱贫的深层次原因和机理进行精确定量分析的模型和方法[4].

神经网络由于具有自学习[5]、联想存储与高速寻优能力[6,7],在非线性问题分析与预测方面得到了广泛应用[8]:利用神经网络和回归树对肝癌患者的生还率进行预测[9]、构建乳腺癌分类预测模型[10]等.相比于粒子群优化等群智能算法,果蝇优化算法(Fruit Fly Optimization Algorithm, FOA)因其参数简单而为人们所接受[11].FOA中果蝇通过与相邻个体交换信息,向味道浓度最高的个体聚集;食物到达视觉范围后,准确飞向目标[12].FOA具有较强处理复杂优化问题的能力且易编码实现[13].

为了对扶贫的成效与脱贫时间等因素进行准确刻画与定量分析,本文引入具有自学习以及寻优能力强的神经网络,实现脱贫时间的有效预测.并针对BP神经网络模型可能陷入局部最小的缺陷,引入果蝇优化算法对BP神经网络的参数选择进行改进,形成FOA-BP神经网络预测模型.以BP神经网络的预测误差作为适应度值,寻找最优的BP神经网络参数值,提高预测精度.在标准果蝇优化算法中引入动态变速因子和种群密度,调节种群在不同搜索阶段的间隔步长,提高果蝇种群的收敛速度和精度.

1 基于DSFOA-BPNN的脱贫时间预测

1.1 问题描述

针对不同的贫困户个体,如何对扶贫政策进行合理的配置,才能使贫困户在最短的时间实现脱贫?该问题可以表述为图1所示的优化问题:以贫困户的敏感属性以及政策组合作为输入,输出贫困户的脱贫年限.

图1 问题描述Fig.1 Description of the problem

通过对入库贫困户相关基本信息进行整理,提取贫困户的贫困户类型(T)、致贫原因(R)、子女数(C_n)、耕地面积(A)、技能程度(B)以及享受的政策等敏感信息(C)作为模型的输入X;抽取贫困户的入库日期以及脱贫日期,计算贫困户从入库到脱贫所用的时间即脱贫年限Y,即Y={y1,y2,y3,…,ym}作为模型的输出,构建脱贫时间预测模型,其框架如图2所示,包括数据预处理模块和预测建模模块.

图2 模型框架Fig.2 Model framework

数据预处理模块将已脱贫与未脱贫贫困户进行分离,利用Python对已脱贫贫困户数据表中冗余项、缺失项进行删除填充操作,将贫困户的贫困户类型、致贫原因、以及享受的政策进行one-hot编码.同时对已脱贫贫困户数据进行分割,形成测试集与训练集.

预测建模模块的核心是利用BP神经网络构建的分类预测模型,该模型旨在利用训练集数据进行多次训练,对模型参数反复调整,直至模型的准确率达到预期效果.在建模过程中需要确定BP神经网络的输入层节点数、隐层数及隐层节点数、输出节点数、初始权重阈值、学习率等相关参数.考虑到BP神经网络的初始参数选择不当可能会导致模型的准确率降低,本文提出了改进的果蝇优化算法实现初始权重和阈值选择,提升模型的预测准确率.

1.2 动态步长果蝇优化算法

果蝇群体搜寻食物的过程可看作解决优化问题的过程,抵达食物的个体代表问题的可行解.其中标准果蝇优化算法具体步骤[13]如下:

步骤1:定义果蝇种群规模为Size,种群迭代寻优的最大迭代次数Maxg,当前迭代步数g,果蝇种群的初始位置(X_axis,Y_axis),初始搜索步长R0;

步骤2:确定果蝇个体搜索步长R,根据果蝇群体的初始位置随机生成果蝇个体i的位置坐标(xi,yi);

步骤3:计算个体当前位置离原点的距离dist(i),取其倒数S(i)作为气味浓度的判定值;

步骤4:通过适应度函数Function()计算果蝇个体i的适应度值Smelli;

步骤5:找出本次迭代气味浓度最高的果蝇个体,记录该个体的编号bestIndex与位置坐标(xbestIndex,ybestIndex)以及气味浓度信息bestSmell;

步骤6:比较当代最优气味浓度是否高于上一代,若是则执行步骤7,否则返回步骤2;

步骤7:更新种群的初始位置(X_axis,Y_axis),保留当前最高的气味浓度值SmellBest;

步骤8:判断迭代次数是否达到最大值,若是则算法结束,否则回到步骤2.

由上述步骤可知果蝇优化算法(FOA)的收敛精度和搜索速度与搜索步长有密切关系.在传统FOA中,搜索步长R为定值,可能导致初期迭代寻优搜索范围过小,难以在规定迭代时间内获得最优解;或迭代后期R偏大,种群无法精确找到最优解.为避免上述情况发生,对算法的搜索步长进行动态调整,保证果蝇群体在寻优的不同阶段获得合适的搜索半径,提高搜索精度.

动态步长果蝇优化算法(DSFOA)在步骤2中利用变速因子和种群密度动态调整搜索间隔,搜索步长表达式如下:

(1)

其中,变速因子α描述相邻迭代最优气味浓度变化引起的搜索间隔变化程度;bestSmelln为第n次迭代最优气味浓度.当α>0时,降低搜索步长提高局部寻优能力;当α<0时,增大搜索步长,扩大搜索范围.本文引入种群密度ρ,理想情况下,搜索前期种群密度偏小,保证种群的多样性,提高搜索速度;搜索后期种群密度偏大,提高局部寻优能力;迭代次数越大,种群密度对步长的影响越小.

(2)

(3)

DSFOA其他步骤同FOA,由于DSFOA在搜索过程中通过α和ρ调节搜索速度和范围,在加快种群靠近目标的同时,提升了搜寻范围的精准度,对算法的复杂度没有太大影响.

1.3 基于DSFOA的BP神经网络模型

利用果蝇优化算法对BP神经网络的的初始参数进行寻优,构建基于果蝇优化算法的BP神经网络模型(Fruit Fly Optimization Algorithm BP Neural Network, FOA-BPNN),在一定程度上提高BP神经网络的预测精度.其算法流程如图3所示.

基于动态步长果蝇优化算法的BP神经网络模型(Dynamic Step Fruit Fly Optimization Algorithm BP Neural Network, DSFOA-BPNN)是在FOA-BPNN的基础上,将左侧FOA替换为本文提出的DSFOA,利用DSFOA对BPNN的初始参数进行一定程度的优化.

DSFOA-BPNN算法详细步骤为:

1)选择原始数据作为样本数据,进行归一化等相关数据预处理;

2)确定BPNN拓扑结构形式和相关参数;

3)执行动态步长果蝇优化算法.在本次实验中,将果蝇个体作为参数可行解应用到BP神经网络,并对测试样本集进行预测得到均方根误差,以此作为动态步长果蝇优化算法步骤4(同FOA步骤4)中果蝇个体的适应度值,即气味浓度.因此个体i适应度函数Functioni表示如下:

(4)

其中n为测试样本数量;Oobs,j与Omod,j分别表示实例值与网络输出值.

4)将步骤3)中得到的权值和阈值赋予BPNN进行训练,利用优化算法对BP神经网络权重与阈值进行调节.

图3 FOA-BPNN算法流程图Fig.3 Flowchart of FOA-BPNN algorithm

2 实验结果

2.1 实验设置

实验硬件环境为:Ubuntu14.0 64位系统,利用Python的集成开发环境Jupyter实现数据预处理操作及果蝇优化算法,借助Tensorflow深度学习框架构建神经网络.本研究收集了某贫困地区在2014~2016年间脱贫的贫困户数据共95000条,依据贫困户的脱贫时间将数据分为3类,即脱贫时间为2014年、2015年、2016年,数据量分别为21640、42850、30510.按照4∶1的比例对预处理后的数据进行均匀分割,形成训练集与测试集.

模型输入包括贫困户类型(T)、致贫原因(R)、享受的政策等敏感信息(C)等26项,则模型输入层节点数为26;与3个脱贫时间段相对应,输出层节点数为3;根据经验公式(5)确定隐层节点数为6.

(5)

其中Nin,Nh,No分别表示输入层、隐层、输出层的结点数,α为正整数,且0≤α≤10.

为了综合下降算法和随机梯度下降算法的优缺点,实验中每次只计算一小部分训练数据的损失函数,这一小部分数据被称为一个batch.通过矩阵运算,每次在一个batch上优化神经网络的参数并不会比单个数据慢太多.利用指数衰减法设置学习率并使用L2正则化避免过拟合问题,限制权重大小使模型不能任意拟合训练数据中的随机噪音.

对于动态步长果蝇优化算法部分,设置种群规模Size为30,最大迭代次数Maxg为300.每一个果蝇个体的维度为D,其表达式为:

D=NinNh+NhNo+Nh+No.

(6)

2.2 实验结果及分析

经过训练集数据训练后,3种方法对脱贫时间的预测准确率与损失函数值的变化曲线如图4所示.

图4 训练样本为50000时模型预测准确率与损失函数值变化曲线Fig.4 The curves of the accuracy rate and loss value with 50000 samples

从图4(a)中我们可以看出,BPNN模型在随机初始参数下脱贫时间预测的准确率在22%左右,对于一个三分类问题,所选的初始参数显然无法达到预期效果;模型预测准确率最终稳定在50%,准确率不够高.针对建模方法及过程,结合现有条件,分析造成上述现象的原因之一可能在于随机选择的初始参数不合适,模型在训练后期无法挣脱局部解空间,因此需要借助寻优算法提高模型初始参数的质量,提升模型的收敛精度.

针对上述问题,根据提出的果蝇优化算法优化BP神经网络的方案,利用标准FOA与DSFOA优化BP神经网络,进一步进行实验验证,实验结果如图4(a)中FOA-BPNN与DSFOA-BPNN所示.测试集对应的3种方法预测准确率的对比如表1所示.

表1 模型训练前后准确率对比Tab.1 Accuracy rate comparison before and after model training

FOA-BPNN预测模型的初始参数是经过果蝇优化算法优化后得到的,由图4(a)可以看出模型在初始参数下的预测准确率为50%左右,远高于BPNN的22%,FOA-BPNN脱贫时间预测准确率最终稳定在65%左右,相较于BPNN有了一定提高.产生上述结果的根本原因在于初始参数选择,初始参数不仅决定了模型的初始准确率,在一定程度上也影响了模型跳出局部最优的能力,进而影响模型最终的预测准确率.这表明相较于利用正态分布随机取得初始参数的模型,由果蝇优化算法选择初始权重和阈值的模型在训练过程中更容易得到最优的权重和阈值.

通过对果蝇优化算法的步长变化进行调整,形成DSFOA-BPNN预测模型,在初始参数下模型预测准确率为50%,模型的最终预测准确率稳定在73%左右,在一定程度上提升了脱贫时间预测的准确率.上述结果表明动态果蝇优化算法(DSFOA)对初始参数的优化效果要好于标准果蝇优化算法.这是因为标准果蝇优化算法在寻优过程中搜索步长固定,容易陷入局部最优的困境;而动态步长果蝇优化算法在寻优的不同阶段根据需要赋予果蝇个体不同的搜索步长,获得最优初始参数的几率更大.

图4(b)为3种方法建模过程中损失函数的变化趋势.实验过程中的平均损失是交叉熵损失与正则化损失之和,如式(7)所示:

loss=cross_entropy_mean+regularaztion,

(7)

其中loss为总损失,cross_entropy_mean表示平均交叉熵损失,regularaztion指正则化损失,交叉熵作为评判输出向量和期望向量接近程度的方法之一,刻画了两个概率分布之间的距离.正则化项为L2型正则化,在一定程度上解决了过拟合问题,提高了泛化能力.

3种方法在建立预测模型的过程中损失函数变化曲线都呈下降趋势.由图4(b)可知BPNN与FOA-BPNN、DSFOA-BPNN的初始损失值不同,前者的初始参数明显要劣于后者,产生的误差损失较高.BPNN模型随着训练次数增加,模型损失逐渐下降,最终稳定在0.78左右.FOA-BPNN的初始参数下模型损失约为1.1,经过若干轮训练,误差函数值稳定在0.64左右,相较于BPNN减少了22%;进一步优化果蝇优化算法的步长选择,最终DSFOA-BPNN的误差函数值稳定在0.57.

为了进一步验证3种方法的性能,在原有数据集上新增一个县的扶贫数据45000条,按照4∶1的比例对数据集进行分割,形成训练集与测试集,分析3种方法在发生数据增量时的性能.当训练样本增加近一倍时,对比图4和图5,3种模型训练前期准确率震幅增大,收敛时间增加.结合表2与图5(a),BPNN与FOA-BPNN的稳定性与收敛精度影响不大;对于DSFOA-BPNN,数据量的增大并未对模型的预测精度造成较大负面影响,然而由于噪声数据随着数据量的增加而增加,模型在训练前期的震荡加重,从图5(b)可以看出DSFOA-BPNN在训练Epoch值达到15000时,损失函数值出现一次较明显的波动,这是因为总损失由正则化损失和交叉熵损失组成,噪声加剧导致正则化损失增加.

图5 训练样本为95000时模型预测准确率与损失函数值变化曲线Fig.5 The curves of the accuracy rate and loss value with 95000 samples

Tab.2 Accuracy comparison of incremental experimental models before and after training

模型训练前准确率训练后准确率优化百分率/%BPNN0.2270.4981.19FOA-BPNN0.400.6380.575DSFOA-BPNN0.500.710.40

3 总结与展望

本文提出了一种DSFOA-BPNN模型对脱贫时间预测进行准确刻画与定量分析,在对某地区贫困户基本信息进行预处理后,建立特征量映射数据库,将改进的果蝇优化算法与BP神经网络结合,实现对脱贫时间的有效预测.实验对比表明:在对贫困户脱贫时间预测的应用中,DSFOA-BPNN预测模型具有较好的预测效果.下一步将更全面地考虑贫困户的各项属性及其相互之间的关联,提高模型的准确率与实用性.

猜你喜欢
果蝇步长准确率
中心差商公式变步长算法的计算终止条件
果蝇遇到危险时会心跳加速
基于Armijo搜索步长的BFGS与DFP拟牛顿法的比较研究
2021年大樱桃园果蝇的发生与防控
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
一种改进的变步长LMS自适应滤波算法
2015—2017 年宁夏各天气预报参考产品质量检验分析
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
小果蝇助力治疗孤独症