开发十年,就只剩下这套Java开发体系了 >>>   

之前发表了一篇介绍AutoML技术的文章,但感觉还不够深入。今天抽出时间来仔细分析了AutoML相关框架的源码,见微知著,希望能更全面准确的把握目前的AutoML技术现状。

这次,我首先拿Auto_ML这块框架作为切入点,分析了框架源码的工作流,以及用到的技术,再与其他框架进行了横向比较,分析记录如下:

AutoML

1.首先创建 Predictor 预测器;

一个Predictor预测器支持两种类型的任务:分类和回归

主要设置两个参数 type_of_estimator 和 column_descriptions

type_of_estimator 指定了任务类型(classifier 或者 regressor)

column_descriptions 指定了字段描述信息,如果为分类任务时,需指定Y所在的列(output)

2.调用Predictor 预测器的train方法训练模型;

一个简单的train方法,却做了很多事情:

a. _clean_data_and_prepare_for_training :数据清洗和准备

_prepare_for_training:准备X和Y;删除X中的重复字段;删除Y值缺失的记录;将X中所有字段转换为float类型;

将Y值标准化;

b.fit_transformation_pipeline :数据转换并输入管道

如果要使用深度学习组件,这里就会多一步特征学习的过程,调用方法名为:fit_feature_learning_and_transformation_pipeline

适应X值,并将X值放置到合适的“管道”中去;什么是“管道”:对数据处理流程的抽象;为什么使用“管道”:为了更方便的处理数据;

c.train_ml_estimator :训练模型评价器

找到最佳模型:这里值得注意的是,模型评价器在未指定模型名称的情况下,回归任务默认使用 GradientBoostingRegressor,分类任务默认使用 GradientBoostingClassifier

(在train方法中加入参数 compare_all_models=True 才会比较所有模型)

fit_grid_search : 如果没有使用CatBoost模型或者需要搜索的参数的个数大于50个,使用 EvolutionaryAlgorithmSearchCV 搜索候选模型的最优超参数,否则使用 GridSearchCV 搜索候选模型的最优参数

GridSearchCV的介绍:http://blog.csdn.net/sinat_32547403/article/details/73008127

这里我们会比较关心GridSearchCV针对每种不同的模型,初始化的Grid参数集合是什么样的,下面是部分截图,GridSearchCV的完整搜索空间见auto_ml源码 utils_models.py 第306行:get_search_params

这里以GradientBoostingClassifier为例:

损失函数尝试了两种:deviance,exponential

max_depth尝试了:1~15

max_features尝试了:sqrt,log2

learning_rate尝试了:0.001 ~ 0.2

……

这些对于一个粗粒度的模型来说足够了,还需要用户自己做精细化的调整

EvolutionaryAlgorithmSearchCV没有找到中文介绍,本质上属于一种启发式搜索,利用遗传算法的思想,寻找最优超参数

d._train_ensemble :训练集成模型

如果设置了集成学习参数ensemble_config,则进行集成学习模型训练:目前集成学习部分的逻辑还比较简单,用户配置需要做集成学习的模型集合,用一个for循环遍历这个集合,找到每个子集下的最优模型

e._create_uncertainty_model :创建不确定模型

当设置了不确定模型参数need_to_train_uncertainty_model,则进行不确定模型训练,这块就是使用GradientBoostingClassifier对不确定模型进行建模,目前还没想到这块用来做什么,该怎么用?

f._calibrate_final_model :调整最终模型

使用CalibratedClassifierCV进行模型概率校准

CalibratedClassifierCV的介绍:http://blog.csdn.net/u013426066/article/details/78650793

为什么要进行概率校准:为了让模型预测的概率具备更好的置信度

g._prepare_for_verify_features :准备验证特征

如果打开了特征验证参数verify_features,则执行_prepare_for_verify_features,为特征验证做准备(这块暂时没查到具体的用法)

3.调用Predictor 预测器的score方法输出模型分;

这里就没有什么特殊处理了,使用sklearn的包对模型分进行了输出;

综上所述,我们可以看出auto_ml的核心和重点就在于train过程中的模型选择和超参数调整,而这些在模型规模较小时主要是通过GridSearchCV完成的,auto_ml手工实现了一个超参数搜索空间集合,选择模型的标准也是根据在有限的超参数空间集合中搜索到得分最高的组合。所以实际上auto_ml采取的策略还是很粗放的,所谓的最佳模型和参数实际上只是一个预置好的近似值。

Tpot

而再仔细深入到tpot的源码中,我们发现同样tpot也提供了类似的搜索空间:

注意到上述搜索空间中很多参数给出来的都是范围,而不是某几个值,所以搜索出来的参数估计会更精确,但模型选择和超参数选择这块则使用了GP算法(gp_deap),也就是牺牲了一定的运行时间为了得到更准确的结果吧。

Auto-sklearn

auto-sklearn在这里采取了一种极端的策略:给出了一个非常庞大而细致的搜索空间,如下图所示:

一共划分了72种任务,每种任务里又有100多种参数组合,而在模型选择算法上也用到了GridSearchCV,所以对auto-sklearn不做限制,它的运行时间会很长,通常一个普通的任务会需要1-2个小时,但最终会得到一个非常准确的结果,完全是牺牲时间换结果。

