1.简述
遗传算法 元启发式算法(Meta-heuristic algorithms)
模拟进化过程,通过选择(Selection)、交叉(Crossover)以及变异(Mutation)等机制,
在每次迭代中都保留一组候选个体,重复此过程,种群经过若干代进化后,理想情况下其适应度达到***近似最优***的状态。
参考链接:https://www.zhihu.com/question/23293449/answer/120220974
2.核心概念
将自变量空间编码成染色体,对应的实例称为个体,开始类似于随机搜索,随机开始,设置评估函数.
有种群概念,种群满足一定规模后,开始交叉、变异、选择进入下一个种群时代.
3.遗传算法python化 DEAP
官网链接: https://deap.readthedocs.io/en/master/overview.html
参考博客:https://blog.csdn.net/weixin_33871366/article/details/89435683
实现一个遗传算法实例步骤:
A. 确定Types–creator创建,选好解决问题的类型
B. 初始化Initialization–toolbox注册个体啊,种群等
C. Operator–算子选择,交叉,变异,选择,进化等等。每个算子都有不同的算法,可选
D. Algorithms–算法就是具体将上面注册的函数结合起来,编写流程。
4.tpot的gp应用部分源码.基本按照DEAP的流程编写.采用了精英模型mu
Tpot名词:
individuals 个体
generations 种群
offspring_size 种群后代数
population 人口
fitness 适应度
mutation_rate 变异系数
crossover_rate 交叉系数
scoring/evaluate 评估函数
def _setup_toolbox(self):
with warnings.catch_warnings():
warnings.simplefilter('ignore')
creator.create('FitnessMulti', base.Fitness, weights=(-1.0, 1.0))
creator.create('Individual', gp.PrimitiveTree, fitness=creator.FitnessMulti, statistics=dict)
self._toolbox = base.Toolbox()
self._toolbox.register('expr', self._gen_grow_safe, pset=self._pset, min_=self._min, max_=self._max)
self._toolbox.register('individual', tools.initIterate, creator.Individual, self._toolbox.expr)
self._toolbox.register('population', tools.initRepeat, list, self._toolbox.individual)
self._toolbox.register('compile', self._compile_to_sklearn)
self._toolbox.register('select', tools.selNSGA2)
self._toolbox.register('mate', self._mate_operator)
if self.tree_structure:
self._toolbox.register('expr_mut', self._gen_grow_safe, min_=self._min, max_=self._max + 1)
else:
self._toolbox.register('expr_mut', self._gen_grow_safe, min_=self._min, max_=self._max)
self._toolbox.register('mutate', self._random_mutation_operator)
5.tpot中遗传算法映射关系
chromosome 染色体
管道中的参数
individuals 个体
实例化的管道
generations 种群
多个管道
population 人口
管道数量
fitness 适应度
评估函数只
mutation_rate 变异系数
借用deap.base.Toolbox的toolbox.mutate(ind)方法完成参数变异.
crossover_rate 交叉系数
同上
评估函数:
此处采用模型的评估函数作为pipline的评估.只有最终的评分结果.对标sklearn, 有多种评估函数可选.
By default, accuracy is used for classification problems and mean squared error (MSE) for regression problems.
Classification metrics:
[‘accuracy’, ‘adjusted_rand_score’, ‘average_precision’, ‘balanced_accuracy’,
‘f1’, ‘f1_macro’, ‘f1_micro’, ‘f1_samples’, ‘f1_weighted’,
‘precision’, ‘precision_macro’, ‘precision_micro’, ‘precision_samples’,
‘precision_weighted’, ‘recall’, ‘recall_macro’, ‘recall_micro’,
‘recall_samples’, ‘recall_weighted’, ‘roc_auc’]
Regression metrics:
[‘neg_median_absolute_error’, ‘neg_mean_absolute_error’,
‘neg_mean_squared_error’, ‘r2’]
# 个人认为的不足处:
1.作为机器学习的auto包,默认输入是一张构造完特征的宽表.也就意味着不要对在这之前的工作报以期望.
2.目前算法基本是对标sklearn的,像lightgbm. catboost等还没有
相比于同类的evalml:
tpot具有的更多的预处理以及算法可选,
tpot通过config.py来设置管道内的组件以及参数, evalml对组件进行了封装, 通过 parameters_dict来传入参数, 各有千秋.
evalml结合了featuretools扩充了特征工程步骤, 整体上代码更工程化,适合拓展.