Skip to content

Latest commit

 

History

History
68 lines (53 loc) · 4.9 KB

概述.md

File metadata and controls

68 lines (53 loc) · 4.9 KB

autosklearn

  • 是一个自动调参框架
  • 核心是使用SMAC算法,一种采用黑箱调优的算法,对超参进行迭代优化从而进一步选出能够使得在这种参数下,模型的某种指标最好的超参。
  • 为了更进一步高效地寻找到最有的超参,autosklearn还引入了metalEarning等过程加速超参搜索。
  • 除了黑箱调优算法外,autosklearn还做了特征工程和数据工程,从而实现了部分的机器学习自动化。
  • 从使用者的角度看,在给定一个数据集和期盼最小化的指标(如auc,logloss等)的情况下,autosklearn完全可以出给适当的模型和对应的输入超参,使得对应的指标在指定数据集下最小。

效果

  • 一定程度上满足了自动机器学习的要求
  • 单纯就模型结果上看,即便输入给autosklearn的是一组没有经过很详细特征处理的数据集,输出结构都会比当前市场上的一些自动调优框架好

集成模型方法

(使用了Rich Caruana在04年icml上所提出的集成模型方法)具体操作如下:

  • 选取一张50个空白项的表,其中表中的每一项权重为0.02。
  • 从已有的多个模型中选取一个可以提升表性能的模型加入到表中或替换性能不佳的模型。
  • 重复第二步直到达到最大的迭代步骤。
  • 将表中相同模型的权重累加得到此模型在集成模型中的权重。

主要算法:SMAC

  • 是SMBO算法的一种算法

  • SMBO算法的每个迭代步可以分为如下的步骤: 1.依据历史信息构造(超参,性能)的性能函数 2.依照性能函数,选取最有可能是最小值的超参,并将这个点对应性能算出 3.将新的(超参,性能)加入历史信息中,进行重复的迭代。

  • 将SMBO算法实例化到SMAC算法,所对应的是: 1.性能模型是随机森林的高斯过程模型 2.通过局部搜索和全局的随即选点,算出多个最有可能达到最小值的点进行进一步筛选 3.筛选点的过程是一个bandit问题,这里SMAC算法通过intensify过程使用经可能少的资源找到最有超参

Metalearning

  • Metalearning操作的目的是为整个迭代选取一个接近收敛点的初值,从而加快SMAC算法的收敛速度。
  • 在autosklearn中,作者将已有的metalearning数据库存入以下所示的文件夹中,每个文件夹内都存有指标+模型特征+任务类型所对应的超参初始值。
    • 这些初始值都是作者通过优化其他类似数据集后(其中可能是手动优化的结果)总结出来的数据库。
    • 通过选择与当前训练数据接近的先前的k个优化结果作为初始值,加入到SMAC算法中进行优化,进而加速SMAC收敛的速度。
  • Metalearning并不能从根本上提升SMAC算法所给出的最优点的性能。
    • 但是一个较好的初始值可以大大加快SMAC找到最优点的速度。从而减少时间资源的消耗。
    • 同时,当所给时间不足时,autosklearn会直接给出metalearning的值,这个值虽然不是SMAC能给出最好的结果,但是依旧是一个效果不错的超参选择

数据预处理和特征预处理

  • SMAC算法主要做了如下四种预处理:
    • 其中balance操作只对特定的one_hot编码选项有效。

    • 在特征预处理方面,SMAC最多做了如下记住特征预处理:

      • 其中除了标红的kernel_pca, kitchen_sinks和nystroem_sampler以外,所有其他特征预处理只对multinomial_nb模型有效。
    • 实际上autosklearn并没有对数据集做什么“专业级”的预处理,比如分析数据产生新特征等等

      • 但是autosklearn不同的是他将每种预处理方法的不同参数也带入SMAC中进行调优,充分利用了每种预处理带来的性能提升,从而得到了比市场上大多数自动调优框架更好的结果。

限制

  • 模型的好坏很大程度取决于训练模型之前对数据的清洗工作
    • 数据清洗工作很难自动进行,它通常需要专业领域的知识以及对工程师想要实现的工作有明确且高度的理解
  • 即使在算法和超参选择上做得足够出色,AutoML 工具得到的还仅是一个好的模型,并非足够好的模型。
    • 搜索依赖
      • AutoML 的搜索依赖于对网络结构或算法组合的评价
        • 当前的大部分工作中均将 k 折交叉验证错误率作为评价准则,结构和算法稍作改变均要重新训练,时间和计算开销十分巨大,导致搜索不够彻底,也会影响 AutoML 的效果
        • 谷歌大脑在其工作中“大动干戈”,使用了 800 个 GPU 完成加速模型训练工作

并行

  • 目前提供了单机并行示例,包括多线程、多进程的
  • 多机并行的,暂无(如果不需要在执行中交换数据,实际也不需要多机并行)

一个整体类关系图

https://www.simonwenkel.com/2018/09/22/exploring-autosklearn.html