SSA等这种优化画法是仅仅只对于训练集而言的,对于测试集是没有任何一丁点关系的。当训练集找到最优的参数的时候,也就是模型确定的时候,就表示SSA算法已经完成了他优化模型的使命。当你把优化好的模型进行测试时,就已经不和SSA有一丁点的关系了。
我这种方式确实 相当于拿着测试集去优化模型了 因为我只关注测试集的精确率了 而测试集又一直在变 , 模型都一直在变 ,每一次是模型的准确率不高的一组参数对应了
为了找到训练集和验证集这组数据集相对应的最优的参数的模型
因为麻雀种子的随机性
每运行一次会输出一个准确率 和一组参数对应的一个模型
再运行一次又会种子随机,输出另一组准确率和另一组参数对应的模型,那么我们一直运行总会找到最高的一个准确率,那么它所对应的参数(是模型训练不出来的那种参数)的模型必然是这组数据最优的模型了。此时我们可以用这个最优的模型进行测试了。注意此时不能再进行运行,否则这组模型将不是最好的了,
不同测试集的输入有两种 保证训练集的一致性1.把刚刚用SSA加SVDD优化完成的参数放到另外一个不加优化算法的源程序上面,把本该进行人为手动优化的参数用刚刚的的优化的参数替代即可。2早就准备好,在原来加了SSA的后面,加入一个在训练一次的过程,因为之前说过,再训练一次就会把这个最好的参数加入到模型之中了。不过你要在找到这个最优的参数之前的在算法中加入这一步,或者是一开始就加入。切记不可,再运行 否则最优的模型就没有
根本原因还是测试集和训练集得不同。适应于训练集的最优的参数未必就是适应测试集的最优的参数 种子随机性
所以 第一次运行产生准确率a1 惩罚因子c1 和核参数b1
第二次 运行产生准确率a2 惩罚因子c2 和核参数b2
第三次 运行产生准确率a3 惩罚因子c3 和核参数b3
a3是最高的 ,那么他所对应的参数c3 b3也就是最优的,最好的,最适应于这个训练的数据的这个模型的。但是因为你的测试集毕竟并不是之前的训练集数据集了,这些数据也就未必就是对应他的最优的,也许你会发现在训练集训练的模型上准确率并不高的a2,所对应的参数c2 b2带入原始的不加优化算法的原算法中,用测试集来测试却能够使得对于测试集的分类的效果是最好的,也不见得。
并不是一直在观察测试集的准确率。找到最优的一组参数和对应的最好的准确率,就不能再用了 ,把这组参数放到不加SSA优化算法的的原算法当中就行了(原本是要进行人为的选择参数的)因为你的种子没有固定,再运行一次的话,种子肯定又随机一次了。这时候就不是最优的模型了,而是
因为麻雀搜索算法每次都是随机的 ,种子不固定,而且我的算法每次都是能够同时输出训练出的模型的准确率 ,以及模型准确率相对应的参数等, 如果有测试集输入进去 他会一并把测试集所对应的准确率也给求出来了
那么每一次 麻雀搜索算法的随机性都会输出一个准确率 和一组对应的参数,其实我找到这里面最好高的一个准确率 和他所对应的一组参数即可。我的模型就可以固定了 剩下就和麻雀搜索算法没啥关系了 ,他就是固定模型用的,所以我需要不停的运行,因为可能每次都不一样,我就可能找到一个最高的准确率对应的参数,这个就是最优的参数,对应的模型就是最优的模型,然后这个模型就不变了 拿着去进行测试即可。
因为麻雀搜索算法是随机的 所以我每次只是盯着测试集的准确率最高 选一次结果 那么相同的测试集 我还去运行 又出了一次结果 因为两次都是麻雀搜索算法搜索的模型的参数 ,两次参数很准确率都不一样,然后运行的相同的测试集,那么我的模型其实都变了 因为测试集毕竟和训练集不一样 那么 你选的测试集可能对应的是我的模型的准确率并不一定是最高的 也许还没运行出来,。然后我又去运行 ,因为模型都变了 所以没啥意义 。然后我可能又换着输入了一组测试集,这次我还是盯着
其实麻雀搜索算法就是搜索到模型也就是训练集验证集所对应的一组最优的参数 然后就固定模型了 相当于麻雀搜索算法 已经不需要再用他了 然后把这个最优的参数所对应的训练集最优的模型 用测试集去一遍一遍测试 ,而不是测试结果
在进行使用加有优化算法的程序时,当你已经优化出最优的参数
以及对应的适应度函数的值的时候。 反正麻雀搜优化完模型之后,模型就必须是固定的了 不可能再变话得了
但是这个程序你不可以再点运行了 在运行一次的话 模型又被优化了一次 就变了
如果是第一次输入的测试集 ,那么你可以在这个加了SSA的算法后面运行,因为这个模型就是刚刚优化完的模型。但是不可以在这个算法此再换一个测试集,因为
当你使用测试集的时候 ,得换到一个
SSA优化只是用来优化出固定参数的不变的模型 ,优化完毕之后把这个参数输入到模型之中就没有SSA什么事情了 你可以完全拿一个不加SSA算法的程序进行运行 ,把这个加了SSA优化算法的优化的参数放到这个不加SSA优化算法的里面 (本该认为调节核参数的)点击运行 他每次都是模型
确保SSA就不再参与到算法当中了才行