自动机器学习工具全景图:精选22种框架,解放炼丹师

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介:

构建一个典型的机器学习项目,一般分成以下步骤:

收集原始数据、合并数据源、清洗数据、特征工程、模型构建、超参数调优、模型验证和设备部署。

整个过程中,模型构建最能体现创造力,而最耗时的,要数特征工程超参数调优

于是,有时候会因为赶时间,过早将模型从实验阶段转移到生产阶段,导致它们发挥不出最佳效果;也有时候,会因为花了太多时间调优导致部署延迟。

这时候,就体现出了自动机器学习(Automatic machine learning, AML)框架的价值。

自动机器学习框架能帮助数据科学家减轻负担,降低特征工程和超参数调优的工作量,让他们能花更多时间来尝试模型架构。快速验证可能的方案不仅能让数据科学家很快地评估目标数据集,也能提供基准性能用以改进。

本文尽可能全面地介绍现有的自动机器学习框架,也附上了对应的代码地址。

综述

我们对现有的自动机器学习开源框架展开了充分调研,它们一般作用于机器学习的单个或多个步骤。

自动机器学习框架能够处理项目中一部分步骤,包括模型构建、特征工程和超参数优化。因此,我们分析了一些成熟框架,它们宣称能优化其中某些任务组合。

我们挑选出一些能够容易应用到企业数据科学团队的函数库。在介绍每个框架时,我们都给出了它的建库目标、使用的统计方法和将其与新项目或现有项目整合时要考虑的主要因素。

542429006823496f786e7bc681b845419361b6f8

局部解决方案

现有的自动机器学习框架中,有些只解决了数据科学流程的单个步骤。虽然它们不提供端到端的解决方案,但是这些库侧重于使用先进方法来解决特定问题或是在带有独特约束的特定环境下操作,因此仍值得考虑。

369f761064b56bcd7390fb1474f9ab3a3c4dc1f4

特征工程

1. Featuretools

https://github.com/Featuretools/featuretools
1347星,139 Forks,119 Commits
最新版本为0.1.21,2018.5.30更新

Featuretools是一个自动特征工程的工具,它可以根据一组相关的表来自动构造特征。这个开源库是一个面向企业客户的商用前端服务的子集。

Featuretools使用了一种叫做深度特征合成(Deep Feature Synthesis, DFS)的算法,这个算法能遍历通过关系数据库中模式描述的关系路径。当DFS遍历这些路径时,它通过数据操作(包括求和、取平均值和计数)生成合成特征。

例如,它可以把求和操作应用到给定客户端ID的事务列表,将它们聚合成一列。虽然这只是一个简单的单次操作,但这个算法可以遍历到更深层的特征。

这个库的优势,在于其可靠性和在处理时间序列数据时处理信息泄露的能力。

2. Boruta-py

https://github.com/scikit-learn-contrib/boruta_py
318星,82 Forks,62 Commits
最新版本为0.1.5,2017.3.5更新

Boruta-py是Brouta特征降维策略的一种实现,以“全相关”方式来解决问题。

这种算法能保留对模型有显著贡献的所有特征,这与很多特征降维方法使用的“最小最优特征集”思路相反。

Boruta方法先对目标特征进行随机重新排序并组成合成特征,然后在原始特征集上训练简单的决策树分类器,再在特征集中把目标特征替换成合成特征,用这三个步骤来确定特征重要性。

其中,不同特征对应的性能差异可用于计算它们的相对重要性。

3. Categorical-encoding

https://github.com/scikit-learn-contrib/categorical-encoding
494星,115Forks,171 Commits
最新版本1.2.6,2018.1.22更新

这个库扩展了许多分类编码方法,可作为Scikit-learn中数据转换器的接口。

它还实现了常见的分类编码方法,如one-hot编码和hash编码,以及很多niche编码方法(包括base n编码和target编码)。

该函数库常用来处理实际问题中的分类变量,如可能带高变量基数的问题。它还能直接与pandas数据帧共用、计算缺失值和处理可能在训练集之外的变换值。

4. Tsfresh

https://github.com/blue-yonder/tsfresh
2781星, 340 Forks ,243 Commits
最新版本0.11.0,2017.10.14更新

这个库专注于时间序列数据的特征生成,它由一个德国零售分析公司支持,是他们数据分析流程中的一步。

它能提取出一系列用于描述时间序列趋势的形态特征,这些特征中包括一些简单特征(如方差)和复杂特征(近似熵)。

这个库能从数据中提取趋势特征,让机器学习算法更容易地解释时间序列数据集。它使用假设检验来获取大量生成特征集,并将其减少到少量最具解释性的趋势特征。

