TPOT:利用遗传算法实现了机器学习自动化

前言

在机器学习这个领域工作的人都知道设计有效的机器学习系统是一个乏味的过程,通常需要对机器学习算法有相当的经验,问题领域的专业知识,以及蛮力搜索来完成。就没有什么办法,减轻这部分乏味的工作吗? TPOT可以

一、TPOT简单介绍

TPOT 是一个 Python 编写的软件包,利用遗传算法行特征选择和算法模型选择,仅需几行代码,就解决了机器学习流程设计中特征工程、模型选择、超参优化三个乏味的重要环节,为模型的建立指明了方向。并生成机器学习主线代码。

上图是一个TPOT的标准的ML流水线,在这条流水线中,在方法,特征,变换和参数值中获得AML搜索的最佳解决方案。

二、遗传算法参数使用

遗传算法基于创建初始种群迭代地组合群体成员,从而根据父母的“特征/参数”创建子代的思想。 在每次迭代结束时,我们进行拟合测试,并将把最适合的个体从原始的种群取出+新的种群被创建。 因此,在每次迭代中,我们将创建新的后代,如果后代表现更好,就可以用它们取代现有的个体。 这使得总体性能增加或者至少在每次迭代保持相同。

  遗传算法的参数:

  generations – 确定创建子代(新个体)的迭代次数

  population_size – 创建个体的初始数量(这些用于创建后代)

  offspring_size – 每一代所需创造的新个体数

  mutation_rate – 出现属性值随机更改的概率(包括新参数的方法,在初始群体中可能不可用)

  crossover_rate –用于创造后代的个体所占的百分比

三、高级用法

       .自定义设置词典

  不是用潜在的scikit-learn功能的标准值,您可以定义自己的字典,这使您能够合并有关该领域的知识或你所需参数(例如你经历过的并不是对于给定的应用程序的ML算法 )。 字典的例子如下所示:

  classifier_config_dict = {

          # Classifiers

            'sklearn.naive_bayes.GaussianNB': {

            },

            'sklearn.naive_bayes.BernoulliNB': {

                     'alpha': [1e-3, 1e-2, 1e-1, 1., 10., 100.],

                     'fit_prior': [True, False]

           },

           'sklearn.naive_bayes.MultinomialNB': {

            },

           'sklearn.tree.DecisionTreeClassifier': {

                  'criterion': ["gini", "entropy"],

                  'max_depth': range(1, 11),

                  'min_samples_split': range(2, 21),

                  'min_samples_leaf': range(1, 21)

        }

  }

 

四、简单例子

 

四、使用

        官方文档:http://rhiever.github.io/tpot/

        github地址:https://github.com/rhiever/tpot

        其他案例:http://epistasislab.github.io/tpot/examples/

posted @ 2020-11-06 17:24  CeasonCing  阅读(66)  评论(0编辑  收藏  举报