摘要:

AutoML作为一个有效的工具可以帮助很多企业方便地实施和加速人工智能方面的应用落地。对于还不具备数据科学团队的公司来说,AutoML可以是全自动化的模型构建工具来使用,即便对于具备一定数据科学能力的公司,AutoML仍然可以帮助他们更加专注在人工智能落地中最为重要的事情上。在文本中,主要讲解目前常用的四个自动化学习平台,auto-sklearn, TPOT, auto_ml 和H2O,以及他们之间的性能比较。

为什么需要AutoML?

机器学习建模是一个流程化的过程。首先我们需要拿到数据,其次就是数据的预处理、特征工程,接着要做模型的构建,并通过调参的方式来寻找最好的模型参数。如果效果不佳,我们经常需要回到特征工程,重新再走整个的流程。显然,在实际工程上,我们需要花费大量的精力在这些每个流程上的优化(包括特征选取,调参等等)。如果一个工具或者框架能够帮助我们把所有流程优化好,那会极大地提升工作效率。在这个情况下,我们只需要把输入数据传递给一个框架或者平台,则可以拿到最后已经训练好的模型。其实这就是AutoML所做的事情。

Auto_ml

设计的目标为帮助公司快速从数据中提取有价值的信息,它用来自动化机器学习系统构建中的大部分流程。不仅可以用来完成通常花费最长时间的特征工程,比如对于自然语言处理的if-idf特征构建,特征编码等,还可以对于维度非常高的数据尝试降维操作。

Auto_ml底层使用了Scikit-Learn, XGBoost, TensorFlow, Keras, LightGBM等工具来确保运行时的高效。除了这些优点,Auto_ml也存在一些可扩展性缺点,而且对于多分类问题表现出(multi-class classification)比较差的表现。

Auto-sklearn

顾名思义,Auto-sklearn是scikit-learn基础上搭建的自动化学习平台。它包含自动化特征工程部分,而且整个流程由Bayesian search来优化并得到最好的模型。

Auto-sklearn的最大优势在于它建立在sklearn的生态上,所以具有更好的可扩展性以及兼容性,毕竟sklearn是目前为止最为流行的机器学习工具。 但相反,对于自然语言处理的数据,缺乏一些有效的工具。

TPOT

TPOT是基于树状的流程优化工具,它的核心基于遗传算法(genetic algorithm)。它延伸了sklearn的框架,但基于自己的基础类。它的缺点也是对于自然语言数据的处理并不友好。

H20

H20是基于Java编写的框架,跟sklearn也比较类似。它包含常用的模型比如GLM、深度学习模型、GBM, 随机森林等。它支持多种类型的Grid search来找到最好的超参数(hyperparameter)。最后生成的模型是一个集成模型,结合了多个模型。

实验中利用的数据集

为了验证每个框架的性能,文本主要在OpenML的数据上做了测试,选取了57个用来分类的数据集,30个用来回归分析的收集。

部分用于分类问题的数据集:

部分用于回归分析的数据集:

实验1: 对于发生异常情况的统计:

本文统计出了在进行实验过程中遇到的异常情况,如下表所示。同表中可以看出H20在异常次数上占据最高,这也证实了H20框架的一个缺点,就是对于资源管理的问题。

实验2: 对于预测准确率方面的统计

以下是针对分类和归回问题的预测统计。这个结果是基于所有数据集上的统计结果。从这个结果里可以看出,auto-sklearn在分类问题上要明显优于所有其他的框架。但在回归问题上,tpot要优于其他所有的框架。

Auto_ml与TPOT的区别相关推荐

  1. Ubuntu14下Auto-sklearn安装调试总结

    1. 说明 本次调试目的:因为公司内部需要做一个算法比较,顺带学习使用该技能,因为太久没有更新博客,本次调试运用为主,原理之后空了再深究 2. 原理篇 2.1什么是auto-sklearn 图1 :A ...

  2. Auto_ML自动机器学习之TPOT——学习笔记(1)

    Auto_ML自动机器学习之TPOT--学习笔记(1) 前言 TPOT简介 入门练习 练习 前言 没有python的基础,也不是程序员,而自动机器学习也号称要让我们这些小白会用,遂学之. TPOT简介 ...

  3. Auto_ML自动机器学习之TPOT——学习笔记(2)

    Auto_ML自动机器学习之TPOT--学习笔记(2) 数据预处理 mat文件格式转化为csv 批量读取文件路径 整合--批量mat转csv多文件合并 数据预处理 mat文件格式转化为csv 环境 W ...

  4. T-Pot安装教程(保证能运行,附安装需要的所有东西清单)

    前言 前一段时间做项目需要安装T-Pot,但是总是碰到各种各样的问题,造成T-Pot某些页面无法访问或者其他的不可知的问题.这么久之后,终于弄出来了一个相对比较好的解决方案,已经测试可以使用,在这里记 ...

  5. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

  6. C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别

    最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...

  7. gcc 和 g++ 的联系和区别,使用 gcc 编译 c++

    GCC 编译器已经为我们提供了调用它的接口,对于 C 语言或者 C++ 程序,可以通过执行 gcc 或者 g++ 指令来调用 GCC 编译器. 实际使用中我们更习惯使用 gcc 指令编译 C 语言程序 ...

  8. Python2 与 Python3 区别

    Python2.x 与 Python3.x 区别 1. print 函数 Python2 中 print 是语句(statement),Python3 中 print 则变成了函数.在 Python3 ...

  9. Docker 入门系列(1)- 初识容器,镜像、容器、仓库的区别

    Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...

最新文章

  1. 【网络编程】非阻塞connect详解
  2. 【HDU2037】今年暑假不AC
  3. Spring AOP + AspectJ Annotation Example---reference
  4. mdadm,用命令做RAID
  5. Mark task complete in checkbox S2 Resource not found for the segment Tasks
  6. 关于android Intent意图的一点心得
  7. 源代码:spark-shell解读
  8. c语言for循环可以初始化多个变量么_C8循环
  9. 小程序入门学习07--动态设置标题、转发
  10. 编程解决素数环问题Java_回溯法解决素数环问题java实现
  11. 虹软AI 人脸识别SDK接入 — 性能优化篇(多线程)
  12. Excel工作簿的拆分
  13. 计算机硬件码修改软件,电脑机器码,教您电脑机器码修改软件
  14. WPS设置奇偶页页眉不同
  15. vincy:提升购买欲望的13种手段
  16. 【BZOJ2827】千山鸟飞绝 离散化+splay
  17. mysql语句批量更新数据库_sql 更新批量数据库语句
  18. 睿智的目标检测32——TF2搭建YoloV4目标检测平台(tensorflow2)
  19. 分裂的史莱姆(二进制)
  20. 腾讯云php小程序,使用微信小程序和腾讯云实现直播功能

热门文章

  1. python 单例模式的四种创建方式
  2. Python __slots__限制动态添加变量
  3. Python数据库添加时间
  4. 使用python操作常用的库-kafka
  5. Python里三个最高逼格的调试神器
  6. java计算器布局设计_Java图形化界面设计——布局管理器之GridLayout(网格布局) 之计算器...
  7. Linux系统重新对时,Linux系统时区不对怎么办?
  8. 黑马程序员C语言基础(第三天)
  9. Visual Studio C/C++ 相对路径和绝对路径
  10. python numpy矩阵切片和索引的用法(冒号:和省略号...)