【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

7 个 AutoML 库:应对机器学习的下一波浪潮

  • 2019-04-27
  • 本文字数:7034 字

    阅读完需:约 23 分钟

7个AutoML库:应对机器学习的下一波浪潮

自动机器学习AutoML)是将机器学习应用于现实问题的端到端流程自动化的过程。AutoML 使真正意义上的机器学习成为可能,即使对于没有该领域专业知识的人也是如此。本文介绍了一些流行的 AutoML 框架,这些框架的趋势是自动化部分或整个机器学习的管道。


人工智能和机器学习仍然是一个进入门槛较高的领域,需要专业的知识和资源,很少有公司可以自己承担。–李飞飞


Mercari是一款在日本很受欢迎的购物应用程序,它一直使用 AutoML Vision(谷歌的 AutoML 解决方案)对图像进行分类。根据 Mercari 的说法,他们一直在“开发自己的 ML 模型,在照片上传的用户界面上推荐 12 个主要品牌的品牌名称。”


虽然他们自己在 TensorFlow 上训练的模型达到了 75%的精度,但 AutoML Vision 的高级模式因为拥有 50,​​000 张训练图像,所以精度更是高达 91.3%,提升了竟有 15%。基于如此惊人的结果,Mercari已经将AutoML集成到他们的系统中。


AutoML 通过使不同背景的人能够演进机器学习模型来解决复杂的场景,正在从根本上改变基于 ML 的解决方案给人们的印象,以上仅是说明它如何改变的其中一例。

自动机器学习:AutoML

近年来,机器学习在各个领域都取得了重大突破。金融服务、医疗保健、零售、交通等领域一直在以某种方式使用机器学习系统,而且取得了很好的效果。


今天的机器学习不仅限于研发应用,而且已经进入了企业领域。不过,传统的 ML 流程仍依赖于人力,但并非所有企业都有资源来投资经验丰富的数据科学团队,AutoML 可能正是这种困境的一个答案。


自动机器学习AutoML)是将机器学习应用于现实问题的端到端过程自动化的过程。AutoML 使机器学习真正意义上成为可能,即使对于在该领域没有专业知识的人也是如此。


典型的机器学习模型包括以下四个过程:



如何自动化机器学习管道:Axel de Romblay


从摄取数据到预处理、优化,然后预测结果,每个步骤都由人来控制和执行。AutoML 主要关注两个主要方面:数据采集/收集和预测*。*中间发生的所有其他步骤都可以轻松实现自动化,同时提供经过优化并准备好进行预测的模型。

为什么需要 AutoML

在过去几年中,对机器学习系统的需求飙升。这是因为 ML 如今在广泛的应用中取得了成功。然而,即使有这种明确的迹象表明机器学习可以为某些企业提供支持,但很多公司仍在为部署 ML 模型而艰难地努力着。


首先,他们需要建立一支由经验丰富的数据科学家组成的团队,这些科学家都要拿丰厚的薪水。其次,即使你拥有一支优秀的团队,往往需要更多的经验来决定哪种模式最适合你的问题,而不是知识。


机器学习在各种应用中的成功,导致了对机器学习系统不断增长的需求,这些系统可以由非专家使用¹。AutoML 倾向于尽可能多地自动化 ML 管道中步骤,在只需最少人力的情况下仍保持模型的性能。

好处

AutoML 的优点可归纳为三大要点:


  • 通过自动执行的重复性任务来提高工作效率。这使得数据科学家能够更多地关注问题而不是模型。

  • 自动化 ML 管道还有助于避免可能因手动引入的错误

  • 最后,AutoML 是向机器学习民主化迈出的一步,它使所有人都能使用 ML 的功能。

AutoML 框架

让我们来看看一些流行的框架,这些框架的趋势是自动化部分或整个机器学习的管道。这个清单不可能太详尽,我尽力涵盖那些正在被大规模使用的框架。

1. MLBox


