亚马逊AWS官方博客

推出 Amazon SageMaker Data Wrangler,一个为机器学习准备数据的可视化界面

今天,我非常高兴地宣布推出 Amazon SageMaker Data Wrangler,一项 Amazon SageMaker 的新功能,它使数据科学家和工程师能够使用可视化界面更快地为机器学习 (ML) 应用程序准备数据。

每当我问一群数据科学家和机器学习工程师,他们实际花了多少时间来研究机器学习问题时,我经常会听到集体叹息,然后是“如果我们幸运的话,20%”。当我问他们为什么时,答案总是一样的,“数据准备一直占用我们 80% 的时间!

事实上,为培训准备数据是机器学习过程的关键步骤,没有人会想着把它搞砸。典型任务包括:

  • 定位数据:查找原始数据的存储位置并获取对它的访问权限
  • 数据可视化:检查数据集中每列的统计属性、构建直方图、研究异常值
  • 数据清理:删除重复项、删除或填充缺少值的条目、删除异常值
  • 数据丰富和特征工程:处理列以构建更具表现力的功能,选择功能子集进行培训

在新机器学习项目的早期阶段,这是一个高度手动的过程,直觉和经验在其中发挥着很大作用。数据科学家通常混合使用定制工具和开源工具(如pandasPySpark),对不同的数据转换组合进行试验,并在培训模型之前使用它们来处理数据集。然后,他们分析预测结果并进行迭代。尽管这一点很重要,但一次又一次地循环这个过程可能非常耗时、繁琐且容易出错。

在某些时候,您将达到适当的准确度级别(或您选择的任何其他指标),然后您会希望在生产环境中的完整数据集上进行培训。但是,您首先必须重现并自动执行在沙箱中尝试的准确数据准备步骤。遗憾的是,鉴于这项工作的交互性质,即使您仔细记录它,总是难免会出错。

最后,在进入终点线之前,您必须管理和扩展数据处理基础设施。现在我想起来了,您用 80% 的时间可能不足以完成所有这些!

推出 Amazon SageMaker Data Wrangler
Amazon SageMaker Data Wrangler 集成在 Amazon SageMaker Studio 中,这是我们面向机器学习的完全托管的集成开发环境 (IDE)。只需单击几下,您就可以连接到数据源、探索和可视化数据、应用内置转换以及自己的转换、将生成的代码导出到自动生成的脚本中,然后在托管基础设施上运行。让我们更详细地了解每一步。

显然,数据准备始于查找和访问数据。SageMaker Data Wrangler 开箱即用,让您可以轻松快速地连接到 Amazon Simple Storage Service (S3)Amazon AthenaAmazon RedshiftAWS Lake Formation。您还可以从 Amazon SageMaker 功能库 导入数据。与所有 AWS 一样,访问管理受 AWS Identity and Access Management (IAM) 的限制,该管理基于附加到您的 SageMaker Studio 实例的权限。

连接到数据源后,您可能希望将数据可视化。使用 SageMaker Data Wrangler 用户界面,您可以在几秒钟内查看表摘要、直方图和散点图。您还可以通过简单地复制和运行使用流行的 Altair 开源库编写的代码来构建自己的自定义图表。

一旦您很好地掌握了数据的外观,就是时候开始准备它了。SageMaker Data Wrangler 包含 300 多种内置转换,例如查找和替换数据、拆分/重命名/删除列、缩放数值、编码类别值等。您所要做的就是在下拉列表中选择转换,然后填写它可能需要的参数。然后,您可以预览更改,并决定是否要将其添加到此数据集的准备步骤列表中。如果您愿意,还可以使用 pandasPySparkPySpark SQL 添加自己的代码来实现自定义转换。

向处理管道添加转换步骤时,您可以在 SageMaker Studio 中查看其图形摘要。您还可以向管道添加新阶段,例如新的数据源或另一组转换步骤(例如,数据清理组,然后是特征工程组)。得益于直观的用户界面,您的数据准备管道将在眼前形成,您将能够立即检查处理过的数据的外观。

