介绍
AutoML(自动机器学习)也被称为自动化机器学习。在2018年,谷歌推出了云端 AutoML,引起了很大的关注,是机器学习和人工智能领域最重要的工具之一。在本文中,您将学习使用谷歌云端 AutoML 构建机器学习模型的“无代码”解决方案。
AutoML 是 Google 云平台 Vertex AI 的一部分。Vertex AI 是云端构建和创建机器学习管道的端到端解决方案。但是,我们将在未来的文章中讨论 Vertex AI 的细节。AutoML 主要依赖于迁移学习和神经搜索架构。您只需要提供数据,之后 AutoML 将为您的用例构建一个最佳的自定义模型。
在本文中,我们将讨论使用 Python 代码在 Google 云平台上实现 AutoML 的好处、用法和实际实现。
学习目标
- 让读者了解如何使用 AutoML 和代码
- 了解 AutoML 的好处
- 如何使用客户端库创建 ML 管道
本文是数据科学博客马拉松的一部分。
问题陈述
构建机器学习模型是一个耗时的过程,需要很多专业知识,如精通编程语言、数学和统计学的知识以及对机器学习算法的理解。过去,只有具备技术技能的人才能从事数据科学和构建模型。对于非技术人员,构建机器学习模型是一项最困难的任务。但是,对于构建模型的技术人员来说,道路并不容易。一旦模型建立起来,其维护、部署和自动缩放需要额外的努力,人力和需要略微不同的技能。为了克服这些挑战,全球搜索巨头谷歌于2014年推出了 AutoML,但后来才公开发布。
AutoML 的好处
- AutoML 减少了手动干预,需要很少的机器学习专业知识。
- AutoML 允许技术和非技术人员在不编写任何代码的情况下构建机器学习模型
- 它负责构建模型的每一个步骤,如数据预处理、特征工程、模型构建、超参数调整、模型评估和测试数据预测,因此您不需要编写任何代码来执行这些任务
- AutoML 具有直观的用户界面,并提供不同的 API
- AutoML 还提供用于 Python 和其他编程语言的客户端库
支持的数据类型
AutoML 支持无结构和结构化数据,分为四种类型
- 图像
- 表格
- 视频
- 文本
对于这四种数据类型,您可以执行 AutoML 支持的某些活动。
图像
使用图像数据集,您可以在 AutoML 中执行以下任务
- 图像分类(单标签)
- 图像分类(多标签)
- 对象检测
- 图像分割
表格
使用表格数据集,您可以执行以下任务:
- 回归
- 分类
- 时间序列预测
视频
您可以使用视频数据集执行以下活动
- 对象检测
- 视频动作识别
- 视频对象跟踪
文本
AutoML 文本数据支持以下任务
- 情感分析
- 文本分类(单标签)
- 文本分类(多标签)
- 实体抽取
实现
要使用AutoML,您应该在Google Cloud Platform上拥有帐户。帐户设置是一个非常简单的过程,只需转到URL https://console.cloud.google.com/并单击加入即可,它将要求您的Gmail电子邮件ID和密码,然后在GCP上创建一个帐户。单击搜索栏并搜索Vertex AI,在左侧您将看到Vertex AI的所有组件,单击工作台。
工作台为您提供了一个jupyter lab,您可以在云上使用虚拟机创建笔记本实例。选择“USER-MANAGED NOTEBOOKS”实例,然后单击“NEW NOTEBOOK”,选择Python 3并将默认设置保留为原样,需要两到三分钟,Jupyter Lab将为您创建。您还可以创建带或不带GPU的tensorflow和pytorch实例。单击“OPEN JUPYTERLAB”,然后从笔记本部分单击Python 3(ipykernel)。您的Jupyter笔记本已准备好,现在您可以编写类似于本地Python Jupyter笔记本的代码。
AutoML客户端库(Python版)
我们将使用Python中的AutoML客户端库创建一个表格分类模型进行演示。
首先,您需要安装两个软件包。
!pip install --upgrade google-cloud-aiplatform
!pip install --upgrade google-cloud-storage
一旦这两个软件包成功安装,就可以重新启动核心。您可以通过两种方式重新启动内核,一种是从用户界面,从顶部栏中选择“Kernel”选项卡,然后单击“Restart Kernel”,第二个选项是通过编程。
#重新启动内核
import os
if not os.getenv("IS_TESTING"):
import ipython
app = Ipython.Application.instance()
app.kernel.do_shutdown(True)
设置您的项目ID、桶名称和区域。如果您不知道您的项目ID,请运行下面的代码使用gcloud命令来获取您的Google Cloud项目ID。
import os
PROJECT_ID = ''
if not os.getenv("IS_TESTING"):
proj_output = !gcloud config list --format 'value(core.project)' 2>/dev/null
PROJECT_ID = proj_output[0]
print("Project ID: ", PROJECT_ID)
#设置项目ID、桶名称和区域
PROJECT_ID = '@YOUR PROJECT ID' #从上面的代码中,您可以获取您的项目ID
BUCKET_NAME = 'gs://PROJECT_ID' #您可以设置自己的桶名称
REGION = 'us-west1' #如果不同,请更改区域
为什么我们需要一个桶名称?在AutoML中,您可以使用三种方法上传数据:
- BigQuery
- Cloud Storage
- 本地驱动器(从本地机器)
在此示例中,我们正在从云存储上传数据集,因此需要创建一个桶,我们将在其中上传CSV文件。
在云存储中创建一个存储桶,并设置来自Google云存储的数据路径。
#使用gsutil命令,我们可以在云存储中创建一个桶
! gsutil mb -l $REGION $BUCKET_NAME
#检查桶是否创建
! gsutil ls -al $BUCKET_NAME
#gcs中的数据集路径
IMPORT_FILE = 'data.csv'
gcs_path = f"{BUCKET_NAME}/{IMPORT_FILE}"
现在,我们需要在AutoML中创建一个数据集,然后在该数据集上训练模型。
#导入必要的库
import os
from google.cloud import aiplatform
#初始化AI平台
aiplatform.init(project=PROJECT_ID, location=REGION)
#在AutoML中创建数据集
ds = aiplatform.TabularDataset.create(
display_name = 'data_tabular', #设置自己的名称
gcs_source = gcs_path)
#在AutoML中创建训练工作,以运行模型
job = aiplatform.AutoMLTabularTrainingJob(
diaply_name = '#设置自己的名称',
optimization_prediction_type = 'classification',
column_transformations = [
{'categorical' : {'column_name': 'City'}}, #只是随机给定名称
{'numeric' : {'column_name': 'Age'}},
{'numeric' : {'column_name': 'Salary'}}])
#运行模型
#这将需要时间,具体取决于您的数据集
model = job.run(
dataset = ds,
target_column = Adopted,
training_fraction_split = 0.8,
test_fraction_split = 0.2,
model_display_name = '#给自己的名称',
disable_early_stopping = False)
训练完成后,我们将使用端点部署我们的模型。端点是Vertex AI的组件之一,您可以在其中部署模型并进行在线预测。
# 部署模型
endpoint = model.deploy(machine_type = 'n1-standard-4')
这将需要几分钟时间。在创建端点实例时,明智地选择您的机器类型,因为这将产生费用。设置低机器类型会导致更少的费用,而设置高机器类型会导致更高的费用。有关定价的更多明确信息,请查看以下链接。
https://cloud.google.com/products/calculator#id=9c1e6e38-ba1e-4b40-b1e4-52c86bb9ab29
#进行预测
pred = endpoint.prediction([
{'City': 'Madrid',
'Age': 52,
'Salary': 70000}])
print(pred)
结论
Google Cloud AutoML是一个强大的工具,任何人都可以使用它构建机器学习模型,而无需编写代码。AutoML具有非常交互式的用户界面,您可以从中构建和部署模型,而无需对算法和编码有广泛的了解。然而,本文的关键要点是:
- 如何利用AutoML客户端库的编程方式来利用AutoML服务
- 您可以在AutoML中构建不同类型的模型,例如图像分类、文本实体提取、时间序列预测、对象检测等
- 您不需要太多的ML专业知识来使用AutoML,以及它如何减少手动干预。
- 它如何使开发人员和数据科学家能够快速高效地利用AI技术的力量在他们的应用程序中。
常见问题
本文中显示的媒体不归Analytics Vidhya所有,仅在作者的自由裁量下使用。