Tsfresh还与pandas和sklearn兼容,可嵌入到现有的数据科学流程中。Tsfresh库的优势在于其可扩展的数据处理实现,这部分已经在具有大量时间序列数据的生产系统中进行了测试。

5. Trane

https://github.com/HDI-Project/Trane
4星, 1 Fork, 245 Commits
最新版本0.1.0,2018.2.2更新

这个库是麻省理工学院HDI项目的产品。

Trane库可用来处理存储在关系数据库中的时间序列数据,和表示时间序列问题。它能列举出关于数据集的元信息,数据科学家能从数据库中的时间序列数据中提取这些特征来构建有监督问题。

这个过程存储在JSON文件中,数据科学家能改写这个文件来描述列和数据类型。该框架通过处理这个文件来生成可能的预测问题,这些问题能用于修改数据集。

这个项目对feature-tools库很有帮助,可用来以半自动方式生成额外特征。

6. FeatureHub

https://github.com/HDI-Project/FeatureHub
32星,5 Forks ,249 Commits
最新版本0.3.0,2018.5.9更新

这个项目也是麻省理工学院HDI实验室的,它建立在JupyterHub(支持多用户的 Jupyter Notebook服务器)上,让数据科学家在特征工程开发过程中能协作。

这个系统能自动对生成特征评分,以确定当前模型的总体价值。这种以众包方式进行特征工程和机器学习的方法,在测试时也取得了很好效果。

dbd17bcf60912d7ef8d7aa0dd8a8cdf9d4d8d3c4

超参数优化

1. Skopt

https://scikit-optimize.github.io/
880星,340 Forks ,173 Commits
最新版本0.5.2,2018.3.25更新

Skopt是一个超参数优化库,包括随机搜索、贝叶斯搜索、决策森林和梯度提升树。

这个库包含一些理论成熟且可靠的优化方法,但是这些模型在小型搜索空间和良好的初始估计下效果最好。

2. Hyperopt

https://github.com/hyperopt/hyperopt-sklearn
2161星,473 Forks,939 Commits
最新版本0.1,2016.11.20更新

Hyperopt是一个超参数优化库,针对具有一定条件或约束的搜索空间进行调优,其中包括随机搜索和Tree Parzen Estimators(贝叶斯优化的变体)等算法。

它使用MongoDb作为存储超参数组合结果的中心结构,可实现多台电脑的并行计算。

这个库是用hyperopt-sklearn和hyperas实现的,这两个用于模型选择和优化的函数库分别建立在scikit-learn和keras的基础上。

3. Simple(x)

https://github.com/chrisstroemel/Simple,362星, 22 Forks,4 Commits
需手动安装

Simple(x)是一个优化库,可作为贝叶斯优化的替代方法。

Simple(x)和贝叶斯搜索一样,试图以尽可能少的样本进行优化,但也将计算复杂度从n³降低到log(n),这对大型搜索空间非常有用。

这个库使用单形(n维三角形),而不是超立方体(n维立方体),来模拟搜索空间,这样做可以避开贝叶斯优化中具有高计算成本的高斯过程。

4. Ray.tune

https://github.com/ray-project/ray/tree/master/python/ray/tune
3435星,462 Forks,1,707 Commits
最新版本0.4.0,2018.3.27更新

Ray.tune是一个超参数优化库,主要适用于深度学习和强化学习模型。它结合了许多先进算法,如Hyperband算法(最低限度地训练模型来确定超参数的影响)、基于群体的训练算法(Population Based Training,在共享超参数下同时训练和优化一系列网络)、Hyperopt方法和中值停止规则(如果模型性能低于中等性能则停止训练)。

这些都运行在Ray分布式计算平台上,这让它具有很强的扩展性。

5. Chocolate

https://github.com/AIworx-Labs/chocolate
26星,26 Forks,196 Commits
需手动安装

Chocolate是一个分布式超参数优化库(支持计算机集群的并行运算且无需中央主机),它使用通用数据库来联合执行各个任务。

它还支持网格搜索、随机搜索、准随机搜索、贝叶斯搜索和自适应协方差矩阵进化策略。它的优势体现在它支持受约束的搜索空间和多损失函数优化(多目标优化)。

6. GpFlowOpt

https://github.com/GPflow/GPflowOpt
102星,27 Forks ,407 Commits
最新版本0.1.0,2017.9.11更新

GpFlowOpt是一个基于GpFlow库的高斯过程优化器,可使用TensorFlow在GPU上运行高斯过程任务。

你如果要用到贝叶斯优化且有可用的GPU计算资源,那GpFlowOpt库应该是理想之选。

7. FAR-HO

https://github.com/lucfra/FAR-HO
有22星, 5 Forks,110 Commits
需手动安装

