一个小创新模型,结合PSO-BP也能实现特征重要性分析,提升神经网络可解释性

        声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~

        今天给大家带来一期小创新代码,以往的神经网络模型相比于树模型(随机森林、XGBoost等)最大的一个缺点就是无法输出特征重要性,也就是大家常说的“黑箱模型”。这几天来我搜寻了很久,终于也找到一种能够实现分析神经网络特征重要性的方法。

        在神经网络分析模型中,训练的过程就是通过误差反馈逐步迭代各层各节点之间的连接权值与层间阀值, 最后在达到足够精度的情况下,建立起输入参数与输出值之间的映射关系。可以看到,模型中的连接值与阀值对敏感性参数的分析具有重要意义。

        因此,为了各输入变量对输出的相对重要性,Garson提出了一种算法,它的思路大致是依据连接权重的大小,分配各输入在网络中“贡献”的比重,从而衡量某个输入对于最终输出的影响,称为Garson算法

        但是,Garson的原始算法存在忽视了权重的正负符号等问题,因而有可能对特征重要性存在一定的偏差。在这里,我们采用一种改进的Garson算法对输入特征与输出值的敏感性分析(重要性分析),公式如下:

        式中:L为隐含层节点个数;n为输入层节点个数;wij为输入层i节点与隐含层j节点连接权值;wrj为输入层r节点与隐含层j节点连接权值;vj为隐含层j节点与输出层连接权值。

        这样,分别计算各个特征的Q值,就能得到我们所说的敏感性系数了。为了更方便大家理解,这里结合PSO-BP回归模型,展示一下模型运行效果,当然,PSO模型也可以自行换成大家喜欢的优化算法~

        首先是输入数据,为了方便小伙伴们替换数据,这里以Excel数据为例,各个变量采用特征1、特征2…表示,无实际含义,最后一列即为输出。

        更换自己的数据时,只需最后一列放想要预测的列,其余列放特征即可(特征数量不限),无需更改代码,非常方便!

        随后是预测部分,设置种群数量为10,最大迭代次数为30,隐藏层节点数为15,学习率为0.01,进行预测,得到的效果如下所示:

        迭代曲线图:

        测试集预测结果:

        回归拟合图:

        可以看到,经PSO优化后的BP神经网络精度还是很高的。

        以往的预测到这里就结束了,而我们在加入改进Garson算法后,会得到各输入特征的敏感性系数,也可以理解为重要性程度。

        根据敏感性系数,我们生成了一张直方图,非常耐看,很适合放到论文里:

        可以看到,在所有输入的特征中,输入4特征敏感程度最高,也就表明该特征最为重要;同理,特征6的敏感性系数最低,表明其在整个预测过程中重要性程度较低。当然,由于优化算法与神经网络本身的随机性,多次运行后结果可能会有所不同,这也是正常现象。

        最后,命令行窗口也会显示误差与敏感性系数,非常清晰:

        PSO-BP分类模型效果也是类似,如下图所示,只不过回归预测效果图变成了分类效果图和混淆矩阵:

        以上所有图片,一键运行main即可全部出图(回归模型和分类模型均包括),非常清晰。并且,附带参考文献,非常适合新手小白。

        想要以上Matlab代码的,只需点击下方小卡片,再后台回复关键词,不区分大小写:

Garson

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值