赞
踩
参数是指算法中的未知数,有的需要人为指定,比如神经网络算法中的学习效率,有的是从数据中拟合而来,比如线性回归中的系数,如此等等。在使用选定算法进行建模时,设定或得到的参数很可能不是最优或接近最优的,这时需要对参数进行优化以得到更优的预测模型。常用的参数优化方法主要包括交叉验证、网格搜索、遗传算法、粒子群优化、模拟退火,本节介绍遗传算法。
遗传算法实质:选定一批最佳参数,使得目标函数最优。
遗传算法是模拟自然界遗传选择与淘汰的生物进化计算模型。达尔文的自然选择学说认为,遗传和变异是决定生物进化的内在因素。遗传是指父代与子代之间,在性状上的相似现象,而变异是指父代与子代之间以及子代的个体之间,在性状上或多或少地存在的差异现象,变异能够改变生物的性状以适应新的环境变化。而生存斗争是生物进化的外在因素,由于弱肉强食的生存斗争不断地进行,其结果是适者生存,具有适应性变异的个体被保留下来,不具有适应性变异的个体被淘汰。更进一步,孟德尔提出了遗传学的两个基本规律:分离律和自由组合律,认为生物是通过基因突变与基因的不同组合和自然选择的长期作用而进化的。
由于生物进化与某些问题的最优求解过程存在共通性,即都是在产生或寻找最优的个体(或者问题的解),这就产生了基于自然选择、基因重组、基因突变等遗传行为来模拟生物进化机制的算法,通常叫作遗传算法,它最终发展成为一种随机全局搜索和优化的算法。
遗传算法研究的对象是种群,即很多个体的集合,对应于求解的问题,这里的个体代表一个解,种群代表这些解的集合,当然,开始的时候,也许所有的解不是最优的,经过将这些解进行编码、选择、交叉、变异之后,逐代进化,从子代中可以找到求解问题的全局最优解。
种群的每代个体经过了这几个关键的步骤之后,种群得以进化,在最终的子代中找到问题的最优解。这就是使用遗传算法求解最优化问题的大致过程。
染色体(个体):在参数寻优问题中一个染色体代表一个参数,染色体的十进制数值,用于获取待寻优参数实际输入到模型中的值。
基因:每一个染色体都对应多个基因,基因是二进制数,基因的取值长度是染色体的长度。遗传算法的交叉、变异操作都是对染色体的基因进行的。
种群:初始化的染色体可能的取值数
适应度函数:表征每一组染色体(每一组参数)对应的模型评价指标(本博文的python实例中,采用3-flod 交叉检验的平均值作为适应度函数值)。
假设对于两个参数的寻优,我们设定染色体长度为20,种群数为200,就是说初始化两个染色体,每个染色体初始化200个可能的值,每一个染色体的十进制数值用20位二进制数表示。、
第一步:编码。变量x是遗传算法的表现型形式,从表现型到基因型的映射称为编码,通常采用二进制编码形式,串的长度取决于求解的精度。
所以二进制串的长度是7,即染色体长度是7。
(1)首先将二进制转为十进制:比如一个二进制为10101,转化为十进制就是(2)把21放到上面的解码公式就得到了最终的batch:min=10,max=100
第二步:产生父代个体,构建初始种群。
第三步:选择个体。根据适应度函数选择再生个体,被选出的概率正比于染色体的适应性,适应性分数愈高,被选中的可能性也就愈大。常用的方法就是采用所谓的轮盘赌选择法。
第四部:交叉。
第五步:变异。
即:
第一步:(产生初始种群:即优化参数的候选者)根据种群规模,随机产生初始种群,每个个体表示染色体的基因型,如LSTM超参数batch_size、epochs等优化,初始种群为batch_size、epochs的候选值。
第二步:(计算适应度:即目标函数)计算每个个体的适应度,并判断是否满足优化准则,若满足,则输出最佳个体及其代表的最优解,并结束算法;若不满足,则转入下一步。适应度,即因变量f,如LSTM的loss。
第三步:(选择)依据适应度选择再生个体,适应度高的个体被选中的概率高,反之,适应度低的个体被选中的概率低,甚至可能被淘汰。
第四步:(交叉)根据一定的交叉概率和交叉方法生成子代个体。
第五步:(变异)根据一定的变异概率和变异方法,生成子代个体。
第六步:(循环计算适应度)由交叉和变异产生新一代种群,返回到第二步。
遗传算法中的优化准则,一般根据问题的不同有不同的确定方式。通常采取如下之一作为判断条件:
多参数寻优和单一参数寻优的基本思路是相同的,不过在种群初始化时,每次需要初始化m个染色体,并且在选择、交叉、变异操作时,m个染色体是分别进行的。
步骤一:种群、染色体、基因初始化。
步骤二:计算种群中每一组染色体对应的适应度函数值。
步骤三:对种群中的染色体进行选择、交叉、变异操作,产生新的种群。
步骤四:判断是否满足终止条件?如果不满足,跳转到步骤二;如果满足,输出最优参数。
步骤五:结束。
R语言预测实战:6.3.5
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。