使用 Auto-Keras 进行自动化机器学习
使用 Auto-Keras 进行自动化机器学习
了解自动化机器学习以及如何使用 auto-keras 完成它。如今,机器学习并不是一个非常罕见的术语,因为像 DataCamp、Coursera、Udacity 等组织一直在努力提高他们的效率和灵活性,以便将机器学习的教育带给普通人。凭借他们平台的优势,如今几乎不需要先决条件即可开始该领域真的很容易。然而,自动化机器学习一词如今在流行的数据科学教育论坛上成为很多头条新闻。许多组织,如 Google、H2O.ai 等,都在这一领域开展工作,值得称赞。与机器学习相比,这不是一个非常常见的话题。因为机器学习处理的是自动化部分本身;因此,自然而然地,首先想到的问题是 - “机器学习也可以自动化吗?"
了解标准 Machine Learning 管道
当您以数据科学家的身份解决问题时,您的标准工作流程如下所示:
- 数据采集
- 数据预处理
- 初始化可能适合问题的机器学习模型
- 训练模型
- 测试模型
- 调整模型的参数
- 再次测试模型
- 传达结果
第二步,数据预处理,其上下文非常广泛,因为它本质上是上述管道中最耗时的任务之一,它包括许多子任务,例如数据清理、数据转换、特征选择等。从 3 到 7 的步骤仅适用于一个机器学习模型。一个好的从业者肯定不会只在一个模型之后就停下来。他将在不同的模型上尝试实验以比较它们的结果,并最终决定问题的最佳模型。那么,这是另一组非常耗时的任务 - 决定选择哪种模型?
机器学习管道如何实现自动化
您将继续本节,为问题确定最佳模型,以及可能性的数量和截止日期成反比的情况。在本教程的开头,您遇到了一个问题:“机器学习也可以自动化吗?这个问题一点也不愚蠢。甚至伟大的 Sebastian Raschka 在他的一次采访中也将自动化机器学习描述为“自动化的自动化”。
重新访问您刚刚研究的数据科学任务的标准工作流中的第 5 步 - 调整模型的超参数。假设您已经完成了后续步骤的数据准备,并且您刚刚启动了一个分类器 X X X。现在,假设 X X X 接受 5 个不同的超参数。因此,您将不得不尝试相同的分类器 X X X 但使用不同的超参数值集,这绝对不是一项容易的任务。现在是更令人不安的部分。在尝试了各种组合后,您发现结果不够好。因此,您决定再测试四个分类器(每个分类器有 6 个不同的超参数)。你能想象这有多耗时吗?即使在那之后,如果您没有得到好的结果怎么办?对此的调查将不过是另一个非常耗时的过程。
因此,自动化机器学习的理念就来自这个问题。"如果必须使用各种算法和许多不同的超参数配置构建大量机器学习模型,那么这种模型构建可以自动化,模型性能和准确性的比较也可以自动化。- KDNuggets
现在有理由解释为什么 Automated Machine Learning 这个术语最近在流行的数据科学教育论坛上成为很多头条新闻。现在,您将在下一节中了解有关自动化机器学习的更多信息
自动化机器学习简介
为不同的机器学习模型优化超参数的任务本质上也很可能非常耗时。在更特定于计算机科学的术语中,超参数的调整是一个搜索过程,在这种情况下,该过程可能非常详尽。那么,如果这个过程本身可以自动化呢?嗯,这就是自动化机器学习的基本作用。“自动化机器学习是解决数据科学家短缺问题的直接解决方案,因为它可以通过加快工作周期、提高模型准确性来大幅提高数据科学家的绩效和生产力,并最终甚至可能取代对数据科学家的需求。”-用于物联网的自动化机器学习
您现在已经具备了有关自动化机器学习的足够知识,并已准备好将其付诸实践。但首先,让我们看看一些广泛用于进行自动化机器学习的 Python 库是什么。
用于自动化机器学习的 Python 库
有许多 Python 库可用于执行自动化机器学习。它们都试图实现或多或少相同的目标,即自动化机器学习过程。以下是一些用于自动化机器学习的最广泛使用的 Python 库:
- 自动 Sklearn
- TPOT 系列
- 自动 Keras
- H2O.ai
- Google 的 AutoML
这些库中的每一个都有自己的方法来处理 “自动化的自动化” 过程。但在本教程中,您将使用 Auto-Keras。那为什么还要等呢?让我们开始吧
Auto-keras 简介
“Auto-Keras 是一个用于自动化机器学习的开源软件库。”(来源)它由德克萨斯 A&M 大学的 DATA 实验室和社区贡献者开发。根据官方网站 - “这种自动化机器学习的最终目标是为数据科学或机器学习背景有限的领域专家提供易于访问的深度学习工具。Auto-Keras 提供自动搜索深度学习模型的架构和超参数的功能。auto-keras"
现在您已经成功安装了 Auto-Keras,是时候进行一些快速实施了。
使用 Auto-keras 的 AutoML 案例研究
在本案例研究中,您将使用非常流行的 MNIST 数据集。 内置了此数据集。因此,您无需单独下载。您将从加载 的模块开始。您还将从模块加载 MNIST 数据集。
keras``ImageClassifier``auto-keras``keras
from keras.datasets import mnist
from autokeras import ImageClassifier
您从 module 加载了 MNIST 数据集,并且还从 中导入了 。现在,您将数据集分为 train 和 test split。
keras.datasets``ImageClassifier``auto-keras
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(x_train.shape + (1,)) # (1,) denotes the channles which is 1 in this case
x_test = x_test.reshape(x_test.shape + (1,)) # (1,) denotes the channles which is 1 in this case
Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz
11493376/11490434 [==============================] - 1s 0us/step
您已经分离了训练和测试拆分,现在您将使用 和 拟合 ImageClassifier。您将在 和 上测试其性能。
x_train``y_train``x_test``y_test
# Instantiate the ImageClassifier class
clf = ImageClassifier(verbose=True, augment=False)
# Fit the train set to the image classifier
clf.fit(x_train, y_train, time_limit=12 * 60 * 60)
clf.final_fit(x_train, y_train, x_test, y_test, retrain=True)
# Summarize the results
y = clf.evaluate(x_test, y_test)
print(y * 100)
就这么简单。只需 4 到 5 行代码,您就可以完成快速实验。嗯,它并没有那么快。上面的代码需要相当长的时间才能执行。用于运行 Deep Learning 实验的体面配置无疑会对您有所帮助。Google Colab也是一个很好的起点。
现在,让我们详细了解您在上述代码中使用的参数。为此,您将参考
auto-keras
的文档,以下是文档的相关摘录:
- 在 ImageClassifier() 中:
- verbose:是否将搜索进程打印到输出的布尔值。
- augment:一个布尔值,指示数据是否需要扩充。如果未定义,则它将使用 Constant.DATA_AUGMENTATION 的值,默认情况下为 True。
- 在 fit() 方法中:
- time_limit:搜索的时间限制(以秒为单位)。
- final_fit():找到最佳架构后的最终训练。
- retrain:是否重新初始化模型权重的布尔值。
Auto-keras 是一个不断发展的库,目前仍处于预发布版本。根据官网介绍,它支持以下主要模块:
- supervised:所有监督任务的基类。
- bayesian:用于贝叶斯优化的 GaussianProcessRegressor。
- search:所有搜索器类的基类。每个搜索器类都可以覆盖其搜索函数来实现其策略。
- graph:表示 Keras 模型的神经架构图的类。Graph 从 Keras 模型中提取神经架构图。图中的每个节点都是层之间的中间张量。每个层都是图形中的一条边。值得注意的是,多个边缘可能引用同一图层。(例如,Add layer 是将两个张量添加到一个张量中。所以它与两条边有关。
- preprocessor:可以格式化数据的类。此类提供了将数据的分类标签转换为向量的方法。
- model_trainer:用于训练模型的类。此类可以使用给定的数据加载器训练 Pytorch 模型。metric、loss_function 和 model 必须彼此兼容。请参阅 属性 中的详细信息。
结尾
你已经坚持到了最后。在本教程中,您大致研究了机器学习的过程,并了解了如何实现自动化。您快速浏览了可用于执行 AutoML 的库。您使用并了解了它提供的高级抽象类型以及它的易用性。auto-kerasauto-keras
本教程可能会给您一个负面的概念,即 AutoML 在完全证明时可以取代许多数据科学家。真?再想一想。AutoML 实际上使数据科学家摆脱了为问题选择最佳模型的迭代过程的负担。在该课程中,数据科学家可能会更关注更重要的数据本身。Randy Olson 的这次采访涵盖了有关这个主题的一些美丽的见解。确保你读了一遍,你会再次感到沮丧。如果您觉得自己不确定机器学习从业者所做的工作,请查看这篇文章。