自动创建机器学习模型

入门指南

概览

在本教程中,您将学习如何使用 Amazon SageMaker Autopilot 自动创建、训练、调优机器学习(ML)模型,并部署该模型以生成预测。
 

Amazon SageMaker Autopilot 通过帮助您根据数据自动构建、训练和调优最佳 ML 模型,消除了构建 ML 模型的繁重工作。借助 SageMaker Autopilot,您只需提供一个表格数据集,并选择要预测的目标列。SageMaker Autopilot 会探索您的数据,选择与您的问题类型相关的算法,准备用于训练的数据,测试各种模型,并选择性能最好的模型。然后,您可以部署其中一个候选模型,或进一步对它们进行迭代,以优化预测的质量。

学习内容

在本指南中,您将:

  • 使用 SageMaker Autopilot 创建训练实验
  • 了解训练实验的不同阶段
  • 基于训练实验识别和部署性能最佳的模型
  • 利用您已部署的模型进行预测

先决条件

在开始学习本指南之前,您需要:

  • 一个 AWS 账户:如果您还没有账户,请遵循设置 AWS 环境入门指南中的说明获取快速概览。

 AWS 使用经验

新手

 完成时间

45 分钟

 所需费用

请参阅 SageMaker 定价估算此教程的费用。

 需要

您必须登录 AWS 账户。

 使用的服务

Amazon SageMaker Autopilot

 上次更新日期

2022 年 7 月 12 日

使用案例

针对此工作流,您将使用合成的汽车保险索赔数据集。原始输入是两个保险数据表:一个索赔表和一个客户表。索赔表有一个 fraud(欺诈)的列,表明索赔是欺诈性的还是其他形式的。在本教程中,我们仅选择数据集的一小部分。不过,您可以遵循本教程中的相同步骤,来处理大型数据集。

 

第 1 步:设置 Amazon SageMaker Studio 域

一个 AWS 账户在一个 AWS 区域只能有一个 SageMaker Studio 域。如果您在美国东部(弗吉尼亚州北部)区域已经有一个 SageMaker Studio 域,请遵照 SageMaker Studio 设置指南将所需的 AWS IAM 策略附加到您的 SageMaker Studio 账户,然后跳过第 1 步,并直接继续第 2 步操作。 

如果您没有现有的 SageMaker Studio 域,则继续第 1 步以运行 AWS CloudFormation 模板,从而创建 SageMaker Studio 域并添加本教程剩余部分所需的权限。

选择 AWS CloudFormation 堆栈链接。此链接将打开 AWS CloudFormation 控制台并创建您的 SageMaker Studio 域和名为 studio-user 的用户。它还将添加所需权限到您的 SageMaker Studio 账户。在 CloudFormation 控制台中,确认美国东部(弗吉尼亚州北部)是右上角显示的“区域”。堆栈名称应为 CFN-SM-IM-Lambda-Catalog,且不应更改。此堆栈需要花费 10 分钟左右才能创建所有资源。

此堆栈假设您已经在账户中设置了一个公有 VPC。如果您没有公有 VPC,请参阅具有单个公有子网的 VPC以了解如何创建公有 VPC。

选择 I acknowledge that AWS CloudFormation might create IAM resources(我确认,AWS CloudFormation 可能创建 IAM 资源),然后选择 Create stack(创建堆栈)。

在 CloudFormation 窗格上,选择 Stacks(堆栈)。创建堆栈时,堆栈状态应从 CREATE_IN_PROGRESS 变为 CREATE_COMPLETE

在 CloudFormation 控制台搜索栏中输入 SageMaker Studio,然后选择 SageMaker Studio

从 SageMaker 控制台右上角的 Region(区域)下拉列表中选择 US East (N. Virginia)(美国东部(弗吉尼亚州北部))。对于 Launch app(启动应用程序),选择 Studio 以使用 studio-user 配置文件打开 SageMaker Studio。
 

第 2 步:开始新的 SageMaker Autopilot 实验

开发与测试大量候选模型是机器学习(ML)项目的关键。Amazon SageMaker Autopilot 会提供不同的候选模型并根据您的数据自动选择最佳模型,为您提供帮助。在此步骤中,您将配置 SageMaker Autopilot 实验以预测某金融服务营销活动是否成功。此数据集代表的是,某大型金融服务机构为推广存款登记凭证而开展的一次营销活动。

