用于降维的亚马逊 SageMaker Data Wrangler

在机器学习 (ML) 领域,数据集的质量对模型的可预测性至关重要。尽管通常数据越多越好,但由于维度问题,具有大量特征的大型数据集有时会导致模型性能不理想。分析师可以花费大量时间转换数据以提高模型性能。此外,大型数据集更昂贵,训练时间更长。如果时间是一个限制,则模型性能可能会因此受到限制。

降维技术可以帮助缩小数据的大小,同时保留其信息,从而缩短训练时间、降低成本,并可能提高模型的性能。

Amazon SageMaker Data Wrangler 是一款专为机器学习设计的数据 聚合和准备工具。Data Wrangler 通过单个可视化界面简化了数据准备和特征工程的过程,例如数据选择、清理、探索和可视化。Data Wrangler 有 300 多种预配置的数据转换,可以有效地用于转换数据。此外,你可以在 PySpark、SQL 和熊猫中编写自定义转换。

今天,我们很高兴将机器学习领域常用的新转换技术添加到 Data Wrangler 预建转换列表中:使用主成分分析进行降维。借助这项新功能,您只需在 Data Wrangler 控制台上单击几下,即可将数据集中的大量维度减少到可用于常用机器学习算法的维度。这可以毫不费力地显著提高模型性能。

在这篇文章中,我们概述了这项新功能,并展示了如何在数据转换中使用它。我们将展示如何在大型稀疏数据集上使用降维。

主成分分析概述

主成分分析 (PCA) 是一种方法,通过该方法,可以在具有许多数值特征的数据集中将特征的维度转换为具有较少特征的数据集,同时仍尽可能保留原始数据集中的信息。这是通过找到一 组名为组件的新特征来实现的 ,这些特征是相互不相关的原始特征的组合。数据集中的多个特征通常对最终结果的影响较小,并可能增加机器学习模型的处理时间。人类可能很难理解和解决此类高维度问题。像 PCA 这样的降维技术可以帮助我们解决这个问题。

解决方案概述

在这篇文章中,我们将介绍如何在 MNIST 数据集上使用 Data Wrangler 中的降维变换,将要 素数量减少 85%,同时仍能获得与原始数据集相似或更好的精度。MNIST(修改后的美国国家标准与技术研究院)数据集是计算机视觉中事实上的 “你好” 数据集,是一个手写图像数据集。数据集的每一行对应于 28 x 28 像素的单张图像,总共为 784 像素。每个像素由数据集中的单个要素表示,其像素值介于 0—255 之间。

要了解有关新的降维功能的更多信息,请参阅在数据集中 降低维度

先决条件

这篇文章假设你已经设置了一个 亚马逊 SageMaker Studio 域名 。有关如何设置的详情,请参阅使用快速设置 登录 Amazon SageMaker 域名

要开始使用 Data Wrangler 的新功能,请在 升级到最新版本 后打开 Studio,然后选择 “ 文件 ” 菜单、“ 新建” 和 “” ,或者 从 Studio 启动器中选择 “ 新建数据流”。

执行快速模型分析

我们在本文中使用的数据集包含 60,000 个训练示例和标签。每行包含 785 个值:第一个值是标签(介于 0—9 之间的数字),其余 784 个值是像素值(介于 0—255 之间的数字)。首先,我们对原始数据进行快速模型分析,以获得性能指标,并将其与PCA转换后的模型指标进行比较以进行评估。完成以下步骤:

  1. 下载 MNIST 数据集训练数据集
  2. 从.zip 文件中提取数据并上传到 亚马逊简单存储服务 (Amazon S3) 存储 桶中。
  3. 在 Studio 中,选择 “建” 和 “ 数据管理者流” 以创建新的数据管理者流。
    Data Wrangler Flow
  4. 选择 导入数据 从 Amazon S3 加载数据。
    Import Data
  5. 选择 Amazon S3 作为您的数据源。
    Choose S3 data connection
  6. 选择上传到您的 S3 存储桶的数据集。
  7. 保留默认设置并选择 “ 导入” 。
    Import from S3

