实验7 – 供应链准时交付(运输和物流)

前言:

在本教程中,您将扮演物流业公司的业务分析师角色,预测货物到达的估计时间(天数)。内容包含: 

  1. 概述
  2. 将数据集上传至S3存储桶
  3. 在Canvas中导入数据集
  4. 构建和训练ML模型
  5. 使用该模型生成预测结果

在开始本实验室之前,请确保您已经完成“手把手带你启动 Amazon SageMaker Canvas ”(先决条件)部分中描述的步骤。

关于本教程
时间 10 分钟                                           
费用 免费套餐
相关行业 通用
相关产品 Amazon SageMaker Canvas
受众 业务分析师
级别 初级
上次更新日期 2022年5月

教程说明

进入开发环境 

点击右侧按钮“登陆控制台”进入开发环境,如果您还没有账户,请先注册账户。

海外区域业务或个人使用,请注册“海外区域账户”;

中国区域业务(需企业营业执照认证),请注册“中国区域账户”。

  • 在本实验室中,您将扮演物流业公司的业务分析师角色。您的目标是预测货物到达的估计时间(天数)。您将使用零售领域的一个著名数据集 - Shipping Logs数据集。该数据集包含所有已交付产品的完整运输数据,包括估计的优先发运时间、承运人和发货地。该数据集约含有10000行,12个特性列,数据模式如下所示:

    ActualShippingDays

    标签 - 交付货物所需天数

    Carrier

    运输货物的承运人

    YShippingDistance

    Y轴上的运输距离

    XShippingDistance

    X轴上的运输距离

    ExpectedShippingDays

    预计运输天数

    InBulkOrder

    是否为批量订单

    ShippingOrigin

    发货地

    OrderDate

    下单日期

    OrderID

    订单ID

    ShippingPriority

    运送优先级

    OnTimeDelivery

    表示是否按时完成运输

    ProductId

    产品ID

    ComputerBrand

    表示运送的计算机品牌

    ComputerModel

    表示运送的计算机型号

    ScreenSize

    表示屏幕尺寸

    PackageWeight

    运送的包裹重量

  • 第一步是下载我们将使用的数据集。该数据集包含两个文件,您可以点击以下链接下载:

    1. Shipping Logs(运输日志)
    2. Product Description(产品说明)

    进入亚马逊云科技管理控制台,在控制台顶部的搜索框中搜索S3,然后转到S3服务控制台。

    在S3控制台,点击sagemaker-studio-*存储桶。

    sagemaker-studio-*桶是在您在“手把手带你启动Amazon SageMaker Canvas  ”(先决条件)部分创建SageMaker
    Studio域时自动创建的。

    点击Upload(上传)。

    在上传页面,拖放您刚刚下载的文件,然后在页面底部点击Upload(上传)。上传完成后,点击右上方的Close(关闭)按钮。现在,您应该看到文件已经上传至您的存储桶中。

  • 返回在“手把手带你启动Amazon SageMaker Canvas”(先决条件)部分创建的SageMaker Canvas选项卡。在左侧的菜单上,您可以点击第二个图标,进入Datasets(数据集)部分,然后点击Import(导入)按钮。

    现在,选择我们之前上传数据集的存储桶,即sagemaker-studio-*存储桶。

    现在,您可以通过选择其左侧的复选框而选择之前上传的文件(ShippingLogs.csv和ProductDescriptions.csv)。在页面底部会弹出两个新的按钮:Preview all(预览全部)和Import Data(导入数据)。

    现在,您会看到将要导入的数据集100行预览。核对无误后,点击Import Data(导入数据)。

    现在,使用ProductID加入数据,并输入新的数据集名称ConsolidatedShippingData。

    点击Save & Close(保存&关闭)。

  • 现在,请点击左侧菜单上的第二个按钮,返回网页的Models(模型)部分。

    点击+ New model(构建新模型),并为您的模型添加一个名称,例如“Housing Prices“或”Housing Regression“。

    如果是首次构建Canvas模型,将会弹出一个信息窗口,介绍如何通过4个简单步骤构建首个模型。您可以先读一遍,然后再返回本指南。

    在模型视图中,您会看到四个选项卡,分别对应构建模型并用来生成预测的四个步骤: Select(选择)、 Build(构建)、 Analyze(分析)、 Predict(预测)。在第一个 Select(选择)选项卡中,点击单选按钮,选择我们之前创建的ConsolidatedShippingData数据集。该数据集来自S3存储桶,包括12列和大约1万多行。点击底部的 Select dataset(选择数据集)按钮。

    Canvas将自动跳转至Build(构建)阶段。在该选项卡中,请选择目标列,在我们的示例中为ActualShippingDays。由于我们感兴趣的是需要多少天能将货物送抵客户(也称为回归),Canvas 会自动检测到这是一个numeric prediction(数值预测)问题。回归是根据一个或多个与之相关的其他变量或属性而估计目标因变量的值。在进一步操作之前,请确保模型类型为Numeric Prediction(数值预测);如果类型不正确,您可以选择如下图所示的Change Type(更改类型)链接。

    在屏幕的下半部分,您可以查看数据集的一些统计数据,包括缺失值和不匹配值、唯一值、均值和中值。您可以查看如下一些统计数据和信息:

    Column View(列视图)提供了所有列的列表,其数据类型及其基本统计数据,包括缺失值和不匹配值、唯一值、均值和中值。这将有助于您制定策略,处理数据集中的缺失值

    • Grid View(网格视图)提供各列和样本数据的数值分布图。您可以开始推断用于训练模型的相关列
    • 您也可以放弃一些列,如果我们不想在预测中使用这些列,只需在左侧的复选框取消勾选即可。在本实验室中,我们计划取消那些对模型训练过程无用的列:order*_**id*,其是一个主关键字,不包含有价值的信息;出于同样原因,我们也将放弃product_id。
    • 通过我们的探索性数据分析,可以看到数据集的缺失值不多。因此,我们不必处理缺失值。如果您看到您的特性缺失值很多,您可以过滤缺失值。
    • 探索过该部分后,就到了最终训练模型的时候了!在构建完整的模型之前,通过训练一个Quick Model(快速模型),从而对我们的模型性能有一个大致了解,不失为一种很好的做法。为优先考虑速度而非准确性,快速模型所训练的模型和超参数组合较少,特别是在像我们这样想证明ML模型训练在我们用例之中的价值情况下。请注意,快速构建不能用于超过5万行的模型。让我们继续并点击Quick build(快速构建)。

    现在,我们等待2-15分钟,让Quick build(快速构建)完成模型训练。

    完成后,Canvas将自动跳转至Analyze(分析)选项卡,为我们展示快速训练的结果:

    如果以下各图中的数字与您的数字不同,不必担心。机器学习在模型训练过程中加入了一些随机性,可能导致不同的构建所生成的结果不同。
    现在,我们来看一下第一个选项卡: Overview(概览)。该选项卡向我们展示了 Column impact(列影响),也就是每一列在预测目标列中的大致重要性。在该示例中,ExpectedShippingDays列在我们的预测方面具有最大影响。
    在Scoring(得分)选项卡中,可以看到代表ActualshippingDays的最佳拟合回归线图。平均而言,模型预测结果与ActualShippingDays的实际值之间存在+/-0.7的差异。数字预测的 Scoring(得分)部分显示了一条线,表示模型的预测值与用于预测的数据之间的关系。数字预测的值通常是+/-RMSE(均方根误差)值。模型预测的值通常在RMSE的范围之内。线条周围紫色带的宽度代表RMSE范围。预测值往往在该范围之内。
    advanced metrics(高级指标)包含的信息供希望更深入了解其模型性能的用户使用。以下定义了Amazon SageMaker Canvas中数字预测的高级指标,并为您提供了高级指标使用方法的相关信息。
    • R2 – 目标列内差异百分比,可通过输入列阐明。
    • MAE – 平均绝对误差。平均而言,对目标列的预测与实际值相差+/- {MAE}。
    • MAPE –平均绝对百分比误差。平均而言,对目标列的预测与实际值相差+/- {MAPE}%。
    • RMSE – 均方根误差。误差的标准偏差。
    下图为残差或误差图。水平线表示误差为0或完美预测。蓝点代表误差。这些蓝点与水平线的距离代表误差大小。

    下图为误差密度图。

    现在,您有两个选择:
    1. 您可以点击页面底部的Predict(预测)按钮,使用该模型进行某些预测;
    2. 您可以创建一个新版本的模型,通过Standard Build(标准构建)过程进行训练。这耗时更长 - 大约4-6个小时 - 但准确率更高。
    鉴于该模型的出色表现,我们确信能够将其投入实际使用,因此我们将使用第1个选项。如果我们信心不足,则可以让数据科学家审查Canvas的建模情况,并通过第2个选项进行潜在改进。
    请注意,若通过SageMaker Studio集成与数据科学家分享模型,则必须使用 Standard
    Build
    (标准构建)训练模型。Predictions(预测)不需要完整构建,但其性能可能差于经完全训练过的模型。
  • 现在,模型已经训练完毕,让我们用其进行一些预测。请在Analyze(分析)页面底部选择Predict(预测),或者选择Predict(预测)选项卡。

    点击Batch prediction(批量预测)。现在,请选择Select dataset(选择数据集),并选择ConsolidatedShipping.csv。Canvas将使用该数据集来生成预测结果。一般而言,虽然不建议使用相同的数据集进行训练和测试,但为了简单起见,我们使用的是同一个数据集。如果您愿意的话,您也可以在选择视图中导入另一个数据集。几秒后,预测完成,您可以点击眼睛图标,查看预测结果预览,或者点击下载按钮,下载包含完整输出的CSV文件。

    您也可以选择Single prediction(单次预测)而非批量预测,逐一预测数值。Canvas会显示一个供您为各特性手动输入数值的视图,并生成预测。这非常适合于what-if scenarios(假设场景)情况:例如,如果ShippingOrigin是休斯顿,ActualShippingDays将发生何种变化?如果我们使用了不同的承运人或PackageWeight不同,将会怎样?


入门资源中心

获取更多上手教程,开发资料,以及成本管理攻略。