要开始新的 SageMaker Autopilot 实验,请单击 + 图标以访问新的启动器窗口。在启动器窗口中,向下滚动到 ML tasks and components(ML 任务和组件)。单击 + 图标,以新建 Autopilot 实验

接下来,您要对您的实验进行命名。单击 Experiment name(实验名称)框并输入名称 autopilot-experiment

 

然后,您要将实验与暂存在 S3 中的数据关联起来。单击 Enter S3 bucket location(输入 S3 桶位置)框。在 S3 bucket address(S3 桶地址)框中,粘贴以下 S3 路径:s3://sagemaker-sample-files/datasets/tabular/uci_bank_marketing/bank-additional-full.csv

保留清单文件选项设置为 Off(关)。在 Target(目标)下拉列表中,选择 y 作为目标特征,而我们的模型将尝试预测该特征。

Output data location (S3 bucket)(输出数据位置(S3 桶))表中,选择您自己的 S3 桶。在 Dataset directory name (数据集目录名称)字段中,输入 sagemaker/tutorial-autopilot/output。这是当实验完成以后,将用于保存输出数据的位置。

保持 Auto deploy(自动部署)选项为开启,而 Auto deploy endpoint(自动部署端点)字段为空。这样做会自动将我们的模型部署为 API 端点,并为它分配名称。

接下来会有一些可选的高级设置,它们控制着问题类型的详细信息、完成实验、运行时间详细信息、IAM 访问、安全性和加密,等等。单击 runtime button(运行时按钮)以显示可选设置。

在本教程中,将 Max candidates(最大候选数量)从 250 减少到 5。这样做将会以更快速度运行较少模型。完整实验是真正优化您的模型的最佳方法,但可能需要几个小时才能完成。本教程将保留原来的可选设置。

单击 Create Experiment(创建实验)按钮,以开始启动 SageMaker Autopilot 实验的第一个阶段。SageMaker Autopilot 将开始运行实验的各个阶段。在实验窗口中,您可以追踪预处理、候选定义、特征工程、模型调优、可解释性和洞察阶段的进度。

单击 Create Experiment(创建实验)按钮,以开始启动 SageMaker Autopilot 实验的第一个阶段。SageMaker Autopilot 将开始运行实验的各个阶段。在实验窗口中,您可以追踪预处理、候选定义、特征工程、模型调优、可解释性和洞察阶段的进度。如果您看到弹出通知,询问 "Are you sure you want to deploy the best model?"(您确定想要部署最佳模型吗?),单击 yes(是)。

一旦 SageMaker Autopilot 作业完成,您将可以访问报告,其中显示候选模型、候选模型状态、目标值、F1 分数和准确率。SageMaker Autopilot 将自动部署端点。

第 3 步:解读模型性能

现在实验已完成,您也有一个模型,下一步是解读它的性能。您现在将了解如何使用 SageMaker Autopilot 来分析模型的性能。

在 SageMaker Autopilot 实验完成后,您可以打开排名最高的模型,以获取有关模型性能和元数据的更多详细信息。在模型列表当中,突出显示第一个,然后右击以打开模型选项。单击 Open in model details(在模型详细信息中打开),查看模型的性能统计数据。

在新窗口中,点击 Explainability(可解释性)。您看到的第一个视图名为 Feature Importance(特征重要性),它表示数据集中每个实例的每项特征的聚合 SHAP 值。特征重要性分数是模型可解释性的重要组成部分,因为它显示数据集中的哪些特征有可能对预测产生最大影响。在此使用案例中,客户时长或任期和就业变化率是优化模型结果的两个最重要的字段。

现在,单击 Performance(性能)选项卡。您将看到有关模型性能的详细信息,包括准确率、精确率和召回率。您还可以解读模型性能,确定是否应进一步对模型进行调优。

接下来,提供可视化以进一步说明模型性能。首先,观察混淆矩阵。混淆矩阵常被用于理解模型标签如何区分预测和真实分类。在此例中,对角元素显示正确预测标签的数量,非对角元素则表示误分类记录。混淆矩阵适用于分析因假正例和假负例而导致的误分类。

