实验2 – 房价预测(房地产)
前言:
您将通过本教程学会如何使用Amazon SageMaker Canvas预测房价,内容包含:
- 概述
- 将数据集上传至S3存储桶
- 在Canvas中导入数据集
- 构建和训练ML模型
- 使用该模型生成预测结果
在开始本实验室之前,请确保您已经完成“手把手带你启动 Amazon SageMaker Canvas ”(先决条件)部分中描述的步骤。
关于本教程 | |
---|---|
时间 | 10 分钟 |
费用 | 免费套餐 |
相关行业 | 通用 |
相关产品 | Amazon SageMaker Canvas |
受众 | 业务分析师 |
级别 | 初级 |
上次更新日期 | 2022年5月 |
-
模块一. 概述
在本实验室中,您将学习如何使用Amazon SageMaker Canvas导入和分析房价数据集,在无需编写代码的情况下构建用于预测房价的ML模型。由于价格可以是任何范围的真实值,该ML问题被称为“回归“。数据模式如下所示:
列名
数据类型
说明
纬度 (latitude)
十进制数
衡量某幢房屋离西边有多远;数值越大,越靠近西边
经度 (longitude)
十进制数
衡量某幢房屋离北方有多远;数值越大,越靠近北方
整数
整数
街区内房间总数
整数
街区内卧室总数
人口 (population)
十进制数
街区内总居住人数
家庭 (households)
整数
家庭总数,以家庭为单位居住在一起的一群人
收入中值 (median_income)
十进制数
街区内各家收入中值(以万美元为单位)
房屋价值中值(目标)(median_house_value)
十进制数
街区内各家房屋价值中值(美元计价)
靠海 (ocean_proximity)
字符串
房屋距海边的位置
-
模块二. 将数据集上传至S3存储桶
第一步是下载我们将使用的数据集。请点击此处下载。
进入亚马逊云科技管理控制台,在控制台顶部的搜索框中搜索S3,然后转到S3服务控制台。
在S3控制台,点击sagemaker-studio-*存储桶。
sagemaker-studio-*桶是在您在“手把手带你启动Amazon SageMaker Canvas ”(先决条件)部分创建SageMakerStudio域时自动创建的。
点击Upload(上传)。
在上传页面,拖放您刚刚下载的 bank-marketing.csv 文件,然后在页面底部点击Upload(上传)。上传完成后,点击右上方的Close(关闭)按钮。现在,您应该看到文件已经上传至您的存储桶中。
-
模块三 - 在Canvas中导入数据集
返回在手把手带你启动 SageMaker Canvas(先决条件)部分创建的 SageMaker Canvas 选项卡。在左边的菜单上,您可以点击第二个图标,进入数据集部分,然后点击 Import(导入)按钮。
现在,选择我们之前上传数据集的存储桶,即sagemaker-studio-*存储桶。
现在您可以通过选择其左侧的复选框而选择之前上传的bank-marketing.csv文件。在页面底部会弹出两个新的按钮:Preview all(预览全部)和 Import Data(导入数据)。我们选择第一个。
现在,您会看到将要导入的数据集100行预览。核对无误后,点击Import Data(导入数据)。
-
模块四. 构建和训练ML模型
现在,请点击左侧菜单上的第二个按钮,返回网页的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(高级指标)按钮,查看更多指标,获取更多信息。现在,您有两个选择:- 您可以点击页面底部的Predict(预测)按钮,使用该模型进行某些预测;
- 您可以创建一个新版本的模型,通过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(假设场景)情况:例如,如果房屋较旧,价格将如何变化?如果更靠海呢?如果该房屋有多个房间呢?
1. 再次运行该实验室,但构建一个标准模型,查看其性能;
2. 登出(Account -> Log out)本次实验,选择运行另一个实验室。