麻雀搜索算法适应度函数内部?

麻雀搜索算法目标函数里面其实是原被优化参数的算法训练、测试的一个完整的流程,只不过是把测试的结果用写出来了。

优化算法的内部是原函数进行训练集训练,测试集进行测试的一个完整流程,只不过把因为优化算法内部不能再用训练集或者测试集进行优化模型,所以只能用验证集优化模型,故只需将完整的流程里面的测试集换成验证集即可。也就是  优化算法内部是原函数进行训练集训练,验证集进行测试的一个完整流程。

并且模型优化完成后,一般只是输出最优的被迭代的参数(优化的参数,这种参数是不会随着训练数据训练变化的,是在训练之前提前输入的,属于超参数大类,还有的参数会变化的。这是模型中的两种参数,变化的参数,和不变的参数,当这两种参数都融入到模型当中,这才是真正的训练好的模型。),但是优化的参数所对应的模型在迭代过程中没了,所以我们必须要对这个参数再训练一次,带入模型中,即为融合了这个参数的模型了。

 

 

 

麻雀搜索算法其实是会用到训练模型的数据除外的另一部分数据去优化参数的。(为什么不是训练模型的数据再去进行参数的优化呢:【用训练集去训练模型,不仅仅训练出了模型  并且还训练出这组数据(训练集这组数据集)相对应的最优的一组参数,所以说如果你优化函数还是用训练集这组数据集的话,那必定寻优的参数还是这批数据里面的最优的参数,所以必定还是之前的参数,故优化算法无需迭代,不用寻优。】训练模型的数据已经训练好这个模型了,自然会对对应着这个模型里面的参数,这部分数据的效果已经体现在现有的模型的参数上面了。训练模型的数据和这个训练的模型以及这个模型内部的参数是相对应的。所以如果你还拿这部分训练数据去优化模型的参数的话,(数据不变,zira)最终的结果是这个模型不需要优化了他俩本来就是对应好的,麻雀直接不需要迭代了。所以麻雀搜索算法其实是会用到训练模型的数据除外的另一部分数据去优化参数的,但绝不可能是训练集。)于是你选择测试集去进行参数优化,(进而相当于是训练模型了),你又把这个用测试集优化好参数的模型用到了你的测试集上去评估,就相当于你知道了考试题目去考试,那肯定这不是你真是的水平,偏高,模型偏好了,算法偏好了,所以说测试集的数据也不能用,最终这两部分数据都已经排除在外,剩下的没用的那只有可能是之前预留的一部分验证集了来进行麻雀搜索算法的参数优化。当然有的人为了凸显自己的算法的优秀,直接去使用测试集来作为麻雀搜索算法所需要的数据,来优化模型,然后又再去用这个测试集来进行模型评估(相当于你知道了考试题目去考试,那肯定这不是你真是的水平,偏高,模型偏好了,算法偏好了,结果肯定偏好)。

所以说使用麻雀搜索算法等优化算法时,如果想要最准确评估模型,是需要提前预留一部分数据作为验证集进行参数优化的。

参数优化的这一类算法是需要使用到,训练最初模型所使用的训练数据除外的另一部分未用到的数据的去调节前面模型的参数的,这部分数据可以是之前预留的验证集也或者是测试集(会有弊端,前面讲解)

算法就两件事更准确训练模型(加入一些优化算法)和更准确评估模型(使用验证集和测试集)

但是其实SSA等优化参数的这类算法本质是在优化参数,其实是在训练集训练最初模型的基础上来优化的这个模型的参数。当然它优化参数所使用的数据自然就是之前训练最初模型所未用到的参数。这部分的参数来自于验证集或者测试集。

像我们平时不使用优化参数的算法时是没必要强调验证集的重要性的。因为我们先用训练集来训练模型,然后来评估模型可以使用验证集或者测试集,因为验证集一般是属于训练集预留的一部分数据,(但是也有可能是原始数据直接分成训练集、验证集或者是训练集、验证集和测试集,这样测验证集也是和训练集独立的,用来测试也是准确的,但是其实这也就等价于用测试集来进行测试的准确程序了,结果基本不会有偏差,所以这样说也没有提前预留验证集的必要性)验证集一般是属于训练集预留的一部分数据,可能与训练集有所关联,所以使用测试集来测试模型的准确率上来讲,测试集能够比验证集更加真实地反应模型的一些性能指标的。所以说即使你先预留了一部分数据作为验证集去评估由训练集训练的模型的性能的话,但你最终还是会用到测试集去更加准确的评估由训练集训练的模型的性能,最终还是会用测试集评估的指标作为最终指标的。所以你留下验证集去评估模型就显得多此一举了,没那么必要了。所以从上面总的来说,只要是不做加优化参数的算法并不会这么强调预留验证集的重要性(因为可有可无)。可以预留也可以不预留,反正用不到,预留的最终的结果也会在测试集评估的结果中包含它,只用测试集即可。

下面讲的是加入SSA等优化参数的算法预留验证集的重要性。

我昨天那个程序是用训练集训练模型,但是我没有分出来验证集。却使用了我的测试集来优化我的模型的参数,其实还在训练我的模型。最后我又把用测试集优化参数的模型又用到了我的测试集上,自然会表现很好。所以我最好还是应该在训练集中留出来一部分作为验证集 ,用验证集来优化我的参数,而不是用测试集。

验证集一般只是用于评估由训练集训练的模型。但是这种SSA麻雀搜索算法等这一类的优化参数的算法其实是有使用到训练模型的数据除外的数据的(因为是训练模型的数据除外的数据只有验证集和测试集了)来优化的参数的,我这里使用了测试集去优化参数了。导致我再使用测试集评估模型就不准确了,那其实我最好都是需要先预留出一部分的验证集来优化参数会更好。我用训练集去训练模型,验证集去优化模型,然后用测试集去测试模型,这样数据是完全不一样的,不会造成一定的影响

但是在其他的不使用优化参数算法的算法中中是完全不需要预留一部分验证集的,因为虽然验证集会测试模型,但是你还是会使用到测试集更加准确的测试模型的

如果是为了发论文,有挺多工作都是面向测试集调参的,再用测试集测试的,方便,模型性能还好,也就是算法性能好。

 

我连错两次  第一次用训练集训练模型,训练集去测试数据发现摸却搜索算法不迭代了。就相当于我用一套试卷去平时测验练习,考试的时候我还使用这一部分数据去考试,那自然你是满分,提哦啊出不出错误的,反应就是测试的模型没有一点误差。第二次就是发给你的程序这次  用测试集去优化我模型的参数,又去用优化参数的模型去测试测试集,结果贼好 。这相当于我用一套试卷去平时测验练习,然后你还提前给我了一部分考试的试题, 那考试我自然更能考得好,评估的模型也更好了。

 

优化函数使用的数据集上不能用训练集,下不能用测试集

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ong大大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值