使用 Amazon SageMaker Data Wrangler PlatoBlockchain 数据智能构建心理健康机器学习风险模型。 垂直搜索。 哎。

使用 Amazon SageMaker Data Wrangler 构建心理健康机器学习风险模型

这篇文章由数据科学家 Shibangi Saha 和 Equilibrium Point 联合创始人兼首席技术官 Graciela Kravtzov 共同撰写。

许多人正在经历精神疾病的新症状,例如压力、焦虑、抑郁、药物滥用和创伤后应激障碍 (PTSD)。 根据 凯撒家庭基金会全国大约一半的成年人(47%)报告了大流行期间对心理健康的负面影响,比大流行前的水平显着增加。 此外,某些性别和年龄组最有可能报告压力和担忧,其比例远高于其他组。 此外,一些特定的种族群体比其他群体更有可能报告其心理健康受到“重大影响”。

包括疾病控制中心 (CDC) 收集的多项调查显示,自我报告的行为健康症状大幅增加。 根据 CDC 的一份报告,该报告于 2020 年 31 月下旬对美国各地的成年人进行了调查,其中 13% 的受访者表示有焦虑或抑郁症状,26% 的受访者表示已经开始或增加药物使用,11% 的受访者表示有压力相关症状,30% 的受访者表示有压力相关症状。据报告在过去 XNUMX 天内有严重的自杀念头。

自我报告的数据虽然对于诊断心理健康障碍绝对重要,但可能会受到与围绕心理健康和心理健康治疗的持续耻辱相关的影响。 我们可以使用健康记录和索赔数据中的数据来估计和预测精神困扰,而不是仅仅依靠自我报告的数据来尝试回答一个基本问题:我们能否在需要之前预测谁可能需要心理健康帮助? 如果能够识别出这些人,就可以制定和部署早期干预计划和资源,以应对任何新的或增加的潜在症状,从而减轻精神障碍的影响和成本。

对于那些一直在管理和处理大量复杂且充满漏洞的索赔数据方面遇到困难的人来说,说起来容易做起来难! 在这篇文章中,我们分享如何 平衡点物联网 用过的 亚马逊SageMaker数据牧马人 简化我们的心理健康用例的索赔数据准备,同时确保整个过程中每个步骤的数据质量。

解决方案概述

数据准备或特征工程是一个乏味的过程,需要经验丰富的数据科学家和工程师花费大量时间和精力来制定各种转换(步骤)的方法,以使数据达到正确的形状。 事实上,研究表明机器学习 (ML) 的数据准备消耗了数据科学家高达 80% 的时间。 通常,科学家和工程师使用各种数据处理框架(例如 Pandas、PySpark 和 SQL)来编码其转换并创建分布式处理作业。 借助 Data Wrangler,您可以自动化此过程。 数据牧马人是一个组件 亚马逊SageMaker Studio 它提供了用于导入、准备、转换、特征化和分析数据的端到端解决方案。 您可以集成 Data Wrangler 数据流 融入您现有的 ML 工作流程中,以很少甚至无需编码的方式简化数据处理和特征工程。

在这篇文章中,我们将逐步介绍将原始数据集转换为 ML 就绪特征的步骤,以便用于在下一阶段构建预测模型。 首先,我们深入研究用于我们的用例的各种数据集的性质,以及我们如何通过 Data Wrangler 连接这些数据集。 在连接和数据集整合之后,我们描述了我们在数据集上应用的各个转换,例如重复数据删除、处理缺失值和自定义公式,然后介绍了如何使用内置的快速模型分析来验证转换的当前状态用于预测。

数据集

在我们的实验中,我们首先从行为健康客户端下载患者数据。 该数据包括以下内容:

  • 索赔数据
  • 急诊室就诊人数
  • 住院人数
  • 与心理健康相关的药物处方数量
  • 分层状况编码 (HCC) 诊断与心理健康相关的计数

目标是根据患者 ID 连接这些单独的数据集,并利用这些数据来预测心理健康诊断。 我们使用 Data Wrangler 创建了包含数百万行数据的庞大数据集,该数据集是五个独立数据集的联接。 我们还使用 Data Wrangler 执行多次转换以允许列计算。 在以下部分中,我们将描述我们应用的各种数据准备转换。

连接后删除重复的列