导入数据后,Data Wrangler 会自动验证数据集并根据其采样检测所有列的数据类型。在 MNIST 数据集中,由于所有列都很长,因此我们将此步骤保持原样,然后返回数据流。

  1. 在 “ 数据类型 ” 页面顶部选择 “ 数据” 以返回主数据流。
    Dataset Data Types

流量编辑器现在显示两个区块,显示数据是从源导入的,并且数据类型已识别。如果需要,您还可以编辑数据类型。

在确认数据质量可以接受之后,我们返回数据流并使用数据管理者的《数据质量和见解报告》。此报告对导入的数据集进行分析,并提供有关缺失值、异常值、目标泄漏、不平衡数据和快速模型分析的信息。有关详细信息,请参阅 获取有关数据和数据质量 的见解

在本分析中,我们仅关注数据质量报告的快速模型部分。

  1. 选择 “ 数据类型” 旁边的加号 ,然后选择 “ 添加分析” 。
  2. 对于 分析类型 ,选择 数据质量和见解报告
  3. 对于 “ 目标” 列 ,选择标签。
  4. 对于 问题类型 ,选择 分类 (此步骤是可选的)。
  5. 选择 “ 创建” 。
    Create Analysis

在这篇文章中,我们使用数据质量和洞察报告来展示如何使用PCA来保持模型性能。我们建议您使用基于深度学习的方法来提高性能。

以下屏幕截图显示了报表中数据集的摘要。幸运的是,我们没有任何缺失值。生成报告所花费的时间取决于数据集的大小、要素的数量以及 Data Wrangler 使用的实例大小。

Data Quality Summary

以下屏幕截图显示了模型在原始数据集上的表现。在这里,我们注意到该模型利用784个特征的精度为93.7%。

Quick Model Before PCA

使用 Data Wrangler 降维变换

现在,让我们使用 Data Wrangler 降维变换来减少该数据集中的要素数量。

  1. 在数据流页面上,选择 数据类型旁边的加号 ,然后选择 添加转换
  2. 选择 “ 添加步骤” 。
    Add Step
  3. 选择 “ 降维”。
    Dimensionality Reduction

如果您没有看到列出的降维选项,则需要更新 Data Wrangler。有关说明,请参阅 更新数据管理器。

  1. 配置 PCA 中的关键变量:
    1. 对于 Trans form ,选择要使用的降维技术。在这篇文章中,我们选择 主成分分析
    2. 对于 输入列 ,选择要包含在 PCA 分析中的列。在此示例中,我们选择了除目标列标签之外的所有功能(您也可以使用 “全选” 功能选择所有功能并取消选择不需要的功能)。这些列必须是数字数据类型。
    3. 对于主成分 数 ,指定目标维度的数量。
    4. 对于 方差阈值百分比 ,指定要按主成分解释的数据中的变异百分比。默认值为 95;在这篇文章中,我们使用 80。
    5. 选择 中 ,在缩放之前使用均值将数据居中。
    6. 选择 “ 放” 使用单位标准差缩放数据。
      PCA 更加重视具有高方差的变量。因此,如果不缩放维度,我们将得到不一致的结果。例如,一个变量的值可能在 50—100 的范围内,而另一个变量的值可能在 5—10 之间。在这种情况下,PCA 将增加第一个变量的权重。在应用 PCA 之前,可以通过缩放数据集来解决此类问题。
    7. 在 “
    8. 输出格式” 中 ,指定是否要将组件输出到单独的列或向量中。对于这篇文章,我们选择
    9. 对于 “ 输出” 列 ,为 PCA 生成的列名输入前缀。在这篇文章中,我们输入 PCA80_。
  2. 选择 “ 预览 ” 预览数据,然后选择 “ 更新” 。

应用 PCA 后,列数将从 784 减少到 115,这意味着特征数量减少了 85%。

现在,我们可以使用转换后的数据集生成另一份数据质量和见解报告,如以下屏幕截图所示,以观察模型性能。

