概览
学习内容
在本指南中,您将:
- 导入数据集
- 选择用于分类的目标变量
- 用肉眼检查数据集
- 利用 Amazon SageMaker Canvas “快速构建”功能构建 ML 模型
- 了解模型的特征与指标
- 生成并理解批量和单个预测
先决条件
在开始学习本指南之前,您需要:
- 一个 AWS 账户:如果您还没有账户,请遵循设置 AWS 环境入门指南中的说明获取快速概览。
使用案例
在本教程中,您将构建可预测货物预计抵达时间(ETA,以天为单位)的 ML 模型。您将使用包含完整的交付产品装运数据的数据集,其中包括预计时间、装运、优先级、货运商和起运地。
-
设置 Amazon SageMaker Studio 域
如果您在美国东部(弗吉尼亚州北部)区域已经有一个 SageMaker Studio 域,请遵照 SageMaker Studio 设置指南将所需的 AWS IAM 策略附加到您的 SageMaker Studio 账户,然后跳过第 1 步,并直接继续第 2 步操作。
如果您没有现有的 SageMaker Studio 域,则继续本步骤,运行 AWS CloudFormation 模板,从而创建 SageMaker Studio 域并添加本教程剩余部分所需的权限。
注:此堆栈假设您已经在账户中设置了一个公有 VPC。如果您没有公有 VPC,请参阅具有单个公有子网的 VPC 以了解如何创建公有 VPC。
1. 启动 AWS CloudFormation 堆栈模板
- 此链接将打开 AWS CloudFormation 控制台并创建您的 SageMaker Studio 域和名为 studio-user 的用户。它还将添加所需权限到您的 SageMaker Studio 账户。
2. 在“快速创建堆栈”页面,确认右上角显示的区域为“美国东部(弗吉尼亚州北部)”。
3. 堆栈名称输入 CFN-SM--Lambda-Catalog。
4. 确认以下参数:
- BusinessAnalyst 名称为 s 1-business-analyst
- DomainName 名称为 immersionday-domain
5. 在功能框中勾选“I acknowledge that AWS CloudFormation might create IAM resources with custom names.(我确认AWS CloudFormation 可能会创建具有自定义名称的IAM 资源。)”。
6. 然后选择 Create stack(创建堆栈)。
注:堆栈约需要 10 分钟才能完成创建。
7. 收到“CREATE_COMPLETE”消息后,您就可以进行下一步操作了。
-
登录 SageMaker Canvas 并上传数据集到 Amazon S3 桶
1. 前往 SageMaker Canvas 控制台
2. 在启动选项中选择 Open Canvas(打开 Canvas)。
- 确认区域为 US East (N. Virginia)(美国东部(弗吉尼亚州北部))
屏幕上会显示“Amazon SageMaker Canvas Creating application”(Amazon SageMaker Canvas正在构建应用程序)。该应用程序需要几分钟才能加载完毕。
-
设置 SageMaker Canvas 以自动构建模型
将数据导入到 SageMaker Canvas 进行肉眼检查,为模型构建准备数据。
1. 返回 Amazon SageMaker Canvas 应用程序,将之前下载的数据集导入 SageMaker Canvas。
2. 在左侧菜单中选择 Data Wrangler,然后选择 Create data flow(创建数据流)。
3. 在弹出的 Create a data flow(创建数据流)窗口中,创建名为“product_descriptions”的数据流。
4. 选择 Import data (导入数据),然后选择 Tabular(表格数据)。
5. 在 Import data (导入数据)页面,选择 Select files from your computer (从计算机选择文件)。
6. 上传之前保存在本地计算机上的 product_descriptions.csv 数据集,然后选择 Preview data (预览数据)。
7. 出现数据预览页面,选择 Import data (导入数据)。
8. 重复步骤 2 至步骤 7 上传 shipping_logs 数据集。
- 在弹出的 Create a data flow (创建数据流)窗口中,创建命名为“shipping_logs”的数据流。
9. 在左侧导航栏中选择 Data Wrangler,并选择 Datasets (数据集)选项卡。然后,选择 Join data (合并数据)。
10. 在 Join Datasets(合并数据集)页面,将左侧面板中的 canvas-sample-product-descriptions.csv 和 canvas-sample-shipping-logs.csv 拖到右侧窗口。选择两个数据集之间的合并图标。
11. 出现显示合并详细信息的弹窗。确保合并类型为 Inner,合并列为 ProductId。选择 Save & close(保存并关闭),然后选择 Import data(导入数据)。
12. 在 Import data(导入数据)对话框中,输入名称 ConsolidatedShippingData 到 Import dataset name(导入数据集名称)字段,然后选择 Import data(导入数据)。
13. 在 Data Wrangler 页面,选中 ConsolidatedShippingData 旁边的复选框。然后选择 Create a data flow(创建数据流)
14. 在 Create a data flow(创建数据流)对话框中,输入 ConsolidatedShipping-Prep,并选择 Create(创建)。
15. 在 Data flow(数据流)页面,您会看到数据集的预览以及前 2,000 行数据,但在进行数据分析之前,您还需要完成初步清理。
注:聊天准备数据需要访问 Amazon Bedrock 和里面的 Anthropic Claude 模型。如果你尚未配置此访问权限,请按以下步骤进行操作:
16. 前往 Amazon Bedrock 控制台,在左侧导航栏中选择 Model access (模型访问)。
17. 在 Model access(模型访问)页面,选择 Manage model access(管理模型访问)。
18. 在 Manage model access(管理模型访问)页面,选择 Anthropic,然后选择 Request model access(请求访问该模型)。
19. 选择聊天准备数据图标。
- 您可以使用该功能通过自然语言探索、可视化和转换数据。
20. 在聊天对话框中输入“Plot actual vs expected shipping days”,然后按回车。
- 如图所示,预期发货天数与实际发货天数之间有密切联系。除此之外,你还会看到一条解释图示数据及其应用方式的消息。
- 如果选择 View code(查看代码),您会看到用于生成可视化数据的代码。
21. 在聊天对话框中输入 “Drop ProductID and OrderID”,然后按回车键。
- ProductID 和 OrderID 是主键,不包含任何对训练模型有价值的信息,故删除。
在聊天对话框中,你会看到相应解释和完成该操作所需的代码,以及这一步操作对数据集的影响预览。
22. 选择 Add to steps(添加步骤)将这一步纳入你的工作流。
23. 选择 Analyses (分析)选项卡。在 Create analysis (创建分析)部分打卡下拉菜单,选择 Data Quality And Insights Report(数据质量与洞察报告)。
24. 在 Analysis name(分析名称)一栏输入“Initial-Report”,Target Column(目标列)选择“ActualShippingDays”,Problem type(问题类型)选择“Regression”,Data size(数据大小)选择“Sampled dataset (20k)”。然后,选择 Create(创建)。
25. 报告生成完成后,不妨停下来查看一下数据集的洞察和可视化结果。此时您已经得到了适合训练模型的数据,没有缺失数据和无意义的异常值。- Features Prediction power(特征 预测能力)图表显示有一些特征对预测目标没有提供有用的信息,需要在训练模型前将它们删除。
- 提供第二高预测能力的特征 OnTimeDelivery(准时交货)在使用生成的模型进行预测时并不可用,属于数据泄漏,因此在训练模型前也需要删除这一列。
26. 现在我们需要根据这些洞察采取行动,在页面顶部选择“ConsolidatedShippingData-Prep.flow”,返回 Data flow(数据流)页面。
27. 选择聊天转换步骤旁边的省略号图标,然后选择 Add transform(添加转换)。
28. 选择 Add step(添加步骤)。
29. 在 Add transform(添加转换)页面,向下滚动并选择 Manage Columns(编辑列)。
30. 在 Manage columns(编辑列)页面进行以下选择:- 保持 Transform (转换)设置为 Drop column(删除列)
- 待删除的列有 OnTimeDelivery(准时交货), ComputerBrand(计算机品牌), ComputerModel(计算机型号), ScreenSize(屏幕尺寸), PackageWeight(包装重量), 以及 OrderDate(订购日期)。
- 确认无误后选择 Add(添加)。
- 在弹出的 Create a data flow (创建数据流)窗口中,创建命名为“shipping_logs”的数据流。
-
构建 ML 模型
现在您已完成了数据准备,可以开始训练模型了。在这一步中,您将设置目标变量并启动模型构建流程。
1. 选择 Create model(创建模型)。
2. 在 Export data and create model(导出数据并创建模型)弹窗中,将新数据集命名为“ConsolidatedShippingData-Clean”,并选择 Export(导出)。
3. 导出完成后,在屏幕左下角的弹出窗口中选择 Create model(创建模型)。
4. 在 Create new model(创建新模型)弹出窗口中,将模型命名为“ShippingForecast”,保持默认选择 Predictive analysis(预测分析)。然后,选择 Create(创建)。
模型视图页面有 4 个选项卡,分别代表构建模型和获取预测的各个步骤。这些选项卡是:
- Select(选择)– 设置输入数据。
- Build(构建)– 构建 ML 模型。
- Analyze(分析)– 分析模型输出和特征。
- Predict(预测)– 运行批量或单个预测。
- Deploy(部署) – 将您的模型部署到 SageMaker 端点,方便以编程方式使用。
5. 在 Select(选择)选项卡中,选择 ConsolidatedShippingData 数据集的单选按钮,该数据集由您在上一步中创建。然后选择 Select dataset(选择数据集)。
- 此数据集包含 9 列和 1000 行。它还包含有关数据集形状和大小的概要描述。
SageMaker Canvas 会自动移动到 Build(构建)阶段。
6. 在 Select column to predict(选择预测列)部分的 Target column(目标列)下拉菜单中,选择 ActualShippingDays(实际送货天数)。
- 由于此列包含货物抵达所需的历史天数,因此它非常适合被用作目标列。
- 在选择目标列后,SageMaker Canvas 会自动尝试推理问题类型。因为您想知道客户需要多少天才能收到货物,这是一个回归或数字预测问题。
- 回归会基于一或多项与之关联的其他变量或属性来估算从属目标变量的值。在此例中,SageMaker Canvas 最初可能预测该使用案例为 3+ 类预测问题。不过,您可以手动将问题类型更改为数字模型类型。
- 在 Model type(模型类型)部分,选择 Configure model(配置模型)。
7. Model type(模型类型)选择 Numeric model type(数字模型类型),然后选择 Save(保存)。.
-
训练和分析 ML 模型
SageMaker Canvas 中有两种训练方法: 快速构建和标准构建。快速构建一般需要 2-15 分钟来构建模型,而标准构建则一般需要 2-4 个小时,但准确率通常更高。为优先考虑速度,快速构建会训练较少的模型和超参数组合。在本教程中,我们选择快速构建来开始构建模型。
1. 选择 Quick build(快速构建)。
构建和验证大约需要 5 分钟。在模型构建完成以后,页面会跳转到 Analyze(分析)选项卡,以显示快速训练结果。
模型构建完成后,我们看到采用快速构建构建的 SageMaker Canvas 模型所预测的运输天数可在实际值的 +/-1.693范围以内。
- 机器学习在训练模型的过程中引入一些随机性,因此不同的构建方式会产生不同的结果。所以,在您看到的指标方面,具体的性能可能有差异。
在 Overview(概览)选项卡下方,SageMaker Canvas 会显示列影响或每个输入列在预测目标列中的预计重要性。在这个例子中,ExpectedShippingDays 列对运输天数预测的影响最大。
- 在右侧面板中,您还可以看到某特征的影响方向。例如,ExpectedShippingDays 的值越高,它对运输天数预测的影响越正面。
- 在 Scoring(得分)选项卡下方,您可以看到表示 ActualshippingDays 最佳拟合回归直线的图表。平均而论,模型预测与 ActualShippingDays 的实际值有 +/- 1.693 的差异。
- 数字预测的 Scoring(得分)部分显示一条直线,表明与用于做出预测的数据有关的模型的预测值。
- 数字预测的值通常为 +/- RMSE(均方根误差)值。
- 模型预测的值一般都在 RMSE 的范围以内。直线四周的紫色区段的宽度为 RMSE 范围。预测值通常落在该范围之内。
- 您可以选择 Error density(误差密度)查看误差的分布及其相对于模型 MAE 和 RMSE 的扩散。误差密度形状类似于正态分布表明模型性能良好。
-
生成模型预测
现在你已经有了一个回归模型,可以使用该模型运行预测,或者您也可以创建该模型的新版本,并使用标准构建流程进行训练。在这一步中,您要使用 SageMaker Canvas 对数据集生成单个和批量预测。
1. 要开始生成预测,请选择 Predict(预测)选项卡。
2. Predict target values(预测目标值)选择“手动”,进行一次性的批量预测。
注:选择 Automatic(自动)则可在您每次数据集更新时,进行批量预测。在实际 ML 工作流中,此数据集应与训练数据集分离。但为简单起见,您可以使用相同数据集来演示 SageMaker Canvas 如何生成预测。选择 Generate predictions(生成预测)。
3. 在 Select datasets for prediction(选择用于预测的数据集)页面,选择“ConsolidatedShippingData-Clean”数据集,然后选择 Generate predictions(生成预测)。
几秒后,您会收到预测完成的通知。
4. 选择页面底部消息窗口中的 View(查看)预览预测结果。
- 您还可以选择 Download(下载),以下载包含完整输出的 CSV 文件。SageMaker Canvas 会为每行数据返回预测结果。
- 在本教程中,ExpectedShippingDays 特征的重要性最高。它也会被显示在预测旁,以方便肉眼比较。
5. 在 Predict(预测)页面上,您可以通过选择 Single prediction(单个预测)为单个样本生成预测。
- SageMaker Canvas 会显示一个界面,您可以在其中手动输入模型使用的每个输入变量的值。此类型分析适用于假设情景, 即,您想知道一或多项变量的值增大或减小时,预测会发生怎样的变化。
6. 在模型构建过程完成后,SageMaker Canvas 会上传所有工件(包括被另存为 Pickle 文件的经过训练的模型、指标、数据集和预测)上传到 Canvas/1-business-analyst 下之前为您创建的 S3 存储桶(sagemaker-<your-Region(你的区域)>-<your-account-id(你的帐号ID)>)中。您可以检查内容,并视需要将其用于进一步开发。
-
清除您的 AWS 资源
最佳实践是删除您不再使用的资源,以免产生不必要的费用。
1. 前往 S3 控制台并选择 Buckets(存储桶)选项。找到名为“sagemaker-<your-Region(你的区域)>-<your-account-id(你的帐号ID)>”的存储桶,选中并清空。
2. 在 Permanently delete objects in bucket (永久删除存储桶中的所有对象)文本框中输入“ permanently delete”,然后选择 Empty(清空)。3. 返回选中 sagemaker-<your-Region(你的区域)>-<your-account-id(你的帐号ID)>存储桶,选择 Delete(删除)。
4 在 Delete bucket (删除存储桶)的文本框中输入存储桶名称进行确认,然后选择 Delete bucket(删除存储桶)。
5. 在 SageMaker Canvas 主页上,选择 My Models(我的模型)。找到 ShippingForecast 模型,点击垂直省略号并选择 Delete(删除)。
6. 在弹出窗口中选择 Delete(删除)来确认您想要删除该模型。
7. 在左侧导航栏中,选择 Log out(注销)以结束您的 Canvas 会话。
注:如果您使用了一个现有的 SageMaker Studio 域,则可跳过其余部分
如果您在第 1 步运行 CloudFormation 模板来创建新的 SageMaker Studio 域,请继续执行以下步骤以删除由 CloudFormation 模板创建的域、用户和资源。
8. 前往 CloudFormation 控制台,选择 CFN-SM-IM-Lambda-catalog,选择 Delete(删除)以删除堆栈及其创建的资源。
恭喜
您已成功使用 Amazon SageMaker Canvas 从 Amazon S3 导入并准备数据集以用于 ML,选择目标变量,利用快速构建模式构建 ML 模型,并使用可视化界面。
后续步骤
训练机器学习模型
标记用于机器学习的训练数据