Amazon SageMaker Data Wrangler 提供了大量 ML 数据转换,以简化数据的清理、转换和特征化。 添加转换时,它会向数据流添加一个步骤。 您添加的每个转换都会修改数据集并生成新的数据框。 所有后续转换都适用于生成的数据帧。 Data Wrangler 包含内置转换,您可以使用它来转换列,而无需任何代码。 您还可以使用 PySpark、Pandas 和 PySpark SQL 添加自定义转换。 一些转换就地进行操作,而另一些转换则在数据集中创建新的输出列。

对于我们的实验,由于每次连接患者 ID 后,我们都会留下重复的患者 ID 列。 我们需要删除这些列。 我们删除了正确的患者 ID 列,如下面的屏幕截图所示,使用预先构建的 管理列 –>下降柱 转换,仅维护一个患者 ID 列(最终数据集中的 Patient_id)。

ML8274-image001

使用 Pandas 透视数据集

索赔数据集是患者级别的急诊就诊 (ER)、住院患者 (IP)、处方计数和诊断数据,已按相应的 HCC 代码(大约 189 个代码)分组。 为了构建患者数据集市,我们按患者聚合索赔 HCC 代码,并将 HCC 代码从行转向列。 我们使用 Pandas 来透视数据集,计算患者的 HCC 代码数量,然后根据患者 ID 连接到主要数据集。 我们使用 Data Wrangler 中的自定义转换选项,选择 Python (Pandas) 作为选择的框架。

ML8274-image002

以下代码片段显示了对表进行透视的转换逻辑:

# Table is available as variable df
import pandas as pd
import numpy as np table = pd.pivot_table(df, values = 'claim_count', index=['patient_id0'], columns = 'hcc', fill_value=0).reset_index()
df = table

使用自定义公式创建新列

我们研究了研究文献,以确定哪些 HCC 代码在心理健康诊断中具有确定性。 然后,我们使用 Data Wrangler 自定义公式转换编写此逻辑,该转换使用 Spark SQL 表达式来计算心理健康诊断目标列 (MH),并将其添加到 DataFrame 的末尾。

ML8274-image003

我们使用了以下转换逻辑:

# Output: MH
IF (HCC_Code_11 > 0 or HCC_Code_22 > 0 or HCC_Code_23 > 0 or HCC_Code_54 > 0 or HCC_Code_55 > 0 or HCC_Code_57 > 0 or HCC_Code_72 > 0, 1, 0)

使用 PySpark 从 DataFrame 中删除列

计算目标 (MH) 列后,我们删除了所有不必要的重复列。 我们保留了患者 ID 和 MH 列以加入我们的主要数据集。 这是通过使用 PySpark SQL 作为我们选择的框架的自定义 SQL 转换来实现的。

ML8274-image005

我们使用了以下逻辑:

/* Table is available as variable df */ select MH, patient_id0 from df

移动MH栏开始

我们的 ML 算法要求标记输入位于第一列。 因此,我们将 MH 计算列移至 DataFrame 的开头以准备导出。

ML8274-image006

使用 Pandas 用 0 填充空白

我们的机器学习算法还要求输入数据没有空字段。 因此,我们用 0 填充了最终数据集的空字段。 我们可以通过 Data Wrangler 中的自定义转换(Pandas)轻松地做到这一点。

ML8274-image007

我们使用了以下逻辑:

# Table is available as variable df
df.fillna(0, inplace=True)

将柱从浮点转换为长柱

您还可以在 Data Wrangler 中轻松解析列并将其转换为任何新数据类型。 出于内存优化的目的,我们将心理健康标签输入列转换为浮点数。

ML8274-image008

快速模型分析:特征重要性图

创建最终数据集后,我们利用 Data Wrangler 中的快速模型分析类型来快速识别数据不一致之处,以及我们的模型准确性是否在预期范围内,或者我们是否需要在花时间训练模型之前继续进行特征工程。 该模型返回的 F1 分数为 0.901,其中 1 为最高。 F1 分数是一种结合模型精度和召回率的方法,它被定义为两者的调和平均值。 检查这些初步的积极结果后,我们准备导出数据并使用导出的数据集继续进行模型训练。

ML8274-image009

通过 Jupyter Notebook 将最终数据集导出到 Amazon S3

