亚马逊SageMaker数据牧马人 帮助您从单个可视化界面理解、聚合、转换和准备数据以用于机器学习 (ML)。 它包含 300 多个内置数据转换,因此您无需编写任何代码即可快速规范化、转换和组合特征。
数据科学从业者生成、观察和处理数据,以解决他们需要从数据集中转换和提取特征的业务问题。 诸如序号编码或单热编码之类的转换学习数据集上的编码。 这些编码输出称为训练参数。 随着数据集随时间变化,可能需要重新调整以前未见过的数据的编码,以保持转换流与您的数据相关。
我们很高兴地宣布改装训练参数功能,它允许您使用以前训练的参数并根据需要改装它们。 在这篇文章中,我们演示了如何使用此功能。
Data Wrangler 改装功能概述
在深入研究 refit 训练参数功能的细节之前,我们将通过以下示例说明此功能的工作原理。
假设您的客户数据集具有分类特征 country
表示为字符串 Australia
和 Singapore
. 机器学习算法需要数字输入; 因此,必须将这些分类值编码为数值。 对分类数据进行编码是为类别创建数字表示的过程。 例如,如果您的类别国家有值 Australia
和 Singapore
,您可以将此信息编码为两个向量:[1, 0] 来表示 Australia
和 [0, 1] 代表 Singapore
. 这里使用的转换是单热编码,新的编码输出反映了经过训练的参数。
训练模型后,随着时间的推移,您的客户可能会增加,并且您在国家/地区列表中有更多不同的值。 新数据集可能包含另一个类别, India
,这不是原始数据集的一部分,这会影响模型的准确性。 因此,有必要使用随时间收集的新数据重新训练您的模型。
为了克服这个问题,您需要刷新编码以包含新类别并根据最新数据集更新矢量表示。 在我们的示例中,编码应反映 country
,这是 India
. 我们通常将这种刷新编码的过程称为改装操作。 执行改装操作后,您将获得新的编码: Australia
: [1, 0, 0], Singapore
: [0, 1, 0] 和 India
: [0, 0, 1]。 重新拟合 one-hot 编码,然后在新数据集上重新训练模型可以得到更好质量的预测。
Data Wrangler 的 refit 训练参数功能在以下情况下很有用:
- 新数据被添加到数据集中 – 当数据集被新数据丰富时,重新训练 ML 模型是必要的。 为了获得最佳结果,我们需要在新数据集上重新拟合训练过的参数。
- 在对样本数据执行特征工程后对完整数据集进行训练 – 对于大型数据集,会考虑使用数据集的样本来学习经过训练的参数,这可能不代表您的整个数据集。 我们需要重新学习完整数据集上的训练参数。
以下是对数据集执行的一些最常见的 Data Wrangler 转换,这些转换受益于改装训练参数选项:
有关 Data Wrangler 中转换的更多信息,请参阅 转换资料.
在这篇文章中,我们展示了如何使用 Data Wrangler 在数据集上处理这些经过训练的参数。 您可以在生产作业中使用 Data Wrangler 流,在数据增长和变化时重新处理数据。
解决方案概述
对于这篇文章,我们演示了如何将 Data Wrangler 的改装训练参数功能与公开可用的数据集结合使用 Kaggle:来自 Zillow 的美国房屋数据,美国的待售物业。 它具有各种房屋地理分布的房屋销售价格。
下图说明了使用 refit 训练参数功能的 Data Wrangler 的高级架构。 我们还展示了没有经过改装训练的参数对数据质量的影响,并在最后对比了结果。
工作流程包括以下步骤:
- 进行探索性数据分析 – 在 Data Wrangler 上创建一个新流以开始探索性数据分析 (EDA)。 导入业务数据以了解、清理、聚合、转换和准备您的数据以进行训练。 参考 使用示例数据集探索 Amazon SageMaker Data Wrangler 功能 有关使用 Data Wrangler 执行 EDA 的更多详细信息。
- 创建数据处理作业 – 此步骤将您对数据集所做的所有转换导出为存储在配置文件中的流文件 亚马逊简单存储服务 (亚马逊 S3)位置。 使用 Data Wrangler 生成的流文件的数据处理作业应用在您的数据集上学习的转换和训练参数。 数据处理作业完成后,输出文件将上传到目标节点中配置的 Amazon S3 位置。 请注意,改装选项默认处于关闭状态。 作为立即执行处理作业的替代方法,您还可以 安排处理工作 使用 Data Wrangler 只需单击几下 – 创建作业以在特定时间运行。
- 使用 refit 训练的参数功能创建数据处理作业 – 在创建作业时选择新的改装训练参数功能,以在完整或增强数据集上强制重新学习训练参数。 根据用于存储流文件的 Amazon S3 位置配置,数据处理作业会创建或更新新的流文件。 如果您配置与步骤 3 中相同的 Amazon S2 位置,则数据处理作业会更新在步骤 2 中生成的流文件,该文件可用于保持流与数据的相关性。 处理作业完成后,输出文件将上传到目标节点配置的 S3 存储桶。 您可以将更新后的流程用于整个数据集以用于生产工作流程。
先决条件
在开始之前,将数据集上传到 S3 存储桶,然后将其导入 Data Wrangler。 有关说明,请参阅 从 Amazon S3 导入数据.
现在让我们来看看架构图中提到的步骤。
在 Data Wrangler 中执行 EDA
要试用 refit 训练的参数功能,请在 Data Wrangler 中设置以下分析和转换。 在设置 EDA 结束时,Data Wrangler 会创建一个使用数据集中训练参数捕获的流文件。
- 在 Amazon SageMaker Data Wrangler 中创建一个新流以进行探索性数据分析。
- 将您上传到 Amazon S3 的业务数据导入。
- 您可以预览用于选择文件类型、分隔符、采样等的数据和选项。 对于这个例子,我们使用 第一个 K Data Wrangler 提供的采样选项,用于从数据集中导入前 50,000 条记录。
- 进口.
- 检查出 Data Wrangler 应用的数据类型匹配后,添加一个新的分析。
- 针对 分析类型,选择 数据质量和洞察报告.
- 创建.
通过数据质量和洞察报告,您可以获得数据集的简要摘要,其中包含缺失值、无效值、特征类型、异常值计数等一般信息。 您可以选择功能 property_type
和 city
用于在数据集上应用转换以了解经过改装训练的参数特征。
让我们专注于功能 property_type
来自数据集。 在报告中 功能细节 部分,您可以看到 property_type
,这是一个分类特征,以及从 Data Wrangler 的 50,000 个采样数据集中派生的六个唯一值。 完整的数据集可能有更多的特征类别 property_type
. 对于具有许多唯一值的特征,您可能更喜欢序数编码。 如果该特征有几个唯一值,则可以使用 one-hot 编码方法。 对于这个例子,我们选择 one-hot encoding on property_type
.
同样,对于 city
特征,它是一种具有大量唯一值的文本数据类型,让我们对这个特征应用序数编码。
- 导航到 Data Wrangler 流,选择加号,然后选择 添加变换.
- 选择 分类编码 用于转换分类特征的选项。
从数据质量和洞察报告中,特征 property_type
显示六个独特的类别: CONDO
, LOT
, MANUFACTURED
, SINGLE_FAMILY
, MULTI_FAMILY
及 TOWNHOUSE
.
- 针对 改造,选择 一键编码.
对特征应用 one-hot 编码后 property_type
,您可以预览作为新列添加的单独功能的所有六个类别。 请注意,从您的数据集中抽取了 50,000 条记录以生成此预览。 在使用此流程运行 Data Wrangler 处理作业时,这些转换将应用于您的整个数据集。
- 添加一个新的变换并选择 分类编码 对特征应用变换
city
,它具有更多的唯一分类文本值。 - 要将此特征编码为数字表示,请选择 序数编码 改造.
- 在此转换上选择预览。
你可以看到分类特征 city
映射到输出列中的序数值 e_city
.
- 通过选择添加此步骤 更新.
- 您可以将目标设置为 Amazon S3,以存储对数据集应用的转换,从而将输出生成为 CSV 文件。
Data Wrangler 将您在用户界面中定义的工作流存储为流文件并上传到配置的数据处理作业的 Amazon S3 位置。 当您创建 Data Wrangler 处理作业以在更大的数据集上应用转换或转换新的强化数据以重新训练模型时,将使用此流文件。
在未启用改装的情况下启动 Data Wrangler 数据处理作业
现在您可以看到 refit 选项如何在新数据集上使用经过训练的参数。 对于此演示,我们定义了两个对相同数据进行操作的 Data Wrangler 处理作业。 第一个处理作业不会启用改装; 对于第二个处理作业,我们使用 refit。 最后我们比较一下效果。
- 建立工作 使用 Data Wrangler 启动数据处理作业。
- 针对 工作名称,输入名称。
- 下 训练参数,不选择 改装.
- 配置作业.
- 配置作业参数,例如实例类型、卷大小和用于存储输出流文件的 Amazon S3 位置。
- Data Wrangler 在流文件 S3 位置创建一个流文件。 流程使用转换来训练参数,我们稍后使用 refit 选项重新训练这些参数。
- 创建.
等待数据处理作业完成,即可在目标节点中配置的 S3 存储桶中查看转换后的数据。
启动启用改装的 Data Wrangler 数据处理作业
让我们创建另一个启用了改装训练参数功能的处理作业。 此选项强制在整个数据集上重新学习经过训练的参数。 此数据处理作业完成后,将创建一个流文件或将其更新到配置的 Amazon S3 位置。
- 建立工作.
- 针对 工作名称,输入名称。
- 针对 训练参数, 选择 改装.
- 如果您选择 查看全部 ,您可以查看所有训练的参数。
- 配置作业.
- 输入 Amazon S3 流文件位置。
- 创建.
等待数据处理作业完成。
参考目标节点中已配置的 S3 存储桶,以查看运行定义的转换的数据处理作业生成的数据。
导出到 Python 代码以运行 Data Wrangler 处理作业
作为使用 Data Wrangler 中的创建作业选项启动处理作业的替代方法,您可以通过将 Data Wrangler 流导出到 Jupyter 笔记本来触发数据处理作业。 Data Wrangler 生成一个 Jupyter 笔记本,其中包含输入、输出、处理作业配置和用于作业状态检查的代码。 您可以根据数据转换要求更改或更新参数。
- 选择最后一个旁边的加号 改造 节点。
- 出口 并 Amazon S3(通过 Jupyter Notebook).
您可以看到一个 Jupyter notebook 打开,其中包含输入、输出、处理作业配置和用于作业状态检查的代码。
- 要通过代码强制执行改装训练参数选项,请设置
refit
参数True
.
比较数据处理作业结果
在 Data Wrangler 处理作业完成后,您必须使用存储在配置的 Amazon S3 目标中的数据处理作业生成的输出创建两个新的 Data Wrangler 流。
您可以参考 Amazon S3 目标文件夹中配置的位置来查看数据处理作业的输出。
要检查处理作业结果,请使用数据质量和洞察报告创建两个新的 Data Wrangler 流,以比较转换结果。
- 在 Amazon SageMaker Data Wrangler 中创建一个新流。
- 从 Amazon S3 导入没有启用 refit 的输出文件的数据处理作业。
- 添加新的分析。
- 针对 分析类型,选择 数据质量和洞察报告.
- 创建.
重复上述步骤并创建新的数据管理员流程,以分析启用改装的数据处理作业输出。
现在让我们看看该功能的处理作业的输出 property_type
使用数据质量和洞察报告。 滚动到数据和洞察报告列表中的功能详细信息 feature_type
.
refit trained parameter processing job 已经在整个数据集上重新拟合了训练参数并对新值进行了编码 APARTMENT
在完整数据集上有七个不同的值。
正常处理作业应用样本数据集训练参数,这些参数只有六个不同的值 property_type
特征。 对于数据与 feature_type
APARTMENT
是, 无效处理策略 应用了跳过并且数据处理作业不会学习这个新类别。 one-hot 编码跳过了新数据上存在的这个新类别,编码跳过了该类别 APARTMENT
.
现在让我们关注另一个功能, city
. 经过改装训练的参数处理作业已重新学习了所有可用的值 city
特征,考虑到新数据。
如图所示 功能摘要 报告的部分,新的编码特征列 e_city
通过使用改装训练的参数功能,具有 100% 的有效参数。
相比之下,正常处理作业在新编码的特征列中有 82.4% 的缺失值 e_city
. 这种现象是因为只有学习到的训练参数的样本集被应用到完整的数据集上,数据处理作业没有应用任何改装。
以下直方图描述了序号编码特征 e_city
. 第一个直方图是使用 refit 选项转换的特征。
下一个直方图是在没有调整选项的情况下转换的特征。 橙色列显示数据质量和洞察报告中的缺失值 (NaN)。 未从示例数据集中学习的新值被替换为非数字 (NaN),如 Data Wrangler UI 中配置的那样 无效处理策略.
具有 refit 训练参数的数据处理作业重新学习了 property_type
和 city
考虑整个数据集中新值的特征。 如果没有 refit 训练参数,数据处理作业仅使用采样数据集的预学习训练参数。 然后将它们应用于新数据,但不考虑对新值进行编码。 这将对模型准确性产生影响。
清理
当您不使用 Data Wrangler 时,请务必关闭运行它的实例以避免产生额外费用。
为避免丢失工作,请在关闭 Data Wrangler 之前保存您的数据流。
- 将您的数据流保存在 亚马逊SageMaker Studio,选择 文件,然后选择 保存数据牧马人流程. Data Wrangler 每 60 秒自动保存一次您的数据流。
- 要关闭 Data Wrangler 实例,请在 Studio 中选择 运行实例和内核.
- 下 运行应用程序,选择 sagemaker-data-wrangler-1.0 应用程序旁边的关机图标。
- 全部关闭 进行确认。
Data Wrangler 在 ml.m5.4xlarge 实例上运行。 此实例从 运行实例 当您关闭 Data Wrangler 应用程序时。
关闭 Data Wrangler 应用程序后,它必须在您下次打开 Data Wrangler 流文件时重新启动。 这可能需要几分钟。
结论
在这篇文章中,我们概述了 Data Wrangler 中的 refit 训练参数功能。 借助这项新功能,您可以将训练后的参数存储在 Data Wrangler 流程中,并且数据处理作业使用训练后的参数将学习到的转换应用于大型数据集或强化数据集。 您可以将此选项应用于矢量化文本特征、数值数据和处理异常值。
在 ML 生命周期的整个数据处理过程中保留经过训练的参数可以简化和减少数据处理步骤,支持鲁棒的特征工程,并支持对新数据进行模型训练和强化训练。
我们鼓励您根据您的数据处理要求尝试这项新功能。
关于作者
哈里哈兰苏雷什 是 AWS 的高级解决方案架构师。 他热衷于数据库、机器学习和设计创新解决方案。 在加入 AWS 之前,Hariharan 是一名产品架构师、核心银行实施专家和开发人员,并在 BFSI 组织工作了 11 年多。 除了技术,他还喜欢滑翔伞和骑自行车。
桑托什·库尔卡尼 是 Amazon Web Services 的企业解决方案架构师,与澳大利亚的体育客户合作。 他热衷于利用他在 AI/ML、大数据和软件开发方面的知识构建大型分布式应用程序来解决业务问题。
维沙尔·卡普尔 是 AWS AI 的高级应用科学家。 他热衷于帮助客户了解他们在 Data Wrangler 中的数据。 在业余时间,他骑山地自行车、滑雪板,并与家人共度时光。
阿尼克斯·曼朱纳特 是 Amazon SageMaker 的软件开发工程师。 他帮助支持 Amazon SageMaker Data Wrangler,并对分布式机器学习系统充满热情。 工作之余,他喜欢远足、看电影和打板球。