“规范化数据”组件

本文介绍 Azure 机器学习设计器中的一个组件。

使用此组件通过规范化来转换数据集。

规范化是一种通常用于机器学习数据准备的方法。 规范化旨在将数据集中数值列的值更改为使用通用范围,而不会扭曲值范围内的差异或丢失信息。 一些算法还需要通过规范化正确建立数据模型。

例如,假设输入数据集包含值范围从 0 到 1 的列以及另一个值范围从 10,000 到 100,000 的列。 如果在建模期间尝试将值作为特征合并,数字范围的巨大差异可能会导致问题

“规范化”通过创建新值来保持源数据中的一般分布和比率,同时将值保持在模型中使用的所有数字列所采用的范围内,避免了这些问题

此组件提供多种用于转换数值数据的选项:

  • 可以将所有值更改为 0-1 范围,也可以将值转换为百分位数而不是绝对值。
  • 可以将规范化应用于单个列或同一数据集中的多个列。
  • 如果需要重复管道或对其他数据应用相同的规范化步骤,则可以以规范化转换形式保存这些步骤,并将其应用于具有相同架构的其他数据集。

警告

某些算法要求在训练模型之前对数据进行规范化。 其他算法执行自己的数据缩放或规范化。 因此,选择构建预测模型所使用的机器学习算法时,请务必在对训练数据应用规范化之前,查看算法的数据要求。

配置规范化数据

使用此组件一次只能应用一种规范化方法。 因此,同一规范化方法会应用于所选的所有列。 若要使用不同的规范化方法,请使用“规范化数据”的第二个实例

  1. 将“规范化数据”组件添加到管道。 可以在 Azure 机器学习的“数据转换”下的“缩放和约简”类别中找到此组件 。

  2. 连接包含所有数值的至少一列的数据集。

  3. 使用列选择器选择要规范化的数值列。 如果不选择单个列,则默认包括输入中的所有数值类型列,并对所有选定列应用同一规范化流程

    如果包括不应规范化的数值列,这可能会导致奇怪的结果! 请务必仔细检查列。

    如果未检测到数值列,请检查列元数据,验证列的数据类型是否是支持的数值类型。

    提示

    若要确保将特定类型的列作为输入提供,请尝试在使用“规范化数据”组件之前使用在数据集中选择列组件。

  4. 选中时,对常量列使用 0:如果任何数值列包含一个不变值,请选择此选项。 这可确保在规范化操作中不会使用这样的列。

  5. 从“转换方法”下拉列表中,选择要应用于所有选定列的单个数学函数

    • Zscore:将所有值转换为 z-score。

      使用以下公式转换列中的值:

      normalization using z-scores

      分别针对每个列计算平均偏差和标准偏差。 使用总体标准偏差。

    • MinMax:min-max 规范化器将每个特征线性重缩放为 [0,1] 区间。

      移动每个特征的值以重缩放为 [0,1] 区间,使最小值为 0,然后除以新的最大值(这是初始最大值和初始最小值之间的差异)。

      使用以下公式转换列中的值:

      normalization using the min-max function

    • Logistic:使用以下公式转换列中的值:

      formula for normalization by logistic function

    • LogNormal:此选项将所有值转换为对数范围。

      使用以下公式转换列中的值:

      formula log-normal distribution

      此处,μ 和 σ 为分布的参数,根据数据按经验计算为分别针对每一列的最大似然估计。

    • TanH:所有值转换为双曲正切。

      使用以下公式转换列中的值:

      normalization using the tanh function

  6. 提交管道,或双击“规范化数据”组件,然后选择“运行所选项”。

结果

“规范化数据”组件会生成两个输出:

  • 若要查看转换后的值,请右键单击组件,然后选择“可视化”。

    默认情况下,值会立即转换。 如果要将转换后的值与原始值进行比较,请使用添加列组件来重新组合数据集并以并排方式查看列。

  • 若要保存转换,以便将相同的规范化方法应用于另一个数据集,请选择该组件,然后选择右侧面板中“输出”选项卡下的“注册数据集”。

    然后,可以从左侧导航窗格的“转换”组中加载已保存的转换,并使用应用转换将其应用到具有相同架构的数据集

后续步骤

请参阅 Azure 机器学习可用的组件集