最后一步,将数据集以其当前形式(已转换)导出到 亚马逊简单存储服务 (Amazon S3)为了将来用于模型训练,我们使用 保存到 Amazon S3(通过 Jupyter Notebook) 导出选项。 该笔记本启动了分布式且可扩展的 Amazon SageMaker处理 将创建的配方(数据流)应用于指定输入(通常是较大的数据集)并将结果保存在 Amazon S3 中的作业。 您还可以将转换后的列(功能)导出到 Amazon SageMaker功能商店 或使用以下命令将转换导出为管道 Amazon SageMaker管道,或者简单地将转换导出为 Python 代码。

要将数据导出到 Amazon S3,您有以下三种选择:

  • 通过 Data Wrangler UI 将转换后的数据直接导出到 Amazon S3
  • 通过 Jupyter 笔记本将转换导出为 SageMaker 处理作业(正如我们在本文中所做的那样)。
  • 通过目标节点将转换导出到 Amazon S3。 目标节点告诉 Data Wrangler 在处理数据后将数据存储在哪里。 创建目标节点后,您可以创建一个处理作业来输出数据。

ML8274-image010

结论

在这篇文章中,我们展示了 Equilibrium Point IoT 如何使用 Data Wrangler 来加快大量索赔数据的加载过程,以进行数据清理和转换,为 ML 做好准备。 我们还演示了如何使用 Data Wrangler 中的 Pandas 和 PySpark 将特征工程与自定义转换结合起来,使我们能够逐步导出数据(每次加入后)以保证质量。 这些易于使用的转换在 Data Wrangler 中的应用将端到端数据转换所花费的时间减少了近 50%。 此外,Data Wrangler 中的快速模型分析功能使我们能够在循环执行数据准备和特征工程过程时轻松验证转换状态。

现在我们已经为心理健康风险建模用例准备了数据,下一步,我们计划使用 SageMaker 及其提供的内置算法构建 ML 模型,利用我们的索赔数据集来识别应该寻求心理健康的会员在他们到达需要的地方之前提供服务。 敬请关注!


作者简介

使用 Amazon SageMaker Data Wrangler PlatoBlockchain 数据智能构建心理健康机器学习风险模型。 垂直搜索。 哎。什班吉·萨哈 是 Equilibrium Point 的数据科学家。 她将自己在医疗保健付款人索赔数据和机器学习方面的专业知识结合起来,设计、实施、自动化和记录健康数据管道、报告和分析流程,从而推动医疗保健服务系统的洞察和可操作的改进。 Shibangi 在东北大学理学院获得生物信息学理学硕士学位,在 Khoury 计算机科学与信息科学学院获得生物学和计算机科学理学学士学位。

使用 Amazon SageMaker Data Wrangler PlatoBlockchain 数据智能构建心理健康机器学习风险模型。 垂直搜索。 哎。格拉谢拉·克拉夫佐夫 是 Equilibrium Point 的联合创始人兼首席技术官。 Grace 曾在工程、运营和质量领域担任 C 级/副总裁领导职务,并担任医疗保健和教育行业以及物联网行业领域的业务战略和产品开发执行顾问。 Grace 获得布宜诺斯艾利斯大学机电工程师理学硕士学位和波士顿大学计算机科学理学硕士学位。

使用 Amazon SageMaker Data Wrangler PlatoBlockchain 数据智能构建心理健康机器学习风险模型。 垂直搜索。 哎。阿伦普拉萨特·香卡(Arunprasath Shankar) 是 AWS 的人工智能和机器学习 (AI/ML) 专家解决方案架构师,帮助全球客户在云中有效和高效地扩展他们的 AI 解决方案。 在业余时间,阿伦喜欢看科幻电影和听古典音乐。

使用 Amazon SageMaker Data Wrangler PlatoBlockchain 数据智能构建心理健康机器学习风险模型。 垂直搜索。 哎。 阿杰夏尔马 是 Amazon SageMaker 的高级产品经理,他专注于 SageMaker Data Wrangler,这是一种面向数据科学家的可视化数据准备工具。 在加入 AWS 之前,Ajai 是麦肯锡公司的数据科学专家,负责领导全球领先的金融和保险公司的 ML 业务。 Ajai 对数据科学充满热情,喜欢探索最新的算法和机器学习技术。

时间戳记:

更多来自 AWS机器学习