从遗传算法走进TOPT的auto

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扩充了特征工程步骤, 整体上代码更工程化,适合拓展.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值