FAR-HO库运行在TensorFlow上,包含一系列基于梯度的优化器,包括Reverse-HG和Forward-HG。

这个库旨在构建TensorFlow中基于梯度的超参数优化器的访问,允许在GPU或其他张量优化计算环境中进行深度学习模型的训练和超参数优化。

8. Xcessiv

https://github.com/reiinakano/xcessiv
1055星,76 Forks,316 Commits
最新版本0.5.1,2017.8.10更新

Xcessiv库支持大规模模型开发、执行和集成。它的优势在于能够在单个GUI界面中管理多个机器学习模型的训练、执行和评估。

它具有多个集成工具来组合这些模型,以实现最佳性能。它包括一个贝叶斯搜索参数优化器,这个优化器支持高级别并行计算,还支持与TPOT库的集成。

9. HORD

https://github.com/ilija139/HORD
52星,8 Forks,33 Commits
需手动安装

HORD是一个用于超参数优化的独立算法,它能为需要优化的黑盒模型生成一个代理函数,并用它来生成最接近理想状态的超参数组合,以减少对整个模型的评估。

与Tree Parzen Estimators、SMAC和高斯过程方法相比,它始终具有更高的一致性和更低的错误率,而且这个方法特别适用于极高维数据分析。

10. ENAS-pytorch

https://github.com/carpedm20/ENAS-pytorch
848星, 135 Forks,33 Commits
需手动安装

ENAS-pytorch可在pytorch中实现高效的深度学习结构搜索。它使用参数共享来构建更高效的网络,使其适用于深度学习结构搜索。

645d0bcebf055db7e58d43c11ea45f6cf9a8c382

全流程解决方案

1. ATM

https://github.com/HDI-Project/ATM
251星,56 Forks, 557 Commits
需手动安装

Auto-Tune Models是麻省理工学院HDI项目开发出的框架,可用于机器学习模型的快速训练,仅需很小的工作量。

它使用贝叶斯优化和Bandits库,利用穷举搜索和超参数优化来实现模型选择。要注意,ATM仅支持分类问题,也支持AWS上的分布式计算。

2. MLBox

https://github.com/AxeldeRomblay/MLBox
504星,115 Forks,854 Commits
最新版本0.5.0,2017.8.25更新

MLBox是一个新出的框架,其目标是为自动机器学习提供一个最新和最先进的方法。

除了许多现有框架实现的特征工程外,它还提供数据采集、数据清理和训练-测试漂移检测等功能。

此外,它使用Tree Parzen Estimators来优化所选模型的超参数。

3. auto_ml

https://github.com/ClimbsRocks/auto_ml
793星,146 Forks,1149 Commits
最新版本2.7.0,2017.9.11更新

Auto_ml是一种实用工具,旨在提高从数据中获取的信息量,且无需除数据清洗外的过多工作。

该框架使用进化网格搜索算法来完成特征处理和模型优化的繁重工作。它利用其它成熟函数库(如XGBoost、TensorFlow、Keras、LightGBM和sklearn)来提高计算速度,还宣称只需最多1毫秒来实现预测,这也是这个库的亮点。

该框架可快速洞察数据集(如特征重要性)来创建初始预测模型。

4. auto-sklearn

https://github.com/automl/auto-sklearn
2271星, 438 Forks,1839 Commits
最新版本0.3.0,2018.1.5更新

Auto-sklearn使用贝叶斯搜索来优化机器学习流程中使用的数据预处理器、特征预处理器和分类器,并把多个步骤经过训练后整合成一个完整模型。

这个框架由弗莱堡大学的ML4AAD实验室编写,且其中的优化过程使用同一实验室编写的SMAC3框架完成。

顾名思义,这个模型实现了sklearn中机器学习算法的自动构建。Auto-sklearn的主要特点是一致性和稳定性。

5. H2O

https://github.com/h2oai/h2o-3
3132星, 1217 Forks,22936 Commits
最新版本3.20.0.1,2018.6.7更新

H2O是一个用Java编写的机器学习平台,它和sklearn等机器学习库的使用体验相似。但是,它还包含一个自动机器学习模块,这个模块利用其内置算法来创建机器学习模型。

该框架对内置于H2O系统的预处理器实施穷举搜索,并使用笛卡尔网格搜索或随机网格搜索来优化超参数。

H2O的优势在于它能够形成大型计算机集群,这使得它在规模上有所增长。它还可在python、javascript、tableau、R和Flow(web UI)等环境中使用。

6. TPOT

https://github.com/EpistasisLab/tpot
4130星,705 Forks,1766 Commits
最新版本0.9,2017.9.27更新

