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

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*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)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
216 4
|
25天前
|
机器学习/深度学习 Python
机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况
本文介绍了机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况,而ROC曲线则通过假正率和真正率评估二分类模型性能。文章还提供了Python中的具体实现示例,展示了如何计算和使用这两种工具来评估模型。
46 8
|
5月前
|
机器学习/深度学习 数据可视化 搜索推荐
Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。
【7月更文挑战第5天】Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。流程包括数据获取、预处理、探索、模型选择、评估与优化,以及结果可视化。示例展示了用户行为、话题趋势和用户画像分析。Python的丰富生态使得社交媒体洞察变得高效。通过学习和实践,可以提升社交媒体分析能力。
89 1
|
2月前
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
57 2
|
3月前
|
机器学习/深度学习 人工智能 算法
ML.NET:一个.NET开源、免费、跨平台的机器学习框架
ML.NET:一个.NET开源、免费、跨平台的机器学习框架
|
4月前
|
机器学习/深度学习 PyTorch TensorFlow
机器学习框架调研
机器学习框架调研
41 1
|
4月前
|
机器学习/深度学习 JSON API
【Python奇迹】FastAPI框架大显神通:一键部署机器学习模型,让数据预测飞跃至Web舞台,震撼开启智能服务新纪元!
【8月更文挑战第16天】在数据驱动的时代,高效部署机器学习模型至关重要。FastAPI凭借其高性能与灵活性,成为搭建模型API的理想选择。本文详述了从环境准备、模型训练到使用FastAPI部署的全过程。首先,确保安装了Python及相关库(fastapi、uvicorn、scikit-learn)。接着,以线性回归为例,构建了一个预测房价的模型。通过定义FastAPI端点,实现了基于房屋大小预测价格的功能,并介绍了如何运行服务器及测试API。最终,用户可通过HTTP请求获取预测结果,极大地提升了模型的实用性和集成性。
285 1
|
4月前
|
机器学习/深度学习 PyTorch TensorFlow
NumPy 与机器学习框架的集成
【8月更文第30天】NumPy 是 Python 中用于科学计算的核心库之一,它提供了高效的多维数组对象,以及用于操作数组的大量函数。NumPy 的高效性和灵活性使其成为许多机器学习框架的基础。本文将探讨 NumPy 如何与 TensorFlow 和 PyTorch 等流行机器学习框架协同工作,并通过具体的代码示例来展示它们之间的交互。
65 0
|
4月前
|
机器学习/深度学习 数据采集 测试技术
利用Python实现简单的机器学习模型软件测试的艺术与科学:探索自动化测试框架的奥秘
【8月更文挑战第27天】在本文中,我们将一起探索如何通过Python编程语言创建一个简单的机器学习模型。我们将使用scikit-learn库中的线性回归模型作为示例,并通过一个实际的数据集来训练我们的模型。文章将详细解释每一步的过程,包括数据预处理、模型训练和预测结果的评估。最后,我们会用代码块展示整个过程,确保读者能够跟随步骤实践并理解每个阶段的重要性。
|
4月前
|
人工智能 物联网 异构计算
AI智能体研发之路-模型篇(一):大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用
AI智能体研发之路-模型篇(一):大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用
331 0
下一篇
DataWorks