“将数据分组到箱中”组件
本文介绍如何使用 Azure 机器学习设计器中的“将数据分组到箱中”组件对数字进行分组,或更改连续数据的分布。
“将数据分组到箱中”组件支持使用多个选项将数据分箱。 可以自定义量化边界的设置方式,以及在箱中分配值的方式。例如,可以:
- 手动键入一系列要用作箱边界的值。
- 使用分位数或百分位排名将值分配到箱。
- 强制将值均匀分布到箱中。
有关分箱和分组的更多信息
在为机器学习准备数字数据时,将数据“分箱”或分组(有时称为“量化”)是一个重要工具。 它适用于如下场景:
一列连续的数字中的唯一值太多,无法有效地建模。 因此你会自动或手动将这些值分配到各组,以创建较小的一组离散范围。
你需要将一列数字替换为表示特定范围的分类值。
例如,对于用户人口统计数据,你可能想要在年龄列中通过指定自定义范围(例如 1-15、16-22、23-30 等)来对该列中的值分组。
某个数据集包含几个极端值,这些值远远超出预期的范围,并且对训练的模型造成了很大的影响。 为了减少模型中的偏差,可通过使用分位数方法将数据转换为均匀分布。
使用此方法时,“将数据分组到箱中”组件会确定理想的箱位置和箱宽度,以确保在每个箱中放入大致相同数量的样本。 然后,根据你选择的归一化方法,箱中的值将转换为百分位数或者映射到箱号。
分箱示例
下图显示了使用分位数方法分箱之前和之后的数字值分布。 请注意,与左侧的原始数据相比,数据已分箱并转换为单位法线标度。
由于可以通过许多方式对数据进行分组且所有方式都可自定义,因此我们建议使用不同的方法和值进行试验。
如何配置“将数据分组到箱中”
在设计器中将“将数据分组到箱中”组件添加到管道。 可以在“数据转换”类别中找到此组件。
连接包含要分箱的数字数据的数据集。 量化只能应用于包含数字数据的列。
如果数据集包含非数字列,请使用选择数据集中的列组件选择要处理的列子集。
指定分箱模式。 分箱模式决定其他参数,因此请务必首先选择“分箱模式”选项。 以下分箱类型受支持:
分位数:分位数方法根据百分位排名将值分配到箱中。 此方法也称为等高分箱。
等宽:如果使用此选项,必须指定箱的总数。数据列中的值会放入箱中,且每个箱在开始值和结束值之间的间隔均相同。 因此,如果数据聚集在特定点附近,则一些箱可能会包含更多的值。
自定义边界:可以指定每个箱的开始值。 边界值始终是箱的下边界。
例如,假设要将值分组到两个箱中。其中一个箱中有大于 0 的值,另一个箱中有小于或等于 0 的值。 在这种情况下,对于量化边界,请在“量化边界的逗号分隔列表”中输入“0” 。 组件的输出将是 1 和 2,表示每个行值的箱索引。 请注意,逗号分隔值列表必须采用升序,例如“1,3,5,7”。
注意
“熵 MDL”模式是在工作室(经典)中定义的,在设计器中还没有相应的开源包来提供支持。
如果使用“分位数”和“等宽”分箱模式,请使用“箱数”选项来指定要创建的箱数(或“分位数”) 。
对于“要分箱的列”,请使用列选择器来选择要分箱的值所在的列。 列必须是数字数据类型。
同一分箱规则将应用到你选择的所有适用列。 如果需要使用不同的方法将某些列分箱,请对每个列集使用单独的“将数据分组到箱中”组件实例。
警告
如果选择的列不属于允许的类型,会生成运行时错误。 组件在发现任一列的类型不被允许时,会立即返回错误。 如果收到错误,请检查所有选定的列。 该错误不会列出所有无效列。
对于“输出模式”,请指明输出量化值时需要使用的方式:
追加:创建一个包含分箱值的新列,并将其追加到输入表。
Inplace:使用数据集中的新值替换原始值。
ResultOnly:仅返回结果列。
如果选择“分位数”分箱模式,请使用“分位数归一化”选项来确定值在按分位数排序之前如何归一化。 请注意,将值归一化会转换这些值,但不影响最终的箱数。
以下归一化类型受支持:
Percent:值在 [0,100] 范围内归一化。
PQuantile:值在 [0,1] 范围内归一化。
QuantileIndex:值在 [1,number of bins] 范围内归一化。
如果选择“自定义边界”选项,请在“量化边界的逗号分隔列表”文本框中输入要用作量化边界的逗号分隔数字列表。
这些值标记了分隔各箱的点。例如,如果输入一个量化边界值,将会生成两个箱。 如果输入两个量化边界值,将会生成三个箱。
这些值必须按箱的创建顺序从低到高排序。
选择“将列标记为分类”选项可指明应将量化列作为分类变量进行处理。
提交管道。
结果
“将数据分组到箱中”组件会返回一个数据集,其中的每个元素都已根据指定的模式分箱。
它还返回“分箱转换”。 该函数可传递到应用转换组件,以使用相同的分箱模式和参数将新的数据样本分箱。
提示
如果对训练数据使用分箱,就必须对数据使用在测试和预测时所用的相同分箱方法。 还必须使用相同的箱位置和箱宽度。
为确保始终使用相同的分箱方法转换数据,建议保存有用的数据转换。 然后使用应用转换组件将这些转换应用到其他数据集。
后续步骤
请参阅 Azure 机器学习可用的组件集。