TPOT为基于树的流程优化工具,是一种用于查找和生成最佳数据科学流程代码的遗传编程框架。TPOT和其他自动机器学习框架一样,从sklearn库中获取算法。

TPOT的优势在于其独特的优化方法,可以提供更有效的优化流程。

它还包括一个能把训练好的流程直接转换为代码的工具,这对希望能进一步调整生成模型的数据科学家来说是一个主要亮点。



原文发布时间为:2018-08-22

本文作者:Alexander Allen、Adithya Balaji

本文来自云栖社区合作伙伴“量子位”,了解相关信息可以关注“量子位”。

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
14天前
|
机器学习/深度学习 PyTorch TensorFlow
是否有其他框架可以在iOS设备上进行机器学习?
是否有其他框架可以在iOS设备上进行机器学习?
25 1
|
14天前
|
机器学习/深度学习 并行计算 测试技术
MLX vs MPS vs CUDA:苹果新机器学习框架的基准测试
如果你是一个Mac用户和一个深度学习爱好者,你可能希望在某些时候Mac可以处理一些重型模型。苹果刚刚发布了MLX,一个在苹果芯片上高效运行机器学习模型的框架。
179 1
|
2天前
|
机器学习/深度学习 敏捷开发 测试技术
深入理解自动化测试:框架选择与实践挑战利用机器学习技术优化数据中心冷却系统
【5月更文挑战第27天】 在现代软件开发周期中,自动化测试已成为确保产品质量和加快市场投放的关键步骤。本文深入探讨了自动化测试的框架选择问题,并剖析了实施过程中面临的挑战及其解决方案。通过比较不同测试框架的特点,我们旨在为读者提供一套明确的指导原则,帮助他们根据项目需求做出恰当的技术决策。同时,文中还分享了实际案例和最佳实践,以期帮助开发团队克服实施自动化测试时可能遇到的障碍。
|
10天前
|
机器学习/深度学习 分布式计算 调度
机器学习分布式框架Ray
Ray是UC Berkeley RISELab推出的一个高性能分布式执行框架,它比Spark更具计算优势,部署简单,支持机器学习和深度学习的分布式训练。Ray包括节点(head和worker)、本地调度器、object store、全局调度器(GCS),用于处理各种分布式计算任务。它支持超参数调优(Ray Tune)、梯度下降(Ray SGD)、推理服务(Ray SERVE)等。安装简单,可通过`pip install ray`。使用时,利用`@ray.remote`装饰器将函数转换为分布式任务,通过`.remote`提交并用`ray.get`获取结果。5月更文挑战第15天
42 3
|
14天前
|
机器学习/深度学习 边缘计算 TensorFlow
【Python机器学习专栏】Python机器学习工具与库的未来展望
【4月更文挑战第30天】本文探讨了Python在机器学习中的关键角色,重点介绍了Scikit-learn、TensorFlow和PyTorch等流行库。随着技术进步,未来Python机器学习工具将聚焦自动化、智能化、可解释性和可信赖性,并促进跨领域创新,结合云端与边缘计算,为各领域应用带来更高效、可靠的解决方案。
|
14天前
|
机器学习/深度学习 人工智能 PyTorch
《人工智能专栏》专栏介绍 & 专栏目录 & Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程
《人工智能专栏》专栏介绍 & 专栏目录 & Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程
129 1
|
14天前
|
机器学习/深度学习 人工智能 分布式计算
PAI底层支持多种计算框架
PAI底层支持多种计算框架
17 0
|
14天前
|
存储 机器学习/深度学习 人工智能
基于Megatron-Core的稀疏大模型训练工具:阿里云MoE大模型最佳实践
随着大模型技术的不断发展,模型结构和参数量级快速演化。大模型技术的应用层出不穷。大模型展现惊人效果,但训练和推理成本高,一直是巨大挑战。模型稀疏化能降低计算和存储消耗。近期以Mixtral为代表的MoE(多专家混合)大模型证明了稀疏MoE技术能大幅降低计算量、提升推理速度,模型效果甚至超过同规模稠密模型。阿里云PAI和NVIDIA团队深入合作,基于Megatron-Core MoE框架,解决了MoE大模型训练落地时会遇到的可拓展性、易用性、功能性以及收敛精度等核心问题,在下游任务上取得了很好的模型效果。
|
14天前
|
机器学习/深度学习 PyTorch TensorFlow
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
44 0
|
7月前
|
机器学习/深度学习 算法 TensorFlow
机器学习框架教程:介绍一些流行的机器学习框架(如Scikit-learn、XGBoost等)
机器学习框架教程:介绍一些流行的机器学习框架(如Scikit-learn、XGBoost等)
257 0

热门文章

最新文章