实验2 – 房价预测(房地产)

前言:

您将通过本教程学会如何使用Amazon SageMaker Canvas预测房价,内容包含: 

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

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

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

教程说明

进入开发环境 

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

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

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

  • 在本实验室中,您将学习如何使用Amazon SageMaker Canvas导入和分析房价数据集,在无需编写代码的情况下构建用于预测房价的ML模型。由于价格可以是任何范围的真实值,该ML问题被称为“回归“。数据模式如下所示:

    列名

    数据类型

    说明

    纬度 (latitude)

    十进制数

    衡量某幢房屋离西边有多远;数值越大,越靠近西边

    经度 (longitude)

    十进制数

    衡量某幢房屋离北方有多远;数值越大,越靠近北方

    房龄中值 (housing_median_age)

    整数

    街区内房龄中值;数字越小,建筑越新

    房间总数 (total_rooms)

    整数

    街区内房间总数

    卧室总数 (total_bedrooms)

    整数

    街区内卧室总数

    人口 (population)

    十进制数

    街区内总居住人数

    家庭 (households)

    整数

    家庭总数,以家庭为单位居住在一起的一群人

    收入中值 (median_income)

    十进制数

    街区内各家收入中值(以万美元为单位)

    房屋价值中值(目标)(median_house_value)

    十进制数

    街区内各家房屋价值中值(美元计价)

    靠海 (ocean_proximity)

    字符串

    房屋距海边的位置

  • 第一步是下载我们将使用的数据集。请点击此处下载。

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

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

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

    点击Upload(上传)。

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

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

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

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

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

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

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

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

    在模型视图中,您会看到四个选项卡,分别对应构建模型并用来生成预测的四个步骤: Select(选择)、 Build(构建)、 Analyze(分析)、 Predict(预测)。在第一个 Select(选择)选项卡中,点击单选按钮,选择我们之前上传的bank-marketing.csv数据集。该数据集包括21列和4.1万行。点击底部的 Select dataset(选择数据集)按钮。

    Canvas将自动跳转至Build(构建)阶段。在该选项卡中,请选择目标列,在我们的示例中为median_house_value。您的营销团队已告知您,这一列表示现有客户是否已办理过银行存单。此即训练模型进行预测的内容。Canvas会自动检测到这是一个数值预测(Numeric prediction)问题。如果检测到模型类型错误,您可以通过屏幕中央的Change type(更改类型)链接手动更改。

    在屏幕的下半部分,您可以看一下数据集的一些统计数据,包括缺失值和不匹配值、唯一值、均值、中值或者与目标列之间的相关系数,也可以通过条件筛选来观察特定数据。也可以用来放弃一些列,如果我们不想在预测中使用这些列,只需在左侧的复选框取消勾选即可。更为完备的数据准备工作可以在SageMaker Data Wrangler中作为前置工作来完成。对于本实验室,我们打算使用所有的可用特性。您可以在稍后返回该步骤,尝试改变一些特性,查看对模型训练的影响情况。

    探索过该部分后,就到了最终训练模型的时候了!在构建完整的模型之前,通过训练一个Quick Model(快速模型),从而对我们的模型性能有一个大致了解,不失为一种很好的做法。为优先考虑速度而非准确性,快速模型所训练的模型和超参数组合较少,特别是在像我们这样想证明ML模型训练在我们用例之中的价值情况下。请注意,快速构建不能用于超过5万行的模型。让我们继续并点击Quick build(快速构建)。

    现在,我们等待2-15分钟。由于数据集很小,这可能需要不到2分钟的时间。完成后,Canvas将自动跳转至Analyze(分析)选项卡,为我们展示快速训练的结果。使用快速构建所进行的分析显示,我们估计该模型在91.5%的情况下能够预测出正确的结果。

    现在,我们来看一下第一个选项卡:Overview(概览)。该选项卡向我们展示了Column impact(列影响),也就是每一列在预测目标列中的大致重要性。在该示例中,“持续时间“列对预测客户是否会在银行开立新存单的影响最大。

    如果以下各图中的数字与您的数字不同,不必担心。机器学习在模型训练过程中加入了一些随机性,可能导致不同的构建所生成的结果不同。

    我们的模型用大数字显示了回归问题的一个指标 - 均方根误差(RMSE)。这代表了对预测范围的测量,较低的值表示对我们目标变量的预测更加准确。这意味着我们的预测存在一个+-48k$的均方误差。在后面部分,我们将看到我们的预测偏差有多大。

    现在,我们来看一下第一个选项卡:Overview(概览)。该选项卡向我们展示了Column impact(列影响),也就是每一列在预测目标列中的大致重要性。该视图非常重要,其向我们提供了关于那些可能泄露我们目标标签的特性(被称为目标泄漏,这种情况下,某个特性的重要性不成比例地高于其他特性)或与问题无关的特性(特性重要性非常低)信息。在我们的示例中,即使是影响最低的一列也很重要,因此这意味着我们应该保留所有特性。稍后,我们仍然可以尝试删除其中的一些特性,查看对构建有何影响。

    如果您想了解关于Canvas如何使用SHAP基准为机器学习带来可解释性的更多信息,请查看Canvas文档中的“Evaluating Your Model's Performance in Amazon SageMaker Canvas“部分内容以及SHAP Baselines for Explainability页面。

    跳转至“分析“的Scoring(得分)部分后,可以看到关于实际值的预测值分布图:这可以让我们计算另一个指标 - 平均误差(MAE),其显示了我们与实际值预测的均差。您可以点击右侧的Advanced metrics(高级指标)按钮,查看更多指标,获取更多信息。
    现在,您有两个选择:
    1. 您可以点击页面底部的Predict(预测)按钮,使用该模型进行某些预测;
    2. 您可以创建一个新版本的模型,通过Standard Build(标准构建)过程进行训练。这耗时更长 - 大约4-6小时 - 但准确率更高。

    在本实验室中,我们将选择第1项。如果您愿意的话,可自行运行第2项。
    请注意,若通过SageMaker Studio集成与数据科学家分享模型,则必须使用Standard
    Build(标准构建)训练模型。Predictions(预测)不需要完整构建,但其性能可能差于经完全训练过的模型。
  • 现在,模型已经训练完毕,让我们用其进行一些预测。请在Analyze(分析)页面底部选择Predict(预测),或者选择Predict(预测)选项卡。

    现在,请选择Select dataset(选择数据集),并选择Regression-housing.csv。接下来,在页面底部选择Generate predictions(生成预测)。Canvas将使用该数据集来生成预测结果。一般而言,虽然不建议使用相同的数据集进行训练和测试,但为了简单起见,我们使用的是同一个数据集。几秒后,预测完成。您可以点击眼睛图标,通过悬停鼠标查看预测结果预览,或者点击下载按钮,下载包含完整输出的CSV文件。SageMaker Canvas 将为每一行数据返回一个预测值,以及关于预测是否正确的概率。

    您也可以选择Single prediction(单次预测)而非批量预测,逐一预测数值。Canvas会显示一个供您为各特性手动输入数值的视图,并生成预测。这非常适合于what-if scenarios(假设场景)情况:例如,如果房屋较旧,价格将如何变化?如果更靠海呢?如果该房屋有多个房间呢?


入门资源中心

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