实验1 - 客户流失预测(营销)
前言:
在本教程中,您将扮演银行的业务分析师角色,帮忙业务人员预测哪些客户最有可能办理新存单,包括:
- 概述
- 将数据集上传至S3存储桶
- 在Canvas中导入数据集
- 构建和训练ML模型
- 使用该模型生成预测结果
在开始本实验室之前,请确保您已经完成“手把手带你启动 Amazon SageMaker Canvas ”(先决条件)部分中描述的步骤。
关于本教程 | |
---|---|
时间 | 10 分钟 |
费用 | 免费套餐 |
相关行业 | 通用 |
相关产品 | Amazon SageMaker Canvas |
受众 | 业务分析师 |
级别 | 初级 |
上次更新日期 | 2022年5月 |
-
模块一. 概述
在本实验室中,您将扮演银行的业务分析师角色。您所在的营销部门要求您为即将开展的营销活动协助确定目标客户,该活动旨在让客户办理新的存单(CD)。他们向您提供了一个数据集,其中包含客户统计信息和银行历史记录。由于营销活动的资源和预算有限,他们要求您使用这些数据预测哪些客户最有可能办理新存单。数据模式如下所示:
列名
数据类型
年龄 (age)
整数
工作类型 (job)
字符串
婚姻状况 (marital)
字符串
教育水平 (education)
字符串
违约 (default)
字符串(是/否)
住房 (housing)
字符串(是/否)
贷款 (loan)
字符串(是/否)
联系方式 (contact)
字符串
月份 (month)
字符串
日期 (day_of_week)
字符串
持续时间 (duration)
整数
活动 (campaign)
整数
过去天数 (pdays)
十进制数
上次 (previous)
整数
营销结果 (poutcome)
字符串
emp.var.rate
十进制数
cons.price.idx
十进制数
cons.conf.idx
十进制数
euribor3m
十进制数
nr.employed
整数
y(目标)
字符串(是/否)
-
模块二. 将数据集上传至S3存储桶
第一步是下载我们将使用的数据集。请点击此处下载。
进入亚马逊云科技管理控制台,在控制台顶部的搜索框中搜索S3,然后转到S3服务控制台。
在S3控制台,点击sagemaker-studio-*存储桶。
sagemaker-studio-*桶是在您在“手把手带你启动Amazon SageMaker Canvas ”(先决条件)部分创建SageMaker Studio域时自动创建的。
点击Upload(上传)。
在上传页面,拖放您刚刚下载的 bank-marketing.csv 文件,然后在页面底部点击Upload(上传)。上传完成后,点击右上方的Close(关闭)按钮。现在,您应该看到文件已经上传至您的存储桶中。
-
模块三 - 安装NextCloud
返回在手把手带你启动 SageMaker Canvas(先决条件)部分创建的 SageMaker Canvas 选项卡。在左边的菜单上,您可以点击第二个图标,进入数据集部分,然后点击 Import(导入)按钮。
现在,选择我们之前上传数据集的存储桶,即sagemaker-studio-*存储桶。
现在您可以通过选择其左侧的复选框而选择之前上传的bank-marketing.csv文件。在页面底部会弹出两个新的按钮:Preview all(预览全部)和 Import Data(导入数据)。我们选择第一个。
现在,您会看到将要导入的数据集100行预览。核对无误后,点击Import Data(导入数据)。
-
模块四. 构建和训练ML模型
现在,请点击左侧菜单上的第二个按钮,返回网页的Models(模型)部分。
点击+ New model(构建新模型),并为您的模型添加一个名称。
如果是首次构建Canvas模型,将会弹出一个信息窗口,介绍如何通过4个简单步骤构建首个模型。您可以先读一遍,然后再返回本指南。
在模型视图中,您会看到四个选项卡,分别对应构建模型并用来生成预测的四个步骤: Select(选择)、 Build(构建)、 Analyze(分析)、 Predict(预测)。在第一个 Select(选择)选项卡中,点击单选按钮,选择我们之前上传的bank-marketing.csv数据集。该数据集包括21列和4.1万行。点击底部的 Select dataset(选择数据集)按钮。
Canvas将自动跳转至Build(构建)阶段。在该选项卡中,请选择目标列,在我们的示例中为y。您的营销团队已告知您,这一列表示现有客户是否已办理过银行存单。此即训练模型进行预测的内容。Canvas会自动检测到这是一个2 Category(2 类)问题(也称为二元分类)。如果检测到模型类型错误,您可以通过屏幕中央的Change type(更改类型)链接手动更改。
在屏幕的下半部分,您可以看一下数据集的一些统计数据,包括缺失值和不匹配值、唯一值、均值、中值或者与目标列之间的相关系数,也可以通过条件筛选来观察特定数据。也可以用来放弃一些列,如果我们不想在预测中使用这些列,只需在左侧的复选框取消勾选即可。更为完备的数据准备工作可以在SageMaker Data Wrangler中作为前置工作来完成。对于本实验室,我们打算使用所有的可用特性。您可以在稍后返回该步骤,尝试改变一些特性,查看对模型训练的影响情况。
探索过该部分后,就到了最终训练模型的时候了!在构建完整的模型之前,通过训练一个 Quick Model(快速模型),从而对我们的模型性能有一个大致了解,不失为一种很好的做法。为优先考虑速度而非准确性,快速模型所训练的模型和超参数组合较少,特别是在像我们这样想证明ML模型训练在我们用例之中的价值情况下。请注意,快速构建不能用于超过5万行的模型。让我们继续并点击Quick build(快速构建)。客户数据
客户数据
说明
年龄 (age)
客户年龄
工作类型 (job)
工作类型归为12类
婚姻 (marital)
婚姻状况
教育水平 (education)
教育水平归为8类
违约 (default)
客户是否存在信贷违约(是/否)
住房 (housing)
客户是否有抵押贷款(是/否)
贷款 (loan)
客户是否有个人贷款(是/否)
与上次营销活动相关的客户数据
活动历史记录
说明
上次 (previous)
在上次营销活动之前与客户联系的次数
活动 (campaign)
在上次营销活动中与客户联系的次数
过去天数 (pdays)
自上次营销活动中与客户最后一次联系以来的天数
营销结果 (poutcome)
上次营销活动的结果
与上次联系相关的客户数据
联系历史记录
说明
联系方式 (contact)
最后一次与客户联系的方式(电话/手机)
月份 (month)
最后一次联系的月份
日期 (day_of_week)
最后一次联系的日期
持续时间 (duration)
最后一次联系持续时间(秒)
与上次联系相关的客户数据
联系历史记录
说明
cons.price.idx
消费价格指数
cons.conf.idx
消费者信心指数
euribor3m
euribor 3个月利率
emp.var.rate
就业变化率
nr.employed
就业指标
对于本实验室,我们打算使用所有的可用特性。您可以在稍后返回该步骤,尝试改变一些特性,查看对模型训练的影响情况。
探索过该部分后,就到了最终训练模型的时候了!在构建完整的模型之前,通过训练一个Quick Model(快速模型),从而对我们的模型性能有一个大致了解,不失为一种很好的做法。为优先考虑速度而非准确性,快速模型所训练的模型和超参数组合较少,特别是在像我们这样想证明ML模型训练在我们用例之中的价值情况下。请注意,快速构建不能用于超过5万行的模型。让我们继续并点击Quick build(快速构建)。
现在,我们等待2-15分钟。由于数据集很小,这可能需要不到2分钟的时间。完成后,Canvas将自动跳转至Analyze(分析)选项卡,为我们展示快速训练的结果。使用快速构建所进行的分析显示,我们估计该模型在91.5%的情况下能够预测出正确的结果。
现在,我们来看一下第一个选项卡:Overview(概览)。该选项卡向我们展示了Column impact(列影响),也就是每一列在预测目标列中的大致重要性。在该示例中,“持续时间“列对预测客户是否会在银行开立新存单的影响最大。
如果以下各图中的数字与您的数字不同,不必担心。机器学习在模型训练过程中加入了一些随机性,可能导致不同的构建所生成的结果不同。
跳转至“分析“的Scoring(得分)部分后,可以看到关于实际值的预测值分布图。请注意,大多数客户不太可能办理新的存单。如果您想了解关于Canvas如何使用SHAP基准为机器学习带来可解释性的更多信息,请查看Canvas文档中的“Evaluating
Your Model's Performance in Amazon SageMaker Canvas“部分内容以及SHAP Baselines for Explainability页面。
您对那些预计会办理存单的客户以及该模型对客户子集的预测效果最感兴趣。您可以点击右侧的Advanced metrics(高级指标)链接,仔细观察结果。
点击后将显示一个矩阵,便于您更仔细地检查结果。在机器学习中,其被称为混淆矩阵。
对于左上角的正向类,请点击是,这是就您的用例而言,获取新客户是一种正向结果。
在机器学习中,模型的准确率指的是正确预测的数量除以总预测量。蓝色方框代表模型对已知结果的测试数据子集所做出的正确预测。这种情况下,在8238个总预测中,正确预测的数量为7537个,准确率达到91%。
然而,您更感兴趣的是衡量该模型对新客户的预测准确程度。该模型准确预测了502位客户将办理存单(真正 - TP)。但是,却错误地预测了426个客户不会办理存单,而事实上他们会办理(假负 - FN)。在机器学习中,用来衡量这种情况的比率是TP/(TP+FN)。该比率被称为为召回率。高级指标页面计算并显示该模型的召回率为54%。
现在,您有两个选择:
- 您可以点击页面底部的Predict(预测)按钮,使用该模型进行某些预测;
- 您可以创建一个新版本的模型,通过Standard Build(标准构建)过程进行训练。这耗时更长 - 大约4-6小时 - 但准确率更高。
在本实验室中,我们将选择第1项。请注意,若通过SageMaker Studio集成与数据科学家分享模型,则必须使用Standard Build(标准构建)训练模型。Predictions(预测)不需要完整构建,但其性能可能差于经完全训练过的模型。
-
模块五. 使用该模型生成预测结果
现在,模型已经训练完毕,让我们用其进行一些预测。请在Analyze(分析)页面底部选择Predict(预测),或者选择Predict(预测)选项卡。
现在,请选择Select dataset(选择数据集),并选择bank-marketing.csv。接下来,在页面底部选择Generate predictions(生成预测)。Canvas将使用该数据集来生成预测结果。一般而言,虽然不建议使用相同的数据集进行训练和测试,但为了简单起见,我们使用的是同一个数据集。几秒后,预测完成。您可以点击眼睛图标,通过悬停鼠标查看预测结果预览,或者点击下载按钮,下载包含完整输出的CSV文件。SageMaker Canvas 将为每一行数据返回一个预测值,以及关于预测是否正确的概率。
您也可以选择Single prediction(单次预测)而非批量预测,逐一预测数值。Canvas会显示一个供您为各特性手动输入数值的视图,并生成预测。这非常适合于what-if scenarios(假设场景)情况:例如,如果房屋较旧,价格将如何变化?如果更靠海呢?如果该房屋有多个房间呢?
1. 再次运行该实验室,但构建一个标准模型,查看其性能;
2. 登出(Account -> Log out)本次实验,选择运行另一个实验室。