使用 Amazon SageMaker Data Wrangler 平衡机器学习数据

源节点: 1600102

亚马逊SageMaker数据牧马人 是一项新功能 亚马逊SageMaker 这使数据科学家和工程师可以更快地使用可视化界面为机器学习 (ML) 应用程序准备数据。 它包含 300 多个内置数据转换,因此您可以快速规范化、转换和组合功能,而无需编写任何代码。

今天,我们很高兴地宣布新的转换,让您可以轻松有效地平衡数据集以进行 ML 模型训练。 我们在这篇文章中演示了这些转换是如何工作的。

新的平衡运算符

新宣布的平衡运营商被归类为 余额数据 变换类型在 添加变换 窗格。

目前,变换算子仅支持二元分类问题。 在二元分类问题中,分类器的任务是将每个样本分类为两个类别之一。 当多数类(较大)中的样本数量远大于少数(较小)类中的样本数量时,数据集被认为是不平衡的。 这种偏差对 ML 算法和分类器具有挑战性,因为训练过程倾向于偏向多数类。

为了应对这一挑战,提出了平衡方案,该方案在训练分类器之前增强数据以更加平衡。 最简单的平衡方法是通过复制少数样本对少数类进行过采样,或者通过删除多数样本对多数类进行欠采样。 将合成少数样本添加到表格数据中的想法最初是在合成少数过采样技术 (SMOTE) 中提出的,其中合成少数样本是通过对原始少数点进行插值来创建的。 根据该出版物,对 SMOTE 和其他平衡方案进行了广泛的实证研究,并显示其可以提高各种场景中的预测性能 SMOTE,或不 SMOTE.

Data Wrangler 现在支持以下平衡运算符作为 余额数据 转变:

  • 随机过采样器 – 随机复制少数样本
  • 随机欠采样器 – 随机删除多数样本
  • 冒烟 – 通过对真实少数样本进行插值生成合成少数样本

现在让我们详细讨论不同的平衡运算符。

随机过采样

随机过采样包括从少数类中选择具有替换的随机示例,并使用该实例的多个副本补充训练数据。 因此,可能会多次选择单个实例。 随着 随机 过采样 转换类型,Data Wrangler 通过复制数据集中的少数样本自动为您对少数类进行过采样。

随机欠采样

随机欠采样与随机过采样相反。 该方法旨在从多数类中随机选择和删除样本,从而减少转换数据中多数类中的示例数量。 这 随机 欠采样 transform 类型允许 Data Wrangler 通过删除数据集中的多数样本自动为您对多数类进行欠采样。

冒烟

在 SMOTE 中,合成少数样本被添加到数据中,以实现多数和少数样本之间的所需比率。 合成样本是通过原始少数点对的插值生成的。 这 冒烟 transform 支持平衡数据集,包括数字和非数字特征。 数值特征通过加权平均插值。 但是,您不能将加权平均插值应用于非数字特征——不可能平均 “dog”“cat” 例如。 相反,根据平均权重从任一原始少数样本中复制非数字特征。

例如,考虑两个样本 A 和 B:

A = [1, 2, "dog", "carnivore"]
B = [0, 0, "cow", "herbivore"]

假设样本 A 的权重为 0.3,样本 B 的权重为 0.7。因此,使用这些权重对数值字段进行平均,分别得到 0.3 和 0.6。 下一个字段填充 “dog” 概率为 0.3 和 “cow” 概率为 0.7。 同样,下一个等于 “carnivore” 概率为 0.3 和 “herbivore” 概率为 0.7。 随机复制是针对每个特征独立完成的,因此下面的示例 C 是可能的结果:

C = [0.3, 0.6, "dog", "herbivore"]

此示例演示了插值过程如何导致不切实际的合成样本,例如食草犬。 这在分类特征中更常见,但也可能出现在数字特征中。 即使某些合成样本可能不切实际,SMOTE 仍然可以提高分类性能。

为了启发式地生成更真实的样本,SMOTE 仅对特征空间中接近的对进行插值。 从技术上讲,每个样本仅使用其 k 最近邻进行插值,其中 k 的共同值为 5。在我们的 SMOTE 实现中,仅使用数字特征来计算点之间的距离(距离用于确定邻域每个样本)。 在计算距离之前对数字特征进行归一化是很常见的。 请注意,数字特征被归一化仅用于计算距离; 生成的插值特征未归一化。

现在让我们平衡 成人数据集 (也称为人口普查收入数据集)使用 Data Wrangler 提供的内置 SMOTE 转换。 这个多元数据集包括六个数字特征和八个字符串特征。 该数据集的目标是一个二元分类任务,根据人口普查数据预测个人的年收入是否超过 50,000 美元。

您还可以通过使用 Data Wrangler 中的直方图分析类型. 目标分布不平衡,记录的比例 >50K<=50K 大约是1:4。

我们可以使用 冒烟 下找到的运算符 余额数据 通过以下步骤在 Data Wrangler 中进行转换:

  1. income 作为目标列。

我们希望此列的分布更加平衡。

  1. 将所需的比率设置为 0.66.

因此,少数样本与多数样本的比例为 2:3(而不是原始比例为 1:4)。

  1. 冒烟 作为要使用的变换。
  2. 保留默认值 邻居数 平均以及是否标准化。
  3. 预览 预览应用的转换并选择 地址 将转换添加到您的数据流。

现在我们可以创建一个类似于我们之前所做的新直方图,以查看类的重新排列分布。 下图是直方图 income 平衡数据集后的列。 正如预期的那样,样本的分布现在是 3:2。

我们现在可以导出这个新的平衡数据并在其上训练一个分类器,这可以产生卓越的预测质量。

结论

在这篇文章中,我们演示了如何使用 Data Wrangler 平衡不平衡的二进制分类数据。 Data Wrangler 提供三种平衡运算符:随机欠采样、随机过采样和 SMOTE,以重新平衡不平衡数据集中的数据。 Data Wrangler 提供的所有三种方法都支持多模式数据,包括数字和非数字特征。

作为后续步骤,我们建议您在 Data Wrangler 数据流中复制本文中的示例,以查看我们实际讨论的内容。 如果您不熟悉 Data Wrangler 或 SageMaker 工作室,请参阅 开始使用 Data Wrangler. 如果您对这篇文章有任何疑问,请在评论部分添加。


作者简介

尤塔姆·埃洛 是 Amazon SageMaker 的高级应用科学家。 他的研究兴趣是机器学习,尤其是表格数据。

阿伦普拉萨特·香卡(Arunprasath Shankar) 是 AWS 的人工智能和机器学习 (AI/ML) 专家解决方案架构师,帮助全球客户在云中有效和高效地扩展他们的 AI 解决方案。 在业余时间,阿伦喜欢看科幻电影和听古典音乐。

资料来源:https://aws.amazon.com/blogs/machine-learning/balance-your-data-for-machine-learning-with-amazon-sagemaker-data-wrangler/

时间戳记:

更多来自 AWS机器学习博客