Quick Model After PCA

在第二份分析中,我们可以看到,与第一份快速模型报告相比,模型性能有所提高,准确性提高到91.8%。PCA 将数据集中的特征数量减少了 85%,同时将模型精度保持在相似水平。

根据报告中的快速模型分析,模型性能为91.8%。使用 PCA,我们将列数减少了 85%,同时仍将模型精度保持在相似水平。为了获得更好的结果,你可以尝试深度学习模型,它可能会提供更好的性能。

我们发现使用 亚马逊 SageMaker A utopilot 进行训练时有以下比较:带有 PCA 降维和不使用 PCA 降维:

  • 缩小 PCA 维度 — 25 分钟
  • 不缩小 PCA 尺寸 — 45 分钟

将 PCA 投入运营

随着数据随着时间的推移而变化,通常需要将我们的参数重新训练为新的看不见的数据。Data Wrangler 通过使用重新拟合参数来提供这种功能。有关重新拟合训练参数的更多信息,请参阅 使用 Amazon SageMaker D ata Wrangler 在大型数据集上重新调整经过训练的参数

之前,我们将 PCA 应用于包含 50,000 行样本的 MNIST 数据集样本。因此,我们的流程文件包含一个模型,该模型已在此示例上进行了训练,并用于所有创建的作业,除非我们指定要重新学习这些参数。

要重新调整 MNIST 训练数据集上的模型参数,请完成以下步骤:

  1. 在 Amazon S3 中为我们的流程文件创建目的地,这样我们就可以创建数据管理器处理任务。
    Data Wrangler Processing Job
  2. 创建作业并选择 Refit 以学习新的训练参数。

训练过的参数 部分显示有 784 个参数。这是每列的一个参数,因为我们在 PCA 简化中排除了标签列。

请注意,如果我们在此步骤中不选择 Refit,则将使用 在交互模式下学习到的经过训练的参数。

Create Job

  1. 创建作业。
    Job Created
  2. 选择处理任务链接来监控任务并在 Amazon S3 上找到生成的流程文件的位置。
    Processing Job Flow

该流程文件包含在整个 MNIST 训练数据集上学习的模型。

  1. 将此文件加载到数据管理器中。

清理

要清理环境以免产生额外费用,请删除 Amazon S3 中的数据集和项目。此外,删除 Studio 中的数据流文件并关闭其运行的实例。有关详细信息,请参阅 “ 关闭数据管理器 ”。

结论

降维是从模型中移除不需要的变量的好方法。它可用于降低模型复杂性和数据中的噪声,从而缓解机器学习和深度学习模型中常见的过度拟合问题。在这篇博客中,我们演示了通过减少特征数量,我们仍然能够为模型实现相似或更高的精度。

有关使用 PCA 的更多信息,请参阅 主成分分析 (PCA) 算法。 要了解有关降维变换的更多信息,请参阅在数据集中 降低维度。


作者简介

Adeleke Coker 是 亚马逊云科技 的全球解决方案架构师。他与全球客户合作,为在 亚马逊云科技 上大规模部署生产工作负载提供指导和技术援助。在业余时间,他喜欢学习、阅读、游戏和观看体育赛事。

阿比盖尔 是亚马逊 SageMaker 的软件开发工程师。她热衷于帮助客户在 DataWrangler 中准备数据并构建分布式机器学习系统。在空闲时间,阿比盖尔喜欢旅行、远足、滑雪和烘烤。

维沙尔·卡普尔 是 AW S AI 的资深应用科学家。他热衷于帮助客户了解他们在 Data Wrangler 中的数据。在业余时间,他骑山地自行车、滑雪板,并与家人共度时光。

Raviteja Yelamanchili 是亚马逊网络服务的一名企业解决方案架构师,总部设在纽约。他与大型金融服务企业客户合作,在云上设计和部署高度安全、可扩展、可靠和具有成本效益的应用程序。他拥有超过11年的风险管理、技术咨询、数据分析和机器学习经验。当他不帮助客户时,他喜欢旅行和玩PS5。