然后,查看精确率和召回率曲线。该曲线将标签解释为概率阈值,并将权衡显示为模型精确率和召回率的不同概率阈值。SageMaker Autopilot 会自动优化这两项参数,以提供最佳的模型。

接下来,查看被标记为受试者工作特征(ROC)的曲线。该曲线显示各种潜在概率阈值的真正率和假正例之间的关系。对角线表示基于随机猜测的假设模型。曲线越趋向图表的左上角,则该模型的性能越出色。

虚线则表示预测值为 0 的模型,它常被称作空模型。空模型会随机分配 0/1 标签,其位于 ROC 曲线下方的面积为 0.5,代表它在 50% 的时间里是准确的。

然后,单击 Artifacts(生成物)选项卡。您可以找到 SageMaker Autopilot 实验的支持性资产,包括特征工程代码、输入数据位置,以及可解释性生成物等。

最后,单击 Network(网络)选项卡。您将看到有关网络隔离和容器流量加密的信息。

第 4 步:测试 SageMaker 模型端点

在查看过模型的详细信息以后,请对端点进行测试。

单击 + 图标以显示新的 Python 笔记本。选择 Python3 作为内核。在第一个单元格中,复制并粘贴以下代码。此代码将创建有效负载,提交请求到模型端点,并对响应进行解析。

为了解将请求发送到哪里,请查询模型端点的名称。在左侧窗格中,单击 SageMaker Resources(SageMaker 资源)图标。在 SageMaker Resources(SageMaker 资源)窗格中,选择 Endpoints(端点)。单击与您在开始本教程时所创建的实验名称关联的端点。此时将显示 Endpoint Details(端点详细信息)窗口。记录端点名称并导航返回至 Python 3 笔记本。

复制并粘贴以下代码片段到笔记本的单元格中,然后按 Shift+Enter 以运行当前单元格。此代码将设置环境变量 ENDPOINT_NAME 并运行推理。在代码完成时,您将看到由模型标签和关联概率分数组成的结果。
import os
import io
import boto3
import json
import csv

#: Define the endpoint's name.
ENDPOINT_NAME = 'autopilot-experiment-6d00f17b55464fc49c45d74362f284ce'
runtime = boto3.client('runtime.sagemaker')

#: Define a test payload to send to your endpoint.
payload = {
    "data":{
        "features": {
            "values": [45,"blue-collar","married","basic.9y",'unknown',"yes","no","telephone","may","mon",461,1,999,0,"nonexistent",1.1,93.994,-36.4,4.857,5191.0]
        }
    }
}

#: Submit an API request and capture the response object.
response = runtime.invoke_endpoint(
    EndpointName=ENDPOINT_NAME,
    ContentType='text/csv',
    Body=str(payload)
)

#: Print the model endpoint's output.
print(response['Body'].read().decode())

恭喜! 您已学习如何使用 SageMaker Autopilot 来自动训练与部署机器学习模型。

第 5 步:清除您的 AWS 资源

最佳实践是删除您不再使用的资源,以免产生意外费用。

如果您在第 1 步运行 CloudFormation 模板来创建新的 SageMaker Studio 域,请继续执行以下步骤以删除由 CloudFormation 模板创建的域、用户和资源。

要打开 CloudFormation 控制台,请在 AWS 管理控制台搜索栏中输入 CloudFormation,然后从搜索结果中选择 CloudFormation

在 CloudFormation 窗格上,选择 Stacks(堆栈)。从 Status(状态)下拉列表中,选择 Active(活动)。在 Stack name(堆栈名称)下方,选择 CFN-SM-IM-Lambda-Catalog 以打开堆栈详细信息页面。

CFN-SM-IM-Lambda-Catalog 堆栈详细信息页面上,选择 Delete(删除)以删除堆栈以及在第 1 步中创建的资源。

结论

恭喜! 您现在已完成自动创建机器学习模型教程。

您已成功利用 SageMaker Autopilot 自动构建、训练与调优模型,然后部署最佳候选模型以生成预测。

此页内容对您是否有帮助?

后续步骤

了解有关 Amazon SageMaker Autopilot 的更多信息

访问网页
了解更多 »

浏览 SageMaker Autopilot 文档

了解如何开始使用 Amazon SageMaker Autopilot
阅读更多 »
查找更多操作教程
查找更多操作教程以了解如何利用 ML
入门 »