MLBox是一个功能强大的自动化机器学习 Python 库。根据官方文档,该库提供以下功能:


  • 快速读取,分布式数据预处理/清洗/格式化。

  • 高可靠性的特征选择,泄漏检测,准确的超参数优化

  • 用于分类和回归的最先进的预测模型(深度学习,堆叠,LightGBM,…)

  • 具有模型解释的预测

  • 已经在 Kaggle 上进行了测试并且表现良好。(参见 Kaggle “Two Sigma Connect:Rental Listing Inquiries”| Rank:85/2488

管道

MLBox 的主程序包包含 3 个子包,用于自动执行以下任务:


  • 预处理:用于读取和预处理数据

  • 优化:用于测试和交叉验证模型

  • 预测:用于预测。

安装

目前,MLBox 仅兼容 Linux,很快就会支持 Windows 和 MacOS。


#gccsudo apt-get install build-essential
#cmakepip install cmakepip install mlbox
复制代码

演示

在著名的房价回归(House Prices Regression)问题上运行“MLBox”的自动 ML 包。


完整的源代码

2. Auto-Sklearn

Auto-Sklearn是一个基于 Scikit-learn构建的自动化机器学习软件包。Auto-Sklearn 让机器学习的用户从算法选择和超参数调整中解放出来。它包括特征工程方法,如独热编码(One-Hot)、数字特征标准化、PCA 等。该模型使用 sklearn 估计器处理分类和回归问题。



Auto-sklearn管道


Auto-sklearn 创建了一个管道,并使用贝叶斯搜索对其进行优化。在 ML 框架的贝叶斯超参数优化中,添加了两个组件:元学习用于初始化贝叶斯优化器,从优化过程中评估配置的自动集合构造


Auto-sklearn 在中小型数据集上表现良好,但它还无法在大型数据集上产生性能最先进的现代深度学习系统。

安装

Auto-sklearn 目前仅适用于 Linux 系统的机器。


#dependenciescurl https://raw.githubusercontent.com/automl/auto-sklearn/master/requirements.txt | xargs -n 1 -L 1 pip install
#auto-sklearnpip install auto-sklearn
复制代码

演示

以下示例显示如何使用 Auto-Sklearn 拟合简单回归模型。


import sklearn.model_selectionimport sklearn.datasetsimport sklearn.metrics
import autosklearn.regression
def main(): X, y = sklearn.datasets.load_boston(return_X_y=True) feature_types = (['numerical'] * 3) + ['categorical'] + (['numerical'] * 9) X_train, X_test, y_train, y_test = \ sklearn.model_selection.train_test_split(X, y, random_state=1)
automl = autosklearn.regression.AutoSklearnRegressor( time_left_for_this_task=120, per_run_time_limit=30, tmp_folder='/tmp/autosklearn_regression_example_tmp', output_folder='/tmp/autosklearn_regression_example_out', ) automl.fit(X_train, y_train, dataset_name='boston', feat_type=feature_types)
print(automl.show_models()) predictions = automl.predict(X_test) print("R2 score:", sklearn.metrics.r2_score(y_test, predictions))

if __name__ == '__main__': main()
复制代码


资源

3.基于树的管道优化工具(TPOT)


TPOT是一个 Python 自动化机器学习工具,利用遗传算法来优化机器学习管道。TPOT 扩展了 Scikit-learn 框架,使用了自己的回归器和分类器方法。TPOT 的工作原理是探索数千条可能的管道,并为数据找到最好的一个。



TPOT自动化的机器学习过程


TPOT 无法自动处理自然语言输入。此外,它还无法处理分类字符串,在作为数据传入之前,这些字符串必须进行整数编码。

安装

pip install tpot  
复制代码


有关详细说明,请访问TPOT安装说明

演示

演示 TPOT 用于分类MNIST数字的工作。



MNIST数据库上的TPOT演示

4. H2O


H2O H20.ai公司的完全开源的分布式内存机器学习平台。H20 同时支持 R 和 Python,支持最广泛使用的统计和机器学习算法,包括梯度提升(Gradient Boosting)机器、广义线性模型、深度学习模型等。


H2O 包括一个自动机器学习模块,使用自己的算法来构建管道。它对特征工程方法和模型超参数采用了穷举搜索,优化了管道。


H2O 自动化了一些最复杂的数据科学和机器学习工作,例如特征工程、模型验证、模型调整、模型选择模型部署。除此之外,它还提供了自动可视化以及机器学习的解释能力(MLI)。

安装

请按照以下链接下载并安装 H2O。



下载和安装H2O - H2O 3.11.0.3888文档

演示

以下是一个 Python 示例,展示了 H2OAutoML 类的基本用法:


import h2ofrom h2o.automl import H2OAutoML
h2o.init()
# Import a sample binary outcome train/test set into H2Otrain = h2o.import_file("https://s3.amazonaws.com/erin-data/higgs/higgs_train_10k.csv")test = h2o.import_file("https://s3.amazonaws.com/erin-data/higgs/higgs_test_5k.csv")
# Identify predictors and responsex = train.columnsy = "response"x.remove(y)
# For binary classification, response should be a factortrain[y] = train[y].asfactor()test[y] = test[y].asfactor()
# Run AutoML for 20 base models (limited to 1 hour max runtime by default)aml = H2OAutoML(max_models=20, seed=1)aml.train(x=x, y=y, training_frame=train)
# View the AutoML Leaderboardlb = aml.leaderboardlb.head(rows=lb.nrows) # Print all rows instead of default (10 rows)
# model_id auc logloss mean_per_class_error rmse mse# --------------------------------------------------- -------- --------- ---------------------- -------- --------# StackedEnsemble_AllModels_AutoML_20181212_105540 0.789801 0.551109 0.333174 0.43211 0.186719# StackedEnsemble_BestOfFamily_AutoML_20181212_105540 0.788425 0.552145 0.323192 0.432625 0.187165# XGBoost_1_AutoML_20181212_105540 0.784651 0.55753 0.325471 0.434949 0.189181# XGBoost_grid_1_AutoML_20181212_105540_model_4 0.783523 0.557854 0.318819 0.435249 0.189441# XGBoost_grid_1_AutoML_20181212_105540_model_3 0.783004 0.559613 0.325081 0.435708 0.189841# XGBoost_2_AutoML_20181212_105540 0.78136 0.55888 0.347074 0.435907 0.190015# XGBoost_3_AutoML_20181212_105540 0.780847 0.559589 0.330739 0.43613 0.190209# GBM_5_AutoML_20181212_105540 0.780837 0.559903 0.340848 0.436191 0.190263# GBM_2_AutoML_20181212_105540 0.780036 0.559806 0.339926 0.436415 0.190458# GBM_1_AutoML_20181212_105540 0.779827 0.560857 0.335096 0.436616 0.190633# GBM_3_AutoML_20181212_105540 0.778669 0.56179 0.325538 0.437189 0.191134# XGBoost_grid_1_AutoML_20181212_105540_model_2 0.774411 0.575017 0.322811 0.4427 0.195984# GBM_4_AutoML_20181212_105540 0.771426 0.569712 0.33742 0.44107 0.194543# GBM_grid_1_AutoML_20181212_105540_model_1 0.769752 0.572583 0.344331 0.442452 0.195764# GBM_grid_1_AutoML_20181212_105540_model_2 0.754366 0.918567 0.355855 0.496638 0.246649# DRF_1_AutoML_20181212_105540 0.742892 0.595883 0.355403 0.452774 0.205004# XRT_1_AutoML_20181212_105540 0.742091 0.599346 0.356583 0.453117 0.205315# DeepLearning_grid_1_AutoML_20181212_105540_model_2 0.741795 0.601497 0.368291 0.454904 0.206937# XGBoost_grid_1_AutoML_20181212_105540_model_1 0.693554 0.620702 0.40588 0.465791 0.216961# DeepLearning_1_AutoML_20181212_105540 0.69137 0.637954 0.409351 0.47178 0.222576# DeepLearning_grid_1_AutoML_20181212_105540_model_1 0.690084 0.661794 0.418469 0.476635 0.227181# GLM_grid_1_AutoML_20181212_105540_model_1 0.682648 0.63852 0.397234 0.472683 0.223429## [22 rows x 6 columns]

# The leader model is stored hereaml.leader
# If you need to generate predictions on a test set, you can make# predictions directly on the `"H2OAutoML"` object, or on the leader# model object directly
preds = aml.predict(test)
# or:preds = aml.leader.predict(test)
复制代码


资源

输出

AutoML 对象包括在过程中训练的模型的“排行榜”,根据问题类型(排行榜的第二列)按默认度量排名。以下是二进制分类任务的排行榜示例:


5. AutoKeras


Auto-Keras DATA Lab构建的一个用于自动化机器学习的开源软件库。基于 Keras深度学习框架,Auto-Keras 提供了自动搜索深度学习模型的体系结构和超参数的功能。


API 的设计遵循 Scikit-Learn API 的经典设计,因此使用起来非常简单。当前版本提供了在深度学习过程中自动搜索超参数的功能。


Auto-Keras 的趋势是通过使用自动神经架构搜索(NAS)算法简化 ML 过程。NAS 基本上用一组自动调整模型的算法,替代了深度学习工程师/从业者。

安装

安装部分也很简单:


pip install autokeras #only comptible with Python 3.7
复制代码

演示

以下是 MNIST 数据集上 Auto-Keras 库的演示:


from keras.datasets import mnist  from autokeras import ImageClassifier  from autokeras.constant import Constant  
if __name__ == '__main__': (x_train, y_train), (x_test, y_test) = mnist.load_data() x_train = x_train.reshape(x_train.shape + (1,)) x_test = x_test.reshape(x_test.shape + (1,)) clf = ImageClassifier(verbose=True, augment=False) clf.fit(x_train, y_train, time_limit=30 * 60) clf.final_fit(x_train, y_train, x_test, y_test, retrain=True) y = clf.evaluate(x_test, y_test)
print(y * 100)
复制代码


资源

6. Cloud AutoML

Cloud AutoML是来自 Google 的一套机器学习产品,利用 Google 最先进的传输学习和神经架构搜索(NAS)技术,让具有有限的机器学习专业知识的开发人员能够训练出特定的业务需求的高质量模型。


Cloud AutoML 提供了一个简单的图形用户界面(GUI),可根据自己的数据来训练、评估、改进和部署模型。目前,该套件提供以下 AutoML 解决方案:



Google的AutoML类别下提供的产品


谷歌 AutoML 的缺点是非开源的,因此需要付钱购买。对于 AutoML Vision,成本既取决于培训模型所花费的时间,也取决于发送给 AutoML Vision 进行预测的图像数量。定价如下:



AutoML Vision定价

7. TransmogrifAI


TransmogrifAI Salesforce的一个开源自动化机器学习库。该公司的旗舰 ML 平台名为爱因斯坦,也由 TransmogrifAI 驱动。它是一个端到端的 AutoML 库,用于Scala编写的结构化数据,运行在 Apache Spark之上。在以下场景中,TransmogrifAI 特别有用:


  • 快速训练高质量机器学习模型,只需极少的手动调节

  • 构建模块化、可重用、强类型的机器学习工作流

安装

先决条件是需要安装 Java 和 Spark:


#Install JAVA 1.8#Get Spark 2.3.xgit clone https://github.com/salesforce/TransmogrifAI.gitcd TransmogrifAI && ./gradlew compileTestScala installDist
复制代码


阅读文档,获取完整的安装说明。

演示

用 TransmogrifAI 预测泰坦尼克号幸存者,在这里查看整个示例。


import com.salesforce.op._import com.salesforce.op.readers._import com.salesforce.op.features._import com.salesforce.op.features.types._import com.salesforce.op.stages.impl.classification._import org.apache.spark.SparkConfimport org.apache.spark.sql.SparkSession
implicit val spark = SparkSession.builder.config(new SparkConf()).getOrCreate()import spark.implicits._
// Read Titanic data as a DataFrameval passengersData = DataReaders.Simple.csvCase[](path = pathToData).readDataset().toDF()
// Extract response and predictor featuresval (survived, predictors) = FeatureBuilder.fromDataFrame[](passengersData, response = "survived")
// Automated feature engineeringval featureVector = predictors.transmogrify()
// Automated feature validation and selectionval checkedFeatures = survived.sanityCheck(featureVector, removeBadFeatures = true)
// Automated model selectionval (pred, raw, prob) = BinaryClassificationModelSelector().setInput(survived, checkedFeatures).getOutput()
// Setting up a TransmogrifAI workflow and training the modelval model = new OpWorkflow().setInputDataset(passengersData).setResultFeatures(pred).train()
println("Model summary:\n" + model.summaryPretty())
复制代码


在这里查看上面代码的结果。

AutoML 的未来

从本质上讲,AutoML 的目的是自动化重复的任务,如管道创建和超参数调整,以便数据科学家在实际中可以将更多的时间花在手头的业务问题上。


AutoML 还在于让所有人都能使用这项技术,而不仅仅少数人才能用。AutoML 和数据科学家可以联合起来加速 ML 的发展过程,从而实现机器学习的真正效率。


AutoML 是否成功取决于它的使用率和在这个领域所取得的进展。很明显,AutoML 是机器学习未来的一个重要组成部分。

参考

  1. 高效可靠的自动化机器学习

  2. 自动机器学习框架的基准


查看原文链接AutoML: The Next Wave of Machine Learning


2019-04-27 14:0018098
用户头像

发布了 43 篇内容, 共 33.2 次阅读, 收获喜欢 136 次。

关注

评论

发布
暂无评论
发现更多内容

Dapr实战—RabbitMQ binding

青柚1943

Docker RabbitMQ dapr 发布订阅 Binding

真香!腾讯T4梳理的Java核心宝典(框架+原理+笔记+导图)

做梦都在改BUG

Java 程序员

时序数据库的流计算支持

KaiwuDB

流计算 时序数据库 KaiwuDB

项目经理问我Tomcat 与 Undertow 怎么抉择?此文教她选

Java你猿哥

Java jdk Spring Boot ssm

国内首发|焱融科技 YRCloudFile 支持 NVIDIA GPUDirect Storage(GDS)

焱融科技

人工智能 分布式存储 分布式文件存储 全闪存储 GPT-4

PHP集成开发:phpstorm2022永久版 激活码

魔仙苹果mac堡

软件 PHP开发 PhpStorm 2022激活码 PhpStorm中文版

聚势启新,赢未来!网银互联通航云计算数据中心三期盛大落地!

科技热闻

系统架构设计:进程缓存和缓存服务,如何抉择?

做梦都在改BUG

Java 架构设计 缓存服务 进程缓存

基于Pub/Sub模式的阿里云IoT同步调用详解——设备管理运维类

阿里云AIoT

物联网 API

高效稳定的通用增量 Checkpoint 详解之二:性能分析评估

Apache Flink

大数据 flink 实时计算

通过HTTP/2通道实时获取IoT设备状态和数据——设备管理运维类

阿里云AIoT

Java 物联网

谷歌Android things物联网硬件接入阿里云IoT物联网套件实战——设备接入类

阿里云AIoT

物联网 传感器 Android开发

难以置信!四面斩获字节offer,全靠这份“算法最优解”宝典

做梦都在改BUG

Java 数据结构 面试 算法 LeetCode

面试官:还有比Redis更骚的分布式锁的实现方式吗?

做梦都在改BUG

Java Spring Boot 分布式锁 etcd

用图技术搞定附近好友、时空交集等 7 个典型社交网络应用

NebulaGraph

推荐算法 图数据库 社交网络

华为云GaussDB以技术创新引领金融行业分布式转型

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

依靠这份PDF面试资料文档,各种美团,阿里等大厂offer拿到手软

Java你猿哥

Java 后端 ssm 面经 八股文

数字音频编辑|Cockos REAPER最新破解教程

魔仙苹果mac堡

Cockos Reaper破解 音频编辑

好用的油猴Safari浏览器插件:Tampermonkey 中文版

真大的脸盆

Mac 油猴 油猴插件 脚本管理 脚本插件

【低代码实践】京东科技活动平台:魔笛介绍

京东科技开发者

低代码 企业号 3 月 PK 榜 活动平台

阿里云助力元戎启行 加速自动驾驶应用落地

云布道师

自动驾驶 阿里云 弹性计算

阿里云IoT物模型-属性,服务,事件通信的topic和payload详解——设备管理运维类

阿里云AIoT

物联网

浅析synchronized底层实现与锁升级过程

做梦都在改BUG

Java JVM synchronized

太强了!阿里架构师把自己会的都总结到了这份1737页实战开发手册中

做梦都在改BUG

Java

Selenium自动化测试

测吧(北京)科技有限公司

测试

智维数据荣获2022金融科技应用创新奖

智维数据

金融科技 智能运维 金融电子化 智维数据

阿里云IoT物联网平台基础版和高级版数据进入规则引擎的流转详解——普及类

阿里云AIoT

物联网

Serverless:基于个性化服务画像的弹性伸缩实践

百度Geek说

云原生 成本优化 Servelress 弹性伸缩 企业号 3 月 PK 榜

经过阿里四面而形成的10万字java面试题及答案文档到底有多牛?

Java你猿哥

Java 阿里巴巴 后端 面经 八股文

flomo 浮墨笔记向飞书收购 “幕布”,不卖永久会员、不融资的“反骨”逻辑

B Impact

10Wqps 超高并发 API网关 架构演进之路

Java你猿哥

Java 架构 微服务 SSM框架 api 网关

7个AutoML库:应对机器学习的下一波浪潮_AI&大模型_Parul Pandey_InfoQ精选文章