实验5 - 糖尿病患者再入院预测(医疗保健与生命科学)

前言:

在本教程中,您将使用Amazon SageMaker Canvas分析代表患者和医院结果的历史数据集,并在无需编写代码的情况下构建机器学习(ML),预测再入院情况。内容包含: 

  1. 概述
  2. 关于糖尿病患者再入院
  3. 构建模型并在Canvas中导入数据集
  4. 在SageMakerCanvas中构建模型
  5. 将数据集导入模型
  6. 构建和训练ML模型
  7. 使用该模型生成预测结果

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

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

教程说明

进入开发环境 

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

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

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

  • 在本实验室中,您将学习如何使用Amazon Sagemaker Canvas,分析代表患者和医院结果的历史数据集,并在无需编写代码的情况下构建机器学习(ML),预测再入院情况。该模型需预测高危糖尿病患者在上次就诊后的30天内或30天后是否有可能再次入院。由于该用例涉及多个结果,此ML问题被称为Multi-class Classification(多类分类)。

  • 再入院在医疗总支出中占比很大,也是衡量护理质量的一个新兴指标。与其他慢性病类似,糖尿病也伴随着不断增加的再入院风险。

    样本数据集代表历史数据,包括超过15个带有患者和医院结果的特性。该数据集包含约69500行。

    列名

    数据类型

    数据类型

    race

    字符串

    高加索人、亚洲人、非裔美国人或西班牙人

    time_in_hospital

    整数

    从入院到出院的天数,又称住院时间

    number_outpatient

    整数

    患者在就诊前的一年内门诊次数

    number_inpatient

    整数

    患者在就诊前的一年内住院次数

    number_emergency

    整数

    患者在就诊前的一年内急诊次数

    number_diagnoses

    整数

    输入到系统中的诊断次数

    num_procedures

    整数

    就诊期间进行的处置(不包括实验室检测)次数

    num_medications

    整数

    就诊期间使用的不同普通药物数量

    num_lab_procedures

    整数

    就诊期间进行的实验室检测次数

    max_glu_serum

    字符串

    表示结果范围或者是否未进行检测。数值:“>200”、“>300”、“正常”和“无”(如果未测量)

    gender

    字符串

    值:“男性”、“女性”和“未知/无效”

    diabetes_med

    整数

    表示是否开过任何糖尿病药物

    change

    字符串

    表示是否更改过糖尿病药物(乙醚剂量或通用药物名称)。值:“改变”或“无改变”

    age

    整数

    患者就诊时的年龄

    a1c_result

    字符串

    表示如果没有服用的结果范围。数值:“>8”、“>7”、“正常”和“无”

    readmitted

    字符串

    到住院患者再入院的天数。数值:如果患者在不到30天内再入院,则为“<30”;如果患者在就诊30天后再入院,则为“>30”;没有再入院记录,则为“无”

  • 第一步是下载样本数据集。请点击此处下载。

    从亚马逊云科技管理控制台进入Amazon S3,打开sagemaker-studio-*文件夹或SageMaker Canvas可以访问的任何文件夹。

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

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

    点击Upload(上传)。

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

    在 SageMaker Canvas 中构建模型

    现在,我们跳转至Amazon SageMaker Canvas,请点击左侧菜单上的第二个按钮,返回网页的Models(模型)部分。

    点击+ New model(构建新模型),并为您的模型添加一个名称。

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

  • 在Model(模型)视图中,您会看到四个选项卡,分别对应构建模型并用来生成预测的四个步骤: Select(选择)、 Build(构建)、 Analyze(分析)、 Predict(预测)。在第一个 Select(选择)选项卡中,点击单选按钮,导入我们之前上传至S3存储桶的 diabetes-readmission.csv 数据集。

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

    现在,您可以点击状态列的view(查看)图标,预览数据集的前100条记录。

    打开预览后,选择Select Dataset(选择数据集),导入数据集。

    Canvas将自动跳转至Build(构建)阶段。在该选项卡中,请选择目标列,在我们的示例中为 readmitted。该目标列表示患者在上次就诊后的30天内或30天后是否已再次入院或者无记录(数值:“无”、“ <30”和“>30”)。

    我们用于演示的数据集不均衡,导致准确率下降。

    这就是您想要训练您的模型并进行预测的内容。Canvas会自动检测到这是一个3+ category prediction(超3类预测)问题。如果检测到模型类型错误,您可以通过屏幕中央的Change type(更改类型)链接手动更改。

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

    这也可以用来放弃一些列,如果我们不想在预测中使用这些列,只需在左侧的复选框取消勾选即可。对各列的说明如下所示。例如,由于影响程度较低,我们放弃a1c_result、max_glu_serum、gender、num_procedures、number_outpatient等列。

    您也可以通过进入Grid View(网格视图),点击列头,更深入地了解每一列。点击后将显示Column(列)的详细信息,包括与统计和分布相关的数据。

  • 构建模型前,您可以Preview model(预览模型),这一操作将分析数据集,并给出Estimated Accuracy(估计准确度)和列的影响。

    分析过数据集并根据影响程度而修改各列之后,您可以选择Standard Build(标准构建)- 通常耗时2-4个小时,准确度更高 - 或者Quick Build(快速构建)- 通常需要2-5分钟,但准确度会受到影响。请注意,您无法共享Quick Build(快速构建)模型。对于给定的多类问题,我们只能运行标准构建。

    在构建Standard Model(标准模型)时,SageMaker Canvas会进行一定程度的预处理和数据平衡。SageMaker Canvas 使用的一些算法已经通过其部分超参数完成对不平衡的数据处理。

    现在,我们等待大约2小时。耗时可能不同。完成后,Canvas 将自动跳转至Analyze(分析)选项卡,向我们展示快速训练的结果。使用快速构建进行的分析估计,我们的模型能够在61%的情况下给出正确预测结果。

    我们重点查看第一个选项卡:Overview(概览)。该选项卡向我们展示了Column impact(列影响),也就是每一列在预测目标列中的大致重要性。在该示例中,number_diagnoses列在预测方面具有最大影响,其次是number_inpatient。

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

    跳转至“分析“的Scoring(得分)部分后,可以看到预测值相对于实际值的分布图。请注意,大多数客户不太可能再入院。如果您想了解关于Canvas如何使用SHAP基准为机器学习带来可解释性的更多信息,请参阅Canvas文档中的“Evaluating Your Model's Performance in Amazon SageMaker Canvas“部分内容以及SHAP Baselines for Explainability页面。

    您对那些可能再入院的患者以及该模型对该患者子集的预测效果最感兴趣。您可以点击右侧的Advanced metrics(高级指标)链接,仔细观察结果。

    点击后将显示一个矩阵,便于您更仔细地检查结果。在机器学习中,其被称为混淆矩阵。

    对于not getting readmitted(未再入院)类,请在右侧面板上选择no类。

    在机器学习中,模型的准确率指的是正确预测的数量除以总预测量而得到的值。蓝色方框代表模型对已知结果的测试数据子集所做出的正确预测。这种情况下,在13824个总预测中,正确预测的数量为8426个,准确率达到61%。

    然而,您更感兴趣的是衡量该模型对患者再入院情况的预测准确程度。该模型准确预测了7890位客户不会再入院(真正 - TP)。但是,却错误地预测了4801位客户将会再入院,而事实上他们不会再入院(假负 - FN)。在机器学习中,用来衡量这种情况的比率是TP/(TP+FN)。该比率被称为召回率。高级指标页面计算并显示该模型的召回率为36%。

  • 点击页面底部的Predict(预测)按钮,可以使用该模型进行一些预测。

    现在,模型已经训练完毕,让我们用其进行一些预测。请在Analyze(分析)页面底部选择Predict(预测),或者选择Predict(预测)选项卡。

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

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


入门资源中心

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