实验4 - 贷款违约预测(金融服务)
前言:
在本教程中您将扮演银行业公司的业务分析师角色。您的目标是预测您的客户是否会偿还贷款。内容包含:
- 概述
- 将数据集上传至S3存储桶
- 在Canvas中导入数据集
- 构建和训练ML模型
- 使用该模型生成预测结果
在开始本实验室之前,请确保您已经完成“手把手带你启动 Amazon SageMaker Canvas ”(先决条件)部分中描述的步骤。
关于本教程 | |
---|---|
时间 | 10 分钟 |
费用 | 免费套餐 |
相关行业 | 通用 |
相关产品 | Amazon SageMaker Canvas |
受众 | 业务分析师 |
级别 | 初级 |
上次更新日期 | 2022年5月 |
-
模块一. 概述
在本实验室中,您将扮演银行业公司的业务分析师角色。您的目标是预测您的客户是否会偿还贷款。您将使用金融服务领域的一个著名数据集 - Lending Club贷款数据集。该数据集包含2007-2011年间发放的所有贷款完整数据,包括当前贷款状态和最新还款信息。该数据集约含有40000行,21个特性列,数据模式如下所示:
列名
说明
loan_status
贷款的当前状态(目标变量)。
loan_amount
借款人申请的贷款列表金额。如果在某个时间点,信贷部门减少了贷款金额,则其将通过该金额体现出来。
funded_amount_by_investors
投资者在该时间点为该贷款承诺的总额。
term
贷款的还款次数。该值以月为单位,可以是36或60。
interest_rate
贷款利率。
installment
贷款发放后,借款人每月所欠款项。
grade
LC指定的贷款等级。
sub_grade
LC指定的贷款子等级。
employment_length
就业年限。该值可能在0到10之间,其中0表示不到一年,10表示10年或以上。
home_ownership
借款人在登记时提供的房屋所有权状态。该值包括:租住、拥有、抵押贷款、其他。
annual_income
借款人在登记时提供的自报年收入。
verification_status
表示收入是否已经LC核实,是否未经核实,或者收入来源是否已经核实。
issued_amount
贷款得到资金支持的月份。
purpose
借款人为申请贷款而提供的类别。
dti
使用借款人每月偿还的债务总额(不包括抵押贷款和申请的信用证贷款)除以借款人自报的月收入所计算出的比率。
earliest_credit_line
借款人最早报告的信用额度开放月份。
inquiries_last_6_months
过去6个月的查询次数(不包括汽车和抵押贷款查询)。
open_credit_lines
借款人信用档案中的无担保信用额度数量。
derogatory_public_records
减损性公共记录数量。
revolving_line_utilization_rate
循环额度利用率,即借款人使用的信贷额度相对于所有可用循环信贷的比例。
total_credit_lines
借款人信用档案中现有的信用额度总数。
-
模块二. 将数据集上传至S3存储桶
在S3控制台,点击sagemaker-studio-*存储桶。
sagemaker-studio-*桶是在您在“手把手带你启动Amazon SageMaker Canvas ”(先决条件)部分创建SageMakerStudio域时自动创建的。
点击Upload(上传)。
在上传页面,拖放您刚刚下载的 bank-marketing.csv 文件,然后在页面底部点击Upload(上传)。上传完成后,点击右上方的Close(关闭)按钮。现在,您应该看到文件已经上传至您的存储桶中。
-
模块三 - 在Canvas中导入数据集
返回在手把手带你启动 SageMaker Canvas(先决条件)部分创建的 SageMaker Canvas 选项卡。在左边的菜单上,您可以点击第二个图标,进入数据集部分,然后点击 Import(导入)按钮。
现在,选择我们之前上传数据集的存储桶,即sagemaker-studio-*存储桶。
现在您可以通过选择其左侧的复选框而选择之前上传的loans-part.csv文件。在页面底部会弹出两个新的按钮:Preview all(预览全部)和 Import Data(导入数据)。我们选择第一个。
现在,您会看到将要导入的数据集100行预览。核对无误后,点击Import Data(导入数据)。
现在,点击Join data(加入数据),然后选择2个贷款数据集,将其从屏幕左侧拖放至右侧。这两个数据集将连接起来,并出现带有红色感叹号的连接符号。点击该连接符号,然后为2个数据集选择 id 密钥。将连接类型保留为Inner。看起来应该如下所示:
点击Save & Close(保存&关闭),然后点击Import Data(导入数据);输入数据集名字,例如lans-training-data,然后Import Data(导入数据)。
-
模块四. 构建和训练ML模型
现在,请点击左侧菜单上的第二个按钮,返回网页的Models(模型)部分。
点击+ New model(构建新模型),并为您的模型添加一个名称,例如“Housing Prices“或”Housing Regression“。
如果是首次构建Canvas模型,将会弹出一个信息窗口,介绍如何通过4个简单步骤构建首个模型。您可以先读一遍,然后再返回本指南。
在Model(模型)视图中,您会看到四个选项卡,分别对应构建模型并用来生成预测的四个步骤: Select(选择)、 Build(构建)、 Analyze(分析)、 Predict(预测)。在第一个 Select(选择)选项卡中,点击单选按钮,选择我们之前上传的loans-training-data数据集。该数据集来自S3存储桶,包括23列和大约4万多行。点击底部的 Select dataset(选择数据集)按钮。
Canvas将自动跳转至Build(构建)阶段。在该选项卡中,请选择目标列,在我们的示例中为loan_status。Canvas会自动检测到这是一个3+ category prediction(超3类预测)问题(也称为多类分类)。如果检测到模型类型错误,您可以通过屏幕中央的Change type(更改类型)链接手动更改。
在屏幕的下半部分,您可以看一下数据集的一些统计数据,包括缺失值和不匹配值、唯一值、均值和中值。您可以查看如下一些统计数据和信息:
- Column View(列视图)提供了所有列的列表,其数据类型及其基本统计数据,包括缺失值和不匹配值、唯一值、均值和中值。这将有助于您制定策略,处理数据集中的缺失值。
- Grid View(网格视图)提供各列和样本数据的数值分布图。您可以开始推断用于训练模型的相关列。
- 您也可以放弃一些列,如果我们不想在预测中使用这些列,只需在左侧的复选框取消勾选即可。在本实验室中,我们计划取消那些对模型训练过程无用的列:id,其是一个主关键字,不包含有价值的信息;出于同样原因,我们也将放弃employer_title, grade, sub_grade。
- 通过我们的探索性数据分析,可以看到数据集不存在大量的缺失值。因此,我们不必处理缺失值。如果您看到您的特性缺失值很多,您可以过滤缺失值。
- 探索过该部分后,就到了最终训练模型的时候了!在构建完整的模型之前,通过训练一个Quick Model(快速模型),从而对我们的模型性能有一个大致了解,不失为一种很好的做法。为优先考虑速度而非准确性,快速模型所训练的模型和超参数组合较少,特别是在像我们这样想证明ML模型训练在我们用例之中的价值情况下。请注意,快速构建不能用于超过5万行的模型。让我们继续并点击Quick build(快速构建)。
- 现在,我们等待2-15分钟,让Quick build(快速构建)完成模型训练。
完成后,Canvas将自动跳转至Analyze(分析)选项卡,为我们展示快速训练的结果:
如果以下各图中的数字与您的数字不同,不必担心。机器学习在模型训练过程中加入了一些随机性,可能导致不同的构建所生成的结果不同。
现在,我们来看一下第一个选项卡:Overview(概览)。该选项卡向我们展示了Column impact(列影响),也就是每一列在预测目标列中的大致重要性。在该示例中,Credit History(信用记录)列在预测客户是否会偿还贷款额方面具有最大影响,其次是Loan amount(贷款金额)。
在Scoring(得分)选项卡中,可以看到代表正确与错误预测值的分布图。
Advanced metrics(高级指标)包含的信息供希望更深入了解其模型性能的用户使用。到目前为止,您已经看到模型的准确率为82.9%。在机器学习中,模型的准确率指的是正确预测的数量除以总预测量。Confusion Matrix(混淆矩阵)中的蓝色方框代表模型对用于测试模型的数据集子集所做出的正确预测。
然而,您更感兴趣的是衡量该模型对违约者的预测准确程度。在本例中,该模型正确预测了75位借款人将偿还贷款。这在矩阵中表示为真正(TP,True Positives)。
现在请注意,该模型错误地预测了约1000位借款人将被冲销而非全额偿还。这被称为假负(FN,False Negative)。在机器学习中,用来衡量这种情况的比率是TP/(TP+FN)。该比率被称为召回率。高级指标页面计算并显示该模型的召回率为35%。关于混淆矩阵的更多信息,请参阅这篇文章。
现在,您有两个选择:
- 点击页面底部的Predict(预测)按钮,使用该模型进行某些预测;
- 创建一个新版本的模型,通过Standard Build(标准构建)过程进行训练。这耗时更长 - 大约4-6小时 - 但准确率更高。
在本实验室中,我们将选择第1项。如果您愿意的话,可自行运行第2项。请注意,若通过SageMaker Studio集成与数据科学家分享模型,则必须使用Standard
Build(标准构建)训练模型。Predictions(预测)不需要完整构建,但其性能可能差于经完全训练过的模型。
- Column View(列视图)提供了所有列的列表,其数据类型及其基本统计数据,包括缺失值和不匹配值、唯一值、均值和中值。这将有助于您制定策略,处理数据集中的缺失值。
-
模块五. 使用该模型生成预测结果
现在,模型已经训练完毕,让我们用其进行一些预测。请在Analyze(分析)页面底部选择Predict(预测),或者选择Predict(预测)选项卡。点击Batch prediction(批量预测),选择用来批量生成预测结果的数据集。
在本实验室中,我们将使用之前的数据集,即loans-training-dataset。在Production(生产)环境中,请确保用于预测的数据集与用于训练的数据集不同。
几秒钟后,将生成预测结果。您可以交互式地查看预测结果,或者将预测值下载到您的本地机器上。
另外,您也可以进行Single prediction(单次预测),为每一列选择数值。这非常适合于生成what-if scenario(假设场景),并测试不同的列对模型的预测结果有何影响。
1. 再次运行该实验室,但构建一个标准模型,查看其性能;
2. 登出(Account -> Log out)本次实验,选择运行另一个实验室。