概览
学习内容
在本指南中,您将:
- 导入数据集
- 选择用于分类的目标变量
- 用肉眼检查数据集
- 利用 SageMaker Canvas“快速构建”功能构建 ML 模型
- 了解模型的特征与指标
- 生成并理解批量和单个预测
先决条件
在开始学习本指南之前,您需要:
- 一个 AWS 账户:如果您还没有账户,请遵循设置 AWS 环境入门指南中的说明获取快速概览。
AWS 使用经验
新手
完成时间
20 分钟
所需费用
请参阅 SageMaker Canvas 定价估算此教程的费用。
需要
您必须登录 AWS 账户。
使用的服务
Amazon SageMaker Canvas
上次更新日期
2022 年 6 月 28 日
使用案例
在本教程中,您将构建可预测货物预计抵达时间(ETA,以天为单位)的 ML 模型。您将使用包含完整的交付产品装运数据的数据集,其中包括预计时间、装运、优先级、货运商和起运地。
第 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(堆栈)。堆栈约需要 10 分钟才能完成创建。创建堆栈时,堆栈状态应从 CREATE_IN_PROGRESS 变为 CREATE_COMPLETE。
第 2 步:登录 SageMaker Canvas 并上传数据集到 Amazon S3 桶
在 AWS 管理控制台的搜索栏中输入 SageMaker Canvas 并转至 SageMaker Canvas。
在左侧窗格的控制面板下方选择 Canvas,然后在右上角的 Region(区域)下拉列表中选择 US East (N. Virginia)(美国东部(弗吉尼亚州北部))。
- 在 SageMaker Canvas 页面上,选择 Launch SageMaker Canvas(启动 SageMaker Canvas)。
- 在控制面板页面上,选择 studio-user 旁 Launch app(启动应用程序)下拉列表中的 Canvas。
- SageMaker Canvas Creating application(构建应用程序)屏幕将会显示。该应用程序需要几分钟才能加载完毕。
如果这是您首次在 US-East 1 中使用 SageMaker,SageMaker Canvas 将以采用以下格式的名称创建一个 Amazon S3 桶:sagemaker-<your-Region>-<your-account-id>。在继续学习教程其他部分之前,下载下方数据集并将它们保存到您的本地计算机。然后,您将上传这些数据集到 SageMaker Canvas 为您创建的默认 S3 桶。
在 AWS 管理控制台搜索栏中,输入 S3,然后选择 S3。
当打开 S3 控制台时,您可以在 Buckets(桶)部分的下方找到 SageMaker Canvas 为您创建的默认桶。选择名为 sagemaker-<your-Region>-<your-account-id> 的桶,然后在下一页上选择 Upload(上传)。
在 Upload(上传)页面上,选择 Add files(添加文件),然后选择您在上一步中下载的两个数据集。滚动到页面底部,然后选择 Upload(上传)。SageMaker Canvas 将在构建模型前访问这些文件。
第 3 步:设置 SageMaker Canvas 以自动构建模型
将数据导入到 SageMaker Canvas,以进行肉眼检查并构建模型。
导入数据集到 SageMaker Canvas。
- 在 SageMaker Canvas 界面上,选择左侧窗格中的 Datasets(数据集),然后选择 + Import(+ 导入)。
- 选择名为 sagemaker-<your-Region>-<your-account-id> 的 Amazon S3 桶,您在上一步中将数据集上传到该桶。勾选其左侧的复选框以选择 shipping_logs.csv 和 product_descriptions.csv 数据集。您的页面底部将出现两个新按钮:Preview all(预览全部)和 Import data(导入数据)。选择 Preview all(预览全部)。这使您可以查看数据集的 100 行预览。
- 在勾选数据集后,选择 Import data(导入数据),以便将它们导入到 SageMaker Canvas。
在 SageMaker Canvas 页面的 Datasets(数据集)部分下方,您将看到两个导入的数据集。选择 Join data(合并数据)。
在 Join Datasets(合并数据集)页面上,将两个数据集从左侧窗格拖动到右侧窗格。选择两个数据集之间的 join icon(合并图标)。显示有关合并详细信息的弹出提示将会消失。确保合并类型为 Inner,合并列为 ProductId。选择 Save & close(保存并关闭),然后选择 Import data(导入数据)。
- 在 Import data(导入数据)对话框中,输入名称 ConsolidatedShippingData 到 Import dataset name(导入数据集名称)字段,然后选择 Import data(导入数据)。
第 4 步:构建、训练与分析 ML 模型
设置目标变量,用肉眼检查数据的属性,并且启动模型构建流程。
在 SageMaker Canvas 用户界面中,选择 Models(模型),然后选择 + New model(+ 新模型)。在 Create new model(创建新模型)对话框中,输入 ShippingForecast 到 Model name(模型名称)字段,然后选择 Create(创建)。
模型视图页面有 4 个选项卡,分别代表构建模型和获取预测的各个步骤。这些选项卡是:
- Select(选择)– 设置输入数据。
- Build(构建)– 构建 ML 模型。
- Analyze(分析)– 分析模型输出和特征。
- Predict(预测)– 运行批量或单个预测。
在 Select(选择)选项卡中,选择 ConsolidatedShippingData 数据集的单选按钮,该数据集由您在上一步中创建。此数据集包含 16 列和 10000 行。它还包含有关数据集形状和大小的概要描述。选择 Select dataset(选择数据集)。
在选择数据集以后,SageMaker Canvas 会自动移动到 Build(构建)阶段。在此选项卡中,选择目标列,此示例中为 ActualShippingDays。由于此列包含货物抵达所需的历史天数,因此它非常适合被用作目标列。
- 在选择目标列后,SageMaker Canvas 会自动尝试推理问题类型。因为您想知道客户需要多少天才能收到货物,而这是一个回归或数字预测问题。回归会基于一或多项与之关联的其他变量或属性来估算从属目标变量的值。在此例中,SageMaker Canvas 最初可能预测该使用案例为时间序列预测类型问题,因为它在数据集中检测到日期列。不过,您可以使用页面中央的 Change type(更改类型)链接手动选择,以便将问题类型更改为数字模型类型。
- 注意 XShippingDistance 和 YShippingDistance 列与目标之间的相关性可忽略不计。
- 由于与目标之间相关性可忽略不计的特征无法为当前预测任务提供足够信息,您可以删除 XShippingDistance, YShippingDistance、ProductID 和 OrderID 列,因为它们是主键,而且预计不会包含任何重要信息。您可以取消勾选复选框。
- 您可以选择纵栏图标,以检查列的分布。它非常适用于突出显示数据中存在的不平衡和潜在偏差。
在模型构建完成以后,SageMaker Canvas 会自动切换到 Analyze(分析)选项卡,以显示快速训练结果。采用快速构建构建的 SageMaker Canvas 模型所预测的运输天数可在实际值的 +/-1.2333 范围以内。机器学习在训练模型的过程中引入一些随机性,不同的构建方式因此会产生不同的结果。所以,在您看到的指标方面,具体的性能可能有差异。
在 Overview(概览)选项卡下方,SageMaker Canvas 会显示列影响或每个输入列在预测目标列中的预计重要性。在这个例子中,ExpectedShippingDays 列对运输天数预测的影响最大。在右侧窗格中,您还可以看到某特征的影响方向。例如,ExpectedShippingDays 的值更高,它对运输天数预测的影响越正面。
在 Scoring(得分)选项卡下方,您可以看到代表 ActualshippingDays 最佳拟合回归直线的图形。平均而论,模型预测与 ActualShippingDays 的实际值有 +/- 1.2333 的差异。数字预测的 Scoring(得分)部分显示一条直线,表明与用于做出预测的数据有关的模型的预测值。数字预测的值通常为 +/- RMSE(均方根误差)值。模型预测的值一般都在 RMSE 的范围以内。直线四周的紫色区段的宽度为 RMSE 范围。预测值通常落在该范围之内。要更深入了解模型性能,选择右侧的 Advanced metrics(高级指标)链接,以显示 Advanced metrics(高级指标)页面。
- Advanced metrics(高级指标)页面上显示不同的指标,有 R2、平均绝对误差(MAE)、平均绝对百分比误差(MAPE),以及均方根误差(RMSE)。Advanced metrics(高级指标)页面还显示一些图形,以方便用肉眼检查模型性能。其中有一张残差或误差图像。水平线为 0 误差或完美预测。蓝点为误差。它们与水平线的距离表示误差幅度。
- 在 Advanced metrics(高级指标)页面上向下滚动,您可以看到误差密度图,显示误差的分布及其相对于模型 MAE 和 RMSE 的扩散。形状与正态分布相似的误差密度说明模型的性能良好。
第 5 步:生成模型预测
现在您有回归模型,您可以使用该模型运行预测,或者您也可以创建该模型的新版本,并使用标准构建流程进行训练。在这一步中,您要使用 SageMaker Canvas 对数据集生成单个和批量预测。
要开始生成预测,请选择 Predict(预测)选项卡。
- 选择 Analyze(分析)页面底部的 Predict(预测)按钮,或选择 Predict(预测)选项卡。在 Predict(预测)页面上,Batch prediction(批量预测)已被选中。选择 Select dataset(选择数据集),然后选择 ConsolidatedShippingData 数据集。在实际 ML 工作流中,此数据集应与训练数据集分离。但为简单起见,您可以使用相同数据集来演示 SageMaker Canvas 如何生成预测。选择 Generate predictions(生成预测)。
- 在几秒后,预测完成。选择 options icon(选项图标)并选择 preview(预览),用鼠标悬停在预测数据集名称或状态上方以查看预测预览。您还可以选择 Download(下载),以下载包含完整输出的 CSV 文件。SageMaker Canvas 会为每行数据返回预览。在本教程中,重要性最高的特征为 ExpectedShippingDays 特征。它也会被显示在预测旁,以方便肉眼比较。
- 在 Predict(预测)页面上,您可以通过选择 Single prediction(单个预测)为单个样本生成预测。SageMaker Canvas 会显示一个界面,您可以在其中为模型中使用的每个输入变量手动输入值。此类型分析适用于假设情景,即,您想知道一或多项变量的值增大或减小时,预测会发生怎样的变化。借助一组列值的预测,SageMaker Canvas 可提供单项特征的重要性。它是对当前样本预测具有最大影响力的列。
标准模型不在本教程的讨论范围以内。不过,此模式内的训练与本教程中所列的步骤类似。
您可以在开始时为模型命名,如 ShippingForecastStandardModel。此外,在 Build(构建)选项卡上,您可以选择标准模型,而不是快速模型。然后,继续执行剩余步骤的操作。标准构建模式有助于提供其他功能,即通过 SageMaker Studio 与数据科学家分享经过训练的模型。协作、快速模型优化和迭代也因此得以实现。模型训练完成以后,Analyze(分析)选项卡就会提供分享选项。
第 6 步:清除您的 AWS 资源
最佳实践是删除您不再使用的资源,以免产生意外费用。
导航至 S3 控制台并选择 Buckets(桶)菜单选项。
从测试桶中删除测试对象。选择您在本教程中使用的桶的名称。选中测试对象名称左侧的复选框,然后选择 Delete(删除)按钮。在 Delete objects(删除对象)页面上,确认您是否已选中要删除的正确对象,并在 Permanently delete objects(永久删除对象)确认框中键入 permanently delete。然后,选择 Delete object(删除对象)按钮以继续。接下来,您将看到一条横幅,指明删除是否成功。
在 SageMaker Canvas 主页上,选择 Models(模型)。在右侧窗格中,您可以看到创建的模型。选择 View(查看)选项右侧的纵向省略符号,并选择 Delete model(删除模型)。
在 SageMaker Studio 控制台中,选择 studio-user,然后为 Apps(应用程序)下方列出的每个应用程序选择 Delete app(删除应用程序)。按屏幕上的提示确认删除操作。等待状态显示为 Deleted。
如果您在第 1 步中使用了一个现有的 SageMaker Studio 域,则跳过第 6 步的其余部分,直接进入结论部分。
如果您在第 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 步中创建的资源。
结论
恭喜! 您已完成在不编写代码的情况下生成机器学习预测教程。
您已成功使用 Amazon SageMaker Canvas 从 Amazon S3 导入并准备数据集以用于 ML,选择目标变量,利用快速构建模式构建 ML 模型,并使用可视化界面。
后续步骤
训练机器学习模型
标记用于机器学习的训练数据