GA-BP VS BP——两种模型的比较,附实验数据和代码
GA-BP VS BP——两种模型的比较,附实验数据和代码
本文通过实验比较了GA-BP(遗传算法优化的BP神经网络)和BP神经网络在处理回归问题时的表现。实验使用了一个包含五项指标的数据集,通过训练和测试,分析了两种模型在损失值和准确率上的差异。
一、数据来源
已通过某平台收集到用户A、B、C、D、E五项指标数据,经预处理后使用组合赋权法计算各指标权重后得到每条记录的最终得分,依据如下规则将用户划分为由弱至强的5个类别。
部分数据如下图所示,文件已上传,可在文章顶部位置下载。
二、模型描述
2.1 BP神经网络
该BP神经网络模型包含1个输入层、1个隐含层和1个输出层,输入层到隐含层使用sigmod激活函数(代码实现时可能出现数据溢出,所有使用scipy下的expit代替手写sigmod函数),输出层不使用激活函数。
其工作流程如图所示,通过前向传播可计算出模型预测值与真实值间的差距(误差),通过反向传播能够将误差信息传递给各参数,反向传播中最重要的操作是权重和偏置的更新。
2.2 GA-BP神经网络
同样采用三层网络结构,相较于BP神经网络,GA-BP神经网络使用选择、交叉、变异操作替代了其反向传播的过程,以达到更新参数的目的,其操作流程下图所示。
在选择、交叉、变异操作中均涉及权重和偏置的更新,各环节详细描述可参照往期文章GA-BP神经网络。
要点梳理:
- 种群中每一个个体,都是一组权重和偏置的组合;
- 选择操作负责从种群中挑选出适合度高(预测误差小)的个体;
- 交叉操作负责生成新的个体;
- 变异操作负责增加种群的多样性。
三、实验结果
3.1 训练集上的表现
实验中使用方差作为损失函数描述模型预测结果与真实值之间的差异,从图中可以发现GA-BP神经网络的预测误差明显小于BP神经网络,并更早的收敛,从这个角度看GA-BP神经网络更加优秀。
注意,文中构建神经网络模型预测用户的最终得分是一个回归问题,在回归模型中并没有“准确率”这一描述!此处的准确率是作者本人为满足第一章中的分类需求人工添加的分类方法,该操作会在一定程度内运行模型具有较大的误差,也就是说只要GA-BP和BP两个模型的整体误差相差不大,它们在准确率的计算上不会有很大的差距。
从下图中可以发现,整体上看GA-BP的表现优于BP,但是其准确率曲线变化幅度大,而BP的准确率曲线就平稳得多。
3.2 测试集上的表现
GA-BP神经网络在测试集上的平均误差高于BP神经网络的平均误差,这让人大感意外,但是两个模型的误差均已进入千分位级别,在本文提及的分类任务中,两评估模型的平均误差对几乎没有区别。在准确率上GA-BP神经网络模型优于BP神经网络模型。
四、总结
从实验结果看,在处理回归问题时GA-BP神经网络模型优于BP神经网络模型,主要表现在模型平均预期误差小、模型更早收敛上。由于初始参数、概率等因素的影响某些时候BP神经网络模型会取得更优秀的表现,例如文中GA-BP神经网络模型的准确率曲线波动较大,而BP神经网络模型的准确率曲线波动较小。如今也有很多用于优化GA算法的策略,可以进一步提高GA-BP的稳定性。
相较于BP模型,相同迭代次数下GA-BP模型会进行更多的运行,消耗更多的资源,在处理实际问题时,如果对于待解决的问题,GA-BP模型和BP模型的预测误差可以忽略不计,BP模型也是一个很不错的选择。