早期,您肯定很乐意检查自己的数据准备步骤,并了解它们的预测能力,不是吗? 那么,有好消息! 对于回归和分类问题类型,“快速模型”功能允许您选择数据的子集、培训模型以及确定哪些功能对预测结果的贡献最大。查看模型,您可以尽早轻松诊断和修复数据准备问题,并确定是否需要额外的特征工程来提高模型性能。

一旦您对自己的管道感到满意,就可以一键将其导出到 Python 脚本中,以忠实地重现您的手动步骤。您不会浪费任何时间追逐差异,并可以直接将此代码添加到机器学习项目中。

此外,您还可以将处理代码导出到:

现在,让我们做一个快速演示,向您展示使用 SageMaker Data Wrangler 是多么容易。

使用 Amazon SageMaker Data Wrangler
在打开 SageMaker Studio 时,我创建了一个新的数据流来处理 Titanic 数据集,其中包含乘客的信息,以及显示他们是否在灾难中幸存下来的标签。

SageMaker 截图

我的数据集作为 CSV 文件存储在 Amazon Simple Storage Service (S3) 中,然后我选择适当的数据源。

SageMaker 截图

使用内置工具,我可以快速浏览 S3 存储桶,并找到包含我的数据的 CSV 文件。对于较大的数据集,SageMaker Data Wrangler 还支持Parquet 格式。

当我选择文件时,SageMaker Data Wrangler 向我展示前几行。

SageMaker 截图

我导入了数据集,然后看到数据流的初始视图。右键单击数据集,我选择“Edit data types”(编辑数据类型),以确保 SageMaker Data Wrangler 已正确检测到数据集中每列的类型。

SageMaker 截图

检查每一列,看起来所有类型都是正确的。

SageMaker 截图

回到数据流视图,这次我选择“Add analysis”(添加分析)。这将打开一个新视图,我可以在其中使用直方图、散点图等可视化数据。例如,我创建一个直方图,根据乘客的生存状态显示乘客的年龄分布,并使用他们的性别为统计堆着色。当然,我可以保存它以备将来使用。

SageMaker 截图

再次移回到数据流视图,我选择“Add transform”(添加转换)以开始处理数据集。这将打开一个新视图,向我显示数据集的第一行以及 300 多个内置转换的列表。

SageMaker 截图

Pclass 乘客等级是一个类别变量,我决定用一热编码对其进行编码。这将创建 3 个代表不同维度的新列,我可以预览它们。由于这正是我想要的,所以我应用了这种转换。同样,我将同样的转换应用于性别列。

SageMaker 截图

然后,我删除原来的 Pclass 列。使用相同的转换,我还可以删除名称列。

SageMaker 截图

为了快速了解这些变换是增加还是降低模型的准确性,我可以创建一个分析来现场培训模型。由于我的问题是二进制分类问题,SageMaker Data Wrangler 使用称为 F1 分数的指标。0.749 是一个很好的开始,额外的处理肯定会改善它。我还可以看到哪些功能对预测结果的贡献最大:性别、年龄和三等舱乘客。

SageMaker 截图

然后,转到“Export”(导出)视图,我选择迄今为止创建的所有转换,以便将它们添加到我的机器学习项目中。

SageMaker 截图

在这里,我选择 “Python 代码” 来生成 Python 脚本。其他选项可用于 Amazon SageMaker 处理Amazon SageMaker 管道Amazon SageMaker 功能库.。

SageMaker 截图

几秒钟后,该脚本可用。我可以按原样将其添加到我的机器学习项目中,请放心,我的数据准备步骤将与上面创建的交互式转换保持一致。

SageMaker 截图

开始使用
正如您所看到的,Amazon SageMaker Data Wrangler 让您在将数据准备步骤转换为可立即用于实验和生产的代码之前,以交互方式轻松处理数据准备步骤。

您现在就可以在提供 SageMaker Studio 的所有可用区域开始使用此功能。

立即试用,并向我们提供反馈。我们始终期待您的反馈,您可通过一贯的 AWS Support 联系人向我们提供反馈,也可在针对 SageMaker 在 AWS 论坛上提出反馈。

– Julien

特别感谢我的同事 Peter Liu 在早期测试期间的宝贵帮助。