自动化机器学习起源于网格搜索概念,是一种流水线(也称管道)。它通过搜索方法、变换特征、混合参数值来获得最佳解决方案。TPOT是自动化机器学习的一个应用框架,提供了遗传算法这样的应用,可用来在某个配置中混合各个参数并达到最佳设置。常见的自动机器学习库:TPOT、Auto-Sklearn、Auto-Weka、Machine-JS、DataRobot。
5.5.1 遗传算法基础
遗传算法(Genetic Algorithm)描述:
遵循适者生存、优胜劣汰的原则,是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法,属于启发式搜索算法一种。</br>
模拟一个人工种群的进化过程,通过选择、交叉以及变异等机制,在每次迭代中都保留一组候选个体,重复此过程,种群经过若干代进化后,理想情况下其适应度达到近似最优的状态。
遗传算法组成:
- 基因:一个遗传因子。
- 染色体:包含一组基因,个体是包含某一染色体。
- 种群:是染色体的集合,由个体组成。
- 适应度函数:个体适应度判断,适者生存。
- 选择(Selection):优胜劣汰,仅适应环境的个体可以繁衍后代。
- 交叉(Corssover):新个体会遗传父母双方各一部分的基因。
- 变异(Mutation):子代的基因在继承父母的基因的基础上会有一定的概率发生基因变异。
应用:
- 机器学习:特征选取、算法选择、混合参数调优等。
- 交通与船运路线:遗传算法已被很多贸易公司用来让运输更省时、经济。
- 工程设计:遗传算法在这里可以进行优化并给出一个即快又经济的模型。
特点:
- 是启发式群体搜索,不是盲目穷举, 易于并行化处理。
- 适应度函数不受连续、可微等条件的约束,适用范围很广。
- 容易实现,一旦有了一个遗传算法的程序,如果想解决一个新的问题,只需针对新的问题重新进行基因编码就行;若编码方法也相同,那只需要改变一下适应度函数就可以了。
5.5.2 遗传算法步骤
以背包问题为例:假若要去野游 ,但是只能背一个限重 30 公斤的背包。现在有不同的必需物品,它们每一个都有自己的生存点数。因此目标是在有限的背包重量下,最大化生存点数。
初始化:产生初始种群
染色体长度选择:取决于具体的问题,即编码方法。</br>
种群大小选择:规模大小取决于编码的方法,即编码串的大小。比较大的种群规模并不能优化遗传算法结果,推荐使用20-30。</br>
种群中的每个个体包含一染色体,每条染色体上有6个基因,分别对应不同的物品,1 代表该物品装入袋中,0 代表该物品不装。
个体适应度判断:定义适应度函数,区分个体优劣
当染色体包含更多生存分数时,也就意味着它的适应性更强。如染色体 \(A1\) 重量是29,生存分数为28;染色体A2重量是16,生存分数为23, \(A1\) 适应性强于 \(A2\)。
选择父体母体:定义选择函数,从总体中选择可以进行繁殖的染色体,产生下一代
一般使用轮盘赌选择法:将一个轮盘分割成\(m \)个部分, \(m \) 代表总体中染色体的个数。每条染色体在轮盘上占有的区域面积将根据适应度分数成比例表达出来。
这个轮盘开始旋转,将被图中固定的指针指到的那片区域选为第一个亲本。然后对于第二个亲本进行同样的操作。有时候也会在途中标注两个固定指针,可以在一轮中就获得两个亲本。将这种方法成为随机普遍选择法。
交叉运算:定义交叉函数,繁殖后代
将已经选择出了可以产生后代的亲本染色体,进行交叉(繁殖)即染色体 1 和 4。</br>
单点交叉:是交叉最基本的形式,随机选择一个交叉点,然后将交叉点前后的染色体部分进行染色体间的交叉对调,于是就产生了新的后代。
多点交叉:设置两个交叉点,产生新的后代。
变异运算:定义变异函数,保证生物的多样性
它可以被定义为染色体上发生的随机变化,正是因为变异,种群中才会存在多样性,变异完成之后,就得到了新为个体,进化也就完成了
内变异:所谓内变异就是在自己内部发生变异,是一种比较有效的手段。</br>
外变异:外变异是引入创新,突破传统的质的飞跃, 也是启发算法中所谓的全域搜索。在当前基因中引入外部基因(如:当前集合的补集)。
个体适应度检验:替代种群中适应度较低的个体
用适应度函数对这些新的后代进行验证,如果函数判定它们适应度足够,那么就会用它们从总体中替代掉那些适应度不够的染色体,继续以上过程。
定义终止条件:退出迭代,获取最优状态。
- 事先定义好进化的次数。
- 当适应度函数已经达到了预先定义的值。
- 当连续N代子代种群的最优个体适应度都小于等于父代最优个性的适应度。