值得一提的是auto-sklearn使用到了metalearning技术,metalearning是一种针对学习的学习算法,比较新,这里有一篇metalearning技术的介绍:https://www.leiphone.com/news/201708/tSXB6oo1mdnbKvkd.html

以上技术是不是最恰当最合适,还需要更多的实践检验。

AutoML自动化机器学习技术深入相关推荐

  1. 机器学习实战 | AutoML自动化机器学习建模

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/41 本文地址:https://www.showmeai.tech/article-d ...

  2. 【算法大赛直播周】如何让人人都可以使用AI技术?北大崔斌教授亲解自动化机器学习

    2020腾讯广告算法大赛已于近日落下帷幕(点击回顾),但算法研习之路永无止境.为了更好地推动前沿技术的分享和交流,持续助力产学研融合落地,腾讯广告特邀三位大赛顶级评委开启"2020腾讯广告算 ...

  3. 让AI学习AI:自动化机器学习的概述、发展和研究意义

    导读:我们在之前的文章<>中概述了人工智能,并引出了AutoML--自动化机器学习.本文将介绍AutoML的概述.发展和研究意义等概念性知识. 作者:王健宗 瞿晓阳 来源:大数据(ID:h ...

  4. 【问答集锦】减少专家依赖,自动化机器学习如何实现AI普惠?

    2020腾讯广告算法大赛专题直播周是由腾讯广告打造的一档大咖直播活动,特邀2020腾讯广告算法大赛的专家评委,针对联邦学习.机器学习.大数据等前沿领域的核心话题进行分享,并为算法爱好者们答疑解惑.我们 ...

  5. 自动化机器学习(三)神经网络架构搜索综述(NAS)简述

    文章目录 技术介绍 简介 技术栈 实现 数据 数据读取 创建模型并训练 模型预测与评估 模型的导出 技术介绍 简介 自动化机器学习就是能够自动建立机器学习模型的方法,其主要包含三个方面:方面一,超参数 ...

  6. 2019年,自动化机器学习AutoML技术还火吗? | BDTC 2019

    整理 | 王银 出品 | AI科技大本营(ID:rgznai100) [导读]12 月 5-7 日,由中国计算机学会主办,CCF 大数据专家委员会承办,CSDN.中科天玑协办的中国大数据技术大会(BD ...

  7. 自动化机器学习(AutoML)文献/工具/项目资源大列表分享

    本文整理了与自动化机器学习相关的经典论文.开源工具.项目.免费经典书籍.会议.经典文章和其他资源的列表. AutoML介绍 AutoML是使用机器学习方法和过程来自动化机器学习系统并使其更容易访问的相 ...

  8. 自动化机器学习AutoML(1)

    自动化机器学习AutoML 什么是AutoML 在过去十年内,机器学习领域获得了巨大的进展,得益于互联网(数据)与芯片(算力)行业的快速发展,各类机器学习算法终于化理论为实践,被应用当各行各业.千家万 ...

  9. AI之AutoML:Google AutoML(Google Cloud自动化机器学习平台库)的简介、安装、使用方法

    AI之AutoML:Google AutoML(Google Cloud自动化机器学习平台库)的简介.安装.使用方法 目录 Google AutoML(Google Cloud自动化机器学习平台库)的 ...

最新文章

  1. Reactjs 踏坑指南3:一些例子(未完成)
  2. python一行输出_#python版一行内容分行输出
  3. android ui设计欣赏,推荐20款最优秀的安卓界面设计
  4. Android 绘制优化
  5. vue:基础:生命周期
  6. 线控红外探测器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  7. 使用VMware 16 安装中标麒麟 7
  8. 2015年 行人检测总结1
  9. 关于写论文的格式要点
  10. 在个人电脑安装MySQL数据库,你还不会安装吧?
  11. 标准化和归一化 超全详解
  12. 量化交易 米筐 多因子策略与研究平台API
  13. 图片无损放大软件哪个好?图片放大不失真这样做
  14. 【设计模式】享元(Flyweight)模式实例
  15. everest命令_认识Everest:一个用JavaFX编写的漂亮的REST API测试客户端
  16. 125页精彩PPT报告读懂西门子!
  17. Lintcode 738.Count Different Palindromic Subsequences go
  18. becky!的使用4
  19. 【098】Linux下安装mongo-cxx-driver-3.6.7驱动的详细过程,以及常见报错解决
  20. CentOS安装mysql 5.7.28

热门文章

  1. python中的点表示什么_Python里面这些点,新手看完之后完全不知道这些点
  2. 妙啊!不怕遮挡的图像线段匹配 SOLD2,还能联合自监督线段检测|CVPR2021 Oral
  3. 三维点云分割综述(上)
  4. 矿大计算机控制技术,潜心科研,匠心育人,来看看矿大这位带领国内顶尖团队的“大拿”的多面人生!...
  5. mysql5.5.9_mysql5.5.9字符集设置
  6. MFC应用程序中添加控制台窗口
  7. 一小时讲懂图神经网络在分子上的应用
  8. Cell Press | 研究人员致力于创建COVID-19病毒表位图
  9. NLP(5) | 命名实体识别
  10. sklearn解决回归问题