smac源码分析(1):初探smac

smac的应用:auto-sklearn

SMAC(Sequential Model-based Algorithm Configuration),即基于序列模型的算法配置,被广泛应用在各个自动机器学习框架上,如微软的nnihttps://github.com/microsoft/nni),auto-sklearn等。其中auto-sklearn的超参搜索模块完全由smac算法构建。要想理解auto-sklearn,首先就要理解smac

下面介绍smac的应用场景:AutoML,应用主体:auto-sklearn

随着最近人工智能技术的大热,机器学习、深度学习逐渐进入了人们的视野,在各种工具(如Tensorflow,sklearn)开源的加持下,机器学习技术逐渐有普及化、全民化的趋势。但是,以普通的表格数据(行为样本点,列为特征)为例,要找到一个表现最好的Pipeline(即从数据处理,特征处理,最后到estimator判别),需要花费人们大量的时间去尝试。一般来说,数据科学家需要获取数据的一些基本统计量,做一些图表来判断数据的模式,再根据自己的经验挑选数据处理,特征处理的方法,最后选择一个estimator(在分类任务中为分类器classifier,在回归任务中为回归器regressor)。可是这个过程一个是耗时,还有更加依赖数据科学家的经验,提升了机器学习的门槛。

人们注意到了这一矛盾,提出了自动机器学习(AutoML)的概念。在2015年一个AutoML框架auto-sklearn横空出世,引来人们争相关注:
在这里插入图片描述

auto-sklearn架构

  • auto-sklearn论文与代码
paper http://papers.nips.cc/paper/5872-efficient-and-robust-automated-machine-learning.pdf
code https://github.com/automl/auto-sklearn

最近笔者在调研AutoML,于是对auto-sklearn进行了调研。笔者发现,auto-sklearn是用automl团队(https://www.automl.org)编写,这个团队在构建这个自动机器学习框架时使用了大量自己开发的库,库与库之间功能内聚,相互隔离,调用关系为一个有向无环图:
在这里插入图片描述
橙色字体标记的smac就是我们今天的主角。在分析清楚auto-sklearn的项目架构后,我下载了smac的源代码(https://github.com/automl/SMAC3),开始对其进行分析。

在这里插入图片描述在AutoML系统中,最为关键的就是根据当前的多组超参数组合(如svm核函数的选择,惩罚系数C的选择)与模型表现(如分类任务中的准确率),给出一个在当前条件下预计最优的超参数,这就是贝叶斯优化(Bayesian Optimizer)。与网格搜索与随机搜索不同,贝叶斯优化能在更短的时间内找到更好的超参数。
在这里插入图片描述

来源: borgwang.github.io

目前应用最广的是SMBO(Sequential Model-Based Optimazation),即基于模型的序列优化。目前有三种常见的SMBO算法:基于高斯过程回归的序列超参优化、基于随机森林算法代理的序列超参优化(即 smac),基于TPE算法代理的序列超参优化。

smac 快速上手

在终端中执行以下命令,开启第一个例子

git clone  https://github.com/automl/SMAC3
cd SMAC3 && pip install .
cd examples
python SMAC4HPO_svm.py

让我们看到SMAC4HPO_svm.py这个样例代码。
首先定义了一个输入为cfg(超参配置),输出为模型表现的函数svm_from_cfg

def svm_from_cfg(cfg):
    """ 创建一个基于配置的SVM模型,并且通过交叉验证在鸢尾花数据集上评价该模型
    Parameters:
    -----------
    cfg: 超参配置 (ConfigSpace.ConfigurationSpace.Configuration)
    Returns:
    --------
    A crossvalidated mean score for the svm on the loaded data-set.
    svm在数据集上交叉验证的平均值
    """
    # 通过字典解析过滤掉值为None的键值对
    cfg = {
   k : 
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值